新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 智能家居系統(tǒng)數(shù)字顯示終端設(shè)計方案

智能家居系統(tǒng)數(shù)字顯示終端設(shè)計方案

作者: 時間:2013-08-06 來源:網(wǎng)絡(luò) 收藏

2 的實現(xiàn)

  處理器選用.是一款基于ARM Cortex-M3 內(nèi)核的處理器, 集成了USB2.0 功能, 包括USB 主機、USB 從機和USBOTG, 擁有512 KB 的Flash 和64 KB 的SRAM.無線模塊選用的是ZICM2410P0-1 模塊。顯示模塊選用DMT32240T035_01WN 模塊。數(shù)據(jù)存儲模塊選用4 GB 的Flash 存儲器, 也可升級為16 GB 的存儲空間。因處理器已集成OTG 功能, 所以由處理器和USB 收發(fā)器芯片ISP1302 共同組成數(shù)據(jù)傳輸結(jié)論。

  導航鍵具有上下左右導航和選擇鍵。電源部分選用可通過USB 接口充電的蓄電池(5 V~500 mA), 電池容量最小為600 mA/h, 全功能模式供電24 h,休眠模式供電240 h.的軟件部分是由μCOS-II 實現(xiàn)。

  2.1 數(shù)字顯示終端的硬件實現(xiàn)

  數(shù)字顯示終端(見圖2) 由6 部分組成, 其中主要是無線模塊和數(shù)據(jù)傳輸接口的實現(xiàn)。

  1) 無線模塊的實現(xiàn)。無線模塊是基于ZiGBee技術(shù)的, 該技術(shù)是一種在900 MHz 及2.4 GHz 頻段, 近距離、低復雜度、低功耗、低數(shù)據(jù)速率、低成本的雙向無線通信技術(shù)。它由ZICM2410P0-1 芯片和外圍電路組成(包括上電復位電路和工作指示電路)。

  ZICM2410 芯片包括多個通用I/O 引腳、定時器、UART 和SPI 等, 而且還有硬件語音編解碼器,獨有的IIS/SPI/UART 音頻輸入輸出接口, 擴展出500 KB/s 或1 MB/s 的無線傳輸速率, 通過PCB 走線構(gòu)成天線, 103 dB 的射頻鏈路預算, 1.5 V 時RX靈敏度為-97 dB/m, 1.5 V 時射頻TX 功率為+6 dB/m.在外圍電路的設(shè)計中, 通過ZICM2410 的UART與 處理器連接, 為了保證程序的穩(wěn)定性和射頻性能, 采用了復位芯片CAT809E, 無線模塊采用F 型天線拓撲結(jié)構(gòu), 支持全向輻射模式。為了保證天線的性能發(fā)揮, 數(shù)字顯示終端的主板上要有足夠多的接地面, 并且不要在模塊的天線下方布線,確保PCB 走線和其他元件遠離天線。

  2) 數(shù)據(jù)傳輸接口的實現(xiàn)。數(shù)據(jù)傳輸接口的電路主要是由處理器芯片LPC1758 和USB 收發(fā)器芯片ISP1302 組成, 接口插頭選用Mini-A 插頭。處理器LPC1758 集成了USB2.0 功能, 支持OT 模式, 數(shù)據(jù)傳輸接口電路。

  LPC1758在設(shè)計USB OTG接口電路, 需要外接1個USB收發(fā)器ISP1302,LPC1758和ISP1302通過I2C總線連接通信,LPC1758內(nèi)部的收發(fā)器負責控制USB信號切換, 而ISP1302 負責實現(xiàn)OTG 功能。此時,LPC1758內(nèi)部的收發(fā)器在VP/VM模式下工作。

  3) 其他部分的硬件實現(xiàn)。數(shù)字顯示終端其他部分還包括顯示模塊、數(shù)據(jù)存儲模塊、電源部分和用戶導航鍵。DMT32240T035_01WN 顯示模塊集成的功能非常齊全, 它通過RS232 直接和處理器LPC1758 連接, 但在電源的處理上要確保最終接到顯示模塊上的電壓不低于5 V.數(shù)據(jù)存儲模塊選用KFW4G16Q2M-DEB6 NAND FLASH.用戶導航鍵采用普通薄膜式按鍵。電源部分選型比較重要, 作為數(shù)字顯示終端的能量來源, 不僅要滿足顯示模塊的電壓5~6 V, 電流不低于130 mA, 而且能接受USB接口充電, 電池容量不低于600 mA/h.

  2.2 數(shù)字顯示終端的軟件實現(xiàn)

  數(shù)字顯示終端的操作系統(tǒng)選用μCOS-II 實時操作系統(tǒng)。它是一種簡單高效、源代碼公開的實時嵌入式操作系統(tǒng), 具有良好的擴展性和可移植性, 被廣泛應用到各種嵌入式處理器上。

  μC/OSII 的核心源代碼不用修改, 移植中需要修改的是涉及處理器的OS_CPU_C.C, OS_CPU_A.

  ASM, OS_CPU.H 三個文件。

  1) OS_CPU.H 文件包含μC/OSII 所需要的常量、宏和自定義類型等。

  OS_CPU.H 定義的數(shù)據(jù)類型。在這次移植中μC/OSII 重新定義了數(shù)據(jù)類型。

  typedef unsigned char BOOLEAN;

  typedef unsigned char INT8U;

  typedef signed char INT8S;

  typedef unsigned short INT16U;

  typedef signed short INT16S;

  typedef unsigned int INT32U;

  typedef signed int INT32S;

  typedef float FP32;

  typedef double FP64;

  typedef unsigned int OS_STK;

  typedef unsigned int OS_CPU_SR.

  不同處理器的堆棧增長方向是不一樣的,LPC1758 的堆棧是從高地址往低地址增長的,OS_STK_GROWTH設(shè)為1, 程序為:

  #define OS_STK_GROWTH 1.

  2) OS_CPU_C.C文件。在OS_CPU_C.C定義的C函數(shù)中,OSTaskStkInit()函數(shù)與處理器相關(guān),所以移植代碼需要修改該函數(shù)。其程序為(初始化任務時調(diào)用此函數(shù)初始化任務使用的堆棧)。

  OS_STK * OSTaskStkInit (void (*task) (void

  *p_arg),void *p_arg,OS_STK *ptos,INT16U opt)

  {

  OS_STK *stk;

  (void) opt; //防止編譯警告

  stk=ptos; //裝載棧頂指針, 即堆棧數(shù)組最后的地址模擬中斷發(fā)生的堆棧情況

  *(stk)=(INT32U)0x01000000L; //xPSR

  *(stk)=(INT32U)task; //PC, 任務入口

  *(stk)=(INT32U)0xFFFFFFFEL; //R14(LR)

  *(stk)=(INT32U)0x12121212L; //R12

  *(stk)=(INT32U)0x03030303L; //R3

  *(stk)=(INT32U)0x02020202L; //R2

  *(stk)=(INT32U)0x01010101L; //R1

  * (stk) =(INT32U)p_arg; //R0, 輸入?yún)?shù)p_arg 模擬任務進程, 保存其他寄存器到堆棧

  *(stk)=(INT32U)0x11111111L; //R11

  *(stk)=(INT32U)0x10101010L; //R10

  *(stk)=(INT32U)0x09090909L; //R9

  *(stk)=(INT32U)0x08080808L; //R8

  *(stk)=(INT32U)0x07070707L; //R7

  *(stk)=(INT32U)0x06060606L; //R6

  *(stk)=(INT32U)0x05050505L; //R5

  *(stk)=(INT32U)0x04040404L; /R4

  return(stk);

  }



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