- 1、本文档共76页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图9.17 标准格式帧和扩展格式帧的仲裁过程示意图 9.3.3 CAN是怎样实现位填充的? 为什么要实行位填充编码? CAN总线中传输的消息帧的每一位都由不归零码表示,这种编码获得了位编码的最大效率,但是也有一个缺点,就是它并不是消息帧的每一位都携带同步信息,只有在显性电平和隐性电平互相跳变的时刻携带有同步信息。 总线上的每个节点都有自己的时钟,在没有收到总线上的同步信号时,各个节点都按照自己的时钟决定下一个位的接收或发送时刻。CAN总线的同步信息携带在“0”和“1”互相跳变的时刻,总线上的每个节点只有在这些时刻才可以根据总线上的同步信息修正自己的时钟,确定自己的在什么时刻开始接收下一位,这就是所谓的同步。 如果在一个消息帧中有太多相同电平的位,那么总线上的众多接收节点就会在较长的时间内无法从总线上获取同步信息,在收不到同步信息时,就无法进行时钟的同步调整,由于每个节点时钟的误差不同,误差的长时间积累就会导致失去同步。失去同步后接收节点收到的信息一定是错误信息,通信将无法进行。 为了解决这个问题,CAN总线采取了位填充编码的方法。 怎样实现位填充编码? 位填充简单讲就是当同样的电平持续 5 位时则添加一个位的反型电平。如果消息帧内出现连续5个“1”,则在其后面添加1个“0”;同样 ,若出现连续5个“0”,则在其后面添加1个“1”。 位填充的构成如图 9.18所示。 图9.18 位填充示意图 帧起始的值是“0”,即在总线上输出显性电平。总线空闲时,他的状态为“1”,即隐性电平。当一个节点要发送数据时,它先检测总线上有没有数据发送,若持续一定时间(比如6个位数的时间)总线上都是隐性电平,则它开始发送数据。发送的第一位数据就是帧起始,一位显性电平,总线上的其它节点检测到总线上出现显性电平“0”时,就知道有节点要发送数据,大家就以总线电平从“1”变为“0”的那个时刻为基准,同步自己的接收系统,开始接收数据。 所以,帧起始只有一位,为显性电平“0”,用于向总线上的其它节点告知“我要发送数据”,并提供一个同步基准时刻,供大家参考。 (2)仲裁场(Arbitration Field) 仲裁场主要作用是给出本帧数据的身份号码,这一号码确定了本帧的优先级和重要性,并向总线上其它节点标示出这一帧是数据帧还是远程帧。 在标准格式中,仲裁场由11位标识符和RTR位组成;在扩展格式中,仲裁场由29位标识符、SRR位、标识位和RTR位组成。 标识符: CAN 给每一条报文分配一个唯一的身份号码(ID),它代表了这条报文的重要程度、优先级等信息。CAN2.0A总线中标识符为11位,CAN2.0B总线中为29位。 RTR(远程传输请求)位:该位为显性电平“0”时,说明这一帧为数据帧;为“1”时,说明这一帧为远程帧。 SRR(替代传输请求)位:在扩展格式中,该位为隐性电平“1”。 IDE(标识符扩展)位:在扩展格式中它处于仲裁场的一部分,为隐性电平“1”;在标准格式中该位属于控制场,为显性电平“0”。 (3)控制场(Control Field) 控制场用于向总线上的其它节点说明这一帧的数据场有多少位,以便于接收。 控制场由6位组成,第一位为保留位1(r1),第二位为保留位0(r0),第三至六位为数据长度码(DLC)。 对于标准格式,r0和r1均为显性电平“0”;对于扩展格式r0和r1均为显性电平“0”。 DLC共4位,用数字表示紧接着控制场后面的数据场共有多少个字节,具体表示的意义如表9.5所示: 表9.5 DLC的含义 0000:数据场有0字节数据,即数据场有0位; 0001:数据场有1字节数据,即数据场有8位; 0010:数据场有2字节数据,即数据场有16位; 0011:数据场有3字节数据,即数据场有24位; …… 1000:数据场有8字节数据,即数据场有64位。 由于标准帧有可能和扩展帧同时出现在CAN2.0B的网络中,所以对于总线上的其它节点而言需要根据前三场信息判断这一帧是扩展帧还是标准帧,是数据帧还是远程帧。 那么CAN总线上的接收节点是怎样判断的呢? 首先我们仔细研究图9.11。 从图9.11中可看出,从起始位开始数,第14位为r1或IDE,若此位为显性电平“0”时,说明这一帧为标准帧,紧接着后四位是DLC;若此位为隐性电平“1”时,说明这一帧为扩展帧,紧接着的后18位是18位标识符。 若第13位是显性电平“0”时,说明这一
文档评论(0)