// I2C configuration static void codec_init() { //uint32_t delaycount; uint8_t CodecCommandBuffer[5]; uint8_t regValue = 0xFF; GPIO_SetBits(CODEC_RESET_PORT, CODEC_RESET_PIN); //delaycount = 10000000; //while (delaycount > 0) //{ // delaycount--; //} PreenFM2_uDelay(100); //keep codec OFF CodecCommandBuffer[0] = CODEC_MAP_PLAYBACK_CTRL1; CodecCommandBuffer[1] = 0x01; send_codec_ctrl(CodecCommandBuffer, 2); //begin initialization sequence (p. 32) CodecCommandBuffer[0] = 0x00; CodecCommandBuffer[1] = 0x99; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x47; CodecCommandBuffer[1] = 0x80; send_codec_ctrl(CodecCommandBuffer, 2); regValue = read_codec_register(0x32); CodecCommandBuffer[0] = 0x32; CodecCommandBuffer[1] = regValue | 0x80; send_codec_ctrl(CodecCommandBuffer, 2); regValue = read_codec_register(0x32); CodecCommandBuffer[0] = 0x32; CodecCommandBuffer[1] = regValue & (~0x80); send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x00; CodecCommandBuffer[1] = 0x00; send_codec_ctrl(CodecCommandBuffer, 2); //end of initialization sequence CodecCommandBuffer[0] = CODEC_MAP_PWR_CTRL2; CodecCommandBuffer[1] = 0xAF; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = CODEC_MAP_PLAYBACK_CTRL1; CodecCommandBuffer[1] = 0x70; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = CODEC_MAP_CLK_CTRL; CodecCommandBuffer[1] = 0x80; //0x81; //auto detect clock send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = CODEC_MAP_IF_CTRL1; CodecCommandBuffer[1] = 0x05; //24bit send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x0A; CodecCommandBuffer[1] = 0x00; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x27; CodecCommandBuffer[1] = 0x00; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x1A | CODEC_MAPBYTE_INC; CodecCommandBuffer[1] = 0x0A; CodecCommandBuffer[2] = 0x0A; send_codec_ctrl(CodecCommandBuffer, 3); CodecCommandBuffer[0] = 0x1F; CodecCommandBuffer[1] = 0x0F; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = CODEC_MAP_PWR_CTRL1; CodecCommandBuffer[1] = 0x9E; send_codec_ctrl(CodecCommandBuffer, 2); }
void codec_ctrl_init() { uint32_t delaycount; uint8_t CodecCommandBuffer[5]; uint8_t regValue = 0xFF; //GPIO_SetBits(GPIOD, CODEC_RESET_PIN); /* Turn on the audio driver */ HAL_GPIO_WritePin(GPIOD, GPIO_PIN_4, GPIO_PIN_SET); /* STABILIZE */ delaycount = 1000000; while (--delaycount > 0) //keep codec OFF CodecCommandBuffer[0] = CODEC_MAP_PWR_CTRL1; CodecCommandBuffer[1] = 0x01; send_codec_ctrl(CodecCommandBuffer, 2); //begin initialization sequence (p. 32) CodecCommandBuffer[0] = 0x00; // CodecCommandBuffer[1] = 0x99; // send_codec_ctrl(CodecCommandBuffer, 2); // I // N CodecCommandBuffer[0] = 0x47; // I CodecCommandBuffer[1] = 0x80; // T send_codec_ctrl(CodecCommandBuffer, 2); // // I regValue = read_codec_register(0x32); // N // I CodecCommandBuffer[0] = 0x32; // T CodecCommandBuffer[1] = regValue | 0x80; // send_codec_ctrl(CodecCommandBuffer, 2); // I // N regValue = read_codec_register(0x32); // I // T CodecCommandBuffer[0] = 0x32; // CodecCommandBuffer[1] = regValue & (~0x80); // I send_codec_ctrl(CodecCommandBuffer, 2); // N // I CodecCommandBuffer[0] = 0x00; // T CodecCommandBuffer[1] = 0x00; // send_codec_ctrl(CodecCommandBuffer, 2); // //end of initialization sequence CodecCommandBuffer[0] = CODEC_MAP_PWR_CTRL2; CodecCommandBuffer[1] = 0xAF; send_codec_ctrl(CodecCommandBuffer, 2); /** * ANLGSFTA * ANLGGZCA * PASSB=A * PASSAMUTE * PASSAVOL[7:0] (+12dB/-60dB .5dB steps) */ CodecCommandBuffer[0] = CODEC_MAP_PLAYBACK_CTRL1; CodecCommandBuffer[1] = 0x70; send_codec_ctrl(CodecCommandBuffer, 2); /* PASSB=A (p.42) */ CodecCommandBuffer[0] = CODEC_MAP_PASSTHROUGH_GANG_CTRL; CodecCommandBuffer[1] = 0x80; send_codec_ctrl(CodecCommandBuffer, 2); /* ANLGSFTA + ANLGZCA (p. 42) */ CodecCommandBuffer[0] = CODEC_MAP_ANALOG_SET; CodecCommandBuffer[1] = 0xF; send_codec_ctrl(CodecCommandBuffer, 2); /* PASSASEL1 (p.42) - DEFAULT */ //CodecCommandBuffer[0] = CODEC_MAP_PASSTHROUGH_A_SELECT; //CodecCommandBuffer[1] = 0x1; //send_codec_ctrl(CodecCommandBuffer, 2); /* PASSAMUTE (p. 44) */ //CodecCommandBuffer[0] = CODEC_MAP_MISC_CTRL; //CodecCommandBuffer[1] = ; //send_codec_ctrl(CodecCommandBuffer, 2); /* PASSAVOL[7:0] - initialize to half-vol (p. 46) */ //CodecCommandBuffer[0] = CODEC_MAP_PASSTHROUGH_A_VOL; //CodecCommandBuffer[1] = 0x7F; //send_codec_ctrl(CodecCommandBuffer, 2); /* PASSAVOL[7:0] - initialize to half-vol (p. 46) */ //CodecCommandBuffer[0] = CODEC_MAP_PASSTHROUGH_B_VOL; //CodecCommandBuffer[1] = 0x7F; //send_codec_ctrl(CodecCommandBuffer, 2); /* PASSTHRUA/B (p.44) */ CodecCommandBuffer[0] = CODEC_MAP_MISC_CTRL; CodecCommandBuffer[1] = 0xC2; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x1A | CODEC_MAPBYTE_INC; CodecCommandBuffer[1] = 0x0A; CodecCommandBuffer[2] = 0x0A; send_codec_ctrl(CodecCommandBuffer, 3); //CodecCommandBuffer[0] = CODEC_MAP_MASTER_A_VOL; //CodecCommandBuffer[1] = 0x7F; //send_codec_ctrl(CodecCommandBuffer, 2); //CodecCommandBuffer[0] = CODEC_MAP_MASTER_B_VOL; //CodecCommandBuffer[1] = 0x7F; //send_codec_ctrl(CodecCommandBuffer, 2); //CodecCommandBuffer[0] = CODEC_MAP_HP_A_VOL; //CodecCommandBuffer[1] = 0x7F; //send_codec_ctrl(CodecCommandBuffer, 2); //CodecCommandBuffer[0] = CODEC_MAP_HP_B_VOL; //CodecCommandBuffer[1] = 0x7F; //send_codec_ctrl(CodecCommandBuffer, 2); // CHECK 20/21,22/23, /*CodecCommandBuffer[0] = CODEC_MAP_CLK_CTRL; CodecCommandBuffer[1] = 0x81; //auto detect clock send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = CODEC_MAP_IF_CTRL1; CodecCommandBuffer[1] = 0x07; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x0A; CodecCommandBuffer[1] = 0x00; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x27; CodecCommandBuffer[1] = 0x00; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x1A | CODEC_MAPBYTE_INC; CodecCommandBuffer[1] = 0x0A; CodecCommandBuffer[2] = 0x0A; send_codec_ctrl(CodecCommandBuffer, 3); CodecCommandBuffer[0] = 0x1F; CodecCommandBuffer[1] = 0x0F; send_codec_ctrl(CodecCommandBuffer, 2);*/ // Turn the bad boy on... CodecCommandBuffer[0] = CODEC_MAP_PWR_CTRL1; CodecCommandBuffer[1] = 0x9E; send_codec_ctrl(CodecCommandBuffer, 2); }
void codec_ctrl_init() { uint32_t delaycount; uint8_t CodecCommandBuffer[5]; uint8_t regValue = 0xFF; GPIO_SetBits(GPIOD, CODEC_RESET_PIN); delaycount = 1000000; while (delaycount > 0) { delaycount--; } //keep codec OFF CodecCommandBuffer[0] = CODEC_MAP_PLAYBACK_CTRL1; CodecCommandBuffer[1] = 0x01; send_codec_ctrl(CodecCommandBuffer, 2); //begin initialization sequence (p. 32) CodecCommandBuffer[0] = 0x00; CodecCommandBuffer[1] = 0x99; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x47; CodecCommandBuffer[1] = 0x80; send_codec_ctrl(CodecCommandBuffer, 2); regValue = read_codec_register(0x32); CodecCommandBuffer[0] = 0x32; CodecCommandBuffer[1] = regValue | 0x80; send_codec_ctrl(CodecCommandBuffer, 2); regValue = read_codec_register(0x32); CodecCommandBuffer[0] = 0x32; CodecCommandBuffer[1] = regValue & (~0x80); send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x00; CodecCommandBuffer[1] = 0x00; send_codec_ctrl(CodecCommandBuffer, 2); //end of initialization sequence CodecCommandBuffer[0] = CODEC_MAP_PWR_CTRL2; CodecCommandBuffer[1] = 0xAF; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = CODEC_MAP_PLAYBACK_CTRL1; CodecCommandBuffer[1] = 0x70; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = CODEC_MAP_MASTER_A_VOL; CodecCommandBuffer[1] = 0xF1; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = CODEC_MAP_MASTER_B_VOL; CodecCommandBuffer[1] = 0xF1; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = CODEC_MAP_CLK_CTRL; CodecCommandBuffer[1] = 0x81; //auto detect clock send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = CODEC_MAP_IF_CTRL1; CodecCommandBuffer[1] = 0x07; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x0A; CodecCommandBuffer[1] = 0x00; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x27; CodecCommandBuffer[1] = 0x00; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = 0x1A | CODEC_MAPBYTE_INC; CodecCommandBuffer[1] = 0x0A; CodecCommandBuffer[2] = 0x0A; send_codec_ctrl(CodecCommandBuffer, 3); CodecCommandBuffer[0] = 0x1F; CodecCommandBuffer[1] = 0x0F; send_codec_ctrl(CodecCommandBuffer, 2); CodecCommandBuffer[0] = CODEC_MAP_PWR_CTRL1; CodecCommandBuffer[1] = 0x9E; send_codec_ctrl(CodecCommandBuffer, 2); }