搜索
bottom↓
回复: 4

AVR配置EP1C3遇到的问题请教

[复制链接]

出0入0汤圆

发表于 2009-8-15 16:58:26 | 显示全部楼层 |阅读模式
AVR配置EP1C3遇到一个问题,在CPU发送一组数据(2048个字节)的过程中,nSTATUS会等于0,但过一段时间后(18ms左右),nSTATUS会变回0,那这样算不算配置失败,需要重新配置呢?
我每向FPGA发送一个配置数据后都马上检测nSTATUS的,需要先延时再检测吗?
现在CONF_DONE不等于1.

如果说向FPGA发送一个配置数据后都需要马上检测nSTATUS,那在中途出现nSTATUS=0,是什么原因引起的呢?
请高手指导指导!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2009-8-15 17:13:19 | 显示全部楼层
还有要请教个问题,编译软件生成的SOF文件是不是要去头的呢?文件的开头有一些信息,要写入FPGA吗?

出0入0汤圆

 楼主| 发表于 2009-8-15 17:18:10 | 显示全部楼层
for(i=0;i<FPGA_Data_Count;i++)
        {
            
         
/*
按下列步骤操作I/O口线,即可完成对FPGA的配置:

1. nCONFIG="0"、DCLK="0",保持2μS以上。

2. 检测nSTATUS,如果为"0",表明FPGA已响应配置要求,可开始进行配置。否则报错。正常情况下,nCONFIG="0"后1μS内nSTATUS将为"0"。

3. nCONFIG="1",并等待5μS。

4. Data0上放置数据(LSB first),DCLK="1",延时。

5. DCLK="0",并检测nSTATUS,若为"0",则报错并重新开始。

6. 准备下一位数据,并重复执行步骤4、5,直到所有数据送出为止。

7. 此时Conf_done应变成"1",表明FPGA的配置已完成。如果所有数据送出后,Conf_done不为"1",必须重新配置(从步骤1开始)。

8. 配置完成后,再送出10个周期的DCLK,以使FPGA完成初始化。
  
*/           
            
            for(j=0;j<8;j++)
            {                                                      
                DCLK_0;//DATA0 pin at each rising edge of DCLK.
                if(Con_Data&0x1)//从低位开始
                    FPGA_D0_1;
                else
                    FPGA_D0_0;              
                DCLK_1;               
                asm("nop");
                asm("nop");
                asm("nop");
                asm("nop");               
                Con_Data>>=1;//从低位开始
               
               
            }
                     
            asm("WDR");//喂狗
            j=0;
            while(1)
            {  
                if((PINB&0x40)==0)//nSTATUS=0 FPGA需要重新配置。
                {                                                      
                    j++;  
                    if(j>100)
                    {  
                        ACK_Master(CONFIGURE_FPGA,'&',0,&Con_Data[0]);//应答主控失败
                        return;
                    }                    
                }
                else//nSTATUS=1
                    break;
               
            }
            
        }
        ACK_Master(CONFIGURE_FPGA,'!',0,&Con_Data[0]);//应答主控OK
                           
        
    }while(1);

   
    if(Rec_Con_Data_Flag)
    {
        for(i=0;i<100;i++)
        {
            asm("nop");              
            DCLK_1;            
            asm("nop");
            DCLK_0;         
        }
      
        if(PINB&0x20)//Conf_done应变成"1",表明FPGA的配置已完成。
        {  
            for(i=0;i<100;i++)//8. 配置完成后,再送出10个周期的DCLK,以使FPGA完成初始化。
            {            
                asm("nop");              
                DCLK_1;            
                asm("nop");
                DCLK_0;                                   
            }
            //Configure_flag=1;
            asm("WDR");     
            ACK_Master(CONFIGURE_FPGA,'!',0,&Con_Data[0]);
            return;
            
        }
    }

这是我的程序

出0入0汤圆

发表于 2009-8-29 16:39:07 | 显示全部楼层
AS也能这样做?PS的方式我做过

出0入0汤圆

发表于 2009-9-15 09:02:30 | 显示全部楼层
要去头信息
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 19:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表