Audio Examples

Table of Contents


Variables used in the following cases are defined as below

#define MIC_BUFFER_SIZE 4096
volatile signed short MicBuf[MIC_BUFFER_SIZE>>1];

API-AUDIO-CASE1:AMIC To USB

Function Sub-Function APIs Description Update Status
irq_handler() None Interrupt handler function [Mandatory] 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() usb_set_pin_en() open the DP and DM of USB and enable 1.5k internal pull-up resistor
usb_irq_init() enable manual interrupt
irq_enable() enable global interrupt
audio_config_mic_buf() audio_config_mic_buf((unsigned short*)MicBuf,MIC_BUFFER_SIZE) set the address and size of buffer for AMIC
gpio_set_func()
gpio_set_output_en()
gpio_set_input_en()
gpio_write()
gpio_set_func(GPIO_PC4, AS_GPIO)
gpio_set_output_en(GPIO_PC4, 1)
gpio_set_input_en(GPIO_PC4 ,0)
gpio_write(GPIO_PC4, 1)
initiate the gpio pin for BIAS of AMIC
audio_amic_init() audio_amic_init(AUDIO_16K) initiate AMIC module as audio input path
audio_set_usb_output() audio_set_usb_output(AMIC,AUDIO_16K) set USB as audio output path
main_loop() usb_handle_irq_process() handle with USB interrupt
if(usb_audio_mic_cnt) determine whether the specified interrupt flag is generated
>audio_tx_data_to_usb(AMIC, AUDIO_16K) audio_tx_data_to_usb() send data to USB Host if the specified interrupt flag is generated
>usb_audio_mic_cnt=0 clear flag and wait for that next interrupt flag

API-AUDIO-CASE2:AMIC To SDM

Function Sub-Function APIs Description Update Status
irq_handler() None Interrupt handler function [Mandatory] 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() usb_set_pin_en() open the DP and DM of USB and enable 1.5k internal pull-up resistor
gpio_set_func()
gpio_set_output_en()
gpio_set_input_en()
gpio_write()
gpio_set_func(GPIO_PC4, AS_GPIO)
gpio_set_output_en(GPIO_PC4, 1)
gpio_set_input_en(GPIO_PC4 ,0)
gpio_write(GPIO_PC4, 1)
initiate the gpio pin for BIAS of AMIC
audio_config_mic_buf() audio_config_mic_buf((unsigned short*)MicBuf,MIC_BUFFER_SIZE) set the address and size of buffer for AMIC
audio_amic_init() audio_amic_init(AUDIO_16K) initiate AMIC module as audio input path
audio_set_sdm_output() audio_set_sdm_output(AMIC,AUDIO_16K,1) set SDM as audio output path
main_loop() None Main program loop

API-AUDIO-CASE3:AMIC To I2S

Function Sub-Function APIs Description Update Status
irq_handler() None Interrupt handler function [Mandatory] 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() usb_set_pin_en() open the DP and DM of USB and enable 1.5k internal pull-up resistor
gpio_set_func()
gpio_set_output_en()
gpio_set_input_en()
gpio_write()
gpio_set_func(GPIO_PC4, AS_GPIO)
gpio_set_output_en(GPIO_PC4, 1)
gpio_set_input_en(GPIO_PC4 ,0)
gpio_write(GPIO_PC4, 1)
initiate the gpio pin for BIAS of AMIC
audio_config_mic_buf() audio_config_mic_buf((unsigned short*)MicBuf,MIC_BUFFER_SIZE) set the address and size of buffer for AMIC
audio_amic_init() audio_amic_init(AUDIO_16K) initiate AMIC module as audio input path
audio_set_i2s_output() audio_set_i2s_output(AMIC,AUDIO_32K) set I2S as audio output path
main_loop() None Main program loop

API-AUDIO-CASE4:DMIC To USB

Function Sub-Function APIs Description Update Status
irq_handler() None Interrupt handler function [Mandatory] 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() usb_set_pin_en() open the DP and DM of USB and enable 1.5k internal pull-up resistor
usb_irq_init() enable manual interrupt
irq_enable() enable global interrupt
gpio_set_func()

gpio_set_input_en()
gpio_set_func(GPIO_PA0, AS_DMIC)
gpio_set_func(GPIO_PA1, AS_DMIC)
gpio_set_input_en(GPIO_PA0, 1)
initiate the gpio pin for DATA and CLK of DMIC
audio_config_mic_buf() audio_config_mic_buf((unsigned short*)MicBuf,MIC_BUFFER_SIZE) set the address and size of buffer for AMIC
audio_dmic_init() audio_dmic_init(AUDIO_16K) initiate DMIC module as audio input path
audio_set_usb_output() audio_set_usb_output(DMIC,AUDIO_16K) set USB as audio output path
main_loop() usb_handle_irq_process() handle with USB interrupt
if(usb_audio_mic_cnt) determine whether the specified interrupt flag is generated
>audio_tx_data_to_usb(AMIC, AUDIO_16K) audio_tx_data_to_usb() send data to USB Host if the specified interrupt flag is generated
>usb_audio_mic_cnt=0 clear flag and wait for that next interrupt flag

