一、 前言
2.4Ghz的优势
1.无线传输:2.4GHz无线通信通过无线电波进行数据传输,不需要物理连接线,提供了更大的灵活性和便利性。相比较于串口需要有物理连接线,无线通信可以克服距离和布线限制。
2.大范围覆盖:2.4GHz频段在室内和室外都能提供相对较远的传输距离,使得设备之间可以实现广泛的通信覆盖。
3.多设备连接:2.4GHz无线通信技术可以支持多个设备同时连接和通信,这对于无线传感器网络、智能家居、工业自动化等应用非常重要。
4.低功耗选项:2.4GHz无线通信技术针对低功耗应用提供了一些优化方案,在电池供电设备和对功耗要求较高的应用中具有优势。
5.应用广泛:2.4GHz无线通信技术在众多领域得到了广泛应用,包括物联网、远程控制、传感器数据采集、智能家居、工业自动化等。
二、Si24R1是什么?
Si24R1是一款2.4GHz的低功耗无线收发器模块,基于Nordic Semiconductor的nRF24L01+芯片。该模块具有良好的性能和稳定的数据传输能力,常被用于无线通信领域。
Si24R1模块可以通过SPI接口与主控芯片(如单片机)进行通信,实现无线数据传输。它具有较远的传输距离、多通道选择、多种工作模式等特点,适用于各种无线控制、监测、数据采集等场景。
如果您需要在嵌入式系统中实现无线通信功能,Si24R1模块可以作为一个可靠的选择。
三、应用
1.硬件
1.连接图(如下图所示):SPI接口
2.软件
2.1 各个工作模式介绍
2.1.1 关断模式
1.关断模式:不再接收或发送数据,是功耗最低的模式,低至0.7uA。可以通过SPI接口唤醒并切换到待机模式。
代码如下(示例):
/********************************************************
函数功能:关断模式
入口参数:void
返回 值:void
*********************************************************/
void ST24R1Shotoff(void)
{
IO_CE_LOW();
SI24R1_Write_Reg(WRITE_REG + CONFIG, 0x0c); // 关断模式
}
2.1.2 待机模式
2.待机模式:时钟处于工作,也不再接收或发送数据,功耗较低,大概在15uA。可以通过拉高CE引脚进入发送空闲模式或接收模式。
代码如下(示例):
/********************************************************
函数功能:将CE引脚拉低,使SI24R1进入待机模式
入口参数:void
返回 值:void
*********************************************************/
void ST24R1EnterStandby(void)
{
IO_CE_LOW();
}
/********************************************************
函数功能:将CE引脚拉高,使SI24R1退出待机模式
入口参数:void
返回 值:void
*********************************************************/
void ST24R1ExitStandby(void)
{
IO_CE_HIGH();
}
2.1.3 发送模式
3.发送模式:模块被配置为发送数据的设备。它使用无线电信道将数据传输给一个或多个接收设备,发射电流为12mA。
代码如下(示例):
/********************************************************
函数功能:SI24R1发送模式
入口参数:void
返回 值:void
*********************************************************/
void SI24R1_TX_Mode(void)
{
IO_CE_LOW();
SI24R1_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 写入发送地址
SI24R1_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 为了应答接收设备,接收通道0地址和发送地址相同
SI24R1_Write_Reg(WRITE_REG + EN_AA, 0x01); // 使能接收通道0自动应答
SI24R1_Write_Reg(WRITE_REG + EN_RXADDR, 0x01); // 使能接收通道0
SI24R1_Write_Reg(WRITE_REG + SETUP_RETR, 0x0A); // 自动重发延时等待250us+86us,自动重发30次
SI24R1_Write_Reg(WRITE_REG + RF_CH, DEFAULT_FREQUENCY); // 选择射频通道0x40
SI24R1_Write_Reg(WRITE_REG + RF_SETUP, TX_TRANSMIT_POWER | RF_DATA_RATE); // 数据传输率2Mbps,发射功率7dBm
SI24R1_Write_Reg(WRITE_REG + CONFIG, 0x0e); // CRC使能,16位CRC校验,上电,发送模式
SI24R1_Write_Reg(WRITE_REG + STATUS, 0xff); // 清除所有的中断标志位
SI24R1_Write_Reg(FLUSH_TX, 0xff); // 清除TX FIFO寄存器
IO_CE_HIGH();
}
2.1.4 接收模式
4.接收模式:模块被配置为接收数据的设备。它通过无线电信道接收来自发送设备的数据,接收电流为15mA。
代码如下(示例):
/********************************************************
函数功能:SI24R1接收模式
入口参数:void
返回 值:void
*********************************************************/
void SI24R1_RX_Mode(void)
{
IO_CE_LOW();
SI24R1_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 接收设备接收通道0使用和发送设备相同的发送地址
SI24R1_Write_Reg(WRITE_REG + EN_AA, 0x01); // 使能接收通道0自动应答
SI24R1_Write_Reg(WRITE_REG + EN_RXADDR, 0x01); // 使能接收通道0
SI24R1_Write_Reg(WRITE_REG + RF_CH, DEFAULT_FREQUENCY); // 选择射频通道0x40
SI24R1_Write_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); // 接收通道0选择和发送通道相同有效数据宽度
SI24R1_Write_Reg(WRITE_REG + RF_SETUP, TX_TRANSMIT_POWER | RF_DATA_RATE); // 数据传输率2Mbps,发射功率7dBm
SI24R1_Write_Reg(WRITE_REG + CONFIG, 0x0f); // CRC使能,16位CRC校验,上电,接收模式
SI24R1_Write_Reg(WRITE_REG + STATUS, 0xff); // 清除所有的中断标志位
IO_CE_HIGH(); // 拉高CE启动接收设备
}
四、总结
以上就是今天聊的内容,本文仅仅简单介绍了Si24R1的各种工作模式,而si24R1是怎么发送数据,怎么接收数据的,有兴趣的可以下载附件参考,感谢你的观看,谢谢!