CAN总线讲义
- 格式:ppt
- 大小:4.68 MB
- 文档页数:26


1、SJA1000的RX缓冲器起始地址寄存器RBSA被设置为30(十进制),则对应的CAN地址为( )。
A. 42 B. 52 C. 62 D. 72
2、SJA1000进入睡眠模式,下列说法错误的是( )。
A. 睡眠模式位为1 B. 没有总线活动 C. 无中断 D. 发送数据
3、CAN总线中,若具有下列报文ID的4个标准格式数据帧争用总线,胜出的是( )。
A. 10001100001 B. 10001010001 C. 10001000010 D. 11001000010
4、CAN控制器接口PCA82C250的CAN总线系统,总线至少可连接( )个节点。
A. 32 B. 64 C. 110 D. 127
5、CAN总线使用的数据编码是( )。
A. 归零码(RZ) B.不归零码(NRZ)
C. 曼彻斯特编码 D. 差分曼彻斯特编码
6、MCP2515的SPI指令集中,复位命令是( )。
A. 11000000 B. 1100111111 C. 00000011 D. 00000000
7、SJA1000是( )
A.CAN控制器接口芯片 B.CAN控制器驱动芯片
C.在片CAN控制器芯片 D.独立CAN控制器芯片
8、下列OSI模型中的( )不属于DeviceNet的通信模型。
A. 物理层 B. 网络层 C. 应用层 D.数据链路层
9、ISO11898标准支持最高传输速率为( )。
CAN总线由博世公司于1987年开发,1993年成为标准,在近23年的时间里获得了巨大的成功,逐渐替代了其它相近的总线,2001年的节点采用量已超过1亿。但是,曾经力推CAN总线的厂商,如宝马、博世、飞利浦等,目前都开始支持新的总线。对于推动新总线研究的原因,X-By-Wire的发展是一方面,但从根本上讲,消费者的安全需求才是最重要的原因。根据新闻报道:在CAN的发源地德国,2005年汽车抛锚事故中有35%是电子装置引起的。因此,电子控制系统及其通信系统的可靠性是一个敏感的问题,即使没有采用X-By-Wire,仍然使用常规的液压气动机构,也需要一种更为可靠的新总线来代替CAN。
车内通信有两个最基本的要求:一是数据内容正确;二是通信及时,序列一致。对这两点,CAN总线中均有所设计,但仍存在着不一致性、不可预测性、信道出错堵塞等漏洞。
1)不一致性
CAN总线中有一个著名的Last-But-One-Bit错误。CAN总线2.0A在信息认证(Message Validation)中规定:发送器验错的范围可覆盖到帧结束,如果发现错误,以后就按优先权和状态的规定重发;接收器验错的范围覆盖到帧结束的前一位。因此,如果由于空间干扰、电源波动等原因,对于帧的倒数第二位,一部分节点A认为无错,一部分节点B认为有错,即出现了所谓的Byzantine错误。这时,根据EOF应该是7个隐性位,节点B认为这是一种形式错误,所以就会启动错误帧,通知发送器重发,同时丢弃收到的帧。而认为没错的节点A
由于只查到倒数第二位,因此就会接收此帧。如果在发送器例行的下一次发送前B通知的重发成功,A就会收到重复帧;如果重发不成功,B就丢了一帧。在转向和制动系统中,4个轮子对命令的不同理解,可能造成性能的下降或其他更严重的后果。
2)不可预测性
CAN总线将节点状态分为Error Active、Error Passive和Bus Off三种,这三种状态在一定条件下可以互相转换。不同状态中节点的发送有不同的延迟。最高优先权的信息发送延迟有几种可能:当节点状态为Error Active时,若总线空闲,则立即发送;当节点状态为Error Active时,如果其它帧正在发送,则需等正在发送的报文结束后,再过3位后发送;当节点状态为Error Passive时,它有一个出错重发的要求,若没有其它帧要发送,等3位传送(Intermission)和8位挂起传送(Suspend Transmission)后重发;当节点状态为Error Passive时,若总线空闲,出错后等别的信息发送完后再发,等待时间与其它帧的长度有关;当节点状态为Bus Off时,需等状态恢复到Error Passive或Error
总结一下: can总线:
高电平表示逻辑0,低电平表示逻辑1。
can总线的起始场是一个bit的逻辑0(高电平),帧结束由7个bit的逻辑1(低电平)组成。
根据can总线的定义:在发生的时候,每连续五个bit的逻辑0,就会跟着补充一个bit的逻辑1;每连续五个bit的逻辑1,就会跟着补充一个bit的逻辑0。
因此根据上面的波形解析数据的时候,每出现000001这种数据串,那么1就是发送的时候根据can协议填充进去的,所以解码的时候1要去掉,即00000。
再举个例子:11111001表示的数据应该是:1111101。
RS232:(假定数据位8bit,停止位1bit,无奇偶校验)
-12v表示逻辑1,+12v表示逻辑0.
根据波形解析的时候,高电平表示逻辑0,低电平表示逻辑1。
RS232发送数据是以ascii码的形式发送出去的。例如发送字符‘s’,实际上发送的就是0x73.
每发送一个字符:
首先是一个bit的起始位(逻辑0),然后将ascii值的最低位发送出去,接着是次高位。。。。总之是低位在前,高位在后。
例如0x73,发送的时候就是:0b11001110。
接着就是1个bit的停止位(逻辑1)。
1个bit的逻辑的时间宽度就是:1/波特率(单位是秒)。
CAN总线协议
依据国际标准化组织/开放系统互连(International Standardi-zation
Organization/Open SystemInterconnection,ISO/OSI)参考模型,CAN的ISO/OSI参考模型的层结构如图7-6所示。下面对CAN协议的媒体访问控制子层的一些概念和特征做如下说明:
(1)报文(Message) 总线上的报文以不同报文格式发送,但长度受到限制。当总线空闲时,任何一个网络上的节点都可以发送报文。
(2)信息路由(Information Routing) 在CAN中,节点不使用任何关于系统配置的报文,比如站地址,由接收节点根据报文本身特征判断是否接收这帧信息。因此系统扩展时,不用对应用层以及任何节点的软件和硬件作改变,可以直接在CAN中增加节点。
(3)标识符(Identifier) 要传送的报文有特征标识符(是数据帧和远程帧的一个域),它给出的不是目标节点地址,而是这个报文本身的特征。信息以广播方式在网络上发送,所有节点都可以接收到。节点通过标识符判定是否接收这帧信息。
(4)数据一致性应确保报文在CAN里同时被所有节点接收或同时不接收,这是配合错误处理和再同步功能实现的。
(5)位传输速率不同的CAN系统速度不同,但在一个给定的系统里,位传输速率是唯一的,并且是固定的。
(6)优先权 由发送数据的报文中的标识符决定报文占用总线的优先权。标识符越小,优先权越高。
(7)远程数据请求(Remote Data Request) 通过发送远程帧,需要数据的节点请求另一节点发送相应的数据。回应节点传送的数据帧与请求数据的远程帧由相同的标识符命名。
(8)仲裁(Arbitration) 只要总线空闲,任何节点都可以向总线发送报文。如果有两个或两个以上的节点同时发送报文,就会引起总线访问碰撞。通过使用标识符的逐位仲裁可以解决这个碰撞。仲裁的机制确保了报文和时间均不损失。当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧。在仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送,如果发送的是“隐性”电平而监视到的是“显性”电平,那么这个单元就失去了仲裁,必须退出发送状态。