久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: [原創]NRF24L01+的5個通道調試經驗,總調不通的可以來看看…… [打印本頁]

作者: 王朗的誘惑    時間: 2015-7-26 23:10
標題: [原創]NRF24L01+的5個通道調試經驗,總調不通的可以來看看……
歷盡千辛萬苦,失敗了無數回……終于把NRF24L01+所有通道全調通了。在調試過程中,總結了一些經驗。(下載成功計數又刷了幾百~~~~(T o T)~~~~)
總體來看,NRF24L01+模塊最麻煩的就是寄存器配置問題了,搞定了各個寄存器的配置,模塊就通了。而通道設置也到處是寄存器的身影,一不小心就會通信失敗,所以在準備調試NRF24L01+前一定要準備好資料。如果失敗了,不要著急,一點一點來,排除所有可能的故障,如果人品不錯的話,一會就搞定了……(╮(╯▽╰)╭我是沒這個運氣了……)
我的程序原版是從——NRF24L01無線模塊多機通信單片機程序 上位機+下位機(出處: 單片機論壇)——這里搞的,在此感謝huyun的無私奉獻……然后我也來回報一下社會吧……
很多人卡在通道調試這里,那就說說NRF24L01+通道的事情吧,一共有6個通道(數據手冊里的pipe),其中通道0最容易了,去網上隨便找個程序就搞定,比如我找的這個,連通道1也稍帶上了。關鍵是剩下的那幾個,尤其是通道2(2~5是極其相似的),在網上看到了很多人調不通,可是又沒有專門的解決辦法,只有多對一的通信范例,最后還是不知道問題出在哪。今天我試了一下,確實不易……但是經過大量實驗,發現了很多不容易想到問題,都是不能調通的原因。

通道1調試:
發送部分:
通道1其實不只是把通道0程序里有關通道0的部分直接改成通道1的那么簡單,別的通道更麻煩一點,這就是很多人調不通的原因。我剛開始也是直接改的,果然失敗了……(⊙﹏⊙)b……然后又去看原來的程序,看到發送的數據不論是哪個通道,都裝給了通道0的地址,不知道為什么,但是實驗證明,確實必須這樣……其中TX_ADDR地址要和發送的地址一樣。
1.    /*裝載數據*/
2.   SPI_Write_Buf(WRITE_REG + TX_ADDR, (uint8_t*)ADDRn, TX_ADR_WIDTH);//寫TX節點地址     
3.  SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, (uint8_t*)ADDRn, RX_ADR_WIDTH); //設置TX節點地址,主要為了使能ACK            

不論通道是幾,其中要改動的只有(uint8_t*)ADDRn這個東西,其實就是對應的通道地址。不要動RX_ADDR_P0
然后是寄存器配置,原貼里的注釋有這么一行:“要配置第N個​的通道,前N個通道也必須被配置,要不然配置不成功。”瞬間恍然大悟( ⊙ o ⊙ )!,上回太心急,拿了程序就走了……正如原帖代碼所示:
1.           SPI_Write_Reg(WRITE_REG + EN_AA, 0x3f); //使能通道所有的自動應答   
2.           SPI_Write_Reg(WRITE_REG + EN_RXADDR, 0x3f);//使能通道所有的接收地址

這個是發送函數void NRF24L01_Init_TX(uint8_t*ADDRn)里的一段,作者把所有通道都打開了。其實經過試驗,這里的通道必須把當前配置的通道和它前面的都配置。比如現在是通道1,就要至少使能為0x03,而不能是只打開通道1的0x02。
下面的選擇通道n有效數據寬度,實驗證明沒有用,我一次只發1個字節,寬度設置成32,發過來還是1個字節……所以可以去掉。不過留著也不會出錯。

