快捷搜索:

USB接口芯片SL811HS的性能与内部结构及在单片机系

先容了CYPRESS公司临盆的主/从双事情模式USB接口芯片SL811HS的机能与内部布局,给出了SL811HS芯片在单片机系统中扩展USB接口的硬件电路,同时给出了该系统的USB驱动法度榜样及实现U盘读写功能的利用法度榜样。

1 小序

USB(通用串行总线)是INTEL、DEC、MI-CROSOFT、IBM等公司联合提出的、近来几年慢慢在PC领域广为利用的新型接口技巧。USB接口通用性好、实时性强、传输要领多样、资源低、支持即插即用、易于扩展且便于应用,这些优点使其获得许多硬件厂商的青睐。今朝各类类型的USB产品已大年夜量涌入市场,同时也被广泛地用在PC机及嵌入式系统中。

USB的拓扑布局中居核心职位地方的是Host(也称为主机),任何一次USB数据传输都必须由主机提讲和节制,所有的USB外设都只能和主机建立连接,任何两个外设之间或是两个主机之间无法直接通信。而今朝,扮演主机角色的大年夜多是小我电脑PC。而我们买到和应用的USB移动设备都是USB外设(device),如USB的移动硬盘、USB接口的数码相机等。所有这些设备都只能在PC上或经由过程PC来进行文件和数据互换。没有了PC,这些设备就“掉灵”了(指数据互换的功能)。

51系列单片机以其良好的机能、成熟的技巧高靠得住性、高性价比吸引了大年夜量海内用户,被广泛利用于测控和自动化领域。用51系列单片机实现USB主机接口,进而实现对USB外设的节制,对前进全部系统的数据存储、数据传输、设备节制等机能都有很大年夜的感化。本文应用51系列单片机W78E54和USB接口芯片SL811HS设计了一个USB主机接口,经由过程该接口可实现对USB外设U盘的读写节制,从而实现单片机数据采集系统的海量数据存储*。

2 SL811HS的布局机能

SL811HS是CYPRESS公司临盆的、可支持全速数据传输的USB节制芯片该芯片采纳28脚PLCC和48脚TQFP两种封装形式,且内含USB主/从节制器,支持全速(full-speed)/低速low-speed 数据传输,并能自动识别低速或全速设备。SL811HS所供给的接口服从USB1.1标准,可与微处置惩罚器、微节制器、DSPs相连,也可直接与ISA、PCMCIA及其它总线相连。SL811HS的数据接口与微处置惩罚器进行接口可供给8位数据I/O或双向DMA通道,并能以从机操作要领支持DMA数据传输。此外,经由过程中断支持还可以轻松地与Motorola、Intel 及其它浩繁类型的标准微处置惩罚器或微节制器相连。SL811HS内部有一个256字节的RAM,可用做节制寄存器或数据缓冲器。SL811HS的内部布局框图如图1所示。

3 和微节制器的硬件接口

图2所示是51系列微节制器W78E54与SL811HS的连接电路。在该设计硬件时,因为所选用的51系列单片机W78E54及其周围元件的事情电压为5V,而SL811HS的事情电压为3.3V,以是系统应同时供给5V和3.3V电源;虽然SL811HS可以应用12MHz晶振,但在实际应用历程中发明,假如晶振质量不太好,电路稳定性就会对照差,是以,设计时保举应用48MHz晶振;因为SL811HS的中断哀求输出的是高电平,是以必要用反向器把它变换成低电平以满意W78E54中断输入要求;此外,SL811HS是低电平复位;其USB插座的电源接口也应作500mA限流处置惩罚以保护系统。

4 软件设计

USB软件设计分为2部分,一是针对SL811HS芯片编写USB主机节制器驱动法度榜样;二是系统调用驱动法度榜样来完成U盘数据读写的利用法度榜样。

4.1 主节制器驱动法度榜样设计

USB设备驱动法度榜样是开拓USB外设的关键,USB协议的繁杂性导致了USB驱动法度榜样内容的多样性。本文只先容主机完成U盘数据读写功能所需的主要模块,包括初始化模块、罗列模块、读字节模块、写字节模块、读缓冲区模块、写缓冲区模块等。

