The CAN-bus has a real cool feature: It has the ability to check that the data sent actually compares to the data that was requested to be sent.
But CAN-bus is limited to 1 MHz only, because it has to stay within the specs.
Recently, I had to find a way of communicating fast with other devices.
At first, I designed a parallel-bus, only to find out that it was a lot slower than using the SSP on NXP\'s LPC1768.
The SSP is a vast improvement of the SPI, because it allows for higher clock rates and any bit width between 4 and 16 bits.
The LPC1768 allows me to set the speed to 50MHz, thus I will get 5MB/sec.
But it does not allow me to share the bus with multiple devices, like CAN-bus does.
However, this could easily be made, as..
The functionality already exists on CAN-bus, so it\'s almost just a matter of copy-and-paste.
The system is well-tested and works.
The reward for adding this single bit extra functionality is that suddenly the SSP (or enhanced SPI) would be able to do much more than what it usually does. The cost vs. efficiency is definitely worth it.
It would be possible to use the same protocol as CAN-bus; but it would also be possible to customize the behaviour to fit your needs.
An enhanced SPI / SSP would primarily be suitable for sending messages between microcontrollers on the same PCB (or stacked PCBs), but not for longer distances, without reducing the speed. I believe that it would easily be possible to maintain 50MHz on a 200mm trace, perhaps longer.
If you have any thoughts about this, please post them below; I\'d be happy to hear your opinion and perhaps what you would use a high-speed Inter-IC bus for. |