楼主:myxx 时间:2007-3-23 08:57

我用的是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;
      }
    }
1 楼:richyaoyuan 时间:2007-5-13 15:56:35
我也在研究呢,一起来啊!我QQ是369393101,加我!
2 楼:potatofly 时间:2007-5-13 22:55:22
第一个加2我觉得其他也可以。只不过放出来的声音不一样。你可以试一试。。
3 楼:skyeagle 时间:2007-5-16 18:59:41
你编译成功了么?请问一下你AUD_FULL_BASE是什么组件的地址?我编译时怎么提示找不到该组件,没有定义AUD_FULL_BASE?
4 楼:potatofly 时间:2007-5-16 21:03:52
把这个改称AUDIO_0_BASE就可以了