《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 低功耗無(wú)線數(shù)字傳輸模塊的設(shè)計(jì)與應(yīng)用

低功耗無(wú)線數(shù)字傳輸模塊的設(shè)計(jì)與應(yīng)用

2008-08-11
作者:申長(zhǎng)軍 吳慶宏

??? 摘 要: 介紹了一種以PIC16F73單片機(jī)芯片和CC1000調(diào)制解調(diào)芯片為核心的超低功耗" title="低功耗">低功耗無(wú)線數(shù)字傳輸模塊的設(shè)計(jì)方案及實(shí)現(xiàn)方法,并給出了該模塊在無(wú)線智能IC卡水表中的應(yīng)用。該模塊通信速率最高可達(dá)38.4kbps,查詢工作方式下平均工作電流為10?滋A,與同類(lèi)設(shè)計(jì)相比,該模塊具有功耗低、使用方便、通信可靠等優(yōu)點(diǎn)。
??? 關(guān)鍵詞: 無(wú)線通信?? 低功耗?? 移頻鍵控?? PIC16F73單片機(jī)芯片?? CC1000調(diào)制解調(diào)芯片

?

??? 在工業(yè)、科學(xué)研究以及醫(yī)療設(shè)備中,目前出現(xiàn)了大量需要進(jìn)行通信的設(shè)備,這些設(shè)備通信距離" title="通信距離">通信距離較近、數(shù)據(jù)量較小、不適合布線。比如自動(dòng)抄表系統(tǒng)、酒店點(diǎn)菜系統(tǒng)以及現(xiàn)場(chǎng)數(shù)據(jù)采集系統(tǒng)等,其中有很多設(shè)備是可移動(dòng)的,而且要求體積小便于攜帶。因此,要求其通信設(shè)備具有體積小、功耗低、成本低、使用方便等特點(diǎn)?;谶@些需求,本文給出了一款超低功耗的無(wú)線數(shù)字傳輸模塊的設(shè)計(jì)及實(shí)現(xiàn)方法。
??? 該模塊采用Chipcon公司的超低功耗FSK調(diào)制解調(diào)芯片CC1000和Microchip公司的低功耗單片機(jī)芯片PIC16F73[1],從而保證了系統(tǒng)的超低功耗。同時(shí),為了適應(yīng)電池供電系統(tǒng)的應(yīng)用,該模塊支持查詢方式的無(wú)線通信,可以使系統(tǒng)的平均工作電流低至10?滋A。該模塊具有8組信道,可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多點(diǎn)的半雙工通信,并且提供標(biāo)準(zhǔn)串行數(shù)據(jù)接口,支持TTL、RS232和RS485通信接口,可以方便地與其它控制器或計(jì)算機(jī)連接。
1 模塊硬件設(shè)計(jì)
?? 模塊結(jié)構(gòu)框圖如圖1所示。

?


??? 作為工作在物理層和數(shù)據(jù)鏈路層的底層通信設(shè)備,該系統(tǒng)完成數(shù)據(jù)的調(diào)制解調(diào)、假數(shù)據(jù)過(guò)濾、數(shù)據(jù)組合、解碼數(shù)據(jù)幀、數(shù)據(jù)校驗(yàn)等功能。在接收過(guò)程中完成數(shù)據(jù)由電信號(hào)向位流、由位流數(shù)據(jù)向字節(jié),由字節(jié)向數(shù)據(jù)幀的變換,而在發(fā)送過(guò)程中則完成接收時(shí)的逆向過(guò)程。數(shù)據(jù)發(fā)送過(guò)程中數(shù)據(jù)流的變化如圖2所示。

?


