[经验] 11、Beaglebone外围电路设计第三周:Codec芯片驱动调试成功

anananjjj   2012-10-21 19:55 楼主
说起这款Codec芯片,我选取的封装实在是太难焊接了!!
QQ截图20121021193030.png

第一块板子的Codec就是调试不成功,无奈,我只好重新焊接了一块:
IMG_20121019_153439.jpg

这次焊接的还不错,程序下进去播放出声音来了!
值得一提的是图中那块方形的元件就是有源晶振,第一次用着东西!因为Codec芯片需要提供外部主时钟Mclk,我做了两套方案,一个是由AM335x 提供12M的时钟信号,一个是由有源晶振提供稳定的12M时钟,为了偷懒不同配置CLKOUT2,我这次使用的是第二种方法
IMG_20121019_153451.jpg

至于软件的配置过程还蛮坎坷的,主要是官方用的都是mcasp1口,而我设计使用的是mcasp0口,二者的初始化方法倒是相同,但是mcasp0的所有寄存器的定义它都没给出来!还好可以照猫画虎,总算是在寄存器的手册(4000多页!汗!)中找到了相关的定义!
说实在的codec的配置过程蛮复杂的,我现在有的地方还是看得不太彻底,设计到DMA的ping pong模式等等,好在可以直接使用来无限循环播放短暂的音频,这也就达到了我的要求了!代码可以在官方的AM335X_StarterWare_02_00_00_07里查看到,这里我就不细说了!
但是要注意mcasp0的引脚配置:
void McASP0PinMuxSetup(void)//用到的引脚,FX,DIN,DOUT,BCLK
{
  
            HWREG(SOC_CONTROL_REGS + CONTROL_CONF_MCASP0_AHCLKR) =
                          ( CONTROL_CONF_MCASP0_AHCLKR_CONF_MCASP0_AHCLKR_RXACTIVE
                          | CONTROL_CONF_MUXMODE(2));//DIN   mcasp0_axr2         
            HWREG(SOC_CONTROL_REGS + CONTROL_CONF_MCASP0_ACLKX) =
                          CONTROL_CONF_MCASP0_ACLKX_CONF_MCASP0_ACLKX_RXACTIVE;//BCLK mcasp0_aclkx
            
            HWREG(SOC_CONTROL_REGS + CONTROL_CONF_MCASP0_FSX) =
                          CONTROL_CONF_MCASP0_FSX_CONF_MCASP0_FSX_RXACTIVE;   //FX mcasp0_fsx
            
            HWREG(SOC_CONTROL_REGS + CONTROL_CONF_MCASP0_AHCLKX) =
                          ( CONTROL_CONF_MCASP0_AHCLKX_CONF_MCASP0_AHCLKX_RXACTIVE
                          | CONTROL_CONF_MUXMODE(2)); //DOUT   mcasp0_axr3   
            
               HWREG(SOC_CONTROL_REGS + CONTROL_CONF_XDMA_EVENT_INTR(0)) =
                  CLKOUT2_SEL_MODE;                  //CLK2
}
用到的四个引脚是没有处在同一个功能mode下的!!具体的mode可以参阅AM335x芯片的datasheet的介绍!
测试视频:
[media]http://player.youku.com/player.php/sid/XNDY0OTA3OTMy/v.swf[/media]

回复评论 (1)

好大的晶振

点赞  2024-7-2 17:27
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复