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

📄 i2s_codec_ak4642.c

📁 君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图片解码,浏览,电子书,录音,想学ucos,识货的人就下吧 russblock fmradio explore set
💻 C
字号:
#include <regs.h>#include <ops.h>#include <clock.h>#include "AK4642.h"#define u8	unsigned char#define u16	unsigned short#define u32	unsigned int#define AK4642ADDRESS 0x13static void i2s_codec_write(u8 reg, u16 data){	i2c_write(AK4642ADDRESS,&data,reg,1);	}static u16 i2s_codec_read(u8 reg){	u16 data;	i2c_read(AK4642ADDRESS,(u8 *)&data,reg,1);	return data;}void i2s_codec_init(void){	printf("+++i2s_codec_init");	i2s_codec_write(AKM_R01_PM2,AKM_MASTER_MODE);	i2s_codec_write(AKM_R04_MC1,AKM_MCKI_12MHZ | AKM_BCKO_64FS | AKM_FORMAT_I2S);	i2s_codec_write(AKM_R05_MC2,AKM_FS_44100);	i2s_codec_write(AKM_R00_PM1,AKM_VCOM_ON);	i2s_codec_write(AKM_R01_PM2,AKM_MASTER_MODE | AKM_PLL_MODE_ON);		i2s_codec_write(AKM_R0E_MC3,AKM_DVOLC_ON | AKM_BOOST_MIN | AKM_DE_EMPHASIS_OFF);	i2s_codec_write(AKM_R0F_MC4,AKM_IVOLC_ON);			i2s_codec_write(AKM_R0A_LDVC,0xff);	i2s_codec_write(AKM_R0D_RDVC,0xff);	i2s_codec_write(AKM_R09_LIVC,0xff);	i2s_codec_write(AKM_R0C_RIVC,0xff);	printf("---i2s_codec_init");}void i2s_codec_set_volume(u16 v) /* 0 <= v <= 100 */{	v = 0xff - v * 0xff / 100;	i2s_codec_write(AKM_R0A_LDVC,v);	i2s_codec_write(AKM_R0D_RDVC,v);	}u16 i2s_codec_get_volume(void){	u16 v;	v = i2s_codec_read(AKM_R0A_LDVC);	v = (0xff - v) * 100 / 0xff;	return v;}void i2s_codec_set_channel(u16 ch){/*	if(ch == 1)	{		i2s_codec_write(AKM_R02_SS1,0x60);		i2s_codec_write(AKM_R02_SS1,0xe0);	}else	{		i2s_codec_write(AKM_R02_SS1,v);		i2s_codec_write(AKM_R02_SS1,v);	}*/}//------------------------------------------------------------------------------// g_FreqTable: Freq Table for both input and output////	When the AK4642 working under the PLL MASTER MODE and the MCKI is 12MHz,//	the Frequency Sampling controlled by FS3, FS2, FS1 and FS0 of the//	register 05H,//		Addr	D7		D6		D5		D4		D3		D2		D1		D0//		05H		-		-		FS3		-		-		FS2		FS1		FS0	//	And the second parameter is the BIT need to set to register 05H////	{	  0, 0x27 },//	{ 44100, 0x27 },//	{ 48000, 0x23 },//	{ 32000, 0x22 },//	{ 22050, 0x07 },//	{  8000, 0x00 },//	{ 12000, 0x01 },//	{ 16000, 0x02 },//	{ 24000, 0x03 },//	{  7350, 0x04 },//	{ 11025, 0x05 },//	{ 14700, 0x06 },//	{ 29400, 0x26 },void i2s_codec_set_samplerate(u16 rate){	u8 val = 0;	switch (rate) {	case 48000:		val = 0x23;		break;	case 44100:		val = 0x27;		break;	case 32000:		val = 0x22;		break;	case 24000:		val = 0x03;		break;	case 22050:		val = 0x07;		break;	case 16000:		val = 0x02;		break;	case 12000:		val = 0x01;		break;	case 11025:		val = 0x05;		break;	case 7350:		val = 0x04;		break;	case 14700:		val = 0x06;		break;	case 29400:		val = 0x26;		break;	case 8000:		val = 8;		break;			default:		val = 0;		break;	}	i2s_codec_write(AKM_R05_MC2,val);	}

⌨️ 快捷键说明

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