基于nRF905的LED屏無線通信設計與實現
摘要:針對采用芯片nRF905的LED屏無線通信,分別給出了上位機和下位機的系統框圖,分析系統的功耗,比較無線模塊和串口通信的通信速率,驗證系統的可行性,設計串口通信協議。為保證數據質量,設計了數據通信協議,針對串口數據的nRF905分包轉發,設計了無線芯片通信協議。例舉了狀態機的5種狀態,介紹狀態間的轉換條件,巧妙地編程設計了通信數據的定時器檢查,論述了基于狀態機的嵌入式單片機軟件編程。
關鍵詞:nRF905;單片機ATmega16A;可行性分析;狀態機
現行市場上的LED屏,多采用異步串口、TCP/IP接口等有線和GPRS無線進行通信。對于裝修計劃中的LED屏,即使提前布線或預留線纜空間,在線纜損壞或調試LED屏還是有諸多不利條件。技術成熟的GPRS無線模塊,價格昂貴,不適用于大眾場合。針對普遍使用的串口通信控制的LED屏,本文介紹了采用nRF905芯片為核心的硬件電路,論述了無線通信系統中的功耗估計、速率適配、串口與無線的通信協議設計和嵌入式單片機的軟件設計,實現單片機控制串口的無線通信。
1 硬件設計
1.1 硬件總體框圖
硬件框圖如圖1和圖2所示。圖1為上位機框圖,電路板上的單片機收到計算機發來的控制數據,通過無線模塊轉發。圖2為下位機框圖,單片機將無線模塊收到的數據,通過串口發給LED屏的電路控制板。LED屏回復數據的傳輸方向正好相反。
采用ProtelDXP繪制電路原理圖和雙面PCB板,使用JTAG mk II在AVR Studi04下編寫基于單片機的嵌入式軟件,采用GCC編譯器進行編譯連接。
1.2 電路設計
(1)單片機ATmega16A
采用芯片LM1117將DC 9 V穩壓到DC 3.3 V,對單片機ATmega16A、芯片nRF905、芯片MAX3232進行供電。串口通信采用芯片MAX3232進行邏輯電平的轉換。系統采用高性能、低功耗的8位AVR微處理器ATmega16A單片機。該單片機具有16 KB的系統內可編程FLASH、512 B的E2PROM和1 KB的SRAM,供嵌入式軟件使用;在線調試的JTAG端口,豐富了系統的調試手段;獨立的定時器和可編程的串口,加強了系統的功能。單片機ATmega16A上的SPI接口,可保證無線芯片nRF905的無縫連接。
(2)無線芯片nRF905
NORDIC公司的無線芯片nRF905采用高效的GFSK調制,使用開放的ISM頻段,工作速率可達50 Kb/s,收發模式切換時間短,功耗低,內置硬件CRC校驗和點對多點的通信地址控制,這些優點特別適合工業控制場合。
1.3 可行性分析
1.3.1 通信速率
nRF905無線收發芯片的最高工作速率50 Kb/s。PC機端的控制軟件可以設置串口的工作速率,典型波特率設置為9 600 b/s或115 200 b/s。串口的波特率的每個字節加上起始位、停止位和奇偶校驗位,經計算,串口工作速率小于無線芯片的工作速率,因此,可以采用無線芯片nRF905轉發串口數據進行通信。
1.3.2 功耗估計
(1)單片機ATmega16A的耗散功率條件:溫度,25℃;單片機工作晶振:1 MHz;工作電壓,3.3 V。
激活模式:功率P=0.6×3.3=1.95 mW
空閑模式:功率P=0.2×3.3=0.66 mW。
(2)芯片MAX232的耗散功率工作電壓:V=3.3 V。
最大工作電流:I=1 mA。
典型工作電流:I=0.3 mA。
則最大功耗:P=VI=3.3 mW。
典型功耗:P=W=0.99 mW。
評論