cpu : stm32
用的是cpu内部的CAN控制器,用的是库函数编程。
数据接收要求9个报文(用滤波器处理),设了接收中断、满中断、溢出中断。
10ms读取数据一次。
接收中断处理流程:中断响应后,若是接收中断,读取fifo中的数据,释放fifo。若是满中断或溢出中断读3次数据,释放fifo。
CAN线程:10ms 有数据读出,则处理数据,没有则返回。
现在的问题,常会漏数据,报文的发送周期10ms~5s.
在can数据接收或中断处理上是否可以优化。改善数据接收效率或可以加大读取数据周期。
我也考虑了另一个方案,就是每次采样读出9个报文后再退出流程。
请教大牛们!!
------解决思路----------------------
fifo中的数据读到一个riingbufer 里, 然后新建一线程专门处理ringbufer