单片机无线通信系统的设计与实现

2010-06-13 11:32施国梁
微处理机 2010年3期
关键词:赋值寄存器串口

黄 婷,施国梁,黄 坤

(苏州大学电子信息学院,苏州215006)

1 引言

无线通信是当前发展最快的技术之一,已渗透到社会的各个角落,有着广阔的市场和业务需要。目前主要的无线技术有:蓝牙(Bluetooth),红外数据传输(IrDA),无线局域网(Wi- Fi)等[1]。Bluetooth是一种无线数据与语音通信的开放性全球规范,其实质是为固定设备或移动设备之间的通信环境建立通用的近距无线接口,但由于芯片大小和价格难以下调,使得许多用户不愿意花大价钱来购买这种无线设备;IrDA是一种利用红外线进行点对点通信的技术,是第一个实现无线个人局域网(PAN)的技术,但它对于点对多点的通信显得无能为力,且红外技术只能在视线可以达到的范围内定向传输,中间不能有任何阻挡,同时要求通信设备的位置相对固定,这样就无法应用于移动设备;Wi-Fi是以太网的一种无线扩展,主要目的是提供WLAN接入,但由于其硬件实现需要很大的容纳空间,且往往在商用计算机系统中实现,这就限制了其在工业领域,尤其是在某些不依赖通用计算机的特殊工业场合的应用。

针对这些问题提出了一种功耗低、成本低且利于在嵌入式系统中实现的通用无线通信系统,它基于无需申请就可使用的433MHz ISM频段,可广泛适用于消费类电子、无线遥控玩具、汽车用自动化、家庭自动化控制及建筑安全装置等领域。

2 系统组成及功能概述

系统主要包括两个分别具有收发功能的无线通信模块,每个模块均由单片机和无线收发芯片RF组成。系统的原理框图如图1所示,发送时,单片机通过SPI总线向RF写入控制命令及所需发送的数据,RF通过天线发送出去;接收时,单片机通过SPI总线读取RF的工作状态,获取芯片相关信息及接收到的数据。两个收发模块之间相互通信,从而实现数据的无线传输。

图1 系统原理框图

在本无线通信系统中,单片机作为系统核心主要完成数据处理和控制功能,保证系统工作在最佳状态。选用宏晶科技生产的 STC12C5A60S2[2],它是高速、低功耗、超强抗干扰的新一代51系列单片机,指令代码完全兼容传统的8051,但速度快8-12倍,工作频率范围是0MHz~35MHz。该型单片机有一个显著特点是使用时无需专用编程器/仿真器,而是通过串口(P3.0/P3.1)即可直接下载用户程序,且同一串口还可用于调试。它还具有高速SPI串行通信端口和硬件看门狗功能(WDT),采用宏晶最新的第六代加密技术,有全球唯一ID号,无法解密,能完全满足本系统低成本和相应的功能要求。

无线收发芯片用于在系统中实现高性能双向无线通信,要求它同时能满足低成本与低功耗的要求,本系统选用了Integration Associates公司的射频芯片IA4421[3],这是款全集成的低功耗、多频道的 FSK收发器,应用时具有高度灵活性且无需统调。该收发器内部集成包括高频功率放大器(PA)、低噪声放大器(LNA)、I/Q转换混频器、基带滤波器、放大器、I/Q解调器,可见它已集成全部的射频功能,使用时仅需要附加晶振与去耦电容。

在硬件接口方面主要考虑系统部件之间的兼容性和效率。而 SPI(Serial Peripheral Interface)[2]总线是Motorola公司提出的一种同步串行接口技术,允许MCU之间及MCU与各种外围设备以串行方式进行通信与数据交换。本系统中的MCU与射频芯片同时支持SPI接口,因此在设计时SPI将被用于系统内部控制与数据通信接口。SPI使用的是四线制,分别是:SS(从器件选择线)、MISO(主机输入/从机输出数据线)、MOSI(主机输出/从机输入数据线)和SCK(串行时钟信号)。SPI传输数据时,在主机输出时钟SCK的控制下,主机与从机的两个双向移位寄存器进行循环数据交换,实现全双工数据传输。

