CAN基础概念

目的

CAN是非常常用的一种数据总线,被广泛用在各种车辆系统中。大多数时候CAN的控制器和收发器干了比较多的工作,从而对于写代码使用来说比较简单。这篇文章将对CAN使用上相关的基础内容做个说明。

控制器、收发器、总线

CAN的电气连接主要分 控制器、收发器、总线 。控制器目前很多单片机都内置有;收发器通常是外置的(常见的比如TJA1050);总线由 H、L 两条差分信号线构成,通常总线的两端需要有两个120Ω的终端电阻,使 H、L 间呈60Ω。
在这里插入图片描述

CAN的总线上可以挂载多个节点,节点并不分主从,想发数据发就行,CAN控制器会依据数据头部带的ID信息进行仲裁,优先级高的数据继续发送。大多数CAN控制器包含先进先出的发送和接收邮箱,可以设置发送失败后自动重发。CAN控制器可以设置接收消息ID过滤器,只有符合条件的ID并且CRC校验通过的数据(CAN的一条完整的数据是自带CRC校验的)才会存放到接收邮箱中。
在这里插入图片描述

CAN控制器硬件自带收发邮箱、接收带过滤器以及自带校验等,对于应用层写代码使用来说是比较方便的。

帧格式

CAN的数据是一帧一帧传输的,可以分为 数据帧、遥控帧、错误帧、过载帧、间隔帧 ,大多数时候我们只要关系数据帧即可。

一帧数据中头部是包含ID的,ID分为标准ID和扩展ID,区别只是位数不同。
在这里插入图片描述

CAN2.0和CAN-FD

目前来说在用的CAN主要分为 CAN2.0CAN-FDCAN2.0 数据帧一帧最大可以传输8字节,最高波特率为1000kbps。 CAN-FD 可以向下兼容 CAN2.0 ,最大的变化在于数据段,一帧最大可以传输64字节,并且数据段波特率可以和其他部分不一样,最大可以到8000kbps。
在这里插入图片描述

很多情况下称 CAN2.0bxCAN

波特率与采样点

CAN的波特率设置有点特别。经过分频后到达CAN控制器的的时钟信号以一个个 tq 来表示,CAN通讯中每个 bit 由多个时间段组成,每个时间段包含若干个 tq
在这里插入图片描述

SYNC_SEG 段固定占 1tqBS1BS2 可以配置多个 tq 。通过调整时钟频率和 BS1BS2tq 数量可以调整CAN通讯波特率。另外需要注意的是 BS1BS2 之间的时刻是真正采集数据值的时刻,通常需要控制 (SS + BS1) / (SS + BS1 + BS2)75%~85% 之间。
在这里插入图片描述

上图的 SJW 用于控制动态调节 BS1BS2 长短(总长度不变),从而提供一定的采样点冗余。

通常来有一种做法是固定CAN的时钟为40MHz,不进行分频,然后调节 BS1BS2 来调整波特率。常用的波特率设置如下:

波特率BS1BS2
125kbps23980
250kbps11940
500kbps5920
1000kbps2910
2000kbps145
4000kbps72
5000kbps52
8000kbps31

需要注意的是这里的 BS1 段只是STM32中的分段方式,很多时候该段其实可以细分为 PTSBS1 两部段。

工作模式

CAN控制器通常可以工作在下面几种模式下(不同芯片对于各模式的叫法可能不同)。各个模式的区别只是输入输出信号连接不同。
在这里插入图片描述

总结

CAN本身东西是不少的,但如果只是需要使用CAN来进行数据收发的话需要了解的内容并不算多。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CAN总线是一种用于数据通信的串行通信协议,广泛应用于汽车电子系统和工业控制领域。它是Controller Area Network的缩写,最初由德国的Bosch公司开发。CAN总线的基本概念和原理如下: 1. 物理层:CAN总线可以使用多种物理介质,最常用的是双绞线。CAN总线使用差分电压传送数据,其中两条信号线被称为CAN_H和CAN_L。在静态时,CAN_H和CAN_L的电压均为2.5V左右,表示逻辑1,也称为隐位。当CAN_H比CAN_L高时,表示逻辑0,称为显位。在竞争时,显位优先,即显性状态和隐性状态同时发送时,总线上呈现显性状态。因此,当两个节点同时分别发送0和1时,总线上呈现0。所有从站的CAN_L和CAN_H脚直接相连,采用串连的方式接线,不能采用星型连接方式。主站端和最后一个从站端需要接120欧姆的终端电阻。通信电缆应采用屏蔽双绞线,并做好接地处理。 2. 数据链路层:CAN总线使用一种基于帧的通信协议。每个CAN帧由一个起始位、一个标识符、数据域、CRC校验码和结束位组成。标识符用于区分不同的消息,数据域用于传输实际的数据,CRC校验码用于检测数据的完整性。CAN总线采用一种优先级机制,具有较高优先级的消息可以打断正在传输的低优先级消息。这种机制确保了高优先级消息的及时传输。 总之,CAN总线是一种基于串行通信的协议,通过差分电压传送数据。它具有高可靠性、高抗干扰性和实时性强的特点,广泛应用于汽车电子系统和工业控制领域。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [CAN总线技术基本概念简述](https://blog.csdn.net/weixin_45263626/article/details/113761369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [简述CAN总线的数据传输原理?_从0到1:开启CAN通信学习(一)](https://blog.csdn.net/weixin_39712969/article/details/110156450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naisu Xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值