TI中文支持网
TI专业的中文技术问题搜集分享网站

C6748做主提供codec时钟,MCASP边沿触发应该怎么设置?

ti的工程师:
我们公司一个音频的项目,基本架构是c6748加AIC3106。后来换了一个codec,这个codec是cs4272是一个24bit的codec,前一段时间问了芯片原厂,原厂建议暂时用16bit进行数据传输。我配置codec'后基本的数据结构如下图。16bit ,i2s格式,左对齐,没有延时位。

 帧时钟上升沿触发,位时钟也是上升沿触发,没有延时位,只进行单通道放音时我用逻辑分析仪抓了图。可以看出抓的数据和手册描述一致,且只有一个声道有数据。

DSP的配置,DSP做主。接收帧R是上升沿触发,位时钟上升沿触发。发送帧X是下降沿触发,位时钟下降沿触发。

//接收端	
	// 初始化帧同步,TDM 格式使用 slot 个数,对齐帧同步信号的上升沿  0428 修改为mcasp内部驱动
	McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, slotNum, MCASP_RX_FS_WIDTH_WORD,
						MCASP_RX_FS_INT_BEGIN_ON_RIS_EDGE);

	// 初始化接收时钟,使用内部时钟,时钟上升沿有效 0528 48kHz
	McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_INTERNAL, 7, 1);
	McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
	McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,0x00, 0xFF);
......
......
//发送端McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, slotNum, MCASP_TX_FS_WIDTH_WORD,MCASP_TX_FS_INT_BEGIN_ON_FALL_EDGE);

	// 初始化发送时钟,使用内部时钟,时钟下降沿有效  0528
	McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 7, 1);
	McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
	McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0x00, 0xFF);

但是经过DMA接收的数据明显不对,应该是0xXXXX  0x0000这样才对,用扬声器播放出来的都是杂音。我第一感觉是哪里没有对齐导致数据全部错了。


我换成原来的AIC3106做了对比,这里接收的数据是0xXXXX  0x0000格式,播放和录音也正常了。

现在两个codec的配置不同的地方如下:之前是3106做主,DSP做从。现在的配置DSP做主帧时钟、位时钟、都是DSP发到codec的,其他的格式我按照手册都对了,asp的接收发送的边沿触发也换了好几次都不对,请问一下还有哪里需要注意的。

taoyu:

我在补充一点,这次使用的codec是cs4272,论坛里有朋友用过这款codec吗。

Shine:

回复 taoyu:

同帖e2echina.ti.com/…/447216

赞(0)
未经允许不得转载:TI中文支持网 » C6748做主提供codec时钟,MCASP边沿触发应该怎么设置?
分享到: 更多 (0)