📄 aic23.c
字号:
#include <aic23.h>
#include <csl_i2c.h>
extern void sI2c_init(CSL_I2cHandle* shI2c);
extern void I2C_init(CSL_I2cHandle hI2c);
extern Uint16 OSK5912_I2C_write(CSL_I2cHandle hI2c,Uint16 slave_addr,Uint8* data,Uint16 length);
extern Uint16 OSK5912_I2C_read(CSL_I2cHandle hI2c,Uint16 slave_addr,Uint8* data,Uint16 length);
void OSK5912_AIC23_rset(CSL_I2cHandle hI2c, Uint16 regnum, Uint16 regval );
void OSK5912_AIC23_config(CSL_I2cHandle hI2c, OSK5912_AIC23_Config *Config );
void OSK5912_AIC23_openCodec( Uint32 id, OSK5912_AIC23_Config *Config )
{
CSL_I2cHandle hI2c;
sI2c_init(&hI2c);
I2C_init(hI2c);
/* Reset the AIC23 */
OSK5912_AIC23_rset(hI2c, OSK5912_AIC23_RESET, 0 );
/* Configure the rest of the AIC23 registers */
OSK5912_AIC23_config( 0, Config );
CSL_i2cClose(hI2c);
/* Return 0 as a handle */
return ;
}
void OSK5912_AIC23_rset(CSL_I2cHandle hI2c, Uint16 regnum, Uint16 regval )
{
Uint16 buf = ( ( regval & 0x00FF ) << 8 ) | ( regnum << 1 ) | ( regval >> 8 );
OSK5912_I2C_write(hI2c, OSK5912_AIC23_I2CADDR, ( Uint8* )&buf, 2 );
//codecstate.regs[regnum] = regval;
}
void OSK5912_AIC23_config(CSL_I2cHandle hI2c, OSK5912_AIC23_Config *Config )
{
int i;
/* Use default parameters if none are given */
//if ( Config == NULL )
//Config = &codecstate;
/* Configure power down register first */
OSK5912_AIC23_rset(hI2c, OSK5912_AIC23_POWERDOWN,Config -> regs[OSK5912_AIC23_POWERDOWN] );
/* Assign each register */
for ( i = 0; i < OSK5912_AIC23_NUMREGS; i++ )
if ( i != OSK5912_AIC23_POWERDOWN )
OSK5912_AIC23_rset(hI2c,i, Config -> regs[i] );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -