OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3633|回复: 8

STM32 驱动OV7670摄像头 颜色诡异

[复制链接]

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2014-4-27
在线时间
45 小时
发表于 2018-5-8 16:12:21 | 显示全部楼层 |阅读模式
1金钱
    请教一下,我用stm32开发板驱动OV7670摄像头,颜色总是不对。测试用OV7670输出彩条送到PC端显示。 test.jpg
感觉不对。寄存器设置 用的是战舰的例子:
[mw_shl_code=applescript,true]//3õê¼»ˉ¼Ä′æÆ÷DòáD¼°Æä¶Ôó|μÄÖμ
const u8 ov7670_init_reg_tbl[][2]=
{   
        /*òÔÏÂÎaOV7670 QVGA RGB5652Îêy  */
        {0x3a, 0x04},//dummy
        {0x40, 0xd0},//565   
        {0x12, 0x14},//QVGA,RGBêä3ö

        //êä3ö′°¿úéèÖÃ
        {0x32, 0x80},//HREF control        bit[2:0] HREF start 3 LSB         bit[5:3] HSTOP HREF end 3LSB
        {0x17, 0x16},//HSTART start high 8-bit MSB         
        {0x18, 0x04},//5 HSTOP end high 8-bit
        {0x19, 0x02},
        {0x1a, 0x7b},//0x7a,
        {0x03, 0x06},//0x0a,Ö¡êúÖ±·½Ïò¿ØÖÆ

        {0x0c, 0x00},
        {0x15, 0x00},//0x00
        {0x3e, 0x00},//10
        //{0x70, 0x3a},
        //{0x71, 0x35},
        {0x70, 0x00},                        //0x70=0x00,0x70 = 0x80 2êìõ2aêÔ
        {0x71, 0x80},
        {0x72, 0x11},
        {0x73, 0x00},//

        {0xa2, 0x02},//15
        {0x11, 0x81},//ê±Öó·ÖÆμéèÖÃ,0,2»·ÖÆμ.
        {0x7a, 0x20},
        {0x7b, 0x1c},
        {0x7c, 0x28},

        {0x7d, 0x3c},//20
        {0x7e, 0x55},
        {0x7f, 0x68},
        {0x80, 0x76},
        {0x81, 0x80},

        {0x82, 0x88},
        {0x83, 0x8f},
        {0x84, 0x96},
        {0x85, 0xa3},
        {0x86, 0xaf},

        {0x87, 0xc4},//30
        {0x88, 0xd7},
        {0x89, 0xe8},
        {0x13, 0xe0},
        {0x00, 0x00},//AGC

        {0x10, 0x00},
        {0x0d, 0x00},//è«′°¿ú£¬ λ[5:4]: 01 °ë′°¿ú£¬10 1/4′°¿ú£¬11 1/4′°¿ú
        {0x14, 0x28},//0x38, limit the max gain
        {0xa5, 0x05},
        {0xab, 0x07},

        {0x24, 0x75},//40
        {0x25, 0x63},
        {0x26, 0xA5},
        {0x9f, 0x78},
        {0xa0, 0x68},

        {0xa1, 0x03},//0x0b,
        {0xa6, 0xdf},//0xd8,
        {0xa7, 0xdf},//0xd8,
        {0xa8, 0xf0},
        {0xa9, 0x90},

        {0xaa, 0x94},//50
        {0x13, 0xe5},
        {0x0e, 0x61},
        {0x0f, 0x4b},
        {0x16, 0x02},

        {0x1e, 0x27},//í¼Ïñêä3ö¾μÏñ¿ØÖÆ.0x07
        {0x21, 0x02},
        {0x22, 0x91},
        {0x29, 0x07},
        {0x33, 0x0b},

        {0x35, 0x0b},//60
        {0x37, 0x1d},
        {0x38, 0x71},
        {0x39, 0x2a},
        {0x3c, 0x78},

        {0x4d, 0x40},
        {0x4e, 0x20},
        {0x69, 0x00},
        {0x6b, 0x40},//PLL*4=48Mhz
        {0x74, 0x19},
        {0x8d, 0x4f},

        {0x8e, 0x00},//70
        {0x8f, 0x00},
        {0x90, 0x00},
        {0x91, 0x00},
        {0x92, 0x00},//0x19,//0x66

        {0x96, 0x00},
        {0x9a, 0x80},
        {0xb0, 0x84},
        {0xb1, 0x0c},
        {0xb2, 0x0e},

        {0xb3, 0x82},//80
        {0xb8, 0x0a},
        {0x43, 0x14},
        {0x44, 0xf0},
        {0x45, 0x34},

        {0x46, 0x58},
        {0x47, 0x28},
        {0x48, 0x3a},
        {0x59, 0x88},
        {0x5a, 0x88},

        {0x5b, 0x44},//90
        {0x5c, 0x67},
        {0x5d, 0x49},
        {0x5e, 0x0e},
        {0x64, 0x04},
        {0x65, 0x20},

        {0x66, 0x05},
        {0x94, 0x04},
        {0x95, 0x08},
        {0x6c, 0x0a},
        {0x6d, 0x55},


        {0x4f, 0x80},
        {0x50, 0x80},
        {0x51, 0x00},
        {0x52, 0x22},
        {0x53, 0x5e},
        {0x54, 0x80},

        //{0x54, 0x40},//110


        {0x09, 0x03},//Çy¶ˉÄüá|×î′ó

        {0x6e, 0x11},//100
        {0x6f, 0x9f},//0x9e for advance AWB
        {0x55, 0x00},//áá¶è
        {0x56, 0x40},//¶Ô±è¶è 0x40
        {0x57, 0x40},//0x40,  change according to Jim's request
///////////////////////////////////////////////////////////////////////
//òÔÏÂ2¿·Ö′úÂëóé¿aÔ′μç×óíøíøóÑ:duanzhang512 ìá3ö
//ìí¼ó′Ë2¿·Ö′úÂ뽫¿éòÔ»ñμøüoÃμÄ3éÏñD§1û,μ«êÇ×îÏÂÃæò»DD»áóDà¶é«μͶ¶ˉ.
//èç2»Ïëòa,¿éòÔÆá±Î′Ë2¿·Ö′úÂë.è»oó½«:OV7670_Window_Set(12,176,240,320);
//¸ÄÎa:OV7670_Window_Set(12,174,240,320);,¼′¿éè¥μô×îÏÂò»DDμÄà¶é«¶¶¶ˉ
        {0x6a, 0x40},
        {0x01, 0x40},
        {0x02, 0x40},
        {0x13, 0xe7},
        {0x15, 0x00},  
       
               
        {0x58, 0x9e},
       
        {0x41, 0x08},
        {0x3f, 0x00},
        {0x75, 0x05},
        {0x76, 0xe1},
        {0x4c, 0x00},
        {0x77, 0x01},
        {0x3d, 0xc2},       
        {0x4b, 0x09},
        {0xc9, 0x60},
        {0x41, 0x38},
       
        {0x34, 0x11},
        {0x3b, 0x02},

        {0xa4, 0x89},
        {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, 0x00},
///////////////////////////////////////////////////////////////////////
       
}; [/mw_shl_code]

