林堪堪 发表于 2022-3-28 20:07

DAC输出演示--AT_SURF案例8

本帖最后由 林堪堪 于 2022-3-28 20:15 编辑

1.1         案例 DAC输出
1.1.1       简介DAC(数模转换器)是一个将数字信号转换为模拟输出信号的外设,AT32F437拥有2个DAC,两个DAC相互独立,可以独立进行数模转换,也可以双DAC同时触发进行转换。DAC采用8位或者12位数字输入,产生0至参考电压之间的模拟输出。输入参考电压VREF+可以使转换操作更加精确。AT32F437 DAC主要具有以下特性:―数字部分可以配置为8位或者12位模式―支持单/双DAC的左对齐或者右对齐―支持参考电压VREF+―支持DMA―支持噪声波/三角波产生―双DAC或者单个DAC1/DAC2独立转换―每个DAC1/DAC2支持DMA模式―软件触发或者外部触发转换
由于AT32-SUFR板DAC电路连接到了可调电阻,使用时需要先将跳线帽JP6断开。
1.1.2       资源准备1) 硬件环境:对应产品型号的AT-SURF-F437 Board2)软件环境:AT32F435_437_Firmware_Library_V2.x.x\project\at_sufr_f437\examples\dac1.1.3       硬件设计本案例使用的硬件资源有TFTLCD液晶显示屏、DAC外设,对应的引脚如下:表9. 硬件资源使用
   编号   PIN Name外设功能备注
1PA5DAC2-

对应的电路原理如下:图18. DAC电路原理图

1.1.4       软件设计1)   DAC测试n 初始化DACn 每过300ms增加0.1V输出,将输出电压显示在LCD上2)   代码介绍-- main函数代码描述
intmain(void){uint16_t voltage = 0;
/* 初始化系统时钟*/system_clock_config();
/* 初始化中断优先级分组*/       nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
/* 初始化延时函数 */delay_init();
/* 初始化LCD */lcd_init(LCD_DISPLAY_VERTICAL);
/* DAC初始化 */dac_init();
/* 显示信息*/lcd_string_show(10, 20, 200, 24, 24,(uint8_t *)"DAC Test");
while(1){    /* 每一次输出增加0.1V*/     voltage += 100;
    if(voltage > 3300)    {      voltage = 0;    }
    /* 显示标题 */     lcd_string_show(10, 60, 310, 24, 24,(uint8_t *)"Output Voltage:");   
    /* 显示输出电压 */     lcd_float_num_show(200, 60, 310, 24, 24,voltage / 1000.0, 1);
    /* DAC输出设置 */     dac_output_voltage_set(voltage);      
    delay_ms(300);}}

-- void dac_init(void)函数代码描述
/** * @brief   dac init.* @param   none.* @retval none.*/voiddac_init(void)

1.1.5       下载验证1) 每过300ms增加0.1V输出,LCD上显示输出电压2) 用万用表测量PA5引脚电压,可以看到测量出的电压和LCD上显示的输出电压相对应图19. 实验效果



海滨消消 发表于 2022-4-2 15:07

学习学习

andygirl 发表于 2022-4-2 16:40

就是DAC实验吧?
页: [1]
查看完整版本: DAC输出演示--AT_SURF案例8