5
\$\begingroup\$

In all datasheets up until now I have only seen MISO and MOSI in use as SPI data line identifiers. However the datasheet of an automotive microcontroller refers to these lines as SPI_TXD and SPI_RXD.

I'd assume that this is just a different naming convention and the following is true:

  • MISO = SPI_RXD
  • MOSI = SPI_TXD

Unfortunately I cannot provide a link to the datasheet as it is not publicly available.

Question

Is this correct, provided that we're looking from the uController (i.e. Master) side?

\$\endgroup\$
3
  • \$\begingroup\$ Is this in the pinout description? On a device pin it's usually as seen from that device (at least that's the case for the RP2040). So a pin named RX would be MISO on a controller and MOSI on a peripheral. On a connector I would say there is no convention. \$\endgroup\$
    – DamienD
    Nov 9, 2021 at 14:03
  • 2
    \$\begingroup\$ The answer will be in datasheet itself. There can be no generic answer. \$\endgroup\$
    – Mitu Raj
    Nov 9, 2021 at 14:03
  • 10
    \$\begingroup\$ It doesn't make sense to refer to MOSI and MISO as "Rx" or "Tx" unless you do so from a certain node's viewpoint. The naming is senseless - MOSI and MISO are great names since they eliminate the whole tx rx brainfart terminology that we see in for example UART-based buses. Tx and Rx of what, is it a modem, is it a terminal, is it semi-duplex. Sigh. Anyone wanna play a game? I pay you a dollar for each time I mixed up MISO with MOSI and then you pay me a dollar for each time I mixed up Tx and Rx of UART-based buses. \$\endgroup\$
    – Lundin
    Nov 9, 2021 at 14:08

3 Answers 3

9
\$\begingroup\$

MISO stands for Master Input, Slave Output.
MOSI stands for Master Output, Slave Input.

As data is received (RX) on the input and data is sent (transmitted, TX) on the output, from the master's point of view, MISO is its RX pin and MOSI is its TX pin, so:
MISO = SPI_RXD
MOSI = SPI_TXD

(For a slave, this would be reversed)

\$\endgroup\$
4
\$\begingroup\$

MOSI is the name of the wire between master-out (transmit) and slave-in (receive).

  • So you have master.tx pin -> MOSI wire -> slave.rx pin.

MISO is the name of the wire between slave-out (transmit) and master-in (receive).

  • So you have slave.tx pin -> MISO wire -> master.tx pin.

A microcontroller could be a SPI master or SPI slave. This determines which pins connect to the MOSI and MISO wires.

If the microcontroller is a SPI master (which is likely if the other SPI device(s) are sensors), then its SPI_TXD pin will drive the MOSI wire, and its SPI_RXD pin will receive from the MISO wire.

\$\endgroup\$
3
\$\begingroup\$

Yes, that is correct. Also, you may run into SOMI & SIMO.
Why the manufactures insist on changing a standard name is beyond me.

\$\endgroup\$
1
  • 7
    \$\begingroup\$ The root of the problem is that there exists no ISO/IEC standard for SPI. \$\endgroup\$
    – Lundin
    Nov 9, 2021 at 14:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.