摄像头嵌入式系统设计.doc

上传人:小飞机 文档编号:4264132 上传时间:2023-04-12 格式:DOC 页数:43 大小:8.72MB
返回 下载 相关 举报
摄像头嵌入式系统设计.doc_第1页
第1页 / 共43页
摄像头嵌入式系统设计.doc_第2页
第2页 / 共43页
摄像头嵌入式系统设计.doc_第3页
第3页 / 共43页
摄像头嵌入式系统设计.doc_第4页
第4页 / 共43页
摄像头嵌入式系统设计.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《摄像头嵌入式系统设计.doc》由会员分享,可在线阅读,更多相关《摄像头嵌入式系统设计.doc(43页珍藏版)》请在三一办公上搜索。

1、目录绪论.3第一章 系统总体设计思路.4 1.1系统设计要求.4 1.2系统设计方案.4 1.3硬件部分方案.5 1.4软件部分方案.5第二章 摄像头.7 2.1 数字摄像头跟模拟摄像头区别.7 2.2 CCD 与 CMOS 的区别.7 2.3 OV7670 介绍.7 2.4 OV7670 功能框架.7 2.5 摄像头模块.9 2.6 摄像头的驱动原理.11第三章 液晶显示屏(LCD).13 3.1 LCD控制器简介.13 3.2 ILI9341控制器结构.13 3.3 像素点的数据格式.13 3.4 ILI9341的通讯时序.14 3.5 用STM32驱动LCD.15 第四章 芯片的选着.1

2、9 4.1 芯片的选择.19 4.2 速度方面.19 4.3 存储器方面.19 4.4 时钟、复位和电源管理方面.19 4.5 功耗方面.19 4.6 外设方面.19第五章 软件的设计.21 5.1 实验描述.21 5.2 硬件连接.21 5.3 摄像头硬件连接.21 5.4 库文件.21 5.5 配置工程环境.22 5.6 初始化 OV7670.24 5.7 读FIFO并显示图像.30第六章 系统测试结果和问题分析.33 6.1 系统实物图.33 6.2 系统单功能测试.34第七章 总结与展望.36致谢.37参考文献.37附录一 摄像头原理图说明.38附录二 基于STM32Fl0X摄像头模块

3、硬板图说明.41附录三 触摸屏资料.42参编单位:12自动C1 SSPU绪论 分布式广域视频摄像系统,提出了一种基于摄像头跟踪优化方法该跟踪优化算法根据目标优先级和目标在各个摄像头中的遮挡状态及其分割图像大小进行数据加权融合,优先分配高优先级目标给具有最佳权值的摄像头进行跟踪,并动态平衡摄像头的跟踪负载,将跟踪负载过重的摄像头中的低优先级目标分配给其他摄像头进行跟踪为了有效地建立重叠摄像头之间目标的对应关系,对于摄像头远离监控地平面和目标的场景,通过摄像头监视背景图像之间的特征匹配自动生成对应点,利用这些对应的关键点确定摄像头之间的单应性变换矩阵参数,再根据目标质心坐标之间的单应性变换进行一致

4、性匹配;对于摄像头近邻监控地平面和目标的场景,通过目标分割图像之间的特征进行一致性匹配实验结果表明:该方法能有效地实现广域监控场景中摄像头的跟踪,达到了较高的跟踪性能动态场景的视频监控成为计算机视觉的一个前沿研究方向,具有广泛的应用前景在大多数实际场景中,由于单个摄像头视域非常有限以及场景中遮挡的存在,使用单个摄像头对整个场景进行监控难以实现,而且非常低效,因此摄像头多目标跟踪在广域监控场景中得到了很多的关注在摄像头监控系统中,必须处理摄像头系统中新出现的问题:如何协同分配摄像头对运动目标进行最佳跟踪第一章系统总体设计思路1.1系统设计要求基于STM32F103的手机功能的设计,首先该系统是通

