大学生电子制作店: 努力给你最好的,有我你更强!
淘宝:http://shop57663993.taobao.com/
[attach]1500[/attach]
三步做自己的mp3
一.准备工作
有空闲的mc9s12xs的系统板,弄了个vs1053搞搞mp3听听音乐,同时验证我们的文件系统、透明串口是否成熟。结果vs1053表现比较令人满意,和市场上中上价位的mp3比较丝毫不逊色。相信当你听到音乐的时候会露出满意的笑容。
1.硬件
l
一个mc9s12或者mc9s12xs的最小系统板。
l
Bdm一个。
l
一个vs1003或者vs1053。
l
Sd卡一张任意容量。(或者使用透明串口也可。详情看店内宝贝)
l
导线7根。(如果使用店内宝贝,导线也可省。)
上面全了就可以开始我们自制mp3的旅程了!
2.软件
我们提供的有:
l
.一个mp3完整实例,硬件平台为dg128或这xs128(稳定)
l
基于avr8的一个完整mp3播放器实例(不稳定)
l
其它mcu
3.文档
一个是vs1003,vs1053的数据手册,一个是vs10xx的应用笔记
[attach]1501[/attach]对于mc9s12dg128来说总共需要7根线。/*********************************************************8
i/0 name
pa0 xres 输出 1复位信号
pa1 dreq输入0数据请求信号
pa2xdcs输出1数据片选
pa3xcs输出1片选
ptm5sck输出1时钟信号
ptm2miso输入0串行数据输入
ptm4mosi输出1串行数据输出
**********************************************************/
1 微处理器的正确初始化
请注意将 dreg配置为通用io的输入口,miso为spi总线的输入口。其它均为输出。
[attach]1503[/attach]
void SPI_Init(void)
{
//片选的信号
PORTA|=0X0D;// derq为输入0 ,其它为输出1
//硬件spi的初始化
MODRR =0;
MODRR_MODRR4=1; //使用PM口
DDRM|=0x38;
//SCK0=1,MOSI=1,SS0=1
SPI0CR1 = 0x5e; //CPOL=1,CPHA=1
SPI0CR2 = 0x10;
SPI0BR
= 0x37;
// 80M / 256 = 312.5k
}
基于mc9sdg128的播放mp3代码实例。如果有文件系统就是这么简单!
void PlayMusic(char* filename)
{
uint16 j,jp;
//循环变量
//loop variable
unsigned int count;
Mp3Reset();
res =
f_open(&file, filename,
FA_OPEN_EXISTING|FA_READ);
//打开文件的读写
VS1003B_XDCS_L(); //数据片选
for(;;)
//
{
PORTB_LED0_ON(); //指示灯 亮
f_read(&file,buffer1,512*4,&br); //读取mp3音乐数据
PORTB_LED0_OFF();// 指示灯灭
count=0;
while(count<br)
{
if((VS1003B_PIN & (1<<VS1003B_DREQ))!=0 )
//根据需要送数据
{
for(j=0;j<32;j++)
//每次送32个数据
//32 Bytes each time
{
VS1003B_WriteByte(buffer1[count]);
count++;
}
} //end
if((VS1003B_PIN & (1<<VS1003B_DREQ))!=0 )
//根据需要送数据
}
// end while count<512
if(br<512*4) //到达文件末尾 或者出错
break;
} //end for(;;)
VS1003B_XDCS_H();
f_close(&file);
}
//请注意播放wav.mid音乐和播放mp3略有不同。
欢迎光临 智能车制作 (http://dns.znczz.com/) | Powered by Discuz! X3.2 |