摘 要: 在分析研究紅外線發射器和接收器原理的基礎上,以可編程片上系統PSoC芯片為核心部件,利用PSoC集成開發環境Creator內嵌的固件元件,進行了紅外線通信測控系統的軟件和硬件設計。PSoC是一款以ARM和CPLD兩大功能部件組成的混合處理器。在Creator環境下,固件元件類似于面向對象程序設計的控件,使硬件設計軟件化,與硬件相關的源程序編譯器自動生成。采用PSoC設計的紅外線發送與接收電路具有硬件設計簡單、軟件設計圖形化、可以充分利用PSoC提供的固件元件的優點。PSoC非常適合在通信和測控中應用。
關鍵詞: Creator;PSoC;紅外線通信;元件;固件
紅外線通信由于結構簡單、成本低,在家用電器、儀器儀表、工業控制中得到了廣泛的應用。實現紅外線通信的方案很多,但主要是由專有集成電路和單片機實現兩種。由專用集成電路實現的紅外線通信主要是各種遙控器,但是它難以和單片機接口,應用的靈活性差。單片機實現的紅外線發射器與接收器能方便地與其他電路模塊連接組成應用系統,在各種測量和控制系統中有大量應用。本文介紹一種由特殊的單片機,即可編程片上系統PSoC組成的紅外線通信測控系統的應用實例。PSoC5是由Cypress公司生產的ARM Cortex-M3和CPLD兩大部分組成的芯片。它以固件元件的模式提供了許多模擬和數字功能單元,在集成開發環境Creator的支持下,這些功能單元和元件在畫板上放置、連接、引腳定義并進行屬性配置形成設計原理圖,這個原理圖的功能由CPLD實現并與ARM微處理器連接。Creator的編譯器將各個元件生成其對應的C語言文件,開發者只需在C語言框架程序中修改或編寫中斷、DMA和main程序即可完成軟件設計。這種圖形化編程方法不需要開發者了解PSoC芯片的底層硬件結構,編寫的代碼非常少,降低了開發的技術難度[1]。本設計所采用的PSoC實施方案對其他嵌入式設計也具有一定的指導作用。
1 紅外線通信測控系統構成
紅外線通信測控系統的結構如圖1所示。發送電路的電阻R1為510 ?贅,R2為10 ?贅,晶體管T1為9013。主機可以是任何帶有串行接口的計算機或嵌入式裝置,通過串行接口將數據傳送到PSoC或接收PSoC的數據。在發送端,PSoC將直接連接模擬量和數字量,串口接收的數據通過紅外線發射電路發送出去。在接收端,一體化接收頭輸出的信號送到PSoC,PSoC接收到一幀完整的信息后,處理后通過串行接口送到主機,也可以直接輸出模擬量和數字量,并在LCD顯示出來[2]。
2 紅外線通信測控系統固件元件原理圖設計
紅外線通信測控系統發送和接收端電路都使用了多個固件元件,受篇幅限制,結合發射和接收電路的原理敘述,只對與發射和接收密切相關的幾個元件做詳細介紹,了解和掌握PSoC元件的屬性設計及使用方法。
2.1 紅外線通信測控系統發射電路
紅外線通信測控系統的發送端固件元件原理圖如圖2所示。外部的傳感模擬信號由引腳Pin_4輸入,經程控增益放大器PGA放大后,送入模數轉換器ADC轉換成數字量,轉換結束產生isr_2中斷,在中斷子程序中將結果讀入ARM處理器。外部連接的開關量通過引腳Pin_2和 Pin_3接入狀態寄存器Status_Reg,外部主機的控制數據經串行接口UART被ARM處理器接收。將上述數據組裝成發送的4 B 32 bit幀信息,第1字節高4位是設備碼,低4位是命令碼,第2字節是發送的開關量,第3和4字節是16 bit模擬量。紅外線通信測控系統發送端涉及的元件有多個,篇幅所限,只介紹與通信相關的幾個元件。
首先介紹脈沖寬度調制元件PWM[3],要使用的元件必須進行屬性配置,PWM的輸入時鐘由時鐘元件Clock_1提供,頻率設置為1 MHz。PWM的屬性配置如圖3所示。由通用數字塊UDB實現PWM元件,分辨率為16 bit,因為紅外線通信傳送的是頻率為38 kHz的調制脈沖波,所以PWM的周期為26 μs,為了使輸出波形占空比為1:1,PWM的比較值設置為13 μs,比較類型設置為Less。當然,在實際使用中可以將占空比調整為1:3、1:4等以達到增加發射距離和省電的目的。這樣,PWM元件啟動后,就能在PWM端輸出連續的方波。定時器Timer的屬性配置如圖4所示,模塊由PSoC內部的UDB實現,分辨率為24 bit,因為紅外線通信的數據0由560 μs高電平和560 μs低電平組成,數據1由560 μs高電平和1 680 μs低電平組成,所以設置定時器周期為560 μs,并且在定時器終端計數TC時產生中斷。
進行紅外線通信的數據發送,首先發送啟動碼,啟動碼由9 ms的高電平和4.5 ms的低電平組成,接著發送由0或1組成的32 bit數據碼。PWM和Timer啟動后,當有數據傳輸時,將Control_Reg_2和Control_Reg_1寄存器置1,Pin_1端輸出38 kHz方波。當Timer產生16次isr_1中斷(9 ms時間到),將Control_
Reg_1置0,Pin_1端無脈沖輸出,當Timer產生8次isr_1中斷(4.5 ms時間到),啟動碼發送完畢。接著發送32 bit數據,先發送560μs的高電平,將Control_Reg_1置1,Pin_1端輸出38 kHz方波。當Timer產生1次isr_1中斷(560 μs時間到),將Control_Reg_1置0,Pin_1端無脈沖輸出,直到Timer產生1次(如果數據是0)或3次(如果數據是1)isr_1中斷,直至將32 bit數據發送完畢[4-5]。
2.2 紅外線通信測控系統接收電路
紅外線通信測控系統的接收端固件元件原理圖如圖5所示。將寄存器Control_Reg_1置1,紅外線接收頭輸出的信號通過Pin_1引腳接到定時器Timer的捕獲端capture,在Timer的屬性配置中,下降沿捕獲,捕獲產生中斷,設置分辨率為32 bit,周期為4 294.967 s。當捕獲發生后,將前次與本次捕獲值相減,如果接近13.5 ms,就找到了本次數據傳輸的啟動碼,繼而接收32 bit數據碼。如果兩次捕獲值的差接近1.12 ms,接收的這位是0,如果兩次捕獲值的差接近2.24 ms,接收的這位就是1。接收到32 bit數據在LCD顯示出來,根據第1字節低4位功能碼,確定是進行本地控制還是經過串行接口UART傳輸給上位機。如果是本地控制,則將接收的第2字節輸出到控制寄存器Control_Reg_2,第3字節輸出到數模轉換器VDAC8_1[6]。
3 紅外線通信測控系統應用程序設計
在Creator開發環境支持下,編譯器自動生成了固件元件的C語言源代碼。但是,中斷子程序和main子程序僅提供了程序框架,子程序內容需要開發者根據固件元件原理圖所要完成的任務來編寫。在工作空間瀏覽區找到元件的源程序,打開后在編輯區找到中斷子程序框架,在里面嵌入應用的源代碼即可。在main主函數中需要對使用的元件進行初始化和啟動(有的元件不需要),根據應用程序流程調用元件的子程序和函數。紅外線通信測控系統的發送與接收主程序流程圖如圖6和圖7所示。
利用PSoC強大的圖形化集成開發環境Creator提供的固件元件實現紅外線通信測控系統,通過簡單的軟件設計實現硬件電路是一種值得重視和推廣的嵌入式系統開發方法。該設計能可靠地將發送端數據送到接收端,實現控制功能或與其他設備的通信。
參考文獻
[1] 葉朝輝,華成英.可編程片上系統(PSoC)原理及實訓[M].北京:清華大學出版社,2008.
[2] 余成波,謝東坡.網絡化測控技術與實現[M].北京:高等教育出版社,2009.
[3] Cypress MicroSystems,Inc.CY8C55FamilyDatasheet[EB/OL].(2011-01-05)[2011-04-02].http://www.cypress.com/?rID=37581.
[4] 錢敏,曹云鵬,章敏,等.基于FPGA/HDL的紅外遙控接收信號解碼器設計[J].通信技術,2009,42(8):219-224.
[5] 張仁儉.基于89C2051單片機的紅外遙控裝置及應用[J].航天制造技術,2005(3):21-23.
[6] 韓喜春,高旭東,張春艷.基于PSoC的通用計數器設計[J].黑龍江工程學院學報,2011,25(3):48-52.