[经验分享] 【GD32F350开发分享九】单端输入ADC+定时器单次转换

Justice_Gao   2018-10-16 16:05 楼主
如果GD32F350能支持差分ADC就更好了,原因大家应该都知道
作品也快完成了,还在忙着写报告,估计要压点提交作品了

GD32F350芯片上的12 位 ADC 是一种采用逐次逼近方式的模拟数字转换器。它有 19 个多路复用通道, 可以测量来自 16 个外部通道, 2 个内部通道和电池电压(VBAT)通道的模拟信号。 模拟看门狗允许应用程序来检测输入电压是否超出用户设定的高低阈值。 每个通道的 A/D 转换可以配置成单次、连续、扫描或间断转换模式。 ADC 转换的结果可以按照左对齐或右对齐的方式存储在 16 位数据寄存器中。 片上的硬件过采样机制可以通过减少 MCU 的相关计算负担来提高性能。  
QQ截图20181016153850.png

  1. void adc_config(void)
  2. {
  3.     /* ADC contineous function enable */
  4.     adc_special_function_config(ADC_CONTINUOUS_MODE, ENABLE);
  5.     /* ADC trigger config */
  6.     adc_external_trigger_source_config(ADC_REGULAR_CHANNEL, ADC_EXTTRIG_REGULAR_NONE);
  7.     /* ADC data alignment config */
  8.     adc_data_alignment_config(ADC_DATAALIGN_RIGHT);
  9.     /* ADC channel length config */
  10.     adc_channel_length_config(ADC_REGULAR_CHANNEL, 1);

  11.     /* ADC regular channel config */
  12.     adc_regular_channel_config(0, BOARD_ADC_CHANNEL, ADC_SAMPLETIME_239POINT5);
  13.     adc_external_trigger_config(ADC_REGULAR_CHANNEL, ENABLE);

  14.     /* ADC resolusion 12B */
  15.     adc_resolution_config(ADC_RESOLUTION_12B);
  16.    
  17.     /* enable ADC interface */
  18.     adc_enable();
  19.     /* ADC calibration and reset calibration */
  20.     adc_calibration_enable();
  21. }

如代码所示,

(1)选择高性能12位分辨率

(2)选择模拟输入通道ADC channel11

(3)选择转换开始的触发方式:规则通道的外部触发

(4)选择转换模式:连续模式,连续转换所选择的输入通道

(5)选择数据寄存器可配置数据对齐方式为右对齐

(6)选择采样时间239.5周期

采样时间影响ADC的转换时间

ADC的转换时间 = 采样时间 +12.5周期


采样时间越久,精度越高,但是不能超过采样频率(采样间隔)。


用定时器定时采样频率,定时时间到,转换开始

定时器参考帖子



回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复