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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2192|回復(fù): 0
收起左側(cè)

新手快速搞通NRF24L01通信的重點(diǎn)要訣

[復(fù)制鏈接]
ID:351643 發(fā)表于 2018-7-14 10:33 | 顯示全部樓層 |閱讀模式
很多單片機(jī)初學(xué)者做NRF24L01通信后,一個(gè)星期也搞不通,最后越搞越迷茫,直至放棄(有木有)。其實(shí)NRF24L01是一個(gè)非常容易操控的東西。
大部分人使用的NRF24L01模塊都如上圖所示,上面模塊的原理圖如下 A6749C86C6D046AE9E29C4ACAB18A807_84.png
回到正題,大家看NRF24L01模塊的原理圖,實(shí)際上就是一個(gè)芯片,連了一些必要的電容電阻電感和一個(gè)天線,然后留出了和單片機(jī)通信的SPI口和IRQ中斷引腳。

NRF24L01,任何單片機(jī)可以驅(qū)動(dòng),帶硬件SPI口的單片機(jī),可以配置好SPI外設(shè)以后驅(qū)動(dòng),沒(méi)有硬件SPI口的單片機(jī),可以用IO口模擬SPI時(shí)序通信。

重點(diǎn):NRF24L01是一個(gè)數(shù)字芯片,內(nèi)部有若干寄存器,什么數(shù)據(jù)寄存器、配置寄存器、狀態(tài)寄存器等。單片機(jī)通過(guò)SPI口,首先配置好NRF24L01的配置寄存器,諸如頻道,通道,地址,接收還是發(fā)送模式等等。然后分兩種情況,一、如果配置為了發(fā)送模式,就可以發(fā)送數(shù)據(jù)了,發(fā)送完數(shù)據(jù)以后,IRQ引腳會(huì)拉低,所以觀察IRQ引腳就可以知道有沒(méi)有發(fā)送成功;二、如果配置為了接收模式,就需要不斷的觀察IRQ引腳,IRQ引腳正常是高電平,如果接收到數(shù)據(jù),就會(huì)變成低電平,所以觀察這個(gè)引腳就知道有沒(méi)有接收到數(shù)據(jù)。
新手在做NRF24L01的通信程序時(shí),最好拿兩個(gè)相同的單片機(jī),做相同的程序(除了一個(gè)配置未發(fā)送,一個(gè)配置為接收)。

重中之重:首先要確保單片機(jī)和NRF24L01能夠正常的SPI通信,這個(gè)就好比你和一個(gè)阿拉伯人說(shuō)話,你告它先去家樂(lè)福買(mǎi)瓶牛奶,再去沃爾瑪買(mǎi)個(gè)雞腿,然后….,但是如果阿拉伯人根本聽(tīng)不懂你說(shuō)話,那么…就沒(méi)有然后了。你用單片機(jī)給NRF24L01寫(xiě)配置寄存器,輸入地址,輸入頻道…稍等,你配置了半天,NRF24L01的寄存器真的如你所想配置好了嗎?不確定?這就需要驗(yàn)證。驗(yàn)證方法?太容易了,找一個(gè)可讀可寫(xiě)的寄存器,你先寫(xiě)進(jìn)去,然后再讀出來(lái),如果數(shù)據(jù)一樣,那么你的SPI通信就正常,你大可放心的配置了,如果讀出來(lái)的數(shù)據(jù)和寫(xiě)進(jìn)去的數(shù)據(jù)不一樣,恭喜你,你再和不懂漢語(yǔ)的阿拉伯人說(shuō)了半天廢話,你還是先搞通SPI再說(shuō)吧。這里我給你一個(gè)寄存器,就是地址寄存器,可讀可寫(xiě),所以你可以用地址寄存器驗(yàn)證一個(gè)SPI通信是否正常,下面是我寫(xiě)的驗(yàn)證函數(shù):
  • /********************************************/
  • /* 函數(shù)功能:檢測(cè)24L01是否存在 */
  • /* 返回值; 0 存在 */
  • /* 1 不存在 */
  • /********************************************/
  • uchar NRF24L01_Check(void)
  • {
  • uchar check_in_buf[5]={0x11,0x22,0x33,0x44,0x55};
  • uchar check_out_buf[5]={0x00};
  • NRF_CE=0;
  • NRF24L01_Write_Buf(WRITE_REG+TX_ADDR, check_in_buf, 5);
  • NRF24L01_Read_Buf(READ_REG+TX_ADDR, check_out_buf, 5);
  • if((check_out_buf[0] == 0x11)&&\
  • (check_out_buf[1] == 0x22)&&\
  • (check_out_buf[2] == 0x33)&&\
  • (check_out_buf[3] == 0x44)&&\
  • (check_out_buf[4] == 0x55))return 0;
  • else return 1;
  • }


如果你不確保你的SPI通信正常,請(qǐng)先確定以后再進(jìn)行下面的內(nèi)容,否則就可能要對(duì)牛彈琴了。

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

例如:接收模塊,if(IRQ==0)點(diǎn)亮LED1,當(dāng)程序執(zhí)行后,當(dāng)你看到LED1亮了,哇,接收到了。
當(dāng)你確定接收到數(shù)據(jù)以后,你再判斷接收到的數(shù)據(jù)和你發(fā)送的數(shù)據(jù)是否一致。
例如:接收模塊,if(IRQ==0)把接收到的數(shù)據(jù)取出來(lái),if(rec[0]==0x88),哇,和我發(fā)的一樣。
記住了嗎?做程序要循序漸進(jìn),而不是直接寫(xiě)完。瑞生多年親自試驗(yàn),不管多大的程序,循序漸進(jìn)的寫(xiě),速度是最快的。



回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品成人免费视频 | 国产1级片 | 91麻豆精品视频 | 国产欧美精品一区二区 | 欧美视频在线一区 | 亚洲欧美日韩另类 | 国产精品欧美日韩 | 国产免费视频 | 黄色国产精品 | 黄色一级网站 | 国产精品91在线 | 午夜视频免费观看 | 日韩精品在线观看视频 | 日韩精品少妇 | 污视频网站在线观看 | 日韩少妇av | 97超碰资源站 | 日韩一区二区视频 | 欧美专区第一页 | 亚洲福利一区二区 | 亚洲成人福利 | www.黄色av | 中文字幕三级 | 啪啪小视频 | 日本欧美在线 | 黄色一级视频 | 成人免费在线播放 | 神马午夜久久 | 在线观看av免费 | 亚洲精品福利 | 深夜福利视频在线观看 | 免费网站观看www在线观看 | 午夜国产在线观看 | 久久久久久网 | 91爱爱网站 | 玖玖伊人| 国产精品大全 | 精品成人在线 | 国产精品自拍一区 | 青青久久久 | 精品成人在线 |