📄 aic23.c
字号:
/******************************************************************************/
/* Copyright 2004 by SEED Electronic Technology LTD. */
/* All rights reserved. SEED Electronic Technology LTD. */
/* Restricted rights to use, duplicate or disclose this code are */
/* granted through contract. */
/* */
/* MODULE NAME... Mcbsp */
/* FILENAME...... comunication.c */
/* DESCRIPTION: */
/* This is an fuction which is just for comunication */
/* */
/* 作者:黄林生 */
/* 版本:1.0 */
/* 日期:06.10.24 */
/******************************************************************************/
#include <csl.h>
#include <csl_mcbsp.h>
#include "CODEC.h"
//short DataBuffer[1024]={0};
#undef CODEC_ADDR
#define CODEC_ADDR 0x1A
/*------------------------------------------------------------------------------------*/
//
// Config CODEC control registers
//
/*------------------------------------------------------------------------------------*/
// 数字音频接口格式设置
// AIC23为主模式,数据为DSP模式,数据长度16位
Uint16 Digital_Audio_Inteface_Format[2]={
Codec_DAIF_REV,
DAIF_MS(1)+DAIF_LRSWAP(0)+DAIF_LRP(1)+DAIF_IWL(0)+DAIF_FOR(3)};
// AIC23的波特率设置,采样率为48k,CLKIN=CLKOUT=MCLK=???12.288MHz
// 时钟模式设为普通模式,基过采样率为250Fs???256fs
Uint16 Sample_Rate_Control[2] = {
Codec_SRC_REV,
SRC_CLKIN(0)+SRC_CLKOUT(0)+SRC_SR(0)+SRC_BOSR(0)+SRC_USB(0)};
// AIC23寄存器复位
Uint16 Reset[2] ={
Codec_RST_REV,
RST_RES};
// AIC23节电方式设置,所有部分均处于工作状态
Uint16 Power_Down_Control[2] ={
Codec_PDC_REV,
PDC_DEFAULT};
// AIC23模拟音频的控制:关掉侧音
// DAC使能,ADC输入选择为音频输入
//将AAPC_INSEL(x)设为0,选择Line输入,注意实验跳线的选择
//将AAPC_INSEL(x)设为1,选择Microphone输入,注意实验跳线的选择
Uint16 Analog_Aduio_Path_Control[2] = {
Codec_AAPC_STA2(0),
AAPC_STA10(0)+AAPC_STE(0)+AAPC_DAC(1)+AAPC_BYP(0)+AAPC_INSEL(0)+AAPC_MICM(0)+AAPC_MICB(0)};
// AIC23数字音频通路的控制
// 使能ADC高通滤波
Uint16 Digital_Audio_Path_Control[2] ={
Codec_DAPC_REV,
DAPC_DACM(0)+DAPC_DEEMP(0)+DAPC_ADCHP(1)};
// AIC23数字接口的使能
Uint16 Digital_Interface_Activation[2] ={
Codec_DIA_REV,
DIA_ACT(1)};
// AIC23左通路音频调节
Uint16 Left_Line_Input_Volume_Control[2] ={
Codec_LLIVC_LPS(1),
LLIVC_LIM(0)+LLIVC_LIV(23)};
// AIC23右通路音频调节
Uint16 Right_Line_Input_Volume_Control[2] = {
Codec_RLIVC_RLS(1),
RLIVC_RIM(0)+RLIVC_RIV(23)};
// AIC23耳机左通路音频调节
Uint16 Left_Headphone_Volume_Control[2] = {
Codec_LHPVC_LRS(1),
LHPVC_LZC(1)+LHPVC_LHV(127)};
// AIC23耳机右通路音频调节
Uint16 Right_Headphone_Volume_Control[2] = {
Codec_RHPVC_RLS(1),
LHPVC_RZC(1)+LHPVC_RHV(127)};
void inti_AIC(unsigned int sample)
{
// Open McBSP port 1 and get a McBSP type handle
/*设置AIC23各部分均工作*/
MyI2C_Write( Power_Down_Control,//pointer to data array
2, //length of data to be transmitted
1, //master or slaver
CODEC_ADDR, //slave address to transmit to
1, //transfer mode of operation
30000 //time out for bus busy
);
/*设置AIC23的数字接口*/
MyI2C_Write( Digital_Audio_Inteface_Format,//pointer to data array
2, //length of data to be transmitted
1, //master or slaver
CODEC_ADDR, //slave address to transmit to
1, //transfer mode of operation
30000 //time out for bus busy
);
/*设置AIC23模拟通路*/
MyI2C_Write( Analog_Aduio_Path_Control,//pointer to data array
2, //length of data to be transmitted
1, //master or slaver
CODEC_ADDR, //slave address to transmit to
1, //transfer mode of operation
30000 //time out for bus busy
);
/*设置数字通路*/
MyI2C_Write( Digital_Audio_Path_Control,//pointer to data array
2, //length of data to be transmitted
1, //master or slaver
CODEC_ADDR, //slave address to transmit to
1, //transfer mode of operation
30000 //time out for bus busy
);
/*设置AIC23的采样率*/
MyI2C_WriteAD( Sample_Rate_Control,//pointer to data array
sample,
2, //length of data to be transmitted
1, //master or slaver
CODEC_ADDR, //slave address to transmit to
1, //transfer mode of operation
30000 //time out for bus busy
);
/*设置耳机音量*/
MyI2C_Write( Left_Headphone_Volume_Control,//pointer to data array
2, //length of data to be transmitted
1, //master or slaver
CODEC_ADDR, //slave address to transmit to
1, //transfer mode of operation
30000 //time out for bus busy
);
/*设置Line输入的音量*/
MyI2C_Write( Left_Line_Input_Volume_Control,//pointer to data array
2, //length of data to be transmitted
1, //master or slaver
CODEC_ADDR, //slave address to transmit to
1, //transfer mode of operation
30000 //time out for bus busy
);
/*启动AIC23*/
MyI2C_Write( Digital_Interface_Activation,//pointer to data array
2, //length of data to be transmitted
1, //master or slaver
CODEC_ADDR, //slave address to transmit to
1, //transfer mode of operation
30000 //time out for bus busy
);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -