搜索
bottom↓
回复: 1

新手求助!关于LPC1788 用UDA1380播放WAV问题

[复制链接]

出0入0汤圆

发表于 2012-5-11 19:30:32 | 显示全部楼层 |阅读模式
在NXP申请了块LPC1788的板子。。。自带UDA1380。。
根据官方例程USBHostLite 驱动U盘。把WAV(44.1KHZ 16位) 文件放入U盘。
FCLK=120M
PCLK=60M
分频得到MCLK =15M
TXBITRATE=10
直接把音频的数据存在数组里播放  播放正常 说明 UDA1380初始化、位速率设置应该没问题。。

然后直接播放存在U盘里的WAV文件     以下播放程序。。根据Lengxue童鞋的修改的。。。在这里感谢Lengxue的无私奉献。
         NVIC_EnableIRQ(I2S_IRQn);  //触发深度已设置为4字节                                                                                                         
         while(1)                                                                                                                        // 读音频数据并播放
         {        
                if (flag_buff1empty)
                 {                        
                        bytes_read = FILE_Read(fdr, buff1, MAX_BUFFER_SIZE);  
                                                          flag_buff1empty = 0;
   
                             //bytes_read 返回分块读取的数据长度 MAX_BUFFER_SIZE 读取的最大长度 既bytes_read <=MAX_BUFFER_SIZE                                                                  
                                  if (bytes_read<MAX_BUFFER_SIZE)                                                                                // 文件结束,结束循环
                         {
                                 break;
                         }
                 }               
                if (flag_buff2empty)
                 {
                         bytes_read = FILE_Read(fdr, buff2, MAX_BUFFER_SIZE);
                         flag_buff2empty = 0;

                        if (bytes_read <MAX_BUFFER_SIZE)                                                                                // 文件结束,结束循环
                         {
                                 break;
                         }
                 }
         }
         NVIC_DisableIRQ(I2S_IRQn);                                          
FILE_Close(fdr);                                                                                                                  
}
void I2S_IRQHandler (void)
{         char i;
         LPC_GPIO2->CLR |= (1 << 25);
         if (buff1En == 0)
         {
                 for (i = 0; i < 4; i++, buffSndCnt1 += 4)
                 {
                         LPC_I2S->TXFIFO = (buff1[buffSndCnt1+0] << 0)                         /*  写FIFO数据 32字节          */
                                             | (buff1[buffSndCnt1+1] << 8)
                                             | (buff1[buffSndCnt1+2] << 16)
                                             | (buff1[buffSndCnt1+3] << 24);                                                                                 
                }        
                 if (buffSndCnt1 == MAX_BUFFER_SIZE )
                 {
                          flag_buff1empty = 1;                   // Buff1 kong
                          buffSndCnt1     = 0;                                        // buffSndCnt1清0
                         buff1En =~buff1En;
                 }
        }
         else
         {
         for (i = 0; i < 4; i++, buffSndCnt2 += 4)
                 {
                         LPC_I2S->TXFIFO = (buff2[buffSndCnt2+0] << 0)                       
                                             | (buff2[buffSndCnt2+1] << 8)
                                             | (buff2[buffSndCnt2+2] << 16)
                                             | (buff2[buffSndCnt2+3] << 24);                                                
                }           
        if (buffSndCnt2 == MAX_BUFFER_SIZE)
                 {
                          flag_buff2empty = 1;                   // Buff1 kong
                          buffSndCnt2     = 0;                                        // buffSndCnt1清0
                          buff1En =~buff1En;
                 }         
         }
}
运行结果: 杂音严重。
   MAX_BUFFER_SIZE  越小 杂音相对少 但声音被拖长。。。
个人理解只要从U盘读取块数据速度大于 播放块数据的速度, 结果应该和  MAX_BUFFER_SIZE 无关。。
但显然U盘读取速度相对来说快的多。。。。。        COPY 一个10M文件只需几秒
小弟有点理解不能。请各位高手指教!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-7-31 16:20:01 | 显示全部楼层
哥们!能把你的代码上传吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-19 13:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表