接收部分:
首先經過試驗,不設置TX_ADDR和RX_ADDR_P0沒出錯,所以可以去掉。
但是然后發生了奇怪的問題,經過大量試驗,我這里通道1地址設置完了以后還要重新設置低位地址,不然沒法調通,不知道為什么。如代碼所示:
SPI_Write_Buf(WRITE_REG +RX_ADDR_P1, RX_ADDRESS1, RX_ADR_WIDTH); //設置RX節點地址,主要為了使能ACK            
SPI_Write_Buf(WRITE_REG +RX_ADDR_P1, RX_ADDRESS1, 1);  //設置RX節點地址,主要為了使能ACK   
(奇怪的NRF24L01+(O__O"…),然后我想……我刪掉的部分可能在別人那里就不一樣了……可能。如果最后調不通就把我刪掉的加上試試。)
后面的就是很正常的設置了,可以只開對應通道,比如通道1:0x02,對應數據寬度什么的……不用管別的通道怎么樣。

通道2~5調試:
發送部分:
和通道1的調試方法一樣,注意:
1.不要動RX_ADDR_P0
2.配置第N個​的通道,前N個通道也必須被配置。

接收部分:
也和通道1一樣……但是需要注意的是數據地址的寫入,在定義數據地址的時候,根據數據手冊,通道2~5與通道1共用32位地址,只有低8位可以改變且不能一樣。如圖:
所以改通道2~5地址的話只能通過改通道1的,然后寫入對應通道低8位地址。數據手冊里的RX_ADDR_P1表格里還有一句話:LSByteis written first。(先寫最低位。)這很重要。所以根據寫入字節的程序,地址要定義為:

這樣,看懂沒?除了通道0,只有地址數組的第0個元素在變化。網上很多程序是最后一個元素在變,好像數據手冊的表里似的,這樣就會導致只有通道0和1能調通,別的不能用。因為通道0和1是40位地址寫入的,隨便改,但是后面的地址必須只能改低位,如果高低位弄混了,改錯了當然就不能調通了。當然我(Copy)的程序是先寫第0個元素,如果別人的程序不一樣那要另當別論。
知道了順序以后就好辦了,但是要注意寫入的時候先寫通道1的40位地址,再寫所用通道的低8位地址,但是經過多次試驗,那32位不要重復寫入,數值一樣也不行。這樣就OK,程序如下:
SPI_Write_Buf(WRITE_REG + RX_ADDR_P1, RX_ADDRESS1, RX_ADR_WIDTH); //設置RX節點地址,主要為了使能ACK               
SPI_Write_Buf(WRITE_REG + RX_ADDR_P2, RX_ADDRESS2, 1);  //設置RX節點地址,主要為了使能ACK(地址長度只能是1,不能多寫,寫一樣的值也不行)
然后剩下的就簡單了,數據通道和數據寬度該是幾就設置幾,不用管別的通道。

對,結束了,其實并不難,只是可能有的問題沒想到而已……我把原程序重新改了一下,進行了通道變換的封裝,輸入對應通道就可以在對應通道上點對點通信了,像這樣:
  1. /***************************************************************************
  2. 函數名稱:void NRF24L01_Init_TX(uchar pipe)
  3. 函數功能:初始化NRF24L01
  4. 函數備注:在調用NRF24L01作為發射時,都要先調用該函數對NRF24L01進行初始化
  5. ***************************************************************************/
  6. void NRF24L01_Init_TX(uchar pipe)//輸入通道值
  7. {   
  8.         /*待機模式*/
  9.         CE=0;
  10.         CSN=1;
  11.         SCK=0;
  12.         /*裝載數據*/
  13.         SPI_Write_Buf(WRITE_REG + TX_ADDR, pipe_add[pipe], TX_ADR_WIDTH);//寫TX節點地址
  14.         SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, pipe_add[pipe], RX_ADR_WIDTH); //設置RX節點地址,主要為了使能ACK  
  15.         /*配置寄存器*/
  16.         SPI_Write_Reg(WRITE_REG + EN_AA, 0x3F); //使能所有通道自動應答   
  17.         SPI_Write_Reg(WRITE_REG + EN_RXADDR, 0x3F);//使能所有通道的接收地址(這兩項定義的通道數不得小于當前使用的通道數,奇怪的NRF24L01+(O__O "…))
  18.         SPI_Write_Reg(WRITE_REG + RF_CH, 40);//設置RF通道為40   收發必須一致!
  19.         SPI_Write_Reg(WRITE_REG + SETUP_RETR, 0xFF);//自動重發  4000+86us    重發15次
  20.         SPI_Write_Reg(WRITE_REG + RF_SETUP, 0x0F); //設置TX發射參數,0db增益,2Mbps,低噪聲增益開啟  收發必須一致!                  
  21.         SPI_Write_Reg(WRITE_REG + CONFIG, 0x0E);  //配置基本工作模式的參數;PWR_UP,EN_CRC,16BIT_CRC,發送模式,開啟所有中斷                          
  22. }


  23. /***************************************************************************
  24. 函數名稱:void NRF24L01_Init_RX(uchar pipe)
  25. 函數功能:初始化NRF24L01
  26. 函數備注:在調用NRF24L01作為接收時,都要先調用該函數對NRF24L01進行初始化
  27. ***************************************************************************/
  28. void NRF24L01_Init_RX(uchar pipe)//輸入通道值
  29. {   
  30.         /*待機模式*/
  31.         CE=0;   
  32.         CSN=1;   
  33.         SCK=0;   
  34.         /*裝載數據*/
  35.         if(pipe == 0)                //通道,對應設置40位地址
  36.         {                             
  37.                 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS0, RX_ADR_WIDTH);  //設置RX節點地址,主要為了使能ACK
  38.                 SPI_Write_Buf(WRITE_REG + (RX_ADDR_P0+pipe), RX_ADDRESS0+pipe, RX_ADR_WIDTH);  //設置RX節點地址,主要為了使能ACK
  39.         }
  40.         else                                //其他通道,對應設置通道1公共地址和相應8位地址
  41.         {
  42.             SPI_Write_Buf(WRITE_REG + RX_ADDR_P1, RX_ADDRESS1, RX_ADR_WIDTH); //設置RX節點地址,主要為了使能ACK                  
  43.             SPI_Write_Buf(WRITE_REG + (RX_ADDR_P0+pipe), pipe_add[pipe], 1);  //設置RX節點地址,主要為了使能ACK(地址長度只能是1,不能多寫,寫一樣的值也不行)                        
  44.         }
  45.         /*配置寄存器*/
  46.         SPI_Write_Reg(WRITE_REG + EN_AA, 1<<pipe);//使能通道的自動應答
  47.         SPI_Write_Reg(WRITE_REG + EN_RXADDR, 1<<pipe); //使能通道的接收地址   
  48.         SPI_Write_Reg(WRITE_REG + RF_CH, 40); //設置RF通道為40   收發必須一致!
  49.         SPI_Write_Reg(WRITE_REG + (RX_PW_P0+pipe), RX_PLOAD_WIDTH); //選擇通道的有效數據寬度
  50.         SPI_Write_Reg(WRITE_REG + RF_SETUP, 0x0F); //設置TX發射參數,0db增益,2Mbps,低噪聲增益開啟  收發必須一致!
  51.         SPI_Write_Reg(WRITE_REG + CONFIG, 0x0F); //配置基本工作模式的參數;PWR_UP,EN_CRC,16BIT_CRC,接收模式,開啟所有中斷
  52. }
