资讯详情

CAN总线学习

研究CAN总线

Vector E-Learning - Welcome

https://zhuanlan.zhihu.com/p/180515614

CAN相关视频介绍

视频1

https://www.bilibili.com/video/BV1KV411J7E1?spm_id_from=333.337.search-card.all.click

通常把通信放在一起。

动力CAN

娱乐CAN

车身CAN

网关负责转换不同的通信协议

CAN线是广播。

LIN线,主从。主从机制,只有一个主机。

视频2

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可节省大量线路。

这实际上类似于电网的建设,类似于电网中的母线。

共轭电感处理信号

61R9 , 61.9个电阻,2个,即使是120欧姆,也相当于终端电阻。

CAN芯片芯片的差分信号转换为0、5V的信号。TJA1040,TJA1050

控制器,是否需要筛选信号。

视频3

https://www.bilibili.com/video/BV1g4411F72c?spm_id_from=333.337.search-card.all.click

CAN有代码的通信实验。

与普通配置串口相似,但工作模式不同。

视频4

https://www.bilibili.com/video/BV1Rx411R75t?p=57

can通信实验,STM开发板,研究这里的代码。

重要文档《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 的缩写

两个标准:

  • ISO11898 ,高速通信标准,125Kbps ~ 1Mbps
  • ISO11519-2 ,低速通信标准, 125Kbps以下。

CAN的特点:

CAN可靠性高,广泛应用于汽车电子、工业自动化、船舶、医疗设备、工业设备等领域。

  • 多主控制,总线空闲时,所有单元都可以发送消息,而两个以上的单元同时开始发送消息时,根据标识符(ID,非地址) 决定优先级。当两个以上单位同时开始发送消息时,对每个消息ID对每个人进行逐一的仲裁比较。赢得仲裁的(优先级高的)单位可以继续发送信息,失败的仲裁单位可以立即停止发送并接收。
  • 系统柔软,连接总线的单元没有类似地址的信息。在总线上添加单元时,其他连接单元的软硬件和应用层不需要更改。
  • 速度快,距离远。Mbps (<40m),最远10km(<5Kbps)
  • 它具有错误检测、错误通知和错误恢复功能。所有单位都可以检测错误。检测错误的单位将立即通知所有其他单位。一旦发送消息的单位检测到错误,当前发送将被迫结束,强制发送的单位将重复发送次要消息,直到成功发送。
  • 具有故障封闭功能,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欧姆的终端电阻来匹配阻抗,减少回波反射。

CAN的帧种类

帧类型 帧用途
数据帧 用于向接收单元发送数据的帧
遥控帧 用于接收单位的相同方向ID发送单元要求数据的帧
错误帧 当检测到错误时,将错误帧通知其他单位
过载帧 接收单位通知其未准备好接收的帧
间隔帧 用于将数据帧和遥控帧与前帧分离。

帧格式:标准,扩展。

  • 标准:ID 只有11个位
  • 扩展:ID 有29个位

视频主要介绍数据帧格式,其他帧格式,参考书籍《can入门教程.pdf》

数据帧由七个段组成:

  1. 帧起始
  2. 仲裁段表示优先级,ID高7位不能都是1
  3. 控制段
  4. 数据段 , 最多8字节数据。
  5. CRC段
  6. ACK段
  7. 帧结束

显性 D: dominance ,0, 有压差

隐性 R: recessive , 1 , 压差为0

帧格式分析,可以看代码再回来看。

总线仲裁

规律

  1. 总线闲置时,第一个单元获得发送优先权,一旦发送,其他单元无法抢占。
  2. 如果有多个单元同时发送,则连续输出显性电平多的单元,具有较高优先级

从ID开始比较如果ID相同,则继续往下比较。

位时序

位时序 -> 波特率

这与硬件更相关,使用时再研究。

其实也就是一个位置,怎么表达? 要多长?

  • 同步段(上升边,下降边)

  • 传播时间段

  • 相位缓存段1

  • 相位缓冲段2

这些段也可以称为Time Quantum(以下称为Tq)最小时间单元构成

也就是说,这是用来区分一个很长的1,代表的是多少个1。

STM32 CAN 控制器

模式

  • 工作模式

    • 初始化模式

    • 正常模式

    • 睡眠模式

  • 测试模式

    • 静默模式,只收,不发。

    • 还回模式,只发,不收,收的永远是自己发的内容。

    • 还回静默模式,不发,不收,就自己给自己发。

  • 调试模式

代码阅读

初始化函数:CAN1_Mode_Init

发送函数: u8 CAN1_Send_Msg(u8* *msg*,u8 *len*)

接受函数:u8 CAN1_Receive_Msg(u8 **buf*)

主函数:int main(void)

书籍阅读

《can入门教程.pdf》

CAN是什么

CAN是Controller Area Network的缩写, 是ISO国际标准化的串行通信协议.

当前汽车产业中, 出于安全性,舒适性,方便性,低公害,低成本的要求, 各种各样的电子控制系统被开发了出来, 由于这些系统之间通信所用的数据类型 及 对可靠性的要求不尽相同, 由多条总线构成的情况很多, 线束的数量随之增加, 为适应"减少线束数量" , “通过多个LAN , 进行大量数据的高速通信” 的需要, 1986年博世开发处CAN通信协议.

有两个标准:

  • ISO11898
  • ISO11519

请添加图片描述

CAN 应用实例

总线拓扑图

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~

这些数值的计数方法:

CAN协议的基本概念

CAN协议

数据帧与遥控帧的不同

  • 遥控帧的RTR位为隐性位, 没有数据段
  • 遥控帧的长度码 表示的是它请求的数据帧的长度.
  • 没有数据段数据帧可以用于各个单元之间的连接确认.

标签: 1040电阻2oo0欧电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台