首页 » 技术SOS » EDA与制造 » EDA/IC设计 » 求助 USB芯片CY7C68013与CPLD通信问题

求助 USB芯片CY7C68013与CPLD通信问题

菜鸟
2013-03-08 14:13:27     悬赏5分
你好,我现在要做一个USB数据采集模块, 其通信时的工作过程为:CPLD 通过USB(68013)向PC发送数据时,首先查看空、半满和满这3个状态信号,然后向USB写入适当大小的数据,以保证数据不会溢出; 问题在于 PC机通过USB向CPLD发送命令字时,USB通过什么方式通知CPLD读取命令字呢? 看到过例子是使用中断的方式,但我在所选的片子上(CY7C68013A 56脚QFN封装)没找到相应引脚。请各位前辈指点.
分享
关键词: USB, CPLD   
菜鸟
2013-03-13 15:54:22
1楼

可以尝试查看你所预留的EPOUT端口非空标志位,不空就去读取命令,反正我现在是这么做的

院士
2013-03-13 15:55:01
2楼

从cpld写数据到cy7c68013,并在电脑上显示所写数据的相关设置 cpld上写数到usb数据总线,slave fifo模式下并通过ep6以bulk autoin的方式传入电脑,并在电脑上面显示 相关设置: A.通过epm3128配置slave fifo模式 fifoaddr[1:0] = 10 选择ep6 worldwide = 0(ep2fifocfg &ep4fifocfg &ep6fifocfg &ep8fifocfg的最低位设置为0) reset引脚固定为1 B.设置cy7c68013相关程序 过程1:异步方式 设置芯片工作在slave fifo模式下,数据为异步方式,并使用内部时钟 因为为异步方式,故必须设置slwr写时钟控制信号,此过程是通过cpld管脚传入20M方波来完成的。 void TD_Init( void ) { // Called once at startup REVCTL="0x03"; SYNCDELAY; CPUCS = 0x0A; //0x12=48Mhz 0x02=12Mhz 0x0a=24Mhz; CLKOUT enable SYNCDELAY; IFCONFIG = 0xFB; //设置芯片工作在slave fifo模式下,数据为异步方式,并使用内部时钟 SYNCDELAY; FIFORESET = 0x80; // activate NAK-ALL to avoid race conditions SYNCDELAY; // see TRM section 15.14 FIFORESET = 0x02; // reset, FIFO 2 SYNCDELAY; // FIFORESET = 0x04; // reset, FIFO 4 SYNCDELAY; // FIFORESET = 0x06; // reset, FIFO 6 SYNCDELAY; // FIFORESET = 0x08; // reset, FIFO 8 SYNCDELAY; // FIFORESET = 0x00; // deactivate NAK-ALl SYNCDELAY; PINFLAGSAB = 0xAE; // FLAGA - fixed EP6FF, FLAGB - fixed EP6EF SYNCDELAY; SYNCDELAY; FIFOPINPOLAR = 0x00; // all signals active low SYNCDELAY; SYNCDELAY; EP6CFG = 0xE0; //BULK,IN,512*4 BUFFER SYNCDELAY; EP6AUTOINLENH = 0x02; //AUTOIN = 512 SYNCDELAY; EP6AUTOINLENL = 0x00; SYNCDELAY; EP6FIFOCFG = 0x0D; // AUTOIN="1", ZEROLENIN="1", WORDWIDE="1"; //0x0D:16BIT; 0x0C:8BIT SYNCDELAY; } 过程2:同步方式 设置slwr管脚同步为0,也就是设置写信号一直使能 芯片使用外部时钟与cpld同步,并配置为slave fifo 模式 相关程序: void TD_Init( void ) { // Called once at startup CPUCS = 0x10; // CLKSPD[1:0]=10, for 48MHz operation IFCONFIG = 0x03; //外部时钟 slave fifo模式 SYNCDELAY; FIFORESET = 0x80; // activate NAK-ALL to avoid race conditions SYNCDELAY; // see TRM section 15.14 FIFORESET = 0x02; // reset, FIFO 2 SYNCDELAY; // FIFORESET = 0x04; // reset, FIFO 4 SYNCDELAY; // FIFORESET = 0x06; // reset, FIFO 6 SYNCDELAY; // FIFORESET = 0x08; // reset, FIFO 8 SYNCDELAY; // FIFORESET = 0x00; // deactivate NAK-ALL SYNCDELAY; PINFLAGSAB = 0x98; // FLAGA - fixed EP2EF, FLAGB - fixed EP4EF SYNCDELAY; PINFLAGSCD = 0xFE; // FLAGC - fixed EP6FF, FLAGD - fixed EP8FF SYNCDELAY; PORTACFG |= 0x80; // FLAGD, set alt. func. of PA7 pin SYNCDELAY; FIFOPINPOLAR = 0x00; // all signals active low SYNCDELAY; // handle the case where we were already in AUTO mode... EP6FIFOCFG = 0x0C; // AUTOIN="1", ZEROLENIN="1", WORDWIDE="0" SYNCDELAY; EP8FIFOCFG = 0x0C; // AUTOIN="1", ZEROLENIN="1", WORDWIDE="0" } 当然上述两个过程都需要在dsar.a51设置ep6为bulk in 否则端点无法被识别。 C.发热问题解决方案: cpld epm3128与cy7c68013芯片相连接管脚中未使用到的,应在epm3128中设置为高阻态,相应设置方法是: 在quartus中,点击assignment菜单,选择“device”,在max3000A下面的“device and pins options”中 ,“unused pins”,设置为“as input tri-stated”即三态输入方式。 另外为解决总线上电阻两边电平不一致的不良状态,应通过epm3128配置sloe管脚为高,这是因为数据是从usb单片机cy7c68013写入电脑的,数据只是单方面的写,没有进行相关的读操作,故应禁止读使能。

高工
2022-11-07 23:04:39
3楼

看得头晕啊

专家
2023-03-31 12:58:05
4楼

学习

专家
2023-06-13 20:27:01
5楼

看得头晕啊