嵌入式课程设计

四川理工学院计算机学院

《嵌入式系统应用开发》

课程设计报告

题 目 :串口数字时钟设计 学 院

专 业 : 班 级 : 2014级1班

姓 名 : 黄海雷 宋涌 周礼佟

学 号 : [1**********] 指导教师 : 居锦武

2017年 6月20日

教师评语:

总分: 教师签名:

摘要

随着嵌入式系统和GPRS 无线网络的发展,GPRS 无线数据终端为工业生产中的远距离数据传输带来了更佳的传输途径,摆脱了有线数据传输的局限性,极大地节省了后期维护费用,降低了成本,满足了日益增长的工业需求。GPRS 无线数据终端的研究具有广泛的意义和良好的商业前景。

本文主要设计并实现基于ARM 的GPRS 无线数据终端。该系统以ARM7系列微处理器为

核心,通过AT 指令控制自带有完整TCP/IP协议栈的无线数据模块。结合GPRS 通信网络的特点分析无线数据传输嵌入式系统的设计过程,给出系统的具体实现方案,提出硬件、软件系统的设计流程、开发要点和实现过程。

本系统经过几个月的设计制作,较好的完成了无线数据终端的各项功能。 关键词:GPRS ;嵌入式;ARM ;AT 指令;TCP/IP协议

ABSTRACT

with the development of embedded systems and GPRS wireless network, GPRS wireless data terminals has brought a better way of transmission for long-range data transmission in industrial production, getting rid of the limitations of wired data transmission, saving significantly in the later maintenance costs , reducing costs and meeting the growing industrial demand. The research of the GPRS wireless data terminal has broad meanings and good business prospects.

The paper mainly designs and implements the GPRS wireless data terminal based on ARM. The system depending on ARM7 family microprocessor can control wireless data module with a complete TCP / IP protocol stack through AT commands. Make an analysis of the design process of the embedded system for wireless data transmission, combined with GPRS communication network characteristics and give a specific system implementation including: the hardware and software design process, development points and the implementation process.

The design is completed for several months, implementing various functions of the wireless data terminal.

Key words : GPRS; Embedded; ARM; AT command; TCP / IP protocol

目录

1 绪论 . ................................................................................................ 1

1.1 研究背景 . .................................................................................................................1 1.2 研究意义 . .................................................................................................................1

2 系统总体设计 ................................................................................ 2

2.1 系统功能要求 . .........................................................................................................2 2.2 系统组成 . .................................................................................................................2 2.3 AT指令集 .................................................................................................................2

3 硬件电路设计 ................................................................................ 3

3.1 电源电路具体设计 . ............................................................... 错误!未定义书签。 3.2 主控外围电路 . .........................................................................................................4 3.3 串口通信电路 . .........................................................................................................4 3.4无线模块电路设计 . ..................................................................................................5

4 软件程序设计 ................................................................................ 6

4.1 软件设计流程 . .........................................................................................................6 4.2 主要程序说明 . .........................................................................................................7

4.2.1 程序代码 . ......................................................................................................7 4.2.2 头文件介绍 . ................................................................................................1

5 系统调试 ...................................................................................... 1

5.1 硬件调试 . ...............................................................................................................1 5.2 软件调试 . ...............................................................................................................1

6 总结 . .............................................................................................. 1 参考文献 .......................................................................................... 15

1 绪论

1.1 研究背景

计算机与通信技术的不断发展,极大地促进了工业领域及其它领域的自动化和信息化的发展。以前在工业领域大多采用由单片机构成的数据处理系统和PC 机通过串行口构成的微机系统,主要是针对于生产过程分布范围不大、相距不远的场合,这些系统大多采用RS-232,RS-485或有线MODEM 的通信方式,虽然经济实用,但是采用有线的数据传输方式,在很大程度上限制了应用场合的拓展。随着企业生产规模不断扩大,不同的生产部门可能在地域上分布极广,相距遥远,如电力、铁路、采矿和石油等,这些部门要对相距遥远的生产过程进行数据传输,如果还是沿用有线的传输方式,则在技术上和经济上都是不足取的。所以采用无线的方式来进行数据传输的需求就日益突出了。

在通信领域中,移动通信(GPRS)网则是这个领域中发展最积极最活跃最快的分支之一。GPRS(General Packet Radio Service)即通用分组无线业务,是在现有GSM 网络上开通的一种新型的数据传输技术,GPRS 采用分组交换方式,仅在实际传送和接收数据时才占用无线资源。GPRS 理论上可提供高达171.2kb /s 的传输速率。除了速度上的优势外,GPRS 还有“永远在线" 的特点,即用户可随时与网络保持联系。另外分组交换接入时间的缩短,能提供快速即时的连接,可大幅度提高一些事务的效率。利用现有的GPRS 网络资源,发挥网络覆盖率高、永远在线等优势,为现有数据传输系统提供一种便捷的无线传输方式。

而嵌入式系统是一门交叉学科,其支柱学科包括微电子学科、计算机学科、电子技术学科和对象学科。微电子学科是嵌入式系统发展的基础,对象学科是嵌入式系统应用的归属学科,计算机与电子技术学科是嵌入式系统技术发展的重要保证。在当今社会中,嵌入式系统已经广泛应用于信息家电、移动通讯、手持通信终端、仪器仪表、航空航天以及工业控制等领域,为人们工作和生活带来了极大的便利,是当前研究最为热门的领域之一。

1.2 研究意义

随着通信技术的高速发展,GPRS 无线通信网络已与互联网连接在一起,成为一种可持续利用和开发的资源;嵌入式系统也由于功耗低、性能强等特点,被广泛应用于通信、工业控制等领域。所以,利用嵌入式系统和GPRS 网络,对GPRS 无线数据终端进行设计可以通过GPRS 网络连接到互联网,为用户提供透明的数据传输通道,适合于移动环境和难于分布的场所以及偏远地区。

如何利用嵌入式系统实现无线终端,并通过GPRS 无线网络进行数据传输是一个具有实用意义的研究。GPRS 无线数据终端作为数据传输终端的载体,有广阔的市场和良好的商业前景。

2.1 系统功能要求

