一:CAN协议基础
CAN:Controller Area Network,控制器局域网络。这方面的参考资料很多,不详细写了。说几个在开发过程的特点:
- CAN总线上所有连接节点并没有地址的概念,通过发送数据中的标识符ID进行区分,多个单元同时发送消息时也通过标识符的优先级来仲裁优先发送方。
- CAN总线的信号是通过两根信号线之间的电压差值来确定信号类型,显性电平对应逻辑0,隐形电平对应逻辑1。(这部分都是由硬件电路实现的)
- CAN协议包括数据帧、遥控帧、错误帧、过载帧、间隔帧。重点关注数据帧,包括:帧起始、仲裁段、控制段、数据段、CRC段、ACK段、帧结束。
- CAN通信是一种半双工、异步通信。
CAN的位时序,在手册上看到的解释如下:
“位时序逻辑将监视串行总线,执行采样并调整采样点,在调整采样点时,需要在起始位边沿进行同步并后续的边沿进行再同步。”
然而,CAN通信并不是同步通信,一开始看到同步的时候就有点不理解了。后来想了想,这里的同步说的是在进行信号的采样时,保证在该开始采样的位置启动采样,在结束位置完成采样,不会因为数据量过多,采样时出现相位偏移的问题。
位时序和CAN通信的波特率是相关联的,所以这部分是必须要理解的,主要有一下几个概念:
- 位速率