《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動(dòng)態(tài) > 基于CC1100的無線手持終端的設(shè)計(jì)

基于CC1100的無線手持終端的設(shè)計(jì)

2008-07-10
作者:潘旭兵,,林 中

??? 摘? 要: 以Silicon Labs公司的C8051F340 SoC為微中央處理器、Chipcon公司的CC1100為射頻收發(fā)器,,設(shè)計(jì)了一種能廣泛應(yīng)用于消費(fèi),、物流、監(jiān)控等領(lǐng)域的低成本,、低功耗,、短距離對等通信的無線數(shù)據(jù)通信手持終端設(shè)備。對CC1100的編程特點(diǎn)進(jìn)行了詳細(xì)闡述,。
??? 關(guān)鍵詞: CC1100? C8051F340? 射頻通訊

?

??? 在布線繁雜,、不方便或不允許布線的情況下,人們都希望能通過短距離無線通信方案來解決,。常見的應(yīng)用有RFID,、無線抄表、無線餐飲點(diǎn)菜系統(tǒng),、無線監(jiān)控等,。隨著射頻通信技術(shù)和相關(guān)產(chǎn)品的日趨成熟以及人們生活水平和要求的不斷提高,餐飲行業(yè)的信息化建設(shè)方興未艾,。餐館服務(wù)員手中的點(diǎn)菜器是餐飲點(diǎn)菜系統(tǒng)的數(shù)據(jù)采集部分,,它與基站的通信是無線方式,。本文介紹一種適用于中小餐館的普及型無線點(diǎn)菜手持終端設(shè)備(經(jīng)適當(dāng)改動(dòng)可用于其他領(lǐng)域),它采用高性能,、低價(jià)位,、低開發(fā)成本的C8051F340單片機(jī)作為MCU,以Chipcon公司新推出的一體化無線收發(fā)芯片CC1100為射頻收發(fā)器,,工作在免許可證的ISM(工業(yè),、科研及醫(yī)療)頻段的433MHz。
1 硬件設(shè)計(jì)
??? 系統(tǒng)組成框圖如圖1所示,。它主要由MCU控制單元(控制各可編程芯片,、處理輸入和輸出信號)、射頻收發(fā)單元(射頻信號的調(diào)制與解調(diào),、發(fā)射與接收和對數(shù)據(jù)進(jìn)行打包與解包等),、鍵盤與LCD顯示單元(信息的輸入和顯示)、存儲器單元(存放漢字庫和菜單數(shù)據(jù)庫),、UART和USB接口單元(與PC機(jī)的通信,、提供充電電源)、電源管理單元" title="電源管理單元">電源管理單元(為系統(tǒng)提供各種類型的電壓,、充電,、外接電源的切換等)等組成。

?????????????????????
1.1 MCU單元
??? C8051F340(以下簡稱MCU)是一款具有全速USB功能的混合信號Flash微控制器,,其內(nèi)置256kB+4KB的RAM和64KB的Flash存儲器,;精確校準(zhǔn)(0.25%)的12MHz內(nèi)部振蕩器(工作時(shí)外部不必接晶振" title="晶振">晶振),處理速度可達(dá)48MIPS,;基于JTAG接口的非侵入式在系統(tǒng)調(diào)試接口等[1],。其功能和性能完全滿足設(shè)計(jì)要求。
1.2 射頻收發(fā)器單元
??? CC1100是Chipcon/TI公司力推的一款性價(jià)比“最高”的射頻單片收發(fā)器芯片,,它體積?。?0pins,QLP 4×4mm),、接收靈敏度高(-110dBm/1.2kbps),、速率可編程(1.2kb/s~500kb/s)、工作電壓低(1.8V~3.6V),、功耗低(15.4mA/433MHz/1.2kb/s,,1.8μA的待機(jī)電流,待機(jī)模式下的啟動(dòng)時(shí)間僅為0.3ms),、在所有頻段輸出功率高達(dá)+10dBm,、高效的SPI接口、數(shù)字RSSI(接收信號強(qiáng)度指示)輸出、無線喚醒(WOR)功能等,。它的工作頻率為300MHz~1000MHz[2],。
??? 考慮到高頻干擾,該單元單獨(dú)做一塊PCB板,,并用金屬罩對其進(jìn)行電磁屏蔽,,通過一個(gè)7針的連接器與底板相連,如圖2所示,。GDO0與MCU的P0.7相接,,用于指示是否已完整地接收了一個(gè)數(shù)據(jù)包,它可作為MCU的外部中斷源信號,。在缺省情況下,,GDO0會輸出一個(gè)頻率為晶振頻率(192Hz)的方波,這可作為在調(diào)試時(shí)判斷CC1100是否正常工作的依據(jù),。SCLK(串行時(shí)鐘),、SO(串行輸出)、SI(串行輸入),、CSn(片選)分別與MCU的P0.0,、P0.1、P0.2和P0.6相接,,實(shí)現(xiàn)MCU與CC1100的SPI接口相連。MCU對CC1100的配置,、控制和數(shù)據(jù)收發(fā)都通過該SPI接口進(jìn)行,。在設(shè)計(jì)PCB時(shí)要讓晶振與芯片引腳盡量靠近,并用地線把時(shí)鐘區(qū)隔離開,,晶振外殼接地并固定,,元件都使用SMT(表帖式)元件,以減少過孔和體積,。VCC為3.3V,。C4、C5,、C6和L3,、L4組成一個(gè)非平衡變壓器,用于在差分和單端RF(射頻)信號之間進(jìn)行變換,,C1,、C2、C3和L1,、L2組成一個(gè)LC濾波器,,它與非平衡變壓器一起實(shí)現(xiàn)與50Ω的天線相適配。電阻R1用于為CC1100的偏壓設(shè)置一個(gè)精準(zhǔn)的參考電流。DS1用于指示模塊上的電源是否正常,。

