flyto
驱动牛犊
驱动牛犊
  • 注册日期2001-10-26
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4013回复:27

68013 GPIF主模式 自动方式

楼主#
更多 发布于:2004-12-10 14:13
有那位高手用过68013? 我现在设置是GPIF方式,自动输入和输出方式(AUTOIN=1, GPIF FIFO Read Transactions, GPIF AUTOOUT=1)。
使用资料上的标准设置和Cyress开发板,就是调不通,不能自动读/写数据。那位有高见请赐教,谢谢!

最新喜欢:

jinghuirenjinghu...
flyto
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-14 08:08
你用的CY3681???
呵呵……,按你问的问题和描述!好像你没有接外围,是不是呀?
如果是的话,还是先在面包板上接上你想用的外围吧!
如果接了外围,有你说的现象的话,我觉得有下面几种可能性!
一是你在初始化的时候设置有问题;
二是你的GPIF波形设置有问题;
三是你用户函数TD_POLL没有设置好;
具体是哪一种原因,你自己好好的找找!
呵呵……
祝你好运!!!!
flyto
驱动牛犊
驱动牛犊
  • 注册日期2001-10-26
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-14 09:48
先谢谢了!
1。我用手动方式测试的初始化设置,是可以的。然后将GPIF 设置部分全部改成自动方式,不行。
2。我设置是GPIF 波形是计数器益出方式,在开发板是否可以不加外设了?
因为在此方式下 GPIF是主控输出的,应该跟外设没有关系。而且在手动方式下,是有CTL波形输出的。
3。“是你用户函数TD_POLL没有设置好;“是指什么?我直接用开发板读写数据。你是指上层操作吗?现在还没有。
我的QQ:341928146  flyto@flyto.cn

flyto
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-14 12:48
"1。我用手动方式测试的初始化设置,是可以的。然后将GPIF 设置部分全部改成自动方式,不行。"
应该是你的设置没有设置好吧!手动和自动方式,在初始化和TD_POLL函数中都是需要修改的!你认真的检查以下!
"2。我设置是GPIF 波形是计数器益出方式,在开发板是否可以不加外设了?"你这个问题,我不知道是不是可以不接外围,我个人的观点认为还是接一个外围比较好!不一定要接DSP,你可以接一些简单的也可以呀!

"因为在此方式下 GPIF是主控输出的,应该跟外设没有关系。"恩!感觉你的想法有一点偏见,不是说GPIF主控输出,就和外围没有关系,那么我问你,如果你需要RDY信号来控制你的波形,你的RDY信号哪里来的呀?另外还有你的一些握手信号,不都是和外围有关吗?

我说的"TD_POLL没有设置好",是因为里面都是按你要实现目的,而设置的内容!也许你没有设置好,而使得他不能按你所要得到的结果运行的!这个函数是在你的"peripher.c"文件里头的一个函数!你可以好好的检查一下你的设置!

另外,建议你检查你的GPIF波形!

flyto
驱动牛犊
驱动牛犊
  • 注册日期2001-10-26
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-14 13:19
谢谢了!
1。波形初始化跟手动和自动有关系吗?是否可以认为手动可以的波形设置在自动方式下仍然是可以的?
2。按照资料里的说明,自动方式下,即在GPIF初始化时设置成自动方式后,在主程序中就没有任何处理程序了。既不用TD_POLL函数。
3。如果设置使用了RDY信号,那通讯时就必须给出RDY=0信号才能进行波形时序。可是我现在设置的是计数器益出或EF方式,即内部信号方式,开发板上RDY是悬空的(跟踪为高)。是否直接用开发板就应该可以读写数据了?
4。我的实际电路是有外设的,只是我现在想先把设置调通。我的理解是用开发板直接是应该可以读写数据的(信号选择为内部时)。
5。如果方便,可以给我你的联系方式吗?谢谢了!

