CAN总线设计.docx
《CAN总线设计.docx》由会员分享,可在线阅读,更多相关《CAN总线设计.docx(27页珍藏版)》请在冰豆网上搜索。
CAN总线设计
微机应用课程设计报告
题目:
基于单片机的16*16点阵系统设计
专业:
班级:
姓名:
学号:
地点:
时间:
指导老师:
摘要
现场总线是自动化领域的计算机网络,是当今自动化领域技术发展的热点之一。
它以总线为纽带,将现场设备连接起来成为一个能够相互交换信息的控制网络,是一种双向串行多节点数字通信的系统。
CAN总线也是现场总线的一种,它最初被应用于汽车的控制系统中,由于其卓越的性能,CAN总线的应用范围已不再局限于汽车工业中,而被广泛的用到自动控制、楼宇自动化、医疗设备等各个领域。
本文主要介绍一种基于CAN总线的控制系统,通过对这一系统的制作流程来说明CAN总线的简单应用,文章主要是对本控制系统的三个硬件模块进行介绍及模块中相关芯片的应用,同时本文也对软件的编写进行了说明。
关键字:
现场总线;CAN总线;单片机;控制系统
目录
1绪论1
1.1CAN总线的简单介绍1
1.2CAN总线的优势1
1.2.1网络各节点之间的数据通信实时性强2
1.2.2缩短了开发周期2
1.2.3已形成国际标准的现场总线2
1.2.4最有前途的现场总线之一2
2硬件电路设计3
2.1单片机模块3
2.1.1STC89C52主要特性如下:
4
2.1.2STC89C52RC单片机的工作模式5
2.2CAN总线控制器模块6
2.2.1SJA1000简介6
2.2.2PCA82C250简介9
2.3通信模块和外围接口11
2.3.1通信模块11
2.3.2外围接口12
3CAN总线控制系统软件设计13
3.1初始化程序13
3.2数据的接收和发送功能15
3.2.1发送数据15
3.2.2接收数据17
4总结19
参考文献20
附录一21
1绪论
CAN总线属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通讯网络,CAN总线的应用范围遍及从高速网络到低本钱的多线路网络,在自动化电子领域的汽车发动机控制部件、传感器、抗滑系统等应用中,CAN的位速率可高达1Mbps,同时,它可以廉价地应用于交通运载工具电气系统中,例如,灯光聚束电气窗口等等以代替所需要的硬件连接。
CAN总线采用双绞线串行通讯方式,检错能力强,可在高噪声干扰环境中工作,CAN总线具有优先和仲裁功能,多个控制模块通过CAN控制器挂到CAN-BUS上,形成多主机局部网络,其可靠性和实时性远高于普通的通讯技术。
本文所论述的CAN总线控制系统是一个类似单片机最小开发系统一样的开发板,其主要分为三个部分:
单片机模块,CAN总线控制模块,外围接口和通信模块。
单片机模块主要是用单片机来控制整个系统,CAN总线控制模块主要是利用CAN总线控制器来实现和外围CAN总线的通信和交换信息,而外围接口和通信模块主要功能是为单片机下载程序和连接外围功能模块,主要是连接一些其他功能模块来实现相关的功能,接口分为输入接口和输出接口,这样可使一个系统构成闭环控制系统,从而可有效的实现所需要的控制功能,完成以后可应用于各种领域,实现各种控制功能,例如说路灯控制,汽车上的一些通信,电机控制等。
1.1CAN总线的简单介绍
CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO11898)。
是国际上应用最广泛的现场总线之一。
在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。
近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。
CAN(controllerareanetwork)最初是由德国Bosch公司在80年代初期,为了解决汽车中众多的控制与测量设备之间的数据交换而开发的一种串行数据通信总线,属于现场总线的范畴,1993年成为国际标注(ISO11898:
道路车辆的高速控制器局域岗数字交换系统标准)。
CAN总线是一种有效支持分布式控制系统或实时控制的串行通信网络,是一个多主总线,总线上的各节点都有权随时向其他节点发送信息,总线冲突时通过总线仲裁方式决定占用总线的节点,实现在电磁干扰环境下,远距离实时数据的可靠传输。
1.2CAN总线的优势
CAN是一种有效支持分布式控制或实时控制的串行通信网络。
和目前许多RS-485基于R线构建的分布式控制系统而言,基于CAN总线的分布式控制系统在以下方面具有明显的优越性:
1.2.1网络各节点之间的数据通信实时性强
首先,CAN控制器工作于多种方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性,而利用RS-485只能构成主从结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差。
1.2.2缩短了开发周期
CAN总线通过CAN接收器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。
这就保证不会在出现在RS-485网络中的现象,即当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象,而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现显现在网络中,因个别节点出现问题,使得总线出于“锁死”状态,而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些都是仅有电气协议的RS-485所无法比拟的。
1.2.3已形成国际标准的现场总线
另外,于其他现场总线相比较,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线,这些也是目前CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。
1.2.4最有前途的现场总线之一
CAN即控制器局域网络,属于工业现场总线的范畴,于一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。
由于其良好的性能及独特设计,CAN总线越来越受到人们的重视。
它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商,如BENZ、PORSCHE、ROLLS-ROYCE等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信,同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、过程控制、机械工业、农用机械、数控机床、医疗器械及传感器等领域发展,CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一,其典型的应用协议有:
SAEJ1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA2000等。
2硬件电路设计
此控制系统主要有三个主要的模块组成,第一步分为单片机模块,第二部分为CAN总线控制器模块,第三部分为通信和外围接口,其主要分为输出和输入接口,使系统构成一个闭环系统,从而实现所需要的控制功能。
系统功能结构图如图1示
图1系统结构示意图
2.1单片机模块
图2为系统单片机模块的电路图
图2单片机模块电路图
本系统单片机选择的是STC89C52,是双列直插式40引脚,其芯片引脚图如图2-4。
STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。
图3STC89C52的芯片引脚图
2.1.1STC89C52主要特性如下:
1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。
2.工作电压:
5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)。
3.工作频率范围:
0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz。
4.用户应用程序空间为8K字节。
5.片上集成512字节RAM。
6.通用I/O口(32个)复位后为,P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片。
8.具有EEPROM功能。
9.具有看门狗功能。
10.共3个16位定时器/计数器,即定时器T0、T1、T2。
11.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒。
12.通用异步串行口(UART),还可用定时器软件实现多个UART。
13.工作温度范围:
-40~+85℃(工业级)/0~75℃(商业级)。
14.PDIP封装。
2.1.2STC89C52RC单片机的工作模式
掉电模式:
典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序。
空闲模式:
典型功耗2mA典型功耗。
正常工作模式:
典型功耗4mA~7mA典型功耗。
掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备。
STC89C52RC引脚功能说明:
VCC(40引脚):
电源电压;VSS(20引脚):
接地。
P0端口(P0.0~P0.7,39~32引脚):
P0口是一个漏极开路的8位双向I/O口。
作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入每个引脚能驱动写入“1”时,可以作为高阻抗输入。
P1端口(P1.0~P1.7,1~8引脚):
P1口是一个带内部上拉电阻的8位双向I/O口。
P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。
P2端口(P2.0~P2.7,21~28引脚):
P2口是一个带内部上拉电阻的8位双向I/O端口。
对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。
P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
P3端口(P3.0~P3.7,10~17引脚):
P3是一个带内部上拉电阻的8位双向I/O端口。
P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。
P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。
RST(9引脚):
复位输入。
当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作。
ALE/ROG(30引脚)地址锁存控制信号:
(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在Flash编程时,此引脚(ROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。
外部程序存储器选通信号(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.2CAN总线控制器模块
CAN总线控制部分的电路图如下所示:
图4CAN总线部分电路图
2.2.1SJA1000简介
本系统选择的CAN控制芯片是SJA1000,它是Philips半导体公司PCA82C200CAN控制(BasicCAN)的替代产品,而且它增加了一种新的操作模式——PeliCAN,这种模式支持具有很多新特性的CAN2.0B协议。
其引脚图及内部功能块图分别如图5和图6。
管脚定义见表1。
图5SJA1000芯片引脚图
图6SJA1000芯片内部引脚图
表1管脚定义
符号
引脚
说明
AD7-AD0
2,1,28-23
多路地址、数据总线
ALE/AS
3
ALE输入信号(Intel模式)AS输入信号(Motorola模式)
/CS
4
片选输入,低电平允许访问SJA1000
(/RD)/E
5
微控制器的/RD信号(Intel模式)或E使能信号(Motorola模式)
/WR
6
微控制器的/WR信号(Intel模式)或/RD(/WR)信号(Motorola模式)
CLKOUT
7
SJA1000产生的提供给微控制器的时钟输出信号,时钟信号来源与内部振荡器且通过编程驱动;时钟控制器寄存器的时钟关闭位可禁止该引脚
Vss1
8
接地
XTAL1
9
输入到振荡器放大电路;外部振荡信号由此输入
XTAL2
10
振荡放大电路输出;使用外部振荡信号左开路输出
MODE
11
模式选择输入
1=Intel模式0=Motorola模式
VDD3
12
输出驱动的5V电压源
TX0
13
从CAN输出驱动器0输出到物理线路上
TX1
14
从CAN输出驱动器1输出到物理线路上
Vss3
15
输出驱动器接地
/INT
16
中断输出,用于中断微控制器:
/INT在内部中断寄存器各位都被置位时低电平有效;/INT是开漏输出,且与系统中的其他/INT是线或的;此引脚上的低电平可以把IC从睡眠模式中激活
/RST
17
复位输入,用于复位CAN接口(地低电平有效);把/RST引脚通过电容连到Vss,通过电阻连到VDD可自动上电复位
VDD2
18
输入比较器的5V电压源
RX0
RX1
19,20
从物理的CAN总线输入到SJA1000的输入到SJA1000的输入比较器;支配(控制)电平将会唤醒SJA1000的睡眠模式;如果RX1比RX0的电平高,就读支配(控制)电平,反之读弱势电平;如果时钟分频寄存器的CBP位被置位,就旁路CAN输入比较器以减少内部延时;这种情况下只有RX0是激活的,弱势电平被认为是高而支配电平被认为是低
Vss2
21
输入比较器的接地端
VDD1
22
逻辑电路的5V电压源
SJA1000控制器中的各个控制块的功能主要有:
1.接口管理逻辑(IML)
接口管理逻辑解释来自CPU的命令,控制CAN寄存器的寻址,向主控制器提供中断信息和状态信息。
2.发送缓冲器(TXB)
发送缓冲器是CPU和位流处理器BSP之间的接口,能够存储发送到CAN网络上的完整信息,缓冲器长13个字节,由CPU写入BSP读出。
3.接收缓冲器(RXB,RXFIFO)
解释缓冲器是验收滤波器和CPU之间的接口,用来存储从CAN总线上接收到的信息,接收缓冲器(RXB13个字节)作为接收FIFO(RXFIFO长64字节)的一个窗口可被CPU访问,CPU在此FIFO的支持下可以再处理信息的时候接收其他信息。
4.验收滤波器(ACF)
验收滤波器把它其中的数据和接收的识别码的内容相比较,以决定是否接收信息,在纯粹的接收测试中所有的信息都保存在RXFIFO。
5.位流处理器(BSP)
位流处理器是一个在发送缓冲器(RXFIFO)和CAN总线之间控制数据的程序装置,它还在CAN总线上执行错误检测仲裁填充和错误处理。
6.位时序逻辑(BTL)
位时序逻辑监视串口的CAN总线和处理与总线有关的位时序,它在信息开头“弱势-支配”的总线传输同步CAN总线位流(硬同步),接收信息时再次同步下一次传送(软同步)。
BTL还提供可编程的时间段来补偿传播延迟时间、相位转换和定义采样点和一位时间内的采样次数。
7.错误管理逻辑(EML)
EML负责传送模块的错误管制。
它接收BSP的出错报告通知BSP和IML进行错误统计。
2.2.2PCA82C250简介
PCA82C50是CAN协议控制器和物理总线间的接口,它主要是为汽车中高速通讯(高达1Mbps)应用而设计。
该器件对总线提供差动发送能力,对CAN控制器提供差动接收能力,完全符合“ISO11898”标准。
2.2.2.1PCA82C250的特性
●完全符合“ISO11898”标准
●高速率(最高达1Mbps)
●具有抗汽车环境中的瞬间干扰,保护总线能力
●斜率控制,降低射频干扰(RFI)
●差分接收器,抗宽范围的共模干扰,抗电磁干扰(EMI)
●热保护
●防止电池和地之间的发送短路
●低电流待机模式
●未上电的节点对总线无影响
●可连接110个节点
PCA82C50的内部结构方框图如图7示。
图7PCA82C50内部结构图
PCA82C250的封装形式及引脚配置如图8示,封装形式为DIP8,表中列出了其各引脚的功能。
表2PAC82C250引脚功能
符号
管脚
功能描述
TXD
1
发送数据输入
GND
2
地
VCC
3
电源电压
RXD
4
接收数据输出
Vref
5
参考电压输出
CANL
6
低电平CAN电压输入/输出
CANH
7
高电平CAN电压输入/输出
Rs
8
斜率电阻输入
图8PCA82C250芯片引脚
PCA82C250的主要功能有:
首先,82C250驱动电路内部具有限流电路,可以防止输出级对电源、地或负载短路,虽然在这种故障条件出现时功耗增加,但不致使输出级破坏。
其次,82C250采用双线差动驱动,有助于抑制恶劣环境下的瞬变干扰。
引脚Rs可用于选择三种不同的工作方式:
高速、斜率控制和待机。
在高速工作方式下,发送器输出晶体管以尽可能快的速度启闭。
在这种方式下,不采用任何措施限制上升和下降斜率,此时,建议使用屏蔽电缆以避免射频干扰问题。
通过将引脚8接地可选择高速方式,对于较低速度或较短总线长度,可用非屏蔽双绞线或平行线作总线。
为降低射频干扰,应限制上升和下降斜率,上升和下降斜率可通过由引脚8至地连接的电阻进行控制,斜率正比于引脚8上的电流输出,若脚8接高电平,则电路进入低电平待机方式,在这种方式下,发送器被关闭,而接收器转至低电流,若检测到显性位,RXD将转至低电平,位控制器应通过引脚8将发送器变为正常方式作为对此条件作出的反应,由于在待机方式下,接收器是慢速的,因此第一个报文将被丢失。
对于CAN控制器及带有CAN总线接口的器件,82C250并不是必须使用的器件,因为多数CAN控制器均具有配置灵魂的收发器件,并允许总线故障,只是驱动能力只允许20-30个节点连接在一条总线上,而82C250支持多达110个节点,并能以1Mbps的速率工作于恶劣电气环境下,利用82C250还可方便地在CAN控制器与收发之间建立光电隔离,以实现总线上各个节点之间的电气隔离。
CAN节点的硬件电路设计主要是CAN总线通信控制器与微处理器之间的接口电路,以及CAN总线收发器与物流总线之间的接口电路设计。
CAN通信控制器是接口电路的核心,它主要完成CAN总线的通信协议,而CAN总线收发器的功能则是增大通信距离,保护系统不受干扰。
2.2.2.2CAN总线设计需要注意的几点
1.物理总线两端的终端电阻RT要匹配,否则CAN总线数据通信的抗干扰性及可靠性会大大的降低;
2.PCA82C250为CAN总线通信控制器与物理总线之间的接口,它可以提供向总线的差动发送能力和CAN控制器的差动接收能力,TXD和RXD引脚分别发送经过驱动后的发送和接收信号,引脚8(RS)可以选择2种不同的工作方式:
当与地相连,则系统将处于高速工作方式,在这种方式下,为避免干扰,最好使用屏蔽电缆作为总线,而在低波特率且总线较短时,一般采用斜率控制方式,上升及下降的斜率取决于RS的阻值,而RS的取值一般在1KΩ~140KΩ较为理想,在这种方式下可以采用双绞线作为总线的物理介质。
本系统采用的就是这种方式,RS采用的是47KΩ的电阻。
3.SJA1000的TX1脚悬空,RX1引脚的电平必须维持在约0.5VCC以上,否则不能形成CAN协议要求的电平逻辑。
4.把STC89C52的X2引脚接SJA1000的外部振荡输入引脚XTAL1,这样就解决时钟同步的问题。
将SJA1000的/INT与STC89C52的INT0相连,这样STC89C52和SJA1000就通过中断方式来进行通信。
在实际的应用中,CAN总线大都用在如汽车和工业现场控制等的环境中,环境对电路的影响很大,所以为减少这些干扰,在设计CAN总线的节点时,通常在电路中使用高速光藕,如6N137等,使SJA1000的TX0与RX0不直接与82C520的TXD和RXD相连,而是通过高速光耦与82C520相连,这样就能很好地实现总线上各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串口电平的需要;第二部分是数据转换通道,由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外围接口
整个系统要实现各种功能就必须要和外围的各种传感器、控制器连接,而要实现这个功能就需要系统上的这个外围接口单元,图10统的外围接口单元:
图10外围接口单元
图2-11中的JX为系统的输出接口,连接系统外的传感器,主要是用来输出数据,而KZ是输入接口,