收藏 分销(赏)

CAN总线设计.doc

上传人:天**** 文档编号:3136732 上传时间:2024-06-19 格式:DOC 页数:24 大小:857KB
下载 相关 举报
CAN总线设计.doc_第1页
第1页 / 共24页
CAN总线设计.doc_第2页
第2页 / 共24页
CAN总线设计.doc_第3页
第3页 / 共24页
CAN总线设计.doc_第4页
第4页 / 共24页
CAN总线设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、 微机应用课程设计报告题 目:基于单片机的16*16点阵系统设计专 业: 班 级: 姓 名: 学 号: 地 点: 时 间: 指导老师: 摘 要现场总线是自动化领域的计算机网络,是当今自动化领域技术发展的热点之一。它以总线为纽带,将现场设备连接起来成为一个能够相互交换信息的控制网络,是一种双向串行多节点数字通信的系统。CAN总线也是现场总线的一种,它最初被应用于汽车的控制系统中,由于其卓越的性能,CAN总线的应用范围已不再局限于汽车工业中,而被广泛的用到自动控制、楼宇自动化、医疗设备等各个领域。本文主要介绍一种基于CAN总线的控制系统,通过对这一系统的制作流程来说明CAN总线的简单应用,文章主要

2、是对本控制系统的三个硬件模块进行介绍及模块中相关芯片的应用,同时本文也对软件的编写进行了说明。关键字:现场总线; CAN总线; 单片机; 控制系统 目 录 1 绪 论11.1 CAN总线的简单介绍11.2 CAN总线的优势11.2.1 网络各节点之间的数据通信实时性强21.2.2 缩短了开发周期21.2.3 已形成国际标准的现场总线21.2.4 最有前途的现场总线之一22 硬件电路设计32.1单片机模块32.1.1 STC89C52主要特性如下:42.1.2 STC89C52RC单片机的工作模式52.2 CAN总线控制器模块62.2.1 SJA1000简介62.2.2 PCA82C250简介9

3、2.3 通信模块和外围接口112.3.1 通信模块112.3.2 外围接口123 CAN总线控制系统软件设计133.1 初始化程序133.2 数据的接收和发送功能153.2.1 发送数据153.2.2 接收数据174 总结19参考文献20附录一21II微机应用课程设计 基于CAN总线的控制系统1 绪 论CAN总线属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通讯网络,CAN总线的应用范围遍及从高速网络到低本钱的多线路网络,在自动化电子领域的汽车发动机控制部件、传感器、抗滑系统等应用中,CAN的位速率可高达1Mbps,同时,它可以廉价地应用于交通运载工具电气系统中,例如,灯光聚束

4、电气窗口等等以代替所需要的硬件连接。CAN总线采用双绞线串行通讯方式,检错能力强,可在高噪声干扰环境中工作,CAN总线具有优先和仲裁功能,多个控制模块通过CAN控制器挂到CAN-BUS上,形成多主机局部网络,其可靠性和实时性远高于普通的通讯技术。 本文所论述的CAN总线控制系统是一个类似单片机最小开发系统一样的开发板,其主要分为三个部分:单片机模块,CAN总线控制模块,外围接口和通信模块。单片机模块主要是用单片机来控制整个系统,CAN总线控制模块主要是利用CAN总线控制器来实现和外围CAN总线的通信和交换信息,而外围接口和通信模块主要功能是为单片机下载程序和连接外围功能模块,主要是连接一些其他

5、功能模块来实现相关的功能,接口分为输入接口和输出接口,这样可使一个系统构成闭环控制系统,从而可有效的实现所需要的控制功能,完成以后可应用于各种领域,实现各种控制功能,例如说路灯控制,汽车上的一些通信,电机控制等。1.1 CAN总线的简单介绍CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO11898)。是国际上应用最广泛的现场总线之一。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机

6、械车辆设计的J1939协议。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。 CAN(controller area network)最初是由德国Bosch公司在80年代初期,为了解决汽车中众多的控制与测量设备之间的数据交换而开发的一种串行数据通信总线,属于现场总线的范畴,1993年成为国际标注(ISO11898:道路车辆的高速控制器局域岗数字交换系统标准)。CAN总线是一种有效支持分布式控制系统或实时控制的串行通信网络,是一个多主总线,总线上的各节点都有权随时向其他节点发送信息,总线冲突时通过总线仲裁方式决定