5、过触屏操作控制,尽量模拟手机的功能需要实现的基本功能有打电话、发短信、音乐播放器、图片浏览、照相机、常用小工具等。同时尽量做到系统稳定、整体美观、操作流畅等来保证有较好的体验效果!1.2系统设计方案本设计的控制方案是利用嵌入式操作系统为平台,采用了STM32F103ZET6微控制器,以及各类控制和显示器件,通过一直GUI进行触屏控制。系统设计包括系统硬件设计与测试和软件的编写。系统流程图件下图1.2.1.实物图1.2.2.图 1.2.1图1.2.21.3硬件部分方案该毕业设计的硬件主要四部分,分别是自己用AltiumDesigner绘制制作的中心板子、SIM900模块、LCD液晶、摄像头OV7

6、670。首先,选用的MCU芯片是意法公司的STM32F103系列单片机(ARMCM3内核),该芯片具有64KBSRAM、512KBFLASH、5个串口、112个通用IO口等等,资源丰富、功能强大能满足本设计的所有需求。中心板子板载1M大小的外部SRAM芯片:板载的外部FLASH芯片:W25Q64容量是8M字节用于存放字库和其他用户数据,这样可以提高实时文件读取的速度;板载的EEPROM芯片:24C02容量为2Kb,也就是256字节。用于存储一些掉电不能丢失的重要数据,比如系统设置的一些参数/触摸屏校准数据等来实现方便的实现掉电数据保存;板载的SD卡用于存放系统运行需要的系统文件和测试文件。除了

7、以上的主要板载的资源还有USB接口、ds18b20等等常用器件都是为这个系统的整体功能服务。本设计选用的液晶模块是大小2.8寸、分辨率240*320的液晶,支持触摸屏功能(电阻),可以显示16位色真彩图片。选用的GSM模块是SIM900,用串口控制,主要用于实现打电话和发短信的功能。然后就是MP3模块,该模块选用的芯片荷兰VLSI公司的VS1053,该模块使用SPI接口,单片机作为主机只需要把音乐数据独取出来传给该模块,该模块就能播放音乐,使用起来简单、方便。最后就是OV(OmniVision)公司生产的一颗1/6寸的CMOSVGA图像传感器。该传感器体积小、工作电压低,提供单片VGA摄像头和

8、影像处理器的所有功能。以上这些是本设计的硬件部分简单介绍,硬件的实现最主要的是中心板子的制作,它是整个系统的核心控制部分。需要整体考虑系统的资源,设计出来所有外设的接口,只有这样才能保证整体设计的美观。1.4软件部分方案本设计的软件部分主要分为移植UCOSII+GUI和FatFs文件管理、硬件的驱动程序、整体控制程序三部分组成。首先是UCOSII的移植,C/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。移植成功之后就可以通过C/OS-II进行任务的调度,增强系统的实时性。然后就是移植FatFs文件管理系统,通过该文件管理系统进行读写SD卡和外部FLASH

9、,这样可以方便的读取文件、写入文件等操作。FatFs是一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统。FatFs的编写遵循ANSIC,因此不依赖于硬件平台所以可以移植到大部分的处理器上。移植GUI进行显示和控制操作,可用的GUI种类繁多,最常用的是UCGUI,但是由于对ALIENTEKGUI比较熟悉,所以选用的是ALIENTEKGUI,它是嵌入式应用中的图形支持系统。它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境,并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。它的设计架构是模块化的,

10、由不同的模块中的不同层组成,由一个LCD驱动层来包含所有对LCD的具体图形操作。GUI可以在任何的CPU上运行,因为它是100%的标准C代码编写的。通过它能轻松制作出想要的页面。接下来是各个模块的底层驱动函数,比如LCD的驱动、VS1053的驱动、OV7670的驱动等等,这些底层的驱动函数保证各个模块正常工作。以上的移植工作和驱动程序编写工作是整体程序的准备工作,在以上工作完成后是需要用UCOS-II进行任务调度,也就是调度各个模块的驱动应用程序。通过UCOS-II进行任务的调度和触屏操作的控制就可以完成毕业设计的要求,最终就可以用LCD屏进行控制操作实现各个模块的功能。在此需要说明的是软件设

