阅读:4497回复:17
关于EZ-USB的基础问题,端点,FIFO
看了一点EZ-USB资料,还是有很多地方不懂,(各位老大有好的介绍一下)
首先,端点和管脚有什么关系?如何设置管脚来确定端点及端点的状态? 其次,“设备端点事实上是被顺序清空或被USB数据字节填满的FIFO”,FIFO(端点缓冲器)到底是什么东西?是不是到端点的通道?EP2,EP0就是通道2,通道0吗?那端点和FIFO应该有对应的关系吧? 这是资料中的一幅图和相关文字,谁能解释一下是什么意思? ---------------------------- FX2包含三个64字节端点缓冲器,另外,还有4K字节缓冲空间可以以多种方式配置,如图1-15所示,三个64字节缓冲器在所有配置下都是一样的。三个64字节缓冲器被指定给EP0,EP1IN和EP1OUT。EP0为缺省的CONTROL端点,是双向端点,使用同一个64字节缓冲器存储IN和OUT数据。在CONTROL传输的数据阶段时(可选),8051必须读取或填充EP0缓冲器 |
|
|
沙发#
发布于:2003-07-29 20:13
你说的应该是PIPE和ENDPOINT吧,叫做管道和端点。一般是一个管道对应几个端点,在固件的寄存器中可以设置端点的状态(比如选择PIPE2的ENDPOINT6作为USB传输);FIFO就是一个先入先初的堆栈,可以起到缓冲数据的作用,例如68013中的ENDPOINT0对应2K的FIFO,一共有8K的FIFO可供使用;
图像打不开,没办法解释。有问题继续探讨。 呵呵! |
|
板凳#
发布于:2003-07-29 20:29
ep2,ep0不是通道是端点,是你用的通道需要选择的端点。如果是68013的话,一个端点对应2K的FIFO。正常传输的时候应该是够用了。
|
|
地板#
发布于:2003-07-30 17:33
问的很乱,不好意思。又仔细看了一些关于EZ-USB的文章,仍有疑问。先将个人对EZ-USB的理解阐述如下,有不正之处,请指出(主要参照CY7C680013):
1.芯片结构: EZ-USB FX2芯片包括1个8051处理器、1个串行接口引擎(SIE)、1个USB收发器、8.5KB片上RAM、4KB FIFO存储器以及1个通用可编程接口(GPIF)。 |
|
|
地下室#
发布于:2003-07-30 17:38
嗨,又贴错图了
|
|
|
5楼#
发布于:2003-07-30 17:53
2.3 端点缓存
主机发送4个bit的地址和1个bit的方向来选择端点,因此USB最多可有32个端点定义:IN0~IN15和OUT0~OUT15。FX2定义了7个端点(为什么少了?),端点缓存结构如图所示。EP0IN&OUT、EP1IN、EP1OUT是64byte的端点缓存。EP0、EP1IN和EP1OUT只能由FX2的固件访问(那是不是说这几个端点就不使用用FIFO了);而EP2、4、6和8无需固件干涉即可同片外互传高速数据(4KB 的FIFO就被分给这几个端点使用?)。 |
|
|
6楼#
发布于:2003-07-30 17:59
黑体部分就是我的疑问, :)
|
|
|
7楼#
发布于:2003-07-30 18:51
1,因为即使给你了32个端点你也用不了那么多,顶多用4个就了不起了,理论上说一个多缓冲的端点传输数据是最快的,如果用两个端点切换就慢多了!因此这7个端点足够你用了。
2,那三个端点也是FIFO,但是他不占用那4KB的FIFO空间,是另外的一块 3,对头!你上一幅图里就是这些端点的所有组合,有两个端点可以是双重缓冲,有两个端点可以达到四重缓冲。 |
|
8楼#
发布于:2003-07-31 08:38
其实就是缓冲的问题,图里边给你演示了从双缓冲到四缓冲的例子,比如说正常情况下EP2和EP4各又两个512字节的FIFO做缓冲,当把EP2设成双缓冲是,那么EP4就不能再有缓冲了,同理,如果EP2设为四缓冲,那么EP4,EP6,EP8都无法再用FIFO做缓冲了。
|
|
9楼#
发布于:2003-07-31 10:42
还有什么问题吗?帮你顶顶!
|
|
10楼#
发布于:2003-07-31 11:09
其实就是缓冲的问题,图里边给你演示了从双缓冲到四缓冲的例子,比如说正常情况下EP2和EP4各又两个512字节的FIFO做缓冲,当把EP2设成双缓冲是,那么EP4就不能再有缓冲了,同理,如果EP2设为四缓冲,那么EP4,EP6,EP8都无法再用FIFO做缓冲了。 不明白, 正常情况下EP2和EP4各又两个512字节的FIFO做缓冲,当把EP2设成双缓冲是,那么EP4就不能再有缓冲了,在图中的第一种配置下,EP2是双缓冲的, (我认为某个端点对应的的大框框里有几个小框框,就说明该端点是几重缓冲的,即有几个缓冲区) ,同时,EP4、6、8也是双缓冲的。 还有 你上一幅图里就是这些端点的所有组合,有两个端点可以是双重缓冲,有两个端点可以达到四重缓冲。 前两个端点是指EP2和EP6,后两个是指EP4和EP8吗?包括了所有的组合?关于端点缓冲区的组合还有其他的规定吧?否则以下的组合为什么没有呢? |
|
|
11楼#
发布于:2003-07-31 11:15
还有可以有很多组合,比如下面的两种:
|
|
|
12楼#
发布于:2003-07-31 11:17
还有,为什么端点号分别是0、1、2、4、6、8,而 不是0,1,2,3,4,5,6呢?这个号是根据什么定的?
|
|
|
13楼#
发布于:2003-07-31 11:26
又来了 :D 为什么缓冲区是以512K为最小单位?有什么规定吗?
其他的,想起来再问 |
|
|
14楼#
发布于:2003-07-31 11:46
呵呵,你问题真多
其实EP2和6可以是2、3、4重缓冲,而4、8最多只能是双缓冲,其实你前面提到的几种可能也是可以的,例如2和4配置成双缓冲,把6配置成4缓冲,这是可以的,除了前面第一条的规定外,你还要注意FIFO的总量是4K,只要不超过这个限制就行。 端点号是可以任意指定的,是什么都无所谓,我想用2345做位这四个端点的号码总没有2468好听吧,仅此而已! 512字节是协议的规定,每个端点的最大包(BULK&INT)只能达到512字节,可以小于这个值,但不能大于,ISO包是可以大于的,2.0里最大是1024字节。 |
|
15楼#
发布于:2003-07-31 11:56
那就是说可以有其他组合了(包括我列出的那些)?
没办法,太笨了,又没有什么基础,看很浅显的资料也很吃力,很多时候只能自己猜 ;),多谢jinghuiren和flytomoon两位热心人,什么时候能入门就好了 :) |
|
|
16楼#
发布于:2003-07-31 12:12
是的 :)
|
|
17楼#
发布于:2003-07-31 12:24
祝你早日出成绩。
|
|