2019-06-01 12:47 AM
Hello,
I have been looking to read almost 200 different Extended CAN Ids on any of the CAN equipped STM32 MCUs. Speed in 1Mbps on CAN.
Currently, I am working with ID list mode using all 28 filters and switching between CAN Ids as required. But I am facing slight data loss which I am trying to avoid. Is there any method to expand the 28 filters to 200 by using some external filtering ICs? To pump up speeds, I am already using PLL on the MCU and a decent CAN Transceiver. I also wrote code using STD Periph libraries to optimize as much as I could. I cannot simply turn off all filtering as those 200 IDs are not the only IDs I am receiving on the CAN port.
2019-06-01 01:45 AM
No, what you likely need to do is have the filters cover a range, and have your code prioritize the pulling of data into internal buffers and leave the IRQ handler immediately after emptying all FIFO slots. Process, decode and respond in a separate worker thread/task.
2019-06-01 03:52 AM
If handling the ranges is too heavy, you probably have to use some other MCU with a built-in CAN processor. There are external CAN controllers, but they tend to be quite low-capacity - at least those that I found with a brief googling. There's also - of course - the possibility to use two STM chips such that the other MCU only works as a CAN front end.