首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

探讨几个音频文件的存储和播放的问题

探讨几个音频文件的存储和播放的问题

今天看到一段小程序,是播放存放在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的,使用和你程序中的方法差不多,给地址就能存取。

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm
AUD_FULL_BASE是什么的地址啊

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

在交流中前进,共同实现nios的应用。
你这个程序错了 终止地址应该是 0x008fffff 不是 0x00800000 ,而且是+2 步长!!
返回列表