[AT32F423] 【AT-START-F423测评】+ADC

[复制链接]
 楼主| meiyaolei 发表于 2023-11-3 23:45 | 显示全部楼层 |阅读模式
<
AD, ADC, dc
测试目地:利用F423串口打印ADC温度
开发板:AT-START-F423
平台:MDK


理解ADC与使用:
一般来说,ADC(模数转换器)是一种电子设备,它可以将模拟信号转换为数字信号。在许多应用中,这使得我们能够使用数字电子设备处理和解析模拟信号。
使用ADC通常包括以下步骤:
  • 确定ADC的规格和性能:这包括确定ADC的分辨率(它能够分辨的最小电压差异)、转换速度(它能够多快地完成模拟到数字的转换)以及它的电源要求。
  • 选择一个适合ADC的电路:这可能包括一个适合的滤波器以减少信号噪声,以及一个适当的电源以提供稳定的电压。
  • 连接ADC:将ADC连接到需要转换的模拟信号源,并按照ADC的数据手册进行正确连接。
  • 编程ADC:根据需要设置ADC的参数,采样率、分辨率等。
  • 测试和验证:在完成设置后,对ADC进行测试以确保它能够正确地转换信号,并且结果符合预期。



ADC使用:
1699025886254.jpg
ADC特性精度连接图:
1699025947860.jpg
相关代码:
  1. adc_common_config_type adc_common_struct;
  2.   adc_base_config_type adc_base_struct;
  3.   crm_periph_clock_enable(CRM_ADC1_PERIPH_CLOCK, TRUE);
  4.   nvic_irq_enable(ADC1_IRQn, 0, 0);
  5.   crm_adc_clock_select(CRM_ADC_CLOCK_SOURCE_HCLK);
  6.   
  7.   adc_common_default_para_init(&adc_common_struct);


  8.   /* config division,adcclk is division by hclk */
  9.   adc_common_struct.div = ADC_HCLK_DIV_4;
  10.   adc_common_struct.tempervintrv_state = TRUE;
  11.   adc_common_config(&adc_common_struct);
  12.   adc_base_default_para_init(&adc_base_struct);
  13.   adc_base_struct.sequence_mode = FALSE;
  14.   adc_base_struct.repeat_mode = FALSE;
  15.   adc_base_struct.data_align = ADC_RIGHT_ALIGNMENT;
  16.   adc_base_struct.ordinary_channel_length = 1;
  17.   adc_base_config(ADC1, &adc_base_struct);
  18.   adc_resolution_set(ADC1, ADC_RESOLUTION_12B);

  19.   adc_ordinary_channel_set(ADC1, ADC_CHANNEL_16, 1, ADC_SAMPLETIME_640_5);

  20.   adc_ordinary_conversion_trigger_set(ADC1, ADC_ORDINARY_TRIG_TMR1CH1, ADC_ORDINARY_TRIG_EDGE_NONE);

  21.   adc_dma_mode_enable(ADC1, TRUE);

  22.   adc_dma_request_repeat_enable(ADC1, TRUE);

  23.   adc_interrupt_enable(ADC1, ADC_OCCO_INT, TRUE);

  24.   adc_enable(ADC1, TRUE);
  25.   while(adc_flag_get(ADC1, ADC_RDY_FLAG) == RESET);

  26.   adc_calibration_init(ADC1);
  27.   while(adc_calibration_init_status_get(ADC1));
  28.   adc_calibration_start(ADC1);
  29.   while(adc_calibration_status_get(ADC1));
  30. adc_ordinary_software_trigger_enable(ADC1, TRUE);
  31. 打印出温度
打印出结果:
1699026299689.jpg


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

本版积分规则

认证:工程师
简介:超越自我,为设计激发灵感和想象。

258

主题

829

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部
认证:工程师
简介:超越自我,为设计激发灵感和想象。

258

主题

829

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部