7、占用总线的节点,实现在电磁干扰环境下,远距离实时数据的可靠传输。 1.2 CAN总线的优势CAN是一种有效支持分布式控制或实时控制的串行通信网络。和目前许多RS-485基于R线构建的分布式控制系统而言,基于CAN总线的分布式控制系统在以下方面具有明显的优越性:1.2.1 网络各节点之间的数据通信实时性强首先,CAN控制器工作于多种方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并

8、且容易构成冗余结构,提高系统的可靠性和系统的灵活性,而利用RS-485只能构成主从结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差。1.2.2 缩短了开发周期CAN总线通过CAN接收器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会在出现在RS-485网络中的现象,即当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象,而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现显现在网络中

9、,因个别节点出现问题,使得总线出于“锁死”状态,而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些都是仅有电气协议的RS-485所无法比拟的。1.2.3 已形成国际标准的现场总线另外,于其他现场总线相比较,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线,这些也是目前CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。1.2.4 最有前途的现场总线之一CAN即控制器局域网络,属于工业现场总线的范畴,于一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良

10、好的性能及独特设计,CAN总线越来越受到人们的重视。它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商,如BENZ、PORSCHE、ROLLS-ROYCE等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信,同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、过程控制、机械工业、农用机械、数控机床、医疗器械及传感器等领域发展,CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一,其典型的应用协议有:SAEJ1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA 2000等

11、。21微机应用课程设计 基于CAN总线的控制系统2 硬件电路设计此控制系统主要有三个主要的模块组成,第一步分为单片机模块,第二部分为CAN总线控制器模块,第三部分为通信和外围接口,其主要分为输出和输入接口,使系统构成一个闭环系统,从而实现所需要的控制功能。系统功能结构图如图1示图1 系统结构示意图2.1 单片机模块图2为系统单片机模块的电路图图2 单片机模块电路图本系统单片机选择的是STC89C52,是双列直插式40引脚,其芯片引脚图如图2-4。STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器

12、周期可以任意选择。图3 STC89C52的芯片引脚图2.1.1 STC89C52主要特性如下: 1. 增强型 8051 单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。2. 工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V单片机)。3. 工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz。4. 用户应用程序空间为8K字节 。5. 片上集成512字节RAM。6. 通用I/O口(32个)复位后为,P1/P2/P3/P4是准双向口/弱上拉,P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O

13、口用时,需加上 拉电阻。 7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片。8.具有EEPROM功能。 9.具有看门狗功能。10.共3个16位定时器/计数器,即定时器T0、T1、T2。11.外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒。12.通用异步串行口(UART),还可用定时器软件实现多个UART。 13.工作温度范围:-40+85(工业级)/075(商业级)。 14. PDIP封装。 2.1.2 STC89C52R

