打印
[活动专区]

【AT-START-M412测评】ADC 温度采集

[复制链接]
153|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

【AT-START-M412测评】ADC 温度采集

本文介绍了雅特力 AT32M412 开发板实现 ADC 采集芯片内部温度,并串口打印的项目设计。

项目介绍

  • 串口通信测试
  • ADC 温度转换与打印

工程调试

  • 打开 AT32 Work Bench 软件,选择工作空间,选择目标芯片 AT32M412CBT7 ,点击 新建
  • 使能 USART1 选项,选择 异步模式 ,配置 PA9 和 PA10 引脚为 USART1 模式;
  • 进入 SYSTEM 模块,选择 USART1 串口打印;

由原理图可知,板载 AT-Link-EZ 调试器支持一组虚拟串口(VCP)与主控 AT32M412CBT7 的 USART1_TX/USART1_RX(PA9/PA10)对接。因此在配置串口通道时,需选择对板载调试器虚拟串口对应的 I/O 接口。

usart_bench_config.jpg

  • 时钟树为默认配置(系统时钟频率 180MHz)

clock_tree_default.jpg

  • 其他参数均为默认,点击 生成代码 并打开项目。

代码

打开工程后,进入 user 目录并打开 main.c 文件,添加关键代码

#include "at32m412_416_wk_config.h"
#include "wk_usart.h"
#include "wk_system.h"

int main(void)
{
  wk_system_clock_config();
  wk_periph_clock_config();
  wk_nvic_config();
  wk_timebase_init();
  wk_usart1_init();

  while(1)
  {
    /* add user code begin 3 */
        printf("Hello World !\r\n");
        wk_delay_ms(500);
    /* add user code end 3 */
  }
}

保存代码,重新构建工程,上传固件至板端,复位运行。

效果

打开串口调试助手,配置串口参数,打开串口,接收串口消息

uart_print_hello.gif

工程测试

在完成前面关于串口打印字符串的工程调试项目的基础上,进一步实现 ADC 采集芯片温度并打印的项目设计。

工程创建

  • 打开 AT32 Work Bench 软件,选择工作空间,选择目标芯片 AT32M412CBT7 ,点击 新建
  • 进入 外设 - ADC 选项进行参数配置;
  • 使能内部温度传感器通道(IN16);
  • 开启 ADC 普通组设置,采样时间选择 239.5 个 ADCCLK 周期;

adc_temp_bench_config.jpg

  • 使能 USART1 选项,选择 异步模式 ,配置 PA9 和 PA10 引脚为 USART1 模式;
  • 进入 SYSTEM 模块,选择 USART1 串口打印;
  • 其他参数均为默认,点击 生成代码 并打开项目。

工程代码

打开工程后,进入 user 目录并打开 main.c 文件,添加关键代码

#include "at32m412_416_wk_config.h"
#include "wk_adc.h"
#include "wk_usart.h"
#include "wk_system.h"

/* private define ------------------------------------------------------------*/
/* add user code begin private define */
#define ADC_VREF                         (3.3)
#define ADC_TEMP_BASE                    (1.28)
#define ADC_TEMP_SLOPE                   (-0.0043)
/* add user code end private define */

/* add user code begin 0 */
uint16_t ADC_Read(uint8_t channel)
{
    adc_ordinary_software_trigger_enable(ADC1, TRUE);
    while(adc_flag_get(ADC1, ADC_OCCE_FLAG) == RESET);
    adc_flag_clear(ADC1, ADC_OCCE_FLAG);
    return adc_ordinary_conversion_data_get(ADC1);
}

int main(void)
{
  wk_system_clock_config();
  wk_periph_clock_config();
  wk_nvic_config();
  wk_timebase_init();
  wk_usart1_init();
  wk_adc_common_init();
  wk_adc1_init();

  while(1)
  {
    /* add user code begin 3 */
    uint16_t adc_temp = ADC_Read(ADC_CHANNEL_16);
    printf("internal_temperature = %f deg C\r\n",(ADC_TEMP_BASE-(double)adc_temp*ADC_VREF/4095)/ADC_TEMP_SLOPE+25);
    wk_delay_ms(1000);
    /* add user code end 3 */
  }
}

保存代码,重新构建工程,上传固件至板端,复位运行。

效果演示

打开串口调试助手,配置串口参数,打开串口,接收 ADC 采集的芯片内部温度信息

internal_temp.gif

总结

本文介绍了雅特力 AT32M412 开发板通过 ADC 实现芯片内部温度采集,并串口输出的项目设计。包括工程调试,使用 AT32 Work Bench 软件快速建立工程并实现串口打印的流程,为 AT32M412 系列单片机的应用和快速开发提供了参考。

使用特权

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

本版积分规则

26

主题

60

帖子

0

粉丝