????????????????????????
1.3 鍵盤和LCD顯示單元
??? 鍵盤包括數(shù)字鍵,、發(fā)射鍵、方向鍵,、多功能鍵,、電源開/關(guān)鍵等,它由一個(gè)8行×3列的矩陣和一個(gè)獨(dú)立的鍵(電源開/關(guān))組成,。其中的行線與MCU的數(shù)據(jù)線(P4口)相連,,列線分別與P2.0、P2.1和P2.2相連,。軟件在判斷P2口的低3位有變化時(shí),,立即讀取P4口的內(nèi)容,可獲得當(dāng)前按下的鍵,。電源開/關(guān)鍵直接與電源管理芯片的啟動(dòng)/關(guān)閉腳相連,。
??? UC1610為具有128×160點(diǎn)陣的4個(gè)灰度級偽彩LCD控制器和驅(qū)動(dòng)器,專為超低功耗的手持設(shè)備設(shè)計(jì),,與MCU的接口有并口,、SPI、I2C,。本系統(tǒng)采用2線I2C總線與MCU的SMBus相連,,此時(shí),應(yīng)把CD,、WR0和WR1接地,,D0、D3分別與MCU的SCL,、SDA相連,,數(shù)據(jù)線中的其他位接地。對其控制可參考其數(shù)據(jù)手冊[4],。
1.4 存儲器單元
??? MCU的片內(nèi)存儲器已足夠存放程序代碼,,但由于要存放漢字庫和菜庫,所以必須外接一個(gè)數(shù)據(jù)存儲器,。此存儲器既要容量大又要封裝小,,因此選擇了ATMEL公司的SPI Flash存儲器AT25F2048。該存儲器容量為2Mbit,,8腳貼片封裝,,通過4線SPI與MCU連接,數(shù)據(jù)傳輸率為12Mb/s,??筛鶕?jù)數(shù)據(jù)手冊中的命令格式進(jìn)行相關(guān)的讀寫以及擦除操作[5]
1.5 UART和USB接口單元
??? 程序可以通過JTAG接口下載,但像菜庫,、漢字庫只能通過UART/USB接口下載,。MCU提供2個(gè)UART口,通過外接一個(gè)UART← →RS232變換的驅(qū)動(dòng)芯片MAX3232,,就可與PC的串口相連,。MCU內(nèi)嵌一個(gè)USB2.0(設(shè)備)控制器[1],可以直接與PC的USB接口相連,。同時(shí),,USB口還提供對設(shè)備進(jìn)行充電的電源。
1.6 電源管理單元
??? LTC3455是凌特公司針對手持應(yīng)用新推出的一個(gè)完整的單片電源管理解決方案,,在4mm×4mm的24引腳QFN封裝內(nèi)集成了USB電源管理器,、鋰離子電池充電器和雙DC-DC(5V~3.3V和5V~1.8V)轉(zhuǎn)換器,它把以前需要5個(gè)或更多芯片實(shí)現(xiàn)的幾個(gè)功能結(jié)合在一起,。對電源進(jìn)行無縫選擇(3選1),,其過程完全是按優(yōu)先級自動(dòng)進(jìn)行的:5.0V AC適配器→USB電源→電池。在使用適配器或USB電源時(shí),,電池充電器被使能,,而且器件內(nèi)部的電源完全由選擇的外部電源供電[3]。電源管理單元電路圖如圖3所示,。圖中的CON1與PC的USB口相接,,CON2與電源適配器相接,USBHP用于選擇USB電源的上限電流為500mA,。P30用于使能SW2和熱插拔功能,,P31用于指示電池的電量,P32用于指示ON腳的狀態(tài),,P33用于使能本芯片,SW-VCC用于開啟/關(guān)閉輸出電源,。