14、C单片机的工作模式掉电模式:典型功耗0.1A,可由外部中断唤醒,中断返回后,继续执行原程序。空闲模式:典型功耗2mA典型功耗。 正常工作模式:典型功耗4mA7mA典型功耗。 掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备。 STC89C52RC引脚功能说明:VCC(40引脚):电源电压;VSS(20引脚):接地。 P0端口(P0.0P0.7,3932引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入每个引脚能驱动写入“1”时,可以作为高阻抗输入。 P1端口(P1.0P1.7,18引脚):P1口是一个带内部上拉电阻的8位

15、双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。 P2端口(P2.0P2.7,2128引脚):P2口是一个带内部上拉电阻的8位双向I/O 端口。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。 P2 作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会 输出一个电流。 P3 端口(P3.0P3.7,1017 引脚) :P3 是一个带内部上拉电阻的 8 位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻

16、把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。 RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作。 ALE/ROG(30引脚)地址锁存控制信号:(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚(ROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将

17、无效。 外部程序存储器选通信号(SEN)是外部程序存储器选SEN(29引脚):当 AT89C51RC从外部程序存储器执行外部代码时,SEN在每个机器周期被激活两次,而访问外部数据存储器时,SEN将不被激活。A/VPP(31引脚)访问外部程序存储器控制信号:为使能从0000H到FFFFH的外部程序存储器读取指令,A必须接 GND。注意加密方式1时,A将内部锁定位RESET。为了执行内部程序指令,A应该接VCC。在 Flash编程期间,A也接收12伏VPP电压。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18引脚):振荡器反相放大器的输入端。2.2 CAN总线控

18、制器模块CAN总线控制部分的电路图如下所示:图4 CAN总线部分电路图2.2.1 SJA1000简介本系统选择的CAN控制芯片是SJA1000,它是Philips半导体公司PCA82C200 CAN 控制(BasicCAN)的替代产品,而且它增加了一种新的操作模式PeliCAN,这种模式支持具有很多新特性的CAN 2.0B协议。其引脚图及内部功能块图分别如图5和图6。管脚定义见表1。图5 SJA1000芯片引脚图图6 SJA1000芯片内部引脚图表1管脚定义符号引脚说明AD7-AD02,1,28-23多路地址、数据总线ALE/AS3ALE输入信号(Intel模式)AS输入信号(Motorola

19、模式)/CS4片选输入,低电平允许访问SJA1000(/RD)/E5微控制器的/RD信号(Intel模式)或E使能信号(Motorola模式)/WR6微控制器的/WR信号(Intel模式)或/RD(/WR)信号(Motorola模式)CLKOUT7SJA1000产生的提供给微控制器的时钟输出信号,时钟信号来源与内部振荡器且通过编程驱动;时钟控制器寄存器的时钟关闭位可禁止该引脚Vss18接地XTAL1 9输入到振荡器放大电路;外部振荡信号由此输入XTAL210振荡放大电路输出;使用外部振荡信号左开路输出MODE11模式选择输入1=Intel模式 0=Motorola模式VDD312输出驱动的5V

20、电压源TX013从CAN输出驱动器0输出到物理线路上TX114从CAN输出驱动器1输出到物理线路上Vss315输出驱动器接地/INT16中断输出,用于中断微控制器:/INT在内部中断寄存器各位都被置位时低电平有效;/INT是开漏输出,且与系统中的其他/INT是线或的;此引脚上的低电平可以把IC从睡眠模式中激活/RST17复位输入,用于复位CAN接口(地低电平有效);把/RST引脚通过电容 连到Vss,通过电阻连到VDD可自动上电复位VDD218输入比较器的5V电压源RX0RX119,20从物理的CAN总线输入到SJA1000的输入到SJA1000的输入比较器;支配(控制)电平将会唤醒SJA10

21、00的睡眠模式;如果RX1比RX0的电平高,就读支配(控制)电平,反之读弱势电平;如果时钟分频寄存器的CBP位被置位,就旁路CAN输入比较器以减少内部延时;这种情况下只有RX0是激活的,弱势电平被认为是高而支配电平被认为是低Vss221输入比较器的接地端VDD122逻辑电路的5V电压源SJA1000控制器中的各个控制块的功能主要有:1.接口管理逻辑(IML)接口管理逻辑解释来自CPU的命令,控制CAN寄存器的寻址,向主控制器提供中断信息和状态信息。2.发送缓冲器(TXB)发送缓冲器是CPU和位流处理器BSP之间的接口,能够存储发送到CAN网络上的完整信息,缓冲器长13个字节,由CPU写入BSP

22、读出。3.接收缓冲器(RXB,RXFIFO)解释缓冲器是验收滤波器和CPU之间的接口,用来存储从CAN总线上接收到的信息,接收缓冲器(RXB13个字节)作为接收FIFO(RXFIFO长64字节)的一个窗口可被CPU访问,CPU在此FIFO的支持下可以再处理信息的时候接收其他信息。4.验收滤波器(ACF)验收滤波器把它其中的数据和接收的识别码的内容相比较,以决定是否接收信息,在纯粹的接收测试中所有的信息都保存在RXFIFO。5.位流处理器(BSP)位流处理器是一个在发送缓冲器(RXFIFO)和CAN总线之间控制数据的程序装置,它还在CAN总线上执行错误检测仲裁填充和错误处理。6.位时序逻辑(BT

23、L)位时序逻辑监视串口的CAN总线和处理与总线有关的位时序,它在信息开头“弱势-支配”的总线传输同步CAN总线位流(硬同步),接收信息时再次同步下一次传送(软同步)。BTL还提供可编程的时间段来补偿传播延迟时间、相位转换和定义采样点和一位时间内的采样次数。7.错误管理逻辑(EML)EML负责传送模块的错误管制。它接收BSP的出错报告通知BSP和IML进行错误统计。2.2.2 PCA82C250简介 PCA82C50是CAN协议控制器和物理总线间的接口,它主要是为汽车中高速通讯(高达1Mbps)应用而设计。该器件对总线提供差动发送能力,对CAN控制器提供差动接收能力,完全符合“ISO11898”

24、标准。2.2.2.1 PCA82C250的特性l 完全符合“ISO11898”标准l 高速率(最高达1Mbps)l 具有抗汽车环境中的瞬间干扰,保护总线能力l 斜率控制,降低射频干扰(RFI)l 差分接收器,抗宽范围的共模干扰,抗电磁干扰(EMI)l 热保护l 防止电池和地之间的发送短路l 低电流待机模式l 未上电的节点对总线无影响l 可连接110个节点PCA82C50的内部结构方框图如图7示。图7 PCA82C50内部结构图PCA82C250的封装形式及引脚配置如图8示,封装形式为DIP8,表中列出了其各引脚的功能。表2 PAC82C250引脚功能符号管脚功能描述TXD1发送数据输入GND2

25、地VCC3电源电压RXD4接收数据输出Vref5参考电压输出CANL6低电平CAN电压输入/输出CANH7高电平CAN电压输入/输出Rs8斜率电阻输入图8 PCA82C250芯片引脚PCA82C250的主要功能有:首先,82C250驱动电路内部具有限流电路,可以防止输出级对电源、地或负载短路,虽然在这种故障条件出现时功耗增加,但不致使输出级破坏。其次,82C250采用双线差动驱动,有助于抑制恶劣环境下的瞬变干扰。引脚Rs可用于选择三种不同的工作方式:高速、斜率控制和待机。在高速工作方式下,发送器输出晶体管以尽可能快的速度启闭。在这种方式下,不采用任何措施限制上升和下降斜率,此时,建议使用屏蔽电

26、缆以避免射频干扰问题。通过将引脚8接地可选择高速方式,对于较低速度或较短总线长度,可用非屏蔽双绞线或平行线作总线。为降低射频干扰,应限制上升和下降斜率,上升和下降斜率可通过由引脚8至地连接的电阻进行控制,斜率正比于引脚8上的电流输出,若脚8接高电平,则电路进入低电平待机方式,在这种方式下,发送器被关闭,而接收器转至低电流,若检测到显性位,RXD将转至低电平,位控制器应通过引脚8将发送器变为正常方式作为对此条件作出的反应,由于在待机方式下,接收器是慢速的,因此第一个报文将被丢失。对于CAN控制器及带有CAN总线接口的器件,82C250并不是必须使用的器件,因为多数CAN控制器均具有配置灵魂的收发

27、器件,并允许总线故障,只是驱动能力只允许20-30个节点连接在一条总线上,而82C250支持多达110个节点,并能以1Mbps的速率工作于恶劣电气环境下,利用82C250还可方便地在CAN控制器与收发之间建立光电隔离,以实现总线上各个节点之间的电气隔离。CAN节点的硬件电路设计主要是CAN总线通信控制器与微处理器之间的接口电路,以及CAN总线收发器与物流总线之间的接口电路设计。CAN通信控制器是接口电路的核心,它主要完成CAN总线的通信协议,而CAN总线收发器的功能则是增大通信距离,保护系统不受干扰。2.2.2.2 CAN总线设计需要注意的几点1.物理总线两端的终端电阻RT要匹配,否则CAN总

28、线数据通信的抗干扰性及可靠性会大大的降低;2. PCA82C250为CAN总线通信控制器与物理总线之间的接口,它可以提供向总线的差动发送能力和CAN控制器的差动接收能力,TXD和RXD引脚分别发送经过驱动后的发送和接收信号,引脚8(RS)可以选择2种不同的工作方式:当与地相连,则系统将处于高速工作方式,在这种方式下,为避免干扰,最好使用屏蔽电缆作为总线,而在低波特率且总线较短时,一般采用斜率控制方式,上升及下降的斜率取决于RS的阻值,而RS的取值一般在1K140K较为理想,在这种方式下可以采用双绞线作为总线的物理介质。本系统采用的就是这种方式,RS采用的是47K的电阻。3. SJA1000的T

29、X1脚悬空,RX1引脚的电平必须维持在约0.5VCC以上,否则不能形成CAN协议要求的电平逻辑。4.把STC89C52的X2引脚接SJA1000的外部振荡输入引脚XTAL1,这样就解决时钟同步的问题。将SJA1000的/INT与STC89C52的INT0相连,这样STC89C52和SJA1000就通过中断方式来进行通信。在实际的应用中,CAN总线大都用在如汽车和工业现场控制等的环境中,环境对电路的影响很大,所以为减少这些干扰,在设计CAN总线的节点时,通常在电路中使用高速光藕,如6N137等,使SJA1000的TX0与RX0不直接与82C520的TXD和RXD相连,而是通过高速光耦与82C52

30、0相连,这样就能很好地实现总线上各CAN节点间的电气隔离。同时还必须指出的是,光耦部分所采用的两个电源VCC和VDD必须完全隔离,否则光耦就失去了意义,即无法达到隔离的目的。2.3 通信模块和外围接口2.3.1 通信模块系统通信模块主要是采用串行通信,所用的芯片是MAX232,图2-9系统通信模块的电路图图9通信模块电路图MAX232芯片是美信公司专门RS-232标准串口设计的单电源电平转换芯片,使用+5V单电源供电。它一共有16个引脚,主要分为三个部分:第一部分是电荷泵电路。有1、2、3、4、5、6脚和4个电容构成,功能是产生+12V和-12V两个电源,提供RS-232串口电平的需要;第二部

31、分是数据转换通道,由7、8、9、10、11、12、13、14脚构成两个数据通道,其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道,8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头,DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出;第三部分是供电,15脚(GND)、16脚(VCC)。2.3.2 外围接口整个系统要实现各种功能就必须要和外

32、围的各种传感器、控制器连接,而要实现这个功能就需要系统上的这个外围接口单元,图10统的外围接口单元:图10 外围接口单元图2-11中的JX为系统的输出接口,连接系统外的传感器,主要是用来输出数据,而KZ是输入接口,当连接好外围的设备时,就可以构成一个闭环系统,从而来实现所希望控制的东西。就拿路灯控制来说,当光照很弱时,通过一个传感器把这个信号有KZ传到单片机内,由单片机原先写好的软件来分析,从而产生一个输出信号有JX传到路灯上的控制器中使路灯亮或灭,从而实现路灯控制的功能。微机应用课程设计 基于CAN总线的控制系统3 CAN总线控制系统软件设计CAN节点的初始化程序的主要任务是对总线通信控制器

33、SJA1000进行合适的配置,以满足系统的运行要求。SJA1000有两种工作模式:Basic-CAN 和Peli-CAN,SJA1000 上电后首先进入的是Basic-CAN模式,而Peli-CAN支持CAN-2.0B规范。3.1 初始化程序对SJA1000的初始化程序的流程图如下图所示,SJA1000的初始化主要是对时钟分频器、中断使能寄存器、验收代码寄存器和接收屏蔽寄存器、总线定时器输出控制器等进行配置,它关系着能否成功进行通信的问题,如果配置不当的话,很可能CAN总线不能正常运行。图11初始化流程图初始化程序如下:void SJA1000_init(void)CS=0; /片选SJA10

34、00EA=0; /关闭中断while (ModeCountReg&RM_RR_Bit)=ClrByte)ModeControlReg-0x01;ClockDivideReg=0xc8;InterruptEnReg-0x03;AcceptCode0Reg=#;AccepCode1Reg=#;AccepCode2Reg=#;AccepCode3Reg=#;AcceptMask0Reg=#;AcceptMask1Reg=#;AccepyMask2Reg=#;AcceptMask3Reg=#;BusTiming0Reg=#;BusTiming1Reg=#;OutControlReg=#;RxBufst

35、artAdr=0;do(modeControlReg=0x08)while(ModeControlReg&0x01)!=0x00);EA=1;各个寄存器的值则可以根据实际需要作合理的配置,需要指出的是,CAN总线上节点的波特率设置都必须相同,否则将引起通信失败。系统节点通信波特率是由总线定时寄存器0、总线定时寄存器1和系统的晶振频率所决定的,其计算方法如下:总线定时寄存器0决定了波特率预设值(BRP)和同步跳转宽度(SJW)值,它各个位的功能如下表所示:表3 SJA1000总线定时寄存器各位的功能BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0SJW.1SJW.0BRP.5BR

