打印
[应用相关]

学习FDCAN控制器上的TxFIFO

[复制链接]
985|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
晓伍|  楼主 | 2021-9-4 15:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一.TxFIFO设为1所带来的问题
在STM32F103,STM32F407上面的CAN控制器,到了STM32H743上升级成FDCAN控制器。浏览了正点原子,安富莱,野火的STM32H7教程,都没有介绍FDCAN如何使用。关于FDCAN相关的教程,广州硬石电子科技做得比较好。但是,硬石科技的FDCAN例程在实际项目上直接使用的话,会有一些问题等着你发现。

硬石科技将FDCAN控制器的TxFIFO设置为1,相当于取消FIFO的功能。

以下图片摘自硬石科技的H743教程:


使用特权

评论回复
沙发
晓伍|  楼主 | 2021-9-4 15:42 | 只看该作者

1.1 代码


LED5_Handler()会被FreeRTOS系统每隔1S调用一次。实际上,代码的目的是发送5条CAN报文,CAN_ID分别是0x181,0x182,0x183,0x184,0x185。
1.2 CAN分析仪

通过CAN分析仪看到的结果是: "每隔1S时间,STM32H743只是发送了CAN_ID为0x181的CAN报文,并不是5条CAN报文。"


导致这个结果的原因是TxFIFO被设为1。


使用特权

评论回复
板凳
晓伍|  楼主 | 2021-9-4 15:43 | 只看该作者
二. 解决问题的方法2.1 STM32CubeMX


根据HAL库的源码可以看到,Tx Fifo Queue Elmts Nbr的范围是: 0 ~ 32.


使用特权

评论回复
地板
晓伍|  楼主 | 2021-9-4 15:44 | 只看该作者
2.2 CAN分析仪

代码不用修改,直接观察CAN分析仪的情况。


从上图可以看到,CAN分析仪每隔1S时间,收到CAN_ID为0x181,0x182,0x183,0x184,0x185的5条CAN报文。
问题解决了,代码的目的达到了。


使用特权

评论回复
5
麻花油条| | 2021-9-4 19:35 | 只看该作者
学习,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

4113

帖子

1

粉丝