打印
[CAN-bus/DeviceNet]

仲裁的疑惑..........

[复制链接]
2209|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2010-1-21 15:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xlsbz 于 2010-1-21 16:05 编辑

《CAN USER'S MANUAL REV1.2》的第36页说:

In this example, both nodes A and B are transmitters performing an arbitration for the CAN bus. The node A has sent its Start of Frame bit less than one bit time earlier than node B, therefore node B has synchronised itself to the received edge from recessive to dominant. Since node B has received this edge delay(A_to_B) after it has been transmitted, B’s bit timing segments are shifted with regard to A. Node B sends an identifier with higher priority and so it will win the arbitration at a specific identifier bit when it transmits a dominant bit while node A transmits a recessive bit. The dominant bit transmitted by node B will arrive at node A after the delay(B_to_A).
--------------------------------------------------------------------------
--------------------------------------------------------------------------
一直有个疑问:这个bit time中的bit到底是个啥玩意?
node A transmits a recessive bit.就是说节点A发送了一个隐形位。那么是不是需要一个bit time 呢?
The dominant bit transmitted by node B。就是说节点B发送一个显性位。那么是不是也需要一个bit time?

多谢解答
-------------------------------------------------------------------

未命名q.gif (27.56 KB )

未命名q.gif

相关帖子

沙发
xlsbz|  楼主 | 2010-1-22 10:21 | 只看该作者
现在看来 仲裁这玩意 应该是时间很短的,虽然材料上说的是位仲裁,但是进行仲裁的时间和仲裁位传输的时间是很短的。
C_CAN User manual说:传播时间时间包括三部分--节点输入、节点输出、总线传输。
我觉得 CAN SPECAILIATION 2.0说的更准确点,传播时间时间包括三部分--节点输入比较器延迟、节点输出驱动延迟、总线传输。
我看这个比较器 很可能就是指的对仲裁位的比较。

仲裁位传输的时间就是 那个 总线上传输花费的时间。
仲裁位比较的时间起码要占了节点输入的时间的一部分。
而仲裁位的比较应该在那个bit Timing Logic里弄。bit Timing Logic里的操作都是按照Tq(time Quantum)搞的。因此仲裁的过程肯定不会超过1个 Tq的。
因为Prop_Seg最多才8个TQ,而标准仲裁有11位,超过8个了。

哈哈所以我觉得我有点懂了。

使用特权

评论回复
板凳
一只小绵羊| | 2010-1-22 12:41 | 只看该作者
仲裁就是读一下总线上的状态看和自己发送一样不一样,不一样就说明自己被人家给挤掉了,仲裁丢失

使用特权

评论回复
地板
xlsbz|  楼主 | 2010-1-22 13:53 | 只看该作者
本帖最后由 xlsbz 于 2010-1-22 14:02 编辑

3# 一只小绵羊
恩 呵呵 你说的对。

假如两个节点 A----------B


为了说明问题 假如只有一个仲裁位
A的仲裁位是1   B的仲裁位是0

假设A将1发送给B,则B将自己的0 和收到的来自A的1“相与” 则得0(于是B发现自己的优先级高,于是继续发送别的东西,比如数据啊 CRC啊 )。B将得到的这个0发给A,A将这个0与1比较,于是A发现自己的优先级没有别人的高,于是A就知道自己的优先级低,于是A不继续发送。
这所有的过程(不包括红色字体内容)必须在prog——seg 与 缓冲段1之间的点之前完成。

使用特权

评论回复
5
xlsbz|  楼主 | 2010-5-14 21:04 | 只看该作者
哈哈 以前的我啊  学的太深入了吧 佩服...............

使用特权

评论回复
6
ccxlslr| | 2010-5-18 19:03 | 只看该作者
3# 一只小绵羊
恩 呵呵 你说的对。

假如两个节点 A----------B


为了说明问题 假如只有一个仲裁位
A的仲裁位是1   B的仲裁位是0

假设A将1发送给B,则B将自己的0 和收到的来自A的1“相与” 则得0(于是B发现自己 ...
xlsbz 发表于 2010-1-22 13:53

1就是不发送,当B发送0时,A将总线状态与自己异或,发现不同,自己就退出了.

使用特权

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

本版积分规则

190

主题

1614

帖子

4

粉丝