打印
[国产单片机]

DAC输出演示

[复制链接]
776|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 Board
2)软件环境:
AT32F435_437_Firmware_Library_V2.x.x\project\at_sufr_f437\examples\dac
1.1.3       硬件设计
本案例使用的硬件资源有TFTLCD液晶显示屏、DAC外设,对应的引脚如下:
表9. 硬件资源使用
   
编号
   
PIN Name
外设功能
备注
1
PA5
DAC2
-

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


1.1.4       软件设计
1)     DAC测试
n 初始化DAC
n 每过300ms增加0.1V输出,将输出电压显示在LCD上
2)     代码介绍
-- main函数代码描述
  
int  main(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.
  
  */
  
void  dac_init(void)
  

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




使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

119

帖子

5

粉丝