高解析喷码机中的USB数据传输系统

2015-01-17 05:46郑鹏斌文继国
电子设计工程 2015年1期
关键词:存储器字节二维码

郑鹏斌,文继国

(成都信息工程学院 电子工程学院,四川 双流 610225)

随着社会的不断发展,消费者对产品真实信息的标注要求越来越高,具有极大信息容量和极强纠错功能的二维码具有广阔的应用前景。在标识领域,传统喷码机在喷涂二维码时喷头打印速度快,但数据传输速度慢而存在不匹配的问题,打印二维码比较困难。应用于数据传输方面的USB接口有高速、易用、稳定、价格低廉、支持热插拔等优点[1],因而被广泛用作为各种电子设备与PC的通信接口。

文中在设计喷码机的数据传输接口时采用USB接口,实现了快速地传输二维码图片。此外,在固件程序设计中,一系列数据通信协议的软件实现保证了传输的可靠性和稳定性,上位机程序中的选择功能保证了喷头能识别传送的数据,从而准确地打印图片。实测结果表明,此数据传输系统满足了二维码图片的传输要求。

1 USB通信模型

USB设备在物理上通过一条连线与主机相连,所有的设备都公用这条物理连线。逻辑上说,每个与主机相连的设备都由主机分配了一个逻辑连接点,主机与设备的通信为点对点的方式。为了使USB通信机制更加细化,建立USB协议的厂商们对USB进行了分层,根据不同层次的实现者对USB的不同要求,把每一层传输的数据结构设计为对其他逻辑层是透明的。图1表示了USB设备和USB主机通信的逻辑结构和逻辑通道。

图1 USB传输模型Fig.1 The transmission model based on USB

图中,功能层的主要作用是实现主机和驱动程序、主机和设备端的功能接口的有用信息传输。在该层客户应用软件只需要考虑如何实现具体设备功能即可,不需要了解USB的相关内容。设备层包括USB的系统设备驱动软件和USB设备的通讯的软硬件部分。他们的关系也为逻辑上的对应关系。开发USB设备驱动软件和USB设备的通信软硬件的工程师应该知道USB系统的基本通讯协议。接口层用来实现在主机和USB设备的物理连接之间传输位信息流信息。

2 芯片选择

喷码机的构成框图如图2所示。主要由主机,MCU,USB传输芯片,静态存储器,喷头几个部分构成。MCU通过USB传输芯片与主机进行通信,接受主机传送的数据和命令,同时把喷头的状态等数据传送给主机。由于喷头一次打印需要16个字节组成一列,实时传输满足不了要求,所以MCU把主机传送的大量图片数据先存入静态存储器,数据传输完毕后,MCU再逐次读取数据并传送给喷头,在喷头时序控制器的协同作用下进行打印。在本系统中采用的MCU是P89C60X2,USB传输芯片是PDIUSBD12。

图2 喷码机的组成框图Fig.2 The physical structure of printer

P89C60X2由菲利普公司采用静态80C51设计,包含以下特性:1)512字节RAM,64K字节flash存储器,布尔处理器。2)在系统编程功能的片内flash程序存储器。3)每个机器周期为12个时钟周期,可通过软件或者并行编程器选为6时钟模式。4)全双工增强型UART,包含帧错误检测和自动地址识别。5)3个保密位,4个8位I/O口,6个中断源和4个中断优先级。相对于其他单片机,P89C60X2在此系统中的应用具有以下优势:

①双DPTR结构。两个16位DPTR寄存器可以寻址外部存储器,这种双DPTR结构使编程更加灵活,使得主机更方便访问外部数据存储器。

②双时钟模式。时钟模式特性使器件的操作频率设为1/12或1/6振荡器频率。根据需要选择模式,使MCU工作效率更高。

③特殊RAM。内置部分RAM可以当做外部数据存储器,访问速度快。

④与USB传输芯片PDIUSBD12同为菲利普公司生产,更加容易配合使用。

