航芯方(fang)案(an)分享 | 熱敏打印機(ji)方(fang)案(an)
隨著電子(zi)信息化、自(zi)動(dong)化程度(du)提高(gao),條碼識(shi)別技術的(de)(de)發展(zhan),熱敏打印(yin)機的(de)(de)應用范圍也(ye)在不斷擴大,已從(cong)傳統(tong)的(de)(de)辦公和家(jia)庭傳真(zhen)文檔(dang),快速向商業(ye)(ye)零(ling)售、工業(ye)(ye)制(zhi)造業(ye)(ye)、交通運輸(shu)業(ye)(ye)、物流、金融、彩票、醫療、教育等新興專業(ye)(ye)應用領(ling)域拓展(zhan)。
本文將為大(da)家介紹基于(yu)上海航芯ACM32F403的熱敏打印機設計方(fang)案。
打印(yin)原理(li)
熱敏打印機(ji)的原(yuan)理是(shi),在介(jie)質(zhi)基底上(通常(chang)是(shi)紙)覆上一層熱敏材(cai)料(liao),將(jiang)熱敏材(cai)料(liao)加熱一段時(shi)間(jian)后變成(cheng)(cheng)深色(一般是(shi)黑(hei)色,也(ye)有(you)藍色)。這種化(hua)學反(fan)應(ying)(ying)是(shi)在一定的溫度下進行的。高(gao)溫會加速這種化(hua)學反(fan)應(ying)(ying)。當(dang)溫度低(di)于60℃時(shi),熱敏材(cai)料(liao)需要(yao)經過相當(dang)長,甚至長達幾年的時(shi)間(jian)才能變成(cheng)(cheng)深色;而當(dang)溫度為200℃時(shi),這種反(fan)應(ying)(ying)會在幾微秒內完成(cheng)(cheng)。
熱(re)(re)敏(min)打印(yin)機有選擇(ze)地在熱(re)(re)敏(min)紙(zhi)的(de)確定(ding)位置上(shang)(shang)加(jia)(jia)熱(re)(re),由此就產(chan)生(sheng)了相應(ying)的(de)圖形。加(jia)(jia)熱(re)(re)是由與(yu)熱(re)(re)敏(min)材料相接(jie)觸的(de)打印(yin)頭上(shang)(shang)的(de)一個小電子加(jia)(jia)熱(re)(re)器提供的(de)。加(jia)(jia)熱(re)(re)器排成方點或(huo)條的(de)形式由打印(yin)機進(jin)行(xing)邏輯(ji)控(kong)制(zhi),當被驅動時(shi),就在熱(re)(re)敏(min)紙(zhi)上(shang)(shang)產(chan)生(sheng)一個與(yu)加(jia)(jia)熱(re)(re)元素(su)相應(ying)的(de)圖形。控(kong)制(zhi)加(jia)(jia)熱(re)(re)元素(su)的(de)同一邏輯(ji)電路,同時(shi)也控(kong)制(zhi)著進(jin)紙(zhi),因(yin)而能在整個標簽或(huo)紙(zhi)張(zhang)上(shang)(shang)印(yin)出圖形。
圖(tu)1. 熱敏打印機的原理
使用芯片
本(ben)文(wen)描(miao)述(shu)的(de)熱敏打印機方案,是(shi)基(ji)于上海航(hang)芯ACM32F403系列的(de)MCU進行設(she)計。
ACM32F403芯片采用高性(xing)能內(nei)(nei)核(he),支(zhi)持Cortex-M33和Cortex-M4F指(zhi)令集(ji)。芯片內(nei)(nei)核(he)支(zhi)持一整(zheng)套DSP指(zhi)令用于數字信(xin)號處理(li),支(zhi)持單精度FPU處理(li)浮點數據,同時還(huan)支(zhi)持Memory Protection Unit(MPU)用于提(ti)升應用的安全性(xing)。
ACM32F403系列芯片最(zui)高工作頻率可達(da)180MHz,內嵌(qian)數學硬(ying)件加速,內置最(zui)大(da)512KB的eFlash和最(zui)大(da)192KB SRAM。芯片集(ji)成了(le)一(yi)個(ge)(ge)(ge)12位(wei)多通(tong)(tong)道2M sps高精度ADC、一(yi)個(ge)(ge)(ge)12位(wei)2通(tong)(tong)道的DAC、多達(da)3路運放、2路比較器(qi)(qi),集(ji)成了(le)1個(ge)(ge)(ge)高級(ji)定(ding)時器(qi)(qi),6個(ge)(ge)(ge)通(tong)(tong)用16位(wei)定(ding)時器(qi)(qi),1個(ge)(ge)(ge)通(tong)(tong)用32位(wei)定(ding)時器(qi)(qi),2個(ge)(ge)(ge)基本16位(wei)定(ding)時器(qi)(qi),1個(ge)(ge)(ge)系統看門狗,1個(ge)(ge)(ge)獨(du)立看門狗,一(yi)個(ge)(ge)(ge)低功(gong)耗的實時鐘(RTC),內置多路UART、LPUART、SPI、I2C、I2S、CAN、全速USB等(deng)豐富的通(tong)(tong)訊外(wai)設,內建AES、CRC、TRNG等(deng)算法(fa)模塊。
方(fang)案特點(dian)
?支持藍牙、USB、UART等多種通訊接口的打印方式
?支(zhi)持無任務時自動進入(ru)斷電模式(shi),續(xu)航時間更長
?支持打(da)印高溫(wen)、缺紙和低(di)電量報警
?SPI FLASH存放(fang)字庫,支持在線更(geng)新字庫,可調整字體、大小、粗(cu)細等
?支(zhi)持(chi)MCU和BLE芯片固件在(zai)線升級
設(she)計方案
圖2. 基(ji)于ACM32F403熱敏打印機設計方案框圖
功(gong)能介紹
1.1多接(jie)口打(da)印流程
本方(fang)案可以通過UART、USB和(he)藍牙接(jie)口(kou)接(jie)收(shou)數據,并(bing)通過ACM32F403芯片的Timer,GPIO,ADC、SPI等模塊(kuai)進行熱敏打印(yin)機頭的打印(yin)工(gong)作。
具體流(liu)程如下:
1)通過(guo)UART、USB和(he)藍(lan)牙接(jie)口接(jie)收數據(ju),數據(ju)需要通過(guo)GBK碼的方式(shi)發送,并(bing)存(cun)儲到(dao)芯片內部;
2)將(jiang)每(mei)個字的GBK碼,通過(guo)SPI接口查詢到SPI FLASH上字庫(ku)中(zhong)對應的數據,并傳輸到打印buffer中(zhong);
3)芯(xin)片通過Timer來控制步(bu)進電機運行的速(su)度和打印(yin)機頭(tou)加熱的時(shi)間,通過GPIO來控制加熱使能(neng)和控制步(bu)進電機的前進和后退,ADC來檢(jian)測(ce)打印(yin)機溫度,最終(zhong)完成打印(yin)工(gong)作。
圖3. 多接口打(da)印流程(cheng)
1.2 字庫更新流程
本(ben)方案內部firmware實現了一個UART接收數據(ju),SPI下(xia)(xia)載(zai)數據(ju)的(de)系統,采用類似7816 T=1的(de)數據(ju)格式進(jin)行傳輸(shu),將字(zi)庫的(de)BIN文(wen)件下(xia)(xia)載(zai)到SPI FLASH中,以實現字(zi)庫的(de)下(xia)(xia)載(zai)和(he)更新(xin)。因為片外SPI FLASH大(da)小的(de)原因,默(mo)認只支持24*24大(da)小的(de)字(zi)體(ti)打(da)印,如(ru)果(guo)更換字(zi)體(ti),需(xu)要重新(xin)下(xia)(xia)載(zai)字(zi)庫文(wen)件。
圖4. 字庫下(xia)載流程
本方案支持字庫的更新,可以(yi)(yi)調節打(da)印字體(ti)的字體(ti)、大(da)小,粗細等參數。字庫更新后需要(yao)修改firmware代碼,以(yi)(yi)實現不同字體(ti)的打(da)印。
圖5. 字(zi)體設置參數
1.3 字(zi)庫調用(yong)流(liu)程(cheng)
本方案中(zhong)的SPI FLASH中(zhong)能(neng)存放字體大小為16*16或24*24的字庫,并且有完整的配套firmware代碼(ma)。
具體字(zi)庫調(diao)用流程如下:
1)從(cong)UART、USB或BLE接口(kou)接收需要打印文字的GBK碼;
2)根據GBK碼計算出該(gai)文(wen)字在字庫中(zhong)的內碼;
3)通過SPI接口讀取字(zi)庫中內碼的數(shu)據,數(shu)據長(chang)度根據字(zi)體(ti)大(da)小來定;
4)將讀出的數據(ju)傳輸到打印機頭,完成打印。
圖6. 字庫調用流程(cheng)
1.4 數據打印流程
圖7. 數據打(da)印軟件流(liu)程
圖8. 打(da)印機(ji)芯和步進電機(ji)原理(li)圖
數據打印流程:
1)打印機(ji)開(kai)機(ji)流程;
2)將(jiang)打(da)印數據通過(guo)SPI接口傳輸(shu)到打(da)印機緩存;
3)判(pan)斷是(shi)否是(shi)第(di)一(yi)行,如果是(shi)打開(kai)電機Timer,并前進一(yi)步;
4)判斷(duan)是否(fou)(fou)是最后一行或者是否(fou)(fou)缺紙,如果是進入打印機關機流程;
5)開始(shi)加熱(re),打開加熱(re)Timer,并(bing)等待加熱(re)完成;
6)循環2)~5),直到(dao)打印完(wan)畢。
打印機(ji)開機(ji)流程:
1)將打印機DST(選通脈沖(chong))信號設為低(di)電平;
2)將(jiang)打印機LATCH(數(shu)據鎖存)信號設(she)為高電平;
3)打開熱敏頭邏輯電源;
4)打開熱(re)敏頭加熱(re)電源;
打印機關(guan)機流程:
1)停止(zhi)加熱Timer;
2)關閉熱(re)敏(min)頭加(jia)熱(re)電源;
3)將打印機DST(選通脈(mo)沖)信(xin)號(hao)設為低(di)電平;
4)將打印機LATCH(數據鎖存)信號設為(wei)高電(dian)平;
5)關(guan)閉熱敏頭邏(luo)輯電源。
1.5 電(dian)源控制系統介紹
圖9. 電源控(kong)制系統介(jie)紹
1)供電:系統采用單節鋰電池4.2V或者USB 5V供電;
2)異常:當MCU內部程序跑(pao)飛/死機(ji)時,首先可以按下SW1復位MCU,再不行(xing)可以按住正常開(kai)/關機(ji)鍵(jian),再插入USB線使MCU復位;
3)開機(ji)(ji):系統未通(tong)電時,按住開/關機(ji)(ji)鍵,此時MCU上電,MCU開始(shi)從(cong)eFlash啟動,初始(shi)化(hua)(hua)成(cheng)功后將POWER_ON/OFF信(xin)號置高,雙色燈(deng)中的綠燈(deng)點(dian)亮(InitPass_常(chang)亮、內部鋰(li)電池(chi)充電滿_常(chang)亮),若初始(shi)化(hua)(hua)失敗(bai)(bai)或檢測到異常(chang)/錯誤(比如電池(chi)電量低,外設初始(shi)化(hua)(hua)失敗(bai)(bai)、通(tong)信(xin)不正(zheng)常(chang)等),將雙色燈(deng)中的紅燈(deng)點(dian)亮(Err1_常(chang)亮、Err2_1s閃(shan)(shan)、Err3_快閃(shan)(shan));
4)關機:系統(tong)通電(dian)時(shi),按(an)(an)住開(kai)/關機鍵(jian),Power_Check引腳會(hui)檢測到(dao)一個下降沿,并且接(jie)著會(hui)有持續的低(di)電(dian)平,松開(kai)按(an)(an)鍵(jian)后,再將電(dian)源控制信號拉(la)低(di);
5)正常關機的順序是:先滅燈,然后斷(duan)電機驅動電源(yuan)和(he)外設(she)電源(yuan),再(zai)斷(duan)MCU電源(yuan);
6)PB1為開/關機按鍵(jian)與(yu)系統(tong)喚醒(xing)鍵(jian),SW1為系統(tong)喚醒(xing)按鍵(jian)與(yu)復位鍵(jian),通常(chang)(chang)情況,用戶按一下是要喚醒(xing)系統(tong),長按是正常(chang)(chang)開關機;
7)沒(mei)有打印任(ren)務時(shi),需要關(guan)(guan)閉電機電源(yuan)和外設電源(yuan),來節省鋰電池電量;所以系統經過定時(shi)進入待機前(qian),MCU關(guan)(guan)閉電機驅動電源(yuan)/外設電源(yuan)后(hou),進入待機。
資(zi)源分享
Gitee資源:
ACM32F303對比STM32F103差異說明:
STM32F103標準外設(she)庫(ku)SPL移植說明(ACM32F403):
航芯(xin)MCU軟件HAL庫使(shi)用說明及STM32 API差異說明:
如需(xu)銷售咨(zi)詢,請郵件(jian)至(zhi):