有个想法,自己弄个播放器多好玩啊,想了想,应该分为以下几个部分
1.得有个处理器,我有BF592
2.得有个音频解码器,我有SSM2603
3.得有个存储器,我有M25P16
当前的情况是这三个我都有
按照难度,先来存储器,U盘还是SD卡呢?思考下,还是SD好些,理由是因为DSP支持SPI,而SD可以直接使用SPI,确定了
正好我有手机卡,今天买朗琴X6,送了个卡托,硬件全齐了
然后焊接,图如下,
这个是手机卡的代码
这个是以前做的,代码还在
第一个是12864的驱动代码
void delay(int delay);
void Lcdwrite(char command,char se);
void sendbit(char xx);
void Init12864(void);
///
void delay(int delay)
{
int i;
for(i=0;i<delay*9;i++)
{
asm("nop;");
asm("nop;");
asm("nop;");
}
}
void Lcdwrite(char command,char se)
{
char high,low;
high=command & 0xf0;
low=command & 0xf;
low=low<<4;
low=low & 0xf0;
sendbit(se);
delay(1000);
sendbit(high);
delay(1000);
sendbit(low);
delay(1000);
}
void sendbit(char xx)
{
int i;
char tmp;
for(i=0;i<8;i++)
{
tmp=xx;
tmp=tmp<<i; //将要给数据转到最高位
tmp=tmp>>5; //转移到PF2
tmp=tmp & 0x04;
*pPORTFIO &=0xfffb; //清除PF2
ssync();
*pPORTFIO |=tmp; //给数据
ssync();
*pPORTFIO &=0xfffd; //拉低时钟
ssync();
*pPORTFIO |=0x0002; //拉高时钟
ssync();
}
}
void Init12864(void)
{
delay(1000);
Lcdwrite(0x30,0xf8);
Lcdwrite(0x0c,0xf8);
Lcdwrite(0x01,0xf8);
Lcdwrite(0x06,0xf8);
delay(1000);
}
这个是手机卡的代码
#define DELAY 300
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long
int fatstart=97;
int datastart=7871;
unsigned char fat[512]; //用于读取处fat表分析用的
int rootnextcu=2; //记录根目录的下一簇号,默认初始化为2号
unsigned char root[512*8]; //4KB,用以读取根目录内容并分析
void Wait_For_SPI1F(void); //等待函数
void SetupSPI1( const int spi_setting ); //初始化SPI1;
void ReadByte(unsigned char *pusValue ); //传感器的单字节读取函数
void WriteByte(unsigned char usValue ); //传感器的单字节写函数
u8 SendCmd(u8 cmd,u32 arg,u8 last);
int speedsd;
int GetSec(int cuhao); //根据簇号返回扇区
int GetNextCuhao(int cuhao); //根据簇号返回下一个簇号
int GetCu(int position); //根据传入的指针从根目录的目录项中获取簇号
/****************************************************/
//发送卡命令
/**************************************/
u8