【兆易GD32H759I-EVAL】DAC测试
[复制链接]
测试开发板的DAC功能。调制电位器VR1,DAC输出采集的ADC电压值。
一、硬件部分
1.1、电路板上引出的DACC引脚JP71
1.2、DAC功能选择跳线
测试DAC输出功能,需要跳线JP47
1.3、DAC特性
主要特性
DAC 的主要特征如下:
8 位或 12 位分辨率;
数据左对齐或右对齐;
DMA 功能与欠载检测;
同步更新转换;
外部事件触发转换;
可配置的内部缓冲区;
输入参考电压 VREFP;
输出缓冲区校准;
低功耗的采样保持功能;
噪声波生成(LSFR 噪声模式和三角噪声模式);
DACx 双通道并发模式;
1.4、DAC内部框图
二、程序部分
ADC部分程序:
https://bbs.eeworld.com.cn/thread-1284437-1-1.html
2.1 、dac.c
#include "main.h"
void init_dac(void)
{
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_DAC);
gpio_mode_set(GPIOA, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_PIN_5);
/* initialize DAC */
dac_deinit(DAC0);
/* DAC trigger disable */
dac_trigger_disable(DAC0, DAC_OUT1);
/* DAC wave mode config */
dac_wave_mode_config(DAC0, DAC_OUT1, DAC_WAVE_DISABLE);
/* DAC enable */
dac_enable(DAC0, DAC_OUT1);
//dac_data_set(DAC0, DAC_OUT1, DAC_ALIGN_12B_L, 0x7FF0);
}
//Vout = Vref*(DAC_VAL/4096)
void dac_setval(uint16_t val)
{
if(val>4096)
{
val=4096;
}
dac_data_set(DAC0, DAC_OUT1, DAC_ALIGN_12B_R, val);
}
2.2、dac.h
#ifndef _DAC_H
#define _DAC_H
void init_dac(void);
void dac_setval(uint16_t val);
#endif
2.3、main.c
#include "main.h"
void cache_enable(void);
float val_value=0.0;
uint32_t adda;
int main(void)
{
cache_enable();
systick_config();
init_usart(115200);
init_adc();
init_dac();
while(1)
{
adda=adc_readval();
val_value = (adda*3.3)/4096;
printf(" var1 voltage : %4.2fV \r\n",val_value);
dac_setval(adda);
delay_1ms(200);
}
}
void cache_enable(void)
{
/* enable i-cache */
SCB_EnableICache();
/* enable d-cache */
SCB_EnableDCache();
}
三、运行结果
下载程序到开发板后,调整电位器VR1改变DAC输出电压值,手上只有一块万能表,就只测试DAC输出电压值。
3.1、串口输出ADC采样的电压值。
3.2、DAC输出采集的电压值
四、附件
|