引 言
??? 遠程數據傳輸系統應用廣泛,尤其是在一些特殊的應用場合,監測或者控制對象由于距離較遠或者現場比較危險,只能把采集的數據傳輸到遠離現場的地方進行分析處理,因此需要一種可以進行遠程數據傳輸的嵌入式系統,以便能夠實現在遠處對工作系統的監視、控制和故障排除,避免惡劣的環境對身體造成損害。本系統是通信電纜健康狀況監測系統的一部分,將通信電纜的工作狀況遠程傳輸,從而實現異地監測。本文提出了一種體積小、重量輕、成本低、實施方便,基于LPC2132芯片的,以電話線為數據傳輸媒質的嵌入式應用系統,從硬件和軟件方面對系統的設計進行了詳細說明,并給出具體實現方法。
1 硬件設計
1.1 系統原理
遠程數據傳輸系統由主控LPC2132、Modem芯片73M2901、RS232串口轉換電路組成。LPC2132通過UART0接收通信電纜數據采集儀的數據,進行CRC校驗后通過UARTl發給Modem。LPC2132是Philips公司基于32/16位ARM7TDMI-S內核開發的微控制器。由于LPC2132內嵌64 KB的高速Flash存儲器和16KB片內靜態RAM,具有2個符合16C550工業標準的串行接口,且其中一個包含標準的調制解調器接口信號,因此非常適合用來控制Modem芯片進行遠程數據傳輸。73M2901是TDK公司推出的低功耗、低速、單片式調制解調器,具有很高的集成度,與LPC2132一起可以構成一個輕便小巧的嵌入式遠程終端。
1.2 73M2901芯片簡介
73M2901內置標準的8032微處理器和1個協處理器,因此在處理復雜信號的同時還可以實現多種控制功能。其數據終端采用異步串行傳輸方式,最多町以支持2 400 bps個雙工數據傳送;此外,還支持AT指令集,其主要引腳功能如表l所列。
73M2901由數據終端接口、調制解調部件和模擬終端接口部分構成。
①數據終端接口:主要功能是完成數據終端設備(DTE)與調制解調器之間的連接。73M2901芯片提供的串行數據終端接口包括TXD、RXD、RTS、CTS、DSR、DCD、TXCLK、RXCLK等。
②調制解調部件:核心是調制解調芯片。Modem的絕大多數功能都是由這片大規模集成電路來實現的,包括調制解調過程、擾碼解擾碼過程、信道分割、線路均衡和指示工作狀態等。
③模擬終端接口:包括撥號脈沖電路、振鈴檢測電路和音頻信號通道3部分。通過這部分電路可以將Modem與通信信道連接起來。
◆撥號脈沖電路:摘掛機信號由73M2901/5V的RELAY引腳給出,完成摘掛機動作。當RELAY發出高電平時為掛機,發出低電平時為摘機。
◆振鈴檢測電路:用于檢測電話線送來的鈴流信號。當信道內沒有振鈴信號時,73M290l的RING端為無效的高電平;當振鈴信號來到時,RING變為有效的低電平,完成振鈴檢測。
◆音頻信號通道:模擬信號發送端是73M2901/5V芯片的TXAN和TRAP引腳,提供差分信號輸出。73M290l/5V還提供一個輸入引腳RXA,RXA端是非平衡的模擬輸入端口,接收的音頻信號為單端對地的模擬信號。
模擬接口電路主要功能如下:
◇調制解調器內部不平衡電路與平衡型通信信道之間的轉換;
◇調制解調器內部四線電路與二線通信信道之間的轉換;
◇識別通信信道傳來的交流振鈴信號,并將其轉換成TTL直流電平;
◇撥號時能發出符合規定的脈沖串或雙音多頻信號。
??? 假設LPC2132對儀器發送過來的數據進行校驗之后,要通過73M290l向遠程計算機發送,LPC2132和73M290l作為主叫端,遠程計算機和標準Modem作為被叫端,則數據發送過程為:
??? ①系統初始化,使數據終端就緒信號DTR有效,然后LPC2132向73M290l發出撥號指令,73M2901收到撥號指令后向被叫端Modem發出撥號音,使被叫端Modcm振鈴。振鈴次數達到軟件設置的次數時,Modem將自動應答,進入摘機狀態。
??? ②被叫端摘機后一邊向主叫端發送應答載波,一邊向本端計算機發出DSR信號;然后被叫端計算機便開始監視DCD信號,等待對方載波信號的到來。主叫端73M2901檢測到應答載波以后向LPC2132發出DCD信號,標志著呼叫成功。
??? ③呼叫成功后,主叫端73M2901向LPC2132發出DSR信號;LPC2132收到該信號后,得知線路連接己完全建立,即向73M290l發出RTS信號。73M2901將向被叫端發出載波并回送CTS信號,當主叫端LPC2132收到CTS信號以后,表示握手成功。
??? ④被叫端Modem檢測到主叫端發來的載波信號后就發出DCD信號,通知被叫端計算機數據鏈路已經建立。
??? ⑤數據鏈路建立以后,LPC2132便可以向計算機傳送數據。
??? ⑥LPC2132在數據傳送完畢后向73M2901發出掛機命令,并發出無效的RTS信號;73M2901立即停發載波,并回送無效的CTS信號。被叫端Modem因收不到主叫端發來的載波信號而使DCD信號無效,計算機即向Modem發出掛機指令;Modem掛機后DSR信號無效,應答載波停發。主叫端73M290l因不發載波又收不到載波而使DCD、DSR信號無效。至此,數據鏈路拆除。系統處于待機狀態,等待LPC2132再次要求建立連接。
2 系統軟件設計
2.1 通信模塊
??? 本系統軟件基于μC/OS-II平臺實現,采用ADSl.2集成開發環境調試。整個軟件系統分為2個任務,包括4個模塊:數據隊列模塊、UARTO的串口接收模塊、CRC校驗模塊和UARTl的Modem通信模塊。系統主程序流程如圖3所示,系統的各個任務由μC/OS-II核統一協調分配CPU資源。
??? 在收發數據時,為了平衡通信電纜數據采集儀、LPC2132和73M290l三者間的傳輸速率,本程序使用數據隊列作為數據緩存。數據隊列采用先入先出(FIFO)的方式,其空間大小在項目中的config,h文件中定義。數據空間的地址惟一,且只對應一個數據隊列。數據隊列子程序(queue.c)定義了6個函數.分別為:QueueCreate,建立數據隊列;QueueRead,獲取隊列中的數據;QueueWritc,FIFO方式發送數據;QueueFlush,清空隊列;QueueNData.獲取隊列中數據數目;QuEueSize,獲取隊列空間容量。
??? 由于LPC2132是通過73M2901向遠程設備發送數據的,因此只需要編寫Modem發送子程序。Modem通信子程序包括8個函數,分別為:UARTlInit,初始化UARTl;UARTl_Exception,UARTl中斷服務程序;GeTModemState,獲取Modem的狀態;ModemInit,初始化Modem;ModemWrite,通過Modem發送多個字節數據;ModemCommand,發送Modem命令;ModemDialUp,通過Modem撥號;ModemDialDown,掛斷Modem。系統啟動時需要對UARTl進行向量中斷初始化,即在工程的target.c文件中編寫初始化程序。
??? LPC2132通過UART1發送AT指令控制Modem的工作狀態,然后向MoEdem發送數據。uARTl的具體工作方式為:發送信號量初始值設為發送緩沖的大小,并且關閉發送中斷。發送數據時,用戶任務在信號量上等待,如果發送緩沖未滿,則用戶任務向發送緩沖巾寫入數據。如果寫入的是發送緩沖中的第一個字節,則允許發送中斷,然后從發送緩沖中取出最早寫入的字節輸出至UART1,這個操作又觸發了下一次的發送中斷。如此循環直到發送緩沖中最后一個字節被取走,重新關閉發送中斷。在向UART1輸出的同時,給信號量發信號,發送任務據此信號量計數值來了解發送緩沖中是否有空間。數據發送流程圖如圖4所示。
2.2 CRC校驗模塊
信號在物理信道中傳輸時,線路本身電器特性造成的隨機噪聲、信號幅度的衰減、頻率和相位的畸變、相鄰線路問的串擾以及各種外界因素(開關的跳線、外界強電流磁場的變化和電源的波動等)都會造成信號的失真。在數據通信中,將會使接收端收到的二進制數位和發送端實際發送的二進制數位不一致,從而造成由“0”變成“l”或由“l”變成“O”的差錯。為了把差錯限制在盡可能小的范圍內,在數據的遠程傳送中,廣泛采用循環冗余校驗碼(CRC)。其編碼簡單,誤判率很低,檢錯能力強,占用系統資源少,用軟硬件方式均能實現。CRC的英文全稱為Cyclic Redundancy Check,電是采用給信息碼加上幾位校驗碼的方式來增大整個編碼系統的碼距,增強查錯糾錯能力。
2.3 μC/OS-II在LPC2132上的移植
所謂“移植”,就是使一個實時內核能在其他的微處理器或微控制器上運行。要使同一個內核能適用于不同的硬件體系,就要存內核和硬件之間有一個中間層,即與處理器相關的移植代碼,這部分代碼因處理器而異。大部分μC/OS-II的代碼是用C語言編寫的,因此μC/OS-II的可移植性強。然而,仍需要用匯編語言編寫一些與處理器硬件相關的代碼,這是因為實現μC/OS-II讀/寫處理器寄存器時只能通過匯編語言來宴現。在μC/OS-II中,這部分代碼分成3個文件:OS_CPU.H、IS_CPU_A.ASM和OS_CPU_C.C。因此,把μC/OS-II移植到LPC2132中時需要對上述3個文件進行部分修改。
結 語
LPC2132硬件資源豐富,使得該系統具有體積小、重量輕、成本低等特點;采用了CRC校驗,從而提高了通信的查錯糾錯能力。此外,基于μC/OS-II平臺實現軟件功能,使得該系統運行穩定,維護方便,升級簡單。
評論
查看更多