[CAN-bus/DeviceNet] yusea君引导我发现了什么

[复制链接]
4095|7
 楼主| wxj1952 发表于 2007-7-10 11:03 | 显示全部楼层 |阅读模式
yusea君是精通CAN规范的人。<br /><br />&nbsp;&nbsp;重复yusea君的实验,同样经历了一些怪异的、不能解释的现象/输出结果,但最终发现还是自己的程序问题;反复修正,使之符合规范,遂找出了对CAN规范中关于仲裁丢失规则的正确理解,及程序处理方法要点。(规范中对这些内容不会讲得很细,只限于以下文字。)<br /><br />CAN仲裁规则:<br />Bus&nbsp;access&nbsp;conflicts&nbsp;are&nbsp;resolved&nbsp;by&nbsp;bit-wise&nbsp;arbitration&nbsp;on&nbsp;the&nbsp;identifiers&nbsp;involved&nbsp;by&nbsp;each&nbsp;station&nbsp;observing&nbsp;the&nbsp;bus&nbsp;level&nbsp;bit&nbsp;for&nbsp;bit.&nbsp;This&nbsp;happens&nbsp;in&nbsp;accordance&nbsp;with&nbsp;the&nbsp;&quot;wired&nbsp;and&quot;&nbsp;mechanism,&nbsp;by&nbsp;which&nbsp;the&nbsp;dominant&nbsp;state&nbsp;overwrites&nbsp;the&nbsp;recessive&nbsp;state.&nbsp;The&nbsp;competition&nbsp;for&nbsp;bus&nbsp;allocation&nbsp;is&nbsp;lost&nbsp;by&nbsp;all&nbsp;those&nbsp;stations&nbsp;(nodes)&nbsp;with&nbsp;recessive&nbsp;transmission&nbsp;and&nbsp;dominant&nbsp;observation.&nbsp;All&nbsp;those&nbsp;&quot;losers&quot;&nbsp;automatically&nbsp;become&nbsp;receivers&nbsp;of&nbsp;the&nbsp;message&nbsp;with&nbsp;the&nbsp;highest&nbsp;priority&nbsp;and&nbsp;do&nbsp;not&nbsp;re-attempt&nbsp;transmission&nbsp;until&nbsp;the&nbsp;bus&nbsp;is&nbsp;available&nbsp;again.&nbsp;&nbsp;<br />(注:所谓&nbsp;the&nbsp;highest&nbsp;priority&nbsp;是指当有若干个节点同时竞争总线时,仲裁结果是:所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并接收其报文。)<br />&nbsp;<br />&nbsp;&nbsp;有篇荷兰人写的**概念更清晰,他说其它loser节点将由积极发送状态转换为“Listen&nbsp;only”&nbsp;只听状态。<br /><br />losers&nbsp;在听什么?它们听到了什么?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(这就是CAN规范内含的精彩内容。)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;我最初的疑问:一个SR=0x10的loser还能不能接受并执行“连续发送”的上层命令/程序意图?<br />&nbsp;&nbsp;&nbsp;&nbsp;yusea君说,让701、703同时启动,两边同时“连续发送”。703已经被701阻塞挂起了,它有一个发送任务悬在那里等待运行,它还能接收新的发送任务?一个CAN通信控制器能悬挂几个任务?<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;规范中明确说明了,竞争失败者不会在总线再次空闲前再次发送报文。只有当最高优先权的报文节点释放总线之后,其他几个losers才再次尝试重新传输报文/竞争总线。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;所以,在703号报文发送节点因仲裁失败成为loser之后,在701号报文节点发送完它的每一帧数据之前,它一直是一个接收器。在703节点内部,每发生1次仲裁丢失就应完整接收一帧。仲裁丢失数等于接收帧数。这意味703在701每发送1帧消息,(虽经仲裁失败)必然接收到701发送到总线上的报文,否则它就不是CAN控制器。/或者实验程序出了问题。<br /><br />下一步的论证命题是:<br />1、为什么一个loser703不会再次与701积极竞争总线?(除了总线空闲之外,它还听见了什么?)———这里有概念错误!待修改。<br />2、为完成被挂起的发送任务,一个loser在什么状态条件下,才会再次竞争总线?(总线空闲除外。)?)———这里不严格!待修改。<br /><br />3、703何时/怎样脱离/摆脱/结束自己的loser状态?(总线空闲除外。)<br />4、......<br />5、......<br /><br />所枚举的问题均归纳于:一个因仲裁退出而被挂起的任务在MAC子层上的CAN调度规则。<br /><br />(规范中都提到了的。)<br /><br /><br /><br />
yusea 发表于 2007-7-10 18:25 | 显示全部楼层

