ADC ========== 概述 -------------- SDM ADC 是一种基于 Sigma-Delta 调制原理的模数转换器,其工作原理是通过对输入信号进行连续的高频采样和数字滤波,以实现高精度的模拟信号到数字信号转换。相比于传统的 ADC,SDM ADC 具有更高的分辨率、更低的功耗和更好的抗干扰能力。 功能特性 -------------- - 支持的输出数字信号位宽为24bits .. only:: bbb - 支持单端输入100 ~ 1150 mv - 支持差分输入±650mv .. only:: hornet - 支持单端输入100 ~ 1150 mv - 支持差分输入±950mv 资源依赖 -------------- - ADC - DMA 模式说明 -------------- 1. 同步读取(polling) 同步读取时首先开启adc模块,配置读取的信号,等待数据准备好并读取数据 - 同步读取时若已经有异步读取正在进行,则等待当前异步读取完成,并中断下一个异步读取,待同步读取完成后,继续完成后续异步读取 - 同步读取会同时读取多个数据取平均值 2. 异步读取(DMA) 异步读取将需要读取的信号添加进链表,若当前没有正在进行的读取,则开启adc并配置dma来读取数据,并等待中断 - 连续异步读取可能被同步读取打断,但数据不会被破坏 - 异步读取将同时读取多个数据取平均值 测量说明 ----------- 单端测量 ^^^^^^^^^^^ 单端输入测量范围的信号,内部adc将另一端选择为内部vcm,并测量两者的差分值,获取最大24bit整数数据。 .. only:: bbb ====== ===== 名称 值 ====== ===== vcm 500mv vrefpn 650mv ====== ===== .. only:: hornet ====== ===== 名称 值 ====== ===== vcm 500mv vrefpn 950mv ====== ===== 读取 adc 值 code 范围-8388608 ~ 8388607 电压转换公式如下: .. math:: V_{in}=\frac{X_{code}}{8388607}*V_{refpn}+V_{cm} 差分测量 ^^^^^^^^^^^ 差分输入测量范围的信号,adc内部分别接被测信号的一端,并测量两者的差分值,获取最大24bit整数数据。 .. only:: bbb ====== ===== 名称 值 ====== ===== vrefpn 650mv ====== ===== .. only:: hornet ====== ===== 名称 值 ====== ===== vrefpn 950mv ====== ===== 读取 adc 值 code 范围-8388608 ~ 8388607 电压转换公式如下: .. math:: V_{in}=\frac{X_{code}}{8388607}*V_{refpn} 或使用 :c:func:`wq_adc_2_mv` 将code转换为电压 API 介绍 ----------- .. doxygenfile:: wq_adc.h