USB打印接口十篇

2024-06-01

USB打印接口 篇1

1.1 USB OTG接口芯片的选型

USB OTG控制器芯片有两种类型:USB OTG接口专用 (单芯片) 控制器和USB OTG收发器器件。USB OTG接口专用芯片是在USB接口专用芯片上扩展OTG功能而成, 在 (一个) 芯片上集成了USB OTG控制器、主从主机控制器和设备控制器, 如Philips公司的ISP1362/1363[1]和ISP1761芯片、TransDimension公司的TD1120和Cypress Semiconductor的EZ-OTG芯片CY7C67200。USB OTG收发器器件是为内置USB接口的单片机 (MCU) 增加了OTG功能, 使内置USB2.0主机/设备 (但不含USB收发器) 的USB ASIC、FPGA或系统芯片组 (SoC) 能与USB物理层连接而实现OTG功能, 如Philip公司的ISP1301 OTG器件、TransDimension公司的TD6100器件、Cypress Semiconductor公司的SL811HS和Maxim公司的MAX3301E OTG器件。

本课题是为彩色喷墨打印机设计符合USB OTG接口, 彩色喷墨打印机本身采用了性能较高的东芝的TMP95C061BF单片机[2], 所以需要选择没有内置处理器的USB OTG专用单芯片控制器芯片。从产品性能和成本等综合因素的考虑, 本课题采用Philips Semiconductor公司的ISP1362接口芯片, 它是飞利浦公司推出的OTG解决方案系列中最早的产品, 在单芯片上集成了一个OTG控制器、一个高级主机控制器 (PSHC) 和一个基于飞利浦ISP1181的设备控制器。ISP1362的OTG控制器完全兼容USB2.0及OTG Supplement 1.0协议, 主机和设备控制器兼容USB2.0协议, 并支持12Mbps的全速传输和1.5Mbps的低速传输。该芯片由OTG控制器、主机控制器、外设控制器、USB收发器、OTG收发器和缓存器等组成, 通过内部集成的总线接口可与外部的CPU相连。

1.2 USB OTG接口的硬件设计

ISP1362主机和设备总线接口是连接外部微处理器和ISP1362管道。ISP1362的主机和设备总线连接方式有两种:PIO模式和DMA模式。ISP1362芯片与彩色喷墨打印机主板上的外部微处理器的连接方式也就是这两种, 通过PIO模式或DMA模式让彩色喷墨打印机的微处理器访问ISP1362芯片的内部存储器组和内存缓冲区。由于彩色喷墨打印机主要以接收数据为主, 而且在喷墨打印机内部主要是以处理从其他设备 (主机) 所发送过来的打印数据为主, 处理任务比较简单, 影响喷墨打印机性能的重要因素是连接打印机的外部设备或者主机与打印机之间的传输速度, 而不是打印机控制系统内部 (微处理器和ISP1362之间) 的传输速度, 打印机控制系统内部 (微处理器和ISP1362之间) 采用DMA模式也无法大幅提高性能;另外, 实践经验表明彩色喷墨打印机接口如果采用DMA模式, 由于主机PC种类繁多很难保证接口的兼容性, 容易造成DMA通信错误, 所以采用DMA模式并没有特别大的优势。ISP1362符合USB2.0规范能够满足彩色喷墨打印机对接口传输速度的要求, 所以本课题的彩色喷墨打印机USB OTG接口设计中采用的是ISP1362的PIO模式。

ISP1362采用PIO模式, 在接口电路中使用了片选信号CS、写信号WR、读信号RD和地址总线的A1、A0, 16位数据总线D15~0以及中断信号INT1和INT2。INT1和INT2信号是中断信号, INT1是HC向外部微处理器 (彩色喷墨打印机的CPU) 发送中断请求, INT2是DC向外部微处理器发送中断请求。固件编程的事件触发时产生中断信号, 中断喷墨打印机的当前任务并响应该中断的服务程序。RESET信号用于ISP1362的初始化。

彩色喷墨打印机的电源为VCC提供3.3 (±0.3) V电压, VDD_5V提供输出电压+5V。在这种接口设计的方案中, OTG接口需要占用喷墨打印机的资源很少, 但需要喷墨打印机CPU提供两个外部中断端口。

2、USB OTG接口的固件设计

彩色喷墨打印机实际上就是一种机电一体化的设备, 本质上是一种单片机系统控制下的机电设备, 属于嵌入式系统设备。同大多数单片机一样, 彩色喷墨打印机也要由设计者提供所有低级I/O控制功能, 负责与其他设备的接口通信、打印数据的处理、打印机械控制等等。彩色喷墨打印机控制系统作为一种单片机, 实际上是一种最典型的嵌入式系统[3], 。彩色喷墨打印机内部的单片机系统软件称为固件 (Firmware) , 顾名思义, 固件就是固化在硬件中的软件, 它是控制打印机运行的嵌入式操作系统, 存储着打印机控制部分的各种硬件设备的基本参数, 为系统提供最底层、最直接的硬件控制。在彩色喷墨打印机内部通常把固件存储在EPROM或者FlashRom中。USB OTG接口的控制程序也是系统控制软件的一部分, 同彩色喷墨打印机的其它控制处理程序一样, 编程调试好之后把代码固化在彩色喷墨打印机的E-PROM芯片中。

2.1 系统固件的设计思想

彩色喷墨打印机的CPU负责处理与其他设备 (主要是主机) 的通信、打印数据、电机的控制、打印头喷墨控制、液晶面板显示和按键的处理等任务。采用USB OTG接口的彩色喷墨打印机 (简称OTG彩色喷打) 与采用通常接口 (串口/并口/USB) 的普通彩色喷墨打印机还有很大的不同, 普通的喷墨打印机必须在PC主机控制下实现PC主机和打印机之间的通信, 而OTG彩色喷打是双重角色设备 (DRD) , 既可以成为其它USB主机的外设, 也可以成为其它USB外设的主机, 在没有PC主机的参与下就能够利用USB OTG功能当作其他USB外设 (如数码相机、U盘、扫描仪等) 的主机实现双方点对点直接通信, 也可以与其他具有USB OTG接口的双重角色设备 (DRD) (如OTG数码相机、U盘、扫描仪等) 通过OTG的SRP和HNP协议协商适时交换主机与设备角色而实现点对点直接通信。

USB OTG接口固件设计的目标就是不仅要使ISP1362的USB传输速率最大, 还要能够实现OTG的主机与设备的双重角色, 同时减少系统的资源占用, 如CPU的占用时间最少, 内存缓冲区利用效率最高[4]。所有OTG接口固件主要有三部分:OTG控制器编程、主机控制器 (HC) 编程和设备控制器 (DC) 编程。为了最少占用彩色喷墨机的系统资源, 在本课题USB OTG接口的设计中采用中断驱动模式来设计ISP1362的固件, 微处理器安排两个中断INT1 (由HC向系统微处理器发送中断请求和OTG向系统微处理器发送中断请求) 和INT2 (由DC向系统微处理器发送中断请求) 。这样彩色喷墨打印机的CPU在处理前台任务时, ISP1362的USB传输和OTG控制就可以同时在后台进行。这就确保了最佳的USB数据传输速率和OTG功能实现, 占用打印机CPU的处理时间和系统资源也可以降低到最少, 而且简化了编程和调试。

ISP1362 USB OTG控制器用于实现OTG规范要求的各项任务。它支持实现双重角色设备 (DRD) 的主机协商协议 (HNP) 和会话请求协议 (SRP) ;ISP1362为了最大灵活性用软件实现HNP/SRP, 有一套OTG寄存器组提供控制和状态监视能力来支持软件HNP/SRP;在OTG模式下通过配置ISP1362的端口1来实现OTG双重角色设备, 既能当主机也能当外设;作为主机, ISP1362能支持高速或者低速模式下的四种传输模式 (控制、批量、同步和中断) ;作为外设, ISP1362能够支持2到14个可配置端点, 并能配置成四种传输模式中的任意一种。

