没有合适的资源?快使用搜索试试~ 我知道了~
首页Can 总线资料和STM32HAL库配制说明
全称Controller Area Network,是一种半双工,异步通讯。没有主从的说法,每个设备都可以发送和接收。 32 位的掩码模式筛选器 在该配置中,结构体成员 CAN_FilterIdHigh 和 CAN_FilterIdLow 存储的是要筛选的 ID,而CAN_FilterMaskIdHigh 和 CAN_FilterMaskIdLow 存储的是相应的掩码。在赋值时,要注意寄存器位的映射,在 32 位的 ID 中,第 0 位是保留位,第 1 位是 RTR 标志,第 2 位是 IDE 标志,从第 3 位起才是报文的 ID(扩展 ID)。
资源详情
资源评论
资源推荐
Can 总线资料
1 CAN 协议简介
CAN 是控制器局域网络(Controller Area Network)的简称,它是由研发和生产汽车电子产品
著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11519),是国际上应用最广泛
的现场总线之一。
CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥
有以 CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议。近年来,它具有的
高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶
劣、电磁辐射强及振动大的工业环境。
1.1 CAN 物理层
与 I2C、SPI 等具有时钟信号的同步通讯方式不同,CAN 通讯并不是以时钟信号来进行同步
的,它是一种异步通讯,只具有 CAN_High 和 CAN_Low 两条信号线,共同构成一组差分信
号线,以差分信号的形式进行通讯。
1. 闭环总线网络
CAN 物理层的形式主要有两种,图 401 中的 CAN 通讯网络是一种遵循 ISO11898 标准的高
速、短距离"闭环网络",它的总线最大长度为 40m,通信速度最高为 1Mbps,总线的两端各
要求有一个"120 欧"的电阻。
图 401 CAN 闭环总线通讯网络
2. 开环总线网络
图 402 中的是遵循 ISO11519-2 标准的低速、远距离"开环网络",它的最大传输距离为 1km,
最高通讯速率为 125kbps,两根总线是独立的、不形成闭环,要求每根总线上各串联有一个
"2.2 千欧"的电阻。
图 402 CAN 开环总线通讯网络
3. 通讯节点
从 CAN 通讯网络图可了解到,CAN 总线上可以挂载多个通讯节点,节点之间的信号经过总
线传输,实现节点间通讯。由于 CAN 通讯协议不对节点进行地址编码,而是对数据内容进
行编码的,所以网络中的节点个数理论上不受限制,只要总线的负载足够即可,可以通过中
继器增强负载。
CAN 通讯节点由一个 CAN 控制器及 CAN 收发器组成,控制器与收发器之间通过 CAN_Tx 及
CAN_Rx 信号线相连,收发器与 CAN 总线之间使用 CAN_High 及 CAN_Low 信号线相连。其
中 CAN_Tx 及 CAN_Rx 使用普通的类似 TTL 逻辑信号,而 CAN_High 及 CAN_Low 是一对差
分信号线,使用比较特别的差分信号,下一小节再详细说明。
当 CAN 节点需要发送数据时,控制器把要发送的二进制编码通过 CAN_Tx 线发送到收发器,
然后由收发器把这个普通的逻辑电平信号转化成差分信号,通过差分线 CAN_High 和
CAN_Low 线输出到 CAN 总线网络。而通过收发器接收总线上的数据到控制器时,则是相反
的过程,收发器把总线上收到的 CAN_High 及 CAN_Low 信号转化成普通的逻辑电平信号,
通过 CAN_Rx 输出到控制器中。
例如,STM32 的 CAN 片上外设就是通讯节点中的控制器,为了构成完整的节点,还要给它
外接一个收发器,在我们实验板中使用型号为 TJA1050 的芯片作为 CAN 收发器。CAN 控制
器与 CAN 收发器的关系如同 TTL 串口与 MAX3232 电平转换芯片的关系,MAX3232 芯片把
TTL 电平的串口信号转换成 RS-232 电平的串口信号,CAN 收发器的作用则是把 CAN 控制
器的 TTL 电平信号转换成差分信号(或者相反)。
4. 差分信号
差分信号又称差模信号,与传统使用单根信号线电压表示逻辑的方式有区别,使用差分信号
传输时,需要两根信号线,这两个信号线的振幅相等,相位相反,通过两根信号线的电压差
值来表示逻辑 0 和逻辑 1。见图 403,它使用了 V+与 V-信号的差值表达出了图下方的信号。
图 403 差分信号
相对于单信号线传输的方式,使用差分信号传输具有如下优点:
抗干扰能力强,当外界存在噪声干扰时,几乎会同时耦合到两条信号线上,而接收端只
关心两个信号的差值,所以外界的共模噪声可以被完全抵消。
能有效抑制它对外部的电磁干扰,同样的道理,由于两根信号的极性相反,他们对外辐
射的电磁场可以相互抵消,耦合的越紧密,泄放到外界的电磁能量越少。
时序定位精确,由于差分信号的开关变化是位于两个信号的交点,而不像普通单端信号
依靠高低两个阈值电压判断,因而受工艺,温度的影响小,能降低时序上的误差,同时也更
适合于低幅度信号的电路。
由于差分信号线具有这些优点,所以在 USB 协议、485 协议、以太网协议及 CAN 协议的物
理层中,都使用了差分信号传输。
5. CAN 协议中的差分信号
CAN 协议中对它使用的 CAN_High 及 CAN_Low 表示的差分信号做了规定,见表 401 及
图 404。以高速 CAN 协议为例,当表示逻辑 1 时(隐性电平),CAN_High 和 CAN_Low 线上
的电压均为 2.5v,即它们的电压差 V
H
-V
L
=0V;而表示逻辑 0 时(显性电平),CAN_High 的电
平为 3.5V,CAN_Low 线的电平为 1.5V,即它们的电压差为 V
H
-V
L
=2V。例如,当 CAN 收发
器从 CAN_Tx 线接收到来自 CAN 控制器的低电平信号时(逻辑 0),它会使 CAN_High 输出
3.5V,同时 CAN_Low 输出 1.5V,从而输出显性电平表示逻辑 0。
表 401 CAN 协议标准表示的信号逻辑
信号
ISO11898(高速)
ISO11519-2(低速)
隐性(逻辑 1)
显性(逻辑 0)
隐性(逻辑 1)
显性(逻辑 0)
最
小
值
典
型
值
最
大
值
最
小
值
典
型
值
最
大
值
最
小
值
典
型
值
最
大
值
最
小
值
典
型
值
最
大
值
CAN_Hig
h(V)
2.
0
2.
5
3.0
2.7
5
3.
5
4.5
1.6
1.7
5
1.
9
3.8
5
4.
0
5.0
CAN_Low
(V)
2.
0
2.
5
3.0
0.5
1.
5
2.2
5
3.1
0
3.2
5
3.
4
0
1.
0
1.1
5
High-Low
电位
差 (V)
-
0.
5
0
0.0
5
1.5
2.
0
3.0
-
0.3
-
1.5
-
0.3
3.
0
-
图 404 CAN 的差分信号(高速)
在 CAN 总线中,必须使它处于隐性电平(逻辑 1)或显性电平(逻辑 0)中的其中一个状态。假
如有两个 CAN 通讯节点,在同一时间,一个输出隐性电平,另一个输出显性电平,类似 I2C
总线的"线与"特性将使它处于显性电平状态,显性电平的名字就是这样来的,即可以认为显
性具有优先的意味。
由于 CAN 总线协议的物理层只有 1 对差分线,在一个时刻只能表示一个信号,所以对通讯
节点来说,CAN 通讯是半双工的,收发数据需要分时进行。在 CAN 的通讯网络中,因为共
用总线,在整个网络中同一时刻只能有一个通讯节点发送信号,其余的节点在该时刻都只能
接收。
1.2 协议层
以上是 CAN 的物理层标准,约定了电气特性,以下介绍的协议层则规定了通讯逻辑。
1. CAN 的波特率及位同步
由于 CAN 属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口
异步通讯那样,节点间使用约定好的波特率进行通讯,特别地,CAN 还会使用"位同步"的方
式来抗干扰、吸收误差,实现对总线电平信号进行正确的采样,确保通讯正常。
位时序分解
为了实现位同步,CAN 协议把每一个数据位的时序分解成如图 405 所示的 SS 段、PTS 段、
PBS1 段、PBS2 段,这四段的长度加起来即为一个 CAN 数据位的长度。分解后最小的时间
单位是 Tq,而一个完整的位由 8~25 个 Tq 组成。为方便表示,图 405 中的高低电平直接代
表信号逻辑 0 或逻辑 1(不是差分信号)。
图 405 CAN 位时序分解图
该图中表示的 CAN 通讯信号每一个数据位的长度为 19Tq,其中 SS 段占 1Tq,PTS 段占 6Tq,
PBS1 段占 5Tq,PBS2 段占 7Tq。信号的采样点位于 PBS1 段与 PBS2 段之间,通过控制各段
的长度,可以对采样点的位置进行偏移,以便准确地采样。
各段的作用如介绍下:
SS 段(SYNC SEG)
SS 译为同步段,若通讯节点检测到总线上信号的跳变沿被包含在 SS 段的范围之内,则表示
节点与总线的时序是同步的,当节点与总线同步时,采样点采集到的总线电平即可被确定为
该位的电平。SS 段的大小固定为 1Tq。
PTS 段(PROP SEG)
PTS 译为传播时间段,这个时间段是用于补偿网络的物理延时时间。是总线上输入比较器延
时和输出驱动器延时总和的两倍。PTS 段的大小可以为 1~8Tq。
PBS1 段(PHASE SEG1),
PBS1 译为相位缓冲段,主要用来补偿边沿阶段的误差,它的时间长度在重新同步的时候可
以加长。PBS1 段的初始大小可以为 1~8Tq。
PBS2 段(PHASE SEG2)
PBS2 这是另一个相位缓冲段,也是用来补偿边沿阶段误差的,它的时间长度在重新同步时
可以缩短。PBS2 段的初始大小可以为 2~8Tq。
通讯的波特率
总线上的各个通讯节点只要约定好 1 个 Tq 的时间长度以及每一个数据位占据多少个 Tq,
就可以确定 CAN 通讯的波特率。
例如,假设上图中的 1Tq=1us,而每个数据位由 19 个 Tq 组成,则传输一位数据需要时间
T
1bit
=19us,从而每秒可以传输的数据位个数为:
1x10
6
/19 = 52631.6 (bps)
这个每秒可传输的数据位的个数即为通讯中的波特率。
同步过程分析
波特率只是约定了每个数据位的长度,数据同步还涉及到相位的细节,这个时候就需要用
到数据位内的 SS、PTS、PBS1 及 PBS2 段了。
根据对段的应用方式差异,CAN 的数据同步分为硬同步和重新同步。其中硬同步只是当存
在"帧起始信号"时起作用,无法确保后续一连串的位时序都是同步的,而重新同步方式可解
决该问题,这两种方式具体介绍如下:
(1) 硬同步
剩余32页未读,继续阅读
熊已出没
- 粉丝: 56
- 资源: 29
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0