復制代碼

親測通道0~5均可用。如果想多對一通信,只需增加相應通道即可,反正配置方法已經告訴你了,這下沒問題了吧。O(∩_∩)O哈哈~。當然,這樣做了沒問題卻還是調不通的朋友可以在論壇里搜索,搜不到就去百度,百度不到可以用雅虎,不行再用谷歌,不行再用搜狗,不行再用360搜索,不行再用好搜,不行再用搜搜,不行再用Bing……要是還不行,可以選擇聯系我……w(゚Д゚)w。

       附上我稍作修改后的代碼,太長,而且有3段,就打包了。
NRF24L01 .zip (36.7 KB, 下載次數: 780)

NRF24L01 資料.rar (10.58 MB, 下載次數: 451)



作者: eclidtf    時間: 2015-7-28 21:20
最近也想學習一下無線,準備入手NR905的模塊

作者: 騰飛的龍    時間: 2015-8-3 20:05
好東西謝謝分享值得尊敬!
作者: 286458071    時間: 2015-8-8 10:37
謝謝分享
作者: zylugl    時間: 2016-2-17 23:41
前輩,我用STM8L101 還沒入門,謝謝你的分享
作者: cqr01    時間: 2016-2-19 15:56
在調試,學習了!
作者: zylugl    時間: 2016-3-3 14:13
調了N久還沒有通,很想下載你的資料
作者: erhuazi    時間: 2016-3-18 10:18
正需要!
作者: 去127    時間: 2016-4-3 15:58
下載了很是需要啊
作者: zzxzzxzzx    時間: 2016-4-11 10:15
想調通2個通道
作者: 799224707    時間: 2016-4-11 11:12
依然不好使,求教啊
作者: zzxzzxzzx    時間: 2016-4-11 15:28
親,我2個發送,1個收,通道0和1都調通了,兩個一起發的話中間有一個會插不進去,把另外一個關了,它發的就收到了
作者: 王朗的誘惑    時間: 2016-4-11 18:15
試試接收完了以后手動清一下RX FIFO寄存器。可能會影響到自動應答。
作者: cngeek    時間: 2016-4-27 00:31
圍觀一下大神 好貼  最近也在弄這個
作者: cngeek    時間: 2016-5-2 20:31
請問大神 晶振是多少mhz的
作者: 王朗的誘惑    時間: 2016-5-2 21:59
cngeek 發表于 2016-5-2 20:31
請問大神 晶振是多少mhz的