PDIUSBD12是一款性价比很高的USB器件[2]。此芯片是带有并行总线和局部DMA传输能力的全速USB接口器件。片内集成了高性能USB接口器件、SIE、FIFO存储器、收发器以及电压调整器等,可与任何外部微控制器/微处理器实现高速并行接口。PDIUSBD12完全符合USB1.1版的规范[3],可理想地用于许多外部设备。

3 硬件设计

图3为P89C60X2与PDIUSBD12的连接简图。PDIUSBD12芯片的数据口(1-4脚及6-9脚)通过数据总线依次与P89C60X2的P0口(39-32脚)相连;D12的写信号脚(16脚)与 MCU的P3.6口(16脚)相连;D12的读信号脚(15脚)与 MCU的 P3.7口(17脚)相连;D12的片选信号脚(11脚)通过译码器与MCU相连;P0口通过锁存器输出的A0地址线直接与D12的A0地址线 (28脚)相连;D12的中断口(14 脚)与 MCU 的外部中断 0(12 脚,P3.2)相连。

图3 P89C60X2与PDIUSBD12连接简图Fig.3 The basic physical interfaces between P89C60X2 and PDIUSBD12

4 软件设计

USB通信的软件部分由上位机程序和下位机程序两部分构成,上位机程序包括客户应用程序和USB驱动程序,下位机程序为MCU固件程序。

4.1 上位机程序

要使USB设备和PC机的数据传输正常工作,需要在PC机端安转相应的应用程序,此设计使用了广州周立功发展有限公司提供的D12驱动程序和EasyUSB动态库:EasyD12.dll。EasyD12.dll动态连接库集成了对PDIUSBD12的主要软件操作,不必要了解复杂的USB协议也可以快速的完成USB的PC端的应用软件的开发。下面是EasyD12的库函数说明:

EasyUSB库[4]一共有 3个文件,包括 EasyUSB.lib,Easy USB.dll,EasyUSB.h。动态库是MicrosoftWindows的接口标准,流行的软件开发工具均可使用。本设计中采用界面容易设计、实时性好的软件开发工具LabVIEW。

应用程序进行图片传输完成的工作如下:1)对所传图片的合法性进行检测。图片必须为128行的黑白BMP图片,如若不满足条件,则报错。2)对图片数据进行分块。USB每次只能传送64字节的数据,除去控制信息,每次只能传送60字节的图像数据。3)对每一块传输的成功性进行检测。只有当前块数据确认传输成功后,才能传输下一块数据。

4.2 下位机程序

MCU通过读写外部数据存储器的方式与D12进行数据交换。D12有数据请求时就发送中断信号给MCU,MCU响应中断之后,通过读取D12相关寄存器,根据读取状态,进行相应操作。

固件程序主循环流程图如图4所示[5],图中端点1用来传送上位机的各种喷码参数和命令及状态信息,端点2用来传送打印数据。为了保证数据能够快速准确地传输,需要在主机与MCU之间制定一系列的数据传输协议[6],具体如下:

1)端点 1

图4 固件程序主循环流程图Fig.4 The flow diagram of main program's firmware

[8,T1,N1,M1]为 4 字节写入信息,表示获取喷头状态。T1,N1,M1 是 3 个字节预置数。 喷头回答[8,T2,N2,M2]为 4字节返回信息。若N2=N1,M2=M1,则 T2有效。T2=2或T2=12表示喷头处于“等待接收数据”状态;T2=3或T2=13表示喷头处于“正在接受数据”状态。

[9,n,x0,x1,x2·····]传送喷印参数和命令及状态。 例如[9,0,1]表示开喷头箑 5V 电源;[9,0,0]表示关电源;读状态命令 [9,9]表示读计数器,USB 回送数据为[9,JSQW5,JSQW4,JSQW3, JSQW2, JSQW1, JSQW0],程序如下:

If(GenEpBuf[0]==9)

