阅读:4015回复:27
68013 GPIF主模式 自动方式
有那位高手用过68013? 我现在设置是GPIF方式,自动输入和输出方式(AUTOIN=1, GPIF FIFO Read Transactions, GPIF AUTOOUT=1)。
使用资料上的标准设置和Cyress开发板,就是调不通,不能自动读/写数据。那位有高见请赐教,谢谢! |
|
最新喜欢:![]()
|
沙发#
发布于:2007-07-19 18:29
Cypress的手册上对于AUTOOUT=1的初始化代码是有问题的,请参照Cypress提供的Example,你会发现这样的Note:
需要根据Cypress提供的流程来处理,否则会出现问题的。 // (2)...when REVCTL.1=1, core blocks auto arming of OUT endp's // ...see above EPxBCL/OUTPKTEND sequence(s) // ...sequence is as follows: // ...(a) REVCTL.1=1 // ...(b) FIFORESET (as above) // ...(c) EPxBCL/OUTPKTEND (as above) // ...(d) AUTOOUT=1 |
|
板凳#
发布于:2007-07-19 18:28
Cypress的手册上对于AUTOOUT=1的初始化代码是有问题的,请参照Cypress提供的Example,你会发现这样的Note:
需要根据Cypress提供的流程来处理,否则会出现问题的。 // (2)...when REVCTL.1=1, core blocks auto arming of OUT endp's // ...see above EPxBCL/OUTPKTEND sequence(s) // ...sequence is as follows: // ...(a) REVCTL.1=1 // ...(b) FIFORESET (as above) // ...(c) EPxBCL/OUTPKTEND (as above) // ...(d) AUTOOUT=1 |
|
地板#
发布于:2007-07-19 18:25
Cypress的手册上对于AUTOOUT=1的初始化代码是有问题的,请参照Cypress提供的Example,你会发现这样的Note:
需要根据Cypress提供的流程来处理,否则会出现问题的。 // (2)...when REVCTL.1=1, core blocks auto arming of OUT endp's // ...see above EPxBCL/OUTPKTEND sequence(s) // ...sequence is as follows: // ...(a) REVCTL.1=1 // ...(b) FIFORESET (as above) // ...(c) EPxBCL/OUTPKTEND (as above) // ...(d) AUTOOUT=1 |
|
地下室#
发布于:2004-12-16 11:41
和你开玩笑的啦!!其实呢,能别人带去一点帮助,才是最重要的!
分呢,只不过是一个鼓励的作用! 我一开始的时候也什么都不会的,都是在论坛上向别人咨询的,现在虽然只是知道一点皮毛,但是如果碰到我可以解答的问题,我还是会尽量帮助别人的,因为最一样新的东西,不是一件很简单的事情的! 呵呵……! |
|
5楼#
发布于:2004-12-16 10:20
那个例子找到了吗?昨天找你的帖子没找到,抱歉!
|
|
6楼#
发布于:2004-12-16 10:07
很感谢你的回帖.
可惜我的积分不多,只能给这么多了. |
|
|
7楼#
发布于:2004-12-15 18:24
首先回答给分的问题:
在第一层的时候,不是有“改分”吗,是用来修改分的!修改你给的总分的!“20分”是有一点少哦!这么的问题,应该是要加的! “给分”按钮是用来给别人分的,明白了吗? 恩……,建议以后要是要问好几个问题的话,最好是另外开帖,不要在一个帖子上问几个问题! 回答后面提的一个问题: 用GPIF的时候,不是说自动的模式,就不要写任何的内容的! 要是那样的理解的话,那么读/写信号怎么给呀? 你说的那一段程序是说,你不要用用固件把数据从FIFOBUF传到PC里面,只要满了就可以自动的传给PC机就好了!如果用的是手动的话,需要加一些程序,至于是什么程序,自己看例题!! 好了,该给分了吧! |
|
8楼#
发布于:2004-12-15 17:09
我还有一个问题:
资料里介绍自动方式时,CPU可以不干涉的. 既: TD_Poll(): …………… // no code necessary to xfr data from host to master! // AUTOOUT=1 and SIZE=0 auto commits packets, // in 512 byte chunks. …………… 是否可以理解为,只要GPIF 和波形初始化设置好了,在主程序PD_Poll()中就可以不做任何处理了? |
|
|
9楼#
发布于:2004-12-15 15:31
很抱歉!
我是很感谢各位的,可是我怎么没有看到在哪里可以加分啊 . 我对此加分的概念不是很清楚,而且也不知道20分是什么概念,是多是少? |
|
|
10楼#
发布于:2004-12-15 14:27
喂!楼主呀?你怎么连一点鼓励的分也没有啊?
虽然分不是最重要的,但是也是对我们的肯定呀!你说是不是呢? 呵呵……,楼主结贴了,可是分可不要忘了给哦! |
|
11楼#
发布于:2004-12-15 09:47
先谢谢了!
|
|
|
12楼#
发布于:2004-12-15 09:01
我的意思是:你不能判断你写的数据是对还是错的!而不是说有没有脉冲的问题,只要你启动了GPIF波形的话,就是有脉冲的,用示波器都可以看到的,何况是逻辑分析仪呢!但是有了脉冲不代表就是正确的脉冲的!
我自己在调试的时候就发现了有这样的问题!我一个数据都没有接收到,但是脉冲是有的!而且就光看脉冲还以为是对的呢!结果还不是出了问题! 所以呢,我个人的观点是:只有看到你写的数据或是读出的数据是否正确才能有把握的判断是对是错了!!! 好了,我现在工作很忙!以后和讨论这个问题吧! 祝你好运~!!! |
|
13楼#
发布于:2004-12-15 08:41
1.这两个例程一个是单读写,一个是FIFO读写.等待信号选内部TCXpire.
2.用开发板写数据,不接外设,能够用逻辑分析仪跟踪到CTL0与CLK. 3.如果是单写操作,写64B or 128B 256B.可以从跟踪波形看到与所写数据数量相对应的CTL0个数.如64B 可以看到 64个CTL脉冲信号. 4.如果是FIFO读写.写64B or 128B 256B.可以从跟踪波形看到与所写数据数量相对应的CTL0宽度变化. 5.在CTL=0脉冲瞬间, 从PB接口可以跟踪到与所写数据对应的波形. 以上是否就可以认为写数据操作是成功的? |
|
|
14楼#
发布于:2004-12-14 19:09
你怎么知道可以写数据呀?又怎么知道可以读呢?这个两个例题都是接了外围的呀?难道你接了呀?不会吧!你不是说不接吗?我就不知道你从哪里看出你的数据写进去了!!!
说说看!!! |
|
15楼#
发布于:2004-12-14 16:14
下载有下面两个工程:
“FX2_to_extsyncFIFO GPIF FIFO Transactions Auto mode“和“FX2_to_extsyncFIFO GPIF Single Transactions“ 用开发板测试时,两个都可以写数据,但是都不能读?有没有能读数据的例程? |
|
|
16楼#
发布于:2004-12-14 16:00
你下载“GPIF Designer”软件的时候,里面有这个程序也有讲解,
另外你也可以看“EZ-USB FX2 GPIF Primer”里面也是一样的,而且讲的更详细! |
|
17楼#
发布于:2004-12-14 15:33
谢谢了!在那里可以拿到该程序?
可以发到我的信箱中吗?那就再谢谢了! |
|
|
18楼#
发布于:2004-12-14 15:25
建议用一下C:\Program Files\Cypress\GPIF Designer\fifo\FX2_to_extsyncFIFO.hex这个程序,好像可以读写程序,C:\Cypress\USB\Examples\FX2\FX2_to_extsyncFIFO GPIF Single Transactions\FX2_to_extsyncFIFO.hex这个程序有点问题,好像是gpif.c有问题,我用后者也没法读取数据
|
|
19楼#
发布于:2004-12-14 14:54
我看了一下哦!暂时就发现如下错误:
(1)你设置的是4X,而你在程序中又是: OUTPKTEND = 0x82; SYNCDELAY; OUTPKTEND = 0x82; 这样就漏了两个BUFFER了!应该有四个才是对的! (2)你的这一段函数,知道是什么意思吗? FLOWLOGIC = FlowStates[19]; // 0011 0110b - LFUNC[1:0] = 00 (A AND B), TERMA/B[2:0]=110 (FIFO Flag) SYNCDELAY; FLOWSTB = FlowStates[23]; // 0000 0100b - MSTB[2:0] = 100 (CTL4), not used as strobe SYNCDELAY; GPIFHOLDAMOUNT = FlowStates[26]; // 0x02 hold data for one half clock (10ns) assuming 48MHz IFCLK SYNCDELAY; FLOWSTBEDGE = FlowStates[24]; // 0x03 move data on both edges of clock SYNCDELAY; FLOWSTBHPERIOD = FlowStates[25]; // 0x02 20.83ns half period SYNCDELAY; // enable dual autopointer feature AUTOPTRSETUP |= 0x01; 是用到Flowstate/UDMA才要用的,如果我没有猜错的话,你就照搬文档里面的内容吧!如果用这个方式的话,是要你有RDY信号参与的,另外还要在GPIF方式做一些设置的,而不是简单的写好了程序就可以的! (3) 你说的是EP6,那我就不明白,你的这个: EP8AUTOINLENH = 0x02; // if AUTOIN=1, auto commit 512 byte packets SYNCDELAY; EP8AUTOINLENL = 0x00; 是什么呀?你怎么搬上去就是呀???? 另外, 我正的很怀疑你用手动是正确的!不是打击你,更不是不相信你!看了你写的程序,感觉你很多都没有理解,所以你的GPIF波形就可能更是漏洞百出了! 因为感觉你的理解有一点混乱!呵呵……,不知道你所谓的,你用手动成功是达到什么样的程度,如果只是用示波器看到了有波形输出的话,那是不一定是对的! 等你的实际的电路板拿到手调试一下就知道了!感觉你肯定有很多的问题的! |
|
上一页
下一页