當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件


無(wú)線通信在機(jī)動(dòng)性要求較強(qiáng)的設(shè)備中或人們不方便隨時(shí)到達(dá)現(xiàn)場(chǎng)的條件下得到了越來(lái)越廣泛的應(yīng)用,如無(wú)線數(shù)據(jù)采集、無(wú)線設(shè)備管理和監(jiān)控、汽車儀表數(shù)據(jù)的無(wú)線讀取等都是其典型應(yīng)用。

微功率短距離無(wú)線通信技術(shù)作為無(wú)線通信實(shí)用技術(shù),一般使用單片射頻收發(fā)芯片,加上微控制器和少量外圍器件構(gòu)成專用或通用無(wú)線通信模塊,通常射頻芯片采用GFSK(高斯頻移鍵控)調(diào)制方式,工作于ISM(工業(yè)、科學(xué)、醫(yī)療)頻段,通信模塊包含簡(jiǎn)單透明的數(shù)據(jù)傳輸協(xié)議或使用簡(jiǎn)單的加密協(xié)議,用戶不必對(duì)無(wú)線通信原理和工作機(jī)制有較深的了解,只要依據(jù)命令字進(jìn)行操作即可實(shí)現(xiàn)基本的數(shù)據(jù)無(wú)線傳輸功能,因其功率小、開發(fā)簡(jiǎn)單快速而在工業(yè)、民用等領(lǐng)域應(yīng)用廣泛。本文介紹利用ATmega16單片機(jī)和無(wú)線數(shù)據(jù)收發(fā)芯片nRF905構(gòu)成的短距離無(wú)線數(shù)據(jù)傳輸設(shè)備,給出了硬件和軟件設(shè)計(jì)方案。

1 系統(tǒng)硬件設(shè)計(jì)

1.1 系統(tǒng)結(jié)構(gòu)

無(wú)線數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)如圖1所示。該系統(tǒng)由外部數(shù)據(jù)設(shè)備和無(wú)線數(shù)據(jù)傳輸模塊組成,外部數(shù)據(jù)設(shè)備為PC機(jī)或數(shù)據(jù)采集等設(shè)備,我們?cè)O(shè)計(jì)的主要是無(wú)線數(shù)據(jù)傳輸模塊。無(wú)線數(shù)據(jù)傳輸模塊基于微功耗單片射頻收發(fā)器nRF905設(shè)計(jì),采用Atmel公司的高性能、低功耗8位處理器ATmega16為主處理芯片,完成數(shù)據(jù)的處理和控制。

1.2 ATmega16和nRF905

Atmel公司的ATmega16單片機(jī)具有先進(jìn)的RISC(精簡(jiǎn)指令集計(jì)算機(jī))結(jié)構(gòu)、非易失性程序和數(shù)據(jù)存儲(chǔ)器,16 kB可編程Flash存儲(chǔ)器、512 B的EEPROM和1 kB片內(nèi)SRAM,具有豐富的外設(shè)接口,其USART(通用同步和異步接收器和轉(zhuǎn)發(fā)器)是一個(gè)高度靈活的串行通信設(shè)備,SPI(串行外設(shè)接口)允許ATmega16與外設(shè)或其他AVR器件進(jìn)行高速的同步數(shù)據(jù)傳輸。

nRF905是挪威Nordic VLSI公司推出的單片射頻收發(fā)器,工作電壓為1.9 V~3.6 V,工作于433/868/915 MHz這3個(gè)ISM頻段,頻道轉(zhuǎn)換時(shí)間小于650μs,最大數(shù)據(jù)速率為100 kbit/s。nRF905由頻率合成器、接收解調(diào)器、功率放大器、晶體振蕩器和GFSK調(diào)制器組成,不需外加聲表面濾波器,ShockBurstTM工作模式,自動(dòng)處理字頭和CRC(循環(huán)冗余檢驗(yàn)),使用SPI接口與微控制器通信,配置非常方便。此外,其功耗很低,以-10 dBm輸出功率發(fā)射時(shí)電流只有11 mA,工作于接收模式時(shí)的電流為12.5 mA,具有窄閑模式與關(guān)機(jī)模式,易于實(shí)現(xiàn)功率管理。

1.3 硬件電路

硬件電路主要由電源與復(fù)位電路、外部數(shù)據(jù)設(shè)備接口電路、單片機(jī)系統(tǒng)和nRF905應(yīng)用電路等幾部分組成。硬件電路如圖2所示。

1.3.1 電源與復(fù)位電路

nRF905和單片機(jī)的典型工作電壓為+3.3 V,而系統(tǒng)供電電源為+5V,所以采用低壓差線性穩(wěn)壓器TPS7333實(shí)現(xiàn)+5 V~+3.3 V的線性穩(wěn)壓。為了實(shí)現(xiàn)穩(wěn)定、可靠的復(fù)位,使用低電壓工作的復(fù)位芯片TPS70733產(chǎn)生復(fù)位信號(hào)。

1.3.2 外部數(shù)據(jù)設(shè)備接口

無(wú)線數(shù)據(jù)傳輸模塊與外部數(shù)據(jù)設(shè)備之間采用RS-232接口,ATmega16的PD0-PD1用于連接RS-232串口。通常,PC機(jī)與單片機(jī)用兩根線方式進(jìn)行全雙工異步通信。由于AVR單片機(jī)輸人輸出為TTL電平,PC機(jī)配置的是RS-232標(biāo)準(zhǔn)串行接口,二者電氣規(guī)范不一致,因此,使用ICL3221收發(fā)芯片實(shí)現(xiàn)串口電平轉(zhuǎn)換。

數(shù)據(jù)傳輸速率在板可設(shè)置或通過(guò)外部數(shù)據(jù)設(shè)備設(shè)置。在板波特率利用ATmega16的PA7、PA6兩位設(shè)置,可設(shè)置為9.6kbit/s、19.2 kbit/s、38.4kbit/s、115.2 kbit/s。利用外部數(shù)據(jù)設(shè)備設(shè)置波特率時(shí),單片機(jī)的初始數(shù)據(jù)傳輸速率為9.6 kbit/s,PA7、PA6置為00狀態(tài),當(dāng)單片機(jī)收到波特率沒(méi)置命令后,數(shù)據(jù)傳輸速率調(diào)整為設(shè)定值。

1.3.3 單片機(jī)與nRF905接口電路

單片機(jī)與nRF905的接口電路很最要。nRF905內(nèi)部有5個(gè)寄存器:狀態(tài)寄存器、配置寄存器、發(fā)射地址寄存器、發(fā)射數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器。除了對(duì)寄存器讀寫外,還需對(duì)nRF905工作模式的切換進(jìn)行控制。單片機(jī)與nRF905的信號(hào)連接見圖3。

ATmega16與nRF905之間的雙向數(shù)據(jù)傳輸使用SPI接口,單片機(jī)的PB7-PB4連接nRF905的SPI接口,PD2-PD7連接nRF905的控制信號(hào)和檢測(cè)信號(hào),用于nRF905的模式切換以及通信過(guò)程中必須的信號(hào)指示接口。

2 系統(tǒng)軟件設(shè)計(jì)

2.1 數(shù)據(jù)傳輸過(guò)程

PC機(jī)(或其他外部設(shè)備)有數(shù)據(jù)傳輸或需設(shè)置設(shè)備參數(shù)時(shí),通過(guò)串口將數(shù)據(jù)發(fā)送給單片機(jī),單片機(jī)接收數(shù)據(jù)后,將需發(fā)送的數(shù)據(jù)(這里包括目標(biāo)設(shè)備地址和所要發(fā)送的數(shù)據(jù))通過(guò)SPI接口發(fā)送給nRF905,nRF905將數(shù)據(jù)加前導(dǎo)碼和CRC碼,將數(shù)據(jù)包發(fā)送。

當(dāng)nRF905接收到有效數(shù)據(jù)后,DR置高,單片機(jī)檢測(cè)到DR為高電平后,復(fù)位TRX_CE引腳,使nRF905進(jìn)入空閑模式,通過(guò)SPI接口從nRF905中讀出接收數(shù)據(jù),然后通過(guò)USART傳送給PC機(jī)或其他外部沒(méi)備。

軟件功能模塊由CPU寄存器初始化、串行口初始化、串口收發(fā)送程序、SPI初始化、SPI收發(fā)送程序、I/O口初始化、nRF905配置寄存器操作、nRF905接收程序、發(fā)送程序、主程序模塊組成。下面簡(jiǎn)要介紹主要的軟件功能模塊。

2.2 USART串口軟件設(shè)計(jì)

AVR USART與AVR UART在寄存器位定義、波特率發(fā)生器、發(fā)送器操作、發(fā)送緩沖器的功能以及接收器操作等方面完全兼容,此外,接收緩沖器進(jìn)行了兩方面改進(jìn):增加了一個(gè)緩沖器;接收移位寄存器可以作為第3級(jí)緩沖。

2.2.1 串口數(shù)據(jù)幀格式

外部數(shù)據(jù)設(shè)備與無(wú)線數(shù)據(jù)傳輸設(shè)備間的雙向數(shù)據(jù)傳輸使用相同的幀格式,幀格式由幀頭、幀長(zhǎng)、幀標(biāo)志和數(shù)據(jù)組成。幀頭為數(shù)據(jù)幀開始標(biāo)志,固定為0FF81H,長(zhǎng)度2字節(jié)。幀長(zhǎng)指從幀標(biāo)志開始至本幀結(jié)束的所有數(shù)據(jù)的字節(jié)數(shù),不包括幀頭、幀長(zhǎng)本身,單位為字節(jié),幀長(zhǎng)占1字節(jié)。幀標(biāo)志用以指示本幀數(shù)據(jù)的內(nèi)容屬性,長(zhǎng)度為1字節(jié)。不同類型幀的數(shù)據(jù)長(zhǎng)度和幀標(biāo)志具體定義如表1所示。

數(shù)據(jù)指所傳輸?shù)臉I(yè)務(wù)等內(nèi)容,數(shù)據(jù)長(zhǎng)度見表1,數(shù)據(jù)內(nèi)容定義如下:

a) 波特率設(shè)置:01H~0AH對(duì)應(yīng)波特率(單位為kbit/s)為2.4、4.8、9.6、14.4、19.2、28.8、38.4、57.6、76.8、115.2。

b) 設(shè)備地址設(shè)置:設(shè)備地址為00000000H~FFFFFFFFH。

c) 發(fā)射功率:00H為低功率;01H為高功率。

d) 工作頻率:433 MHz頻段,信道間隔100 kHz。

e) 發(fā)送數(shù)據(jù):發(fā)送數(shù)據(jù)長(zhǎng)度不定,最長(zhǎng)不超過(guò)254字節(jié)。

2.2.2 USART初始化

初始化USART操作包括波特率設(shè)置、數(shù)據(jù)格式和UCSRB寄存器設(shè)置。USART的波特率寄存器UBRR和降序計(jì)數(shù)器相連接,一起構(gòu)成可編程的預(yù)分頻器或波特率發(fā)生器。UBRR值的計(jì)算由該公式完成:UBRR=fosc/(16baud)-1,其中Baud為波特率,fosc為系統(tǒng)時(shí)鐘頻率。通過(guò)設(shè)置UCSRC寄存器,設(shè)置數(shù)據(jù)格式為8位數(shù)據(jù)位和1位停止位。通過(guò)設(shè)置UCSRB寄存器,使能串口發(fā)送和接收,并響應(yīng)接收完成中斷。

2.2.3 數(shù)據(jù)發(fā)送和接收

數(shù)據(jù)發(fā)送采用查詢方式。置位UCSRB寄存器的發(fā)送允許位TXEN將使能USART的數(shù)據(jù)發(fā)送,將需要發(fā)送的數(shù)據(jù)加載到發(fā)送緩沖區(qū)將啟動(dòng)數(shù)據(jù)發(fā)送,加載過(guò)程為CPU對(duì)UDR寄存器的寫操作。發(fā)送數(shù)據(jù)時(shí),按照幀格式在所需發(fā)送的數(shù)據(jù)前加上幀頭、幀長(zhǎng)、幀標(biāo)志組幀發(fā)送。

數(shù)據(jù)接收采用中斷方式。置位UCSRB寄存器的接收允許位RXEN將啟動(dòng)USART的數(shù)據(jù)接收器,通過(guò)讀取UDR寄存器就可以獲得接收緩沖器的內(nèi)容。接收數(shù)據(jù)時(shí),幀標(biāo)志有效才能開始接收一幀數(shù)據(jù),并根據(jù)讀出的幀長(zhǎng)信息完成接收規(guī)定長(zhǎng)度的數(shù)據(jù)。

2.3 SPI接口軟件設(shè)汁

本設(shè)計(jì)中SPI配置為主機(jī)模式,nRF905為從設(shè)備。SPI波特率最高可設(shè)置為1/2系統(tǒng)時(shí)鐘,系統(tǒng)時(shí)鐘為8 MHz,因此SPI速率可達(dá)4 MHz。此外,正確選擇SPI的工作模式對(duì)SPI數(shù)據(jù)傳輸非常重要,AT-mega16的SCK的相位和極性有4種組合,SPI工作模式由CPOL、CPHA設(shè)置,根據(jù)nRF905的SPI讀寫時(shí)序,ATmega16的SPI工作模式應(yīng)設(shè)置為模式0。

ATmega16與nRF905同時(shí)進(jìn)行雙向數(shù)據(jù)傳輸。ATmega16配置為SPI主機(jī)時(shí),SPI接口不自動(dòng)控制SS引腳,由用戶軟件來(lái)控制。ATmega16通過(guò)將從機(jī)的CSN引腳置低實(shí)現(xiàn)與從機(jī)的同步。SPI時(shí)鐘由寫入到SPI發(fā)送緩沖寄存器的數(shù)據(jù)啟動(dòng),SPI MOSI引腳上的數(shù)據(jù)發(fā)送次序由寄存器SPCR的DORD位控制,置位時(shí)數(shù)據(jù)的LSB(最低位)首先發(fā)送,否則數(shù)據(jù)的MSB(最高位)首先發(fā)送。我們選擇先發(fā)送MSB,同時(shí)接收到的數(shù)據(jù)傳送到接收緩沖寄存器,CPU進(jìn)行右對(duì)齊從接收緩沖器中讀取接收到的數(shù)據(jù)。