GPRS 无线数据终端功能有:系统可以在7V- 40V宽电压范围供电,也可5V 供电;具有232、485两种通信接口;系统上电初始能够通过串口对IP 地址、网络端口号等登陆参数进行配置且掉电参数非易失;自动登陆网络建立TCP 连接;能够对下行数据进行解析处理完成数据的透明传输;支持心跳包发送,保持永久在线。

2.2 系统组成

根据系统功能要求系统大体分为五部分:电源部分、存储部分、串口通信部分、系统主控部分、无线通信部分。电源部分为各功能模块部分提供电源支持,主控部分与存储部分为主从模式,存储主要的参数和相关数据。通过串口通信部分完成参数配置和下位机数据交换的任务。主控部分完成数据的接受、发送、校验、解析等处理,通过和无线模块的通信完成数据的无线透明传输。

2.3AT 指令集

AT 即Attention ,AT 指令集是从终端设备(Terminal Equipment,TE) 或数据终端设备向终端适配器(Terminal Adapter, TA) 或数据电路终端设备发送的。通过TA ,TE 发送AT 指令来控制移动台的功能,与GSM 网络业务进行交互。用户可以通过AT 指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。90年代初,AT 指令仅被用于Modem 操作。没有控制移动电话文本消息的先例,只开发了一种叫SMS BlockMode的协议,通过终端设备(TE)或电脑来完全控制 SMS 。几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP 共同为GSM 研制了一整套AT 指令,包括对SMS 的控制。AT 指令在此基础上演化并被加入GSM07.05标准以及现在的GSM07.07标准。SMS 的控制共有3种实现途径:最初的BlockMode ;基于AT 指令的TextMode ;基于AT 指令的PDUMode 。到现在PDUMode 已经取代BlockMode ,后者逐渐淡出。GSM 模块与计算机之间的通信协议是一些AT 指令集,AT 指令是以AT 作首,字符结束的字符串,AT 指令的响应数据包在每个指令执行成功与否都有相应的返回。其他的一些非预期的信息(如有人拨号进来、线路无信号等) ,模块将有对应的一些信息提示,接收端可做相应的处理。

本文用到的基本指令有:AT 、ATE0、AT+ZPNUM="CMNET","",""(设置APN 指令)、

AT+ZPPPOPEN(激活APN 指令)、AT+ZIPSETUP=1,60.208.26.237,3030(建立TCP 网络连接指令)、 AT+ZIPSEND=1,10(发送数据指令)。

硬件电路设计的具体设计任务:首先分析硬件系统各部分的功能要求,选择合适的器件,完成各部分电路的设计,然后利用Protel99se 进行硬件电路原理图的总体设计和PCB 的设计,完成硬件设计。

3.1电源电路具体设计

在宽电源供电下,首先7-40V 的直流电源进过LM2576DC-DC 变换成5V 直流电,然后LM2576的输出经MIC29302转换给无线模块供电,同时LM2576输出的5V 直流电经芯片SP6201-3.3转换成3.3V 给3.3V 芯片供电。

在图3.1中的电路中,LM2576输入端和输出端(MIC29302的输入端)的两个二极管IN5408为保护二极管以防电源接反损坏芯片,D3为稳压管,稳定电源输出, 电感L1作用是滤波,使输出5V 电压更加稳定。

图3.2中VBAT 为MIC29302的输出,直接给MG2639 模块供电。MG2639 模块要求供电电压在3.4V-4.25V 之间。由R 21=R 1⨯(

V out R

-1) 得VBAT =21⨯1. 250+1。为满足1. 240R 1

要求R21/R1在1.92-2.6之间,故R21=2.2K、 R1=1K,计算得VBAT=3.75V。

.3

图3.3中芯片SP6201-3.3是把5V 电压转换成3.3V ,为3.3V 器件供电,EN 接高电平使能转换,RSN 为低电压检测复位端。当输出电压过低时,延时检测发出复位信号。本系统未用此端。C15、16为电源端去耦电容。

3.2 主控外围电路

主控电路主控芯片为LPC 2132,采用外部看门狗,外部看门狗芯片选择SP706。SP706S 供电电源为3.3V ,系统上电后,SP706S 自动产生200ms 低电平复位信号,使MCU 正常复位。MCU 配置一个I/O 管脚为输出,并接到WDI 。如果I/O 固定为HIGH 或LOW 电平不变,则1.6s 后,SP706S 内部的看门狗定时器就会溢出并使/WDO 输出低电平,而/WDO 已连接到手动复位/MR,因此会导致/RST 管脚输出低电平复位信号使MCU 重新复位。MCU 在正常工作情况下当然是不允许这样反复复位的,因此必须在程序里及时反转I/O 的状态,该操作被形象地称为“喂狗”。每次反转WDI 输入状态都能够清除SP706S 内部的看门狗定时器,从而确保/WDO 不会输出低电平(为保证可靠,喂狗间隔应当小于1s )。利用外部看门狗的好处是使系统更加稳定可靠,避免内部看门狗定时器限制系统功能。晶振电路晶振选择11.0592MHZ ,这样使得系统时间更加准确。

3.3 串口通信电路

由于在工业现场大部分的串口通信接口,一般采用RS-232或RS-485接口方式,为了满足不同用户的需求,本系统设计了两种接口方式,可供用户根据自身条件自由选择。故选用sp3232en 和sp3485en 作为GPRS 无线终端与下位机的通信接口。sp3232en 和sp3485en 供电电源均为3.3V ,均为工业级芯片。

如图3.6所示,485电路中的CON2 、CON3是232与485的通信接口切换接线端子,当RXD0与3485RXD 短接、TXD0与3485TXD 短接时,系统对外为485接口,反之为232接口。A 、B 输出末端的电阻作为线路的匹配电阻,也是为了避免信号的反射影响系统性能。UC0504A 集成了四个TVS 管,在A 、B 线路上各接一个TVS 管,瞬态电压抑制器TVS 可以有效的保护器件免遭瞬态高压的损害,它可以瞬间由高阻态变成低阻态,使两极间的电压箝位于一个预定值,有效地保护电子线路中的精密元器件,免受各种浪涌脉冲的损坏。J5

为485对外接口。当REDE 为高电平时主控向485发送数据,为低电平是经过485接收数据。

C OM 0_T1OUT C OM 0_R1IN

1

27895

J6

C 7104

DB9

3.4 无线模块电路

