pine222 发表于 2012-9-5 10:02:59

现在只有一个NRF24L01,可不可以判断他的好坏呢?

现在手头上只有一块NRF24L01,怎么样才能判断他的好坏呢???可以自发自收吗?

jingwaner 发表于 2012-9-5 10:24:46

让他发送,看状态位,标志位

pine222 发表于 2012-9-5 11:07:18

标志位是哪一位?

jiespring 发表于 2012-9-5 11:16:23

看看例程中的check程序
那个好像能检测的

pine222 发表于 2012-9-5 11:19:15

可以自发自收吗?

pine222 发表于 2012-9-5 11:20:13

jiespring 发表于 2012-9-5 11:16 static/image/common/back.gif
看看例程中的check程序
那个好像能检测的

麻烦你可以发一下吗?

zzz1367 发表于 2012-9-5 11:22:20

jingwaner 发表于 2012-9-5 10:24 static/image/common/back.gif
让他发送,看状态位,标志位

同意。呵呵。{:smile:}

jiespring 发表于 2012-9-5 11:23:23

//检测24L01是否存在
//返回值:0,成功;1,失败       
u8 NRF24L01_Check(void)
        {
        u8 buf={0XA5,0XA5,0XA5,0XA5,0XA5};
        u8 i;
        SPIx_SetSpeed(SPI_BaudRatePrescaler_8); //spi速度为9Mhz(24L01的最大SPI时钟为10Mhz)          
        NRF24L01_Write_Buf(NRF24L01_WRITE_REG+TX_ADDR,buf,5);//写入5个字节的地址.       
        NRF24L01_Read_Buf(TX_ADDR,buf,5); //读出写入的地址
        for(i=0;i<5;i++)if(buf!=0XA5)break;                                                                 
        if(i!=5)return 1;//检测24L01错误       
        return 0;               //检测到24L01
        }       

pine222 发表于 2012-9-5 11:33:37

zzz1367 发表于 2012-9-5 11:22 static/image/common/back.gif
同意。呵呵。

怎么看呢?麻烦您能说具体一点吗?{:smile:}

pine222 发表于 2012-9-5 11:35:08

jingwaner 发表于 2012-9-5 10:24 static/image/common/back.gif
让他发送,看状态位,标志位

麻烦您能说具体一些吗?

zzz1367 发表于 2012-9-5 11:39:35

pine222 发表于 2012-9-5 11:35 static/image/common/back.gif
麻烦您能说具体一些吗?

你买NRF24L01模块的时候,卖方没给你 资料吗?
上面应该会有相关寄存器的 资料。

pine222 发表于 2012-9-5 11:48:09

zzz1367 发表于 2012-9-5 11:39 static/image/common/back.gif
你买NRF24L01模块的时候,卖方没给你 资料吗?
上面应该会有相关寄存器的 资料。
...

是STATUS和FIFO_STATUS寄存器吗?

zzz1367 发表于 2012-9-5 11:58:04

pine222 发表于 2012-9-5 11:48 static/image/common/back.gif
是STATUS和FIFO_STATUS寄存器吗?

是的
你先检测nrf24l01的这几个状态,
然后发送,发送后,再检测这几个状态。
如果发送位改变了,就认为 发送成功了。
呵呵。
当然,一般能读到这几个状态的数据,就认为是好的。

gzhuli 发表于 2012-9-5 12:17:18

反正只有一个也没法用,扔一边去等凑齐一对再测。

pine222 发表于 2012-9-5 12:19:49

zzz1367 发表于 2012-9-5 11:58 static/image/common/back.gif
是的
你先检测nrf24l01的这几个状态,
然后发送,发送后,再检测这几个状态。


那是不是要硬仿?

pine222 发表于 2012-9-5 12:20:41

gzhuli 发表于 2012-9-5 12:17 static/image/common/back.gif
反正只有一个也没法用,扔一边去等凑齐一对再测。

现在是有四个,但是不知道哪个是好的,哪个是坏的?

gzhuli 发表于 2012-9-5 12:25:15

pine222 发表于 2012-9-5 12:20 static/image/common/back.gif
现在是有四个,但是不知道哪个是好的,哪个是坏的?

一会说一个一会说四个,会不会等下又变成量产四千个做批量测试?

pine222 发表于 2012-9-5 12:26:19

gzhuli 发表于 2012-9-5 12:25 static/image/common/back.gif
一会说一个一会说四个,会不会等下又变成量产四千个做批量测试?

四个不知道哪个好,哪个坏,得一个个测试啊,

蜂巢 发表于 2012-9-5 12:29:54

干嘛不搞多一个?如果只判断标志位的话无法知道信号传输这一块是否有问题。

pine222 发表于 2012-9-5 12:33:45

