单片机和PC机通过串行接口构成的多微机系统已经广泛应用于工业控制、环境监测等场合,这些系统大多采用RS232、RS485或是有线Modem的通信方式,虽然很经济实用,但是有线数据传输方式很大程度上限制了其使用的场合.随着移动通信技术的迅速发展,具备无线通信功能的移动终端也迅速发展起来.现在无线传输数据使用范围非常广泛:家庭智能控制、公交路灯控制、仓库监测、自动报警、呼
叫社区服务、物业管理等等.针对这种情况,设计了以嵌入式AVR单片机ATmega8控制GSM/GPRS无线通信模块Q2403A.利用移动通信网络进行无线数据传输,无须发射和接收装置,电路结构简单,应用芯片较少,经济实用.即在单片机系统中利用支持语音、短消息、数据通信、传真等业务的Q2403A无线通信模块,结合单片机系统通过RS232接口,实现数据的无线传输.
该系统如图1所示,数据传输硬件分为两大部分,一部分是单片机和Q2403A无线通信模块组成的无线数据发送系统,另一部分是微机、电话和调制解调器组成的数据接收系统.在此主要讨论单片机和Q2403A无线通信模块组成的无线数据发送系统的设计与实现.
图1 无线数据传输系统结构图
1 无线通信模块简介
Q2403A是法国WAVEC0ME公司生产的双频GSM/GPRS无线通信模块,它执行ETST GSM phase2+标准,外部SIM 卡,通过AT指令控制交换
各种类型的数据,例如:语音、传真、数据、SMS、CBS、电话号码本的维护、电池状态、GPRS等.Q2403A结构框图如图2,但在无线数据发送系统的应用主要涉及到SIM控制和UART.
图2 Q2403A结构框图
1.1 SIM 卡与Q2403A接口
Q2403A使用外部SIM 卡,与一般的手机SIM卡一样,是一微型电路芯片,存储了数字移动电话客户的信息、加密密钥等内容,它可供GSM 网络对客户身份进行鉴别,并对客户通话时的语音信息进行加密.GSM 系统中的应用,使得卡和通信模块分离,一张SIM 卡唯一标识一个通信模块.SIM 卡与Q2403A接口如图3所示,系统上电时,Q2403A运行GSM/GPRS通信软件,系统像一般手机一样接人GSM/GPRS网络.
图3 SIM 卡与Q2403A接口
1.2 单片机与Q2403A模块接口
Q2403A与外界的通信是标准RS232串行通信.它与Atmega 8L单片机接口如图4,只要连接RX,TX,GND,其他RS232信号引脚可以不用,通过RS232串口执行AT命令,可以很好地控制模块进行设置,拨号,数据传输以及模块的软件更新。
图4 Q2403A与Atmega8L接口
2 系统设计
无线数据发送系统整个电路主要包括信号处理电路、模数转换电路、外接实时时钟、单片机、程序存储器、数据存储器、与Q2403A通信模块的串行通信等.其结构如图5所示.主要是AVR的Atmega8L单片机,为使最后设计出来的产品体积小、方便易携、挑选了内部带有 D转换器,同步串行通信接口SPI和通用串行接口UART的单片机芯片Atmega8L,从而减少了整个系统中的芯片数目.
图5 无线数据发送系统结构图
CPU 选用美国ATMEL公司的单片机Atmeg8L,它是一款基于AVR RISC的低功耗CMOS的8位单片机,工作电压3.3 V.通过在一个时钟周
期内执行一条指令,Atmeg8L 可以取得接近1MIPS/MHz的性能,从而使得设计人员可以在功耗和速度之间取得平衡.AVR核将32个工作寄存
器和丰富的指令集连结在一起.所有工作寄存器都与ALU(算术逻辑单元)直接相连,允许在一个时钟周期内执行的单条指令同时访问2个独立的寄存器.这种结构提高了代码效率,使AVR得到了比普通CISC单片机高将近10倍的性能.
存储器选用ATMEL公司的AT45C081B芯片.AT45D081B是一种串行接口的闪速存储器,它的容量为8MB,分为4096页,每页264 bytes.除此以外,还包括2个容量为264 bytes的缓存器.当主存储器的某一页正被编程时,缓存器允许接收数据.Atmeg8L采用串行接口来接收数据,这提高了系统的可靠性,降低了转换噪声,减小了封装尺寸和引脚的数量.对于编程和读取操作,这种存储器由3.3 V的电源供电,与Atmega8L接口.通过芯片的片选引脚CS和串行输入引脚SI,输出引脚S0,串行时钟输入引脚SCK即可让其进行数据的存储与读出.所有
的编程周期都是自定时的,在编程之前不需要单独的擦除周期.
该系统数据传输主要用到异步串行通信UART和同步串行SPI.单片机通过异步串行口实现对Q2403A模块命令控制和数据传输,而同步串
行SPI用于数据的存取.MCU通过UART串行接口直接向模块下发AT命令,完成电话拨号、连接与断开及各种参数与功能的设置,可以方便简洁地实现命令控制和数据传输.设置UART串行通信协议,规定传送的数据为8位数据,起始位为1位,停止位为1位,传送的波特率为9600 bps,MCU通过UART串行向模块下发AT命令,设置模块工作方式,进入数据发送状态,程序流程图如图6所示.
图6 程序流程图
Atmega8L可用C编译器来开发MCU,控制Q2403A模块部分C语言程序如下:
do{
clearrebuf();//清缓冲区
TransmitStr("ATE0\r\n",6);
//禁止回显
Receive();
}while((UART-RxBuf[j2—1]!='0')&&
(PIND&0X20));//判断是否0K
ATV1 \r\n;//以文字形式信息显示
AT&w \r\n;//保存设置
AT+CGMR \r\n;//查询软件版本,只有V526以上支持GPRS
AT+CQS \r\n;//查询信号质量,信号为“0~31,0”时为正常,但只有“8~31,0”时可以进行通信
ATD045182538043 \r\n;//数据通信,如后面加分号这说明是语音通信
模块在工作时可为分为命令状态、数据状态和空闲状态.在命令状态时通信模块对单片机发来的数据都做为命令来处理.在数据状态是对发来的数据都做为传输数据来处理.要从数据状态进入命令时,输3个加号“+++”,不回车,并保证在此前后的1 s内不发送数据.