flyto
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-14 13:42
手动和自动方式,波形没有什么不同,但是在void TD_Init( void )有一些不同,你自己对照一下!
至于你说的“2。按照资料里的说明,自动方式下,即在GPIF初始化时设置成自动方式后,在主程序中就没有任何处理程序了。既不用TD_POLL函数。”,我实在是不敢苟同!那有你这样理解的呀?你自己看看固件的架构,看看这个函数是什么用图的!如果你直接不用GPIF.C文件而没有用“peripheral.c”文件的话,是可以的,但是在GPIF.C里面有一个主函数,那么这个时候有一些地方是需要修改的!
我没有用这样的方式,我是直接接了外围再调试的!

另外,我用的也是CYPRESS的开发板,我实验CYPRESS公司本身提供的例题的时候,有一个交是要接上拉电阻的,还有一些是接地的!恩……,你具体要达到什么目的,我不是很清楚,所以呢,只能建议你好好的查查你的固件,另外好好的看CYPRESS提供的文档“EZ-USB FX2 Primer”!
祝你好运!!!
flyto
驱动牛犊
驱动牛犊
  • 注册日期2001-10-26
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-12-14 13:50
1。我现在手里只有开发板,实际的电路板还没有回来。所以只能拿开发板来调试程序。
2。我试过手动GPIF方式,可以在PD_Pool主程序中改参数,而且能看到更改结果。调试自动方式时,我直接屏蔽了TD_Poll函数。只是改动了GPIF 的初始化设置。
flyto
flyto
驱动牛犊
驱动牛犊
  • 注册日期2001-10-26
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-14 13:59
下面是我的设置,那位给看看那里有问题,谢谢!

void TD_Init(void)             // Called once at startup
{

 GpifInit ();

 CPUCS = 0x10;                 // CLKSPD[1:0]=10, for 48MHz operation
                                // ...default 12MHz...
                                // don't drive CLKOUT (CLKOE=0=>Not Driving CLKOUT)


REVCTL = 0x03; // MUST set REVCTL.0 and REVCTL.1 to 1
SYNCDELAY;
EP2CFG = 0xA0; // EP2 is DIR=OUT, TYPE=BULK, SIZE=512, BUF=4x
SYNCDELAY;
FIFORESET = 0x80; // Reset the FIFO
SYNCDELAY;
FIFORESET = 0x02;
SYNCDELAY;
FIFORESET = 0x00;
SYNCDELAY;
EP2FIFOCFG = 0x10; // EP2 is AUTOOUT=1, AUTOIN=0, ZEROLEN=0, WORDWIDE=0
SYNCDELAY;


OUTPKTEND = 0x82;
SYNCDELAY;
OUTPKTEND = 0x82;

  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;

}
flyto
flyto
驱动牛犊
驱动牛犊
  • 注册日期2001-10-26
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-14 14:03
实际上还有EP6,即如下程序,请看
void TD_Init(void)             // Called once at startup
{

 GpifInit ();

 CPUCS = 0x10;                 // CLKSPD[1:0]=10, for 48MHz operation
                                // ...default 12MHz...
                                // don't drive CLKOUT (CLKOE=0=>Not Driving CLKOUT)


REVCTL = 0x03; // MUST set REVCTL.0 and REVCTL.1 to 1
SYNCDELAY;

EP2CFG = 0xA0; // EP2 is DIR=OUT, TYPE=BULK, SIZE=512, BUF=4x
SYNCDELAY;
EP8CFG = 0xE0; // EP8 is DIR=IN, TYPE=BULK
SYNCDELAY;

FIFORESET = 0x80; // Reset the FIFO
SYNCDELAY;
FIFORESET = 0x02;
SYNCDELAY;
FIFORESET = 0x06;
SYNCDELAY;
FIFORESET = 0x00;
SYNCDELAY;

EP2FIFOCFG = 0x10; // EP2 is AUTOOUT=1, AUTOIN=0, ZEROLEN=0, WORDWIDE=0
SYNCDELAY;
EP8FIFOCFG = 0x0C; // EP8 is AUTOOUT=0, AUTOIN=1, ZEROLEN=1, WORDWIDE=0
SYNCDELAY;

OUTPKTEND = 0x82;
SYNCDELAY;
OUTPKTEND = 0x82;



EP8AUTOINLENH = 0x02; // if AUTOIN=1, auto commit 512 byte packets
SYNCDELAY;
EP8AUTOINLENL = 0x00;


  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;

}

