基于ATMEGA128的CAN-GPRS网关设

发布者:omega34最新更新时间:2012-01-07 关键字:ATMEGA128  CAN  GPRS  网关 手机看文章 扫描二维码
随时随地手机看文章

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  网关 引用地址:基于ATMEGA128的CAN-GPRS网关设

上一篇:基于AVR单片机的电力投切装置开发
下一篇:AVR单片机在多回路数据采集器中的应用

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

can总线(二)--如何测量can总线的波特率
这两天在研究车载can总线,因为对于车上的can总线的接口以及波特率没有对应的资料可查(不同的车接口都不一样,波特率也可能不同), 做一想要从车上测出can总线上的数据还不太容易。 于是我首先使用示波器(我使用的示波器型号是TDS 220)来找出汽车上can总线的接口,然后测出can总线的波特率,测量波特率的步骤如下: 1、将示波器的两个接口(接地和探头)分别接在can总线的两条线(CAN_H和CAN_L)上,这里需要注意如果CAN线上需要接一个120欧姆的负载电阻,否则波形是不规整方波,接上负载之后才是规整的方波。 2、此时如果can线上有数据,则会在示波器上显示出方波如图1所示。(这里使用示波器的RUN/STOP按
[测试测量]
<font color='red'>can</font>总线(二)--如何测量<font color='red'>can</font>总线的波特率
巧妙使用MicroScanner 2定位电缆故障的物理位置
员工小黄昨天没有上班,今天他突然发现电脑上不了网了。工程师小王接上自己的笔记本电脑也上不去,换个根跳线仍然无法上网。小王到机房更换了配线架上的跳线后,问题仍然无法解决。 小黄用能手通断仪测试了一下,发现八个灯都不亮,这说明电缆芯断了。于是,小王用FLUKE二代MicroScanner2电缆验测仪进行了测试,设备提示这根电缆总共76米长,在距离点40米的地方发生了短路。原来,昨天隔壁新来的公司装修施工,钉钉子的时候将墙体内的线缆钉短路了。问题得以顺利解决。 案例分析: 装修时造成线缆短路和断路的原因之一,其他常见的原因还有建筑物漏雨、打线时多余线段没有清理干净、扩容和调整用户线路、使用了错误的跳线、重物搬运或随意堆放损伤了电缆
[测试测量]
巧妙使用MicroS<font color='red'>can</font>ner 2定位电缆故障的物理位置
Littelfuse新推汽车用瞬态抑制二极管阵列,可保护CAN BUS线路
符合PPAP与AEC-Q101标准的装置可最大限度地提高汽车电子产品应用的可靠性 中国,北京,2018年3月21日讯 - Littelfuse公司作为全球电路保护领域的领先企业,今天推出了符合AEC-Q101标准的瞬态抑制二极管阵列系列。该产品经过优化设计,可用于保护汽车控制器局域网(CAN)线路免受因静电放电(ESD)、电气快速瞬变(EFT)和其他过电压瞬变造成的损坏。 AQ24CANFD系列瞬态抑制二极管阵列 AQ24CANFD系列瞬态抑制二极管阵列可在高于业内标准所规定最高级别的情况下,安全地吸收反复性ESD放电,而性能不会减退,并可在极低的箝位电压下安全地耗散3A浪涌电流。 与越来越多专为汽车电子产品应用设计
[电源管理]
CAN现场总线通信控制协议的仿真及性能分析
  控制器局域网(CAN)属于现场总线的范畴,是一种有效支持分布式控制系统的串行通信网络。它是由德国博世公司在20世纪80年代专门为汽车行业开发的一种串行通信总线。由于其通信速率高、工作可靠、调试方便、使用灵活和性价比高等优点,己经在汽车业、航空业、工业控制、安全防护等领域中得到了广泛应用,被公认为几种最有前途的总线之一,其协议也发展为重要的国际标准。   随着CAN总线在各个行业和领域的广泛应用,其通信性能也越来越受到人们的关注。目前,已有很多学者对CAN总线通信性能进行分析研究。文中在分析CAN总线通信控制协议的基础上,在MATLAB/Sinulink软件Stateflow仿真环境下,利用有限状态机理论对CAN总线通信
[嵌入式]
基于LPC2292微控制器和CAN控制器实现车辆行驶监控系统的设计
1 终端功能 本监控终端除了具有传统的记录仪所拥有的事故分析功能外,还能在汽车驾驶员超速行驶时发出超速报警声,以提醒驾驶员减速行驶,并详细记录车辆每次的开车时间、行驶里程、行驶时间、最高车速,以及每次最高车速的持续时间,方便交通管理部门根据所记录的有关数据对车辆进行有效的管理;同时,该设备可实现多种信息处理,显示汽车状况,进行自我诊断,对车速、发动机转速、水温、油压、刹车气压、轮胎压力和蓄电池电压等一系列参数进行有效监控;通过控制发光二极管、液晶显示、蜂鸣器等报警手段,为司乘人员提供直接的汽车状况信息并发出各种超限情况的报警等,可有效防范和化解车辆事故的发生。另外,终端具有GPRS和GPS模块,可将各种监测数据实时传至公司管理中心
[单片机]
基于LPC2292微控制器和<font color='red'>CAN</font>控制器实现车辆行驶监控系统的设计
【开箱测评】搭载NVIDIA Jetson系列的工业级边缘AI网关:研华EPC-R7200
用过NVIDIA Jetson的开发者都知道,Jetson本身是一片系统模块(System on Module, SOM),但会搭配连接一片载板(Carrier Board),使其成为完整的电路系统,而后能用于学习、开发验证,一旦开发验证完,依据不同应用的需要,Jetson模块可弹性搭配不同的载板,例如换成可连接多个摄像头的载板,以便于视频监控、或换成有CAN Bus界面的载板,以便用于车载系统。 选定载板后,接下来就是镶嵌到实际应用环境或应用系统中,环境可能是开阔的农场或桥梁下方,系统可能是无人机或无人搬运车,这时电路系统必须选择一个机构外设,或镶嵌到飞行器、搬运车原有的机箱外壳内,或为此变更机箱外设设计等。 满足边缘A
[工业控制]
【开箱测评】搭载NVIDIA Jetson系列的工业级边缘AI<font color='red'>网关</font>:研华EPC-R7200
Canalys:2020年Q1印度智能手机市场,中国73%份额遥遥领先
市调机构Canalys日前发布的报告显示,2020第一季度印度智能手机市场出货量增长12%至3350万台。 从厂商排名来看,小米以30.6%的市场份额位列第一,出货量达1030万台;vivo的出货量猛增近50%,首次超过三星位列第二,占据了近20%的市场份额,出货量近670万台;第三名则是三星,出货量为630万台,市场份额同比下降14%;Realme以390万台的出货量稳居第四,而OPPO名列第五,出货量为350万台。值得注意的是,排名前五的厂商中有四家是中国公司,市场份额共占72.6%。 Canalys指出,小米利用两大核心优势即继续投资打造本地生产和供应链,
[手机便携]
<font color='red'>Can</font>alys:2020年Q1印度智能手机市场,中国73%份额遥遥领先
基于MCP2502X/05X的CAN总线节点设计
1 引言 CAN总线以其成本低廉、通信实时性好、纠错能力强等优点广泛应用于汽车工业、电力系统变电站自动化、智能大厦等系统。J1939协议是SEA于1998年提出的,主要应用于运输、农林机车、船舶等大型交通工具。Microchip公司推出的MCP2502X/2505X CAN I/O系列扩展器可独立作为CAN扩展节点,通过配置实现不同的CAN协议。本文以J1939为通信协议,基于该器件设计CAN扩展节点,方便实现汽车的前端测控功能,并且与整个车载CAN网络相连。 2 MCP2502X/05X CAN I/O扩展器简介 MCP2502X/5X器件可作为CAN系统的I/O扩展器使用,支持CANV2.0B Active,可在原始
[工业控制]
基于MCP2502X/05X的<font color='red'>CAN</font>总线节点设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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