CAN总线应用分析

上传人:feng****ing 文档编号:219752398 上传时间:2023-06-27 格式:DOCX 页数:13 大小:250.19KB
收藏 版权申诉 举报 下载
CAN总线应用分析_第1页
第1页 / 共13页
CAN总线应用分析_第2页
第2页 / 共13页
CAN总线应用分析_第3页
第3页 / 共13页
资源描述:

《CAN总线应用分析》由会员分享,可在线阅读,更多相关《CAN总线应用分析(13页珍藏版)》请在装配图网上搜索。

1、CAN 总线应用分析控制局域网CAN属于现场总线范围,是德国BOSCH公司从20世纪80年代初为解决现 代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议 , 它是 种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维,通信速度可达1 M bit/ s。1 系统组成CAN总线用户接口简单,编程方便。CAN总线属于现场总线的范畴,CAN总线系统的图 1 系统总体结构一般组成模式如图1所示:网络拓扑结构采用总线式结构。这种网络结构 结构简单、成本低,并且采用无源抽头连接,系统 可靠性高。通过 CAN 总线连接各个网络节点,形成 多主机控制器局域网(CAN)。信息的传输采用CAN

2、 通信协议,通过 CAN 控制器来完成。各网络节点一 般为带有微控制器的智能节点完成现场的数据采集和基于CAN协议的数据传输,节点可以 使用带有在片CAN控制器的微控制器,或选用一般的微控制器加上独立的CAN控制器来完 成节点功能。传输介质可采用双绞线、同轴电缆或光纤。如果需要进一步提高系统的抗干扰能力,还可以在控制器和传输介质之间加接光电隔离,电源采用DC-DC变换器等措施。这样可方便构成实时分布式测控系统。2 CAN 总线的物理接口采用CAN收发器PCA82C250作为CAN控制器和物理总线之间的接口,提供向总线的差 动发送能力和对CAN控制器的差动接收能力,如图2所示。CAN控制雋SJA

3、1000TX0RX0F屮二 JOctiOU图 2 CAN 总线物理接口图一般在驱动芯片和 CAN 控制器之间加入光电耦合 器, 增加抗干扰能力。 CAN 总线的速度将由光电耦合器 的速度决定。比如:用4N27光耦,因为它的响应速度 比较慢,CAN网络的位速度只能达到几十Kbit/s。如果 采用 6N137 高速光电耦合器, CAN 网络速度可以达到 和电阻网络驱动时的速度一样。另外,物理层的设计 要注意电缆的终端阻抗匹配,这直接影响了 CAN总线 能否正常工作和网络性能,一般在CAN总线两端并联 120Q的电阻。3 应用软件设计CAN控制器其内部硬件实现了 CAN总线物理层和数据链路层的所有协

4、议内容,有关讯功能。CAN发送数据帧流程图如图3所示。此外,CAN开始还可以发送远程帧,作为某数据接收器的节点,通过发送远程帧可以启动其资源节点传送它们各自的数据。与数据帧最大的区别是,远程帧没有数据域。CAN发送远程帧流程图如图4所示。CAN控制器的收发功能均可借助其中断服务执行。N启动发送VY读入标识码I初始化SJA1000开中断是否发送远程帧?CAN中断服务程序流程图如图5所示。中断入口出错中断?YN重新发送数据Y_发送数据N f 接收数据判断中断类型?是否为远程帧?转存数据结束图4 CAN发送远程帧流程图释放接收缓冲器中断返回图5 CAN中断服务程序流程图4 CAN 实例分析4.1 C

5、AN 的自发自收CAN 的自发自收是由单个节点完成的,在软件设计时首先应对 CAN 控制器(如 SJA1000)初始化正确,这是CAN通讯成功的前提,在CAN的自发自收程序中,初始化CAN 控制器时,应将模式寄存器(MODE)设为自检测模式,验收屏蔽寄存器的值设为无关(即 Oxff)。在发送数据时,当要发送的数据送入发送缓冲区之后,启动发送,此时应将命令寄 存器(CMR)的值设为0x10,这点尤其需要注意。4.1.1 CAN控制器的初始化CAN控制器SJA1OOO的初始化包括:模式寄存器MODE、总线时序定时器BTR0和 BTR1、时钟分频寄存器CDR、输出控制寄存器OCR、验收滤波器、中断使

