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