CAN(Controller Area Network)通信和IIC(Inter-Integrated Circuit)通信都是应用很广的通信方式,IIC一般用于同一个电路板上面不同简单传感器和模块的通信,优点是布线简单硬件开发成本低;大多数硬件工程师刚开始接触到的通信方式基本都是IIC通信。而CAN用于不同大模块之间的单片机通信,是差分通信信号,优点就是充分考虑了抗干扰设计。 CAN总线和IIC(Inter-Integrated Circuit)总线尽管都是用于设备间通信的串行通信总线协议,但两者有以下不同点:
1. 用途不同:CAN总线通常用于工业控制、汽车网络等高可靠性应用,而I2C通常用于低速控制和数据传输。
2. 速率不同:CAN总线速率可以高达1 Mbps,而I2C总线通常在400 Kbps以下。
3. 线路不同:CAN总线使用双绞线,I2C总线则可以使用双线、三线和四线架构,其中最常见的是双线架构。
4. 地址机制不同:CAN总线使用11位或29位标准帧标识符来识别设备,而I2C总线使用7位或10位设备地址来寻址。
5. 工作方式不同:CAN总线是多主机环境下的异步通信协议,而I2C总线通常在单主机环境下的同步通信协议。 现在CAN 总线主要应用在汽车电子控制系统中(ECU),如发动机管理系统、自动空调控制系统、安全气囊控制系统等。使用CAN通信可以让各个ECU模块之间进行通讯,可以有限减少了线缆之间的长度。不适用CAN通信,就会增加冗长的线缆就各个ECU模块之间点对点的进行连接,而且线束之间的排布杂乱,还会造成EMC干扰,线间耦合干扰等等问题。 而有了CAN通讯,这么多的ECU设备只需要挂载在CAN总线,就可以组成局域网通信了,大大减少线缆的长度。CAN通信需要MCU使用专门的CANTX和CANRX,经过专门的CAN转换芯片进行数据间通信。另一端的接受CAN转换芯片会将CANH和CANL信号进行差分相减运算,即使CANH和CANL有共模信号,也不会对差分数据由干扰,极大的增加了抗干扰作用。比如发送的单片机发送低电平信号,经过CAN转换芯片后,CANH信号就是3.5V,CANL信号就是1.5V。另一端的接受CAN转换芯片会将CANH和CANL信号进行差分相减就是显性电平,定义为逻辑0,然后再由接受端的单片机接受到逻辑0,完成一个低电平信号从发送到接受的通信过程。 而当发送的单片机发送高电平信号,经过CAN转换芯片后,CANH信号就是3.5V,CANL信号就是3.5V。另一端的接受CAN转换芯片会将CANH和CANL信号进行差分相减为0就是隐性电平,定义为逻辑1,然后再由接受端的单片机接受到逻辑1,完成一个高电平信号从发送到接受的通信过程。 现在CAN通信的线缆都是双绞线缠绕,同时存在的共模干扰后,差分压差不变,也就不会对传输的信号造成影响。 正是由于这种差分传递信号抗干扰的优势,常规485之类的通信只有10米左右,而CAN通信可以达到上千米。 |
最后一句还是删掉吧