??????????????????????
2 軟件設(shè)計(jì)
??? 軟件的開發(fā)環(huán)境為keil μVISION3,,使用keil C51語言。系統(tǒng)的無線通信部分采用主從結(jié)構(gòu),,從站由手持設(shè)備組成,,主站由設(shè)在廚房的基站組成,工作方式采用主站輪詢,、從站監(jiān)聽方式,。為了避免多個(gè)從站爭用信道而發(fā)生沖突,規(guī)定只有主站向某個(gè)從站點(diǎn)名時(shí),,從站才向主站發(fā)送數(shù)據(jù),。系統(tǒng)軟件主要流程如圖4所示。

??????????????????????
2.1 CC1100的編程要點(diǎn)
??? (1)寄存器訪問
??? 在不同速率下CC1100有不同的配置。為了獲得最佳性能,,有些配置必須經(jīng)過復(fù)雜的計(jì)算才能獲得,。Chipcon公司提供了SmartRF Studio軟件對有關(guān)的寄存器進(jìn)行最佳配置。針對某一個(gè)速率,,該軟件會自動(dòng)提供一組最佳的寄存器配置參數(shù),,程序員只需在初始化時(shí)把這些配置寫入相應(yīng)的寄存器即可。配置只能在CC1100處于IDLE狀態(tài)下時(shí)才能進(jìn)行,。
??? 除了配置操作外,,還有讀狀態(tài)、發(fā)命令和讀/寫Rx/Tx FIFO操作,。這些操作有相似的通信格式:head字節(jié)+data(讀和發(fā)命令操作除外)字節(jié),。Head由R/W(bit7)、Burst(bit6)和Addr(bit5~0)三部分組成,。R/W標(biāo)示當(dāng)前操作是讀1還是寫0,;Burst標(biāo)示當(dāng)前操作是訪問單個(gè)0還是多個(gè)1寄存器。但在讀狀態(tài)寄存器" title="狀態(tài)寄存器">狀態(tài)寄存器時(shí)是一個(gè)例外,,雖然每次只能讀一個(gè)狀態(tài)寄存器,,但該位必須為1,原因是狀態(tài)寄存器的地址與命令寄存器的地址是重疊的,,因此對burst位進(jìn)行了重定義,;bit0~5(Addr)為寄存器的地址。
??? (2)狀態(tài)機(jī)
??? CC1100內(nèi)部有一個(gè)用于管理各個(gè)狀態(tài)之間相互切換的狀態(tài)機(jī),。當(dāng)前狀態(tài)可從狀態(tài)寄存器MARCSTATE獲得,。狀態(tài)轉(zhuǎn)移圖如圖5所示。命令,、內(nèi)部事件和配置信息決定狀態(tài)切換,。寄存器MCSM1中的TXOFF_MODE、RXOFF_MODE決定在完成發(fā)送操作,、接收一個(gè)有效的包后將進(jìn)入哪一個(gè)狀態(tài),。需要注意的是,具有省電功效的無線喚醒功能WOR能使CC1100在SLEEP狀態(tài)下周期性地自動(dòng)轉(zhuǎn)到IDLE狀態(tài),,然后再自動(dòng)轉(zhuǎn)到Rx狀態(tài),。但如果在此狀態(tài)下沒有數(shù)據(jù)包可接收,將又回到SLEEP狀態(tài),;否則,,在接收完數(shù)據(jù)包之后,下一個(gè)狀態(tài)將由RXOFF_MODE決定,,但不會進(jìn)入SLEEP狀態(tài),,必須在進(jìn)入IDLE狀態(tài)時(shí)由MCU發(fā)送SWOR命令才能再次進(jìn)入,。在SLEEP狀態(tài)下,晶振是否繼續(xù)工作是由寄存器MCSM0中的XOSC_FORCE_ON決定的(0:繼續(xù)工作,,1:停止工作),。在MCU訪問CC1100(CSn=0)時(shí),無論XOSC_FORCE_ON為何值,,晶振將總是工作,。

??????????????????????
??? (3)數(shù)據(jù)包的處理機(jī)制
??? CC1100的特點(diǎn)之一是在收發(fā)數(shù)據(jù)時(shí)對包處理的全面支持,包在發(fā)送時(shí)具有如圖6所示的格式,。

