今天看到一段小程序,是播放存放在flash中的wav音频文件的:
while(1)
{
for(i=0x00800000;i<0x000fffff; i+=2 )//// 0x00800000是flash首地址,注意!!这里是 i+2
{
while(IORD(AUD_FULL_BASE,0));
voicedata=IORD(i,0);
IOWR(AUDIO_0_BASE,0,voicedata);
IOWR(SEG7_DISPLAY_BASE,0,i);
}
}
我原来写的循环的 for(i=0x00000000;i<0x000fffff; i+=1 ),结果没有正确播放,而单步运行的时候发现存在每两次取出来的数据是一样的!!!难怪正确的程序每次取完数后 i 变量是加2的,实在不明白,请大侠赐教!!
我也问了一下,别人说是flash存储格式的关系,知道的大侠能不能解释一下,或者告诉我哪里能有这方面的资料,谢谢!
再弱问一下,SDRAM的存储格式呢?是不是直接读就可以送DA播放了呢?
[此贴子已经被作者于2007-3-22 17:53:53编辑过]
你可以看看你的flash的datasheet,不同的flash的存取方式不同而且和位数有关。像你用的这种flash的操作,直接就给一个地址就能够存取数据。一般的cfiflash要有一些控制方式写入才能存取。
sdram有位数的差别,32bit的,16bit的,使用和你程序中的方法差不多,给地址就能存取。
看意思应该是audio fifo是不是满的了,如果满了,就不能继续写了。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |