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

📄 uda1380.c

📁 LPC1788的USBHOST的FATFS移植
💻 C
字号:
#include <stdint.h>
#include "lpc177x_8x_i2c.h"
#include "debug_frmwrk.h"
#include "UDA1380.h"

#define UDA1380_I2C		I2C_0

I2C_M_SETUP_Type i2cData;

uint8_t i2c_tx_Buf[128];
uint8_t i2c_rx_Buf[128];

/* 初始化UDA1380 */
int  UDA1380_Init(void)
{  
	// Config Pin for I2C_SDA and I2C_SCL of I2C0
	PINSEL_ConfigPin (0, 27, 1);
	PINSEL_ConfigPin (0, 28, 1);
	
	I2C_Init(UDA1380_I2C, 100000);

	/* Enable I2C0 operation */
	I2C_Cmd(UDA1380_I2C, ENABLE);

	i2cData.sl_addr7bit = UDA1380_I2CADDR >> 1;
	i2cData.tx_data = i2c_tx_Buf;
//	i2cData.tx_length = 0;
	i2cData.rx_data = i2c_rx_Buf;
	i2cData.rx_length = 0;
	i2cData.retransmissions_max = 3;

	UDA1380_Reset();

	/*
	* Setup default values for the system settings 
	*/
	
	/* evaluation modes and clock settings */
	i2c_tx_Buf[0] = UDA1380_REG_CLOCKS;
	i2c_tx_Buf[1] = 0x0F; /* EN_DEC, EN_INT */
	i2c_tx_Buf[2] = 0x08; //0x02; /* PLL1 */
	
	/* I2S input and output settings */
	i2c_tx_Buf[3] = 0x00;
	i2c_tx_Buf[4] = 0x00;//0x10;
	
	/* power control */
	i2c_tx_Buf[5] = 0xA5;
	i2c_tx_Buf[6] = 0xDF;
	
	/* analog mixer settings */
	i2c_tx_Buf[7]  = 0x22;  /* left most volume attenuation */
	i2c_tx_Buf[8]  = 0x22;  /* right most volume attenuation */
	
	i2cData.tx_length = 9;

	if (I2C_MasterTransferData(UDA1380_I2C, &i2cData, I2C_TRANSFER_POLLING) == SUCCESS)
	{
		_DBG("Init UDA1380 registers step 1 OK!\n\r");
	}
	else
	{
		_DBG("Init UDA1380 registers  step 1 Failed!\n\r");
	}
	
	/*
	* Interpolation filter
	*/
	
	/* master volume control */
	i2c_tx_Buf[0] = UDA1380_REG_MASTER_VOL;
	i2c_tx_Buf[1] = 0x40; /* right channel volume attenuation */
	i2c_tx_Buf[2] = 0x40; /* left channel volume attenuation */
	
	/* mixer volume control */
	i2c_tx_Buf[3]  = 0x00;//0xff;	/* channel 2 volume attenuation */
	i2c_tx_Buf[4]  = 0x00;	/* channel 1 volume attenuation */
	
	/* mode selection */
	i2c_tx_Buf[5]  = 0x00;
	i2c_tx_Buf[6]  = 0x00;
	
	/* master mute */
	i2c_tx_Buf[7]  = 0x00;
	i2c_tx_Buf[8]  = 0x00;
	
	i2c_tx_Buf[9]  = 0x10;
	i2c_tx_Buf[10]  = 0x00;
	
	i2cData.tx_length = 11;

	if (I2C_MasterTransferData(UDA1380_I2C, &i2cData, I2C_TRANSFER_POLLING) == SUCCESS)
	{
		_DBG("Init UDA1380 registers step 2 OK!\n\r");
	}
	else
	{
		_DBG("Init UDA1380 registers  step 2 Failed!\n\r");
	}
	
	/*
	* Decimator
	*/
	
	/* decimator volume control */
	i2c_tx_Buf[0]  = UDA1380_REG_DEC_VOL;
	i2c_tx_Buf[1]  = 0x00; /* ADC volume control left */
	i2c_tx_Buf[2]  = 0x00; /* ADC volume control rigth */
	
	/* PGA settings and mute */
	i2c_tx_Buf[3]  = 0x00;
	i2c_tx_Buf[4]  = 0x00;
	
	/* ADC settings */
	i2c_tx_Buf[5]  = 0x00;
	i2c_tx_Buf[6]  = 0x0f;
	
	/* AGC settings */
	i2c_tx_Buf[7]  = 0x00;
	i2c_tx_Buf[8]  = 0x00;
	
	i2cData.tx_length = 9;
	if (I2C_MasterTransferData(UDA1380_I2C, &i2cData, I2C_TRANSFER_POLLING) == SUCCESS)
	{
		_DBG("Init UDA1380 registers step 3 OK!\n\r");
	}
	else
	{
		_DBG("Init UDA1380 registers  step 3 Failed!\n\r");
	}
}

void UDA1380_Reset(void)
{
	i2c_tx_Buf[0] = UDA1380_REG_RESET;
	i2c_tx_Buf[1] = 0xff;
	i2c_tx_Buf[2] = 0xff;

	i2cData.tx_length = 3;
	
	if (I2C_MasterTransferData(UDA1380_I2C, &i2cData, I2C_TRANSFER_POLLING) == SUCCESS)
	{
		_DBG("UDA1380 Soft Reset OK!\n\r");
	}
	else
	{
		_DBG("UDA1380 Soft Reset Failed!\n\r");
	}
}


/*********************************************************************************************************
  End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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