11、计工程量庞大,靠一个人在短时间内是不可能完成的,所以我借鉴了一些前辈的代码,比如UCOS-II和FatFs移植到STM32已经很成熟了,我需要做的工作是把前辈移植好的代码用到我的工程里面。还有就是像VS1053、OV7670的驱动程序,买这些东西的时候卖家已经提供了相应的驱动函数,我做的工作就是移植到我用的处理器上。我做的主要工作就是用UCOS-II进行调度各个模块的应用程序,保证这个系统能有序的进行任务的运行和切换。然后就是做一些LCD上的控制操作界面,对系统的各个任务进行控制操作,这样保证设计作品系统运行流畅、可靠性高和美观!第三章系统硬件设计与实现该毕业设计的硬件主要四部分,分别是自己用

12、AltiumDesigner1绘制制作的中心板子、LCD液晶、摄像头OV7670,接下来依次介绍。 第二章 摄像头摄像头的分类。摄像头按输出信号的类型来看可以分为数字摄像头和模拟摄像头,按照摄像头图像传感器材料构成来看可以分为 CCD 和 CMOS。2.1 数字摄像头跟模拟摄像头区别2.1.1 输出信号类型:数字摄像头输出信号为数字信号,模拟摄像头输出信号为标准的模拟信号。2.1.2 接口类型:数字摄像头有 usb 接口(比如常见的 pc 端免驱摄像头)、IEE1394 火线接口(由苹果公司领导的开发联盟开发的一种高速度传送接口,数据传输率高达 800Mbps)、千兆网接口(网络摄像头)。模拟

13、摄像头多采用 AV 视频端子(信号线+地线)或 S-VIDEO(即莲花头-SUPER VIDEO,是一种五芯的接口,由两路视频亮度信号、两路视频色度信号和一路公共屏蔽地线共五条芯线组成)。2.1.3 分辨率:模拟摄像头的感光器件,其像素指标一般维持在752(H)*582(V)左右的水平,像素数一般情况下维持在 41W 左右。数字摄像头分辨率一般从数十万到数百万甚至数千万(比如诺基亚 808 手机搭载了 4100 万像素,被人称为可以打电话的相机)。但这并不能说明数字摄像头的成像分辨率就比模拟摄像头的高,原因在于模拟摄像头输出的是模拟视频信号,一般直接输入至电视或监视器,其感光器件的分辨率与电视

14、信号的扫描数呈一定的换算关系,图像的显示介质已经确定,因此模拟摄像头的感光器件分辨率不是不能做高,而是依据于实际情况没必要做这么高。2.2CCD 与 CMOS 的区别CCD 与 CMOS 成像器主要区别如下:2.2.1 成像原理:CCD 是电荷耦合器件(Charge Coupled Device)的简称,而 CMOS 是 互补金属氧化物半导体(Complementary Metal Oxide Semiconductor)的简称。2.2.2 功耗:由于 CCD 的像素由 MOS 电容构成,读取电荷信号时需使用电压相当大(至少 12V)的二相或三相或四相时序脉冲信号,才能有效地传输电荷。因此 C

15、CD 的取像系统除了要有多个电源外,其外设电路也会消耗相当大的功率。有的 CCD 取像系统需消耗 25W 的功率。而 CMOS 光电成像器件只需使用一个单电源 5V 或 3V,耗电量非常小,仅为 CCD 的 1/81/10,有的 CMOS 取像系统只消耗 2050mW 的功率。2.2.3 成像质量:CCD 成像器件制作技术起步早,技术成熟,采用 PN 结或二氧化硅(sio2)隔离层隔离噪声,所以噪声低,成像质量好。与 CCD 相比,CMOS 的主要缺点是噪声高及灵敏度低,不过随着 CMOS电路消噪技术的不断进展,为生产高密度优质的 CMOS 成像器件提供了良好的条件(现在高级的 CMOS 并不

16、比一般 CCD 差,但是 CMOS 工艺还不是十分成熟,普通的 CMOS 分辨率低而成像较差,太容易出现杂色点),现在主流的单反相机普遍采用 CMOS 成像器。2.3 OV7670 介绍 OV7670 是一个能够提供单片 VGA 摄像头和影像处理器的所有功能的图像传感器,它可以输出整帧,子采样,取窗口等方式的各种分辨率 8/10 位图像数据,支持的数据格式有很多种,包括 RAW RGB , RGB (GRB 4:2:2, RGB565/555/444) 以及 YCbCr (4:2:2) 等格式。它的体积小,工作电压低,具有单片 VGA 摄像头影像处理器的功能,可以对图像进行伽玛曲线、白平衡、饱

