查看: 7426|回复: 9

[其他] CAN中发送节点如何检测ACK丢失

[复制链接]

该用户从未签到

1

主题

8

帖子

0

新手上路

Rank: 1

积分
5
最后登录
1970-1-1
发表于 2013-8-26 09:44:46 | 显示全部楼层 |阅读模式
设备是用在汽车上的,胎压监测系统
按照车厂要求,CAN发送信息后如果没有收到ACK确认的话,要求通过软件控制住CAN的重发速度,否则有可能影响其他节点。

硬件方面用的飞思卡尔S08ZD60的MCU,外接TJA1042收发器。
小弟不才,想请教一下代码里面如何检测发送节点没有收到总线上的ACK?
没有检测到ACK是不是由硬件来完成的呢?但是MCU和TJA1042的数据手册好像没有提到ACK丢失有什么标志位。。。

请各位高手指点一下,感激不尽
我知道答案 目前已有8人回答
回复

使用道具 举报

该用户从未签到

1

主题

8

帖子

0

新手上路

Rank: 1

积分
5
最后登录
1970-1-1
 楼主| 发表于 2013-8-26 12:24:30 | 显示全部楼层

回复:CAN中发送节点如何检测ACK丢失

求助~~求助~~求助
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

8

帖子

0

新手上路

Rank: 1

积分
5
最后登录
1970-1-1
 楼主| 发表于 2013-8-26 15:12:11 | 显示全部楼层

回复:CAN中发送节点如何检测ACK丢失

求助~~求助~~求助
回复 支持 反对

使用道具 举报

该用户从未签到

10

主题

459

帖子

0

中级会员

Rank: 3Rank: 3

积分
303
最后登录
2024-10-24
发表于 2013-8-26 15:21:30 | 显示全部楼层

回复:CAN中发送节点如何检测ACK丢失

没做过相关的Demo,但是按我的理解,应该是硬件在收到NCK后会置位寄存器的某一位,在程序中可以查询此位来判断是否收到NCK,或者触发中断!
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

8

帖子

0

新手上路

Rank: 1

积分
5
最后登录
1970-1-1
 楼主| 发表于 2013-8-26 15:45:23 | 显示全部楼层

回复:CAN中发送节点如何检测ACK丢失

回复第 4 楼 于2013-08-26 15:21:30发表:
没做过相关的Demo,但是按我的理解,应该是硬件在收到NCK后会置位寄存器的某一位,在程序中可以查询此位来判断是否收到NCK,或者触发中断! 

谢谢版主大人~~~我也是这么想的。。。可是就是找不到对应的寄存器位。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

8

帖子

0

新手上路

Rank: 1

积分
5
最后登录
1970-1-1
 楼主| 发表于 2013-8-27 09:34:18 | 显示全部楼层

RE:CAN中发送节点如何检测ACK丢失

额。。。是我表述的不对吗?难道真的没人处理过这种情况?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2013-8-27 10:30:07 | 显示全部楼层

    RE:CAN中发送节点如何检测ACK丢失

    关于DZ60可以使用MSCAN 发送错误计数器来判断是否发送成功,还有2个寄存器也是判断他是否发送成功的。这样你就可以做重发机制,我看手册上面没有写关于硬件触发重发的功能。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    8

    帖子

    0

    新手上路

    Rank: 1

    积分
    5
    最后登录
    1970-1-1
     楼主| 发表于 2013-8-27 10:40:39 | 显示全部楼层

    RE:CAN中发送节点如何检测ACK丢失

    请问还有两个寄存器是指哪两个?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    8

    帖子

    0

    新手上路

    Rank: 1

    积分
    5
    最后登录
    1970-1-1
     楼主| 发表于 2013-8-27 10:45:09 | 显示全部楼层

    回复:CAN中发送节点如何检测ACK丢失

    回复第 7 楼 于2013-08-27 10:30:07发表:
    关于DZ60可以使用MSCAN 发送错误计数器来判断是否发送成功,还有2个寄存器也是判断他是否发送成功的。这样你就可以做重发机制,我看手册上面没有写关于硬件触发重发的功能。 

    请问还有两个寄存器是指哪两个?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    8

    帖子

    0

    新手上路

    Rank: 1

    积分
    5
    最后登录
    1970-1-1
     楼主| 发表于 2013-8-28 09:29:58 | 显示全部楼层

    回复:CAN中发送节点如何检测ACK丢失

    问题解决:
    经确认飞思卡尔S08ZD60的这块MCU中,CAN控制器没有专门的ACK丢失标志位,只有一个叫做发送器状态位的东西(CANRFLG寄存器中的Transmitter Status Bits),一共2bits,随着发送错误计数器在一定范围内的改变而改变。
    ACK丢失只能间接的引用该标志位进行判断,然后再做错误重处理。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-22 03:07 , Processed in 0.109153 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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