首先nrf24l01是使用spi與stm32進行通訊的
其中要區分csn:模組的片選訊號,和ce:使能訊號的功能。csn是協議片選端,多個spi裝置共用stm32的spi口時,就通過csn來區分,而ce端實際上是晶元的功能使能端,通過配置ce使它進入不同的狀態(rx,tx),
寫命令:1aaaaa//相當於100000也就是0x20,所以寫暫存器命令就是0x20+暫存器位址
發射模式的配置順序
2. 設定rx節點的位址,也就是接收時的位址,如果是在發射模式下那麼功能是為自動應答服務的(auto ack)。暫存器為:rx_addr_p0
3. 允許auto ack功能,意思是傳送資料後都會等待接收端的應答訊號,目的是保證資料正確傳送。暫存器為:en_aa
4. 設定允許的接收通道,總共有6個通道,使用通道0。暫存器為:en_rxaddr
5. 配置自動重發次數。暫存器為:setup_retr
6. 選擇通訊的頻率。暫存器為:rf_ch
7. 設定接收通道0的接收資料有效寬度,與第四步對應。暫存器為:rx_pw_p0
8. 配置發射的引數,主要為低噪放大器增益、發射的功率、無線傳輸的速率。暫存器為:rf_setup
9. 配置收發狀態(這時配置為發射模式),crc校驗模式以及收發狀態響應方式。暫存器為:config
自動應答:自動應答能減少外部mcu的工作量,並且吧要求硬體一定有spi介面,從而降低了電流消耗,自動應答可以通過spi對不同的資料通道分別進行配置。
在自動應答模式下,在收到有效資料後,系統將進入傳送模式並傳送確認訊號。傳送完確認訊號後,系統將進入正常工作模式。
自動重發功能:這個功能是針對自動應答系統的傳送方,通過setup_retr暫存器設定:設定重發資料的時間長度。在每次傳送結束後會進入接受模式並在設定時間範圍內等待應答訊號。接受到應答訊號後再轉入正常傳送模式。如果tx fifo中沒有待傳送的資料而且ce腳為低電平,系統進入待機模式(即在傳送模式下沒資料傳送便進入待機),如果超時沒有收到確認訊號,則系統返回到傳送模式重新傳送之前的資料直到有應答訊號(直至重發次數超過設定值)。當有新的資料傳送或prim_rx暫存器配置改變時,丟包計數器復位。
接收模式的配置初始化為:
1. 設定rx節點的位址,也就是接收時的位址,如果是在發射模式下那麼功能是為自動應答服務的(auto ack)。暫存器為:rx_addr_p0 (這裡要寫入與tx方tx_addr 相同的位址)
2. 允許auto ack功能,意思是傳送資料後都會等待接收端的應答訊號,目的是保證資料正確傳送。暫存器為:en_aa
3. 設定允許的接收通道,總共有6個通道,我們只使用通道0,其他通道的功能應用大家熟悉了nrf24l01之後嘗試吧。暫存器為:en_rxaddr
4. 選擇通訊的頻率。暫存器為:rf_ch
5. 設定接收通道0的接收資料有效寬度。暫存器為:rx_pw_p0
6. 配置發射的引數,主要為低噪放大器增益、發射的功率、無線傳輸的速率。暫存器為:rf_setup
7. 配置收發狀態(這時配置為接收模式),crc校驗模式以及收發狀態響應方式。暫存器為:config
STM32軟體SPI實現NRF24L01
nrf一共是八個引腳,除去vcc和gnd還有六個引腳。所以我們只需要配置這六個引腳就可以了。這六個引腳分別是sck,mosi,miso,csn,ce,irq 除了miso和irq配置成輸入,其他的都配置為輸出即可,其實如果不配irq也沒事,如果有需要的話可以配置,不配的也是可以的,不會影響微控制器的...
STM32 除錯 24L01 心得
大部分使用stm32開發nrf24l01的使用者基本都是照搬常見的幾個開發板的源 在這裡我做一些總結 1.源 中在while 1 的迴圈中有 nrf24l01 tx mode 或nrf24l01 rx mode 類似這樣的 因為原始碼中需要檢測按鍵以便切換的不同的模式,對於正常使用來講,都是傳送接收...
nRF24L01 使用說明
bit0 prim rx設定工作模式,傳送或接收,0 傳送 1 接收。bit1 pwm up設定是否上電,晶元在傳送或接收完成後根據此位判斷是進入powerdown模式 0 還是進入standby模式 1 bit2 crco設定crc的位元組數,0 1byte 1 2byte。bit3 en crc...