|
发表于 2013-11-3 10:30:52
|
显示全部楼层
Spi_RW(0x50);
Spi_RW(0x73);
这两条指令是为了重新开启动态载荷功能的。
看我的代码
#if DYNAMIC_PAYLOAD//使用动态载荷方式时
if((config & 0x01) == 0)//发射下模式需要清除,接收模式下不能清除。//因为指令要放在接收前进行模式转换,清楚缓冲区会导致收不到数据
{
nRF24L01_Write_Reg(nRF_WRITE_REG | nRF_FLUSH_TX, 0xff);
nRF24L01_Write_Reg(nRF_WRITE_REG | nRF_FLUSH_RX, 0xff);
}
nRF24L01_Write_Reg(nRF_WRITE_REG | FEATURE, 0x07); //动态载荷写入参数
if(nRF24L01_Read_Reg(FEATURE) == 0x00) //检查动态载荷参数是否正确写入
{
nRF24L01_Write_Reg(Activate, Code_Activate); //重新使能
}
#if nRF_PTX
nRF24L01_Write_Reg(nRF_WRITE_REG | DYNPD, 0x01); //发射模式下仅使能通道0
#else
nRF24L01_Write_Reg(nRF_WRITE_REG | DYNPD, 0x3f); //接收模式下使能全部通道
#endif
nRF24L01_Write_Reg(nRF_WRITE_REG | FEATURE, 0x07); //动态载荷,EN_DPL使能动态载荷|EN_ACK_PAY使能带载荷的ACK应答|EN_DYN_ACK使能nRF_W_TX_PAYLOAD_NOACK发送载荷
#else//使用静态数据载荷
nRF24L01_Write_Reg(nRF_WRITE_REG | RX_PW_P0, RX_PLOAD_WIDTH);//指定接收数据长度
#if !nRF_PTX//接收模式下全部通道使能
nRF24L01_Write_Reg(nRF_WRITE_REG | RX_PW_P1, RX_PLOAD_WIDTH);//指定接收数据长度
nRF24L01_Write_Reg(nRF_WRITE_REG | RX_PW_P2, RX_PLOAD_WIDTH);//指定接收数据长度
nRF24L01_Write_Reg(nRF_WRITE_REG | RX_PW_P3, RX_PLOAD_WIDTH);//指定接收数据长度
nRF24L01_Write_Reg(nRF_WRITE_REG | RX_PW_P4, RX_PLOAD_WIDTH);//指定接收数据长度
nRF24L01_Write_Reg(nRF_WRITE_REG | RX_PW_P5, RX_PLOAD_WIDTH);//指定接收数据长度
#endif
#endif
|
|