打印
[总线接口]

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

[复制链接]
3958|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liji1908|  楼主 | 2013-8-22 14:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
设备是用在汽车上的,胎压监测系统
按照车厂要求,CAN发送信息后如果没有收到ACK确认的话,要求通过软件控制住CAN的重发速度,否则有可能影响其他节点。

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

请各位高手指点一下,感激不尽


相关帖子

沙发
liji1908|  楼主 | 2013-8-22 21:22 | 只看该作者
求助~~~

使用特权

评论回复
板凳
liji1908|  楼主 | 2013-8-23 09:36 | 只看该作者
求助~~

使用特权

评论回复
地板
liji1908|  楼主 | 2013-8-23 14:40 | 只看该作者
求助~~

使用特权

评论回复
5
一朵粑粑| | 2013-8-23 21:20 | 只看该作者
我也想问这个问题,貌似是硬件完成的。自动的吧。

使用特权

评论回复
6
sdnumcu| | 2013-8-24 15:44 | 只看该作者
没遇到过,帮顶

使用特权

评论回复
7
liji1908|  楼主 | 2013-8-24 16:56 | 只看该作者
一朵粑粑 发表于 2013-8-23 21:20
我也想问这个问题,貌似是硬件完成的。自动的吧。

我觉得也是硬件完成的,但是要给我一个标志信号吧,否则软件里面怎么处理呢

使用特权

评论回复
8
liji1908|  楼主 | 2013-8-25 18:55 | 只看该作者
sdnumcu 发表于 2013-8-24 15:44
没遇到过,帮顶

啊。。。。貌似很少人碰到这个问题?都没人回帖呢。。。。

使用特权

评论回复
9
sorryoffline| | 2013-8-25 22:50 | 只看该作者
S08ZD60这个cpu没用过,用过mcp2515,里面有总线发送错误计数器,使用这个可以判断总线错误。当时是总线错误过多,这个芯片就离线了,并且不会自动恢复。

使用特权

评论回复
10
liji1908|  楼主 | 2013-8-26 09:41 | 只看该作者
sorryoffline 发表于 2013-8-25 22:50
S08ZD60这个cpu没用过,用过mcp2515,里面有总线发送错误计数器,使用这个可以判断总线错误。当时是总线错 ...

这里也是有总线发送错误计数器的,只是总线发送错误等同ACK丢失错误吗?好像这个计数器是用来计数255次,然后CAN总线进入BUS OFF状态吧。

使用特权

评论回复
11
liji1908|  楼主 | 2013-8-26 12:24 | 只看该作者
求助~~~

使用特权

评论回复
12
liji1908|  楼主 | 2013-8-26 16:42 | 只看该作者
求助~~

使用特权

评论回复
13
liji1908|  楼主 | 2013-8-27 09:31 | 只看该作者
额。。。是我表述的不对吗?难道真的没人处理过这种情况?

使用特权

评论回复
14
liji1908|  楼主 | 2013-8-27 15:26 | 只看该作者
有没有人啊~~~

使用特权

评论回复
15
liji1908|  楼主 | 2013-8-28 09:13 | 只看该作者
问题解决:
经确认飞思卡尔S08ZD60的这块MCU中,CAN控制器没有专门的ACK丢失标志位,只有一个叫做发送器状态位的东西,一共2bits,随着发送错误计数器在一定范围内的改变而改变,如图。
C:\Users\Administrator\Desktop\QQ截图20130828091129.png
ACK丢失只能间接的引用该标志位进行判断,然后再做错误重处理。

使用特权

评论回复
16
liji1908|  楼主 | 2013-8-28 09:14 | 只看该作者
不知道怎么发图。。。算了估计也没什么人感兴趣
在CANR标志寄存器 寄存器下
Transmitter Status Bits  — The values of the error counters control the actual CAN bus status of the MSCAN. As soon as the status change interrupt flag (CSCIF) is set, these bits indicate the appropriate transmitter related
CAN bus status of the MSCAN. The coding for the bits TSTAT1, TSTAT0 is:
00 TxOK: 0  ≤  transmit error counter  ≤ 96
01 TxWRN:  96 < transmit error counter ≤ 127
10 TxERR: 127 < transmit error counter ≤ 255
11 Bus-Off: transmit error counter  > 255

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

70

帖子

0

粉丝