您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF592技术支持专区 -> 【已解决】bf592 PPI 进不了中断 麻烦高手分... 
本帖共有1001个阅读者
发表帖子 发表投票 回复主题
【已解决】bf592 PPI 进不了中断 麻烦高手分析下原因,谢谢
red_wlh(论坛新手)
red_wlh
头衔:社区公民
帮派:无帮无派
帖数:34
金钱:359
积分:41
注册时间:2012/4/9
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
【已解决】bf592 PPI 进不了中断 麻烦高手分析下原因,谢谢

// 源码

short sFrame[858*5];


bool Set_PACK32 = true;
bool Set_Entire_Field = true;
int nCount = 0;
int nCount1 = 0;

int main( void )
{
nCount1 = 0;

Set_PLL(14,4);   //  内核时钟:27MHz *14 = 378MHz  378MHz / 4 = 94.5MHz    内核时钟:25MHz *16 = 400MHz  系统时钟:400MHz / 4 = 100MHz

InitPPI0(Set_Entire_Field, Set_PACK32,  PIXEL_PER_LINE, LINES_PER_FRAME);

InitInterrupts_coreA();

EnablePPI0();

while(1)
{
  nCount++;
}


return 0;
}

oid InitInterrupts_coreA(void)
{  


// configure interrupt
*pSIC_IAR0 = *pSIC_IAR0 & 0xffffffff | 0x00000000;
*pSIC_IAR1 = *pSIC_IAR1 & 0xffffffff | 0x00000001; // map DMA0 PPI Interrupt -> IVG8
*pSIC_IAR2 = *pSIC_IAR2 & 0xffffffff | 0x00000000;  
ssync();
register_handler(ik_ivg8, PPI0_RxIsr);  // assign ISR to interrupt vector
ssync();
*pSIC_IMASK=0xffffffff;                        // 不屏蔽也没有中断

ssync();


}

EX_INTERRUPT_HANDLER(PPI0_RxIsr)
{

nCount1++;

}

void InitPPI0(bool entire_field, bool pack32,short pixel, short lines)
{


short transfer_length_bytes = ((pack32) ? 4 : 1);

// configure PPI0 - not enabled yet
*pPPI_CONTROL = (entire_field << 2) | FLD_SEL | (pack32 << 7)| (pack32 << 8);
*pPPI_FRAME = lines;
ssync();

// configure DMA for PPI0 - not enabled yet
*pDMA1_X_COUNT = pixel * sizeof(short) / transfer_length_bytes; // 2 bytes for each pixel, count divided by four if 32-bit DMA transfers are done
*pDMA1_Y_COUNT = 5;
*pDMA1_X_MODIFY = transfer_length_bytes;  
*pDMA1_Y_MODIFY = transfer_length_bytes;
  
*pDMA1_START_ADDR = sFrame;

// 停止模式
*pDMA1_CONFIG = 0x1000 | 0x0000 | DI_EN | DMA2D | (pack32 << 3) | WNR;


ssync();

}


void DisablePPI0(void)
{
    
    // disable transfers
    *pPPI_CONTROL &= ~PORT_EN;
    ssync();
    *pDMA1_CONFIG &= ~DMAEN;
    ssync();
    
}


void EnablePPI0(void)
{

    // enable transfers
    *pDMA1_CONFIG |= DMAEN;
    ssync();
    *pPPI_CONTROL |= PORT_EN;
    ssync();
    
    
}

void Set_PLL(int pmsel,int pssel)
{
int new_PLL_CTL;
*pPLL_DIV = pssel;
asm("ssync;");
new_PLL_CTL = (pmsel & 0x3f) << 9;  
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
  *pPLL_CTL = new_PLL_CTL;
  asm("ssync;");
  asm("idle;");
}
}





「该帖子被 red_wlh 在 2012-09-05 11:08:35 编辑过」

学习DSP中
等级:论坛新手 参考IP地址:*.*.*.*
2012/9/5 10:16:48
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

中断屏蔽不要全都打开。

*pSIC_IMASK   ,寄存器名错误。

InitPPI0(Set_Entire_Field, Set_PACK32,  PIXEL_PER_LINE, LINES_PER_FRAME);

看不到这些参数,不知道是否会内存溢出。



这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/9/5 12:42:14
red_wlh(论坛新手)
red_wlh
头衔:社区公民
帮派:无帮无派
帖数:34
金钱:359
积分:41
注册时间:2012/4/9
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

*pSIC_IMASK; 编译能过

InitPPI0(1, 1,  858, 525);


学习DSP中
等级:论坛新手 参考IP地址:*.*.*.*
2012/9/5 14:54:30
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
592内存能放下858*525*2的数据量吗?

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/9/5 16:36:23
red_wlh(论坛新手)
red_wlh
头衔:社区公民
帮派:无帮无派
帖数:34
金钱:359
积分:41
注册时间:2012/4/9
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

我只是设置 *pPPI_FRAME = 525;

*pDMA1_Y_COUNT = 5;   // 读取的数据实际是 sFrame[858*5];

因为sFrame 只是在主函数定义的全局缓存 ,我并没有与物理内存映射起来(没有建相关**.ldf文件,嘿嘿,笨,还不会弄)才导致不能进中断,读取不了数据?



「该帖子被 red_wlh 在 2012-09-05 17:08:23 编辑过」

学习DSP中
等级:论坛新手 参考IP地址:*.*.*.*
2012/9/5 17:07:33
red_wlh(论坛新手)
red_wlh
头衔:社区公民
帮派:无帮无派
帖数:34
金钱:359
积分:41
注册时间:2012/4/9
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

因为之前用的是BF561 和 bf533开发板 不用对引脚复用配置就可以接收视频信号。而bf592 引脚只有64个,在使用PPI模块时,得先配置PORTG端口为PPI外设置功能。才能接收ITU656数据,才会进入中断程序.


学习DSP中
等级:论坛新手 参考IP地址:*.*.*.*
2012/9/28 10:20:30
尊贵身份标志
夜色飘摇(论坛版主)
夜色飘摇
头衔:社区公民
帮派:无帮无派
帖数:350
金钱:1773
积分:332
注册时间:2011/6/8
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

赞!


我要成为勇敢的海上战士!
等级:论坛版主 参考IP地址:*.*.*.*
2012/9/28 10:28:43
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154324 Call, 1 Queries, Processed in 0.156250 second(s),