ARM体系结构实验报告(共18页).doc

上传人:飞****2 文档编号:13856288 上传时间:2022-05-01 格式:DOC 页数:18 大小:234.50KB
返回 下载 相关 举报
ARM体系结构实验报告(共18页).doc_第1页
第1页 / 共18页
ARM体系结构实验报告(共18页).doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《ARM体系结构实验报告(共18页).doc》由会员分享,可在线阅读,更多相关《ARM体系结构实验报告(共18页).doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上 目 录-1-2-22334 5.3 液晶显示模块设计-5 6.1 VS1003 的初始化-5 6.2 MP3文件数据写入- 779 7.1 SD模块-9 7.2 VS1003模块-14 7.3 图形人机交互模块-168 -16绪论 随着消费类电子产业的蓬勃发展,越来越多的嵌入式电子产品走进了千家万户。电脑的形态也不再局限于以前的PC机,各式各样的嵌入式系统出现在了众多的行业和应用中,其中ARM和Linux结合的产品在市场上最受青睐。ARM由于其低功耗、高性能、小体积、低成本受到了越来越广泛的重视,成为众多公司产品开发的主流硬件。而Linux则因其开放的源代码,可裁剪

2、的内核,便利的开发环境,各硬件平台的通用性,逐渐成为嵌入式开发的主流操作系统。本课题的嵌入式MP3设计就是基于ARM和linux平台的。本课题实现了一个完整的嵌入式系统,选用zq2410开发板为目标平台,linux作为目标操作系统,在这样的软硬件环境下研究实现MP3播放器。文章首先综述了嵌入式系统开发方法,介绍了ARM处理器及其特点,Linux操作系统,嵌入式系统的开发模式以及如何搭建交叉开发环境,然后介绍了所选硬件平台zq2410目标板的各种资源,在系统软件开发中,介绍Uboot、Linux的裁剪和移植,根文件系统的制作以及核心驱动程序的开发,应用程序开发中,介绍了MP3的原理,移植Madp

3、lay MP3播放器,最后成功对Madplay播放器实现了综合控制。 关键词:嵌入式ARM Linux驱动程序MP3第一章 课程设计的目标 1.通过键盘输入,进入MP3播放器相应的功能选项。 2.MP3播放器具备的功能选项为:播放、暂停、停止、音量控制、音乐下载。 3.MP3播放器响应进入各功能状态时,蜂鸣器蜂鸣。 4.流水灯表示MP3播放器当前所处的功能状态。 5.蜂鸣器蜂鸣声音的大小代表音量的大小,音量控制状态和音乐下载状态可分别与其他3种状态同事存在。 6.数码管数字大小表示执行MP3各功能状态的时间。第二章 课程设计的意义 1.熟悉ARM & ADS V1.2 的环境。 2.理解LPC

4、2131芯片引脚功能的选。 3.理解GPIO的使用设置、输入驱动方法。 4.理解PWM的通信原理,学习ARM PWM资源的通信编程。 5.学习在LPC2131上移植ucos系统。第三章 需求分析采用STM32系列微控制器, 结合解码芯片VS1003、SD卡、LCD等外围设备设计并实现了MP3播放器。其主要功能有:播放VS1003支持的所有音频文件,如MP3、WMA、WAV文件,且音质非常好;通过触摸屏实现按键功能,控制播放上一首/下一首、音量增减等;通过LCD显示歌曲名字和播放状态;本系统还实现了读卡器功能,PC机可通过USB接口直接对开发板上的SD卡进行读写操作, 以方便拷贝音频文件。MP3

5、播放过程是STM32通过SPI1接口将数据从SD卡中取出,然后通过SPI2接口送至解码芯VS1003解码播放。这里解码模块单独使用一个SPI接口,以减小干扰和噪声、提高音质。第四章 概要设计本系统在硬件上分为6个模块: 微控制器STM32F103、解码模块VS1003、存储模块SD卡、触摸屏、USB接口和显示屏LCD。系统硬件框架如图5所示。 系统硬件框架图4.1 存储模块设计SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安