??? 調(diào)制解調(diào)由CC1000完成。系統(tǒng)采用頻移鍵控調(diào)制(FSK),載波頻率為434MHz,帶寬為64kHz,數(shù)據(jù)采用差分曼徹斯特編碼發(fā)送,空中發(fā)送數(shù)據(jù)速率" title="數(shù)據(jù)速率">數(shù)據(jù)速率可以根據(jù)需要設(shè)置,最高FSK 數(shù)據(jù)速率為76.8kpbs。CC1000采用三線命令接口和兩線數(shù)據(jù)接口,可編程配置載波頻率和數(shù)據(jù)速率等內(nèi)容。有關(guān)CC1000的詳細(xì)內(nèi)容見(jiàn)參考文獻(xiàn)[2]。
??? 模塊控制器在發(fā)送時(shí)從用戶接口接收數(shù)據(jù)和命令,并將用戶數(shù)據(jù)轉(zhuǎn)換成數(shù)據(jù)幀傳送給CC1000,控制CC1000進(jìn)行數(shù)據(jù)發(fā)送。在接收時(shí),控制器接收從CC1000傳送過(guò)來(lái)的數(shù)據(jù),分析數(shù)據(jù),過(guò)濾噪聲,將數(shù)據(jù)由位流轉(zhuǎn)換為字節(jié),進(jìn)行校驗(yàn)并將用戶數(shù)據(jù)通過(guò)串行口傳送給用戶,使用戶可以實(shí)現(xiàn)所發(fā)即所收。
??? 模塊是為低功耗系統(tǒng)而設(shè)計(jì)的,除了具有SLP引腳可以直接休眠模塊外,還有一些專(zhuān)門(mén)設(shè)計(jì)的命令來(lái)支持使用查詢方式的通信。模塊接口引腳功能如表1所示。PCMD、RX、TX三線組成模塊的三線接口,配置命令時(shí)PCMD必須為高電平。配置命令工作時(shí)序如圖3所示。

?

?


??? 模塊支持的命令如表2所示。

?


??? 發(fā)送數(shù)據(jù)時(shí)PCMD應(yīng)置為低電平,通過(guò)串行口發(fā)送數(shù)據(jù)即可。模塊使用時(shí)間間隔區(qū)分?jǐn)?shù)據(jù)幀,如果有傳輸半個(gè)字節(jié)的時(shí)間沒(méi)有接收到數(shù)據(jù),則認(rèn)為此前接收到的為一幀數(shù)據(jù),系統(tǒng)將編碼該幀數(shù)據(jù)并通過(guò)CC1000進(jìn)行調(diào)制和發(fā)送。因此,如果用戶數(shù)據(jù)是以數(shù)據(jù)幀的格式發(fā)送的,用戶應(yīng)當(dāng)連續(xù)發(fā)送數(shù)據(jù),以避免模塊將一幀數(shù)據(jù)分割為兩幀數(shù)據(jù)發(fā)送,從而降低發(fā)送效率。模塊只能進(jìn)行半雙工通信,沒(méi)有數(shù)據(jù)發(fā)送時(shí)模塊處于接收狀態(tài);有休眠信號(hào)時(shí)模塊進(jìn)入休眠狀態(tài),此時(shí)模塊無(wú)法接收和發(fā)送數(shù)據(jù),只有將模塊喚醒后,才能發(fā)送和接收數(shù)據(jù)。READY信號(hào)是模塊工作狀態(tài)指示信號(hào)。當(dāng)READY長(zhǎng)時(shí)間處于低電平狀態(tài)時(shí),可以使用RST將模塊復(fù)位,重新設(shè)置模塊的工作狀態(tài),以避免模塊處于錯(cuò)誤工作狀態(tài)。
2? 軟件設(shè)計(jì)
??? 系統(tǒng)軟件采用專(zhuān)門(mén)為PIC單片機(jī)設(shè)計(jì)的C語(yǔ)言CC5X,該語(yǔ)言與ANSI C兼容,并針對(duì)PIC單片機(jī)進(jìn)行了優(yōu)化,能夠?yàn)镻IC系列單片機(jī)產(chǎn)生優(yōu)質(zhì)高效的代碼,具體內(nèi)容參見(jiàn)參考文獻(xiàn)[3]。系統(tǒng)控制器軟件設(shè)計(jì)是本系統(tǒng)的核心內(nèi)容,由于控制器要完成與用戶和CC1000雙方的通信及數(shù)據(jù)封裝,因此系統(tǒng)軟件借用Windows系統(tǒng)的消息循環(huán)機(jī)制設(shè)計(jì),采用消息循環(huán)的體系結(jié)構(gòu)。這種結(jié)構(gòu)使得程序結(jié)構(gòu)清晰、可擴(kuò)展性強(qiáng)、可移植性強(qiáng)。經(jīng)過(guò)長(zhǎng)時(shí)間的實(shí)踐,證明這種結(jié)構(gòu)非常適合單片機(jī)系統(tǒng)軟件的開(kāi)發(fā)。
??? 圖4為程序初始化和主函數(shù)部分的結(jié)構(gòu)框圖。系統(tǒng)程序總體結(jié)構(gòu)采用消息驅(qū)動(dòng)機(jī)制。在系統(tǒng)內(nèi)部寄存器和變量初始化完成后便可以進(jìn)入消息循環(huán)程序查詢系統(tǒng)消息。系統(tǒng)消息一般是CPU 外部或內(nèi)部的事件通過(guò)CPU 中斷系統(tǒng)激勵(lì)CPU 運(yùn)行的。為了能夠使系統(tǒng)產(chǎn)生和響應(yīng)消息,必須啟動(dòng)CPU 的中斷系統(tǒng),因而在進(jìn)入消息循環(huán)前啟動(dòng)CPU定時(shí)中斷、串行通信中斷、外部觸發(fā)中斷。程序初始化部分在CPU 上電或復(fù)位后只執(zhí)行一次,CPU 在正常工作時(shí)始終都在消息循環(huán)中反復(fù)檢測(cè)消息是否存在,并根據(jù)消息的種類(lèi)做不同的操作,最后清除相應(yīng)的消息標(biāo)志,再進(jìn)行循環(huán)檢測(cè)消息。本系統(tǒng)中消息共有三種,分別是程序節(jié)拍控制信號(hào)、與CC1000通信的信號(hào)以及與用戶通信的信號(hào)。程序節(jié)拍控制信號(hào)控制程序的運(yùn)行過(guò)程,包括時(shí)間信號(hào)、外部中斷信號(hào)(休眠、喚醒)以及其它定時(shí)動(dòng)作信號(hào);與CC1000通信的信號(hào)包括CC1000狀態(tài)轉(zhuǎn)換信號(hào)、接收完成信號(hào)、發(fā)送開(kāi)始信號(hào)以及發(fā)送完畢信號(hào)等,負(fù)責(zé)管理與CC1000的通信和控制工作;與用戶通信的信號(hào)包括接收用戶數(shù)據(jù)完畢信號(hào)、用戶數(shù)據(jù)發(fā)送完畢信號(hào)以及向用戶發(fā)送數(shù)據(jù)開(kāi)始信號(hào)等,負(fù)責(zé)與用戶的通信管理。程序的消息循環(huán)結(jié)構(gòu)如圖5所示。

