云计算百科
云计算领域专业知识百科平台

D223的标定系统与FRAM非易失存储:两点校准如何实现0.01%FSR精度

数据采集卡的精度不仅取决于ADC芯片,还取决于标定方案和参数存储的可靠性。本文解析D223如何通过两点线性插值校准 + FRAM铁电存储,将硬件精度从±0.05%提升到0.01%FSR。


一、精度从哪里来?

D223的精度指标分两个层次[note_244]:

层次精度说明
硬件精度 ±0.05% 出厂状态,未标定
标定后精度 0.01% FSR 用户执行两点标定后,一段时间内可达

AD7606BBSTZ本身是16位ADC,理论分辨率为1/65536 ≈ 0.0015%。但实际系统中,基准电压误差、PCB走线压降、运放偏移等因素会引入系统误差,使硬件精度降低到±0.05%[note_244]。

两点标定的作用就是消除这些系统误差。


二、两点线性插值校准算法

2.1 校准原理

D223采用两点线性插值校准方案[word_4]:

公式: Y = (X – X1) × (Y2 – Y1) / (X2 – X1) + Y1

其中:

  • X = 当前ADC读数(数字域)
  • X1 = 校准点1数字值(如输入0V时的ADC读数)
  • Y1 = 校准点1模拟值(如0V = 0)
  • X2 = 校准点2数字值(如输入10V时的ADC读数)
  • Y2 = 校准点2模拟值(如10V = 10000000 μV)

2.2 代码实现

double calc_adcCalibData(double data, double d1, double a1,
double d2, double a2) {
double result = (((data d1) * (a2 a1)) / (d2 d1)) + a1;
return result;
}

double getCalibAdcDatas(u8 widthByte, u8 ch, s32 data) {
double adcFloat = 0;
// 检查两点校准是否已配置
if(校准点A使能 && 校准点B使能) {
// 使用用户标定的两点进行线性插值
adcFloat = calc_adcCalibData(data,
_framDatas._adcCalibDatasPointA[ch].calibDigital, // 点1数字值
...);
}
return adcFloat;
}

每个通道独立配置两个校准点(A和B),互不影响[word_4]。

