📄 mw_c67xx_bsl.c
字号:
#include <stdio.h>
#include <std.h>
#include <csl.h>
#include <csl_edma.h>
#include <csl_mcbsp.h>
#include <csl_irq.h>
#include "MW_c67xx_bsl.h"
/* Function: turnOn_LED() ------------------------------------
*
* Abstract:
* This function turns on all LEDs
*/
void turnOn_LED()
{
LED_REG = 0x0;
}
/* Function: c67xxboard_init ---------------------------------
*
* Abstract:
* Initialize the board
*/
void c67xxboard_init()
{
initDMABuffers();
config_McBSP();
config_codec();
}
/* 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: 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);
}
/* 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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -