

If the peripheral needs to send a response back to the controller, the controller will continue to generate a prearranged number of clock cycles, and the peripheral will put the data onto a third data line called POCI, for "Peripheral Out / Controller In". When data is sent from the controller to a peripheral, it's sent on a data line called PICO, for "Peripheral In / Controller Out". There is always only one controller (which is almost always your microcontroller), but there can be multiple peripherals (more on this in a bit). The side that generates the clock is called the "controller", and the other side is called the "peripheral". In SPI, only one side generates the clock signal (usually called CLK or SCK for Serial ClocK). You might be thinking to yourself, self, that sounds great for one-way communications, but how do you send data back in the opposite direction? Here's where things get slightly more complicated. OSHWA: A Resolution to Redefine SPI Signal Names.For more information, check out the following links. The naming convention may vary depending on manufacturer, programming language, companies, or organizations. The terms are considered obsolete and are now replaced with the terms "controller" and "peripheral," respectively. Check out this page for more on our reasoning behind this change. SparkFun has joined with other members of OSHWA in a resolution to move away from using "Master" and "Slave" to describe signals between the controller and the peripheral. Note: You may not recognize the PICO/POCI labels for SPI pins.