?


3? 模塊性能
3.1 模塊功耗

??? 作為一款專(zhuān)門(mén)為低功耗系統(tǒng)而設(shè)計(jì)的無(wú)線數(shù)字傳輸模塊,該模塊具有低電壓供電、低功耗的特點(diǎn)。供電電壓范圍為3V~12V。當(dāng)供電電壓為3V時(shí),在接收狀態(tài)下,模塊電流為9.6mA;在發(fā)送狀態(tài)下,模塊電流為25.6mA;在休眠狀態(tài)下,模塊電流為2μA。通信系統(tǒng)使用查詢方式工作時(shí),處于接收方的工作電流計(jì)算公式如下,即若休眠時(shí)間為tsl, 檢測(cè)信號(hào)時(shí)間為tdt, 那么平均工作電流為(單位為?滋A):
???

??? 因此,如果一個(gè)系統(tǒng)的休眠時(shí)間為8s,檢測(cè)時(shí)間為10ms,那么平均工作電流為13μA。這樣,5400mAh的鋰電池可以使用47年!當(dāng)然,實(shí)際使用中應(yīng)該計(jì)算模塊處于接收狀態(tài)時(shí)的電流,此時(shí)模塊的功耗就取決于模塊工作的情況和傳輸數(shù)據(jù)量的大小,但是其極低的待機(jī)功耗對(duì)于移動(dòng)設(shè)備來(lái)說(shuō)是十分重要的。
3.2? 通信可靠性
??? 通信誤碼率可以使用如下近似公式計(jì)算:
??? ???

