基于SI4432的高性能无线收发应用平台设计
近些年来,随着集成电路技术的发展,ISM频段单芯片的无线数据通信IC的性能日益提高,短距离无线应用领域也在不断地扩大,其中包括消费电子、工业控制、安防、自动抄表等诸多领域。数据的无线收发在无线产品设计中占有很大的比重。为缩短产品设计周期以及提高产品的稳定性,使产品设计工程师在设计过程中只需关注系统应用的设计,而将数据收发交付一种成熟稳定的收发系统来完成。为此,本文设计了一种基于SI4432+STM32F103的高性能无线收发平台。
1 STM32F103和SI4432芯片简介
STM32系列是采用ARM CortexTM-M3 内核的闪存微控制器,所有功能都具有业界最优的功耗水平。在结合了高性能(最高72 MHz频率)、低功耗(睡眠、停机和待机模式)和低电压(可2.0 V~3.6 V供电)特性[1]的同时保持了高度的集成性能和简易的开发特性,为用户提供最大程度的灵活性。
SI4432是Silicon Labs公司的ISM频段收发一体芯片,最大输出功率达到了+20 dBm(100 mW),具有“距离之王”的美誉(空旷距离可达2 000 m)。SI4432具有特有的连续频率覆盖范围(240 MHz~960 MHz)、宽工作电压(+1.8 V~+3.6 V)、高灵敏度(在BER0.1%, 数据速率2.0 kb/s时为-118 dBm)等特点,还集成了一些可节省应用成本的特性,如唤醒定时器、温度传感器、发射和接收数据FIFO、高性能ADC[2],这些特性可大幅简化系统设计师的工作,并允许使用低端的微控制器。高集成度使得外围仅需一个30 MHz的晶体和几个用于匹配/滤波的无源器,因此非常适用于对尺寸和成本敏感的大批量生产中的应用。
2 硬件设计
该平台主要由微处理器ARM7 STM32F103(以下简称STM32)和RF收发芯片SI4432组成。STM32通过SPI接口对SI4432进行初始化配置、数据收发控制等,而SI4432通过nIRQ脚将相应的中断发送至STM32。该平台采用单天线进行数据的收发,所以必须采用RF收发切换开关用于对SI4432的收发状态进行切换, 其中GPIO1控制RF切换开关为发送状态,GPIO2控制RF切换开关为接收状态[2]。系统硬件组成如图1所示。
为满足用户各种不同的设计需求,该平台还提供串口、通用IO口和AD转化接口。其中,AD转化接口可以用于需要处理模拟信号的系统,如有各种传感器的环境监控系统。
3 软件设计
软件编程采用模块化设计思想,系统中各主要功能模块均编成独立的函数由主程序调用。功能模块包括:初始化程序(初始化SPI、 SI4432)、无线发送程序和无线接收程序等。
3.1状态转化
为了最大限度地降低功耗,软件设计中采用SI4432的自动唤醒功能,在没有数据收发时芯片处于空闲状态,定时一段时间后将状态切换至发送或是接收,检查是否有数据的收发。SI4432主要有四种状态:关闭、空闲、发送和接收,这些状态在满足一定的条件时可实现相互转移,状态转移如图2所示。在关闭状态下功耗最低,空闲次之。空闲状态有五种不同的模式,用户可以根据不同的应用灵活选择。这些状态或模式可以在操作模式和功能控制寄存器07H中设定,通过在寄存器07H中设定txon/rxon控制位可以从空闲状态中的任一模式自动转移到发送/接收状态。不同模式/状态下转换需要的时间和功耗都不相同,可以根据系统需要选择最佳的状态和模式。
3.2 无线发送程序流程
无线发送程序负责写入数据载荷,并根据通信协议为数据载荷加上前导码、同步字、数据载荷长度等,形成数据包并将其发送出去,其流程如图3所示。在完成 SPI和 SI4432 的初始化后,通过配置 SI4432 的寄存器3EH来设置包的长度,然后清除发送FIFO,并通过SPI连续写寄存器7FH将待发送数据写入发送 FIFO(字节数小于64 B),最后打开“发送完中断允许”标志,将其他中断都禁止。完成中断使能后,使能发送功能,数据开始发送。当数据包发送完时,引脚nIRQ会被拉低产生一个低电平并通知STM32数据包已发送完毕,当nIRQ引脚变为低时读取中断状态并拉高 nIRQ,否则继续等待。一次数据发送成功后,关闭发送使能,进入下一次数据循环发送状态。
3.3 无线接收程序流程
无线接收程序负责获取有效载荷数据长度,并读取接收FIFO中的有效数据,其流程如图4所示。在程序完成SPI和SI4432的初始化后,打开“有效包中断”和“同步字检测中断”,将其他中断都禁止,并使能接收功能。等待nIRQ引脚因中断产生而被拉低,读取中断标志位拉高nIRQ引脚。若引脚 nIRQ 变成低电平,表示接收到有效数据包,通过寄存器4 BH读取包长度信息,并通过SPI访问寄存器7 FH从接收 FIFO中读取接收到的数据,之后关闭接收使能,进入下一次数据接收状态。
设计中参考了802.15.4中CSMA/CA的相关原理,采用非信标的方式实现符合系统要求的精简的CSMA/CA发送机制[3]。非信标的方式即:结点若有数据要发送,需要先通过CSMA/CA机制进行信道监测,也就是在等待一个随机时间后,对当前信道进行监听,若监测到信道空闲,就可以开始传送数据;若监测到信道忙,则需要重新等待一个随机时间,然后再继续监听信道,具体实现流程如图8[4-5]所示。步骤如下:
(1)在开始发送数据之前先监听信道0.5 ms。如果在这段时间内信道是空闲的(通过读取寄存器26 H的接收信号强度(RSSI)值,则与设定的信道空闲阈值做比较来判断,发送节点将随机延时0或1个时隙(1时隙为1 ms)。如果信道仍然是空闲的就开始发送数据;若信道变得忙碌,则跳到第(3)步骤。
(2)如果在0.5 ms内信道为忙,则发送节点每隔0.5 ms采样一次RSSI值,直到RSSI值小于设定的门阈值或是采样次数达到10次。如果采样次数达到10次,则跳转到步骤(5)。
(3)若信道仍然为忙,则发送方将再等待一随机时间,等待时间的大小是由下式确定:
RandomTime = n×time[1:0]
其中,n是0~15中的一个随机数,time[1:0]可以设定为固定的时间(0.25 ms、0.5 ms、1 ms、2 ms),可以根据应用的需要选择不同的值。
(4)如果在这段时间内信道是空闲的,则发送数据;若忙碌则跳转到步骤(5)。
(5)若尝试的次数超出限定值(MAX_TRY_NUMBER),则跳转到步骤(6)。
(6)如果由于信道忙无法发出数据,则发送节点将返回信道忙错误。
嵌入式新闻 嵌入式资料 嵌入式培训 嵌入式linux 嵌入式系统 嵌入式开发 嵌入式 相关文章:
- 煤矿井下综合自动化系统中的应用(04-06)
- 软件Overlay:程序编写与调试(01-20)
- USB数据通信接□模块的程序设计(10-17)
- 东江产业园:力争2017年产值达千亿(09-30)
- 硅谷数模的SlimPort扩大了Nexus7的显示屏选择(08-01)
- Lonworks控制网络技术在城市排水泵站自动化中的应用(06-06)