嗯?NRF24L01上面寫的是16MHz,單片機隨意啦。
作者: z53523390    時間: 2016-6-15 08:46
正是我所需要的東西,謝謝樓主
作者: chenduojiao    時間: 2016-6-21 14:19
您好,請教一下,我的NRF24L01讓數據一直發送接受,測試10天左右,發現接收模塊收不到數據了,但是發射模塊一直在發射數據,我沒有設置自動應答,請問你有沒有遇到這種情況啊?
作者: 王朗的誘惑    時間: 2016-6-21 16:21
chenduojiao 發表于 2016-6-21 14:19
您好,請教一下,我的NRF24L01讓數據一直發送接受,測試10天左右,發現接收模塊收不到數據了,但是發射模塊 ...

有的有的,開始的時候一切正常,不知道什么時候就卡了,一直不知道是什么原因。
作者: xinshou123456    時間: 2016-6-28 11:41
好東西,頂起來!!!!
作者: xinshou123456    時間: 2016-6-28 11:42
樓主,能加下好友嗎,有些問題請教!,qq 2412907044
作者: nczywq    時間: 2016-10-21 00:04
我想問下樓主,比如我把數據發送到通道2,我該怎么把通道里的數據讀出來,發送什么指令,手冊已經把我囈蒙蔽了
作者: 王朗的誘惑    時間: 2016-10-22 12:58
nczywq 發表于 2016-10-21 00:04
我想問下樓主,比如我把數據發送到通道2,我該怎么把通道里的數據讀出來,發送什么指令,手冊已經把我囈蒙 ...

NRF24L01_Init_RX(2);
nRF24L01_RxPacket(Rx_Buf);
這就行了吧。
作者: whsbk    時間: 2016-10-22 14:14
手里也有這個模塊還沒開始調,感謝分享資料
作者: nczywq    時間: 2016-10-23 22:46
樓主啊。我在TB買的NRF24L01模塊,怎么也讀不到數據,讀回來的全是1。好糾結
作者: 王朗的誘惑    時間: 2016-10-24 20:54
nczywq 發表于 2016-10-23 22:46
樓主啊。我在TB買的NRF24L01模塊,怎么也讀不到數據,讀回來的全是1。好糾結

這東西就是不好調。一步一步來吧。先隨便讀寄存器看SPI有沒有問題,然后先調通道0。一定要有耐心,堅持下去總會有美好的事情發生。
作者: nczywq    時間: 2016-10-24 21:12
王朗的誘惑 發表于 2016-10-24 20:54
這東西就是不好調。一步一步來吧。先隨便讀寄存器看SPI有沒有問題,然后先調通道0。一定要有耐心,堅持下 ...

就是沒有任何數據讀出來,我在和模塊廠家聯系
作者: nczywq    時間: 2016-10-25 20:39
用模擬SPI可以,但我用STC15自帶的SPI寄存器讀,數據一直不對,總是差一位數,不知道為什么,
作者: 王朗的誘惑    時間: 2016-10-26 18:58
nczywq 發表于 2016-10-25 20:39
用模擬SPI可以,但我用STC15自帶的SPI寄存器讀,數據一直不對,總是差一位數,不知道為什么,

是官方的例程么?我也試過硬件SPI,沒什么問題。
作者: nczywq    時間: 2016-10-27 22:39
王朗的誘惑 發表于 2016-10-26 18:58
是官方的例程么?我也試過硬件SPI,沒什么問題。