6、能寄存器IER、 接收缓冲器、错误计数器以及错误代码捕捉寄存器ECC的设置。其中接收缓冲器、错误计 数器以及错误代码捕捉寄存器ECC的值一般都设为0。模式寄存器模式寄存器(MODE)的内容用来改变CAN控制器的行为方式,位于CAN地址0, 可由CPU设置或复位。保留位的值为逻辑0。模式寄存器各位的功能说明如表1所示。表1模式寄存器各位的功能说明(CAN地址0)位名称值功能描述MOD.7 5保留MOD.4睡眠模式1睡眠:没有CAN中断待决和总线活动时,CAN控制器进入睡眠模式0唤醒:从睡眠状态唤醒进入正常工作状态MOD.3验收滤波器1单:选择单向验收滤波器(32位长)起作用模式0双:选择双向滤波

7、器(每个16位长)起作用MOD.2自检测模式1自检测:进行一个的测试,即使没有接收后的应答,也会成功发送0正常模式:成功发送时必须应答信号MOD.1只听模式1只听:即使成功接收报文,CAN控制器也不向总线发应答信号0正常模式MOD.0复位模式1复位:检测到该位被置1,就中止当前报文的发送/接收,进入复位模式0正常:该位出现1到0的转变,CAN控制器返回操作模式注:只有先进入复位模式位,才可以写MOD.1MOD.3。总线时序定时器总线时序定时器包括BTR0和BTR1,分别位于CAN地址6和CAN地址7。BTR0定义 了波特率预置器(BRP)和同步跳转宽度(SJW)的值;BTR1定义了一个位周期的

8、长度、采 样点的位置和在每个采样点的采样数目。复位模式有效时这个寄存器可以被访问。如果选 择的是PeliCAN模式,此寄存器在操作模式中是只读的。在BasicCAN模式中总是“FFH”。BTRO和BTR1各位的说明见表2和3所示。表 2 BTR0 各位的说明( CAN 地址 6 )BIT 7BIT 6BIT 5BIT 4BIT 3BIT 2BIT 1SJW.1SJW.0BRP.5BRP.4BRP.3BRP.2BRP.1BIT 0BRP.0CAN 系统时钟:t 二 2tX (32 X BRP.5 +16 x BRP.4 + 8 x BRP.3 + 4 x BRP.2 + 2 x BRP.1 +

9、BRP.0 +1)SCL CLK式中:t二X的振荡周期=l/fCLK TALX T A L同步跳转宽度 t 定义了一个位周期可以被一次重新同步缩短或延长的时钟周期的 SJW最大数目:t 二t x(2xSJW.1 + SJW.0 +1)SJW SCL表 3 BTR1 各位的说明( CAN 地址 7 )BIT 7BIT 6BIT 5BIT 4BIT 3BIT 2BIT 1SAMTSEG2.2TSEG2.1TSEG2.0TSEG1.3TSEG1.2TSEG1.1BIT 0TSEG1.0采样位SAM为1时,总线采样三次,建议在低/中速总线(A和B级)上使用,这对 过滤总线上的毛刺波是有效的;当SAM位

10、为0时,总线采样一次,建议使用在高速总线上(SAG C 级)。时间段1 (TSEG1)和时间段2(TSEG2)决定了每一位的时钟周期数目和采样点的 位置:t 二 t x (8 x TSEG1.3 + 4 x TSEG1.2 + 2 x TSEG1.0 +1)TSEG1 SCLt 二 t x (4 x TSEG 2.2 + 2 x TSEG 2.1 + TSEG 2.0 +1)TSEG 2 SCL一般将BTR0和BTR1分别设为C9和A3。时钟分频寄存器时钟分频寄存器(CDR)控制输出给微控制器的CLKOUT频率,它可以使CLKOUT引脚失效。另外,它还控制着 TX1 上的专用接收中断脉冲、接收

