羊陽 王洪亮 程恒鋒
摘 要:本文介紹了電力系統中常用的EPSON LQ-300K型打印機在嵌入式系統中的具體應用,詳細介紹了打印機與主控制器的接口電路設計,并在實時嵌入式系統μC/OS-II中利用信號量編寫驅動實現字符和圖形的打印。
關鍵詞:LQ-300K;μC/OS-II;信號量;串行接口
隨著嵌入式產品的進一步開發和推廣,嵌入式技術與人們的生活聯系越來越緊密,尤其在測量儀器儀表及繼電保護中使用較多,而在這些場合中往往有對打印機的配置需求,用來打印運行過程中的重要參數及波形信息。
由于在電力系統中的環境較為惡劣,對打印機的要求較高,EPSON公司的LQ-300K型打印機結構簡單、結實、操作方便,適合在長期負荷的惡劣環境中使用。
本文介紹了基于32位嵌入式處理器LPC1788作為硬件平臺,移植實時操作系統μC/OS-II,進而在此基礎上編寫LQ-300K型打印機驅動,實現了字符與圖形的打印功能。
1 打印機接口設計
LPC1788屬于LPC1700系列 Cortex-M3 微控制器,用于處理要求高度集成和低功耗的嵌入式應用。
其操作頻率可達100MHz,具有豐富的外圍接口,包含一個帶 RMII 接口MAC控制器,通過外部PHY芯片擴展一路以太網口通訊接口。
4個全雙工UART,通過RS485轉換芯片實現RS485通信模式,通過RS232轉換芯片實現打印接口。
EPSON LQ-300K型24針針式打印機可提供高質量的打印輸出,設計緊湊、性能高,在高速打印時,10cpi(每英寸字符數)下,可達300 cps(每秒字符數),在各個領域應用廣泛;同時支持一個標準雙向、8位、IEEE1284 Nibble模式支持的并行接口和EIA-232D串行接口,具有32KB緩沖區,當打印機接收到數據時自動切換到相應的接口。
本打印機控制系統由LPC1788處理器通過串口與LQ-300K型打印機相連,主控制器由1路UART通過RS232轉換芯片SP3232擴展出RS232接口,TXD/RXD與打印機RXD/ TXD交叉相連,GND直接相連,因考慮到電力系統應用環境中的情況比較復雜,采用快速光電隔離芯片HCPL-0600對RS232擴展電路進行光電隔離,以提高接口的抗外界干擾能力,硬件接口設計如圖1所示。
2 打印機驅動軟件設計
打印機工作原理主要是通過主控制器將打印數據或控制碼經串口發送至打印機的串行接口,然后經過打印機緩存區,最終完成打印工作。
在實時系統μC/OS-II中,采用中斷方式實現對打印串口的控制,以提高CPU的利用率,在前后臺環境下使用中斷出傳輸時,采用μC/OS-II的信號量機制和LPC7188串行接口中自帶的FIFO組成一套完整的邏輯來協調好底層和應用程序中串口數據的發送和接收。
μC/OS-II提供了5個對信號量進行操作的函數,它們分別是OSSemCreate( )、OSSemPend( )、OSSemPost( )、OSSemAccept( )和OSSemQuery( )。
首先在使用一個信號量之前,要建立該信號量,即調用OSSemCreate( )函數,這里涉及中斷發送和接收,需設置兩個信號量:發送OS_EVENT *UartTSem、接收OS_EVENT *UartRSem。
在接收模式下:當接收FIFO數據達到觸發深度時引發中斷,在中斷函數UART_IRQHandler( )中讀取FIFO中數據放到接收緩存區中,注意將FIFO中數據保留一個字節引發字符超時中斷,完成整幀數據的接收,然后通過調用信號量函數OSSemPost()通知應用層數據接收完成。
在發送模式下較為簡單,根據發送的字節數據在中斷函數UART_IRQHandler( )填充發送FIFO,全部數據發送完后調用OSSemPost()通知應用層數據發送完成。
LQ-300K型打印機的打印主要是通過主控制器和打印機的串口數據交互來完成的,通過以上介紹的ESC/P打印控制碼和串口驅動的實現,通過實際需要進行編程,就能實現在實時系統μC/OS-II下LQ-300K各種格式下的字符和圖形的打印。
參考文獻:
[1] 周立功.深入淺出Cortex-M3—LPC1700(上冊)[M].廣東致遠電子有限公司,233-264.
[2] Jean J.Labrosse.嵌入式實時操作系統μC/OS-II(第二版)[M].北京航空航天大學出版社,166-188.
[3] 顧龍全.發光光度計中打印接口和驅動程序的設計與實現[J].上海師范大學學報(自然科學版),2000,29(4).
作者簡介:
羊陽(1987-),男,漢族,河南駐馬店,碩士,助理工程師,研究方向:電力系統。