×
单片机 > 单片机程序设计 > 详情

基于ATMEGA128的CAN-GPRS网关设

发布时间:2020-06-12 发布时间:
|

1.   引言

CAN(Controller Area Network)即控制器局域网,属于工业现场总线的范畴。CAN总线与一般的通信总线相比,数据通信具有突出的可靠性、实时性和灵活性,其应用范围已扩展到自动控制、航空航天、机械工业及传感器等领域。

GPRS(General Packet Radio Service)是通用分组无线业务的简称。相对原来GSM的拨号方式的电路交换数据传送方式,它是一种基于第二代移动通信系统GSM的无线分组交换技术,提供端到端的、广域的无线IP连接。具有“实时在线”、“按量计费”、“快捷登录”、“高速传输”的优点。www.51kaifa.com

随着GPRS移动通信技术的成熟,通过CAN-GPRS网关将CAN现场设备网和远程技术控制中心联系起来,使远程技术控制中心具备了对CAN现场设备网的即时反应、远程监测以及远程诊断的能力。

2.   CAN-GPRS网关硬件电路设计

2.1  系统硬件结构框图

图 1 CAN-GPRS网关原理框图

       CAN-GPRS网关由CAN收发器、CAN控制器、微控制器、RS-232接口、GPRS模块组成。原理如图1所示。微控制器对CAN和RS-232接口的数据进行处理与转发实现网关的功能。

在本文的应用中,CAN现场设备网包括CAN主控器和CAN设备,网络通信包含三种数据,CAN主控器发送的命令数据,CAN设备发送的设备数据和心跳数据。CAN-GPRS网关对CAN现场设备网的数据进行监听,对CAN设备发往CAN主控器的心跳数据和CAN主控器发往CAN设备的命令数据进行过滤,而只让CAN设备发送的设备数据通过GPRS网络传输至远程技术控制中心。远程技术控制中心则通过GPRS网络将命令数据转发至CAN现场设备网。www.51kaifa.com

2.2  系统硬件电路设计

本文采用ATMEGA128作为系统微控制器,ATmega128为基于AVR RISC结构的8位低功耗CMOS微控制器,具有128K字节的系统内可编程Flash,4K字节的内部SRAM,4K字节的内部EEPROM,使得系统无需外扩ROM和RAM即可实现网关的功能。CAN控制器采用应用非常广泛的PHILIPS半导体的独立CAN控制器SJA1000。CAN收发器采用 PHILIPS的TJA1040,在功能上TJA1040是PCA82C250/251高速CAN收发器的后继产品。ATMEGA128与SJA1000 以外部总线方式连接。SJA1000的8位数据/地址复用总线、控制总线分别与ATMEGA128的数据/地址复用总线、控制总线连接;ATMEGA128高8位地址总线的A8位经74F04反向后连接至SJA1000的片选引脚;SJA1000的中断输出引脚是开漏输出,通过上拉电阻连接至ATMEGA128的INT0引脚。ATMEGA128与SJA1000接口电路图如下图所示:www.51kaifa.com

ETPro++ GPRS模块是一款内嵌TCP/IP协议的GPRS Modem,通常适用于不具备TCP/IP协议栈的单片机系统。ETPro++ GPRS模块的硬件接口为RS-232接口。ATMEGA128的UART0经MAXIM3232电平转换后与ETPro++ GPRS模块的RS-232接口连接。具体接口电路图如下图所示:www.51kaifa.com

图3  ATMEGA128与MAX3232接口电路图

3.   CAN-GPRS网关软件程序设计

3.1  引入μC/OS-II实时操作系统

CAN-GPRS网关对系统的实时性和可靠性要求较高,在系统中嵌入μC/OS-II将增强系统的实时性和可靠性。采用 μC/OS-II 实时操作系统简化了设计过程,把应用程序代码分割成单独的任务,所有时间占重要地位的事件可以尽可能快和有效的得到处理。系统包括初始化和任务两大部分。系统初始化又包括微控制器初始化、CAN初始化、GPRS模块初始化。任务包含CAN接收数据处理、GPRS接收数据处理两个任务。

