stm32驱动 ov7670发送到串口上位机显示图像
所需硬件:
1.stm32 103ZET6核心板,没有lcd(调试摄像头一定要买一个lcd,太方便了,都是泪);
2.OV7670带FIFO淘宝一搜一大把最常见的那种;
驱动代码:参考正点原子官方例程 实验35摄像头实验;也可以使用淘宝卖家提供的例程,ov7670寄存器配置有点麻烦,也懒得研究,刚开始调试的时候不出图像,换了几个版本的寄存器配置最后还是换回去用了正点原子的,毕竟大厂还是有保障的;没有lcd的话会调试到你怀疑人生,不知道是上位机写的不好用还是驱动没写好,所以最好还是买一块lcd进行调试;
初始化摄像头的时候如果错误,红灯会亮起一直初始化完成,也可以接串口看返回的错误代码;当发送图片给的时候绿灯会亮起,表示正在发送,发送完成绿灯灭;
我是直接把要发送到屏幕的数据直接发送到上位机,上位机有协议的要加上协议,数据头和尾巴;还有要区分32库函数printf和USART_SendData()的区别,区分发送的数据是字符还是十六进制原始数据,数据长度要计算清楚;我才采集的是320*240 RGB565的图像,得到的是16位数据,串口一次只能发送8位,所以分成两个字节发送,也就是发送的图像数据量是320*240*2,一定要区分发送字节的高位低位,很重要很重要很重要,上位机RGB565转RGB888要用得到,直接决定显示的成败;
但是用printf发送,如果用我这种方式发送,发送的是字符,prinft("%04X", color);如果color=0xFEA5,串口收到的是'F' 'E' 'A' '5',在上位机上还有一步转化操作,所以发送的数据量就是320*240*2*2(至于我为什么这么写,完全是为了兼容我的上位机,上位机是参考的别人代码,懒得大改了,c#不是很熟练,就在MCU上动手脚了),这个地方也会有一个问题,printf()发送速度会比USART_SendData()速度慢,可能会导致上位机显示的图像有线条。线条问题最后是通过提高波特率解决的,用的200000;
void camera_refresh1(void)//更新LCD显示
{u32 w,h;u16 color;if(ov_sta)//有帧中断更新?{ OV7670_RRST=0; //开始复位读指针 OV7670_RCK_L;OV7670_RCK_H;OV7670_RCK_L;OV7670_RRST=1; //复位读指针结束 OV7670_RCK_H; printf("data:\n"); for(w=0;w<240;w++)//数据开始(从上往下,从左往右)//width:输出图像宽度,<=240//height:输出图像高度,<=320{printf("L");//列有效for(h=0;h < 320;h++)//一列{OV7670_RCK_L;color=GPIOF->IDR&0XFF; //读数据OV7670_RCK_H; color<<=8; OV7670_RCK_L;color|=GPIOF->IDR&0XFF; //读数据OV7670_RCK_H;printf("%04X", color);// printf发送的是字符串//delay_us(50);}printf("\n");}ov_sta=0; //清零帧中断标记ov_frame++; }
}
上位机开发语言:C#,参考连接https://blog.csdn.net/zyxhangiian123456789/article/details/79163959,加了图像采集和测试按钮,改进了保存图片的方式;
测试按钮是测试上位机和单片机死否通信正常,点击此按钮会给单片机发送一组指令,让单片机绿灯闪烁两次,代表通信正常;
采集按钮是发送指令让单片机拍照上传,点击后绿灯亮起,代表正在发送数据,绿灯灭后代表数据发送完毕,如果上位机没有显示图像则代表发送失败;
保存按钮改进了原作者只能覆盖保存的功能,点击保存会连续保存不会覆盖上一张保存的照片;
数据发送高位地位和原作者有区别;
有些修改的地方:
上位机github地址:https://github.com/WW-0/OV7670-PC/upload/master
32+上位机代码下载:https://download.csdn.net/download/qq_34824576/12407112
上位机参考连接:https://blog.csdn.net/zyxhangiian123456789/article/details/79163959
https://github.com/jack13163/OV7670
stm32驱动 ov7670发送到串口上位机显示图像相关推荐
- STM32开发 -- Visual Studio C++编写串口上位机
打算使用Visual Studio编写一个串口上位机程序,然后进行测试. 原来的上位机各种BUG,受不了了.自己写一个得了. 一.创建 MFC 工程 选择MFC应用: 应用程序类型选择 基于对话框: ...
- STM32F407获取OV7670摄像头图像及上位机解码(一维码二维码)
STM32F407获取OV7670摄像头图像及上位机解码(一维码&二维码) 1. 目的 针对静止拍摄图像场景,实现STM32F407对30万像素OV7670摄像头进行图像捕获,并通过串口将数据 ...
- STM32驱动OV7670(无FIFO)相关问题的解决
STM32驱动OV7670(无FIFO)相关问题的解决 文章目录 STM32驱动OV7670(无FIFO)相关问题的解决 前言 一.OV7670大体介绍与需要关注的点 二.遇到的问题及解决 1.引脚冲 ...
- STM32H750获取OV7670摄像头图像及上位机解码(一维码二维码)
STM32H750获取OV7670摄像头图像及上位机解码(一维码&二维码) 1. 目的 针对静止拍摄图像场景,实现STM32H750对30万像素OV7670摄像头进行图像捕获,并通过串口将数据 ...
- qt connect函数_Qt 串口上位机开发Rice 上位机 学习开发
前几天分享了一个使用C#开发的串口上位机,那么今天教你如何100行QT代码实现一个串口上位机.如果你学习过C++,那么使用QT开发软件,就不是什么大问题了,QT很多时候使用在linux上.所以使用QT ...
- STM32+ESP8266连接电脑Qt网络上位机——QT篇
本文简单介绍下手写网络调试器并连接ESP8266模块 上篇: STM32+ESP8266连接电脑Qt网络上位机--准备工作 目录 一.部分Qt代码及实现过程 二.实现过程--使用ESP8266连接上 ...
- stm32单片机 北斗GPS 定位 vb上位机显示。 蓝牙主从级通信
stm32单片机 北斗GPS 定位 vb上位机显示. 蓝牙主从级通信. 主单片机获取GPS北斗模块定位信息后,通过蓝牙发送给从模块. 从蓝牙模块,从模块通过串口讲定位信息发送给vb上位机. 上位机实时 ...
- 【串口助手】Python从零开始制作温湿度串口上位机
文章目录 1. 项目介绍 2. 功能简介 3. 开发过程 3.1 准备工作 3.2 编写串口上位机界面 3.3 功能实现 3.3.1 基本功能 3.3.2 整活 3.4 打包 exe 可执行文件 1. ...
- 2.1-关于串口上位机编程你需掌握的背景知识
一.串行通信简介 定义:串行通信是一种使用串行数据流来传送数据的通信协议,相区别于"并行通信":串行通信的特点是使用一根电线完成发送数据,同时使用另一根电线完成接受数据. 上面提到 ...
最新文章
- How to create a site with AJAX enabled in MVC framework.
- WordCount程序
- Ubuntu 16.04 安装wine
- Java扩展机制可加载所有JAR
- TS Annotation
- vim显示行号_使用 vim 不得不看的 2 个 tips
- color ui的使用
- 关于SoUI界面库处理从WM_LBUTTONUP到按钮事件的消息路由过程分析
- 弘辽科技:淘宝开店类别怎么选择?淘宝开店如何选类目?
- Vue input 限制只能输入正整数、数字、英文、两个小数
- ICP许可证的作用是什么?ICP许可证可以转让吗?
- PHPmywind 调用方法
- 面向对象与面向过程的理解
- Domino版本、维护版本和补丁程序概念
- 2011-09-06 [FCKEditor插件移植至CKEditor(plus_format_fck.js)]
- 免费拿走Vivado2017.4安装包及其license(附带安装教程)
- php access violation,Access Violation
- 一套出完被喷爆的noip提高组+的题目
- Only老K说-spa项目实现jwt验证码
- USB管理精灵系统 助你快捷管理外来U盘
热门文章
- 微软警告:Java虚拟机发现2个重要安全漏洞(转)
- Java开发人员如何构建自己的技术体系
- 欧洲共同语言框架的b2-c1,德语语法A1-A2-B1-B2-C1
- 【树莓派】树莓派开放WiFi热点
- 基于OpenCV的火焰检测(三)——HSI颜色判据
- linux中FT4232H设备驱动添加,USB转4串口芯片FT4232HL,FT4232HQ
- 2021年PMP考试考场公布
- Centos7安装MySQL5.7--精简详细版
- android HOME、back(按钮、事件)截取获得,综合解决方案和分析,包含android4.0系统
- Office 2007 能不能和 Office 2003 安装在一起?