I am evaluating different Linux Plattforms and would like to know:

Is it possible to read synchronous serial data at 300 to 350 kbaud with any Raspberry Pi? I am getting the data as RS422. Thus I will use a level shifter e.g. the MAX42xx. I am getting a differential pair of data lines and a differential pair of clock lines.

I know that the Pi only has a UART (not a USART), thus the serial module cannot handle the clock line / synchronous serial connection. Right?

Would it be possible to use the SPI or I2C to read synchronous serial data?

  • 1
    You need to clarify what you mean and what you want to do. Synchronous serial data may mean many things, e.g. I2C and SPI are both supported by the Pi but may not do what you want to do.
    – joan
    Jul 18, 2016 at 12:25

1 Answer 1


The Pi's I2C and SPI peripherals both act in master only mode.

This means the Pi controls the clock.

Receiving synchronous serial data implies that the external device controls the clock.

What sort of data rates are you talking about? You may be able to bit bang.

  • Hm, okay. The data goes with approx 320 kbaud. Do you think bitbanging will work well for that speed? Jul 18, 2016 at 12:44
  • I am currently thinking of using a little/medium micro controller with a USART to convert from synchronous to asynchronous serial. Jul 18, 2016 at 13:09
  • @FlorianZ. 320 kbaud is probably not on as a clocked signal into a general Linux process. I'm not even sure if you could read that with an asynchronous link as the baud rate might not match a standard value. I reckon you are either just on or more likely just beyond what the Pi can handle. How is the serial data delimited? I assume it's not just one gigantic bit stream.
    – joan
    Jul 18, 2016 at 13:23
  • As far as I know at the moment, the data is a bunch of comma separated values. If nothing is to be transmitted, there will be a defined "no new information"-signal on the lines. What are you thinking about? Jul 18, 2016 at 14:07
  • 1
    The Pi UART should handle 500 kBaud; I've used it at 1 Mbaud a bit but not enough to say how reliable it is (seemed fine with short tests); same for 2 Mbaud (but other people have reported that is definitely unreliable). As joan says 320 K being non-standard it may or may not work but you can try it. Beyond that you could use an MC or FPGA to buffer/retransmit bytes at 500 K.
    – goldilocks
    Jul 18, 2016 at 14:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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