CAN协议简单笔记

之前用到过CAN总线协议,也是为了复习整理,简单把CAN总线应用中的一些软硬件上需要注意的要点写一下

CAN总线比较详尽的内容可以参考这篇博文:https://blog.csdn.net/qq_38880380/article/details/84573821

CAN总线主要是工作在物理层,数据链路层和传输层,在高层还有一些利用CAN协议来组网的协议,不过不在本文讨论范围之内。

硬件设计

CAN总线的硬件设计比较容易,一般使用处理器内集成的CAN控制器,CAN控制器工作在数据链路层,引出RX,TX两根数据线,接到外部专用的CAN phy芯片上,转为CAN_H和CAN_L两根差分信号。比较规范的CAN硬件设计如下图所示

注意R45+R46合计120Ω的电阻只能用作一个CAN总线两端的两个节点上,若CAN总线存在中间节点,中间节点要去掉R45和R46两颗电阻。

CAN采用总线式拓扑结构,连接方式如下图所示,所有节点的CAN_H和CAN_L分别连接到一起即可,一般只使用CAN_H和CAN_L这两根数据线,采用双绞线的方式连接在一起,减少对外辐射和外部干扰。

https://images0.cnblogs.com/blog/718161/201508/141216013952376.png

软件设计

CAN数据链路层上主要分为数据帧,遥控帧,错误帧,过载帧和帧间隔五种,其中后三种软件开发人员不必过度关注,一般由CAN控制器自动处理,注意处理事件中断即可。

数据帧

帧起始后紧接仲裁段,仲裁段实际上就是软件中CAN ID部分,分为两种,一种是标准ID,共11bit,另一种是扩展ID,共29bit,一个CAN帧可以在发送前决定发送标准CAN帧(ID 11bit)还是扩展CAN帧(ID 29bit),通过IDE字段标识,IDE=0说明发送的是一个标准帧,IDE=1则发送的是一个扩展帧。

CAN id段除了标识一个帧外也决定了一个帧的优先级,CAN id越小的CAN帧优先级越大,当两个CAN节点同时发送帧导致发生冲突时,优先级较低的CAN会在检测到总线上电平和发送数据不符时自动退出,避免干扰高优先级CAN帧的发送过程。

CAN ID段也可以再划分,如可把11bit重新划分为3bit优先级id+5bit消息id+3bit标识id,通过不同的划分方式可以实现更加高级的功能。

DLC是数据长度,以字节为单位,最大为8。

Data是荷载的数据部分,最大64bit(8byte),实际发送的长度与DLC有关。

CRC和ack等由硬件自动实现,无需理会。

遥控帧

https://i-blog.csdnimg.cn/blog_migrate/16fad9d50f924ec3808f79f0dd49f76d.png

遥控帧和数据帧基本一致,不同点就两个,其一是遥控帧的RTR字段为隐形(1),标明这是个遥控帧。其二是遥控帧中去掉了Data字段,意味着遥控帧不能携带荷载数据。

其余的就是实例了,看芯片的相关示例代码即可。

文章链接:https://blog.csdn.net/CSDN1344789841/article/details/114447733

转载需标明出处

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAN PHY是指控制器区域网络物理层,它是CAN总线的物理层实现。CAN总线是一种用于工业控制和汽车应用的串行通信协议,它是一种多主机、广播型、差分式、数字化、串行通信系统。CAN PHY的主要任务是将逻辑数据转换为物理信号,并在总线上提供可靠的数据传输。 CAN PHY的工作原理可以分为两个主要方面:差分信号传输和仲裁机制。差分信号传输是指CAN PHY通过差分传输的方式来实现对噪声的抑制,提高了总线的抗干扰能力。而仲裁机制则是指CAN PHY通过总线仲裁来解决多个节点同时发送数据时的冲突问题,从而确保数据传输的可靠性。 具体来说,在差分信号传输方面,CAN PHY使用差分传输线对CAN总线上的数据进行传输。差分传输线由两条相反方向的线组成,其中一条为CAN_H,另一条为CAN_L。当一个节点发送数据时,CAN_H上的电压将高于CAN_L上的电压。接收节点通过检测CAN_H和CAN_L之间的电压差异来判断发送节点发送的数据。 在仲裁机制方面,CAN PHY使用一种基于标识符的仲裁机制来解决多个节点同时发送数据时的冲突问题。每个节点在发送数据前都会在总线上广播自己的标识符(ID)。当多个节点同时发送数据时,根据标识符的不同,CAN控制器会自动选择优先级最高的节点来发送数据。这种仲裁机制可以确保数据传输的可靠性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值