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