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