版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
随着计算机技术、微电子技术和数字信号处理技术的迅速发展,,各类消费电子产品发生了性的变化新技术新产品层出不穷特别是随着网络多技术的普及数字音技术的快速发展,以及多种视音频数据压缩标准和相应终端设备的相继问世,已成为消费电子产品新的增长点。集成了P3的优点,同时拥有P3不具有的功能的消费类电子产品越来越受到消费者的青睐。本文设计了一款基于STM32MP3,功能包括:MP3/WMA/WAV/MIDI音频文件、JPEG/JPG/BMP浏览、游戏、闹钟、万年历、、调频收音机、彩色整个系统主要由音频部分、收音机部分、音效处理部分、SD卡部分、功率放大、MCU(STM32F103RBT6)控制运行,各个部分协调运作,人机交互部分采用LCD2.4寸的240*320的彩色液晶实现,输入部分主要采用触摸屏实现,使本系统更具人性化。:STM32、MP3、FAT文件系统、 、触摸屏控Withtherapiddevelopmentofcomputertechnology,microelectronictechnologyanddigitalsignalprocessingtechnology,Varioustypesofconsumerelectronicshavemadearevolutionarychangeandtriggernewtechnology,newproductsoneafteranother.EspeciallywiththepopularityofInternetmultimediatechnology,digitalaudioandtechnology'srapiddevelopment,aswellasvariousandaudiodatacompressionstandardandthecorrespondingterminalequipmentcomeoutinsuccession,has eanewgrowthpointofconsumerelectronics.TheconsumerelectronicswhichintegratetheadvantagesofMP3andhavemanyadvantagesthatMP3donothave, emore andmorepopularinconsumers.Inthispaper,wedesignamulti-functionalMP3basedontheSTM32,Functionsincluded:MP3/WMA/WAV/MIDIaudiofileyback,JPEG/JPG/BMPpicturebrowsing,game,alarm,calendar,e-book,FMradio,colortablelamp,poweramplifier.Thewholesystemismainlyformedbyaudiodecoderpart,radiopart,audioprocessingpart,SDcardpart,poweramplifierpart,powersupplypartand puterin part.ThewholesystemiscontroledbyasingleMCU(STM32F103RBT6).Allthesepartsworkconcertedly,WeuseLCDandtouchscreenfor puterIn ction,weusea2.4-inch240*320colorLCDforoutput,andfortheinputpartweusetouch-screentowhichmakethesystemmoreTherearesomedifficultiesinthissystemincluding:FATfilesystemmanagement,JPEGpicturedecodeandtouch-screencontroletc.Inthisarticlewewillhighlightintroducethesethree:STM32,MP3yer,FATfilesystem,JPEGdecode,touch-screen 第一章绪 课题背 本次设计的主要内 第二章系统硬件设 整体设计思 硬件器件的选 MP3选 收音机选 温度传感器选 彩灯驱动选 音效处理选 EEPROM选 功率放大选 电源选 人机交互设备选 硬件系统框 硬件模块化原理图设 MCU和DS18B20模块电路设 MP3模块电路设 收音机模块电路设 SD卡模块电路设 音效处理模块电路设 FM24C16模块电路设 彩灯驱动模块电路设 功放模块电路设 触摸屏控制电路和TFTLCD驱动电路设 电源电路设 硬件PCB设 本章小 第三章系统软件设 设计思 软件模块化设 LCD模块驱动程序设 触摸屏模块驱动程序设 SD卡模块驱动程序设 VS1003模块驱动程序设 PT2314模块驱动程序设 FM24C16模块驱动程序设 TEA5767模块驱动程序设 温度传感器驱动程序设 RTC实时时钟驱动程序设 彩灯模块驱动程序设 JPEG/BMP模块程序设 FAT文件系统模块程序设 音 模块程序设 浏览模块程序设 游戏模块程序设 闹钟模块程序设 时间模块程序设 设置模块程序设 模块程序设 收音机模块程序设 彩灯控制模块程序设 系统整 本章小 第四章系统调 独立调 硬件调试问 软件调试问 本章小 第五章总结与展 参考文 致 第一章数字音技术的快速发展,多种视音频数据压缩标准和相应终端设备相继问世,已成为1998MP3面世来,MP3就以迅雷不及掩耳之势占领了数码市场,一时风靡2005年后,MP3的销量迅速下跌,如今已风光不再。而MP5的出现,更是把MP3几乎挤出了市场,MP5不但可以MP3、MP4,更能直接AVI和RMVB等主流的格式,说白了就是MP5具有MP3、MP4的所有功能,同时还具有他们不具备的功能,所以MP5取代MP3只是时间的问题,目前MP5的售价较高是最主要的原因,相信当MP5价格降下来之后,就是MP3退出市场之时了。如今另外一个数码产品-数码相框,随着数码相机的普及,也在悄悄袭来,数码相框就是能直接JPG/JPEG的一个小型显示器,一般的数码相框较MP3体积大,但是它们本来就不是针对移动设备的,数码相框主动设备的话,体积肯定不能大,但是体积小就意味着显示效果就不好。现在的数码相框显示屏分辨率一般是234*480,对于一般的显示效果还是比较不错的,当然数码相框的开发者对图像显示进行了精心设计,使得你的不论分辨率是怎么MP3就是其中一个功能,在图像的时候同时MP3,使相片浏览有声有色,同时数码相框还具有TV-OUT的功能,这就很好的解决了显示屏分辨率不高的问题,通过在电视上显示,使得相片观赏更舒适也更清晰。通过对以上两款数码产品的分析,可以发现,新出的数码产品都包含了MP3的功能,但是有不限于此,也就是集成了MP3的优点,同时拥有原来MP3不具有的功能。只有这MP3功●万功整个系统主要由音频部分、收音机部分、音效处理部分、SD卡部分、功率放大、电源部分、人机交互等几个部分组成,整个系统由一块MCU(STM32F103RBT6)控制运行,各个部分协调运作,人机交互部分采用LCD2.4寸的240*320的彩色液晶实现,输入部分主要采用触摸屏实现。整个系统涉及方面很多,颇具性,主要难点在与FAT文件系统解析,JPEG/BMP由于该多功能MP3要实现浏览和mp3这两大功能对ram和处理速度的要求比较高,首先对的解压缩要用到的ram比较多,其次,对MP3的,处理起来速度320Kbps的MP3格式数据流的处理,必须非常快,才能实现MP3的流畅。可供选择的八位机有AVR,PIC等,可供选择的32位处理器有SAMSUNG,NXP,STM32,ATMEL等。首先要有丰富的RAM,八位机主要靠扩展,内部RAM一般在4Kbyte以内,的RAM得靠外扩,32位机里面,SAMSUNG一般不内带RAM,也要外扩,对于这个设计,当然成本越低越好,外扩RAM,FLASH必然加大成本。所以控制最好拥有自带的FLASH和RAM。其次,由于本系统要MP3音乐和JPEG等,而两种格式的文件往往比较大,所以媒介也就有要求了可供选择的有FLASH如SAMSUNG公司的K9F系列,还有SD卡,U盘等。如果选择FLASH,则整个系统要求较多的IO口来,更重要的一点是,这样做的就是整个系统的容量就被固定了,扩容存在。而U盘和SD卡都是不错的选择,但是SD卡相对于U盘,容易,而且相同容量的U盘和SD卡,SD卡的价格较低。所以系统选择SD卡作为媒介。第三,系统MP3要同时SD卡和VS1003,都要用到SPI口,所以控制最好有两个SPI,这样不用复用,可以提高速度。3路 输出通过以上分析,本系统选择STM32作为控制,STM32是ST公司推出的基Cortex-M3构架的STM32F103RBT6采用STM32F103RBT6作为控制,该具有6通道的16位输出,RTC钟,两个高速SPI,两个IIC,三个串口,自带USB和CAN128Kflash20K的SRAM,对本系统来说足够了,同时以后还有很大的升级空间。在系统实现的时候,硬件选择是很重要的一部分,上面已经选取了控制,剩下的就是选择其他,来实现相应的功能了。下面我们重点分析系统相关其他MP3选由于使用了ARM处理器,MP3的可以有两种方法一是通过ARM处理器软,通过对MP3数据格式的解析实现MP3,二是通过外部直接。第法对处理器运算要求高,在高码率的MP3时,ARM7的处理能力吃紧,也就是说得不到好的效果,更重要的是STM32之后还需要外部的DAC来做音频MP3常见的有VS100X系列,和STA01X系列,VS系列自带DAC输出,而且能的格式也比较多,而STA系列要外加DAC,比较麻烦。经过对比,本系统MP3选择VS1003,该支持MP3、WMA、WAV、MIDI等格式的,自带DAC输出。同时还可以调节音量高低音等,更重要的是它还具有MIC功能,有需要的话,可以实现功能。这点可以作为以后扩展功能的一部分。收音机选本系统的收音机功能只针对FM收音,采用TEA5767实现,TEA5767是飞利浦公司生产的一款低功耗电调谐调频立体声收音机,其内部集成了中频选频和解调网络,可以做到完全免调,因此只需要很少量的小体积元件。TEA5767可以应用在欧洲、美国和不同的FM波段环境。该通过IIC总线控制该模块,就可以实现调频接收,有率很高,一般的MP3机/的收音机功能都是用的这块实现的。DS18B20,该数字温度传感器将检V至5.5V,无需备用电源该的测量温度范围为-55℃至+125℃在-10℃至+85℃范围内精度为±0.5℃。彩灯驱动选3W的共阳RGBLED调光,开关频率较高,对驱动的选取比较严格。经过分析采用AP2306来驱动,3.3V电压采用LM2576来获得。LM2576为国家半器件只需极少的器件便可构成高效稳压电路。3.3V驱动电压之后,通过控制AP2306来调节LED亮度,AP2306为低压驱动的NMOSFET,它具有极低的导通电阻和栅极电压,在Vgs=2.5V2.6A的输50mΩ。满足上面的要求,并且在AP2306上消耗的功耗非常音效处理选VS1003已经自带了音效处理,但是其效果不是很好,而且无法对外部音源经行音效处理来进行音效处理。3个音源:MP3音源、收音机音源、外部输入音源。所以音效处理最好有多个音源选择功能,否则又需要外扩音源选择,通过选择,这里选择PT2314作为音效处理。PT2314是一个具有四组立体声输入的双声道数字音质处理器,PT2314将音量、音调(bassandtreble)、声道平衡(left/right)、响度等处理及输入增益选择内建于单一中。这些功能令PT2314I2C总线来达成控制。当启动时的设定状态,音量为-78.75dB有扬声器输出皆为静音,输入增益、Bass、Treble0dB。EEPROM选据会全部丢失,这就需要通过外扩EEPROM来实现用户数据的保存了,EEPROM芯片有很多可供选择,比如ATMEL的24CXX系列,本系统选择Ramtron公司的新一代FRAM铁电器FM24C16,这个为用户提供2Kbyte的用户数据空间。Ramtron公司铁电器(FRAM)的技术是铁电晶体材料。这一特殊材料使铁电器同时拥有随机存取体(RAM)和非易失性器的特性。铁电晶体的工作原理20,另一个1100年以上。铁电铁电器有高速读写、超低功耗和几乎无限次写入等特性。铁电器和EEPROM比5~10ms新一代的铁电器已经达到一亿个亿次的写入。EEPROM的慢速和大电流写入使其需要高出FRAM2500功率放大选本系统包括两块放大,第一块用来放大从PT2314输出的音频信号,以驱动耳机,TDA2822的音质失真较大,THD10%左右,而TPA15232Ω负载的情况下THD只有2%10KΩ0.01%TPA152的输出功率较TDA2822也较大,达到了1.5W的总输出。因此,这里选择音质较好的TPA152,作为耳机驱动。D类功放,TPA3100D220WD类音频功率放大器,工作10V-26V18V820W12V8欧姆负载提10W12V415W92%,不需要散热器,有四个可20/26/32/36dB,差分输入,具有自动恢复生产功能的热关断和短路保护,时钟输出可用于对个D类器件的同步,487x7mmHTQFP封装。电源选本系统要求多个电压输入:2.5V,3.3V,5V,12V,所以对电源的处理需要多个,功率电源主要包括给彩色台灯供电的电源和给TPA3100D2供电的电源。TPA3100D02的功率电源采用外部电源(DC12V)直接输入,并不经过稳压,而彩色台灯的电源必系统电源主要包括给数字供电的电源包括2.5V,3.3V和5V,这些电源功率不大,采用REG1117-2.5和REG1117-3.3V稳压提供2.5V和3.3V的电压。REG1117可以输800ma5V输入,仍然采用LM25765V则功耗会很大,采用LM2576开关型集成稳压电路,则可以显著降低功耗。2.4寸的TFT液晶屏,其分辨率240*320,65K8位数据模式,与MCU的通讯所需IO口较少,速度也4线模拟屏。控制简单,效果好。触摸屏的控制选择ADS7846,ADS7846是TI(BB)公司生产的12位四线触摸屏控制,因为该是12Bit精度,所以可以提供的水平和垂直分辨率经过上两节的分析可知,整个硬件系统由一个STM32F103RBT6控制器控制。各个模2.1所示。2.1方框图给出了各个模块与MCUMCU的控制,MCU和DS18B20U为整个系统的控制着整个系统的运行让U稳定的运行是非常必须的,(2.2CUUPS1VC3.3和一个模拟电源模拟电源通过从V3.3加滤波电路得到U的必须电路由滤波电容下载电路(1)以及复位开关组成。同时,考虑到系统需要时钟功能,给时钟部分增加VAT即在电源有外部供电的时候,后备电池不给时钟供电,时钟的电源来自外部,只有当外部电源断开的时候,后备电源才给时钟供电,以保持时钟的计时,这样可以延长后备电池的使用时间。同时,为了调试方便,下面电路还加了一个多余的按键和LED灯,方便在调试的时候使用。并且,考虑到某些模块对速度的要求,特意对MCU的IO口做了安排,这样虽然增IO口的安排,则是全部引出,方便以后扩展其他功能,比如:家电控制等。同时,对于STM32F103RBT6自带的USB接口,也已经引出,日后通过升级,可以实现USB控制的功能。这里要注意一点:因为PT2314,TEA5767,FM24C16这三个器件都是使用IIC总线控制的,所以,把这三个器件挂在一个IIC总线上,节省了IO口。图 MCU和DS18B20模块电温度传感器DS18B20的电路比较简单,通过一个简单的RC滤波给其供电再通过一个普通IOMCUMCU和DS18B20的连接。MP3模块电路设MP3采用VS1003,该能MP3、WMA、MIDI、和WAV格式的音频文件,同时还支持功能,本系统中暂未用到这个功能,但是对其音频的电路2.3所示。图 MP3模块电对于VS1003,由于其既有模拟电源又有数字电源,且对音质有直接影响,所以,本模块中使用了大量滤波和去耦电容有的采用了LC滤波,为VS1003由于本系统直接采用TEA5767的收音机模块来实现收音机功能,所以使得其外部电路2.4所示:2.4对模块电源的处理采用了RC滤波加大电容的方式,能有效的降低收音机模块对外部电源ANT为天线接口,通过外接天线,可以提SD由于MCU没有专门的SD卡模式接口,只能通过SPI模式SD卡,电路图如图图 SD卡模块电因为SD卡使用的SPI模式,所以把SD卡挂接在MCU的SPI2上面。SD卡的SPI通信必须在每个IO40K45K。SD卡的电路比较简单只要连接无误,一般都没有问题。STM32的SPI72M时钟的条件下,SPI时钟速度可以达到惊人的18M,也就是SD卡的读写速度最快可以达到2.25Mbyte/s。足够任何音我们选择的是PT2314作为音效处理,电路图如图2.6所示,PT2314支持最多四个23对应外部音源,通道4对应MP3音源。通过IIC控制,可以实现这三个音源的切换。经过处理的音频信号从输出端输出到耳机放大器TPA152,通过放大驱动耳机,这样我们就能听到所要听了2.6PT2314的供电,这里也采用了RC滤波的形式,减少电源上的纹波对工作影响,继而影响音质。图中对该的数字地和模拟地也是经行了严格区分,坚持分开走线,减铁电器FM24C16的电路也是很简单,只要通过简单的供电,然后连接IIC总线,2.7所示:2.7FM24C16彩灯驱动采用MOS管AP2306MOS管采用SOT23封装,占用PCB因为有RGB三个通道,这里采用三个AP23062.8所示2.8上图电路中对每个AP2306的栅极都通过了两个电阻连接,AP23061K的电阻连接到MCU,再通过一个100K的电阻到地。这是非常有意义的。1K电阻在这里的作用是保证MOS管烧坏的情况下,通过电阻回流到MCU的电路不会太大,最多3.3mAMCU的IO8mA的电流,这样,在这部分电路出问题的时候,不至于导致MCU烧坏。100K电阻的作用主要是用来保证AP2306的可靠关断,因为AP2306NMOS,所以,在栅极为高电压的时候,AP2306才会导通,在这里加一个下拉电阻到地,保证了MCU的IO在开漏输出或者出现干扰的时候,AP2306也不会误导通。(一的立体声耳机放大电路;(二)基于TPA3100D02耳机放大电路如图2.9所示,耳机放大电路采用推荐的电路结构,对从PT2314送来的音频信号进行缓冲输出,推动耳机工作。耳机输出采用五针的耳机插座,这个插2,32,3脚不会有音频信号输出。这样通2,3D类功放上面,就可以实现耳机,功率输出同一时间只能有一个工作。由于TPA152也是音频信号输出的一部分,对于这个的供电,也是采用了LC滤波图2.9 TPA152耳机放大电路功率放大电路如图2.10所示:图 TPA3100D02功率放大电415W。从而根据其DATASHEET可以计算输出LC15mH1uF0.22uF。图中的功能选择部分可以有两种选择模式:(一)把MUTE接地,则会使一直处于工作状态。(二)把MUTE和FAULT相接则可以实现短路检测,在没有出现输出短路的时候,正常工作,在出现输出短路的时候,FAULT输出高电平,通过MUTE控制停止输出,这样可以有效地保护触摸屏控制电路和TFTLCD触摸屏控制ADS7846的电路比较简单,电路如图2.11所示图 触摸屏控制电TFTLCD2.12图 TFTLCD驱动电R2LCD背光的限流电阻,通过这个电阻限制流过LCD背光的电流,防止电流过大烧坏背光灯。第二个地方,为了节省IO口,LCD_BL这个控制信号,与ADS7846CS是共用的,这里在软件编写的时候要注意。第三个地方是TOU_PEN信号在与MCURC滤波电路,因为这个信号连接到了MCU的中断上,而信号线在连接入MCU之前经过了较长的走线,上面的干扰比较多,而MCU不平2.13所示:图 PEN脚滤波电100HZ以下,而干扰信号则从几Khz到几百Khz2.14所示:图 功率电源电功率电源一个给主控板供电,一个给彩灯提供电源。均采用LM2576作为稳压,这款开关稳压不但可以提供大电流,还能得到82%的变换效率,功率损耗较少使得电系统电源,通过REG1172.152.15这个电路采用两块REG1117给系统提供电源,一块提供3.3V的数字电源和模拟2.5V的电压,给VS1003的DSP提供电压。两者的输入电压均来自功率电源的5V输出。考虑到本系统的复杂性,为了使调试方便,把整个电路分为三个部分进行PCB的驱动。显示板也有三个部分组成:TFTLCD、ADS7846和触摸屏。其他部分的电路都在系PCBLAYOUT8直角的走线会在尖端产生EMI对于去偶电容, 越近越好 的PCB2.17所示,系统板的PCB2.18所示。图 电源板图 显示板图 系统板在本章中,我们首先对整个设计的总体方案进行了选取,包括媒介的选择、MCU了一些本系统的PCB布线规则,接着下来的任务就是设计该系统的软件系统。软件系统的第三章经过上一章,多功能MP3的的硬件系统已经设计出来了,但是没有软件的支持,硬件就不能正常工作,。软件是硬件的,控制着整个硬件系统的运行。所以软件整个MP3的软件系统涉及到很多方面,是一个比较复杂的系统,不可能一次把所有的为子系统,再将子系统逐步细化为单能的模块来实现,最后再将所有的模块整合成一对于底层驱动软件子系统包括如下模块程序:LCD驱动模块、触摸屏驱动模块、SD卡对于应用软件子系统包括如下模块程序:JPEG/BMP模块、FAT文件系统管理模块、音乐模块、浏览模块、游戏模块、闹钟模块、时间模块、设置管理模块、电本系统用到的LCD是八位数据模式,驱动IC型号是FMT0371,该为松下合资厂生产的一个LCD驱动IC26万色的TFTLCD6位、8位、1618位数据模式,可以方便选择。本系统配套的LCD使用的是八位数据模式,65K色。DATASHEET16bit3.13.1写入数据与GRAM为这样的结构,然后再写入LCD。LCD的显示状态都是由LCD的控制命令控制的,通过02H,03H:这两个命令用来分别设置X,Y04H,05H:这两个命令用来分别设置X,YLCD驱动部分包括几个关键函数:LCD读写寄存器函数、LCD读写数据函数、LCD容易了。LCD与MCU的连线包括D0~D7、CS、RS、RST、WR、RD、BL14根线。CS:LCDRS:LCD的地址/WR:写数据控制。RD:读数据控制。BL:LCD背光,高电平有效。LCD读写寄存器对LCD寄存器的操作线设置RSWR的脉冲,就可以把数据写入到LCDRS,RD脉冲。LCD对于LCDRS设置为高,就表示此次操0X0E/0X0FLCD这部分是面两步成功的基础上才能进行的,LCD的初始化涉及到其内部很多寄存器的初始化。比较复杂,由voidTFT_Init(void)函数实现,具体初始化过程请参考附件里面LCD画点的实现,要先设置LCD0X02H~0X04H这四个0X0E命令,开始写入数据,就可以写入像素值(16bit)了,对于画的voidTFT_DrawPoint(u8x,u16y)函数。以上四个函数是LCD的主要函数,是最底层的。其他任何功能的函数都可以在这几个底层函数基础上实现。其他功能的LCD驱动函数均在tftlcd.c里面有定义和说明,具体见本系统的输入系统采用的是四线电阻式触摸屏加ADS7846实现的,整个系统的控制都要认识触摸屏和ADS7846的工作原理。触摸屏工作原理:触摸屏附着在显示器的表面,与显示器相配合使用,如果能测量出触摸点在屏幕上的坐标位置,则可根据显示屏上对应坐标点的显示内容或图符获知触摸者4层的透明3.2明点把它们隔开。当手指触摸屏幕时,两导电层在触摸点处接触。3.3所示,当在X方向的电极对上施加一确定的电压,而YX平行电压场中,触点处的电压值可以在Y+(或-)Y+X坐标值。同理,当在Y电极对上加电压,而XX+电极的电压,便可得知触点的Y坐标。电阻式触摸屏有四线和五线两种,我们这里用的是四线式的。四线式触摸屏的X工作面和Y电极对和Y图 触摸屏触摸示意3.3ADS7846工作原理:控制器的主要功能是分时向X、Y电极对施加电压,并把测量电极上的电压信号转换为相应触摸点的X、Y坐标。ADS7846内部有一个由多个模拟开关组成的供电-12位的A/D转换器(3.4)ADS7846根据微控制器发来的不触点坐标位置所对应的电压模拟量引入A/D转换器。在触摸点X、Y坐标的测量过程中,3.5所示,图中P为测量点。图 ADS7846的功能框图 测量关图 笔中断请ADS7846通过笔中断请求向MCU表示有触摸发生。如图图3.6所示,当没有触摸时,MOSFET①和②打开、③关闭,则笔中断输出引脚通过外加的上拉电阻输出为高。 向MCU发中断请求。MCU通过中断获取是否有按键按下,在得到中断以后我们传统的鼠标是一种相对,只和前一次鼠标的位置坐标有关。而触摸屏则是一种绝对坐标系统,要选哪就直接点哪,与相对有着本质的区别。绝对坐标系统的特点是每一次定位坐标与上一次定位坐标没有关系,每次触摸的数据通过校准转为屏幕上的坐标,不管在什么情况下,触摸屏这套坐标在同一点的输出数据是稳定的。不过由点,这就是触摸屏最怕出现的问题:漂移。对于性能质量好的触摸屏来说,漂移的情况出现并不是很严重。所以很多应用触摸屏的系统启动后,进入应用程序前,先要执行校准程序。通常应用程序中使用的CD坐标是以像素为单位的。比如说:左上角的坐标是0的数值,比如(20,20),而右下角的坐标为(220,260)。的方向、XY值的比例因子、偏移量、缩放因子都与LCD坐标不同,所以,可以在获取坐POS我们从触摸屏上到了4个角的物理坐标,假设是2.4英寸屏,240X320分辨率,则定系数法就可以算出坐标系之间的平移关系。比如:Vx=xFactor*Px+xOffset。Vy=yFactor*Py+yOffset。那么,在触摸屏坐标的特定函数中就可以按照这个变换关系把物理坐标转换为像素坐标赋给POS结构了。因此,应用程序中首先弹出一个有若干点的点校准,具体算法同上,在voidtouch_adjust(void)函数中实现。ADS7843的初始化在void的配置。其他触摸屏控制的函数均在touch.c文件里面。具体请看附件。SD卡有两个可选的通讯协议:SD模式和SPI模式。SD模式是SD卡标准的读写方式,但是在选用SD模式时,往往需要选择带有SD卡控制器接口的MCU,或者必须加入额外的SD卡控制单元以支持SD卡的读写。然而,STM32F103RBT6没有集成SD卡控制器接口,但是却拥有很强大的SPI接口,故选用SPI模式SD卡。SD卡在上电初期自动进入SD总线模式,在此模式下向SDCMD0。如果SDCS低电平有效,则进入SPI模式,否则工作在SD总线SD3.7所示,具体的实现是通过u8SD_Init(void)函数实现的,该函数还包括对MCU的SPI2的初始化。详细说明见附件。发送发送>74发送复位命令发送复位命令发送发送CMD8,获取SD图 SD卡初始完成SD卡的初始化之后即可进行它的读写操作。SD卡的读写操作都是通过发送SD卡命令完成的。SPI总线模式支持单块(CMD24)和多块(CMD25)写操作,多块操作是SD卡收到一个停止命令CMD12才停止。单块写操作的数500101时,表明数据块被正确写入SD卡。在需要SD卡中数据的时候,读SD卡令字为CMD17,接收正确的第一个响这些操作的实现代码包括SD初始化的代码都在MMC_SD.c里面。VS1003也是采用SPISPI1VS1003的初始化操MCU相关IO口正确配置之后就可以对VS1003VS1003通过7跟线与MCU通信:XRST、XDCS、XCS、DREQ、SCK、SO、SI。XRST:VS1003复位线,低电平有效。VS1003与MCU的通讯都是通过SPI总线来完成的,在默认情况下,数据将在SCLKMSBVS1003的最大写入和读出时钟分别是CLKI/4和CLKI/(CLKI为VS1003VS1003硬复位,XRST等待DREQ等待DREQ为高(软件复位结束设置VS1003的时钟:SCI_CLOCKF=0X9800,3设置VS1003的采样率:SPI_AUDATA=0XBB8148K向VS1003发送节无效数据,启动SPI发送VS1003的初始化在VS1003x.c里面,通过voidVs1003_Init(void)函数实现,该文件里面还包括其他相关的VS1003操作函数,具体见附件。PT2314采用IIC总线和MCU通信,IIC总线应用很多,这里就不在介绍。PT2314的3.8所示,图 PT2314控制寄存MCU通过IIC2~4位用来表示此次操作是对具体哪个功能经行操作,PT2314的器件地址为:0X88,在执行PT2314的操作时,需要注意。PT2314的操作函数均在PT2314.c文件里面,具体请看附件。FM24C16也是采用IIC总线和MCUIICFM24C16的读写。FM24C16的器件地址与页地址是和在一起的,这里需要注意。FM24C16的高四10100~7256个字节,这样FM24C162048字节。对FM24C160XAx(x:0~7),再写入要写入的地址,紧跟着就可FM24C160XAx+1,代表执行读操作,紧接着就可以读数据了。FM24C16的相关操作函数均在fm24c16.c里面,见附件。TEA5767收音机模块支持IIC和三线模式,这里我们使用IIC来控制。TEA5767的器0XC0,在对TEA57670XC1来执行。TEA5767发送IIC5发送IICTEA5767IIC0XC1,将发送一个字节TEA5767的其他操作函数均在TEA5767.c,温度传感器采用一线数字温度传感器DS18B20 DS18B20的温度操作过程如,复位检查0XCC(64bitROM地址0X44复位检查0XCC(64bitROM地址通过以上操作可以很方便的获取DS18B20temperate.c文RTC实时时钟是利用STM32F103RBT6内部的时钟模块实现的,跟据STM32DATASHEET,得到RTC设置LSIRTCRTC等待RTC允许RTC等待RTC到这里就结束了对RTC时钟的设置,RTC时钟在完成以上配置之后,就会每隔固定的时间,对秒钟寄存器(RTC->CNT)1操作。此操作不需要软件参与,全部硬件执行。固定时间由时钟分频系数(RTC->PRL)32.768Khz,故只要在RTC->PRL32768-11秒了,但是由于晶振的误差,通常RTC的具体初始化函数和其他相关操作函数均在calendar.c 模式1:在向上计数时,一旦 T<TIMx_CCR1时通道1为有效电平, T>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。通过设置TIM4的CCR1值,就可以调整输出的脉宽,从而控制LED的亮度。TIM4的初始化过程如下TIM4PORTB设置PB6、7、8设置TIM4设置TIM4设置TIM4,CH1~3设置TIM4,CH1~3使能TIM4使能通过以上过程就完成了对TIM40,即不分频,这样TIM4的计数频率为系统时钟(72Mhz)500,72000/500=144Khz的输出频率。TIM4的具体初始化函数和其他相关操作函数在rgbled.c文件里面,见附件。JPEG/BMP模块程序设JPEG/BMP是本系统的一个重要功能,两者的均采用软件实现,BMP的相对JPEG比较简单,这里重点介绍JPEG的原理。JPEG算法原理JPEG算法可分为基本JPEG(Baselinesystem)和扩展JPEG(Extendedsystem)Baselinesystem应用尤其广泛。本文主要讨论Baselinesystem的。JPEG算法框图如图3.9所示:图 JPEG算法框JPEG算法本身与颜色空间无关,因此“RGBYUV变换”和“YUV到RGB变换”不包含在JPEG算法中。但由于作为输出的位图数据一般要求RGB的表示,所以将颜色空JPEG的编单在JPEG中对于图像的编是分块进行的整个图像被划分为若干个8×8的数据块,称为最小编码单元(MCU)8×8的像素阵列;各行的编顺序是从上到下,行内的编顺序是从左到右。值得注意的是,由于一幅图像的高和宽不一定是MCU尺寸的整数倍,因此需要对图像的最右边一列或其最下边一行进行填充,扩展其高或宽,使得可以将整个图像划分为整数个MCU;而在输出时,这些的行熵在JPEG的熵编码时,首先利用空间相关性对各块的直流值采用差分编码,即对相邻块ZigZag方式扫描块中码组成而相应的熵过程是编码的逆过程在端接收到的是由变长码(VLC)和变长整数(VLI)组成的数据流。为了从此数据流中恢复编码前的DCT系数,必须根据哈夫曼编在JPEG端要利用发送过来的量化表对量化值进行译码。JPEG文件里一般含有两个量化表:一个亮度分量的量化表,一个色度分量的量化表。反量化就是对熵出来的其中,C(u,v)代表熵输出,Q(u,v)代表相应的量化矩阵变换JPEG算法能否满足实时应用,关键在于8×8的二维IDCT的计算速度。在编以上介绍了JPEG算法,在本系统中JPEG/JPG的通过intDecode(void)函数实现。返回值为此次成功与否的标志。在执行该函数之前,需要先执行两个函数voidInitTable(void)和intInitTag(void),第一个函数用来清空个量化表,第二个函数用来获取解对于BMP的则是通过BOOLBmpDecode(FileInfoStruct*BmpFileName)函数实现,参数BmpFileName为BMP文件信息。返回值为成功与否的标志。对于BMP4的整倍数,如果不是,则需要补齐。即BMP44BMP的水平BMP和JPEG/JPG的与外部接口的函数为BOOL*FileName,u8sx,u16sy,u8ex,u16ey),FileName为要打开的文件信息;sx、sy为开始显示的坐标;ex、ey为结束显示的坐标。本系统要用到SD卡,不可避免要管理文件系统,所以,对文件系统的解析是本系统的重点。本系统支持FAT16和FAT32文件系统,由于FAT文件系统是一个复杂而庞大的构架,这里我们仅简单介绍FAT32文件系统的构架,使我们能够正确的FAT32系统下FAT32(1)DBR(DOSBOOTRECORD操作系统引导记录区DBR是我们进军FAT32的首道防线。其实DBRBPB(BIOSParameterBlock)部分才是这一区域的部分(第12~90字节为BPB),只有深入详实的理解了BPB的FAT32DBR在FAT32中的地位就不多说了。DBR3.10:图 DBR区各字节意DBR90个字节(BPB字段)90个字节对于这些信息的只要遵循DBR中的字段定义即可BPB部分数据字节意义如图3.11图 BPB部分字段意通过对上面字段的,我们可以得到FAT32文件系统的很多重要信息:每扇区字节 簇号、该卷总扇区数、FAT表1所在的扇区数等。FATFAT表是FAT32文件系统中用于磁盘数据(文件)索引和定位引进的一种链式结构。可以说FAT表是FAT32文件系统最有特色的一部分,它的链式机制也是FAT32的精华所在也正因为有了它才使得数据的可以不连续使磁盘的功能发挥得更为出色。FAT表到底在什么地方?它到底是什么样子的呢?从第一步从BPB中提取参数中的FirstFATSector就可以知道FAT表所在的扇区号。其实每一个FAT表都有另一个与它一模一样的FATFAT表是同步的,也就是说对一个FAT表的操作,同样地,也应该在另一个FAT表进行相同的操作,时刻保证它们内容的一致。这样是为了安全起见,当一个FAT因为一些原因而遭到破坏的时候,可以从另一个FAT表进行恢复。一个FAT3.12所示:图 FAT8个字节“F8FFFF0FFFFFFFFF”为FAT32的FAT表头标记,用以表示此处是FAT表的开始。后面的数据每节为一个簇项(从第2簇开始),用以标记此簇的下2FAT个簇(如果文件大小大于一个簇的容量,必须会有数据到下一个簇,但下一个簇与上一个簇不一定是连续的),2”的内容为“FFFFFF0F”,这样的标记就说明这2簇就已经结束了(另“00000000表示未分配的簇,“FFFFFFF7”表示坏在获取簇数或者其他信息的时候,要注意CPUSD卡用的是大端模式,即在后,低位。时要注意。这里有必要说明一下簇和扇区的概念:磁盘上最小可寻址512个字节。由于多数文件比扇区大得多,因此如果对一个文件分配最小的空间,将使器能数据,这个最小空间即称为簇。根据设备(磁盘、闪卡和硬盘)的容量簇的大小可以不同以使空间得到最有效的应用在早期的360KB磁2个扇区(1,024字节)10MB8个扇区(4,096字节)8KB16KB。2GB以上的硬盘驱动器有32KB的簇。如果对于容量大的定义了比较小的簇的话,就会使FAT表的体需要的是,簇作为FAT32进行数据的最小单位,内部扇区是不能进一步细分查找下一簇数据的位置,直到数据结束。下面将要讲到的“根区”就可以由一个文件根在FAT32中其实已经把文件的概念进行扩展,同样也是文件,从根的地位与其它是相同的,因此根也被看作是文件。既然是文件就会有文件名,根的名3.13所示:图 FAT文件属性结根的簇号在BPB信息段已经说明了。找到根文件的起始簇号了。例如某SD卡的 簇如图3.14所示图 信3.141描述根,前八个字节为文件名“ZNMCU”(8的部分用空格符补齐),下面的三个字节为扩展名“”(3的部分用空格符补齐),08000000000,文件长度为02描述TESTTXT文件,文件名为EST,扩展名为TT”,20表示此文件为3(00000003”),203描述IGTESTTXT文件,文件名为ITES~1”,扩展名为TT”FAT32中的文件名都以大写字母表示,长度不足的部分用空格符补齐,所以我们要的文件TES.TXT就变成了TET.TT”,这将有助于文件名的匹配,我们不用去处理不等长文件名所带来的麻烦。另外,还会发现长度过长的部分会被~1~2这样,我们在获得文件的起始簇之后,就可以从起始簇开始文件的内容了,如果超过一个簇我们就去FAT表找下一个簇号直到文件结束从而实现了文件的功能。关于文件系统,我们就介绍到这里,本系统针对文件系统的控制和管理函数均在在FAT.c这是本系统的第一大功能,本系统的MP3功能是比较强大的:支持MP3、WMA、MIDI、WAV等格式的音频文件;支持歌词显示,歌词格式支持:前进度显示;支持快进和快退操作;支持单曲循环,全部循环两种模式;支持频MP3前的所有准备,面已经都做了,包括VS1003的初始化,从SD卡文件系统文件。这里,针对MP3,我们需要做的就是要管理文件和控制VS1003音对于文件浏览,要用到两个非常重要的函数:u16File_Browse(u16file_type),和u8 0代表退出浏览。第二个函数Get_File_Info,用来获取指定文件的详细信息或者获取当前 体);type,文件类型;count:为0时,得到的是整个 返回第count个文件的详细信息。通过以上两个文件的组合就可以方便的实现任何文件浏览。对于音乐通过接口函数voidMus_Viewer(void)来实现,对于音乐文件则是通过u8Mus_*FileName,u16index,u16total)函数来实现。其中FileName为要的MP3名字,index为该文件的编号,total为整个文件夹下面的文件数目。到这里就实现了MP3功能了。但是还有其他功能,包括频谱显示,歌词显示,音乐彩频谱显示比较简单,主要频谱分析的工作不需要MCU来执行,是由VS1003执行的,通过在初始化VS1003后写入频谱分析的代码,就可以让其执行频谱分析的功能,MCU需析数据被存放在*p里面,共十四个频点。*toppos2)函数来实现,curv为当前的频谱数据,topv为当前显示的最高点数据,flyv为当前悬浮在频柱上点的值,toppos1,toppos2用来寄存当前所有频点在空中停留时间的控制。4bit。歌词显示通过voidLyricDisyCtrl(void)来控制显示但是最关键的却是开始对歌词的初始化处理过程,由函数u8FindLrcFile(unsignedlongdircluster,unsignedchar*strName)实现。返回值,标记是否成功找到匹配歌词;dircluster为当前的簇号;strName为要查找与之TA((void)实现);第二步,对得到的TAG排序;第三步,把歌词,按照排序后的TAG顺序,读入到SRAM里面。音乐彩灯的实现就比较简单了音乐彩灯是根据频谱变换得到的值来控制的寄当然前面几个函数还包括了其他处理函数,这里不一一介绍,在mp3yer.c文件里面3.2.14浏览模块程序设浏览是本系统的第二大功能。本系统的浏览支持大多数JPEG/JPG的浏览,不论大小,都会自动调整实现的现实。同时,该系统还支持BMP格式的浏览,对16bit、24bit、32bit、的任意大小的BMP都能较好支持。还有多种浏览文件浏览也是通过上面两个浏览函数浏览JPEG/JPG和BMP,在找到指定的JPEG/JPG和BMP文件之后调用BOOLAI_LoadPicFile(FileInfoStruct*FileNameu8sx,u16片名称,sx、sy为开始显示的地址,ex,ey为结束显示的地址,该函数根据这两个坐标自动调整大小,并显示出来。这里介绍重点介绍AI_LoadPicFile函数这个函数是一个智能的显示函数支持对JPEG/JPG/BMP的智能显示,即,我们的不可能都是240*320大小的,比如常用的有1024*768大小。这个函数会自动把不是240*320大小的进行缩小显示,从而使得sy,ex,ey)范围,在指定的坐标范围(ex-sx,ey-sy)内,自动的显示。浏览和显示接口函数通过voidPic_Viewer(void)实现,关于显示相关函数均在picture.c文件里面,见附件。3*3拼图、4*4拼5*5拼图,并具有保存当前游戏状态的功能,可以在下一次开机的时候继续上次未完成的游戏,有最佳显示功能。游戏的界面控制要用到到一个关键函数u8Load_Fun_Sel(constu8**listconstu8*title,u8*func,u8len,u8sel),这个函数可以方便的实现多级界面控制。list为 titlefunc示的项的条数;sel为开始进入时要选中的项。通过函数voidGame_y(void)实现,见附件。8个闹铃,最多可以设置八个不同的闹钟;闹铃铃声支持MP3和FM收音;闹铃响铃可以设置为单次每天或者闹铃的设置在voidSet_Alarm(u8index)里面实现,包括闹铃时间,铃声等。参数index为闹0~7。voidSet_Alarm_Ring(void)函数负责对八个闹铃进行智能化管理,调用该函还有一个比较重要的函数voidAlarm_Process(void),该函数用来处理闹钟产生的时候,执行闹铃功能。包括闹钟,获取下一个闹钟时间并写入闹钟寄存器,保护当前音源,在完闹钟之后自动恢复到闹铃前的状态。执行该函数会弹出一个框,提示当前闹铃的时间,通过点击框终止闹铃。闹铃部分的功能接口通过函数voidAlarm_Viewer示、阴历日期显示、支持甲子年显示、24节气显示、星期功能、温度功能。温度功能支持1900~2099年。该部分的部分是RTC内时间和当前时间的转换因为我们选择Linux时间1970年作为原始年。故RTC1970+1362100年做哟才会溢出,足够用了。获取RTC时钟的操作时通过u8rtc_get(void)完成。返回值用来标志此次操作是通过u8GetCalendar(u16year,u8month,u8day,u8*p)函数,可以实现把当前的阳历日期转换为阴历日期。*p为阴历日期的存放空间;返回值用来标识此次操作的成功通过函数voidGetWeek(u16year,u8month,u8day,u8*p),可以得到任意一个阳历日本系统除了除了必须有应用型软件,也必须要有管理型软件,对系统的相关参数进行设置所以本系统有设置模块程序的设计设计模块主要实现时间设置浏览设置音效管理、触摸屏校准、音乐彩灯等设置。时间设置包括对时间和日期的设置;浏览设置则包括对浏览模式的设置和浏览时间间隔的设置;音效管理主要对PT2314相关功能进行设置,还包括对VS1003的设置;触置主要对音乐彩灯的模式选择,包括、渐变模式和跳变模式。设置部分的接口函数通过voidSet_Viewer(void)文件、LRC歌词文件。功能的实现比较简单,因为本系统已经支持了文件系统的浏览,支持了汉字和字符显示,所以功能实现起来较方便。阅读主要通过voidRead_Book(FileInfoStruct*FileName)函数来实现,FileName为要打开的文件在该函数里面实现了对中英文字体的识别并有序的在LCD上,因为LCD240*32016*16大小的宋体,如果全部用来显示汉字,则300个汉字。本系统的字体文件保存在SD卡的SYSTEM文件夹下的FONTFONT16和FONT12两种大小的字体,字体文件是通过在电脑上用专门的软件,按特定格式生成的字体点阵数据。在字体点阵的时候,只要按照字体的GB2312码值,在字体文件里面偏移相应的位置,相应长度字节的数据,就可以得到这个字体的点阵码了,然后输出到LCD上,就可以显示文字了。得到字体的点阵信息在voidGet_HzMat(unsignedchar*code,unsignedchar*mat)函数里面实现。code为汉字的GB码,而mat则是得到的这个汉子的点阵数据。对于字库里面找不到的字体,则在mat1。显示字体通过voidshow_font(u8x,u16y,u8*font,u8mode)函数实现。x,y为在LCD上显示的坐标;font为汉子的点阵数据;mode为显示通过以上几个函数的组合,再通过加入文件浏览函数和控制函数,则可以实现阅读功能了,模块的接口函数通过voidTxt_Viewer(void)实现,见附件。级别设置,频段选择,等统根据设置,自动搜索满足条件的电台,并保存在FRAM里面。频段选择包括两个频段供选择,频段(76~91Mhz)和普通频段(87.5~108Mhz)。可以实现系统在做收音机模块的接口函数通过voidRadio_y(void)实现,见附件了大功率的LED光源,该彩灯既可以做装饰用,也可以做照明用。彩灯模块程序实现的功能有:模式选择、时间间隔设置、执行、色彩调用和保存。模式选择包括有普通模式、渐变模式和跳变模式。普通模式即全部手动调节,输出用ED颜色平稳过渡。跳变模式即系统自动调用用户保存的八个颜色,循环轮流显示。执行则是控制是否允许系统在执行其他功能的时候彩灯还正常工作。色彩保存和调用则是用户在看到自己中意的颜色之后可以方便地保存起来,或者调用。彩灯控制模块的接口函数通过voidRGBLED_y(void)实现,见附件3.15所示,系统开机之后,第一步进行的是对系统各个硬件模块的初始化;第二步是对FAT文件系统的初始化,这里要判断是否初始化成功,如果不成功,则系统会一直检索SD卡,直到检测到能被系统识别的卡和文件系统为止;第三步是查找系统文件,本系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 居家养老食堂合同(2篇)
- 2025年度O2O电商代运营团队培训与支持合同3篇
- 二零二五年度酒吧服务员全职雇佣合同规范文本3篇
- 二零二五年度生物科技园开发与管理承包合同2篇
- 二零二五版绿色环保办公楼房地产买卖代理合同3篇
- 基于二零二五年度的采购合同2篇
- 二零二五年摄影摄像与后期制作合同2篇
- 二零二五版板材模板设计与制造技术服务合同3篇
- 二零二五年度电力系统用变压器安装及节能降耗合同3篇
- 二零二五版土地购置与绿色生态农业合作合同3篇
- 银行会计主管年度工作总结2024(30篇)
- 教师招聘(教育理论基础)考试题库(含答案)
- 2024年秋季学期学校办公室工作总结
- 上海市12校2025届高三第一次模拟考试英语试卷含解析
- 三年级数学(上)计算题专项练习附答案集锦
- 长亭送别完整版本
- 《铁路轨道维护》课件-更换道岔尖轨作业
- 股份代持协议书简版wps
- 职业学校视频监控存储系统解决方案
- 《销售心理学培训》课件
- 2024年安徽省公务员录用考试《行测》真题及解析
评论
0/150
提交评论