打印

急。。。请教 68013 slave fifo 通讯方面的问题 没人能回答??

[复制链接]
1855|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
felixzdx|  楼主 | 2013-1-28 22:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 felixzdx 于 2013-2-5 21:42 编辑

初始化代码:
void initUSB(void)
{
        CKCON = (CKCON&(~bmSTRETCH)) | 6;  
        
        //REVCTL                 |= 0x03; //disable auto-arm of endpoints when AUTOOUT transfers from 0 to 1

        IFCONFIG         = 0x03;  //0x03  syn/external clk   40mhz
        //IFCONFIG         = 0x83;  //0x83  syn/internal clk   30mhz
        
        EP2FIFOCFG         = 0x00;//autoout=0
        EP6FIFOCFG   = 0x04;//autoin=0
        
        EP2CFG             = 0xA0;                                                   
        EP6CFG                 = 0xE0;     
        
        EP1OUTCFG         = 0x20;
        EP1INCFG         = 0x20;
        EP4CFG                 = 0x20;
        EP8CFG                 = 0x20;
        

        PINFLAGSAB         = 0xE8 ;  //ep2ef ep6ff fixed


        EP6AUTOINLENH         = 0x02;                                             
        EP6AUTOINLENL         = 0x00;

        FIFORESET         = 0x80;
        FIFORESET         = 0x02;
        FIFORESET         = 0x06;
        FIFORESET         = 0x00;   
        
           EP2BCL = 0x80;                                                                                    
        EP2BCL = 0x80;
        EP2BCL = 0x80;
        EP2BCL = 0x80;   
        
        CKCON = (CKCON&(~bmSTRETCH)) |0;     

}
初始化 EP2 OUT 4*512 ,EP6 IN 4*512,Slave Fifo 模式,非自动传输模式。

EP6 接受Slave fifo的数据(FPGA通过slave fifo传输数据到EP6 fifo中)转发到host,
手动传输示意代码如下
while(reqSectorCnt)//host请求的sector(512b)数
{
   while(EP6FIFO标志寄存器S . EMPTY);//EP6 Slave Fifo 空 ,等待
   SYSDELAY;
   EP6BCH = 0X02;
   SYSDELAY;
   EP6BCL = 0X00;//Commit Data to host

  reqSectorCnt--;
}

出现的问题:
1. 初始化时,//REVCTL                 |= 0x03;此句代码加入,FW就无法接受上位机传输的数据包

2. 如果上位机请求一个 sector (512B)则不会出错,如果请求超出一个sector则返回的数据不对,且可以对
EP6无限次请求, while(EP6FIFO标志寄存器S . EMPTY);//EP6 Slave Fifo 空 ,等待
语句判断不起作用。

3. 提交数据(EP6BCL = 0X00), 不改变EP6FIFO标志寄存器S的状态吗??

4. 提交后,usbcore ACK后,提交的 当前的 fifo(512b)是否变为空??即 slave fifo 域可以使用此FIFO

采用自动模式:
示意代码如下:

EP6AutoTransfer()
{
//1. 转为自动模式
REVCTL  = 0x03;
SYSDELAY;

EP6FIFOCFG = bmZEROLENIN;
SYSDELAY;

EP6FIFOCFG = bmZEROLENIN | bmAutoIn;
SYSDELAY;

//2. 启动FPGA数据传输
PA0=1;
SYSDELAY;

//3. 等待数据传输完毕
while(!PA1);

//5. 转化为手动模式

REVCTL  = 0x00;
SYSDELAY;

EP6FIFOCFG = bmZEROLENIN;
SYSDELAY;

}

在此模式下, 存在的问题是
1. 数据传输有时可以完成,有时出现USB总线异常,为什么产生此现象??配置不要对还是操作流程不对??
请高手为我解惑,3Q!

相关帖子

沙发
felixzdx|  楼主 | 2013-1-29 22:03 | 只看该作者
[color=Red]急!!请高手给小弟一些建议。。。,不胜感激!

使用特权

评论回复
板凳
felixzdx|  楼主 | 2013-1-29 22:04 | 只看该作者
求  大神支援!

使用特权

评论回复
地板
felixzdx|  楼主 | 2013-1-29 22:11 | 只看该作者
请教 手动模式操作流程和自动模式操作流程

使用特权

评论回复
5
felixzdx|  楼主 | 2013-2-1 21:21 | 只看该作者
有哪位 大侠可以 指点下 我的 《手动模式 》传输,那个地方出错了 ??

使用特权

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

本版积分规则

1

主题

10

帖子

0

粉丝