在布線繁雜、不方便或不允許布線的情況下,人們都希望能通過短距離無線通信方案來解決。常見的應用有RFID、無線抄表、無線餐飲點菜系統、無線監控等。隨著射頻通信技術和相關產品的日趨成熟以及人們生活水平和要求的不斷提高,餐飲行業的信息化建設方興未艾。餐館服務員手中的點菜器是餐飲點菜系統的數據採集部分,它與基站的通信是無線方式。本文介紹一種適用於中小餐館的普及型無線點菜手持終端設備(經適當改動可用於其他領域),它採用高性能、低價位、低開發成本的C8051F340單片機作為MCU,以Chipcon公司新推出的一體化無線收發晶元CC1100為射頻收發器,工作在免許可證的ISM(工業、科研及醫療)頻段的433MHz。
1 硬體設計
系統組成框圖如圖1所示。它主要由MCU控制單元(控制各可編程晶元、處理輸入和輸出信號)、射頻收發單元(射頻信號的調製與解調、發射與接收和對數據進行打包與解包等)、鍵盤與LCD顯示單元(信息的輸入和顯示)、存儲器單元(存放漢字型檔和菜單資料庫)、UART和USB介面單元(與PC機的通信、提供充電電源)、電源管理單元(為系統提供各種類型的電壓、充電、外接電源的切換等)等組成。
1.1 MCU單元
C8051F340(以下簡稱MCU)是一款具有全速USB功能的混合信號Flash微控制器,其內置256kB+4KB的RAM和64KB的Flash存儲器;精確校準(0.25%)的12MHz內部振蕩器(工作時外部不必接晶振),處理速度可達48MIPS;基於JTAG介面的非侵入式在系統調試介面等。其功能和性能完全滿足設計要求。
1.2射頻收發器單元
CC1100是Chipcon/TI公司力推的一款性價比“最高”的射頻單片收發器晶元,它體積小(00pins,QLP 4x4mm)、接收靈敏度高(-110dBm/1.2kbps)、速率可編程(1.2kb/s~500kb/s)、工作電壓低(1.8V~3.6V)、功耗低(15.4mA/433MHz/1.2kb/s,1.8uA的待機電流,待機模式下的啟動時間僅為0.3ms)、在所有頻段輸出功率高達+10dBm、高效的SPI介面、數字RSSI(接收信號強度指示)輸出、無線喚醒(WOR)功能等。它的工作頻率為300MHz~1000MHz。
考慮到高頻干擾,該單元單獨做一塊PCB板,並用金屬罩對其進行電磁屏蔽,通過一個7針的連接器與底板相連,如圖2所示。GDO0與MCU 的P0.7相接,用於指示是否已完整地接收了一個數據包, 它可作為MCU的外部中斷源信號。在預設情況下,GDO0會輸出一個頻率為晶振頻率(192Hz)的方波,這可作為在調試時判斷CC1100是否正常工作的依據。SCLK(串列時鐘)、SO(串列輸出)、SI(串列輸入)、CSn(片選)分別與MCU的P0.0、P0.1、P0.2和P0.6相接, 實現MCU與CC1100的SPI介面相連。MCU對CC1100的配置、控制和數據收發都通過該SPI介面進行。在設計PCB時要讓晶振與晶元引腳盡量靠近,並用地線把時鐘區隔離開,晶振外殼接地並固定,元件都使用SMT(表帖式)元件,以減少過孔和體積。Vcc為3.3V。C4、C5、C6和L3、L4組成一個非平衡變壓器,用於在差分和單端RF(射頻)信號之間進行變換,C1、C2、C3和L1、L2組成一個LC濾波器, 它與非平衡變壓器一起實現與50Ω的天線相適配。電阻R1用於為CC1100的偏壓設置一個精準的參考電流。DS1用於指示模塊上的電源是否正常。
1.3 鍵盤和LCD 顯示單元
鍵盤包括數字鍵、發射鍵、方向鍵、多功能鍵、電源開/關鍵等,它由一個8行×3列的矩陣和一個獨立的鍵(電源開/關)組成。其中的行線與MCU的數據線(P4口)相連,列線分別與P2.0、P2.1和P2.2相連。軟體在判斷P2口的低3位有變化時,立即讀取P4口的內容,可獲得當前按下的鍵。電源開/關鍵直接與電源管理晶元的啟動/關閉腳相連。
UC1610為具有128×160點陣的4個灰度級偽彩LCD控制器和驅動器,專為超低功耗的手持設備設計,與MCU的介面有並口、SPI、I2C。本系統採用2線I2C匯流排與MCU 的SMBus相連,此時,應把CD、WR0和WR1接地,D0、D3分別與MCU 的SCL、SDA相連,數據線中的其他位接地。對其控制可參考其數據手冊。
1.4 存儲器單元
MCU的片內存儲器已足夠存放程序代碼,但由於要存放漢字型檔和菜庫,所以必須外接一個數據存儲器。此存儲器既要容量大又要封裝小, 因此選擇了ATMEL公司的SPI Flash存儲器AT25F2048。該存儲器容量為2Mbit,8腳貼片封裝,通過4線SPI與MCU連接,數據傳輸率為12Mb/s。可根據數據手冊中的命令格式進行相關的讀寫以及擦除操作。
1.5 UART 和USB介面單元
程序可以通過JTAG介面下載,但像菜單、漢字型檔只能通過UART/USB介面下載。MCU提供2個UART 口,通過外接一個UART-RS232變換的驅動晶元MAX3232, 就可與PC 的串口相連。MCU 內嵌一個USB2.0(設備)控制器,可以直接與PC的USB介面相連。同時,USB 口還提供對設備進行充電的電源。
1.6 電源管理單元
LTC3455是凌特公司針對手持應用新推出的一個完整的單片電源管理解決方案,在4mm×4mm 的24引腳QFN封裝內集成了USB電源管理器、鋰離子電池充電器和雙DC-DC(5V~3.3V和5V~1.8V)轉換器,它把以前需要5個或更多晶元實現的幾個功能結合在一起。對電源進行無縫選擇(3選1),其過程完全是按優先順序自動進行的:5.0V AC適配器→USB電源→電池。在使用適配器或USB電源時,電池充電器被使能,而且器件內部的電源完全由選擇的外部電源供電。電源管理單元電路圖如圖3所示。圖中的CON1與PC的USB 口相接,CON2與電源適配器相接,USBHP用於選擇USB電源的上限電流為500mA。P30用於使能SW2和熱插拔功能,P31用於指示電池的電量,P32用於指示ON腳的狀態,P33用於使能本晶元,SW-VCC用於開啟/關閉輸出電源。
2 軟體設計
軟體的開發環境為keil uVISION3,使用keil C51語言。系統的無線通信部分採用主從結構,從站由手持設備組成,主站由設在廚房的基站組成,工作方式採用主站輪詢、從站監聽方式。為了避免多個從站爭用通道而發生衝突,規定只有主站向某個從站點名時,從站才向主站發送數據。系統軟體主要流程如圖4所示。
2.1 CC1100的編程要點
(1)寄存器訪問
在不同速率下CC1100有不同的配置。為了獲得最佳性能, 有些配置必須經過複雜的計算才能獲得。Chipcon公司提供了SmartRF Studio軟體對有關的寄存器進行最佳配置。針對某一個速率,該軟體會自動提供一組最佳的寄存器配置參數,程序員只需在初始化時把這些配置寫入相應的寄存器即可。配置只能在CC1100處於IDLE狀態下時才能進行。
除了配置操作外,還有讀狀態、發命令和讀/寫Rx/Tx FIFO操作。這些操作有相似的通信格式:head位元組+data(讀和發命令操作除外)位元組。Head由R/W(bit7)、Burst(bit6)和Addr(bit5~0)三部分組成。R/W 標示當前操作是讀1還是寫0;Burst標示當前操作是訪問單個0還是多個1寄存器。但在讀狀態寄存器時是一個例外,雖然每次只能讀一個狀態寄存器,但該位必須為1,原因是狀態寄存器的地址與命令寄存器的地址是重疊的,因此對burst位進行了重定義;bit0~5(Addr)為寄存器的地址。
(2)狀態機
CC1100 內部有一個用於管理各個狀態之間相互切換的狀態機。當前狀態可從狀態寄存器MARCSTATE獲得。狀態轉移圖如圖5所示。命令、內部事件和配置信息決定狀態切換。寄存器MCSM1中的TXOFF_MODE、RXOFF_MODE 決定在完成發送操作、接收一個有效的包后將進入哪一個狀態。需要注意的是,具有省電功效的無線喚醒功能WOR 能使CC1100在SLEEP狀態下周期性地自動轉到IDLE 狀態,然後再自動轉到Rx狀態。但如果在此狀態下沒有數據包可接收,將又回到SLE EP狀態;否則,在接收完數據包之後,下一個狀態將由RXOFF_MODE決定,但不會進入SLEEP狀態, 必須在進入IDLE 狀態時由MCU發送SWOR命令才能再次進入。在SLEEP狀態下,晶振是否繼續工作是由寄存器MCSM0 中的XOSC_FORCE_ON決定的(0:繼續工作,1:停止工作)。在MCU訪問CC1100(CSn=0)時,無論XOSC_FORCE_ON 為何值,晶振將總是工作。
(3)數據包的處理機制
CC1100的特點之一是在收發數據時對包處理的全面支持,包在發送時具有如圖6所示的格式。
前導碼(可選,自動發) (8×n bit) | 同步字(可選,自動發) (16/32 bit) | 數據長度 (8bit) | 地址(可選) (8bit) | 數據 (8×n bit) | CRC-16(可選) (16bit) |
[admin via 研發互助社區 ] 基於CC1100的無線手持終端的設計已經有3084次圍觀
http://cocdig.com/docs/show-post-44661.html