张国志 齐晓娜
【摘要】 介绍了一种基于C8051F502单片机的CAN总线和串口转换电路,介绍了电路的基本器件选型,并对软件的设计思路与流程进行了详细描述。通过测试,证明此种转换方式高速可靠,可广泛应用。
【关键词】 C8051F502 CAN总线 串口
Based on MCU of CAN bus and serial port conversion circuit design
Zhang Guo-zhi Qi Xiao-na(The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)
Abstract: Introduced a C8051F502 microcontroller based on the CAN bus and serial port conversion circuit, this paper introduces the basic components of the circuit selection, and the design idea and process of software were described in detail. Through test that this kind of transformation way high-speed and reliable, and can be widely used.
Keywords: C8051F502:CAN Bus; serial port
一、引言
CAN总线[1] 是国际上应用最广的现场总线之一,适用于大数据量短距离或者长距离小数据量通信,实时性要求比较高的现场中使用。目前CAN总线已经广泛应用于工业控制领域。在工业控制领域还有一种应用的相当广泛的通信方式即串口通信,串口有多种通信标准和接口形式,如RS-232、RS-422、RS-485等,各种形式接口的管脚数量和定义也不尽相同。不论哪种形式,均用来进行设备通信。相比较CAN总线方式,串口通信只能实现点对点通信,多个设备需要互相通信时需要有专门设备实现协议转换,而CAN总线则不存在此问题,总线上的所有设备均能互相通信,因此设计一种CAN总线到串口转换电路,可将没有CAN总线接口的串口设备转换为CAN总线,减少设备数量,降低走线复杂程度。
二、硬件设计
本电路由单片机模块、CAN接口模块、串口转换模块组成,模块框图如图1所示:
单片机模块选用Silicon Labs公司的C8051F502单片机[2] ,该单片机是完全集成的混合信号片上系统型MCU,其集成了CAN控制器和串行接口,因此只需要很少的外围电路就可实现系统功能。该单片机具有看门狗,能够防止程序跑飞,提高系统健壮性。
CAN接口模块选用TJA1040,将C8051F502单片机的CAN信号转换为差分信号以便接入系统总线当中。为提高抗干扰能力,使用光电隔离芯片(6N137)进行信号隔离 。
串口转换芯片选用Max3160,通过进行端口配置,即可方便的实现RS232,RS422和RS485电平的转换。
三、系统软件设计
系统软件主要划分为系统初始化模块、CAN接口收发模块、串口收发模块和协议转换模块。程序编写使用了 C8051F502单片机提供的Silicon Laboratories IDE开发套件,集成KEIL的C语言编译器进行编译。程序编写完成后使用下载器直接进行程序加载与在线调试。
3.1系统初始化
系统上电后首先进行初始化,单片机初始化流程如图2所示:
系统初始化包括看门狗设置、时钟源设置、输入输出端口设置、串口初始化、CAN初始化等。具体如下:
a)看门狗初始化:允许看门狗,设置复位时间;
b)时钟初始化:在本系统中将内部晶振作为系统时钟(24MHz);
c)输入输出端口初始化:C8051F502的端口可配置为推挽式和开漏式两种,在本系统中设置为推挽方式,当配置为推挽方式工作时向端口写逻辑“0”,引脚被拉倒数字地;
d)串口初始化:设置串行口工作方式、设置波特率,校验方式,起始位,停止位,允许响应中断;
e)CAN初始化:设置CAN总线波特率,发送和接收消息对象初始化;
f)定时器初始化:设置定时器0为10ms定时,程序中所有的定时任务均由定时器0完成;
g)完成初始化,开启中断。
3.2 CAN总线接收和发送处理
CAN总线的接收处理采用中断方式,中断处理流程如图2所示。
3.3串口接收和发送处理
串口接收处理同样采用中断方式,中断处理流程如图3所示。
3.4协议转换处理
协议转换模块主要是实现串口和CAN口的数据协议重新封装。在CAN接收模块中,接收到的数据帧是由发送者ID和具体协议内容组成,协议转换模块将ID和具体内容进行打包,组成一帧数据交由串口发送模块进行发送。在串口接收模块中,根据串口收到的数据内容,将数据组成CAN标准帧,并通过CAN总线发送的指定ID上去。
四、结语
本文使用了带CAN控制器的C8051F502单片机,搭建了一款CAN总线与串口转换电路,并编写了相应的程序。经过实际测试,可实现串口与CAN总线的数据互通,且总线频率在250K是无丢帧现象。此设计电路简单,抗干扰能力强,故可广泛应用于工业控制领域。
参 考 文 献
[1] 邬宽明. CAN总线原理和应用系统设计[M]. 北京航空航天大学出版社, 1996.
[2] 蔡华锋, 廖冬初, 潘健. C8051F040中CAN控制器的应用[J]. 单片机与嵌入式系统应用. 2005(1): 55-58.