我是四川理工学院 电信系2001级 自动化 的一名学生。我正在做关于USB的一个毕业设计,我有幸借到一本关于CYPRESS芯片的英文书。我想把它翻译出与大家共享。由于时间,我不会字字翻译,我把我认为重要的且我有能力翻译的献给大家。以下只是一部分,我有空再继续贴在网上。如有不足,请指教。 以下是我看CYPRESS 公司的FX2(USB2.0的单片机)一英文书的心得,也可说是“读书笔记”吧?请各位多多包涵。 EX——USB FX2 TECHNICAL REFERENCE MANNAL CYPRESS CHAPTER 1 INTRODUCING EZ-USB FX2 1.1 INTRODUCION USB 2.0 的功能 - 具有480Mbits/sec的信号速度
- 对USB1。1设备和电缆完全兼容
- 新的集线器结构能向USB1。1设备端口提供复杂的12Mbits/sec数据流。
THE CYPRESS SEMICONDUCTOR EZ——USB FX2 除了具有USB 2。0 的功能外与不同情况CYPRESS SEMICONDUCTOR USB FX 系列无区别 1.2 AN INTRODUCTION OF USB USB - 即插即入
- USB不使用电源,跳线,开关,配置程序等,不与I/O,DMA, MEMORY(,IRQ等发生冲突。
- USB集线器能接多个设备。
- USB能满足打印机,硬盘驱动器等的需要。
- USB 的各速度的应用场合
A. LOW SPEED(1.5Mbit/sec)鼠标,键盘等 B. FULL SPEED (12Mbit/sec) 扬声器,扫描仪等 C. HIGH SPEED (480Mbit/sec) 硬盘驱动器等 FX2的功能 - 有8051
- 有RAM的软件结构
- 使用EZ——USB芯片的USB设备不被端口数,大小,传输速度限制
- 代码简单,易学易用。
1.3 THE USB SPECIFICATION THE USB SPECIFICATION VERSION 2.0 可在WWW.USB.ORG 找到 1.4 HOST IS MASTER (主机是大脑) - 一切数据传输要听主机的。除了当主机把设备设置为“SUSPEND(挂起)”模式时设备能发出“REMOTE WAKE UP”信号,例外。
- 采用这种“HOST——CENTRIC MODE”的原因是减低成本。
1.5 USB DIRECTIONG(传输方向) - OUT 指 HOST到DEVICE。
- IN 指DEVICE 到HOST。
1.6 TOKENS AND PIDS 1. 这节将提出以下几个问题?A,什么时候这个主机将送“IN”TOKEN。B,这些“TERMS”(我看书猜是指令,如TOKEN,DATA,HANDSHAKE,SPECIAL)是什么意思? 2.接下来我要说的是,USB PIDS(IT IS SPECIAL CODES CALLED PACKET IDS)既USB的数据包代码。 PID TYPE类型 | PID NAME名字 | TOKEN | IN,OUT,SOF,SETUP | DATA数据 | DATA0,DATA1, DATA 2,MDATA | HANDSHAKE握手 | ACK,NAK,STALL,NYET | SPECIAL特殊 | PRE,ERR,SPLIT,PING | 3. 以下是数据传输格式DATA1,DATA0,这两个是重复数据,确保在1数据丢失时,0可补上。不至于数据丢失。 TOKEN PACKET | DATA PACKET(数据包) | H/S PACKET | | DATA1 | PAYLOAD DATA | CRC16循环冗余 | | ACK | TOKEN PACKET | DATA PACKET(数据包) | H/S PACKET | | DATA0 | PAYLOAD DATA | CRC16循环冗余 | | ACK | 4. USB “OUT” PACKET的传输过程。(不是USB 有两个数据指令吗?“IN”AND“OUT”这儿讲的是“OUT”它是有主机到USB设备的传输。 A. 主机送数据到总线上。 B. 数据传输到设备。 C. USB设备送“ACK”到主机表明接受成功。 5. 在“FULL SPEED(12MBITS/SEC)”和在“HIGHT SPEED(480MBITS/SEC)”上传送“OUT PACKET”有不同。 A. 在“FULL SPEED”,主机重复送“OUT DATA”。 B. 在“HIGHT SPEED”,首先,主机送“PING ”指令到“OUT(输出)”终端,询问在外围设备中,这儿是否有空间为“OUT DATA(输出数据)”。仅仅当主机收到回答,既收到“ACK”,主机才会送“OUT TOKEN AND DATA(输出指令和数据)。 (我想就是因为这个改进,一部份提高了传输速度,这就是“HIGHT SPEED”和“FULL SPEED”的差别) 6. 这儿有两个重复的DATA PIDS (数据包IDS),这是由于USB严格的查错机制。其查错过程如下:A,设备的ACK握手信号,表明设备接受数据无误,(而且我认为它的CRC循环冗余,也是其数据严格的表现)B,如果设备不回复,表示数据可能丢失,主机自然会重发的。(那你说,发了两个重复数据,如没丢,不多了吗?这不多,设备自然会处理多的那个) 7. 接下来我会讲解各PIDS。 A. SETUP TOKEN(SETUP领牌)是唯一的用来“控制”传输的。 B. SOF TOKEN(START OF FRAME,开始帧)。在FULL SPEED(12MBITS/SEC)下,SOF TOKEN 每MS(毫秒)发生。在HIGH SPEED下,125MS一帧,而每帧包含一个SOF TOKEN。 C. ACK (ACKONWLEDGE)表示数据接收成功。 D. NAK(NEGATIVE ACKONWLEDGE)是设备表示自己很忙,请主机再传。注意它不是“ERROR(出错)”,当USB设备发现传输有错时,它会选择不“回答”。 E. STALL 表示出现主机不可预知的错误。 F. NYET(NOT YET)它只出现在HIGH SPEED模式下,表示设备数据传输成功,但还没准备好接受下个设备。 G. PRE 这个出现在LOW SPEED(1。5MBITS/SEC)下,FX2不支持。 1.5.1 RECEIEING DATA FROM THE HOST(接受来自主机的数据)。 1. 以下我将写这的过程。 A. 首先主机送给设备,数据和“OUT”(记住OUT在数据后哦)。 B. 接下就是设备回复主机了,这儿分三种情况1,设备有接受数据的空间,设备回复“ACK”。2,如果这儿没多空,它会送“NACK”到主机。3,如果设备发现主机传来的数据有误,它会什么也不发(我想这也是加快其运行速度的好方法),主机在规定时间内没收到任何来自设备的信号,它会重发数据。 1.6.2 SENDING DATA TO THE HOST(送数据到主机) - USB设备不会传数据到主机,(这是我自己翻译的,我不知道是否理解正确,我把原文写下“A USB DEVICE NEVER SPONTANEOUSLY SENDS DATA TO THE HOST”)。
- 当主机送一个“IN”请求到FX2,数据将被外围设备通过端口送到主机。
1.7 USB FRAMES(USB 帧) 1. USB 主机每毫秒(MILLISECOND)传输一个SOF(START OF FRAME,开始帧)给 所有USB设备。 2. SOF包中 每帧由11位组成。其当前帧(其帧号[0-2047])可在任意时间从FX2内部寄存器读出。 3. 在HIGH SPEED(480MBIT/S)每一秒毫秒(ONE MILLISECOND)帧被分成8个125微秒(MICROSECOND),每个包含1个SOF包。而帧号以毫秒(MILLISECOND)计数,既一秒一个,因此这8个帧有相同的帧号。为跟踪当前的微秒帧(MICROFRAME[0-7]),FX2提供了一个可读的微秒帧计数器(MICROFRAME COUNT)。 4,当FX2收到一个SOF,它将产生一个中断请求。 A在FULL SPEED 情况下,每毫秒一次(ONCE EVERY MILLISECOND), B在HIGH SPEED情况下,每125微秒一次(ONCE EVERY 125 MICROSECOND)。 这个SOF中断应用于,比如服务同步数据时使用。 1.8 USB FRANSFER TYPES(USB传输类型) 它有四个类型,以在总线上传输方式而定。 1.8.1 BULK TRANSFERS (块传输) 输入IN | ADDR | ENDP | CRC5 | | DATA1 | 有效数据PAYLOAD DATA | 循环冗余 CRC16 | | 应答ACK | 令牌包 TOKEN PACKET | 数据包 DATA PACKET | 握手包H/S PKT | 输出OUT | ADDR | ENDP | CRC5 | | DATA1 | 有效数据PAYLOAD DATA | 循环冗余 CRC16 | | ACK | TOKEN PACKET | DATA PACKET | H/S PKT | 它的特性, - 突发性(BURSTY)。
- A在FULL SPEED (12Mbits/Sec)情况下 每数据包包含8,16,32,64个字节。
B在HIGH SPEED (480Mbits/Sec)情况下 每数据包包含512个字节。 - 精确性。
- 可用于打印机,扫描仪等。
1.8.2 INTERRUPT TRANSFER (中断传输) 1 中断数据与块传输数据格式相同,如下图 输入IN | ADDR | ENDP | CRC5 | | DATA1 | 有效数据PAYLOAD DATA | 循环冗余 CRC16 | | 应答ACK | 令牌包 TOKEN PACKET | 数据包 DATA PACKET | 握手包H/S PKT | 1 .8. 2 INTERRUPT TRANSFERS (中断传输) IN(输入) | ADDR(地址) | ENDP | CRC5(循环冗余) | | DATA1(数据) | PAYLOAD DATA(有效数据) | CRC16(循环冗余) | | ACK(应答) | TOKEN PACKET(令牌) | DATA PACKET(数据包) | H/S PKT(握手) | 1. 中断数据传输的数据与块传输的数据类似。 2. 中断传输 在FULL SPEED (12Mbits/Sec)情况下,它的传输字节可在1之64个字节间。在HIGH SPEED (480Mbits/Sec)情况下,它的传输字节可高达1024个字节。 3. 它使用了IN 令牌(TOKEN)。 1.8.3 ISOCHRONOUS TRANSFERS(同步传输) IN(输入) | ADDR(地址) | ENDP | CRC5(循环冗余) | | DATA1(数据) | PAYLOAD DATA(有效数据) | CRC16(循环冗余) | | ACK(应答) | TOKEN PACKET(令牌) | DATA PACKET(数据包) | H/S PKT(握手) | 1. 同步传输适用于音响或视频。 2. 同步传输 在FULL SPEED (12Mbits/Sec)情况下,它的传输字节每包可在1之1023个字节间。在HIGH SPEED (480Mbits/Sec)情况下,它的传输字节每包可在1之1024个字节间。 3. A.同步传输中,时间非常重要。 B.在USB帧中,分配了一定的USB带宽给同步传输。 C.同步传输没有握手(NO HANDSHAKE ,SUCH AS ACK/NAK/STALL/NYET),没有重发(NO RETRIES)。而查错被限制在16-bit CRC。 D.同步传输不使用数据轮换机制(DATA-TROGGLE MECHANISM),在FULL SPEED (12Mbits/Sec)情况下,仅仅有DATA0。在HIGH SPEED (480Mbits/Sec)情况下,有DATA0,DATA1,DATA2,MDATA, E.同步传输每帧每个端点传输的包量。在FULL SPEED (12Mbits/Sec)情况下,每帧每个端点传输可传输一个同步数据包;在HIGH SPEED (480Mbits/Sec)情况下,每帧每个端点可传输高达3个同步数据包。 1.8.4 CONTROL TRANSFERS (控制传输) 以下将介绍控制传输的三个阶段:SETUP STAGE(SETUP 阶段),DATA STAGE(DATA 阶段,此阶段可根据需要缺省),STATUS STAGE(STATUS 阶段)。 如下图: 1. A.CONTROL TRANSFERS (控制传输)配置和送控制命令到主机。 B.CONTROL TRANSFERS (控制传输)非常重要,它使用最广泛的USB错误检测。 C.主机为控制传输在USB帧中保留了一部分空间。 2.控制传输由二或三个阶段构成(DATA 阶段,此阶段可根据需要缺省)。 A.SETUP STAGE(SETUP 阶段)包含了8字节的USB控制数据。 B.DATA STAGE(DATA 阶段)如果需要可缺省。 C.STATUS STAGE(STATUS 阶段)也可称(HANDSHAKE,握手)在这个阶段,允许设备直接显示CONTROL传输成功。 1.9 ENUMERQTION(枚举) 1.USB设备的即插即入(PLUG AND PLAY),这是大家都知道的USB的一个很大的特点。但这就导出下面一个问题:"这一切如何发生?"在每个USB 设备中,这儿有个描述符表,这表包含了设备所有特性和要求。 当插入USB设备后,主机将进行以下步骤: - 主机发出Get-Descriptor/Device(获取描述符表/设备)的请求到地址0(设备第一个连接时必须响应地址0)。
- 设备响应回答送ID data到主机。
- 主机送Set Address请求为设备安排唯一地址。
- 主机送更多Get Descriptor请求要求设备送更多设备信息,以便了解设备端点数,电源要求,总线带宽要求,驱动程序的装载。
|