無線模塊:BK2425(BK2423) 篇一

BK2425和BK2423都是2.4G射頻芯片,使用起來差不多。我沒有試過用BK2425和BK2423進行通信,但是同一份代碼兩芯片都能用。而且2.4G的射頻芯片協議是差不多的,我比較nrf24l01的數據手冊和BK2425數據手冊很多內容(包括寄存器庫)完全相同,不同的大概是nrf24l01的datasheet更詳細。所以,以下內容通用。
兩個通信模塊通過SPI接口,分別接到兩個單片機上,芯片不斷髮射電磁波,然後兩個單片機之間就能通信了,蠻神奇的。
感性上,我把通過兩個模塊建立起來的通信,想象成兩個人通過一根塑料管子通話,聲音在管道里傳來傳去。通信芯片發射電磁波的波特率不同,使用的管子就不同。若有一堆的通信芯片,兩兩建立通信,只要使用不同的塑料管子,彼此就不會受到干擾。這個塑料管子,就是datasheet裏的“channel”:信道,信息的通道。當然,實際上芯片是向四面八方發射電磁波的。模塊長得有點像這樣(這是個2.4G模塊,但芯片可能不是BK2425)。
若侵權,聯繫我刪圖 若侵權,聯繫我刪圖
爲什麼要有信道呢?因爲相同頻率波段的電磁波會彼此干擾。你佔了這波段,別人就沒法用了。所以各國都立法規定電磁波的使用。2.4G頻段作爲民間極少數可以自由使用,不需要申請的頻段之一,所以出現了一堆的2.4G射頻芯片,WiFi,藍牙也使用這頻段。因爲都擠在這波段,數據偶爾的丟失也就好理解了。這麼一想,空無一物的空氣也變得擁擠和吵雜了。
BK2425在2400-2483.5兆赫的ISM頻段工作,這裏有83.5MHz頻率範圍,1MHz一條的話,2401,2402,2403…可以劃出八十多條信道。這樣就好多了,不容易撞車。
我寫的比較空泛,主要是大佬們已經把這個東西講透了,我再車輪子也沒意思,主要是爲了總結,方便以後回憶。大家也可以去看看技術達人怎麼講述。





	鏈接: https://www.arduino.cn/thread-86275-1-1.html

上面這個鏈接,就是大佬講解2.4G,很透徹。我是爲了做個無線遊戲手柄,用的比較簡單(會的也不多)。我會把數據手冊簡略解讀,說下單向通信(似乎也沒什麼內容好說的)。
**

數據手冊簡讀