6、全性强等优点。SD卡支持两种总线方式: SD方式与SPI方式。其中SD方式采用6线制,而SPI方式采用4线制,采用单片机对SD卡进行读写时一般都采用SPI模式。可用不同的初始化方式使SD卡工作于SD方式或SPI方式。在本设计中,音频数据MP3文件是以SD卡为载体。所以在电路设计中必须含有读取SD卡模块。该系统使用STM32内部接口SPI1与SD卡进行通信,下面介绍其引脚连接情况。PE3:低电平有效,连接到SD卡的片选引脚CD/DAT3。SPI在和SD卡进行通信时,需要将PE3拉低才能对SD卡进行操作。PA7:映射为STM32内部接口SPI1的主输出从输入(MOSI)信号线。这里STM32是主设

7、备,SD卡是设备。数据流的传输方向是从STM32传输给SD卡。该信号线用于传输一些控制命令来完成SD卡的操作,如读、写等。PA5: 已连接到STM32内部接口SPI1的时钟(SCL K)信号线。可设置SPI的时钟频率来调整读取SD卡数据的快慢。PA6 :已连接到STM32内部接口SPI1的主输入从输出(MISO)信号线。数据的传输方向是从SD卡传输给STM32 ,主要返回SD卡的一些状态、内部寄存器值等。PC12 :用于检测SD卡是否完全插入。当SD卡完全插入时,PC12为低电平,否则为高电平。4.2 音频解码模块设计音频解码模块完成MCU从SD卡里读取的数字MP3音频数据流进行解析、并转化成

8、模拟信号进行输出。在这里,系统使用VS1003音频解码芯片来实现音乐数据流的解析。VS1003是由芬兰VLSI公司出品的一款单芯片的MP3/WMA音频解码芯片,其拥有一个高性能低功耗的DSP处理器核VS_DSP, 5K的指令ROM, 0.5K的数据RAM,串行的控制和数据输入接口, 4个通用I/O口,一个UART口,同时片内带有一个可变采样速率的ADC、一个立体声DAC以及音频耳机放大器接口。VS1003与核心控制器MSP430F149的数据通信是通过SPI总线方式进行的。VS1003主要通过串行命令接口(SCI)和串行数据接口(SDI)来接收MSP430F149控制器的控制命令和MP3的数据

9、。通过XCS、XDCS引脚的置高、置低来确认是哪一个接口处于传送状态。对于VS1003芯片的功能控制,如初始化、软复位、暂停、音量控制、播放时间的读取等,均是通过SCI写入到特定寄存器的内容来实现的。两条SCI指令之间要通过DREQ引脚信号判断上次处理是否完成。该系统使用STM32 内部接口SPI2 与VS1003 进行通信,下面介绍其引脚连接情况。PA3 :VS1003 的中断请求引脚。当VS1003 内部数据已处理完毕,需要新的数据时,将DREQ 拉高。STM32根据这个信号来给VS1003 发送新的数据流。PB13 : 已连接到STM32 内部接口SPI2 的时钟(SCL K) 信号线。

10、PB14 :已连接到STM32 内部接口SPI2 的主输入从输出(MISO) 信号线。这里STM32 是主设备,VS1003 是从设备。数据流的传输方向是从VS1003 传输给STM32 。主要用于读取VS1003 的一些状态和内部寄存器值,比如寄存器测试返回的内部寄存器的值。PB15 :已连接到STM32 内部接口SPI2 的主输出从输入(MOSI) 信号线。这里STM32 是主设备,VS1003 是从设备。数据流方向是从STM32 传输给VS1003 ,主要传输给VS1003 一些控制命令、MP3/ WMA 数据流等。PA1 :低电平有效,如果拉低该引脚,那么通过SPI 传输的是控制信号。

11、控制信号包括读写VS1003 的内部寄存器、对VS1003 进行初始化、设置左右声道音量等。PA2 :低电平有效,如果拉低该引脚,那么通过SPI 传输的是数据信号。比如在向VS1003 传输MP3/ WMA 的数据流时需要拉低该引脚。PA0 :低电平有效,拉低该引脚则硬件复位VS1003 。4.3 液晶显示模块设计 LCD3310芯片是一个48行84列的液晶显示器主要模块。其内存带有低功耗PCD8544的CMOSLCD控制驱动器,串行输入速度最高可达4. 0Mbits/S,而且所有必须的显示功能集成在一块芯片上,包括LCD电压及偏置电压发生器,所以LCD3310是一款低功耗的液晶显示器。为了让

