您当前的位置:五五电子网电子知识通信技术综合通信技术LPC1766与Si4432的无线数据传输系统设计解析 正文
LPC1766与Si4432的无线数据传输系统设计解析

LPC1766与Si4432的无线数据传输系统设计解析

点击数:7468 次   录入时间:03-04 12:01:58   整理:http://www.55dianzi.com   综合通信技术

    内容摘要:本文设计了一种基于微功率无线收发芯片Si4432的远程数据传输系统。该系统采用ARM Cortex—M3核芯片LPC1766,通过SSP控制器操作射频收发芯片,详细论述了芯片基于时序的编程方法。该方案的运用可以实现无线数据的可靠收发,具有良好通信效果。
关键词:微功率;无线数据传输;远程控制

引言
    随着社会的发展,空调系统广泛应用于现代办公大楼及高层建筑中,空调在改善和提高建筑物内部环境质量的同时,也带来了巨大的能源消耗。在现代楼宇建筑中,每年的夏冬两季建筑物的大部分能耗被空调所占据,因此如何通过科学的方法降低空调能耗,是一个亟待解决的问题。
    积极地开发与合理地运用节能控制技术,将分散的空调进行集中统一的管理是降低空调能耗的有效途径。随着传感器技术、网络技术、计算机技术的发展,各种信息数据的检测、传送、分析处理都具备了实现的条件和手段,促进了物联网核心技术的迅猛发展,使分体空调控制的集中化、网络化成为可能。
    通过研究物联网的构成及实际应用模式,探索将其引入到分体空调集中控制系统中来,构建一套基于物联网的分体空调节能控制系统。由于各个感知节点分布较广,传统单一的有线传输方式在某些应用中存在传输不稳定、人机交互性不够好、控制实时性不强、网络不够融合、布线不方便等缺点。因此,信息传输网络应建成基于物联网技术的有线和无线相结合的混杂网络架构,将数据汇聚至集中器统一管理,实现分体空调系统运行状态、能耗以及环境状况等数据准确、稳定的传输。其系统结构如图1所示。

a.JPG

   

1 LPC1766和Si4432芯片简介
   
LPC1766是NXP公司推出的基于Cortex—M3内核的LPC1700系列微控制器,集成10/100M Ethemet MAC、CAN总线通道、SPI接口、I2C总线接口、ADC模块等,其拥有丰富的外围接口,适用于要求高度集成和低功耗的嵌入式场合。硬件组成主要包括以太网模块、RS485模块、传感器模块、继电器模块等。
    射频收发采用的是SILICon Labs公司的Si4432芯片,该芯片集成度高、体积小、功耗低,具有-118 dBm的超高灵敏度,可提供极佳的链路质量,在扩大传输范围的同时将功耗降至最低。其工作频段范围为240~930 MHz,最高输出功率可达+20 dBm,传输距离远。Si4432内部集成了天线分集、休眠唤醒定时器、64字节收发FIFO等功能。同时,Si4432芯片还具有跳频和信道信号强度评估等功能。其外围电路仅需要一个30 MHz晶振及若干个电阻、电容、电感等,电路设计简单、成本低廉。因此非常适用于对尺寸和成本敏感的大批量生产中的应用。

2 硬件设计
   
LPC1700系列具有两个可以兼容SPI、SSI和Microwire总线的SSP接口,可以根据应用灵活进行配置。本套系统中LPC1766与Si4432芯片通过SSP1相连,LPC1766通过SSP接口配置Si4432内部寄存器,并实现数据的读写。芯片的PORT0和PORT3口具有中断功能,当引脚电平符合设置值时,就会触发中断,在此,将P0.5引脚连接到SDN,用来控制Si4432进入非关断(SHUTDOWN)状态。
    而P0.4引脚连接nIRQ,Si4432即可通过这个引脚通知LPC1766进行中断处理。Si4432的TX引脚为射频信号发送端,RXp引脚为差分信号接收端,因为采用单天线进行数据的破收,所以射频信号的发射和接收端必须要通过RF开关芯片UPG2164与天线相连,对发射和接收状态进行切换。GPIO0高电平而GPI01为低电平时为发送状态;GPIO0低电平而GPIO1为高电平时为接收状态。其电路如图2所示。