这应该是标准设置
flyto
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
9楼#
发布于: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波形就可能更是漏洞百出了!
因为感觉你的理解有一点混乱!呵呵……,不知道你所谓的,你用手动成功是达到什么样的程度,如果只是用示波器看到了有波形输出的话,那是不一定是对的!

等你的实际的电路板拿到手调试一下就知道了!感觉你肯定有很多的问题的!
lzyuer
驱动牛犊
驱动牛犊
  • 注册日期2004-09-05
  • 最后登录2005-05-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于: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有问题,我用后者也没法读取数据
flyto
驱动牛犊
驱动牛犊
  • 注册日期2001-10-26
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-12-14 15:33
谢谢了!在那里可以拿到该程序?
可以发到我的信箱中吗?那就再谢谢了!
flyto
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-12-14 16:00
你下载“GPIF Designer”软件的时候,里面有这个程序也有讲解,
另外你也可以看“EZ-USB FX2 GPIF Primer”里面也是一样的,而且讲的更详细!
flyto
驱动牛犊
驱动牛犊
  • 注册日期2001-10-26
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-12-14 16:14
下载有下面两个工程:
“FX2_to_extsyncFIFO GPIF FIFO Transactions Auto mode“和“FX2_to_extsyncFIFO GPIF Single Transactions“
用开发板测试时,两个都可以写数据,但是都不能读?有没有能读数据的例程?
flyto
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-12-14 19:09
你怎么知道可以写数据呀?又怎么知道可以读呢?这个两个例题都是接了外围的呀?难道你接了呀?不会吧!你不是说不接吗?我就不知道你从哪里看出你的数据写进去了!!!
说说看!!!
flyto
驱动牛犊
驱动牛犊
  • 注册日期2001-10-26
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于: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接口可以跟踪到与所写数据对应的波形.
以上是否就可以认为写数据操作是成功的?
flyto
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-12-15 09:01
我的意思是:你不能判断你写的数据是对还是错的!而不是说有没有脉冲的问题,只要你启动了GPIF波形的话,就是有脉冲的,用示波器都可以看到的,何况是逻辑分析仪呢!但是有了脉冲不代表就是正确的脉冲的!
我自己在调试的时候就发现了有这样的问题!我一个数据都没有接收到,但是脉冲是有的!而且就光看脉冲还以为是对的呢!结果还不是出了问题!
所以呢,我个人的观点是:只有看到你写的数据或是读出的数据是否正确才能有把握的判断是对是错了!!!
好了,我现在工作很忙!以后和讨论这个问题吧!
祝你好运~!!!
flyto
驱动牛犊
驱动牛犊
  • 注册日期2001-10-26
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-12-15 09:47
先谢谢了!
flyto
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-12-15 14:27
喂!楼主呀?你怎么连一点鼓励的分也没有啊?
虽然分不是最重要的,但是也是对我们的肯定呀!你说是不是呢?
呵呵……,楼主结贴了,可是分可不要忘了给哦!
flyto
驱动牛犊
驱动牛犊
  • 注册日期2001-10-26
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-12-15 15:31
很抱歉!
我是很感谢各位的,可是我怎么没有看到在哪里可以加分啊 .
我对此加分的概念不是很清楚,而且也不知道20分是什么概念,是多是少?
flyto
上一页
游客

返回顶部