⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mw_c6xxx_bsl.c

📁 用离散小波变换实现语音去噪
💻 C
字号:
#include <std.h>
#include <csl.h>
#include <csl_edma.h>
#include <csl_mcbsp.h>
#include <csl_irq.h>
#include "MW_c6xxx_bsl.h"
#include "dwtdenoisingcfg.h"

/* Function: Read_Codec_Control ----------------------------------------
 *
 * Abstract:
 *      This function reads Control Word from Codec
 */
unsigned int Read_Codec_Control(unsigned int Register)
{
  unsigned int Register_temp = 0;
  Register_temp = ( ((Register & 0x001F) << 8) | 0x2000);
  mcbsp0_write(0);
  mcbsp0_read ( );
  mcbsp0_write(1);
  mcbsp0_read ( );
  mcbsp0_write(Register_temp);
  Register_temp = mcbsp0_read ( );
  mcbsp0_write(0);
  mcbsp0_read ( );
  return Register_temp;
}

/* Function: Write_Codec_Control ---------------------------------------
 *
 * Abstract:
 *      This function writes Control Word from Codec
 */
void Write_Codec_Control(unsigned int Register, unsigned int Data)
{
  unsigned int Register_temp = 0;
  Register_temp = ( (Register & 0x001F) << 8) | (Data & 0x00ff);
  mcbsp0_write(0);
  mcbsp0_read ( );
  mcbsp0_write(1);
  mcbsp0_read ( );
  mcbsp0_write(Register_temp);
  mcbsp0_read ( );
  mcbsp0_write(0);
  mcbsp0_read ( );
}

/* Function: codec_error -----------------------------------------------
 *
 * Abstract:
 *      This function traps Codec Errors
 */
void codec_error (int id)
{
  /* Codec Initialization Error - Exit and Reset DSK */
  //for (;;);						/* loop forever */
}

/* Function: config_codec ----------------------------------------------
 *
 * Abstract:
 *      This function initally configures the codec
 */
void config_codec(void)
{
  unsigned int temp_variable;

  /* Performs Voice Channel Initialisation of TLC320AD535 Codec	*/
  /* AD535 has 2 serial port channels - Data, Voice				*/
  /* Data  Channel Controlled by Registers 1,2	(Reg 0 = NOP)	*/
  /* Voice Channel Controlled by Registers 3,4,5,6				*/
  /* Only Voice channel used on DSK 6211							*/

  /* Set-Up Register 0 (NOP) - Dummy Read/Write Codec */
  Write_Codec_Control(0, 0);
  temp_variable = Read_Codec_Control(0);

  /* Set-Up Register 1 / 2   - Only Used by Data Serial Port -NA	*/

  /* Set-Up Register 3       - S/W Reset + Power Down + No loop / gain=0dB */
  Write_Codec_Control(3, 0x00C6);      // + With    Reset
  Write_Codec_Control(3, 0x0006);      // + Without Reset
  temp_variable = Read_Codec_Control(3);
  if ((temp_variable & 0x00ff) != 0x0006)
    codec_error(3);

  /* Set-Up Register 4       - Voice ADC gain = 0dB */
  Write_Codec_Control(4, 0x0040);
  temp_variable = Read_Codec_Control(4);
  if ((temp_variable & 0x00ff) != 0x0040)
    codec_error(4);

  /* Set-Up Register 5       - Spkr L/R gain = 0dB */
  Write_Codec_Control(5, 0x0002);
  temp_variable = Read_Codec_Control(5);
  if ((temp_variable & 0x00fe) != 0x0002)
    codec_error(5);

  /* Set-Up Register 6       - Handset gain  = 0dB */
  Write_Codec_Control(6, 0x0000);
  temp_variable = Read_Codec_Control(6);
  if ((temp_variable & 0x0080) != 0x0000)
    codec_error(6);

  /* Set-Up Register - (NOP)		*/
  Write_Codec_Control(0, 0);
  temp_variable = Read_Codec_Control(0);
}

/* Function: codec_init ---------------------------------
 *
 * Abstract:
 *      Initialize the codec
 */
void codec_init()
{
  initDMABuffers();
  config_McBSP();
  config_codec();
}

/* Function: config_codec_output ---------------------------------------
 *      This function configures the codec output characteristics
 *      based on model characteristics
 */
void config_codec_output(void)
{
  unsigned int temp_variable;

  /* Set-Up Register 5 - Spkr L/R gain */
  Write_Codec_Control(5, 0x0000 | CODEC_SPK_ON | CODEC_DAC_ATTN);
  temp_variable = Read_Codec_Control(5);
  if ((temp_variable & 0x00fe) != (0x0000 | CODEC_SPK_ON | CODEC_DAC_ATTN) )
    codec_error(5);
}

/* Function: config_codec_input ----------------------------------------
 *      This function configures the codec input characteristics
 *      based on model characteristics
 */
void config_codec_input(void)
{
  unsigned int temp_variable;

  /* Set-Up Register 4 */
  Write_Codec_Control(4, 0x0000 | CODEC_MIC_GAIN_OFF | CODEC_ADC_GAIN);
  temp_variable = Read_Codec_Control(4);
  if ((temp_variable & 0x00ff) != (0x0000 | CODEC_MIC_GAIN_OFF | CODEC_ADC_GAIN)
      )
    codec_error(4);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -