OpenEdv-开源电子网

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

使用MiniSTM32和OV7670,图像一直是花屏状态

[复制链接]

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
发表于 2020-3-28 19:07:50 | 显示全部楼层 |阅读模式
我使用的是telesky店购买的OV7670模块,按照店家提供的资料,应该是骑飞电子CMOS摄像头。我的开发板是Mini STM32开发板。下载到开发板的程序是参照正点原子OV7670摄像头例程写的。模块接线方式如下,数据线和其他控制信号线已分别捆绑。[/table]
D0-D7 WRST RRST CS(OE) WREN RCK VSYNC SCL SDL
PB0-PB7 PA0PA4 PC3 PC2 PC1 PA15  PC4PC5

我在程序中读取一帧OV7670拍摄的图片(图像输出格式为RGB565),以串口方式将该图片发送至PC机,在PC机上用opencv库还原。目前遇到的问题是,还原后的图片始终是花屏状态(如下图)


我使用过正点原子例程和骑飞电子例程中的OV7670摄像头配置,也自己尝试修改了一部分(主要是把配置中的RSVD寄存器配置部分删掉),但是最后的图片仍是和上图差不多的情况。我修改过0x70和0x71寄存器以输出彩条测试图像,仍是花屏图片。
想问一下大佬们有没有什么解决方法或者建议?

[table=50%]


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

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3606
金钱
3606
注册时间
2019-8-14
在线时间
1052 小时
发表于 2020-3-28 23:12:40 | 显示全部楼层
使用杜邦线接摄像头的话会有花屏情况出现的,把线绑起来试试
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2020-1-19
在线时间
1 小时
发表于 2020-3-29 00:49:46 | 显示全部楼层
是否插着JLINK
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
 楼主| 发表于 2020-3-29 10:05:37 | 显示全部楼层
hou18 发表于 2020-3-28 23:12
使用杜邦线接摄像头的话会有花屏情况出现的,把线绑起来试试

额,我已经把数据线和其他部分的线分开绑起来了
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
 楼主| 发表于 2020-3-30 11:31:30 | 显示全部楼层

我在调试的时候是插着ST_Link下载器的,但是在程序中禁用了JTAG,采用SWD。插着下载器的话会有影响吗?
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
 楼主| 发表于 2020-4-10 19:40:36 | 显示全部楼层
本帖最后由 likaiwen 于 2020-4-10 19:43 编辑

目前修改了SCCB初始化部分的代码错误,检查了连接摄像头的所有接线,确保杜邦线没有故障。现在测试的八彩条图片如下
2020410193450689.png


有大佬支支招吗
回复 支持 反对

使用道具 举报

3

主题

15

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2019-12-2
在线时间
4 小时
发表于 2020-4-11 11:56:03 | 显示全部楼层
这是信号干扰造成的,把杜邦线分类捆绑一起就可以
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
 楼主| 发表于 2020-4-11 15:06:12 | 显示全部楼层
本帖最后由 likaiwen 于 2020-4-11 15:08 编辑
贴近地面 发表于 2020-4-11 11:56
这是信号干扰造成的,把杜邦线分类捆绑一起就可以

这是我目前的接线图,左边那一捆是控制信号的杜邦线,右边的是D0-D7,其他的是接L298N的接线,在目前的测试程序里面没有用到。
是捆绑后线与线距离仍太近造成的花屏现象吗?



1.jpg
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
 楼主| 发表于 2020-4-14 18:20:16 | 显示全部楼层
我对比了正点原子OV7670摄像头的例程和骑飞电子提供的摄像头例程,发现骑飞的例程在提取图片之前会通过PA8引脚向OV7670输入STM32内部时钟(MCO),而正点的例程则没有。我尝试将MCO部分的代码加入了我的代码中,发现输出的图片变成了有规则的条纹状(如下图)。



这又是为什么呢
test.png
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2020-4-10
在线时间
2 小时
发表于 2020-4-16 23:24:36 | 显示全部楼层
验证一下你的PC端的opencv程序是否正确有效;
或者你把寄存器配置贴出来看一下呢
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
 楼主| 发表于 2020-4-17 18:52:26 | 显示全部楼层
csliu 发表于 2020-4-16 23:24
验证一下你的PC端的opencv程序是否正确有效;
或者你把寄存器配置贴出来看一下呢

这是我现在程序使用的配置表

