[PIC®/AVR®/dsPIC®产品] NRF24L01求助

[复制链接]
4657|51
 楼主| suicune66 发表于 2016-3-21 21:49 | 显示全部楼层
本帖最后由 suicune66 于 2016-4-2 18:20 编辑
NE5532 发表于 2016-3-21 14:10
调试SPI,一片单片机就可以了,把MOSI和MOSI短接就可以了,当然不要焊从机芯片。 ...

大神,麻烦你看下我仿真的
JY-DX-JY 发表于 2016-3-22 08:17 | 显示全部楼层
suicune66 发表于 2016-3-21 20:07
我仿真了下,把RA2和RA4设置成MISO和MOSI,然后试了试SPI_RW那个低层SPI函数,然后写进去一个数据0x12, ...

你要判断sta是不是0x12
JY-DX-JY 发表于 2016-3-22 08:19 | 显示全部楼层
suicune66 发表于 2016-3-21 20:30
如果说我仿真没错的话,那问题就来了,我那天测的MOSI MISO SCK 和 CSN都是脉冲,如果仅是MISO SCK和CSN ...

这个不确定哎。
JY-DX-JY 发表于 2016-3-22 08:19 | 显示全部楼层
suicune66 发表于 2016-3-21 20:30
如果说我仿真没错的话,那问题就来了,我那天测的MOSI MISO SCK 和 CSN都是脉冲,如果仅是MISO SCK和CSN ...

这个不确定哎。
NE5532 发表于 2016-3-22 13:18 | 显示全部楼层
读芯片版本号等你能确定读出来数据的东西。
270382236 发表于 2016-3-22 13:56 | 显示全部楼层
楼主 你的2401+ 有可能是芯片本身有问题
 楼主| suicune66 发表于 2016-3-22 19:02 | 显示全部楼层
本帖最后由 suicune66 于 2016-4-2 18:16 编辑
aerwa 发表于 2016-3-20 12:00
不知道你用的是什么单片机, 支持位操作不, 这是我430的写读返回, 和你的不一样, 你一定要确认SPI 的写 ...

今天好了,非常感谢
 楼主| suicune66 发表于 2016-3-22 19:03 | 显示全部楼层
本帖最后由 suicune66 于 2016-4-2 18:15 编辑

今天好啦,感谢您的鼎力相助
 楼主| suicune66 发表于 2016-3-22 19:04 | 显示全部楼层
本帖最后由 suicune66 于 2016-4-2 18:15 编辑
NE5532 发表于 2016-3-21 13:44
你这样调是调不出来的,底层最好自己写,这个跟无线无关,只关单片机的事。写进去要读出来看等于啥,不能一 ...

今天好啦,感谢您的鼎力相助
NE5532 发表于 2016-3-23 08:46 | 显示全部楼层
不客气,后面无线的调试更困难,加油。
aerwa 发表于 2016-3-23 21:24 | 显示全部楼层
你的好了, 问题是我的问题现象很奇葩啊
请大家帮我分析下我的情况。
我的接收端程序用查询 STATUS 接收标志的话是 能反复收到主机广播的信息。

问题是我用中断的方式做接收的时候IRQ 拉低进中断时: sta=NRF24L01_Read_Reg(STATUS);   查询的标志竟然全部是00000000, 而且IRQ 脚一直就为低,

而且只能在主程序中Set_PTX_Receive()后接收到头一次, 信息也能收到, 问题是中断跑完后,IRQ 就不变高了。

#pragma vector=PORT2_VECTOR
__interrupt void port(void)
{     
  sta=NRF24L01_Read_Reg(STATUS);    // 读取状态寄存其来判断数据接收状况
       if(sta&RX_OK)                // 判断是否接收到数据
    {
      NRF_CE=0;            //SPI使能
      NRF24L01_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
      SPI_RW(FLUSH_RX);//用于清空FIFO !!关键!!不然会出现意想不到的后果!!!大家记住!!
      }
    NRF24L01_Write_Reg(WRITE_REG+STATUS,sta);   //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志
     if((Rev_data_buf[0]==0x01)&(Rev_data_buf[1]==0x02)&(Rev_data_buf[2]==0x03)&(Rev_data_buf[3]==0x04)&(Rev_data_buf[4]==0x05))
   {
                NRF_LED=0;  delay(1000); NRF_LED=1;  delay(1000);  NRF_LED=0;  delay(1000);   NRF_LED=1;
   }
            Rev_data_buf=0;
             Set_PTX_Receive();
  P2IFG=0X00;
}

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部