無線收發數據我用的模塊是NF24L01……這個模塊小巧而便宜……幾個引腳如圖……功能大概是這樣的
CSN:片選,電平為低時芯片工作
CE:CSN為低時控制CE狀態
SCK:SPI時鍾
MOSI:Master output slave input
MISO:Master input slave output
IRQ:中斷,低電平觸發(發送完成,接收數據,達到最大重發次數時觸發)
關於這個模塊詳細的可以參照《NRF24L01學習筆記》……寫的很全面詳盡……
調無線對我來說是一個比較痛苦的過程……我有一塊野火的stm32vet6mini板,模塊沒有ISO那么全,但也是“萬事俱備只欠模塊”的學習板,我需要做的就是把這個例程移植到從機(RBT6)上並加以修改,這可難倒我了。當時我想,反正是同一系列芯片,引腳功能大體相同,我這邊連PA0那邊也接PA0不就好了……那么問題來了,VET6是個大板一共100個引腳,而RBT6只有64個腳還未完全引出,板子上根本沒有PDX,PEX等等,無處可連!
那么怎么辦呢?查數據手冊!表格里給出了引腳的名稱,功能,復用功能,所以我只需要找到相同的功能然后連接就可以了,NSS,SCK,MISO,MOSI兩塊板上對應的均為PA4,PA5,PA6,PA7。查了每個引腳的功能之后,我們還剩下PE5,PE6(CE,CSN)沒有解決……
例程里采用的是軟件模擬SPI,所以我就找了兩個這次用不到的引腳♪(^∇^*),連線完成!
我改好程序之后思路大概是這樣的,連上矩陣鍵盤之后檢測按鍵,當有某個按鍵按下時發送一個u8數組里的所有元素給從機,從機接受到數據之后進行相應處理,來決定PWM的占空比。
在調試的時候又出現了一個問題:無論主機是否工作,從機都會在串口上打印出收到的數據為255 255 255 255。最開始我覺得可能是由於數據格式不對而產生了溢出,但后來發現我把主機和從機的模塊調換一下,就會變成主機接受到從機端的數據為255,255,255,255
於是我確定了這是模塊的問題!估計是在接線換線過程中把模塊燒壞了,所以一直讀出高電平的數據,換了個模塊之后發送就正常了~