无线模块MG2639模块是28引脚邮票接口模块,功能支持短信、语音通话、数据传输业务。无线模块MG2639模块具有一个完整全双工UART 接口(以下简称UART 串口),最大速率为115200bps ,对外接口为2.8V CMOS 电平信号,逻辑功能符合RS-232 接口协议中的规定。这路UART 串口可作为串行数据接口,通常用于AT 指令、数据业务、升级模块软件等。鉴于本系统的功能需求,本设计主要用到的是数据传输业务。用到的引脚有RXD 、TXD 串口引脚,RSSI_LED为网络信号指示和与SIM 卡相关的信号引脚。

SIM 卡电路电源为MG2639V_CARD输出电压提供,MG2639支持1.8V/3.0V的SIM 卡。

由于SIM 卡的设计需要满足ESD 电气性能,防止环境下ESD 损坏SIM 卡的情况,故本设计在4 路SIM 卡信号上都加上了TVS 器件。并且在4 路SIM 卡信号上都加了电容值为22PF 的滤波电容。减少信号的干扰。CLK 为SIM 卡的时钟,DATA 为SIM 卡的数据,RST 为SIM 卡的工作复位信号。

4 软件程序设计

4.1 软件设计流程

本文软件设计部分,主要按照系统工作过程进行的设计。首先是对LPC2132涉及到的各功能部分进行初始化设置,包括主频、串口、定时器、I2C 总线。其次是对GPRS 登陆参数进行设置,包括连接的IP 和相应的端口号。最后建立TCP 服务器链接,进入TCP 工作模式,完成上下行数据的透明传输。图4.1为具体流程图。

4.2 主要程序说明 4.2.1 程序代码

#include "byshj.h" uchar or_At[]="AT\r\n";

uchar or_Anum[]="AT+ZPNUM=\"CMNET\",\"\",\"\"\r\n"; //设置APN uchar or_Aopen[]="AT+ZPPPOPEN\r\n";//激活APN

uchar or_Aipset[40]="AT+ZIPSETUP=1,60.208.26.237,3030\r\n"; // 建立连接

uchar or_Asend[]="AT+ZIPSEND=1,10\r\n"; //要发送的数据及长度

uchar or_Aipstatus[]="AT+ZIPSTATUS=\r\n"; //连接状态查询 uchar or_Ate0[]="ATE0\r\n";

uchar or_A0send[]="AT+ZIPSEND=1,1\r\n";

uchar or_re0[MAXL]="123456789"; //串口0接受的数据 uchar or_re1[MAXL]="123456789"; //串口1接受的数据 uchar eror[]="TCP Connected Fail!";

uchar config[]="Please input IP&Port\r\n" ; //22

uchar affirm[]="Please affirm IP&Port, Right:input 0 Error:input 1 \r\n" ; uchar def_ip[]="Choose IP&Port defult!"; uchar cg_s[]="Successful\r\n"; uchar cg=1; uchar set_len=34;

extern uint mnum; //串口1接收数据长度 extern uint nnum; //串口0接收数据长度 extern uint Hbt; extern uchar Up_d;

extern uint re0m; //串口1接收数据标志 extern uint re1m; //串口0接收数据标志 void Zhpinit(void) { }