3 系统硬件设计

本无线通信系统硬件电路主要由三个部分组成:STC12C5A60S2单片机、IA4421收发器、MAX232芯片。具体电路实现如图2所示,其中STC12C5A60S2通过SPI总线读写IA4421的工作状态与控制字,获取并处理相关信息,系统中设置了RS232串行接口,主要用于实现程序下载和调试功能。

图2 STC12C5A60S2与IA4421的SPI接口电路

STC12C5A60S2单片机的从选择线(SS)、主输出线(MOSI)、主输入线(MISO)和时钟信号(SCLK)分别连接到 IA4421的相应功能引脚 nSEL、SDI、SDO和SCK。IA4421支持天线直接驱动,这使得天线部分实现起来相当简单,仅需使用一个50Ω的外接螺旋天线加上对应的差分电路就可以了[4]。为了节省成本,对于不需要远距传输的情形,可以在模块中使用螺旋导线制作的简易天线来满足数据通信要求,本系统正是这样实现的,并且经过实验验证,使用适当形状的螺旋导线制作的简易天线实际有效的通信距离能达到100m左右,对于一般实时控制系统的应用要求是足够了。若用户需要更远的传输距离则应设计433MHz的外接 PCB谐振天线[3]。STC12C5A60S2单片机、IA4421和MAX232的其它外围电路,如电源、时钟、复位电路等有许多标准的实现方案,不再赘述,读者可参照相关的文献[2-3]。

4 软件设计

系统软件设计首先需完成对各个芯片的初始化设计,接下来其主要工作是数据发送和接收程序。发送数据时单片机直接通过MOSI端口控制射频器件发送数据,而接收时则要扫描单片机的MISO口,判断是否有待接收的数据,下面具体说明单片机如何实现SPI与IA4421的初始化程序,及发送、接收子程序的功能与实现。

4.1 SPI初始化程序设计

本无线通信系统几乎所有的数据传输与芯片控制都是通过SPI实现的,SPI读写程序是软件控制的基础。为了使单片机的SPI控制器正常工作,需要先对其进行初始化设置,这可通过向SPI控制寄存器SPCTL和状态寄存器SPSTAT写入适当的控制字实现。它们是二个8位的寄存器,其中SPCTL的第2位时钟相位CPHA允许用户设置采样和改变数据的时钟边沿,第3位时钟极性位CPOL允许用户设置时钟极性。SPI接口有四种不同的数据传输时序,取决于CPOL和CPHL这两位的组合。本系统中,STC12C5A60S2为 SPI主设备,IA4421为从设备,且要求SPICLK的极性在空闲时为低电平,用到SPI CPOL=0、CPHA=0的这种时序模式,数据在SCK的上升沿时移入到IA4421,并且器件会在SS生效之后的第一个上升沿时等待数据;如果时钟的起始状态是高电平,它在开始传输数据之前将下降以产生第一个上升沿。故初始化时我们首先对SPI控制寄存器SPCTL赋值0xD0,从高位到低位对每一位的功能描述如下:

SSIG=1:忽略SS脚,MSTR(位4)确定器件为主机还是从机;

SPEN=1:SPI使能;

DORD=0:数据字的MSB(最高位)先发送;

MSTR=1:STC12C5A60S2的SPI接口设置为主机模式;

CPOL=0,CPHA=0:SPICLK空闲时为低电平;

SPR1=0,SPR0=0:对应工作频率为 CLK/4,CLK指的是CPU晶振的工作频率。

同时需对SPI状态寄存器SPSTAT赋值0xC0以完成其初始化过程,其中第7位SPIF为SPI传输完成标志位,当一次串行传输完成时,SPIF置位,当SPI处于主模式且SSIG=0时,如果当SS为输入并被驱动为低电平,SPIF也将置位,通过软件向其写入“1”清零;第6位WCOL为SPI写冲突标志,在数据传输过程中,如果对SPI数据寄存器SPDAT执行写操作,WCOL将置位,通过软件向其写入“1”清零;其他六位保留。

