打印
[CAN-bus/DeviceNet]

CAN的物理层问题:CAN到底是怎么实现传输的?

[复制链接]
2533|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fixmezhu|  楼主 | 2011-3-31 00:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一直在做CAN的通信,通信功能实现后,有些问题难以找到答案:

1、CAN是串行通信的协议,那它在传输的过程中如果发生情况,一帧没有传完,即没有发送end of frame, 会有什么情况呢?是会将下次的传输的数据继续使用当做此次的数据,还是在一定的时间内认为没有收到就取消这次的传输?

2、如果出现校验错等的错误,CAN总线会重发数据么?

3、ACK等等的是在时候发送的,就是说在接收完end of frame后,接收器立即发送ACK给发送器吗?

希望大牛们多多指教哈~

相关帖子

沙发
lnskngdc| | 2011-3-31 00:24 | 只看该作者
1.eof是11个隐/显性位,不管传完与否,只要出现11个连续的隐/显性位,就表示一帧结束,下一帧自有sof。
2.CAN是自动仲裁的,会自动重发。
3.ack是在仲裁后自动发送。

使用特权

评论回复
板凳
fixmezhu|  楼主 | 2011-3-31 10:07 | 只看该作者
1.eof是11个隐/显性位,不管传完与否,只要出现11个连续的隐/显性位,就表示一帧结束,下一帧自有sof。
2.CAN是自动仲裁的,会自动重发。
3.ack是在仲裁后自动发送。 ...
lnskngdc 发表于 2011-3-31 00:24

多谢啊,但是还有一些不是很明白的地方,

如果发送第一帧没有收到表示结束的eof,假如因为传输线断掉之类的(时间很短),然后收到第二帧,那么这个时候会把第一帧没有收完的字节和第二帧一块接受认为是一帧,还是在收到第二帧的sof后,就认为是新来了一帧,而把上一次没接收完的信息略掉?

使用特权

评论回复
地板
lnskngdc| | 2011-3-31 23:37 | 只看该作者
两帧不会混为一帧。
其它节点只有在检测到11个连续的隐性位时,也就是判断总线空闲,才会发送报文,第一帧如果因为“夭折发送”或者断电等其它原因停止报文发送,则此报文会被认为是错误的报文,仲裁通不过,不会在控制器里产生中断。

使用特权

评论回复
5
hyhmh| | 2011-4-16 15:39 | 只看该作者
这个 CAN控制器 会自动处理。
在 CAN 最基础的 规范中,有详尽的描述。

使用特权

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

本版积分规则

0

主题

6

帖子

1

粉丝