What serial communication bus would you use in a automotive embedded system if your main selection criteria were:
- Electrically robust
- Slow speed (32 kb/s)
- Easy to program
- Easy to interface with microcontrollers
It won’t be transferring much data, but it will need to be transferred periodically at high speed (100 – 500 Hz). I find that RS-232 is just not reliable enough if you have noise in your ground line. CAN-bus seems interesting, but I have no experience with it.
We are currently interested in a combination of AVR AT90CAN128 microcontrollers.
You’ve already chosen the AT90CAN128, whose standout feature compared to other AVR processors is support for the CAN bus. There really is not a better choice than CAN for an automotive application with your data rate and noise immunity requirements. If you march in to an automotive customer with anything other than CAN, you’ll end up spending all your time defending the decision not to use it.
With that said, for noise immunity in a hostile environment like a car you’ll need a bus using differential signaling. That rules out i2c or SPI, which is unfortunate because they meet your other requirements. RS-485 would be workable as @Andrew Edgecombe points out.
If you’re not building a commercial product but instead building something for your own use to put in the engine compartment, you can probably get by with USB. USB will make it easy to interface with a laptop in the passenger compartment, and though it isn’t designed for high-noise environments it is differentially signaled at a reasonably high voltage.