4.2 IA4421初始化程序设计

STC12C5A60S2控制器需要对IA4421各个寄存器进行设置,保证其工作在规定的频段和模式下。初始化时通过SPI总线对IA4421写入控制命令[5],主要包括配置设定命令、电源管理命令、频率设定命令、接收控制命令、数据滤波命令、FIFO和复位模式命令、自动频率控制(AFC)命令,发射配置控制命令、唤醒定时器命令、低任务周期命令和电池低压检测以及微控制器时钟分频命令等,且每个命令字长度均为16位。

配置设定命令的高8位固定为0x80(若未说明,下面每个控制命令的高8位都固定,不再重复),对其赋值0x80dd使位7-6分别置“1”使能内部数据寄存器和FIFO模式,位5-4取值“01”使本系统工作频段为433MHz,位3-0取值“1101”决定晶振负载电容大小为15pF。

电源管理命令对位5和位3置“1”使能整个接收链并打开晶振振荡,故其赋值为0x820c。

频率设定命令高4位固定为0xa,低12位F参数(位f11-f0)的范围应在96~3903,由公式

可以计算出合成器的中心频率F0,其中C1和C2的取值由工作频率433MHz决定,故频率设定命令赋值为0xa080。

接收控制命令的高5位固定,位10置“1”决定第16引脚功能是VDI(有效数据指示)输出,第9-8位取值“00”决定VDI信号响应时间为快速,位7-5取值“100”选择接收基带带宽(BW)为200kHz,位4-3取值“00”选择LNA增益相关最大值为0dB,位2-0决定RSSI(接收的信号强度指示)检测器门限,故接收控制命令赋值为0x9483。

数据滤波命令高8位、第5位和第3位固定,位7置“1”使时钟获取电路自动锁定控制,且由位6决定其为快速模式,位4置“0”选择数据滤波类型为数字滤波,位2-0决定DQD(数据质量检测)门限参数,故数据滤波命令赋值为0xc2ec。

FIFO和复位模式命令位7-4决定FIFO的中断级别,位3选择同步格式长度为0x2DD4,位2设置FIFO输入填充的启动条件为同步格式,其开始和停止由位1决定,位0置“1”禁止高灵敏度的复位模式,故FIFO和复位模式命令赋值为0xca81。

AFC命令中位7-6选择自动工作模式,以VDI信号的状态独立保持foffset的值,位5-0根据系统工作频率对频率偏移的相关值进行设置,故AFC命令赋值为0xc4e7。

发射配置控制命令的高7位固定,位8-4决定FSK解调参数输出的频率结果,位2-0取值“000”决定输出功率为0dB,故发射配置控制命令赋值为0x9840。

唤醒定时器命令的高3位固定,通过公式

由位12-8M(m7到m4)和位7-0R(r4到r0)计算唤醒时间周期,本系统对其赋值为0xffff。

低任务周期命令设定后可以减少接收模式的平均功率,其任务周期占空比可通过公式

由位7-1D(d6到d0)和M计算,位0使能低任务周期模式,本系统未用到该模式,故低任务周期命令赋值为0xc80e。

电池低压检测和微控制器时钟分频命令的高8位和第4位固定,位7-5取值为“011”配置时钟分频为2MHz,位3-0(v3-v0)由公式

计算检测器的Vlb定义的门限电压V的值,故电池低压检测和微控制器时钟分频命令赋值为0xc060。

4.3 发送子程序设计

IA4421成功初始化后,就可以开始数据的发送和接收了。系统先通过SPI写入电源管理命令字0x8228打开发送寄存器并开始数据的传送,发送完毕后要写入电源管理命令字0x8288关闭发送寄存器,同时打开接收寄存器。

为了实现数据的有效发送和接收,将待发送数据打包为帧的形式。下面主要介绍一下发送一帧数据的情形,其从帧头开始依次为:同步格式的长度0x2DD4,设置的传输开始标志位,待传数据的长度和实际发送的数据。这里有一点要注意的是,由于发送寄存器写命令的高八位已固定为0xb8,故单片机写发送寄存器命令时要对数据帧中的每组数据进行处理。当电源管理命令的第5位et和第3位ex被置1,同时IA4421片选被激活,发送器开始以设置的码率向外发送数据帧,最后应读入2字节的状态字表示发送完毕。