2.3 校准流程

  • 准备一个已知精度的标准电压源
  • 输入低电压(如0V),记录ADC读数作为校准点A
  • 输入高电压(如10V),记录ADC读数作为校准点B
  • 上位机将两点数据写入采集卡
  • 固件自动对后续采样值进行线性插值修正

  • 三、FRAM:校准参数的"保险箱"

    3.1 为什么用FRAM?

    校准参数必须在掉电后不丢失,传统方案用EEPROM或Flash。但D223选择了FRAM(铁电随机存储器)[note_63]。

    FRAM相对于EEPROM/Flash的优势[note_249]:

    特性FRAMEEPROM/Flash
    写入时间 <50ns 5~10ms
    写入寿命 100亿次(10^10) 10万~100万次
    写入功耗 1.5V低压 10-14V高压
    数据撕裂风险 无(电能前加载) 有(写入中断导致部分写入)
    读取后恢复 需要(读操作可能改变存储状态) 不需要

    FRAM的写入速度比EEPROM快1000倍,写入寿命高达100亿次,非常适合频繁更新的校准参数存储[note_249]。

    3.2 D223中的FRAM驱动

    D223通过SPI3连接FRAM芯片,驱动代码简洁高效[note_63]:

    // FRAM写时序:WREN → WRITE → WRDI
    void FramWrite(u8* data, u16 addr, u16 len) {
    FRAM_CS(0);
    HAL_SPI_Transmit(&hspi3, WREN, 1, 100); // 写使能
    FRAM_CS(1);

    FRAM_CS(0);
    HAL_SPI_Transmit(&hspi3, WRITE+addr, 3, 100); // 写命令+地址
    HAL_SPI_Transmit(&hspi3, data, len, 100); // 写数据
    FRAM_CS(1);

    FRAM_CS(0);
    HAL_SPI_Transmit(&hspi3, WRDI, 1, 100); // 写禁止
    FRAM_CS(1);
    }

    void FramRead(u8* rdData, u16 addr, u16 len) {
    FRAM_CS(0);
    HAL_SPI_Transmit(&hspi3, READD+addr, 3, 100); // 读命令+地址
    HAL_SPI_Receive(&hspi3, rdData, len, 100); // 读数据
    FRAM_CS(1);
    }

    3.3 FRAM中存储的内容

    D223上电时从FRAM加载全部参数[note_63]:

    void fram_read_datas(void) {
    FramRead((u8*)&_framDatas, FRAM_BASE_ADDR, FRAM_DATA_LENGTH);

    // 首次上电检测(软件版本号不匹配则初始化默认值)
    if(_framDatas.softVersion != 0x0223) {
    _framDatas.softVersion = 0x0223; // D223版本号
    _framDatas._adcParam.adc_ch_Enable = 0xff; // 8通道全使能
    _framDatas._adcParam.samplingRate = 100000; // 默认100kHz
    _framDatas._adcParam.sramRecordMaxTime = 100; // 默认100ms记录时长
    // … 初始化校准数据、DAC参数、PWM参数
    fram_write_datas(); // 写入FRAM
    fram_read_datas(); // 回读验证
    }

    // 参数范围约束
    _framDatas._adcParam.samplingRate = clamp(1, 510000);
    _framDatas.dacOutRate = clamp(1000, 10000);
    }

    FRAM中存储的参数包括[note_63]:

    • ADC校准数据(每通道两点)
    • ADC采样参数(采样率、量程、通道使能)
    • DAC输出参数
    • PWM参数
    • SRAM记录参数
    • 软件版本号(用于首次上电检测)

    四、三种存储的协同

    D223中实际上使用了三种存储器协同工作[note_137]:

    存储器作用特点
    SRAM 实时数据缓存、记录仪存储 速度快,掉电丢失
    FRAM 校准参数、配置信息 非易失,100亿次写入,<50ns写入
    Flash 固件存储 大容量,低成本,擦写次数有限

    系统启动时:CPU从Flash加载固件 → 从FRAM读取校准参数和配置 → SRAM作为运行时缓存[note_137]。


    五、标定注意事项

  • 需要自备标定源:两点标定需要用户自备标准电压源,精度应高于目标精度[word_5]
  • 标定后精度有时效性:标定后一段时间内精度可达0.01% FSR,但温度变化和器件老化会影响精度,建议定期重新标定[note_244]
  • 每通道独立标定:8个通道各自配置独立的校准点A和B,互不影响[word_4]
  • FRAM读取后需恢复:FRAM每次读取后需要执行存储器恢复操作,确保数据不变[note_249]

  • 六、总结

    D223的精度保障体系是一个完整的闭环:

    AD7606BBSTZ硬件精度±0.05% → 两点线性插值校准 → 校准参数存入FRAM → 掉电不丢失 → 标定后精度0.01% FSR

    环节方案关键指标
    ADC芯片 AD7606BBSTZ 16位,8通道同步
    校准算法 两点线性插值 Y = (X-X1)×(Y2-Y1)/(X2-X1) + Y1
    参数存储 FRAM铁电存储 100亿次写入寿命,<50ns写入
    硬件精度 未标定 ±0.05%
    标定后精度 两点标定 0.01% FSR

    FRAM的100亿次写入寿命和纳秒级写入速度,使得D223可以频繁更新校准参数而不担心存储器磨损——这是EEPROM和Flash无法做到的。


    系列完结:本文是D223技术解析系列的最后一篇。五篇文章分别覆盖了架构设计、8通道同步采样、DDS信号发生器、SRAM硬件记录仪、标定系统与FRAM存储,完整呈现了D223从芯片选型到系统实现的技术全貌。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » D223的标定系统与FRAM非易失存储:两点校准如何实现0.01%FSR精度
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!