SPKT

Dependencies:   Array_Matrix

Dependents:   Player

Committer:
phungductung
Date:
Fri Jun 07 05:10:10 2019 +0000
Revision:
0:f255629eada1
spkt; ;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
phungductung 0:f255629eada1 1 //------------------------------------------------------------------------------
phungductung 0:f255629eada1 2 // Overwrite functuions and define calback function
phungductung 0:f255629eada1 3 // for functions in stm32746g_discovery_audio.cpp
phungductung 0:f255629eada1 4 //
phungductung 0:f255629eada1 5 // Original version: BSP_overwrite.cpp by Nanase
phungductung 0:f255629eada1 6 // https://developer.mbed.org/users/nanase/code/DISCO-F746NG_Oscilloscope/
phungductung 0:f255629eada1 7 //------------------------------------------------------------------------------
phungductung 0:f255629eada1 8
phungductung 0:f255629eada1 9 #include "BSP_AudioIn_Overwrite.hpp"
phungductung 0:f255629eada1 10
phungductung 0:f255629eada1 11 // These three callback functions are modyfied by Mikami
phungductung 0:f255629eada1 12 void BSP_AUDIO_IN_HalfTransfer_CallBack()
phungductung 0:f255629eada1 13 {
phungductung 0:f255629eada1 14 Mikami::SaiIO::Captured1st();
phungductung 0:f255629eada1 15 }
phungductung 0:f255629eada1 16
phungductung 0:f255629eada1 17 void BSP_AUDIO_IN_TransferComplete_CallBack()
phungductung 0:f255629eada1 18 {
phungductung 0:f255629eada1 19 Mikami::SaiIO::Captured2nd();
phungductung 0:f255629eada1 20 }
phungductung 0:f255629eada1 21
phungductung 0:f255629eada1 22 void BSP_AUDIO_IN_Error_CallBack()
phungductung 0:f255629eada1 23 {
phungductung 0:f255629eada1 24 Mikami::SaiIO::ErrorTrap();
phungductung 0:f255629eada1 25 }
phungductung 0:f255629eada1 26
phungductung 0:f255629eada1 27 //--------------------------------------------------------------
phungductung 0:f255629eada1 28 // Followings are original by Nanase
phungductung 0:f255629eada1 29 //--------------------------------------------------------------
phungductung 0:f255629eada1 30
phungductung 0:f255629eada1 31 DMA_HandleTypeDef hdma_sai_rx;
phungductung 0:f255629eada1 32
phungductung 0:f255629eada1 33 void AUDIO_IN_SAIx_DMAx_IRQHandler()
phungductung 0:f255629eada1 34 {
phungductung 0:f255629eada1 35 HAL_DMA_IRQHandler(&hdma_sai_rx);
phungductung 0:f255629eada1 36 }
phungductung 0:f255629eada1 37
phungductung 0:f255629eada1 38 void BSP_AUDIO_IN_MspInit(SAI_HandleTypeDef *hsai, void *Params)
phungductung 0:f255629eada1 39 {
phungductung 0:f255629eada1 40 GPIO_InitTypeDef gpio_init_structure;
phungductung 0:f255629eada1 41
phungductung 0:f255629eada1 42 /* Enable SAI clock */
phungductung 0:f255629eada1 43 AUDIO_IN_SAIx_CLK_ENABLE();
phungductung 0:f255629eada1 44
phungductung 0:f255629eada1 45 /* Enable SD GPIO clock */
phungductung 0:f255629eada1 46 AUDIO_IN_SAIx_SD_ENABLE();
phungductung 0:f255629eada1 47 /* CODEC_SAI pin configuration: SD pin */
phungductung 0:f255629eada1 48 gpio_init_structure.Pin = AUDIO_IN_SAIx_SD_PIN;
phungductung 0:f255629eada1 49 gpio_init_structure.Mode = GPIO_MODE_AF_PP;
phungductung 0:f255629eada1 50 gpio_init_structure.Pull = GPIO_NOPULL;
phungductung 0:f255629eada1 51 gpio_init_structure.Speed = GPIO_SPEED_FAST;
phungductung 0:f255629eada1 52 gpio_init_structure.Alternate = AUDIO_IN_SAIx_SD_AF;
phungductung 0:f255629eada1 53 HAL_GPIO_Init(AUDIO_IN_SAIx_SD_GPIO_PORT, &gpio_init_structure);
phungductung 0:f255629eada1 54
phungductung 0:f255629eada1 55 /* Enable Audio INT GPIO clock */
phungductung 0:f255629eada1 56 AUDIO_IN_INT_GPIO_ENABLE();
phungductung 0:f255629eada1 57 /* Audio INT pin configuration: input */
phungductung 0:f255629eada1 58 gpio_init_structure.Pin = AUDIO_IN_INT_GPIO_PIN;
phungductung 0:f255629eada1 59 gpio_init_structure.Mode = GPIO_MODE_INPUT;
phungductung 0:f255629eada1 60 gpio_init_structure.Pull = GPIO_NOPULL;
phungductung 0:f255629eada1 61 gpio_init_structure.Speed = GPIO_SPEED_FAST;
phungductung 0:f255629eada1 62 HAL_GPIO_Init(AUDIO_IN_INT_GPIO_PORT, &gpio_init_structure);
phungductung 0:f255629eada1 63
phungductung 0:f255629eada1 64 /* Enable the DMA clock */
phungductung 0:f255629eada1 65 AUDIO_IN_SAIx_DMAx_CLK_ENABLE();
phungductung 0:f255629eada1 66
phungductung 0:f255629eada1 67 if(hsai->Instance == AUDIO_IN_SAIx)
phungductung 0:f255629eada1 68 {
phungductung 0:f255629eada1 69 /* Configure the hdma_sai_rx handle parameters */
phungductung 0:f255629eada1 70 hdma_sai_rx.Init.Channel = AUDIO_IN_SAIx_DMAx_CHANNEL;
phungductung 0:f255629eada1 71 hdma_sai_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
phungductung 0:f255629eada1 72 hdma_sai_rx.Init.PeriphInc = DMA_PINC_DISABLE;
phungductung 0:f255629eada1 73 hdma_sai_rx.Init.MemInc = DMA_MINC_ENABLE;
phungductung 0:f255629eada1 74 hdma_sai_rx.Init.PeriphDataAlignment = AUDIO_IN_SAIx_DMAx_PERIPH_DATA_SIZE;
phungductung 0:f255629eada1 75 hdma_sai_rx.Init.MemDataAlignment = AUDIO_IN_SAIx_DMAx_MEM_DATA_SIZE;
phungductung 0:f255629eada1 76 hdma_sai_rx.Init.Mode = DMA_CIRCULAR;
phungductung 0:f255629eada1 77 hdma_sai_rx.Init.Priority = DMA_PRIORITY_HIGH;
phungductung 0:f255629eada1 78 hdma_sai_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
phungductung 0:f255629eada1 79 hdma_sai_rx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
phungductung 0:f255629eada1 80 hdma_sai_rx.Init.MemBurst = DMA_MBURST_SINGLE;
phungductung 0:f255629eada1 81 hdma_sai_rx.Init.PeriphBurst = DMA_MBURST_SINGLE;
phungductung 0:f255629eada1 82
phungductung 0:f255629eada1 83 hdma_sai_rx.Instance = AUDIO_IN_SAIx_DMAx_STREAM;
phungductung 0:f255629eada1 84
phungductung 0:f255629eada1 85 /* Associate the DMA handle */
phungductung 0:f255629eada1 86 __HAL_LINKDMA(hsai, hdmarx, hdma_sai_rx);
phungductung 0:f255629eada1 87
phungductung 0:f255629eada1 88 /* Deinitialize the Stream for new transfer */
phungductung 0:f255629eada1 89 HAL_DMA_DeInit(&hdma_sai_rx);
phungductung 0:f255629eada1 90
phungductung 0:f255629eada1 91 /* Configure the DMA Stream */
phungductung 0:f255629eada1 92 HAL_DMA_Init(&hdma_sai_rx);
phungductung 0:f255629eada1 93 }
phungductung 0:f255629eada1 94
phungductung 0:f255629eada1 95 /* SAI DMA IRQ Channel configuration */
phungductung 0:f255629eada1 96 HAL_NVIC_SetPriority(AUDIO_IN_SAIx_DMAx_IRQ, AUDIO_IN_IRQ_PREPRIO, 0);
phungductung 0:f255629eada1 97 HAL_NVIC_EnableIRQ(AUDIO_IN_SAIx_DMAx_IRQ);
phungductung 0:f255629eada1 98
phungductung 0:f255629eada1 99 /* Audio INT IRQ Channel configuration */
phungductung 0:f255629eada1 100 HAL_NVIC_SetPriority(AUDIO_IN_INT_IRQ, AUDIO_IN_IRQ_PREPRIO, 0);
phungductung 0:f255629eada1 101 HAL_NVIC_EnableIRQ(AUDIO_IN_INT_IRQ);
phungductung 0:f255629eada1 102 }