起源

在没有CAN总线之前,所有外设和控制器都是单线连接,导致线布局和数量巨大,错综复杂。

总线的含义就是所有信息都在这根线上传输,当然,CAN总线是两根。

CAN协议概念

CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986 年率先提出。此后,CAN 通过ISO11898 及ISO11519 进行了标准化。现在在欧洲已是汽车网络的标准协议。

CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。

CAN具有很高的可靠性,广泛应用于:汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。

批注

can节点:挂载在can总线上的一个单元,如ABS

can message:can节点之间的通信方式,由多条signal组成。

can signal:一条信息。

数据长度代码又称DLC(Date Length Code),用于规定数据场的字节数,DLC的编码规则如表所示;最大为8字节,最小为0字节;

首先每个 ECU是一个网络节点,每个网络节点可收发一些 Message,每个Message 由CAN signals构成。每个 CAN signal利用一个或多个连续的2进制位来表示承载的信息。下面就来举个列子简要介绍如何理解 CAN signal的定义。

Intel格式编码:信号的低位(lsb)将被放在低字节(LSB)的低位。信号的起始位就是低字节的低位,从低字节向高字节去排布信号。

Motorola格式编码 :信号的低位(lsb)将被放在高字节(MSB)的低位。这样,信号的起始位就是高字节的低位,从高字节向低字节去排布信号。

can协议

CAN协议的特点

①,多主控制。总线空闲时,所有单元都可发送消息,而两个以上的单元同时开始发送消息时,根据标识符(ID,非地址)决定优先级。两个以上的单元同时开始发送消息时,对各消息ID 的每个位进行逐个仲裁比较。仲裁获胜(优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。

②,系统柔软性。连接总线的单元,没有类似“地址”的信息,因此,在总线上添加单元时,已连接的其他单元的软硬件和应用层都不需要做改变。

③,速度快,距离远。最高1Mbps(距离<40M),最远可达10KM(速率<5Kbps)。

④ ,具有错误检测、错误通知和错误恢复功能。所有单元都可以检测错误(错误检测功能),检测出错误的单元会立即同时通知其他所有单元(错误通知功能),正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。

⑤,故障封闭功能。CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。

⑥,连接节点多。CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

正是因为CAN协议的这些特点,使得CAN特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。

数据帧

数据帧由7个段组成:

①,帧起始。

表示数据帧开始的段。

②,仲裁段。

表示该帧优先级的段。

③,控制段。

表示数据的字节数及保留位的段。

④,数据段。

数据的内容,一帧可发送0~8个字节的数据。

⑤,CRC段。

检查帧的传输错误的段。

⑥,ACK段。

表示确认正常接收的段。

⑦,帧结束。

表示数据帧结束的段。

模式

工作模式

①初始化模式(INRQ=1,SLEEP=0),即初始化过程

②正常模式(INRQ=0,SLEEP=0),即工作过程

③睡眠模式(SLEEP=1),即低功耗待机形式

测试模式

①静默模式( LBKM=0,SILM=1 ),只收不发

②环回模式( LBKM=1,SILM=0 ),只发不收及自发自收

③环回静默模式(LBKM=1,SILM=1),不发不收

调试模式

标识符筛选器

筛选器可配置为:屏蔽位模式和标识符列表模式。

标识符=ID=优先级,ID越小,优先级越高.

can的标识符是自己设定的,接收方自己筛选需要接受哪些标识符

屏蔽位模式

掩码,一种屏蔽和筛选技术

ID为期待标识符,掩码为必须匹配的位。即接收一组标识符。

标识符列表模式

ID为期待标识符,掩码和ID一样,所有位必须匹配,即接收的是一个标识符。

举例

例:设置筛选器组0工作在:1个32位筛选器-标识符屏蔽模式,然后设置CAN_F0R1=0XFFFF0000,CAN_F0R2=0XFF00FF00。其中存放到CAN_F0R1的值就是期望收到的ID,即(STID+EXTID+IDE+RTR)最好是:0XFFFF0000。而0XFF00FF00就是设置我们需要必须关心的ID,表示收到的映像,其位[31:24]和位[15:8]这16个位的必须和CAN_F0R1中对应的位一模一样,而另外的16个位则不关心,可以一样,也可以不一样,都认为是正确的ID,即收到的映像必须是0XFFxx00xx,才算是正确的(x表示不关心)。

收发流程

发送流程

程序选择1个空置的邮箱(TME=1)->设置标识符(ID),数据长度和发送数据->设置CAN_TIxR的TXRQ位为1,请求发送->邮箱挂号(等待成为最高优先级)->预定发送(等待总线空闲)->发送->邮箱空置。

接收流程

CAN接收流程为:

FIFO空->收到有效报文->挂号_1(存入FIFO的一个邮箱,这个由硬件控制,我们不需要理会)->收到有效报文->挂号_2->收到有效报文->挂号_3->收到有效报文->溢出。

位速率

位速率由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位一般可以分为如下四段:

-同步段(SS)

-传播时间段(PTS)

-相位缓冲段1(PBS1)

-相位缓冲段2(PBS2)

这些段又由可称为 Time Quantum(以下称为Tq)的最小时间单位构成。

1 位分为4 个段,每个段又由若干个Tq 构成,这称为位时序。

位时间=1/波特率,因此,知道位时间,我们就可以知道波特率。

1 位由多少个Tq 构成、每个段又由多少个Tq 构成等,可以任意设定位时序。通过设定位时序,多个单元可同时采样,也可任意设定采样点。

CAN时序

STM32F103,设TS1=8、TS2=7、BRP=3,波特率=36000/[(9+8+1)*4]=500Kbps。

STM32F407,设TS1=6、TS2=5、BRP=5,波特率=42000/[(7+6+1)*6]=500Kbps。

整车can网络

can总线rollingcounter_CAN总线笔记相关推荐

  1. can总线rollingcounter_CAN总线错误分析与解决

    CAN总线错误分析与解决 背景 写这篇文章是因为我看到网上介绍CAN总线错误处理的文章,清一色的都是生搬照抄教科书或是数据文档的内容,特别是国内很难找到一些有价值的内容,这让一些真正有需要的人很苦恼, ...

  2. STM32 CAN总线通信学习笔记(一)

    STM32 CAN总线通信学习笔记(一) 一.CAN总线简介 CAN 是控制器局域网络(Controller Area Network, CAN)的简称.CAN采用数据块编码的方式,数据块根据帧的类型 ...

  3. CAN总线通信学习笔记

    CAN总线通信学习笔记 完整笔记链接:https://mubu.com/doc/67Rn6yaozhS CAN总线笔记目录 定义 底层原理 CAN信号传输 发送 接收 CAN总线结构.特点.分类 CA ...

  4. AXI 总线协议学习笔记(4)

    引言 前面两篇博文从简单介绍的角度说明了 AXI协议规范. AXI 总线协议学习笔记(2) AXI 总线协议学习笔记(3) 从本篇开始,详细翻译并学习AXI协议的官方发布规范. 文档中的时序图说明: ...

  5. 基于STM32的CAN总线通信学习笔记

    转自:https://blog.csdn.net/ludaoyi88/article/details/53350077 基于STM32的CAN总线通信学习笔记 本文主要简单介绍CAN总线的相关概念,以 ...

  6. AXI 总线协议学习笔记(3)

    引言 上篇文章主要介绍了 AMBA以及AXI协议的基本内容,本文接续前文,继续介绍AXI协议的 原子访问.传输行为和事务顺序等. AXI 总线协议学习笔记(2)https://blog.csdn.ne ...

  7. 计组高分笔记:【06】计算机组成原理概述 「单总线 | 双总线 | 三总线 | 总线仲裁 | 总线标准 | 总线定时 | 同步定时 | 异步定时 | 半同步通信 | 分离式通信」

    文章目录 1. 总线概述 1.1 基本概念 1.2 总线的分类及结点结构 1.2.1 系统总线结构 1.2.1.1 单总线结构(系统总线) 1.2.1.2 三总线方式(主存总线.I/O总线.DMA总线 ...

  8. 什么是总线?总线传输有何特点?

    什么是总线?总线传输有何特点? 总线是连接两个或多个组件的通信路径 特点:某一时刻只允许有一个部件向总线发送信息,而多个部件可以同时从总线上接收相同的信息.

  9. 计算机组成原理,计算机系统总线,总线分类、特性、性能指标、结构以及总线控制,判优控制通信控制

    文章目录 总线的基本概念 总线的分类 总线特性及性能指标 总线结构 总线控制 一.总线判优控制 二.总线通信控制 总线的基本概念 一.总线是连接各个部件的信息传输线,是各个部件共享的传输介质. 二.总 ...

  10. 总线控制(总线判优控制、总线通信控制)

    文章目录 基本概念 总线判优控制 链式查询 计数器查询 独立请求方式 总线通信控制 同步通信 异步通信 不互锁方式 半互锁方式 全互锁方式 波特率 半同步通信(同/异步结合) 分离式通信 系列文章 基 ...

最新文章

  1. Java Web的Maven项目中Properties文件的使用(2)
  2. 13-Introduction to security
  3. JUC系列(二)回顾Synchronized关键字
  4. PHP读取远程文件并保存
  5. mysql 删除重复数据_MySQL查找和删除重复数据
  6. Android PowerImageView实现,可以播放动画的强大ImageView
  7. 传递参数命令——xargs
  8. Google 地图 API 参考
  9. Tensorflow Lite人体姿势跟踪功能上线:基于PosNet的实时人体姿态估计
  10. Java案例:装载与发射子弹问题
  11. 【jQuery笔记Part1】12-jQuery元素的角标
  12. python 利器_python利器之切片
  13. sass-loader高版本的坑
  14. linux服务之NTP及chrony时间同步
  15. 小学计算机教案 插入艺术字,小学信息技术《在幻灯片中插入艺术字》说课及反思...
  16. iOS AutoLayout
  17. DIY一块单面1TB高速NVMe SSD, SM2262EN量产开卡软件+JMS583转接
  18. Facebook更名Meta,扎克伯格押注元宇宙
  19. antd 动态自定义表单验证失效
  20. java爬取论坛信息_Java爬取校内论坛新帖

热门文章

  1. 综论数据库防火墙的自我修养系列之一:高可用性
  2. Tangent Convolutions 切面卷积(切线卷积)
  3. 企业信息安全之社工学审计
  4. One Day One Step 之 nothing
  5. C++ 面向对象高级开发(侯捷)
  6. 《愤怒的小鸟》全系列游戏——风靡全国,空降奴改:愤怒的小猪来袭~(版本二)
  7. 解决双卡4G模式下不能接听和拨打电话问题
  8. MTF 曲线图应该怎么看?
  9. 【前端实例代码】用HTML、CSS和JavaScript创建一个简易图片编辑器(实现图片的亮度、饱和度、灰度、颜色反转、图片旋转镜面翻转等滤镜效果)
  10. WEP(有线等效保密)