请大家赐教!谢谢!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-5-9 01:35:33 | 显示全部楼层
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2014-4-27
在线时间
45 小时
 楼主| 发表于 2018-5-9 21:28:32 | 显示全部楼层

谢谢!大家帮忙啊!
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2015-6-12
在线时间
22 小时
发表于 2018-5-12 11:49:47 | 显示全部楼层
请问一下帖主,PC端是怎么把数据显示出图片的。用哪个软件,谢谢
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2014-4-27
在线时间
45 小时
 楼主| 发表于 2018-5-12 15:33:14 | 显示全部楼层
Knight_2015 发表于 2018-5-12 11:49
请问一下帖主,PC端是怎么把数据显示出图片的。用哪个软件,谢谢

山外调试工具 用的是这个!
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2015-6-12
在线时间
22 小时
发表于 2018-5-12 17:57:35 | 显示全部楼层
aramy 发表于 2018-5-12 15:33
山外调试工具 用的是这个!

山外调试工具,你这个输出什么数据上去的?是不是16进制的rgb565。我这边有153800个数据,但是不知道怎么使用这个调试工具,谢谢
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2015-6-12
在线时间
22 小时
发表于 2018-5-12 18:10:11 | 显示全部楼层
aramy 发表于 2018-5-12 15:33
山外调试工具 用的是这个!

