Hi Lundin,
Lundin wrote:
The reason it sucks is likely because you are using Freescale MCUs that have no hardware buffers for the received data. But that merely means that Freescale's implementation of SPI "sucks" (and SCI too for that matter), not the SPI bus in itself. If they had a hardware buffer/shift register on-chip with lets say 20 bytes, the interrupt spam & jitter wouldn't be such a big issue.
Absolutely. I like the SPI, and prefer it over IIC for peripherals like EEProms, ADCs, DACs and I/O expansion, but as a communications medium, it lives at too low a level. I am using HC08s and S08s, so I don't have the benefits that a S12 would offer.
Lundin wrote:
As for the wired-OR I remember our hardware folks discussing that too. I'm not quite sure why we decided against it, possibly because of a 3V system where the Schottky would munch up a considerable amount of the logic level.
That was my original thought, but then a looked closely at the DZ datasheet.
Whereas it used to be that a logic level would need to be below/above a hard-coded value, like .4 volts for low and 2 volts for high, the S08DZ does something more sophisticated. A low needs to be below (Vdd x .35), which is 1.75 volts at Vdd=5v and 1 volt at Vdd=3v. This leaves more legroom for even standard diodes. To improve noise immunity, all inputs now have hysteresis.
I suspect that it was the .4 volt low-input requirement that scuttled your original investigation.
It appears to me that a CAN transceiver's ESD and transient protection would not be necessary if the CAN bus is not leaving the PCB. Those specs are meant for running through the wiring-harness of an automobile. The protection inherent in the MCU would be adequate on the PCB, as the CAN signals are no different than the other MCU signals wondering around the PCB. The same would be true for EMI filters.
Now - Bit-banging CAN - that is a scary thought. ;8)