历史上的今天
返回首页

历史上的今天

今天是:2025年02月28日(星期五)

正在发生

2021年02月28日 | 基于STM32的照相机系统软件设计

2021-02-28 来源:eefocus

关于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 液晶截屏与保存流程


推荐阅读

史海拾趣

Allied Electronic & Semiconductor Technology Inc公司的发展小趣事

近年来,电子行业正经历着深刻的变革,传统半导体市场逐渐饱和,新兴领域如物联网、人工智能等蓬勃发展。面对这一行业变革,AE&ST公司果断进行转型升级。公司调整战略方向,加大在新兴领域的研发投入,同时优化生产流程,降低成本。通过一系列的改革措施,AE&ST公司成功实现了从传统半导体制造商向新兴技术领域的转型。

DALLAS公司的发展小趣事

随着移动设备市场的蓬勃发展,Dallas公司敏锐地捕捉到了电池电量管理技术的市场需求。在深入研究和技术攻关后,Dallas成功推出了可编程锂离子电池电量计DS2790。这款产品集成了先进的微控制器、大容量程序和数据存储器以及精密的电池电流、电压和温度测量系统,为定制单节电池电量计的算法提供了优秀的平台。DS2790的推出不仅满足了市场需求,也为Dallas公司在电池管理技术方面赢得了声誉。

AVX公司的发展小趣事

AVX一直致力于绿色技术的研发与应用。在数十年的深入研发支持下,AVX的产品为各种绿色技术提供了关键的支持,如风能、太阳能和水力发电等领域。这些技术的应用旨在节省现有能源并创建可靠、价格合理的电子系统,为可持续发展做出了积极贡献。AVX在这一领域的持续投入和创新,使其在绿色技术领域取得了显著成果。

Blaze Display Technology Co Ltd公司的发展小趣事

随着公司规模的不断扩大和市场份额的逐步提升,Blaze公司开始注重品牌建设和形象提升。通过加大广告宣传力度、提升客户服务质量、参与社会公益活动等方式,公司成功塑造了专业、可靠、创新的品牌形象。同时,公司还获得了多项行业荣誉和认证,进一步提升了品牌知名度和美誉度。

Horn公司的发展小趣事

自1969年成立以来,Horn公司便致力于开发和生产切槽、侧铣和槽铣刀具。起初,公司聚焦于为小型机械加工企业提供高质量的工具解决方案。在创始人Paul Horn的领导下,公司迅速建立了技术团队,专注于刀具材料的研发与生产工艺的改进。这一时期,Horn公司凭借其出色的产品质量和定制化的服务,在行业内逐渐树立了良好的口碑。

Centellax Inc公司的发展小趣事

Centellax Inc公司自成立以来,一直致力于电子通信技术的研发与创新。在成立初期,公司凭借其独特的测试测量技术,在光通信行业中崭露头角。随着技术的不断迭代和市场的扩大,Centellax逐渐积累了大量的专利和知识产权,为公司的长期发展奠定了坚实的基础。

在技术创新方面,Centellax不断投入研发资源,推出了一系列高性能的测试测量设备。这些设备不仅满足了客户对高速器件深入分析的需求,还提升了公司在行业内的竞争力。同时,Centellax还积极与高校、研究机构等合作,共同推动电子通信技术的进步。

问答坊 | AI 解惑

EMI/EMC--原理与应对详解(三)

2.物体带电与电场感应 从原理上说,绝对不带电的物体是不存在的,任何物体都会不知不觉地就会带上电。每种物质都有一个代表自己性质的位能,两种不同性质的物体靠近在一起就会产生“接点电位差”。当两种不同性质的物体接触在一起时,这两种物质 ...…

查看全部问答>

单片机如何通过ps2向pc传输数据

我想将数据经过ps/2接口传输到pc,这样数据直接在文本上可显示,怎样编程?…

查看全部问答>

安装evc4.0 sp4的时候出错

安装evc4成功,但是安装evc sp4多次,老是在最后弹出这么个提示,怎么办啊????…

查看全部问答>

求问wince中电源管理

我想得到wince平台电池的剩余的百分比, 但是我找了wince的help并没有哪个函数可以得到这个剩余量 这个值应该怎么得到呢? 谢谢…

查看全部问答>

WriteFile写并口打印(windows字体)时,出现漏打印问题。

大家好,第一次发帖,请多关照。 现象描述: PC端并口连接设备打印机(设备自带打印机),生产过程中实时发送Windows字体的汉字(例如 张三),随机出现漏打印,即设备返回执行成功,但色带打印机并没有真正打印出来。 软件结构: VB主动程序,D ...…

查看全部问答>

导出DLL整个类和单独导出类函数有何区别?

我要用到一个开源包(GeoPad),开发环境为EVC+PPC2003模拟器,所给开发包SDK中包括了3个DLL(GeoPAD.DLL,GeoPADVB.NET.DLL,和GeoPADVC.NET.DLL)和一个.h文件(定义了一个类GeoPADCtrl),还分别给了C#和c++版的2个例程。 C#版的例程将GeoPADVB.NET. ...…

查看全部问答>

位图问题,想在uboot启动的时候把一张图片显示到LCD上面。这时候系统还没有起来,不知道程序怎么写?

我现在能想到的方案是这样的: @ 把bitmap图像的数据用数组的形式组织起来,然后把这些数据丢到显示缓存上面。然后让其显示在lcd上面。 现在遇到的问题是, 1;不知道bimap的数据是怎样组织的。用UltraEdit打开一张bitmap位图,里面的数据看不懂 ...…

查看全部问答>

模电

图一 是积分运算电路 图二  是输入波形和与之对应的输出波形 问题:请问本应输出波形与输入波形的附加相移为180°,现在只有90°,是不是由于加的反馈电容导致的滞后90°?…

查看全部问答>

msp430f2274通过JTAG下载程序的问题

用并口仿真器,利用IAR C3.41A的Debug向msp430f2274下载仿真代码,总是提示没有连接的设备。线路经过反复检查,没有错误。借了一个USB的仿真器后,选择4线JTAG方式,可以顺利下载仿真。不知用并口仿真器仿真msp430f2274时软件、硬件有什么具体设置 ...…

查看全部问答>

altium designer中关于polygon和焊盘间距的布线规则的设置

步骤如下:— Design》Rules》Design Rules》Electrical》Clearances— 右键单击鼠标,而后选择*New Rule*即添加了新的间距规则— 在上面的where the first object matches选项里选advanced,query builder>>下拉菜单-object kind is 后面选pol ...…

查看全部问答>