CN102393810A - 利用fpga实现对热敏打印机的打印控制方法 - Google Patents
利用fpga实现对热敏打印机的打印控制方法 Download PDFInfo
- Publication number
- CN102393810A CN102393810A CN2011102029829A CN201110202982A CN102393810A CN 102393810 A CN102393810 A CN 102393810A CN 2011102029829 A CN2011102029829 A CN 2011102029829A CN 201110202982 A CN201110202982 A CN 201110202982A CN 102393810 A CN102393810 A CN 102393810A
- Authority
- CN
- China
- Prior art keywords
- data
- fpga
- thermal printer
- heating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
本发明公开了一种利用FPGA实现对热敏打印机的打印控制方法,包括如下步骤:a)FPGA接收来自单片机的打印点阵数据,存入内部打印数据区;b)FPGA通过串行外围设备接口总线向热敏打印机发送点阵数据;c)FPGA将打印数据从内部打印数据区映射到加热缓存数据区间;通知热敏打印机启动加热打印板;d)热敏打印机返回加热完成信号后,FPGA通知热敏打印机打印加热数据,启动马达走纸;e)循环步骤b)~d),完成所有打印数据后向单片机报告打印状态。本发明提供的打印控制方法,通过单片机和FPGA配合实现打印加热送数,从而能够避免打印加热送数之间发生冲突,并且可以实现同步进行,提高效率。
Description
技术领域
本发明涉及一种打印控制方法,尤其涉及一种利用FPGA实现对热敏打印机的打印控制方法。
背景技术
现有做法是用单片机程序来实现热敏打印机的马达步进以及加热打印控制,基本的流程做法如图1所示。传统做法的单片机控制实现对热敏打印机的控制。基本上是通过串行外围设备接口SPI(serial peripheral interface,)口实现对打印机送数据,然后用一个I/O产生一个 LATCH的脉冲信号,将数据导入加热buffer,将加热开关打开,加热相应位置一段时间后关加热开关,控制电机转动,走纸,将纸挪到正确位置后继续送数,加热,走纸。其中由于单片机的执行指令时间不固定,只能通过定时器中断来精确控制走纸以及加热的时间,而且在监控打印机状态时也需要高优先级的中断来判断缺纸或过热,不仅占用单片机的资源多,打印加热送数之间容易发生冲突,而且对于代码移植很不方便,当换了一个CPU平台后,需要重新调整代码,耗时耗力。
发明内容
本发明所要解决的技术问题是提供一种利用FPGA实现对热敏打印机的打印控制方法,能够避免打印加热送数之间发生冲突,并且可以实现同步进行,提高效率,实现模块化,移植方便,提高整体系统的实时性。
本发明为解决上述技术问题而采用的技术方案是提供一种利用FPGA实现对热敏打印机的打印控制方法,包括单片机、打印机和 FPGA,其中,所述方法包括如下步骤:a) FPGA接收来自单片机的打印点阵数据,存入内部打印数据区;b) FPGA通过串行外围设备接口总线向热敏打印机发送点阵数据,设置数据传送标记;c) FPGA将打印数据从内部打印数据区映射到加热缓存数据区间;通知热敏打印机启动加热打印板,设置数据加热标记,同时清除数据传送标记;d)热敏打印机返回加热完成信号后,FPGA通知热敏打印机打印加热数据,启动马达走纸,热敏打印机返回打印完成信号后,清除数据加热标记;e) 循环步骤b)~ d), 完成内部打印数据区所有打印数据后向单片机报告打印状态。
上述的利用FPGA实现对热敏打印机的打印控制方法,其中,所述步骤a)和e)中FPGA和单片机之间通过中断或轮询方式交换数据。
本发明对比现有技术有如下的有益效果:本发明提供的利用FPGA实现对热敏打印机的打印控制方法,通过单片机和FPGA配合实现打印加热送数,从而能够避免打印加热送数之间发生冲突,并且可以实现同步进行,提高效率。
附图说明
图1为现有利用单片机实现对热敏打印机的打印控制流程示意图;
图2为本发明利用FPGA实现对热敏打印机的打印控制流程示意图;
图3为本发明FPGA内部的打印状态流程示意图;
图4为本发明单片机、FPGA和打印机件信号控制示意图;
图5为本发明利用FPGA监控单片机和热敏打印机的控制流程示意图。
图中:
1 单片机 2 热敏打印机 3 FPGA
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图2为本发明利用FPGA实现对热敏打印机的打印控制流程示意图。
请参见图2,本发明提供的利用FPGA实现对热敏打印机的打印控制方法包括单片机1、打印机2和 FPGA 3,其中,所述方法包括如下步骤:
a) FPGA 3接收来自单片机1的打印点阵数据,存入内部打印数据区;
b) FPGA 3通过串行外围设备接口总线向热敏打印机2发送点阵数据,设置数据传送标记;
c) FPGA 3将打印数据从内部打印数据区映射到加热缓存数据区间;通知热敏打印机2启动加热打印板,设置数据加热标记,同时清除数据传送标记;
d) 热敏打印机2返回加热完成信号后,FPGA 3通知热敏打印机2打印加热数据,启动马达走纸,热敏打印机2返回打印完成信号后,清除数据加热标记;
e) 循环步骤b)~ d), 完成内部打印数据区所有打印数据后向单片机1报告打印状态。
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA实际上是一种实现多个状态机的同时并行的可编程的硬件设备,本发明通过FPGA实现热敏打印机的打印控制,单片机在将打印数据转成打印点阵数据后,按照FPGA内部所开打印缓存的大小,将数据一次写入到FPGA的打印BUFFER;单片机置位相应寄存器,开始FPGA内部的状态机;单片机可以用轮询或中断方式得到打印状态,然后进入下一轮打印;以上执行不受单片机的执行速度影响,打印效果具有很好的一致性。
下面简单介绍FPGA内部的状态机流程:
如图3所示,对于打印机的工作流程,包括如下流程:1:SPI 发送数据,2:缓存与加热BUFFER间的数据映射,3:打印加热数据,4:点行走纸,这4个各自相对独立而又有关联的状态机来实现。
本发明利用三个信号量来作状态机之间的通讯关系。具体的信号量作用为:
SendLatch_flag: SPI_Module 结束后置 1,Latch_Module结束后清 0 ;
LatchHeat_flag: Latch_Module 结束后置 1,Heat_Module结束后清 0 ;
HeatFeed_flag: Heat_Module 结束后置 1,Feed_Module结束后清 0 。
图4为本发明单片机、FPGA和打印机件信号控制示意图。
请继续参见图4,单片机1与FPGA之间是最普通的读写存储器接口,具体信号包括RD/WR,ADDR总线,DATA总线和中断信号INT。FPGA内部主要包括几个功能块,分为A:打印数据缓存区功能块;B:加热控制块;C:电机步进控制块;D:打印状态监控块;E:控制时间监控块;功能分别描述如下:
A:打印数据缓存是在FPGA中开辟的一块MEMORY区域,是一个双端口memory,其中写端口接CPU总线,以8位方式操作,读端口是接打印机的数据口,以1位方式输出,在时序上通过FPGA内部逻辑改造成SPI时序,符合打印机输入数据时序要求,并且以辅助计数器的计数值作为串行1位输出的地址。
B:加热控制模块通过预设寄存器值要求,打开加热电源控制开关,并根据数据点阵打开加热数据段,加热时间根据计数器值来确定。
C:电机步进控制根据电机的逻辑输出要求循环输出步进控制逻辑,控制打印电机转动,并通过计数器监控步进步数,来达到精确控制电机动作;
D:打印状态监控块是一个随时监控打印机状态的功能块,当加热,步进时随时监控打印机的纸张状况,过热状况,打印是否结束状况,目前是打印哪个步骤状况等,它是单片机了解打印状态的桥梁,单片机可以随时读这个功能块来了解打印状态,也可以通过中断方式来让功能块通知单片机某种状态;
E:控制时间监控模块是一个安全辅助模块,它另外开启了一系列监控各个状态机的计数器,独立于打印机IP工作的各个模块,具有最高优先级,类式于单片机中的看门狗功能,一旦打印状态机相互之间出现不按预设的要求动作,它就会触发中断,先复位状态机,然后以中断方式通知CPU处理异常情况。
上述几个功能块之间相对比较独立,属于各个独立运作的状态机,但各个状态机触发的机制又是各个状态机之间的公共信号量,即sendlatch_flag, latchheat_flag, heatfeed_flag。通过公共信号量达到协调工作的目的。
对于CPU,需要作的工作是发送一行数据给FPGA的打印buffer,然后使能打印功能,然后可以去做其他事情,FPGA一旦打印结束,发送中断给CPU,告知打印结束,CPU继续发送数据即可。实现了简单驱动。
在上述基础上,本发明还可以增加一些附加的功能如:
1:检测纸张和温度的功能;2:实现无纸空走马达;3:监控加热使能的时间,使之控制在约定时间内等。
图5为本发明利用FPGA监控单片机和热敏打印机的控制流程示意图。
请继续参见图5,本发明利用FPGA监控单片机和热敏打印机的控制流程如下:
定义打印参数,配置打印控制寄存器和双端口RAM存储打印数据;
下载打印数据到FPGA打印缓存,启动打印状态机;
FPGA根据计数器的同步时间,传送数据到打印机缓存,发送完后,产生一个信号量SendLatch_flag;
打印数据从缓存映射到加热区,产生一个信号量LatchHeat_flag,告知可以加热,另外置位信号量SendLatch_flag,告知可以再次传送数据;
FPGA计数时间加热,等到加热结束,然后产生一个信号量HeatFeed_flag,告知可以步进,另外置位信号量LatchHeat_flag,告知可以再次传送数据;
步进电机按照设置的时间参数开始步进,通过全局计数器来控制状态机的状态参数,在一点行的步进结束后,置位信号量HeatFeed_flag,告知可以再次加热动作;
根据全局同步计数器,判断是否全部数据打印结束;
产生一个中断信号,告知CPU打印结束;
同时FPGA监控加热时间和步进逻辑控制时间,是否会超出预设的最大加热时间,若是,产生打印状态机复位信号,用于复位整个状态机。
综上所述,本发明利用FPGA的可编程特性和硬件状态机的并行执行的特点。以及FPGA的高速和时间上的可精确控制这个特点。从而实现模块化,移植方便,提高整体系统的实时性。本发明FPGA是介于CPU和热敏打印机之间的一个中间接口,对于CPU一端而言,是一个CPU通用的MEMORY读写端口,可以用最简单的读写操作来实现,对于热敏打印机端而言,是一个定制的打印走纸控制器,可以通过调节参数达到打印最佳效果。这样,对于CPU而言,热敏打印机控制器就象是它的一个类似UART的标准外设,可以通过简单的寄存器设置和读写操作即可实现热敏打印。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
Claims (2)
1.一种利用FPGA实现对热敏打印机的打印控制方法,包括单片机(1)、打印机(2)和 FPGA(3),其特征在于,所述方法包括如下步骤:
a) FPGA(3)接收来自单片机(1)的打印点阵数据,存入内部打印数据区;
b) FPGA(3)通过串行外围设备接口总线向热敏打印机(2)发送点阵数据,设置数据传送标记;
c) FPGA(3)将打印数据从内部打印数据区映射到加热缓存数据区间;通知热敏打印机(2)启动加热打印板,设置数据加热标记,同时清除数据传送标记;
d) 热敏打印机(2)返回加热完成信号后,FPGA(3)通知热敏打印机(2)打印加热数据,启动马达走纸,热敏打印机(2)返回打印完成信号后,清除数据加热标记;
e) 循环步骤b)~ d), 完成内部打印数据区所有打印数据后向单片机(1)报告打印状态。
2.如权利要求1所述的利用FPGA实现对热敏打印机的打印控制方法,其特征在于,所述步骤a)和e)中FPGA(3)和单片机(1)之间通过中断或轮询方式交换数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102029829A CN102393810A (zh) | 2011-07-20 | 2011-07-20 | 利用fpga实现对热敏打印机的打印控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102029829A CN102393810A (zh) | 2011-07-20 | 2011-07-20 | 利用fpga实现对热敏打印机的打印控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102393810A true CN102393810A (zh) | 2012-03-28 |
Family
ID=45861140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011102029829A Pending CN102393810A (zh) | 2011-07-20 | 2011-07-20 | 利用fpga实现对热敏打印机的打印控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102393810A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103802496A (zh) * | 2012-11-12 | 2014-05-21 | 北大方正集团有限公司 | 一种调整数码印刷系统走纸速度的方法及装置 |
CN105468310A (zh) * | 2015-11-17 | 2016-04-06 | 昇捷丰电子(厦门)有限公司 | 一种喷码机的fpga控制系统及其控制方法 |
CN106394023A (zh) * | 2016-08-31 | 2017-02-15 | 福建联迪商用设备有限公司 | 针式打印机的控制电路 |
CN106541716A (zh) * | 2015-09-17 | 2017-03-29 | 北大方正集团有限公司 | 一种用于测试打印控制系统的喷头仿真板和打印测试方法 |
CN107962874A (zh) * | 2017-11-29 | 2018-04-27 | 艾体威尔电子技术(北京)有限公司 | 一种提高热敏打印机驱动程序可靠性的方法 |
CN109484046A (zh) * | 2018-10-15 | 2019-03-19 | 广东宝莱特医用科技股份有限公司 | 一种打印控制方法、控制系统及打印设备 |
CN109605944A (zh) * | 2018-12-07 | 2019-04-12 | 艾体威尔电子技术(北京)有限公司 | 一种pos机中热敏打印机的驱动方法 |
CN110303775A (zh) * | 2019-06-28 | 2019-10-08 | 珠海智汇网络设备有限公司 | 热敏打印机打印速度调整方法、计算机装置以及计算机可读存储介质 |
CN111190843A (zh) * | 2020-01-08 | 2020-05-22 | 珠海趣印科技有限公司 | 一种提高打印速度和打印效果的方法 |
CN112406333A (zh) * | 2020-11-20 | 2021-02-26 | 厦门喵宝科技有限公司 | 一种微型热敏打印机控制方法 |
CN112895732A (zh) * | 2019-12-04 | 2021-06-04 | 深圳君正时代集成电路有限公司 | 一种加热逻辑控制热敏打印头的系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001096785A (ja) * | 1999-10-01 | 2001-04-10 | Toshiba Tec Corp | サーマルプリンタ |
CN2468231Y (zh) * | 2001-02-13 | 2001-12-26 | 赵俊华 | 实时网络终端机 |
JP2002293051A (ja) * | 2001-03-29 | 2002-10-09 | Ricoh Co Ltd | 感熱孔版印刷用原紙 |
CN1462945A (zh) * | 2003-06-18 | 2003-12-24 | 上海北大方正科技电脑系统有限公司 | 用可编程门阵列对打印机控制器进行硬件逻辑配置的方法 |
CN201619297U (zh) * | 2009-12-29 | 2010-11-03 | 上海高衡电子有限公司 | 热敏打印机的灰度控制器 |
CN101980178A (zh) * | 2010-11-01 | 2011-02-23 | 福建鑫诺通讯技术有限公司 | 微型热敏打印机驱动器的时序控制方法 |
-
2011
- 2011-07-20 CN CN2011102029829A patent/CN102393810A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001096785A (ja) * | 1999-10-01 | 2001-04-10 | Toshiba Tec Corp | サーマルプリンタ |
CN2468231Y (zh) * | 2001-02-13 | 2001-12-26 | 赵俊华 | 实时网络终端机 |
JP2002293051A (ja) * | 2001-03-29 | 2002-10-09 | Ricoh Co Ltd | 感熱孔版印刷用原紙 |
CN1462945A (zh) * | 2003-06-18 | 2003-12-24 | 上海北大方正科技电脑系统有限公司 | 用可编程门阵列对打印机控制器进行硬件逻辑配置的方法 |
CN201619297U (zh) * | 2009-12-29 | 2010-11-03 | 上海高衡电子有限公司 | 热敏打印机的灰度控制器 |
CN101980178A (zh) * | 2010-11-01 | 2011-02-23 | 福建鑫诺通讯技术有限公司 | 微型热敏打印机驱动器的时序控制方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103802496B (zh) * | 2012-11-12 | 2016-01-13 | 北大方正集团有限公司 | 一种调整数码印刷系统走纸速度的方法及装置 |
CN103802496A (zh) * | 2012-11-12 | 2014-05-21 | 北大方正集团有限公司 | 一种调整数码印刷系统走纸速度的方法及装置 |
CN106541716A (zh) * | 2015-09-17 | 2017-03-29 | 北大方正集团有限公司 | 一种用于测试打印控制系统的喷头仿真板和打印测试方法 |
CN105468310B (zh) * | 2015-11-17 | 2019-01-15 | 昇捷丰电子(厦门)有限公司 | 一种喷码机的fpga控制系统及其控制方法 |
CN105468310A (zh) * | 2015-11-17 | 2016-04-06 | 昇捷丰电子(厦门)有限公司 | 一种喷码机的fpga控制系统及其控制方法 |
CN106394023A (zh) * | 2016-08-31 | 2017-02-15 | 福建联迪商用设备有限公司 | 针式打印机的控制电路 |
CN107962874A (zh) * | 2017-11-29 | 2018-04-27 | 艾体威尔电子技术(北京)有限公司 | 一种提高热敏打印机驱动程序可靠性的方法 |
CN109484046A (zh) * | 2018-10-15 | 2019-03-19 | 广东宝莱特医用科技股份有限公司 | 一种打印控制方法、控制系统及打印设备 |
CN109484046B (zh) * | 2018-10-15 | 2020-08-11 | 广东宝莱特医用科技股份有限公司 | 一种打印控制方法、控制系统及打印设备 |
CN109605944A (zh) * | 2018-12-07 | 2019-04-12 | 艾体威尔电子技术(北京)有限公司 | 一种pos机中热敏打印机的驱动方法 |
CN110303775A (zh) * | 2019-06-28 | 2019-10-08 | 珠海智汇网络设备有限公司 | 热敏打印机打印速度调整方法、计算机装置以及计算机可读存储介质 |
CN112895732A (zh) * | 2019-12-04 | 2021-06-04 | 深圳君正时代集成电路有限公司 | 一种加热逻辑控制热敏打印头的系统 |
CN111190843A (zh) * | 2020-01-08 | 2020-05-22 | 珠海趣印科技有限公司 | 一种提高打印速度和打印效果的方法 |
CN112406333A (zh) * | 2020-11-20 | 2021-02-26 | 厦门喵宝科技有限公司 | 一种微型热敏打印机控制方法 |
CN112406333B (zh) * | 2020-11-20 | 2022-06-10 | 厦门喵宝科技有限公司 | 一种微型热敏打印机控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102393810A (zh) | 利用fpga实现对热敏打印机的打印控制方法 | |
CN100496989C (zh) | 打印设备、打印机控制方法及打印系统 | |
CA2182414C (en) | Universal controller interface for barcode printers | |
JP5522279B2 (ja) | 半導体集積回路及びその省電力制御方法 | |
CN101980178B (zh) | 微型热敏打印机驱动器的时序控制方法 | |
CN105224267B (zh) | 一种支持云服务的3d打印机控制器 | |
CN101556722A (zh) | 一种多cpu协作构建高效税控收款机的方法 | |
CN205103807U (zh) | 一种基于智能移动终端的双模蓝牙微型打印系统 | |
US4671683A (en) | Printer which determines whether the text in memory can fit on a sheet of paper | |
CN101648462A (zh) | 基于fpga模块的针式打印机控制电路 | |
CN112904751B (zh) | 一种热敏打印头的加热逻辑控制方法 | |
CN112590401B (zh) | 热敏打印机控制方法、装置、热敏打印机和介质 | |
JP2015022646A (ja) | 印刷システム及び印刷装置 | |
CN100390723C (zh) | 多通道序列传输与控制装置及其方法 | |
CN107878059B (zh) | 高效打印方法、存储介质 | |
TW201345740A (zh) | 一種印表機及其列印速度的控制方法 | |
CN106394023B (zh) | 针式打印机的控制电路 | |
CN112590400B (zh) | 热敏打印机控制方法、装置、热敏打印机和介质 | |
CN202923132U (zh) | 一种具有人机交互功能的平推式打印机 | |
CN100555172C (zh) | 通过计算机系统的PCI Express总线传输信号的方法 | |
CN101224669A (zh) | 打印机供墨控制系统 | |
JP3962591B2 (ja) | インクジェットプリンタ及びインクジェットプリンタの制御方法 | |
CN104850366A (zh) | 一种打印机的打印任务生成及控制系统 | |
CN113580775B (zh) | 热敏打印机的加热控制方法、装置、系统、介质及设备 | |
KR200411071Y1 (ko) | 라벨 공급 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120328 |