彩色喷墨打印机通过ISP1362芯片的OTG控制器决定自己是主机还是外设后, 在主机控制下 (可能是彩色喷墨打印机自身、也可能是其他OTG主机或者PC主机) , USB OTG接口的数据传输由USB接口芯片ISP1362自动完成。ISP1362收到其他设备发送来的数据包时, ISP1362的SIE会立即对数据包进行处理:同步模式的识别、并/串行转换、位填充/解除填充、CRC校验产生、PID校验/产生、地址识别和握手评估与产生, 然后产生一个中断通知固化在打印机上的固件程序进行处理。需要发送数据时, 固件程序先往内部的内存缓冲区FIFO写入数据, 再由SIE自动处理后, 由收发器通过数据线D+、D-传送到其他设备。SIE实现了全部的USB协议层, 完全由硬件实现而不需要固件的参与。对于彩色喷墨打印机来说, 不管是接收还是发送数据, ISP1362就像一个带16位数据总线和1个地址位的存储器件。

OTG接口固件在完成双重角色设备之间的主机角色协商之后, 要么自身成为主机控制外设 (OTG主机控制界面可以利用彩色喷墨打印机的液晶显示界面, 配合面板按键进行操作, 同时彩色喷墨打印机能够支持FAT16/FAT32文件系统, 可以识别外设的FAT文件系统) , 要么自己成为外设被其他主机控制, 实现主机与外设之间的通信, OTG接口接收到数据让彩色喷墨打印机进行处理。为了最大限度提高彩色喷墨打印机的性能, 采用OTG接口固件和彩色喷墨打印机共用环行接收缓冲区, ISP1362产生中断时把它接收到的数据读出并存入彩色喷墨打印机CPU可以访问的内存缓冲区。彩色喷墨打印机的USB数据传输应该采用批量传送 (Bulk Transfers) 方式, OTG接口固件与打印机之间的数据交换可以通过共用的数据缓冲区来实现, 其数据交换原理[5]如图2.1所示。

当ISP1362的USB收到一个数据包, 通过中断信号触发, OTG固件程序就将数据包从ISP1362的内部缓冲区移到打印机的循环数据缓冲区, 更新写指针和缓冲区的空闲空间大小, 并在随后清空ISP1362的内部缓冲区, 以便接收新的数据包。CPU可以继续当前的处理任务直到完成, 例如打印当前行, 然后返回到打印机的主程序, 检测循环缓冲区内是否有数据, 并开始数据处理或其它任务的处理, 例如面板按键处理等。

2.2 OTG接口固件设计

OTG接口固件是彩色喷墨打印机嵌入式系统固件的一部分, 在设计OTG接口固件时, 按照软件工程要求, 实现模块化和结构化设计, 保证OTG接口具有良好的可移植性。OTG接口固件作为彩色喷墨打印机嵌入式系统固件的一个大模块, 本身又由三个子模块构成, 即OTG控制器子模块、主机控制器 (HC) 子模块、设备控制器 (DC) 子模块。同时在设计中采用分层结构进行固件的编写, 固件的积木式程序模块结构如图2.2所示。主要由以下功能模块构成:

(1) 硬件提取层:对打印机的I/O口、数据总线、地址总线、片选等硬件接口进行操作。

(2) ISP1362命令接口:对ISP1362器件操作的模块子程序集, 如寄存器读写, 内存缓冲区读写等。

(3) 中断服务程序:响应OTG控制器、HC和DC向系统微处理器发送的中断请求。

(4) 彩色喷打系统的控制与处理程序:它不属于OTG接口固件程序, 但是由于OTG的固件程序是运行在打印机的微控制器TMP95C061BF之上的, 共用TMP95C061BF的地址译码和中断资源, 所以在打印机的控制与处理程序中必须嵌入与OTG接口有关的一些控制程序, 如利用液晶显示界面安排OTG主机操作控制界面, 主机控制界面的按键操作, FAT文件系统支持等。

3、结束语

本文对彩色喷墨打印机的USB OTG接口设计进行了研究, 并运用了当前软件设计的一些新思路和新方法, 完成了彩色喷墨打印机的USB OTG接口硬件、固件的整体设计等。本课题虽然只针对彩色喷墨打印机的USB OTG接口, 并能够提出新的设计思路和实现方法, 对于类似系统的开发具有一定的参考价值。

参考文献

[1].ISP1362Single-Chip Universal Serial Bus On-The-Go controller, Rev.01.Philips Semiconductor, 2002

[2].TOSHIBA CMOS16-bit MICROCONTROLLER TMP95C061BF User's Manual.TOSHIBA, 1999:1~150

[3].夏玮玮.嵌入式系统关键技术分析与开发应用.单片机及嵌入式系统应用, 2003 (2) :15~17

[4].周立功.USB固件编程与驱动开发.北京航空航天大学出版社, 2000

USB打印接口 篇2

基于USB接口的数据采集系统由3部分组成:数据采集卡, 数据采集卡驱动程序和用户应用程序。数据采集卡包括系统硬件电路及固件程序, 它是本采集系统系统的基础。它用来完成信号的A/D转换, 并把转换好的信号传给USB接口。

数据采集卡驱动程序完成数据采集卡和应用程序之间的通信, 它提供了应用程序与采集卡之间的软件接口, 在装入后成为操作系统内核信任的部分, 供用户应用程序使用标准的WIN32API函数对硬件进行FO操作。用户应用程序是整个采集卡的最高层, 直接与用户进行交互。主要功能是与采集卡驱动程序接口来获得数据, 并把得到的数据进行处理、显示等操作, 同时把用户命令通过驱动程序传递给采集卡, 从而控制采集卡的参数设置。

2 系统硬件电路设计

本课题选取了PHILIPS公司的PDIUSBD12, M A X I M公司的M A X 1 1 6 6和A T M E L公司的89C52芯片作为整个采集系统的核心芯片。

2.1 系统硬件总体设计

本系统硬件电路包括:时钟电路、按键复位电路、电源电路、A/D转换电路、USB接口电路、串口电路。如图1所示。

2.2 A/D转换电路设计

模拟电源A V D D和数字电源D V D D应分别通过0.1uF的担电容与模拟地和数字地相连接。而数字地D G N D和模拟地A G N D 1、A G N D 2通常共地。

2.3 USB接口电路设计

采取总线形式传输, 硬件连接:PDIUSBD12 (简称D12) ALE与89C52 (简称52) 的ALE相连, D12数据口与P0口相连D12的CS、INT、WR、RD分别和52的P1.6、INT0、WR、RD脚相连;D12的D+、D一接18欧姆限流电阻, D 1 2的I N T、S U S P E N D、R E S E T、D M A C K、EOT接上拉电阻。

3 USB驱动程序

USB驱动程序入口程序DriverEntry () 的主要功能是告诉系统那些IRP由哪个例程处理也就是对驱动程序初始化, 它的作用相当于C/C++的main () 或Windows编程下的WinMain () 。

初始化派遣例程

在驱动程序初始化之后, PnP管理器调用AddDevice例程来初始化由该驱动程序所控制的设备。AddDevice例程的基本职责是创建一个设备对象并把它连接到以PDO (Physics Device Object) 为底层的设备堆栈中, 具体步骤如下。

(1) 创建设备对象, 并建立一个私有的设备扩展对象。 (2) 寄存一个或多个设备接口, 以便应用程序知道设备的存在。另外还可以给出设备名并创建符号连接名。 (3) 初始化设备扩展对象和设备对象的标志位。 (4) 把新设备对象添加到设备堆栈中。

4 结语

本文以基于USB接口的数据采集平台为研究对象, 选取了通用U S B接口芯片P D I U S B D 1 2, A/D转换芯片M A X 1 1 6 6和89C52单片机作为系统核心芯片, 设计并研制了一套基于USB接口的数据采集硬件板卡, 并开发了相应的VC++开发环境下的用户应用程序, 实现了从底层单片机到以WindowsXP操作系统为基础的PC机的USB双向通信, 最终构建了一个基于USB接口的数据采集平台。