17、和度、色度等处理。2.4 OV7670 功能框架OV7670 芯片的各个功能模块见图 2.4.1。 图2.4.1 OV7670 包含有 656*488 图像阵列,共包含 320128 个像素,但是实际有效的还是 640*480 个,边缘多出来的像素主要是为了去除一些影响边缘失真特性而设立的。图像阵列感知的原始信号(颜色&亮度)之后会输送入模拟处理器进行处理(比如通常所说的曝光控制和增益控制),经处理后会被分成 G 和 BR 两路通道进入一个 A/D 转换器,转换成数字信号后送入 DSP 处理器作进一步处理。当然,用户还可以通过相关寄存器来切换选择把测试图案发生器产生的图形数据送入 DSP 处理

18、器处理,DSP 模块在整个框架中起着非常重要的作用,它控制着从原始信号插值到 RGB 信号的整个过程,并且控制这图像的质量包括边缘增强、颜色空间转换、gamma 控制等,这些操作的实现可能还会依赖于buffer 的支持,这跟我们平时做大量数据的复杂运算时类似,在这里同样需要开辟一定空间的 buffer,否则很多中间数据无法安置。主要管脚的定义见表 2.4.1。 表 2.4.1 OV7670 管脚管脚名称 管教类型管教描述ADVDD 电源供给 ADC 模块使用RSTB 输入 系统复位管脚,低电平有效SCL输入 SCCB 总线的时钟线SDA I/OSCCB 总线的数据线AVDD 电源 模拟电源DO

19、VDD电源 数字电源HREF 输出行同步信号PWDN输入掉电/省电模式(高电平有效)VSYNC 输出场同步信号PCLK 输出像素时钟 XCLK 输入系统时钟输入端口D0D9 输出像素数据端口 当 SENSOR 配置为输出 RAW RGB 数据时,数字端口 D0 到 D9 都要用到,D0 作为最低有效位,D9 作为最高有效位。当 SENSOR 配置为输出 YUV 或者RGB 565/RGB 555 格式时,数字端口的 D2 到 D9 才有效,D2 作为最低有效位,D9 作为最高有效位。2.5摄像头模块2.5.1 摄像头模块硬件介绍。野火 STM32 开发板具有一个 CAMERA 接口,可用于扩展

20、摄像头模块,该接口可兼容野火的 OV7670、OV7725 及市面上的其它基于 OV 系列传感器的模块。考虑到一些性能比较低的单片机也能够搭载野火开发的摄像头模块,我们在 OV7670 后端搭载了 FIFO 来降低对单片机的性能依赖-当前模块对处理器的硬件要求仅仅为一个中断,几个 GPIO 管脚即可。摄像头流程见图2.5.1。图 2.5.12.5.2 OV7670 输出时序 摄像头采集的图像,也就是 OV7670 芯片的输出,它采用 VGA 时序,通过VSYNC、 HREF/HSYNC 和 PCLK 引脚输出图像。因此我们必须正确地理解好VGA 工作时序图。VGA 最早是指一种 480*640

21、 像素显示器的显示模式,它显示时,一行一行地对图像的像素进行扫描,所以它的时序分为行时序和帧时序。2.5.3 行时序图 行时序即输出每一行像素的时序,见图 2.5.2。它以 PCLK 输出像素时钟,以 D0D9 输出像素数据,以 HREF 输出行起始和行结束信号。 图 2.5.2 OV7670 输出的 VGA 行时序 从图中可以看出,当 HREF 为高电平时,摄像头数据端口随着像素时钟PCLK 的运转,先后输出一行的像素数据,当一行数据传输完成时,HREF 转为低电平。在 HREF 为高电平期间,每一个 PCLK 时钟就输出一个基本数据单元,而且数据在 PCLK 在上升沿阶段维持稳定,因此,主