蜂巢 发表于 2012-9-5 12:29 static/image/common/back.gif
干嘛不搞多一个?如果只判断标志位的话无法知道信号传输这一块是否有问题。 ...

那可不可以自发自收呢?

pine222 发表于 2012-9-5 12:36:03

代码被我改成这个样子,通过IRQ中断来判断自发自收是否成功呢?
void int1() interrupt 2
{        count++;
        P0=~seg;
        if(count==90)count=0;       
}
//************************************主函数************************************************************
void main(void)
{
        unsigned char tf =0;
        unsigned char TxBuf={0};       //
        unsigned char RxBuf={0};       
    init_NRF24L01() ;
        led0=0;led1=0;led2=0;led3=0;
        P0=0x00;
        TxBuf = 1 ;
        TxBuf = 1 ;
        nRF24L01_TxPacket(TxBuf);        // Transmit Tx buffer data
        Delay(6000);
        P0=0xBF;
//开外部中断1////////////////////////////////////////////////////////
    EX1=1;
        EA=1;
        IT1=1;
//////////////////////////
        while(1)
        {
          nRF24L01_TxPacket(TxBuf);        //一直发射,用来测试
                Delay(6000);                                //必须要加
            if(KEY1 ==0 )
                  {
                        P0=~seg;
                  TxBuf = 1 ;
                  tf = 1 ;
          }
           if(KEY2 ==0 )
           {
                        P0=~seg;
                        TxBuf =1 ;
                        tf = 1 ;
           }
           if (tf==1)
       {       
                        nRF24L01_TxPacket(TxBuf);        // Transmit Tx buffer data
                        TxBuf = 0x00;
                        TxBuf = 0x00;
                        tf=0;
                        Delay(1000);
           }
//***********************************************************************************************
            SetRX_Mode();
                RxBuf = 0x00;
                RxBuf = 0x00;
                Delay(1000);
                nRF24L01_RxPacket(RxBuf);
               
                   if(RxBuf|RxBuf)
                {                                       
                        if(        RxBuf==1)
                        {              
                                P0=~seg;
                        }
                        if(        RxBuf==1)
                        {
                                P0=~seg;
                        }
                        Delay(1000);
                }
       
                RxBuf = 0x00;
                RxBuf = 0x00;
        }
       
}

john800422 发表于 2012-9-5 12:57:14

pine222 发表于 2012-9-5 12:36 static/image/common/back.gif
代码被我改成这个样子,通过IRQ中断来判断自发自收是否成功呢?
void int1() interrupt 2
{        count++;


我记得没办法自发自收
要使用传输方式测试就要有两个

可以试试" jiespring "的方法

写一笔数据进寄存器
再读出来
捡查数据是否相同

cshp138 发表于 2012-9-5 13:03:45

那个例程里面的check()就可以检测了,弄个LED显示返回值就行啦。
u8 NRF24L01_Check(void)
      {
      u8 buf={0XA5,0XA5,0XA5,0XA5,0XA5};
      u8 i;
      SPIx_SetSpeed(SPI_BaudRatePrescaler_8); //spi速度为9Mhz(24L01的最大SPI时钟为10Mhz)            
      NRF24L01_Write_Buf(NRF24L01_WRITE_REG+TX_ADDR,buf,5);//写入5个字节的地址.      
      NRF24L01_Read_Buf(TX_ADDR,buf,5); //读出写入的地址
      for(i=0;i<5;i++)if(buf!=0XA5)break;                                                                  
      if(i!=5)return 1;//检测24L01错误      
      return 0;               //检测到24L01
      }   

p4s5j6 发表于 2012-9-5 15:27:51

那个收音机子啊旁边看看能不能听到干扰波

pine222 发表于 2012-9-5 20:25:37

p4s5j6 发表于 2012-9-5 15:27 static/image/common/back.gif
那个收音机子啊旁边看看能不能听到干扰波

这也行,呵呵

蜂巢 发表于 2012-9-6 12:40:38

pine222 发表于 2012-9-5 12:33 static/image/common/back.gif
那可不可以自发自收呢?

不可以自发自收的。

Nestle 发表于 2013-2-1 21:10:56

我的也只有一个模块,郁闷。。

mrchow 发表于 2013-2-12 13:53:47

發一個載波, 看看頻譜儀有沒有訊號.

三春虫 发表于 2013-2-21 11:50:12

问一下24楼,2.4G的频段,能干扰到收音机?????

rf_smart 发表于 2013-3-31 10:27:38

找一个确定能发送的程序,看电流。当然你要先得到一个参考电流值。一般RF匹配与否,天线是否接上电流都会不一样。
页: [1]
查看完整版本: 现在只有一个NRF24L01,可不可以判断他的好坏呢?