论文部分内容阅读
1 引言
GPRS技术现在已经非常成熟,具有覆盖范围广、接入速度快、使用成本低和永远在线等特点[3]。因此,采用GPRS方式是一种可行的单片机无线上网方案。
2 设计方案
2.1硬件部分的设计方案
硬件部分包括单片机(W77E58)、GPRS模块(MC39i)、SIM卡插座、电源系统、外部数据存储器[2]和接口电路等,如图1。
2.1.1 单片机W77E58
单片机采用具有51单片机内核的增强型单片机W77E58。该芯片运行速度快,时钟频率是普通单片机的3倍。具有32K FLASH程序存储器,256字节内部RAM和1024字节片上SRAM,同时支持双串口。是一款非常适合开发嵌入式TCP/IP协议栈的单片机。它控制GPRS模块接收和发送数据,并且通过RS232接口与数据采集终端进行数据交换。从而实现了串口和GPRS网络之间数据的透明传输。
2.1.2 GPRS模块MC39i
MC39i采用工业级设计,性能稳定,价格便宜,性价比极高。在执行GPRS上网的PPP协议之前,首先要通过AT指令对MC39i进行设置:
(1)波特率:使用AT+IPR=57600命令,设置波特率为57600bps,然后用AT&W保存设置。
(2)PDP上下文: AT+CGD CONT=1,“IP”,“CMNET”。
(3)拨号:格式为“ATD *99***1#”,如果拨号成功,会收到PPP报文,此时就可以进行PPP协商了。如果返回NO CARRIER则意味着拨号失败,应检查SIM卡是否开通GPRS业务,天线是否安装正确等问题。
2.2 软件部分的设计方案
软件部分包括网络协议、GPRS模块驱动程序以及串口透传程序。软件中所有代码都用C语言编写[1],在Keil环境中编译。
2.2.1 网络协议
为了使资源相对较少的单片机能够接入互联网,我们对复杂的网络协议栈进行了简化,主要包括链路层、网络层、传输层和应用层。
(1)链路层PPP协议。PPP协议是一种被广泛使用的链路层协议,由链路控制协议LCP和网络控制协议NCP组成。通过PPP协议,通信双方可以协商数据报大小、认证方式、链路质量等。
(2)网络层IP协议。IP协议是协议栈的核心部分,所有上层数据报文,包括TCP、DNS报文都是以IP报封装传输的。
(3)传输层TCP协议。TCP是一种面向连接的数据传输服务,通过复杂的机制保证了传输的可靠性,并且连接建立和断开有严格的步骤,报文在传输过程中有超时重传机制。
(4)应用层DNS协议。DNS协议应用于域名解析,当服务器端采用动态IP的接入方式时,通过DNS协议可以解析出服务器当前的IP地址。
2.2.2 GPRS模块的驱动程序
单片机通过串口和GPRS模块交换数据,所以首先要编写串口驱动程序,包括串口初始化(Init_Comm)、写串口数据(PrintChar)等函数。读串口数据是通过中断来完成的。由于篇幅所限,只给出串口初始化的代码:
void Init_Comm (void)
{
TMOD=TMOD&0x0F;
TMOD=TMOD|0x20; //定时器1采用方式2,用于产生串口1的波特率
TL1=0xFD,TH1=0xFD; //32MHz-
57600bps
WDCON=0x80; //SMOD1=1 SCON1=0x50;// 串口1采用方式1
TR1=1; //启动定时器1*/
}
在这些串口函数的基础上编写GPRS模块的驱动函数。单片机通过AT命令进行拨号后,GPRS模块就转入在线模式,此时通过PPP协议取得一个IP地址,就可以连接到互联网了。
2.2.3 透明传输驱动程序
当单片机通过GPRS模块连接到互联网以后,就可以通过TCP协议与远程服务器进行数据通信了。此时用户通过串口向单片机发送的数据都透明地传送给了远程服务器,同样服务器发过来的数据也通过串口传给用户。由于接收缓冲区空间有限,为了实现大数据量的透明传输,采用了特殊的双指针方法,一个读指针,一个写指针,采用循环读写的方式,如果读写到缓冲区末尾,则返回缓冲区头。当接收到数据后,写指针就把数据写入缓冲区。而读指针不断地扫描缓冲区,一旦发现新数据,就马上读走,腾出空间接收新数据。只要读写指针不重合,就说明缓冲区没有被填满。如此循环往复,就可以利用有限的数据缓冲区实现大量数据透传。
3 结论
本文讨论了一种以8位高速单片机为核心处理器,嵌入了TCP/IP协议栈的GPRS无线数据终端。具有电路简单,成本低廉等优点。终端通过RS232接口与外部控制系统相连,采用透明传输的方式,无需任何协议即可与用户设备相互通信,具有很强的通用性。软件全部采用C51语言编写,稍加改动即可应用到其它控制系统上,可移植性强。
参考文献
[1]马忠梅,等.单片机的C语言应用程序设计.北京航空航天大学出版社,1999,1.
[2]何力民.单片机应用技术选编(二). 北京航空航天大学出版社,1994,5.
[3]钟章队,等.GPRS通用分组无线业务.北京人民邮电出版社,2001,12.
——————————
作者简介:祁国梁(1971-),男,工程师, 研究方向为自动化仪表。
GPRS技术现在已经非常成熟,具有覆盖范围广、接入速度快、使用成本低和永远在线等特点[3]。因此,采用GPRS方式是一种可行的单片机无线上网方案。
2 设计方案
2.1硬件部分的设计方案
硬件部分包括单片机(W77E58)、GPRS模块(MC39i)、SIM卡插座、电源系统、外部数据存储器[2]和接口电路等,如图1。
2.1.1 单片机W77E58
单片机采用具有51单片机内核的增强型单片机W77E58。该芯片运行速度快,时钟频率是普通单片机的3倍。具有32K FLASH程序存储器,256字节内部RAM和1024字节片上SRAM,同时支持双串口。是一款非常适合开发嵌入式TCP/IP协议栈的单片机。它控制GPRS模块接收和发送数据,并且通过RS232接口与数据采集终端进行数据交换。从而实现了串口和GPRS网络之间数据的透明传输。
2.1.2 GPRS模块MC39i
MC39i采用工业级设计,性能稳定,价格便宜,性价比极高。在执行GPRS上网的PPP协议之前,首先要通过AT指令对MC39i进行设置:
(1)波特率:使用AT+IPR=57600命令,设置波特率为57600bps,然后用AT&W保存设置。
(2)PDP上下文: AT+CGD CONT=1,“IP”,“CMNET”。
(3)拨号:格式为“ATD *99***1#”,如果拨号成功,会收到PPP报文,此时就可以进行PPP协商了。如果返回NO CARRIER则意味着拨号失败,应检查SIM卡是否开通GPRS业务,天线是否安装正确等问题。
2.2 软件部分的设计方案
软件部分包括网络协议、GPRS模块驱动程序以及串口透传程序。软件中所有代码都用C语言编写[1],在Keil环境中编译。
2.2.1 网络协议
为了使资源相对较少的单片机能够接入互联网,我们对复杂的网络协议栈进行了简化,主要包括链路层、网络层、传输层和应用层。
(1)链路层PPP协议。PPP协议是一种被广泛使用的链路层协议,由链路控制协议LCP和网络控制协议NCP组成。通过PPP协议,通信双方可以协商数据报大小、认证方式、链路质量等。
(2)网络层IP协议。IP协议是协议栈的核心部分,所有上层数据报文,包括TCP、DNS报文都是以IP报封装传输的。
(3)传输层TCP协议。TCP是一种面向连接的数据传输服务,通过复杂的机制保证了传输的可靠性,并且连接建立和断开有严格的步骤,报文在传输过程中有超时重传机制。
(4)应用层DNS协议。DNS协议应用于域名解析,当服务器端采用动态IP的接入方式时,通过DNS协议可以解析出服务器当前的IP地址。
2.2.2 GPRS模块的驱动程序
单片机通过串口和GPRS模块交换数据,所以首先要编写串口驱动程序,包括串口初始化(Init_Comm)、写串口数据(PrintChar)等函数。读串口数据是通过中断来完成的。由于篇幅所限,只给出串口初始化的代码:
void Init_Comm (void)
{
TMOD=TMOD&0x0F;
TMOD=TMOD|0x20; //定时器1采用方式2,用于产生串口1的波特率
TL1=0xFD,TH1=0xFD; //32MHz-
57600bps
WDCON=0x80; //SMOD1=1 SCON1=0x50;// 串口1采用方式1
TR1=1; //启动定时器1*/
}
在这些串口函数的基础上编写GPRS模块的驱动函数。单片机通过AT命令进行拨号后,GPRS模块就转入在线模式,此时通过PPP协议取得一个IP地址,就可以连接到互联网了。
2.2.3 透明传输驱动程序
当单片机通过GPRS模块连接到互联网以后,就可以通过TCP协议与远程服务器进行数据通信了。此时用户通过串口向单片机发送的数据都透明地传送给了远程服务器,同样服务器发过来的数据也通过串口传给用户。由于接收缓冲区空间有限,为了实现大数据量的透明传输,采用了特殊的双指针方法,一个读指针,一个写指针,采用循环读写的方式,如果读写到缓冲区末尾,则返回缓冲区头。当接收到数据后,写指针就把数据写入缓冲区。而读指针不断地扫描缓冲区,一旦发现新数据,就马上读走,腾出空间接收新数据。只要读写指针不重合,就说明缓冲区没有被填满。如此循环往复,就可以利用有限的数据缓冲区实现大量数据透传。
3 结论
本文讨论了一种以8位高速单片机为核心处理器,嵌入了TCP/IP协议栈的GPRS无线数据终端。具有电路简单,成本低廉等优点。终端通过RS232接口与外部控制系统相连,采用透明传输的方式,无需任何协议即可与用户设备相互通信,具有很强的通用性。软件全部采用C51语言编写,稍加改动即可应用到其它控制系统上,可移植性强。
参考文献
[1]马忠梅,等.单片机的C语言应用程序设计.北京航空航天大学出版社,1999,1.
[2]何力民.单片机应用技术选编(二). 北京航空航天大学出版社,1994,5.
[3]钟章队,等.GPRS通用分组无线业务.北京人民邮电出版社,2001,12.
——————————
作者简介:祁国梁(1971-),男,工程师, 研究方向为自动化仪表。