API-AUDIO-CASE5:DMIC To SDM

Function Sub-Function APIs Description Update Status
irq_handler() None Interrupt handler function [Mandatory] 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() usb_set_pin_en() open the DP and DM of USB and enable 1.5k internal pull-up resistor
gpio_set_func()

gpio_set_input_en()
gpio_set_func(GPIO_PA0, AS_DMIC)
gpio_set_func(GPIO_PA1, AS_DMIC)
gpio_set_input_en(GPIO_PA0, 1)
initiate the gpio pin for DATA and CLK of DMIC
audio_config_mic_buf() audio_config_mic_buf((unsigned short*)MicBuf,MIC_BUFFER_SIZE) set the address and size of buffer for AMIC
audio_dmic_init() audio_dmic_init(AUDIO_16K) initiate DMIC module as audio input path
audio_set_sdm_output() audio_set_sdm_output(DMIC,AUDIO_16K,1) set SDM as audio output path
main_loop() None Main program loop

API-AUDIO-CASE6:DMIC To I2S

Function Sub-Function APIs Description Update Status
irq_handler() None Interrupt handler function [Mandatory] 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() usb_set_pin_en() open the DP and DM of USB and enable 1.5k internal pull-up resistor
gpio_set_func()

gpio_set_input_en()
gpio_set_func(GPIO_PA0, AS_DMIC)
gpio_set_func(GPIO_PA1, AS_DMIC)
gpio_set_input_en(GPIO_PA0, 1)
initiate the gpio pin for DATA and CLK of DMIC
audio_config_mic_buf() audio_config_mic_buf((unsigned short*)MicBuf,MIC_BUFFER_SIZE) set the address and size of buffer for AMIC
audio_dmic_init() audio_dmic_init(AUDIO_32K) initiate DMIC module as audio input path
audio_set_i2s_output() audio_set_i2s_output(AMIC,AUDIO_32K); set I2S as audio output path
main_loop() None Main program loop

API-AUDIO-CASE7:I2S To USB

Function Sub-Function APIs Description Update Status
irq_handler() None Interrupt handler function [Mandatory] 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() usb_set_pin_en() open the DP and DM of USB and enable 1.5k internal pull-up resistor
usb_irq_init() enable manual interrupt
irq_enable() enable global interrupt
audio_config_mic_buf() audio_config_mic_buf((unsigned short*)MicBuf,MIC_BUFFER_SIZE) set the address and size of buffer for AMIC
audio_i2s_init() initiate I2S module as audio input path
audio_set_usb_output() audio_set_usb_output(DMIC,AUDIO_16K) set USB as audio output path
main_loop() usb_handle_irq_process() handle with USB interrupt
if(usb_audio_mic_cnt) determine whether the specified interrupt flag is generated
>audio_tx_data_to_usb(AMIC, AUDIO_16K) audio_tx_data_to_usb() send data to USB Host if the specified interrupt flag is generated
>usb_audio_mic_cnt=0 clear flag and wait for that next interrupt flag

API-AUDIO-CASE8:I2S To SDM

API-AUDIO-CASE9:USB To SDM

Function Sub-Function APIs Description Update Status
irq_handler() None Interrupt handler function [Mandatory] 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_1M) RF mode initialization [optional]
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() usb_set_pin_en() open the DP and DM of USB and enable 1.5k internal pull-up resistor
usb_irq_init() enable manual interrupt
irq_enable() enable global interrupt
audio_config_mic_buf() audio_config_mic_buf((unsigned short*)MicBuf,MIC_BUFFER_SIZE) set the address and size of buffer for AMIC
audio_set_sdm_output() audio_set_sdm_output(DMIC,AUDIO_16K,1) set SDM as audio output path
audio_set_usb_output() audio_set_usb_output(USB_IN,AUDIO_16K) set USB as audio output path
main_loop() usb_handle_irq_process() handle with USB interrupt
if(usb_audio_speaker_cnt) determine whether the specified interrupt flag is generated
>audio_rx_data_from_usb() audio_rx_data_from_usb() receive data from USB Host if the specified interrupt flag is generated
>usb_audio_speaker_cnt=0 clear flag and wait for that next interrupt flag

API-AUDIO-CASE10:USB To I2S

History Record

Date Description Author
2019-1-10 initial release ZJY/LJW