sp
BSP_AudioIn_Overwrite.cpp@0:f255629eada1, 2019-06-07 (annotated)
- Committer:
- phungductung
- Date:
- Fri Jun 07 05:10:10 2019 +0000
- Revision:
- 0:f255629eada1
spkt; ;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |