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