请教一下,你串口输出程序是怎样的?
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2014-4-27
在线时间
45 小时
 楼主| 发表于 2018-5-13 14:17:53 | 显示全部楼层
Knight_2015 发表于 2018-5-12 18:10
请教一下,你串口输出程序是怎样的?

发一段 模拟彩条测试的代码[mw_shl_code=applescript,true]//óÃμ¥Ƭ»úÄ£Äaov76702úéú2ê′ø2aêÔí¼°¸
//μ¥Ƭ»úéú3é2êìõ2aêÔ
void OV7670_CreatColor() {
    uint16_t i,j,k = 0;
    uint16_t color = 0;
    uint16_t buff[320];
    //áD»o′æÇø
    //êy¾Y¿aê¼(′óéÏíùÏ£¬′ó×óíùóò)
                USART_SendData(USART1, 0x01);                                   //·¢Ëí×Ö·û
    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET) {} //μè′y·¢Ëí½áêø
                USART_SendData(USART1, 0xFE);                                   //·¢Ëí×Ö·û
    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET) {} //μè′y·¢Ëí½áêø
    for(i=0; i<240; i++) {
        for(j=0; j < 320; j++) //ò&#187;áD
        {
            //éú3é2êì&#245;  9E F7,8D EF ,9E 3F,83 1F,FF F0,43 D9,95 28,82 10
            if(i < 30) {
                color = 0x9EF7;
            } else if(i < 60) {
                color = 0x8DEF;
            } else if(i < 90) {
                color = 0x9E3F;
            } else if(i < 120) {
                color = 0x831F;
            } else if(i < 150) {
                color = 0xFFF0;
            } else if(i < 180) {
                color = 0x43D9;
            } else if(i < 210)        {
                color = 0x9528;
            } else        {
                color = 0x8210;
            }
            buff[j] = color;
        }
                                 //×&#188;±&#184;o&#195;ò&#187;áDêy&#190;Y
        for(k=0; k<320; k++) {
            USART_SendData(USART1, buff[k]/256);                           //·¢&#203;í×&#214;·&#251;
                                                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET) {} //μè′y·¢&#203;í&#189;áê&#248;
                                                USART_SendData(USART1, buff[k]%256);                           //·¢&#203;í×&#214;·&#251;
                                                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET) {} //μè′y·¢&#203;í&#189;áê&#248;
        }
    }
    USART_SendData(USART1, 0xFE);                                   //·¢&#203;í×&#214;·&#251;
    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET) {} //μè′y·¢&#203;í&#189;áê&#248;
                USART_SendData(USART1, 0x01);                                   //·¢&#203;í×&#214;·&#251;
    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET) {} //μè′y·¢&#203;í&#189;áê&#248;
}[/mw_shl_code]
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2014-4-27
在线时间
45 小时
 楼主| 发表于 2018-5-13 14:22:39 | 显示全部楼层
晕死,格式都是乱的。大概说说吧!基本就是char一个char的发送,发送使用
USART_SendData(USART1, 0xFE);                                   //·¢&#203;í×&#214;·&#251;
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET) {} //μè′y·¢&#203;í&#189;áê&#248;

按山外工具的要求 要以 0x01 0xfe开头,0xfe 0x01结尾,中间包含着全部的 rgb565的所有数据,我用 320*240的rgb565格式数据,则就是 320*240*2=153600 外加 头尾 共153604个数据。
不知道自己讲明白了没有。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 09:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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