迪文科技论坛

 找回密码
 立即注册
搜索
查看: 269|回复: 6

【提问】T5L0偶尔出现CAN死机怎么解决

[复制链接]

13

主题

39

回帖

336

积分

中级会员

Rank: 3Rank: 3

积分
336
发表于 2026-2-4 11:24:12 | 显示全部楼层 |阅读模式
最近使用T5L0接在CAN总线,程序设定CAN波特率是250K,有时出现CAN死机现象,CAN能发送数据出来,但是接收不到数据,重新初始化CAN也不行,必须重启MCU才能恢复CAN,请问有办法解决这个问题吗?
回复

使用道具 举报

0

主题

504

回帖

4415

积分

论坛元老

Rank: 8Rank: 8

积分
4415
发表于 2026-2-4 20:53:08 | 显示全部楼层
参考这个看下
【开源】T5L0_CAN通讯
http://inforum.dwin.com.cn:20080 ... 3&fromuid=11482
(出处: 迪文科技论坛)
回复

使用道具 举报

13

主题

39

回帖

336

积分

中级会员

Rank: 3Rank: 3

积分
336
 楼主| 发表于 2026-2-5 08:47:17 | 显示全部楼层
yuanbin2020 发表于 2026-2-4 20:53
参考这个看下
【开源】T5L0_CAN通讯
http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=3243 ...

你好,can 驱动是好的,可以正常收发数据,我想问的是偶尔can出现死机现象,调用CanInt()函数也不能恢复正常,只能复位MCU才行,CR寄存器BIT6置1,清零0xFF0060-0xFF0062地址里面的数据,再调用CanInt()函数也不能恢复,现在不想MCU复位解决,有没有让can恢复正常的方法?
回复

使用道具 举报

0

主题

482

回帖

2903

积分

金牌会员

Rank: 6Rank: 6

积分
2903
发表于 2026-2-5 13:15:56 | 显示全部楼层
if (CAN_ET & 0X20)
{
        CAN_ET &= 0XDF;
        CAN_CR |= 0X40;
        delay_us(3000);
        CAN_CR &= 0XBF;
}
主循环加这个复位程序看看。
回复

使用道具 举报

13

主题

39

回帖

336

积分

中级会员

Rank: 3Rank: 3

积分
336
 楼主| 发表于 2026-2-5 16:13:26 | 显示全部楼层
紫狐 发表于 2026-2-5 13:15
if (CAN_ET & 0X20)
{
        CAN_ET &= 0XDF;

在main函数循环调用上面的代码,没效果,有没有MCU复位,屏幕不要复位,或者屏幕不要黑屏?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0

主题

482

回帖

2903

积分

金牌会员

Rank: 6Rank: 6

积分
2903
发表于 2026-2-6 08:52:28 | 显示全部楼层
没有只复位os的方法,您可以用这个模版修改看下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

13

主题

39

回帖

336

积分

中级会员

Rank: 3Rank: 3

积分
336
 楼主| 发表于 2026-2-12 11:53:16 | 显示全部楼层
紫狐 发表于 2026-2-6 08:52
没有只复位os的方法,您可以用这个模版修改看下。

问题解决了,CAN_CR的BIT6软件复位确实有效果,谢谢大神!!!
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-4-18 23:08 , Processed in 0.025822 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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