贺州学院本科毕业论文(设计)
3.2.5 FM24C16模块驱动程序设计
FM24C16也是采用IIC总线和MCU通信,通过标准的IIC操作,很容易实现对FM24C16的读写。FM24C16的器件地址与页地址是连在一起的,这里需要注意。FM24C16的高四位为固定的1010,而第四位用来表示页地址0~7,每页拥有256个字节,这样FM24C16的总大小为2048字节。
对FM24C16的读操作,先写入0XAx(x:0~7),再写入要写入的地址,紧跟着就可以写入数据了。而对于FM24C16的读操作,则稍微复杂一点在执行写操作的上述过程之后,再写入0XAx+1,代表执行读操作,紧随着就可以读数据了。 3.2.6 TEA5767模块驱动程序设计
TEA5767收音机模块支持IIC和三线模式,这里我们选择IIC来控制。TEA5767的器件地址是0XC0,在对TEA5767的读操作通过写入0XC1来执行。
TEA5767的读操作与写操作基本相同,只是IIC开始之后写入0XC1,将发送一个字节改为接收一个字节就可以了。 3.2.7 RCT时钟驱动程序设计
RTC实时时钟是利用STM32F103RBT6内部的时钟模块实现的,根据STM32
的DATASHEET,得到RTC实时时钟的初始化过程如下:
? 使能备份区域时钟 ? 取消备份区域写保护 ? 软复位备份区域 ? 开启外部低速晶振 ? 等待晶振就绪 ? 设置LSI作为RTC时钟 ? RTC时钟使能 ? 设置时钟分频系数 ? 等待RTC寄存器操作结束 ? 允许RTC配置 ? 配置秒钟寄存器 ? 配置更新
? 等待RTC寄存器操作完成
17
贺州学院本科毕业论文(设计)
RTC时钟的设置到这里就结束了,在RTC时钟完成上述配置之后,就会每隔一段固定的时间,对秒钟寄存器(RTC->CNT)进行加1。这个操作软件不参与,一切由硬件执行。时钟分频系数(RTC->PRL)确定固定时间,理论上因为外部低频晶振是32.768Khz,所以只要在RTC->PRL内写入32768-1就可以得到精确的1秒了,不过因为晶振的误差率,往往需要对这个值进行调整,以确保得到比较准确的走时。
3.2.8 JPEG/BMP解码模块程序设计
JPEG/BMP图片播放是本系统的一个重要功能,两者的解码均采用软件实现,BMP的解码相对JPEG比较简单,这里重点对JPEG的解码原理进行介绍。
JPEG解码算法原理:
JPEG压缩是利用人的视角系统特性,采用量化和无损压缩编码相结合的
方法去掉视角的冗余信息和数据本身的冗余信息来达到压缩的效果。JPEG算法可分为基本JPEG(Baseline system)和扩展JPEG(Extended system)。本设计重点在为Baseline system的算法做介绍。JPEG解码算法如图3.9 所示:
图3.9 JPEG解码算法框图
在JPEG解码反量化的公式:
其中,C(u,v)代表熵解码输出,Q(u,v)代表相应的量化矩阵。
综上所述具体说明了JPEG的解码算法,在本设计中JPEG/JPG的解码通过软件来实现。返回值为此次解码成功与否的标志。在执行该函数之前,需要先执行图片解码的两个函数,一个函数用来清空个量化表,一个函数用来获取解码所需的各种参数。
对于BMP的解码在这里不做详细解说了。
3.2.9 FAT32文件系统模块程序设计
18
贺州学院本科毕业论文(设计)
本设计需要读取SD卡,故必须对文件系统进行管理,本系统的重点是对文件系统的解析。本设计支持FAT16和FAT32两种文件系统,由于FAT文件系统的构架非常复杂而且庞大,这里我们主要FAT32文件系统的构架做简单介绍以便可以正常读取FAT32系统下的文件。 FAT32文件系统:
(1)DBR(操作系统引导记录区)的说明
要想操作FAT32我们首先要了解DBR。其中DBR 的核心部分为BPB (BIOS
Parameter Block)(第12~90 字节为BPB),BPB 的意义需要我们深入详细的去理解,才能够更好的完成和操控FAT32。DBR各字节意义如图3.10:
图3.10 DBR区各字节意义
DBR区内,对操作有用的数据只有90个字节(即BPB字段)。但是就在
这90 个字节就可以获取我们关于磁盘的许多信息,比如每扇区字节数、每簇扇区数、磁道扇区数等等。BPB部分数据字节意义如图3.11所示:
19
贺州学院本科毕业论文(设计)
图3.11 BPB部分字段意义表
通过对上面字段读取的了解,可以得到FAT32文件系统的许多紧要信息:每扇区字节数、每簇扇区数、根目录簇号、该卷总扇区数、FAT表1所在的扇区数等。
FAT32 文件系统最具特色的一部分是FAT 表,FAT32 的精华在于FAT表的链式存储机制,它可以是的数据存储不连接,使磁盘的功能得到更好的发挥。一
20
贺州学院本科毕业论文(设计)
个FAT表的内容如图3.12所示:
图3.12 FAT表
这样,在我们获取文件的起始簇随后,就可以从起始簇开始读取文件的内容
了,如果大于一个簇,则可在FAT表找下一个簇号,直到文件结束,从而达到了文件的读取功能。 3.3 系统整合
上一节详细介绍了系统各个模块程序的设计,一步一步实现了系统的各个功能,接下来需要做的工作就是把整个系统的模块程序整合起来,成为一个整体。
本设计的主控制程序通过调用各个模块的相关底层函数,从而实现系统的功
能整合,主控制程序的流程图如图3.15所示,系统开机以后,第一步进行的是对各个硬件模块的初始化;第二步是对FAT文件系统的初始化,对于FAT文件系统来说要判断是否初始化成功;第三步是寻找系统文件,本设计的系统文件全部在SYSTEM文件夹下,该文件夹下主要有:FONT文件夹、SYSICO文件夹、GAME文件夹。FONT文件夹下包括FONT12.FON和FONT16.FON两种字体文件。SYSICO文件夹下则包括了全部的系统图标(BMP格式)。GAME文件夹下包括三个等级的游戏文件夹,游戏图片也在相应的文件夹中,全部为BMP格式。其中FONT文件夹和SYSICO文件夹在系统加载的时候需要的。GAME文件夹则是在游戏的时候才进行检索的。
21