本课题的难点在于对协议的理解和驱动程序的编写, 详细研究了USB通讯协议、操作系统原理及内核, 通过大量的实践与总结完成了PC机与USB之间的通讯。系统设计中对系统软件的测试没有什么非常有效的方法, 对其问题进行有效的定位, 只能通过示波器及BUSHOUND软件来进行一些初步判断。

摘要:数据采集系统广泛应用于信息检测、信号处理、自动控制系统等领域。为了提高数据采集的数据传输速率, 降低开发成本, 节约能源, 本文设计了基于USB总线的数据采集系统。本文概述的基于USB总线的数据采集系统是以AT89C52单片机为核心, 采用PDIUSBD12通用USB接口芯片作为通信接口, 通过A/D转换芯片MAX1166实现模拟量到数字量转换, 进行了系统硬件设计;并进行了相应的固件程序、驱动程序和应用程序开发, 给出了程序流程图和部分程序代码。该系统特点是连接方便, 支持即插即用, 数据传输速度远远高于普通的串口和并口。

关键词:数据采集,USB总线,PDIUSBD12,驱动

参考文献

[1]陈心结.基于USB接口的多通道实时数据采集系统[J].计算机工程与应用, 2003, 15 (3) :46~58.

[2]谭浩强.C语言程序设计[M].北京:清华大学出版社, 1999, 12.

[3]晃建刚, 陈善广, 薛亮.基于USB接口技术的外设应用设计[J].嵌入式系统论文集, 2000, 7 (13) :102~116.

[4]刘丁, 毛德柱, 王云飞.USB在数据采集系统中的应用[J].电子技术应用, 2003, 12 (8) :33~44..

[5]张弘.USB接口设计[M].西安:西安电子科技大学出版社, 2002.

[6]晃建刚, 魏安阳等.通用串行总线 (USB) 设备的驱动[J].电子技术应用, 2002, 22 (13) :77~86.

[7]王朔, 李刚.USB接口器件PDIUSBD12的接口应用设计[J].单片机与嵌入式系统应用, 2002, 17 (6) :79~93.

[8]郭四稳.WDM驱动程序的开发与实现[J].电脑与信息技术, 2006, 11 (7) :63~75.

USB打印接口 篇3

1使用规范接口,避免连接出现松动

朋友最近刚买回来一台USB接口的激光打印机,将其连接到计算机的后置USB端口中时,发现Windows系统无法将它自动识别出来。在对系统的BIOS参数以及打印机的线路连接等方面进行详细检查后,笔者看到并没有任何不正常的地方。没办法。笔者准备将打印机的连接线缆拔下来然后重新插入一次。可是万万没想到。用手稍微触摸一下USB连接线缆,打印线缆的USB接口就从计算机主板上的USB端口中滑落了下来。认真对打印机连接线缆的USB接口进行检查时,笔者发现该连接线缆的接头在做工方面非常毛糙,而且和其他标准的USB接口相比,好像尺寸上要宽一些。当笔者将该USB接口再次插入到计算机主板中的USB端口中时,笔者发现该USB接口始终不能和主板中的USB端口固定接触,只要外力稍微碰一下该打印连接线缆,那么打印机连接线缆的USB接口就会向下垂,这样就会导致打印机和计算机始终无法紧密接触。很明显,朋友的计算机系统之所以不能自动识别到他的USB打印机,是因为打印机使用的连接线缆在接口方面设计不规范,导致打印机始终和计算机系统无法进行牢靠、紧密地接触。这样的话还有可能引起系统发生蓝屏现象。甚至会造成系统不断重启故障。

倘若希望Windows系统可以自动认出USB接口的打印机,我们只有用力将USB接口往计算机主板上的USB端口中压一压,以便保证打印机的USB接口可以和主板完全接触,但这种方法只是权宜之计,毕竟随着时间的推移打印机连接线缆自身的重量会使线缆的接口逐步从计算机主板中脱落下来。为了有效避免这种故障现象的发生,我们可以考虑去挑选一条与打印机接口标准一样的USB延长线,然后尝试使用该USB延长线来连接打印机和计算机,这样会避免USB接口从主板中滑落下来。

2按顺序接线,谨防烧坏主板

笔者使用的是联想开天型计算机,最近系统由于病毒原因发生了瘫痪现象,当笔者费劲了九牛二虎之力重新安装好系统后,发现USB接口的打印机不能正常使用了,随后尝试着将打印机插入到计算机的前后四个端口中,打印机都不能正常使用,最后笔者将打印机搬到其他人的计算机中时发现它能够正常使用,而把别人可以正常使用的打印机连接到自己计算机中时,立即就不能正常使用了,这到底是什么原因呢?我们又该如何来应对该故障呢?

从上面的故障现象中。我们不难发现USB接口的打印机自身没有任何问题。毕竟该打印机连接到其他用户的计算机中时可以正常工作,而其他用户的打印机一旦连接到自己的计算机中时,又不能正常工作了,这表明自己计算机的USB接口已经受到了损坏。而要是计算机前后四个USB端口都不能正常使用的话,那基本上就能肯定计算机主板中的USB控制芯片或相关的连接控制线路已经被烧坏。考虑到USB接口自身就带有5V大小的供电电压,一旦USB连接线路的顺序搞错的话,或者在连接USB接口时不小心将引脚弄错的话,就容易将主板烧毁,从而引发USB接口的打印机无法使用的故障。要想解决这样的故障,唯一的办法就是重新更换新的主板,这样才能使计算机的前后USB端口工作状态恢复正常。

3安装随机驱动,消除接口兼容故障

有一USB接口的打印机,在每次接通电源使用时发现它对我们发出的打印操作不进行任何响应,可是将它的接口拔出来重新再插一次时。打印机就能立即正常响应我们的操作了,那这种现象究竟是什么原因造成的呢?我们该怎样快速解决该现象呢?

既然USB接口的打印机在初次使用时,无法响应我们所发出的任何操作,那表明Windows系统没有正确配置好打印机的接口。而通过重新插拔一下打印机的接口,就能让打印机恢复正常的响应能力,那就表明打印机的USB接口兼容性不太好,此时我们不妨尝试着更换打印机所连的计算机主板USB接口,如果在每次接通电源使用时还不能让打印机恢复正常响应能力的话,那我们就需要将打印机随机的驱动程序重新安装一下,这样可以让打印机所连的USB接口工作在最合适的状态,以便消除兼容性不好的问题。

4检查BIOS参数设置,激活主板USB功能

有一台计算机自从挑选到手后。就一直没用过它的USB端口,最近因为工作原因需要使用USB接口的打印机。但是将打印机接入到计算机主板中的USB端口后,笔者发现Windows系统无法自动识别到打印机。起初笔者还认为是操作系统版本较低不支持自动识别新硬件。于是用手工方法单独安装了打印机驱动程序,但安装好打印驱动后,Windows系统还无法识别到打印机。难道是打印驱动没用,笔者内心不禁自言自语道。为了检验是否是打印机自身的问题,笔者特意将该打印机搬到单位,并将它接入到单位的计算机中,接好后系统竟然可以识别到打印机,很明显USB打印机自身不存在任何问题,那么为什么笔者自己的计算机识别不到打印机呢?

USB接口故障 篇4

故障现象:近段时间,朋友打电话给我,说主板的USB接口好像坏了,我赶到朋友处,他说把MP3插到主板自带的USB接口时,机器识别不到设备。开始他还以为MP3坏了,于是拿MP3到其他人的电脑试却能够正常使用。我想了想,看到他安装的是Win98,可能是驱动出了问题,重装了该MP3自带的驱动,系统还是不能识别MP3,最后干脆装了WinXP,也解决不了问题,

分析解决:我拆开主机,观察了两个主板自带的USB接口,并没有发现烧毁的迹象。而这时朋友急着使用USB接口,我只好把针式的USB扩展卡插到主板上用,而扩展卡带的USB接口却能够使用,看来USB控制器并没有损坏,问题出在主板自带的USB接口上。由于一时找不到解决方法,也只能暂时作罢。而这时朋友的一句话提醒了我,近段时间天气太潮湿了,显示器往往要预热一会才能点亮。会不会是潮湿导致了故障的产生呢?于是我赶紧拿来电吹风,对USB接口吹热风5分钟,最后开机进入系统,插入MP3后系统能够识别到该设备了,故障终于排除。

