CQエレクトロニクス・セミナ「実習・マイコンを動かしながら学ぶディジタル・フィルタ」で使うプログラムを,入力として STM32F746 の内蔵 ADC を使うように変更したもの. http://seminar.cqpub.co.jp/ccm/ES18-0020

Dependencies:   mbed Array_Matrix BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

Committer:
MikamiUitOpen
Date:
Sat Oct 07 03:28:40 2017 +0000
Revision:
0:ab7a35d87173
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:ab7a35d87173 1 //------------------------------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 2 // Overwrite functuions and define calback functions
MikamiUitOpen 0:ab7a35d87173 3 // for functions in stm32746g_discovery_audio.cpp
MikamiUitOpen 0:ab7a35d87173 4 //
MikamiUitOpen 0:ab7a35d87173 5 // Original version: BSP_overwrite.cpp by Nanase
MikamiUitOpen 0:ab7a35d87173 6 // https://developer.mbed.org/users/nanase/code/DISCO-F746NG_Sweep/
MikamiUitOpen 0:ab7a35d87173 7 //------------------------------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 8 #include "BSP_AudioOut_Overwrite.hpp"
MikamiUitOpen 0:ab7a35d87173 9
MikamiUitOpen 0:ab7a35d87173 10 // These three callback functions are modyfied by Mikami
MikamiUitOpen 0:ab7a35d87173 11 void BSP_AUDIO_OUT_HalfTransfer_CallBack()
MikamiUitOpen 0:ab7a35d87173 12 {
MikamiUitOpen 0:ab7a35d87173 13 Mikami::SaiIO::FillBuffer1st();
MikamiUitOpen 0:ab7a35d87173 14 }
MikamiUitOpen 0:ab7a35d87173 15
MikamiUitOpen 0:ab7a35d87173 16 void BSP_AUDIO_OUT_TransferComplete_CallBack()
MikamiUitOpen 0:ab7a35d87173 17 {
MikamiUitOpen 0:ab7a35d87173 18 Mikami::SaiIO::FillBuffer2nd();
MikamiUitOpen 0:ab7a35d87173 19 }
MikamiUitOpen 0:ab7a35d87173 20
MikamiUitOpen 0:ab7a35d87173 21 void BSP_AUDIO_OUT_Error_CallBack()
MikamiUitOpen 0:ab7a35d87173 22 {
MikamiUitOpen 0:ab7a35d87173 23 Mikami::SaiIO::ErrorTrap();
MikamiUitOpen 0:ab7a35d87173 24 }
MikamiUitOpen 0:ab7a35d87173 25
MikamiUitOpen 0:ab7a35d87173 26 //--------------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 27 // Followings are original by Nanase
MikamiUitOpen 0:ab7a35d87173 28 //--------------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 29
MikamiUitOpen 0:ab7a35d87173 30 DMA_HandleTypeDef hdma_sai_tx;
MikamiUitOpen 0:ab7a35d87173 31
MikamiUitOpen 0:ab7a35d87173 32 void AUDIO_OUT_SAIx_DMAx_IRQHandler()
MikamiUitOpen 0:ab7a35d87173 33 {
MikamiUitOpen 0:ab7a35d87173 34 HAL_DMA_IRQHandler(&hdma_sai_tx);
MikamiUitOpen 0:ab7a35d87173 35 }
MikamiUitOpen 0:ab7a35d87173 36
MikamiUitOpen 0:ab7a35d87173 37 void BSP_AUDIO_OUT_MspInit(SAI_HandleTypeDef *hsai, void *Params)
MikamiUitOpen 0:ab7a35d87173 38 {
MikamiUitOpen 0:ab7a35d87173 39 //static DMA_HandleTypeDef hdma_sai_tx;
MikamiUitOpen 0:ab7a35d87173 40 GPIO_InitTypeDef gpio_init_structure;
MikamiUitOpen 0:ab7a35d87173 41
MikamiUitOpen 0:ab7a35d87173 42 /* Enable SAI clock */
MikamiUitOpen 0:ab7a35d87173 43 AUDIO_OUT_SAIx_CLK_ENABLE();
MikamiUitOpen 0:ab7a35d87173 44
MikamiUitOpen 0:ab7a35d87173 45 /* Enable GPIO clock */
MikamiUitOpen 0:ab7a35d87173 46 AUDIO_OUT_SAIx_MCLK_ENABLE();
MikamiUitOpen 0:ab7a35d87173 47 AUDIO_OUT_SAIx_SCK_SD_ENABLE();
MikamiUitOpen 0:ab7a35d87173 48 AUDIO_OUT_SAIx_FS_ENABLE();
MikamiUitOpen 0:ab7a35d87173 49
MikamiUitOpen 0:ab7a35d87173 50 /* CODEC_SAI pins configuration: FS, SCK, MCK and SD pins ------------------*/
MikamiUitOpen 0:ab7a35d87173 51 gpio_init_structure.Pin = AUDIO_OUT_SAIx_FS_PIN;
MikamiUitOpen 0:ab7a35d87173 52 gpio_init_structure.Mode = GPIO_MODE_AF_PP;
MikamiUitOpen 0:ab7a35d87173 53 gpio_init_structure.Pull = GPIO_NOPULL;
MikamiUitOpen 0:ab7a35d87173 54 gpio_init_structure.Speed = GPIO_SPEED_HIGH;
MikamiUitOpen 0:ab7a35d87173 55 gpio_init_structure.Alternate = AUDIO_OUT_SAIx_FS_SD_MCLK_AF;
MikamiUitOpen 0:ab7a35d87173 56 HAL_GPIO_Init(AUDIO_OUT_SAIx_FS_GPIO_PORT, &gpio_init_structure);
MikamiUitOpen 0:ab7a35d87173 57
MikamiUitOpen 0:ab7a35d87173 58 gpio_init_structure.Pin = AUDIO_OUT_SAIx_SCK_PIN;
MikamiUitOpen 0:ab7a35d87173 59 gpio_init_structure.Mode = GPIO_MODE_AF_PP;
MikamiUitOpen 0:ab7a35d87173 60 gpio_init_structure.Pull = GPIO_NOPULL;
MikamiUitOpen 0:ab7a35d87173 61 gpio_init_structure.Speed = GPIO_SPEED_HIGH;
MikamiUitOpen 0:ab7a35d87173 62 gpio_init_structure.Alternate = AUDIO_OUT_SAIx_SCK_AF;
MikamiUitOpen 0:ab7a35d87173 63 HAL_GPIO_Init(AUDIO_OUT_SAIx_SCK_SD_GPIO_PORT, &gpio_init_structure);
MikamiUitOpen 0:ab7a35d87173 64
MikamiUitOpen 0:ab7a35d87173 65 gpio_init_structure.Pin = AUDIO_OUT_SAIx_SD_PIN;
MikamiUitOpen 0:ab7a35d87173 66 gpio_init_structure.Mode = GPIO_MODE_AF_PP;
MikamiUitOpen 0:ab7a35d87173 67 gpio_init_structure.Pull = GPIO_NOPULL;
MikamiUitOpen 0:ab7a35d87173 68 gpio_init_structure.Speed = GPIO_SPEED_HIGH;
MikamiUitOpen 0:ab7a35d87173 69 gpio_init_structure.Alternate = AUDIO_OUT_SAIx_FS_SD_MCLK_AF;
MikamiUitOpen 0:ab7a35d87173 70 HAL_GPIO_Init(AUDIO_OUT_SAIx_SCK_SD_GPIO_PORT, &gpio_init_structure);
MikamiUitOpen 0:ab7a35d87173 71
MikamiUitOpen 0:ab7a35d87173 72 gpio_init_structure.Pin = AUDIO_OUT_SAIx_MCLK_PIN;
MikamiUitOpen 0:ab7a35d87173 73 gpio_init_structure.Mode = GPIO_MODE_AF_PP;
MikamiUitOpen 0:ab7a35d87173 74 gpio_init_structure.Pull = GPIO_NOPULL;
MikamiUitOpen 0:ab7a35d87173 75 gpio_init_structure.Speed = GPIO_SPEED_HIGH;
MikamiUitOpen 0:ab7a35d87173 76 gpio_init_structure.Alternate = AUDIO_OUT_SAIx_FS_SD_MCLK_AF;
MikamiUitOpen 0:ab7a35d87173 77 HAL_GPIO_Init(AUDIO_OUT_SAIx_MCLK_GPIO_PORT, &gpio_init_structure);
MikamiUitOpen 0:ab7a35d87173 78
MikamiUitOpen 0:ab7a35d87173 79 /* Enable the DMA clock */
MikamiUitOpen 0:ab7a35d87173 80 AUDIO_OUT_SAIx_DMAx_CLK_ENABLE();
MikamiUitOpen 0:ab7a35d87173 81
MikamiUitOpen 0:ab7a35d87173 82 if(hsai->Instance == AUDIO_OUT_SAIx)
MikamiUitOpen 0:ab7a35d87173 83 {
MikamiUitOpen 0:ab7a35d87173 84 /* Configure the hdma_saiTx handle parameters */
MikamiUitOpen 0:ab7a35d87173 85 hdma_sai_tx.Init.Channel = AUDIO_OUT_SAIx_DMAx_CHANNEL;
MikamiUitOpen 0:ab7a35d87173 86 hdma_sai_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
MikamiUitOpen 0:ab7a35d87173 87 hdma_sai_tx.Init.PeriphInc = DMA_PINC_DISABLE;
MikamiUitOpen 0:ab7a35d87173 88 hdma_sai_tx.Init.MemInc = DMA_MINC_ENABLE;
MikamiUitOpen 0:ab7a35d87173 89 hdma_sai_tx.Init.PeriphDataAlignment = AUDIO_OUT_SAIx_DMAx_PERIPH_DATA_SIZE;
MikamiUitOpen 0:ab7a35d87173 90 hdma_sai_tx.Init.MemDataAlignment = AUDIO_OUT_SAIx_DMAx_MEM_DATA_SIZE;
MikamiUitOpen 0:ab7a35d87173 91 hdma_sai_tx.Init.Mode = DMA_CIRCULAR;
MikamiUitOpen 0:ab7a35d87173 92 hdma_sai_tx.Init.Priority = DMA_PRIORITY_HIGH;
MikamiUitOpen 0:ab7a35d87173 93 hdma_sai_tx.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
MikamiUitOpen 0:ab7a35d87173 94 hdma_sai_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
MikamiUitOpen 0:ab7a35d87173 95 hdma_sai_tx.Init.MemBurst = DMA_MBURST_SINGLE;
MikamiUitOpen 0:ab7a35d87173 96 hdma_sai_tx.Init.PeriphBurst = DMA_PBURST_SINGLE;
MikamiUitOpen 0:ab7a35d87173 97
MikamiUitOpen 0:ab7a35d87173 98 hdma_sai_tx.Instance = AUDIO_OUT_SAIx_DMAx_STREAM;
MikamiUitOpen 0:ab7a35d87173 99
MikamiUitOpen 0:ab7a35d87173 100 /* Associate the DMA handle */
MikamiUitOpen 0:ab7a35d87173 101 __HAL_LINKDMA(hsai, hdmatx, hdma_sai_tx);
MikamiUitOpen 0:ab7a35d87173 102
MikamiUitOpen 0:ab7a35d87173 103 /* Deinitialize the Stream for new transfer */
MikamiUitOpen 0:ab7a35d87173 104 HAL_DMA_DeInit(&hdma_sai_tx);
MikamiUitOpen 0:ab7a35d87173 105
MikamiUitOpen 0:ab7a35d87173 106 /* Configure the DMA Stream */
MikamiUitOpen 0:ab7a35d87173 107 HAL_DMA_Init(&hdma_sai_tx);
MikamiUitOpen 0:ab7a35d87173 108 }
MikamiUitOpen 0:ab7a35d87173 109
MikamiUitOpen 0:ab7a35d87173 110 /* SAI DMA IRQ Channel configuration */
MikamiUitOpen 0:ab7a35d87173 111 HAL_NVIC_SetPriority(AUDIO_OUT_SAIx_DMAx_IRQ, AUDIO_OUT_IRQ_PREPRIO, 0);
MikamiUitOpen 0:ab7a35d87173 112 HAL_NVIC_EnableIRQ(AUDIO_OUT_SAIx_DMAx_IRQ);
MikamiUitOpen 0:ab7a35d87173 113 }