Back to a Single Board

 A while back I stacked a second microcontroller on top of the board I was using to read data from my car's CAN bus to control my aftermarket audio system. I needed to read multiple addresses from the bus (one for power state and the other for steering wheel controls) and at the time adding on additional hardware seemed to be easier than rewriting the CAN libraries I had found that were designed to only read one address. But then Tesla changed the CAN traffic again, so I had to find new signals to use, and so I decided to finally do this the right way and fix the problem in software instead of in hardware. Had I bothered to dig into the CAN libraries previously I would have found that it's very easy to initialize the lower-level Texas Instruments CAN library to read multiple addresses. It's not a full DBC library, but that's a lot of overheard and I don't actually need full DBC functionality; I just need two addresses. After that code was working I basically just combined the two pre-existing PCBs into a single PCB, ordered a batch of those from OSHPark, and popped one of those on top of a Tiva board. I trimmed off the unnecessary headers to save space and now it fits underneath the OEM paneling (instead of laying on the floor of my car like the previous two-board solution). Cool. Code and PCB files are available on Gitlab, as always. (I also vacuumed my car after this was done)