文/Edward
1
通讯速率和通讯距离
CAN总线是一种串行的差分总线,并且这种差分总线只传递数据信息,因此关于时钟信号收发两方是没有信号进行传递的。因此,CAN总线与绝大多数异步串行总线一样,需要收发双方约定好数据传输的波特率(bit/s)才可以确保数据的正常收发。常用的CAN总线波特率有125Kbits/s,250Kbits/s,500Kbits/s,1MKbits/s等,ISO11898中所定义的CAN总线的波特率最高为1Mbits/s。
尽管CAN总线的纠错能力很强,但是为了数据的准确收发,具体选择CAN总线的波特率应该以具体的工况来选择,选择波特率的主要依据为传输线的距离。具体传输距离和CAN波特率的关系可以参考表1。
表1 传输距离和CAN波特率的关系
2CAN总线的通讯模型
前面我们说了,CAN总线是一种可以允许多主机存在的半双工差分总线,所有节点可以自由地挂载在同一根CAN总线上,组成一个理想中的控制局域网络。在CAN总线传输过程中,所有节点都可以根据自身当前的状态来发送数据,先占据总线者则在当前时间向总线上的所有节点发送数据。而每个CAN节点都有一个叫做CAN ID的唯一标识符,当某个节点发现当前总线上的CAN数据是发给自己的,则将这一帧CAN数据接收后进行处理。当某个节点的CAN数据发送完成后,即释放CAN总线,同时允许别的节点占用总线。另外,现在绝大多数CAN总线控制器都自带硬件地址过滤器,因此,我们可以省去CAN总线的ID软件判断。