新手入门
- 积分
- 26
- 金钱
- 26
- 注册时间
- 2015-4-9
- 在线时间
- 0 小时
|
5金钱
大家好,我最近正在学习NRF24L01模块,遇到了几个问题,请各位帮帮忙。<br />
使用原子哥的mini板与战舰板进行通信,无线模块设置为通道0的时候,两者通信正常,设置为通道1时,就出现问题了。<br />
具体表现为:接收端没有收到数据,发射端跟正常的时候一样(后来我把接收端的电源关掉,发射端依旧在发数据,看起来跟正常的时候一样)<br />
我修改了历程当中的·<span style="font-size:14.4444446563721px;line-height:23.3333339691162px;">NRF24L01_RX_Mode与</span><span style="font-size:14.4444446563721px;line-height:23.3333339691162px;">NRF24L01_TX_Mode两个函数</span><br />
具体函数如下:<br />
<div style="background-color:#E8E8E8;">
[mw_shl_code=c,true]const u8 TX0_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; //发送地址
const u8 RX0_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};[/mw_shl_code]
</div>
<div style="background-color:#E8E8E8;">
[mw_shl_code=c,true]void NRF24L01_RX_Mode(void)
{
NRF24L01_CE=0;
NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P1,(u8*)RX0_ADDRESS,RX_ADR_WIDTH);//写RX节点地址
NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x02); //使能通道1的自动应答
NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x02); //使能通道1的接收地址
NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40); //设置RF通信频率
NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P1,RX_PLOAD_WIDTH);//选择通道1的有效数据宽度
NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启
NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG, 0x0f); //配置基本工作模式的参数WR_UP,EN_CRC,16BIT_CRC,接收模式
NRF24L01_CE = 1; //CE为高,进入接收模式
}
//该函数初始化NRF24L01到TX模式
//设置TX地址,写TX数据宽度,设置RX自动应答的地址,填充TX发送数据,选择RF频道,波特率和LNA HCURR
//PWR_UP,CRC使能
//当CE变高后,即进入RX模式,并可以接收数据了
//CE为高大于10us,则启动发送.
void NRF24L01_TX_Mode()
{
NRF24L01_CE=0;
NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)TX0_ADDRESS,TX_ADR_WIDTH);//写TX节点地址
NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX0_ADDRESS,RX_ADR_WIDTH); //设置TX节点地址,主要为了使能ACK
NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x02); //使能通道1的自动应答
NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x02); //使能通道1的接收地址
NRF24L01_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次
NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40); //设置RF通道为40
NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启
NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG,0x0e); //配置基本工作模式的参数WR_UP,EN_CRC,16BIT_CRC,接收模式,开启所有中断
NRF24L01_CE=1;//CE为高,10us后启动发送
}[/mw_shl_code]
</div>
实在搞不懂究竟出了什么问题,请各位指点指点。<br />
谢谢!<br />
<br />
|
|