This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我想问有关 CAN 总线的问题。
我的主软件循环为100ms (RTI 中断)。 我正在检查的每个循环中是否有可用的消息。
while (1) { if (nextIterationFlag = true) { /*清除标志*/ nextIterationFlag = false; newData = canGetData (canREG1、CAN_message_box_1、canRxData_PTR); if (newData == true) { /*有新数据,所以解码数据*/ } }
除非消息的传输频率超过10Hz、否则一切工作正常。 如果总线上有更多消息(例如、发送器每20ms 传输一次)、我无法从该消息框中读取消息。 我假设当前消息框的缓冲区被覆盖或一些无法访问的缓冲区。 如何解决?
我假设我可以使用 CAN 中断并在中断后立即读取数据。 但这是唯一的方法吗?
是否有任何方法可以从消息框获取最后数据、而不考虑以前的数据? 我的意思是,如果数据被覆盖,消息框应该接受新数据而不会出现任何错误,函数 canGetData()应该起作用。
谢谢你。