基于PIC单片机的RS-232转CAN通信适配卡设计

发布者:Qianfeng最新更新时间:2010-01-27 来源: 四川理工学院学报(自然科学版) 关键字:CAN总线  现场总线  PIC单片机  RS-232 手机看文章 扫描二维码
随时随地手机看文章

    CAN总线-控制器局部网(CAN)国际标准(ISO11898)。CAN总线与一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性。其特点可概括如下:CAN为多主方式工作。在报文标识符上,各节点分成不同的优先级。采用非破坏总线仲裁技术。只需通过对报文的标识符滤波即可实现点对点、一点对多点方式传送接收数据。直接通信距离最远可达零10km(速率5kbps以下);通信速率最高可达到1Mbps(此时通讯距离最长为40m)。CAN上的节点数主要取决于总线驱动电路,目前可达110个。报文采用短帧结构,传输时间短,受到干扰的概率低。每帧信息都有CRC校验及其他检错措施,具有极好的检错效果。通信介质可为双绞线、同轴电缆或光纤,选择灵活。节点在错误严重的情况下具有自动关闭输出功能,使得其他节点的操作不受影响。它具有较高的性能价格比。CAN协议是建立在国际标准组织的开放系统互联模式基础上的,由于CAN的数据结构简单,又是范围较小的局域网,因此不需要其他中间层,应用层数据直接取自数据链路层或直接向链路层写数据。结构层次少,有利于系统中实时控制信号的传送。

    本实验通信网络通过CAN总线传输数据,设计的CAN-RS-232通信适配卡,可挂接在通信网络的任一节点位置,对于通过RS-232总线连入CAN网络的PC,可用WINDOWS自带的超级终端或者我们用VC编写的串口操作程序来接收和发送数据,可以实现点对点,及一点对多点的通信,实现CAN协议里的数据帧和远程请求帧的传送所谓远程请求帧就是接收端通过发送远程帧启动其资源节点传送它们各自的数据,板卡还可实现10位精度的A/D转换并将得到的数据通过CAN总线上传给上位机CAN总线系统结构如图1所示:

 

1、系统硬件设计

    板卡电路主要由四部分组成:PIC16F877A单片机、独立CAN通信控制器SJA1000T、CAN总线驱动器TJA1050和RS-232总线驱动器MAX232。主要实现基于CAN总线的数据传输,同时通过RS-232把Pc作为终端接人CAN总线以及采集模拟信号并通过CAN总线上传给上位机。SJA1000T是集成的独立CAN控制器(与PHILIPS早期的CAN控制器PCA82C200完全兼容),它负责完成CAN总线通信协议的物理层和数据链路层的功能。对于微处理器来说,它相当于一个存储器I/O 映象设备。由于CAN控制器和微控制器内部都有自己的时钟产生电路,为了让两者之间协调,外加了10M 晶振在微控制器上作为整个系统的时钟,并将微控制器的时钟输出作为CAN控制器的时钟输入;SJA1000T的中断输出信号/INT接到单片机的INT中断,但也可通过查询方式实现单片机与CAN控制器的通信;为了使CAN控制器和微控制器能同时可靠的复位,外加了手动复位电路。

    PIC16F877A单片机是目前使用非常广泛的中端单片机,在本系统中,它主要是用于控制CAN控制器SJA1000T,对SJA1000T进行初始化和读/写操作以及将从CAN总线或从RS-232总线传来的数据进行打包处 后再转传到RS-232总线或CAN总线上,即对两个总线上的数据流按照协议进行处理和传送。下位机的单片机主要是采集模拟信号并实现A/D转换,并通过CAN总线上传给上位机。

1.1 CAN通信模块

    SJA1000T的AD0~AD7是地址、数据复合总线,与PIC16F877A的PORTD端口相连,即单片机通过SJA1000T的这个并口来传递数据和地址;需要注意的是51系列的单片机有专门的读、写和地址锁存的引脚,而PIC16F877A并没有,所以我们只能用其他端口来模拟控制,在本系统中SJA1000T的ALE、CS、RD 、WR分别与单片机的RC0-RC3引脚相连,即用RC0-RC3来控制SJA1000T的地址锁存、片选和读/写操作。

    TJA1050是CAN 协议控制器和物理总线之间的接口,主要应用在波特率范围从60kbps到1Mbps。TJA1050可以为总线提供差动的发送功能,为CAN控制器提供差动的接收功能,而且完全符合ISO11898标准。CAN控制器SJA1000T通过一条串行数据输出线TxD 和一条串行数据输人线RxD 连接到CAN总线驱动器TJA1050,而TJA1050则通过两个有差动接收和发送能力的总线终端连接到CAN总线。总线终端为120欧的电阻,其作用为匹配总线阻抗,提高数据通信的抗干扰性及可靠性。CAN通信模块的原理图见图2。

 

1.2 RS-232模块

    RS-232标准是美国EIA电子工业联合会制定的一种串行物理接口标准,广泛用于汁算机与终端或外设之间的近端连接 完整的RS-232接口有25根线,一般在计算机串口采用简化的9芯插头座:工作时,应保证电平在±(5-15)V之问。因此为了能够同计算机或控制器的TTL器件连接,必须在RS-232与TTL电路之问进行电平和逻辑关系的变换。常用的转换芯片是MAX232。MAX232内部有电压倍增电路和转换电路,只需5V电源便可实现TTL电平与RS-232电平转换。RS-232模块的原理图见图3。

 

1.3 A/D转换模块

     PIC16F877A单片机自带有8路模拟通道,转换精度为10位。本适配卡选择RA0为模拟通道。板卡将A/D转换后的数据通过CAN总线上传给上位机。

1.4 数据流

    CAN-RS-232的数据流图见图4。

 

2、系统软件设计

    软件设计分为两大块:板卡底层软件设计和PC机上串口操作软件设计。板卡底层软件设计主要是对PIC16F877A编程,用于把从PC机通过串口输人给单片机的数据按照CAN协议帧结构进行打包处理,并操作CAN控制器把数据发送到CAN总线;把从CAN总线上输入的数据转换成串行数据输出给PC机:PC机上串口操作软件设计主要是对串口的操作和通过串口收发数据。

2.1单片机编程

    开发工具使用的是MPLAB集成开发环境(IDE),它是综合的编辑器、项目管理器和设计平台,适用于使用Microchip的PICmicro系列单片机进行嵌入式设计的应用开发;编程语言用的是C语言,将HITECH 公司的PICC编译器直接挂接在MPLAB-IDE集成开发平台下,实现一体化的编译连接和原代码调试。

    CAN控制器SJA1000T片内有模式寄存器MOD、命令寄存器CMR、状态寄存器SR、中断寄存器IR、中断使能寄存器IER、接收缓冲器RXB、发送缓冲器TXB、仲裁丢失捕捉寄存器ALC、错误代码捕捉寄存器ECC、错误报警限额寄存器EWLR、错误计数寄存器ERR、验收代码寄存器ACR、验收屏蔽寄存器AMR、总线时序寄存器BTR、输出控制寄存器OCR和时钟分频寄存器CDR等,单片机就是通过读写这些寄存器来实现对SJA1000T的控制,从而实现CAN报文的接收和发送。文后给出CAN控制器SJA1000T初始化和接收子程序的流程图。下面给出CAN初始化程序,其中WRCAN是自定义的一段对SJAIO00T写数据的子程序。

C程序

void CANINI()

{

WRCAN(MODE,0x09); //进入复位模式,选择单向滤波方式,对SJA1000T进行初始化

WRCAN(CDR,0x88); //选择PeliCAN模式,关闭CLKOUT

WRCAN(IER,0x0D); //中断允许寄存器

//以下根据需要对屏蔽寄存器赋初值,将位设为1表示DON'T CARE,设为0表示CARE

WRCAN(AMR0,0x00);

WRCAN(AMR1,0x00);

WRCAN(AMR2,0xFF);

WRCAN(AMR3.0xFF); //因为AMR3的最低两位是不用的,必须置“1”

//以下根据情况为验收代码寄存器赋初值

WRCAN(ACR0,0x00);

WRCAN(ACR1,0x00);

WRCAN(ACR2,0xFF);

WRCAN(ACR3,0xFF); //ACR,AMR各位设为1,是为了允许任何数据通过滤波器的验收

WRCAN(BTR0,0x03); //总线定时寄存器

WRCAN(BTR1,0xFF); //设置波特率为50kbps

B=fXT/[2*BRP*(1+Tseg1+Tseg2)]

WRCAN(OCR,0xAA); //输出控制寄存器

WRCAN(RBSA,0x00); //接收缓存寄存器FIFO的起始地址为0

WRCAN(TXERR,0x00); //清除发送错误寄存器

RDCAN(ECC); //清除ECC,因为ECC是只读不能写的,当被读出时,其相应位即被清除

WRCAN(MODE,0x08); //设为单滤波方式,并返回工作状态

return;

}

