I am working on a robot which will contain several microcontrollers, eg some for motor control, some for sensors and one "master". The communication wires may have to go near motors which is my main concern. I will be using AVRs.
SPI is nice and fast, AVRs support master/slave with hardware addressing, but I am not sure how well it would go with interference. I know that each bit is sampled more than once to detect noise.
I2C is good in that most AVRs have it in hardware and it is easy to connect lots of devices. I don't know how well it can handle noise though.
CAN is good in noisy environments and fast, but it will require a separate chip. I would prefer to keep the size small but if it is so much better then I guess I will use it.
That is what I know, but I don't have any practical experience. Which would you recommend? Does anyone have experience with communication near motors? The furthest distance the wires will go is around 1m.
Thanks for your help!
-Daniel