您的位置 首页 报告

嵌入式USB主机的硬件规划

通常情况下,打印机、海量存储等设备是由普通PC机来驱动的,由于大量的测控、医疗等系统需要存储、打印数据,因此开发这类设备的嵌入式驱动…

一般情况下,打印机、海量存储等设备是由一般PC机来驱动的,由于很多的测控、医疗等体系需求存储、打印数据,因而开发这类设备的嵌入式驱动对错常有有用价值的。现在,各种嵌入式设备根本上是经过软盘存储,并口打印的,而它们的存储容量、数据传输速度已大大落后当时各类嵌入式体系的需求。因而,开发依据USB接口的嵌入式海量存储设备和打印机驱动已成燃眉之急。

USB(Universal Serial Bus)是最近几年逐渐在PC范畴广为运用的新式串行接口技能,它通用性好、实时性强、传输方法多样、成本低、易于扩展和运用,这些长处使它遭到许多硬件厂商的喜爱,各种类型的USB设备产品很多涌入商场。USB通讯有必要是主机和外设通讯,每次通讯都是由主机建议,外设仅仅被动地履行主机发过来的指令。而商场上所买到和运用的USB 移动设备, 都是USB 的外设(device) , 如USB 的移动硬盘、USB 接口的数码相机、打印机等。这些设备一般只能经过PC 来进行彼此的文件和数据交换,没有了PC 机, 这些设备就无法进行数据交换。而实际上并非每个当地都具有PC机或许适宜运用PC机,因而业界和用户需求USB 主机的嵌入式化。也便是开发和规划嵌入式的USB 主机。

依据具体医疗仪器(酶标仪)的实际需求,咱们在三星的ARM7处理器 S3C44B0X上移植了实时操作体系(RTOS)——µC/OS-II,并编写了依据USB主操控器芯片SL811的底层驱动。为了能将酶标仪所检测的数据保存到外设(如U盘、移动硬盘)中,研讨了对应的文件体系和UFI传输协议,完结了对FAT文件体系的海量存储设备的读写。一起,为了打印霉标仪的检测成果,研讨了EPSON打印机的ESC/P打印言语,完结了EPSON C63系列、C65系列、ME1打印机依据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 )、打印光图画指令(ESC . c v h m N1 Nh d1 ⋯dk)等。

EPSON打印机供给两种打印方法,一种是用来打印文本文件,用该方法打印英文字母、阿拉伯数字、契合的时分向打印机发对应的操控指令后,只需直接发打印内容的ASCII码即可。另一种方法是用来打印光栅图形,当需求打印表格、图片和汉字的时分时往往会用到这种方法。在此,列出几个要害API函数并予已阐明:

print_image_init ( void ):由于打印机初始化后默以为打印文本形式,所以要打印光栅图形有必要进行相关的初始化。

print_image_command(unsigned int horiz_position,unsigned int verti_position, unsigned char rows, unsigned int columns, char color):调用该函数之前有必要事前至少调用过一次print_image_init(),它的功用是向打印机发打印图片指令。其间,第一和第二个输入参数是打印图形的横纵坐标,第三和第四个输入参数分别是打印图形的行数和列数(特别值得注意的是,C63系列和C65系列打印机一次最多可打16行,而 EPSON M1一次只能打15行),第五个输入参数color是挑选打印色彩。在调用该函数后,直接向打印机发打印的数据就能够完结打印图片功用了。迎拜访无由电子开发网(技能文章 在线阅览 在线商城

由于打印文本形式和打印图形的操作根本相同,并且更简略,在此就不作阐明。

3.4 USB协议的完结

这是整个USB 体系软件的根基, 它担任主机和设备之间数据传输。其代码都包含在文件sl811host.c中,可供上层驱动调用的API函数首要有:

EnumUsbDev ():该函数首要完结枚举设备的功用。当有USB设备插上时,体系经过调用到该函数得到设备的规范描述符(接口、装备、端点)并辨认是海量存储设备仍是打印机。设置地址(SetAdress),设置装备描述符(SetDecriptor),设置装备值(SetConfiguration),设置接口(SetInterface)也在该函数里完结。

BuckSend():该函数首要完结主机上的数据经过块传输方法发送到设备上;

BuckReceive():块传输承受函数;

BuckSend()和BuckReceive()两个函数是最调度最普通的两个函数,由于对海量存储设备的读写,对打印机发送操控指令、打印数据都是经过块传输通讯的,也便是经过调用这两个函数来完结的。

处理器读写SL811HS单个寄存器或数据存储器的函数如下:

void SL811Write(char a, char d){ SL811_ADDR = a;   SL811_DATA = d;}

char SL811Read(char a) { SL811_ADDR = a;    return (SL811_DATA); }

这两个函数是ARM处理器和SL811芯片进行数据交互的柱石,一切操控寄存器和数据存储器的读写都能够经过以上两个函数来完结。当需求接连读写SL811中的储存器时能够选用以下方法来完结,能够加速读写速度。

void SL811BufWrite(BYTE addr, BYTE *s, BYTE c)

{SL811H_ADDR = addr;   

   while (c–)

       SL811H_DATA = *s ;}

4 结 论

在依据实时内核µC/OS-II和32位RISC架构ARM7 Core的体系板上,咱们完结了嵌入式USB主机规划和开发,为酶标仪这一特定医疗设备供给了读写海量存储设备和打印的功用。经测验,本体系读海量存储设备数据的速度可达750kB/s,写数据的速度最高可达450kB/s;打印功用也彻底满意体系要求,功用安稳牢靠,运用方便,是一种可行、有用的计划。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/267286.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部