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