阅读:3478回复:6
新人求教:68013 firmware的N多问题(sync+slave fifo+autoin)在线等!高人帮忙,你说完了我马上实验!!
en,麻烦大家了。。
先说一下我现在面临的最大的问题:slave fifo方式的时候,fifo一满就马上清空,很可能是自己清空的而不是读空的,因为bus hound接不到数据!empty flag和full flag的波形都是大多数高,偶尔一个向下的尖峰! 我正在写让68013工作与slave fifo方式的firmware,暂时只做同步,auto in=1的 en。。先问一句,keil需要做什么特别的设置么。。我是现状的keil后装的cy的开发套件,没问题吧? 之后,我rebuild了一下cy自己的bulkloop,做成iic烧到我板子的large eeprom上,工作正常。。。 之后的问题是,如果要开发我的程序,只要把bulkloop的td_init改写,td_poll清空就可以,是这样么? 如果不行的话,还需要改哪里? 之后是改写td init的问题。。 我把trm里的9.3.10:Auto-Mode Example: Synchronous FIFO IN Data Transfers 这后面的代码整个替换了bulkloop原来的td init。。请问这样可以么?(代码见下贴) 关于这段代码本身的问题 1,如果我想让他工作于sync+slave fifo+external clock,只要把ifconfig置为0x03就可以了么?不需要管cpucs了? 2,这段代码只配置了ep8cfg与ep8fifocfg,真的可以么?如果我不使用ep246,就完全不用管他们相关的寄存器么? 3,如果我只是想让flagb=full flagt,flagc=empty flag,全部active low,而完全不需要programmable full,可不可以不用管pinflagsabcd? 4,ep8autolength是每次打包的数据长度吧?不做配置也可以把? 我现在没有别的要求。。只要数据能通了就可以。。。就是说在cy console里选中ep8,点 bulk tran,能收到我给他发送的数据就可以。。。。 顺便说一下。。cy自己提供的开发包中的\usb\target\lp里面的程序我也做过类似的改动。。其他不动,清td poll,改td init,没用。。现象和改bulkloop一样。。 之后说一下我目前实验的情况 我把上面那样得到的iic烧到了eeprom里面,重新连接usb cable,整个板子不连接其他东西full flag永远为1,empty flag似乎是随机的。。。有的时候重新连接usb cable,可以稳稳的停在0,有时候就是稳稳的停在1 之后我脸上了fifo master,用fpag做的。。 fpga的功能大概就是,fifoadr[1:0]=11b,fd【15:0】=0xF0F0 slwr看起来就是ifclk在下降沿做的2分频,当然实际上是按照状态机做的 总之fpga呈现出来的输出波形和trm里的figure 9.12的waveform一模一样。。除了flagb和flagc flagb和flagc在我的板子上呈现出来的是一个大多数情况是1,偶尔出现一个向下的尖峰的情况 感觉就是fifo刚一满就被清空了。。我实在不明白是什么清空的他,难道fifo满了就被进行了fiforeset?我用bus hound无法截取到任何数据,自然,bulk tran也总是failed 68013硬件ok,不过cy提供的其他几个程序都能用。fpga部分也没问题,我按这种方法,曾经成功的传输了一次。。不过也只有那一次,之后firmware和fpga程序都没改过。。 |
|
沙发#
发布于:2012-02-26 10:19
学习了支持一下!!
|
|
|
板凳#
发布于:2012-02-23 19:52
太感谢版主了,我也遇到这个问题了,我恨不得把板子砸了啊,以前明明是传输正常的,突然就不正常了,膜拜版主啊!!!!敢问版主,通过这种解决方法,有没有发现数据是可以传输了,但是有的包数据是乱码的,我发现现在一包正常,一包有错误,后面的都市这样,一包正常一包错误。
|
|
地板#
发布于:2011-06-29 10:24
Re:新人求教:68013 firmware的N多问题(sync+slave fifo+autoin)在线等!高人帮忙,你说完了我马上实验 ..
我在用mtm001摄像头,并且用slave fifo传输数据,用bus hound抓取数据的时候发现全是0000。这让我很是疑惑。希望版主能够不吝赐教。拜谢了··· |
|
地下室#
发布于:2011-06-29 10:22
Re:新人求教:68013 firmware的N多问题(sync+slave fifo+autoin)在线等!高人帮忙,你说完了我马上实验 ..
我也在弄EZ USB |
|
5楼#
发布于:2008-09-09 12:11
Re:新人求教:68013 firmware的N多问题(sync+slave fifo+autoin)在线等!高人帮忙,你说完了我马上实验 ..
最新进展我的板子可以穿数据了 不过,每次程序下载到68013的板子上面之后 需要先点一下cyconsole的hold,再点run,光点其中一个不可以 之后再点bulk tran,就可以顺利传输数据了 有人知道为什么吗? |
|
6楼#
发布于:2008-09-09 11:10
Re:新人求教:68013 firmware的N多问题(sync+slave fifo+a
我的td init,和trm9.3.10一样IFCONFIG = 0x03; // use IFCLK pin driven by external logic (5MHz to 48MHz) // use slave FIFO interface pins driven sync by external master SYNCDELAY; REVCTL = 0x03; // REVCTL.0 and REVCTL.1 set to 1 SYNCDELAY; EP8CFG = 0xE0; // sets EP8 valid for IN's // and defines the endpoint for 512 byte packets, 2x buffered SYNCDELAY; FIFORESET = 0x80; // reset all FIFOs SYNCDELAY; FIFORESET = 0x02; SYNCDELAY; FIFORESET = 0x04; SYNCDELAY; FIFORESET = 0x06; SYNCDELAY; FIFORESET = 0x08; SYNCDELAY; FIFORESET = 0x00; SYNCDELAY; // this defines the external interface to be the following: EP8FIFOCFG = 0x0C; // this lets the EZ-USB auto commit IN packets, gives the // ability to send zero length packets, // and sets the slave FIFO data interface to 8-bits PINFLAGSAB = 0x00; // defines FLAGA as prog-level flag, pointed to by FIFOADR[1:0] SYNCDELAY; // FLAGB as full flag, as pointed to by FIFOADR[1:0] PINFLAGSCD = 0x00; // FLAGC as empty flag, as pointed to by FIFOADR[1:0] // won't generally need FLAGD PORTACFG = 0x00; // used PA7/FLAGD as a port pin, not as a FIFO flag SYNCDELAY; FIFOPINPOLAR = 0x00; // set all slave FIFO interface pins as active low SYNCDELAY; EP8AUTOINLENH = 0x02; // EZ-USB automatically commits data in 512-byte chunks SYNCDELAY; EP8AUTOINLENL = 0x00; SYNCDELAY; EP8FIFOPFH = 0x80; // you can define the programmable flag (FLAGA) SYNCDELAY; // to be active at the level you wish EP8FIFOPFL = 0x00; |
|