|
楼主 |
发表于 2013-4-16 22:21:37
|
显示全部楼层
myqiang1990 发表于 2013-4-15 17:18
你试一下嘛。。。
void init_NRF24L01(void)
{
us_wait(100);
// CE=0; // chip enable
// CSN=1; // Spi disable
// SCK=0; // Spi clock line init high
XIo_Out32(XPAR_XPS_CE_BASEADDR,0x00);
XIo_Out32(XPAR_XPS_CSN_BASEADDR,0x01);
XIo_Out32(XPAR_XPS_SCK_BASEADDR,0x00);
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址
SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // 频道0自动 ACK应答允许
SPI_RW_Reg(WRITE_REG+SETUP_RETR,0xf2); // 自动重发 重发计时1ms 重发次数15
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 允许接收地址只有频道0,如果需要多频道可以参考Page21
SPI_RW_Reg(WRITE_REG + RF_CH, 0x6e); // 设置信道工作为2.5GHZ,收发必须一致
SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x0f); //设置发射速率为2MHZ,发射功率为最大值0dB
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // IRQ收发完成中断响应,16位CRC,主发送
}
电源和地焊接了104,发射接收频率设定为2.510G, 还是每次发2500个数据左右,没有丢包的现象,但是接收端有收到重复包的现象,而且每次固定位置(第5个包)会多收一个数据包,不知道为什么,继续研究下 |
|