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
小弟是个新手,愿得到大神们的指点。
Louis:
建议在CCS上验证一下,可以在CCS连接成功之后,使用GEL的脚本,来初始化一下MCASP对应的寄存器。下面是EVM的GEL文件,需要做一些修改。
qiu lutong:
回复 Louis:
需要用到什么型号的仿真器啊?
qiu lutong:
回复 Louis:
需要用到什么型号的仿真器啊?
Louis:
回复 qiu lutong:
XDS560 V2
qiu lutong:
回复 Louis:
翔哥,能说的具体点吗。我这没有具体的工程。而且GEL文件改什么地方,怎么改 啊
Eason Wang:
回复 qiu lutong:
你不是代码都贴出来了吗。 GEL里面也是类似这样的写法。你也可以照着寄存器的地址去反向搜代码
Louis:
回复 Eason Wang:
下面是一个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 0x48180384hotmenu 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
}