I'm a bit new to communications between processors. I recently spent the time to get USART (HSERIN/HSEROUT) functional. It seems this is a great communications protocol for 2 processors to talk to each other. I'm developing a controller that will incorporate several processors, each dedicated to specific functions. I want them all to be able to talk to a Host (PIC18F25K50) that can then talk to a laptop via USB.

I looked at SPI and I2C. SPI seems hardware intensive, whereas each processor would require a Slave Select (SS) pin. I2C only needs 2 pins (SCK/SDA), but seem software intensive.

Has anyone wired several processors together? Which protocol did you choose, and why?