CAN总线的介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CAN 总线原理介绍
.现场总线简介
现场总线的概念:
现场总线是应用在生产现场,在微机化测量掌握设备之间实现双向串行多节点数字通信的系统。
也被称为开放式的数字化多节点通信的底层掌握网络。
现场总线作为智能设备的联系纽带,把挂接在总线上的作为网络节点的智能设备连接为网络系统,并进一步构成自动化系统,实现根本掌握、补偿计算、参数修改、报警、显示、监控、优化及控管一体化的综合自动化功能。
几种较有影响的现场总线技术:
基金会现场总线(FF-Foundation Fieldbus),Lonworks,PROFIBUS,HART,CAN 现场总线是几种较重要的现场总线技术。
CAN 总线技术:
CAN 总线简介:
CAN〔Controller Area Network〕-掌握器局域网。
它是一种有效支持分布式掌握或实时掌握的串行通信网络。
CAN 总线最早是由德国 Bosch 公司在 80 年月初为解决现代汽车中众多的掌握与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆、光导纤维,通信速率可达1Mbps。
CAN 总线通信接口中集成了 CAN 协议的物理层,数据链路层功能,可完成对通信数据的成帧处理,包括位填充,数据块编码,循环冗余校验,优先级判别等项工作。
CAN 总线技术的主要特点:
多主站依据优先权进展访问。
CAN 为多主方式工作,网络上的任一节点在任何时候都可以主动地向网络上的其他节点发送信息。
承受短帧传送。
CAN 承受短帧构造,废除了对传统的站地址编码,而是对通讯数据进展编码。
每帧数
据信息为0∽8个字节,具体长度由用户打算。
无破坏基于优先权的仲裁。
当多个节点同时向总线发送信息时,优先级较低的节点会主动的退出总线发送,而最
高优先级的节点可不受影响地连续传输数据,从而大大节约了总线冲突时间。
借助接收滤波的多地址帧传送。
CAN 只需通过报文滤波即可实现点对点,一点对多点以及全局播送等几种方式来传输数据,无需特地的“调度”。
各个接收站依据报文中反映数据性质的标识符过滤报文,打算是否接收。
强有力的错误掌握及错误重发功能:
CAN 的每帧信息都有CRC 校验及其他检错措施,在错误严峻的状况下具有自动关闭输出的功能,发送期间假设丧失仲裁或由于出错而患病破坏的帧可自动重发送,每帧信息中不行检错的概率低于310-5。
长距离高速率发送:
CAN的直接通信距离最远可达10km〔速率5km以下〕;通信速率最高可达1Mbps〔此时通信距离最长为40m〕。
CAN的通讯速率与其通信距离有呈线性关系。
CAN 总线多负载力量:
CAN 上的节点数主要取决于物理总线的驱动电路,节点数目前可达110 个;其报文标识符2032种〔CAN2.0A标准〕,而扩展标准〔CAN2.0B〕的报文标识符几乎不受限制。
CAN 的一些根本概念
报文――报文就是在总线上所传送的信息,该信息以不同的报文传送,但报文长度要受帧构造
的限制。
当总线空闲时,任何连接的单元均可开头发送一个报文。
帧传送――在总线上传输的报文以帧构造进展传输。
报文传送由4种不同类型的帧来表示和掌握:数据帧、远程帧、出错帧和超载帧。
仲裁――仲裁用于处理总线访问冲突。
方法是依据其报文优先权,而优先权由报文标识符
与RTR 位来唯一确定。
标识符―一个报文的内容由其标识符ID 命名,ID 并不指出报文的目的,但描述了数据
的含义,以便网络中的全部节点有可能借助报文滤波来打算该数据是否使它们激活。
技术标准――CAN技术标准〔Version2.0〕包括 2.0A 和2.0B。
2.0A 的报文标识符为 11 位,2.0B 有标准和扩展两种报文格式,前者的标识符19 位,后者 29 位。
远程数据恳求――通过发送一个远程帧,需要数据的节点可以恳求另一个节点发送一个
相应的数据帧,该数据帧和对应的远程帧以一样的标识符命名。
显性隐性――CAN总线数值为两种互补的规律数值:“显性”和“隐性”。
其中显性表示规
律“0”,而隐性表示规律“1”。
当显性和隐性位同时发送时,总线数值将为显性。
4、CAN 传送的帧构造
报文传送主要有四种不同类型的帧:数据帧、远程帧、出错帧以及超载帧。
⑴数据帧
数据帧携带数据由发送器至接收器,它由7个不同的位场组成,分别是帧起始、仲裁
场、掌握场、数据场、CRC 场、应答场以及帧完毕。
在具体编程中只要正确地运用仲裁场、
掌握场中的数据长度码、数据场即可。
帧起始――标志一个数据帧或远程帧的开头,它是一个显性位。
仲裁场――包括报文标识符 11 位〔CAN2.0A 标准〕和远程发送申请RTR 位,这 12 位
共同组成报文优先权信息。
数据帧的优先权比同一标识符的远程帧的优先权要高。
掌握场――由 6 位组成,包括2位作为掌握总线发送电平的备用位〔留作CAN 通信协议
扩展功能用〕与 4 位数据长度码。
其中数据长度码(DLC0-DLC3)指出了数据场中的字节数目
0∽8〔被发送/接收的数据的字节数目〕。
数据场――存储在发送缓冲器数据区或接收缓冲器数据区中以待发送或接收的数据。
按字节存储的数据可由微掌握器发送到网络中,也可由其它节点接收。
其中第一个字节的最高位首先被发送或接收。
CRC 场――又名循环冗余码校验场,包括 CRC 序列〔15 位〕和 CRC 界定符〔1 个隐性位〕。
CRC 场通过一种多项式的运算,来检查报文传输过程中的错误并自动订正错误。
这一步由掌握器自身来完成。
应答场――包括应答间隙和应答界定符两位。
帧完毕――每一个数据帧和远程帧均完毕于帧完毕序列,它由7个隐性位组成。
帧间空间帧起始掌握场应答场帧间空间
仲裁场数据场CRC 序列帧完毕或超载帧
数据帧的构造
远程帧
远程帧用来申请数据。
当一个节点需要接收数据时,可以发送一个远程帧,通过标识
符与置RTR 为高来寻址数据源,网络上具有与该远程帧一样标识符的节点则发送相应的数据
帧间空间帧起始掌握场应答场仲裁场CRC 场帧完毕或超载帧
帧完毕或超载界错误界定符
超载帧
一个超载标志
帧间空间或超载帧
数据帧出错帧
一个出错标志
出错叠加标志
帧间空间或超载帧错误界定符
帧。
远程帧由帧起始、仲裁场、掌握场、CRC 场、应答场和帧完毕组成。
这几个局部与数据帧中的一样,只是其 RTR 位为低而已。
远程帧的数据长度码为其对应的将要接收的数据帧中DLC 的数值。
帧间空间
出错帧
远程帧的构造
出错帧由两个不同场组成,一个是由来自各站的错误标志叠加得到,另一个是出错界定符。
出错帧的组成为:
超载帧
超载帧由超载标识和超载界定符组成。
在 CAN 中,存在两个条件导致发送超载帧。
一个是接收器未预备就绪,另一个是在间隙场检测到显性位。
超载帧的构造:
超载叠加标志超载界定符
CAN 掌握器介绍及 82C200 掌握器
CAN 掌握器介绍:CAN 总线芯片主要如下表示:
制造商产品型号功能特点
INTEL 82526 CAN 通信掌握器,符合 CAN2.0A
公司82527 CAN 通信掌握器,符合 CAN2.0B
82C200 CAN 通信掌握器,符合 CAN2.0A
PHILIPS 公司8XC592
8XCE598
8051 微掌握器+CAN 通信掌握器+A/D+PWM,符合CAN2.0A
同上,不同的是它具有电磁兼容性,符合CAN2.0A
82C150 有 A/D 功能,可用于传感器或执行机构,符合CAN2.0A 82C250CAN 总线收发器,可用于 CAN 器件与物理总线间的连接
PHILIPS 公司的 82C200CAN 掌握器
⑴82C200简介
PCA82C200 和 PCF82C200 是适用于汽车和一般工业环境掌握器局域网〔CAN〕的高
集成度独立的掌握器,其温度范围包括-40℃∽125℃的汽车版本〔PCA82C200〕和-40℃∽85℃的一般版本〔PCF82C200〕。
82C200 芯片的管脚图
AD0∽AD7:分时复用地址/数据线
ALE:ALE 信号〔INTEL 方式〕
/C/S:片选信号,低电平允许访问 82C200
/R/D:来自微掌握器的写信号〔INTEL 方式〕
/W/R:来自微掌握器的写读信号〔INTEL 方式〕
CLKOUT:由 82C200 为微掌握器产生的时钟信号,由在线振荡器分频得到。
XTAL1:输至振荡器放大器。
外部振荡器信号经此脚输入
XTAL2:振荡器放大器输出。
使用外部振荡器信号时,此脚保持开路
MODE:方式选择输入端,接VDD 选为INTEL 方式
TX0,TX1:由输出驱动器0,1 到物理总线的输出端
INT:中断输出端,用于中断微掌握器。
假设中断存放器为规律高电平,此脚将被激
活RST:复位端,用于重启动CAN 接口〔低电平〕。
RX0,RX1:由物理总线至 82C200 输入比较器的输入端。
VSS1:规律电路地电位VDD1:规律电路5V 电位
VSS2:输入比较器地电位VDD2: 输入比较器5V 电源
VSS3:输入驱动器地电位VDD3: 输入驱动器5V 电源
82C200 的存放器和缓冲器
82C200 存放器主要有掌握、命令、状态、中断、接收码、接收屏蔽、总线定时0、总线定时1、输出掌握、测试、时钟驱动器这十个存放器,其缓冲器主要有发送缓冲器、接收缓冲器两种。
掌握存放器〔CR〕
位CR.7 CR.6 CR.5 CR.4 CR.3 CR.2 CR.1 CR.0
名称测试方式同步――超载中断
开放
出错中断
开放
发送中断
开放
接收中断
开放
复位恳求
数高开放高双沿―――高开放高开放高开放高开放高常态值低制止低单沿低制止低制止低制止低制止低格外态命令存放器〔CMR〕
位名称CMR.7
------
CMR.6
------
CMR.5
――
CMR.4
进入睡眠
状态
CMR.3
去除超载
状态
CMR.2
释放接收
缓冲器
CMR.1
夭折发送
CMR.0
发送恳求
数------ ------ ―――高睡眠高去除高释放高常态高常态值低唤醒低无作用低无作用低格外态低格外态状态存放器〔SR〕
位SR.7 SR.6 SR.5 SR.4 SR.3 SR.2 SR.1 SR.0
名称总线状态错误状态发送状态接收状态发送完成
状态
发送缓冲
器访问
数据超载接收缓冲
器访问
数高脱离高出错高发送高接收高完成高释放超群载高满值低在线低正常低空闲低空闲低未完成低锁定低未超载低空中断存放器〔IR〕
位名称IR.7
------
IR.6
------
IR.5
------
IR.4
唤醒中断
IR.3
超载中断
IR.2
出错中断
IR.1
发送中断
IR.0
接收中断
数------ ------ ------ 高置位高置位高置位高置位高置位值低复位低复位低复位低复位低复位
验收码存放器〔ACR〕和验收屏蔽存放器〔AMR〕
ACR 和AMR 均是验收滤波器的一局部。
它们打算了网络中的报文是否被接收。
在初始化中要对它们进展写操作,目的是设定对什么样的报文予以接收。
当满足以下两个条件之一,并存在空的接收缓冲器时,报文可被正确接收。
标识符 字节5 字节6 字节7 字节8
标识符 字节5 字节6 字节7 字节8
标识符 字节5 字节6 字节7 字节8 条件一:ACR 与报文标识符的高8位在AMR 为“0”的那些位上对应相等。
条件二:AMR=0FFh ,即ACR 的全部位均为屏蔽位。
总线定时存放器BTR0,BTR1
BTR0 的内容打算了波特率预分频〔BRP 〕和同步跳转宽度〔SJW 〕的数值,BTR1 的內容打算了位周期宽度、采样点位置和在每个采样点猎取采样的数目。
假设复位恳求位为高,它们 可被访问〔读/写〕。
BTR0 与 BTR1 分别为:
B0.7 B0.6 B0.5 B0.4 B0.3 B0.2 B0.1 B0.0 SJW.1
SJW.0
BRP.5
BRP.4
BRP.3
BRP.2
BRP.1
BRP.0
B0.7 B0.6
B0.5 B0.4
B0.3
B0.2
B0.1
B0.0 SAM
TSEG2.2
TSEG2.1
TSEG2.0
TSEG1.3
TSEG1.2
TSEG1.1
TSEG1.0
位速率=1/(2*Tclk*(1+X)*(3+Y+Z))
X=32B0.5+16B0.4+8B0.3+4B0.2+2B0.1+B0.0 Y=8TSEG1.3+4TSEG1.2+2TSEG1.1+TSEG1.0 Z=4TSEG2.2+2TSEG2.1+TSEG2.0
同步跳转宽度确定一次重同步位周期削减或增加时钟周期Tclk 的最大数目,重同步
发生在报文位流发送期间,以补偿个别82C200 振荡器频率的变化以及由于从一个发送器到另一个发送器引入的变化。
它的计算公式为: Tsjw=2Tclk(X+1)*(2SJW.1+SJW.0+1) 输出存放器〔OCR 〕
OCR 允许建立输出驱动器的不同配置:双向、测试、正常、时钟四种输出方式。
一般我们用正常输出方式。
只要将 0AAH 写入该存放器即可。
时钟存放器〔CDR 〕
时钟存放器打算了时钟频率的分频数值。
它可被微掌握器写入或读出。
缺省值 12 分频。
发送缓冲器和接收缓冲器
发送缓冲器可存储由微掌握器写入的以待发送的报文。
而接收缓冲器则存储由网络中所接收到的报文。
其格式为:
RTR 、DLC 位 描述符
RTR 、DLC 位 RTR 、DLC 位 字节1 字节1 字节1 字节2 字节2 字节2 字节3 字节3 字节3 字节4 字节4 字节4
数据场
发送缓冲器
接收缓冲器 0 或 1
82C200 的应用举例
如下线路示,PC 机内带CAN 适配卡,82C250 是 CAN 总线驱动器(收发器)。
题目要求:各节点单片机数据存储器区 50H-57H 中存有 8 个字节的数据,假设有按键按下,则通过 CAN 总线在单片从机之间进展数据的传送;同时上位PC 机也可以通过总线接收单片机的数据。
设定后者通信的优先权高于前者通信的优先权。
有关协议
各单片机写ACR 为#81h 、#82h …, 写AMR 分别为#0FEh 、#0FDh 、#0FCh…。
PC 机发一数据帧〔RTR=0〕来点名单片机〔其标识符的高4 位均 0000 表示优先权最高〕,
┉┉82C250
┉┉ 82C200
┉┉
8031
假设第一字节数据为 55H 则要求所点名的单片机发送全 8 字节数据。
假设有按键按下,则该单片机发一远程幀给它需要数据的某单片机以申请数据的接收〔远程幀标识符的高 4 位为 0100,表示优先权较低〕。
上位机 CAN 适配卡的验收屏蔽存放器为#0FFh,表示它可以接收单片机发送的全部数据帧或远程帧。
假设帧中 ID2ID1ID0=000 则表示该帧是某单片机发送给上位机的,否则表示单片机之间的通信。
PC 上位机
120 Ω 120Ω
82C250
82C250
82C200
82C200
8031
8031
流程图〔见下页〕
具体程序:〔用汇编程序,针对第一号单片机〕
CR EQU 0700H AMR EQU 0705H CMR EQU 0701H BTR0 EQU 0706H SR EQU 0702H BTR1 EQU 0707H IR EQU 0703H OCR EQU 0708H
ACR EQU 0704H
***************************************************************************
ORG 00H MOV DPTR, #OCR;写输出存放器为正常输出 AJMP MAIN MOV A, #0AAH 方式
ORG 03H MOVX @DPTR,A
AJMP PINT0 MOV DPTR, #CR ;复位完毕 ORG 10H
MOV A, #1AH MAIN:
MOV DPTR, #CR ;开放接收,出错,超载中断并复位 MOVX @DPTR,A
MOV A,#1BH SETB EA ;开外部中断INT0 MOVX @DPTR,A
SETB EX0
MOV DPTR, #ACR ;写验收码存放器 JB P1.0, PMAIN;无键按下则转
MOV A, #81H MOV DPTR, #SR ;有键按下则发一远程帧 MOVX @DPTR,A
MOVX A, @DPTR MOV DPTR, #AMR ;写验收屏蔽存放器 MOV 20H, A
MOV A, #0FEH JNB 02H, $;发送缓存器未空则等待 MOVX @DPTR,A
MOV DPTR, #070AH
MOV DPTR, #BTR0 ;写总线定时器 0 MOV A, #43H ;写标识符为目标单片机(如 3 号机〕 MOV A, #9FH 位速率为 10Mbps
MOVX @DPTR,A MOVX @DPTR,A
MOV DPTR, #070BH
MOV DPTR, #BTR1 ;写总线定时器 1 MOV A, #38H ;ID2ID1ID0=001,RTR=1 为远程帧 MOV A, #7FH MOVX @DPTR,A MOVX @DPTR,A
MOV DPTR, #CMR
MOV A, #05H;申请发送
MOVX @DPTR,A
LCALL WAIT3;调未发送完等待子程序
PMAIN: NOP
NOP
AJMP PMAIN
;*****
PINT0: PUSH ACC ;保护现场
PUSH PSW
MOV DPTR, #IR;读中断存放器
MOVX A, @DPTR
MOV 20H, A
JB 02H, ERROR;是出错中断则转
JB 03H, OVERUN;是超载中断则转
JB 00H, RECEIVE;是接收中断则转
STOP: POP PSW;恢复现场
POP ACC
RETI
WAIT1: MOV DPTR, #SR;读状态存放器
MOVX A, @DPTR
MOV 20H, A
JB 04H,$;假设正在接收则等
待RET
WAIT2: MOV DPTR, #SR;读状态存放器
MOVX A,@DPTR
MOV 20H, A
JNB 02H, $;假设发送缓存器未空则等
待RET
WAIT3: MOV DPTR, #SR;读状态存放器
MOVX A,@DPTR
MOV 20H, A
JNB 03H, $;未发送完则等待
RET
ERROR:NOP;出错中断处理〔软件延时〕
NOP
AJMP STOP
OVERUN:LCALL S-MOTE;超载中断则发一远程帧给上位机AJMP STOP
S_MOTE:LCALL WAIT1;调未接收完等待子程序
MOV DPTR , #CMR
MOV A, #0CH;去除超载状态并释放接收缓存器
MOVX @DPTR,A
LCALL WAIT2;调发送缓存器未空等待子程序
MOV DPTR, #070AH
MOV A,#01H;优先权最高
MOVX @DPTR,A
MOV DPTR, #070BH
MOV A, #10H;id2id1id0=000 表示该远程帧是发给
MOVX @DPTR,A 上位机的
MOV DPTR, #CMR
MOV A, #05H;申请发送
MOVX @DPTR,A
RET
RECEIVE:MOV DPTR, #0715H;接收中断处理
MOVX A, @DPTR
MOV 20H, A
JB 04H, D-SEND;RTR=1 则转单片机间通信程序
MOV DPTR, #0716J;RTR=0 则读第一字节数据
MOVX A, @DPTR
CJNE A,#55H,STOP;假设第一字节不是55H 返回
AJMP S-SEND;是55H 则转与上位机的通信程序S-SEND: LCALL WAIT1; 调未接收完等待子程序LCALL
WAIT2;调发送缓存器未空等待子程序
MOV DPTR, #070AH
MOV A, #01H; 写标识符
MOVX @DPTR, A
AJMP NEXT
D-SEND: LCALL WAIT1; 调未接收完等待子程序
LCALL WAIT2;调发送缓存器未空等待子程序
MOV DPTR,0715H
MOVX A, @DPTR;读ID2ID1ID0
SWAP A;凹凸4 位交换
RR A;右移
ANL A,#0FH;取ID2ID1ID0
ADD A, #40H;得到目标单片机的标识符
MOV DPTR, #070AH
MOVX @DPTR, A
MOV DPTR, #070BH
MOV A, #28H;写RTR=0,ID2ID1ID0=001
MOVX @DPTR,A
NEXT: MOV DPTR, #070CH
MOV A, 50H;写数据
MOVX @DPTR,A
……………
MOV DPTR, #0713H
MOV A, 57H;写最终一字节
MOVX @DPTR,A
LCALL WAIT3; 调未发送完等待子程序AJMP STOP;返回
END。