微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > CAN总线及其在UPS网络监控系统中的应用

CAN总线及其在UPS网络监控系统中的应用

时间:06-09 来源:互联网 点击:

速光耦6n137

为了增强can总线节点的抗干扰能力,sja1000 的tx0和rxo并不是直接与82c250的txd和rxd相连,而是通过高速光耦6n137后与82c250相连,这样就很好的实现了总线上各can节点间的电气隔离, 不过应该特别说明的一点是光耦部分电路所采用的两个电源vcc和vdd必须完全隔离,否则采用光耦也就失去了意义,电源的完全隔离可采用小功率电源隔离模块或带多5v隔离输出的开关电源模块实现,这些部分虽然增加了节点的复杂但是却提高了节点的稳定性和安全性;

(4)82c250与can总线的接口部分

采用了一定的安全和抗干扰措施。82c250 的canh和canl引脚各自通过一个5ω的电阻与can总线相连,电阻可起到一定的限流作用,保护82c250免受过流的冲击;canh和canl与地之间并联了2个100pf的电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力;在两根can总线接入端与地之间分别反接了一个保护二极管,当can总线有较高的负电压时,通过二极管的短路可起到一定的过压保护作用。

3 系统简介

系统的结构图如图2所示。

图2中本地pc监控机及远程网监控机完成对该系统的数据实时监视及控制;显示监控模块在系统的面板上,与ups1、ups2、ups3(仅列举3个,实际做到6个)通过can总线组成canbus网络,显示监控模块主要通过can总线完成对下面各ups相关数据的采集,并与系统机显示模块、本地pc监控机、远程网监控机进行通信;ups1、ups2、ups3为本系统的可单独运行供电的不间断电源。canbus网络通过can_h和can_l及外加在两端的电阻rt(rt=124ω)组成,其上的节点can_h和can_l分别接在canbus网络的can_h和can_l上,目前canbus网络上最多可接110个节点。

鉴于本系统的要求,ups1、ups2、ups3及显示监控模块的控制芯片均采用ti公司生产的tms320f240dsp,can控制器采用philip公司生产的sja1000t。

3.1 dsp与can总线控制器硬件接口

dsp与can控制器sja1000t之间的接口电路如图3所示。

sja1000t的存储空间映射在微控制器dsp的i/o空间,对sja1000存储空间的寻址必须用指令in和out。在intel方式下读写sja1000时,地址和数据是分时传送的,地址在前,数据在后。根据dsp对外设端口的逻辑时序及sja1000t要求的读写逻辑时序,除了dsp的基本读写引脚we、w/r外,我们还选用a14、a15、is为控制脚,控制sja1000地址空间和数据空间的选通,当a15=1、a14=0时为地址空间,选通ale和cs;当a15=1、a14=0时为数据空间,此时对于dsp来说,写则选通sja1000t的wr和cs, 读则选通sja1000t的rd/w和cs,从而完成了dsp与sja1000t之间的数据传递。

另外,由于接收数据采用中断方式,故在dsp上选用外部中断xint1作为中断源,而sja1000t是低有效,故通过一个上拉电阻接vcc。

4 can通信网络软件设计

单个can节点通信的功能主要是将本节点的数据信息传送给can通信网络其它节点,以及接收网络上其它节点传送来的信息。can总线单个节点的软件设计主要包括三大部分:can节点初始化、信息的发送和信息的接收。设计时将can初始化、发送信息(数据和远程帧)设计为子程序,发送信息采用查询方式,接收信息采用中断方式。

(1) 初始化子程序

sja1000的初始化只有在复位模式下才可以进行,初始化主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器amr和接收代码寄存器acr的设置、波特率参数设置和中断允许寄存器ier的设置等。在完成sja1000的初始化设置以后,sja1000就可以回到工作状态,进行正常的通信任务,其源程序如下:
data_can .set 0c000h
dress_can .set 8000h
can_start:
ldp #4
splk #0,temp ;控制寄存器(mod)设置
out temp,dress_can
splk #1bh, temp ;复位模式
out temp,data_can ;sja1000进行初始化
splk #0, temp
out temp,dress_can
in temp,data_can
bit temp,bit0
bcnd can_reset,ntc
splk #4,canflag ;设置验收代码寄存器
out temp,dress_can
splk #01h,canflag
out temp,data_can
splk #5, temp ;设置验收屏蔽寄存器
out temp,dress_can
splk #000h, temp
out temp,data_can
splk #31, temp ;设置时钟分频寄存器(cdr)
out temp,dress_can
splk #48h, temp ;选择basiccan模式,关
;闭时钟(clkout)
out temp,data_can
splk #6, temp ;设置总线定时寄存器0
out temp,dress_can
splk #0c4h, temp ;tscl=10tclk,tclk为xtal
;的频率周期(20mhz)
out temp,data_can ;不同总线控制器的时钟
;振荡器间的相对偏移为0
splk #7, temp ;设置总线定时寄存器1
out temp,dress_can
splk #0beh, temp ;设置tsyncseg=tscl,
;ttseg1=15tscl,ttseg2=4tscl
out temp,data_can ;位周期为20tscl,故在
;20mhz晶振情况下,设置波特率为100kbps
splk #8, temp ;设置输出控制寄存器
out temp,dress_can
splk #1ah, temp ;正常输出模式
out temp,data_can ;tx1悬空,tx0推挽式
can_work ldp #4
splk #0, temp ;设置模式寄存器(mod)
out temp,dress_can
splk #1ah, temp ;设置双滤波接收方式,并
;返回工作状态
out temp,data_can
splk #0, temp
out temp,dress_can
in temp,data_can
bit temp,bit0
bcnd can_work,tc
ret

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top