24小时热门版块排行榜    

查看: 374  |  回复: 2

elecman

铜虫 (初入文坛)

[交流] 【求助】无线模块nRF24L01多点通讯设置问题 已有2人参与

下面是我的程序:(我觉得应该是接收端通道P2、P3的地址没写对,导致这两个通道没有收到数据,如果需要其他部分程序请指点)
  //*********************************************NRF24L01*************************************
#define TX_ADR_WIDTH    5    // 5 uints TX address width
#define RX_ADR_WIDTH    5    // 5 uints RX address width
#define TX_PLOAD_WIDTH  32      // 20 uints TX payload
#define RX_PLOAD_WIDTH  32   // 20 uints TX payload
uint const TX_ADDRESS[TX_ADR_WIDTH]= {0xAB,0xBA,0x09,0x90,0x00}; //本地地址
uint const RX_ADDRESS_P0[RX_ADR_WIDTH]= {0xAB,0xBA,0x09,0x90,0x00}; //P0 address
uint const RX_ADDRESS_P1[RX_ADR_WIDTH]= {0xE1,0xE2,0xE3,0xE4,0x01}; //P1 address
uint const RX_ADDRESS_P2[RX_ADR_WIDTH-4]= {0x02}; //P2 address
uint const RX_ADDRESS_P3[RX_ADR_WIDTH-4]= {0x03}; //P3 address
bit NO_1,NO_2,NO_3;

//****************************************************************************************
/*NRF24L01初始化
//***************************************************************************************/
void init_NRF24L01(void)
{
    inerDelay2401_us(100);
  CE=0;    // chip enable
  CSN=1;   // Spi disable  
  SCK=0;   // Spi clock line init high
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);    // 写本地地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS_P0, RX_ADR_WIDTH); // 写P0通道地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P1, RX_ADDRESS_P1, RX_ADR_WIDTH); // 写P1通道地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P2, RX_ADDRESS_P2, RX_ADR_WIDTH-4); // 写P2通道地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P3, RX_ADDRESS_P3, RX_ADR_WIDTH-4); // 写P3通道地址
SPI_RW_Reg(WRITE_REG + EN_AA, 0x0f);      //  频道0、1、2、3自动 ACK应答允许
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x0f);  //  允许接收地址只有频道0、1 2 3,如果需要多频道可以参考Page21   
SPI_RW_Reg(WRITE_REG + RF_CH, 0);        //   设置信道工作为2.4GHZ,收发必须一致
SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置P0接收数据长度,本次设置为32字节
SPI_RW_Reg(WRITE_REG + RX_PW_P1, RX_PLOAD_WIDTH); //设置P1接收数据长度,本次设置为32字节
SPI_RW_Reg(WRITE_REG + RX_PW_P2, RX_PLOAD_WIDTH); //设置P2接收数据长度,本次设置为32字节
SPI_RW_Reg(WRITE_REG + RX_PW_P3, RX_PLOAD_WIDTH); //设置P3接收数据长度,本次设置为32字节
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);    //设置发射速率为1MHZ,发射功率为最大值0dB
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);    // IRQ收发完成中断响应,16位CRC ,主接收
}
不仅lcd没显示,我通过串口助手看也是P2、P3根本就没有接到数据。。。。。。。  答案还在不断地烧写中。。。。 请大家指教
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ym424424

铜虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖交流
不错的东东。
勤奋,专注。
2楼2010-07-26 22:47:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

elecman

铜虫 (初入文坛)

引用回帖:
Originally posted by ym424424 at 2010-07-26 22:47:18:
不错的东东。

啥不错 片子都烧坏一个了
3楼2010-07-26 23:34:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 elecman 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见