1. 什么是CAN总线?
CAN总线,全称为Controller Area Network,即控制器局域网,CAN 总线最初是由德国电气商博世公司开发,其最初动机就是为了解决现代汽车中庞大的电子控制系统之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。
2. CAN总线特点
- 多主方式:可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活。
- 系统柔软性:由于CAN总线的设计允许节点自主决定何时发送数据,这使得系统能够灵活地适应不同的通信需求和条件。
- 速度快,距离远:CAN总线支持较高的数据传输速率,并且可以在较长的距离上稳定传输数据,这得益于其高效的通信协议和抗干扰能力。
- 具有错误检测、错误通知和错误恢复功能:CAN总线使用循环冗余校验(CRC)等机制来检测数据在传输过程中是否出现错误。当检测到错误时,节点会发送错误帧,以通知网络上的其他节点。在检测到错误后,系统可以采取相应的措施,如重传数据,以确保数据的正确传输。
- 故障封闭功能:CAN总线能够将故障节点隔离,防止故障扩散到整个网络,从而保证系统的稳定性。
- 连接节点多:CAN总线理论上可以支持多达110个节点,这使得它非常适合大规模的网络通信。
- 异步:无需时钟线,通信速率由设备各自约定。
- 半双工:可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序。
3. CAN总线原理
CAN 控制器根据两根线(CAN_H、CAN_L)上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。显性电平为逻辑 0,隐性电平为逻辑 1。发送方通过使总线电平发生变化,将消息发送给接收方。
1)CAN总线硬件电路一般包括
- 微控制器(如51单片机):负责处理数据和控制通信。
- CAN控制器(如SJA1000):负责CAN协议的实现和数据帧的生成。
- CAN收发器(如PCA82C250):将CAN控制器的数字信号转换为适合在CAN总线上传输的电信号。
2)一些现代微控制器,如STM32系列,已经将CAN控制器集成到芯片内部,因此只需要外加一个CAN收发器,如SN65HVD230,来完成信号的转换。
3)CAN总线由两条线组成:CAN_H(高电平)和CAN_L(低电平),它们通过差分信号传输数据,以提高抗干扰能力,通常使用带屏蔽的双绞线来减少电磁干扰。
4. CAN的电气属性
CAN总线的电平信号是差分信号,它使用两条线(CAN_H和CAN_L)来传输数据。差分信号的一个主要优点是它对外部电磁干扰具有较好的抗干扰能力。
- CAN总线采用差分信号,即两线电压差(VCAN_H-VCAN_L)传输数据位
- 高速CAN规定:
电压差为0V时表示逻辑1(隐性电平)
电压差为2V时表示逻辑0(显性电平)
- 低速CAN规定:
电压差为-1.5V时表示逻辑1(隐性电平)
电压差为3V时表示逻辑0(显性电平)