CAN数据帧为什么要分这么多段,每一段都有什么作用?

描述

CAN(Controller Area Network)是一种用于汽车和工业控制系统的通信协议。它具有高可靠性、实时性和灵活性等特点,被广泛应用于汽车、工业、医疗等领域。CAN数据帧是CAN通信中的基本数据单位,它由多个字段组成,每个字段都有其特定的作用。

  1. 帧起始位(SOF)

帧起始位是CAN数据帧的第一个位,用于表示一个新帧的开始。在CAN总线上,帧起始位是一个显式的位,其值为“0”,用于区分数据帧和空闲位。帧起始位的出现,通知CAN控制器和CAN节点,一个新的数据帧即将开始传输。

  1. 仲裁场(Arbitration Field)

仲裁场是CAN数据帧中用于确定数据帧优先级的部分。它由11位标识符(ID)组成,其中最高位为主导位(DOM,Dominant Bit),其余10位为从属位(SOM,Subordinate Bit)。在CAN总线上,多个节点可以同时发送数据帧,但只有一个数据帧能够成功传输。仲裁场的作用就是确定哪个数据帧具有更高的优先级,从而能够成功传输。

在仲裁过程中,主导位的优先级高于从属位。如果两个数据帧的主导位相同,那么比较它们的从属位,从属位较小的数据帧具有更高的优先级。如果两个数据帧的主导位和从属位都相同,那么它们具有相同的优先级,这种情况下,哪个数据帧能够成功传输是随机的。

  1. 控制场(Control Field)

控制场是CAN数据帧中用于描述数据帧类型和长度的部分。它由6位组成,其中最低位为帧类型位(FT,Frame Type),其余5位为数据长度码(DLC,Data Length Code)。

帧类型位用于区分数据帧和远程帧。数据帧用于传输实际的数据,而远程帧用于请求其他节点发送数据。当帧类型位为“0”时,表示这是一个数据帧;当帧类型位为“1”时,表示这是一个远程帧。

数据长度码用于描述数据帧中数据场的长度。DLC的取值范围为015,表示数据场的长度为08字节。当DLC为0时,表示数据场为空;当DLC为18时,表示数据场的长度为18字节;当DLC为9~15时,表示数据场的长度为8字节。

  1. 数据场(Data Field)

数据场是CAN数据帧中用于传输实际数据的部分。它的大小由控制场中的数据长度码(DLC)确定。数据场可以包含0~8字节的数据,每个字节由8位组成。数据场可以传输各种类型的数据,如传感器数据、控制命令等。

  1. CRC场(CRC Field)

CRC场是CAN数据帧中用于错误检测的部分。它由15位组成,其中前12位为CRC序列(CRC Sequence),后3位为CRC界定符(CRC Delimiter)。CRC序列是通过对数据帧中的数据进行循环冗余校验(Cyclic Redundancy Check)计算得到的,用于检测数据在传输过程中是否出现错误。CRC界定符是一个固定的位模式,用于标识CRC序列的结束。

  1. ACK场(Acknowledgment Field)

ACK场是CAN数据帧中用于确认数据帧成功接收的部分。它由2位组成,其中第1位为应答位(ACK Slot),第2位为应答界定符(ACK Delimiter)。当接收节点成功接收并校验数据帧后,它会在ACK场的应答位发送一个显式的“0”位,表示数据帧已被成功接收。发送节点检测到这个应答信号后,会认为数据帧传输成功。

  1. EOF场(End of Frame Field)

EOF场是CAN数据帧的最后一个部分,用于表示数据帧的结束。它由7个隐式的“1”位组成,用于将数据帧与其他帧或空闲位区分开来。当CAN控制器或节点检测到EOF场时,它们会认为当前数据帧传输结束,准备接收下一个数据帧或进入空闲状态。

总结:

CAN数据帧由多个字段组成,每个字段都有其特定的作用。帧起始位表示数据帧的开始;仲裁场用于确定数据帧的优先级;控制场描述数据帧的类型和长度;数据场传输实际数据;CRC场用于错误检测;ACK场用于确认数据帧的成功接收;EOF场表示数据帧的结束。这些字段共同保证了CAN数据帧的可靠性、实时性和灵活性,使其成为汽车和工业控制系统中广泛使用的通信协议。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分