1 导言
CAN,全称为“Controller Area Network”,即操控器局域网,是一种国际规范的,高性价的现场总线,在自动操控范畴具有重要作用。CAN是一种多主方法的串行通讯总线,具有较高的实时功用,因而,广泛使用于汽车工业、航空工业、工业操控、安全防护等范畴。
由于PC机无CAN接口,因而,PC机与智能节点构成CAN总线体系可选用RS232/CAN、并口/CAN、USB/CAN、ISA卡/CAN以及PCI卡/CAN方法接入。而选用RS232/CAN接入时,需选用CAN/RS232接口规范转化。针对这一问题,提出了CAN/RS232智能电平转化器规划方案,以SJAl000作为独立CAN操控器,完结CAN通信协议。并在SJAl000与驱动器之间衔接高速光耦,然后完结总线各点间的电气阻隔。
2 硬件电路规划
CAN/RS232智能电平转化器硬件电路主要由微处理器AT89C52、独立CAN通讯操控器SJAl000、CAN总线驱动器82C250、高速光电耦合器6N136、TTL电平与RS232电平转化器ICL232、LED数码管显现电路以及为SJAl000供给初始地址的拨码电路组成,其结构框图如图1所示。
3 CAN操控器SJAlOOO
SJAl000是一款独立CAN操控器,使用于移动方针和工业局域区域网操控范畴。该器材是Philips公司CAN操控器PCA82C200的代替产品。SJAl000具有两种作业形式,本规划选用PeliCAN作业形式。
3.1 SJAl000与AT89C52的接口规划
SJAl000与AT89C52的接口电路如图2所示。AT89C52担任sJAl000的初始化,操控SJAl000来完结数据的接纳和发送等通讯使命。SJAl000的ADO~AD7衔接至AT89C52的P0端口,CS衔接至AT89C52的P3.4(AT89C52的守时器T0不起作用)。当P3.4为0时,AT89C52选中SJAl000,并经过拜访外部RAM低地址区完结P0端口的读/写操作,然后对SJAl000相应寄存器履行读/写操作。SJAl000的RD、WR、ALE引脚别离与AT89C52的对应引脚相连,SJAl000的INT引脚接AT89C52的INTO引脚。AT89C52还可经过中止方法拜访SJAl000。为了增强体系的稳定性,选用双晶体振荡器,AT89C52选用11.059 2 MHz的晶体振荡器,SJAl000选用16 MHz的晶体振荡器。复位电路可选用DSl232,其输出引脚ARES与SRES别离与AT89C5l的RESET引脚和SJAl000的RESET引脚相连。
3.2 SJAl000与驱动器的衔接
SJAl000的TX0、RX0引脚不是直接与82C250的TXD、RXD引脚相连,而是经过高速光耦6N136与82C250相连,这样可增强CAN总线节点的抗干扰才能,然后完结总线各节点间电气阻隔。高速光耦6N136用于维护SJAl000型CAN总线操控器,该光耦两边选用5 V的DC―DC电源.可使器材的VCC与VCCl彻底阻隔,进步体系的抗干扰才能以及节点的稳定性和安全性。图3所示为SJAl000与CAN驱动器82C250的衔接电路。
4 软件程序规划
体系软件程序规划包含:主程序、CAN节点初始化子程序、RS232报文发送子程序、RS232报文接纳子程序、CAN报文接纳子程序以及CAN报文发送子程序。其主程序流程图如图4所示。
4.1 CAN节点初始化
独立CAN操控器SJAl000有必要在上电或硬件复位后设置CAN通讯。上电后SJAl000的17引脚得到一个复位电平(低电平),使其进入复位形式。初始化包含设置作业方法、接纳滤波方法、接纳屏蔽寄存器和接纳代码寄存器、波特率参数和中止答应寄存器。初始化设置完结后,SJAl000则进入作业状况,开端履行通讯使命。
SJAl000寄存器初始化,首先要将其形式寄存器(MOD)复位形式方位为l,再经过时钟分频寄存器(CDR)挑选PeliCAN作业形式,一起封闭时钟输出(CLOCKOUT);经过中止答应寄存器(IER)敞开发送中止、溢出中止和过错正告中止;向接纳屏蔽寄存器(AMR)和接纳代码(ACR)寄存器赋初值;经过总线守时寄存器0 (BTR0)和总线守时寄存器1(BTRl)设置波特率;为输出操控寄存器(OCR)赋初值;经过接纳缓冲器开始地址寄存器(RBSA)来设置接纳缓冲器FIF0的开始地址;铲除发送过错计数寄存器(TXERR);铲除过错代码捕捉寄存器(ECC),最终再次挑选方法寄存器(MOD),设置单滤波,并回来作业状况。
4.2 RS232报文发送
AT89C52内含一组全双工串行传输界面,可一起接纳或传输外部数据,其信号为TTL电平。由于与规范的RS232界面不兼容,须加电平准转化IC才可与RS232相连。AT89C52串行发送及接纳数据均是经过特别功用暂存器SBUF完结,在设定通讯协议形式后,经过指令“MOV SUBF,A”就可将存储在SBUF暂存器内的数据由引脚TXD串行传输。
4.3 RS232报文接纳
AT89C52串行传输操控暂存器是由特别操控暂存器SCON操控,SCON设定串行传输作业形式,发送接纳时其第9位及发送接纳时中止指示作业。经过指令“MOV A,SBUF”则将外界串行信号经由RXD引脚读入,并转化成并排数据存入暂存器A。
4.4 CAN报文发送
依据CAN协议,报文传输是由独立CAN操控器SJAl000完结。主操控器有必要即将发送的数据按特定格局组合成一帧报文传输到发送缓冲器,将指令寄存器中的“发送恳求”置1,然后发动SJAl000发送即可。
4.5 CAN报文接纳
CAN报文接纳子程序担任节点的报文接纳和其他状况的处理。接纳子程序在结构上要比发送子程序杂乱一些,由于在接纳报文时,要对同处理比如总线封闭、过错报警、接纳溢出等状况。SJAl000报文接纳和发送有两种方法:中止方法和查询方法。查询方法应制止接纳中止使能,而中止方法一般用于实时性要求较高的状况。
在中止方法下,假如SJAl000已接纳一个报文,并且报文经过检验滤波器并存入接纳FIFO,则发生一个接纳中止。因而主操控器马上作业,将收到的报文发送到报文存储器中,再经过置位指令寄存器的相应标志“RRB”发送一个开释接纳缓冲器指令。接纳FIF0里的更多报文将发生一个新的接纳中止,因而不能将一切接纳FIF0中的有用信息在一个中止周期内读出。接纳缓冲器开释后,SJAl000会查看状况寄存器中接纳缓冲器状况(RBS)是否有更多报文,一切有用信息都将循环读出。
5 结语
本体系规划选用SJAl000作为CAN独立操控器,以CAN/RS232智能电平转化器为实例,论说了CAN总线与单片机之间的接口衔接,对CAN总线的实践使用具有必定的参考价值。