Dependents:   Configurable_Robots DISCO-F469NI_LCD_demo DISCO-F469NI_SD_demo DISCO-F469NI_EEPROM_demo ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers cs43l22.h Source File

cs43l22.h

Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    cs43l22.h
00004   * @author  MCD Application Team
00005   * @brief   This file contains all the functions prototypes for the cs43l22.c driver.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
00010   *
00011   * Redistribution and use in source and binary forms, with or without modification,
00012   * are permitted provided that the following conditions are met:
00013   *   1. Redistributions of source code must retain the above copyright notice,
00014   *      this list of conditions and the following disclaimer.
00015   *   2. Redistributions in binary form must reproduce the above copyright notice,
00016   *      this list of conditions and the following disclaimer in the documentation
00017   *      and/or other materials provided with the distribution.
00018   *   3. Neither the name of STMicroelectronics nor the names of its contributors
00019   *      may be used to endorse or promote products derived from this software
00020   *      without specific prior written permission.
00021   *
00022   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00023   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00024   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00025   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00026   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00027   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00028   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00029   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00030   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00031   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00032   *
00033   ******************************************************************************
00034   */
00035 
00036 /* Define to prevent recursive inclusion -------------------------------------*/
00037 #ifndef __CS43L22_H
00038 #define __CS43L22_H
00039 
00040 /* Includes ------------------------------------------------------------------*/
00041 #include "../Common/audio.h"
00042 
00043 /** @addtogroup BSP
00044   * @{
00045   */ 
00046 
00047 /** @addtogroup Component
00048   * @{
00049   */ 
00050   
00051 /** @addtogroup CS43L22
00052   * @{
00053   */
00054 
00055 /** @defgroup CS43L22_Exported_Types
00056   * @{
00057   */
00058 
00059 /**
00060   * @}
00061   */
00062 
00063 /** @defgroup CS43L22_Exported_Constants
00064   * @{
00065   */ 
00066 
00067 /******************************************************************************/
00068 /***************************  Codec User defines ******************************/
00069 /******************************************************************************/
00070 /* Codec output DEVICE */
00071 #define OUTPUT_DEVICE_SPEAKER         1
00072 #define OUTPUT_DEVICE_HEADPHONE       2
00073 #define OUTPUT_DEVICE_BOTH            3
00074 #define OUTPUT_DEVICE_AUTO            4
00075 
00076 /* Volume Levels values */
00077 #define DEFAULT_VOLMIN                0x00
00078 #define DEFAULT_VOLMAX                0xFF
00079 #define DEFAULT_VOLSTEP               0x04
00080 
00081 #define AUDIO_PAUSE                   0
00082 #define AUDIO_RESUME                  1
00083 
00084 /* Codec POWER DOWN modes */
00085 #define CODEC_PDWN_HW                 1
00086 #define CODEC_PDWN_SW                 2
00087 
00088 /* MUTE commands */
00089 #define AUDIO_MUTE_ON                 1
00090 #define AUDIO_MUTE_OFF                0
00091 
00092 /* AUDIO FREQUENCY */
00093 #define AUDIO_FREQUENCY_192K          ((uint32_t)192000)
00094 #define AUDIO_FREQUENCY_96K           ((uint32_t)96000)
00095 #define AUDIO_FREQUENCY_48K           ((uint32_t)48000)
00096 #define AUDIO_FREQUENCY_44K           ((uint32_t)44100)
00097 #define AUDIO_FREQUENCY_32K           ((uint32_t)32000)
00098 #define AUDIO_FREQUENCY_22K           ((uint32_t)22050)
00099 #define AUDIO_FREQUENCY_16K           ((uint32_t)16000)
00100 #define AUDIO_FREQUENCY_11K           ((uint32_t)11025)
00101 #define AUDIO_FREQUENCY_8K            ((uint32_t)8000)  
00102 
00103 /** CS43l22 Registers  ***/
00104 #define   CS43L22_REG_ID                  0x01
00105 #define   CS43L22_REG_POWER_CTL1          0x02
00106 #define   CS43L22_REG_POWER_CTL2          0x04
00107 #define   CS43L22_REG_CLOCKING_CTL        0x05
00108 #define   CS43L22_REG_INTERFACE_CTL1      0x06
00109 #define   CS43L22_REG_INTERFACE_CTL2      0x07
00110 #define   CS43L22_REG_PASSTHR_A_SELECT    0x08
00111 #define   CS43L22_REG_PASSTHR_B_SELECT    0x09
00112 #define   CS43L22_REG_ANALOG_ZC_SR_SETT   0x0A
00113 #define   CS43L22_REG_PASSTHR_GANG_CTL    0x0C
00114 #define   CS43L22_REG_PLAYBACK_CTL1       0x0D
00115 #define   CS43L22_REG_MISC_CTL            0x0E
00116 #define   CS43L22_REG_PLAYBACK_CTL2       0x0F
00117 #define   CS43L22_REG_PASSTHR_A_VOL       0x14
00118 #define   CS43L22_REG_PASSTHR_B_VOL       0x15
00119 #define   CS43L22_REG_PCMA_VOL            0x1A
00120 #define   CS43L22_REG_PCMB_VOL            0x1B
00121 #define   CS43L22_REG_BEEP_FREQ_ON_TIME   0x1C
00122 #define   CS43L22_REG_BEEP_VOL_OFF_TIME   0x1D
00123 #define   CS43L22_REG_BEEP_TONE_CFG       0x1E
00124 #define   CS43L22_REG_TONE_CTL            0x1F
00125 #define   CS43L22_REG_MASTER_A_VOL        0x20
00126 #define   CS43L22_REG_MASTER_B_VOL        0x21
00127 #define   CS43L22_REG_HEADPHONE_A_VOL     0x22
00128 #define   CS43L22_REG_HEADPHONE_B_VOL     0x23
00129 #define   CS43L22_REG_SPEAKER_A_VOL       0x24
00130 #define   CS43L22_REG_SPEAKER_B_VOL       0x25
00131 #define   CS43L22_REG_CH_MIXER_SWAP       0x26
00132 #define   CS43L22_REG_LIMIT_CTL1          0x27
00133 #define   CS43L22_REG_LIMIT_CTL2          0x28
00134 #define   CS43L22_REG_LIMIT_ATTACK_RATE   0x29
00135 #define   CS43L22_REG_OVF_CLK_STATUS      0x2E
00136 #define   CS43L22_REG_BATT_COMPENSATION   0x2F
00137 #define   CS43L22_REG_VP_BATTERY_LEVEL    0x30
00138 #define   CS43L22_REG_SPEAKER_STATUS      0x31
00139 #define   CS43L22_REG_TEMPMONITOR_CTL     0x32
00140 #define   CS43L22_REG_THERMAL_FOLDBACK    0x33
00141 #define   CS43L22_REG_CHARGE_PUMP_FREQ    0x34
00142 
00143 /******************************************************************************/
00144 /****************************** REGISTER MAPPING ******************************/
00145 /******************************************************************************/
00146 /** 
00147   * @brief  CS43L22 ID  
00148   */  
00149 #define  CS43L22_ID            0xE0
00150 #define  CS43L22_ID_MASK       0xF8
00151 /**
00152   * @brief Chip ID Register: Chip I.D. and Revision Register
00153   *  Read only register
00154   *  Default value: 0x01
00155   *  [7:3] CHIPID[4:0]: I.D. code for the CS43L22.
00156   *        Default value: 11100b
00157   *  [2:0] REVID[2:0]: CS43L22 revision level.
00158   *        Default value: 
00159   *        000 - Rev A0
00160   *        001 - Rev A1
00161   *        010 - Rev B0
00162   *        011 - Rev B1
00163   */
00164 #define CS43L22_CHIPID_ADDR    0x01
00165 
00166 /**
00167   * @}
00168   */ 
00169 
00170 /** @defgroup CS43L22_Exported_Macros
00171   * @{
00172   */
00173 
00174 /**
00175   * @}
00176   */ 
00177 
00178 /** @defgroup CS43L22_Exported_Functions
00179   * @{
00180   */
00181     
00182 /*------------------------------------------------------------------------------
00183                            Audio Codec functions 
00184 ------------------------------------------------------------------------------*/
00185 /* High Layer codec functions */
00186 uint32_t cs43l22_Init(uint16_t DeviceAddr, uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);
00187 void     cs43l22_DeInit(void);
00188 uint32_t cs43l22_ReadID(uint16_t DeviceAddr);
00189 uint32_t cs43l22_Play(uint16_t DeviceAddr, uint16_t* pBuffer, uint16_t Size);
00190 uint32_t cs43l22_Pause(uint16_t DeviceAddr);
00191 uint32_t cs43l22_Resume(uint16_t DeviceAddr);
00192 uint32_t cs43l22_Stop(uint16_t DeviceAddr, uint32_t Cmd);
00193 uint32_t cs43l22_SetVolume(uint16_t DeviceAddr, uint8_t Volume);
00194 uint32_t cs43l22_SetFrequency(uint16_t DeviceAddr, uint32_t AudioFreq);
00195 uint32_t cs43l22_SetMute(uint16_t DeviceAddr, uint32_t Cmd);
00196 uint32_t cs43l22_SetOutputMode(uint16_t DeviceAddr, uint8_t Output);
00197 uint32_t cs43l22_Reset(uint16_t DeviceAddr);
00198 
00199 /* AUDIO IO functions */
00200 void      AUDIO_IO_Init(void);
00201 void      AUDIO_IO_DeInit(void);
00202 void      AUDIO_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value);
00203 uint8_t   AUDIO_IO_Read(uint8_t Addr, uint8_t Reg);
00204 
00205 /* Audio driver structure */
00206 extern AUDIO_DrvTypeDef   cs43l22_drv;
00207 
00208 #endif /* __CS43L22_H */
00209 
00210 /**
00211   * @}
00212   */ 
00213 
00214 /**
00215   * @}
00216   */ 
00217 
00218 /**
00219   * @}
00220   */
00221 
00222 /**
00223   * @}
00224   */ 
00225 
00226 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/