**
Low Power High Performance 2.4 GHz GFSK Transceiver,這個是芯片數據手冊的標題,低功耗高新性能2.4G 高斯頻移鍵控發接受機。
低功耗,芯片支持1.9v~3.6v,超過3.6v瞬間燒燬。我在這遇到個電源的問題。是在單片機的USB公頭鬆了,我換了一個公頭出現供電問題。表現出來的是,對通信芯片初始化時,寄存器值讀寫都不成功。單片機的vcc引腳,經測量是3.3V,就是讀寫不了。後來我用另一個單片機的vcc引腳同時供兩個芯片(我只是學習),了事。如果大家發現初始化時,寄存器寫不進去,可以檢測下電源。
GFSK(高斯頻移鍵控),就是把輸入數據經高斯低通濾波器預調製濾波後,再進行FSK調製的數字調製方式。
芯片之間通信,發送、接收數據,本質上都是傳輸一串0和1數字。芯片以某個頻率爲基礎(載波),發射電磁波,在這個基礎上可以發射的快一些(電磁波頻率高些),也可以慢一些(電磁波頻率低些)。FSK調製把某一段固定時間內電磁波頻率較高的認爲是0,電磁波頻率低的是1。原理見下圖。
圖來自網絡,若侵權聯繫我刪圖
圖中把時間等分,這個固定的時間,假設它爲T,T時間可以發送一個bit,那1/T不就是波特率嗎。 前面我們說過,相同頻道(也就是電磁波頻率或者說波特率)的電磁波會彼此干擾,那自然要錯開彼此的波特率。你用2.4G,我用2.4001G,行不行呢?不行的。bk2425芯片對電磁波的分辨率爲1MHz。這段時間波特率f1,要比另一段時間波特率f2,大或者小1MHz,芯片才能比較出大小來。
芯片發射電磁波的頻率可以由使用者設置,被叫做射頻信道頻率(RF channel frequency),公式:射頻信道頻率 F0= 2400 + RF_CH (MHz),RF_CH是使用者設置的信道。射頻信道頻率是BK2425所使用的信道的中心。例如,我們使用信道0x01,F0=2401,用2400.5MHz的頻率表示電平1,用2401.5MHz的頻率表示電平0,它們之間相差1MHz,就能分辨出來了。所以你用2.400G,我用2.401G倒是可以的。
射頻信道頻率射頻信道頻率決定了兩個單片機交換數據的快慢。一方快,一方慢,就不能通信了。所以,MCU的晶振頻率可以不一樣,spi的讀寫速度可以不一樣。但每時每刻,MCU對通信芯片設置的信道都必須一樣。
爲什麼我說每時每刻呢,因爲變頻(不斷變換電磁波頻率)。若使用單個信道,如果旁邊有個設備,信道重疊了,就會通信失敗。若使用幾十個信道,每十毫秒變一次,就不容易受其他設備干擾。








芯片引腳

bk2425和bk2423都是9個引腳(QFP封裝):GND、IRQ、MISO、MOSI、SCK、CSN、CE、VDD、GND。
GND引腳有兩個,把其中一個連接MCU的GND就行。
VDD連接MCU的vcc引腳,在1.9V~3.6V之間就行。
IRQ引腳表示中斷,有3種中斷情況。當BK2425數據發送成功,或成功接收到數據,或數據重發送到最大次數,就會把這個引腳拉低。拉低的同時,芯片會對狀態寄存器的對應標誌位寫1。清除標誌位也很有意思,只需要使用者對狀態寄存器寫1。bit4,bit5,bit6分別對應最大重發中斷標誌,最大發送中斷標誌,最大接收中斷標誌,只需對這個寄存器寫0x70,就可以清除這三個可能存在的中斷標誌(爲“1”時清除,爲“0”時也不會寫入)。
CSN引腳就是SPI需要的四個引線(MISO、MOSI、SCK、CSN)之一,也就是我們常說的SS或者說CS。CSN拉低代表芯片被選中。對芯片的寄存器讀寫數據,都需要把CSN拉低,操作完後,再把CSN拉高。
就像這樣:
CSN = 0;





SPI_RW(reg);
SPI_RW(value);

CSN = 1;
MOSI,MISO,SCK是SPI需要的的四根引線,若是硬件SPI,就連接到MCU對應引腳,SPI模式選擇模式0(空閒時SCK爲低電平,上升沿採樣)。模擬SPI就隨便找幾個引腳。SPI向芯片寫入數據也是需要時間的,不能太快,不要超過8MHz.
若侵權聯繫我刪除

CE引腳則和芯片的所處的模式有關。芯片有5個模式。見下圖。
若侵權聯繫我刪除 CE=0時,Power Down(掉電模式)和Standby-I(待機l模式)。CE=1時,Standby-II(待機II模式),TX(發送模式),RX(接受模式)。這個是發送方(PTX)的。接收方(PRX)也是一樣的。
若侵權聯繫我刪除

由使用者根據自身需要,決定芯片是PTX還是PRX,或者PTX、PRX身份不斷切換。PTX和PRX都能發送數據。一個發的時候,另外一個就收,收完再發,發的那個這時候就轉變爲收,這裏存在一個協議,等下再細講。芯片難用,個人認爲,時序是一個難點,手裏若有一份波形圖就方便了。
未完待續。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章