USB打印接口 篇5

1 系统总体结构

该仪器以C8051F020为核心,包括了信号的前置放大电路、液晶显示模块、键盘接口及USB接口等外围模块。系统整体结构框图见图1。

2 US B接口芯片

系统中USB接口芯片采用南京沁恒电子生产的CH375,CH375是一个USB总线的通用接口芯片,支持USB-HOST主机方式和USB-DEVICE/SLAVE设备方式。在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到DSP/MCU/MPU等控制器的系统总线上。在USB主机方式下,CH375还提供了串行通信方式,通过串行输入、串行输出和中断输出与DSP/MCU/MPU等相连接。

CH375在USB从机模式下内置了USB通信中的底层协议,具有省事的内置固件模式和灵活的外置固件模式。在内置固件模式下,CH375自动处理默认端点0的所有事务,本地端单片机只负责数据交换,单片机程序非常简洁。在外置固件模式下,由外部单片机根据需要自行处理各种USB请求,从而可以实现符合各种USB类规范的设备。

CH375的USB主机方式支持常用的USB全速设备,外部单片机可以通过CH375按照相应的USB协议与USB设备通信。CH375还内置了处理MassStorage海量存储设备的专用通信协议的固件,外部单片机可以直接以扇区为基本单位读写常用的USB存储设备(包括USB硬盘、USB闪存盘、U盘)[1,2]。

3 US B电路设计

USB接口设计采用了USB主从模式设计,当系统工作在主机模式下时,该系统可以检测、识别、配置并访问USB存储设备;当系统工作在从模式下时,该系统可以通过USB接口实现与计算机的通信,一方面可以将数据传送到计算机;另一方面计算机通过上位机应用程序可以实现对系统的控制。双模式下USB接口的功能见第94页图2。

在CH375芯片的复位期间,TXD引脚用于选择通信接口。如果CH375在复位期间检测到TXD引脚为低电平则启用并行接口,否则启用串行接口。如果启用串行接口,那么复位完成后TXD引脚将用于串行数据输出,并且CH375芯片只能工作于USB主机方式。

系统中CH375芯片的TXD端通过1K的下拉电阻接地,这样CH375在复位期间检测到TXD引脚为低电平,因此启用并行接口方式。C8051F020单片机控制CH375的电路及主从动态切换电路见图3、图4。

4 系统软件设计

系统软件设计包括单片机端软件设计和从模式下计算机端的应用界面设计,单片机端的软件包括USB主从模式下的固件程序设计。

4.1 主机模式下软件设计

嵌入式USB主机系统的核心软件包括USB主机协议的系统软件、Mass Storage类协议软件及FAT文件系统软件3个部分,USB主机协议的系统软件设计将部分实现PC上USB主机的USB核心驱动程序的功能。单片机读写U盘的程序流程见图5、图6。

4.2 从机模式下固件程序设计

从机模式下CH375专门用于处理USB通信,当CH375接收上位机发送的数据或发送完给上位机的数据后,以中断方式通知单片机[3]。本地端单片机程序主要完成CH375的初始化和数据的接收与发送(见图7)。

4.3 PC端USB驱动程序及应用程序界面设计

4.3.1 PC端USB驱动程序

Windows操作系统下,对计算机接口的编程采用Windows操作系统与计算机外部接口设备通信方式,Windows系统下应用程序与接口设备通信流程结构见图8。

在Windows下每个应用程序和驱动使用自己的语言与操作系统通信,应用程序使用Win32API函数,驱动通信使用IO请求包(IRPs)结构。每个IO请求包(IRPs)请求或执行一个单个的输入输出动作,USB设备驱动程序使用IRPs传递总线通信处理USB通信。

USB设备驱动程序使应用程序不需要知道物理连接信号和与该设备通信的协议等细节,直接通过使用Win32API函数与USB设备进行通信。购买CH375芯片时,设备商随盘提供CH375芯片的设备驱动程序,使用该驱动程序缩短产品的开发周期。

4.3.2 应用程序界面设计

CH375在计算机端提供了应用层接口,该接口是CH375动态链接库CH375DLL.DLL面向功能应用的API,包括设备管理API、数据传输API、中断处理API。通过该API中的文件函数可以实现对设备的控制。

Visual Basic6.0中没有专门用于处理USB接口的标准控件,因此在VB中通过调用CH375DLL.DLL中的API功能函数,实现应用程序对USB接口的控制(见图9)。

5 结束语

该文将双模式USB数据传输方式应用于便携式数据采集仪器中,充分体现了便携、灵活和可靠等优点。该设备既可以直接与PC机进行数据通信,工作于有计算机的实验室测试环境,也可以通过U盘作为数据传输中介,使设备工作于在线检测。本方案有效解决了传统数据采集仪器的局限,可以满足不同测试环境的要求,并且数据存储方便快速,具有广阔的应用前景。

参考文献

[1]张迎新,雷文,姚静波.C8051F系列SOC单片机原理及应用[M].北京:国防工业出版社,2005.

[2]马伟.计算机USB系统原理及其主/从机设计[M].北京:北京航空航天大学出版,2004.

USB打印接口 篇6

USB2.0接口是一种实现USB2.0协议通信的计算机外围接口设备, 具有支持热插拔、即插即用、通信可靠、数据传输速率高等优点, 在实际生产生活中得到了广泛应用, 一般由固件、软件和硬件电路组成。其中的固件是固化在集成电路内部的“软件”, 通常存储于EPROM或FLASH存储器中, 负责USB2.0接口最基础、最底层的工作。它和负责上层工作的软件一起构成了接口的灵魂, 很大程度上决定了接口的功能和性能。因此固件和软件的设计一直是USB2.0接口开发中的重点与难点。

2、USB2.0协议

USB, 即通用串行总线, 是一种标准的连接接口, 支持PC主机同时连接多个外部接口设备。其最初于1995年由Compaq、IBM、Intel、Microsoft等七个计算机与通信工业领先的公司所组成的联盟定义和加以推广。相比较旧的USB1.1标准, USB2.0标准在兼容1.1规范中的低速设备和全速设备的基础上新加入了高速设备, 最大传输速度可达到480Mbps。

USB的总线结构采用阶梯式星形的拓扑结构, 包括USB Host (主机) 与USB设备。其中, USB设备包含USB Hub (集线器) 与USB Node (功能设备) 两种类型。在总线结构中, 任何USB系统中只能有一个USB主机, 位于总线结构最顶端。USB主机往下可连接USB集线器, 再由集线器按阶梯式的方式往下扩展出去, 连接到下一层, 总线结构允许的最大阶梯层数是7层。

3、USB2.0接口固件、软件结构

本文中的USB2.0接口硬件结构如图1所示, 包括DSP、USB微控制器两部分。其中DSP负责实时处理输入信号, USB微控制器负责实现与PC主机间的USB2.0协议通信。在DSP与USB微控制器中分别有DSP固件程序和USB微控制器固件程序与相应硬件密切配合、实现既定功能。最后由PC机软件接收USB接口数据, 在PC主机上进行数据分析和显示。因此, USB2.0接口的固件、软件共包括DSP固件、USB微控制器固件和PC机软件三部分, 其结构如图2所示。其中, 由于DSP固件主要实现实时数据处理, 与USB2.0协议无关, 在此就不加赘述。

4、USB2.0接口固件设计

USB接口固件位于USB微控制器CY7C68013A中, 用于控制USB微控制器实现USB2.0协议。为加速USB外围设备的设计, 在进行本接口USB固件开发时充分利用了Cypress公司EZ-USB FX2系列USB微控制器固件编程框架。该框架利用8051程序代码实现EZ-USB FX2芯片的起始设置、USB标准设备请求的处理以及USB闲置模式的电源管理服务。其所包含的各个文件见表1。