12、LCD3310液晶能够显示4行12* 12的汉字,系统开辟了一个6* 84字节的缓冲区,要写液晶时,就不用直接写LCD3310的静态DDRAM了,可以先写系统为它开辟的数据缓冲区,最后再刷新修改的部分就可以显示出要显示的内容,LCD3310与主控制器是SPI接口方式。第五章 相关技术说明5.1 VS1003 的初始化如其它芯片一样,初始化对于VS1003 来说同样是极其重要的。初始化的过程大致是这样的: 1.硬件复位:接XRESET 拉低。 2.延时,将XDCS、XCS、XRESET 置高。 3.向MODE 中写入0X0804。 4.等待DREQ 为高。 5.设置VS1003 的时钟:SCI_

13、CLOCKF=0x9800,3 倍频。 6.设置VS1003 的采样率:SPI_AUDATA=0xbb81,采样率48k,立体声。 7.设置重音:SPI_BASS=0x0055。 8.设置音量:SCI_VOL=0x2020。9. 这一步被很多人忽视,向VS1003 发送4 个字节的无效数据,用以启动SPI发送。实现代码如下:void Mp3Reset(void)XRESET=0delay(100)XDCS=XCS=XRESET=1wr_commad(0x00,0x08,0x04)delay(10)DREQ=1while(!DREQ)wr_commad(0x03,0x98,0x00)delay(

14、10)wr_commad(0x05,0xbb,0x81)delay(10)wr_commad(0x02,0x00,0x55)delay(10)wr_commad(0x0b,VOL_VALUE,VOL_VALUE) / 音量delay(10)spi_write(0)spi_write(0)spi_write(0)spi_write(0)在进行了正确的初始化后,还要着重检查一下VS1003 的模拟部分是否正常将VS1003 的所有DVDD、AVDD 管脚以及XRESET、TEST(第32 个引脚)接+3.0V,然后测量RCAP 引脚,它应该是1.3V 左右,否则芯片模拟部分未正常工作。5.2 MP

15、3 文件数据写入 以上的对VS1003 的初始化与测试都通过后,现在就可以给它发送MP3 文件了。但是这时就又出现一个新的问题。MP3 文件通常是比较大的,小的也要1M2M,如果使单片机内部的Flash Rom 的话,容量是远远不够的。需要有一种大容量的存储器来作为MP3 文件的载体。在笔者的调试系统中采用了SD 卡(256M)、U 盘(1G)与移动硬盘(40G)来存储MP3 文件。关于SD 卡与U盘的读写方法可以参看相关章节。这些大容量的存储设备通常也是按照扇区来进行读写的,但在实际的应用中更多的是结合FAT32 等文件系统来进行文件读写。文件系统部分可以参照FAT32 的存储机制及其在单片

16、机中的实现。这里抛开存储介质不谈,只谈数据的写入方法。其实写入数据的方法十分简单。主要就是看DREQ 信号,在VS1003 的FIFO 能够接受数据的时候输出高电平。每次可以写入32 个字节的数据。而DREQ 变低时,单片机就要停止数据的发送。具体的写数据的方法如下: 1.将XDCS 拉低。 2.等待DREQ 为高。 3.通过SPI 写入数据。 4.在文件没有结束前不断重复2 与3 操作。 5.在所有的数据都发送完毕后,最后发送2048 个无效字节,用以清除VS1003 的数据缓冲区。6.将XDCS 置高。实现代码如下:XDCS=0for(j=621j2783j+)for(k=0k8k+)MM

17、C_get_data_LBA(j,64,get)for(i=0i64i+)DREQ=1while(!DREQ)spi_write(geti)/delay(60000)for(temp=0temp2048temp+)DREQ=1while(!DREQ)spi_write(0)XDCS=1第六章 详细设计6.1 MP3播放器软件系统流程原理系统启动后,先初始化硬件模块。由MCU通过FAT32文件系统接口读取SD卡的一些基本信息,如容量、扇区大小、FAT表及根目录所在的启始扇区等。通过获得这些信息后,就可以找出SD卡是否有我们可以播放的音乐文件。若有音乐文件,微处理器将通过SPI总线方式读出该文件的

