好像当初设置的时候哪里有点问题,原来计算量小的时候两边都没问题,奇怪的是计算量变大后虽然能发出声音不失真,但接收不到声音了,按理说不是同步的吗?
主程序写入读取部分如下:
while ((MCASP_RGETH(QXDdm642codec,SRCTL4) & 0x10) == 0);
MCASP_RSETH(QXDdm642codec,XBUF4,codecdata);
while ((MCASP_RGETH(QXDdm642codec,SRCTL5) & 0x20) == 0);
ee=MCASP_RGETH(QXDdm642codec,RBUF5);
ee每一个循环都处理后赋在一个数组里,能存20个数,几乎全是0,偶尔有数。
mcasp设置如下:
MCASP_ConfigGbl mcaspCfgDataGbl = {
0x00000000, /* PFUNC - All pins as McASP ,所有的管脚均为McAPS功能*/
0x00000010, /* PDIR - 0,2,4,6为input,1,3,5,7为XMT DATA output, 其它的为输入 试试可以是10吗*/
0x00000000, /* DITCTL - DIT mode disable */
0x00000000, /* DLBCTL - Loopback disabled */
0x00000000 /* AMUTE - Never drive AMUTE */
};
MCASP_ConfigRcv mcaspCfgDataRcv = {
0xffffffff, /* RMASK - Use all 32 bits,左声道与右声道各16位 */
0x000080f8, /* RFMT - MSB first, 32-bit slots,0-pad,CPU bus, 0 bit delay,数据格式 */
0x00000100, /* AFSRCTL - tdm 2 slots, single bit frame sync, ext FS 帧同步的格式*/
0x00000080, /* ACLKRCTL - Sample on rising CLK, divide by 1, ext CLK */
0x00000000, /* AHCLKRCTL - External HCLK */
0x0000000f, /* RTDM - Slots 0123 are active r:这里存疑 2*/
0x00000000, /* RINTCTL - No interrupts */
0x00000000 /* RCLKCHK - Not used */
};
MCASP_ConfigXmt mcaspCfgDataXmt = {
0xffffffff, /* XMASK - Use all 32 bits 全f 试试改成6个f的24bit?*/
0x000080f8, /* XFMT - MSB first, 32-bit slots, CPU bus, 0 bit delay */
0x00000100, /* AFSXCTL - tdm 2 slots, single bit frame sync, ext FS */
0x00000080, /* ACLKXCTL - Sample on falling CLK, divide by 1, ext CLK ,发送与接收同步 80*/
0x00000000, /* AHCLKXCTL - External HCLK 0*/
0x00000005, /* XTDM - 0 2 enable 5*/
0x00000000, /* XINTCTL - No interrupts 0*/
0x00000000 /* XCLKCHK - Not used 0*/
};
MCASP_ConfigSrctl mcaspCfgDataSrctl = {
0x00000000, /* SRCTL0 - Receive, active high */
0x00000000, /* SRCTL1 - Transmit, active high*/
0x00000000, /* SRCTL2 - Receive, active high */
0x00000000, /* SRCTL3 - Transmit, active high */
0x00000005, /* SRCTL4 - Receive, active high * 可以试试d*/
0x00000006, /* SRCTL5 - Transmit, active high*/
0x00000000, /* SRCTL6 - Receive, active high */
0x00000000 /* SRCTL7 - Transmit, active high */
};
感觉不知道是不是rtdm/xtdm设置出问题了,这部分看了半天资料还是不太清楚该怎么设。
aic23是dsp format:
0x0043, /* Set-Up Reg 7 Digital audio interface format */ \
/* XX 00 reserved */ \
/* MS 1 master/slave mode: master */ \
/* LRSWAP 0 DAC left/right swap: disabled */ \
/* LRP 0 DAC lrp: MSB on 1st BCLK */ \
/* IWL 00 input bit length: 16 bit */ \
/* FOR 11 data format: DSP format */
求解....