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