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

📄 mw_c67xx_bsl.c

📁 These files are made on MATLAB in which we have got embedded target for C in DSP.
💻 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 + -