打印
[STM32H7]

如何利用STM32H743对FDCAN组件驱动进行调试呢

[复制链接]
292|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
豌豆爹|  楼主 | 2023-4-19 14:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
简单记录下fdcan调试:

1.打开FDCAN组件,启用FDCAN1 FDCAN2(我修改过KConfig,默认只能启用FDCAN1)

2.在CubeMx中配置启用FDCAN1 FDCAN2的引脚(根据板子实现电路引线),至于FDCAN中断和引脚上下拉之类的保持默认就行了。

3.在CubeMx中配置FDCAN的时钟,我直接用的是HSE的时钟(8MHz),这个很重要,影响波特率计算结果。

4.修改drv_fdcan.c中波特率的配置,直接上码

//计算:baud = fdcan_clk / brp / (tseg1 + tseg2 + sync_seg) ; 另sync_seg固定为1
static const _STM32_fdcan_NTconfig_t st_CanNTconfig[]=
/*baud brp sjw tseg1 tseg2*/
{
{CAN1MBaud, 1,8,4,3},
{CAN800kBaud, 1,8,6,3},
{CAN500kBaud, 1,8,11,4},
{CAN250kBaud, 2,8,11,4},
{CAN125kBaud, 4,8,11,4},
{CAN100kBaud, 5,8,11,4},
{CAN50kBaud, 10,8,11,4},
{CAN20kBaud, 25,8,11,4},
{CAN10kBaud, 50,8,11,4}
};

5.把can_sample加入到工程里,写个循环发送,搞个can盒子接收下can消息,没啥问题就结束了。要是波特率计算不对,也可以用can盒子帧测下当前配置的波特率,对比下配置再算算。

6.必要时也应该怀疑下是不是硬件的锅(有时can芯片也会出问题),在loopback模式下循环发送,拿示波器打下fdcan_tx引脚是否有波线输出,如果有波形,大概率就是硬件的锅,再检查确定不是你的锅,然后你就可以选择走流程喷或直接喷。

Note: loopback有两个模式:FDCAN_MODE_INTERNAL_LOOPBACK、FDCAN_MODE_EXTERNAL_LOOPBACK, 只有在FDCAN_MODE_EXTERNAL_LOOPBACK模式下,fdcan_tx才会波形输出,drv_fdcan.c驱动里默认loopback是FDCAN_MODE_INTERNAL_LOOPBACK,需要修改,切记!!!

使用特权

评论回复
沙发
Pretext| | 2023-4-19 14:49 | 只看该作者
FDCAN1是做什么用的?

使用特权

评论回复
板凳
天天向善| | 2023-4-19 14:50 | 只看该作者
FDCAN是H743特有的外设吗?

使用特权

评论回复
地板
软核硬核| | 2023-4-19 14:50 | 只看该作者
配置教程挺好的,要是能配上图片就好了!

使用特权

评论回复
5
tian111| | 2023-4-22 16:55 | 只看该作者
FDCAN1是做什么用的?

使用特权

评论回复
6
juventus9554| | 2023-4-22 17:00 | 只看该作者
FDCAN是H743特有的外设吗?

使用特权

评论回复
7
supernan| | 2023-4-22 17:01 | 只看该作者
配置教程挺好的,要是能配上图片就好了!

使用特权

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

本版积分规则

500

主题

1886

帖子

4

粉丝