DISCO-F746NGのAudioInからの音声信号をLCDに波形として出力する、簡易なオシロスコープです。 This program is easy oscilloscope. The program draws waveform of signals from AudioIn on DISCO-F746NG.
Dependencies: BSP_DISCO_F746NG_patch_fixed LCD_DISCO_F746NG mbed
BSP_overwrite.cpp@0:36a62c23e60c, 2015-12-26 (annotated)
- Committer:
- nanase
- Date:
- Sat Dec 26 14:51:48 2015 +0000
- Revision:
- 0:36a62c23e60c
First commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nanase | 0:36a62c23e60c | 1 | #include "main.h" |
nanase | 0:36a62c23e60c | 2 | |
nanase | 0:36a62c23e60c | 3 | DMA_HandleTypeDef hdma_sai_rx; |
nanase | 0:36a62c23e60c | 4 | |
nanase | 0:36a62c23e60c | 5 | /* ----- AUDIO IN ----- */ |
nanase | 0:36a62c23e60c | 6 | |
nanase | 0:36a62c23e60c | 7 | void BSP_AUDIO_IN_HalfTransfer_CallBack(void) |
nanase | 0:36a62c23e60c | 8 | { |
nanase | 0:36a62c23e60c | 9 | audio_in_buffer_offset = 0; |
nanase | 0:36a62c23e60c | 10 | audio_in_buffer_length = BufferSize / 2; |
nanase | 0:36a62c23e60c | 11 | audio_in_buffer_captured = true; |
nanase | 0:36a62c23e60c | 12 | } |
nanase | 0:36a62c23e60c | 13 | |
nanase | 0:36a62c23e60c | 14 | void BSP_AUDIO_IN_TransferComplete_CallBack(void) |
nanase | 0:36a62c23e60c | 15 | { |
nanase | 0:36a62c23e60c | 16 | audio_in_buffer_offset = BufferSize / 2; |
nanase | 0:36a62c23e60c | 17 | audio_in_buffer_length = BufferSize / 2; |
nanase | 0:36a62c23e60c | 18 | audio_in_buffer_captured = true; |
nanase | 0:36a62c23e60c | 19 | } |
nanase | 0:36a62c23e60c | 20 | |
nanase | 0:36a62c23e60c | 21 | void BSP_AUDIO_IN_Error_CallBack(void) |
nanase | 0:36a62c23e60c | 22 | { |
nanase | 0:36a62c23e60c | 23 | error_trap(); |
nanase | 0:36a62c23e60c | 24 | } |
nanase | 0:36a62c23e60c | 25 | |
nanase | 0:36a62c23e60c | 26 | void AUDIO_IN_SAIx_DMAx_IRQHandler(void) |
nanase | 0:36a62c23e60c | 27 | { |
nanase | 0:36a62c23e60c | 28 | HAL_DMA_IRQHandler(&hdma_sai_rx); |
nanase | 0:36a62c23e60c | 29 | } |
nanase | 0:36a62c23e60c | 30 | |
nanase | 0:36a62c23e60c | 31 | void BSP_AUDIO_IN_MspInit(SAI_HandleTypeDef *hsai, void *Params) |
nanase | 0:36a62c23e60c | 32 | { |
nanase | 0:36a62c23e60c | 33 | //static DMA_HandleTypeDef hdma_sai_rx; |
nanase | 0:36a62c23e60c | 34 | GPIO_InitTypeDef gpio_init_structure; |
nanase | 0:36a62c23e60c | 35 | |
nanase | 0:36a62c23e60c | 36 | /* Enable SAI clock */ |
nanase | 0:36a62c23e60c | 37 | AUDIO_IN_SAIx_CLK_ENABLE(); |
nanase | 0:36a62c23e60c | 38 | |
nanase | 0:36a62c23e60c | 39 | /* Enable SD GPIO clock */ |
nanase | 0:36a62c23e60c | 40 | AUDIO_IN_SAIx_SD_ENABLE(); |
nanase | 0:36a62c23e60c | 41 | /* CODEC_SAI pin configuration: SD pin */ |
nanase | 0:36a62c23e60c | 42 | gpio_init_structure.Pin = AUDIO_IN_SAIx_SD_PIN; |
nanase | 0:36a62c23e60c | 43 | gpio_init_structure.Mode = GPIO_MODE_AF_PP; |
nanase | 0:36a62c23e60c | 44 | gpio_init_structure.Pull = GPIO_NOPULL; |
nanase | 0:36a62c23e60c | 45 | gpio_init_structure.Speed = GPIO_SPEED_FAST; |
nanase | 0:36a62c23e60c | 46 | gpio_init_structure.Alternate = AUDIO_IN_SAIx_SD_AF; |
nanase | 0:36a62c23e60c | 47 | HAL_GPIO_Init(AUDIO_IN_SAIx_SD_GPIO_PORT, &gpio_init_structure); |
nanase | 0:36a62c23e60c | 48 | |
nanase | 0:36a62c23e60c | 49 | /* Enable Audio INT GPIO clock */ |
nanase | 0:36a62c23e60c | 50 | AUDIO_IN_INT_GPIO_ENABLE(); |
nanase | 0:36a62c23e60c | 51 | /* Audio INT pin configuration: input */ |
nanase | 0:36a62c23e60c | 52 | gpio_init_structure.Pin = AUDIO_IN_INT_GPIO_PIN; |
nanase | 0:36a62c23e60c | 53 | gpio_init_structure.Mode = GPIO_MODE_INPUT; |
nanase | 0:36a62c23e60c | 54 | gpio_init_structure.Pull = GPIO_NOPULL; |
nanase | 0:36a62c23e60c | 55 | gpio_init_structure.Speed = GPIO_SPEED_FAST; |
nanase | 0:36a62c23e60c | 56 | HAL_GPIO_Init(AUDIO_IN_INT_GPIO_PORT, &gpio_init_structure); |
nanase | 0:36a62c23e60c | 57 | |
nanase | 0:36a62c23e60c | 58 | /* Enable the DMA clock */ |
nanase | 0:36a62c23e60c | 59 | AUDIO_IN_SAIx_DMAx_CLK_ENABLE(); |
nanase | 0:36a62c23e60c | 60 | |
nanase | 0:36a62c23e60c | 61 | if(hsai->Instance == AUDIO_IN_SAIx) { |
nanase | 0:36a62c23e60c | 62 | /* Configure the hdma_sai_rx handle parameters */ |
nanase | 0:36a62c23e60c | 63 | hdma_sai_rx.Init.Channel = AUDIO_IN_SAIx_DMAx_CHANNEL; |
nanase | 0:36a62c23e60c | 64 | hdma_sai_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; |
nanase | 0:36a62c23e60c | 65 | hdma_sai_rx.Init.PeriphInc = DMA_PINC_DISABLE; |
nanase | 0:36a62c23e60c | 66 | hdma_sai_rx.Init.MemInc = DMA_MINC_ENABLE; |
nanase | 0:36a62c23e60c | 67 | hdma_sai_rx.Init.PeriphDataAlignment = AUDIO_IN_SAIx_DMAx_PERIPH_DATA_SIZE; |
nanase | 0:36a62c23e60c | 68 | hdma_sai_rx.Init.MemDataAlignment = AUDIO_IN_SAIx_DMAx_MEM_DATA_SIZE; |
nanase | 0:36a62c23e60c | 69 | hdma_sai_rx.Init.Mode = DMA_CIRCULAR; |
nanase | 0:36a62c23e60c | 70 | hdma_sai_rx.Init.Priority = DMA_PRIORITY_HIGH; |
nanase | 0:36a62c23e60c | 71 | hdma_sai_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; |
nanase | 0:36a62c23e60c | 72 | hdma_sai_rx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; |
nanase | 0:36a62c23e60c | 73 | hdma_sai_rx.Init.MemBurst = DMA_MBURST_SINGLE; |
nanase | 0:36a62c23e60c | 74 | hdma_sai_rx.Init.PeriphBurst = DMA_MBURST_SINGLE; |
nanase | 0:36a62c23e60c | 75 | |
nanase | 0:36a62c23e60c | 76 | hdma_sai_rx.Instance = AUDIO_IN_SAIx_DMAx_STREAM; |
nanase | 0:36a62c23e60c | 77 | |
nanase | 0:36a62c23e60c | 78 | /* Associate the DMA handle */ |
nanase | 0:36a62c23e60c | 79 | __HAL_LINKDMA(hsai, hdmarx, hdma_sai_rx); |
nanase | 0:36a62c23e60c | 80 | |
nanase | 0:36a62c23e60c | 81 | /* Deinitialize the Stream for new transfer */ |
nanase | 0:36a62c23e60c | 82 | HAL_DMA_DeInit(&hdma_sai_rx); |
nanase | 0:36a62c23e60c | 83 | |
nanase | 0:36a62c23e60c | 84 | /* Configure the DMA Stream */ |
nanase | 0:36a62c23e60c | 85 | HAL_DMA_Init(&hdma_sai_rx); |
nanase | 0:36a62c23e60c | 86 | } |
nanase | 0:36a62c23e60c | 87 | |
nanase | 0:36a62c23e60c | 88 | /* SAI DMA IRQ Channel configuration */ |
nanase | 0:36a62c23e60c | 89 | HAL_NVIC_SetPriority(AUDIO_IN_SAIx_DMAx_IRQ, AUDIO_IN_IRQ_PREPRIO, 0); |
nanase | 0:36a62c23e60c | 90 | HAL_NVIC_EnableIRQ(AUDIO_IN_SAIx_DMAx_IRQ); |
nanase | 0:36a62c23e60c | 91 | |
nanase | 0:36a62c23e60c | 92 | /* Audio INT IRQ Channel configuration */ |
nanase | 0:36a62c23e60c | 93 | HAL_NVIC_SetPriority(AUDIO_IN_INT_IRQ, AUDIO_IN_IRQ_PREPRIO, 0); |
nanase | 0:36a62c23e60c | 94 | HAL_NVIC_EnableIRQ(AUDIO_IN_INT_IRQ); |
nanase | 0:36a62c23e60c | 95 | } |