Edit online

ADC 数据处理

3 Mar 2025
Read time: 1 minute(s)
ADC 数据处理包含以下关键步骤:

  • 右移处理,对 ADC 队列 Q1/2/C/N 的结果进行右移处理,通过寄存器 ADC_RES_SHIFT 配置,可以选择右移 0、1、2 或 3 位。右移处理在过采样处理后进行,用于调整数据精度。
  • 平均处理,对 ADC 结果寄存器的数据支持进行平均算法滤波。若采用平均算法滤波,则寄存器 DAT_RES_CHn 中的数据为经过平均算法滤波后的结果。平均处理是在过采样和右移处理后进行。
  • 偏置调整,调整 ADC 转换结果的偏置。使能后,可进行如下偏置运算:
    DAT_RES_CHn = ((DAT_CHn - DAT_OFFn) * (-1)SIGN_EN )<< LS
    • DAT_OFFn:寄存器配置的偏置值,与 ADC 的转换结果位宽相同。

      例如,对于 12-bit 的 ADC 结果,则软件中 DAT_OFFn 应设置为 12-bit 的无符号数。经过偏置模块计算后,结果转换为有符号数。

    • SIGN_EN:符号翻转使能。
    • LS:对最终数据进行左移的位数,需根据 ADC 转换结果(DAT_CHn) 的位宽设置。例如,对于 12-bit 的 ADC 结果,若配置 LS = 4,则对数据进行左移四位,输出为有符号的 Q15 格式结果。
数据处理完成后,支持下列读取模式:
  • 寄存器读取模式:ADC 各个通道的采样转换结果数据存储在对应的通道结构数据寄存器 DAT_RES_CHn(n=0/1/2/.../23)和 DAT_RES_PGAn(n=0/1/2/3)中。这些寄存器只有在每次完成通道信号的采样转换后才进行更新。
  • FIFO 读取模式:ADC 采样转换的数据按照队列的顺序依次保存在队列的 FIFO 中。

    对于队列 1,假设设置 3 个采样节点,依次采样 CH0、CH1 和 CH2 的通道信号。当 ADC 完成队列 1 的采样转换后,会产生 Q1_INT 状态(指示完成了一次队列 1 的任务)。软件可以通过轮询或中断的方式读取队列 1 的 FIFO 获取转换结果。 第一次读取得到 CH0 的转换数据,第二次读取得到 CH1 的转换数据,第三次读取得到 CH2 的转换数据。

    此外,FIFO 数据的读取支持 DMA 操作,需要设置 DMA 使能以及 FIFO 阈值寄存器,才可以实现 DMA 自动获取 ADC 结果数据。