{

Switch(GenEpBuf[1])

{

case0:

If( GenEpBuf[2]==0)

{

#pragma ASM

SETB P1.0

#pragma ENDASM

}

else

{

#pragma ASM

CLR P1.0

#pragma ENDASM

}

break;

case 9:

GenSendBuf[0]=9;

GenSendBuf[1]=JSQW5;

GenSendBuf[2]=JSQW4;

GenSendBuf[3]=JSQW3;

GenSendBuf[4]=JSQW2;

GenSendBuf[5]=JSQW1;

GenSendBuf[6]=JSQW0;

D12_WriteEndpoint(3,7, GenSendBuf);

break;

……

}

}

2)端点 2

①[4,0,0,0]为 4 字节写入信息,表示结束等待,开始写入一组喷印数据。喷头回答[4,0,0,0]为4字节返回信息。

②[1,addh,addi,len,byte(1),byte(2)······,byte(len-1)]为4+len字节写信息,表示把len字节的数据写入喷头缓冲区,len小于或者等于60。addh,addl为写入的第一字节数据的地址,len为写入的数据字节数。喷头回答[3,0,0,0]为4字节返回信息,表示前面写入的数据超出了可用缓冲区,有效缓冲区的长度为32768字节。喷头回答[1,addh2,addl2,len]为4字节返回信息,表示前面写入的数据有效,其中addh2,addl2为收到的最后一个数据的下一个字节的地址,len为收到的数据字节数,即addh2*256+addl2-addh1*256-addl1=len。

③[5,0,0,0]为 4字节写信息,表示一组喷印数据写结束。 喷头回答[5,0,0,0]为 4 字节返回信息。

5 系统测试

进行测试时,首先打开上位机应用软件和给下位机上电,上位机收到下位机传送的“系统已准备完毕”的提示信息后,就可以进行图片的传输。在上位机中载入符合条件的图片,如果图片不符合条件,则报错“图片不满足传输条件”,载入成功后,点击发送按钮,传输完成后应用软件给出“图片发送完毕”的提示,如图5所示。在多次实验中,系统都能准确快速地传送二维码图片。

图5 测试界面图Fig.5 Test interface

6 结束语

本文介绍的高解析喷码机[7]中的USB数据[8]传输系统采用价格比较低廉的芯片,经过合理的硬件设计和软件编写,满足了二维码图片的传输要求。该系统已用于某喷码机的数据传输,应用结果表明该数据传输系统具有传输速度快,可靠稳定的特点,达到了设计的要求。

[1]胡晓军,张爱成.USB接口开发技术[M].1版.西安:西安电子科技大学出版社,2005.

[2]周立功.PDIUSBD12USB固件编程与驱动开发[M].北京:北京航空航天大学出版社,2003.

[3]陈启美,丁传锁.计算机USB接口技术[M].1版.南京:南京大学出版社,2003.

[4]肖踞雄,翁铁成,宋中庆.USB技术及应用设计[M].北京:清华大学出版社,2003.

[5]杨金岩,郑应强,张振仁.8051单片机数据传输接口扩展技术与应用实例[M].1版.北京:人民邮电出版社,2005.

[6]徐爱钧,彭秀华.单片机高级语言C51应用程序设计[M].北京:电子工业出版社,2001.

[7]王宏文,黄金兰,董苗.流水线上嵌入式喷码机系统设计[J].现代电子技术,2014(9):107-110.WANF Hong-wen,HUANG Jin-lan,DONG Miao.Design of embedded ink-jet printer system in production line[J].Modern Electronics Technique,2014(9):107-110.

[8]孙学君,白谱伟.数字合成扫频仪USB2.0接口设计[J].电子科技,2012(5):73-75.SUN Xue-jun,BAI Pu-wei.Designs of the USB2.0 interface of the digital synthetic sweeper[J].Electronic Science and Technology,2012(5):73-75.

猜你喜欢
存储器字节二维码
No.8 字节跳动将推出独立出口电商APP
静态随机存储器在轨自检算法
二维码
小康二维码
No.10 “字节跳动手机”要来了?
简谈MC7字节码
让严肃的二维码呆萌起来
二维码,别想一扫了之
存储器——安格尔(墨西哥)▲
基于Nand Flash的高速存储器结构设计