《CAN总线2 ppt.ppt》由会员分享,可在线阅读,更多相关《CAN总线2 ppt.ppt(53页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第九讲 CAN总线技术(2)5.2.3 CAN总线的错误类型和界定n错误类型:错误类型:n位错误位错误n填充错误填充错误nCRC错误错误n形式错误形式错误n应答错误应答错误 5.2.3 CAN总线的错误类型和界定n位错误位错误(Bit Error)n n向总线送出一位的某个单元同时也在监视总向总线送出一位的某个单元同时也在监视总向总线送出一位的某个单元同时也在监视总向总线送出一位的某个单元同时也在监视总线。当监视到的总线位数值与送出的位数值线。当监视到的总线位数值与送出的位数值线。当监视到的总线位数值与送出的位数值线。当监视到的总线位数值与送出的位数值不同时,则在该位时刻检出一个位错误。不同时
2、,则在该位时刻检出一个位错误。不同时,则在该位时刻检出一个位错误。不同时,则在该位时刻检出一个位错误。例例例例外:仲裁场的填充位流期间、应答期间、认外:仲裁场的填充位流期间、应答期间、认外:仲裁场的填充位流期间、应答期间、认外:仲裁场的填充位流期间、应答期间、认可错误标志。可错误标志。可错误标志。可错误标志。5.2.3 CAN总线的错误类型和界定n填充错误填充错误(Stuff Error)n在应使用位填充方法进行编码的报在应使用位填充方法进行编码的报文中,出现了第文中,出现了第6个连续相同的位个连续相同的位电平时,将检出一个填充错误。电平时,将检出一个填充错误。5.2.3 CAN总线的错误类型
3、和界定nCRC错误错误(CRC Error)nCRC序列是由发送器完成的序列是由发送器完成的CRC计算结果组计算结果组成的。接收器以与发送器相同的方法计算成的。接收器以与发送器相同的方法计算CRC。如果计算结果与接收到的。如果计算结果与接收到的CRC序列不序列不相同,则检出一个相同,则检出一个CRC错误。错误。5.2.3 CAN总线的错误类型和界定n形式错误形式错误(Form Error)n当固定形式的位场中出现一个或更多非法位当固定形式的位场中出现一个或更多非法位时,则检出一个形式错误。时,则检出一个形式错误。5.2.3 CAN总线的错误类型和界定n应答错误应答错误(Acknowledgem
4、ent Error)n在应答间隙期间,发送器未检测到在应答间隙期间,发送器未检测到“显性显性”位,则由它检出一个应答错误。位,则由它检出一个应答错误。5.2.3 CAN总线的错误类型和界定n位错误、填充错误、形式错误或应答错误位错误、填充错误、形式错误或应答错误由检测出的站在下一位开始时发送错误标由检测出的站在下一位开始时发送错误标志。志。nCRC错误由检测出的站在应答界定符后面错误由检测出的站在应答界定符后面那一位开始发送,除非用于其它错误状态那一位开始发送,除非用于其它错误状态的错误标志已经开始发送。的错误标志已经开始发送。5.2.3 CAN总线的错误类型和界定n在在CAN总线中,就故障界
5、定而言,一个单总线中,就故障界定而言,一个单元(节点)可能处于三种状态:元(节点)可能处于三种状态:n“错误激活错误激活”(“Error Active”)n“错误认可错误认可”(“Error Passive”)n“总线脱离总线脱离”(“Bus off”)5.2.3 CAN总线的错误类型和界定三种错误状态转换三种错误状态转换5.2.3 CAN总线的错误类型和界定n总线单元中的两种计数总线单元中的两种计数:n发送错误计数发送错误计数n接收错误计数接收错误计数5.2.3 CAN总线的错误类型和界定n计数规则计数规则:n接收器检出错误时,接收错误计数加接收器检出错误时,接收错误计数加1。n接收器在送出
6、错误标志后的第一位检出一个接收器在送出错误标志后的第一位检出一个“显性显性”位时,接收错误计数加位时,接收错误计数加8。5.2.3 CAN总线的错误类型和界定n计数规则计数规则:n发送器送出一个错误标志时,发送错误计数发送器送出一个错误标志时,发送错误计数加加8。有两种例外情况,发送错误计数不改变。有两种例外情况,发送错误计数不改变。n一个是如果发送器为一个是如果发送器为“错误认可错误认可”,因未检测到,因未检测到“显性显性”应答而检测到一个应答错误,并且在送应答而检测到一个应答错误,并且在送出其认可错误标志时,未检测到出其认可错误标志时,未检测到“显性显性”位。位。n另一个是如果由于仲裁期间
7、(其填充位处于另一个是如果由于仲裁期间(其填充位处于RTR位前)发生的填充错误,发送器送出一个错误标位前)发生的填充错误,发送器送出一个错误标志,本应是志,本应是“隐性隐性”的,而且确实发送的是的,而且确实发送的是“隐隐性性”的,但监视到的为的,但监视到的为“显性显性”的。的。5.2.3 CAN总线的错误类型和界定n计数规则计数规则:n如果发送器送出一个激活错误标志或超载标如果发送器送出一个激活错误标志或超载标志时,发送器检测到位错误,则发送错误计志时,发送器检测到位错误,则发送错误计数加数加8。n如果接收器送出一个激活错误标志或超载标如果接收器送出一个激活错误标志或超载标志时,接收器检测到位
8、错误,则接收错误计志时,接收器检测到位错误,则接收错误计数加数加8。5.2.3 CAN总线的错误类型和界定n计数规则计数规则:n在送出激活错误标志、认可错误标志或超载在送出激活错误标志、认可错误标志或超载标志后,任何节点都容许多至标志后,任何节点都容许多至7个连续的个连续的“显显性性”位。在检测到第位。在检测到第14个连续的个连续的“显性显性”位位后,或紧随认可错误标志检测到第后,或紧随认可错误标志检测到第8个连续的个连续的“显性显性”位后,以及附加的位后,以及附加的8个连续的个连续的“显性显性”位的每个序列后,每个发送器的发送错误位的每个序列后,每个发送器的发送错误计数都加计数都加8,并且每
9、个接收器的接收错误计数,并且每个接收器的接收错误计数也都加也都加8。5.2.3 CAN总线的错误类型和界定n计数规则计数规则:n报文成功发送后,则发送错误计数减报文成功发送后,则发送错误计数减1,除非,除非它已经为它已经为0。n报文成功接收后,则接收错误计数减报文成功接收后,则接收错误计数减1,如果,如果它处于它处于1和和127之间。若接收错误计数为之间。若接收错误计数为0,则仍保留则仍保留0,而若它大于,而若它大于127,它将其置为,它将其置为119和和127之间的某个数值。之间的某个数值。5.2.3 CAN总线的错误类型和界定n计数规则计数规则:n发送错误计数等于或大于发送错误计数等于或大
10、于128或接收错误计或接收错误计数等于或大于数等于或大于128时,节点为时,节点为“错误认可错误认可”。导致节点变为导致节点变为“错误认可错误认可”的错误状态使节的错误状态使节点送出一个激活错误标志。点送出一个激活错误标志。n发送错误计数大于或等于发送错误计数大于或等于256时,节点为时,节点为“总线脱离总线脱离”。5.2.3 CAN总线的错误类型和界定n计数规则计数规则:n发送错误计数和接收错误计数两者均小于或发送错误计数和接收错误计数两者均小于或等于等于127时,时,“错误认可错误认可”节点再次变为节点再次变为“错误激活错误激活”节点。节点。n在检测到总线上在检测到总线上11个连续的个连续
11、的“隐性隐性”位发生位发生128次后,次后,“总线脱离总线脱离”节点将变为其两个节点将变为其两个错误计数器均置为错误计数器均置为0的的“错误激活错误激活”节点(不节点(不再是再是“总线脱离总线脱离”)。)。5.2.3 CAN总线的错误类型和界定n当错误计数值大于当错误计数值大于96时,说明总线被严时,说明总线被严重干扰。它提供测试此状态的一种手段。重干扰。它提供测试此状态的一种手段。n若系统启动期间,仅有一个节点在线,此若系统启动期间,仅有一个节点在线,此节点发送报文后,将得不到应答,检出错节点发送报文后,将得不到应答,检出错误并重复该报文。它可以变为误并重复该报文。它可以变为“错误认可错误认
12、可”,但不会因此,但不会因此“总线脱离总线脱离”。5.2.4 位定时与同步位定时与同步n位定时的作用:位定时的作用:n(1)确定位时间,以便确定波特率,从而确定总线)确定位时间,以便确定波特率,从而确定总线的网络速度;或在给定总线的网络速度的情况下确定的网络速度;或在给定总线的网络速度的情况下确定位时间。位时间。n(2)确定)确定1位的各个组成部分位的各个组成部分同步段(同步段(SY)、传)、传播段(播段(PR)、相位缓冲段)、相位缓冲段1(PS1)和相位缓冲段)和相位缓冲段2(PS2)的时间长度,其中同步段用于硬同步,位)的时间长度,其中同步段用于硬同步,位于相位缓冲段于相位缓冲段1终点的采
13、样点用于保证正确地读取总终点的采样点用于保证正确地读取总线电平。线电平。n(3)确定重同步跳转宽度以用于重同步。)确定重同步跳转宽度以用于重同步。5.2.4 位定时与同步位定时与同步n一个节点应既能在位时间的采样点正确地一个节点应既能在位时间的采样点正确地读取总线电平,也能检测来自总线的沿以读取总线电平,也能检测来自总线的沿以进行硬同步或重同步。进行硬同步或重同步。n在在CAN技术规范的时间份额的表达式中,技术规范的时间份额的表达式中,对于常用的独立对于常用的独立CAN控制器控制器SJA1000和和P8xC591中的中的CAN控制器,时间份额控制器,时间份额tq为系统时钟周期为系统时钟周期ts
14、cl;预引比例因子;预引比例因子m为为可编程的,其值取决于总线定时寄存器可编程的,其值取决于总线定时寄存器0(BTR0)的内容;最小时间份额为振)的内容;最小时间份额为振荡器周期荡器周期tCLK的的2倍,即倍,即2tCLK。5.2.4 位定时与同步位定时与同步nCAN 总线中,同步包括硬同步和重同步总线中,同步包括硬同步和重同步两种形式。同步与位定时密切相关。同步两种形式。同步与位定时密切相关。同步也是由节点自身完成的。节点将检测到的也是由节点自身完成的。节点将检测到的来自总线的沿与其自身的位定时相比较,来自总线的沿与其自身的位定时相比较,并通过硬同步或重同步适配(调整)位定并通过硬同步或重同
15、步适配(调整)位定时。时。5.2.4 位定时与同步位定时与同步n硬同步硬同步 n所谓硬同步,就是由节点检测到的来自总线的沿强所谓硬同步,就是由节点检测到的来自总线的沿强迫节点立即确定出其内部位时间的起始位置(同步迫节点立即确定出其内部位时间的起始位置(同步段的起始时刻)。硬同步的结果是,沿的到来时刻段的起始时刻)。硬同步的结果是,沿的到来时刻的前一时刻(以时间份额的前一时刻(以时间份额tq量度)即成为节点内部量度)即成为节点内部位时间同步段的起始时刻,并使内部位时间从同步位时间同步段的起始时刻,并使内部位时间从同步段重新开始。段重新开始。n这就是规范中所说的这就是规范中所说的“硬同步强迫引起硬
16、同步的沿硬同步强迫引起硬同步的沿处于重新开始的位时间同步段之内处于重新开始的位时间同步段之内”。硬同步一般。硬同步一般用于报文开始,即总线上的各个节点的内部位时间用于报文开始,即总线上的各个节点的内部位时间的起始位置(同步段)是由来自总线的一个报文帧的起始位置(同步段)是由来自总线的一个报文帧的帧起始的前沿决定的。的帧起始的前沿决定的。5.2.4 位定时与同步位定时与同步5.2.4 位定时与同步位定时与同步n重同步重同步 n所谓重同步,就是节点根据沿相位误差的大小所谓重同步,就是节点根据沿相位误差的大小调整其内部位时间。重同步的结果是,节点内调整其内部位时间。重同步的结果是,节点内部位时间与来
17、自总线的报文位流的位时间接近部位时间与来自总线的报文位流的位时间接近或相等,从而使节点能够正确地接收报文。重或相等,从而使节点能够正确地接收报文。重同步一般用于报文位流发送期间,以补偿各个同步一般用于报文位流发送期间,以补偿各个节点振荡器频率的不一致。节点振荡器频率的不一致。n沿相位误差由来自总线的沿相对于节点内部位沿相位误差由来自总线的沿相对于节点内部位时间同步段的位置给定,以时间份额量度。时间同步段的位置给定,以时间份额量度。5.2.4 位定时与同步位定时与同步5.2.4 位定时与同步位定时与同步n调整同步的规则调整同步的规则n(1)1个位中只进行一次同步调整。n(2)只有当上次采样点的总
18、线值和边沿后的总线值不同时,该边沿才能用于调整同步。n(3)在总线空闲且存在隐性电平到显性电平的边沿时,则一定要进行硬件同步。n(4)在总线非空闲时检测到的隐性电平到显性电平的边沿如果满足条件(1)和(2),将进行再同步。但还要满足下面条件。n(5)发送单元观测到自身输出的显性电平有延迟时不进行再同步。n(6)发送单元在帧起始到仲裁段有多个单元同时发送的情况下,对延迟边沿不进行再同步。5.3 CAN通信控制器SJA1000 5.3.1 SJA1000简介nSJA1000是Philips公司1997年推出的一种CAN控制器;n工作目的是实现CAN总线的物理层和数据链路层;n支持CAN2.0A协议
19、(BasicCAN)和CAN2.0B协议(PeliCAN)。5.3.1 SJA1000简介nSJA1000的特点n支持CAN2.0A协议(BasicCAN)和CAN2.0B协议(PeliCAN);n扩展的接收缓冲器64 字节先进先出FIFOn位速率可达1Mbits/sn可读/写访问的错误计数器n可编程的错误报警限制n最近一次错误代码寄存器n对每一个CAN 总线错误的中断n具体控制位控制的仲裁丢失中断5.3.1 SJA1000简介nSJA1000的特点n单次发送(无重发)n只听模式(无确认、无活动)的出错标志n支持热插拔,软件位速率检测n验收滤波器扩展(4 字节代码、4 字节屏蔽)n自身信息接收
20、(自接收请求)n24MHz 时钟频率n对不同微处理器的接口n可编程的CAN 输出驱动器配置n增强的温度适应-40-+1255.3.2 SJA1000的功能框图与引脚说明SJA1000的功能框图5.3.2 SJA10005.3.2 SJA1000的功能框图与的功能框图与引脚说明引脚说明n接口管理逻辑IML:接口管理逻辑解释来自CPU 的命令,控制CAN 寄存器的寻址,向主控制器提供中断信息和状态信息。n发送缓冲器TXB:发送缓冲器是CPU 和BSP(位流处理器)之间的接口,能够存储发送到CAN 网络上的完整信息,缓冲器长13 Bytes,由CPU 写入,BSP 读出。n接收缓冲器RXB RXFI
21、FO:接收缓冲器是验收滤波器和CPU 之间的接口,用来储存从CAN 总线上接收的报文。接收缓冲器(RXB,13B)作为接收FIFO(RXFIFO,64Bytes)的一个窗口,可被CPU 访问。5.3.2 SJA10005.3.2 SJA1000的功能框图与的功能框图与引脚说明引脚说明nCPU 在此FIFO 的支持下可以在处理信息的时候接收其它信息n验收滤波器ACF:验收滤波器把它其中的数据和接收的识别码的内容相比较,以决定是否接收信息。在纯粹的接收测试中,所有的信息都保存在RXFIFO 中。n位流处理器BSP:位流处理器是一个在发送缓冲器TXB 和CAN 总线之间控制数据流的程序装置。它还在C
22、AN 总线上执行错误检测、仲裁、填充和错误处理。5.3.2 SJA10005.3.2 SJA1000的功能框图与的功能框图与引脚说明引脚说明n位时序逻辑BTL:位时序逻辑监视串口的CAN 总线,并处理与总线有关的位时序。它在信息开头,由隐性到显性的变换同步CAN 总线位流(硬同步),接收信息时再次同步下一次传送(软同步)。BTL 还提供了可编程的时间段来补偿传播延迟时间、相位转换(例如,由于振荡漂移)和定义采样点和每一位的采样次数。n错误管理逻辑EML:EML负责传送层模块的错误界定。它接收BSP 的出错报告,并将错误统计数字通知BSP 和IML。5.3.2 SJA10005.3.2 SJA1
23、000的功能框图与的功能框图与引脚说明引脚说明n 引脚说明5.3.2 SJA10005.3.2 SJA1000的功能框图与的功能框图与引脚说明引脚说明n引脚说明nAD7-AD0:多路地址/数据总线。nALE/AS:ALE输入信号(Intel模式),AS输入信号(Motorola模式)。n/CS:片选,输入低电平允许访问SJA1000。n/RD/E:微控制器的/RD信号(Intel模式)或E使能信号(Motorola模式)。n/WR:微控制器的/WR信号(Intel模式)或R/(/WR)信号(Motorola模式)。5.3.2 SJA10005.3.2 SJA1000的功能框图与的功能框图与引脚
24、说明引脚说明n引脚说明nCLKOUT:SJA1000产生的提供给微控制器的时钟输出信号。时钟信号来源于内部振荡器,且通过编程驱动时钟控制寄存器的时钟关闭位可禁止该引脚。nVSS1:接地nXTAL1:输入到振荡器放大电路外部振荡信号由此输入。nXTAL2:振荡放大电路输出使用外部振荡信号时左开路输出。nMODE:模式选择输入1=Intel模式;0=Motorola模式。nVDD3:输出驱动的5V电压源。5.3.2 SJA10005.3.2 SJA1000的功能框图与的功能框图与引脚说明引脚说明n引脚说明nTX0:从CAN输出驱动器0输出到物理线路上。nTX1:从CAN输出驱动器1输出到物理线路上
25、。nVSS3:输出驱动器接地。n/INT:中断输出,用于中断微控制器。/INT在内部中断寄存器各位都被置位时激活;此引脚上的低电平可以把IC从睡眠模式中激活。n/RST:复位输入用于复位CAN接口,低电平有效。nVDD2:输入比较器的5V电压源。5.3.2 SJA10005.3.2 SJA1000的功能框图与的功能框图与引脚说明引脚说明n引脚说明nRX0 RX1:从物理总线输入到SJA1000的输入比较器的输入端;显性位时将会唤醒SJA1000的睡眠模式;如果RX1比RX0的电平高就读出位显性位,反之读出为隐性位;如果时钟分频寄存器的CBP位被置位,就旁路CAN输入比较器以减少内部延时(此时连
26、有外部收发电路)。这种情况下只有RX0是激活的;隐性位为1,而显性位认为0。nVSS2:输入比较器的接地端nVDD1:逻辑电路的5V电压源5.3.3 SJA1000两种工作模式nBasicCAN:目的是保证SJA1000与CAN总线早期产品PCA82C200的软件兼容。此模式下能够实现CAN2.0A的协议标准。nPeliCAN:支持CAN2.0B的协议标准,并增加一些新功能。5.3.4 SJA1000 Basic CanBasic Can相关寄存器相关寄存器n(1)控制寄存器(CR)(地址0、可读写)n用于改变CAN控制器的状态n57位:保留n4位:超载中断使能n3位:错误中断使能n2位:发送
27、中断使能n1位:接收中断使能(使能全为1有效)n0位:复位请求。1常态:检测到复位请求后,进入复位;0非常态:此位接到一个下降沿后回到工作模式5.3.4 SJA1000 Basic CanBasic Can相关寄存器相关寄存器n(2)命令寄存器(CMR)(地址1、只写)n初始化CAN控制器传输层的动作n57位:保留n4位:睡眠(1睡眠,0唤醒)n3位:清除超载状态(1清除,0无作用)n2位:释放接收缓冲器(1释放,0无作用)n1位:夭折发送(1忽略发送请求,0无作用)n0位:发送请求(1报文被发送,0无作用)5.3.4 SJA1000 Basic CanBasic Can相关寄存器相关寄存器n
28、(3)状态寄存器(SR)(地址2、只读)n反应CAN控制器的状态n7位:总线状态(1关闭,0开启)6位:出错状态(1出错,0正常)n5位:发送状态(1发送,0空闲)4位:发送状态(1发送,0空闲)n3位:发送完毕状态(1完成,0未完成)n2位:发送缓冲器状态(1释放,0锁定)n1位:数据超载状态(1超载,0未超载)n0位:接收缓冲状态(1满,0空)5.3.4 SJA1000 Basic CanBasic Can相关寄存器相关寄存器n(4)中断寄存器(IR)(地址3、只读)n反应CAN控制器的中断原因n7 5位:保留n4位:唤醒中断(1退出睡眠模式,0微处理器任何读访问)n3位:数据超载中断(1
29、数据超载,0微处理器任何读访问)n2位:错误中断(1错误发生,0微处理器任何读访问)n1位:发送中断(1发送缓冲器从低到高的变化,0微处理器任何读访问)n0位:接收中断(1接收缓冲器不空,0微处理器任何读访问)5.3.4 SJA1000 Basic CanBasic Can相关寄存器相关寄存器n(5)验收代码寄存器(ACR)(地址4、复位时可读写)n(6)验收屏蔽寄存器(AMR)(地址5、复位时可读写)n数据接收条件:(ID.10ID3)(AC.7AC.0)V(AM.7AM.0)=11111111ACRAMRID5.3.4 SJA1000 Basic CanBasic Can相关寄存器相关寄存
30、器n(7)总线时序寄存器0(BTR0)(地址6、复位时可读写)n确定波特率预引比例因子(BRP)和同步跳转宽度(SJW)的值。n76位:同步跳转宽度位域SJWntsjw=tclk(2BTR0.7+BTR0.6+1)tsjw:同步跳转宽度。定义了一个周期可以被一次重新同步缩短或延长的时钟周期最大数。tclk:外晶振的振荡周期。n50位:波特率预置位域BRP,定义CAN的系统时钟tsclntscl=2tclk(BTR0.5 BTR0.0+1)5.3.4 SJA1000 Basic CanBasic Can相关寄存器相关寄存器n(8)总线时序寄存器1(BTR1)(地址7、复位时可读写)n确定位时间的
31、长度、采样点的位置和在每个采样点欲获取的采样数目。如果复位模式有效,这个寄存器可以被访问(读/写)。n7位:采样位1:3次采样0:1次采样n64位:时间段2(TSEG2)n30位:时间段1(TSEG1)ntTSEG1=tscl(TSEG1+1)ntTSEG2=tscl(TSEG2+1)5.3.4 SJA1000 Basic CanBasic Can相关寄存器相关寄存器n(8)总线时序寄存器1(BTR1)(地址7、复位时可读写)5.3.4 SJA1000 Basic CanBasic Can相关寄存器相关寄存器n(9)输出控制寄存器(OCR)(地址8、复位时可读写)n建立不同的输出驱动配置。输出
32、控制寄存器允许在软件控制下建立输出驱动器的不同配置。如果复位模式有效,此寄存器可被访问(读/写)。在BasicCAN模式中呈现的是FFH。5.3.4 SJA1000 Basic CanBasic Can相关寄存器相关寄存器n(10)时钟分频寄存器(CDR)(地址31、可读写)n7位:在BasicCAN模式与PeliCAN模式之间进行选择;n6位(CBP):接收比较器旁路;n5位(RXINTEN):专用的接收中断脉冲在TX1上;n4位:0;n3位:允许使CLKOUT引脚无效;n20位:控制用于微控制器的CLKOUT频率。5.3.4 SJA1000 Basic CanBasic Can相关寄存器相
33、关寄存器n(11)发送缓冲区描述符(地址10 11、工作时可读写)n地址10:ID10ID3n地址11:ID2ID0 RTR(远程帧标识符)DLC.30(数据长度)n(12)发送缓冲区数据(地址1219、工作时可读写)n(13)接收缓冲区(地址2029、工作时可读写)思考题1:nCAN现场总线的发送器和接收器均使用SJA1000,采用CAN2.0A规范,发送器发送的4个报文的ID分别为:(1)11001100001;(2)11001101001;(3)11001000001;(4)11001001001。欲使接收器只接收报文(1)、(3),应如何设置接收器SJA1000的ACR和AMR?思考题2:n(1)CAN节点使用SJA1000,振荡器频率为16MHz,若使波特率为1Mbps,如何设置SJA1000的BTR0和BTR1?n(2)使用晶振频率为16MHz的独立CAN控制器 SJA1000,若 BTR0=01Hex,BTR1=1CHex,则由其所决定的位速率是多少?
限制150内