4.4 接收子程序设计

IA4421的接收方式采用FIFO模式,在相应的控制字都设置好后,引入的数据通过时钟串入16位FIFO缓冲器内,当VDI和同步格式识别电路指示潜在的真实数据接入,接收器开始填充FIFO,接收开始。

接收一帧数据时,因采用FIFO模式,状态寄存器的前二个字节分别是中断位输出和状态位输出,接下来才是需要的数据,故在接收一帧数据时,应先将前二字节读取后抛弃,且每次读取时都要重复此过程;接下来需判断接收到的第三字节是否为开始标志位,若是则继续抛弃前二字节后再开始数据的接收,接收完毕后读入二字节的状态字表示接收完毕。

5 实验结果及分析

为了仿真实际的应用情形,将本无线通信系统在一个布满桌椅和电子设备,如电脑、打印机、示波器等的室内环境中进行数据通信实验,以确认所述方案的实际应用效能。实验时,将2个无线通信模块分别在相距30m、10m、1m、0.1m 条件下进行通信,并利用串口监视收发的数据,以十六进制显示出来。实验方式包括单字节的发送和接收及多字节的发送和接收,分别做了5组实验,现介绍其中一组实验如下:

实验距离为30m,方式为多字节的发送和接收。根据程序设定的发送格式:发送的字节数+待发送的数据,假定串口一发送数据为:0x18 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x20 0x21 0x22 0x23 0x24,串口二发送的数据为:0x17 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x20 0x21 0x22 0x23,2个串口分别发送10帧数据,其中0x17、0x18为发送数据的长度,超出范围的数据将被作为无效处理。串口打印时将同步格式的长度等标志位省略,其实际打印效果如图3、4所示。

每组实验对串口的发送端和接收端测试数据进行比对,内容、格式均一致,即系统能够正确、稳定的进行收发通信,符合设计要求。

6 结束语

设计了一个单片机控制的无线数据传输系统,该系统使用了超低功耗的STC12C5A60S2单片机和同样是低功耗的无线收发芯片IA4421,它们之间的控制与数据连接则是借助SPI接口来实现。SPI接口具有很高的数据传输速率,且器件操作遵循统一的规范,使系统软硬件具有良好的通用性。以无线方式传输数据在实际应用中由于其方便灵活,可望在嵌入式系统中得到广泛应用。本实现方案无需复杂的协议与价格较为昂贵的协议支持芯片,可作为嵌入式系统无线数据传输的一种低成本、低功耗选择方案。经过实验验证,本系统能在实际应用环境中可靠运行,且在设计时不局限于特定的嵌入式系统,具有较高的通用性,能方便地移植到其他的系统中去,满足无接触数据传输的要求。

[1]李斌.基于蓝牙的车间环境下无线通信技术研究与应用[D].西安:西安理工大学,2008:3-4.

[2]宏晶科技.STC12C5A60S2系列单片机器件手册[DB/OL].(2009 -11).www.STCMCU.com.

[3]Silicon labs.IA4421 DATASHEET[DB/OL].(2007 -08).www.integration.com.

[4]石琼,江秀臣,曾奕.无线通信在输电线路绝缘子检测中的应用[J].微计算机信息,2008(24):9-11.

[5]邹其洪,柳兰,赵俊.基于LPC2131和IA4421的无线数据采集系统设计[J].信息与电子工程,2009(2):90-93.

猜你喜欢
赋值寄存器串口
L-代数上的赋值
STM32和51单片机寄存器映射原理异同分析
浅谈AB PLC串口跟RFID传感器的通讯应用
Lite寄存器模型的设计与实现
强赋值幺半群上的加权Mealy机与加权Moore机的关系*
算法框图问题中的易错点
利用赋值法解决抽象函数相关问题オ
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式