行车记录与定位系统设计与实现毕业设计论文.doc_第1页
行车记录与定位系统设计与实现毕业设计论文.doc_第2页
行车记录与定位系统设计与实现毕业设计论文.doc_第3页
行车记录与定位系统设计与实现毕业设计论文.doc_第4页
行车记录与定位系统设计与实现毕业设计论文.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南 阳 理 工 学 院 本科生毕业设计(论文) 学 院:电子与电气工程学院 专 业: 电子信息工程 学 生: 指导教师: 完成日期 2014 年 5 月 南阳理工学院本科生毕业设计(论文) 行车记录与定位系统设计与实现 Design and Implementation of Driving Records and Positioning System 总 计: 33 页 表 格: 6 个 插 图 : 20 幅 南南 阳阳 理理 工工 学学 院院 本本 科科 毕毕 业业 设设 计(论文)计(论文) 行车记录与定位系统设计与实现 Design and Implementation of Driving Records and Positioning System 学 院: 电子与电气工程学院 专 业: 电子信息工程 学 生 姓 名: 学 号: 指 导 教 师(职称): 评 阅 教 师: 完 成 日 期: 南阳理工学院 Nanyang Institute of Technology 行车记录与定位系统设计与实现 行车记录与定位系统设计与实现 电子信息工程专业 摘摘 要要 本设计基于 ARM 系列 S3C2440A 核心控制芯片,以 CentOS5.6 软件为开 发平台,主要根据 GPS 和 ARM 板中的 web 服务器 boa 在车辆定位中的工作原理,实 现车载终端的硬件和软件的设计。该系统属于信号采集系统,处理对象包括 GPS 模块 接收到的卫星信号,然后经过 S3C2440A 的处理,从而得到车辆行驶的状态,并将车 辆当前所处的位置在百度地图上显示出来;将车辆行驶过程中的图像信息在 LCD 上实 时显示出来,同时将这些图像信息保存在 SD 卡中,从而实现大量图片信息的存储。 关键词关键词 ARM;GPS;信号采集;软件设计 Design and Implementation of Driving Records and Positioning System Electronic Information Engineering Specialty Abstract: This design is based on the S3C2440A in the series of ARM as the control core chip,uses the software of CentOS5.6 as the developmental platform, realizing the hardware and software design in-vehicle terminal depends on the GPS and boa of web server in the ARM board in vehicle positioning. This system is a signal acquisition system, the processing target includes the satellite signal transmitted by GPS module, then transits the processing of S3C2440A to obtain the status of the vehicle, and displays the vehicles current location on the map Baidu; and the vehicle in the real-time image information can be showed on the LCD, while the image information can be stored in the SD card, completing the storage of large numbers of information about images. Key words: Advanced risc machines; global positioning system; signal acquisition;software design 行车记录与定位系统设计与实现 目 录 1 引言.1 1.1 行车记录仪在交通领域中的应用.1 1.2 国内外研究现状和发展趋势.1 1.3 论文组织结构.3 2 硬件平台设计.3 2.1 处理器的选型.3 2.2 ARM9 体系结构的分析 .4 2.3 ARM9 启动方式的分析 .4 2.4 系统硬件整体架构.4 2.5 硬件模块接口电路.5 2.5.1 ARM 内核电路分析 .5 2.5.2 MCU 模块电路分析 .6 2.5.3 摄像头模块电路分析.6 2.5.4 GPS 模块电路分析.8 2.5.5 SD 卡模块电路分析 .8 3 系统软件设计.9 3.1 软件总体设计策略.9 3.2 软件模块化设计.9 3.2.1 LCD 模块驱动程序设计.10 3.2.2 触摸屏驱动程序的设计.11 3.2.3 串口驱动程序的设计.12 3.2.4 FAT 文件系统程序的设计.14 3.2.5 GPS 模块程序的设计.19 3.2.6 图片解码模块程序设计.21 3.2.7 摄像头模块程序的设计.23 4 系统调试.26 4.1 硬件调试.26 4.2 软件调试.27 结束语.31 参考文献.32 附录.32 致谢.33 行车记录与定位系统设计与实现 1 引言 卫星导航定位是利用卫星导航系统所提供的位置、时间等信息来完成对各种目标 的定位和导航1。卫星导航技术是全世界发展最迅速的三大信息产业之一,涉及的知识 比较综合,例如:软件技术、嵌入式系统、通讯技术、地理信息系统等,在信息、安 全防卫、交通、救灾等方面的发展前景十分广阔。 随着人们生活水平的不断提高,车辆在人们的生活中发挥着越来越重要的作用, 然而车辆带来的问题也日趋明显,例如交通堵塞、车辆被盗等问题,因此,完善智能 交通系统就显得十分重要,也是解决这些问题的有效措施之一。 车载智能终端是汽车电子化、智能化的一个重要应用。车载智能终端是集 GPS 技 术、汽车行驶记录仪等于一体的综合车辆管理系统。汽车行驶记录仪能够实时监控车 辆行驶过程中的各种状态数据。 1.1 行车记录仪在交通领域中的应用 随着计算机技术、汽车电子技术、传感器技术、嵌入式的迅速发展,行车记录仪 等汽车消费电子产品发生了革命性的变化2,在汽车领域中越来越得到人们的重视,一 方面它可以帮助驾驶员在不熟悉的道路上行驶时而不发生迷路,因为行车记录仪可以 很好的实现车辆的定位,并且能够帮助驾驶人员进行导航;另一方面,在驾驶员超速 行驶时,它还可以提醒驾驶员车辆已经超速,这样驾驶员会将车速适当的降下来。并 且行车记录仪在交通事故的处理上也发挥着巨大的作用,行车记录仪能够帮助交警快 速的找到事故的主要责任人,从而提高事故的处理效率。 以前的行车记录仪体积较大、价格昂贵及占用车辆的空间较多,行车记录仪并没 有得到广泛的普及,但是随着汽车电子和嵌入式技术的发展和人们生活水平的提高, 行车记录仪开始逐渐进入我们的日常生活,而且它具有体积小、操作简单的优点,从 而在一定程度上满足了人们的需要。 1.2 国内外研究现状和发展趋势 国外汽车电子技术的发展大致经历了三个阶段:第一个阶段是上世纪 60 年代中期 到 70 年代末期,为局部应用阶段;第二阶段为 70 年代末期到 90 年代中期,机电一体 化思想和科技运用到汽车设计中;第三阶段从上世纪 90 年代中期到 2010 年为全面应 用阶段3。 欧盟、日本等国家早在 20 世纪 70 年代就开始以立法的形式在部分客运车辆及货 车上强制安装使用行车记录仪,经过近 30 年的发展,已经形成了一套完善的体系,车 行车记录与定位系统设计与实现 辆监控、调度制度健全以及全国范围内的车辆行驶监控中心,大大减小了由于汽车行 驶安全带来的人员伤亡和财产的损失,使行车记录仪受到汽车租赁、物流运输、企事 业单位和交通管理等部门的热烈欢迎。国外对车载智能终端的研究受市场需求量的推 动而迅速发展,并且外国车载终端的稳定性、安全性、易用性等方面都走在了世界的 前列。 我国从 20 世纪 80 年代后期开始,在一些少数地区曾使用过由国内一些科研机构 和企业自主研制的汽车行驶记录仪。经过 20 多年的发展,我国车载终端的研发虽然已 经出局规模,并且向专业化和正规化发展,但是与西方一些国家相比,我国的汽车电 子技术的整体水平相对落后。 经过多年的发展,中国车载导航的市场得到了很大的改善,车载导航技术也得到 了很大的提升。中国也发射了北斗导航定位系统卫星,这将为汽车定位导航技术提供 更加完善的基础,也将为导航技术的提高提供了更加广阔的空间,在交通行业可以得 到更好的应用。另一方面,近年来中国汽车市场的大力发展,道路建设的完善,电子 地图技术的提高也推动了车载导航技术的发展。随着嵌入式微处理器的不断发展和我 国自主研发卫星导航定位技术的不断完善,相信我国的车载监控终端会朝着功能越来 越完善、性能越来越稳定、设计越来越人性化的方向快速发展。 行车记录仪的发展趋势,主要有以下几个方向: (1)系统化 随着全球定位系统的发展、信息存储介质和嵌入式技术等的应用而产生的。行车 记录仪等嵌入式产品是信息技术、传感器技术以及嵌入式技术在汽车电子的应用,具 有便于携带和使用方便等特点。同时这些技术可以把一定的功能在一个专用的计算机 系统上实现。 (2)数字化 随着计算机科学、汽车电子的迅猛发展,行车记录仪的数字化程度越来越高,比 如各种微处理器的使用,极大的提高了信号的处理速度,提高了定位信息的准确性。 (3)无线化 无线传感技术的发展能够是信息进行无线化传输,这样不必像传统的有线传输需 要大量导线,从而大大节省了产品的成本。 总之,随着科学技术的不断进步,人们的需求也在不断的变化,行车记录仪是对 车辆行驶时的状态进行记录和车辆的位置进行显示,可以为驾驶员提供一些必要的帮 助。同时对交通事故的处理提供了确切的证据。设计符合市场需求的产品才是企业的 生存之本,利用嵌入式技术的发展去更新行车记录仪更是一个巨大的市场机会,坚信 在未来的几年里,行车记录仪会越来越智能化,性能会越来越健全并且功能会越来越 完善。 行车记录与定位系统设计与实现 1.3 论文组织结构 这次设计的是一个软硬件相结合的设计类题目,要求设计一个基于嵌入式 linux 的 行车记录和定位功能的行车记录仪,可以实现行车记录仪的导航功能,还可以拍摄车辆 行驶过程中的图像信息。 整个系统主要由图像采集部分、GPS 信息接收部分、SD 卡部分、人机交互等几个 部分组成,这个系统由一块 MCU(S3C2440A)控制运行,各个部分协调运作,人机 交互部分采用 LCD 和触摸屏实现,输出部分采用 4.3 寸的 480*272 的彩色液晶实现, 输入部分主要采用触摸屏实现。 整个系统设计涉及的方面很多,颇具挑战性,主要难点在 FAT 文件系统解析, JPEG 数据格式的图片解码,触摸屏控制,以及定位信息与地图的结合等。针对本系统 的难点,采用各个击破的方法,来一步步实现以上功能,最终实现整个系统的功能。 2 硬件平台设计 2.1 处理器的选型 由于该系统要实现图片的采集和视频的播放这两大功能,对 RAM 的处理速度要求 比较高,首先对图片的解压缩要用到的 RAM 比较多,其次,对视频的播放,处理起来 速度是有要求的,尤其对 JPEG 的图像格式数据流的处理,必须非常快,才能实现视频 的流畅播放。可供选择的八位机有 AVR,PIC 等,可供选择的 32 位处理器有三星公司 的 ARM 处理器,STM32 等。 首先要有丰富的 RAM,八位机主要靠扩展,内部 RAM 一般在 4Kbyte 以内,更多 的 RAM 靠外部扩展,32 位机里面 STM32 是 ST 公司推出的基于 CORTEXM3 架构 的 STM32F103RBT6 芯片,虽然它的 RAM 有 20K,但是由于采集的图像信息数据量 比较大,20K 的 RAM 还是有点小,因为处理器还要用 RAM 来处理其它数据。 对于这个设计,当然成本越低越好,外扩 RAM,FLASH 芯片必然加大成本。所 以控制芯片最好拥有自带的 FLASH 和 RAM。 其次,由于本系统要播放 JPEG 格式的图片,而两种格式的文件往往比较大,所以 存储媒介也就有要求了,可供选择的存储媒介有 FLASH 芯片,SD 卡,U 盘等。如果 选择 FLASH 芯片,这样做的后果是整个系统的容量就被固定了,存储的信息非常有限。 而 SD 卡和 U 盘都是不错的选择,但是 SD 卡相对于 U 盘。读取容易,而且相同容量 的 SD 卡和 U 盘,SD 卡相对便宜些,所以系统选择 SD 卡作为存储媒介。 通过以上分析,本系统采用 S3C2440A 芯片作为控制芯片,该芯片是 SAMSUNG 公司推出的基于哈佛结构的芯片。 行车记录与定位系统设计与实现 采用 S3C2440A 作为控制芯片,该芯片具有四通道 DMA,三通道的 UART,两通 道 SPI,一通道 IIC 总线接口,四通道 PWM 定时器和一通道内部定时器,八通道 10 位 ADC 和触摸屏接口,还有摄像头接口(最大支持 4096*4096 像素输入;2048*2048 像素输入支持缩放) ,除此之外,该芯片的主频可以达到 400MHZ,完全可以满足对图 像处理速度的要求4。 综上所述,最终选择广州天嵌公司的 TQ2440ARM9 开发板。 2.2 ARM9 体系结构的分析 采用 RISC 架构的 ARM9 微处理器一般具有如下特点: (1)指令格式固定,ARM9 内核有两种指令格式,分别是 32 位长度的 ARM 指令 和 16 位长度的 Thumb 指令,这两种指令间可以进行切换5; (2)使用单周期指令,便于进行流水线操作,ARM9 处理器采用 5 级流水线操作, 可以提高指令的读取和执行的速度; (3)大量使用寄存器,只对寄存器进行操作的指令是数据指令,加载或存储指令 可以访问存储器,这样可以提高指令执行的效率; (4)ARM9 核采取了一些特别的技术,这样可以保证在性能高的前提下尽可能缩 小芯片的面积,又能降低芯片的功耗。 2.3 ARM9 启动方式的分析 (1)NAND Flash 启动。 S3C2440 配置了一个叫做 Steppingstone 的 4KB 内部 SRAM 缓存器,当系统呗配 置从 Nand Flash 启动时,Nand Flash 会自动将 Nand Flash 前 4KB 代码将会被自动装入 内部 SRAM 中并把 0X0 地址设置为内部 RAM 的起始地址(存储器映射) ,然后 CPU 开始从内部 RAM 的 0X0 地址启动,这个过程不需要外部程序的干涉。通常 NAND Flash 中的 CPU 启动初始化代码拷贝到 SDRAM 中,然后跳到 SDRAM 中开始执行。 所以,程序员需要做的就是将最核心定位启动代码放在 NAND Flash 的前 4KB 中。 (2)从 NOR Flash 启动。 从 NOR Flash 中启动时,系统直接从 NOR Flash 的 0 地址开始执行代码。 2.4 系统硬件整体架构 嵌入式系统是以应用为中心、以计算机系统为中心,并且软硬件可裁剪的,能满 足应用系统对功能、可靠性、成本、体积、功耗等指标的严格要求的专用计算机系统。 嵌入式系统的硬件层包括嵌入式微处理器、存储器(SDRAM、SRAM、Flash 等) 、通 用设备接口和 I/O 接口(AD、DA、I/O 等) 。在一片嵌入式处理器芯片基础上添加一 行车记录与定位系统设计与实现 些外围电路,例如:电源电路、时钟电路等,就可以构成一个嵌入式核心控制模块。 系统原理结构图如图 1 所示。 图 1 系统原理结构图 方框图给出了各个模块与 MCU 的连接关系,由于电源和晶振不受 CPU 控制,故 在方框图中没有画出。从上面的方框图可以看出,整个系统以 S3C2440A 为中心,通 过控制各个模块的工作,使整个系统达到预定的功能。 2.5 硬件模块接口电路 2.5.1 ARM 内核电路分析 ARM920T 内核框图如图 2 所示。 图 2 ARM920T 内核框图4 CPU 上电后,ARM 核先从指令高速缓存 InstructionC ACHE 里取指令,如果 行车记录与定位系统设计与实现 ACHE 里没有指令,ACHE 再从内存里取一批指令,这样可以提高指令的处理速度, CPU 的处理指令的速度就会快一些。ARM 核通过 AHB BUS 总线和一些外部存储器和 一些外围设备连接起来,其中 AHB BUS 总线通过桥电路和 APB BUS 总线通过桥电路 或 DMA 通道连接起来3。 2.5.2 MCU 模块电路分析 MCU 为整个系统的核心,控制着整个系统的运行,让 CPU 稳定运行是非常必要 的。MCU 核心电路包括一个后备电源 UPS1,一个主电源 VDD3.3V 和一个模拟电源, 模拟电源通过从 VDD3.3V 加滤波电路得到。MCU 的外围电路必须由滤波电容,下载 电路及复位开关等组成。其中,加上滤波电容后可以提高电路的抗干扰能力。同时考 虑到系统需要时钟功能,给时钟部分增加了后备电源电路,通过二极管连接到 VBAT 脚,给实时时钟供电。这里采用了双电源结构,即在有外部供电的时候,后备电池不 给时钟供电,时钟的电源来自外部,只有当外部电源断开的时候,后备电源才给时钟 供电,以保证时钟的计时,这样可以延长后备电池的使用时间。 同时,为了调试方便,电路的设计还增加了多余的按键和 LED 灯,方便在调试的 时候使用。对多余 IO 口的安排则是全部引出,方便以后扩展其他功能,比如:家电控 制等。同时,对于 S3C2440A 通过控制总线可以连接 USB 接口,可以实现 USB 接口 模块的使用。 2.5.3 摄像头模块电路分析 摄像头模块原理图如图 3 所示。 图 3 摄像头模块原理图 摄像头模块是通过 IIC 总线和 ARM9 的 S3C2440A 芯片相连。S3C2440A 的摄像头 接口的操作,CAMIF 有两条 DMA 通道,P 通道(预览通道)和 C 通道(编码通道) 在 AHB 总线上市各自分离的。从系统总线上看,两条通路是独立的。P 通路位 PIP 存 行车记录与定位系统设计与实现 储 RGB 图像数据到存储器中。C 通路为如 MPEG-4、H.263 等编码储存 YCbCr 4:2:2 格式数据到存储器中。这两主通路可以支持多变应用,像 DSC(数码相机) ,MPEG-4 视频会议、视频录像等。例如,P 通路图像可以作为预览图像,并且 C 通路图像可以 作为 DSC 应用中的 JPEG 图像。设置寄存器可以单独禁止 P 通路或 C 通路。 CAMIF 有两个时钟域,一个是系统总线时钟 HCLK,另一个是相素时钟 CAMPCLK,系统总线时钟必须比像素时钟快。CAMCLKOUT 必须从像素频率如 USB PLL 时钟分频的得到。如果使用了外部时钟振荡器,则应悬空 CAMCLKOUT。内部缩 放时钟为系统时钟。这两个时钟域不需要相互同步。其他信号如 CAMPCLK 应该同样 被连接到是,施密特触发器电平转换器。 存储器存储方式: 编码通路中使用小端方式存储到帧存储器中。存储像素是从 LSB 到 MSB。AHB 总线传输的是 32 位字数据。因此,CAMIF 使得每个 Y-Cb-Cr 字按小端方式存储。对 于预览通道,存在着两种不同的格式。RGB 24 位格式的一个像素(一个彩色像素) 为一个字。另一方面,RGB 16 位格式的两个像素为一个字。 IIC 总线接口的介绍如下: S3C2440A RISC 微处理器可以支持一个主控 IIC 总线接口。一条专用串行数据线 (SDA)和一条专用串行时钟线(SCL)传递连接到 IIC 总线的总线主控和外设之间的 通信。SDA 和 SCL 线都为双向的7。 多主控 IIC 总线模式中,多个 S3C2440A RISC 微处理器可以发送或接受串行数据 来自或到从设备。主机 S3C2440A 中的 IIC 总线启动或结束数据传输。S3C2440A 中的 IIC 总线是使用标准总线仲裁步骤。为了控制多主控 IIC 总线操作,必须写入值到以下 寄存器中: (1)多主控 IIC 总线控制器 IICCON。 (2)多总线 IIC 总线控制状态寄存器 IICSTAT。 (3)多主控 IIC 总线 Tx/Rx 数据移位寄存器 IICDS。 (4)多主控 IIC 总线地址寄存器 IICADD。 当总线释放了 IIC 总线时,SDA 和 SCL 线都应该保持为高电平。一个高到低的 SDA 变化可以做为一个起时条件。SCL 稳定保持在高电平时的一个低到高的 SDA 变化 可以做为一个停止条件4。 起始和停止条件通常由主设备产生。第一个数据字节为 7 位地址值,其在启动条 件后放到总线上,可以确定出主设备要选择的从设备。第八位是决定传输方向(读或 写) 。 每个放到 SDA 线上的字节都应该位 8 位。字节可以在总线传输操作期间无限制的 发送和接受。数据通常从最高位(MSB)开始发送,并且每个字节应该立即通过 行车记录与定位系统设计与实现 (ACK)位跟上。 2.5.4 GPS 模块电路分析 GPS 模块电路原理图如图 4 所示。 图 4 GPS 模块原理图 要想采集到高精度的 GPS 信号数据,必须保证 GPS 模块的电路抗干扰能力比较强, 而 TPS73033 低压差线性稳压器具有低功耗、电源抑制比高、超低噪声的特点, TPS73033 的电源旁边接的几个电容具有滤波去耦的左右,可以提高电路的抗干扰能力。 和 RES 引脚相连的电感和电容串联起来,可以躲开谐波的谐振点,避免谐波放大和电 容器过流损坏,限制投入的涌流,起到滤除谐波的作用。除此之外,必须考虑芯片的 驱动能力,有必要的可靠性及抗干扰设计,它包括去耦滤波、印刷电路板布线、通道 隔离等8。 由于 TQ2440 的 ARM9 开发板串口只有一个,这个串口在这次系统设计中用于和 PC 机通信,虽然 ARM9 开发板的 USB 也指引出来了一个,但是 USB 可以通过 USB 连接器扩展,可以达到接多个 USB 设备的目的。 2.5.5 SD 卡模块电路分析 虽然 ARM9 开发板的 NAND FLASH 的容量有 256M,相对其他微处理处理器来说 容较大,但是由于行车过程中摄像头采集的图片信息量比较大,紧靠 NAND FLASH 来存储显然是不够的,这就要求系统具有存放大量图片的存储器。MicorSD 卡具有体 积小、容量高、可插拔而且使用广泛的特点,于是选择 MicorSD 卡作为系统的数据存 储器。它使用 SDIO 接口与 S3C2440A 处理器进行通信,MicorSD 卡与 ARM 开发板的 行车记录与定位系统设计与实现 连接关系,SD 卡模块原理图如图 5 所示。 图 5 SD 卡模块原理图 综上所述,首先对整个系统设计的总体方案进行了分析和选择,包括存储媒介的 选择、MCU 的选型、硬件器件的选型以及互交方式的确定,经过总体方案论证,得到了 初步的技术方案,具体确定了硬件器件的选型。 3 系统软件设计 3.1 软件总体设计策略 前面已经将行车记录与定位系统的硬件平台搭建好,但是没有软件的支持,硬件 就不能正常工作起来,形同虚设。软件是硬件的灵魂,控制着整个硬件系统的正常工 作与否。因此,软件设计的重要性从某种意义上来说比硬件更重要。 整个行车记录与定位系统的软件设计涉及到很多方面,是一个比较复杂的系统, 一次性不可能把所有的代码都写出来。这里对代码的编写采用模块化的设计思想,将 整个软件系统划分为子系统,再将子系统统逐步细化分为单一功能的模块来实现,最 后再将所有的模块整合成一个大系统,实现预期的功能。 3.2 软件模块化设计 对于底层驱动软件子系统包括如下模块程序:LCD 驱动模块、触摸屏驱动模块、 SD 卡驱动模块、串口驱动模块、GPS 对应的驱动模块、摄像头驱动模块、按键驱动模 块从整个系统来说,可以按其与硬件是否直接相连,可以将软件分为两大部分:(1) 与硬件相关的底层驱动软件子系统。 (2)与硬件无关的应用软件子系统。这两个子系 统又可以细化分为若干个相关的模块。 行车记录与定位系统设计与实现 对于应用软件子系统包括如下模块程序:JPEG 解码模块、摄像头采集模块、图片 浏览模块、GPS 信号接收与处理模块。 在进行模块化程序设计的时候,首先要明确模块的功能作用,将其划分为一个个 独立的功能模块,将其封装为函数,供其他模块调用。相应的底层驱动程序主要实现 一些基本的底层功能,如硬件初始化、与硬件密切相关的时序函数等等。应用层程序 实现整个软件系统的应用功能函数。 3.2.1 LCD 模块驱动程序设计 本系统使用的 LCD 是八位数据模式,驱动 IC 型号是 FMT0371,这个芯片是松下 合资厂生产的一个 LCD 驱动 IC。最高支持 26 万色的 TFT LCD,有 6 位、8 位、16 位 和 18 位数据模式,可以方便选择使用。本系统采用采用的 LCD 是 8 位数据格式, 65K 色。 根据这个 LCD 的数据手册,每个像素点的 GRAM 实际上是一个 18bit 的数据寄存 器。在 16 位模式下和写入数据的对应关系如图 6 所示。 图 6 写入数据和 GRAM 对应关系 从上图可以看出,RGB 的有效位数分别是 565,例如写入 0XF800 则显示纯红色, 写入 0X07E0 则显示纯绿色,写入 0X 001F 则显示纯蓝色。在处理数据的时候要把像 素值先变换为这样的格式,然后再写入 LCD。LCD 显示的状态都是由 LCD 的控制命 令控制的,通过写入不同的控制命令和数据,就可以实现不同的现实功能和效果。分 析数据手册(DATASHEET)得到几个重要的控制命令: 00H:这个命令用来控制内存的操作模式,这个命令主要用来改变 LCD 的扫描方 向和扫描的范围。 02H:这个命令用来控制 X 方向的开始显示的点坐标。 03H:这个命令用来控制 Y 方向的开始显示的点坐标。 04H,05H:这两个命令用来分别设置 X,Y 方向的结束显示的点坐标。 0EH,0FH:这两个命令用来写入和读取显存。 行车记录与定位系统设计与实现 LCD 驱动部分包括几个关键函数:LCD 初始化函数、LCD 画点函数、LCD 读写 寄存器函数、LCD 读写数据函数。有了这几个基本的函数,其他的画线、画面、甚至 画图都比较容易了。LCD 与 MCU 的连线包括 D0D7、CS、RS、RST、WR、RD、BL 共 14 根线。 D0D7:数据线。 CS:LCD 的片选线,低电平有效。 RS:LCD 的地址/数据控制,其中高电平表示数据,低电平表示地址。 BL:LCD 背光,高电平有效。 (1)LCD 读写寄存器。 对 LCD 寄存器的操作线 RS 设置为低,表示写入寄存器,然后拉低片选号,给 BL 送入数据,然后再通过一个 WR 的脉冲,就可以把数据写入到 LCD 了。最后再释放 RS,CS,完成此次操作。对 LCD 的读操作和写操作差不多,不同之处就是把 WR 脉 冲改为 RD 脉冲。 (2)LCD 读写数据。 对于 LCD 数据的读写,和寄存器的读写差不多,只要把 RS 设置为高,就可以表 示此次是对数据的读写,其他寄存器的读写操作一样。 对于上面的两步操作,要注意在读写数据的时候必须先对寄存器写入 0X0E/0X0F 命令来表明是读数据还是要写数据。 (1)LCD 的初始化。 这部分是在前面两步成功的基础上才能进行的,LCD 的初始化涉及到其内部很多 寄存器的初始化。比较复杂,具体的实现 LCD 初始化函数实现,具体初始化的代码可 以参考加载到内核里的源码。 (2)LCD 画点。 画点函数的实现,必须要先设置 LCD 开始显示和结束显示的范围,可以通过 0X02H0X04H 这四个命令来实现。之后通过 0X0E 命令,开始写入数据,就可以写 入像素值(16bit)了,对于画点我们只要写入一个像素点就可以了,这样就完成了在 LCD 上画一个点了。 上面的四个函数是 LCD 的主要函数,是最底层的。其它任何功能的函数都可以在 这几个底层函数基础上实现。其它功能的 LCD 驱动函数均在 tftlcd.c 里面有定义和说 明,具体见附件。 3.2.2 触摸屏驱动程序的设计 ADS7846 与 MCU 通过 SPI 接口相连,ADS7846 的驱动其实也就是用 SPI 写命令 读数据的一个过程,其操作流程也比较固定,SPI 接口为常见的硬件接口,这里就不做 行车记录与定位系统设计与实现 详细介绍了。 3.2.3 串口驱动程序的设计 UART 通信需要使用的寄存器如下: (1)ULCON 串口通信协议控制设置寄存器。 通过该寄存器设置有关串口通信的通信协议,如数据位为几个、要不要进行奇偶, 停止位几个,要不要流控等。 表 1 串口相关的寄存器 如果要使用串口 0 进行通信,要求的协议为 8 位数据位,一位停止位,无奇偶校 验,则 ULCON0 应用 C 语言设置的方法为: Unsigned int * ulcon0 = (unsigned int*)0 x50000000; *ulcon0 = 0 x00000011 = 0 x3; (2)UCON0 串口 0 通用控制寄存器。 该寄存器控制串口 0 的脉冲源选择,以及是通过查询方式传送数据还是通过中断 方式传送数据。 表 2 串口相关的寄存器 下面给出如何用 S3C2440A 来实现非 FIFO(先进先出的数据缓存器)的 UART 通 信。要实现某种通信,就必须遵循该通信协议。UART 的协议包括传输数据的位数, 停止位的位数,以及是否进行奇偶校验,这些设置是利用 ULCONn 寄存器完成的。另 一个很重要的地方就是设置波特率。S3C2440A 波特率的时钟源有三个: PCLK、FCLK/n 和 UEXTCLK。时钟源的选择是由 UCONn 的第 10 位和第 11 位来完 成的。波特率的具体计算公式为: 时钟源频率(波特率16)1 (1) 这个计算结果很可能是小数,把该小数取最接近的整数,放入寄存器 UBRDIVn 行车记录与定位系统设计与实现 中就完成了波特率的设置。如我们选择波特率的时钟源为 PCLK,它为 50MHz,我们 设置的波特率为 115.2kHz,通过上式计算的结果为 26.13,取整后得到 26,那么我们 把 26 放入 UBRDIVn 中即可。由于我们没有使用 FIFO 和 MODEM,所以可以不用设 置 FIFO 控制寄存器 UFCONn 和 MODEM 控制寄存器 UMCONn。通过以上寄存器的 设置,UART 就可以正常传输数据。 (3) GPHCON0 通讯接口的引脚寄存器设置(因为串口通信的 2、3 引脚作为双重 功能引脚,所以使用时候需要配置) 。 (4)UBRDIV0 串口波特率设置。 设置串口波特率,由于 GPS 模块和摄像头模块都要用到串口,但是 GPS 模块和摄 像头模块使用的波特率不同,因此在编写该模块的代码时,要考虑到程序到程序的可 移植性,因此在编写代码时,可以通过传递不同的参数来达到设置不同波特率的目的, 具体函数参考 void set_baudrate(int speed)。 (5)UPLLCON、MPLLCON 时钟配置寄存器。 由于 ARM9 处理器的主频可以达到 400MHZ,而其他设备的频率一般不需要这么 高的频率,可以通过 UPLLCON、MPLLCON 两个时钟配置寄存器来配置要使用的频 率。 串口模块程序流程图如图 7 所示。 行车记录与定位系统设计与实现 图 7 串口程序流程图 根据上面的流程图编写相应的函数,然后再将各个小函数组合起来,实现相应的 功能。 3.2.4 FAT 文件系统程序的设计 本系统的设计要用到 SD 卡,不可避免的是要管理文件系统,因此,对文件系统的 的解析就成为本系统的重点。本系统的设计支持 FAT16 和 FAT32 文件系统,但是 FAT 文件系统是一个复杂而庞大的结构,不可能每个地方都能讲到,因此,这里这里 我们仅简单介绍 FAT32 文件系统的结构,使我们能够正确的使用 FAT32 文件系统和读 取 FAT32 文件系统下的文件。 FAT32 文件系统分析: (1)DBR(DOS BOOT RECORD 操作系统引导区) DBR 是进军 FAT32 的第一道防线,如果这个 DBR 我们都搞不明白,那么我们就 不可能正确的使用 FAT 文件系统,因此,我们只有搞明白 DBR 区内每个字节的含义, 这样我们才能够进行文件系统的其它操作。其实 DBR 中的 BPB(BIOS Parameter Block)部分才是这一区域的核心部分(第 1290 字节为 BPB) ,如果这部分的含义没 有弄明白,那么就不可能正确的操作 FAT32 文件系统,更不必说用 FAT32 文件系统来 行车记录与定位系统设计与实现 存储摄像头采集的图片信息了,因此只有深入详实的弄明白了 BPB 的意义,才能够更 好的实现和操控 FAT32,对于 DBR 在 FAT32 中的地位就不多说了。 DBR 区内个各字节的含义如表 3 所示。 表 3 DBR区内各字节的含义 DBR 区内,对我们来说有用的字节数虽然只有不过 79 个字节(即 BPB 字段) , 然而,就是这 90 个字节可以告诉我们关于磁盘的很多有用的信息,比如每个扇区的字 节数、每簇扇区数、磁道扇区数等信息9。对于这些信息,如果我们要想获取正确的信 息,那么我们必须遵循 DBR 中的字段定义,否则,我们是不能得到这些有用的信息的, 因此,在进行相关信息的读取时,我们只要遵循相关区段中的相关的字段的正确意义 即可。 表 4 BPB 部分字段意义 行车记录与定位系统设计与实现 通过对上面字段的读取,我们可以得到 FAT32 文件系统的许多重要信息:每个扇 区的字节数、每簇扇区数、根目录的簇号、该卷总的扇区数目、FAT 表 1 所在的扇区 数等。 FAT 表从本质来说是 FAT32 文件系统中用于磁盘数据(文件)索引和定位引进的 一种链式结构。可以说 FAT 表是 FAT32 文件系统最有特色的一部分,它的链式存储机 制也是 FAT32 的精髓所在,也正因为有了它才能使得数据的存储可以不连续,使磁盘 的功能发挥得更为出色。那么 FAT 表到底在什么地方呢?它到底是什么样子的呢?从 第一步从 BPB 中提取参数中的 FirstFATSector 就可以知道 FAT 表所在的扇区号。实际 上每一个 FAT 表都有另一个与它一模一样的 FAT 存在,并且这两个 FAT 表是同步的, 行车记录与定位系统设计与实现 也就是说对一个 FAT 表的操作,同样地,也应该在另一个 FAT 表进行相同的操作,时 刻保证他们的内容一致。这样做的目的是为了安全起见,当一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论