應(yīng)該注意,當(dāng)需要從nRF905中讀取多個(gè)數(shù)據(jù)時(shí),即使nRF905并不需要ATmega16串行輸出的數(shù)據(jù),每讀取一個(gè)數(shù)據(jù)前都要向SPI發(fā)送緩沖器寫一個(gè)數(shù)據(jù)以啟動(dòng)SPI接口時(shí)鐘。由于SPI系統(tǒng)的發(fā)送方向只有1個(gè)緩沖器,而在接收方向有2個(gè)緩沖器,所以在發(fā)送時(shí)一定要等到移位過(guò)程全部結(jié)束后,才能對(duì)SPI數(shù)據(jù)寄存器執(zhí)行寫操作;而在接收數(shù)據(jù)時(shí),需要在下一個(gè)字節(jié)移位過(guò)程結(jié)束之前通過(guò)訪問(wèn)SPI數(shù)據(jù)寄存器讀取當(dāng)前接收到的數(shù)據(jù),否則第1個(gè)數(shù)據(jù)丟失。

2.4 nRF905配置及收發(fā)流程

對(duì)nRF905寄存器的操作是一個(gè)很關(guān)鍵的問(wèn)題,nRF905的所有配置都是通過(guò)SPI接口進(jìn)行的。nRF905的SPI接口只有在掉電模式和standby模式是激活的。當(dāng)CSN為低時(shí),SPI接口開始等待一條指令,任何一條新指令均由CSN由高到低的轉(zhuǎn)換開始。

nRF905發(fā)送模式工作過(guò)程如下:

a) 當(dāng)ATmega16發(fā)送數(shù)據(jù)時(shí),將接收設(shè)備地址和所要發(fā)送的數(shù)據(jù)通過(guò)SPI接口寫入nRF905,SPI傳輸速率由初始化設(shè)置。

b) 置位TRX_CE、TX_EN,激活nRF905發(fā)送模式。

c) nRF905自動(dòng)完成數(shù)據(jù)打包(加入前導(dǎo)碼和CRC),包經(jīng)過(guò)GFSK調(diào)制以100 kbit/s發(fā)送,當(dāng)傳輸完畢DR置位。

d) 如果將AUTO_RETRAN位置高,nRF905將連續(xù)發(fā)送數(shù)據(jù)包,直至將TRX_CE引腳復(fù)位。

e) 當(dāng)TRX_CE引腳被設(shè)置為低時(shí),nRF905結(jié)束發(fā)送模式,并進(jìn)入standby模式。

nRF905接收模式工作過(guò)程如下:

a) 將TRX_CE置位,TX_EN復(fù)位后650μs,nRF005進(jìn)入接收模式等待數(shù)據(jù)到來(lái)。

b) 當(dāng)nRF905在接收信號(hào)檢測(cè)到載波,則CD(carrier detect)引腳置位;然后,如果接收到有效地址則AM(address match)置位,最后將接收到的有效數(shù)據(jù)包去掉前導(dǎo)碼、地址,CRC正確后,將DR(data ready)引腳置位。

c) CPU復(fù)位TRX_CE引腳,使nRF905進(jìn)入空閑模式,然后通過(guò)SPI接口讀取數(shù)據(jù)。

d) 數(shù)據(jù)接收完畢后,nRF905 DR和AM引腳復(fù)位并準(zhǔn)備進(jìn)入下一個(gè)工作模式。

應(yīng)該注意的是,在數(shù)據(jù)發(fā)送過(guò)程中無(wú)論將TRX_CE、TX_EN怎樣設(shè)置,nRF905都會(huì)完成此次發(fā)送而不受影響,此后,進(jìn)八所設(shè)置的工作模式。而在接收數(shù)據(jù)包的過(guò)程中TRX_CE或TX_EN狀態(tài)改變,則nRF905會(huì)立即改變工作模式,丟失數(shù)據(jù)。

2.5 主程序流程

主程序流程圖如圖4所示。

3 結(jié)束語(yǔ)

我們采用 nRF905射頻收發(fā)芯片和ATmega16微控制器設(shè)計(jì)了短距離無(wú)線數(shù)據(jù)傳輸設(shè)備,完成硬件電路和系統(tǒng)軟件調(diào)試后,進(jìn)行了無(wú)線數(shù)據(jù)收發(fā)實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,在300 m通信距離,該無(wú)線傳輸設(shè)備工作穩(wěn)定,能實(shí)現(xiàn)數(shù)據(jù)的高速有效傳輸,具有低功耗、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