11、比较器旁路和 BasicCAN模式和PelicCAN模式的选择。时钟分频寄存器(CDR)各位的说明见表4所示。BIT 7BIT 6BIT 5BIT 4BIT 3BIT 2BIT 1CAN模式CBPRXINTENXCLOCK OFFCD.2CD.1表4时钟分频器各位的说明(CAN地址31)BIT 0CD.0位CDR.7定义CAN模式。如果CDR.7是0, CAN控制器工作于BasicCAN模式,否则CAN控制器工作于PelicCAN模式。只有在复位模式中可以写此位。置位CDR.6 (CBP)可以旁路CAN输入比较器,但只能在复位模式中设置。如果CBP 被置位,只有RX0起作用,没有被使用的RX1

12、输入应被连接到一个确定的电平(例如:VS)。位 RXINTEN 允许 TX1 输出用来做专用接收中断输出。CDR.4 不能写,读值总为 0。始终关闭位(CLOCK OFF)置1使SJA1000的外部CLKOUT引脚失效,只在复位模 式中才可访问。CD.200001111CD.100110011CD.001010101时钟频率f /2 OSC-1f /4OSC1f /6OSC1f /8OSC1f /10OSC 1f /12OSC1f /14OSC1f-OSC表 5 CLKOUT 频率选择注:f是外部振荡器(XTAL)频率。CD.2CD.0可以随意访问,是用来定义外部CLKOUT引脚上的频率的。可

13、选频率 见表 5所示。OSC 输出控制寄存器输出控制寄存器(OCR)(见表6)允许由软件控制建立不同输出驱动的配置。在复位模式中此寄存器可被访问。在PeliCAN操作模式中,此寄存器在是只读的。在BasicCAN模式中总是“FFH”表 6 输出控制寄存器各位的说明( CAN 地址 8 )BIT 7BIT 6BIT 5BIT 4BIT 3OCTP1OCTN1OCPOL1OCTP0OCTN0BIT 2BIT 1BIT 0OCPOL0 OCMODE1 OCMODE0输出控制寄存器OCMODE位的设置见表7所示。表 7 OCMODE 各位的说明OCMODE1OCMODE0说明00双向输出模式01测试输

14、出模式10正常输出模式11时钟输出模式一般将输出控制寄存器(OCR)的值设为“ 0xaa”验收滤波器 在验收滤波器的作用下,只有当接收报文中的标识位和验收滤波器预定义的值相等 时, CAN 控制器才允许将已接收到的报文存入 RXFIFO。验收滤波器由验收代码寄存(ACRn)和验收屏蔽寄存器(AMRn)定义。验收屏蔽寄 存器允许定义某些位为“无关”。有两种不同的过滤模式可由模式寄存器中的位(MOD.3)选择: 单滤波器配置这种过滤配置可以定义一个长滤波器(4 字节)。滤波器字节与报文字节之间位的对应 关系取决于当前接收帧格式。标准帧:如果接受的是标准帧格式的报文,在接受过滤中只使用前两个数据字节

15、来存 放包括PTR位的完整标识。如果由于置位RTR=1而没有数据字节,或因为设置相应的数据 长度代码而没有或只有一个数据字节,报文也会被接收。对于成功接收的一个报文,所有 单个位在滤波器中的比较结果都必须为“接受”。必须注意的是,AMR1和ACR1的低4位是不用的。为了和将来的产品兼容,这些位 通过设置 AMR1.3、AMR1.2、AMR1.1 和 AMR1.0 为 1 而作为“无关”。扩展帧:如果接受的是扩展帧格式的,包括RTR位的全部标识码将被验收过滤使用。 对于成功接收的一个报文,每个位的比较结果都必须为“接受”。必须注意的是,AMR3和ACR3的最低两位是不用的。为了和将来的产品兼容,

