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