18、音频信息,并将歌曲的码流信息送入到VS1003芯片中,通过VS1003芯片解码以及其内含的高质量的立体DAC和耳机驱动电路,实现MP3歌曲的播放功能。在触摸键的控制下,通过LCD3310中菜单选项的选择,实现对歌曲选择及音量控制等功能;在播放的同时, LCD3310上显示的信息除歌曲名称信息外,还包括进度和音量等信息。由于SPI1 读取SD 卡文件的速度远超过VS1003 播放数据流的速度,因此VS1003 在播放来自SPI2 的数据流期间,SPI1 能从SD 卡中读取下次播放所需的数据,不会产生声音不连续的情况。由于使用了2 个SPI 接口,相互之间无干扰,且提高了文件系统的效率,因此本系统

19、能得到非常高品质的音乐。6.2 SD模块SD 模块主要提供SD 卡驱动以及对FAT 文件系统操作的函数,FAT 文件系统支持长文件名。该模块主要含有2 个文件msd.c 和fat16.c 。下面分别介绍其主要函数的功能。(1) msd.c该文件用于提供SD 卡的驱动,主要包括以下函数。SPI_ Config : 配置与SD 卡相连接的SPI1 及相关GPIO。MSD_Init :初始化SD 卡通信。Get_Medium_Characteristics :获取SD 卡的容量和块大小等相关信息。MSD_GoIdleState :令SD 卡处于空闲态。MSD_SendCmd :向SD 卡发送命令。M

20、SD_GetResponse :从SD 卡获取响应。MSD_GetStatus :获取SD 卡的状态。MSD_WriteBlock :向SD 卡写入1 个块的数据。MSD_ReadBlock :从SD 卡读取1 个块的数据。以下是函数MSD_ReadBlock 的实现: u8 MSD_ ReadBlock ( u8 * pBuffer , u32 ReadAddr , u16 NumByte ToRead) u32 i = 0 ;u8 rvalue = MSD_RESPONSE_FAILURE;MSD_CS_LOW() ; / / 拉低片选信号,选中SD 卡MSD_SendCmd (MSD_R

21、EAD_ SIN GL E_BLOCK, ReadAddr ,0xFF) ; / / 发送读取块命令/ / 检测SD 卡是否有返回信息,若是则返回0x00if ( !MSD_GetResponse (MSD_RESPONSE_NO_ERROR) ) if ( !MSD_ GetResponse (MSD_ START_DA TA_ SIN GL E_BLOCK_READ) ) / / 等待数据令牌,标志数据传输开始for (i = 0 ; i NumByte ToRead ; i + + ) / / 读取数据* pBuffer = MSD_ReadByte() ; / / 缓存收到的数据pBu

22、ffer + + ; / / 缓存指针后移rvalue = MSD_RESPONSE_NO_ERROR ;/ / 修改rvalue 的值为成功MSD_CS_HIGH() ; / / 拉高片选信号,禁用SD 卡MSD_WriteByte(DUMMY) ; / / 写无效字节,传输结束return rvalue ; / / 返回(2)fat16. c该文件提供对FAT16 文件系统的支持,主要包含以下函数。ReadMBR :读取MBR 数据结构。ReadBPB :读取BPB 数据结构。ReadFAT :读取文件分配表指定项。ReadBlock :读取SD 卡的一个扇区。FAT_Init :获取FA

23、T16 文件系统的基本信息。DirStartSec :获取根目录的开始扇区号。DataStartSec :获取数据区的开始扇区号。ClusConvLBA :获取一个簇的开始扇区号。LBAConvClus :转换扇区号与簇号之间的关系。Get FileName :获取指定文件的首扇区号。ListDate Time :列出文件或子目录创建的时间日期。SearchFoler :在指定范围内查找文件或子目录。ListDir :列出指定范围内的文件或子目录及相关信息。FAT_FileOpen :打开指定文件。FAT_FileRead :读取文件数据。6.3 VS1003模块VS1003 模块主要提供对解

