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

基于STM32F103ZET6的無線語音控制小車設(shè)計
STM32F103ZET6之蜂鳴器實驗
STM32F103ZET6之按鍵輸入實驗
nRF905無線收發(fā)模塊開發(fā)指南
STM32F103ZET6數(shù)據(jù)手冊
stm32學(xué)習(xí)(二)STM32F103ZET6內(nèi)部資源講解

評論