📄 codec.c
字号:
//TDS6713EVM_AIC23_CEDEC.C -CODEC appled functions
#include <csl.h>
#include <csl_i2c.h>
#include <csl_mcasp.h>
#include <TDS6713EVM.h>
#include <codec.h>
//Configure MCASP
MCASP_ConfigGbl MyMCASPcfgGbl = {
0x00000000, // PFUNC - All pins as McASP
0x00000080, // PDIR - XMT DATA output, rest are inputs
0x00000000, // DITCTL - DIT mode disable
0x00000000, // DLBCTL - Loopback disabled
0x00000000 // AMUTE - Never drive AMUTE
};
//Set receive registers.
MCASP_ConfigRcv MyMCASPcfgRcv = {
0xffffffff, // RMASK - Use all 32 bits
0x000180f8, // RFMT - MSB first, 32-bit slots, cfg, 16word ,1 bit delay
0x00000111, // AFSRCTL - 0x0: burst, single bit frame sync, ext FS
0x00000000, // ACLKRCTL - Sample on rising CLK, divide by 1, ext CLK
0x00000000, // AHCLKRCTL - External HCLK
0x00000003, // RTDM - Slots 0-31 are active
0x00000000, // RINTCTL - No interrupts
0x00000000 // RCLKCHK - Not used
};
//Set serial control.
MCASP_ConfigSrctl MyMCASPcfgSrctl = {
0x00000000, // SRCTL0 - Inactive
0x00000000, // SRCTL1 - Inactive
0x00000000, // SRCTL2 - Inactive
0x00000000, // SRCTL3 - Inactive
0x00000000, // SRCTL4 - Inactive
0x00000000, // SRCTL5 - Inactive
0x0000000E, // SRCTL6 - Receive, active high
0x0000000d // SRCTL7 - Transmit, active high
};
//Set transmit registers.
MCASP_ConfigXmt MyMCASPcfgXmt = {
0xffffffff, // XMASK - Use all 32 bits 0xffffffff
0x000180f8, // XFMT - MSB first, 32-bit slots, 16word, 1 bit delay ,cfg#########ok
0x00000111, // AFSXCTL - 2 slot, single word frame sync, ext FS ########ok
0x000000C0, // ACLKXCTL - Sample on falling CLK, divide by 1, ext CLK #########ok
0x00000000, // AHCLKXCTL - External HCLK ###########OK
0x00000003, // XTDM - Slots 0-31 are active0x00000001
0x00000000, // XINTCTL - No interrupts
0x00000000 // XCLKCHK - Not used
};
MCASP_Config MyMCASPConfig = {
&MyMCASPcfgGbl,
&MyMCASPcfgRcv,
&MyMCASPcfgXmt,
&MyMCASPcfgSrctl,
};
MCASP_Handle TDS6713EVM_AIC23_OpenCodec()
{
MCASP_Handle TDS6713EVM_AIC23_DATAHANDLE;
Uint32 gblctl;
// Uint32 RegAddr;
// MCASP_Handle TDS6713EVME_AIC23_DATAHANDLE
TDS6713EVM_AIC23_DATAHANDLE = MCASP_open(MCASP_DEV0,MCASP_OPEN_RESET);
// Reset MCASP to default values by setting GBLCTL = 0
MCASP_reset(TDS6713EVM_AIC23_DATAHANDLE);
while(MCASP_getGblctl(TDS6713EVM_AIC23_DATAHANDLE,MCASP_XMTRCV)!=0x0);
MCASP_config(TDS6713EVM_AIC23_DATAHANDLE,&MyMCASPConfig);
// Clear transmit and receive status ,清除发送与接收状态
MCASP_RSETH(TDS6713EVM_AIC23_DATAHANDLE,XSTAT,0xFFFF);
MCASP_RSETH(TDS6713EVM_AIC23_DATAHANDLE,RSTAT,0xFFFF);
gblctl = 0;
MCASP_RSETH(TDS6713EVM_AIC23_DATAHANDLE, GBLCTL, gblctl);
while(MCASP_getGblctl(TDS6713EVM_AIC23_DATAHANDLE,MCASP_XMTRCV)!=0x0);
gblctl = 0x404;
//使能发送与接收的串行寄存器
MCASP_RSETH(TDS6713EVM_AIC23_DATAHANDLE, GBLCTL, 0x404);
while(MCASP_getGblctl(TDS6713EVM_AIC23_DATAHANDLE,MCASP_XMTRCV)!=0x404);
// Enable transmit/receive state machines
MCASP_RSETH(TDS6713EVM_AIC23_DATAHANDLE, XBUF7, 0);
gblctl = 0x0c0c;
MCASP_RSETH(TDS6713EVM_AIC23_DATAHANDLE, GBLCTL, gblctl);
while(MCASP_getGblctl(TDS6713EVM_AIC23_DATAHANDLE,MCASP_XMTRCV)!=0x0c0c);
gblctl = 0x1c1c;
MCASP_RSETH(TDS6713EVM_AIC23_DATAHANDLE, GBLCTL, gblctl);
while(MCASP_getGblctl(TDS6713EVM_AIC23_DATAHANDLE,MCASP_XMTRCV)!=0x1c1c);
return(TDS6713EVM_AIC23_DATAHANDLE);
}
void TDS6713EVM_AIC23_CloseCodec(MCASP_Handle HMcASP)
{
MCASP_close(HMcASP);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -