您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF537的PPI口读数错误的问题
本帖共有518个阅读者
发表帖子 发表投票 回复主题
BF537的PPI口读数错误的问题
adwin(论坛新手)
adwin
头衔:社区公民
帮派:无帮无派
帖数:4
金钱:152
积分:8
注册时间:2014/7/4
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
BF537的PPI口读数错误的问题

BF537和FPGA通过PPI口连接,FPGA写,BF537读。读数时遇到一个怪现象:前29个数是对的,后边的数则是隔一个存一个。比如说送了1~50,那么BF537内存储的结果是:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,34,36,38,40,42,44,46,48,50.程序如下,请高手帮忙看看问题在哪儿,谢谢了!

int main( void )
{  
int circflag = -1;
break_flg = 0;

  *pPLL_DIV = 0x000A;  //sclk = 50MHz;
  ssync();

Init_SDRAM();

ssync();/* Begin adding your custom code here */
short temp = 0;

    temp = *pPORTG_FER;
ssync();
temp = 0xFFFF;
*pPORTG_FER = temp;
ssync();
*pPORTG_FER = temp;
ssync();

temp = *pPORTF_FER;
ssync();
temp = 0xFFC0;
*pPORTF_FER = temp;
ssync();
*pPORTF_FER = temp;
ssync();

temp = *pPORT_MUX;
ssync();
temp = 0x0180;
*pPORT_MUX  = temp;
ssync();
*pPORT_MUX  = temp;
ssync();
    
    for(kk=0;kk<64;kk++)
    {  
     circflag = -circflag;
        if (circflag==1)
        addrtemp = rx1_buffer;
        else
        addrtemp = rx2_buffer;
        
        *pDMA0_START_ADDR = addrtemp;
        *pDMA0_CURR_ADDR = addrtemp;
        
        *pPPI_CONTROL = 0x0000;
        *pPPI_CONTROL = 0x383c;//387c;

        *pDMA0_CONFIG = 0x0000;
        *pDMA0_CONFIG = 0x0086;  
        *pDMA0_X_COUNT = cashdatalength;
        *pDMA0_CURR_X_COUNT = cashdatalength;
        *pDMA0_X_MODIFY = 0x0002;
    
        Init_Interrupts();
        

        *pDMA0_CONFIG = 0x0087;//0x0087;//0x0087;
        ssync();
        *pPPI_CONTROL = 0x383d;//0x383d;
        ssync();


        for (pp = 0;;pp++)
        {
            pp = 0;
         if (break_flg==1) break;
        }  
        
        //Init_SDRAMInterrupts();

        

     }
}


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/12/20 11:40:02
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

你先确认下FPGA发出来的原数据是否正确。也可以让FPGA只发送30以后的数据,比如只发31,测量PPI信号线,看波形是不是你发的31,找找规律。

另外你的数据线是否短接,有些高位数据线和低位短接后,当高位数据线使用后,会影响低位数据。

你也可以交错发送0xaaaa和0x5555,测量数据线是否有短接


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/12/21 11:44:39
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159226 Call, 1 Queries, Processed in 0.031250 second(s),