打印

EZ-USB FX2 slave FIFO 手动传输?

[复制链接]
3082|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nanguamache|  楼主 | 2012-3-17 12:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问有谁知道哪里有EZ-USB FX2 slave FIFO 手动传输模式的完整例程?我想用EP6端点手动上传图像,即EP6FIFOCFG中的AUTOIN=0,然后在轮询函数TD_Poll()加入一些控制语句(如当EP6端点满的时候将数据上传,然后重新装备计数器),这样轮询函数怎么编写比较好呢?下面是我编写的TD_Poll(),

IFCONFIG |= 0xAB;//异步,从FIFO模式,内部时钟
EP6 设置为IN端点,4*512

void TD_Poll(void)              // Called repeatedly while the device is idle
{
  if(!(EP68FIFO标志寄存器S & 0x01))
  {
   INPKTEND = 0x06;  SYNCDELAY;//应答数据包
   INPKTEND = 0x06;  SYNCDELAY;
   INPKTEND = 0x06;  SYNCDELAY;
   INPKTEND = 0x06;  SYNCDELAY;
   
   EP6BCH = 0x02;    SYNCDELAY;//重置计数器
   EP6BCL = 0x00;    SYNCDELAY;
   EP6BCH = 0x02;    SYNCDELAY;
   EP6BCL = 0x00;    SYNCDELAY;
   EP6BCH = 0x02;    SYNCDELAY;
   EP6BCL = 0x00;    SYNCDELAY;
   EP6BCH = 0x02;    SYNCDELAY;
   EP6BCL = 0x00;    SYNCDELAY;
   }   
}
是不是应该在上传数据完成后再重置计数器呢?那要加什么判断语句呢?
另外还想问一下EP6BCH,EP6BCL与EP6FIFOBCH,EP6FIFOBCL之间有什么区别吗?

相关帖子

沙发
dqyubsh| | 2012-3-21 08:24 | 只看该作者
SLAVE FIFO模式应该大多使用自动传输。既然想传图像,当然希望USB传送速率越快越好,那就不要让FX2干预USB过程。改改思路,看自动传输能否解决问题。

使用特权

评论回复
板凳
USB-DSN| | 2012-7-24 14:39 | 只看该作者
2# dqyubsh
大哥,您好! 我问下,如果我用AUTOIN模式传图像,但是一帧图像的大小不是512的整数倍,最后那个非512的小包要怎样发送?直接用inpktend还是需要先把autoin模式切换到手动模式,然后再inpktend? 期待你的帮助,谢谢!

使用特权

评论回复
地板
dqyubsh| | 2012-7-24 21:25 | 只看该作者
简单的方法可以凑齐成512的倍数,主机收到之后再减掉多余的。

如果每次传送的都是等长,那就设置EPxAUTOFIFOLENH : L这对寄存器,长度够了就可以了。

你说的手动自动的切换操作怎么做,外部芯片如何控制CPU切换,这个还真不晓得。

使用特权

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

本版积分规则

1

主题

53

帖子

0

粉丝