3.2  CAN的初始化

由于需要监听CAN现场设备网所有节点发送的数据,所以对SJA1000的验收屏蔽寄存器(AMR)所有位置位以保证可以接收总线上的所有数据。下面给出这部分的源代码:

INT8U   SJA1000Init(void) www.51kaifa.com

{

if( SJA1000_CREATE_COMMUNATION() )

return FALSE;                     //SJA1000接口出错,返回

if( SJA1000_ENTER_RETMODEL() )

return FALSE;                     //SJA1000进入复位模式出错,返回

SJA1000_SET_OUTCLK(0xaa,0xc8);               //Pelican 模式

SJA1000_SET_BANDRATE(ByteRate_125k);            //设置波特率为125Kbps

SJA1000_SET_OBJECT(0,0xff);                //设置验收代码寄存器、验收屏蔽寄存器 

SJA1000_SET_MOD();               //单滤波器模式

if( BCAN_QUIT_RETMODEL() )

return FALSE;                     //SJA1000退出复位模式出错,返回

      

SJA1000_BCANAdr = (INT8U *)REG_IER;       //访问中断使能寄存器

*SJA1000_BCANAdr = 0xFD;                 //使能接收中断

       return (0);              

}

3.3  GPRS模块的初始化

ETPro++ GPRS模块有两种工作模式,一种是命令模式,一种是SerialNET模式。在命令模式下的通信,期间需要用命令进行干预。而在SerialNET模式下一旦配置好该模式的参数,进入该模式后,就可以直接按设定的参数进行数据传输,而无需再进行干预了。www.51kaifa.com

在本设计中采用的是SerialNET模式。GPRS模块的初始化首先通过UART0发送三个’+’退出在线模式,之后大约等待15秒左右,收到I/ERROR (056)之后即可以向模块发送命令。发送AT+IUP命令上线并建立一个PPP Internet连接开始Internet会话,收到I/ONLINE后即成功上线。再发送AT+I!SNMD 激活SerialNET长连接模式,收到I/DONE即进入serialNET模式,此时则可进行数据传输。(源代码略)

3.4  CAN接收数据处理任务

CAN数据的接收与处理通过外部中断0来实现,当数据接收完成时产生中断,在中断程序中发送CAN信号量通知CAN接收数据处理任务对收到的数据进行处理。其流程图如下(源代码略):

图4  CAN接收数据处理任务流程图

3.5  GPRS接收数据处理任务

GPRS数据的接收与处理通过UART0接收中断来实现,在UART0接收中断程序中发送UART0信号量通知GPRS接收数据处理任务对收到的数据进行处理。不同的是通过UART0将数据转发到CAN接口上,就不再赘述。

4.   结束语

本文设计的CAN-GPRS网关电路简单可靠, 使用方便。现已应用于某工程当中,实际运行状况良好,数据传输稳定可靠,很好的达到了预期设计的效果。

本文作者创新点:采用GPRS模块将CAN现场设备网通过GPRS与远程技术控制中心联系起来,实现了远程技术控制中心对CAN现场设备网的即时反应、远程监测以及远程诊断。

参考文献:

[1] 陈啸呐,贺前华,苏勇.基于LPC2119的RS485-CAN总线转换器设计[J].微计算机信息,2006,5-2:20-22

[2] 饶运涛,邹继军,郑勇芸.现场总线CAN 原理与应用技术[M].北京航空航天大学出版社, 2003

[3] Labrosses Jean J, 袁勤勇等译.嵌入式系统构件[M].机械工业出版社, 2002www.51kaifa.com

[4] Labrosses Jean J, 邵贝贝等译.嵌入式实时操作系统μC/OS II[M].北京航空航天大学出版社,2003

[5] 耿德根,宋建国,马潮,叶勇建.AVR高速嵌入式单片机原理与应用[M].北京航空航天大学出版社, 2001

关键字:ATMEGA128  CAN  GPRS  网关 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项