16、这些 位通过设置 AMR3.1、AMR3.0 为 1 来定义“无关”。双滤波器配置这种配置可以定义两个短滤波器,至少要有一个滤波器表示为“接受”,接收的报文 才有效。滤波器字节和报文字节之间的对应关系取决于当前接收的报文帧格式。标准帧:如果接收的是标准帧报文,定义的两个滤波器是不一样的。第一个滤波器的 比较包括整个标识码和 RTR 位以及报文的第一个数据字节。第二个滤波器只比较整个标准 识别码和 RTR 位。对于成功接收的一条报文,所有单个位的比较时,应至少有一个滤波器表示为“接受”。 如果RTR位置1或数据长度代码是0表示没有数据字节存在,然而只要从开始到RTR的 各位比较结果 都为“接受”

17、,报文就可以通过滤波器 1。如果没有数据字节向滤波器1请求过滤,AMR1和AMR3的低四位必须被置为1 “无 关”。这时,两个滤波器的识别工作都是验证整个标准识别码以及RTR位。扩展帧 :如果接收一个扩展帧报文,定义的两个滤波器看起来是相同的,它们由寄 存器 ACR1、ACR0 和 AMR1、AMR0 组成滤波器 1,ACR3、ACR2 和 AMR3、AMR2 组 成滤波器 2.两个滤波器都只比较扩展标识码的前两个字节。为了能成功地接收报文,所有单个位的比较结果至少有一个滤波器表示为“接受”。 中断使能寄存器对这个寄存器进行设置,能允许或禁止不同类型的中断源产生中断。这个寄存器对CPU来说是可

18、读/写的存储器。中断使能寄存器(IER)各位的功能见表8所示。表 8 中断使能寄存器各位的说明( CAN 地址 4 )IER.7总线错误中断使能IER.6仲裁丢失中断使能IER.5错误认可中断使能IER.4唤醒中断使能IER.3数据溢出中断IER.2出错报警中断使能IER.1发送中断使能IER.0接收中断使能允许:若检测到总线错误,则CAN控制器请求总线错误中断禁止总线错误中断允许:若CAN控制器丢失仲裁,则请求仲裁丢失中断禁止仲裁丢失中断允许:若CAN总线错误状态改变,则请求错误认可中断禁止错误认可中断允许:若睡眠模式中的CAN控制器被唤醒,则请求唤醒中断禁止唤醒中断允许:若数据溢出状态位被

19、置1 (见状态寄存器),CAN控制器请求数据溢出中断禁止数据溢出中断允许:若出错状态或总线状态改变(见状态寄存器)CAN控制器请求出错报警中断禁止出错报警中断允许:当报文被成功发送或发送缓冲区又可访问时,CAN控制器请求发送中断禁止发送中断允许:当接收缓冲器状态为“满”时,CAN控制器请求接收中断禁止接收中断状态寄存器状态寄存器(SR)反映CAN控制器的状态,对CPU来说是只读存储器。操作模式中状态寄存器各位的功能表如表 9 所示。表9状态寄存器各位的说明(CAN地址2)SR.7SR.6SR.5SR.4SR.3SR.2SR.1SR.0名称功能描述总线状态错误状态发送状态接收状态发送完成状态发送

20、缓冲器状态数据溢出状态接收缓冲器状态总线关闭:CAN控制器不参与总线活动总线开启:CAN控制器参与总线活动出错:至少一个错误寄存器达到或超过由报警限额寄存器定义的CPU报警限额正常:两个错误计数器都在报警限额以下发送:CAN控制器正在发送报文空闲接收:CAN控制器正在接收报文空闲完成:最近一次发送已成功未完:先前请求的发送还未完成释放:CPU可以向发送缓冲器写报文锁定:CPU不能访问发送缓冲器;报文是在等待发送或正在发送中溢出:报文因RXFIFO中无足够存储空间而丢失未溢:自从上一次执行清除数据溢出命令以来无数据溢出发生有:RXFIFO存在完整有效的报文空:RXFIFO中无有效报文nm_poi

