这篇教程C++ CODEC_IO_Write函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中CODEC_IO_Write函数的典型用法代码示例。如果您正苦于以下问题:C++ CODEC_IO_Write函数的具体用法?C++ CODEC_IO_Write怎么用?C++ CODEC_IO_Write使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了CODEC_IO_Write函数的24个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: cs43l22_SetOutputMode/** * @brief Switch dynamically (while audio file is played) the output target * (speaker or headphone). * @note This function modifies a global variable of the audio codec driver: OutputDev. * @param DeviceAddr: Device address on communication Bus. * @param Output: specifies the audio output target: OUTPUT_DEVICE_SPEAKER, * OUTPUT_DEVICE_HEADPHONE, OUTPUT_DEVICE_BOTH or OUTPUT_DEVICE_AUTO * @retval 0 if correct communication, else wrong communication */uint32_t cs43l22_SetOutputMode(uint16_t DeviceAddr, uint8_t Output){ uint32_t counter = 0; switch (Output) { case OUTPUT_DEVICE_SPEAKER: counter += CODEC_IO_Write(DeviceAddr, 0x04, 0xFA); /* SPK always ON & HP always OFF */ OutputDev = 0xFA; break; case OUTPUT_DEVICE_HEADPHONE: counter += CODEC_IO_Write(DeviceAddr, 0x04, 0xAF); /* SPK always OFF & HP always ON */ OutputDev = 0xAF; break; case OUTPUT_DEVICE_BOTH: counter += CODEC_IO_Write(DeviceAddr, 0x04, 0xAA); /* SPK always ON & HP always ON */ OutputDev = 0xAA; break; case OUTPUT_DEVICE_AUTO: counter += CODEC_IO_Write(DeviceAddr, 0x04, 0x05); /* Detect the HP or the SPK automatically */ OutputDev = 0x05; break; default: counter += CODEC_IO_Write(DeviceAddr, 0x04, 0x05); /* Detect the HP or the SPK automatically */ OutputDev = 0x05; break; } return counter;}
开发者ID:451506709,项目名称:automated_machine,代码行数:42,
示例2: cs43l22_SetMute/** * @brief Enables or disables the mute feature on the audio codec. * @param DeviceAddr: Device address on communication Bus. * @param Cmd: AUDIO_MUTE_ON to enable the mute or AUDIO_MUTE_OFF to disable the * mute mode. * @retval 0 if correct communication, else wrong communication */uint32_t cs43l22_SetMute(uint16_t DeviceAddr, uint32_t Cmd){ uint32_t counter = 0; /* Set the Mute mode */ if(Cmd == AUDIO_MUTE_ON) { counter += CODEC_IO_Write(DeviceAddr, 0x04, 0xFF); } else /* AUDIO_MUTE_OFF Disable the Mute */ { counter += CODEC_IO_Write(DeviceAddr, 0x04, OutputDev); } return counter;}
开发者ID:451506709,项目名称:automated_machine,代码行数:22,
示例3: cs43l22_Stop/** * @brief Stops audio Codec playing. It powers down the codec. * @param DeviceAddr: Device address on communication Bus. * @param CodecPdwnMode: selects the power down mode. * - CODEC_PDWN_HW: Physically power down the codec. When resuming from this * mode, the codec is set to default configuration * (user should re-Initialize the codec in order to * play again the audio stream). * @retval 0 if correct communication, else wrong communication */uint32_t cs43l22_Stop(uint16_t DeviceAddr, uint32_t CodecPdwnMode){ uint32_t counter = 0; /* Mute the output first */ counter += cs43l22_SetMute(DeviceAddr, AUDIO_MUTE_ON); /* Disable the digital soft ramp */ counter += CODEC_IO_Write(DeviceAddr, 0x0E, 0x04); /* Power down the DAC and the speaker (PMDAC and PMSPK bits)*/ counter += CODEC_IO_Write(DeviceAddr, 0x02, 0x9F); Is_cs43l22_Stop = 1; return counter; }
开发者ID:rebelbot,项目名称:OptimizerLesson,代码行数:26,
示例4: cs42l52_Resume/** * @brief Resumes playing on the audio codec. * @param DeviceAddr: Device address on communication Bus. * @retval 0 if correct communication, else wrong communication */uint32_t cs42l52_Resume(uint16_t DeviceAddr){ uint32_t counter = 0; /* Resumes the audio file playing */ /* Unmute the output first */ counter += cs42l52_SetMute(DeviceAddr, AUDIO_MUTE_OFF); AUDIO_IO_Delay(20); counter += CODEC_IO_Write(DeviceAddr,0x04, OutputDev); /* Exit the Power save mode */ counter += CODEC_IO_Write(DeviceAddr,0x02, 0x9E); return counter;}
开发者ID:Riyamoll,项目名称:Operating-Systems-Design,代码行数:21,
示例5: cs42l52_SetOutputMode/** * @brief Switch dynamically (while audio file is played) the output target * (speaker or headphone). * @note This function modifies a global variable of the audio codec driver: OutputDev. * @param DeviceAddr: Device address on communication Bus. * @param Output: specifies the audio output target: OUTPUT_DEVICE_SPEAKER, * OUTPUT_DEVICE_HEADPHONE, OUTPUT_DEVICE_BOTH or OUTPUT_DEVICE_AUTO * @retval 0 if correct communication, else wrong communication */uint32_t cs42l52_SetOutputMode(uint16_t DeviceAddr, uint8_t Output){ uint32_t counter = 0; switch (Output) { case OUTPUT_DEVICE_SPEAKER: OutputDev = 0xFA; /* SPK always ON & HP always OFF */ break; case OUTPUT_DEVICE_HEADPHONE: OutputDev = 0xAF; /* SPK always OFF & HP always ON */ break; case OUTPUT_DEVICE_BOTH: OutputDev = 0xAA; /* SPK always ON & HP always ON */ break; case OUTPUT_DEVICE_AUTO: OutputDev = 0x05; /* Detect the HP or the SPK automatically */ break; default: OutputDev = 0x05; /* Detect the HP or the SPK automatically */ break; } counter += CODEC_IO_Write(DeviceAddr, 0x04, OutputDev); /* Return communication control value */ return counter;}
开发者ID:Riyamoll,项目名称:Operating-Systems-Design,代码行数:41,
示例6: cs43l22_Resume/** * @brief Resumes playing on the audio codec. * @param DeviceAddr: Device address on communication Bus. * @retval 0 if correct communication, else wrong communication */uint32_t cs43l22_Resume(uint16_t DeviceAddr){ uint32_t counter = 0; volatile uint32_t index = 0x00; /* Resumes the audio file playing */ /* Unmute the output first */ counter += cs43l22_SetMute(DeviceAddr, AUDIO_MUTE_OFF); for(index = 0x00; index < 0xFF; index++); counter += CODEC_IO_Write(DeviceAddr,0x04, OutputDev); /* Exit the Power save mode */ counter += CODEC_IO_Write(DeviceAddr,0x02, 0x9E); return counter;}
开发者ID:451506709,项目名称:automated_machine,代码行数:22,
示例7: wm8994_Reset/** * @brief Resets wm8994 registers. * @param DeviceAddr: Device address on communication Bus. * @retval 0 if correct communication, else wrong communication */uint32_t wm8994_Reset(uint16_t DeviceAddr){ uint32_t counter = 0; /* Reset Codec by wrinting in 0x0000 address register */ counter = CODEC_IO_Write(DeviceAddr, 0x0000, 0x0000); return counter;}
开发者ID:451506709,项目名称:automated_machine,代码行数:14,
示例8: cs43l22_Play/** * @brief Start the audio Codec play feature. * @note For this codec no Play options are required. * @param DeviceAddr: Device address on communication Bus. * @retval 0 if correct communication, else wrong communication */uint32_t cs43l22_Play(uint16_t DeviceAddr, uint16_t* pBuffer, uint16_t Size){ uint32_t counter = 0; if(Is_cs43l22_Stop == 1) { /* Enable the digital soft ramp */ counter += CODEC_IO_Write(DeviceAddr, 0x0E, 0x06); /* Enable Output device */ counter += cs43l22_SetMute(DeviceAddr, AUDIO_MUTE_OFF); /* Power on the Codec */ counter += CODEC_IO_Write(DeviceAddr, 0x02, 0x9E); Is_cs43l22_Stop = 0; } /* Return communication control value */ return counter; }
开发者ID:rebelbot,项目名称:OptimizerLesson,代码行数:26,
示例9: cs42l52_SetVolume/** * @brief Sets higher or lower the codec volume level. * @param DeviceAddr: Device address on communication Bus. * @param Volume: a byte value from 0 to 255 (refer to codec registers * description for more details). * @retval 0 if correct communication, else wrong communication */uint32_t cs42l52_SetVolume(uint16_t DeviceAddr, uint8_t Volume){ uint32_t counter = 0; uint8_t convertedvol = VOLUME_CONVERT(Volume); if(Volume > 0xE6) { /* Set the Master volume */ counter += CODEC_IO_Write(DeviceAddr, 0x20, convertedvol - 0xE7); counter += CODEC_IO_Write(DeviceAddr, 0x21, convertedvol - 0xE7); } else { /* Set the Master volume */ counter += CODEC_IO_Write(DeviceAddr, 0x20, convertedvol + 0x19); counter += CODEC_IO_Write(DeviceAddr, 0x21, convertedvol + 0x19); } return counter;}
开发者ID:Riyamoll,项目名称:Operating-Systems-Design,代码行数:27,
示例10: cs43l22_SetVolume/** * @brief Sets higher or lower the codec volume level. * @param DeviceAddr: Device address on communication Bus. * @param Volume: a byte value from 0 to 255 (refer to codec registers * description for more details). * @retval 0 if correct communication, else wrong communication */uint32_t cs43l22_SetVolume(uint16_t DeviceAddr, uint8_t Volume){ uint32_t counter = 0; uint8_t convertedvol = VOLUME_CONVERT(Volume); if(Volume > 0xE6) { /* Set the Master volume */ counter += CODEC_IO_Write(DeviceAddr, CS43L22_REG_MASTER_A_VOL, convertedvol - 0xE7); counter += CODEC_IO_Write(DeviceAddr, CS43L22_REG_MASTER_B_VOL, convertedvol - 0xE7); } else { /* Set the Master volume */ counter += CODEC_IO_Write(DeviceAddr, CS43L22_REG_MASTER_A_VOL, convertedvol + 0x19); counter += CODEC_IO_Write(DeviceAddr, CS43L22_REG_MASTER_B_VOL, convertedvol + 0x19); } return counter;}
开发者ID:Jegeva,项目名称:STM32F469-Discovery,代码行数:27,
示例11: wm8994_Stop/** * @brief Stops audio Codec playing. It powers down the codec. * @param DeviceAddr: Device address on communication Bus. * @param CodecPdwnMode: selects the power down mode. * - CODEC_PDWN_SW: only mutes the audio codec. When resuming from this * mode the codec keeps the previous initialization * (no need to re-Initialize the codec registers). * - CODEC_PDWN_HW: Physically power down the codec. When resuming from this * mode, the codec is set to default configuration * (user should re-Initialize the codec in order to * play again the audio stream). * @retval 0 if correct communication, else wrong communication */uint32_t wm8994_Stop(uint16_t DeviceAddr, uint32_t CodecPdwnMode){ uint32_t counter = 0; /* Mute the output first */ counter += wm8994_SetMute(DeviceAddr, AUDIO_MUTE_ON); if (CodecPdwnMode == CODEC_PDWN_SW) { /* Only output mute required*/ } else /* CODEC_PDWN_HW */ { /* Mute the AIF1 Timeslot 0 DAC1 path */ counter += CODEC_IO_Write(DeviceAddr, 0x420, 0x0200); /* Mute the AIF1 Timeslot 1 DAC2 path */ counter += CODEC_IO_Write(DeviceAddr, 0x422, 0x0200); /* Disable DAC1L_TO_HPOUT1L */ counter += CODEC_IO_Write(DeviceAddr, 0x2D, 0x0000); /* Disable DAC1R_TO_HPOUT1R */ counter += CODEC_IO_Write(DeviceAddr, 0x2E, 0x0000); /* Disable DAC1 and DAC2 */ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0000); /* Reset Codec by wrinting in 0x0000 address register */ counter += CODEC_IO_Write(DeviceAddr, 0x0000, 0x0000); } return counter;}
开发者ID:451506709,项目名称:automated_machine,代码行数:47,
示例12: wm8994_SetMute//}}}//{{{uint32_t wm8994_SetMute (uint16_t DeviceAddr, uint32_t Cmd) { uint32_t counter = 0; if (outputEnabled != 0) { /* Set the Mute mode */ if(Cmd == AUDIO_MUTE_ON) { /* Soft Mute the AIF1 Timeslot 0 DAC1 path L&R */ counter += CODEC_IO_Write(DeviceAddr, 0x420, 0x0200); /* Soft Mute the AIF1 Timeslot 1 DAC2 path L&R */ counter += CODEC_IO_Write(DeviceAddr, 0x422, 0x0200); } else { /* AUDIO_MUTE_OFF Disable the Mute */ /* Unmute the AIF1 Timeslot 0 DAC1 path L&R */ counter += CODEC_IO_Write(DeviceAddr, 0x420, 0x0000); /* Unmute the AIF1 Timeslot 1 DAC2 path L&R */ counter += CODEC_IO_Write(DeviceAddr, 0x422, 0x0000); } } return counter; }
开发者ID:colinporth,项目名称:radioPlus,代码行数:24,
示例13: cs43l22_Pause/** * @brief Pauses playing on the audio codec. * @param DeviceAddr: Device address on communication Bus. * @retval 0 if correct communication, else wrong communication */uint32_t cs43l22_Pause(uint16_t DeviceAddr){ uint32_t counter = 0; /* Pause the audio file playing */ /* Mute the output first */ counter += cs43l22_SetMute(DeviceAddr, AUDIO_MUTE_ON); /* Put the Codec in Power save mode */ counter += CODEC_IO_Write(DeviceAddr, CS43L22_REG_POWER_CTL1, 0x01); return counter;}
开发者ID:Jegeva,项目名称:STM32F469-Discovery,代码行数:18,
示例14: wm8994_SetFrequency/** * @brief Sets new frequency. * @param DeviceAddr: Device address on communication Bus. * @param AudioFreq: Audio frequency used to play the audio stream. * @retval 0 if correct communication, else wrong communication */uint32_t wm8994_SetFrequency(uint16_t DeviceAddr, uint32_t AudioFreq){ uint32_t counter = 0; /* Clock Configurations */ switch (AudioFreq) { case AUDIO_FREQUENCY_8K: /* AIF1 Sample Rate = 8 (KHz), ratio=256 */ counter += CODEC_IO_Write(DeviceAddr, 0x210, 0x0003); break; case AUDIO_FREQUENCY_16K: /* AIF1 Sample Rate = 16 (KHz), ratio=256 */ counter += CODEC_IO_Write(DeviceAddr, 0x210, 0x0033); break; case AUDIO_FREQUENCY_48K: /* AIF1 Sample Rate = 48 (KHz), ratio=256 */ counter += CODEC_IO_Write(DeviceAddr, 0x210, 0x0083); break; case AUDIO_FREQUENCY_96K: /* AIF1 Sample Rate = 96 (KHz), ratio=256 */ counter += CODEC_IO_Write(DeviceAddr, 0x210, 0x00A3); break; case AUDIO_FREQUENCY_11K: /* AIF1 Sample Rate = 11.025 (KHz), ratio=256 */ counter += CODEC_IO_Write(DeviceAddr, 0x210, 0x0013); break; case AUDIO_FREQUENCY_22K: /* AIF1 Sample Rate = 22.050 (KHz), ratio=256 */ counter += CODEC_IO_Write(DeviceAddr, 0x210, 0x0043); break; case AUDIO_FREQUENCY_44K: /* AIF1 Sample Rate = 44.1 (KHz), ratio=256 */ counter += CODEC_IO_Write(DeviceAddr, 0x210, 0x0073); break; default: /* AIF1 Sample Rate = 48 (KHz), ratio=256 */ counter += CODEC_IO_Write(DeviceAddr, 0x210, 0x0083); break; } return counter;}
开发者ID:451506709,项目名称:automated_machine,代码行数:55,
示例15: wm8994_Pause/** * @brief Pauses playing on the audio codec. * @param DeviceAddr: Device address on communication Bus. * @retval 0 if correct communication, else wrong communication */uint32_t wm8994_Pause(uint16_t DeviceAddr){ uint32_t counter = 0; /* Pause the audio file playing */ /* Mute the output first */ counter += wm8994_SetMute(DeviceAddr, AUDIO_MUTE_ON); /* Put the Codec in Power save mode */ counter += CODEC_IO_Write(DeviceAddr, 0x02, 0x01); return counter;}
开发者ID:451506709,项目名称:automated_machine,代码行数:18,
示例16: wm8994_SetVolume/** * @brief Sets higher or lower the codec volume level. * @param DeviceAddr: Device address on communication Bus. * @param Volume: a byte value from 0 to 255 (refer to codec registers * description for more details). * @retval 0 if correct communication, else wrong communication */uint32_t wm8994_SetVolume(uint16_t DeviceAddr, uint8_t Volume){ uint32_t counter = 0; uint8_t convertedvol = VOLUME_CONVERT(Volume); if(convertedvol > 0x3E) { /* Unmute audio codec */ counter += wm8994_SetMute(DeviceAddr, AUDIO_MUTE_OFF); /* Left Headphone Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x1C, 0x3F | 0x140); /* Right Headphone Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x1D, 0x3F | 0x140); /* Left Speaker Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x26, 0x3F | 0x140); /* Right Speaker Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x27, 0x3F | 0x140); } else if (Volume == 0) { /* Mute audio codec */ counter += wm8994_SetMute(DeviceAddr, AUDIO_MUTE_ON); } else { /* Unmute audio codec */ counter += wm8994_SetMute(DeviceAddr, AUDIO_MUTE_OFF); /* Left Headphone Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x1C, convertedvol | 0x140); /* Right Headphone Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x1D, convertedvol | 0x140); /* Left Speaker Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x26, convertedvol | 0x140); /* Right Speaker Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x27, convertedvol | 0x140); } return counter;}
开发者ID:451506709,项目名称:automated_machine,代码行数:54,
示例17: cs42l52_Stop/** * @brief Stops audio Codec playing. It powers down the codec. * @param DeviceAddr: Device address on communication Bus. * @param CodecPdwnMode: selects the power down mode. * - CODEC_PDWN_HW: Physically power down the codec. When resuming from this * mode, the codec is set to default configuration * (user should re-Initialize the codec in order to * play again the audio stream). * @retval 0 if correct communication, else wrong communication */uint32_t cs42l52_Stop(uint16_t DeviceAddr, uint32_t CodecPdwnMode){ uint32_t counter = 0; /* Mute the output first */ counter += cs42l52_SetMute(DeviceAddr, AUDIO_MUTE_ON); AUDIO_IO_Delay(20); /* Power down the DAC and the speaker (PMDAC and PMSPK bits)*/ counter += CODEC_IO_Write(DeviceAddr, 0x02, 0x9F); Is_cs42l52_Stop = 1; return counter; }
开发者ID:Riyamoll,项目名称:Operating-Systems-Design,代码行数:25,
示例18: cs43l22_SetMute/** * @brief Enables or disables the mute feature on the audio codec. * @param DeviceAddr: Device address on communication Bus. * @param Cmd: AUDIO_MUTE_ON to enable the mute or AUDIO_MUTE_OFF to disable the * mute mode. * @retval 0 if correct communication, else wrong communication */uint32_t cs43l22_SetMute(uint16_t DeviceAddr, uint32_t Cmd){ uint32_t counter = 0; /* Set the Mute mode */ if(Cmd == AUDIO_MUTE_ON) { counter += CODEC_IO_Write(DeviceAddr, CS43L22_REG_POWER_CTL2, 0xFF); counter += CODEC_IO_Write(DeviceAddr, CS43L22_REG_HEADPHONE_A_VOL, 0x01); counter += CODEC_IO_Write(DeviceAddr, CS43L22_REG_HEADPHONE_B_VOL, 0x01); } else /* AUDIO_MUTE_OFF Disable the Mute */ { counter += CODEC_IO_Write(DeviceAddr, CS43L22_REG_HEADPHONE_A_VOL, 0x00); counter += CODEC_IO_Write(DeviceAddr, CS43L22_REG_HEADPHONE_B_VOL, 0x00); counter += CODEC_IO_Write(DeviceAddr, CS43L22_REG_POWER_CTL2, OutputDev); } return counter;}
开发者ID:Jegeva,项目名称:STM32F469-Discovery,代码行数:26,
示例19: cs42l52_Init/** * @brief Initializes the audio codec and the control interface. * @param DeviceAddr: Device address on communication Bus. * @param OutputDevice: can be OUTPUT_DEVICE_SPEAKER, OUTPUT_DEVICE_HEADPHONE, * OUTPUT_DEVICE_BOTH or OUTPUT_DEVICE_AUTO . * @param Volume: Initial volume level (from 0 (Mute) to 100 (Max)) * @retval 0 if correct communication, else wrong communication */uint32_t cs42l52_Init(uint16_t DeviceAddr, uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq){ uint32_t counter = 0; /* Initialize the Control interface of the Audio Codec */ AUDIO_IO_Init(); /* Keep Codec powered OFF */ counter += CODEC_IO_Write(DeviceAddr, 0x02, 0x01); /*Save Output device for mute ON/OFF procedure*/ switch (OutputDevice) { case OUTPUT_DEVICE_SPEAKER: OutputDev = 0xFA; /* SPK always ON & HP always OFF */ break; case OUTPUT_DEVICE_HEADPHONE: OutputDev = 0xAF; /* SPK always OFF & HP always ON */ break; case OUTPUT_DEVICE_BOTH: OutputDev = 0xAA; /* SPK always ON & HP always ON */ break; case OUTPUT_DEVICE_AUTO: OutputDev = 0x05; /* Detect the HP or the SPK automatically */ break; default: OutputDev = 0x05; /* Detect the HP or the SPK automatically */ break; } counter += CODEC_IO_Write(DeviceAddr, 0x04, OutputDev); /* Clock configuration: Auto detection */ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x80); /* Set the Slave Mode and the audio Standard */ counter += CODEC_IO_Write(DeviceAddr, 0x06, CODEC_STANDARD); /* Interface Control 2: SCLK is Re-timed signal from MCLK*/ counter +=CODEC_IO_Write(DeviceAddr, 0x07, 0x00); /* ADCA and PGAA Select: no input selected*/ counter +=CODEC_IO_Write(DeviceAddr, 0x08, 0x00); /* ADCB and PGAB Select: no input selected*/ counter +=CODEC_IO_Write(DeviceAddr, 0x09, 0x00); /*Play Back Control 1: headphone gain is 0.4, PCM not inverted, Master not mute*/ counter +=CODEC_IO_Write(DeviceAddr, 0x0D, 0x10);/* CS42L52 has different config than CS42L52*/ /* Miscellaneous Controls: Passthrough Analog & Passthrough Mute off, Soft Ramp on @0x0E*/ counter +=CODEC_IO_Write(DeviceAddr, 0x0E, 0x02); /* Play Back Control 2: Headphone Mute off, speaker mute off, mono enabled */ counter +=CODEC_IO_Write(DeviceAddr, 0x0F, 0x32); /* PCM A Volume: PCM Mute disabled, Volume is 0db(default) */ counter +=CODEC_IO_Write(DeviceAddr, 0x1A, 0x00); /* PCM B Volume: PCM Mute disabled, Volume is 0db(default) */ counter +=CODEC_IO_Write(DeviceAddr, 0x1B, 0x00); /* Headphone A Volume: Headphone Volume is -6db */ counter +=CODEC_IO_Write(DeviceAddr, 0x22, (uint8_t)(0-12)); /* Headphone B Volume: Headphone Volume is -6db */ counter +=CODEC_IO_Write(DeviceAddr, 0x23, (uint8_t)(0-12)); /* Speaker A Volume: Speaker Volume is 0db (default) */ counter +=CODEC_IO_Write(DeviceAddr, 0x24, 0x00); /* Speaker B Volume: Speaker Volume is 0db (default) */ counter +=CODEC_IO_Write(DeviceAddr, 0x25, 0x00); /* Charge Pump Frequency: 5 (default) */ counter +=CODEC_IO_Write(DeviceAddr, 0x34, 5<<4); /* Power Control 1: power up */ counter += CODEC_IO_Write(DeviceAddr, 0x02, 0x00); /* Set the Master volume */ counter += cs42l52_SetVolume(DeviceAddr, Volume); /* Return communication control value */ return counter; }
开发者ID:Riyamoll,项目名称:Operating-Systems-Design,代码行数:86,
示例20: wm8994_SetOutputMode/** * @brief Switch dynamically (while audio file is played) the output target * (speaker or headphone). * @param DeviceAddr: Device address on communication Bus. * @param Output: specifies the audio output target: OUTPUT_DEVICE_SPEAKER, * OUTPUT_DEVICE_HEADPHONE, OUTPUT_DEVICE_BOTH or OUTPUT_DEVICE_AUTO * @retval 0 if correct communication, else wrong communication */uint32_t wm8994_SetOutputMode(uint16_t DeviceAddr, uint8_t Output){ uint32_t counter = 0; switch (Output) { case OUTPUT_DEVICE_SPEAKER: /* Enable DAC1 (Left), Enable DAC1 (Right), Disable DAC2 (Left), Disable DAC2 (Right)*/ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0C0C); /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0000); /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0000); /* Disable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0002); /* Disable the AIF1 Timeslot 1 (Right) to DAC 2 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x605, 0x0002); break; case OUTPUT_DEVICE_HEADPHONE: /* Disable DAC1 (Left), Disable DAC1 (Right), Enable DAC2 (Left), Enable DAC2 (Right)*/ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0303); /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0001); /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0001); /* Disable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0000); /* Disable the AIF1 Timeslot 1 (Right) to DAC 2 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x605, 0x0000); break; case OUTPUT_DEVICE_BOTH: /* Enable DAC1 (Left), Enable DAC1 (Right), also Enable DAC2 (Left), Enable DAC2 (Right)*/ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0303 | 0x0C0C); /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0001); /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0001); /* Enable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0002); /* Enable the AIF1 Timeslot 1 (Right) to DAC 2 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x605, 0x0002); break; default: /* Disable DAC1 (Left), Disable DAC1 (Right), Enable DAC2 (Left), Enable DAC2 (Right)*/ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0303); /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0001); /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0001); /* Disable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0000); /* Disable the AIF1 Timeslot 1 (Right) to DAC 2 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x605, 0x0000); break; } return counter;}
开发者ID:451506709,项目名称:automated_machine,代码行数:88,
示例21: wm8994_Init/** * @brief Initializes the audio codec and the control interface. * @param DeviceAddr: Device address on communication Bus. * @param OutputDevice: can be OUTPUT_DEVICE_SPEAKER, OUTPUT_DEVICE_HEADPHONE, * OUTPUT_DEVICE_BOTH or OUTPUT_DEVICE_AUTO . * @param Volume: Initial volume level (from 0 (Mute) to 100 (Max)) * @param AudioFreq: Audio Frequency * @retval 0 if correct communication, else wrong communication */uint32_t wm8994_Init(uint16_t DeviceAddr, uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq){ uint32_t counter = 0; /* Initialize the Control interface of the Audio Codec */ AUDIO_IO_Init(); /* wm8994 Errata Work-Arounds */ counter += CODEC_IO_Write(DeviceAddr, 0x102, 0x0003); counter += CODEC_IO_Write(DeviceAddr, 0x817, 0x0000); counter += CODEC_IO_Write(DeviceAddr, 0x102, 0x0000); /* Enable VMID soft start (fast), Start-up Bias Current Enabled */ counter += CODEC_IO_Write(DeviceAddr, 0x39, 0x0064); /* Enable bias generator, Enable VMID */ counter += CODEC_IO_Write(DeviceAddr, 0x01, 0x0003); /* Add Delay */ AUDIO_IO_Delay(50); /* Path Configurations */ switch (OutputDevice) { case OUTPUT_DEVICE_SPEAKER: /* Enable DAC1 (Left), Enable DAC1 (Right), Disable DAC2 (Left), Disable DAC2 (Right)*/ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0C0C); /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0000); /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0000); /* Disable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0002); /* Disable the AIF1 Timeslot 1 (Right) to DAC 2 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x605, 0x0002); break; case OUTPUT_DEVICE_HEADPHONE: /* Disable DAC1 (Left), Disable DAC1 (Right), Enable DAC2 (Left), Enable DAC2 (Right)*/ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0303); /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0001); /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0001); /* Disable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0000); /* Disable the AIF1 Timeslot 1 (Right) to DAC 2 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x605, 0x0000); break; case OUTPUT_DEVICE_BOTH: /* Enable DAC1 (Left), Enable DAC1 (Right), also Enable DAC2 (Left), Enable DAC2 (Right)*/ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0303 | 0x0C0C); /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0001); /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0001); /* Enable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0002); /* Enable the AIF1 Timeslot 1 (Right) to DAC 2 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x605, 0x0002); break; default: /* Disable DAC1 (Left), Disable DAC1 (Right), Enable DAC2 (Left), Enable DAC2 (Right)*/ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0303); /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0001); /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0001); /* Disable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0000);//.........这里部分代码省略.........
开发者ID:451506709,项目名称:automated_machine,代码行数:101,
示例22: wm8994_Init/** * @brief Initializes the audio codec and the control interface. * @param DeviceAddr: Device address on communication Bus. * @param OutputInputDevice: can be OUTPUT_DEVICE_SPEAKER, OUTPUT_DEVICE_HEADPHONE, * OUTPUT_DEVICE_BOTH, OUTPUT_DEVICE_AUTO, INPUT_DEVICE_DIGITAL_MICROPHONE_1, * INPUT_DEVICE_DIGITAL_MICROPHONE_2, INPUT_DEVICE_INPUT_LINE_1 or INPUT_DEVICE_INPUT_LINE_2. * @param Volume: Initial volume level (from 0 (Mute) to 100 (Max)) * @param AudioFreq: Audio Frequency * @retval 0 if correct communication, else wrong communication */uint32_t wm8994_Init (uint16_t DeviceAddr, uint16_t OutputInputDevice, uint8_t Volume, uint32_t AudioFreq){ uint32_t counter = 0; uint16_t output_device = OutputInputDevice & 0xFF; uint16_t input_device = OutputInputDevice & 0xFF00; uint16_t power_mgnt_reg_1 = 0; /* Initialize the Control interface of the Audio Codec */ AUDIO_IO_Init(); /* wm8994 Errata Work-Arounds */ counter += CODEC_IO_Write (DeviceAddr, 0x102, 0x0003); counter += CODEC_IO_Write (DeviceAddr, 0x817, 0x0000); counter += CODEC_IO_Write (DeviceAddr, 0x102, 0x0000); /* Enable VMID soft start (fast), Start-up Bias Current Enabled */ counter += CODEC_IO_Write (DeviceAddr, 0x39, 0x006C); /* Enable bias generator, Enable VMID */ counter += CODEC_IO_Write (DeviceAddr, 0x01, 0x0003); /* Add Delay */ AUDIO_IO_Delay(50); /* Path Configurations for output */ if (output_device > 0) { outputEnabled = 1; switch (output_device) { case OUTPUT_DEVICE_SPEAKER: /* Enable DAC1 (Left), Enable DAC1 (Right), Disable DAC2 (Left), Disable DAC2 (Right)*/ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0C0C); /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0000); /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0000); /* Disable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0002); /* Disable the AIF1 Timeslot 1 (Right) to DAC 2 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x605, 0x0002); break; case OUTPUT_DEVICE_HEADPHONE: /* Disable DAC1 (Left), Disable DAC1 (Right), Enable DAC2 (Left), Enable DAC2 (Right)*/ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0303); /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0001); /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0001); /* Disable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0000); /* Disable the AIF1 Timeslot 1 (Right) to DAC 2 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x605, 0x0000); break; case OUTPUT_DEVICE_BOTH: /* Enable DAC1 (Left), Enable DAC1 (Right), also Enable DAC2 (Left), Enable DAC2 (Right)*/ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0303 | 0x0C0C); /* Enable the AIF1 Timeslot 0 (Left) to DAC 1 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x601, 0x0001); /* Enable the AIF1 Timeslot 0 (Right) to DAC 1 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x602, 0x0001); /* Enable the AIF1 Timeslot 1 (Left) to DAC 2 (Left) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x604, 0x0002); /* Enable the AIF1 Timeslot 1 (Right) to DAC 2 (Right) mixer path */ counter += CODEC_IO_Write(DeviceAddr, 0x605, 0x0002); break; case OUTPUT_DEVICE_AUTO : default: /* Disable DAC1 (Left), Disable DAC1 (Right), Enable DAC2 (Left), Enable DAC2 (Right)*/ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x0303);//.........这里部分代码省略.........
开发者ID:colinporth,项目名称:radioPlus,代码行数:101,
示例23: wm8994_SetVolume//{{{uint32_t wm8994_SetVolume (uint16_t DeviceAddr, uint8_t Volume) { uint32_t counter = 0; uint8_t convertedvol = VOLUME_CONVERT(Volume); /* Output volume */ if (outputEnabled != 0) { if (convertedvol > 0x3E) { /* Unmute audio codec */ counter += wm8994_SetMute(DeviceAddr, AUDIO_MUTE_OFF); /* Left Headphone Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x1C, 0x3F | 0x140); /* Right Headphone Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x1D, 0x3F | 0x140); /* Left Speaker Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x26, 0x3F | 0x140); /* Right Speaker Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x27, 0x3F | 0x140); } else if (Volume == 0) /* Mute audio codec */ counter += wm8994_SetMute(DeviceAddr, AUDIO_MUTE_ON); else { /* Unmute audio codec */ counter += wm8994_SetMute(DeviceAddr, AUDIO_MUTE_OFF); /* Left Headphone Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x1C, convertedvol | 0x140); /* Right Headphone Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x1D, convertedvol | 0x140); /* Left Speaker Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x26, convertedvol | 0x140); /* Right Speaker Volume */ counter += CODEC_IO_Write(DeviceAddr, 0x27, convertedvol | 0x140); } } /* Input volume */ if (inputEnabled != 0) { convertedvol = VOLUME_IN_CONVERT(Volume); /* Left AIF1 ADC1 volume */ counter += CODEC_IO_Write(DeviceAddr, 0x400, convertedvol | 0x100); /* Right AIF1 ADC1 volume */ counter += CODEC_IO_Write(DeviceAddr, 0x401, convertedvol | 0x100); /* Left AIF1 ADC2 volume */ counter += CODEC_IO_Write(DeviceAddr, 0x404, convertedvol | 0x100); /* Right AIF1 ADC2 volume */ counter += CODEC_IO_Write(DeviceAddr, 0x405, convertedvol | 0x100); } return counter; }
开发者ID:colinporth,项目名称:radioPlus,代码行数:52,
示例24: cs43l22_Init/** * @brief Initializes the audio codec and the control interface. * @param DeviceAddr: Device address on communication Bus. * @param OutputDevice: can be OUTPUT_DEVICE_SPEAKER, OUTPUT_DEVICE_HEADPHONE, * OUTPUT_DEVICE_BOTH or OUTPUT_DEVICE_AUTO . * @param Volume: Initial volume level (from 0 (Mute) to 100 (Max)) * @retval 0 if correct communication, else wrong communication */uint32_t cs43l22_Init(uint16_t DeviceAddr, uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq){ uint32_t counter = 0; /* Initialize the Control interface of the Audio Codec */ AUDIO_IO_Init(); /* Keep Codec powered OFF */ counter += CODEC_IO_Write(DeviceAddr, 0x02, 0x01); /*Save Output device for mute ON/OFF procedure*/ switch (OutputDevice) { case OUTPUT_DEVICE_SPEAKER: OutputDev = 0xFA; break; case OUTPUT_DEVICE_HEADPHONE: OutputDev = 0xAF; break; case OUTPUT_DEVICE_BOTH: OutputDev = 0xAA; break; case OUTPUT_DEVICE_AUTO: OutputDev = 0x05; break; default: OutputDev = 0x05; break; } counter += CODEC_IO_Write(DeviceAddr, 0x04, OutputDev); /* Clock configuration: Auto detection */ counter += CODEC_IO_Write(DeviceAddr, 0x05, 0x81); /* Set the Slave Mode and the audio Standard */ counter += CODEC_IO_Write(DeviceAddr, 0x06, CODEC_STANDARD); /* Set the Master volume */ counter += cs43l22_SetVolume(DeviceAddr, Volume); /* If the Speaker is enabled, set the Mono mode and volume attenuation level */ if(OutputDevice != OUTPUT_DEVICE_HEADPHONE) { /* Set the Speaker Mono mode */ counter += CODEC_IO_Write(DeviceAddr, 0x0F , 0x06); /* Set the Speaker attenuation level */ counter += CODEC_IO_Write(DeviceAddr, 0x24, 0x00); counter += CODEC_IO_Write(DeviceAddr, 0x25, 0x00); } /* Additional configuration for the CODEC. These configurations are done to reduce the time needed for the Codec to power off. If these configurations are removed, then a long delay should be added between powering off the Codec and switching off the I2S peripheral MCLK clock (which is the operating clock for Codec). If this delay is not inserted, then the codec will not shut down properly and it results in high noise after shut down. */ /* Disable the analog soft ramp */ counter += CODEC_IO_Write(DeviceAddr, 0x0A, 0x00); /* Disable the digital soft ramp */ counter += CODEC_IO_Write(DeviceAddr, 0x0E, 0x04); /* Disable the limiter attack level */ counter += CODEC_IO_Write(DeviceAddr, 0x27, 0x00); /* Adjust Bass and Treble levels */ counter += CODEC_IO_Write(DeviceAddr, 0x1F, 0x0F); /* Adjust PCM volume level */ counter += CODEC_IO_Write(DeviceAddr, 0x1A, 0x0A); counter += CODEC_IO_Write(DeviceAddr, 0x1B, 0x0A); /* Return communication control value */ return counter; }
开发者ID:451506709,项目名称:automated_machine,代码行数:86,
注:本文中的CODEC_IO_Write函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ CODEC_THROW函数代码示例 C++ CODE函数代码示例 |