我是四川理工学院 电信系2001级 自动化 的一名学生。我正在做关于USB的一个毕业设计,我有幸借到一本关于CYPRESS芯片的英文书。我想把它翻译出与大家共享。由于时间,我不会字字翻译,我把我认为重要的且我有能力翻译的献给大家。以下只是一部分,我有空再继续贴在网上。如有不足,请指教。
以下是我看CYPRESS 公司的FX2(USB2.0的单片机)一英文书的心得,也可说是“读书笔记”吧?请各位多多包涵。
EX——USB FX2
TECHNICALREFERENCEMANNAL
CYPRESS
1.1 INTRODUCION
USB 2.0 的功能
THE CYPRESS SEMICONDUCTOR EZ——USB FX2 除了具有USB 2。0 的功能外与不同情况CYPRESS SEMICONDUCTOR USB FX 系列无区别
1.2AN INTRODUCTION OF USB
USB
A. LOW SPEED(1.5Mbit/sec)鼠标,键盘等
B. FULL SPEED (12Mbit/sec) 扬声器,扫描仪等
C. HIGH SPEED (480Mbit/sec) 硬盘驱动器等
FX2的功能
1.3THE USB SPECIFICATION
THE USB SPECIFICATION VERSION 2.0 可在WWW.USB.ORG 找到
1.4HOST IS MASTER (主机是大脑)
1.5USB DIRECTIONG(传输方向)
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 |
|||||||
|
|
ACK |
TOKEN PACKET |
DATA PACKET(数据包) |
H/S PACKET |
|||||||
|
|
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 TOKENAND DATA(输出指令和数据)。
(我想就是因为这个改进,一部份提高了传输速度,这就是“HIGHT SPEED”和“FULL SPEED”的差别)
6.这儿有两个重复的DATAPIDS (数据包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(送数据到主机)
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 |
它的特性,
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设备后,主机将进行以下步骤: