硬汉嵌入式论坛

 找回密码
 立即注册
查看: 179|回复: 5
收起左侧

[有问必答] DAC无输出波形

[复制链接]

3

主题

3

回帖

12

积分

新手上路

积分
12
发表于 2025-6-17 20:17:45 | 显示全部楼层 |阅读模式
以下为gd32f103学习代码,为什么引脚无波形输出,求解答

#define TABLE_SIZE (100)
#define PI (3.14159265)
uint16_t sin_table[TABLE_SIZE];

//0-3.3V  amp = 0~4095
void sin_generation(unsigned short amp)
{
        for(uint16_t i=0; i<TABLE_SIZE; i++)
        {
                sin_table[i] = (amp / 2)*(sin(2 * PI * i / TABLE_SIZE)+1);
        }
}


void dac_config(void)
{
        rcu_periph_clock_enable(RCU_GPIOA); //使能GPIOA时钟
        rcu_periph_clock_enable(RCU_DAC); //DAC时钟
       
        gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, GPIO_PIN_4);
       
  dac_deinit(DAC0); //DAC外设复位

  dac_enable(DAC0, DAC_OUT0);
}

int main(void)
{

  /* configure systick */
  systick_config();
       
        sin_generation(4095);
        dac_config();

  while (1)
                {
                        for(uint16_t i=0;i<TABLE_SIZE; i++)
                        {
                                dac_data_set(DAC0, DAC_OUT0, DAC_ALIGN_12B_R, sin_table[i]);
                                delay_1ms(1);
                        }
                }
}


回复

使用道具 举报

3

主题

3

回帖

12

积分

新手上路

积分
12
 楼主| 发表于 2025-6-17 22:37:36 | 显示全部楼层
为什么啊
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
发表于 2025-6-18 08:07:30 | 显示全部楼层
这种的官方软件包应该有例子的,使用官方的测试下
回复

使用道具 举报

3

主题

3

回帖

12

积分

新手上路

积分
12
 楼主| 发表于 2025-6-19 20:53:16 | 显示全部楼层
#include "gd32f30x.h"

void rcu_config(void);
void gpio_config(void);
void dac_config(void);
void timer5_config(void);

int main(void)
{
    rcu_config();
    gpio_config();
    dac_config();
    timer5_config();
   
    while(1) {
    }
}


void rcu_config(void)
{
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_DAC);
    rcu_periph_clock_enable(RCU_TIMER5);
}


void gpio_config(void)
{
   
    gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, GPIO_PIN_5);
}


void dac_config(void)
{
    dac_deinit(DAC0);
    dac_trigger_source_config(DAC0, DAC_OUT1, DAC_TRIGGER_T5_TRGO);
    dac_trigger_enable(DAC0, DAC_OUT1);
    dac_wave_mode_config(DAC0, DAC_OUT1, DAC_WAVE_MODE_TRIANGLE);
    dac_triangle_noise_config(DAC0, DAC_OUT1, DAC_TRIANGLE_AMPLITUDE_2047);

    dac_enable(DAC0, DAC_OUT1);
    dac_data_set(DAC0, DAC_OUT1, DAC_ALIGN_12B_R, 0x7F0);
}


void timer5_config(void)
{
    timer_parameter_struct timer_initpara;
    timer_deinit(TIMER5);

    /* TIMER configuration */
    timer_struct_para_init(&timer_initpara);
    timer_initpara.prescaler         = 119;
    timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;
    timer_initpara.counterdirection  = TIMER_COUNTER_UP;
    timer_initpara.period            = 999;
    timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
    timer_initpara.repetitioncounter = 0;

    timer_init(TIMER5, &timer_initpara);

    timer_master_output_trigger_source_select(TIMER5, TIMER_TRI_OUT_SRC_UPDATE);

    timer_enable(TIMER5);
}这个是官方的三角波示例,但是我烧录后示波器没有波形(一条线在示波器上上下快速移动),这是为什么,其他示波器可以观测吗
回复

使用道具 举报

2

主题

74

回帖

80

积分

初级会员

积分
80
发表于 2025-6-19 23:04:50 | 显示全部楼层
zznl_zq 发表于 2025-6-19 20:53
#include "gd32f30x.h"

void rcu_config(void);

上下快速移动?不会是时基 (Time/Div) 太小了吧,按个 Auto 试试呢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116747
QQ
发表于 2025-6-20 13:00:34 | 显示全部楼层
zznl_zq 发表于 2025-6-19 20:53
#include "gd32f30x.h"

void rcu_config(void);

从配来看,你的定时触发速度1K左右,调节下示波器采样率即可
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-7-4 21:28 , Processed in 0.244886 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表