擦,第二天同樣的代碼又成功了
作者: nczywq    時間: 2016-11-3 22:41
本帖最后由 nczywq 于 2016-11-3 22:42 編輯
樓主請教,我能發送,可是發送不成功,具體表現為達到最大重發。代碼如下
  1. void NRF_Init(void)
  2. {
  3.         NRF_CE=0;
  4.         NRF_Write_Com(W_REGISTER+CONFIG,0x18);                                //進入待機模式開通CRC校驗
  5.         NRF_Write_Com(W_REGISTER+EN_AA,ENAA_P0);                        //允許通道0自動應答
  6.         NRF_Write_Com(W_REGISTER+EN_RXADDR,ERX_P0);                        //允許通道0接收數據
  7.         NRF_Write_Com(W_REGISTER+SETUP_AW,AW);                                //發送接收數據寬度為5個字節
  8.         NRF_Write_Com(W_REGISTER+SETUP_RETR,0xff);                        //打開自動重發
  9.         NRF_Write_Com(W_REGISTER+RF_CH,RF_CH_ADD);                        //射頻通道
  10.         NRF_Write_Com(W_REGISTER+RF_SETUP,(RF_DR|RF_PWR));        //速率2Mbps,發射功率0dBm                                          
  11.         NRF_Write_Dat(W_REGISTER+RX_ADDR_P0,RX_ADDr0,5);        //寫入接收地址
  12.         NRF_Write_Dat(W_REGISTER+TX_ADDR,TX_ADDr,5);                //寫入發送地址
  13.         NRF_Write_Com(W_REGISTER+RX_PW_P0,RX_PW_P0_Width);        //接收數據寬度為5個字節
  14.         NRF_Write_Com(W_REGISTER+STATUS,Clean_STATUS);                //清除狀態寄存器
  15. }
  16. void NRF_TX_Mode(void)
  17. {
  18.         NRF_Delay();
  19.         NRF_CE=0;                                                
  20.         NRF_Delay();                                        //進入待機模式
  21.         NRF_Com(FLUSH_TX);                                                                        //清除發送寄存器
  22.         NRF_Write_Dat(W_TX_PAYLOAD,RX_Dat,26);                                //寫入待發送數據
  23.         NRF_Write_Com(W_REGISTER+CONFIG,0x0a);                                //配置發送模式
  24.         NRF_CE=1;                                                                                        //發送數據
  25. //        Delay500ms();
  26.         EX0=1;
  27. }
  28. void INT0_Routine(void) interrupt 0 using 0
  29. {
  30.         uint temp[5];
  31.         EX0=0;
  32.         sta=NRF_Read_Com(STATUS);                //返回狀態寄存器
  33.         printf("狀態寄存器的值為:%x\n",sta);
  34.         part();
  35.         if(TX_DS)
  36.         {
  37.                 printf("對方接收成功\n");
  38.                 NRF_Write_Com(W_REGISTER+STATUS,Clean_STATUS);                //清除狀態寄存器
  39.                 NRF_RX_Mode();
  40.         }
  41.          else if(RX_DR)
  42.         {
  43.                 NRF_Read_Dat(R_RX_PAYLOAD,temp,5);
  44.                 printf("接收到的數據為:%c%c%c%c%c\n",temp[0],temp[1],temp[2],temp[3],temp[4]);
  45.                 NRF_Write_Com(W_REGISTER+STATUS,Clean_STATUS);                //清除狀態寄存器
  46.         }        
  47.         else if(MAX_RT)
  48.         {
  49.                 printf("發送失敗%x\n",MAX_RT);        
  50.         }
  51. }
  52. void SPI_Routine(void) interrupt 9  using 0
  53. {
  54.         SPSTAT = SPIF | WCOL;       //清除SPI狀態位
  55.         SPI_OK=1;
  56. }
復制代碼


作者: A007320806    時間: 2016-11-9 09:16
實測可用,非常感謝!
作者: 王朗的誘惑    時間: 2016-11-9 15:44
nczywq 發表于 2016-11-3 22:41

看不出來……注意寄存器該清的清了,不能同時發送。這問題是第一次發送就有的還是一會才有的?還有這2個中斷怎么都是using 0
作者: 小z是我    時間: 2016-12-14 21:06
學習學習。最近一直在學這個,真想聯系你,為嘛下載要幣
作者: 小z是我    時間: 2016-12-14 21:14
不夠積分下載啊,努力才刷了13積分,能發到我郵箱嗎,278698535@qq.com,感激不盡,好人永遠平安
作者: zggxgl    時間: 2017-1-4 10:42
樓主,你好,剛接觸NRF24L01,找了很多相關資料,還是沒弄明白,向你請教,
如果接收端6個通道都接收數據,怎么把指定通道或所有通道的數據讀取出來,并且如果某個時刻其中一個通道接收到了數據,怎么知道是哪個通道接收到了數據呢?謝謝。
作者: 王朗的誘惑    時間: 2017-1-6 16:08
zggxgl 發表于 2017-1-4 10:42
樓主,你好,剛接觸NRF24L01,找了很多相關資料,還是沒弄明白,向你請教,
如果接收端6個通道都接收數據 ...

