The Open Source Hardware Association (OSHWA) has just posted:
A Resolution to Redefine SPI Signal Names
We, the undersigned, encourage educators, engineers, designers, and community members to discontinue the use of the terms MOSI/MISO/SS and in their place use SDO/SDI/CS.
- New signal names:
- SDO – Serial Data Out. An output signal on a device where data is sent out to another SPI device.
- SDI – Serial Data In. An input signal on a device where data is received from another SPI device.
- CS – Chip Select. Activated by the controller to initiate communication with a given peripheral.
- COPI (controller out / peripheral in). For devices that can be either a controller or a peripheral; the signal on which the device sends output when acting as the controller, and receives input when acting as the peripheral.
- CIPO (controller in / peripheral out). For devices that can be either a controller or a peripheral; the signal on which the device receives input when acting as the controller, and sends output when acting as the peripheral.
SDIO – Serial Data In/Out. A bi-directional serial signal.
- Deprecated signal names:
- MOSI – Master Out Slave In
- MISO – Master In Slave Out
- SS – Slave Select
- MOMI – Master Out Master In
- SOSI – Slave Out Slave In
- Signal names unchanged:
- SCK – Serial Clock. The clock for the bus generated by the controller.
Designers should avoid signal names MOSI/MISO and instead use SDO/SDI. The SDI signal is defined by the perspective of the device. For example, the SDI signal on a sensor is the pin that receives data from the controller. Similarly, the SDO pin on a controller is the output pin that sends data to a peripheral.
It is best practice to use SDO/SDI and Controller/Peripheral. Change the way you write tutorials, create schematics, and diagrams. This is the best way to educate the next generation of users and engineers.