初始化模块用来设置SL811HS的主/从机事情模式、全速或低速事情要领、内部数据缓冲区布局等;而罗列主如果指主机监测到U盘插入时,主机和U盘之间孕育发生的一个历程。当罗列发生时,主机首先自动发出查询哀求,U盘回应这个哀求,并送出设备的Verdor ID和Product ID然后由主机根据这两个ID装载响应的设备驱动法度榜样,以完成罗列历程。经由过程罗列不只可为U盘设定设备地址,而且可以获得U盘端点的描述表及U盘支持协议,之后就可以根据U盘所属的子类及协议对U盘进行操作。

在本系统中,SL811HS占用的地址空间为0xA000-0xBFFF,下面的读写函数中采纳“自动地址增添模式”来低落SL811HS读写设备时占用的系统资本:

xdata unsigned char SL811_ADDR_at 0xA000;

//USB主机节制寄存器地址

xdata unsigned char SL811_DATA _at_ 0xA001;

//USB主机数据基址

void wr811(unsigned char address, unsigned char value)

{ SL811_ADDR = address;

SL811 DATA = value;} 

unsigned char rd811(unsigned char address)

{ SL811_ADDR = address;

return SL811_DATA;}

下面是读写缓冲区的代码函数:

// addr = 缓冲区肇端偏移地址

// s = 进行缓冲区读写操作时的数据指针

// c = 进行缓冲区读写操作时的数据数量

void SL811BufRead(unsigned char addr, unsigned char *s, unsigned char c)

{ SL811_ADDR = addr;

while(c--)

{ *s++= SL811_DATA;}

}

void SL811BufWrite(unsigned char addr, unsigned char *s, unsigned char c)

{ SL811 ADDR = addr;

while (c--)

{ SL811_DATA=*s++;}

}

4.2 利用法度榜样设计

USB总线一样平常包孕四种基础数据传输类型:节制传输、中断传输、批传输以及同步传输,本系统应用的是节制传输和批腀输。這面以爱国者迷你王U盘为例,先容在该盘上建立目录及写文件的详细措施。

爱国者迷你王(64M)属Mass storage class,支持Bulk-only传输,敕令集为SCSI传输敕令集。Bulk-Only传输时,其敕令、数据及状态均经由过程Bulk端点传送。爱国者迷你王(64M)有三个端点,端点0为缺省节制通道,端点1为Bulk out端点,端点2为Bulk in端点。首先要用read(读block 0)及 read capacity 敕令读取U盘参数,随后即可对U盘进行读写。

此中dCBWSignature的值为43425355LSB ,表示当前发送的是一个CBW;将dCBWTag的内容在状态阶段原样发送给HOST可以验证敕令履行的是否精确;dCBWDataTransferLength为数据阶段要传送的字节数;BmCBWFlags注解数据阶段传送的偏向;Re-served是保留位,平日可以置零;bCBWLUN用于指明该敕令传送给哪个逻辑单元;BCBWCBLength为后续字符串中敕令字节的长度,CBWCB为真正要传送的敕令。CBW敕令发出后,U盘从CBW中解析出CB-WCB然后履行响应的操作,之后返回一个CSW敕令块,注解敕令履行环境。爱国者迷你王(64M)每次至少读取或写入512字节,是以在改写某些字节时,必须把全部逻辑块一次读出,改动后再一次性写入。

用W78E54节制SL811HS来读写U盘的事情历程可以简单地概括为:当SL811HS从USB总线检测到U盘插入后,经由过程中断要领将此信息看护系统,系统经由过程调用罗列模块可以得到与这次传输有关的各类参数,并根据详细的传输参数调用数据读写模块以对SL811HS的节制寄存器和数据寄存器进行响应的操作,终极完成对U盘的读写。其写文件流程图见图3所示。

5 停止语

应用USB主机接口节制器SL811HS实现对U盘的读写,可为数据采集系统大年夜容量数据存储供给一种通用、方便和靠得住的办理规划,今朝该规划已成功利用到笔者自立研发的温室情况信息采集系统中,并颠末长光阴测试证清楚明了它的实用性和靠得住性。因为SL811HS同时具有从机事情模式,是以,也可将此规划经简单改动后开拓USB接口从设备,从而满意不合场合的必要。

您可能还会对下面的文章感兴趣: