微机原理文档格式.docx
- 文档编号:21371487
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:18
- 大小:406.73KB
微机原理文档格式.docx
《微机原理文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
1.系统描述
1.1综述
本系统是基于STM32微控制器所设计的MP3播放器,音频文件储存在SD卡上,由微控制器
读取数据并送到VS1053音频解码模块解码并输出,同时微控制器驱动液晶模块显示当前播放信息,提供同步歌词显示。
整个系统模块分为四个模块:
MCU主芯片最小板、CPU外围电路mainborad、VS1053音频解码、液晶显示。
MCU是STM32主芯片的最小板,上面有芯片工作需要的最少资源:
时钟控制电路、复位电路、JTAG控制口以及与外围电路相连的接口。
Mainboard上集成了稳压电源、滤波电路、SD卡、与液晶及音频解码芯片的连接电路。
VS1003和液晶分别是单独的音频解码、控制显示部分。
1.2系统框图
1.3功能实现
SD卡读写
FAT文件系统
LCD人机界面
MP3文件播放
歌词同步显示
2.2STM32微控制器
2.2.1芯片介绍
STM32F103xx增强型系列使用高性能的ARMCortex-M332位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。
所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:
多达2个I2C和SPI、3个USART、一个USB和一个CAN。
2.2.2管脚图
2.3VS1053音频解码器
2.3.1VS1053芯片介绍
VS1053是目前VLSI公司VS10xx系列最强悍的芯片了,除了能播放各种音乐格式,还支持OGG实时编码录音。
2.3.2VS1053特性:
OggVorbis解码;
MPEG1&
2音频阶层III(CBR+VBR+ABR);
阶层I和II可选;
MPEG4/2AAC‐LC(+PNS),HE‐AACV2(级别3)(SBR+PS);
WMA4.0/4.1/7/8/9所有特性(profiles)(5‐84kbps);
WAV(PCM+IMAADPCM);
通用MIDI1/SP‐MIDI格式0的文件;
2、用软件插件进行OggVorbis编码
2.3.3结构框图
图2.3.3VS1053结构框图
2.3.4电路原理图
图2.3.4VS1053电路原理图
2.4SD卡模块
2.4.1SD卡介绍
SD卡(SecureDigitalMemoryCard)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。
SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。
大小犹如一张邮票的SD记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。
2.4.2电路原理图
图2.4.2SD卡接口电路
SD卡主要引脚和功能为:
⏹
CLK:
时钟信号,每个时钟周期传输一个命令或数据位,频率可在0~25MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生0~25MHz的频率;
CMD:
双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;
回复是对之前命令的回答,回复可以来自单卡或所有卡;
DAT0~3:
数据线,数据可以从卡传向主机也可以从主机传向卡。
SD卡以命令形式来控制SD卡的读写等操作。
可根据命令对多块或单块进行读写操作。
在SPI模式下其命令由6个字节构成,其中高位在前。
下面分别给出读写SD卡的两个函数:
读取SD卡函数u8MSD_ReadBlock(u8*pBuffer,u32ReadAddr,u16NumByteToRead);
/*****************************************************************
*FunctionName:
MSD_ReadBlock
*Description:
ReadsablockofdatafromtheMSD.
*Input:
-pBuffer:
pointertothebufferthatreceivesthedataread
*fromtheMSD.
*-ReadAddr:
MSD'
sinternaladdresstoreadfrom.
*-NumByteToRead:
numberofbytestoreadfromtheMSD.
*Output:
None
*Return:
TheMSDResponse:
-MSD_RESPONSE_FAILURE:
Sequencefailed
*-MSD_RESPONSE_NO_ERROR:
Sequencesucceed
*****************************************************************/
u8MSD_ReadBlock(u8*pBuffer,u32ReadAddr,u16NumByteToRead)
{
u32i=0;
u8rvalue=MSD_RESPONSE_FAILURE;
/*MSDchipselectlow*/
MSD_CS_LOW();
/*SendCMD17(MSD_READ_SINGLE_BLOCK)toreadoneblock*/
MSD_SendCmd(MSD_READ_SINGLE_BLOCK,ReadAddr,0xFF);
/*CheckiftheMSDacknowledgedthereadblockcommand:
R1response(0x00:
noerrors)*/
if(!
MSD_GetResponse(MSD_RESPONSE_NO_ERROR))
{
/*Nowlookforthedatatokentosignifythestartofthedata*/
MSD_GetResponse(MSD_START_DATA_SINGLE_BLOCK_READ))
/*ReadtheMSDblockdata:
readNumByteToReaddata*/
for(i=0;
i<
NumByteToRead;
i++)
/*Savethereceiveddata*/
*pBuffer=MSD_ReadByte();
/*Pointtothenextlocationwherethebytereadwillbesaved*/
pBuffer++;
}
/*GetCRCbytes(notreallyneededbyus,butrequiredbyMSD)*/
MSD_ReadByte();
/*Setresponsevaluetosuccess*/
rvalue=MSD_RESPONSE_NO_ERROR;
/*MSDchipselecthigh*/
MSD_CS_HIGH();
/*Senddummybyte:
8Clockpulsesofdelay*/
MSD_WriteByte(DUMMY);
/*Returnsthereponse*/
returnrvalue;
}
写读取SD卡函数u8MSD_WriteBlock(u8*pBuffer,u32WriteAddr,u16NumByteToWrite)
MSD_WriteBlock
WritesablockontheMSD
pointertothebuffercontainingthedatatobe
*writtenontheMSD.
*-WriteAddr:
addresstowriteon.
*-NumByteToWrite:
numberofdatatowrite
u8MSD_WriteBlock(u8*pBuffer,u32WriteAddr,u16NumByteToWrite)
/*SendCMD24(MSD_WRITE_BLOCK)towritemultipleblock*/
MSD_SendCmd(MSD_WRITE_BLOCK,WriteAddr,0xFF);
/*CheckiftheMSDacknowledgedthewriteblockcommand:
R1response(0x00:
/*Sendadummybyte*/
/*Sendthedatatokentosignifythestartofthedata*/
MSD_WriteByte(0xFE);
/*WritetheblockdatatoMSD:
writecountdatabyblock*/
NumByteToWrite;
/*Sendthepointedbyte*/
MSD_WriteByte(*pBuffer);
/*PutCRCbytes(notreallyneededbyus,butrequiredbyMSD)*/
/*Readdataresponse*/
if(MSD_GetDataResponse()==MSD_DATA_OK)
2.5液晶12864模块
2.5.1液晶12864介绍
12864系列是一种图形点阵型液晶显示模块。
它主要由行驱动器与列驱动器组成,可显示128(列)*64(行)点阵。
可完成图形显示,也可显示8*4个(16*16点阵)汉字。
七条控制指令,与CPU接口采用8位数据总线并口输入输出方式。
作温度:
-20~70°
C,储存温度:
-30~80°
C。
工作电压为+5.0V。
2.5.2结构框图
图2.5.2液晶结构框图
2FAT16文件系统简介
SD卡如果采用FAT16文件格式,按照其不同的特点和作用大致可分为5部分:
MBR区、DBR区、FAT区、FDT区和DATA区。
由于SD卡一般不做引导盘,一般也不分区,因此通常无MBR区,直接从DBR区开始。
下面对后面四个区分别作简介:
DBR区
内容为系统引导记录,它包括一个引导程序和一个被称为BPB(BiosParameterBlock)的本分区参数记录表。
引导程序的主要任务是当MBR将系统控制权交给它时,判断本分区根目录是否有操作系统引导文件,如果有则将其读入内存,并把控制权交给该文件。
BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、根目录大小、FAT个数,分配单元大小等重要参数。
本系统采用的DBR结构为:
typedef__packedstruct
{/*由于Cortex-M3内核默认以对齐方式访问,因此可能导致结构体元素之间有“空隙”,读出的结构体元素有误,因此需要加上关键字__packed,强制其以压缩方式存储结构体。
这样该结构体在内存空间上是一片连续的空间,不存在“空隙”情况。
其它地方同理*/
u8
BS_jmpBoot[3];
//ofs:
0.典型的如:
0xEB,0x3E,0x90
BS_OEMName[8];
3.典型的如:
“MSWIN4.1”
u16
BPB_BytesPerSec;
11.每扇区字节数
BPB_SecPerClus;
13.每簇扇区数
BPB_RsvdSecCnt;
14.保留扇区数,从DBR到FAT的扇区数
BPB_NumFATs;
16.FAT的个数,通常为2
BPB_RootEntCnt;
17.根目录项数
BPB_TotSec16;
19.分区总扇区数(<
32M时用)
BPB_Media;
21.分区介质标识,SD卡一般用0xF8
BPB_FATSz16;
22.每个FAT占的扇区数
BPB_SecPerTrk;
24.每道扇区数,对于SD卡无意义
BPB_NumHeads;
26.磁头数,对于SD卡无意义
u32
BPB_HiddSec;
28.隐藏扇区数,从MBR到DBR的扇区数
BPB_TotSec32;
32.分区总扇区数(≥32M时用)
BS_DrvNum;
36.软盘:
0x00,硬盘:
0x80,SD卡无意义
BS_Reservedl;
37.保留
BS_BootSig;
38.扩展引导标记:
0x29,通常对于SD卡无意义
BS_VolID;
39.盘序列号
BS_VolLab[11];
43.如“Msdos”
BS_FilSysType[8];
54.“FAT16”
ExecutableCode[448];
62.引导代码
ExecutableMarker[2];
510.结束标识:
0xAA55
}FAT_BPB;
FAT区
该区内容为文件分配表,FAT16文件系统进行空间分配的最基本单位是簇。
文件分配表反映了SD卡所有簇的使用情况,通过查文件分配表可以得知任一簇的使用情况。
对于FAT16来说,FAT表每项占用两个字节。
FAT表的第一项通常为FFF8H。
对于其它项,若其值为0000H表示可用;
FFF7H表示为坏簇;
FFF8H-FFFFH之间表示该簇为某文件或目录的最后一个簇,FFF0H-FFF6H之间为保留值;
其它值则指示下一个簇的簇号。
FDT区
该区的内容为文件目录表,FAT文件系统的一个重要思想是把目录(文件夹)当作一个特殊的文件来处理,FAT32甚至将根目录当作文件处理。
FAT分区中所有目录文件,实际上可以看作是一个存放其它文件(文件夹)入口参数的数据表。
因此,目录占用空间的大小并不等同于其下所有数据的大小,但也不等于0,通常是占很小的空间。
其具体的存储原理是:
不管目录文件所占空间为多少簇,一簇为多少扇区、多少字节;
系统都会以32个字节为单位,进行目录文件所占簇的分配。
本系统目录项使用的结构体如下:
u8
FileName[8];
0.文件名
u8
ExtName[3];
8.扩展名
Attribute;
//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理