22、控芯片配置中断时,应该配置为上升沿中断,在上升沿读取数据。2.5.4帧时序图VGA 显示图像时以一幅图像为一帧,所以其帧时序(也称为场时序)由多个行时序组成,见图 30-12 。帧时序与行时序的区别主要是多了一条信号线VSYNC 用于表示帧起始信号和帧结束信号。见图 2.5.3 。 图2.5.3 QVGA 帧时序 当 VSYNC 为低电平时,表明正在传送一幅图像,当 VSYNC 由低电平变为高电平时,表明一幅图像的数据已经传送完成。而在 VSYNC 为低电平期间,我们可以一 HREF 信号来换行,当 HREF 由高电平变为低电平时,表明一行数据已经传送完毕,当 HREF 由低电平变为高电平时,

23、表明新的一行数据开始传输。信号 HSYNC 同样可用于行同步,它与 HREF 有 一点区别(HSYNC 和 HREF共用一个管脚,可以通过软件来配置),由图可知,HREF 为高电平时,摄像头输出的数据都是有效的,而 HSYNC 高电平期间,在后面有一段时间是无意义的,即图中灰色部分。结合 FIFO 的特性,我们选用了 HREF 作为行同步。OV7670 实际输出图像时,不是标准的 VGA 时序,而可以选择使用QVGA、CIF、QCIF 时序(可通过配置 OV7670 的 COM7 寄存器选择)。QVGA 意为 Quarter VGA,译为 VGA 的四分之一,即 240*320 像素,这正好符

24、合野火3.2 寸屏的像素大小,所以我们采用 QVGA 时序。图 30-12 中的时 QVGA 时序,可以看到输出每行像素的时间(HREF 高电平的时间)为 320 Tp,即 320 个像素点的时间,240* Tline 就是指输出 240 行像素的基本时间。2.5.5 像素输出时序 像素输出时序即每个像素点数据的组织形式和输出方式。我们选择的是RGB565 格式,所以,我们看看该模式下的像素输出时序,见图 2.5.4。 图2.5.4 像素值从摄像头数据端口的 D2 到 D9 管脚输出,每一个像素由 RGB444 来表示,共 16 位,分两次来传输,之后用户组合起来即可。当用户收到 HREF 上

25、升沿中断之后,之后开始捕捉到 PCLK 上升沿是有效的,该时刻读取到的数据即为第一字节有效像素数据。当收到 HREF 下降沿时,表明整行像素已经全部输出。30.4.3. FIFO 时序摄像头采集分辨率我们配置为 240*320, 每个像素用 RGB565 表示,即每个像素占用两个字节,因此,整幅图像占用的空间大小为 240*320*2,等于153600 字节。摄像头模块中采用的 FIFO 型号为 AL422B,其容量高达 384K 字节,完全符合我们的空间要求。AL422B 以下几个操作比较重要:读 FIFO,写 FIFO,读指针复位,写指针复位等。 2.6 摄像头的驱动原理摄像头模块的 OV

26、7670 和 FIFO AL422B 的原理图见图 2.5.5 和图 2.5.6。 图 2.5.5 OV7670 硬件驱动电路图 图 2.5.6 OV7670 与 AL422B 硬件连接图从原理图可知,WEN 与 HREF 作为与非门的输入端,而与非门的输出端口连接到 FIFO 的 WE 端口,当 WEN 管脚跟 HREF 管脚电平都为高电平时,FIFO的 WE 端口的电平值才为低电平。因此,如果我们允许图像数据传入 FIFO 时,我们可以把 WEN 拉高,当摄像头的 HREF 为高电平时,WE 为低电平,此时随着 PCLK 的运转,摄像头的像素数据会被送入 FIFO,当 HREF 为低电平时

27、,WE的电平值为高电平,因此,即使 PCLK 仍在运转,也不会传送数据进入 FIFO,从而防止采集到无效数据。程序驱动部分思路流程大概如下:将摄像头的场中断信号送入单片机,当单片机捕捉到场中断信号时,拉高 WEN 管脚电平,之后整幅图像的数据就会存入 FIFO。当单片机再次捕捉到场中断时,表明一幅图像已经送入 FIFO,此时,关闭场中断,拉低 WEN 电平,防止摄像头数据再次写入 FIFO,并开始读取 FIFO 数据到内存缓冲区,根据采集到的图像做我们的应用处理。应用完成后,我们再次开启场中断,当再次捕捉到场中断时,再次拉高 WEN 管脚电平,继续让摄像头数据存入 FIFO,完成后单片机读取

