打印

cypress例程中的Bulkloop几句没看懂,求指导

[复制链接]
3091|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
doliphin|  楼主 | 2011-12-3 13:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在同步传输的模式下:  
EP2BCL = 0x80;           // arm EP2OUT by writing byte count w/skip.
同步传输为什么要计数?写了这句会有什么影响?

  // enable dual autopointer feature
  AUTOPTRSETUP |= 0x01;
还有这句,用自动指针手册上说在某一段地址范围内会出错,那用自动指针危险性大么?

相关帖子

沙发
liangziusb| | 2011-12-7 14:42 | 只看该作者
第一句就是arm EP2OUT,这里的arm翻译成什么,还真没有好的词语。
我的理解,就是准备的意思,欢迎大家来探讨呀!

使用特权

评论回复
板凳
doliphin|  楼主 | 2011-12-7 23:20 | 只看该作者
今天的理解就是把EP2中现有的包跳过去,否则你会读到一堆乱码,和你那个准备的意思差不多。至于翻译,他那个arm在英语里挺形象的,我会把那句注释翻译成:EP2跳过现有状态,准备发出将要接受到的数据。  一点原文的意思都没有了·········

使用特权

评论回复
地板
zyzyzy407| | 2011-12-11 17:07 | 只看该作者
是把控制权交给USB的区域 就是ep2端点你不管 host来数据会自动处理 这是我的理解 呵呵

使用特权

评论回复
5
dqyubsh| | 2011-12-11 18:25 | 只看该作者
这些寄存器的功能确实很难**,每次都得查手册。

EPxBCL是可读写的。读的时候表示端点数据长度的低字节,写的时候,经常是改写第7位,SKIP位。

一般情况下,主机发过来的OUT包会自动送达该端点的FIFO。但是,如果8051想干涉这一过程,它就会把SKIP位置1,那么OUT包的数据就不会送达FIFO,直接丢弃,FIFO连接的外部逻辑甚至不会感知到主机曾经发过来OUT包。

有个Pingnak的例子,当主机发出ping请求,固件会收到ping中断,在中断函数里arm端点。结果是,如果此时端点刚好有数据,arm之后,这包数据就丢了,主机可以继续发下一包数据过来。

使用特权

评论回复
6
doliphin|  楼主 | 2011-12-11 21:29 | 只看该作者
恩 大侠讲得不错 但是你说的那种skip是在传输中,这个是写在初始化函数中的
5# dqyubsh

使用特权

评论回复
7
dqyubsh| | 2011-12-11 22:10 | 只看该作者
本帖最后由 dqyubsh 于 2011-12-11 22:17 编辑

都是一码事。初始化时,把OUT端点的字节计数寄存器的低位写0X80(貌似有说任意值也可以的,IN和OUT端点这里有点区别,记不清了),将使端点重新准备好传输。双缓冲要arm两次,四缓冲arm四次。

假定端点之前已经被OUT了数据,如果没有这样的arm,主机就写不进来新包。就是说,51复位,可能并不清除端点,所以才要在初始化过程中这样做。

使用特权

评论回复
8
doliphin|  楼主 | 2011-12-12 14:01 | 只看该作者
缓冲区里面有数据了为什么会写不进新包,二者有关系么
7# dqyubsh

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:路漫漫其修远兮,吾将上下而求索

0

主题

195

帖子

2

粉丝