MSP430單片機(jī)與nRF905無線通信系統(tǒng)設(shè)計
無線通信系統(tǒng),由兩個部分組成:發(fā)送終端,接收終端。數(shù)據(jù)的發(fā)送和接收顯示是借助于串口來實(shí)現(xiàn)的,通過pc機(jī)串口給發(fā)送終端送數(shù)據(jù),然后發(fā)送終端通過nrf905把數(shù)據(jù)發(fā)送出去;接收終端通過nrf905接收數(shù)據(jù),然后把接收到的數(shù)據(jù)通過串口傳給pc機(jī)。系統(tǒng)框圖如圖1所示。 無線系統(tǒng)的硬軟件設(shè)計 系統(tǒng)的硬件設(shè)計 本系統(tǒng)采用的射頻收發(fā)器為nordic?。觯欤螅楣镜模睿颍妫梗埃?, 工作電壓為1.9~3.6v,工作于433/868/915mhz三個ism頻段,頻段之間的轉(zhuǎn)換時間小于650us。nrf905由頻率合成器、接收解調(diào)器、功率放大器、晶體振蕩器和調(diào)制器組成,不需外加聲表濾波器。高抗擾gfsk調(diào)制,數(shù)據(jù)速率為50kbps,獨(dú)特的載波監(jiān)測輸出,地址匹配輸出,數(shù)據(jù)就緒輸出。shockbursttm工作模式,自動處理字頭和crc(循環(huán)冗余碼校驗(yàn)),使用spi接口與微控制器通信,配置非常方便。此外,其功耗非常低,以-10dbm的輸出功率發(fā)射時電流只有11ma,工作于接收模式時的電流為12.5ma,內(nèi)建空閑模式與關(guān)機(jī)模式,易于實(shí)現(xiàn)節(jié)能。nrf905的硬件連接電路圖如圖2所示?! 〔捎玫奈⑻幚砥鳛椋簦楣镜模恚螅穑矗常埃妫保矗梗且环N超低功耗的混合信號控制器,具有16位risc結(jié)構(gòu),cpu中的16個寄存器和常數(shù)產(chǎn)生器使msp430能達(dá)到最高的代碼效率。單片機(jī)通過采用不同的時鐘源工作可以使器件滿足不同功耗要求,適當(dāng)選擇時鐘源,可以讓器件的功耗達(dá)到最小。外設(shè)主要有存儲器、時鐘模塊、定時器、usart和a/d轉(zhuǎn)換器等?! 〈舜卧O(shè)計主要用到了msp430f149兩個串口通信模塊usart0和usart1,usart0作為uart使用,提供異步通信,通過max3232電平轉(zhuǎn)換芯片提供rs-232接口和pc機(jī)進(jìn)行通信,usart1作為spi使用,提供同步通信,主要是和nrf905之間進(jìn)行命令和數(shù)據(jù)通信。把msp430f149的p2口作為一般引腳使用,與nrf905的其他引腳相連。對msp430f149提供雙晶振系統(tǒng),低頻晶振為32.768k,與微控制的xin和xout相連,為rs-232接口提供頻率支持,高頻晶振為8m,和微控制器的xt2相連,為系統(tǒng)運(yùn)行的主時鐘。系統(tǒng)的整體設(shè)計相對較為簡單,不過在此基礎(chǔ)上可以實(shí)現(xiàn)遙測,無線抄表,工業(yè)數(shù)據(jù)采集,機(jī)器人控制等。發(fā)送和接收的硬件電路是一樣的,系統(tǒng)設(shè)計主要硬件電路圖如圖3所示?! ∠到y(tǒng)的軟件設(shè)計 系統(tǒng)軟件設(shè)計包括下位機(jī)軟件設(shè)計和pc機(jī)軟件設(shè)計。前者主要是微控制器通過spi口對nrf905的控制以及微控制器串口通訊的設(shè)計,后者包括串口通訊模塊、主界面和數(shù)據(jù)庫設(shè)計?! 。颍妫悖铮睿妫椋纾弧 。颍妫悖铮睿妫椋纭。颍簦悖铮睿妫健 。 。保?, 0x01,?。埃埃?, 0x44, 0x20,?。埃玻?,?。埃悖?, ?。埃悖?, 0xcc,?。埃悖?, 0x58 ?。弧 。睿颍妫梗埃堤峁螅穑榭诘淖x寫指令,當(dāng)csn為低時,spi接口開始等待一條指令,任何一條新指令均由csn的由高到底的轉(zhuǎn)換開始。下面主要介紹nrf905的發(fā)送流程和接收流程?! “l(fā)送流程: ?。幔?dāng)微控制器有數(shù)據(jù)要發(fā)送時,通過spi接口,按時序把接收機(jī)的地址和要發(fā)送的數(shù)據(jù)送傳給nrf905,spi接口的速率在通信協(xié)議和器件配置時確定; ?。猓⒖刂破髦酶撸簦颍撸悖搴停簦撸澹?,激發(fā)nrf905的shockbursttm發(fā)送模式; c.nrf905的shockbursttm發(fā)送:射頻寄存器自動開啟;數(shù)據(jù)打包(加字頭和crc校驗(yàn)碼);發(fā)送數(shù)據(jù)包;當(dāng)數(shù)據(jù)發(fā)送完成,數(shù)據(jù)準(zhǔn)備好引腳被置高; ?。洌?dāng)trx_ce被置低,nrf905發(fā)送過程完成,自動進(jìn)入空閑模式。 ?。螅瑁铮悖耄猓酰颍螅簦簦砉ぷ髂J奖WC,一旦發(fā)送數(shù)據(jù)的過程開始,無論trx_en和tx_en引腳是高或低,發(fā)送過程都會被處理完。只有在前一個數(shù)據(jù)包被發(fā)送完畢,nrf905才能接受下一個發(fā)送數(shù)據(jù)包?! 〗邮樟鞒蹋骸 。幔?dāng)trx_ce為高、tx_en為低時,nrf905進(jìn)入shockbursttm接收模式; b.650us后,nrf905不斷監(jiān)測,等待接收數(shù)據(jù); ?。悖?dāng)nrf905檢測到同一頻段的載波時,載波檢測引腳被置高; ?。洌?dāng)接收到一個相匹配的地址,地址匹配引腳被置高; e.當(dāng)一個正確的數(shù)據(jù)包接收完畢,nrf905自動移去字頭、地址和crc校驗(yàn)位,然后把數(shù)據(jù)準(zhǔn)備好引腳置高 ?。妫⒖刂破靼眩簦颍撸悖逯玫?,nrf905進(jìn)