b. 线路上传输信号的电平格式
d. 波特率,symbol/s
e. 异步通信
f. CAN的波特率介绍
g. 收发模式
a. 地址(CAN ID)
b. 冲突检测与避免(仲裁)
i. 冲突检测(CAN采用的)
ii. 冲突避免
c. 误码校验
d. 滤波器与掩码
e. CAN通信帧介绍
i. 帧分类:
ii. 标准数据帧格式
iii. 扩展数据帧格式
【中科大RM电控合集】小白也能看懂的CAN通信+STM32CubeMX编程_哔哩哔哩_bilibili
CAN通信相关基础知识(原理)(中科大视频总结)
1. 通信相关基础知识——分层思想
- 分层思想,不同层分工不同
- CAN通信(Controller Area Network)
- 可以理解成三层:物理信号层,链路传输层,应用数据层
- 物理信号层(数据传输的规则方式):规定了硬件电路的设计规则、用户使用的接线方式、线路上传输信号与电平格式的对应关系、波特率比特率、数据同步异步传输、 收发模式等内容
- 链路传输层(将数据准确传输到指定位置):规定了地址(CAN ID)、冲突检测与避免(仲裁)、误码校验、滤波器与掩码、该层的帧格式
- 应用数据层:被传输的数据主体
- 链路层把应用层的数据拿来,加上相关的地址、校验等信息封装;物理层把链路层的数据拿来,编码成物理信号传输出去
- CAN通信(Controller Area Network)
2. 通信相关基础知识——物理信号
a. 接线方式
- 总线接法
- CAN_H与CAN_L通过120欧姆电阻连接在一起,防止总线上传输的高频信号存在反射振铃效应导致信号不稳定、寄生电容导致信号响应速度变慢等情况(感兴趣可以看看电磁场相关的理论)
- 每个设备引出两条线,一根是CAN_H,一根是CAN_L(当然也有单线CAN但速度低我们不考虑使用);不同设备的CAN_H接到一起,CAN_L接到一起
- STM32自带CAN控制器,箭头表示收发关系,直线表示我们自行接到外部的总线
- STM32一般搭配的收发器型号为SN65HVD230
- 发送方式:把发送的数据加到CAN收发器中,由它自主控制发送,换句话说放进去就不用管了
- 接收方式:从接收队列(FIFO队列)选择接收(一旦收到数据,会产生中断,从FIFO0和FIFO1选择一个来接收)接收是FIFO先接收到的,然后产生接收中断
b. 线路上传输信号的电平格式
-
在发送和接收中,逻辑1是高电平,逻辑0是低电平
-
经过CAN收发器之后变成差分信号
- 如果单片机发送一个低电平,则 一般CAN_H 3.5v,CAN_L 1.5v,逻辑0,显性
- 如果单片机发送一个高电平,则 一般CAN_H 和CAN_L 2.5v,逻辑1,隐性
-
差分信号传输,在长距离传输时可保证信号质量(类比相对音感与绝对音感)
-
实际上0为显性信号,是因为后面仲裁是要进行与操作,0与上其他还是0,所以是显性
c. 比特率,bit/s,bps
- 每秒钟传输的二进制码元的数量
d. 波特率,symbol/s
- 每秒钟传输的有效信息码元的数量
- 举例
CAN通信中,比特率等于波特率,因为有效信息码元直接对应二进制码元十六进制字符编码中,如果一秒传输1000个字符,每个字符对应一种唯一的电平信号,那么波特率就是1000symbol/s;由于一个十六进制字符要用四位二进制编码表示,那么它的比特率就是4000bit/s
e. 异步通信
- 通过把每个比特(码元)细分时间片,不同时间片做不同的事情
- 同步段把整条总线各个设备进行同步
- 其他通信协议还有同步通信方式,比如IIC
- IIC需要统一的时钟信号给各设备用于同步
- 其他通信协议也有类似的操作,比如UART
- 相位缓冲段有两个,其中夹住的时间点就是采样时间点,硬件设备在这个时间点上对电平采样获取当前比特的状态是1或是0
- 传播段是时间占用,因为有些CAN总线时间比较长,要考虑物理信号在总线的传播时间以及CAN驱动器的处理时间,传播速度是光速的2/3,也就是2*10∧8m/s;传播段时间一般是信号在总线上传播时间的两倍
- 其他通信协议还有同步通信方式,比如IIC
f. CAN的波特率介绍
- 波特率计算公式:1/【tq*(BS1+BS2+1)】
- CAN的一位会被分层数个Time Quantum(tq),且每一位的tq可以调整以保证同步
- CAN的最高波特率是1Mbps,所以在BS1和BS2长度过小,会导致比特率高于1Mbps,出现错误
g.收发模式
常规模式(最常用)
- 向总线发送
- 从总线接收
回环模式(只发不收,发的时候给本机顺带捎一份)
- 向总线和本机发送
- 不从总线接收仅从本机接收
静默模式(对外闭嘴,只和自己发,静默)
- 不向总线发送仅向本机发送
- 从总线和本机接收
回环静默模式
- 不向总线发送,仅向本机发送
- 自收自发
- 不向总线接收,仅从本机接收
3. 通信相关基础知识——链路传输
a. 地址(CAN ID)
- 由于是广播性质的总线协议,因此用地址来说并不是十分标准
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
15842047286)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!