3.1 节点硬件设计
图3是节点的硬件原理图。电路外围元器件较少,主要包括6个模块: LPC2138 MCU模块、MC13192无线射频模块、电源模块、UART串口模块、JTAG接口模块和数据采集I/O模块。LPC2138和MC13192通过SPI总线连接。LPC2138的SPI接口工作在主机模式,是数据传输的控制方;MC13192设为从机模式。LPC2138通过4线SPI接口对MC13192的内部寄存器进行读写操作,从而完成对MC13192的控制以及数据通信。由传感器输出的模拟信号经过10位A/D变换后输入到LPC2138中,LPC2138将传感器采集的信号经过处理后通过MC13192发射出去。对传感器的控制信号可以从MC13192的天线接收进来,通过SPI传送到LPC2138上,经过其判断处理后通过GPIO口传送到传感器上,以实现对传感器的控制。MC13192芯片指定的晶振频率为16 MHz,考虑到晶振对通信质量的影响,在制作PCB板时应将晶振的位置尽可能地靠近MC13192芯片的XTAL1和XTAL2引脚。电源电路采用两种方式: 一种是3.6 V干电池;另一种是钮扣电池,可以根据需要选用。
图3 节点硬件原理图
3.2 节点软件设计
按照硬件电路设计思路,软件采用模块化结构程序设计方式。软件模块包括: 数据发送模块、数据接收模块、UART串口模块、LPC2138与MC13192连接的SPI模块、中断服务模块。系统软件编程的基本思路: 先对SPI端口、MC13192控制端口和LPC2138控制端口进行初始化;使能SPI端口、UART端口和A/D;初始化MC13192芯片;开启接收机后,即可运行任务程序,实现接收或发送数据。这里简要给出LPC2138与MC13192之间的SPI通信程序。发送和接收程序流程如图4和图5所示。
void SPIDrvWrite (uint8 u8Addr, uint16 u16Content) {/*SPI写函数*/
uint8 u8TempValue;
MC13192DISAbleInterrupts();/*禁止MC13192产生中断请求*/
IO1CLR = MC13192_CE;/*使能MC13192 SPI */