数模转换器(ADC) ================================= 简介 --------------------------- - 12-bit SAR A/D 转换器 - 高达 1 Msps 转换速率 - 提供 16-bit 转换值保存寄存器 - 支持 1~8 个序列 - 部分支持内部基准源(e.g. HT32F52357/67) .. figure:: ../_static/image/peripheral/ADC/image001.png :width: 90% :align: center :alt: ADC方框图 ADC转换模式 --------------------------- 单次转换模式 ~~~~~~~~~~~~~~~~~~~ 发起一次 **开始转换** ,A/D 开始 **一次** 转换完整序列。 .. figure:: ../_static/image/peripheral/ADC/image002.png :width: 90% :align: center :alt: 单次转换模式示意图 连续转换模式 ~~~~~~~~~~~~~~~~~~~ 发起一次 **开始转换** ,A/D 开始 **持续** 转换完整序列。 .. figure:: ../_static/image/peripheral/ADC/image003.png :width: 90% :align: center :alt: 连续转换模式示意图 非连续转换模式 ~~~~~~~~~~~~~~~~~~~ 发起一次 **开始转换** ,A/D 开始 **一次** 转换 **子组(Sub)** 序列。 .. figure:: ../_static/image/peripheral/ADC/image004.png :width: 90% :align: center :alt: 非连续转换模式示意图 使用注意 --------------------------- 1. 请注意配置 A/D 采样时间 Tconv ,请勿超过最高的 1 Msps (1us) 否则会出现A/D采样错误。 总转换时间 (Tconv) 使用下列公式计算: Tconv = TSampling + TLatency ; 相关函数: .. code-block:: c++ CKCU_SetADCPrescaler(DIV); ADC_SamplingTimeConfig(HT_ADC_TypeDef* HT_ADCn, u8 SampleClock); .. note:: - 最小采样时间 (TSampling) = 1.5 + SampleClock Clock; - 通道转换的最小延迟 (TLatency) = 12.5 Clock; - 采样时钟 (Clock) = 主频 (SystemCoreClock) / DIV 1. 请注意配置 A/D 转换时,先采样完一个通道再采样下一个通道,可获得较稳定的A/D采样值。 如: 配置采样 8 个序列,统一采样 CH2 , 采样完成后,获得 CH2 的 8次 A/D采样值。 相关函数: .. code-block:: c++ ADC_RegularChannelConfig(HT_ADC_TypeDef* HT_ADCn, u8 ADC_CH_n, u8 Rank, ...); ADC_RegularGroupConfig(HT_ADC_TypeDef* HT_ADCn, u8 ADC_MODE, u8 Length, u8 SubLength); .. important:: 更多关于 HT32 SAR ADC 应用注意事项,请参考官网应用笔记 `HT32 MCU SAR ADC 应用注意事项`_ 。 .. _HT32 MCU SAR ADC 应用注意事项: https://www.holtek.com.cn/page/applicationNotes/AN0567