Conclusion: We’re going with CAN between the EPS MCU and the RM46. All other devices will use their built-in interface (SPI, I2C, UART, etc.).
Notes
- SPI wouldn’t be feasible due to the number of required pins. Even if we used a daisy chain, it’d likely be too slow.
- It may be fine since the only thing we interface with on the EPS board is their MCU. Also, it doesn’t look like there are that many SPI devices that we’ll need to communicate with.
- I2C typically isn’t used for inter-board communication. It’s also not as resistant to radiation as CAN. I2C is fine for communication within a single board though.
- CAN is reliable and is used by other CubeSat teams. Due to its use of differential signalling, there’s less of a risk of data loss. It’s also much better at dealing with radiation.
- TTCAN (Time-Triggered CAN) is built on top of CAN and can be implemented through software. It’s targeted towards safety-critical systems where messages need to be sent at certain times and the process needs to be deterministic.
- Major Downfall of CAN
- I2C versus CAN
- TTCAN versus CAN
- Do we need full-duplex for anything?
Resources