嵌入式技术论坛
直播中

熊本熊

8年用户 1411经验值
擅长:处理器/DSP
私信 关注
[经验]

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

简单记录下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,需要修改,切记!!!


原作者:9528

回帖(1)

jf_84764481

2023-4-10 21:17:50
Kconfig文件内容可以发下吗?drv_can貌似不支持h743
举报

更多回帖

发帖
×
20
完善资料,
赚取积分