USB协议定义了四种传输类型:控制传输、中断传输、批量传输和等时传输。除控制传输用于主机与设备间的配置、命令及状态操作, 在每种应用中均需用到外, 其余三种传输分别针对不同应用。其中, 批量传输适合于需要传送大量数据的应用场合。由于批量传输具有出错重传机制, 传输速度高, 可最大程度利用USB总线带宽, 因此在本设计中采用批量传输作为USB数据传输方式, 相应地在固件程序中设置微控制器对应端点为批量传输方式。

在实际开发中根据实际情况对文件中的各用户任务函数作编程修改, 实现了USB2.0协议。在程序开始, 首先初始化所有的内部状态变量, 调用用户初始设置函数TD_Init () , 配置USB接口为未配置的状态并使能中断, 接着开始重新设备枚举并等待枚举完成, 最终进入while (1) 循环, 调用用户任务函数TD_Poll () , 并根据情况分别调用其他用户任务函数。

5、USB2.0接口PC机软件设计

PC机软件的设计包含用户操作界面设计和USB设备驱动程序设计两部分。用户操作界面用于分析、显示接收到的实时数据, 其在VC环境下使用MFC基于多文本框进行开发, 在编程中采用多线程编程技术实现界面显示和程序数据交互。在创建一个线程前, 首先创建一个新事件, 用来监视线程的执行时间, 并且设置各个操作的最长等待线程函数等待时间;然后创建线程, 在线程函数中执行操作;最后检查线程的执行结果并显示。

USB设备驱动程序采用DDK驱动开发技术, 依照WDM (Wind ows Drive Mode) 堆栈架构在VC环境下编程实现。具体设计工作包括:开发环境设置、驱动程序设计及安装文件 (INF文件) 设计等。

6、结语

本文设计了一种USB2.0接口的固件和软件。在设计中利用既有资源, 有效地减少了工作量, 提高了开发效率, 缩短了开发周期;采用USB批量传输方式和多线程编程技术, 提高了接口数据传输率, 将界面显示和程序数据相融合;设计方法灵活、适应性强, 稍加改动即可应用到其他USB接口设计中。实践证明了它的正确性和实用价值。

摘要:本文介绍了一种USB2.0接口中的微控制器固件和PC机软件设计。根据USB2.0协议特点, 本文在固件设计中采用USB批量传输方式, 在实现USB2.0协议通信的同时, 有效地利用了USB协议带宽;同时在软件设计中采用多线程编程技术, 较好地实现了界面显示和程序数据交互, 具有较高的实用价值。

关键词:USB2.0接口,批量传输,多线程

参考文献

[1]周立功等.USB2.0与OTG规范及开发指南[M].北京航空航天大学出版社, 2004.

[2]许永和.EZ-USB FX系列单片机USB外围设备设计与应用[M].北京航空航天大学出版社, 2002.

[3]Texas Instruments.TMS320C6713B Floating Point Digital SignalProcessor Data Sheet[Z].Texas Instruments, 2005.

[4]Cypress Semiconductor.EZ-USB FX2LP USB MicrocontrollerCY7C68013A Data Sheet[Z].Cypress Semiconductor, 2005.

[5]Cypress Semiconductor.EZ-USB Technical Reference Manual[Z].Cypress Semiconductor, 2005.

[6]Cypress Semiconductor.Anchor EZ-USB Frameworks[Z].CypressSemiconductor

[7]钱峰.EZ-USB FX2单片机原理、编程及应用[M].北京:北京航空航天大学出版社, 2006.

[8]Christ Cant, 孙义译.Windows WDM设备驱动程序开发指南[M].北京:机械工业出版社, 2000.

USB打印接口 篇7

目前市面上的USB设备接口芯片种类繁多,可选择的范围也很广泛。CH375是一款具有USB主控和设备功能的(Host/Device)双角色芯片。CH375的设备方式下,CH375芯片功能特点如下:

1)产品制造商可以自定义厂商标识(Vendor ID)和设备标识(Device ID);

2)通用的本地8位数据总线,4线控制:读选通、写选通、片选输入、中断输出;

3)它符合USB1.1版本规范,具备全速设备接口;

4)主端点上传下传缓冲区各64字节,辅助端点上传下传缓冲区各8字节;

5)支持5 V电源电压和3.3 V电源电压,CH375A芯片还支持低功耗模式。

2 系统硬件设计

2.1 USB接口设计

C H 3 7 5芯片提供了通用的被动并行接口,C H 3 7 5以总线方式挂接在单片机数据总线上,与多个外围器件共存。单片机可以与CH375进行通讯操作,当CS375(即CS#)为低电平时;D7~D0上的数据会被写入CH375芯片中,当RD#为高电平并且CS#和WR#及A8都为低电平时;D7~D0上的数据会被作为命令码写入CH375芯片中,当RD#为高电平并且CS#和WR#都为低电平而A0为高电平时。

CH375芯片的UD+和UD-引脚直接连接到USB总线上。CH375芯片内置了电源上电复位电路,并可以产生复位信号。为确保上电复位次序,本系统设计中,单片机的复位信号是通过CH375产生的。

CH375芯片正常工作时需要提供12MHz的外部时钟信号,在XI和XO引脚之间连接一个标称频率为12MHz的晶体,分别为XI和XO引脚对地连接一个容量为30p F的高频振荡电容。CH375芯片支持5V电源电压或者3.3V电源电压。本系统使用5V工作电压,并且V3引脚处外接容量为0.01u F的电源退耦电容。

2.2 片选译码电路设计

单片机[2]是通过片选信号/CS、读写信号线WR、/RD和地址线A0的联合控制实现对CH375的访问。因为外围总线上扩展了多个器件,需要多个译码逻辑实现总线分配,因此采用了如图1所示的译码电路连接。

此处选用的GAL是可编程阵列逻辑,主要用于通过地址译码给各个芯片产生片选信号。GAL器件在电路结构上采用了可编程输出逻辑宏单元,可由用户定义每个输出管脚的逻辑组合方式。因此,一片GAL可通过不同的编程从而实现多种标准逻辑芯片组合才能实现的功能,不仅简化了电路设计过程,减小体积并降低成本,而且可靠性也得到了极大的改善。同时GAL器件采用电可擦除的CMOS工艺,可以用电压信号擦除并可重复编程。

2.3 A/D接口设计

A/D转换部分采用的器件是TLC2543,电路设计如图2所示。TLC2543是德州仪器公司生产的12位开关电容型逐次逼近模数转换器,采用简单的3线SPI串行接口可方便地与控制器进行连接,是12位数据采集系统的最佳选择器件之一。

3 系统软件设计

在USB系统中,其软件包括以下几个部分:主机应用程序、设备驱动程序和设备固件程序。根据USB协议,在一个USB系统中,任何一次通讯都是由USB主机发起的,USB设备根据主机发来的命令给予响应,执行相应的操作。

3.1 设备驱动程序设计

Windows提供了一些标准设备如:大容量存储设备、人机接口设备等的驱动程序,但对于用户自行开发的非标准类的应用设备,还需要自行编写、加载驱动程序。驱动程序是保证应用程序正确访问设备的软件组件,使得应用程序无须知道物理连接、信号和与设备通讯所需协议等细节,仅需通过外设名字访问外设或目的端口。

驱动程序通过在应用层和硬件专用代码之间的转化来完成它的任务。编写驱动程序,必须遵循微软在WIN98及其更新版本中为用户定义的WIN32驱动模式。这些驱动程序就是WDM(Win32Driver Model——设备驱动程序模型),它的扩展名为.sys。USB驱动程序的编写与硬件相关,属于核心模式。另外,Windriver是一款专业的设备驱动程序开发工具,相比DDK开发要简单些,利用它开发设备驱动程序,开发者不需要深入了解操作系统内核。Win Driver for USB也已发布,Win Driver USB使程序员可以开发基于USB接口的高性能设备驱动程序。

3.1.1 使用Windows DDK开发驱动程序

Windows DDK(Device Driver Developer's Kit)是微软公司提供的一个开发Windows驱动程序的工具。使用DDK开发驱动是一个比较传统的方法,其过程如下:

1)根据要变异的驱动程序类型,选择编译环境。注意,这里的环境和运行的操作系统没有关系,例如,在Windows XP环境下,可以编译Windows2000环境下的驱动程序。

2)DDK提供编译驱动程序的环境,在该环境下进入与编译的驱动程序所在的目录,输入build即可开始编译。

