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