void delay_n (uint n) { uint32 i; while(n--) { }

void Wait_cg(void) {

PLLCON=0x03; PLLCFG=0x23; PLLFEED=0xAA; PLLFEED=0x55; VPBDIV=0X00;

//10ms延时程序

for(i=0;i

//避免未连接时进行心跳包发送 }

nnum=0; Hbt=0; while(cg) { while(nnum

if(Hbt>=100)break; set_len=nnum+16; Ipconfig(or_re0);

sendnchar(or_Aipset,set_len);

sendnchar(affirm,53); nnum=0; while(nnum

sendnchar(cg_s,12); else {

sendnchar(config,22); nnum=0; Hbt=0; }

}

sendnchar(or_Aipset,set_len);

}

int main(void) { Irq0Init(); IOInit(); Zhpinit(); Timer0Init(); Uart0Init(); Uart1Init(); read485() ;

I2C_Init(200000); Fm_read(0xa1, 0x0000, &set_len,1); Fm_read(0xa1, 0x0000, or_Aipset, set_len); Wait_cg();

Fm_write(0xa0, 0x0000, &set_len,1);

Fm_write(0xa0, 0x0000, or_Aipset,set_len); delay_n(1000);

Hbt=0;

Tcp_fun();//TCP连接

while(1) {

if(Up_d) //用标志位检测 有数据传输 {

Hbt=0;

//有数据传输 心跳标志清零 switch( Up_down()) { case 1:

Upsend( );//发送上行数据

nnum=0;

//发送完成对个标志位清零 mnum=0; Up_d=0; re1m=0; re0m=0; break;

case 2:

Downsend( );

// 发送上行数据 mnum=0; nnum=0; Up_d=0; re1m=0; re0m=0;

break;

case 3: sendchar(0x42);

Downsend( );

//发送上行数据

Upsend( );

//发送上行数据

mnum=0;

nnum=0; Up_d=0; break; default : mnum=0; nnum=0; Up_d=0;

}

}

if(Hbt>=600)

//十分钟 且 无数据 心跳 {

Heartbeat(); Hbt=0; Up_d=0;

}

}

}

4.2.2 头文件介绍

#ifndef _byshj_h #define _byshj_h #include "LPC213x.h" typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long int uint32; #ifndef MAXL #define MAXL 1022 #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif /*中断*/

void Irq0Init(void); /*中断初始化*/

void Clr_Irq0(void); /*串口0*/

void Uart0Init(void);

void sendchar(unsigned char data);

void sendnchar(unsignedchar *ndata,unsigned int num); void __irq Rece0(void); /*串口1*/

void Uart1Init(void);

void send1char(unsigned char data);

void send1nchar(unsigned char *ndata,unsigned int num); void __irq Rece1(void); /*定时器*/

void Timer0_open(void); void Timer0_close(void); void Timer0Init(void); void __irq IRQ_Timer0(void); void Clr_Timer0(void); /*关闭串口中断*/ void close_uart(void); void open_uart(void); /*I/O口*/

void IOInit(void); /*TCP程序*/

void Ipconfig(uchar *ndata);

uchar comp_char(uchar * ndata0 ,uchar * ndata1,uchar num); //比较两个字符串 void Tcp_fun(void); void Count_cl(uint num); void s_cl(void);

uchar Up_down(void); //判断上下行数据

void Da_exp(uchar *ndata); //解析数据 void Upsend(void);

//发送上行数据 //发送下行数据 //心跳包发送

void Downsend(void); void Heartbeat(void); /*缓存处理程序*/

void I2C_Init(uint32 fi2c ); void __irq I2C0(void);

void Fm_read(uchar sla, uint suba, uchar *s, uint no) ; //缓存数据存储

void Fm_write(uchar sla, uint suba, uchar *s, uint no) ; /*看门狗复位*/ void watdog(uchar wd); /*458接收使能*/ void read485(void); /*458发送使能*/ void write485(void); #endif

5 系统调试

5.1 硬件调试

硬件调试主要是对系统各功能模块进行的功能进行调试。调试过程为:首先检查原理图连接是否正确。有没有遗漏的连接。原理图器件与PCB 封装是否对应。检查原理图功能引脚以及引脚顺序是否符合实际要求。硬件调试分成功能模块电路进行调试。确保每部分功能电路都没有问题。对于发现有短接的电路连接,一般通过割线的方法进行处理。

根据各部分电路分开调试,中间出现过短接的现象和其他问题。通过严格的硬件调试最终系统硬件符合系统要求,为系统总体的设计打下了一个良好的硬件基础。

5.2 软件调试

由于系统采用C 语言编程,系统程序多采用模块化结构,这使得软件调试变得比较容易。程序通过Keil uVision4编译连接生成代码,通过LPC2000 Flash Utility 下载。

首先是对定时器程序的调试。硬件电路中有LED 显示,用来指示系统运行状态。故在定时器程序模块调试时,用LED 指示灯的闪烁来调试定时器的软件部分。同时在此基础上对主频和IO 口进行软件调试。

其次是对串口通信进行调试,使串口收发数据正常。然后把两个串口统一起来给无线模块MG2639发送AT 指令,使得两个串口正常工作。接着通过串口进行手动TCP 登陆连接调试,调试通过后进行自动登录的系统调试。

再次是对上下行数据处理程序进行调试,在调试这部分程序时,用了比较多的测试点,通常加入的测试点为向串口发送一个特定字符,用来判断程序执行的位置和程序运行的结果,以此来判断功能的实现情况。当主要功能完成后,接着对附加功能进行调试,例如:参数存储。因为参数存储在主程序运行的前期和各功能模块初始化在一起,所以不影响系统主要功能的实现。所以放在软件调试的相对靠后的位置进行。

最后把各功能模块逐次加入,进行软件程序的总体通调,系统各功能实现没有问题后,加入看门狗喂狗程序。软件调试结束后,系统上电运行,系统运行正常各功能均达到预期的效果。

6 总结

随着电子技术、微电子技术和计算机技术的飞速发展,越来越多的设备需要进行远程数据传输,而现有的有线传输不能满足人们的需求。GPRS 无线传输以其不受地域限制和收费合理等优点已经成为无线传输领域中应用最为广泛的一种方式。本文结合近年来嵌入式系统技术、GPRS 数据通信技术等发展的趋势,提出了一种嵌入式无线组网的研究方案。通过该课程设计也深入了解了GPRS 发展现状和GPRS 的应用和ARM 及TCP/IP协议的相关内容。同时学习到了一个新的知识——AT 指令。

随着物联网的深入发展,智慧城市,智慧地球是未来发展的必然。嵌入式操作系统是未

来实现这个目标的核心技术。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。智能化无线数据终端产品将会在不远的未来带来广阔的市场前景,为人们的生活、生产带来更多的便利和乐趣。

展望未来社会的发展,在物联网产业链中,智能化产品将会越来越多,人们的生活将会变得越来越丰富多彩,伴随无线通信和嵌入式的快速发展,高品质、智能化的生活将会走入千家万户。

参考文献

1. 魏洪兴,谌卫军等. 嵌入式系统设计师教程[M].清华大学出版社,2006 2. 吕鑫,王忠.GPRS 数据传输模块的设计与实现[J].现代电子技术,2008(9) 3. 杜春雷.ARM 体系结构与编程[M].清华大学出版社,2003

4. 中兴公司. 中兴通讯MG2639模块AT 指令集手册V1.0[M],2008

5.Yieh —Ran Haung ,Yi-Bing Lin.A bandwidth-on-demand strategy for GPRS[J].Wireless Communications ,IEEE v01.4,issue 4,2005 Page(s):1394—1399

四川理工学院计算机学院

《嵌入式系统应用开发》

课程设计报告

题 目 :串口数字时钟设计 学 院

专 业 : 班 级 : 2014级1班

姓 名 : 黄海雷 宋涌 周礼佟

学 号 : [1**********] 指导教师 : 居锦武

2017年 6月20日

教师评语:

总分: 教师签名:

摘要

随着嵌入式系统和GPRS 无线网络的发展,GPRS 无线数据终端为工业生产中的远距离数据传输带来了更佳的传输途径,摆脱了有线数据传输的局限性,极大地节省了后期维护费用,降低了成本,满足了日益增长的工业需求。GPRS 无线数据终端的研究具有广泛的意义和良好的商业前景。

本文主要设计并实现基于ARM 的GPRS 无线数据终端。该系统以ARM7系列微处理器为

核心,通过AT 指令控制自带有完整TCP/IP协议栈的无线数据模块。结合GPRS 通信网络的特点分析无线数据传输嵌入式系统的设计过程,给出系统的具体实现方案,提出硬件、软件系统的设计流程、开发要点和实现过程。

本系统经过几个月的设计制作,较好的完成了无线数据终端的各项功能。 关键词:GPRS ;嵌入式;ARM ;AT 指令;TCP/IP协议

ABSTRACT

with the development of embedded systems and GPRS wireless network, GPRS wireless data terminals has brought a better way of transmission for long-range data transmission in industrial production, getting rid of the limitations of wired data transmission, saving significantly in the later maintenance costs , reducing costs and meeting the growing industrial demand. The research of the GPRS wireless data terminal has broad meanings and good business prospects.

The paper mainly designs and implements the GPRS wireless data terminal based on ARM. The system depending on ARM7 family microprocessor can control wireless data module with a complete TCP / IP protocol stack through AT commands. Make an analysis of the design process of the embedded system for wireless data transmission, combined with GPRS communication network characteristics and give a specific system implementation including: the hardware and software design process, development points and the implementation process.

The design is completed for several months, implementing various functions of the wireless data terminal.

Key words : GPRS; Embedded; ARM; AT command; TCP / IP protocol

目录

1 绪论 . ................................................................................................ 1

1.1 研究背景 . .................................................................................................................1 1.2 研究意义 . .................................................................................................................1

2 系统总体设计 ................................................................................ 2

2.1 系统功能要求 . .........................................................................................................2 2.2 系统组成 . .................................................................................................................2 2.3 AT指令集 .................................................................................................................2

3 硬件电路设计 ................................................................................ 3

3.1 电源电路具体设计 . ............................................................... 错误!未定义书签。 3.2 主控外围电路 . .........................................................................................................4 3.3 串口通信电路 . .........................................................................................................4 3.4无线模块电路设计 . ..................................................................................................5

4 软件程序设计 ................................................................................ 6

4.1 软件设计流程 . .........................................................................................................6 4.2 主要程序说明 . .........................................................................................................7

4.2.1 程序代码 . ......................................................................................................7 4.2.2 头文件介绍 . ................................................................................................1

5 系统调试 ...................................................................................... 1

5.1 硬件调试 . ...............................................................................................................1 5.2 软件调试 . ...............................................................................................................1

6 总结 . .............................................................................................. 1 参考文献 .......................................................................................... 15

1 绪论

1.1 研究背景

计算机与通信技术的不断发展,极大地促进了工业领域及其它领域的自动化和信息化的发展。以前在工业领域大多采用由单片机构成的数据处理系统和PC 机通过串行口构成的微机系统,主要是针对于生产过程分布范围不大、相距不远的场合,这些系统大多采用RS-232,RS-485或有线MODEM 的通信方式,虽然经济实用,但是采用有线的数据传输方式,在很大程度上限制了应用场合的拓展。随着企业生产规模不断扩大,不同的生产部门可能在地域上分布极广,相距遥远,如电力、铁路、采矿和石油等,这些部门要对相距遥远的生产过程进行数据传输,如果还是沿用有线的传输方式,则在技术上和经济上都是不足取的。所以采用无线的方式来进行数据传输的需求就日益突出了。

在通信领域中,移动通信(GPRS)网则是这个领域中发展最积极最活跃最快的分支之一。GPRS(General Packet Radio Service)即通用分组无线业务,是在现有GSM 网络上开通的一种新型的数据传输技术,GPRS 采用分组交换方式,仅在实际传送和接收数据时才占用无线资源。GPRS 理论上可提供高达171.2kb /s 的传输速率。除了速度上的优势外,GPRS 还有“永远在线" 的特点,即用户可随时与网络保持联系。另外分组交换接入时间的缩短,能提供快速即时的连接,可大幅度提高一些事务的效率。利用现有的GPRS 网络资源,发挥网络覆盖率高、永远在线等优势,为现有数据传输系统提供一种便捷的无线传输方式。

而嵌入式系统是一门交叉学科,其支柱学科包括微电子学科、计算机学科、电子技术学科和对象学科。微电子学科是嵌入式系统发展的基础,对象学科是嵌入式系统应用的归属学科,计算机与电子技术学科是嵌入式系统技术发展的重要保证。在当今社会中,嵌入式系统已经广泛应用于信息家电、移动通讯、手持通信终端、仪器仪表、航空航天以及工业控制等领域,为人们工作和生活带来了极大的便利,是当前研究最为热门的领域之一。

1.2 研究意义

随着通信技术的高速发展,GPRS 无线通信网络已与互联网连接在一起,成为一种可持续利用和开发的资源;嵌入式系统也由于功耗低、性能强等特点,被广泛应用于通信、工业控制等领域。所以,利用嵌入式系统和GPRS 网络,对GPRS 无线数据终端进行设计可以通过GPRS 网络连接到互联网,为用户提供透明的数据传输通道,适合于移动环境和难于分布的场所以及偏远地区。

如何利用嵌入式系统实现无线终端,并通过GPRS 无线网络进行数据传输是一个具有实用意义的研究。GPRS 无线数据终端作为数据传输终端的载体,有广阔的市场和良好的商业前景。

2.1 系统功能要求

GPRS 无线数据终端功能有:系统可以在7V- 40V宽电压范围供电,也可5V 供电;具有232、485两种通信接口;系统上电初始能够通过串口对IP 地址、网络端口号等登陆参数进行配置且掉电参数非易失;自动登陆网络建立TCP 连接;能够对下行数据进行解析处理完成数据的透明传输;支持心跳包发送,保持永久在线。

2.2 系统组成

根据系统功能要求系统大体分为五部分:电源部分、存储部分、串口通信部分、系统主控部分、无线通信部分。电源部分为各功能模块部分提供电源支持,主控部分与存储部分为主从模式,存储主要的参数和相关数据。通过串口通信部分完成参数配置和下位机数据交换的任务。主控部分完成数据的接受、发送、校验、解析等处理,通过和无线模块的通信完成数据的无线透明传输。

2.3AT 指令集

AT 即Attention ,AT 指令集是从终端设备(Terminal Equipment,TE) 或数据终端设备向终端适配器(Terminal Adapter, TA) 或数据电路终端设备发送的。通过TA ,TE 发送AT 指令来控制移动台的功能,与GSM 网络业务进行交互。用户可以通过AT 指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。90年代初,AT 指令仅被用于Modem 操作。没有控制移动电话文本消息的先例,只开发了一种叫SMS BlockMode的协议,通过终端设备(TE)或电脑来完全控制 SMS 。几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP 共同为GSM 研制了一整套AT 指令,包括对SMS 的控制。AT 指令在此基础上演化并被加入GSM07.05标准以及现在的GSM07.07标准。SMS 的控制共有3种实现途径:最初的BlockMode ;基于AT 指令的TextMode ;基于AT 指令的PDUMode 。到现在PDUMode 已经取代BlockMode ,后者逐渐淡出。GSM 模块与计算机之间的通信协议是一些AT 指令集,AT 指令是以AT 作首,字符结束的字符串,AT 指令的响应数据包在每个指令执行成功与否都有相应的返回。其他的一些非预期的信息(如有人拨号进来、线路无信号等) ,模块将有对应的一些信息提示,接收端可做相应的处理。

本文用到的基本指令有:AT 、ATE0、AT+ZPNUM="CMNET","",""(设置APN 指令)、

AT+ZPPPOPEN(激活APN 指令)、AT+ZIPSETUP=1,60.208.26.237,3030(建立TCP 网络连接指令)、 AT+ZIPSEND=1,10(发送数据指令)。

硬件电路设计的具体设计任务:首先分析硬件系统各部分的功能要求,选择合适的器件,完成各部分电路的设计,然后利用Protel99se 进行硬件电路原理图的总体设计和PCB 的设计,完成硬件设计。

3.1电源电路具体设计

在宽电源供电下,首先7-40V 的直流电源进过LM2576DC-DC 变换成5V 直流电,然后LM2576的输出经MIC29302转换给无线模块供电,同时LM2576输出的5V 直流电经芯片SP6201-3.3转换成3.3V 给3.3V 芯片供电。

在图3.1中的电路中,LM2576输入端和输出端(MIC29302的输入端)的两个二极管IN5408为保护二极管以防电源接反损坏芯片,D3为稳压管,稳定电源输出, 电感L1作用是滤波,使输出5V 电压更加稳定。

图3.2中VBAT 为MIC29302的输出,直接给MG2639 模块供电。MG2639 模块要求供电电压在3.4V-4.25V 之间。由R 21=R 1⨯(

V out R

-1) 得VBAT =21⨯1. 250+1。为满足1. 240R 1

要求R21/R1在1.92-2.6之间,故R21=2.2K、 R1=1K,计算得VBAT=3.75V。

.3

图3.3中芯片SP6201-3.3是把5V 电压转换成3.3V ,为3.3V 器件供电,EN 接高电平使能转换,RSN 为低电压检测复位端。当输出电压过低时,延时检测发出复位信号。本系统未用此端。C15、16为电源端去耦电容。

3.2 主控外围电路

主控电路主控芯片为LPC 2132,采用外部看门狗,外部看门狗芯片选择SP706。SP706S 供电电源为3.3V ,系统上电后,SP706S 自动产生200ms 低电平复位信号,使MCU 正常复位。MCU 配置一个I/O 管脚为输出,并接到WDI 。如果I/O 固定为HIGH 或LOW 电平不变,则1.6s 后,SP706S 内部的看门狗定时器就会溢出并使/WDO 输出低电平,而/WDO 已连接到手动复位/MR,因此会导致/RST 管脚输出低电平复位信号使MCU 重新复位。MCU 在正常工作情况下当然是不允许这样反复复位的,因此必须在程序里及时反转I/O 的状态,该操作被形象地称为“喂狗”。每次反转WDI 输入状态都能够清除SP706S 内部的看门狗定时器,从而确保/WDO 不会输出低电平(为保证可靠,喂狗间隔应当小于1s )。利用外部看门狗的好处是使系统更加稳定可靠,避免内部看门狗定时器限制系统功能。晶振电路晶振选择11.0592MHZ ,这样使得系统时间更加准确。

3.3 串口通信电路

由于在工业现场大部分的串口通信接口,一般采用RS-232或RS-485接口方式,为了满足不同用户的需求,本系统设计了两种接口方式,可供用户根据自身条件自由选择。故选用sp3232en 和sp3485en 作为GPRS 无线终端与下位机的通信接口。sp3232en 和sp3485en 供电电源均为3.3V ,均为工业级芯片。

如图3.6所示,485电路中的CON2 、CON3是232与485的通信接口切换接线端子,当RXD0与3485RXD 短接、TXD0与3485TXD 短接时,系统对外为485接口,反之为232接口。A 、B 输出末端的电阻作为线路的匹配电阻,也是为了避免信号的反射影响系统性能。UC0504A 集成了四个TVS 管,在A 、B 线路上各接一个TVS 管,瞬态电压抑制器TVS 可以有效的保护器件免遭瞬态高压的损害,它可以瞬间由高阻态变成低阻态,使两极间的电压箝位于一个预定值,有效地保护电子线路中的精密元器件,免受各种浪涌脉冲的损坏。J5

为485对外接口。当REDE 为高电平时主控向485发送数据,为低电平是经过485接收数据。

C OM 0_T1OUT C OM 0_R1IN

1

27895

J6

C 7104

DB9

3.4 无线模块电路

无线模块MG2639模块是28引脚邮票接口模块,功能支持短信、语音通话、数据传输业务。无线模块MG2639模块具有一个完整全双工UART 接口(以下简称UART 串口),最大速率为115200bps ,对外接口为2.8V CMOS 电平信号,逻辑功能符合RS-232 接口协议中的规定。这路UART 串口可作为串行数据接口,通常用于AT 指令、数据业务、升级模块软件等。鉴于本系统的功能需求,本设计主要用到的是数据传输业务。用到的引脚有RXD 、TXD 串口引脚,RSSI_LED为网络信号指示和与SIM 卡相关的信号引脚。

SIM 卡电路电源为MG2639V_CARD输出电压提供,MG2639支持1.8V/3.0V的SIM 卡。

由于SIM 卡的设计需要满足ESD 电气性能,防止环境下ESD 损坏SIM 卡的情况,故本设计在4 路SIM 卡信号上都加上了TVS 器件。并且在4 路SIM 卡信号上都加了电容值为22PF 的滤波电容。减少信号的干扰。CLK 为SIM 卡的时钟,DATA 为SIM 卡的数据,RST 为SIM 卡的工作复位信号。

4 软件程序设计

4.1 软件设计流程

本文软件设计部分,主要按照系统工作过程进行的设计。首先是对LPC2132涉及到的各功能部分进行初始化设置,包括主频、串口、定时器、I2C 总线。其次是对GPRS 登陆参数进行设置,包括连接的IP 和相应的端口号。最后建立TCP 服务器链接,进入TCP 工作模式,完成上下行数据的透明传输。图4.1为具体流程图。

4.2 主要程序说明 4.2.1 程序代码

#include "byshj.h" uchar or_At[]="AT\r\n";

uchar or_Anum[]="AT+ZPNUM=\"CMNET\",\"\",\"\"\r\n"; //设置APN uchar or_Aopen[]="AT+ZPPPOPEN\r\n";//激活APN

uchar or_Aipset[40]="AT+ZIPSETUP=1,60.208.26.237,3030\r\n"; // 建立连接

uchar or_Asend[]="AT+ZIPSEND=1,10\r\n"; //要发送的数据及长度

uchar or_Aipstatus[]="AT+ZIPSTATUS=\r\n"; //连接状态查询 uchar or_Ate0[]="ATE0\r\n";

uchar or_A0send[]="AT+ZIPSEND=1,1\r\n";

uchar or_re0[MAXL]="123456789"; //串口0接受的数据 uchar or_re1[MAXL]="123456789"; //串口1接受的数据 uchar eror[]="TCP Connected Fail!";

uchar config[]="Please input IP&Port\r\n" ; //22

uchar affirm[]="Please affirm IP&Port, Right:input 0 Error:input 1 \r\n" ; uchar def_ip[]="Choose IP&Port defult!"; uchar cg_s[]="Successful\r\n"; uchar cg=1; uchar set_len=34;

extern uint mnum; //串口1接收数据长度 extern uint nnum; //串口0接收数据长度 extern uint Hbt; extern uchar Up_d;

extern uint re0m; //串口1接收数据标志 extern uint re1m; //串口0接收数据标志 void Zhpinit(void) { }

void delay_n (uint n) { uint32 i; while(n--) { }

void Wait_cg(void) {

PLLCON=0x03; PLLCFG=0x23; PLLFEED=0xAA; PLLFEED=0x55; VPBDIV=0X00;

//10ms延时程序

for(i=0;i

//避免未连接时进行心跳包发送 }

nnum=0; Hbt=0; while(cg) { while(nnum

if(Hbt>=100)break; set_len=nnum+16; Ipconfig(or_re0);

sendnchar(or_Aipset,set_len);

sendnchar(affirm,53); nnum=0; while(nnum

sendnchar(cg_s,12); else {

sendnchar(config,22); nnum=0; Hbt=0; }

}

sendnchar(or_Aipset,set_len);

}

int main(void) { Irq0Init(); IOInit(); Zhpinit(); Timer0Init(); Uart0Init(); Uart1Init(); read485() ;

I2C_Init(200000); Fm_read(0xa1, 0x0000, &set_len,1); Fm_read(0xa1, 0x0000, or_Aipset, set_len); Wait_cg();

Fm_write(0xa0, 0x0000, &set_len,1);

Fm_write(0xa0, 0x0000, or_Aipset,set_len); delay_n(1000);

Hbt=0;

Tcp_fun();//TCP连接

while(1) {

if(Up_d) //用标志位检测 有数据传输 {

Hbt=0;

//有数据传输 心跳标志清零 switch( Up_down()) { case 1:

Upsend( );//发送上行数据

nnum=0;

//发送完成对个标志位清零 mnum=0; Up_d=0; re1m=0; re0m=0; break;

case 2:

Downsend( );

// 发送上行数据 mnum=0; nnum=0; Up_d=0; re1m=0; re0m=0;

break;

case 3: sendchar(0x42);

Downsend( );

//发送上行数据

Upsend( );

//发送上行数据

mnum=0;

nnum=0; Up_d=0; break; default : mnum=0; nnum=0; Up_d=0;

}

}

if(Hbt>=600)

//十分钟 且 无数据 心跳 {

Heartbeat(); Hbt=0; Up_d=0;

}

}

}

4.2.2 头文件介绍

#ifndef _byshj_h #define _byshj_h #include "LPC213x.h" typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long int uint32; #ifndef MAXL #define MAXL 1022 #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif /*中断*/

void Irq0Init(void); /*中断初始化*/

void Clr_Irq0(void); /*串口0*/

void Uart0Init(void);

void sendchar(unsigned char data);

void sendnchar(unsignedchar *ndata,unsigned int num); void __irq Rece0(void); /*串口1*/

void Uart1Init(void);

void send1char(unsigned char data);

void send1nchar(unsigned char *ndata,unsigned int num); void __irq Rece1(void); /*定时器*/

void Timer0_open(void); void Timer0_close(void); void Timer0Init(void); void __irq IRQ_Timer0(void); void Clr_Timer0(void); /*关闭串口中断*/ void close_uart(void); void open_uart(void); /*I/O口*/

void IOInit(void); /*TCP程序*/

void Ipconfig(uchar *ndata);

uchar comp_char(uchar * ndata0 ,uchar * ndata1,uchar num); //比较两个字符串 void Tcp_fun(void); void Count_cl(uint num); void s_cl(void);

uchar Up_down(void); //判断上下行数据

void Da_exp(uchar *ndata); //解析数据 void Upsend(void);

//发送上行数据 //发送下行数据 //心跳包发送

void Downsend(void); void Heartbeat(void); /*缓存处理程序*/

void I2C_Init(uint32 fi2c ); void __irq I2C0(void);

void Fm_read(uchar sla, uint suba, uchar *s, uint no) ; //缓存数据存储

void Fm_write(uchar sla, uint suba, uchar *s, uint no) ; /*看门狗复位*/ void watdog(uchar wd); /*458接收使能*/ void read485(void); /*458发送使能*/ void write485(void); #endif

5 系统调试

5.1 硬件调试

硬件调试主要是对系统各功能模块进行的功能进行调试。调试过程为:首先检查原理图连接是否正确。有没有遗漏的连接。原理图器件与PCB 封装是否对应。检查原理图功能引脚以及引脚顺序是否符合实际要求。硬件调试分成功能模块电路进行调试。确保每部分功能电路都没有问题。对于发现有短接的电路连接,一般通过割线的方法进行处理。

根据各部分电路分开调试,中间出现过短接的现象和其他问题。通过严格的硬件调试最终系统硬件符合系统要求,为系统总体的设计打下了一个良好的硬件基础。

5.2 软件调试

由于系统采用C 语言编程,系统程序多采用模块化结构,这使得软件调试变得比较容易。程序通过Keil uVision4编译连接生成代码,通过LPC2000 Flash Utility 下载。

首先是对定时器程序的调试。硬件电路中有LED 显示,用来指示系统运行状态。故在定时器程序模块调试时,用LED 指示灯的闪烁来调试定时器的软件部分。同时在此基础上对主频和IO 口进行软件调试。

其次是对串口通信进行调试,使串口收发数据正常。然后把两个串口统一起来给无线模块MG2639发送AT 指令,使得两个串口正常工作。接着通过串口进行手动TCP 登陆连接调试,调试通过后进行自动登录的系统调试。

再次是对上下行数据处理程序进行调试,在调试这部分程序时,用了比较多的测试点,通常加入的测试点为向串口发送一个特定字符,用来判断程序执行的位置和程序运行的结果,以此来判断功能的实现情况。当主要功能完成后,接着对附加功能进行调试,例如:参数存储。因为参数存储在主程序运行的前期和各功能模块初始化在一起,所以不影响系统主要功能的实现。所以放在软件调试的相对靠后的位置进行。

最后把各功能模块逐次加入,进行软件程序的总体通调,系统各功能实现没有问题后,加入看门狗喂狗程序。软件调试结束后,系统上电运行,系统运行正常各功能均达到预期的效果。

6 总结

随着电子技术、微电子技术和计算机技术的飞速发展,越来越多的设备需要进行远程数据传输,而现有的有线传输不能满足人们的需求。GPRS 无线传输以其不受地域限制和收费合理等优点已经成为无线传输领域中应用最为广泛的一种方式。本文结合近年来嵌入式系统技术、GPRS 数据通信技术等发展的趋势,提出了一种嵌入式无线组网的研究方案。通过该课程设计也深入了解了GPRS 发展现状和GPRS 的应用和ARM 及TCP/IP协议的相关内容。同时学习到了一个新的知识——AT 指令。

随着物联网的深入发展,智慧城市,智慧地球是未来发展的必然。嵌入式操作系统是未

来实现这个目标的核心技术。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。智能化无线数据终端产品将会在不远的未来带来广阔的市场前景,为人们的生活、生产带来更多的便利和乐趣。

展望未来社会的发展,在物联网产业链中,智能化产品将会越来越多,人们的生活将会变得越来越丰富多彩,伴随无线通信和嵌入式的快速发展,高品质、智能化的生活将会走入千家万户。

参考文献

1. 魏洪兴,谌卫军等. 嵌入式系统设计师教程[M].清华大学出版社,2006 2. 吕鑫,王忠.GPRS 数据传输模块的设计与实现[J].现代电子技术,2008(9) 3. 杜春雷.ARM 体系结构与编程[M].清华大学出版社,2003

4. 中兴公司. 中兴通讯MG2639模块AT 指令集手册V1.0[M],2008

5.Yieh —Ran Haung ,Yi-Bing Lin.A bandwidth-on-demand strategy for GPRS[J].Wireless Communications ,IEEE v01.4,issue 4,2005 Page(s):1394—1399


    相关文章

    程序设计基础课程简介

    <程序设计基础>课程简介 课程编号:E1112101 英文名称:Programming Fundamentals 学 分:3 学 时:48 授课对象:计算机科学与技术专业,软件工程专业,网络工程专业 课程目标:通过理论教学,使学 ...

    高速嵌入式硬件设计培训课程为您讲解高速嵌入式系统硬件设计技术

    热线:021-51875830 62450161 0755-61280252 传真:021-62450161 0755-25912501 业务手机:[1**********] 详情请访问网站:http://www.bjzhda.cn/ ht ...

    大学专业课程设置与毕业去向(一)

    大学专业课程设置与毕业去向(一) 经济贸易系 报关与国际货运专业 培养目标 本专业培养拥护党的基本路线,适应生产.建设.管理.服务第一线需要,德.智.体.美.劳全面发展,具有报关与国际货运专业的知识,掌握物流管理专业的技能,拥有物流管理专业 ...

    软件系网络工程实验室建设规划

    软 件 工 程 系 网络工程本科专业实验室建设规划 二○一一年五月 关于软件工程系网络工程本科专业 新建.扩建实验室.实习基地的规划报告 教务处.发展规划处: 根据学校升本工作需要,结合我系实际情况,在对现有校内实验室.实习实训基地等实践条 ...

    大学生必学的软件综合

    (一) 这里我推荐大家十个必学的计算机软件,希望大家在大学空余时间多多学习: 1.windows XP/Vista/7+ 系统 2.windows 优化大师.超级兔子.360 安全设置等 3.杀毒软件的安装和使用 4.IE.Firefox ...

    武汉大学计算机学院培养方案

    武汉大学本科人才培养方案 计算机学院 Computer School 武汉大学计算机学院前身可追溯到1978年由原武汉大学建立的计算机科学系,是全国最早建立的计算机科学系之一. 武汉大学计算机学院现有四个系:计算机科学系.计算机工程系.计算 ...

    南京晓庄学院专业介绍

    南京晓庄学院专业介绍 一.艺体类招生专业 1.音乐学专业(师范) 主要课程:乐理与视唱练耳.多声部音乐分析与习作.声乐.钢琴.器乐(中国乐器.外国乐器).中国音乐史与名作赏析.外国音乐史与名作赏析.中国民族音乐.外国民族音乐.学校音乐教育导 ...

    嵌入式系统综合设计说明书

    嵌入式系统综合设计说明书 题 目:智能车系统-MP3播放器设计与实现 学生姓名:杜继凤 组 员:王嘉敏 杜继凤 学 院:信息工程学院 班 级:计算机11-2班 指导教师:庄旭菲 王晓强 蒋贵良 刘志强 2014 年 3 月 15 日 嵌入式 ...

    PROTEUS实验室建设方案

    电子类学科专业 Proteus实验室的建设方案 广州市风标电子技术有限公司 目 录 1. 引言 ........................................................................ ...

    物联网应用系统设计_课程建设的探索与实践_徐向军

    <物联网应用系统设计>课程建设的探索与实践 周赟山2徐向军1, (1.杭州科技职业技术学院信息工程学院,浙江杭州311402:2.浙江工商职业技术学院网络与多媒体中心,浙江宁波315012) 摘要:通过对学习物联网应用系统设计课 ...