28、FIFO 数据并应用,如此循环。第三章 液晶显示屏(LCD)3.1 LCD控制器简介 LCD,即液晶显示器,因为其功耗低、体积小,承载的信息量大,因而被广泛用于信息输出、与用户进行交互,目前仍是各种电子显示设备的主流。 因为STM32内部没有集成专用的液晶屏和触摸屏的控制接口,所以在显示面板中应自带含有这些驱动芯片的驱动电路(液晶屏和触摸屏的驱动电路是独立的),STM32芯片通过驱动芯片来控制液晶屏和触摸屏。以野火3.2寸液晶屏(240*320)为例,它使用ILI9341芯片控制液晶屏,通过TSC2046芯片控制触摸屏。关于触摸我们在后面的章节中再讲,这里我们先学习液晶显示的内容。3.2 IL

29、I9341控制器结构 液晶屏的控制芯片内部结构非常复杂,见下图3.2.2。最主要的是位于中间的GRAM(Graphics RAM),可以理解为显存。GRAM中每个存储单元都对应着液晶面板的一个像素点。它右侧的各种模块共同作用把GRAM存储单元的数据转化成液晶面板的控制信号,使像素点呈现特定的颜色,而像素点组合起来则成为一幅完整的图像。 框图的左上角为ILI9341的主要控制信号线和配置引脚,根据其不同状态设置可以使芯片工作在不同的模式,如每个像素点的位数是6、16还是18位;使用SPI接口还是8080接口与MCU进行通讯;使用8080接口的哪种模式。MCU通过SPI或8080接口与ILI934

30、1进行通讯,从而访问它的控制寄存器(CR)、地址计数器(AC)、及GRAM。 在GRAM的左侧还有一个LED控制器(LED Controller)。LCD为非发光性的显示装置,它需要借助背光源才能达到显示功能,LED控制器就是用来控制液晶屏中的LED背光源。LCD的流程图见图3.2.1。图 3.2.13.3 像素点的数据格式 图像数据的像素点由红(R)、绿(G)、蓝(B)三原色组成,三原色根据其深浅程度被分为0255个级别,它们按不同比例的混合可以得出各种色彩。如R:255,G255,B255混合后为白色。根据描述像素点数据的长度,主要分为8、16、24及32位。如以8位来描述的像素点可表示2

31、8=256色,16位描述的为216=65536色,称为真彩色,也称为64K色。实际上受人眼对颜色的识别能力的限制, 16位色与12位色已经难以分辨了。 ILI9341最高能够控制18位的LCD,但为了数据传输简便,我们采用它的16位控制模式,以16位描述的像素点。按照标准格式,16位的像素点的三原色描述的位数为R:G:B =5:6:5,描述绿色的位数较多是因为人眼对绿色更为敏感。16位的像素点格式见表 3.2.1 16位像素点格式。 图2中的是默认18条数据线时,像素点三原色的分配状况,D1D5为蓝色,D6D11为绿色,D13D17为红色。这样分配有D0和D12位是无效的。若使用16根数据线传

32、送像素点的数据,则D0D4为蓝色,D5D10为绿色,D11D15为红色,使得刚好使用完整的16位。 RGB比例为5:6:5是一个十分通用的颜色标准,在GRAM相应的地址中填入该颜色的编码,即可控制LCD输出该颜色的像素点。如黑色的编码为0x0000,白色的编码为0xffff,红色为0xf800。 图 3.2.2表:3.2.1D17 D16 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 R4R3R2R1R0G5G4G3G2G1G0B4B3B2B1B03.4 ILI9341的通讯时序 目前,大多数的液晶控制器都使用8080或6800接口

33、与MCU进行通讯,它们的时序十分相似,野火以ILI9341使用的8080通讯时序进行分析,实际上ILI9341也可以使用SPI接口来控制。ILI9341的8080接口有5条基本的控制信号线见表 3.4.1.其中带X的表示低电平有效。除了控制信号,还有数据信号线,它的数目不定,可根据ILI9341框图中的IM3:0来设定,这部分一般由制作液晶屏的厂家完成。为便于传输像素点数据,野火使用的液晶屏设定为16条数据线D15:0。使用8080接口的写命令时序图见下图3.4.3。表 3.4.1:CSX片选WRX写使能RDX读使能D/CX区分数据和命令RESX复位 图 3.4.3 条数据线的8080接口写命