??????????????????????????
??? 前導(dǎo)碼提供包的位同步,,它是由0和1交替排列組成的序列。當(dāng)進(jìn)入Tx狀態(tài)時(shí),,調(diào)制器將根據(jù)MDMCFG2中的SYNC_MODE決定是否啟動(dòng)發(fā)送前導(dǎo)碼,,若允許發(fā)送,則其長度由MDMCFG1中的NUM_PREAMBLE決定,。在發(fā)送完前導(dǎo)碼后,,如果TX FIFO中有數(shù)據(jù),則立即發(fā)送同步字,;否則,,調(diào)制器將重復(fù)發(fā)送前導(dǎo)碼直到TX FIFO中有數(shù)據(jù),或者,,在強(qiáng)制轉(zhuǎn)換到其他狀態(tài)時(shí),,停止發(fā)送前導(dǎo)碼。同步字提供包的byte同步,。寄存器SYNC0和SYNC1中存放同步字的高低字節(jié),。SYNC_MODE還決定是否重復(fù)發(fā)送一次同步字。
????CC1100支持4種格式的包,,其中數(shù)據(jù)(凈荷)長度分別是:定長(小于255B),、變長(小于255B)、無限長(數(shù)據(jù)長度" title="數(shù)據(jù)長度">數(shù)據(jù)長度無效,,手動(dòng)終止包的發(fā)送)和有限長(數(shù)據(jù)長度有效,,可以是任意值)。有限長格式是無限長和定長的綜合,,本系統(tǒng)采用該格式。需要特別指出的是,,上述格式中的數(shù)據(jù)長度都是假定PKTCTRL1中的CRC_AUTOFLUSH沒有被使能,,否則,所有格式中的包長都不能超過63/64B,,而且,,在PKTCTRL1中的APPEND_STATUS被使能時(shí),,所有格式中的數(shù)據(jù)長度都應(yīng)減2。
??? 在接收端把包中的數(shù)據(jù)放入Rx FIFO之前,,會自動(dòng)進(jìn)行前導(dǎo)碼,、同步字、長度,、地址(可選)和CRC校驗(yàn)(可選)過濾,,對不滿足要求的包,會自動(dòng)丟棄,,這大大減輕了MCU的負(fù)荷,。為了提高數(shù)據(jù)傳輸?shù)臏?zhǔn)確率,建議使能前向糾錯(cuò)編碼(FEC)和數(shù)據(jù)白化功能,。
2.2 MCU的編程要點(diǎn)
??? 由于引入了交叉棒的設(shè)計(jì),,所以與其他類型的MCU相比,該處理器的端口I/O" title="I/O">I/O方式配置比較復(fù)雜,??砂聪铝胁襟E對端口I/O方式進(jìn)行初始化:
??? (1)由端口輸入方式寄存器PnMDIN配置端口引腳的輸入方式(模擬或數(shù)字)。
??? (2)由端口輸出方式寄存器PnMDOUT配置端口引腳的輸出方式(漏極開路或推挽),。
??? (3)由端口跳過寄存器PnSKIP選擇應(yīng)被交叉開關(guān)跳過的那些引腳,。
??? (4)由端口I/O交叉開關(guān)寄存器XBR0、XBR1,、XBR2將引腳分配給要使用的外設(shè),。
??? (5)使能交叉開關(guān)(XBARE=1)。
??? 本文介紹的無線手持設(shè)備,,成本低,、開發(fā)技術(shù)成熟、功耗低,、接口豐富,、電源選擇靈活、功能適用,,具有很高的性價(jià)比,。實(shí)驗(yàn)結(jié)果表明,在樓宇內(nèi)的有效接收距離為35m左右,,誤包率低于1%(115.2kb/s),,完全能滿足中小型餐館的使用要求。如果還要再增加發(fā)射距離,,可考慮在射頻收發(fā)單元增加功放,。同時(shí),由于C8051F340內(nèi)部集成了溫度傳感器和多達(dá)20路(48腳封裝)的10位AD輸入腳,,經(jīng)過適當(dāng)?shù)母膭?dòng)就可適用于其他應(yīng)用場合,,例如RFID,、工業(yè)監(jiān)控等。因此,,該方案有較大的推廣價(jià)值和廣闊的市場前景,。
參考文獻(xiàn)
[1] C8051F34X User′s Manual.Silicon Laboratories Inc,2005.
[2] CC1100 User′s Manual.Texas Instruments.http://www.ti.com.
[3] LTC3455 data sheet.www.linear.com.
[4] UC1610 data sheet.www.adultpdf.com.
[5] AT25F2048 data sheet.www.atmel.com.
[6] 童長飛.C8051F系列單片機(jī)開發(fā)與C語言編程.北京:北京航空航天大學(xué)出版社,,2005.

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