智能车制作

标题: OV7725图像采集问题。。图像采集出来分成两部分,左边有一小条是右边图像的右部。。 [打印本页]

作者: 不负时光    时间: 2017-1-15 18:39
标题: OV7725图像采集问题。。图像采集出来分成两部分,左边有一小条是右边图像的右部。。
图像采集出来是这样的。。

作者: 不负时光    时间: 2017-1-15 18:40
谢谢了
作者: sangchaochun    时间: 2017-1-16 01:17
首先看看串口是不是只是发送图像数据,如果有其他数据关闭,只发送图像数据,还有就是有可能是中断之间产生了冲突,在这就是重新建一个工程搞一下
作者: 不负时光    时间: 2017-1-16 11:01
sangchaochun 发表于 2017-1-16 01:17
首先看看串口是不是只是发送图像数据,如果有其他数据关闭,只发送图像数据,还有就是有可能是中断之间产生 ...

嗯,我试一下

作者: houge123    时间: 2017-1-16 16:47
初始化的问题,注意开中断的时间
作者: ghj521    时间: 2017-1-16 18:28
山外哥説是電源不穩定,或者沒下拉電阻的原因
作者: 不负时光    时间: 2017-1-16 18:34
houge123 发表于 2017-1-16 16:47
初始化的问题,注意开中断的时间

我是在场中断里开的行中断,应该没问题呀!!

作者: 冷冷的小g    时间: 2017-5-6 21:27
ghj521 发表于 2017-1-16 18:28
山外哥説是電源不穩定,或者沒下拉電阻的原因

需要那些下拉电阻  下拉电阻是多大?

作者: shen1994    时间: 2017-5-7 10:20
场中断开的时间不对,导致整个时序紊乱
作者: ghj521    时间: 2017-5-7 18:09
冷冷的小g 发表于 2017-5-6 21:27
需要那些下拉电阻  下拉电阻是多大?

我用的150欧的,,好行,,没那种问题了


作者: 冷冷的小g    时间: 2017-5-9 19:51
shen1994 发表于 2017-5-7 10:20
场中断开的时间不对,导致整个时序紊乱

场中断 是怎么开启的  void OV_ISR(uint32_t index)
{
    static uint8_t status = TRANSFER_IN_PROCESS;
    static uint32_t h_counter, v_counter;
    if(index & (1 << BOARD_OV7620_HREF_PIN))
    {
        DMA_SetDestAddress(HW_DMA_CH2, (uint32_t)gpHREF[h_counter++]);

        DMA_SetMajorLoopCounter(HW_DMA_CH2, (OV7620_W/8)+1);
        DMA_EnableRequest(HW_DMA_CH2);

        return;
    }
    if(index & (1 << BOARD_OV7620_VSYNC_PIN))
    {
        DisableInterrupts();

        switch(status)
        {
            case TRANSFER_IN_PROCESS:
                    UserApp(v_counter++);
                    //printf("i:%d %d\r\n", h_counter, i);
                    status = NEXT_FRAME;
                    h_counter = 0;

                break;
            case NEXT_FRAME: // waiting for next transfer
                status =  TRANSFER_IN_PROCESS;
                break;
            default:
                break;
        }
        EnableInterrupts();
        PORTA->ISFR = 0xFFFFFFFF;
        h_counter = 0;
        return;
    }
}



这里面的 index  是什么?  怎么调用的这个函数

作者: 冷冷的小g    时间: 2017-5-9 19:54
houge123 发表于 2017-1-16 16:47
初始化的问题,注意开中断的时间

开中断的时间  怎么弄?是下面这个函数吗?

void OV_ISR(uint32_t index)
{
    static uint8_t status = TRANSFER_IN_PROCESS;
    static uint32_t h_counter, v_counter;
   // uint32_t i;

    /* DDÖD¶Ï */
    if(index & (1 << BOARD_OV7620_HREF_PIN))
    {
        DMA_SetDestAddress(HW_DMA_CH2, (uint32_t)gpHREF[h_counter++]);
        //i = DMA_GetMajorLoopCount(HW_DMA_CH2);
        DMA_SetMajorLoopCounter(HW_DMA_CH2, (OV7620_W/8)+1);
        DMA_EnableRequest(HW_DMA_CH2);

        return;
    }
    /* 3¤ÖD¶Ï */
    if(index & (1 << BOARD_OV7620_VSYNC_PIN))
    {
        DisableInterrupts();

        switch(status)
        {
            case TRANSFER_IN_PROCESS:
                    UserApp(v_counter++);
                    //printf("i:%d %d\r\n", h_counter, i);
                    status = NEXT_FRAME;
                    h_counter = 0;

                break;
            case NEXT_FRAME: // waiting for next transfer
                status =  TRANSFER_IN_PROCESS;
                break;
            default:
                break;
        }
        EnableInterrupts();
        PORTA->ISFR = 0xFFFFFFFF;
        h_counter = 0;
        return;
    }
}







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