『急问』falsh播放wav音频和SD卡播放的区别
- UID
- 151116
- 性别
- 男
|
『急问』falsh播放wav音频和SD卡播放的区别
我用的是8bit CFI Flash,地址是0x00800000开始,DAC是16~32位都支持的音频DAC 下面是从Flash播wav文件的主程序: for(i=0x00800000;i<0x008FE1C4;i+=2) { if(!IORD(AUD_FULL_BASE,0)) { Tmp1=IORD(i,0); //从Flash地址直接读数据 IOWR(AUDIO_0_BASE,0,Tmp1);//将数据送到DA } } 我不明白的是为什么每次从flash取数后,地址的偏移量i是加2,请大侠解释一下吧! 下面是SD卡播放wav音频的主要程序: BYTE Buffer[512]={0}; SD_read_lba(Buffer,j,1); //从SD卡取数据放到buffer数组中 while(i<512) { if(!IORD(AUD_FULL_BASE,0)) { Tmp1=(Buffer[i+1]<<8)|Buffer; //请问这步是不是组成16bit数据? IOWR(AUDIO_0_BASE,0,Tmp1); i+=2; } }
[此贴子已经被作者于2007-3-23 10:09:48编辑过] |
|
|
|
|
|
- UID
- 136199
- 性别
- 男
|
1。“ 我不明白的是为什么每次从flash取数后,地址的偏移量i是加2,请大侠解释一下吧! ” 因为你说+1和+2读出来的值相同,我觉得有可能是你的flash的硬件的最低位有问题,二进制的最低位为0或1 都指向一个地址或存放的相同的数。 还有就是你可以使用 IORD_16DIRECT(BASE, OFFSET)
IORD_8DIRECT(BASE, OFFSET) 函数,来代替IORD,因为可以说明读入的是多少位。 2。“Tmp1=(Buffer[i+1]<<8)|Buffer; //请问这步是不是组成16bit数据?” 是的。 |
这个版主不太冷
===========================
我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm |
|
|
|
|
|
- UID
- 518397
- 性别
- 女
|
我现在在做这个,也不太懂,可以交流下啊 那下面的那个程序是不是直接从SD卡读取,然后通过WM8731播放? 还是先从SD卡读取到FLASH,再从FLASH读取,通过WM8731播放?
[此贴子已经被作者于2008-5-18 18:35:08编辑过] |
|
|
|
|
|
- UID
- 79720
- 性别
- 男
|
怎么读取随便楼主,只要解码速度能跟得上,从哪儿读取都没有什么问题。 |
|
|
|
|
|
- UID
- 518397
- 性别
- 女
|
BYTE Buffer[512]={0}; SD_read_lba(Buffer,j,1); //从SD卡取数据放到buffer数组中 while(i<512) { if(!IORD(AUD_FULL_BASE,0)) { Tmp1=(Buffer[i+1]<<8)|Buffer; //请问这步是不是组成16bit数据? IOWR(AUDIO_0_BASE,0,Tmp1); i+=2; } } 请问这Buffer数组是在flash中的吗? |
|
|
|
|
|
- UID
- 79720
- 性别
- 男
|
楼主,这个数组肯定是在ram中的,这个是数据空间。 |
|
|
|
|
|