3)build将会在这个目录中寻找一个叫sources的文件,这个文件告诉编译程序,应该怎么做。

3.1.2 即插即用(PNP)处理例程的编写(IRP_MJ_PNP)

驱动程序初始化完成后,接着必须对设备进行初始化。Pn P管理器调用驱动程序中Add Device例程来初始化该驱动程序控制的每个设备。当一个驱动程序从Pn P管理其中收到IRP_MN_START_DEVICE请求时,驱动程序使设备启动并且准备好处理IO操作。

对设备进行停止或者卸载时,需要等待其余IRP都操作完毕。为了在驱动程序中知道这一点,可以采用一个类似于信号量的计数器,在一个IRP开始的时候使此计数器增加1,结束时使其减少1。

3.2 动态链接库

在本系统应用中,CH375的制造商提供了设备方式下的标准驱动CH375WDM.INF和动态链接库:CH375DLL.DLL,通过加载驱动信息可以在应用程序中直接调用动态链接库。CH375在计算机端提供了应用层接口,应用层接口是由CH375动态链接库DLL提供的面向功能应用的API,所有API在调用后都有操作状态返回,但不一定有应答数据。CH375动态链接库提供的API包括:设备管理API、数据传输API、中断处理API。(相关API参数的未列出。)

3.2.1 设备管理API

打开设备:CH375Open Device

关闭设备:CH375Close Device

获得驱动程序版本号:CH375Get Drv Version

获取USB设备描述符:CH375Get Device Descr

获取USB配置描述符:CH375Get Config Descr

复位USB设备:CH375Reset Device

设置USB数据读写的超时:CH375Set Timeout

设置独占使用当前C H 3 7 5设备:CH375Set Exclusive

3.2.2 数据传输API

读取数据块(数据上传):CH375Read Data

写出数据块(数据下传):CH375Write Data

放弃数据块读操作:CH375Abort Read

放弃数据块写操作:CH375Abort Write

写出辅助数据(辅助数据下传):CH375Write Aux Data24

3.2.3 中断处理API

读取中断数据:CH375Read Inter

放弃中断数据读操作:CH375Abort Inter

设定中断服务程序:CH375Set Int Routine

本设计采用VB6.0作为计算机端应用软件的开发平台,首先需要将CH375的动态链接库、驱动程序复制到计算机中。在设备初次连入计算机USB口时,系统会自动提示设备连入,要求加载驱动。将路径指向驱动所在目录即可完成加载。在VB开发中,需要将动态链接库的访问入口添加至VB6.0的项目中。动态链接库的使用,简化了USB设备开发的步骤,降低了开发难度,为系统调试节省了时间。

3.3 客户应用程序与设备间通讯

通过动态链接库的数据传输函数,CH375在计算机应用层与本地端单片机之间提供了端对端的连接。客户应用程序与设备固件间的通讯采用请求加应答方式。此通讯方式具有较好的交互性和可控性。

请求加应答方式使用一个下传的主动请求和一个上传的被动应答进行交互式的双向数据通讯,下传与上传一一对应,相互关联。所有的通讯都由客户应用程序发起,然后以接收到单片机的应答结束。

3.4 固件程序设计

单片机端程序设计包括I2C器件数据读写、LCD信息显示、按键扫描相应、A/D数据采集及USB接口处理等部分。CH375与单片机之间设计成完全的中断驱动:当单片机处理前台任务时,USB的传输可在后台进行,这样不仅确保了最佳的传输速率和更好的软件结构,也简化了编程和调试。后台ISR(中断服务程序)和前台主程序循环之间的数据交换可以通过事件标志和数据缓冲区来完成。

3.4.1 USB接口处理程序

CH375芯片专门用于处理USB通讯,在从主机接收到数据后或者向主机发送完数据后,CH375以中断方式通知单片机进行处理。

3.4.2 数据采集程序

对于A/D数据采集的程序处理,根据模拟量的不同特点和采用需求,可以采用不同的方式。对采样周期要求严格的数据采样,可以将事件处理放到定时器中断里进行。

4 结论

与基于串口和基于板卡的数据采集系统相比,基于CH375的USB数据采集系统具有即插即用、数据传输速度快、易使用以及低成本的特点。该系统还可以与RS485总线结合起来,实现远程多点数据的采集。

摘要:USB总线在嵌入式系统中的一个典型应用令众多的学者和技术开发人员在这方面进行了研究和探索,即基于USB总线的数据采集系统的实现。USB总线应用于数据采集系统[]即插即用的优点,以及具有较高带宽,而且可以利用计算机的强大计算功能进行数据[1]处理和分析。与传统的串口相比,USB显然具有速度上的优势;相对于基于ISA、PCI总线扩展板卡来说,USB无疑具有灵活方便的特点,且具有良好的扩展性能。当然USB也有着固有的缺欠,如不适合远距离数据传输的场合。本文主要就如何实现USB设备的方式进行阐述,重点在于对USB设备应用方式的掌握。

关键词:CH375,USB接口,单片机,软件设计

参考文献

[1]周振宇,谷海颖.基于USB总线的实时数据采集系统的设计[J].电子技术应用,2002.

USB打印接口 篇8

华硕Z97-A/USB 3.1主板采用了Intel Z97芯片组,支持Haswell及Haswell Refresh全系列处理器,CPU供电部分采用了强劲的8相DIGI+数字供电,能够实现对电源的精确控制,极大地提升供电效能,让日常使用和超频都有比较不错的表现。

内存插槽方面,该主板配备了4条DDR3 DIMM内存插槽,支持DDR3 3200(OC)/ 3100(OC)/3000(OC)/2933(OC)/2800(OC)/2666(OC)/2600(OC)/2400(OC)/2200(OC)/2133(OC)/2000(OC)/1866(OC)/1600/1333双通道内存,最大支持容量为32GB。磁盘接口方面,该主板拥有4个SATA3接口,1个SATA Express 接口(兼容 2 x SATA 6.0 Gb/s 端口),同时还拥有一个M.2固态硬盘接口,存储需求可以得到很好的满足。扩展插槽方面,该主板配备了2 x PCIe 3.0/2.0 x16 扩展卡插槽 (x16 或双槽 x8) ,1 x PCIe 2.0 x16扩展卡插槽 (x2 模式) ,2 x PCIe x1扩展卡插槽 ,2 x PCI扩展卡插槽,能够满足玩家对扩展的需求。

网络方面,华硕Z97-A/USB 3.1采用了Intel千兆网卡,为游戏玩家带来更高的网络处理效率,有效降低CPU负载,强化大型数据封包的处理能力。

作为业界的领导者之一,华硕Z97-A/USB 3.1通过板载的ASMedia USB 3.1 控制器在背板上搭载了2个USB 3.1 端口(向下兼容USB3.0/USB2.0),USB 3.1提供了双信号10Gbps的传输速率,能够带来超越USB3.0两倍以上的传输速度,让拷贝大容量文件不再痛苦。作为市面上首批支持USB3.1规范的主板,华硕Z97-A/USB 3.1为USB3.1接口的普及做好了铺垫。

USB打印接口 篇9

随着USB2.0规范的推出, USB总线的最高数据传输速率可达到480Mbit/s, 这进一步延伸了它的使用范围, 越来越多的设计者在设计嵌入式系统或者计算机外围设备时开始采用USB总线进行数据传输, 为了保证高的数据传输速率, 许多USB接口芯片提供了直接存储器存取 (D M A) 方式, 通过使用DMA方式, 能使大量数据在计算机外围设备与USB接口芯片之间直接传输, 从而保证USB总线上数据的吞吐量。本文以Philips公司 (现独立为NXP公司) 的ISP1581USB接口芯片为例, 介绍USB接口芯片的DMA传输应用。