式中,N為傳輸?shù)亩M(jìn)制碼元總數(shù);Ne為被傳輸錯(cuò)的碼元數(shù),理論上應(yīng)有N→∞。
??? 在實(shí)際使用中,N足夠大時(shí),才能夠把Pe近似為誤碼率。經(jīng)過(guò)對(duì)模塊的測(cè)試,在數(shù)據(jù)速率為2400bps、通信距離為100m(平原條件)時(shí),通信誤碼率為10-3~10-5。在數(shù)據(jù)速率提高時(shí),通信誤碼率會(huì)增加,但是通信模塊可采用多項(xiàng)技術(shù)來(lái)提高通信可靠性。在物理層,模塊采用差分曼徹斯特編碼技術(shù)發(fā)送數(shù)據(jù),從而保證通信中的同步問(wèn)題;而在數(shù)據(jù)鏈路層,使用CRC(循環(huán)冗余編碼)進(jìn)行數(shù)據(jù)幀校驗(yàn),用以保證數(shù)據(jù)到達(dá)用戶應(yīng)用層以后的可靠性。當(dāng)然,用戶在應(yīng)用層還可以采取多種通信協(xié)議來(lái)進(jìn)一步提高通信的可靠性。
3.3? 通信距離
??? 在無(wú)線通信中,通信距離與發(fā)射機(jī)發(fā)送信號(hào)的強(qiáng)度和接收機(jī)接收靈敏度有著直接關(guān)系。本模塊的發(fā)送功率為10dBm,而在數(shù)據(jù)速率為2400bps、帶寬為64kHz、通信二進(jìn)制誤碼率為10-3條件下,模塊的接收靈敏度為-110dBm。在天線高于地面3m的可視條件下,可靠通信距離(誤碼率小于10-3)大于300m。在市區(qū)環(huán)境中,可靠通信距離在100m左右。
4 模塊應(yīng)用
??? 無(wú)線智能IC卡水表由負(fù)責(zé)顯示和讀寫(xiě)IC卡的上位機(jī)" title="上位機(jī)">上位機(jī)和負(fù)責(zé)閥門(mén)控制的下位機(jī)" title="下位機(jī)">下位機(jī)組成,上位機(jī)和下位機(jī)之間的通信使用無(wú)線數(shù)字傳輸模塊完成,系統(tǒng)結(jié)構(gòu)如圖6所示。上位機(jī)負(fù)責(zé)人機(jī)接口,包括顯示下位機(jī)狀態(tài)、顯示剩余水量、讀取IC卡以及與下位機(jī)通信等功能,下位機(jī)完成水脈沖計(jì)數(shù)并接收上位機(jī)的指令控制閥門(mén)開(kāi)關(guān)狀態(tài)。由于本系統(tǒng)采用電池供電,所以要求系統(tǒng)的功耗必須非常低。水表的上位機(jī)和下位機(jī)均采用Microchip公司的低功耗單片機(jī)PIC16F73,下位機(jī)工作在查詢狀態(tài)。

?


??? 無(wú)線智能IC卡水表的通信方式如下:通信由上位機(jī)發(fā)起,當(dāng)需要通信時(shí)(按鍵被按下或插入IC卡時(shí)),上位機(jī)首先發(fā)送10s的同步頭,然后發(fā)送地址,其后等待下位機(jī)應(yīng)答。而下位機(jī)使用查詢的方式與上位機(jī)進(jìn)行通信,即下位機(jī)每9s喚醒一次無(wú)線通信模塊以檢測(cè)是否有同步頭信息,檢測(cè)時(shí)間為10ms。如果沒(méi)有同步頭信息,無(wú)線通信模塊轉(zhuǎn)入休眠狀態(tài);反之,下位機(jī)接收上位機(jī)信息,并進(jìn)行解密和地址判斷。如果接收到的地址為本機(jī)地址,則分析指令并進(jìn)行響應(yīng),否則轉(zhuǎn)入休眠。因?yàn)樯衔粰C(jī)發(fā)送同步頭的時(shí)間大于下位機(jī)休眠的時(shí)間,所以保證了通信的可靠性。這種通信方式雖然速度較慢,但是卻使得下位機(jī)的功耗大大降低,延長(zhǎng)了下位機(jī)電池的壽命。在該系統(tǒng)中,由于數(shù)據(jù)量較小,所以通信速度不是關(guān)鍵問(wèn)題,而低功耗才是系統(tǒng)最重要的問(wèn)題。
??? 基于CC1000的低功耗無(wú)線數(shù)字通信模塊完成了設(shè)計(jì)目標(biāo),達(dá)到了低功耗、高可靠性的通信要求,并且通信速度可以達(dá)到38.4kbps,所以可以滿足大部分短距離無(wú)線數(shù)字通信的要求。當(dāng)然,由于系統(tǒng)的功耗比較低,使得發(fā)射功率較小,通信距離比較近。因此,在對(duì)通信距離要求更高時(shí),可以適當(dāng)加大發(fā)射功率,以增加傳播距離。目前該模塊已經(jīng)在無(wú)線智能IC卡水表中使用,工作穩(wěn)定。
參考文獻(xiàn)
1 PIC16F7X Data Sheet. Microchip Technology Inc., 2002
2 SmartRF CC1000 Preliminary Datasheet (Rev2.1).Chipcon AS, 2002
3 CC5X C Compiler for the PICmicro Devices User’s Manual?Version 3.1. B Knudsen Data, 2001
4 陽(yáng)憲惠. 現(xiàn)場(chǎng)總線技術(shù)及其應(yīng)用.北京:清華大學(xué)出版社,2001

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。