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.
工具与软件:
目前、消息接收模式作为中断触发、中断 更改为轮询。 进行一些更改后、ECU 将在通电后持续重启。
更新 CAN 驱动器配置并生成代码、如下所示
.
2.将 Can_Main 读()和 Can_Main 写()函数添加到5ms 任务中
3.打印日志
那么配置轮询的正确方法是什么?为什么在配置后会重新启动轮询?
嘿、Kai、
对于轮询、这取决于您使用的是缓冲区还是 CAN 收发器的 FIFO。 对于缓冲区、 您可以 使用 MCAN_getNewDataStatus 函数监控 NDAT 寄存器(新数据-由接收新数据的缓冲区触发)、然后在检测到新数据时调用 Can_Main READ。 对于 Can_Main、可使用 MCAN_getRxFIFOStatus 函数检查 FIFO 状态寄存器(已接收到消息时填充级别应增加)、然后在填充级别等于 FIFO 计数时调用 FIFO_READ。
此致、
Kristien
你好、Kristien、
我有一个问题:Can_Main 如下图所示、MCAN_getNewDataStatus 和 MCAN_getRxFIFOStatus 已在 MCAN_READ 中被调用、那么为什么我们需要在 MCAN_READ 之前调用 MCAN_getNewDataStatus 和 MCAN_getRxFIFOStatus Can_Main?
你好、Kristien、
我 在调用 ECU_READ 之前添加了 MCAN_getNewDataStatus、并且仅 使用 CAN 收发器的缓冲区或 Can_Main、但 ECU 仍会重新启动。
插入的代码如下所示:
日志和可以按如下方式进行跟踪:
嘿、Kai、
我需要多花一天或两天来研究这个问题。
感谢您的耐心等待、
Kristien
嘿、Kai、
我们使用 您使用的相同 CAN 设置进行了快速测试、发现在轮询模式下的读取或写入操作期间未观察到复位。
通过测试、我们得到了一些问题和注意事项:
此致、
Kristien