[STM32U5] 【NUCLEO-U575ZI-Q测评】DAC测试

[复制链接]
1072|3
 楼主| dql2015 发表于 2023-3-13 20:44 | 显示全部楼层 |阅读模式
本帖最后由 dql2015 于 2023-3-24 16:26 编辑

STM32U5的DAC支持正常模式和采样保持模式,其中采样保持模式用于低功耗状态使用,每路 DAC 输出均可与 DAC_OUTx 输出引脚断开连接,而且 DAC 输出可与片上外设连接。一般情况下,使用出厂校准即可,芯片上电后自动完成出厂校准。STM32U5内置了高性能带PGA功能的运算放大器,可以通过配置形成多种常用模拟信号处理电路:
0.png
配置电压跟随器的用法:
00.png

DAC外设配置:
11.png
运放配置,将DAC输出连接到运放输入:
22.png

正弦输出表:
  1. uint32_t Wave_LUT[128] = {
  2.     2048, 2149, 2250, 2350, 2450, 2549, 2646, 2742, 2837, 2929, 3020, 3108, 3193, 3275, 3355,
  3.     3431, 3504, 3574, 3639, 3701, 3759, 3812, 3861, 3906, 3946, 3982, 4013, 4039, 4060, 4076,
  4.     4087, 4094, 4095, 4091, 4082, 4069, 4050, 4026, 3998, 3965, 3927, 3884, 3837, 3786, 3730,
  5.     3671, 3607, 3539, 3468, 3394, 3316, 3235, 3151, 3064, 2975, 2883, 2790, 2695, 2598, 2500,
  6.     2400, 2300, 2199, 2098, 1997, 1896, 1795, 1695, 1595, 1497, 1400, 1305, 1212, 1120, 1031,
  7.     944, 860, 779, 701, 627, 556, 488, 424, 365, 309, 258, 211, 168, 130, 97,
  8.     69, 45, 26, 13, 4, 0, 1, 8, 19, 35, 56, 82, 113, 149, 189,
  9.     234, 283, 336, 394, 456, 521, 591, 664, 740, 820, 902, 987, 1075, 1166, 1258,
  10.     1353, 1449, 1546, 1645, 1745, 1845, 1946, 2047
  11. };
开启运放
  1. HAL_OPAMP_Start(&hopamp1);
开启DAC
  1. HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);

设置DAC输出值
  1. HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, Wave_LUT[i]);


完整代码如下:
  1. /* USER CODE BEGIN Header */
  2. /**
  3.   ******************************************************************************
  4.   * [url=home.php?mod=space&uid=288409]@file[/url]           : main.c
  5.   * [url=home.php?mod=space&uid=247401]@brief[/url]          : Main program body
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * Copyright (c) 2023 STMicroelectronics.
  10.   * All rights reserved.
  11.   *
  12.   * This software is licensed under terms that can be found in the LICENSE file
  13.   * in the root directory of this software component.
  14.   * If no LICENSE file comes with this software, it is provided AS-IS.
  15.   *
  16.   ******************************************************************************
  17.   */
  18. /* USER CODE END Header */
  19. /* Includes ------------------------------------------------------------------*/
  20. #include "main.h"
  21. #include "adc.h"
  22. #include "dac.h"
  23. #include "opamp.h"
  24. #include "ucpd.h"
  25. #include "usart.h"
  26. #include "usb_otg.h"
  27. #include "gpio.h"

  28. /* Private includes ----------------------------------------------------------*/
  29. /* USER CODE BEGIN Includes */

  30. #include <stdio.h>

  31. /* USER CODE END Includes */

  32. /* Private typedef -----------------------------------------------------------*/
  33. /* USER CODE BEGIN PTD */

  34. /* USER CODE END PTD */

  35. /* Private define ------------------------------------------------------------*/
  36. /* USER CODE BEGIN PD */
  37. /* USER CODE END PD */

  38. /* Private macro -------------------------------------------------------------*/
  39. /* USER CODE BEGIN PM */

  40. /* USER CODE END PM */

  41. /* Private variables ---------------------------------------------------------*/

  42. /* USER CODE BEGIN PV */

  43. uint32_t Wave_LUT[128] = {
  44.     2048, 2149, 2250, 2350, 2450, 2549, 2646, 2742, 2837, 2929, 3020, 3108, 3193, 3275, 3355,
  45.     3431, 3504, 3574, 3639, 3701, 3759, 3812, 3861, 3906, 3946, 3982, 4013, 4039, 4060, 4076,
  46.     4087, 4094, 4095, 4091, 4082, 4069, 4050, 4026, 3998, 3965, 3927, 3884, 3837, 3786, 3730,
  47.     3671, 3607, 3539, 3468, 3394, 3316, 3235, 3151, 3064, 2975, 2883, 2790, 2695, 2598, 2500,
  48.     2400, 2300, 2199, 2098, 1997, 1896, 1795, 1695, 1595, 1497, 1400, 1305, 1212, 1120, 1031,
  49.     944, 860, 779, 701, 627, 556, 488, 424, 365, 309, 258, 211, 168, 130, 97,
  50.     69, 45, 26, 13, 4, 0, 1, 8, 19, 35, 56, 82, 113, 149, 189,
  51.     234, 283, 336, 394, 456, 521, 591, 664, 740, 820, 902, 987, 1075, 1166, 1258,
  52.     1353, 1449, 1546, 1645, 1745, 1845, 1946, 2047
  53. };

  54. /* USER CODE END PV */

  55. /* Private function prototypes -----------------------------------------------*/
  56. void SystemClock_Config(void);
  57. static void SystemPower_Config(void);
  58. /* USER CODE BEGIN PFP */

  59. /* USER CODE END PFP */

  60. /* Private user code ---------------------------------------------------------*/
  61. /* USER CODE BEGIN 0 */

  62. /* USER CODE END 0 */

  63. /**
  64.   * [url=home.php?mod=space&uid=247401]@brief[/url]  The application entry point.
  65.   * @retval int
  66.   */
  67. int main(void)
  68. {
  69.   /* USER CODE BEGIN 1 */

  70.   /* USER CODE END 1 */

  71.   /* MCU Configuration--------------------------------------------------------*/

  72.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  73.   HAL_Init();

  74.   /* USER CODE BEGIN Init */

  75.   /* USER CODE END Init */

  76.   /* Configure the system clock */
  77.   SystemClock_Config();

  78.   /* Configure the System Power */
  79.   SystemPower_Config();

  80.   /* USER CODE BEGIN SysInit */

  81.   /* USER CODE END SysInit */

  82.   /* Initialize all configured peripherals */
  83.   MX_GPIO_Init();
  84.   MX_UCPD1_Init();
  85.   MX_USART1_UART_Init();
  86.   MX_USB_OTG_FS_PCD_Init();
  87.   MX_ADC1_Init();
  88.   MX_OPAMP1_Init();
  89.   MX_DAC1_Init();
  90.   /* USER CODE BEGIN 2 */

在实际应用中采用定时器定时触发+DMA传输更实用。

  
朝生 发表于 2023-3-14 15:59 | 显示全部楼层
这个波形是用什么软件抓的?
LLGTR 发表于 2023-3-14 15:59 | 显示全部楼层
这个DAC输出屏幕可以达到多少?
芯路例程 发表于 2023-3-14 16:00 | 显示全部楼层
看配置挺简单的,不知道效果怎么样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

104

主题

384

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部