航芯方案分享 | 熱敏打印機方案
隨著電子信息化,、自動化程度提高,,條碼識別技術(shù)的發(fā)展,,熱敏打印機的應(yīng)用范圍也在不斷擴大,,已從傳統(tǒng)的辦公和家庭傳真文檔,,快速向商業(yè)零售、工業(yè)制造業(yè),、交通運輸業(yè),、物流、金融,、彩票,、醫(yī)療、教育等新興專業(yè)應(yīng)用領(lǐng)域拓展,。
本文將為大家介紹基于上海航芯ACM32F403的熱敏打印機設(shè)計方案,。
打印原理
熱敏打印機的原理是,在介質(zhì)基底上(通常是紙)覆上一層熱敏材料,,將熱敏材料加熱一段時間后變成深色(一般是黑色,,也有藍色)。這種化學(xué)反應(yīng)是在一定的溫度下進行的,。高溫會加速這種化學(xué)反應(yīng),。當(dāng)溫度低于60℃時,熱敏材料需要經(jīng)過相當(dāng)長,,甚至長達幾年的時間才能變成深色,;而當(dāng)溫度為200℃時,這種反應(yīng)會在幾微秒內(nèi)完成,。
熱敏打印機有選擇地在熱敏紙的確定位置上加熱,,由此就產(chǎn)生了相應(yīng)的圖形。加熱是由與熱敏材料相接觸的打印頭上的一個小電子加熱器提供的,。加熱器排成方點或條的形式由打印機進行邏輯控制,,當(dāng)被驅(qū)動時,就在熱敏紙上產(chǎn)生一個與加熱元素相應(yīng)的圖形,??刂萍訜嵩氐耐贿壿嬰娐罚瑫r也控制著進紙,,因而能在整個標(biāo)簽或紙張上印出圖形,。
圖1. 熱敏打印機的原理
使用芯片
本文描述的熱敏打印機方案,是基于上海航芯ACM32F403系列的MCU進行設(shè)計,。
ACM32F403芯片采用高性能內(nèi)核,,支持Cortex-M33和Cortex-M4F指令集。芯片內(nèi)核支持一整套DSP指令用于數(shù)字信號處理,,支持單精度FPU處理浮點數(shù)據(jù),,同時還支持Memory Protection Unit(MPU)用于提升應(yīng)用的安全性,。
ACM32F403系列芯片最高工作頻率可達180MHz,內(nèi)嵌數(shù)學(xué)硬件加速,,內(nèi)置最大512KB的eFlash和最大192KB SRAM,。芯片集成了一個12位多通道2M sps高精度ADC、一個12位2通道的DAC,、多達3路運放,、2路比較器,集成了1個高級定時器,,6個通用16位定時器,,1個通用32位定時器,2個基本16位定時器,,1個系統(tǒng)看門狗,,1個獨立看門狗,一個低功耗的實時鐘(RTC),,內(nèi)置多路UART,、LPUART、SPI,、I2C,、I2S、CAN,、全速USB等豐富的通訊外設(shè),,內(nèi)建AES、CRC,、TRNG等算法模塊,。
方案特點
?支持藍牙、USB,、UART等多種通訊接口的打印方式
?支持無任務(wù)時自動進入斷電模式,,續(xù)航時間更長
?支持打印高溫、缺紙和低電量報警
?SPI FLASH存放字庫,,支持在線更新字庫,,可調(diào)整字體、大小,、粗細等
?支持MCU和BLE芯片固件在線升級
設(shè)計方案
圖2. 基于ACM32F403熱敏打印機設(shè)計方案框圖
功能介紹
1.1多接口打印流程
本方案可以通過UART,、USB和藍牙接口接收數(shù)據(jù),并通過ACM32F403芯片的Timer,,GPIO,,ADC、SPI等模塊進行熱敏打印機頭的打印工作,。
具體流程如下:
1)通過UART,、USB和藍牙接口接收數(shù)據(jù),,數(shù)據(jù)需要通過GBK碼的方式發(fā)送,并存儲到芯片內(nèi)部,;
2)將每個字的GBK碼,,通過SPI接口查詢到SPI FLASH上字庫中對應(yīng)的數(shù)據(jù),并傳輸?shù)酱蛴uffer中,;
3)芯片通過Timer來控制步進電機運行的速度和打印機頭加熱的時間,,通過GPIO來控制加熱使能和控制步進電機的前進和后退,ADC來檢測打印機溫度,,最終完成打印工作,。
圖3. 多接口打印流程
1.2 字庫更新流程
本方案內(nèi)部firmware實現(xiàn)了一個UART接收數(shù)據(jù),,SPI下載數(shù)據(jù)的系統(tǒng),,采用類似7816 T=1的數(shù)據(jù)格式進行傳輸,將字庫的BIN文件下載到SPI FLASH中,,以實現(xiàn)字庫的下載和更新,。因為片外SPI FLASH大小的原因,默認(rèn)只支持24*24大小的字體打印,,如果更換字體,,需要重新下載字庫文件。
圖4. 字庫下載流程
本方案支持字庫的更新,,可以調(diào)節(jié)打印字體的字體,、大小,粗細等參數(shù),。字庫更新后需要修改firmware代碼,,以實現(xiàn)不同字體的打印。
圖5. 字體設(shè)置參數(shù)
1.3 字庫調(diào)用流程
本方案中的SPI FLASH中能存放字體大小為16*16或24*24的字庫,,并且有完整的配套firmware代碼,。
具體字庫調(diào)用流程如下:
1)從UART、USB或BLE接口接收需要打印文字的GBK碼,;
2)根據(jù)GBK碼計算出該文字在字庫中的內(nèi)碼,;
3)通過SPI接口讀取字庫中內(nèi)碼的數(shù)據(jù),數(shù)據(jù)長度根據(jù)字體大小來定,;
4)將讀出的數(shù)據(jù)傳輸?shù)酱蛴C頭,,完成打印。
圖6. 字庫調(diào)用流程
1.4 數(shù)據(jù)打印流程
圖7. 數(shù)據(jù)打印軟件流程
圖8. 打印機芯和步進電機原理圖
數(shù)據(jù)打印流程:
1)打印機開機流程,;
2)將打印數(shù)據(jù)通過SPI接口傳輸?shù)酱蛴C緩存,;
3)判斷是否是第一行,如果是打開電機Timer,,并前進一步,;
4)判斷是否是最后一行或者是否缺紙,,如果是進入打印機關(guān)機流程;
5)開始加熱,,打開加熱Timer,,并等待加熱完成;
6)循環(huán)2)~5),,直到打印完畢,。
打印機開機流程:
1)將打印機DST(選通脈沖)信號設(shè)為低電平;
2)將打印機LATCH(數(shù)據(jù)鎖存)信號設(shè)為高電平,;
3)打開熱敏頭邏輯電源,;
4)打開熱敏頭加熱電源;
打印機關(guān)機流程:
1)停止加熱Timer,;
2)關(guān)閉熱敏頭加熱電源,;
3)將打印機DST(選通脈沖)信號設(shè)為低電平;
4)將打印機LATCH(數(shù)據(jù)鎖存)信號設(shè)為高電平,;
5)關(guān)閉熱敏頭邏輯電源,。
1.5 電源控制系統(tǒng)介紹
圖9. 電源控制系統(tǒng)介紹
1)供電:系統(tǒng)采用單節(jié)鋰電池4.2V或者USB 5V供電;
2)異常:當(dāng)MCU內(nèi)部程序跑飛/死機時,,首先可以按下SW1復(fù)位MCU,,再不行可以按住正常開/關(guān)機鍵,再插入USB線使MCU復(fù)位,;
3)開機:系統(tǒng)未通電時,,按住開/關(guān)機鍵,此時MCU上電,,MCU開始從eFlash啟動,,初始化成功后將POWER_ON/OFF信號置高,雙色燈中的綠燈點亮(InitPass_常亮,、內(nèi)部鋰電池充電滿_常亮),,若初始化失敗或檢測到異常/錯誤(比如電池電量低,外設(shè)初始化失敗,、通信不正常等),,將雙色燈中的紅燈點亮(Err1_常亮、Err2_1s閃,、Err3_快閃),;
4)關(guān)機:系統(tǒng)通電時,按住開/關(guān)機鍵,,Power_Check引腳會檢測到一個下降沿,,并且接著會有持續(xù)的低電平,松開按鍵后,再將電源控制信號拉低,;
5)正常關(guān)機的順序是:先滅燈,,然后斷電機驅(qū)動電源和外設(shè)電源,再斷MCU電源,;
6)PB1為開/關(guān)機按鍵與系統(tǒng)喚醒鍵,,SW1為系統(tǒng)喚醒按鍵與復(fù)位鍵,通常情況,,用戶按一下是要喚醒系統(tǒng),,長按是正常開關(guān)機;
7)沒有打印任務(wù)時,,需要關(guān)閉電機電源和外設(shè)電源,,來節(jié)省鋰電池電量;所以系統(tǒng)經(jīng)過定時進入待機前,,MCU關(guān)閉電機驅(qū)動電源/外設(shè)電源后,,進入待機。
資源分享
Gitee資源:
https://gitee.com/acm32-mcu/thermal_printer
ACM32F303對比STM32F103差異說明:
https://aijishu.com/a/1060000000295866
STM32F103標(biāo)準(zhǔn)外設(shè)庫SPL移植說明(ACM32F403):
https://aijishu.com/a/1060000000306636
航芯MCU軟件HAL庫使用說明及STM32 API差異說明:
https://aijishu.com/a/1060000000296281
如需銷售咨詢,,請郵件至:[email protected]