硬汉嵌入式论坛

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

[CAN/FDCAN] STM32H750 FDCAN发送异常

[复制链接]

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2021-5-8 10:37:16 | 显示全部楼层 |阅读模式
本帖最后由 Xingou 于 2021-5-8 11:26 编辑

最近在调CANopen,用的芯片是STM32H750VBT6,发现按照ST的例程生成简单的测试程序后,只要执行一次发送后,CAN模块就会自动一直往外发送这帧数据,查看寄存器发现发送挂起寄存器一直有标志。
开始以为是配置问题,网上搜索也没有搜到太多相关的信息,之后分别查看了H7-Tool、rtthread和ST官方例程,发现设置并没有问题,后面就重新生成了一个只有CAN模块的代码,这时问题不再出现了,所以再去查之前的版本是否哪些代码导致了这个异常。
最后排查出来,原因是时钟的配置问题,由于其他部分需要,我的APB1时钟配置成了15MHz,而FDCAN1的时钟我用的是80MHz,将FDCAN1时钟改为40MHz后问题消失。(同时测试FDCAN1时钟80M,APB1时钟120M也是正常的)
查看手册可以看到FDCAN是有内核时钟域和APB时钟域两个时钟域,两个时钟域的数据进行交互时需要进行时钟同步,推测是之前的时钟配置使得这两个时钟域的同步异常了,所以导致发送挂起寄存器未被清空,从而一直往外发送数据。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2021-5-9 07:58:07 | 显示全部楼层
查了下数据手册,这部分的电气特性参数给的太简单,APB和CANFD这种有个时钟说明效果更好,类似SAI这种的
APB clock frequency must be at least twice SAI clock frequency
222.png


回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2021-5-10 09:15:29 | 显示全部楼层
本帖最后由 Xingou 于 2021-5-10 10:21 编辑

是的,ST应该把时钟间的关系和一些容易出现问题的地方多描述一些,这样我们用起来才不会那么多坑
后面实际测试,APB1时钟频率为15M,FDCAN内核时钟40M,只是之前一直发送的问题消失了,但如果修改了发送接收的fifo和ram个数,又会有问题最后把FDCAN内核时钟改为15M,经过一段时间各种测试,问题应该是解决了
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2022-7-6 17:57:14 | 显示全部楼层
eric2013 发表于 2021-5-9 07:58
查了下数据手册,这部分的电气特性参数给的太简单,APB和CANFD这种有个时钟说明效果更好,类似SAI这种的
A ...

目前我使用该芯片,用CUBEMX生成的代码,主频设置100MHZ时,不改PLL分频设置时PLL时钟为200MHZ,CAN运行会出现楼主的这种情况,一直发送且无法接收,PLLQ改为4分频后,PLL为50MHZ此时CAN工作正常。所以这些时钟之间的关系应该是怎么个配置关系呢!
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2022-7-6 18:45:14 | 显示全部楼层
cubemx生成的代码的确有些坑,特别是时钟,稍微不注意就是各种异常,这CAN异常应该是CAN时钟不能大于某一个值手册基本一概而过,直接拿论坛的双CAN例程用PLL2Q就没这事了,只能说GET到了,又没完成GET到,有一些东西没完全理解。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 02:37 , Processed in 0.185363 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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