34、令时序 由图3.4.3可知,写命令时序由CSX信号线拉低开始,D/CX信号线也置低电平表示写入的是命令地址(可理解为命令编码,如软件复位命令:0x01),以WRX信号线为低,RDX信号为高表示数据传输方向为写入,同时,在数据线17:0输出命令地址,在第第二个传输阶段传送的为命令的参数,所以D/CX要置高电平,表示写入的是命令数据。 当我们需要向GRAM写入数据的时候,把CSX信号线拉低后,把D/CX信号线置为高电平,这时由D17:0传输的数据则会被ILI9341保存至它的GRAM中。3.5 用STM32驱动LCD ILI9341的8080通讯接口时序可以由STM32使用普通I/O接口进行模拟,

35、但这样效率较低,它提供了一种特别的控制方法使用FSMC接口。3.5.1 FSMC简介 FSMC(flexible static memory controller),译为静态存储控制器。可用于STM32芯片控制NOR FLASH、PSRAM、和NAND FLASH存储芯片。其结构见下图3.5.1。 我们是使用FSMC的NORPSRAM模式控制LCD,所以我们重点分析框图中NOR FLASH控制信号线部分。控制NOR FLASH主要使用到下表3.5.1的信号线。 根据STM32对寻址空间的地址映射,地址0x6000 0000 0x9FFF FFFF是映射到外部存储器的,而其中的0x6000 00

36、00 0x6FFF FFFF则是分配给NOR FLASH、PSRAM这类可直接寻址的器件。当FSMC外设被配置为正常工作,并且外部接了NOR FLASH,这时若向0x60000000地址写入数据0xffff,FSMC会自动在各信号线上产生相应的电平信号,写入数据。该过程的时序图见下图3.5.2。 图 3.5.1 FSMC结构图表 3.5.1:FMSC信号功能CLK输出时钟(同步突发模式)A25:0输入/出地址总线D15:0输出双向数据总线NEX输出片选 X=1.4NOE输出输出使能NWE输出写使能NWAIT输入NOR闪存要求FMSC等待的信号图 3.5.2 FSMC写NOR时序图 它会控制片选

37、信号NEX选择相应的某块NOR 芯片,然后使用地址线A25:0输出0X6C00 0000,在NEW写使能信号线上发出写使能信号,而要写入的数据信号0xffff则从数据线D15:0输出,然后数据就被保存到NOR FLASH中了。3.5.2 用FSMC模拟8080时序 在FSMC写NORD的时序图中NADV信号是在地址、信号线复用时作为锁存信号的,在此,我们忽略它。然后读者会发现,这个FSMC写NOR时序是跟8080接口的时序是十分相似的,对它们的信号线对比见下表3.5.2。表 3.5.2:8080信号线 功能 FSMC-NOR信号线 功能 CSX 片选信号 NEx 片选 WRX 写使能 NWR

38、写使能 RDX 读使能 NOE 读使能 D15:0 数据信号 D15:0 数据信号 DCX 数据/命令选择 A25:0 地址信号 前四种信号线都是完全一样的,仅在8080的数据命令选择线与FSMC的地址信号线有区别。为了模拟出8080时序,我们把FSMC的A23地址线(也可以使用其它地址线)连接8080的DCX,即A23为高电平时,数据线D15:0的信号会被理解ILI9341为数值,若A23为低电平时,传输的信号则会被理解为命令。 也就是说,当向地址为0x6xxx xxx1、0x6xxx xxx3、0x6xxx xxx5这奇数地址写入数据时,地址线A0(D/CX)会为高电平,这个数据被理解为数值;若向0x6xxx xxx0 、0x6xxx xxx2、0x6xxx xxx4这这些偶数地址写入数据时,地址线A0(D/CX)会为低电平,这个数据会被理解为命令。 有了这个基础,只要我们在代码中利用指针变量,向不同的地址单元写入数据,就能够由FSMC模拟出的8080接口向ILI9341写入控制命令或GRAM的数据了。第四章 芯片的选着4.1 芯片的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号