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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8855|回復: 8
打印 上一主題 下一主題
收起左側

如何快速搞通“NRF24L01”,你造嗎?

  [復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 xiao_yp2014 于 2016-6-8 00:15 編輯

nRF24L01應用筆記(上)    http://www.zg4o1577.cn/bbs/dpj-37580-1.html
nRF24L01應用筆記(下)    http://www.zg4o1577.cn/bbs/dpj-37581-1.html



很多單片機初學者做NRF24L01通信后,一個星期也搞不通,最后越搞越迷茫,直至放棄(有木有)。

其實NRF24L01是一個非常容易操控的東西大部分人使用的NRF24L01模塊都如上圖所示,上面模塊的原理圖如下:


看不清楚?去datasheet上去看。這里嘮叨幾句,很多人懶的要命,連datasheet也沒有看過,就到處求爺爺求奶奶的幫他搞NRF24L01。還有一部分人,“我的datasheet上怎么沒有?” “親,能給個datasheet嗎?”。          datasheet是一個免費的東西,你要看哪個芯片的datasheet,去哪個芯片的官網去下載就可以了,你連芯片的datasheet也拿不到,我勸你還是改行吧!

為了節省大家的時間,這里放出NRF24L01的datasheet(^_^),點擊下載: nRF24L01-.zip (974.35 KB, 下載次數: 79)

回到正題,大家看NRF24L01模塊的原理圖,實際上就是一個芯片,連了一些必要的電容電阻電感和一個天線,然后留出了和單片機通信的SPI口和IRQ中斷引腳。

NRF24L01,任何單片機可以驅動,帶硬件SPI口的單片機,可以配置好SPI外設以后驅動,沒有硬件SPI口的單片機,可以用IO口模擬SPI時序通信。

重點:NRF24L01是一個數字芯片,內部有若干寄存器,什么數據寄存器、配置寄存器、狀態寄存器等。單片機通過SPI口,首先配置好NRF24L01的配置寄存器,諸如頻道,通道,地址,接收還是發送模式等等。然后分兩種情況,一、如果配置為了發送模式,就可以發送數據了,發送完數據以后,IRQ引腳會拉低,所以觀察IRQ引腳就可以知道有沒有發送成功;二、如果配置為了接收模式,就需要不斷的觀察IRQ引腳,IRQ引腳正常是高電平,如果接收到數據,就會變成低電平,所以觀察這個引腳就知道有沒有接收到數據。

新手在做NRF24L01的通信程序時,最好拿兩個相同的單片機,做相同的程序(除了一個配置未發送,一個配置為接收)。

重中之重:首先要確保單片機和NRF24L01能夠正常的SPI通信,這個就好比你和一個阿拉伯人說話,你告它先去家樂福買瓶牛奶,再去沃爾瑪買個雞腿,然后….,但是如果阿拉伯人根本聽不懂你說話,那么…就沒有然后了。你用單片機給NRF24L01寫配置寄存器,輸入地址,輸入頻道…稍等,你配置了半天,NRF24L01的寄存器真的如你所想配置好了嗎?不確定?這就需要驗證。驗證方法?太容易了,找一個可讀可寫的寄存器,你先寫進去,然后再讀出來,如果數據一樣,那么你的SPI通信就正常,你大可放心的配置了,如果讀出來的數據和寫進去的數據不一樣,恭喜你,你再和不懂漢語的阿拉伯人說了半天廢話,你還是先搞通SPI再說吧。這里我給你一個寄存器,就是地址寄存器,可讀可寫,所以你可以用地址寄存器驗證一個SPI通信是否正常,下面是我寫的驗證函數:

  1. /********************************************/
  2. /* 函數功能:檢測24L01是否存在 */
  3. /* 返回值; 0 存在 */
  4. /* 1 不存在 */
  5. /********************************************/
  6. uchar NRF24L01_Check(void)
  7. {
  8. uchar check_in_buf[5]={0x11,0x22,0x33,0x44,0x55};
  9. uchar check_out_buf[5]={0x00};
  10. NRF_CE=0;
  11. NRF24L01_Write_Buf(WRITE_REG+TX_ADDR, check_in_buf, 5);

  12. NRF24L01_Read_Buf(READ_REG+TX_ADDR, check_out_buf, 5);

  13. if((check_out_buf[0] == 0x11)&&\
  14. (check_out_buf[1] == 0x22)&&\
  15. (check_out_buf[2] == 0x33)&&\
  16. (check_out_buf[3] == 0x44)&&\
  17. (check_out_buf[4] == 0x55))return 0;
  18. else return 1;
  19. }</font>
復制代碼

如果你不確保你的SPI通信正常,請先確定以后再進行下面的內容,否則就可能要對牛彈琴了。

收發數據的程序,要先判斷“數據是否發送出去了”和“是否接收到了”,而不要直接判斷發送和接收的數據是否一致。

例如:接收模塊,if(IRQ==0)點亮LED1,當程序執行后,當你看到LED1亮了,哇,接收到了。

當你確定接收到數據以后,你再判斷接收到的數據和你發送的數據是否一致。

例如:接收模塊,if(IRQ==0)把接收到的數據取出來,if(rec[0]==0x88),哇,和我發的一樣。

記住了嗎?做程序要循序漸進,而不是直接寫完。我多年親自試驗,不管多大的程序,循序漸進的寫,速度是最快的。



評分

參與人數 4黑幣 +73 收起 理由
菜用雞 + 10 絕世好帖!
zkkfly + 5 贊一個!
stkh + 8
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:3721 發表于 2016-6-7 14:51 | 只看該作者
很通俗易懂啊,不愧是版主的大作,收藏備用
回復

使用道具 舉報

板凳
ID:125673 發表于 2016-6-7 16:58 來自手機 | 只看該作者
很好的網站。
回復

使用道具 舉報

地板
ID:225608 發表于 2017-8-7 21:26 | 只看該作者
真棒啊
回復

使用道具 舉報

5#
ID:227832 發表于 2017-11-30 18:56 | 只看該作者
學習了,謝謝!
回復

使用道具 舉報

6#
ID:361623 發表于 2018-6-29 10:48 | 只看該作者
看了老半天還沒看懂,慢慢學
回復

使用道具 舉報

7#
ID:307643 發表于 2018-6-29 21:06 | 只看該作者
收藏學習
回復

使用道具 舉報

8#
ID:205182 發表于 2018-6-29 22:33 | 只看該作者
完全支持
回復

使用道具 舉報

9#
ID:362432 發表于 2018-7-1 07:54 來自手機 | 只看該作者
受用,還是要循序漸進的寫
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人国产精品久久 | 成人欧美日韩一区二区三区 | 精品久久久久久久久久久久 | 一区二区三区视频在线观看 | 精品无码久久久久久国产 | av一二三区 | 国产成人综合在线 | 毛片a级毛片免费播放100 | 三级成人片 | 国产精品国产 | 韩日一区 | 亚洲第1页| 亚洲最新在线 | 最新国产精品视频 | 久久九九影视 | 久久高清免费视频 | 日韩在线免费 | 精品一区二区电影 | 在线视频日韩精品 | 亚洲美女一区 | 国产高清视频在线 | 国产视频中文字幕 | 欧美亚洲在线 | 欧美国产日韩在线观看 | 国产欧美在线播放 | 国产高清在线精品 | 国产日韩欧美在线观看 | 欧美 日本 国产 | 亚洲精品片| 亚洲一区二区免费视频 | 中文字幕久久精品 | 在线色网| 91精品国产91久久综合桃花 | 在线观看免费av网站 | 久久久国产一区二区三区 | 黑人性hd | www.天天操| 国产精品一区二区久久久久 | 香蕉久久久 | 中文字幕视频在线 | 日韩精品免费播放 |