STM Урок 46. I2S AUDIO. Часть 7



Урок 46

 

Часть 7

 

I2S AUDIO

 

В предыдущей части урока мы написали функцию воспроизведения звука, а также написали функцию остановки воспроизведения.

Напишем ещё две функции для обработки прерываний от I2S в этот же файл audioplay.c

 

void  AudioPlay_HalfTransfer_CallBack(void)

{

  buffer_offset = BUFFER_OFFSET_HALF;

}

 

void  AudioPlay_TransferComplete_CallBack(void)

{

          buffer_offset = BUFFER_OFFSET_FULL;

          if(!Is_cs43l22_Stop)

                {

                        HAL_I2S_Transmit_DMA(&hi2s3, (uint16_t*)&Audio_Buffer[0], AUDIO_BUFFER_SIZE / 2);

                }

                else

                {

                        cs43l22_SetVolume(AUDIO_I2C_ADDRESS, 0);

                }

}

 

Ну так как это не официальные обработчики, то надо сюда как-то ещё обработку направить

 

 

Для этого, во-первых, для них добавим прототипы в хедер-файл audioplay.h

 

void AudioPlay_Start(uint32_t AudioFreq);

void    AudioPlay_TransferComplete_CallBack(void);

void    AudioPlay_HalfTransfer_CallBack(void);

//————————————————

 

Напишем вызов двух функций прерываний от I2S в main.c и тем самым перенаправим обработчик в свои функции

 

/* USER CODE BEGIN 4 */

void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s3)

{

  if(hi2s3->Instance == I2S3)

  {

    /* Call the user function which will manage directly transfer complete */  

    AudioPlay_TransferComplete_CallBack();      

  }

}

//—————————————————————————

void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s)

{

  if(hi2s->Instance == I2S3)

  {

    /* Manage the remaining file size and new address offset: This function should

       be coded by user (its prototype is already declared in stm32f4_discovery_audio.h) */  

    AudioPlay_HalfTransfer_CallBack();

  }

}

/* USER CODE END 4 */

 

 

Проверяем, прошиваем, должно всё заиграть (нажмите на картинку для увеличения изображения)

 

image20_0500

 

 

Предыдущая часть Программирование МК STM32 Следующий урок

 

Исходный код

 

Техническая документация на Аудио ЦАП CS43L22

 

 

Отладочную плату и дисплей можно приобрести здесь:

STM32F4-DISCOVERY

Дисплей LCD 20×4

 

 

Смотреть ВИДЕОУРОК

 

STM32 I2S AUDIO

Один комментарий на “STM Урок 46. I2S AUDIO. Часть 7
  1. ra6xqp:

    Сделайте пожалуйста урок про микрофон, который на stm32f4discovery

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*