nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:4497回复:17

关于EZ-USB的基础问题,端点,FIFO

楼主#
更多 发布于:2003-07-29 18:41
看了一点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缓冲器


 
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-29 20:13
你说的应该是PIPE和ENDPOINT吧,叫做管道和端点。一般是一个管道对应几个端点,在固件的寄存器中可以设置端点的状态(比如选择PIPE2的ENDPOINT6作为USB传输);FIFO就是一个先入先初的堆栈,可以起到缓冲数据的作用,例如68013中的ENDPOINT0对应2K的FIFO,一共有8K的FIFO可供使用;
图像打不开,没办法解释。有问题继续探讨。
呵呵!
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-29 20:29
ep2,ep0不是通道是端点,是你用的通道需要选择的端点。如果是68013的话,一个端点对应2K的FIFO。正常传输的时候应该是够用了。
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于: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)。
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-30 17:38
嗨,又贴错图了
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
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就被分给这几个端点使用?)

[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-30 17:59
黑体部分就是我的疑问, :)
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-30 18:51
1,因为即使给你了32个端点你也用不了那么多,顶多用4个就了不起了,理论上说一个多缓冲的端点传输数据是最快的,如果用两个端点切换就慢多了!因此这7个端点足够你用了。
2,那三个端点也是FIFO,但是他不占用那4KB的FIFO空间,是另外的一块
3,对头!你上一幅图里就是这些端点的所有组合,有两个端点可以是双重缓冲,有两个端点可以达到四重缓冲。
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-31 08:38
其实就是缓冲的问题,图里边给你演示了从双缓冲到四缓冲的例子,比如说正常情况下EP2和EP4各又两个512字节的FIFO做缓冲,当把EP2设成双缓冲是,那么EP4就不能再有缓冲了,同理,如果EP2设为四缓冲,那么EP4,EP6,EP8都无法再用FIFO做缓冲了。
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-07-31 10:42
还有什么问题吗?帮你顶顶!
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
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吗?包括了所有的组合?关于端点缓冲区的组合还有其他的规定吧?否则以下的组合为什么没有呢?
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-07-31 11:15
还有可以有很多组合,比如下面的两种:
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-07-31 11:17
还有,为什么端点号分别是0、1、2、4、6、8,而 不是0,1,2,3,4,5,6呢?这个号是根据什么定的?
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-07-31 11:26
又来了 :D 为什么缓冲区是以512K为最小单位?有什么规定吗?
其他的,想起来再问
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
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字节。
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-07-31 11:56
那就是说可以有其他组合了(包括我列出的那些)?
没办法,太笨了,又没有什么基础,看很浅显的资料也很吃力,很多时候只能自己猜 ;),多谢jinghuiren和flytomoon两位热心人,什么时候能入门就好了 :)
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-07-31 12:12
是的 :)
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-07-31 12:24
祝你早日出成绩。
游客

返回顶部