• 大小: 6.31MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-23
  • 语言: C/C++
  • 标签: DAC  

资源简介

STM32CubeIDE Audio播放音频,DAC + TIM + DMA 随言: 建议下载该例程看看源码,但是由于官方使用的是外部TF卡存储音频,有一个读取外部数据拷贝到SRAM的延时问题,故官方使用了双缓存区方式。 而我只想简单播放音频,故我找了一段15秒的16KHz_8bit_wav格式音频,直接转成C语言数组存在芯片内部flash。由于是放在内部flash,故不用担心数据拷贝的速度问题,所以我使用单缓冲区就可以了。甚至可以不需要把内部flash数据拷贝到缓存区,直接让DMA指向flash数据的地址。 音频的采样位数为8bit 16bit 24bit 32bit,采样位数越高当然音质越好,但是相对的存储也急剧增加。 注意:STM32F4的DAC最大分辨率为12bit,故我们只能使用8bit的音频。还有就是一般高采样位数音频转低采样位数音频的一定要适当加入抖动(噪声)。

资源截图

代码片段和文件信息

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * 

© Copyright (c) 2020 STMicroelectronics.
  * All rights reserved.


  *
  * This software component is licensed by ST under BSD 3-Clause license
  * the “License“; You may not use this file except in compliance with the
  * License. You may obtain a copy of the License at:
  *                        opensource.org/licenses/BSD-3-Clause
  *
  ******************************************************************************
  */
/* USER CODE END Header */

/* Includes ------------------------------------------------------------------*/
#include “main.h“

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include “datas.h“
#include 
#include 
#include 
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/
DAC_HandleTypeDef hdac;
DMA_HandleTypeDef hdma_dac1;

TIM_HandleTypeDef htim6;

UART_HandleTypeDef huart1;

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
static void MX_DAC_Init(void);
static void MX_TIM6_Init(void);
static void MX_USART1_UART_Init(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
#define BUFFER_SIZE (1024)

uint8_t Buffer0[BUFFER_SIZE] = {0};
uint8_t Buffer1[BUFFER_SIZE] = {0};


void Music_Player(void)
{
uint32_t DataLength = 0;
uint8_t* DataAddress = NULL;

#if 1
DataLength = sizeof(data) - 0x2c;
DataAddress = (unsigned char *)(data + 0x2c);
memset(Buffer0 0 BUFFER_SIZE);
memset(Buffer1 0 BUFFER_SIZE);
HAL_TIM_base_Start(&htim6);

while(1)
{
if(DataLength >= BUFFER_SIZE)
{
memcpy(Buffer0 DataAddress BUFFER_SIZE);
DataLength -= BUFFER_SIZE;
DataAddress += BUFFER_SIZE;
HAL_DAC_Start_DMA(&hdac DAC_CHANNEL_1 (uint32_t *)Buffer0 BUFFER_SIZE DAC_ALIGN_8B_R);
while(HAL_DAC_GetState(&hdac) != HAL_DAC_STATE_READY);
}
else break;
}
HAL_TIM_base_Stop(&htim6);
HAL_DAC_

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      25778  2020-05-25 16:38  DAC Audio3\.cproject

     文件       7466  2020-05-25 16:38  DAC Audio3\.mxproject

     文件       1299  2020-05-19 09:55  DAC Audio3\.project

     文件       2372  2020-05-25 09:39  DAC Audio3\.settings\language.settings.xml

     文件    1469034  2020-05-25 16:44  DAC Audio3\Core\Inc\datas.h

     文件       2181  2020-05-25 16:38  DAC Audio3\Core\Inc\main.h

     文件      16342  2020-05-25 16:38  DAC Audio3\Core\Inc\stm32f4xx_hal_conf.h

     文件       2144  2020-05-25 16:38  DAC Audio3\Core\Inc\stm32f4xx_it.h

     文件      10669  2020-05-26 13:46  DAC Audio3\Core\Src\main.c

     文件       7374  2020-05-25 16:38  DAC Audio3\Core\Src\stm32f4xx_hal_msp.c

     文件       5937  2020-05-25 16:38  DAC Audio3\Core\Src\stm32f4xx_it.c

     文件       2675  2020-05-19 09:55  DAC Audio3\Core\Src\syscalls.c

     文件       1468  2020-05-19 09:55  DAC Audio3\Core\Src\sysmem.c

     文件      26457  2020-02-26 14:28  DAC Audio3\Core\Src\system_stm32f4xx.c

     文件      23547  2020-02-26 14:28  DAC Audio3\Core\Startup\startup_stm32f407zgtx.s

     文件       7538  2020-05-25 10:27  DAC Audio3\DAC Audio3 Debug.launch

     文件       5968  2020-05-25 16:38  DAC Audio3\DAC Audio3.ioc

     文件       3661  2020-05-26 14:24  DAC Audio3\Debug\Core\Src\main.d

     文件    1375524  2020-05-26 14:24  DAC Audio3\Debug\Core\Src\main.o

     文件        375  2020-05-26 14:24  DAC Audio3\Debug\Core\Src\main.su

     文件       3597  2020-05-25 16:38  DAC Audio3\Debug\Core\Src\stm32f4xx_hal_msp.d

     文件    1094848  2020-05-25 16:38  DAC Audio3\Debug\Core\Src\stm32f4xx_hal_msp.o

     文件        383  2020-05-25 16:38  DAC Audio3\Debug\Core\Src\stm32f4xx_hal_msp.su

     文件       3649  2020-05-25 16:38  DAC Audio3\Debug\Core\Src\stm32f4xx_it.d

     文件    1089108  2020-05-25 16:38  DAC Audio3\Debug\Core\Src\stm32f4xx_it.o

     文件        475  2020-05-25 16:38  DAC Audio3\Debug\Core\Src\stm32f4xx_it.su

     文件       3853  2020-05-26 14:24  DAC Audio3\Debug\Core\Src\subdir.mk

     文件         45  2020-05-19 14:55  DAC Audio3\Debug\Core\Src\syscalls.d

     文件      78312  2020-05-19 14:55  DAC Audio3\Debug\Core\Src\syscalls.o

     文件        637  2020-05-19 14:55  DAC Audio3\Debug\Core\Src\syscalls.su

............此处省略165个文件信息

评论

共有 条评论