36、P.4BRP.3BRP.2BRP.1BRP.0总线定时寄存器1则定义了每个位周期的长度、采样点的位置和在每个采样点的采样数目,总线定时寄存器1各位的功能如下表所示表4 SJA1000总线定时寄存器各位的功能BIT7BIT6BIT5BIT4BIT3BIT2BIT1BITSAMTESG2.2TESG2.1TESG2.0TESG1.3TESG1.2TESG1.1TESG1.0CAN总线比特率的确定方法见附录一。3.2 数据的接收和发送功能完成对CAN节点的初始化后,便可通过CAN的通信控制器SJA1000向物理总线发送和接收数据。这一过程微处理器和总线通信控制器SJA1000之间的通讯是通过中断方式

37、来实现的,也就是说,当SJA1000把前面写入缓冲区的数据发送完以后,亦会通过中断方式告知CPU数据已经发送完,发送缓冲器已空,可以写入其他的数据,CPU就是通过中断服务程序对SJA1000的中断请求作出相应的响应的。3.2.1 发送数据本文中CAN总线节点所采用的通信控制器是SJA1000,因此有必要对SJA1000发送和接收报文的格式作一些介绍。SJA1000的发送缓冲器的帧格式如图所示: 表5 标准帧格式 表6 扩展帧格式16TX帧信息17TX识别码118TX识别码219TX识别码320TX识别码421TX数据字节122TX数据字节223TX数据字节324TX数据字节425TX数据字节5