void WRCAN(address,data) //向SJA1000T的寄存器写入数据

unsigned char address;

unsigned char data;

{

PORTC=0x0D; //RC3=1;RC2=1;Rc1=0;RC0=1;即ALE置1,则锁存地址,其余端口参考时序图

PORTD=address;

PORTC=0x04; //RC0=0;RC1=0;RC2=1;RC3=0;即ALE置0,则传输据.进入写方式,其余端口参考时序图

PORTD=data; //将数据写入端口D

PORTC=0x0E; //RC3=1;RC2=1;RC1=1;RC0=0;各端口还原

}

关键字:CAN总线  现场总线  PIC单片机  RS-232 引用地址:基于PIC单片机的RS-232转CAN通信适配卡设计

上一篇:Microchip推出具3.5 KB可自编程闪存的8引脚MCU
下一篇:基于PIC单片机的墨斗操作台系统的设计

推荐阅读最新更新时间:2024-03-16 12:28

为什么要使用CAN总线
在这个竞争激烈的大市场中,新产品的推出速度与产品的可靠性能决定了是否可取得预想的效果,这就对我们的产品研发人员提出了更高的要求,而有时选择了一个正确的方向便将得到事半功倍的效果。 当你接到一个多设备协同作业的系统设计任务是,通讯方案的选择便显得至关重要,是用传统的RS485,还是用同样已被广泛使用的CAN总线通信,也许将给你带来完全不一样的开发感受,下方我们将对这两个通讯方式做一个比较,以便大家更好的做好方案的设计。 RS485接口标准特点: (1)RS-485的电气特性:逻辑 1 以两线间的电压差为+(2-6)V表示;逻辑 0 以两线间的电压差为-(2-6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片
[电源管理]
为什么要使用<font color='red'>CAN总线</font>
CAN总线K75系列产品在车库控制管理中的应用
机动车车库管理控制系统   一. 使用需求   1.车库内共有70个车位,每个车位入口设门, 应有控制开门,关门的控制信号。同时,还应检测每个车位是否有车,车位门状态是打开还是关闭。   2.设置一个集中管理站,由车库管理员统一管理整个车库的车辆入出状况,各车位空闲情况,远程管理各车位门的开闭。   3.对全车库车位的使用情况实时统计,记录各车位的车辆进入离开时间,并保留记录一定时间,以便于管理。应有车辆收费管理功能。   二. 方案   根据上述需求,考虑如下方案   1.在每个车位空间内安装一个红外反射式光电检测器来检测是否有车辆停入,检测器依此发出有,无的开关量信号。在车位门的适当位置安装红外检测开关来检测车位门的开关位置并发
[嵌入式]
基于C8O51FO4O的CAN总线中继器设计与实现
 0 引言   20世纪80年代初,德国BOSCH公司提出了控制器局域网(Controller Area Network,CAN)来解决汽车内部的信号传输问题。由于CAN总线优良的稳定性和实时性能、成熟的仲裁和同步技术,加上开放式总线结构、短报文高速通讯、远程通讯能力、硬件CRC超强的纠错和扩展功能,以及控制简单、应用成本低等优点,已经被越来越多地应用到分布式远程自动控制、安全监控及电力系统等网络控制系统领域,并被公认为最有前途的现场总线技术之一。   中继器是网络物理层的一种介质连接设备,可以将同一层的两段网络进行互连,也可以实现上下层不同总线的互连,起到网桥和网关的作用。在大中型远程的CAN总线系统中经常会使用到中继器,主
[单片机]
基于C8O51FO4O的<font color='red'>CAN总线</font>中继器设计与实现
现场总线系统技术在汽车生产物流管理中的应用
一、引言     以计算机在工业控制和管理中的应用为主要标志的工业自动化技术在过去20年间有了长足的进步。进入20世纪90年代以来,作为工业控制数字化、智能化与网络化典型代表的现场总线(Field Bus-FB)技术发展迅速、影响巨大,引起了工程技术界的普遍兴趣与重视,被誉为工业自动化领域具有革命性的新技术。     随着物流管理的迅猛发展,物流管理理念很快进入汽车制造行业,而企业生产物流的管理又是现代物流管理环节中的重要一环。对于一个汽车制造企业如何高效而有序组织各个生产车间各工位材料并及时送到指定地点是十分重要的。近年来国际上流行的汽车生产物流系统就是专门用于现代化生产现场的对流量、物料、质量、设备测量和监控的信息
[嵌入式]
PIC单片机定时中断
#INCLUDE P16F877.inc ORG 000H GOTO A1 ORG 004H;定时中断入口地址 GOTO ZD01; ORG 0CH A1 MOVLW 1;位1显示数 MOVWF 50H; MOVLW 2;位2显示数 MOVWF 51H; MOVLW 3;位3显示数 MOVWF 52H; MOVLW 4;位4显示数 MOVWF 53H; MOVLW 4;显示位数 MOVWF 40H; MOVLW B'00000001';位码 MOVWF 41H; MOVLW 50H; MOVWF FSR ;间接寻址 BSF ST
[单片机]
PIC单片机之I2C(从模式)
网上有许多讲解单片机 实现I2C主模式,但是从模式的很少。我现在就来讲讲PIC单片机使用MSSP模块实现I2C从模式。 有关I2C协议的具体介绍可以看 《PIC单片机之I2C(主模式)》,我们这里直接讲解实例 实例讲解:我们模仿 AT24C02 EEPROM 的协议。让一个主模式的单片机,来读取从模式单片机的数据。 下面为AT24C02的随机地址读取的协议。 第一个字节 :输入7位地址和一位的写状态位, 第二个字节:然后写入EEPROM数据地址, 第三个字节:输入7位地址和一位的读状态位, 第四~N个字节:读出的EEPROM的数据。 我们来讲解下程序的基本思路:我们使能了MSSP中断,即是I2C接收中断,当PI
[单片机]
<font color='red'>PIC单片机</font>之I2C(从模式)
基于CAN总线汽车车身视觉检测站的研究
    摘要: 研究CAN总线和多主机控制在汽车白车身视觉监测站中的应用;提出以采用摩托罗拉MC68HC05X16和微机为主机的多主机分布式控制系统;介绍控制网络的物理层接口及有关硬件,并对通信部分进行较为详细的研究。     关键词: 视觉检测 三维测量 分布式控制 控制器局域网 数据通信 前言 汽车车身视觉检测站是用于测量车身关键点的三维空间坐标的大型的专用检测系统。它由机械及定位系统、三维视觉传感器系统、测量控制与接口系统、标定系统以及计算机软件五大部分组成。主要方法采用结构光传感器,经标定系统标定后,通过控制系统选取被测点,采集图像,结合视觉检测算法,求出被测点坐标参数。为进行测量,必须把计算机与
[应用]
基于CAN总线的智能照明控制系统
随着经济建设的日益发展和社会物质文化水平的不断提高,人们开始追求灯光艺术带来的美的享受,注重照明和其他相关设备、系统的整体控制效果。照明控制系统的安装便捷性、可靠性和经济性已经成为关注的热点。智能大厦内需大量的灯光照明设备,传统的控制方法是将被控制的设备用连线引入控制室,这样不仅造成电力电缆铺设过多,增加了投资成本,而且还大大增加了灯回路的辐射干扰,对空间电磁环境造成了污染。智能照明控制系统为智能办公大厦的照明提供了新途径。   随着微机控制技术的发展,出现了微机型灯光控制系统。它采用网络控制技术,使得照明灯的电力线路可以不再经过控制室,而直接引入顶棚或马道。这种控制方法不仅可以方便地控制灯光的亮度,还减少了电力线路及相应设施投资,
[工业控制]
基于<font color='red'>CAN总线</font>的智能照明控制系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved