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

Committer:
nanase
Date:
Sat Dec 26 14:51:48 2015 +0000
Revision:
0:36a62c23e60c
First commit

Who changed what in which revision?

UserRevisionLine numberNew 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 }