stm32f103zet6簡介
STM32F系列屬于中低端的32位ARM微控制器,該系列芯片是意法半導體(ST)公司出品,其內核是Cortex-M3。
該系列芯片按片內Flash的大小可分為三大類:小容量(16K和32K)、中容量(64K和128K)、大容量(256K、384K和512K)。
芯片集成定時器,CAN,ADC,SPI,I2C,USB,UART,等多種功能。
NRF905簡介
nRF905是挪威Nordic公司推出的一款單片射頻發射器芯片,采用32引腳5mm&TImes;5mm QFN封裝,工作于433、868、915MHz 3個ISM(工業、科學和醫學)頻道,其中國內433頻段可以免費使用。nRF905由頻率合成器、接收解調器、功率放大器、晶體振蕩器、調制器等功能組成,不需要外加聲表濾波器也可以有良好的通信效果。nRF905使用SPI接口可以和任何MCU進行通信,其中地址、輸出功率和通信頻道可通過程序進行配置,所以可以用于多機通信。
nRF905融合了ShockBurstTM技術,可以自動處理數據包字頭,且內置CRC校驗功能,確保數據可靠傳輸。nRF905功耗很低,在以-10dBm的功率發射時,工作電流也只有11mA;而對應接收機的工作電流只有12.5 mA,芯片可以軟件設置空閑模式、關機模式,易于節能設計。適合工業數據采集、無線報警及安全系統等諸多領用。
基于stm32f103zet6之NRF905無線模塊的學習
一、硬件
nrf905這個芯片小編們就不談了,涉及到高頻、射頻是比較復雜,主要針對如何使用這個模塊談一談
這是涉及到小編們編程的引腳圖, 其中uclk在這里不用,下面請看管腳圖
總結一下這個管腳表的比較重要的信息如下:
1、nrf905和單片機通信使用的是SPI協議,小編這里用的是軟件模擬spi,硬件spi有其他用途
2、電源3.3V沒有問題,IO口電壓完全兼容匹配,輸出電流也是沒有問題的
3、CD是載波檢測信號,意思是當小編們的模塊作為接收的時候,一旦它接收到發射模塊同一個頻段的信號時,該引腳會被nrf905置高,平常為低!
4、AM是地址匹配的意思,當作為接收模塊的時候,當接收地址和發射地址匹配的時候,那么該引腳會被nrf905置高,平常為低!
5、DR表示數據接收或者發送成功!當一個正確的數據包接收完畢, RF905自動移去字校驗位,然后把DR引腳置高,平常為低!
注意了:CD、AM、DR3個引腳的狀態在小編們調試的時候是非常重要的,所以充分利用這幾個引腳的功能!
硬件方面需要注意的地方小編們已經說完了,接下來分析小編的程序!
二、軟件
首先是發送流程:
1、當微控制器有數據要發送時,通過SPI協議將地址和要發送的數據送傳給RF905,SPI接口的速率在通信協議和器件配置時確定;
2、微控制器置高TRX_CE和TX_EN,這就設置為了發送數據模式
3、RF905發送流程:
(1) 射頻寄存器自動開啟;
(2) 數據打包(加字頭和CRC校驗
(3) 發送數據包;
(4) 當數據發送完成,
(1)(2)倆步自動完成!
4、AUTO_RETRAN被置高,RF905不斷重發,直到TRX_
5、當TRX_CE被置低,RF905發送過程完成,自動進入空閑模式。
注意:ShockBurstTM工作模式保證,一旦發送數據的過程開始,無論
TRX_EN和TX_EN引腳是高或低,發送過程都會被處理完。只有在前一
個數據包被發送完畢,RF905才能接受下一個發送數據包。
然后是接收流程:
1、當 TRX_CE 為高、TX_EN 為低時,RF905 進入 ShockBurstTM 接收模式;
2、650us 后,RF905 不斷監測,等待接收數據;
3、當 RF905 檢測到同一 頻段的載波時,載波檢測引腳被置高;
4、當接收到一個相匹配的地址,AM 引腳被置高;
5、當一個正確的數據包接收完畢, RF905 自動移去字頭、地址和 CRC校驗位,然后把 DR 引腳置高
6、微控制器把 TRX_CE 置低,nRF905 進入空閑模式;
7、 微控制器通過 SPI 口,以一定的速率把數據移到微控制器內;
8、 當所有的數據接收完畢,nRF905 把 DR 引腳和 AM 引腳置低;
9、nRF905 此時可以進入 ShockBu rstTM 接收模式、ShockBurstTM 發送模式或關機模式。 當正在接收一個數據包時,TRX_CE 或 TX_EN 引腳的狀態發生改變,
RF905 立即把其工作模式改變,數據包則丟失。
需要注意的是:小編們設置接收模式的時候,是需要先把數據寫入nrf905模塊,然后才使能發送引腳的!!!
接下來就是拿具體的程序來分析了
A、首先看小編的主函數,很簡單
注意這個模式
B、然后就是這個配置NRF905的函數,這個可是關鍵啊,具體數據的選擇,最好是能看一下芯片手冊,這里小編把代碼貼出來
其實簡單來說給它發的內容就是:
這就是根據寄存器的格式含義來的,其實也沒有什么好說的,但是小編總是懷疑芯片手冊上有些問題,那個應該是433.0MHZ
C、接下來看小編們是怎么實現發送數據的吧,小編把小編的代碼貼出來,然后對著分析就好了。
上述的printf函數都是小編加上的打印函數,方便調試的!
大家可能好奇之前的模式設置是不是出問題了,心想,當設置為發送的時候應該是兩個都選擇為高啊,但是這里要告訴你,傳輸數據的時候,小編是這樣理解的,選擇模式的時候
先將EN失能。然后當小編們通過SPI寫入了數據之后才使用這句
這樣就是為了消除干擾吧,小編是這樣想的。
D、最后貼上部分驅動函數
-
nRF905
+關注
關注
2文章
89瀏覽量
52524 -
STM32F103ZET6
+關注
關注
9文章
67瀏覽量
21201
發布評論請先 登錄
相關推薦
![](https://file1.elecfans.com/web2/M00/85/47/wKgaomRmKCSAKir_AACfk0v36E8401.png)
基于STM32F103ZET6的無線語音控制小車設計
STM32F103ZET6之蜂鳴器實驗
STM32F103ZET6之按鍵輸入實驗
stm32學習(二)STM32F103ZET6內部資源講解
![<b class='flag-5'>stm32</b><b class='flag-5'>學習</b>(二)<b class='flag-5'>STM32F103ZET6</b>內部資源講解](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論