MSP430單片機(jī)與nRF905無(wú)線通信系統(tǒng)設(shè)計(jì)
無(wú)線通信系統(tǒng),由兩個(gè)部分組成:發(fā)送終端,接收終端。數(shù)據(jù)的發(fā)送和接收顯示是借助于串口來(lái)實(shí)現(xiàn)的,通過(guò)pc機(jī)串口給發(fā)送終端送數(shù)據(jù),然后發(fā)送終端通過(guò)nrf905把數(shù)據(jù)發(fā)送出去;接收終端通過(guò)nrf905接收數(shù)據(jù),然后把接收到的數(shù)據(jù)通過(guò)串口傳給pc機(jī)。系統(tǒng)框圖如圖1所示?! o(wú)線系統(tǒng)的硬軟件設(shè)計(jì) 系統(tǒng)的硬件設(shè)計(jì) 本系統(tǒng)采用的射頻收發(fā)器為nordic vlsi公司的nrf905, 工作電壓為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所示。 采用的微處理器為ti公司的msp430f149,它是一種超低功耗的混合信號(hào)控制器,具有16位risc結(jié)構(gòu),cpu中的16個(gè)寄存器和常數(shù)產(chǎn)生器使msp430能達(dá)到最高的代碼效率。單片機(jī)通過(guò)采用不同的時(shí)鐘源工作可以使器件滿(mǎn)足不同功耗要求,適當(dāng)選擇時(shí)鐘源,可以讓器件的功耗達(dá)到最小。外設(shè)主要有存儲(chǔ)器、時(shí)鐘模塊、定時(shí)器、usart和a/d轉(zhuǎn)換器等?! 〈舜卧O(shè)計(jì)主要用到了msp430f149兩個(gè)串口通信模塊usart0和usart1,usart0作為uart使用,提供異步通信,通過(guò)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ì)較為簡(jiǎn)單,不過(guò)在此基礎(chǔ)上可以實(shí)現(xiàn)遙測(cè),無(wú)線抄表,工業(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ì)。前者主要是微控制器通過(guò)spi口對(duì)nrf905的控制以及微控制器串口通訊的設(shè)計(jì),后者包括串口通訊模塊、主界面和數(shù)據(jù)庫(kù)設(shè)計(jì)。 ?。颍妫悖铮睿妫椋?; rfconfig?。颍簦悖铮睿妫健 。 。保?, ?。埃埃保。埃埃?, 0x44,?。埃玻?,?。埃玻?,?。埃悖悖 。埃悖?,?。埃悖悖。埃悖悖。埃担浮 。?; ?。睿颍妫梗埃堤峁螅穑榭诘淖x寫(xiě)指令,當(dāng)csn為低時(shí),spi接口開(kāi)始等待一條指令,任何一條新指令均由csn的由高到底的轉(zhuǎn)換開(kāi)始。下面主要介紹nrf905的發(fā)送流程和接收流程?! “l(fā)送流程: ?。幔?dāng)微控制器有數(shù)據(jù)要發(fā)送時(shí),通過(guò)spi接口,按時(shí)序把接收機(jī)的地址和要發(fā)送的數(shù)據(jù)送傳給nrf905,spi接口的速率在通信協(xié)議和器件配置時(shí)確定; b.微控制器置高trx_ce和tx_en,激發(fā)nrf905的shockbursttm發(fā)送模式; ?。悖睿颍妫梗埃档模螅瑁铮悖耄猓酰颍螅簦簦戆l(fā)送:射頻寄存器自動(dòng)開(kāi)啟;數(shù)據(jù)打包(加字頭和crc校驗(yàn)碼);發(fā)送數(shù)據(jù)包;當(dāng)數(shù)據(jù)發(fā)送完成,數(shù)據(jù)準(zhǔn)備好引腳被置高; ?。洌?dāng)trx_ce被置低,nrf905發(fā)送過(guò)程完成,自動(dòng)進(jìn)入空閑模式?! 。螅瑁铮悖耄猓酰颍螅簦簦砉ぷ髂J奖WC,一旦發(fā)送數(shù)據(jù)的過(guò)程開(kāi)始,無(wú)論trx_en和tx_en引腳是高或低,發(fā)送過(guò)程都會(huì)被處理完。只有在前一個(gè)數(shù)據(jù)包被發(fā)送完畢,nrf905才能接受下一個(gè)發(fā)送數(shù)據(jù)包?! 〗邮樟鞒蹋骸 。幔?dāng)trx_ce為高、tx_en為低時(shí),nrf905進(jìn)入shockbursttm接收模式; b.650us后,nrf905不斷監(jiān)測(cè),等待接收數(shù)據(jù); ?。悖?dāng)nrf905檢測(cè)到同一頻段的載波時(shí),載波檢測(cè)引腳被置高; d.當(dāng)接收到一個(gè)相匹配的地址,地址匹配引腳被置高; ?。澹?dāng)一個(gè)正確的數(shù)據(jù)包接收完畢,nrf905自動(dòng)移去字頭、地址和crc校驗(yàn)位,然后把數(shù)據(jù)準(zhǔn)備好引腳置高 f.微控制器把trx_ce置低,nrf905進(jìn)





