安信可 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没有用到此位,而Si24R1若将此位置调到1的话,发射功率就能达到7dB。同时,寄存器地址为0X06的RF_SETUP的最低位(bit0)功能是“SetupLNAgain”,中文翻译是“设置低噪声放大器增益”;也就是说,NRF24L01的寄存器RF_SETUP的bit0并不是没有用到,而是和LNA增益放大器配合使用了,而此位在Si24r1里却成为了“设置成7dB的发射功率”的一个bit了。 Si24R1的发射功率标称和NRF24L01的基本一样,“-18dB、-12dB、-6dB、0dB”可选,只是,Si24R1多了个“7dB”的最大发射功率。
  • 功耗对比
    一个芯片的功耗大与不大,这得看选择多大的发射功率,小编只测试过MSPA驱动NRF24L01的整体功耗电流,MSPA令NRF24L01进入sleepmode 之后,自己再进入LMP4(low power mode 4),此时,用万用表测出的电流时:7uA ,即一颗200mAh的纽扣电池供电的话,理论上能待机3年多;Si24R1的功耗,据说相对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 位的值为 0,芯片立即返回到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位的值为 0,同时要求引脚 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

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