工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->基础电路图->电子入门电路图->采用ARM组成的嵌入式USB主机的硬件设计

采用ARM组成的嵌入式USB主机的硬件设计

作者:dolphin时间:2017-07-28

通常情况下,打印机、海量存储等设备是由普通PC机来驱动的,由于大量的测控、医疗等系统需要存储、打印数据,因此开发这类设备的嵌入式驱动是非常有实用价值的。目前,各种嵌入式设备基本上是通过软盘存储,并口打印的,而它们的存储容量、数据传输速度已大大落后当前各类嵌入式系统的需求。因此,开发基于USB接口的嵌入式海量存储设备和打印机驱动已成当务之急。
USB(Universal Serial Bus)是最近几年逐步在PC领域广为应用的新型串行接口技术,它通用性好、实时性强、传输方式多样、成本低、易于扩展和使用,这些优点使它受到许多硬件厂商的青睐,各种类型的USB设备产品大量涌入市场。USB通讯必须是主机和外设通讯,每次通讯都是由主机发起,外设只是被动地执行主机发过来的命令。而市场上所买到和使用的USB 移动设备, 都是USB 的外设(device) , 如USB 的移动硬盘、USB 接口的数码相机、打印机等。这些设备通常只能通过PC 来进行相互的文件和数据交换,没有了PC 机, 这些设备就无法进行数据交换。而实际上并非每个地方都拥有PC机或者适合使用PC机,因此业界和用户需求USB 主机的嵌入式化。也就是开发和设计嵌入式的USB 主机。
2 嵌入式USB主机的硬件设计
酶标仪的硬件平台核心为三星公司的S3C44B0X(主频最高可达66MHz),它集成了ARM7TDMI核,LCD控制器,是一款适用于中端应用的微控制器。系统扩展包括:存储器(8MB SRAM、2MB NOR Flash)、USB主从机(SL811HS)和按键等硬件资源。其中USB部分硬件连接如图1所示。

图1:硬件连接图
SL811HS 是Cypress公司推出的一款嵌入式USB Host/S1ave芯片。支持USB1.1的全速和低速设备。提供USB主机的硬件接口及总线管理的物理机制。带有在片的SIE和USB发送器以及在片的根集线器Hub.因此, 满足了嵌入式USB 主机系统所需要的功能, 即由主机接口芯片来完成总线底层物理数据包的发送、接收, 并能检测总线状态, 发出中断请求。所以, 选择SL811HS 作为本系统的USB接口芯片是合适的。
如图2所示,ARM通过Cs3片选SL811HS来确定SL811HS的基地址。D0-D7为数据和地址的复用线,并通过A0来区分,当A0为0的时候,D0-D7上传输的是偏移地址;反之,当A0为1的时候,D0-D7作为数据线用。
3 嵌入式USB主机的软件设计
3.1 嵌入式USB主机的软件总体框架
系统的软件平台核心为µC/OS-II,它是一个源码公开的、占先式多任务管理的实时操作系统内核,其性能完全可与许多商业产品竞争,已在相当多的系统中得到成功应用,是一个经实践证明稳定可靠的内核,且其核心代码短小精悍,简单易学。
USB 主机为USB系统提供的功能有:(1) 检测USB 外设的接入和移出;(2) 管理主机和外设之间进行的USB 标准流量控制;(3) 枚举外设; (4) 管理主机和外设之间的数据流; (5) 搜集系统状态和性能的统计信息;(6) 主机与外设之间的电气接口,包括供电。
USB协议规定了人机接口设备HID 类、MassStorage 类、音频类和打印类等一系列的设备类型, 用于支持不同的设备。根据实际需要,我们开发了USB接口的海量存储类设备和基于ESC/P打印语言的EPSON打印机嵌入式驱动程序。具体驱动程序栈如图2所示。该系统支持热插拔,可以知道识别插上是哪种设备,并调用对应的驱动。

图2:USB驱动程序栈
3.2 USB Mass Storage 类协议框架的实现
USB Mass Storage 类是USB 协议所定义的用来磁盘管理及大容量数据传输的。USB定义了两种海量存储传输协议,它们分别是Buck-only Transport 和Control/Bulk/Interrupt(CBI) Transport.由于目前市场上所出现的海量存储设备基本上都采用前者传输协议,即读写数据都是通过块传输来实现通讯。在命令包CBW (Command Block Wrapper)中包含了标志信息,数据长度以及UFI命令等信息。其中UFI命令含有格式化磁盘、读磁盘、写磁盘和读磁盘容量等一系列磁盘管理命令。
大部分移动存储设备都采用FAT文件系统来管理文件。整个文件系统通过Mass Storage 的UFI 命令与外设的磁盘建立联系。FAT文件系统将海量存储设备上的数据大致分成5个部分:MBR区(主引导区)、DBR区(系统引导区)、FAT区(文件分配表)、FDT区(文件目录表)和DATA区(数据区)。当有USB接口的海量存储设备插上后,系统读取MBR区和DBR区来获得每扇区字节数,每簇扇区数,FAT表个数等文件系统基本信息。获取这些基本信息后从海量存储设备读取一个文件的流程如图3示。因写文件和读文件的流程没有很大的差别,在此就不累述了。

3.3 基于ESC/ P打印控制语言的打印机驱动设计
EPSON公司的打印机基本上都是基于ESC/ P打印控制语言的,不同系列的打印机的控制语言没有太大的差别。因此,我们开发的驱动程序具有比较强的通用性,针对EPSON的C63系列打印机开发的驱动完全适用C65系列和ME1打印机。
各种型号打印机的编程手册可以到EPSON的开发网站上下载。编程手册对各种控制命令作了详细介绍,如初始化打印机(ESC @)、选择图形方式( ESC (C nL nH m )、设置单元大小(ESC (U nL nH m )、打印光栅图像命令等。
EPSON打印机提供两种打印方式,一种是用来打印文本文件,用该方式打印英文字母、阿拉伯数字、符合的时候向打印机发对应的控制命令后,只要直接发打印内容的ASCII码即可。另一种方式是用来打印光栅图形,当需要打印表格、图片和汉字的时候时往往会用到这种方式。在此,列出几个关键API函数并予已说明:
因为打印机初始化后默认为打印文本模式,所以要打印光栅图形必须进行相关的初始化。
调用该函数之前必须事先至少调用过一次print_image_init(),它的功能是向打印机发打印图片命令。其中,第一和第二个输入参数是打印图形的横纵坐标,第三和第四个输入参数分别是打印图形的行数和列数(特别值得注意的是,C63系列和C65系列打印机一次最多可打16行,而 EPSON M1一次只能打15行),第五个输入参数color是选择打印颜色。在调用该函数后,直接向打印机发打印的数据就可以实现打印图片功能了。迎访问无由电子开发网(技术文章 在线阅读 在线商城



评论

技术专区