Vector E-Learning - Welcome
https://zhuanlan.zhihu.com/p/180515614
https://www.bilibili.com/video/BV1KV411J7E1?spm_id_from=333.337.search-card.all.click
常通信的放一起。
动力CAN
娱乐CAN
车身CAN
网关负责将不同的通信协议转换
CAN线是广播。
LIN线,有主从。主从机机制,只有一个主机。
https://www.bilibili.com/video/BV1nq4y1W7oo?spm_id_from=333.337.search-card.all.click
CPU — CAN控制器 — 收发器
收发器: 负责管理电平拉高拉低,成对使用。
控制器:主要是控制协议,用来组包。 (CRC校验什么的东西。)
CPU : 只发数据,ID
CPU主要发控制内容,控制器固定将数据组成帧格式,收发器拉高拉低。
一般CPU和控制器是一起的。
CAN 500kbps , 是闭合回路 ,终端电阻120欧姆, 两边都有终端电阻。
CAN 125kbps 开放回路。
相关接线:
驱动CAN : HIGH 桔黑 ; LOW 桔棕
舒适CAN :HIGH 桔绿 ;LOW 桔棕
信息娱乐CAN : HIGH 桔紫 ;LOW 桔棕
驱动CAN包含:发动机,变速箱,ABS。
舒适CAN : 左前门,右前门,空调。
协议
898协议
519协议
不同的标准之间无法通信,因此网关可以解决这种问题。
汽车中有很多情况是需要广播信息的,因此CAN这种广播的通信方式,比较适合。
CAN可以节约大量的线。
这其实跟电网的建设是类似的,与电网中的母线类似。
CAN 网关相关知识
共轭电感,对信号进行处理
61R9 , 61.9的电阻,2个,就算120欧姆,相当于终端电阻。
CAN芯片,将芯片的差分信号转换成0,5V的信号。TJA1040,TJA1050
控制器,筛选信号是否要。
https://www.bilibili.com/video/BV1g4411F72c?spm_id_from=333.337.search-card.all.click
CAN通信实验,有代码。
跟普通的配置串口差不多,只是有不同的工作模式。
https://www.bilibili.com/video/BV1Rx411R75t?p=57
can通信实验,STM32开发板,研究这里的代码。
重要文档《can入门教程.pdf》:(需要阅读2~3遍)
G:\IOT\学习视频\CAN总线\【正点原子】探索者STM32F407开发板资料 资料盘(A盘)\6,软件资料\7,CAN学习资料\can入门教程.pdf
ST板子的开发资料:《STM32F4xx中文参考手册.pdf》
具体代码路径:《G:\IOT\学习视频\CAN总线\【正点原子】探索者STM32F407开发板资料 资料盘(A盘)\4,程序源码\2,标准例程-库函数版本\实验27 CAN通信实验\HARDWARE\CAN\can.c》
CAN : controller area network 的缩写
两个标准:
CAN的特点:
CAN具有高可靠性,广泛应用于汽车电子,工业自动化,船舶,医疗设备,工业设备等方面。
先讨论ISO11898标准。
有两根线,CAN_L, CAN_H 两根线上的电位差来判断总线电平。
显性:对应逻辑0,CAN_H 和 CAN_L 的差值为 2V左右。 3.5 , 1.5V
隐性:对应逻辑1,CAN_H 和 CAN_L 的差值为0V , 2.5V
显性电平具有优先权,只要一个单元输出显性电平,总线就为显性。(这个跟IIC中时钟线拉低是类似的。)
CAN 起止端都有一个120欧姆的终端电阻,来做阻抗匹配,减少回波反射。
帧类型 | 帧用途 |
---|---|
数据帧 | 用于发送单元向接受单元传送数据的帧 |
遥控帧 | 用于接收单元向具有相同ID的发送单元请求数据的帧 |
错误帧 | 用于当检测出错误时,向其他单元通知错误的帧 |
过载帧 | 用于接收单元通知其尚未做好接收准备的帧 |
间隔帧 | 用于将数据帧及遥控帧与前面的帧分离开来的帧。 |
帧格式:标准,扩展。
视频主要介绍数据帧格式,其他帧格式,参考书籍《can入门教程.pdf》
数据帧由7个段组成:
显性 D: dominance ,0, 有压差
隐性 R: recessive , 1 , 压差为0
帧格式分析,可以看代码再回来看。
规律
从ID开始比较如果ID相同,则继续往下比较。
位时序 -> 波特率
这里跟硬件更相关,用到时再研究。
其实也就是一个位,要怎么表示? 要多长?
同步段(上升沿,下降沿)
传播时间段
相位缓存段1
相位缓冲段2
这些段又由可称为Time Quantum(以下称为Tq)的最小时间单位构成
位时间 = 1/波特率
也就是说,这是用来区分一个很长的1,代表的是多少个1。
工作模式
初始化模式
正常模式
睡眠模式
测试模式
静默模式,只收,不发。
还回模式,只发,不收,收的永远是自己发的内容。
还回静默模式,不发,不收,就自己给自己发。
调试模式
初始化函数:CAN1_Mode_Init
发送函数: u8 CAN1_Send_Msg(u8* *msg*,u8 *len*)
接受函数:u8 CAN1_Receive_Msg(u8 **buf*)
主函数:int main(void)
CAN是Controller Area Network的缩写, 是ISO国际标准化的串行通信协议.
当前汽车产业中, 出于安全性,舒适性,方便性,低公害,低成本的要求, 各种各样的电子控制系统被开发了出来, 由于这些系统之间通信所用的数据类型 及 对可靠性的要求不尽相同, 由多条总线构成的情况很多, 线束的数量随之增加, 为适应"减少线束数量" , “通过多个LAN , 进行大量数据的高速通信” 的需要, 1986年博世开发处CAN通信协议.
有两个标准:
多主控制,
总线空闲时,谁都可以发消息,最先访问总线的单元获得发送权
最先访问总线的单元 , 可获得发送权 , CSMA/CA
多个单元同时开始发送时, 发送高优先级ID消息的单元可获得发送权.(实际上就是看谁的1多, 这个ID刚好在报文而前面)
CSMA/CA(Carrier Sense Multiple Access with Collision Avoid,即带有冲突避免的载波侦听多路访问)是一种数据传输时避免各站点之间数据传输冲突的算法,其特点是发送包的同时不能检测到信道上有无冲突,只能尽量“避免”。例如,如果计算机A和计算机C同时给计算机B发送一个控制消息,它们将同时到达计算机B,导致冲突的发生。当这种冲突发生时,发送者可以随机等待一段时间,然后重发控制消息。因为控制消息比数据敏要短得多,所以发生第二次冲突的可能性也要比传统以太网要小很多。最终将有一个控制消息正确到达,然后计算机B发送一个响应消息。通常CSMA/CA利用ACK信号来避免冲突的发生,也就是说,只有当客户端收到网络上返回的ACK信号后才确认送出的数据已经正确到达目的
消息的发送
固定格式发送
仲裁机制.
系统的柔软性
与总线相连的单元没有地址, 可以随便添加, 添加之后,其他设备的软硬件都不需要做什么改变.
通信速度
根据整个网络的规模, 可设定合适的通信速度.
在同一网络中, 所有单元必须设定成统一的通信速度 , 如果有一个不一样, 那么就会影响整个网络, 因为会出现大量的错误包.不同的网络间, 可以有不同的通信速度.
远程数据请求.
可通过遥控帧, 请求其他单元发送数据.
错误检测功能, 错误通知功能, 错误恢复功能
所有单元都可以检测错误.
检测出错误的单元会立即同时通知其他所有单元
正在发送消息的单元一旦检测出错误, 会将至结束当前的发送, (拉低电平) , 强制结束发送的单元会不断的重发.
故障封闭
CAN可以判断出错误的类型是总线上暂时的数据错误 还是 持续的数据错误
由此功能, 当总线上发生持续数据错误时, 可将引起此故障的单元从总线上隔离出去.
连接
CAN 总线是可同时连接多个单元的总线. 通信速度与连接个数成反比.
错误状态的种类
主动错误状态
可正常参加总线通信, 输出主动错误标志
被动错误状态
能参与总线通讯, 但不积极发错误通知.
被动错误状态单元 检测出错误, 但主动错误状态单元没有发现错误, 总线也被认为是没有错误的.
输出被动错误标志.
发送结束后 ----- 下次发送前 , 间隔帧期间内, 必须插入延迟传送(8个隐性位)
总线关闭态
不能参与总线通信
收发均被禁止
错误状态是哪一种, 情况 , 需要根据计数器来判断.
单元错误状态 | 发送错误计数值(TEC) | 接收错误计数值(REC) |
---|---|---|
主动错误状态 | 0~127 且 | 且 0~127 |
被动错误状态 | 128~255 或 | 或 128~255 |
总线关闭态 | 256~ | — |
这些数值的计数方法:
数据帧与遥控帧的不同