Board logo

标题: 探讨几个音频文件的存储和播放的问题 [打印本页]

作者: zengxuan    时间: 2007-3-22 17:53     标题: 探讨几个音频文件的存储和播放的问题

今天看到一段小程序,是播放存放在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编辑过]


作者: caopengly    时间: 2007-3-22 22:12

你可以看看你的flash的datasheet,不同的flash的存取方式不同而且和位数有关。像你用的这种flash的操作,直接就给一个地址就能够存取数据。一般的cfiflash要有一些控制方式写入才能存取。

sdram有位数的差别,32bit的,16bit的,使用和你程序中的方法差不多,给地址就能存取。


作者: skyeagle    时间: 2007-5-16 19:44

AUD_FULL_BASE是什么的地址啊
作者: kzw    时间: 2007-5-17 00:15

看意思应该是audio fifo是不是满的了,如果满了,就不能继续写了。


作者: byj200528    时间: 2007-6-5 12:38

你这个程序错了 终止地址应该是 0x008fffff 不是 0x00800000 ,而且是+2 步长!!




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0