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