硬件电路设计

ISP1581是USB2.0接口芯片, 它有7个IN端点, 7个OUT端点和1个固定的控制IN/OUT端点, 内部集成8K字节的多结构FIFO存储器, 特别是它有一个灵活的高速D M A接口, 大大增加了数据的吞吐量, 其内部DMA组成框图如图1所示。

D M A硬件由D M A接口及D M A控制器组成, 通过初始化D M A相关寄存器及发送DMA命令可以选择D M A的工作方式, 即两字节的通用DMA传输或者三字节的IDE规范传输, 本文主要介绍通用DMA的应用, 通用D M A有两种工作方式, 即主机D M A (M D M A) 和从机D M A (G D M A) 方式, M D M A时芯片内的D M A控制器作为主控方, 由它产生D M A传输需要的控制时序, G D M A时, 需要在外部单独设计一个D M A控制器 (外设D M A控制器) 并作为主控方, 并由它产生传输所需控制时序。由于D M A控制器和USB内核使用的是同一个FIFO (内部R A M) , 所以D M A控制器接收到D M A命令后, 可直接控制数据从内部R A M传送到外部D M A设备或从外部D M A设备传送到内部RAM。图1中各信号的含意如下:

D0~D 1 5:D M A传输数据线, 双向。

D R E Q:D M A请求信号, G D M A时输出, M D M A时输入。

D A C K:D M A应答信号, G D M A时输入, M D M A时输出。

D I O R:D M A读信号, G D M A时输入, M D M A时输出。

D I O W:D M A写信号, G D M A时输入, M D M A时输出。

EOT:GDMA传送终止信号, 输入, 主要用在G D M A方式。

其它信号主要用在IDE规范传输中, 在此不作介绍。由于G D M A方式数据传输速度更高且使用灵活, 所以下面主要介绍G D M A的应用。

图2是GDMA应用框图, 是某自动测试设备数字I/O板的一部分, 图中ISP1581外接单片机 (AT89C55) 作为控制器, 单片机同时也是该板的控制核心, 存储器选用256K×18bit双口RAM (IDT70V631) , ISP1581采用G D M A方式读写该双口R A M, 外设D M A控制器在可编程器件FPGA中实现。

系统的工作过程是:当主控计算机需要和数字I/O板大批量交换数据时, 向ISP1581发出批量传输命令, 批量传输命令中包含了数据的传输方向, 数据个数等信息, ISP1581接收到命令后, 通过中断方式通知单片机中的固件读取该命令, 固件完成对D M A的初始化, 如选择D M A端点, 初始化D M A计数器, 发送DMA命令等, ISP1581内部的DMA控制器在准备好后, 将发出D R E Q信号给外设D M A控制器, 外设D M A控制器接收到DREQ信号后, 做好数据传输准备, 回应一个DACK信号, 然后产生DIOR或者D I O W完成D M A传输。

外设D M A控制器是在F P G A中完成设计的, 要正确设计G D M A控制器必需了解GDMA模式的工作时序 (见图3) 。图中已经初始化DREQ高有效, DACK低有效, DIOR和DIOW低有效, Tcy1为D M A读写周期, 最快为12.8MHz, 本设计使用10MHz。Tsu3为D I O R/D I O W有效前的DACK建立时间, 最小可以为0。

外设DMA控制器电路设计如图4所示, 当固件对ISP1581完成初始化并发出DMA传输命令后, ISP1581内部的DMA控制器在准备好传输后发出DREQ信号 (高电平) , 对该信号反相后可作为DACK信号 (低电平) , 图中R/信号为DMA读写控制信号, 可以由固件控制产生, 该信号和D A C K及1 0 M H z时钟信号相或后产生D I O R及DIOW信号。例如GDMA工作于写方式, 数据从ISP1581内部RAM传送到外部双口R A M, 控制器在接收到有效的DREQ信号后, 经过反相, 作为DACK信号回应ISP1581的DMA控制器, 这时候固件通过控制R/为高, 该信号反相后与D A C K及1 0 M H z时钟相或产生DIOR, 控制数据从内部RAM传送到外部双口RAM。双口R A M的控制信号及地址产生电路设计较为简单, 可以结合D I O R及D I O W信号来产生。

软件设计

U S B固件中实现D M A传输的相关程序包括初始化程序及传输控制程序, 其信息处理流程如图5所示。

首先对D M A进行初始化, 即设置一系列相关寄存器:D M A配置寄存器、D M A硬件寄存器、D M A中断使能寄存器、D M A中断源寄存器、D M A端点寄存器、D M A传输计数器寄存器、D M A命令寄存器等, 初始化程序如下:

初始化完成后, 接收PC机发来的D M A传输命令, 该命令包含了数据的传输方向, 数据个数等信息, 然后设置DMA传输标志, 主程序在检测到该标志后, 调用DMA传输子程序, 在该子程序中, 根据DMA传输方向情况分别进行D M A读写处理, 在发出D M A读或者写命令前还需要对D M A端点寄存器、DMA传输计数器寄存器进行初始化, 完成这些工作后, I S P 1 5 8 1 D M A控制器将向外设D M A控制器发送D M A传输请求信号DREQ, 外设在准备好传输后, 返回应答信号D A C K, 然后启动外设D M A控制器开始DMA传输, 一次DMA传输最大1 0 2 4个字节, 一次是否传输完成通过检测DMA中断寄存器的标志位DMA_XFER_OK及EXT_EOT进行判断, DMA_XFER_OK为1, 表明D M A传输结束, E X T_E O T是强行结束GDMA传输的外部信号, 本设计没有使用, 已经固定接为高电平 (无效状态) , 如果需要传输的数据大于1024字节, 则需要多次传输才能完成, 在传输完成后清除DMA传输标志。

结语

通过采用D M A传输方式, USB在传输不大于1024字节数据时传输速度达到10M字/秒, 但当需要传输的数据远大于1024字节时, 由于DMA传输需要固件支持, 实际的传输速度有所下降, 设计中可以通过提高单片机的工作时钟来改善USB的传输速度。本设计已经成功应用到某测试设备中, 提高了系统的数据传输速度, 达到设计要求。

摘要:在USB接口和USB外设之间使用DMA方式传输数据, 大大提高了USB传输数据的吞吐量。本文介绍了基于ISP1581USB接口芯片的DMA传输应用。

关键词:ISP1581,USB2.0,DMA控制器,固件

参考文献

[1].Philips Semiconductors公司, ISP1581Programming Guide[EB/OL], (2002年3月) .http://www.flexiusb.com

[2].广州周立功单片机发展有限公司, ISP1581:USB2.0高速接口器件, [EB/OL].http://www.zlgmcu.com

[3].刘瑰、马鸣锦、朱鸿宇, 基于USB接口芯片的DMA应用, 电子技术, 2004, (2)

[4].孙涵芳、徐爱卿, 单片机原理及应用, 北京航天航空大学出版社, 1996

USB打印接口 篇10

医学超声内窥镜就是一种无损检测技术,它可以同时检测器官表面和组织断层,发现早期病变,是当前应用前景非常广阔的医疗仪器[1]。随着超声内窥镜技术的发展和不断的完善,对超声内窥镜的便携性、可靠性也有越来越高的要求。其中超声图像采集接口的研究对超声内窥镜的成像质量、成像速度以及仪器的便携性有重要的影响。

本系统所采集的图像为512×512的8bit灰度图像,每一幅图像的大小为256KB,要达到较好的实时显示效果,帧频需要达到20Hz以上,因而需要数据传输速率大于5MB/s。本文研究USB2.0协议和不同类型USB总线实现方案,选择USB同步传输方式,完成超声成像系统采集接口设计,包括FPGA程序设计、固件程序设计、驱动程序设计和应用程序,实现超声图像的实时传输与显示,在实验中验证系统的可靠性与稳定性。

1 USB同步传输系统方案设计

