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