搜索
bottom↓
回复: 7

调试OV7670遇问题难解决,求助万能的坛····

[复制链接]

出0入0汤圆

发表于 2012-6-2 13:21:25 | 显示全部楼层 |阅读模式
本帖最后由 ldj003 于 2012-6-2 21:54 编辑

STM32+7670+AL422 基本上按照guanfu大侠的调试出图像来了,但是出现2个问题,求解决。1、摄像头照到光比较强烈的地方就会产生1/3的分块,那个分块就不动了。也就是说只有2/3的LCD屏观看。2、图像偏红,不是整体偏红那种。是有一些红条穿插着整个LCD屏幕,如果我把摄像头的盖子盖上,那些红条依旧在。

求大侠解答下。。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2012-6-2 21:57:50 | 显示全部楼层
```````代码如下·······
int main(void)
{
        u16 i = 0;
        u16 j = 0;
        u16 temp = 0;
        u16 data = 0;

        Stm32_Clock_Init(9);//系统时钟设置
        delay_init(72);                //延时初始化
        uart_init(72, 38400);       
       
        fifo_gpio_configuration();



        FIFO_WRST_CLR;                                                //写指针复位,开始往FIFO写入数据               
        delay_us(100);
        FIFO_WRST_SET;

       
        FIFO_RRST_CLR;                                                //读指针复位,开始往FIFO写入数据
        delay_us(100);       
                                               

        FIFO_RRST_SET;

       
        LCD_Init();
        LCD_Clear(0XBC40) ;
       
        EXTIX_Init();       
        while(1)
        {
                if(Sensor_init())
                {
                        break;
                }
        }
       
        FIFO_OE_CLR;
        LCD_Clear(3354) ;
        while(1)
        {       
                if(1)//
                {       
                        if(VsyncCnt == 2)
                        {
                               
                                LCD_SetWindow(0, 0, X_END, Y_END);
                                LCD_WriteRAM_Prepare();
                       
                                for(i = 0; i < 240; i ++)        //QVGA格式,240行;每行320个点               
                                {
                                        for(j = 0; j < 320; j ++)
                                        {
                                                FIFO_RCLK_CLR;
                                                __nop();
                                                __nop();  
                                               
                                               
                                                FIFO_RCLK_SET;
                                                __nop();
                                                __nop();
                                                data = FIFO_DATA_PIN;           //先读高位
                                                data <<= 8;                                                                               

                                                FIFO_RCLK_CLR;
                                                __nop();
                                                __nop();  
                                       
                                                FIFO_RCLK_SET;
                                                __nop();
                                                __nop();  
                                                temp = FIFO_DATA_PIN;//再读低位       
                                                data |= temp ;
                                                LCD_WR_DATA(data);               
                                        }
                                }
                                LCD_WR_END();

                                                               
                               
                                FIFO_RRST_CLR;                                //读指针复位
                                                                       
                                FIFO_RCLK_CLR;                                //至少需要一个时钟周期的跳变才能复位
                                __nop();
                                __nop();

                                FIFO_RCLK_SET;
                                        __nop();
                                        __nop();

                                FIFO_RCLK_CLR;                                //至少需要一个时钟周期的跳变才能复位
                                        __nop();
                                        __nop();

                                FIFO_RCLK_SET;
                                        __nop();
                                        __nop();


                                FIFO_RRST_SET;
                                                                                                                                                FIFO_WRST_CLR;
                                FIFO_WEN_SET;                                                                                       
                                __nop();                                       
                                __nop();                                        //写指针复位需要一定的延时
                                FIFO_WRST_SET;
                                VsyncCnt = 0;                                //开始下一帧数据采集                               
                        }
                }
          
          }

}


寄存器配置如下:

        {0x3a, 0x04},
        {0x40, 0xd0},
        {0x12, 0x14},
        {0x32, 0x80},
        {0x17, 0x16},
        {0x18, 0x04},
        {0x19, 0x02},
        {0x1a, 0x7b},//0x7a,
        {0x03, 0x06},//0x0a,
        {0x0c, 0x00},
        {0x3e, 0x00},//
        {0x70, 0x00},//00
        {0x71, 0x00},//0x85测试
        {0x72, 0x11},
        {0x73, 0x00},//
        {0xa2, 0x02},
        {0x11, 0x02},
        {0x7a, 0x20},
        {0x7b, 0x1c},
        {0x7c, 0x28},
        {0x7d, 0x3c},
        {0x7e, 0x55},
        {0x7f, 0x68},
        {0x80, 0x76},
        {0x81, 0x80},
        {0x82, 0x88},
        {0x83, 0x8f},
        {0x84, 0x96},
        {0x85, 0xa3},
        {0x86, 0xaf},
        {0x87, 0xc4},
        {0x88, 0xd7},
        {0x89, 0xe8},
        {0x13, 0xe0},
        {0x00, 0x00},//AGC
        {0x10, 0x00},
        {0x0d, 0x00},
        {0x14, 0x20},//0x38, limit the max gain
        {0xa5, 0x05},
        {0xab, 0x07},
        {0x24, 0x75},
        {0x25, 0x63},
        {0x26, 0xA5},
        {0x9f, 0x78},
        {0xa0, 0x68},
        {0xa1, 0x03},//0x0b,
        {0xa6, 0xdf},//0xd8,
        {0xa7, 0xdf},//0xd8,
        {0xa8, 0xf0},
        {0xa9, 0x90},
        {0xaa, 0x94},
        {0x13, 0xe5},
        {0x0e, 0x61},
        {0x0f, 0x4b},
        {0x16, 0x02},
        {0x1e, 0x37},//0x07,
        {0x21, 0x02},
        {0x22, 0x01},
        {0x29, 0x07},
        {0x33, 0x0b},
        {0x35, 0x0b},
        {0x37, 0x1d},
        {0x38, 0x71},
        {0x39, 0x2a},//
        {0x3c, 0x78},
        {0x4d, 0x40},
        {0x4e, 0x20},
        {0x69, 0x0c},///////////////////////
        {0x6b, 0x80},//PLL
        {0x74, 0x19},
        {0x8d, 0x4f},
        {0x8e, 0x00},
        {0x8f, 0x00},
        {0x90, 0x00},
        {0x91, 0x00},
        {0x92, 0x00},//0x19,//0x66
        {0x96, 0x00},
        {0x9a, 0x80},
        {0xb0, 0x84},
        {0xb1, 0x0c},
        {0xb2, 0x0e},
        {0xb3, 0x82},
        {0xb8, 0x0a},
        {0x43, 0x14},
        {0x44, 0xf0},
        {0x45, 0x34},
        {0x46, 0x58},
        {0x47, 0x28},
        {0x48, 0x3a},
        {0x59, 0x88},
        {0x5a, 0x88},
        {0x5b, 0x44},
        {0x5c, 0x67},
        {0x5d, 0x49},
        {0x5e, 0x0e},
        {0x64, 0x04},
        {0x65, 0x20},
        {0x66, 0x05},
        {0x94, 0x04},
        {0x95, 0x08},
        {0x6c, 0x0a},
        {0x6d, 0x55},
        {0x6e, 0x11},
        {0x6f, 0x9f},//0x9e for advance AWB
        {0x6a, 0x00},
        {0x01, 0x80},
        {0x02, 0x80},
        {0x13, 0xe7},
        {0x15, 0x00},
        {0x4f, 0x80},
        {0x50, 0x80},
        {0x51, 0x00},
        {0x52, 0x22},
        {0x53, 0x5e},
        {0x54, 0x80},
        {0x58, 0x9e},       
        {0x41, 0x08},
        {0x3f, 0x00},
        {0x75, 0x05},
        {0x76, 0xe1},
        {0x4c, 0x00},
        {0x77, 0x10},
        {0x3d, 0xc2},        //0xc0,
        {0x4b, 0x09},
        {0xc9, 0x60},
        {0x41, 0x38},
        {0x56, 0x40},//0x40,  change according to Jim's request       
        {0x34, 0x11},
        {0x3b, 0x02},//0x00,//0x02,
        {0xa4, 0x89},//0x88,
        {0x96, 0x00},
        {0x97, 0x30},
        {0x98, 0x20},
        {0x99, 0x30},
        {0x9a, 0x84},
        {0x9b, 0x29},
        {0x9c, 0x03},
        {0x9d, 0x4c},
        {0x9e, 0x3f},
        {0x78, 0x04},       
        {0x79, 0x01},
        {0xc8, 0xf0},
        {0x79, 0x0f},
        {0xc8, 0x00},
        {0x79, 0x10},
        {0xc8, 0x7e},
        {0x79, 0x0a},
        {0xc8, 0x80},
        {0x79, 0x0b},
        {0xc8, 0x01},
        {0x79, 0x0c},
        {0xc8, 0x0f},
        {0x79, 0x0d},
        {0xc8, 0x20},
        {0x79, 0x09},
        {0xc8, 0x80},
        {0x79, 0x02},
        {0xc8, 0xc0},
        {0x79, 0x03},
        {0xc8, 0x40},
        {0x79, 0x05},
        {0xc8, 0x30},
        {0x79, 0x26},
        {0x09, 0x03},
        {0x55, 0x00},
        {0x56, 0x40},       
        {0x3b, 0x00},//0x82,//0xc0,//0xc2,        //night mode

出0入0汤圆

 楼主| 发表于 2012-6-2 21:58:34 | 显示全部楼层
求大侠略点一二······· 调试几天了·······都不能调稳定··

出0入0汤圆

 楼主| 发表于 2012-6-3 13:30:12 | 显示全部楼层
经过zidong404的指导······ 终于知道哪里出问题了 那就是我配置STM32到FIFO芯片的IO口速度太快,我是用BSRR和BRR寄存器,以为这样可以把帧数提高一点。但是弄巧成拙,在RCLK后面加上适当的延时就可以解决问题了。虽然在旺旺问的 但是还是要 谢谢zidong404·····  

出0入0汤圆

发表于 2012-6-11 11:25:28 | 显示全部楼层
挺好的,学习下

出0入0汤圆

发表于 2012-9-4 23:01:03 | 显示全部楼层
看看,,了解下

出0入0汤圆

发表于 2012-11-6 16:01:54 | 显示全部楼层
ldj003 发表于 2012-6-3 13:30
经过zidong404的指导······ 终于知道哪里出问题了 那就是我配置STM32到FIFO芯片的IO口速度太快,我是 ...

前几天我也犯了同样的错误,辛亏马上看到了这个帖子少走了不少弯路。

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-14 14:28

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

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