📄 setad73311.c
字号:
/*********************************************************************/
// 设置AD73311
//
/*********************************************************************/
#include "VoiceProcess.h"
void SET_AD73311(); //总调用
static void se_ad73311_1(void); //选择串口1对应的AD73311
static void reset_ad73311_1(void); //复位串口1对应的AD73311
static void setreg_ad73311_1(void); //设置串口1对应的AD73311寄存器
/******************************************************************************/
/***************************************************************************/
// 总调用
void SET_AD73311(void)
{
reset_ad73311_1(); //复位串口1对应的AD73311
se_ad73311_1(); //选择串口1对应的AD73311
setreg_ad73311_1(); //设置串口1对应的AD73311寄存器
}
/***********************************************************************/
// 第一通道初始化
static void se_ad73311_1(void)
{
GPIO_pinWrite(GPIO_PIN0,1); //选择串口1对应的AD73311
}
static void reset_ad73311_1(void)
{
Uint32 i=0;
GPIO_pinWrite(GPIO_PIN3,0); //复位串口1对应的AD73311
for(i=0;i<500000;i++);
GPIO_pinWrite(GPIO_PIN3,1);
}
static void setreg_ad73311_1(void)
{
/*设置AD73311控制寄存器 ,16位寄存器格式如下:
// 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
// - - ------- ----- -----------------
// | | | | Register data
// | | | +--Register address
// | | +--device address
// | +-- R/(/W)
// +--C/(/D)
*/
while (!MCBSP_xrdy(hMcbsp1));
MCBSP_write16(hMcbsp1, 0X8132); //设置B寄存器
/* ||
//该位置的HEX数值 |+--0 1 2 3
//对应的采样率 | DMCLK/2048 DMCLK/1024 DMCLK/512 DMCLK/256
//该位置的HEX数值 +--0 1 2 3 4 5 6 7
//对应的DMCLK数值 MCLK MCLK/2 MCLK/3 MCLK/4 MCLK/5 MCLK
//MCLK为AD73311的输入时钟16.384MHz */
while (!MCBSP_xrdy(hMcbsp1));
MCBSP_write16(hMcbsp1, 0X8279); //设置C寄存器
while (!MCBSP_xrdy(hMcbsp1));
MCBSP_write16(hMcbsp1, 0x8301); //设置D寄存器
/* MCBSP_write16(hMcbsp1, 0X8300); //设置D寄存器
// ||
//该位置的HEX数值 |+--0 1 2 3 4 5 6 7
//该位置对应的输入增益(db) | 0 6 12 18 20 26 32 38 |
//该位置的HEX数值 |+--0 1 2 3 4 5 6 7
//该位置对应的输出增益(db) 6 3 0 -3 -6 -9 -12 -15
//
*/
while (!MCBSP_xrdy(hMcbsp1));
MCBSP_write16(hMcbsp1, 0X8400); //设置E寄存器
while (!MCBSP_xrdy(hMcbsp1));
MCBSP_write16(hMcbsp1, 0X8520); //设置F寄存器
/* |
// +--0 0 0 0
//该位置的比特值 | |
// | +--0 1
//对应的结果 | 双端输入 单端输入
//该位置的比特值 +--0 1
//对应的结果 正端输入 负端输入
*/
while (!MCBSP_xrdy(hMcbsp1));
MCBSP_write16(hMcbsp1, 0X8001);//设置A寄存器
//注意:必须最后才能初始化寄存器A,这是因为
//最低位置1后,语音芯片将过渡到数据模式
}
///////////////////////////// END /////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -