智能车制作

标题: 野火大哥,求助,DMA的问题 [打印本页]

作者: kingsing2    时间: 2014-6-29 21:14
标题: 野火大哥,求助,DMA的问题
我的是摄像头采集,PCLK是PTC6,VSYN是PTC10,HREF是PTC11,数据输入端是PTB16-23.用的是kl26,野火的库。
DMA的配置如下:   
    port_init(PTC6,DMA_RISING |PULLDOWN |ALT1);
    dma_portx2buff_init(DMA_CH0,(void *)&PTB_B2_IN,(void *)Image_Data,PTC6, DMA_BYTE1,Image_Column);
    DMA_EN(DMA_CH0);                    //DMA must be enabled before it starts to work
行中断场中断脚的配置如下:
    port_init(H_isrPin,IRQ_RISING |PULLDOWN   |ALT1);
    port_init(V_isrPin,IRQ_RISING |PULLDOWN   |ALT1);
    set_vector_handler(PORTC_PORTD_VECTORn,portc_handler);               //interrupt service function
数据输入脚配置如下:
    port_init(PTB16,ALT1 |PULLDOWN);              //enable PTB16-23 as  GPIO
    port_init(PTB17,ALT1 |PULLDOWN);
    port_init(PTB18,ALT1 |PULLDOWN);
    port_init(PTB19,ALT1 |PULLDOWN);
    port_init(PTB20,ALT1 |PULLDOWN);
    port_init(PTB21,ALT1 |PULLDOWN);
    port_init(PTB22,ALT1 |PULLDOWN);
    port_init(PTB23,ALT1 |PULLDOWN);

    gpio_init(PTB16,GPI,0);             //initiate gpio
    gpio_init(PTB17,GPI,0);
    gpio_init(PTB18,GPI,0);
    gpio_init(PTB19,GPI,0);
    gpio_init(PTB20,GPI,0);
    gpio_init(PTB21,GPI,0);
    gpio_init(PTB22,GPI,0);
    gpio_init(PTB23,GPI,0);
行中断、场中断服务函数如下:
void portc_handler()
{

    if(PORTC_ISFR & (1 << H_isrPinNum))           //make sure the H interrupt occurs
    {
        PORTC_ISFR  = (1 << H_isrPinNum);        //write 1 to clear the flag
        if(!Image_Row_Cnt) Image_Field_Over = 0;
        if(Image_Row_Cnt<(Image_Row-1))
        {

            DMA_EN(DMA_CH0);                    //DMA must be enabled before it starts to work
            Image_Row_Cnt++;
        }
        else
        {
            Image_Field_Over = 1;
        }
    }
    if(PORTC_ISFR & (1<< V_isrPinNum))           //make sure V interrupt occurs
    {
        PORTC_ISFR  = (1 << V_isrPinNum);        //write 1 to clear the flag
        dma_repeat(DMA_CH0,(void *)&PTB_B2_IN, (void *)Image_Data,Image_Column);
        Image_Row_Cnt=0;
    }
}


不使用DMA传输完成中断。
在主函数中:
初始化PCLK、VSYN、HREF脚,打开中断,打开DMA。
现在可以进入中断,可以将一幅图给扫描下来,但是得到的数据全是0,不知道是不是配置上的问题。求火哥帮忙看一下




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2