资讯详情

安信可 NF-02-PA/PE 2.4模组(Si24R1芯片)驱动代码详细介绍,完美替换 NRF24L01系列。

前言

  • 安信可 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 介绍特征参数

主要特性:

Si24R1芯片与NRF24L01芯片对比

安信可 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

标签: 336c胆电容贴片电容ce

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台