原创 CAN协议介绍3

2009-10-28 09:50 3428 2 2 分类: 工程师职场

远程帧


通过发送远程帧,作为某数据接收器的站可以初始化通过其资源节点传送不同的数据。远程帧也有标准格式和扩展格式,而且都由6 个不同的位场组成:
帧起始、仲裁场、控制场、CRC 场、应答场、帧结尾。
与数据帧相反,远程帧的RTR 位是“隐性”的。它没有数据场,数据长度代码的数值是不受制约的(可以标注为容许范围里0...8 的任何数值)。此数值是相应于数据帧的数据长度代码。RTR 位的极性表示了所发送的帧是一数据帧(RTR 位“显性”)还是一远程帧(RTR“隐性”)。


错误帧
错误帧由两个不同的场组成。第一个场用是不同站提供的错误标志(ERROR FLAG)的叠加。第二个场是错误界定符.


为了能正确地终止错误帧,一“错误被动”的节点要求总线至少有长度为3 个位时间的总线空闲(如果“错误被动”的接收器有局部错误的话)。因此,总线的载荷不应为100%。
点击看大图


错误标志


有两种形式的错误标志:主动的错误标志和被动的错误标志。
1. 主动的错误标志由6 个连续的“显性”位组成。
2. 被动的错误标志由6 个连续的“隐性”的位组成,除非被其他节点的“显性”位重写。


检测到错误条件的“错误激活”的站通过发送主动错误标志指示错误。错误标志的形式破坏了从帧起
始到CRC 界定符的位填充的规则(参见“编码”),或者破坏了ACK 场或帧结尾场的固定形式。所有其他的站由此检测到错误条件并与此同时开始发送错误标志。因此,“显性”位(此“显性”位可以在总线上监视)的序列导致一个结果,这个结果就是把个别站发送的不同的错误标志叠加在一起。这个序列的总长度最小为6 个位,最大为12 个位。
检测到错误条件的“错误被动”的站试图通过发送被动错误标志指示错误。“错误被动”的站等待6个相同极性的连续位(这6 个位处于被动错误标志的开始)。当这6 个相同的位被检测到时,被动错误标志的发送就完成了。


错误界定符
错误界定符包括8 个“隐性”的位。
错误标志传送了以后,每一站就发送“隐性”的位并一直监视总线直到检测出一个“隐性”的位为止。然后就开始发送其余7 个“隐性”位。


过载帧



过载帧包括两个位场:过载标志和过载界定符。
有三种过载的情况,这三种情况都会引发过载标志的传送:
1. 接收器的内部情况(此接收器对于下一数据帧或远程帧需要有一延时)。
2. 在间歇的第一和第二字节检测到一个“显性”位。
3. 如果CAN 节点在错误界定符或过载界定符的第8 位(最后一位)采样到一个显性位,节点会发送一个过载帧(不是错误帧)。错误计数器不会增加。
根据过载情况1 而引发的过载帧只允许起始于所期望的间歇的第一个位时间,而根据情况2 和情况3引发的过载帧应起始于所检测到“显性”位之后的位。通常为了延时下一个数据帧或远程帧,两种过载帧均可产生。


点击看大图


过载标志(Overload Flag)
过载标志由6 个“显性”的位组成。过载标志的所有形式和主动错误标志的一样。过载标志的形式破坏了间歇场的固定形式。因此,所有其他的站都检测到过载条件并与此同时发出过载标志。如果有的节点在间歇的第3 个位期间检测到“显性”位,则这个位将解释为帧的起始。
过载界定符(Overload Delimeter)
过载界定符包括8 个“隐性”的位。
过载界定符的形式和错误界定符的形式一样。过载标志被传送后,站就一直监视总线直到检测到一个
从“显性”位到“隐性”位的跳变。此时,总线上的每一个站完成了过载标志的发送,并开始同时发送其
余7 个“隐性”位。


帧间空间
数据帧(或远程帧)与先行帧的隔离是通过帧间空间实现的,无论此先行帧类型如何(数据帧、远程帧、错误帧、过载帧)。所不同的是,过载帧与错误帧之前没有帧间空间,多个过载帧之间也不是由帧间空间隔离的。
帧间空间(Interframe Space)
帧间空间包括间歇、总线空闲的位场。如果“错误被动”的站已作为前一报文的发送器时,则其帧空间除了间歇、总线空闲外,还包括称作挂起传送(SUSPEND TRANSMISSION)的位场。对于已作为前一报文发送器的“错误被动”的站,其帧间空间如下图所示:


点击看大图


间歇(Intermission)
间歇包括3 个“隐性”的位。间歇期间,所有的站均不允许传送数据帧或远程帧,唯一要做的是标示一个过载条件。
总线空闲(Bus IDLE)
总线空闲的时间是任意的。只要总线被认定为空闲,任何等待发送报文的站就会访问总线。在发送其
他报文期间,有报文被挂起,对于这样的报文,其传送起始于间歇之后的第一个位。总线上检测到的“显性”的位可被解释为帧的起始。
挂起传送(Suspend Transmission)
“错误被动”的站发送报文后,站就在下一报文开始传送之前或总线空闲之前发出8 个“隐性”的位跟随在间歇的后面。如果与此同时另一站开始发送报文(由另一站引起),则此站就作为这个报文的接收器。


错误类型


位错误(Bit Error)
单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误。但是在仲裁场(ARBITRATION FIELD)的填充位流期间或应答间隙(ACK SLOT)发送一“隐性”位的情况是例外的—— 此时,当监视到一“显性”位时,不会发出位错误。当发送器发送
一个被动错误标志但检测到“显性”位时,也不视为位错误。
填充错误(Struff Error)
如果在使用位填充法进行编码的信息中,出现了第6 个连续相同的位电平时,将检测到一个填充错误。
CRC 错误(CRC Error)
CRC 序列包括发送器的CRC 计算结果。接收器计算CRC 的方法与发送器相同。如果计算结果与接收到CRC 序列的结果不相符,则检测到一个CRC 错误。
格式错误(Form Error)
当一个固定形式的位场含有1 个或多个非法位,则检测到一个形式错误。(备注:接收器的帧末尾最后一位期间的显性位不被当作帧错误)
应答错误(Acknowledgment Error)
只要在应答间隙(ACK SLOT)期间所监视的位不为“显性”,则发送器会检测到一个应答错误。


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /4 下一条