|
Si24R1各种工作模式示例代码
1.关断模式:不再接收或发送数据,是功耗最低的模式,低至0.7uA。可以通过SPI接口唤醒并切换到待机模式。
代码如下(示例):
/********************************************************
函数功能:关断模式
入口参数:void
返回 值:void
*********************************************************/
void ST24R1Shotoff(void)
{
IO_CE_LOW();
SI24R1_Write_Reg(WRITE_REG+ CONFIG, 0x0c); // 关断模式
}
2.待机模式:时钟处于工作,也不再接收或发送数据,功耗较低,大概在15uA。可以通过拉高CE引脚进入发送空闲模式或接收模式。
代码如下(示例):
/********************************************************
函数功能:将CE引脚拉低,使SI24R1进入待机模式
入口参数:void
返回 值:void
*********************************************************/
void ST24R1EnterStandby(void)
{
IO_CE_LOW();
}
/********************************************************
函数功能:将CE引脚拉高,使SI24R1退出待机模式
入口参数:void
返回 值:void
*********************************************************/
void ST24R1ExitStandby(void)
{
IO_CE_HIGH();
}
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();
}
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启动接收设备
}
|
|