是用這個寄存器看通道號吧?
作者: 頭上長包了    時間: 2017-1-30 21:23
卡好久了。。。發送正常就是接收不到。。。。。先下載看看
作者: 頭上長包了    時間: 2017-1-30 22:06
直接用了你的程序,我用的stc的89c52做的,只是改了引腳頭文件之類的,其他都沒有改,然后分別下載進發射和接收(接收的把#define RX取消屏蔽了編譯的),結果接收部分通過串口看始終接收不到信號,STATUS始終是0e,數據為初始化的00,寄存器能正常讀取的話,應該說明硬件沒問題吧?求教~~
作者: 王朗的誘惑    時間: 2017-1-31 09:27
頭上長包了 發表于 2017-1-30 22:06
直接用了你的程序,我用的stc的89c52做的,只是改了引腳頭文件之類的,其他都沒有改,然后分別下載進發射和 ...

確實……寄存器對了硬件應該就沒問題……發送端寄存器也正常么?這就不知道了……交換下發送接收看看什么的……
作者: 頭上長包了    時間: 2017-2-1 09:17
王朗的誘惑 發表于 2017-1-31 09:27
確實……寄存器對了硬件應該就沒問題……發送端寄存器也正常么?這就不知道了……交換下發送接收看看什么 ...

。。。發送接收寄存器都正常,不過發送地址讀出來的好像有點問題,今天繼續調試。順便問一下,寄存器CD是什么意思?我讀出來都是00.是不是說我兩個天線不再一個頻段?
作者: 頭上長包了    時間: 2017-2-1 16:45
王朗的誘惑 發表于 2017-1-31 09:27
確實……寄存器對了硬件應該就沒問題……發送端寄存器也正常么?這就不知道了……交換下發送接收看看什么 ...

陷入瓶頸了。。發送取消應答,只使用通道0,狀態寄存器STATUS收到0X2E,說明發送成功,接收部分狀態寄存器卻始終為0x0e。。。。其他設置都是一樣的,就是接收不到數據。。。求教
作者: 頭上長包了    時間: 2017-2-2 20:54
終于弄出來了,來通報一下原因。程序沒有錯誤。是硬件電源問題,加了電容濾波就好了。
作者: x小白x    時間: 2017-2-2 23:23
正在玩試試看怎么樣
作者: 王朗的誘惑    時間: 2017-2-3 14:48
頭上長包了 發表于 2017-2-2 20:54
終于弄出來了,來通報一下原因。程序沒有錯誤。是硬件電源問題,加了電容濾波就好了。

是不是用的線性穩壓沒加輸出電容?
作者: zy1186    時間: 2017-4-7 11:17
不夠積分下載
作者: trith    時間: 2017-5-12 11:42
感謝分享
作者: trith    時間: 2017-5-12 12:43
/***************************************************************************
函數名稱:uchar SPI_RW(uchar dat)
函數功能:NRF24L01的SPI時序
函數備注:Writes one byte to nRF24L01, and return the byte read from nRF24L01 during write
***************************************************************************/
uchar SPI_RW(uchar dat)
{
    uchar i;
    for(i=8;i>0;i--)
    {
         dat <<= 1;           
         MOSI = CY;         
         SCK = 1;                     
         dat |= MISO;                        
         SCK = 0;                              
    }
    return(dat);                             
}

那個CY是什么?為什么不是 dat|0x80 呢?
作者: trith    時間: 2017-5-12 15:32
那個CY應該是進位標記?我用的51 mcu,沒這個CY,
我給他改成在dat左移之前的MOSI = dat & 0x80;

哈哈,這個真的能用啊,謝謝樓主。
網上分享的24L01P的各種代碼滿天飛,各個號稱調通能用。結果沒有一個好用。
作者: 李志崗    時間: 2017-5-17 11:53
很精心 很實用 樓主大好人
作者: lingem    時間: 2017-5-22 13:56
手里也有這個模塊還沒開始調,感謝分享資料
作者: whh123whh    時間: 2017-6-4 10:23
謝謝你的分享!
作者: SLAM258    時間: 2017-6-17 15:15
沒積分,好想下載
作者: 你不是啦啦啦    時間: 2017-7-15 20:14
樓主求教,一直調不通。
作者: clogord    時間: 2017-8-18 23:02
多謝
作者: 王朗的誘惑    時間: 2017-8-21 14:54
你不是啦啦啦 發表于 2017-7-15 20:14
樓主求教,一直調不通。

是模塊和單片機之間通信不上還是模塊和模塊之間通信不上?一步一步來,這個模塊就是不好調。
作者: jxdianqi    時間: 2017-8-21 17:44
好東西謝謝分享值得尊敬!剛買了材料,正好借鑒一下
作者: 銘日    時間: 2017-9-13 18:59
端個小板凳來學習學習
作者: 銘日    時間: 2017-9-13 19:01
鹵煮的模塊能傳多遠,實際的速率最快能有多快呢?
作者: 王朗的誘惑    時間: 2017-10-1 12:31
銘日 發表于 2017-9-13 19:01
鹵煮的模塊能傳多遠,實際的速率最快能有多快呢?

這個還沒試過……
作者: xingzhiying    時間: 2017-10-17 21:59
很不錯的資料
作者: xiong731    時間: 2017-11-28 21:05
謝謝你的分享
作者: nncrazy    時間: 2018-1-12 10:45
多謝樓主,正需要。
作者: zhangdi    時間: 2018-2-11 17:38
頭上長包了 發表于 2017-2-2 20:54
終于弄出來了,來通報一下原因。程序沒有錯誤。是硬件電源問題,加了電容濾波就好了。

哪個部分加了濾波呢?
作者: zhangdi    時間: 2018-2-11 17:40
請問樓主,這個收發調好以后,如果批量做的話,需要細調嗎?我們批量后給小學生做,他們能做嗎?
作者: 右走    時間: 2018-2-11 22:27
24L01 距離不能太遠呀
作者: 王朗的誘惑    時間: 2018-2-14 14:32
zhangdi 發表于 2018-2-11 17:40
請問樓主,這個收發調好以后,如果批量做的話,需要細調嗎?我們批量后給小學生做,他們能做嗎?

批量的話要看是不是一起用,一起用的話把參數稍微改下吧,不然會互相干擾……不過我沒試過,只是這么想……給小學生做?是焊接電路嗎?其實就算是搭接模塊我覺得也好難,還是得讓家長或者老師陪同吧。
作者: 王朗的誘惑    時間: 2018-2-14 14:32
右走 發表于 2018-2-11 22:27
24L01 距離不能太遠呀

買那種帶功放的就遠了。
作者: qjzyx    時間: 2018-2-14 15:56
學習,
作者: 少年0508    時間: 2018-3-7 20:18
好東西,正需要呢,謝謝樓主
作者: Yinfeng_Wang    時間: 2018-3-15 09:37
感謝分享,剛好正在調試多通道的部分
作者: yanheile    時間: 2018-4-10 09:10
好東西謝謝分享值得尊敬!
作者: KKD326    時間: 2018-4-11 19:32
感謝樓主分享
作者: Howking    時間: 2018-4-12 15:43
頭上長包了 發表于 2017-1-30 22:06
直接用了你的程序,我用的stc的89c52做的,只是改了引腳頭文件之類的,其他都沒有改,然后分別下載進發射和 ...

你好,請問你的問題最后解決了嗎,我也遇到了和你一模一樣的問題
作者: 老胖熊    時間: 2018-4-12 15:49
不錯的資料,為什么兩個附件都報不安全的下載?有病毒嗎?
作者: Howking    時間: 2018-4-12 15:51
頭上長包了 發表于 2017-2-2 20:54
終于弄出來了,來通報一下原因。程序沒有錯誤。是硬件電源問題,加了電容濾波就好了。

請問你說的硬件電源問題是誰的電源呀?nrf24l01的還是單片機的呀?
作者: Howking    時間: 2018-4-12 15:52
頭上長包了 發表于 2017-2-2 20:54
終于弄出來了,來通報一下原因。程序沒有錯誤。是硬件電源問題,加了電容濾波就好了。

請問你說的硬件電源問題是誰的電源呀?nrf24l01的還是單片機的呀?求解答
作者: tikelu    時間: 2018-5-19 13:01
超給力,跟百度上找的東西完全不一樣
作者: bagel    時間: 2018-5-20 07:54
謝謝分享
作者: 王朗的誘惑    時間: 2018-5-27 13:28
誒呀呀,還有那么多人在看呀……其實通道應該用單詞channel,不是pipe……英語水平太渣,希望大家不要介意……
作者: J.K.Who    時間: 2018-5-27 18:09
多謝分享,希望能解決我的問題
作者: 582080360    時間: 2018-5-27 19:54
王朗的誘惑 發表于 2018-5-27 13:28
誒呀呀,還有那么多人在看呀……其實通道應該用單詞channel,不是pipe……英語水平太渣,希望大家不要介意 ...

今天看的
作者: 582080360    時間: 2018-5-27 20:01
1475779659@qq.com,能不能發我郵箱啊,感謝
作者: ZYP999    時間: 2018-5-30 18:18
樓主你好,我需要做兩個從機,一個主機。我的思路是修改從機的射頻通道。主機通過不停切換兩個射頻通道,這樣可行嗎
作者: 王朗的誘惑    時間: 2018-6-1 08:04
582080360 發表于 2018-5-27 20:01
1475779659@qq.com,能不能發我郵箱啊,感謝

已發。
作者: 王朗的誘惑    時間: 2018-6-1 08:04
ZYP999 發表于 2018-5-30 18:18
樓主你好,我需要做兩個從機,一個主機。我的思路是修改從機的射頻通道。主機通過不停切換兩個射頻通道,這 ...

行吧。試試看。
作者: ffansgor    時間: 2018-6-29 17:44
多對一通信,并發量太大,RX FIFO老是FULL,難搞
作者: ffansgor    時間: 2018-6-29 17:46
多對一通信,并發量太大,RX FIFO 很容易就FULL,難搞啊
作者: FrozenForest    時間: 2018-8-9 17:04
非常好,謝謝樓主,我對照著研究研究
作者: lumingfei    時間: 2018-8-10 15:53
謝謝,真的很好,比百度找的好太多了
作者: lumingfei    時間: 2018-8-10 15:53
謝謝,這個真的太好了!
作者: 落葉飄飄    時間: 2018-8-24 11:49
樓主,我的發送端狀態一直是0x2e,應該表示發送成功,接收端偶爾能接收到一包數據,不知道怎么排查原因呢
作者: 王朗的誘惑    時間: 2018-8-28 12:09
落葉飄飄 發表于 2018-8-24 11:49
樓主,我的發送端狀態一直是0x2e,應該表示發送成功,接收端偶爾能接收到一包數據,不知道怎么排查原因呢

確認能收到,而且是偶爾能收到的話,會不會是有干擾?干擾嚴重的話丟包率會很高。周圍有沒有運轉的直流電機什么的?
作者: prettytank    時間: 2018-9-25 16:30
這個必須頂啊,太好了,找的好辛苦
作者: f10ng    時間: 2018-9-25 19:07
好東西謝謝分享
作者: 淺淺淡淡ckl    時間: 2018-10-3 10:33
哇,沒黑幣了,肥肉眼前飄。。。謝謝樓主
作者: salasala..    時間: 2018-12-18 10:23
謝謝樓主
作者: _晨昏線    時間: 2019-3-17 20:29
樓主,一直搞不懂資料說的多對一通信?這個模塊能實習多對一的同時通信嗎?如果能又要如何實現
作者: ben0147    時間: 2019-3-17 21:38
謝謝樓主,謝謝分享

作者: 王朗的誘惑    時間: 2019-3-18 13:32
_晨昏線 發表于 2019-3-17 20:29
樓主,一直搞不懂資料說的多對一通信?這個模塊能實習多對一的同時通信嗎?如果能又要如何實現

不能簡單的一起發,會卡住,得自己搞個通信協議,協調好所有模塊,一個一個排隊才行。




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 四虎在线免费视频 | 欧美日韩中文字幕在线观看 | 日韩二区三区 | 毛片www| 成人激情视频在线观看 | 精品少妇一区二区三区免费观 | 国产精品一区二区三区四区 | 成人精品视频 | 亚洲美女视频 | 国产综合视频 | 精品一区二区三区视频 | www.一级片 | 久久久免费观看 | 波多野吉衣一二三区乱码 | 精品久久视频 | 黄色一级生活片 | 成人不卡 | 中国黄色1级片 | www.黄色av | 99精品久久久久久中文字幕 | 久久机热 | 91av在线看| 国产成人三级在线观看 | 成人高潮片免费网站 | 五月天婷婷视频 | 日韩精品一级 | 亚洲永久免费视频 | 成人黄色av| 女人久久久 | 国产成人精品一区二区三区视频 | 国产精品一区二区三 | 精品国产欧美一区二区三区成人 | 国产在线小视频 | 国产一级黄色 | 亚洲免费在线播放 | 国产一区二区三区在线 | 一区二区三区四区在线播放 | 欧美日韩综合在线 | 日本少妇一区二区 | 免费精品视频 | 69久久久|