#include #include "yc11xx.h" #include "yc11xx_uart.h" #include "yc11xx_gpio.h" #include "Drv_mic.h" #include "system.h" #define LED_GPIO 4 extern MIC_CUR_VARIABLE sMicCurVariable; void LED_Run(void) { static uint32_t times = 0; times++; if(times>0x100) { times = 0; GPIO_CONFIG(LED_GPIO) = (GPIO_CONFIG(LED_GPIO)==GPCFG_OUTPUT_HIGH)? GPCFG_OUTPUT_LOW: GPCFG_OUTPUT_HIGH; } } /* * @method Audio_sampling_init * @brief mic adc init * @retval None */ void Audio_sampling_init() { DRV_Mic_Init(); DRV_Mic_Enable(); } /* * @method Audio_get_buffer_len * @brief Get adc dma buf unread data length. * @retval None */ int Audio_get_buffer_len() { int audioWPtr = HREADW(CORE_ADCD_ADDR) ; int audioRPtr = TO_16BIT_ADDR(sMicCurVariable.mReadPtr) ; int audioBufferLen = (int)(sMicCurVariable.mEndPtr - sMicCurVariable.mReadBufPtr); if(audioRPtr <= audioWPtr) { return (audioWPtr - audioRPtr); } else { return (audioBufferLen - (audioRPtr - audioWPtr)); } } /* * @method Audio_to_uart_start * @brief read mic adc data for adc_dma_buf, and send mic adc data by uart. * @retval None */ void Audio_to_uart_start() { if (sMicCurVariable.mMicEnable == MIC_DISABLE) return; int audioWPtr = HREADW(CORE_ADCD_ADDR) ; int bufferLen = Audio_get_buffer_len(); if (bufferLen != 0 && bufferLen >= ENCODE_INPUT_LEN) { //Original sound sampling(pcm) for(int indexL = 0; indexL < ENCODE_INPUT_LEN; indexL++) MyPrintf("%c",*(sMicCurVariable.mReadPtr + indexL)); sMicCurVariable.mReadPtr += ENCODE_INPUT_LEN; if (sMicCurVariable.mReadPtr == sMicCurVariable.mEndPtr) sMicCurVariable.mReadPtr = sMicCurVariable.mReadBufPtr; } } int main(void) { printport_init(); GPIO_CONFIG(LED_GPIO)= GPCFG_OUTPUT_LOW; Audio_sampling_init(); while(1) { LED_Run(); Audio_to_uart_start(); } }