基于nRF24L01的无线温湿度测试系统
3 系统的软件设计
3.1 无线发送模式流程
1)MCU控制引脚CE为低,使nRF24L01进入待机模式I,配置其寄存器:
2)当MCU有数据要发送时,接收节点地址(TX_ADDR)和有效数据(TX_PLD)通过SPI接口写入nRF24L01,当CSN为低时数据被不断地写入。发送端发送完数据后,将通道0设置为接收模式来接收应答信号,其接收地址(RX_ADDR_P0)与接收端地址(TX_ADDR)相同;
3)设置PRIM_RX为低、CE为高,启动发射模块,CE高电平持续时间最小为10μs;
4)nRF24L01 ShockBurst发送模式:无线系统上电、启动内部16 MHz时钟、无线发送数据打包、高速发送数据;
5)数据发送完后,立即进入接收模式。如果在有效应答时间范围内收到应答信号,则认为数据成功发送到了接收端,此时状态寄存器的TX_DS位置高并把数据从TX_FIFO中清除掉;如果在设定时间范围内没有接收到应答信号,则重新发送数据,如果自动重发计数器溢出,则状态寄存器的MAX_RT位置高,不清除TX_FIFO中的数据。当MAX_RT或TX_DS为高电平时IRQ引脚产生中断,IRQ中断通过写状态寄存器来复位。如果重发次数在达到设定的最大重发次数时还没有收到应答信号的话,在MAX_RX中断清除之前不会重发数据包,数据包丢失计数器(PLOS_CNT)在每次产生MAX_RT中断后加一;
6)如果CE置低,则系统进入待机模式I,如果不设置CE为低,则系统会发送TX_FIFO寄存器中下一包数据,如果TX_FIFO寄存器为空且CE为高则系统进入待机模式II;
7)如果系统在待机模式Ⅱ,当CE置低后系统立即进入待机模式I。
nRF24L01的发送模式的程序流程图如图4所示。本文引用地址:https://www.eepw.com.cn/article/155242.htm
3.2 无线接收模式流程
1)MCU将nRF24L01的CE引脚置低,使其进入待机模式I,并对其寄存器进行配置;
2)将PWR_UP、PRIM_RX、CE引脚置高,使nRF24L01进入接收模式;
3)130μs后nRF24L01开始检测空中信息;
4)接收到有效的数据包后(地址匹配、CRC校验正确),将数据存储在RX_FIFO中,同时RX_DR位置高,并产生中断;
5)发送确认信号;
6)MCU设置CE脚为低,使nRF24L01进入待机模式I;
7)MCU通过SPI口以合适的速率将数据读出。
nRF24L01的接收模式的程序流程图如图5所示。
4 结论
文中设计了一种低功耗、高可靠性的温湿度测试系统。经测试本系统在空旷环境下可靠通信距离达到220 m,可以满足实际测试需要。
评论