21、n=BTR0; *nm_poin=0xc9; nm_poin=BTR1; *nm_poin=0xA3; nm_poin=CDR;*nm_poin=0xc0; nm_poin=OCR;*nm_poin=0xaa; nm_poin=IER;*nm_poin=0x0f;nm_poin=ACR0; *nm_poin=0xff;nm_poin=ACR1; *nm_poin=0xff; nm_poin=ACR2; *nm_poin=0xff; nm_poin=ACR3; *nm_poin=0xff; nm_poin=AMR0; *nm_poin=0Xff; nm_poin=AMR1; *nm_poin=0

22、xff; nm_poin=AMR2; *nm_poin=0xff; nm_poin=AMR3; *nm_poin=0xff; nm_poin=RBSA; *nm_poin=0; nm_poin=TXERR; *nm_poin=0; nm_poin=ECC; *nm_poin=0; nm_poin=MODE; *nm_poin=0x0c;sta=0;nm_poin=MODE;/指针指向模式寄存器,以进入sjaiooo的初始化设置*nm_poin=0x0d;/ 00001101定义can控制器:单向滤波、自收发、听正常模式、复位使能while(sta&x01)!=0x01)/ 确保 SJA1000

23、 进入了复位模式sta=*nm_poin;/ 指针指向总线定时寄存器0,以设置系统时钟和同步跳转宽度/11001001 定义总线定时寄存器0/ 指针指向总线定时寄存器1,以设置采样次数/10100011定义总线定时寄存器1:波特率100K,采样次数3指针指向时钟分频器,以设置CAN模式及输出给微控制器的频率/11000000定义/时钟分频寄存器:PeliCAN,RX1不允许,CLKOUT不允许输出/ 指针指向输出控制寄存器,以设置输出模式/ 10101010定义输出模式:正常输出/ 指针指向中断使能寄存器,允许或禁止不同类型的中断源产生中断/00001111定义中断使能寄存器:禁止总线错误中断

24、,禁止仲裁丢失中断,禁止错误认可中断,禁止唤醒中断;允许数据溢出中断,允许出错报警中断,允许发送中断,允许接收中断/ 指针指向验收代码寄存器0/11111111定义验收代码寄存器0:自发自收可以随便定义,只需将验收屏蔽寄存器设为无光;若为正常收发,则必须与发送数据程序中的标识码一致。/ 指针指向验收代码寄存器1/11111111定义验收代码寄存器1/ 指针指向验收代码寄存器2/11111111定义验收代码寄存器2/ 指针指向验收代码寄存器3/11111111定义验收代码寄存器3/ 指针指向验收屏蔽寄存器0/11111111定义验收屏蔽寄存器0:置1,表示与相应的位无关;设为0表示相关/ 指针指

25、向验收屏蔽寄存器1/11111111定义验收屏蔽寄存器1/ 指针指向验收屏蔽寄存器2/11111111定义验收屏蔽寄存器2/ 指针指向验收屏蔽寄存器3/00001111定义验收屏蔽寄存器3/ 指针指向接收缓冲区首址/ 指针指向错误计数器/定义错误计数器的初值为0/ 指针指向错误代码寄存器/定义错误代码寄存器的值为 0/ 指针指向模式寄存器/00001100定义CAN控制器:单向滤波;返回到工作状态sta=0x01; sta=*nm_poin; 4.1.2 CAN 发送数据将待发送的数据送入发送缓冲区后启动发送命令后,硬件会自动产生接收中断并将 数据保存在接收缓冲区。发送缓冲器被分为描述符区和数

26、据区。描述符区的第一个字节是帧信息字节(结构信 息),其功能说明见表 9 所示,它说明了帧格式(标准帧或扩展帧)、远程帧或数据帧和数 据的长度。标准帧有两个字节的标识码,扩展帧有四个字节的标识码。数据区最多长8个 数据字节。发送缓冲器长13个字节,它们位于CAN地址的1628。要注意的是,使用CAN 地址的96108可以直接访问发送缓冲器的RAM,这个RAM区是为发送缓冲器保留的。CAN 地址109、110和111三个字节是通用的。表 9 TX 结构信息( CAN 地址 16 )BIT 7BIT 6BIT 5BIT 4BIT 3BIT 2BIT 1FFRTRxxDLC.3DLC.2DLC.1b

27、it 0dlc.oFF=0为标准帧格式,FF=1为扩展帧格式;RTR为远程发送请求位;低四位为数据长度代码。位x可忽略,建议在使用自接收功能(自测)时与接收缓冲器的值(0) 致。启动发送命令时,如果为自发自收,则命令寄存器(CMR)的值应设为“0x10”。该寄存器是只写的,其各位的功能如表10所示。表10命令寄存器各位的功能说明(CAN地址1)CMR.7 5CMR.4CMR.3CMR.2CMR.1CMR.0名称功能描述保留自接收请求清除数据溢出释放接收缓冲器中止发送发送请求CAN 发送一帧数据帧的程序为:void send_dframe(void) byte s_state; byte xda

28、ta *nm_poin; nm_poin=SR; s_state=0;当前:信息可以被同时发送和接收空缺清除:数据溢出状态位被清除无动作释放接收缓冲器RXFIF0中当前呈现的报文的存储空间无动作当前:如果不是正在处理,将取消等待中的发送请求空缺当前:报文被发送空缺/指针指向状态寄存器/指针指向发送缓冲区首地址/10001000 定义帧结构信息:数据帧,扩展帧,数据位长度为 8/指针指向发送缓冲区首地址+1/11111111定义标识码 1/指针指向发送缓冲区首地址+2/11111111定义标识码 2/指针指向发送缓冲区首地址+3/11111111定义标识码 3/指针指向发送缓冲区首地址+4/11

29、111111定义标识码 4/将数据送至发送缓冲区/指针指向命令寄存器/10000000 定义命令寄存器:自发送,自接收/指针指向状态寄存器/检查各状态位/指针指向发送缓冲区首地址/11000000 定义帧结构信息:远程帧,扩展帧,无数据位/指针指向发送缓冲区首地址+1/11111111定义标识码 1/指针指向发送缓冲区首地址+2/11111111定义标识码 2/指针指向发送缓冲区首地址+3/检查各状态位while(s_state!=0x0c)s_state=*nm_poin; s_state=s_state&0x1c; nm_poin=CANTX; *nm_poin=0x88; nm_poin

30、+; *nm_poin=0xff; nm_poin+; *nm_poin=0xff; nm_poin+; *nm_poin=0xff; nm_poin+; *nm_poin=0xff; for(s_state=0;s_state8;s_state+) nm_poin+;*nm_poin=bbufs_state;nm_poin=CMR; *nm_poin=0x10;当需要请求对方发送数据时,可以通过发送远程帧来实现。作为某数据接收器的站,通过发送远程帧可以启用其资源节点传送它们各自的数据。远程帧也有标准和扩展格式,但它没有数据域,所以数据长度代码的数值没有意义。发送远程帧时,需要将帧结构信息 的

31、内容重新设置,将 RTR 位置位。CAN 发送一帧远程帧的程序为: void send_Fframe() byte state;byte xdata *nm_poin; nm_poin=SR; state=0; while(state!=0x0c) state=*nm_poin; state=state&0x1c;nm_poin=CANTX; *nm_poin=0xc0; nm_poin+; *nm_poin=0xff; nm_poin+; *nm_poin=0xff; nm_poin+;*nm_poin=0xff;nm_poin+;/11111111定义标识码 3*nm_poin=0xff;

32、 nm_poin=CMR;*nm_poin=0X10;/指针指向发送缓冲区首地址+4/11111111定义标识码 4/指针指向命令寄存器/启动发送4.1.3 CAN 接收数据采用中断接收数据,当发送缓冲区满,启动发送命令后,由硬件自动产生中断。在中 断服务程序里,需要判断中断类型,在以下几种情况下都可能引起中断:总线错误、仲裁 丢失、错误认可、唤醒、数据溢出、出错报警、发送数据和接收数据。只要任意一种情况 发生,且中断使能寄存器(IER)中相应的位允许(置1),就会产生相应的中断。CAN 中断接收数据程序为:void int0_service() interrupt 0byte xdata *

33、int_poin;EA=0;int_poin=IR; state_1=*int_poin; if(state_1&0x08)=0x08)int_poin=CMR;*int_poin=0x0c;/开中断/指针指向中断寄存器 /读中断寄存器清除中断位 /数据溢出错误/指针指向命令寄存器/00001100 定义命令寄存器:清除数据溢出和释放缓冲区/出错报警中断 int_poin=SR; state_1=*int_poin;if (state_1&0x80)=0x80) int_poin=MODE;*int_poin=0x0c; /000 state_1=0x01;while(state_1&0x01

34、)=0x01)/指针指向模式寄存器/00001100定义CAN控制器:进入工作模式/确保进入工作模式else if(state_1&0x04)=0x04)state_1=*int_poin;else if(state_1&0x01)=0x01) int_poin=CANRX; for(i_temp=0;i_temp13;i_temp+) rbufi_temp=*int_poin+; int_poin=CMR;*int_poin=0x04;/接收中断/指针指向接收缓冲器首地址接收一帧信息,将数据保存在rbuf数组里/指针指向命令寄存器/00000100定义命令寄存器: /释放当前报文空间else

35、/发送中断bbufi+;send_dframe();/发送一帧数据EA=1;/关中断4.2 CAN 节点之间的通讯两个节点以上的通讯是通过标识码来确定的,对于 CAN 控制器的初始化与 CAN 的自 收发类同,只需要注意验收代码寄存器与验收屏蔽寄存器的设置,验收代码寄存器里面的 值用来表示该节点的地址,当验收屏蔽寄存器设为相关时(即0x00),要想发送的一条报 文被该节点成功接收,则必须将该报文的标识码与该节点的验收代码设为一致。在发送数 据程序中,当要发送的数据送入发送缓冲区之后,启动发送,此时应将命令寄存器(CMR) 的值应改为 0x01 。4.3 故障分析如果CAN的自收发没有成功,则首

36、先应检查硬件,可以采取如下措施:1. 首先查看电源是否正常;2. 其次查看硬件电路是否连接有误;3查看SJA1000是否正常工作,如果单片机与SJA1000共用晶振,则可以用示波器观 察 SJA1000 的 CLOCK OUT 引脚输出波形是否正确;4. 检查CAN收发器PCA82C250芯片是否完好;5. 检查光耦6N137是否完好;6. 检查与光耦相连的两个上拉电阻的阻值,最好选择1kQ -10kQ ;7. 当程序能进入中断,但不能正常进入接收中断时,先判断是什么中断,然后通过读 相应寄存器的值来判断是什么问题,例如:如果进入了错误中断,则可以通过读错误代码 捕捉寄存器里面的值来判断是什么

37、错误。5 CAN 的应用状况及前景由于 CAN 总线的高速通信速率、高可靠性、连接方便、多主站、通讯协议简单和高 性能价格比等突出优点,深得许多工业应用部门的青睐,其应用由最初的汽车工业迅速发 展至数控机床、农业机械、铁路运输、粮情检测、过程测控等各个方面。CAN在国外的发 展迅速,奔驰S型轿车采用的就是CAN总线系统;美国商用车辆制造商们也将注意力转 向 CAN 总线;美国一些企业已将 CAN 作为内部总线应用在生产线和机床上。由于 CAN 总线可以提供较高的安全性,因此在医疗领域、纺织机械和电梯控制中也得到了广泛应用。 6 结束语总之,基于CAN总线的数据通信具有突出的可靠性、实时性和灵活性。CAN作为现 场设备级的通信总线,和其他总线相比,具有很高的可靠性和性能价格比,其总线规范已 经成为国际标准,被公认为几种最有前途的总线之一。目前,CAN接口芯片的生产厂家众 多,协议开放,价格低廉,且使用简单,CAN总线可广泛应用于工业测量和控制领域。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!