This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM8148:mcasp1的AHCLKXCTL和ACLKXCTL不能分频。请大神指点



mcasp做主。R支路和X支路寄存器设置的差不多,都是PDIR设输出,及AHCLKXCTL和AHCLKRCTL的BIT(15)。ACLKXCTL和ACLKRCTL设BIT(5)。然后设置分频的位数。但是X的没有效果,R支路的可以控制分频倍数。

/*************set output*********************/

mcasp_set_bits(base + DAVINCI_MCASP_PDIR_REG, AFSR);

mcasp_set_bits(base + DAVINCI_MCASP_PDIR_REG, ACLKR);

mcasp_set_bits(base + DAVINCI_MCASP_PDIR_REG, AHCLKR);

mcasp_set_bits(base + DAVINCI_MCASP_PDIR_REG, ACLKX);

mcasp_set_bits(base + DAVINCI_MCASP_PDIR_REG, AFSX);

mcasp_set_bits(base + DAVINCI_MCASP_PDIR_REG, AHCLKX);

*********************************************/

mcasp_set_bits(dev->base + DAVINCI_MCASP_AHCLKRCTL_REG,AHCLKRE|0x7);

//set output and divide eight

mcasp_set_bits(dev->base + DAVINCI_MCASP_AHCLKXCTL_REG,AHCLKXE|0x7);

/set output and divide eight

mcasp_set_bits(dev->base + DAVINCI_MCASP_ACLKXCTL_REG,0x5);//divide six

mcasp_set_bits(dev->base + DAVINCI_MCASP_ACLKRCTL_REG,0x2);//divide three

小弟是个新手,愿得到大神们的指点。

  • 建议在CCS上验证一下,可以在CCS连接成功之后,使用GEL的脚本,来初始化一下MCASP对应的寄存器。下面是EVM的GEL文件,需要做一些修改。

     

  • 需要用到什么型号的仿真器啊?

  • 需要用到什么型号的仿真器啊?

  • 翔哥,能说的具体点吗。我这没有具体的工程。而且GEL文件改什么地方,怎么改 啊

  • 你不是代码都贴出来了吗。 GEL里面也是类似这样的写法。你也可以照着寄存器的地址去反向搜代码

  • 下面是一个mcasp2的例子,你可以将你的配置集成到脚本当中:

    PLL_SETUP()
    {
        //pll_name (CLKINP,N , M, M2);
        cmdMPUPLL(CLKIN,1, 60 ,1);
        cmdL3PLL(CLKIN,19,800,4);
        cmdDSPPLL(CLKIN,19, 500, 1);
        cmdDSSPLL(CLKIN,19, 800, 4);
        cmdISSPLL(CLKIN,19, 800 ,4);
        cmdIVAPLL(CLKIN,19, 532, 2);
        cmdSGXPLL(CLKIN,19, 800, 4);
        cmdUSBPLL(CLKIN,19,960,5);
        cmdVIDEO0PLL(CLKIN,19, 1000,4);
        cmdVIDEO1PLL(CLKIN,19, 594,4);
        cmdHDMIPLL(CLKIN,19, 1485,10);

        cmdDDRPLL(CLKIN,19,DDR_FREQ, 2);

        cmdAUDIOPLL(CLKIN,19,800,4);

        cmdSATAPLL();

        //cmdPCIEPLL();
        GEL_TextOut("exiting pll setup \n\r");
    }

     


    #define MCASP2PDIR 0x48050014
    #define MCASP2FUN 0x48050010
    #define McASP_AHCLK_CLKSRC 0x481c52d4
    #define CM_AUDIOCLK_MCASP1_CLKSEL 0x48180384
    hotmenu DM814X_InitMcasp2()
    {
     UWORD32 value;
     GEL_TextOut("\tDM814X_InitMcasp2 Pin Mux initialing \n","Output",1,1,1);
     WR_MEM_32(PINCNTL16, 0x4);
     WR_MEM_32(PINCNTL39, 0x1);
     WR_MEM_32(PINCNTL40, 0x1);
     WR_MEM_32(PINCNTL41, 0x1);
     WR_MEM_32(CM_ALWON_MCA_2_CLKSTCTRL,    0x2); /*Enable MCASP2 Clock*/
     while(RD_MEM_32(CM_ALWON_MCA_2_CLKSTCTRL)!=0x2);  /*Poll for Module is functional*/
     GEL_TextOut("\tDM814X_Enable Mcasp2 \n","Output",1,1,1);

     value = RD_MEM_32(MCASP2PDIR);
     value = value | (1<<26)| (1<<27)| (1<<28);
     WR_MEM_32(MCASP2PDIR, value);

     WR_MEM_32(MCASP2FUN, 0);

     WR_MEM_32(McASP_AHCLK_CLKSRC, (3<<16));
     WR_MEM_32(CM_AUDIOCLK_MCASP1_CLKSEL,0);// select sysclk20/audio_pll as clk

    }