secondary CAN networking in a car for more sensor data!
I want a data display in my car for general operating parameters that may aid in tuning the engine. There are commercial solutions available for this but they are either expensive or not exactly what I want (or usually both), so making my own seems like the best option.
The car (a subaru) already has a CAN bus but I don't want to interfere with the OEM modules on that bus so I've decided to wire up a secondary CAN bus for my own uses.

In order to create a CAN network I'll need things that speak CAN, for that I found the Adafruit Feather boards, two of which have CAN transcievers. The Feather M4 CAN (Atmel SAME51) and the Feather RP2040 CAN boards. I'll use one in the engine bay to transmit data and one attached to an LCD in the cabin to display the data. The data will also go to the ECU to be used for safeties like low oil pressure shut down and for control like fuel pressure compensation.
I decided on the 2.0 inch 240*320px LCD from Adafruit. It is running on a SPI interface. Initially I tried the SAME51 based feather board with the display and everything went pretty smoothly but I soon found the limitations of the processor and SPI speed limit on that chip. Since I already had the RP2040 based board on hand I tried that and it does allow for faster display refresh so I'll probably be sticking with that for the display module.
The SAME51 is spec'd at 120MHz core frequency and can be overclocked to 200MHz with the default Arduino setup. The RP2040 runs at 125MHz by default and can be overclocked to 300MHz. During testing I noticed that if I run both microcontrollers at the same frequency and the SPI clock at max (haven't measured it so I'm not sure what frequency it was running at, it seems to ignore the settings sometimes) the SAME51 is still a bit faster. Like 52 milliseconds to refresh the screen while the RP2040 took more like 56-58 milliseconds. The SAME51 is an ARMv7 Cortex M4 and the RP2040 is a dual core ARMv6 Cortex M0+, I am only using one core for now. The M4 has somewhat better performance per clock cycle than the M0+. The benefit of the RP2040 on a single core comes from it's faster max clock frequency.






