基于STM32的照相机系统软件设计

系统软件设计
关于stm32的片上资源,lcd ili9341液晶屏的基本配置,sd卡的驱动及文件系统,ov7725摄像头功能的介绍已经在上一个章节中进行了详细的说明。硬件平台的搭建都是建立在stm32开发板与其他器件模块连接上的,本章节则主要采用自顶向下,层层细化的程序设计思想,分模块讲解整个系统的软件实现流程。
3.1 顶层程序设计 stm32照相机基本流程可以描述为:系统初始化,拍照处理。首先是系统初始化,包括系统时钟配置,对按键的gpio和中断使能,led的gpio初始化;再初始化lcd的gpio,fsmc总线功能和内部寄存器;还有初始化sd卡fatfs文件系统并使能sdio的中断;最后,在实现模拟sccb总线后,ov7725还需要配置fifo的gpio和ov7725内部的寄存器,并初始化场信号线。接着,拍照处理:等待帧同步信号,进入摄像;等待按键,开始拍照(即液晶截屏)并将图片保存到sd卡中,见图3.1。
3.2 系统初始化程序设计 3.2.1 gpio初始化
在第二章的主控模块部分已经介绍了gpio的寄存器和引脚的输入输出模式,对复用功能实现也做出了详细说明。在stm32控制下的led,key的gpio以及lcd,sd card,摄像头使用的所有gpio或特殊功能引脚的设置都要通过流程图来实现(图3.2)。
3.2.2 lcd初始化
lcd初始化主要包括两个内容:fsmc总线配置,lcd寄存器配置,见图3.3。程序中的涉及液晶屏的读写操作(如清屏,设置液晶扫描方向以及写入图片信息),都是在向bank1_lcd_c和bank1_lcd_d两个区域分别写入命令和数据实现的。其中,命令/数据的含义可参考ili9341参考手册上的内容,在第二章的液晶显示模块中也给出了部分指令的含义。
3.2.3 sd卡文件系统初始化
sd卡文件系统初始化可分两块:sd卡中断初始化和硬件初始化。如何设置中断和fatfs文件系统的函数接口前面都已经介绍过了,图3.4是整个sd卡文件系统的初始化流程图。
3.2.4 ov7725初始化
摄像头ov7725的初始化分为三大部分:sccb总线和fifo的gpio初始化,传感器的初始化,场信号线的初始化。其中的sccb总线时序在上一章已经讲过,图3.5是ov7725初始化的程序流程图。
图3.1 主程序流程图
图3.2 gpio的配置及复用
图3.3 lcd初始化流程
图3.4 sd卡文件初始化流程
图3.5 ov7725初始化流程
3.3 拍照处理程序设计 前几个小节详细介绍了各个子模块的初始化的实现,从主程序框图上看,还要有fifo的准备,图像采集与显示,中断服务程序,液晶截屏与保存子程序。fifo的准备(使能数据出fifo输出),图像采集与显示是通过反复的读fifo的输出并往lcd寄存器写入数据的过程,这些可以参考第二章的液晶显示模块和图像采集模块中fifo的时序。最后一小节的重点是液晶截屏和图片保存的流程控制,见图3.6。
图3.6 液晶截屏与保存流程

电瓶修复技术——提升电池价值的秘方大揭秘
简述什么是激光功率计呢?
vivoV15Pro正式发布 采用OLED屏幕支持屏幕指纹解锁
M5256-000002-600BG压力传感器测量时的安装要求
壁仞科技启动新产品线,国产图形GPU赛道迎来“种子选手”
基于STM32的照相机系统软件设计
Oculus系列VR计划发布 扎克伯格用VR玩自拍打扑克
三相电机的方波驱动原理
无人机干扰器的工作原理是怎样的
阻燃电缆的基本知识-科兰
各类芯片封装简介
芯驰科技与三星半导体签约,加强车规芯片领域深度合作
虹科教您 | 如何选择超声波储罐液位传感器(二)
Q2欧美市场销售份额iOS下降,Android增长
黑鲨3在充电方面有哪些看点
巨头推出8TB硬盘凸显SMR技术优势
90%的中国AI初创企业将面临巨大挑战!清算的日子即将来临?
无人机成黑客焦点,带来的危害有多大?
特斯拉的强大 最终会催生一个新的新能源汽车市场
Arm针对硬件/软件协同设计挑战的整体解决方案