前言
- 安信可 2.4G模组 NF-02-PA/PE 介绍特征参数
- Si24R1芯片与NRF24L01芯片对比
- 安信可 2.4G模组 NF-02-PA/PE 工作模式
- 安信可 2.4G模组 NF-02-PA/PE 驱动代码
- 联系我们
安信可 2.4G模组 NF-02-PA/PE 介绍特征参数
主要特性:
- 工作在 2.4GHz ISM 频段
- 调制方式:GFSK/FSK
- 数据速率:2Mbps/1Mbps/250Kbps
- 超低关断功耗:<0.7uA
- 超低待机功耗:<15uA
- 快速启动时间: <130uS
- 内部集成高 PSRR LDO
- 宽电源电压范围:1.9-3.6V
- 数字 IO 电压: 3.3V/5V
- 低成本晶振:16MHz±60ppm
- 接收灵敏度:<-83dBm @2MHz
- 最高发射功率:7dBm
- 接收电流(2Mbps):<15mA
- 发射电流(2Mbps):<12mA(0dBm)
- 10MHz 四线 SPI 模块
- 智能内部集成 ARQ 基带协议引擎
- 收发数据硬件中断输出
- 支持 1bit RSSI 输出
- 外围设备很少,降低了系统应用成本
- QFN20 封装或 COB 封装
Si24R1芯片与NRF24L01芯片对比
- 两个芯片的技术数据基本相同 Si24R1芯片就是NRF24L01芯片,同样的程序可以驱动这两个模块。此外,这两个芯片的寄存器地址、内容和操作命令基本相同。
- 发射功率比较 Si24r1号称最高能达7dB的发射功率,描述中称寄存器地址为0X06的RF_SETUP最低位(bit0)和NRF24L01的不一样,NRF24L01没有使用这个位置,但是Si24R如果将这个位置调整到1,发射功率可以达到7dB。同时,寄存器地址为0X06的RF_SETUP的最低位(bit0)功能是“SetupLNAgain中文翻译是设置低噪声放大器增益;也就是说,NRF24L01的寄存器RF_SETUP的bit0不是没用,而是和谐LNA增益放大器配合使用,而此位在Si24r但它变成了77dB一种发射功率bit了。 Si24R1发射功率标称和NRF24L01基本相同,-18dB、-12dB、-6dB、0dB只是,Si24R1多了个“7dB最大发射功率。
- 功耗对比 芯片的功耗取决于发射功率的选择。小编只测试过MSPA驱动NRF24L01总功耗电流,MSPA令NRF24L01进入sleepmode 之后,自己进去LMP4(low power mode 4)此时,用万用表测量的电流:7uA ,即一颗200mAh如果按钮电池供电,理论上可以待机3年多;Si24R据说1的功耗是相对的NRF24L01稍大一点,但以实际测量为准;但是,Si24R1号称能达到7dB如果发射功率,此时的功耗肯定不小。给它供电的稳压芯片必须有足够的功率和滤波器(建议使用10uF胆电容加104贴片电容)。
安信可 2.4G模组 NF-02-PA/PE 工作模式
Si24R1 芯片内部有状态机,控制芯片在不同工作模式之间的转换。Si24R1 可配置为 Shutdown、Standby、Idle-TX、TX 和 RX 五种工作模式。
- Shutdown 工作模式 在 Shutdown 在工作模式下,Si24R1 所有收发功能模块关闭,芯片停止工作,电流消耗最小,但所有内部寄存器值和 FIFO 值保持不变,仍可通过 SPI 实现寄存器的读写。 CONFIG 寄存器的 PWR_UP 位的值为 芯片立即返回Shutdown 工作模式。
- Standby 工作模式。 在 Standby 在工作模式下,只有晶体振荡器电路工作,以确保芯片快速启动,同时消耗更少的电流。设置 CONFIG 寄存器下的 PWR_UP 位的值为 1.芯片待时钟稳定后进入 Standby 模式。芯片的时钟稳定时间一般为 1.5~2ms,与晶振的性能有关。当引脚 CE=1 芯片将由时 Standby 模式进入到 Idle-TX 或 RX 模 式,当 CE=0 芯片将由时 Idle-TX、TX 或 RX 模式返回到 Standby 模式。
- Idle-TX 工作模式 在 Idle-TX 晶体振荡器电路在工作模式下及时工作。相比于 Standby芯片消耗更多的电流。当发送端 TX FIFO 寄存器是空的,引脚 CE=1点,芯片进入 Idle-TX 模式。在这种模式下,如果发送了新的数据包 TX FIFO芯片内的电路将立即启动并切换到 TX 发送数据包的模式。在 Standby 和 Idle-TX 在工作模式下,所有内部寄存器值和 FIFO 值保持不变,仍可通过 SPI 读写寄存器。
- TX 工作模式 当需要发送数据时,需要切换到 TX 工作模式。芯片进入到 TX 工作模式的条件如下:TX FIFO 中有数据, CONFIG 寄存器的 PWR_UP 位的值为 1,PRIM_RX位的值为 同时需要引脚 CE 至少有一个是持续的 10us 的高脉冲。芯片不会直接由 Standby 直接切换到模式 TX 相反,模式应立即切换 Idle-TX 模式,再由Idle-TX 自动切换模式 TX 模式。Idle-TX 模式切换到 TX 时间为120us~130us 但不超过 130us。单包数据发送完成后,如果 CE=1, 则由TX FIFO 芯片的工作模式由芯片的状态决定 TX FIFO 还有数据显示,芯片继续保持TX工作模式,发送下一包数据;当TX FIFO芯片返回无数据Idle-TX模式;如果 CE=0,立即返回 Standby 模式。数据发射完成后,芯片产生数据发射中断。
- RX 工作模式 当需要接收数据时,需要切换到 RX 工作模式。芯片进入到 RX 工作模式的条件是:设置寄存器 CONFIG 的 PWR_UP 位的值为 1,PRIM_RX 位的值为 1,并且引脚 CE=1。芯片由 Standby 模式切换到 RX 模型的时间是 120~130us。当接 Preliminary Si24R1收到的数据包的地址与芯片相同, CRC 检查正确时,数据会自动存储RX FIFO,并产生数据接收中断。芯片最多可以同时存储三个有效的数据包 FIFO已满,接收到的数据包自动丢失。在接收模式下,可以通过 RSSI 寄存器检测接收信号的功率。当接收到的信号强度大于-60dBm 时,RSSI 寄存器的 RSSI 设置位值 1。否则,RSSI=0。。RSSI 有两种方法可以更新寄存器:当收到有效的数据包时,RSSI 此外,芯片将自动更新 RX 模式换到 Standby 模式时 RSSI 自动更新。RSSI 值随温度变化,范围在±5dBm 以内
安信可 2.4G模组 NF-02-PA/PE 驱动代码
- 函数功能:初始化发送模式
- 入口参数: 无
- 返回值: 无
void SI24R1_TX_Mode(void) { CE = 0; 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,自动重发10次 SI24R1_Write_Reg(WRITE_REG RF_CH, 40); // 选择
射频通道0x40 SI24R1_Write_Reg(WRITE_REG RF_SETUP, 0x0f); // 数据传输率2Mbps,发射功率7dBm SI24R1_Write_Reg(WRITE_REG CONFIG, 0x0e); // CRC使能,16位CRC校验,上电 //CE = 1; }
- 函数功能:初始化接收模式
- 入口参数: 无
- 返回值: 无
void SI24R1_RX_Mode(void) { CE = 0; 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, 40); // 选择射频通道0x40
SI24R1_Write_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); // 接收通道0选择和发送通道相同有效数据带宽
SI24R1_Write_Reg(WRITE_REG + RF_SETUP, 0x0f); // 数据传输速率2Mbps,发射功率7dBm
SI24R1_Write_Reg(WRITE_REG + CONFIG, 0x0f); // CRC使能,16位CRC校验,上电,接收模式
SI24R1_Write_Reg(WRITE_REG + STATUS, 0xff); //清除所有的中断标志位
CE = 1; // 拉高CE启动接收设备
}
- 函数功能:发送一个数据包
- 入口参数: txbuf:要发送的数据
- 返回值:
- 0x10:达到最大重发次数,发送失败
- 0x20:发送成功
- 0xff: 发送失败
u8 SI24R1_TxPacket(u8 *txbuf)
{
u8 state;
CE=0; //CE拉低,使能SI24R1配置
SI24R1_Write_Buf(WR_TX_PLOAD, txbuf, TX_PLOAD_WIDTH); //写数据到TX FIFO,32个字节
CE=1; // CE置高,使能发送
while(IRQ == 1); //等待发送完成
state = SI24R1_Read_Reg(STATUS); //读取状态寄存器的值
SI24R1_Write_Reg(WRITE_REG+STATUS, state); //清除TX_DS或MAX_RT中断标志
if(state&MAX_RT) //达到最大重发次数
{
SI24R1_Write_Reg(FLUSH_TX,0xff); //清除TX FIFO寄存器
return MAX_RT;
}
if(state&TX_DS) //发送完成
{
return TX_DS;
}
return 0XFF; //发送失败
}
- 函数功能:读取接收数据
- 入口参数: rxbuf:接收数据存放首地址
- 返回值:
- 0:接收到数据
- 1:没有接收到数据
u8 SI24R1_RxPacket(u8 *rxbuf)
{
u8 state;
state = SI24R1_Read_Reg(STATUS); //读取状态寄存器的值
SI24R1_Write_Reg(WRITE_REG+STATUS,state); //清除RX_DS中断标志
if(state & RX_DR) //接收到数据
{
SI24R1_Read_Buf(RD_RX_PLOAD,rxbuf,TX_PLOAD_WIDTH); //读取数据
SI24R1_Write_Reg(FLUSH_RX,0xff); //清除RX FIFO寄存器
return 0;
}
return 1; //没收到任何数据
}
联系我们
以上就是本期分享的内容,目的在于让大家快速适应新品方案的开发,以上提供的驱动源码联系我们可以免费提供
官方官网:https://www.ai-thinker.com 开发资料:https://docs.ai-thinker.com/ 官方论坛:http://bbs.ai-thinker.com 商务合作:sales@aithinker.com 技术支持:support@aithinker.com 公司地址: 深圳市宝安区西乡固戍华丰智慧创新港C栋410 联系电话:0755-29162996