硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1027|回复: 1
收起左侧

[CAN/FDCAN] STM32H7系列芯片FDCAN外设接收异常终止的处理

[复制链接]

3

主题

1228

回帖

1237

积分

至尊会员

积分
1237
发表于 2021-12-23 16:04:21 | 显示全部楼层 |阅读模式
现象:
    STM32H743 FDCAN驱动正常工作后(在仿真态下面,CAN接收正常),点击MDK 退出仿真按钮,板子CAN接收终止。
    后使用重新初始化CAN模块,可以继续接收数据。继续查找原因,发现CAN控制器,IR寄存器出现Message Lost标志,
    该标志应该是由于MDK退出仿真态时导致的,于是在初始化部分,增加开启FDCAN_IT_RX_FIFO1_MESSAGE_LOST中断,
    并在中断处理函数的接收部分,读取接收缓冲区的CAN数据,即可继续正常工作。

  1. HAL_FDCAN_ActivateNotification(&hfdcan2, FDCAN_IT_RX_FIFO1_MESSAGE_LOST, 0) != HAL_OK
复制代码
  1.     if (FDCAN_IT_RX_FIFO1_WATERMARK == RxFifo1ITs ||
  2.             FDCAN_IT_RX_FIFO1_NEW_MESSAGE == RxFifo1ITs ||
  3.             FDCAN_IT_RX_FIFO1_FULL == RxFifo1ITs ||
  4.             FDCAN_IT_RX_FIFO1_MESSAGE_LOST == RxFifo1ITs)
  5.     {
  6.         //do
  7.         HAL_FDCAN_GetRxMessage(hfdcan, FDCAN_RX_FIFO1, &hfdcan2_RX, rxdata);
  8. }
复制代码


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
发表于 2021-12-24 01:09:56 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-15 12:43 , Processed in 0.225629 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表