const u8 ov7670_init_reg_tbl[][2]=
{   
     //以下为OV7670 QVGA RGB565参数
          {0x3a, 0x04},//
        {0x40, 0x10},
        {0x12, 0x14},//QVGA,RGB输出

        //输出窗口设置
        {0x32, 0x80},
        {0x17, 0x16},         
        {0x18, 0x04},//5
        {0x19, 0x02},
        {0x1a, 0x7a},//0x7a,
        {0x03, 0x0a},//0x0a,


        {0x0c, 0x0c},
        {0x15, 0x00},
        {0x3e, 0x00},//10
       
        {0x70, 0x80},
        {0x71, 0x01},
        {0x42, 0x08},
       
        {0x72, 0x11},
        {0x73, 0x09},//
        
        {0xa2, 0x02},//15
        {0x11, 0x00},//时钟分频设置,0,不分频.
        {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},
        {0x14, 0x20},//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},
        
        {0x1e, 0x27},//图像输出镜像控制.0x07,
        {0x21, 0x02},
        {0x22, 0x91},
        {0x33, 0x0b},
        
        {0x37, 0x1d},
        {0x38, 0x71},
        {0x39, 0x2a},
        {0x3c, 0x78},
        
        {0x69, 0x5d},
        {0x6b, 0x40},//PLL*4=48Mhz
        {0x74, 0x19},

        {0x92, 0x00},//0x19,//0x66
        

        {0xb1, 0x0c},
        {0xb2, 0x0e},
        
        {0xb3, 0x82},//80

        {0x43, 0x14},
        {0x44, 0xf0},
        {0x45, 0x34},
        
        {0x46, 0x58},
        {0x47, 0x28},
        {0x48, 0x3a},

        

        {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},//驱动能力最大

        {0x6e, 0x11},//100
        {0x6f, 0x9f},//0x9e for advance AWB
    {0x55, 0x00},//亮度
    {0x56, 0x40},//对比度
    {0x57, 0x80},//0x40,  change according to Jim's request       
}
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
 楼主| 发表于 2020-4-17 18:56:56 | 显示全部楼层
csliu 发表于 2020-4-16 23:24
验证一下你的PC端的opencv程序是否正确有效;
或者你把寄存器配置贴出来看一下呢

然后这个是我PC上RGB565转RGB88部分的程序

                int red = recvBuffer[2 * j] & RGB565_RED;
                int green = ((recvBuffer[2 * j] & RGB565_GREEN_UP) << 5) | ((recvBuffer[2 * j + 1] & RGB565_GREEN_DOWN) >> 3);
                int blue = (recvBuffer[2 * j + 1] & RGB565_BLUE) << 3;
                //cout << red << " " << green << " " << blue << endl;
                M.at<Vec3b>(line_count, j)[0] = blue;
                M.at<Vec3b>(line_count, j)[1] = green;
                M.at<Vec3b>(line_count, j)[2] = red;

我整个程序是把保存串口接收数据(16进制格式)的txt文件读出来转为unsigned char类型数组,然后再把数组数据通过上面的程序写入Mat中

这是我定义的RGB565_RED,RGB565_GREEN_UP,RGB565_GREEN_DOWN和RGB565_BLUE 的值

#define RGB565_RED      0xF8
#define RGB565_GREEN_UP    0x07
#define RGB565_GREEN_DOWN  0xE0
#define RGB565_BLUE     0x1F
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
 楼主| 发表于 2020-4-19 07:40:27 | 显示全部楼层
目前更换了摄像头为正点原子的OV7725摄像头,仍是采用的原子的MiniSTM32+OV7725例程代码,将LCD显示改为了通过串口把一帧图像数据发送至PC显示。但是图像的结果只能看到大致的轮廓,色彩完全不对...
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
 楼主| 发表于 2020-4-19 09:28:46 | 显示全部楼层
本帖最后由 likaiwen 于 2020-4-19 09:52 编辑

目前换成了原子的OV77215摄像头,采用的是原子MiniSTM32 + OV7725的例程代码(用杜邦线连接,数据线和控制信号的线已分开捆绑),但是图片只能看见大致的轮廓,色彩全是混乱的(如下)



是因为我的线比较长吗?(我用的是原子摄像送的杜邦线,应该是30cm)还是说其他什么原因?
test1.JPG
test2.JPG
test3.JPG
test4.JPG
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
 楼主| 发表于 2020-4-19 10:34:54 | 显示全部楼层
这是用山外助手调试的结果,还是会出现大面积的色块

test5.png
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
 楼主| 发表于 2020-4-19 10:51:41 | 显示全部楼层
本帖最后由 likaiwen 于 2020-4-19 10:53 编辑

结帖...搞了半天还是数据线和控制信号线分的不够开的原因,太难受了


虽然VS的程序还是只能看出轮廓,色彩混乱,不过好歹排除摄像头的问题了...
test6.png
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-7-12
在线时间
13 小时
发表于 2020-4-19 13:27:38 | 显示全部楼层
帮顶。我用原子的ATK带FIFO7725模块+mini板子,很快就调好,除了本身像素垃圾其他都正常。我是这样绑的给你参考下。
批注 2020-04-19 132636.png
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2020-1-23
在线时间
14 小时
 楼主| 发表于 2020-4-19 16:12:10 | 显示全部楼层
AmadeusAI 发表于 2020-4-19 13:27
帮顶。我用原子的ATK带FIFO7725模块+mini板子,很快就调好,除了本身像素垃圾其他都正常。我是这样绑的给你 ...

okok,谢谢大佬的建议
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2021-7-13
在线时间
4 小时
发表于 2022-3-26 15:13:43 | 显示全部楼层
我也遇到类似问题
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2022-3-31
在线时间
3 小时
发表于 2022-3-31 00:35:35 来自手机 | 显示全部楼层
贴主的 带不带fifo的
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2021-9-23
在线时间
40 小时
发表于 2022-4-9 20:22:08 | 显示全部楼层
我的出校线条式和随机雪花点,也是因为杜邦线捆得不够好的,看了楼主的贴,分的更开,数据线绑得更紧就解决了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 14:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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