38、26TX数据字节627TX数据字节728TX数据字节816TX帧信息17TX识别码118TX识别码219TX数据字节120TX数据字节2 21TX数据字节322TX数据字节423TX数据字节524TX数据字节625TX数据字节726TX数据字节827未使用28未使用由此可见,发送缓冲器被分成描述符区和数据区,描述符区的第一个字节是帧信息字节,它说明了帧格式(标准帧或扩展帧)、远程或数据帧和数据长度。本设计中帧格式采用的是扩展帧格式(EFF),因为SJA1000的工作模式我们采用的是PeliCAN工作模式,扩展帧与标准帧的主要区别是,扩展帧使用4个字节作为数据的识别码,而标准帧则只用2个字节。扩

39、展帧对应的发送缓冲器中的描述符区的位的配置如下表所示,描述符的值越小,则该帧的优先级越高。表7 TX帧信息(EFF)BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0FFRTRXXDLC.3DLC.2DLC.1DLC.0表8 TX识别码1(EFF)BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ID.28ID.27ID.26ID.25ID.24ID.23ID.22ID.21表9 TX识别码2(EFF)BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ID.20ID.19ID.18ID.17ID.16ID.15ID.14ID.13表10 TX识别码3(

40、EFF)BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ID.12ID.11ID.10ID.9ID.8ID.7ID.6ID.5表11 TX识别码4(EFF)BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ID.4ID.4ID.3ID.2ID.1ID.0XX在发送帧的帧信息中,帧格式(FF)和远程帧发送请求位(RTR)的值如下表所示,而DLC则代表了数据字节的长度,其范围为0-8表12 帧格式请求位值定义发送数据时用户只需将要发送的数据按照CAN控制器SJA1000所规定的格式组合成一帧报文,送入控制器的发送缓冲区,然后启动SJA1000发送就可以实现,但在将报文

