打印
[数据传输]

Cy7C68013A AUTOOUT模式,外部CPU读不到数据,请教

[复制链接]
1599|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tanghuihua|  楼主 | 2016-11-14 15:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Cy7C68013,配置成,EP2,OUT,512双缓冲,EP4,OUT,512双缓冲,EP6,IN,512双缓冲,EP8,IN,512双缓冲,EP2、EP4使用AUTOOUT,EP6、EP8使用AUTOIN。FlagA=EP2EF,FlagB=EP4EF,FlagC=EP6FF。外部CPU总线接68013的slaveFIFO接口,通过判断FLAGA和FLAGC来读或写数据。

现在做如下测试:
外部CPU不停的判断FLAGA和FLAGC,如果发现FLAGA不为空,则从68013的FIFO2中读数据,如果判断FLAGC不满则向FIFO6中写数据。

用CyConsole测试,EP6 BulkIn可以不停的读取到外部CPU写入的数据。
用EP2 BulkOut,一次512字节,CyConsole可以BulkOut成功,FLAGA也成功变化为“非空”,但外部CPU从FIFO2中读数据却不正确,而且一直读取都不能将FLAGA读成“Empty”的状态。

下面是我的固件TD_init程序。
        Rwuen = TRUE;                                // Enable remote-wakeup

        CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ;// set the CPU clock to 48MHz
        IFCONFIG = 0xCB;// set the slave FIFO interface to 48MHz

        SYNCDELAY;
        REVCTL = 0x03;//0x03;
        SYNCDELAY;
       
        EP1OUTCFG = 0xA0;//EP1 OUT Bulk使能
        SYNCDELAY;
        EP1INCFG = 0xA0;//EP1 IN Bulk使能
        SYNCDELAY;
       
        EP2CFG = 0xA2;//EP2为Bulk OUT ,Double Buffer
        SYNCDELAY;
        EP4CFG = 0xA0;//EP4为Bulk OUT ,Double Buffer
        SYNCDELAY;
        EP6CFG = 0xE2;//EP6为Bulk IN,Double Buffer
        SYNCDELAY;
        EP8CFG = 0xE0;//EP8为Bulk IN,Double Buffer
        SYNCDELAY;       

        EP2BCL = 0x80;
        SYNCDELAY;
        EP2BCL = 0x80;
        SYNCDELAY;
        EP4BCL = 0x80;
        SYNCDELAY;
        EP4BCL = 0x80;
        SYNCDELAY;

        FIFOPINPOLAR = 0x03;//EF高电平有效,FF高电平有效
        SYNCDELAY;
        //FLAGA=EP2 EF,高表示空,低表示不空(有数据需要DSP读)  
        //FLAGB=EP4 EF,高表示空,低表示不空(有数据需要DSP读)
        //FLAGC=EP6 FF,高表示满,低表示不满(DSP可以写数据进来)
        PINFLAGSAB = 0x98;
        SYNCDELAY;
        PINFLAGSCD = 0x0E;
        SYNCDELAY;
        PORTACFG &= ~0x80;//FLAGD做为nCS使用
        SYNCDELAY;
        PORTACFG |= 0x40;//FLAGD做为nCS使用
        SYNCDELAY;

        EP2FIFOCFG = 0x00;
        SYNCDELAY;
        EP2FIFOCFG = 0x10;//EP2 AUTOOUT=1,8bit数据总线模式
        SYNCDELAY;
        EP4FIFOCFG = 0x00;
        SYNCDELAY;
        EP4FIFOCFG = 0x10;//EP4 AUTOOUT=1,8bit数据总线模式
        SYNCDELAY;
        EP6FIFOCFG = 0x00;
        SYNCDELAY;
        EP6FIFOCFG = 0x0C;//EP6 AUTOIN=1,ZEROLENIN=1,8bit数据总线模式
        SYNCDELAY;
        EP8FIFOCFG = 0x00;
        SYNCDELAY;
        EP8FIFOCFG = 0x0C;//EP8 AUTOIN=1,ZEROLENIN=1,8bit数据总线模式
        SYNCDELAY;

        AUTOPTRSETUP |= 0x01;
        SYNCDELAY;
       
        // set PA0 for output
        Enable_led();
        ledOn();
       
        // default to I2C bus freq = 100 KHz
        I2CTL &= ~bm400KHZ;        // 0: 100 KHz       

请大家指教。谢谢

相关帖子

沙发
tanghuihua|  楼主 | 2016-11-14 16:05 | 只看该作者
注:由于我的外部CPU只有nCS,nWE,nRD,DATA[7..0],ADDR[15..0],所以我将68013的SLOE和SLRD并在一起接了CPU的nRD,是不是这里出了问题?

CPU总线肯定没有问题,因为往总线上挂接的其他IC读写都正常。往68013的EP6写数据也正常,就是读不正常。

使用特权

评论回复
板凳
tanghuihua|  楼主 | 2016-11-15 11:32 | 只看该作者
IC坏掉了,换了个IC,OK。结贴。
估计可能是SLRD管脚坏了,所以总是读不空。

使用特权

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

本版积分规则

14

主题

35

帖子

2

粉丝