完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
环境:STM32g474re,加上主板,CAN总线上一共有9个节点,其中有一个节点是CAN扩展帧协议,其他为CANFD BRS开启,标准帧
配置:仲裁域 1M 80%,数据域 5M 75%,开启自动重传 问题现象:通信过程,长时间测试,偶现主板无法往总线上刷数据,我们是一主多从方式,主板依次轮询每个节点的信息,一问一答式,总线上测到无信号,CAN寄存器看到无bus-off,DLEC 和LEC错误码都为7,TEC为0,REC为1,TXFIFO为满 尝试手段: CAN H和CAN L短路,这样会导致bus off,和我们看到的寄存器状态不匹配,排除; 把主板的CAN从总线断路,TXFIFO为满,应该是开了重传,fifo数据一直在尝试重发,新的数据进不来。这样符合看到问题时的寄存器状态,但是重新接回总线,异常能够恢复,FIFO恢复正常,但是我们的问题是出现后,一直无法恢复,通过重新初始化CAN能够恢复,所以不像是CAN总线接触不良。 问题:所以还有什么情况会造成FIFO一直满的情况,还发送不出数据到总线 |
|
相关推荐
2个回答
|
|
1. 硬件问题:请检查CAN总线上的所有节点的硬件连接,包括CAN收发器、电阻、电缆等。确保所有连接都正确无误,没有损坏或接触不良的情况。 2. 软件配置问题:请检查STM32G474的CANFD配置是否正确。确保所有节点的配置相同,包括仲裁域、数据域、波特率等。同时,检查CANFD BRS(可变波特率)是否已正确配置。 3. 通信协议问题:由于您的系统中有一个节点使用CAN扩展帧协议,而其他节点使用CANFD BRS,这可能导致通信过程中出现不兼容或冲突。请确保所有节点之间的通信协议兼容。 4. 错误处理:您提到CAN寄存器中的DLEC和LEC错误码都为7,TEC为0,REC为1。这可能表明存在一些错误,但不足以触发bus-off。请检查STM32G474的错误处理逻辑,确保在出现错误时能够正确处理并恢复通信。 5. TXFIFO满:您提到尝试将CAN H和CAN L短路,导致bus off,这与寄存器状态不匹配。这可能表明TXFIFO满的问题。请检查STM32G474的CAN驱动程序,确保在发送数据时能够正确处理TXFIFO满的情况。 6. 干扰问题:CAN总线可能受到外部电磁干扰,导致通信异常。请检查CAN总线周围的环境,确保没有强电磁干扰源。同时,可以考虑使用屏蔽电缆和适当的接地措施来减少干扰。 7. 软件逻辑问题:请检查您的一问一答式通信逻辑,确保在轮询每个节点时,主板能够正确发送请求并接收响应。同时,检查是否有可能存在死锁或资源竞争的情况。 综上所述,您可以从硬件、软件配置、通信协议、错误处理、TXFIFO满、干扰问题和软件逻辑等方面进行排查,以找到导致STM32G474发送CANFD数据异常的原因。希望这些建议对您有所帮助。 |
|
|
|
楼主,最后发现是什么问题,有找到吗?我也是这个问题
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1750 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1608 浏览 1 评论
1049 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1665 浏览 2 评论
1924浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
709浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
559浏览 3评论
583浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
544浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 09:52 , Processed in 0.767302 second(s), Total 85, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号