1 /* 2 * SPDX-FileCopyrightText: 2019-2025 SiFli Technologies(Nanjing) Co., Ltd 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef __BF0_HAL_AUDCODEC_H 8 #define __BF0_HAL_AUDCODEC_H 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 /* Includes ------------------------------------------------------------------*/ 15 #include "bf0_hal_def.h" 16 17 /** @addtogroup BF0_HAL_Driver 18 * @{ 19 */ 20 21 /** @addtogroup AUDCODEC 22 * @brief AUDCODEC HAL module driver 23 * @{ 24 */ 25 26 /* Exported types ------------------------------------------------------------*/ 27 /** @defgroup AUDCODEC_Exported_Types AUDCODEC Exported Types 28 * @{ 29 */ 30 31 /** 32 * @brief AUDCODEC TX/RX channel configure structure definition 33 */ 34 typedef struct 35 { 36 uint8_t clk_ana_pol; 37 uint8_t dither_en; 38 uint8_t dither_gain; 39 uint8_t sinc_gain; 40 uint8_t data_format; 41 uint8_t fine_vol; 42 uint8_t rough_vol; 43 uint8_t dma_en; 44 uint8_t dem_mode; 45 uint8_t dout_mute; 46 uint8_t enable; 47 uint8_t ramp_interval; 48 uint8_t zero_adjust_en; 49 uint8_t ramp_mode; 50 uint8_t ramp_en; 51 uint32_t dc_offset; 52 } AUDCODEC_DacChnlCfgTypeDef; 53 54 typedef struct 55 { 56 uint8_t sat_det_len; 57 uint8_t sat_det_en; 58 uint8_t data_format; 59 uint8_t fine_vol; 60 uint8_t rough_vol; 61 uint8_t dma_en; 62 uint8_t stb_inv; 63 uint8_t hpf_coef; 64 uint8_t hpf_bypass; 65 uint8_t enable; 66 } AUDCODEC_AdcChnlCfgTypeDef; 67 68 /** 69 * @brief AUDCODEC DAC clock config definition 70 */ 71 typedef struct 72 { 73 uint32_t samplerate; 74 uint8_t clk_src_sel; /*!< 0:xtal 48M 1:PLL 44.1M */ 75 uint8_t clk_div; 76 uint8_t osr_sel; /*!< 0:100 1:150 2:300 4:64 5:128 6:256 */ //hp dac_cfg 77 uint16_t sinc_gain; //hp dac_ch0_cfg 78 uint8_t sel_clk_dac_source; /*!< 0:xtal 48M 1:PLL */ 79 uint8_t diva_clk_dac; 80 uint8_t diva_clk_chop_dac; 81 uint8_t divb_clk_chop_dac; // lp pll_cfg4 82 uint8_t diva_clk_chop_bg; 83 uint8_t diva_clk_chop_refgen; // lp pll_cfg5 84 #ifdef SF32LB52X 85 uint8_t sel_clk_dac; 86 #endif 87 } AUDCODE_DAC_CLK_CONFIG_TYPE; 88 89 /** 90 * @brief AUDCODEC ADC clock config definition 91 */ 92 typedef struct 93 { 94 uint32_t samplerate; 95 uint8_t clk_src_sel; /*!< 0:xtal 48M 1:PLL 44.1M */ 96 uint8_t clk_div; 97 uint8_t osr_sel; /*!< 0:200 1:300 2:400 3:600 */ //lp adc_cfg 98 uint8_t sel_clk_adc_source; /*!< 0:xtal 48M 1:PLL */ 99 uint8_t sel_clk_adc; 100 uint8_t diva_clk_adc; //lp pll_cfg6 101 uint8_t fsp; //ADC1_CFG1 102 } AUDCODE_ADC_CLK_CONFIG_TYPE; 103 104 105 /** 106 * @brief AUDCODEC DAC PATH configure structure definition 107 */ 108 109 typedef struct 110 { 111 uint8_t opmode; /*!< 0:audprc tx to audcode 1: mem tx to audcodec */ 112 AUDCODE_DAC_CLK_CONFIG_TYPE *dac_clk; 113 } AUDCODEC_DACCfgTypeDef; 114 115 /** 116 * @brief AUDCODEC ADC PATH configure structure definition 117 */ 118 typedef struct 119 { 120 uint8_t opmode; 121 AUDCODE_ADC_CLK_CONFIG_TYPE *adc_clk; 122 } AUDCODEC_ADCCfgTypeDef; 123 124 /** 125 * @brief AUDCODEC Init structure definition 126 */ 127 typedef struct 128 { 129 //uint32_t clk_div; /*!< Source clk for AUDCODEC module */ 130 //uint16_t adc_div; /*!< adc AUDCODEC adc clock configure */ 131 uint16_t en_dly_sel; /*!< codec enable delay count */ 132 uint8_t samplerate_index; 133 AUDCODEC_DACCfgTypeDef dac_cfg; /*!< dac AUDCODEC DAC PATH configure */ 134 AUDCODEC_ADCCfgTypeDef adc_cfg; /*!< dac AUDCODEC ADC PATH configure */ 135 } AUDCODEC_InitTypeDef; 136 137 /** 138 * @brief HAL State structures definition 139 */ 140 typedef enum 141 { 142 HAL_AUDCODEC_STATE_RESET = 0x00U, /*!< AUDCODEC not yet initialized or disabled */ 143 HAL_AUDCODEC_STATE_READY = 0x01U, /*!< AUDCODEC initialized and ready for use */ 144 HAL_AUDCODEC_STATE_BUSY = 0x02U, /*!< AUDCODEC internal process is ongoing */ 145 HAL_AUDCODEC_STATE_BUSY_TX = 0x04U, /*!< Data Transmission process is ongoing */ 146 HAL_AUDCODEC_STATE_BUSY_RX = 0x08U, /*!< Data Reception process is ongoing */ 147 HAL_AUDCODEC_STATE_PAUSE = 0x16U, /*!< AUDCODEC pause state: used in case of DMA */ 148 HAL_AUDCODEC_STATE_ERROR = 0x32U /*!< AUDCODEC error state */ 149 } HAL_AUDCODEC_StateTypeDef; 150 151 /** 152 * @brief AUDCODEC TX/RX BUFFER/DMA ENUM definition 153 */ 154 typedef enum 155 { 156 HAL_AUDCODEC_DAC_CH0 = 0x00U, /*!< AUDCODEC DAC channel 0 */ 157 HAL_AUDCODEC_DAC_CH1 = 0x01U, /*!< AUDCODEC DAC channel 1 */ 158 HAL_AUDCODEC_ADC_CH0 = 0x02U, /*!< AUDCODEC ADC channel 0 */ 159 HAL_AUDCODEC_ADC_CH1 = 0x03U, /*!< AUDCODEC ADC channel 1 */ 160 HAL_AUDCODEC_INSTANC_CNT /*!< Total dma/buffer counter */ 161 } HAL_AUDCODEC_ChannelTypeDef; 162 163 164 /** 165 * @brief AUDCODEC handle Structure definition 166 */ 167 typedef struct 168 { 169 #ifdef SF32LB52X 170 AUDCODEC_TypeDef *Instance; /*!< AUDCODEC registers base address */ 171 #else 172 AUDCODEC_HP_TypeDef *Instance_hp; /*!< AUDCODEC HP registers base address */ 173 174 AUDCODEC_LP_TypeDef *Instance_lp; /*!< AUDCODEC LP registers base address */ 175 #endif 176 AUDCODEC_InitTypeDef Init; /*!< AUDCODEC communication parameters */ 177 178 AUDCODEC_DacChnlCfgTypeDef DacChnl[2]; 179 180 AUDCODEC_AdcChnlCfgTypeDef AdcChnl[2]; 181 182 DMA_HandleTypeDef *hdma[HAL_AUDCODEC_INSTANC_CNT]; /*!< AUDCODEC Tx/rx Channel DMA handle parameters */ 183 184 185 uint8_t *buf[HAL_AUDCODEC_INSTANC_CNT]; /*!< AUDCODEC data buffer */ 186 187 uint32_t dataSize[HAL_AUDCODEC_INSTANC_CNT]; /*!< AUDCODEC Data size */ 188 uint16_t bufSize; /*!< AUDCODEC Data buffer size */ 189 uint16_t channel_ref; /*!< HAL_AUDCODEC_ChannelTypeDef bitmap */ 190 191 __IO HAL_LockTypeDef Lock; /*!< AUDCODEC locking object */ 192 193 __IO HAL_AUDCODEC_StateTypeDef State[HAL_AUDCODEC_INSTANC_CNT]; /*!< AUDCODEC communication state */ 194 195 __IO uint32_t ErrorCode; /*!< AUDCODEC Error code 196 This parameter can be a value of @ref AUDCODEC_Error */ 197 } AUDCODEC_HandleTypeDef; 198 /** 199 * @} 200 */ 201 202 /* Exported constants --------------------------------------------------------*/ 203 /** @defgroup AUDCODEC_Exported_Constants AUDCODEC Exported Constants 204 * @{ 205 */ 206 /** @defgroup AUDCODEC_Error AUDCODEC Error 207 * @{ 208 */ 209 #define HAL_AUDCODEC_ERROR_NONE (0x00000000U) /*!< No error */ 210 #define HAL_AUDCODEC_ERROR_TIMEOUT (0x00000001U) /*!< Timeout error */ 211 #define HAL_AUDCODEC_ERROR_OVR (0x00000002U) /*!< OVR error */ 212 #define HAL_AUDCODEC_ERROR_UDR (0x00000004U) /*!< UDR error */ 213 #define HAL_AUDCODEC_ERROR_DMA (0x00000008U) /*!< DMA transfer error */ 214 #define HAL_AUDCODEC_ERROR_UNKNOW (0x00000010U) /*!< Unknow Error error */ 215 /** 216 * @} 217 */ 218 219 220 /** @defgroup AUDCODEC_Flag_definition AUDCODEC Flag definition 221 * @{ 222 */ 223 224 #define AUDCODEC_TX_OUT1_FIFO_UNDERF (1<<9) /*!< AUDCODEC STATUS TX OUT1 FIFO UNDER FLOW */ 225 #define AUDCODEC_TX_OUT0_FIFO_UNDERF (1<<8) /*!< AUDCODEC STATUS TX OUT0 FIFO UNDER FLOW */ 226 #define AUDCODEC_RX_IN_FIFO_OVERF (1<<7) /*!< AUDCODEC STATUS Rx IN FIFO OVER FLOW */ 227 #define AUDCODEC_TX_OUT_FIFO_UNDERF (1<<6) /*!< AUDCODEC STATUS TX OUT FIFO UNDER FLOW */ 228 #define AUDCODEC_RX1_FIFO_UNDERF (1<<5) /*!< AUDCODEC STATUS Rx0 FIF1 UNDER FLOW */ 229 #define AUDCODEC_RX0_FIFO_UNDERF (1<<4) /*!< AUDCODEC STATUS Rx0 FIFO UNDER FLOW */ 230 #define AUDCODEC_TX3_FIFO_OVERF (1<<3) /*!< AUDCODEC STATUS Tx3 FIFO OVER FLOW */ 231 #define AUDCODEC_TX2_FIFO_OVERF (1<<2) /*!< AUDCODEC STATUS Tx2 FIFO OVER FLOW */ 232 #define AUDCODEC_TX1_FIFO_OVERF (1<<1) /*!< AUDCODEC STATUS Tx1 FIFO OVER FLOW */ 233 #define AUDCODEC_TX0_FIFO_OVERF (1<<0) /*!< AUDCODEC STATUS Tx0 FIFO OVER FLOW */ 234 235 236 /** 237 * @} 238 */ 239 240 241 /** 242 * @} AUDCODEC_Exported_Constants 243 */ 244 245 /* Exported macros -----------------------------------------------------------*/ 246 /** @defgroup AUDCODEC_Exported_macros AUDCODEC Exported Macros 247 * @{ 248 */ 249 250 #ifdef SF32LB52X 251 252 /** @brief Enable audio codec . 253 * @param \__HANDLE__ specifies the AUDCODEC Handle. 254 * @retval None 255 */ 256 #define __HAL_AUDCODEC_DAC_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CFG |= AUDCODEC_CFG_DAC_ENABLE) 257 258 /** @brief Disable the AUDCODEC . 259 * @param \__HANDLE__ specifies the AUDCODEC Handle. 260 * @retval None 261 */ 262 #define __HAL_AUDCODEC_DAC_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CFG &= (~AUDCODEC_CFG_DAC_ENABLE)) 263 264 265 /** @brief Disable the AUDCODEC DAC CHannel0. 266 * @param \__HANDLE__ specifies the AUDCODEC Handle. 267 * @retval None 268 */ 269 #define __HAL_AUDCODEC_DAC_CH0_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->DAC_CH0_CFG &= (~AUDCODEC_DAC_CH0_CFG_ENABLE)) 270 271 /** @brief Disable the AUDCODEC DAC CHannel1. 272 * @param \__HANDLE__ specifies the AUDCODEC Handle. 273 * @retval None 274 */ 275 #define __HAL_AUDCODEC_DAC_CH1_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->DAC_CH1_CFG &= (~AUDCODEC_DAC_CH1_CFG_ENABLE)) 276 277 278 /** @brief Enable audio prc . 279 * @param \__HANDLE__ specifies the AUDCODEC Handle. 280 * @retval None 281 */ 282 #define __HAL_AUDCODEC_ADC_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CFG |= AUDCODEC_CFG_ADC_ENABLE) 283 284 /** @brief Disable the AUDCODEC . 285 * @param \__HANDLE__ specifies the AUDCODEC Handle. 286 * @retval None 287 */ 288 #define __HAL_AUDCODEC_ADC_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CFG &= (~AUDCODEC_CFG_ADC_ENABLE)) 289 290 /** @brief Disable the AUDCODEC ADC CHannel0. 291 * @param \__HANDLE__ specifies the AUDCODEC Handle. 292 * @retval None 293 */ 294 #define __HAL_AUDCODEC_ADC_CH0_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->ADC_CH0_CFG &= (~AUDCODEC_ADC_CH0_CFG_ENABLE)) 295 296 /** @brief Disable the AUDCODEC ADC CHannel1. 297 * @param \__HANDLE__ specifies the AUDCODEC Handle. 298 * @retval None 299 */ 300 #define __HAL_AUDCODEC_ADC_CH1_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->ADC_CH1_CFG &= (~AUDCODEC_ADC_CH1_CFG_ENABLE)) 301 302 #else 303 304 /** @brief Enable audio codec . 305 * @param \__HANDLE__ specifies the AUDCODEC Handle. 306 * @retval None 307 */ 308 #define __HAL_AUDCODEC_HP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance_hp->CFG |= AUDCODEC_HP_CFG_ENABLE) 309 310 /** @brief Disable the AUDCODEC . 311 * @param \__HANDLE__ specifies the AUDCODEC Handle. 312 * @retval None 313 */ 314 #define __HAL_AUDCODEC_HP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance_hp->CFG &= (~AUDCODEC_HP_CFG_ENABLE)) 315 316 317 /** @brief Disable the AUDCODEC DAC CHannel0. 318 * @param \__HANDLE__ specifies the AUDCODEC Handle. 319 * @retval None 320 */ 321 #define __HAL_AUDCODEC_HP_DAC_CH0_DISABLE(__HANDLE__) ((__HANDLE__)->Instance_hp->DAC_CH0_CFG &= (~AUDCODEC_HP_DAC_CH0_CFG_ENABLE)) 322 323 /** @brief Disable the AUDCODEC DAC CHannel1. 324 * @param \__HANDLE__ specifies the AUDCODEC Handle. 325 * @retval None 326 */ 327 #define __HAL_AUDCODEC_HP_DAC_CH1_DISABLE(__HANDLE__) ((__HANDLE__)->Instance_hp->DAC_CH1_CFG &= (~AUDCODEC_HP_DAC_CH1_CFG_ENABLE)) 328 329 330 331 332 /** @brief Enable audio prc . 333 * @param \__HANDLE__ specifies the AUDCODEC Handle. 334 * @retval None 335 */ 336 #define __HAL_AUDCODEC_LP_ENABLE(__HANDLE__) ((__HANDLE__)->Instance_lp->CFG |= AUDCODEC_LP_CFG_ENABLE) 337 338 /** @brief Disable the AUDCODEC . 339 * @param \__HANDLE__ specifies the AUDCODEC Handle. 340 * @retval None 341 */ 342 #define __HAL_AUDCODEC_LP_DISABLE(__HANDLE__) ((__HANDLE__)->Instance_lp->CFG &= (~AUDCODEC_LP_CFG_ENABLE)) 343 344 /** @brief Disable the AUDCODEC ADC CHannel0. 345 * @param \__HANDLE__ specifies the AUDCODEC Handle. 346 * @retval None 347 */ 348 #define __HAL_AUDCODEC_HP_ADC_CH0_DISABLE(__HANDLE__) ((__HANDLE__)->Instance_lp->ADC_CH0_CFG &= (~AUDCODEC_LP_ADC_CH0_CFG_ENABLE)) 349 350 /** @brief Disable the AUDCODEC ADC CHannel1. 351 * @param \__HANDLE__ specifies the AUDCODEC Handle. 352 * @retval None 353 */ 354 #define __HAL_AUDCODEC_HP_ADC_CH1_DISABLE(__HANDLE__) ((__HANDLE__)->Instance_lp->ADC_CH1_CFG &= (~AUDCODEC_LP_ADC_CH1_CFG_ENABLE)) 355 356 #endif 357 358 /** 359 * @} AUDCODEC_Exported_macros 360 */ 361 362 /* Exported functions --------------------------------------------------------*/ 363 /** @addtogroup AUDCODEC_Exported_Functions 364 * @{ 365 */ 366 HAL_StatusTypeDef HAL_AUDCODEC_Config_Analog_DACPath(AUDCODE_DAC_CLK_CONFIG_TYPE *cfg); 367 void HAL_TURN_OFF_PLL(); 368 369 void HAL_AUDCODEC_Close_Analog_DACPath(void); 370 371 void HAL_AUCODEC_Refgen_Init(void); 372 373 void HAL_AUDCODEC_Config_Analog_ADCPath(AUDCODE_ADC_CLK_CONFIG_TYPE *cfg); 374 375 void HAL_AUDCODEC_Close_Analog_ADCPath(void); 376 377 378 /** @addtogroup AUDCODEC_Exported_Functions_Group1 379 * @{ 380 */ 381 /* Initialization/de-initialization functions **********************************/ 382 383 /** 384 * @brief Initializes the AUDCODEC according to the specified parameters 385 * in the AUDCODEC_InitTypeDef and create the associated handle. 386 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 387 * the configuration information for AUDCODEC module 388 * @retval HAL status 389 */ 390 HAL_StatusTypeDef HAL_AUDCODEC_Init(AUDCODEC_HandleTypeDef *hacodec); 391 392 /** 393 * @brief DeInitializes the AUDCODEC peripheral 394 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 395 * the configuration information for AUDCODEC module 396 * @retval HAL status 397 */ 398 HAL_StatusTypeDef HAL_AUDCODEC_DeInit(AUDCODEC_HandleTypeDef *hacodec); 399 400 /** 401 * @brief Initializes the AUDCODEC pin setting. 402 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 403 * the configuration information for AUDCODEC module 404 * @retval None 405 */ 406 void HAL_AUDCODEC_MspInit(AUDCODEC_HandleTypeDef *hacodec); 407 408 /** 409 * @brief deunitializes the AUDCODEC pin setting. 410 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 411 * the configuration information for AUDCODEC module 412 * @retval None 413 */ 414 void HAL_AUDCODEC_MspDeInit(AUDCODEC_HandleTypeDef *hacodec); 415 /** 416 * @} AUDCODEC_Exported_Functions_Group1 417 */ 418 419 /** @addtogroup AUDCODEC_Exported_Functions_Group2 420 * @{ 421 */ 422 /* I/O operation functions ***************************************************/ 423 /* Configure AUDCODEC parameters */ 424 425 /** 426 * @brief Set AUDCODEC transmit channel configures. 427 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 428 * the configuration information for AUDCODEC module 429 * @param channel: configure channel number 430 * @param cfg: configure parameters 431 * @retval HAL status 432 */ 433 HAL_StatusTypeDef HAL_AUDCODEC_Config_TChanel(AUDCODEC_HandleTypeDef *hacodec, int channel, AUDCODEC_DACCfgTypeDef *cfg); 434 435 /** 436 * @brief Set AUDCODEC Receive configures. 437 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 438 * the configuration information for AUDCODEC module 439 * @param channel: configure channel number 440 * @param cfg: configure parameters 441 * @retval HAL status 442 */ 443 HAL_StatusTypeDef HAL_AUDCODEC_Config_RChanel(AUDCODEC_HandleTypeDef *hacodec, int channel, AUDCODEC_ADCCfgTypeDef *cfg); 444 445 446 /** 447 * @brief all channel disable 448 * @param hacodec -pointer to a AUDCODEC_HandleTypeDef structure that contains 449 * the configuration information for AUDCODEC module 450 * @param ch_type_bit : bit0 is dac, bit1 is adc 451 * @return HAL status 452 */ 453 HAL_StatusTypeDef HAL_AUDCODEC_Clear_All_Channel(AUDCODEC_HandleTypeDef *hacodec, uint8_t ch_type_bit); 454 455 456 /** 457 * @brief Configure DAC path volume. 458 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 459 * the configuration information for AUDCODEC module 460 * @param channel: channel 0 or 1 461 * @param volume: configure volume -36dB~54dB, unit is 0.5db, use fix point Q15.1 format 462 * @retval HAL status 463 */ 464 HAL_StatusTypeDef HAL_AUDCODEC_Config_DACPath_Volume(AUDCODEC_HandleTypeDef *hacodec, int channel, int volume); 465 466 /** 467 * @brief Bypass DAC path. 468 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 469 * the configuration information for AUDCODEC module 470 * @param bypass 1:enable, 0: disable 471 * @retval HAL status 472 */ 473 HAL_StatusTypeDef HAL_AUDCODEC_Config_DACPath(AUDCODEC_HandleTypeDef *hacodec, uint16_t bypass); 474 475 476 /** 477 * @brief Configure DAC path mute. 478 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 479 * the configuration information for AUDCODEC module 480 * @param mute: is mute or not 481 * @retval HAL status 482 */ 483 HAL_StatusTypeDef HAL_AUDCODEC_Mute_DACPath(AUDCODEC_HandleTypeDef *hacodec, int mute); 484 485 486 /** 487 * @brief Configure ADC path. 488 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 489 * the configuration information for AUDCODEC module 490 * @param cfg: configure parameters 491 * @retval HAL status 492 */ 493 HAL_StatusTypeDef HAL_AUDCODEC_Config_ADCPath(AUDCODEC_HandleTypeDef *hacodec, AUDCODEC_ADCCfgTypeDef *cfg); 494 495 496 /** 497 * @} AUDCODEC_Exported_Functions_Group2 498 */ 499 500 /** @addtogroup AUDCODEC_Exported_Functions_Group3 501 * @{ 502 */ 503 /* DMA operation functions ***************************************************/ 504 505 /** 506 * @brief Set AUDCODEC Transmit data with DMA mode. 507 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 508 * the configuration information for AUDCODEC module 509 * @param pData: data buffer 510 * @param Size: data length need to be transmit 511 * @param did: DMA channel index 512 * @retval HAL status 513 */ 514 515 HAL_StatusTypeDef HAL_AUDCODEC_Transmit_DMA(AUDCODEC_HandleTypeDef *hacodec, uint8_t *pData, uint32_t Size, uint32_t did); 516 517 /** 518 * @brief Set AUDCODEC Receive configures. 519 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 520 * the configuration information for AUDCODEC module 521 * @param pData: data buffer 522 * @param Size: data length need to be transmit 523 * @param did: DMA channel index 524 * @retval HAL status 525 */ 526 HAL_StatusTypeDef HAL_AUDCODEC_Receive_DMA(AUDCODEC_HandleTypeDef *hacodec, uint8_t *pData, uint32_t Size, uint32_t did); 527 528 /** 529 * @brief Stop AUD PRC DMA. 530 * @param hacodec: pointer to a AUDCODEC_HandleTypeDef structure that contains 531 * the configuration information for AUDCODEC module 532 * @param did: DMA channel index 533 * @retval HAL status 534 */ 535 HAL_StatusTypeDef HAL_AUDCODEC_DMAStop(AUDCODEC_HandleTypeDef *hacodec, uint32_t did); 536 537 void set_pll_state(uint8_t state); 538 uint8_t get_pll_state(); 539 void set_pll_freq_type(uint8_t type); 540 uint8_t get_pll_freq_type(); 541 int updata_pll_freq(uint8_t type); 542 int bf0_enable_pll(uint32_t freq, uint8_t type); 543 void bf0_disable_pll(); 544 void HAL_TURN_ON_PLL(); 545 546 /** 547 * @} AUDCODEC_Exported_Functions_Group3 548 */ 549 550 /** 551 * @} AUDCODEC_Exported_Functions 552 */ 553 554 /** 555 * @} AUDCODEC 556 */ 557 558 /** 559 * @} BF0_HAL_Driver 560 */ 561 562 #ifdef __cplusplus 563 } 564 #endif 565 566 567 #endif /* __BF0_HAL_I2S_H */