不要继续在这里误导众人!

yusea 发表于 2007-7-10 18:34 | 显示全部楼层

注意一下note

yusea 发表于 2007-7-10 21:46 | 显示全部楼层

你有没有认真看过nxp的手册

有没有看过&nbsp;CANMOD中STM位是干什么用的。
Ice_River 发表于 2007-7-11 10:15 | 显示全部楼层

路过

君?<br />无语!
 楼主| wxj1952 发表于 2007-7-11 10:42 | 显示全部楼层

学会说对不起,即使自己没错。

yusea君果然精通CAN规范,我曾经建议你做的实验,怎么拿不出结果?&nbsp;现在只好拿规范文本做辩论依据了。早料定你会这么做了,而且知道你要拿出协议的这一段,我要是没理解透规范,怎么敢质疑你这种人?&nbsp;<br />&nbsp;&nbsp;好,就让我们讲规范。yusea君能不能为我翻译/解释一下,下面这段话的意思?最好举个例子说明更清楚一些。主要是or后半句。(你的尊严在这里,不是在嘴上。)<br /><br />For&nbsp;stations&nbsp;which&nbsp;are&nbsp;not&nbsp;’error&nbsp;passive’&nbsp;or&nbsp;have&nbsp;been&nbsp;RECEIVER&nbsp;of&nbsp;the&nbsp;previous&nbsp;message:<br /><br /><br />发现yusea君经常按照自己个人的理解去解释协议设计技术问题,所举例证经常成为对手的把柄,例如:身份*号编码理解问题,might所指概率理解问题,......这回又让我抓住把柄了。<br /><br />另外:“有没有看过&nbsp;CANMOD中STM位是干什么用的。”又一个误解/说漏嘴了吧。<br /><br />下回自己先考虑好对手将怎样反驳自己,论证清楚再提出来。否则,骂错了人怎么收场?总不能选择沉默就算了吧。<br /><br />还有,就本问题,如果对手问你CAN在MAC子层上的调度规则是什么?如果对手问你CAN规范中所包含的有限状态机模型中有几个/什么状态?如果对手问你因仲裁失败而退出的station处于FSM中的哪个状态?它将在什么条件激励下回到/被自动调度到什么状态?<br /><br />你如何回答?光骂人也不是个事啊。<br /><br />我一直没有直接公布答案,是不希望让谁不好收场。一再反复提示你,是希望你通过修改实验发现自己的误解,结果你根本没动!反而化那么大精力过分关注自己的尊严,.......<br /><br />有时间看看Andrew&nbsp;S.Tanenbaum&nbsp;写的《计算机网络》(第2版)<br />有时间看看Larry L.Peterson&nbsp;写的&nbsp;《计算机网络》(第2版)<br /><br />当然,像陈明计,Michael&nbsp;J.Pont,李庆,邵贝贝的书想必已读过了。否则也不会总出那么多误解。<br />
zlgCAN 发表于 2007-7-11 10:57 | 显示全部楼层

我们欢迎总线技术方面的探讨;都将总线通讯作为我们的研

即是这一行业的荣幸,也是新技术发展的动力。有缘通过网络相聚,这也是我们每一位同道的幸运。<br /><br />同时说一声:保持良好的心情,用认真对待学术的心态来交流与讨论,别违背了技术的初衷,伤了大家的和气。
lan_tian88 发表于 2007-7-11 21:56 | 显示全部楼层

你们都是高手!

看了你们的言论,感觉你们都是高手,呵呵,大家都是搞技术的,都是需要互相取长补短的,顺便问一个问题,CAN通讯在做EFT/B(电快速脉冲群)干扰测试时总是干扰模拟采样电路,有什么具体的解决之道吗?我的CAN总线没有隔离(准备采用),TVS都加了,RC滤波器也加了,但效果仍然不是很理想!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

757

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部