CAN总线属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络,位速率可高达1MBPS。可以应用在汽车控制系统,自动化电子领域中的各种部件(传感器,灯光,执行机构等)与主机连接组成CAN 网络。本章介绍通过CAN总线与液晶显示器的连接。
CAN 具有下列主要特性:
1 多主站依据优先权进行总线访问。 总线开放时,任何单元均可开始发送报文,具有最高优先权的报文的单元赢得总线访问权。 利用这个特点可以用液晶显示器作为多主机的公用监视器,不用每台主机配一个监视器,从而节约系统成本。
2 无破坏性的基于优先权的仲裁。
网络上的每个主机可以同时发送,哪个主机的数据可以发送出去取决于主机所发送报文的标识符决定的优先权的大小,没有发送出去的帧可自动重发。以后将介绍数据怎样仲裁。 3 借助接收滤波的多地址帧传送
收到报文的标识符与本机的接收码寄存器与屏蔽寄存器相比较,符合的报文本机才予以接收。
4.远程数据请求。
网络上的每个接点可以发送一个远程帧给另一个接点,请求该接点的数据帧,该数据帧与对应的远程帧以相同的标识符ID命名。 5.配置灵活性
通过八个寄存器进行接点配置,每个接点可以接收,也可以发送。 6.全系统数据相容性 7.错误检测和出错信令
有五种错误类型,每个接点都设置有一个发送出错计数器和一个接收出错计数器。发送接点和接收接点在检测到错误时,出错计数器根据一定规则进行加减,并根据错误计数器数值发送错误标志(活动错误标志和认可错误标志),当错误计数器数值大于255时,该接点变为“脱离总线”状态,输出输入引脚浮空,既不发送,也不接收。
CAN 中的总线数值为两种互补逻辑数值:“显形”和“隐性”,用差分电压表示。 “显形”表示逻辑“0”,显性状态用大于最小阈值的差分电压表示。 “隐性” 表示逻辑“1”,这时输出的差分电压Vdiff 近似为0,Vcanh ,Vcanl固定于平均电压电平,显性位与隐性位同时发送时,最后总线数值为显性。在总线空闲或隐性位期间,发送“隐性”位。
平均电压U
Vcan-l Vdiff
Vdiff 隐性位 Vcanh 显性位
总线位的数值表示
CAN 系统内两个任意节点之间的最大传输距离与其位速率有关,在一个给定
系统中,位速率是唯一的,并且是固定的。两节点间的最大距离见下表。
位速率(bps) 最大总线长度(m) 总线定时 1000 500 250 125 100 50 20 10 5 40 130 270 530 620 1.3k 3.3k 6.7k 10k
CAN的分层结构
CAN遵从OSI模型,CAN结构划分为两层:数据链路层和物理层 数据链路层又划分为:逻辑链路控制(LLC)和媒体访问控制(MAC) LLC提供的功能包括:帧接收滤波,超载通告和恢复处理。
帧接收滤波:帧内容有其标识符命名,接收器只接收标识符与接收单元
定义的标识符相一致的帧,其它帧忽略。
超载通告:如果接收器内部条件要求延迟一个数据帧或远程帧,则可以
发送一个超载帧。最多可以发送两个超载帧。
恢复处理:发送期间,对于丢失仲裁和被错误干扰的帧,LLC子层具有自动重发功能,直至成功发送。
MAC子层分为两个完全工作的部分,即接收和发送部分。
发送部分提供的功能包括:数据封装,发送媒体访问管理。
1.数据封装:接收LLC帧和接口控制信息,通过向LLC帧附加SOF,RTR,
CRC,ACK,和EOF位构造MAC帧 。
2.发送媒体访问管理:
· 确认总线空闲后,开始发送过程。
· MAC帧串性化,输出串性化流到物理层准备发送。 · 插入填充位
· 在丢失仲裁的情况下,退出仲裁并转入接收方式。 ·错误检测
·应答校验
·确认超载条件,构造超载帧并开始发送 ·构造出错帧并开始发送
接收部分提供的功能包括:数据拆装,接收媒体访问管理 接收媒体访问管理
·由物理层接收串性位流,并重新构筑帧结构
BTR0 00h 00h 01h 03h 43h 47h 53h 67h 7fh BTR1 14h 1ch 1ch 1ch 2fh 2fh 2fh 2fh 7fh ·解除位填充
·错误检测 ·发送应答
·确认超载条件,构造超载帧并开始发送 ·构造出错帧并开始发送
2 数据拆装
由接收帧中去除MAC特定信息
输出LLC帧和接口控制信息到LLC子层
物理层定义CAN接口单元连接至总线的电路实现部分。接口单元的总数受限与总线上的电气负载。
物理层又划分为:
---物理信令(PLS)
位编码/解码,定时,和位同步
---物理媒体附属装置(PMA)
总线发送和接收的功能电路,并提供总线故障检测方法。
---媒体相关接口(MDI)
定义与物理媒体的机械和电气接口。 接口之间用两根并排双绞线相互连接 分层结构图示 数据链层 LLC 接收滤波 超载通告 恢复管理 MAC 发送数据封装 发送媒体访问管理 物理层 接收数据拆装 接收媒体访问管理 PLS 位编码/解码 位定时和位同步 PMA 发送和接收电路驱动,总线故障检测 MDI 连接器
以下讲述LLC帧和MAC帧结构及各子层功能实现的细节
一 LLC帧结构 1 LLC数据帧
LLC数据帧包括三个位场:即标识符场,数据长度场(DLC),数据场。
如图所示
标识符场 DLC场 数据场 (1) 标识符场:标识符长度为11位,其最高七位(ID-10~ID-4)不应全
为“1”
(2) DLC场:DLC场二进制数值指出数据场字节个数,由四位构成,数据
场长度允许数据字节数目范围为0~8,也就是DLC场数值不能大于8(1000)。
(3) 数据场:数据场由数据帧内被发送数据组成,它可包括0~8个字节。 2 LLC 远程帧
LLC 远程帧由两个位场(标识符场和DLC场)组成,不包括数据场。 LLC 远程帧标识符场与LLC数据帧标识符场格式相同。DLC场的数值是的,此数值为请求的数据帧的数据长度码。 二 MAC帧结构
CAN系统中,数据在节点间发送和接收以四种不同类型的帧出现和控制,即数据帧
数据由发送器传至接收器。 远程帧
由节点发送,以请求另一个节点发送具有相同标识符的数据帧 出错帧
当任何节点检测到出错条件时,都可向总线发送出错帧
超载帧
在节点满足超载条件时,可以在相临数据帧或远程帧之间发送一个到两
个超载帧,用于提供相临数据帧或远程帧之间的附加延时。
另外数据帧或远程帧以帧间空间的位场同先前发送的上述四种类型的帧隔开。
1 MAC数据帧
一个MAC数据帧由七个位场构成。如下图所示,它们是:帧起始场(SOF),
仲裁场,控制场(两位保留位+DLC场),数据场,CRC场,ACK场,和帧结束场(EOF) (1)帧起始场(SOF):标志数据帧和远程帧的起始,它由单个“显性”位构
成。只有当总线为空闲状态时,才允许节点开始发送,所有节点必须同步于首先开始发送的 帧起始引起的上升沿。
(2)仲裁场:仲裁场由LLC子层的标识符和RTR位构成,在MAC数据帧中,RTR位数值为“0”
(3)控制场:控制场由6位构成,包括两位将来DLC扩展的保留位,总是为“0”。 (4) 数据场:MAC数据场与LLC数据场格式相同。
(5) CRC场:CRC场包括CRC序列,后随CRC界定符。用于帧校验的
CRC序列由特别使用于位数小于127位帧的循环冗余码校验驱动。为
实现CRC计算,被除的多项式被定义为这样一个多项式,其系数由帧起始,仲裁场,控制场,数据场和15位最低系数为0组成的解除填充的位流给定。此多项式被下列生成多项式相除(系数按模2计算),余数即为发至总线的CRC序列。
X15+X14+X10+X8+X7+X4+X3+1
为实现这一功能,可以使用15位移位寄存器CRC(14:0),NXTBIT表示上面提到的数据帧构成的位流的下一位,CRC序列计算如下: CRC(14:0)=0;
REPEAT
CRCNXT=NXTBIT exor CRC(14)
CRC(14:1)=CRC(13:0)CRC(0)=0, //左移一位,最低位补0 If crcnxt then
Crc(14:0)=crc(14:0) exor (4599); End if
Until (nxtbit=数据结束或存在一个错误条件)。
数据场最后一位发送/接收后,CRC(14:0)中含有CRC序列。CRC序列后随的CRC界定符仅有单个“隐性”位构成。
(6)ACK场:ACK场由两位:ACK隙和ACK界定符。发送节点发送两个隐性位。在ACK隙期间,接收到匹配数据帧的节点,以显性位改写发送器的隐性位作为ACK应答。
(7) 帧结束:帧结束场由7个“隐性“位构成
2 MAC远程帧
激活为数据接收器的节点可以通过发送一个远程帧启动源节点发送数据。一
个远程帧由6个位场构成:帧起始场(SOF),仲裁场,控制场(两位保留位+DLC场), CRC场,ACK场,和帧结束场(EOF),无数据场。
其中仲裁场也有LLC子层的标识符场和RTR位构成,但这时RTR 为“1“,表示远程帧。其它位场与数据帧相同。
3出错帧
出错帧由两个位场构成,第一个位场由来自不同节点的错误标志叠加给出,第二个位场为错误界定符,由8个“隐性位“构成
(1) 错误标志
由两种错误标志形式:活动错误标志和认可错误标志。活动错误标志由6位“显性“位构成。认可错误标志由6位”隐性“位构成,认可错误标志的这些位可由来自其它节点的”显性“位改写。
一个检测到出错状态的“错误-激活“节点,借助发送活动错误标志来标注。此错误标志形式将破坏要求满足位填充规则的位场或破坏其它要求固定形式的位场。这样其它节点将检测到一个出错条件,并开始发送相应的出错标志。因此,这时总线上监控到的”显性“位序列是各个节点发送的不同错误标志叠加而成。此序列总长度在6~12位之间变化。
错误-认可型节点检测到出错条件后,将试图发送一个认可错误标志来标注。错误-认可型节点将等待6个连续的隐性位(认可出错标志),当在这6位被检测完毕,认可型出错标志即完成。
由于数据帧和远程帧传送期间检出错误(活动错误),则当前报文被放弃,并且为报文的重新传送进行初始化,并发送一个出错帧,自检出错误到下一个报文开始发送的恢复时间,如果不存在新的错误最多为29个位时间。
发送错误标志的时点:节点在检测到位错误,填充错误,形式错误或应答错误时,该节点将在下一位开始发送出错标志,当检测到CRC错误时,出错标志在紧跟应答界定符后的一位开始发送,除非其它出错条件的出错标志已经开始发送。
4 超载帧
超载帧包括两个位场:超载标志和超载界定符。超载标志与活动错误标志一样由6位“显性“位构成。超载界定符与错误界定符格式相同,由
8个“隐性位“构成。存在两个条件导致发送超载帧,一个条件是接收器线路在接收下一帧前需要更多的时间处理当前数据,亦即接收器未准备好;另一个条件是在间歇场期间测出显性位(间歇场要求三个隐性位,若不满足即超载)。超载帧的发送也相应的起始于两个条件,一个是所希望间歇场的第一位周期期间;另一个是间歇场期间检测出显性位后的一个位周期。由于超载标志破坏了间歇场的固定形式,因此所有其它节点同时开始发送超载标志。
5 帧间空间
数据帧或远程帧以帧间空间的位场同先前发送的上述四种类型的帧隔开。而超载帧和出错帧前面不存在帧间空间。
帧间空间包括间歇场和总线空闲场,并且对于先前帧已发送“错误-认可“标志的节点还包括暂停发送场。即间歇场+暂停发送场+总线空闲场。 (1)、间歇场 间歇场由三个隐性位构成。间歇期间不允许节点开始发送数据帧或远程帧。 (2) 总线空闲场
总线空闲场可以是任意长度。总线空闲(隐性)时,任何节点均可访问总线以便发送。其它帧发送期间,等待发送的帧在紧随其间歇场后的第一位启动。如果在总线空闲期间检测到总线上“显性位“将被认为是帧起始。 (3) 暂停发送场
“错误-认可“节点完成发送后,在发送间歇场后,将发送8位”隐性“位的暂停发送场,期间若有其它节点引起的发送启动,则该节点变为该发送帧的接收器。
三 位填充及发送/接收
帧起始场,仲裁场,控制场,数据场,CRC场均以位填充方法进行编码。在发送器在发送位流中检测到5个数值相同的位时,自动插入一个补码位。 CRC界定符,ACK场,和帧结束场为固定形式,不进行填充处理。出错帧和超载帧也为固定形式,同样也不进行填充处理。
一帧应由其SOF场开始发送,在一场内应首先发送最高位。
对于发送器和接收器一帧的有效时点是不同的。对于发送器,若在帧结束完成前不存在错误,则该帧有效。否则,则进行恢复处理。对于接收器,若在帧结束最后一位前不存在错误,则该帧有效。
四 媒体访问和仲裁
当检测到间歇场未被“显性位”中断后,认为总线被释放。总线一旦被释放,“错误-活动”节点可以访问总线,接收当前或先前帧的错误-认可“节点可以访问总线。一旦完成暂停的发送,并且期间没有其它节点开始发送,发送当前或已发送完先前帧的错误-认可“节点可以访问总线。当允许节点访问总线时,MAC数据帧和远程帧可以起始,MAC错误帧和超载帧如上述规定被发送。
发送期间,发送数据帧和远程帧的每个节点均为总线主站,当许多节点一起开始发送时,此时只有发送具有最高优先权帧的节点变为总线主站。这种解决总线访问冲突的机制运用逐位仲裁规则。仲裁期间,每个发送器将发送位电平同总线上的电平进行比较。若相等,则节点可以继续发送。若送出一个隐性电平,而检测到的为显性电平,表明节点丢失仲裁,该节点自动退出发送。当送出一个显性电平,而检测到的为隐性电平,表明节点检测出位错误。 基于竞争的仲裁依靠标识符和其后的RTR位完成,标识符和其后的RTR位表明当前帧的优先权的大小,具有较低值的标识符具有较高的优先权,数据帧较之相同标识符的远程帧具有较高的优先权,通过比较RTR位数值。 除仅当总线释放时,可以启动发送这一原则外,还存在解决冲突的下列原则: ·在一个系统内,每条信息必须标以唯一的标识符。
·具有给定标识符和非零DLC的数据帧仅可由一个节点启动。
·远程帧仅可以全系统内确定的DLC发送,该数据长度码为对应数据帧的DLC。具有相同标识符和不同DLC远程帧的同时发送将导致不能解决的冲突。
五 错误检测
MAC子层具有下列错误检测类型:监测,填充规则检查,帧校验,CRC校验,和应答校验。 1错误类型
(1) 位错误
向总线送出一位的某个节点同时也在监视总线。当监视到的总线位数值与送出的为数值不同时,则在该位时刻检出一个位错误。例外情况是,在仲裁场的填充位流期间或应答间隙期间送出“隐性位“,而检测到一个显性位,不视为位错误。送出认可错误标志的发送器,而检测到”显性“位时,也不视为位错误。
(2) 填充错误
在应使用位填充方法进行编码的报文中,出现了第六个连续相同的位电平时,将检出一个填充错误。 (3) CRC错误
CRC序列是由发送器CRC计算结果组成的。接收器以与发送器相同的方法计算CRC。如计算结果与接收到的CRC序列不相同,则检出一个CRC错误。 (4) 形式错误
当固定形式的位场中出现一个或更多非法位时,则检出一个形式错误。 (5) 应答错误
在应答间隙期间,发送器未检测到“显性“位,则有它检出一个应答错误。 当检测到以上错误之一时,LLC子层即被告之,并且MAC子层启动发送错误标志。
2 错误界定规则
故障界定的目标是在检测节点的情况下维持数据发送系统的高有效性。因此,故障界定必须依靠下列措施可靠工作:判别暂时错误和永久故障以及定位并关闭故障节点。
任何节点均装有发送错误计数器和接收错误计数器。前一种寄存发送期间的错误数目,而后一种寄存接收期间的错误。若帧被正确送出或接收,计数器减少。在出现错误时,计数器值增加,其数量多于未出现错误情况下被减去
的数量。计数器增/减比例取决于总线上无效/有效帧可接收的比例。任何时间,错误计数器的数值反映先前出现干扰的相对频率。
在CAN总线中,任何一个节点根据其错误计数器数值可能处于下列三种故障状态之一: “错误激活”,“错误认可“,和”总线关闭“ “错误激活”节点:当发送错误计数器和接收错误计数器数值均小于或等于127时,节点为“错误激活”节点,一个“错误激活”节点可以正常参与总线通信,并在检测到错误时,发出一个活动错误标志。
“错误认可“节点:当发送错误计数器或接收错误计数器数值大于127时,节点为“错误认可”节点,一个“错误认可”节点可以正常参与总线通信,并在检测到错误时,发出一个认可错误标志。发送后,“错误认可”节点在开始进一步发送前将等待一段附加时间(暂停发送)
”总线关闭“:当节点的发送错误计数器数值大于255时,则监控器要求物理层置节点为“脱离总线“状态,“脱离总线“状态不允许对总线有任何影响。既不发送任何帧,也不应答。处于“脱离总线“状态的节点在检测到总线上出现128次11个连续的隐性位后,变成为两个错误计数器均为0的“错误激活”节点。
若系统启动期间,只有一个节点在线,并且该节点发送一些帧,它将得不到应答,检测到错误并重发帧。它可变为“错误认可“节点,但不会由此进入“脱离总线“状态。 六 位编码/解码
位时间定义为一位的持续时间,正常位时间实际上是正常位速率的倒数,即
正常位时间=1/正常位速率
与位时间有关的总线管理功能诸如同步状态,网络发送延迟补偿和采样点定位均由CAN协议集成电路的可编程位定时逻辑确定。
正常位时间可划分为四个不覆盖的时间段:同步段(SYNC-SEG),传播时间段(PROP-SEG),相位缓存段1(PHASE-SEG1),相位缓存段2(PHASE-SEG2),如下图 同步段
采样点
同步段时间段用于同步总线上的各种ECU(电子控制单元,即节点)。在此段内,等待一个跳变沿。
PROP-SEG时间段用于补偿网络内的物理延迟时间。这些延迟时间包括总线上的信号传播时间和ECU的内部延迟时间。
相位缓存段1和相位缓存段2用于补偿边沿相位误差。这两个时间段可通过重同步延长或缩短。
传播时间段 相位段1 相位段2 采样点是这样一个时点,在此点上,读总线电平,并被理解为相应位数值,采样点位于PHASE-SEG1的结束。
位时间按时间份额进行编程。时间份额是由振荡器派生出的固定时间单位。时间份额可具有长度: 时间份额=m* 时间份额最小值 其中:m为可编程的预分刻度数值m=1~32 组成位时间的各时间段长度分别为: SYNC-SEG 1个时间份额
PROP-SEG m个时间份额 m=1,2,3,4,5,6… PHASE-SEG1 m个时间份额 m=1,2,3,4,5,6… PHASE-SEG2 为PHASE-SEG1+信息处理时间 信息处理时间 <=2个时间份额
信息处理时间由采样点开始,保留用于计算子序列位电平的时间段. 位时间的时间份额总数必须编程为至少8~25 七 同步
同步包括硬同步和重同步两种形式,它们遵从下列规则: (1) 在一个位时间内仅允许一种同步;
(2) 只要在先前采样点上检测到的数值与总线数值,沿过后立即有一个边沿将
被用于同步;
(3) 总线空闲期间,当存在”隐性到显性的跳变沿即完成硬同步; (4) 所有满足规则1,2的其它”隐性到显性的跳变沿将被用于重同步. 1重同步和重同步跳转宽度
由于重同步的结果,PHASE-SEG1的长度可被延长或PHASE-SEG2可被缩短。延长和缩短相位段的总和具有重同步跳转宽度给定的上限。重同步跳转宽度应在1和4之间被编程。位填充的编码要求提供了帧期间总线单元重同步于位流的可能。可用于重同步的两个跳变之间的最大长度为29位时间。 2硬同步
硬同步后,位时间由每个位定时逻辑单元以SYNC-SEG重新启动,因此,强迫引起硬同步的边沿处于同步段内。 3 同步边沿的相位误差
同步边沿的相位误差e由相对于SYNC-SEG边沿的位置给定,以时间份额量度。
相位误差值定义如下:
e=0 若边沿位于SYNC-SEG内 e>0 若边沿位于采样点前
e<0 若边沿位于采样点前
当引起重同步的边沿相位误差幅值小于或等于重同步跳转宽度的编程数值时,重同步导致位时间的缩短或延长,使采样点处于正确位置。当相位误差幅值大于重同步跳转宽度,如果e>0,则PHASE-SEG1延长数值等于重同步跳转宽度; 如果e<0, 则PHASE-SEG2缩短数值等于重同步跳转宽度。
第二章 INTEL 82527 CAN控制器
82527是INTEL公司生产的一种CAN控制器。82527具有一个强功能的CPU接口,它可通过并行总线灵活的与各种微控制器接口,也可通过串行
接口(SPI)与无并行总线的微控制器接口。
82527串行通信控制器是一种按照CAN规程完成串行通信的高集成器件,它可借助微控制器的极小开销完成诸如报文的发送和接收,报文滤波,发送扫描和中断处理。
82527是支持CAN规程2.0B标准和扩展报文格式的器件,由于CAN规程2.0的向后兼容性,82527也完全支持CAN规程2.0A的标准报文。
82527可提供强功能的15个且每个8字节数据长度的报文目标。除最后一个报文目标外,每个报文目标可配置为发送或接收,最后一个报文目标仅为一个具有特定屏蔽设计接收缓存器,以允许选择不同的报文标识符组进行接收。
82527也具有实现报文滤波的全局屏蔽性能,这一性能允许用户全局性地屏蔽到来报文的任何标识符。可编程的全局屏蔽性能适用于标准和扩展的两种报文。
82527采用INTEL高可靠性的CHMOSIII5V工艺制造,使用44引脚PLCC封装,适用温度范围(-44℃~+125℃)。引脚功能如表 INTEL82527主要特性如下:
——支持CAN2.0B,包括标准的和扩展的报文; ——可程控全局屏蔽,包括标准和扩展信息标识符;
——具有15个信息缓冲区,每个信息长度为8个字节,包括14个TX/RX缓冲区,一个带程控屏蔽的RX缓冲区;
——可变CPU接口,包括8位总线(INTEL或Motorola方式),多路16位总线,8位非多路总线(同步/异步),串行接口(如SPI); ——位速率可程控,并有可程控时钟输出; ——可变中断结构;
——可对输出驱动器和输入比较器结构进行配置; 两个8位双向I/O口; ——44脚PLCC封装。 编号 名称 23 Vss1 20 Vss2 1 Vcc 18 19 27 29 8 24 22 21 Xtal1 Xtal2 Clkout Reset Cs Int(Vdd/2) Rxo Rx1 类型 功能描述 地 数字地 地 模拟比较器地 电源 电源 输入 内部晶体输入脚 或作为外部时钟输入 输出 内部晶体输出脚 输出 输入 输入 输出 输入 输入 可编程时钟输出 下降沿跳变引起硬件复位 片选 中断输出(开漏输出),Vdd/2为ISO物理层的供电电源,此引脚功能由CPU接口寄存器MUX位定义 MUX=1,引脚24为Vdd/2,引脚11为INT MUX=0,引脚24为INT CAN总线输入脚,RX0>RX1,读入隐性电平 RX1>RX0, 读入显性电平 CAN总线输入脚 26 Tx0 25 Tx1 4 Ad0/a0/icp 3 2 43 42 41 40 39 38 37 36 35 34 33 32 31 17 16 15 14 13 12 11 10 44 30 5 6 7 28 9
输出 串行数据到CAN总线推挽输出.隐性位期间TX0输出 为高,TX1为低;显性位期间,TX0为低,TX1为高 入/出-入 8位分时复用时,为地址/数据总线 Ad1/a1/cp 入/出-入 8位非分时复用时,为地址总线 Ad2/a2/csas 入/出-入 16位分时复用时,为地址/数据总线的低字节 Ad3/a3/ste 入/出-入 在串行接口方式下,AD0-3具有下列功能 Ad4/a4/mosI 入/出-入 AD0:ICP(idle clock polarity) 入/出-入 AD1:CP(clock phase) Ad6/a6/sclk 入/出-入 AD2:CSAS(chip select active state) 入/出-入 AD3:STE(sync transmit enable) Ad7/a7 Ad5/a5 AD4:MOSI(serial datainput) AD6:SCLK(serial clock input) Ad8/d0/p1.0 入/出-入 8位非分时复用时,为数据总线 Ad9/d1/p1.1 入/出-入 16位分时复用时,为地址/数据总线的高字节 Ad10/d2/p1.2 入/出-入 8位分时复用和串行方式时,为P1引脚 Ad11/d3/p1.3 入/出-入 在口写入9FH和AFH进行配置前,为弱上拉 Ad12/d4/p1.4 入/出-入 Ad13/d5/p1.5 入/出-入 Ad14/d6/p1.6 入/出-入 Ad15/d7/p1.7 入/出-入 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6/int P2.7/wrh Mode0 Mode1 Ale/as Rd E Wr R/w Ready Miso Dsack0 入/出 入/出 入/出 入/出 入/出 P2引脚 入/出 入/出-出 入/出-入 16位分时复用时,P2.7为WRH 输入 输入 入/入 输入 输入 输入 输入 输出 输出 输入 Mode0 mode1 0 0 8 位分时复用(INTEL) 0 1 0 复位时Wr=0,Rd=0时进入串行接口 0 16 位分时复用 (INTEL) 2 0 非INTEL 8 位分时复用 1 1 8 位非分时复用 ALE用于Intel方式,As 用于非Intel方式 RD用于Intel方式 E 用于非Intel方式 WR用于Intel方式 R/W用于非Intel方式 CPU对82527同步访问的输出端(开漏输出) 串行接口方式的串行数据输出端 CPU对82527同步访问的响应端
82527工作原理 1 信息体
CAN控制器有256个字节的RAM,含有15个信息体、控制寄存器、状态寄存器.每个信息体占有15个连续的字节,其基址都是以对低四位为0开始.每个信息体上面的16个字节单元则是控制寄存器或保留,此段RAM的最低16个字节含有控制和状态寄存器,这256个RAM可以用窗口寻址. 表 2-15为CAN控制器的地址映象表.
十六进制地址 寄存器 十六进制地址 寄存器 1FFF 1FF0-1FFE 1EEF 1EE0-1EEE 1EDF 1ED0-1EDE 1ECF 1EC0-1ECE 1EBF 1EB0-1EBE 1EAF 1EA0-1EAE 1E9F 1E90-1E9E 1E8F 1E80-1E8E 1E7F 1E70-1E7E —— 1E6F —— 信息体6 中断寄存器 信息体5 位定时寄存器0 信息体4 位定时寄存器1 信息体3 —— 信息体2 —— 信息体1 信息体15屏蔽寄存器 扩展屏蔽寄存器 标准屏蔽寄存器 —— 状态寄存器 控制寄存器 信息体15 1E60-1E6E —— 1E5F 信息体14 1E50-1E5E —— 1E4F 信息体13 1E40-1E4E —— 1E3F 信息体12 1E30-1E3E —— 1E2F 信息体11 1E20-1E2E —— 1E1F 信息体10 1E10-1E1E —— 1E0C-1E0F 信息体9 —— 信息体8 —— 信息体7 1E08-1E0B 1E06-1E07 1E02-1E05 1E01 1E00
CAN控制器有15个信息体,每个信息体占据15个RAM字节,见表2-16 十六进制地址 内容描述 1EX7~1EXE 数据位0~7 1EX6 1EX2~1EX5 1EX0~1EX1 信息配置 信息识别器0~3 信息控制0~1
信息体1~14可以配置为发送或接收信息体,而信息体15只能配置为接收信息体。信息体1~14只有单缓冲器,因此第二个信息到来之前,第一个在缓冲器内的信息必须被读出,否则,它就会被新的信息所覆盖。信息体15有两个交替缓冲区,因此它能存放两个数据,但第三个进来的数据就会覆盖第二个数据。最低位的信息体有最高的优先权,而与信息体的识别位无关。当多个信息体准备在总线上发送数据时,CAN控制器首先发送最低地址的信息体;
当多个信息体准备接收同一信息时,最低地址的信息体接收它。例如,当所有识别位被屏蔽时,信息体1接收所有的信息。CAN屏蔽寄存器用于进行信息的滤波,即接收特定的信息。软件可以对屏蔽寄存器进行编程,以要求信息体对某一类信息或全域信息进行接收。如果没有这种屏蔽寄存器,则信息体只能接收与它的识别位定义相同的信息,即只能接收一个信息。用屏蔽寄存器定义,就可以接收不同于它的识别位的信息。CAN控制器滤波是通过比较进入信息的识别位与内部定义的信息体的识别位。标准CAN全域屏蔽寄存器 有11位识别位 ,而扩展CAN全域屏蔽寄存器 有29位识别位。CAN控制器用屏蔽寄存器的内容与进来的信息的识别位的内容进行比较,先对信息体1~14进行检查,如果无匹配发生,再检查信息体15。由于信息体15的屏蔽是和全域屏蔽是“与”关系,所以任何被全域屏蔽的识别位也自动地被信息体15所屏蔽。
CAN控制器能接收远程信息,即请求数据传递,此时要满足信息的识别位与任何使能的发送信息体的识别位匹配,远程信息体识别位存于信息体中,可以覆盖任何被屏蔽的位。 2.8.3位定时器
CAN的信息发送是由位时间来控制的,它决定CAN的发送、接收速率,这一速率可以有位定时方程来确定。这一方程为:
CAN总线速率=Fosc/2*(BRP+1)*(3+TSEG1+TSEG2)
式中:Fosc——系统时钟频率,等于XTAL的振荡频率。
BRP——位定时器寄存器0中的BRP0~5的值,取值范围0~63
TSEG1——位定时器寄存器1中的TSEG1域中的值,取值范围2~15 TSEG2——位定时器寄存器1中的TSEG2域中的值,取值范围1~7 如图所示 SJW1 SJW0 BRP5 BRP4 BRP3 BRP2 BRP1 BRP0
位数 符号 7:6 5:0 功 能
SJW1:0 同步跳转宽度 BRP5:0 波特率预分频器 这些位用于定义一个时间单位的长度,用下面公式 tq=2*txtal*(BRP+1) 式中: txtal是XTAL引脚的输入时钟.例如: 在20MHZ主频时, txtal是50ns,若BRP=3 则tq=2*50*(3+1)=400ns
位定时器寄存器0 (CAN_BTIME0)
位定时器寄存器0定义了每个时间单位(tq)的长度和采样移动,以补偿重新同步的最大量.
SPL TSEG2.2 TSEG2.1 TSEG2.0 TSEG1.3 TSEG1.2 TSEG1.1 TSEG1.0
位数 7 符号 SPL 功 能 采样模式 这一位用于确定多少个采样来决定一个有效位的值 1=3个采样(用多数逻辑) 0=1个采样 6:4 TESG2 T时间段2 这个位域确定一个位时间内的采样时间长度 有效值为1~7,硬件对此值加1 T时间段1 这个位域确定一个位时间内的采样时间长度 有效值为2~15,硬件对此值加1 3:0 TESG1
位定时器寄存器1
位定时器寄存器1控制着总线采样时间和采样点数.在单采样方式中,总线采样一次,并认为数据有效; 在三采样方式中,总线采样三次,并认为大多数采样值有效. 单采样方式可以有较高的发送速率,但抗干扰能力差; 三采样方式抗干扰能力强,但速率较慢.
4CAN控制器的配置
1 CAN控制寄存器的编程(CAN_CON)
CAN控制寄存器(CAN_CON)用于控制写位定时寄存器允许、使能/非使能、全域中断源(包括错误、状态变化、单个信息体)和对CAN总线的控制. —— 位数 7 6 CCE 符号 —— CCE —— —— EIE SIE IE INIT 功 能 描 述 保留位,为兼容对这些位写零 配置变化使能 这一位用于控制是否允许软件对位定时寄存器进行写操作 0=允许写 1=禁止写 5:4 3 —— EIE 保留位,为兼容对这些位写零 测试电压 次位用于测试模式的测试电压(TE必须置为使能) 1=Vref(参考电压) 0=ANGND(地) 2 SIE 状态变化使能 这一位用于使能/非使能成功接收(RXOK)、成功发送(TXOK) 错误代码变化(LEC2:0)中断 1=使能状态变化中断 0=非使能状态变化中断 当SIE位置位时,CAN控制器每次接收一个有效信息时就产生接收(RXOK)中断请求。 1 IE 中断使能 这一位全域使能/非使能中断(包括错误、状态变化、单个信息体) 1=使能中断, 0=非使能中断 当IE位置位时,并且相应中断源使能位(CAN_CON中的SIE,CAN_MEGx_CON0中的TXIE或RXIE)也同时被置位时才能产生中断.如果IE位清零,中断请求会刷新CAN的中断悬挂寄存器,但不产生中断. 0 INIT 软件初始化使能 置此位时将使CAN总线与单片机系统隔离 1=软件初始化使能,0=软件初始化非使能 硬件复位后或软件初始化完成后应对此位清零,CAN外设等待一个总线闲置状态后(11个连续的隐性位)参与CAN总线通讯活动,通过软件置位可以停止CAN总线上的发送和接收,当错误计数达到256个时CAN外设也要对此位进行置位,以隔离CAN总线.当清零此位时,系统又恢复参与总线活动并将错误计数器清零.CAN外设要等待128个总线闲置状态后,才能恢复正常的总线活动.
2 信息体的配置
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务