1.2 研究背景
1.2.1 总线对比
本文设计的控制器从属于指导老师目前参与的一个火控系统控制项目,需要实现与系统中其他节点的通信。该项目内部各节点之间通过总线进行通信,每个节点都有主动发送信息的权利,因此为多主机情况。考虑到应用环境的特殊性,我们还需要足够可靠通信环境以及较高的通信速率。
下面对目前比较通用的总线进行分析以说明选用CAN的原因。
1.2.1.1 UART[1][2]
UART(Universal Asynchronous Receiver/Transmitter)作为通用串行数据总线,用于异步通信,是串口通信的基础协议。该总线可实现全双工,在与PC进行通信的场景中很多见。作为一个大类的异步通信的通称,在UART的基础上添加电平转换和驱动电路即可实现某种具体的总线,加上RS232驱动器即RS232总线,加上RS485驱动器则为RS384总线。根据各类总线的电气规范不同,其传输距离以及抗共模干扰能力不同。
1.2.1.2 SPI[3][4]
SPI(Serial Peripheral Interface)总线是由Motorola公司推出的全双工同步串行总线。它主要的应用场景在于与ADC,E2PROM与显示驱动器等慢速外设的通信。SPI的接线中具有时钟线,因此其数据的传输是同步的。
1.2.1.3 I2C[5]
I2C为同步半双工总线,在这个总线网络中可以有一个以上的主节点以及从节点。它定义了两条线用于数据的传输:串行数据线和串行时钟脉冲线。I2C网络中的每一个节点都具有一个7位或10位的地址。10位地址使得网络中能布置更多的器件,但总线可挂接器件的数目主要由总线的分布电容容量决定。这一容量必须限制在400pF以内。
1.2.1.4 CAN[7]
CAN全称“Controller Area Network”,是由BOSCH提出的多主机,信息广播式的总线协议。其最高信号传输速率可达1Mb/s。与传统的USB和以太网在中央总线主机监控下实现A点到B点的点对点大数据传输的方式不同,在CAN总线中,类似温度、转速之类的小型数据通过广播形式传播到整个网络中。通过非破坏性的逐位仲裁机制,CAN总线可以实现高优先级报文的无延迟传输。
综合考虑上述总线,并通过表1[8]比较其主要性能:
表1.1 四种串行总线性能对比表
总线类型 信号线数 通信类型 多主机 通信速率bps 运行挂载节点数 通信距离/m
UART 2 异步 不支持 3k~4M 2 1.5@128kb/s
SPI 3 同步 不支持 >1M <10 <3
I2C 2 同步 支持 <3.4M <10 <3
CAN 2 异步 支持 20k~1M 128 40@1Mb/s
因此综合考虑下来,CAN总线是最适合于本应用场景的总线种类。
1.2.2 CAN总线的发展[9]