can总线原理如何理解,can总线原理详解
扫描二维码
随时随地手机看文章
CAN总线是一种串行通信协议,能有效的支持具有很高安全等级的分布实时控制
应用范围十分广泛,从高速网络到低价位的多路接线都可以使用CAN,主要运用于汽车电子航天等行业,使用CAN连接发动机的控制单元等汽车部件,CAN总线具有可靠,实时以及灵活的特性.
CAN总线以广播的形式发送报文.当CAN总线上的某个节点需要给其他节点发送消息时,会以广播的形式发送给总线上所有的节点,因为总线上的节点不适用地址来进行配置CAN系统,而是根据报文的开头的11位标识符决定是否要接受其他节点发来的报文.
每个节点都有自己的处理器和CAN总线接口控制器;当一个节点需要发送数据到另一个节点时,自身节点的处理器需要将要发送的数据和自己的标识符传给自身的总线控制接口,处于准备状态;当获取到总线的使用权后,将数据和标识符组装成报文,将报文以一定格式发出,此时其他的节点处于接收状态.至于其他节点是否接收,由其他节点决定,是都会对某些报文进行过滤.当新增的节点仅仅是纯粹的数据接收设备时,只需要该设备直接从总线上接收数据即可.
首先 CAN 数据总线有两条导线,一条是黄色的,一条是绿色的 ------ 分别是 CAN_High 线和 CAN_Low 线,当静止状态时,这两条导线上的电平一样,这个电平称为静电平,大约为 2.5 伏。
这个静电平状态就是隐形状态,也称隐性电平,也就是没有任何干扰的时候的状态称为隐性状态。当有信号修改时,CAN_High 线上的电压值变高了,一般来说会升高至少 1V;而 CAN_Low 线上的电压值会降低一个同样值,也是 1v。那么这时候,CAN_High 就是 2.5v+1v=3.5v,它就处于激活状态了。而 CAN_Low 降为 2.5v-1v=1.5v。
由此我们得到,在隐性状态下CAN_High 线与 CAN_Low 没有电压差,这样我们看到没有任何变化也就检测不到信号。但是在显性状态时,改值最低为 2V,我们就可以利用这种变化才传输数据了。所以出现了那些帧,那些帧中的场,那些场中的位等等。
在总线上通常逻辑 1 表示隐性。而 0 表示显性。这些 1 啊,0 啊,就可以利用起来为我们传数据了。利用这种电压差,我们可以接收信号。
一般来说,控制单元通过收发器连接到 CAN 驱动总线上,这个收发器(顾名思义,可发送,可接收)内有一个接收器,该接收器是安装在接收一侧的差动信号放大器。然后,这个放大器很自然地就放大了 CAN_High 和 CAN_Low 线的电平差,然后传到接收区。
CAN 的报文格式有两种,不同之处其实就是识别符长度不同,具有 11 位识别符的帧称为标准帧,而还有 29 位识别符的帧为扩展帧,CAN 报文有以下 4 个不同的帧类型。分别是:
(1) 数据帧:数据帧将数据从发送器传输到接收器;
(2) 远程帧:总线节点发出远程帧,请求发送具有同一标识符的数据帧;
(3) 错误帧:任何节点检测到总线错误就发出错误帧;
(4) 过载帧:过载帧用已在先行的后续的数据帧(或远程帧)之间提供一附加的延时。
下面详细介绍一下数据帧,用于CAN传送数据,包括帧起始、仲裁场、控制场、数据场和CRC场。
帧起始:标志一个数据帧的开始,仅由一个显性位构成,只有在总线空闲期间才能够发送。
仲裁场:在标准帧中,仲裁场由11位标识符和RTR位组成;在扩展帧中,仲裁场由29位标识符、SRR位、IDE位和RTR位组成。
ID(标识符)是用来确定一条报文,表明报文含义及优先级,如上面举例的0x100。
RTR(远程传送请求位),数据帧RTR位必须为显性电平(RTR=0),远程帧RTR位必须为隐性电平(RTR=1)。
IDE(标识符扩展位)在标准帧属于控制场,在扩展帧中属于仲裁场。在标准帧中IDE为显性电平(IDE=0),在扩展帧中IDE为隐性电平(IDE=1)
SRR(远程代替请求位)在扩展帧中始终为隐性电平(SRR=1)
控制场:由6位组成。在标准帧中,控制场包括IDE(此时为显性电平0)、保留位r(此时为显性电平0)以及占4个bit的数据场长度码DLC。在扩展帧中,控制场没有IDE位,而是两个保留位r0和r1,此时同样均为显性电平0。
数据场:包含CAN数据帧发送的数据,0~8个byte,如上面举例的主要信息就是围绕数据场来说明的,这也是整车电子工程师讨论得最多的一部分内容,如果你不是专门的CAN设计工程师,其他的格式内容仅作了解即可。
CRC场:包括CRC序列CRC界定符DEL,CRC校验是为了通信双方的安全可靠性制定的”暗号“,只有发送方根据发送信息计算的CRC值与接收方根据接收信息计算的CRC值对上,才能判断这次通信成功了,否则就会报错。
CAN总线是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电子干扰性,并且能够检测出产生的任何错误。CAN总线可以应用于汽车电控制系统、电梯控制系统、安全监测系统、医疗仪器、纺织机械、船舶运输等领域。