STM32F4驱动OV7670总结
前言:之前因为贪图便宜买了一个7块钱的ov7670摄像头,然后想用我的stm32开发板驱动起来结合rtthread做个小项目出来,但是一路上遇到了许多问题,最终没能成功,在此记录一下用stm32驱动ov7670的过程
项目框架如下:
现阶段只能驱动起lcd屏幕,在摄像头驱动这一步卡住了。
屏幕部分:
液晶控制器芯片为NT35510,NT35510 控制器根据自身的 IM[3:0] 信号线电平决定它与 MCU 的通讯方式,它本身支持 SPI 及8080 通讯方式,本示例中液晶屏的NT35510 控制器在出厂前就已经按固定配置好 (内部已连接硬件电路),它被配置为通过 8080 接口通讯,使用 16 根数据线的 RGB565 格式,且背光 LED 引脚不与 NT35510 相连,而是直接引出到排针供外部控制器控制。
电容屏含触控IC 型号为GT917S ,它接收触摸屏的信号进行处理,把触摸信息使用 I2C接口输出到 STM32 等控制器,前期屏幕仅做显示,后期添加操作系统以及触控
电容屏引脚与开发板引脚连接图:
引脚说明:
信号线 | NT35510对应信号线 | 说明 |
---|---|---|
LCD_DB[15:0] | DB[15:0] | 数据信号 |
LCD_RD | RDX | 读数据信号,低电平有效 |
LCD_RS | D/CX | 数据/命令信号,高电平时,D[15:0] 表示的是数据, |
LCD_RESET | RESX | 复位信号,低电平有效 |
LCD_WR | WRX | 写数据信号,低电平有效 |
LCD_CS | CSX | 片选信号,低电平有效 |
LCD_BK | 空 | 背光信号,低电平点亮 |
RST | 与触摸 IC 相连 | 触摸 IC 的复位引脚 |
INT | 与触摸 IC 相连 | 触摸 IC 的中断信号引脚 |
SCL | 与触摸 IC 相连 | 触摸 IC 的 IIC 总线的时钟信号 |
SDA | 与触摸 IC 相连 | 触摸 IC 的 IIC 总线的数据信号 |
带x表示低电平有效
屏幕的使用方式:
可以通过IO口模拟8080通信时序,但是IO口速度慢,同时STM32的外设FSMC通信协议与8080时序类似,只需稍微修改一下即可使用。
摄像头部分:
摄像头使用OV7670
实物图
SCCB协议与IIC协议基本相同,通过该协议发送控制信号,
注意:SCCB协议在接收到读寄存器的命令后不会发送应答信号,所以使用HAL库的HAL_I2C_MemRead函数会出现卡住的情况。
OV7670内部芯片管脚图
功能框图
引脚图
时钟
首先是时钟的问题,因为ov7670本身没有晶振,需要外接晶振或者其他时钟信号给XCLK引脚提供24MHz的时钟信号,这里使用的是STM32的MCO1,
注意:亲测必须使用24MHz的频率,此时读取的设备ID跟OV7670数据手册上的数值才会一致,频率过高或过低会出现读取的ID与数据手册不一致的情况。
SCCB通信协议
SCCB用于读取/写入寄存器,控制OV7670的参数以及模式
具体参考数据手册的寄存器部分
SCCB通信协议与I2C类似,只需要将对应的I2C引脚初始化即可。
DCMI
DCMI是数字摄像头接口,用于摄像头与主控之间的数据传输。我就是在这一步卡住的。在初始化DCMI与DMA并且确保摄像头初始化成功且DCMI的GPIO有数据后,首先发现DMA不能正常传输数据,上网查了一下,1,说是HAL自动生成的初始化代码会导致DMA不能正常开启,但是修改代码后还是读取不到数据。2,然后继续往上排查,我把DCMI数据寄存器的值打印出来发现里面的值是空的,说明DCMI没有接收到数据。但是我通过打印DCMI的数据传输的GPIO后发现GPIO的电平是由变化的,说明摄像头向DCMI发送数据了,但是DCMI并没有接收到,说明是DCMI的问题。网上有关DCMI的资料比较少,所以暂时先不研究了,在这一步卡了太久,有点浪费时间了。
----------------------------------------------------------------------------------------------------
改了一下DCMI的PCLK极性和垂直同步信号的极性后DCMI的DR寄存器里面有值了,但是DMA还是没法传输数据
DCMI的初始化代码如下
hdcmi.Instance = DCMI;hdcmi.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE;hdcmi.Init.PCKPolarity = DCMI_PCKPOLARITY_RISING;hdcmi.Init.VSPolarity = DCMI_VSPOLARITY_HIGH;hdcmi.Init.HSPolarity = DCMI_HSPOLARITY_LOW;hdcmi.Init.CaptureRate = DCMI_CR_ALTERNATE_4_FRAME;hdcmi.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B;hdcmi.Init.JPEGMode = DCMI_JPEG_DISABLE;
STM32F4驱动OV7670总结相关推荐
- stm32F4驱动MCP41010程序-数字电位器-应用详解
1. MCP41010简介 256抽头,数字电位器. 有三种总电阻阻值型号,10kΩ.50kΩ.100kΩ.tb上买到的绝大多数都是10kΩ. 三线SPI通信. 2. 应用领域 音响.功放 使用数字电 ...
- STM32驱动OV7670(无FIFO)相关问题的解决
STM32驱动OV7670(无FIFO)相关问题的解决 文章目录 STM32驱动OV7670(无FIFO)相关问题的解决 前言 一.OV7670大体介绍与需要关注的点 二.遇到的问题及解决 1.引脚冲 ...
- STM32驱动代码:STM32F4驱动7针0.96寸OLED显示字符、汉字
STM32F4驱动7针0.96寸OLED显示字符.汉字 适用于stm32f1.stm32f4移植 工程资料链接:STM32F4驱动7针0.96寸OLED.rar 一. 代码效果 二.硬件准备 1.准备 ...
- 【Verilog】FPGA驱动Ov7670/Ov7725搭建视频通路(RGB565、灰度图)
一.课题功能指标要求 (一)课程目的 • 加深对数字电路时序的理解: • 掌握 OV 系列摄像头输出时序: • 掌握 I2C 总线时序,以及使用 verilog 驱动三态门的方法: • 掌握数字系统设 ...
- stm32驱动 ov7670发送到串口上位机显示图像
所需硬件: 1.stm32 103ZET6核心板,没有lcd(调试摄像头一定要买一个lcd,太方便了,都是泪): 2.OV7670带FIFO淘宝一搜一大把最常见的那种: 驱动代码:参考正点原子官方例程 ...
- stm32f4驱动enc28j60(吐槽篇)
鼓捣enc28j60这个模块过程还是比较曲折的! 买这个模块的时候,卖家只附送了51的驱动工程.或者说,就51的工程能用! 在51上,一编译一下载就搞定了! ===================== ...
- 【干货】老外的GitHub整理的stm32f4驱动库
昨晚在github发现了一个老外自己整理的封装库,有很多,比如一些通讯啊啥的,一些显示屏驱动等等 目录 STM32F4 Libraries and projects Here are listed a ...
- STM32F4驱动NEC协议的红外接收头
红外遥控是一种无线.非接触式控制技术,具有抗干扰能力强.传输可靠.价格便宜.功耗低.易实现等优点.被很多的家用电器所采用.目前常用的红外遥控器协议有NEC协议(PWM脉冲宽度调制).Philips R ...
- STM32F4驱动42步进电机(采用驱动器)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 器件 实物 接线 TB6600拨码卡关 代码说明 main.c 代码如下(示例): main.c 代码(极简版) step_ ...
最新文章
- python语言具有使用变量需要先定义后使用的特点_3、Python语法入门之变量
- 手机版ziperello_Ziperello
- 基于Visual C++2013拆解世界五百强面试题--题5-自己实现strstr
- 计算机硬件基础英语ppt,计算机硬件技术基础,computer hardware technology elements,音标,读音,翻译,英文例句,英语词典...
- 83.均衡策略:round-robin
- Shell脚本学习-阶段四-mysqladmin
- 读《广州的一场春梦》有感
- Mysql text类型的最大长度
- server is DOWN now, please try again later!
- 平台: pSeries AIX 4.3 AIX 5L
- ERROR 2002 (HY000): mysql
- 微信小程序页面的基本布局方法——flex布局
- STM32学习笔记——USB鼠标
- 暴风酷播云二期配置_暴风酷播云 一期-N3160版: 硬件折解及安装Proxmox VE-服务器虚拟化系统...
- 解决方案:Zotero+坚果云+Zotfile完成多平台多设备的文献同步
- 大学计算机实验教程制作电子小报,word中电子小报怎么做?word电子小报的图文教程...
- 最新调研-核心业务运营服务市场究分析报告
- 【k8s实战一】Jenkins 部署应用到 Kubernetes
- java项目报错405_405报错是什么原因_状态码405是什么错误
- 这4个正经的网站,能看片还能涨知识!