24、码芯片VS1003 的驱动,为应用层播放音频数据、控制音量声道等提供基本接口。该模块主要含文件vs1003. c 。其主要函数的功能如下。vs1003. c 文件主要提供VS1003 芯片的驱动,包含以下几个主要函数。VS1003_Config :配置STM32 与VS1003 连接的相关引脚,包括SPI2 、PA0 、PA1 、PA2 、PA3 。SPIGetChar :通过SPI 从VS1003 读取1 个字节。SPIPutChar :通过SPI 向VS1003 写入1 个字节。如果是MP3/ WMA 数据流,则VS1003 将开始解码并播放。Mp3ReadRegister :读取VS10

25、03 寄存器的值。Mp3WriteRegister :写VS1003 寄存器。Mp3Reset :VS1003 复位,包括软件复位和硬件复位。Mp3SoftReset :VS1003 软件复位,设置时钟、采样率、重音、音量、立体声等参数,一般在2 首乐曲之间需要一次软件复位。VsSine Test : 播放正弦声波, 用于测试VS1003 和STM32 的连接是否完好。以下是VS1003音频解码芯片初始化的部分代码:void init_vs1003()vs1003_dir|=0X2C;VS1003_xResetDIR |=BIT5;printfs(“n-hard_reset-n”);hard_

26、reset; /硬件复位delay_ms(10);sotf_send_bit2(0XFF);hard_set;sotf_send_bit2(0XFF);Wait_Vs1003_DREQ();printfs(“n-soft_reset_vs1003-n”);soft_reset_vs1003();printfs(“n -vs1003initok-n”);6.4 图形人机交互模块(触摸屏支持库的安装)网络MP3播放器搭载了一块触摸屏作为系统硬件的控制模块,有了触摸屏的支持,用户就可以通过点击图形人机交互界面中的窗体控件对播放器进行管理。在设计播放器的图形人机交互界面之前,还需要一层应用程序库封装系

27、统对底层触摸屏驱动的操作,将触摸控制以一个统一的接口提供给上层GUI应用程序使用。该设计使用了tslib应用程序库来封装图形用户界面对底层触摸屏的操作。tslib是一个开源的触摸屏支持库,它作为触摸屏驱动的适配层,为不同的触摸屏提供了一个统一的接口。tslib提供诸如滤波、去抖、校准之类的功能。下图7表示了tslib在本设计GUI系统中所处的层次结构。第七章 总结 ARM芯片和linux系统是目前嵌入式领域的主流硬件和软件平台,基于这种平台的各种消费电子产品的设计有着系统成熟,开发便利,调试简单的优点,因此其成为了嵌入式开发的热点,本课题的MP3播放设计也是基于这种平台,阅读了大量的国内外相关

28、资料,主要做了如下一些工作: 1简要介绍了嵌入式系统和MP3的相关概念,了解了选题背景,国内外现状以及本课题的研究意义。 2对嵌入式系统开发进行了一个介绍,包括硬件、软件环境,主流的ARM处理和linux操作系统,以及嵌入式的开发模式。 3介绍本课题使用的开发板zq2410及其具有的硬件资源,包括各种接口,芯片以及RAM、ROM等。然后是基于zq2410的软件系统设计,进行了Uboot的移植,linux内核的裁剪移植,根文件系统的创建,编写测试LED和按键的硬件驱动。 4对1inux下比较的流行的madplay播放器进行了移植,进过测试,其能够在搭建好的环境下正常的工作,和驱动程序也能够良好的

29、互动。由于对嵌入式系统涉足不久,对整个系统的了解也不够深入,透彻,在开发过程中也遇到了不少的问题,包括linux裁剪配置,由于选项太多,对其掌握的不够熟练,1inux下驱动的编写,由于实现的机制比较复杂,学习的也不够透彻,只掌握了字符型设备的驱动编写,对于块设备和网络设备的驱动编写,还需要在后续的学习中了解掌握。同时,针对该设计中的不足还应该加入如下改进:添加一块液晶屏,现在所有的调试反馈信息都只能通过超级终端检测,对于一个完善的嵌入式系统,这个是不够直观的:系统的界面基于字符界面,操作起来相对生涩,上手起来也不太容易,在以后改进中,为系统加入GUI(图形用户界面),这样系统的界面会直观很多,用户的操作也更得心应手。系统的开发是一个逐渐完善的过程,只有在不断的完善中,系统才能更加的人性化,更加的全面,达到应用以人为本的理念。专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