馬玉春,陸 華
(瓊州學院海南省嵌入式系統(tǒng)重點實驗室,海南三亞572022)
噴墨打印機采用非擊打的工作方式,突出的優(yōu)點是體積小、操作簡單方便、打印噪音小、使用專用紙張時可以打印出與照片相媲美的圖片。所以,研發(fā)噴墨打印機驅動程序,是制造自主知識產權的噴墨打印機的基礎,也是制造以噴墨打印機作為輸出部件的設備的重要基礎。
對市面上比較流行的壓電式噴墨打印機進行了分析,測試并繪制出壓電式噴墨打印機的工作時序圖,剖析其邏輯關系,在此基礎之上,使用STM32F105開發(fā)板作為硬件平臺,以IAR Embedded Workbench For ARM 5.40作為軟件開發(fā)工具,開發(fā)出壓電式噴墨打印機的驅動程序,實現了對壓電式噴墨打印機噴墨頭噴墨進行控制的功能,并通過了測試,表明達到了預期的效果。
壓電式噴墨打印機準備進行打印工作時,首先通過上位機控制蠕動泵,將墨盒中的墨水按照打印的需求,以不同的比例,經過過濾器后抽到打印噴頭中,同時再通過上位機控制壓電陶瓷驅動電源的工作,使其能夠根據用戶的需要控制打印頭的運動和噴射行為,然后打印機噴頭將不同顏色的墨水噴射到一個盡可能小的點上,最后大量這樣的點便形成了不同的圖案和圖像。壓電式噴墨打印機工作的基本原理如圖1所示。
圖1 壓電式噴墨打印機工作原理圖
圖2 噴墨打印機噴墨示意圖
壓電式噴墨具體的工作過程是將許多小的壓電陶瓷放置到壓電式噴墨打印機的打印頭噴嘴附近,利用它在電壓的作用下會發(fā)生形變的原理,適時地加上電壓,壓電陶瓷隨之產生伸縮使噴嘴中的墨汁噴出,在輸出介質表面形成圖案。壓電式噴墨打印機噴墨頭噴墨的過程如圖2所示。
2.1 時序圖的繪制由于打印機內部的工作流程對于用戶來說是透明的,用戶只能通過測試打印機,才能了解打印機內部的工作流程。本文繪制時序圖采用的方法如圖3所示。首先將邏輯分析儀與打印機主板上的測試點連接起來,再用邏輯分析儀上的USB數據線與PC機連接,然后在PC機上安裝邏輯分析儀軟件,最后起動打印機,在PC機上運行軟件并進行數據采樣。
2.2 邏輯關系分析圖4所示為測試出來的壓電式噴墨打印機工作時序圖,其中PC0-9對應C端口數據寄存器的第0位到第9位,打印機噴墨頭的控制數據由這10位表示,PB0為PC0-9的同步信號,每隔一個下降沿,就將控制數據寫入到C端口數據寄存器中,PB0又做為PE0的同步信號,每隔兩個下降沿,PE0信號發(fā)生一次變化,同時PE0又做為PD8-15的同步信號,PD8-15對應D端口數據寄存器的第8位到第15位,PD8-15為輔助控制信號,輔助噴墨頭噴墨。
圖3 測試壓電式噴墨打印機工作的方法示意圖
圖4 壓電式噴墨打印機工作時序圖
3.1 硬件開發(fā)平臺使用的硬件開發(fā)平臺為STM32F105開發(fā)板,它是STM32系列中的增強版本。STM32F105開發(fā)板是基于ARM Cortex-M3內核,專為要求高性能、低成本、低功耗的嵌入式應用開發(fā)而設計的。該系統(tǒng)主要由四個驅動單元和四個被動單元組成。四個驅動單元分別為:ARM Cortex(TM)-M3內核、DCode總線、系統(tǒng)總線、通用DMA;四個被動單元分別為:內部SRAM、內部閃存存儲器、FSMC、AHB到APB的橋。STM32F105開發(fā)板的系統(tǒng)結構框架如圖5所示。
圖5 STM32F105開發(fā)板的系統(tǒng)結構圖
動單元分別為:ARM Cortex(TM)-M3內核、DCode總線、系統(tǒng)總線、通用DMA;四個被動單元分別為:內部SRAM、內部閃存存儲器、FSMC、AHB到APB的橋。STM32F105開發(fā)板的系統(tǒng)結構框架如圖5所示。
3.2 開發(fā)板I/O端口I/O端口結構體定義中的GPIO_Pin成員對應的是I/O端口的針腳,GPIO_Speed成員對應的是I/O端口的輸出速率,GPIO_Mode成員對應的是I/O端口輸出模式。其源代碼如下所示。
與這個結構體密切相關的是GPIO_Configuration函數,該函數首先定義一個GPIO_InitTypeDef類型的GPIO_InitStructure結構體,接著調用RCC_APB2PeriphClockCmd函數使能I/O端口的時鐘,然后是結構體成員的賦值,最后調用GPIO_Init函數初始化I/O端口。
3.3 開發(fā)板定時器定時器結構體定義中的TIM_Prescaler成員對應的是定時器的預分頻值,TIM_CounterMode成員對應的是定時器的計數方式,TIM_Period成員對應的是定時器計數最大值,TIM_ClockDivision成員對應的是定時器的時鐘分割值,TIM_RepetitionCounter成員對應的是定時器的重復計數值。其源代碼如下所示。
與這個結構體密切相關的是TIM_Configuration函數,該函數首先定義一個TIM_TimeBaseInitTypeDef類型的TIM_TimeBaseStructure結構體,接著調用TIM_DeInit函數復位定時器TIM2,然后是結構體成員的賦值,再調用TIM_TimeBaseInit函數初始化定時器,最后調用TIM_ClearFlag函數清除定時器溢出中斷標志,調用TIM_ITConfig函數允許定時器2產生溢出中斷,調用TIM_Cmd函數允許定時器2計數。
3.4 軟件開發(fā)平臺采用了IAR Embedded Workbench For ARM 5.40 軟件開發(fā)平臺,該軟件是由IAR Systems公司提供,IAR Systems公司是全球領先的嵌入式系統(tǒng)開發(fā)工具和服務的供應商。它最著名的產品是C編譯器-IAR Embedded Workbench,支持眾多知名半導體公司的微處理器。許多全球著名的公司都在使用IAR SYSTEMS提供的開發(fā)工具,用以開發(fā)他們的前沿產品,從消費電子、工業(yè)控制、汽車應用、醫(yī)療、航空航天到手機應用系統(tǒng),應用十分廣泛,功能非常強大。此軟件的5.40版本是比較新的版本,功能比較全,而且支持眾多知名半導體公司的微處理器,其中就包括ARM,開發(fā)板STM32F105的內核是ARM,所以選擇IAR Embedded Workbench For ARM 5.40軟件開發(fā)平臺,是比較好的選擇。
圖6 壓電式噴墨打印機驅動程序流程圖
圖6為壓電式噴墨打印機驅動程序流程圖,此程序以Main函數為入口,然后調用Wait函數等待上微機發(fā)送啟動命令,啟動命令接收之后,分別調用RCC_Configuration函數、GPIO_Configuration函數、NVIC_Configuration函數和TIM_Configuration函數,進行系統(tǒng)初始化、I/O端口的配置、中斷初始化設置和定時器配置。各種配置完成之后,定時器使用向上重復計數模式計數,當計數值TIM_Period達到定時器設置的最大值71時,定時器產生中斷,接著調用中斷處理函數,如果中斷處理函數中所有要發(fā)送的數據已經全部發(fā)送到噴墨頭控制芯片中,則將全局變量flag賦值為1,中斷處理完之后,判斷全局變量flag是否為1,如果為0,則定時器重新計數,否則程序運行結束,最后壓電式噴墨打印機停止工作。
程序設計完成之后,運行程序,測試自主研發(fā)的壓電式噴墨打印機。測試方法如圖3所示。將邏輯分析儀軟件采樣得到的數據導入到Excel中,通過分析導入到Excel中的數據,這些數據與程序中發(fā)送的數據是一致的。圖7為從STM32F105開發(fā)板測試出來的數據的折線圖。
啟動自主研發(fā)出來的壓電式噴墨打印機,同時運行本驅動程序。從打印機的打印結果中分析,該驅動程序設計達到了預期的效果。
圖7 測試數據的折線圖
通過分析壓電式噴墨打印機的工作原理,接著測試壓電式噴墨打印機,并繪制出其工作時序圖,剖析其邏輯關系,在此基礎之上利用 STM32F105開發(fā)板和 IAR Embedded Workbench For ARM 5.40開發(fā)工具搭建開發(fā)環(huán)境,完成了壓電式噴墨打印機的驅動程序的研發(fā),實現了對壓電式噴墨打印機噴墨頭的控制。
本文的研究成果有助于那些沒有自主知識產權的支持自己品牌的中小型打印機制造公司,在沒有核心技術支持的情況下,通過此種方法研究打印機的驅動程序,大大地減少了打印機的制造成本,并在一定程度上打破了一些公司在打印機技術上的壟斷。
[1]馬玉春.基于bioscom的嵌入式模塊仿真開發(fā)平臺研究[J].電腦編程技巧與維護,2009,(19):49-51.
[2]張偉.Windows XP下打印機驅動程序的分析與設計[D].西安市:西安電子科技大學,2008.
[3]胡曉明,吳非,劉剛利.壓電式噴墨打印機驅動電源設計[J].信息化縱橫,2009,(15):8-12.
[4]王貝.壓電式噴墨的建模與分析[D].西安市:西安電子科技大學,2009.
[5]STM32(ARM Cortex M3) - 32-bit Microcontrollers - Technical Literature and Support Files[EB/OL].http://www.st.com/mcu/familiesdocs-110.html,2010 -03 -19.