打印

关于68013a prime the pump

[复制链接]
3541|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
doliphin|  楼主 | 2012-2-19 22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
OUTPKTEND = 0x82; // Arm both EP2 buffers to “prime the pump”
SYNCDELAY;
OUTPKTEND = 0x82;

prime the pump到底是什么意思?这几句话有什么具体作用?  FIFORESET以及
EP2BCL = 0x80;                // arm EP2OUT by writing byte count w/skip.
中的ARM作用是不是都一样的?我不reset FIFO也没怎么了

相关帖子

沙发
enouusb| | 2012-2-20 21:04 | 只看该作者
我的理解,这两个配合使用是让程序在对out写数据的时候跳过缓冲区,将FIFO中初始计数的数据给跳过,可能是这样。

使用特权

评论回复
板凳
dqyubsh| | 2012-2-20 21:52 | 只看该作者
说起作用,要详细查手册。

OUTPKTEND = 0x82;
// 该语句设置位SKIP=1,位EP1=1(表示EP2端点)
意思是,当REVCTL.0=1时,SKIP=1,跳过EP2的包

再具体的意思还得看手册。有比较详细的解释。通俗的理解是,FX2复位后,如果OUT缓冲区有未被提交的信息包,那么这个残留的信息包不会自动提交给主控制器FX2。为了保证复位后OUT端点缓冲区没有未被提交的信息包,可通过向该缓冲区写入语句OUTPKTEND,并设置位SKIP=1,则FX2固件程序的这部分初始化程序将跳过(放弃)2、3、4个信息包。具体有几个信息包根据FIFO缓冲区的深度来定。

就是说,它在FX2复位后,主机之前过来的信息包扔掉了。再加上之前的FIFORESET语句,就把FIFO复位,并清除内部数据,彻底初始化。

为什么同样的语句要做两次呢?因为该端点的FIFO被设置成2X。假如FIFO设置成4X,那就用四次。

使用特权

评论回复
地板
binghe41| | 2012-7-10 11:30 | 只看该作者
明白了

使用特权

评论回复
5
raoxianbin| | 2014-8-31 19:33 | 只看该作者
学习了

使用特权

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

本版积分规则

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

0

主题

195

帖子

2

粉丝