41、发送到缓冲区之前,应作一些判断,下图给出了发送子程序的程序流程:图12 程序流程图发送子程序:void SJA1000_SendMessage(unsigned char *Msg_ptr,int length)int i;while(statusreg&0x01);while(StatusReg&0x08)=0x00);if(statusreg&0x04)=0x00);elsefor(i=0;ilength;i+)XBYTE0x7010+i=*msg_ptr;msg_ptr+; commandreg=0x01;3.2.2 接收数据接收数据较之发送数据要复杂一些,因为在处理接收报文的过程中,要

42、对如总线脱离、错误报警等情况作出处理。SJA1000对于报文的接收可采用两种方式,即中断接收方式和查询接收方式。接收数据的程序流程图如图13所示:接收子程序:temp_status=statusreg;if(temp_status&0xc3)=0x00) break; else if(temp_status&0x80)=0x00) if(temp_int&0x80)=0x00) while(statusreg&0x01) temp=XBYTE0x7010;if(temp&0x40) commandreg=0x40;else bytecounter=temp&0x0f;for(i=0;ibyte

43、counter;i+)rdata.xi=XBYTE0x7015+i;commandreg=RRB_Bit;图13 接收子程序流程图微机应用课程设计 基于CAN总线的控制系统4 总结CAN总线以其高通行速率、高性价比以及网络构建的灵活性等诸多特点,成为目前最为流行的现场总线之一,随着集成CAN协议的各种器件的不断推出,CAN总线的应用范围已不再局限于汽车工业,它涉及的应用领域已开展到医疗器件、传感器技术、数据采集系统以及楼宇自动化和工业控制中。本文在分析了CAN总线协议后,探讨了CAN总线控制系统的网络实现方案,并在此基础上研究了CAN总线节点的软、硬件的实现方法,并提出了CAN节点在实现过程中值得注意的地方,由此,我们建立了一个CAN总线的半物理的控制系统,利用CAN总线节点作为控制器对上位机仿真的被

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服