为什么我的程序传不下去了。。

[复制链接]
274|4
手机看帖
扫描二维码
随时随地手机跟帖
chenjunt|  楼主 | 2019-5-28 22:46 | 显示全部楼层 |阅读模式

关于BULK OUT中REVCTL=0x03的疑问:
我的固件程序是:(功能是:利用EP2 EP4 EP8 进行向外传输数据,用EP6进行传入数据。块传输
当 REVCTL = 0x03;时候,根本把数据传不出去。看CY7C68013a的官方文件时候,说Slave FIFO 时候,必须设置REVCTL=0x03。
可为什么我的程序传不下去了。。。

使用特权

评论回复
stly| | 2019-5-28 22:48 | 显示全部楼层
肯定是你哪设置的问题

使用特权

评论回复
chenjunt|  楼主 | 2019-5-28 22:49 | 显示全部楼层
我把REVCTL=0x00;时候,是可以把数据传下去的。但是貌似就传不回来了。。。

使用特权

评论回复
stly| | 2019-5-28 22:50 | 显示全部楼层
程序呢

使用特权

评论回复
chenjunt|  楼主 | 2019-5-28 22:51 | 显示全部楼层

void TD_Init(void)             // Called once at startup
{         
          CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ; // set the CPU clock to 48MHz
          // set the slave FIFO interface to 48MHz
         REVCTL = 0x03;
         SYNCDELAY;   

          FIFORESET = 0x80;// activate NAK-ALL to avoid race conditions
          SYNCDELAY;                    //
          FIFORESET = 0x02;             // reset, FIFO 2
          SYNCDELAY;
          FIFORESET = 0x04;
          SYNCDELAY;  
          FIFORESET = 0x06;             // reset, FIFO 2
          SYNCDELAY;                  //                   //
          FIFORESET = 0x08;
          SYNCDELAY;
          FIFORESET = 0x00;             // deactivate NAK-ALL
          SYNCDELAY;
          IFCONFIG = 0xCB;   
        
         EP2CFG = 0xA2;  //OUT端点,双缓冲
        EP2FIFOCFG = 0x35;    // 自动输出,16位数据        
        OUTPKTEND=0x82; //强制OUT包结束
          SYNCDELAY;
          OUTPKTEND=0x82; //强制OUT包结束
          SYNCDELAY;


        EP4CFG = 0xA0; //OUT端点,双缓冲
        EP4FIFOCFG = 0x35;    // 自动输出,16位数据
        OUTPKTEND=0x82; //强制OUT包结束
          SYNCDELAY;
          OUTPKTEND=0x82; //强制OUT包结束
          SYNCDELAY;

        EP6CFG = 0xE2; //in端点,双缓冲
        EP6FIFOCFG = 0x0D;   // 自动输入,16位数据
        EP6AUTOINLENH=0x02;
        SYNCDELAY;
          EP6AUTOINLENL=0X00; //set the packet size 512字节
          SYNCDELAY;
        EP6FIFOPFH = 0x82; // you can define the programmable flag (FLAGA)
        SYNCDELAY; // to be active at the level you wish
        EP6FIFOPFL = 0x00;
        SYNCDELAY;
//        INPKTEND = 0x06; //发送短数据包给上位机
//        SYNCDELAY;

        EP8CFG = 0xA0; //out端点,双缓冲
        EP8FIFOCFG = 0x35;    // 自动输出,16位数据        
        OUTPKTEND=0x82; //强制OUT包结束
          SYNCDELAY;
          OUTPKTEND=0x82; //强制OUT包结束
          SYNCDELAY;

         
        PINFLAGSAB = 0x98;
        SYNCDELAY;  
        PINFLAGSCD = 0xBB;
          PORTACFG=0x40;
        FIFOPINPOLAR = 0x00;//设置slavefifo 接口为低电平有效
        SYNCDELAY;  
         
  //OUT端点计数器需要预先加载来启动传输,因为默认是双缓冲,所以加载两次
  EP2BCL=0x80;
  SYNCDELAY;
  EP2BCL=0x80;
  SYNCDELAY;
  
  EP4BCL=0x80;
  SYNCDELAY;
  EP4BCL=0x80;
  SYNCDELAY;

  EP8BCL=0x80;
  SYNCDELAY;
  EP8BCL=0x80;
  SYNCDELAY;

}

使用特权

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

本版积分规则

718

主题

7868

帖子

5

粉丝