b.JPG

   

3 软件设计
3.1 无线的基本原理
   
Si4432芯片状态转换图如图3所示。芯片有关断、挂起、发射和接收4种状态。芯片在收/发状态间转换时,一般先经过挂起状态,这里所指的挂起状态一般是指预备模式和调谐模式。在预备模式,晶振保持启动状态,这样芯片在挂起状态切换到收/发模式时可以消除晶振的启动时间。在调谐模式下,PLL保持使能,这种模式下芯片收/发转换时间响应最快,但是电流消耗很高。

e.JPG

   
3.2 SSP接口编程时序
   
在将Si4432的驱动程序移植到不同的MCU平台上时,最为关键的就是要保证MCU可以读写Si4432内部寄存器的值。Si4432和MCU之间可以通过标准的3线SPI接口通信:SCLK、SDI和nSEL。而主机MCU则通过Si4432的SDO输出引脚获取数据。LPC1766具有2个可以兼容SPI总线的SSP总线接口。但是,SSP与SPI接口在硬件原理上是存在差异性的。SSP带有硬件FIFO,而SPI不具备。以下着重介绍应用LPC1766的SSP1接口和Si44 32进行交互的方法。
3.2.1 引脚初始化配置
   
为了方便P0.6引脚对Si4432进行片选操作,通过宏定义的方式,指定名字记号LVL_H和LVL_L的替换文本内容,分别为控制引脚的高低电平变换:
    #define LVL_H(GPIO0->FIOSET|=(0x01<<6))
    //将P0.6电平拉高
    #define LVL_L(GPIO0->FIOCLR|=(0x01<<6))
    //将P0.6电平拉低
    配置引脚功能选择寄存器,将P0.5引脚指定为GPIO默认的输出低电平,将其连接到Si4432的SDN引脚,用来控制Si4432进入非关断(SHUTDOWN)状态。初始化P0.7、P0.8、P0.9为SSP1接口引脚:
    d.JPG
    f.JPG
    指定P0.4引脚为GPIO中断,连接Si4432的nIRQ引脚,当Si4432有相应的中断条件出现时,可通知LPC1766执行中断处理程序:
    g.JPG
3.2.2 写模式
   
函数vSpiWriteRegister的功能是向Si4432内部寄存器reg写入值value。片选之后,首先读取SSP1的状态寄存器,确认发送FIFO未满。在发送寄存器地址之前,需要将reg的最高位置1,此后检测SSP1控制器是否空闲。发送value值的过程相似,其程序代码如下:
    h.JPG
3.2.3 读模式
   
函数bSpiReadRegister的功能是读取Si4432内部寄存器reg的值。

k.JPG

   
    这里需要注意的是,因为SSP控制器具有收/发FIFO,在进行正常的读模式通信之前,需要先将接收FIFO中的“垃圾”数据读出丢弃。同理,参照图4所示的读模式时序图可知,因为SSP是全双工的,在SDI引脚发送寄存器地址的时候,SDO引脚处于低电平状态,那么接收FIFO中将首先保存0x00,此后接收的第2个字节才是Si4432指定寄存器的值。其程序代码如下:
     
j.JPG
3.3 无线数据发送和接收
3.3.1 射频芯片初始化及参数设置
   
Si4432有两个只读类型的寄存器:Reg00(内部地址为00h的寄存器)表示设备类型码,Reg01表示版本代码,其值在芯片出厂时已固定,后期不可更改。在此,可以在初始化时通过读取Reg00和Reg01的值,来判断Si4432是否已正常启动。
    首先初始化LPC1766,启动SSP1控制器。读取Si4432的Reg03和Reg04,将自动清除中断标志,并释放nIRQ引脚。向Reg07写入0x80,即最高位置1,将复位所有的内部寄存器为默认状态,延时10 ms等待Si4432正常工作后,统计启动次数。在Reg00和Reg01的值均满足条件之后,再往相应的寄存器中填入通信参数,随后立即进入接收状态。其流程如图5所示。

[1] [2]  下一页


本文关键字:无线  综合通信技术通信技术 - 综合通信技术