工具与软件:
在使用 MCAN 模块进行配置和通信期间会遇到一些错误行为。
我的应用中的 MCAN 模块配置设置遵循 mCAN 示例项目(例如 mcan_EX7_classical_transmit.c)中的一般设置顺序、特别是 MCANConfig 函数。 但是、在调用 MCAN_setOpMode (MCANA_DRIVER_BASE、MCAN_OPERATION_MODE_NORMAL)后、我看不到 MCAN_CCCR。 INIT 位从1转换为0。 我正在等待至少11个连续时钟周期、以便根据手册对寄存器字段进行更新、但仍然不会相应地进行更新。
因此、当我尝试启动消息传输时、MCU 无法启动。 具体来说、当我对 MCAN_TXBAR 进行写入指示缓冲区添加请求时、我看到我尝试向其发送消息的缓冲区的 MCAN_TXBRP 寄存器更新为1、但应用程序此时只是挂起、因为 MCAN_TXBRP 位 从不会设置为0、表示已传输消息。 我假设这与上面遇到的问题有关、INIT 也没有被复位。
附加信息:使用的时钟源是 外设系统时钟、它被分频为40MHz 以提供 MCAN 时钟。
有几个问题:
- 具有 MCAN_CCCR 的行为。 是否曾看到 INIT 位? 是否有任何其他与 INIT 位交互的过程会在我的应用程序将其写入0后将其保持为1?
- 在为该关联缓冲器设置 MCAN_TXBRP 位后、是否没有理由不发送发送缓冲器中的消息?