1.1 USB同步传输的理论

USB (Universal Serial Bus,通用串行总线)是计算机连接外部设备的一种串行总线标准,它由于具有设备安装和配置容易、速度快、易于扩展、使用灵活等优点,所以现在的应用越来越广泛。

USB具有4种传输方式:控制传输、批量传输、中断传输和同步传输。其中,控制传输用于在设备连接主机时,对设备进行配置。每个USB设备必须支持控制传输。中断传输多用于传输少量的,对时间要求比较严格的数据,如键盘、鼠标等。批量传输方式和同步传输方式都可以实现海量数据的传输。批量传输方式是目前USB数据采集系统中最常用也是使用最多的传输方式。这种传输方式实现较容易,但是实际传输速度受到各种因素(如USB设备的多少)的影响一般在10MB/s左右,而且速度不稳定。而使用同步传输方式,主机会为同步传输分配固定的带宽,可以保证在数据传输过程中速度是稳定的。因此对实时显示设备需要使用同步传输方式。

USB同步传输方式具有时间临界的特性,经常应用在音频和视频的数据流传输中。一个同步信息包在高速方式时可达到1024字节。对于同步传输,传输的时间是最重要的请求信息。在每一个USB帧中,会声明某些带宽给同步传输使用。为减轻带宽分配的负担,同步传输没有设置任何握手包,而且也不会在发生错误时重试。错误检测仅限于16位CRC错误检验码。由于同步传输没有采用data-toggle机制,在高速方式中,同步传输使用DATA0、DATA1、DATA2和MDATA。在高速方式下,可以有3个同步信息包[3]。同步传输示意图(见图1)。

1.2 USB同步传输接口设计方案

本系统选用集成MCU的USB芯片——Cypress公司的EZ-USB FX2LP(见图2)。集成MCU的USB芯片的优点是MCU与控制器集成在同一片芯片里,MCU只需要访问一系列寄存器和存储器,便可实现USB接口的数据传输,大大简化USB设备的开发难度,而且可以最大程度的发挥USB高速的特点。

图2中可见,超声成像系统采集的图像数据首先存储在FPGA中,然后在FPGA向USB芯片提供的控制信号的作用下,将图像数据存入USB芯片FIFO中,再由USB芯片将FIFO中的数据传输入计算机进行显示、存储和处理。

图3是USB芯片和FPGA之间的连接示意图。其中Data[15:0]是FPGA和USB芯片之间的数据信号线,可以通过设置USB芯片内部的寄存器选择16位或8位总线;IFCLK是FPGA向USB提供的时钟信号;SLWR是写使能信号,低电平有效;FIFO ADR是地址选择信号,用于选择USB芯片的FIFO;PKTEND是强制完成信号,用于表示已经完成一个FIFO的写入。

2 USB同步传输系统的实现

2.1 FPGA程序的设计

在系统中,FPGA作为USB芯片的外部控制器,向USB芯片提供所需要的控制信号。在这些控制信号的作用下,FPGA将采集到的图像数据传入USB芯片的FIFO中,再由USB芯片将数据传入计算机。当写使能信号SLWR低电平时,在IFCLK的上升沿处,FPGA将数据总线的一个数据写入FIFOADR所指定的FIFO中。所以设计FPGA程序需要满足图4所示的时序要求。

2.2 固件程序的设计

固件程序是指运行在设备微处理器中的程序。它负责初始化各硬件单元、重新配置设备、实现设备的特定功能。它主要包括设备描述符信息、设备功能代码和通信控制功能代码。

固件程序是USB设备的核心部分,编写固件程序的主要目的是能够让Windows识别和检测到设备。

Cypress公司针对其EZ-USB系列的USB芯片给出一个Firmware库和Firmware框架,均使用Keil C51开发。用户只需要根据实际情况修改Fw.c、Dscr.a51、Periph.c三个文件,就可以开发出一个功能完善的USB设备。

本系统通过修改Fw.c、Dscr.a51两个文件实现USB同步传输的功能。

2.2.1 修改Dscr.a51中的端点描述符

2.2.2

修改Fw.c中的TD_Init()函数,对芯片内部寄存器进行初始化配置。本系统选用同步、AUTOIN的接口模式,端点大小为1024Bytes,每微帧包含2个数据包。经过配置后,USB同步传输的数据传输速度可以达到16MB/S。

2.3 驱动程序的设计

在Windows系统下,主机与设备之间的USB通信必须经过设备驱动程序来实现。USB功能驱动程序将应用程序发送的读设备请求,经过处理后转化为一系列小的urb/irp对,然后转发给USB总线驱动程序完成设备的读写(见图5)。

应用程序向设备发出读数据请求时,Windows操作系统将这个读请求转化为读IRP发送到相应的驱动程序。驱动程序程序接收到读IRP后,根据IRP的内容(包括读请求的数据量、读请求的管道号等)创建一系列小的子URB/IRP对,并且对每个子IRP设置相应的完成例程。然后将所有子IRP发送到总线驱动程序。总线驱动程序没完成一个子IRP后,进入该IRP的完成例程,判断所有子IRP是否完成,如果已经完成所有子IRP,则释放当前子IRP资源后返回,否则释放当前子IRP资源,等待下一个子IRP的完成。

2.4 应用程序的设计

在Windows中,应用程序与WDM驱动程序通信的过程是:应用程序先用API函数CreateFile打开设备获得设备句柄,然后调用API函数ReadFile、WriteFile或DeviceIoControl和WDM驱动程序通信,完成数据的读写。当应用程序退出时,用CloseHandle关闭设备。

需要注意的是,由于驱动程序使用GUID注册设备接口,应用程序使用CreateFileO函数打开设备时,这个函数的第一个参数(设备名字)需要使用一系列SetupDiXX函数获得(见图6)。

3 实验结果与分析

3.1 数据传输准确性实验

为验证USB同步传输系统设计的正确性,以FPGA模拟数据源,发送0~255递增的图像数据,数据传输速度为16MB/s。这时在数据总线最低位上可以检测到8MHz的方波(见图7)。

然后在应用程序中读取图像进行显示(见图8)。图8为512×512大小、灰度值0~255渐变的8bit图像。这说明USB同步传输系统数据传输的正确性,而且传输速度可以达到16MB/s。

3.2 加入超声成像系统进行实验

为验证USB2.0同步传输应用于超声系统中的正确性,将USB2.0同步传输接口加入到超声成像系统中对猪皮进行扫描成像。应用程序采集到的图像(见图9),可以看出USB2.0同步传输系统在超声成像系统中可以正常使用。

4 结论

本文通过深入研究USB2.0协议,对USB2.0同步传输方式进行深入理解。在此基础上,设计USB2.0同步传输接口的方案,完成USB2.0同步传输接口的FPGA程序设计、固件程序设计、驱动程序设计和应用程序设计。最后经过实验验证,证明USB2.0同步传输接口设计的正确性,数据速度可以达到16MB/s,并且可以应用于超声内窥镜成像系统,满足实时显示的要求。

参考文献

[1] 杨磊,郁道银,陈晓冬等.医用超声内窥镜高速成像系统的USB2. 0接口设计,传感技术学报,2006,9(3) :621~624

[2] 郭翔宇,胡绍民,樊振方.一种基于USB2. 0接口的高速 数据采集系统的设计,工业控制计算机,2009,(22) :40~41

[3] 申伟,裴东兴.基于USB2. 0的测试系统接口应用程序设计,计量与测试技术,2009,36(1) :55~57

[4] 王成儒,李英伟.USB2. 0原理与工程开发,北京:国防工业出版社,2004

[5] 武安河.Windows 2000/XP WDM设备驱动程序开发(第2版),电子工业出版社,2005

[6] 杨志坤,曾博,汤国文.基于FPGA的嵌入式系统USB接口设计,电子设计工程,2010,18(1) :30~34

[7] 乔立岩,吴江伟,徐红伟.数据采集卡USB2. 0接口设计,电子测量技术,2 010,33(1) :57~60

上一篇:二次系统优化下一篇:充分生成性