DAC1220 芯片手册

DAC1220 芯片手册

性能

  • 保证 20 位单调性,工作温度范围 −40°C~+85°C
  • 低功耗:2.5 mW
  • 电压输出
  • 建立时间(Settling Time):2 ms,可达到 0.012% 的稳定精度
  • 最大线性误差:±0.0015%
  • 片上校准(On-Chip Calibration)

性能详解

1. 分辨率与单调性

DAC1220 是一款 20 位高精度数模转换器,其核心优势在于保证 20 位单调性 。所谓单调性,是指在整个数字输入码范围内,输出模拟电压随数字码的增加而严格递增,不会出现局部跳变或回退。这一特性确保了在精密控制、仪表测量等场景下,输出信号始终具备良好的连续性与可预测性。

该芯片的工作温度范围为 −40°C~+85°C,覆盖工业级应用场景。在此温度区间内,芯片的单调性、线性度与增益误差均能得到可靠保证,适合在户外设备、工业现场等温度波动较大的环境中长期稳定运行。

2. 低功耗设计

DAC1220 的典型功耗仅为 2.5 mW,在同类 20 位精密 DAC 中处于领先水平。这一低功耗特性使其非常适合电池供电的便携式设备、传感器节点以及需要长时间待机的嵌入式系统。在系统设计中,较低的功耗还有助于简化电源管理电路、降低整体散热需求,从而提升系统可靠性。

3. 电压输出与建立时间

DAC1220 采用电压输出 架构,无需外接运算放大器即可直接驱动后级电路,从而简化了外围设计。其电压输出建立时间(Settling Time)为 2 ms ,可在该时间内达到 0.012% 的稳定精度。

建立时间指标决定了 DAC 从更新数字输入到输出稳定至最终值所需的时间,直接影响系统的更新速率。对于需要快速响应的闭环控制系统而言,2 ms 的建立时间足以满足大多数工业控制与数据采集场景的需求;而对于更高速度的应用,则需评估该指标是否满足系统的实时性要求。

4. 线性误差

DAC1220 的最大线性误差为 ±0.0015%,即满量程的 ±0.0015%。这一指标反映了实际输出与理想直线之间的最大偏差,是衡量 DAC 精度的关键参数之一。极低的线性误差保证了输出信号的准确性,使其适用于高精度仪器仪表、医疗设备、科学实验等对精度要求严苛的场合。

5. 片上校准

DAC1220 内置**片上校准(On-Chip Calibration)**功能,可在上电或运行过程中对增益误差和失调误差进行自动校准,无需外部校准电路或人工干预。片上校准能够有效补偿温度漂移和制造工艺带来的误差,进一步提升长期稳定性,降低系统维护成本,简化量产时的校准流程。

典型应用场景

  • 工业过程控制:利用高分辨率与低线性误差,实现精密阀门、电机等执行机构的精确控制。
  • 精密仪器仪表:为数字万用表、信号发生器等设备提供高精度模拟输出。
  • 医疗电子:用于超声、监护等设备中的高精度信号生成。
  • 便携式设备:凭借低功耗特性,延长电池供电设备的工作时间。

总结

DAC1220 凭借 20 位高分辨率、低功耗、快速建立时间、极低线性误差以及片上校准等特性,成为高精度模拟输出应用中的理想选择。工程师在选型时,可结合系统对精度、速度、功耗与温度范围的需求,综合评估该芯片是否满足设计要求。## 应用

  • 过程控制(Process Control)
  • ATE 引脚电子电路(ATE Pin Electronics)
  • 闭环伺服控制(Closed-Loop Servo Control)
  • 智能变送器(Smart Transmitters)
  • 便携式仪器(Portable Instruments)

说明

DAC1220 是一款 20 位数模转换器(D/A Converter,DAC),在规定温度范围内可保证 20 位单调性。该器件采用 Δ-Σ(Delta-Sigma)技术,能够以极低功耗,在小型封装中实现优异的线性性能。

DAC1220 的分辨率可设置为 20 位或 16 位:

  • 在 **20 位满量程(Full-Scale)**模式下,典型建立时间为 15 ms,可达到 0.003% 的精度;
  • 在 16 位满量程模式下,建立时间最长约为 2 ms,可达到 0.012% 的精度。
    其输出范围为参考电压的 2 倍。芯片内部集成了校准电路,能够显著降低零点偏移误差(Offset Error)和增益误差(Gain Error)。

DAC1220 配备了同步串行接口(Synchronous Serial Interface)。在单 DAC 应用中,串行接口只需要 两根线即可实现通信,有利于采用低成本的隔离方案。对于多个 DAC 的系统,可通过 CS(片选)信号选择对应的 D/A 转换器。

DAC1220 主要针对工业过程控制领域中的闭环控制应用而设计,同时也适用于测试与测量领域中的高分辨率应用。此外,它还非常适合:

  • 远程应用;
  • 电池供电仪器;
  • 电气隔离系统。

DAC1220 提供 SSOP-16 封装。

设备信息及引脚图

工作原理(THEORY OF OPERATION)

DAC1220 是一款单片 20 位 Δ-Σ(Delta-Sigma)数模转换器(DAC),专为需要极高精度的应用而设计。DAC1220 所采用的 Δ-Σ 拓扑结构可保证在工业温度范围内实现 20 位单调性。DAC1220 也可以工作在 16 位模式,此时可以获得更快的建立时间,但代价是噪声会有所增加。

DAC1220 的核心由一个插值滤波器(Interpolation Filter)和一个二阶 Δ-Σ 调制器(Second-Order Delta-Sigma Modulator)组成。调制器的输出首先经过一个一阶开关电容滤波器(First-Order Switched-Capacitor Filter),随后再经过一个二阶连续时间滤波器(Second-Order Continuous-Time Filter),最终产生模拟输出电压。

为了缩短建立时间,当 DAC1220 检测到输出电压变化阶跃大于约 40 mV 时,可以自动调节其滤波器的截止频率。该功能也可以关闭。

芯片内部集成了自校准功能,用于补偿内部的零点偏移误差(Offset Error)和增益误差(Gain Error)。如有需要,校准参数也可以保存到外部并重新加载。

DAC1220 还可以进入睡眠模式(Sleep Mode)。在该模式下,功耗可降低到正常状态的大约 1/6,即约 0.45 mW。进入睡眠模式后,输出端会被断开。

DAC1220 通过同步串行接口进行控制,可采用 2 线或 3 线方式。接口既可以双向工作,也可以单向工作,寄存器读回功能是可选的。

自校准系统(Self-Calibration System)

DAC1220 的自校准系统会测量 DAC 的输出,并计算合适的增益校准系数和偏移校准系数。

在校准过程中,DAC 的输出电压会发生变化,但也可以选择在校准过程中将输出端断开。

  • 偏移校准(Offset Calibration)

    进行偏移校准时,DAC 的输出电压首先被设置到中量程(Mid-Scale)。

    然后,芯片通过一个自动调零比较器(Auto-Zeroed Comparator),反复比较:

    DAC 输出电压与 VREF 参考电压

    每次比较之后,比较器都会重新进行自动调零。

    随后,比较结果会被记录并取平均值,再经过二进制补码(Two's Complement)调整,最终存入:

    Offset Calibration Register,OCR------偏移校准寄存器

  • 增益校准(Gain Calibration)

    增益校准的工作方式与偏移校准类似。

    不同之处在于,增益校准使用的是芯片内部产生的参考电压进行校正,并且最终寄存器数值的计算方法也不同。

    校准结果被存储在:

    Full-Scale Calibration Register,FCR------满量程校准寄存器

    该寄存器中的结果代表增益校准码(Gain Code),并且不进行二进制补码调整。

    修改 Gain Register 的数值,会改变相同数字输入码对应的内部输出电压范围,而这个变化范围以 VREF 为中心。

基本连接(BASIC CONNECTIONS)

DAC1220 的基本连接电路见数据手册中的 Figure 5(图 5)。

输出(Output)

输出电压范围标称为 0 V ~ 2 × VREF,输出电压不会低于地电位。

输出放大器并不适合驱动较重负载,其最大输出驱动电流为 0.5 mA。在上电期间以及睡眠模式下,输出放大器会被断开,因此此时输出端处于高阻态。

输出在接近电源轨的位置并不是完全线性的。器件规定的最大线性范围为:

AGND + 20 mV ~ AVDD − 20 mV

如果希望在 0~5 V 全范围内获得较好的线性度,可以将:

  • AVDD 提高到 5.02 V 或更高
  • 或将 AGND 降低到 −20 mV 或更低
    只要仍然满足器件规定的工作范围,就不会损坏芯片。

滤波电容(Filter Capacitors)

DAC1220 的连续时间输出滤波器需要两个外部电容才能工作。

推荐的电容值取决于 DAC1220 工作在 16 位模式还是 20 位模式:

这些电容应具有良好的稳定性和较高品质。强烈推荐采用:

  • 薄膜电容;
  • 或其他专门用于精密滤波的高性能电容。
    低质量电容会明显降低 DAC 的性能。

C1 和 C2 引脚对噪声非常敏感。 为获得最佳噪声性能,建议在这些引脚周围布置一个连接至参考电压 VREF 的保护环(Guard Ring)。具体可参考数据手册中的 PCB Layout 部分。

参考电压(Voltage Reference)

DAC1220 的参考电压输入设计值为:

VREF = +2.5 V

在 VREF = 2.5 V 时,输出范围大约为:0 ~ 2*VREF

即:0 ~ 5V

数字接口(Digital Connections)

除了晶振相关引脚之外,DAC1220 的数字引脚采用:

TTL-compatible CMOS 逻辑电平

这些数字引脚可以直接由 3.3 V 逻辑信号驱动。

在对噪声比较敏感的应用中,数字信号的电平跳变速度最好不要过快。过快的数字边沿可能通过芯片内部耦合到模拟输出端,引入噪声。

可以通过以下方法减慢数字信号的上升/下降沿:

  • 串联电阻;
  • RC 滤波器。
    对于你的高精度 DAC 应用,这一点比较重要,因为过快的 SPI 边沿可能会给模拟输出引入额外干扰。

时钟振荡器(Clock Oscillator)

DAC1220 内置晶体振荡器电路,使用:

  • XIN
  • XOUT
    两个引脚。
    如果使用晶体,只需要按照数据手册 Figure 5 连接晶振和对应的负载电容。

图中给出的负载电容示例为:12 pF

但正确的电容值主要取决于:

  • 所选晶振;
  • PCB 布局;
  • 寄生电容。
    而不是单纯由 DAC1220 决定。

负载电容会影响:

  • 启动时间;
  • 振荡频率;
  • 起振可靠性。
    如果晶振启动不可靠,可以尝试适当降低负载电容。

同时需要注意:

PCB 走线和器件引脚自身的寄生电容,也可能占总负载电容的很大一部分。

当晶振正常工作时,在 XIN 和 XOUT 引脚上都可以观察到幅值相对较小的正弦波。

DAC1220 推荐使用的典型时钟频率为:

2.5 MHz

如果偏离 2.5 MHz 太多,可能会影响:

  • 输出噪声;
  • 建立时间;
  • SPI/串行接口时序参数。

连接外部时钟(Connecting an External Clock)

也可以不给 DAC1220 使用晶振,而是在 XIN 引脚输入外部时钟。

外部时钟可以使用:

  • CMOS 电平;
  • TTL 电平。
    如果使用外部时钟:
    XOUT 应保持悬空,不连接。

在某些情况下,可以在时钟线上加入 RC 滤波,以降低时钟信号耦合到模拟输出中的噪声。

串行接口(Serial Interface)

DAC1220 可以由大多数 SPI 外设进行控制,也可以采用软件模拟 SPI(bit-banging)的方式实现通信。

需要注意的是,如果 SDIO 工作在双向模式,可能需要在该线上增加一个上拉电阻,以避免线路处于悬空状态。

串行时钟频率最大只能达到主时钟频率的 1/10。例如,当主时钟频率为:fCLK = 2.4576 MHz

则串行时钟最大为:fSCLK,max = 245.76 kHz

设计时必须注意这一限制,因为 DAC1220 可能无法直接与工作在更高 SPI 频率下的其他器件共用同一 SPI 总线。

如果 DAC1220 放在共享 SPI 总线上,则必须对 **CS(片选)**信号进行控制;如果不共享 SPI 总线,则 CS 可以直接接地。

虽然 SDIO 是一根双向数据线,但只要不执行寄存器读取操作,也可以将其作为单向输入使用。

也就是说,DAC1220 可以只写不读。不过,对于可靠性要求较高的应用,这种方式并不推荐,因为无法通过寄存器读回来直接确认 DAC1220 的寄存器状态以及实际工作状态。

电源(Power Supplies)

DAC1220 具有独立的:

  • 模拟电源:AVDD
  • 数字电源:DVDD
    两者均设计为:+5V。需要特别注意:DVDD 绝对不能比 AVDD 高出超过 300 mV。否则 DAC1220 可能会被永久损坏。但是,允许:AVDD > DVDD。即模拟电源高于数字电源不会造成损坏。

AVDD 与 DVDD 的上电顺序

大多数设计会使用同一个 +5 V 电源同时给 AVDD 和 DVDD 供电。

这种情况下:

5V ──→ AVDD

└─→ DVDD

二者同时上升是允许的,不存在问题。

如果 AVDD 和 DVDD 使用不同的电源,则必须正确控制上电顺序。

数据手册推荐可以使用**肖特基二极管(Schottky Diode)**进行保护,使:DVDD-AVDD不会超过一个肖特基二极管的正向压降,从而避免 DVDD 明显高于 AVDD。

欠压与上电复位(Brownouts and Power-On Reset)

DAC1220 内部集成了:

POR------Power-On Reset,上电复位电路

只要电源电压的上升速度达到:50 mV/ms。POR 电路就能够正常触发。

如果电源上升速度比这个值更慢,POR 可能无法正确触发。

DAC1220 没有欠压检测器(Brownout Detector)。

而且 POR 电路只有当电源电压下降到非常接近 0 V 后,才会重新进入可以触发的状态。

所以如果运行过程中:5V - 3V - 又恢复到5V

而没有真正掉到接近 0 V,DAC1220 内部逻辑可能进入异常状态。

可能表现为:

  • 工作异常;
  • 寄存器状态错误;
  • 通信异常;
  • 严重时完全失效,直到重新彻底掉电。
    在这种情况下,有时需要主动将电源彻底放电,因为 DAC1220 在异常供电状态下甚至可能无法正确识别 SCLK 复位模式。

DAC1220 没有单独的:RESET硬件复位引脚。取而代之的是通过 SCLK 输入一个特殊的时钟序列来实现复位。

也就是:SCLK Reset Pattern。

电源去耦

为了获得最佳性能,AVDD 和 DVDD 都需要进行充分的电源去耦。

数据手册推荐可以使用:

方案一:10 uF 多层陶瓷电容。

方案二:10 uF + 0.1 uF

其中:

  • 10 µF 可以使用钽电容;
  • 0.1 µF 使用陶瓷电容。
    特别是 0.1 µF 陶瓷电容必须尽可能靠近 DAC1220 的电源引脚放置。

数字接口

时序(Timing)

该串行接口采用同步通信方式,并由 SCLK 输入信号进行控制。

DAC1220 在 SCLK 的下降沿锁存输入数据位,并在 SCLK 的上升沿移出输出数据位。

因此,外部控制器应当:

  • 在 SCLK 上升沿改变/移出待发送的数据;
  • 在 SCLK 下降沿读取并锁存接收到的数据。
    相关波形可参见数据手册中的 Figure 7~Figure 11,具体时序参数见 Table 2~Table 4。

片选引脚 CS

CS(Chip Select,片选)为低电平有效。当 CS 为高电平时,DAC1220 会忽略 SCLK 上的活动。

在控制 CS 时,需要遵守一定的时序限制和延时要求,如数据手册 Figure 10 所示。如果不满足这些要求,DAC1220 可能会出现工作异常。如果不使用 CS,应将其直接接低电平。当 CS 始终保持低电平时,也需要遵守对应的时序限制和延时要求,如 Figure 9 所示。如果这些时序要求被违反,DAC1220 同样可能出现异常。DAC1220 的串行接口是按字节组织的,所有数据都以 8 位一组进行传输。

I/O 恢复(I/O Recovery)

DAC1220 的串行接口带有超时机制。

当主时钟:fCLK =2.5 MHz时,超时时间大约为:100 ms

就是说,如果某条命令在传输过程中被中断,并且在大约 100 ms 内:

  • SCLK 没有活动;
  • CS 也没有发生变化;
    那么 DAC1220 会自动取消当前命令。
    如果被取消的是一个写命令,则不会对任何寄存器产生影响。
    该超时时间会随着 fCLK 的变化而按比例变化。

SCLK 复位序列(SCLK Reset Pattern)

DAC1220 没有独立的 RESET 复位引脚。

作为替代,芯片内部包含一个检测电路,用于监测 SCLK 上是否出现某种特殊的时钟序列。一旦检测到该序列,就会触发内部硬件复位信号。

这个特殊序列称为:SCLK Reset Pattern(SCLK 复位序列)

其具体波形见 Figure 12,时序参数见 Table 5。

这个复位序列与正常 SPI 通信中的 SCLK 波形有明显区别,因此在正常工作过程中,一般不会被意外触发。

需要特别注意:SCLK Reset Pattern 只有在 CS 为低电平时才能被识别。

当 CS 为高电平时,DAC1220 会忽略 SCLK,因此不会检测到复位序列。

编程(PROGRAMMING)

命令(Commands)

与 DAC1220 的通信完全通过**命令(Command)**完成,这些命令用于访问 DAC1220 内部寄存器。每条命令由1 个命令字节后跟 1、2 或 3 个数据字节组成。根据命令是读命令还是写命令,这些数据字节可以发送到 DAC1220或从 DAC1220 读取。命令字节的格式见 Table 6,各位的具体含义见 Table 7。

DAC1220 的命令访问的是内部寄存器映射表(Register Map),具体见 Table 11。一条 DAC1220 命令可以:读取或写入 1 个字节;读取或写入 2 个相邻字节;读取或写入 3 个相邻字节。

位和字节顺序(Bit and Byte Order)

命令中数据字节的位传输顺序是可以配置的。DAC1220 可以设置为:MSB First:最高有效位先传输;LSB First:最低有效位先传输。但有一个重要例外:命令字节始终以 MSB First 方式发送。

相关设置由命令寄存器中的 MSB 位控制,具体见 Table 6 和后续寄存器说明。数据字节本身的先后顺序也可以配置,由 BD 位控制。但同样需要注意:BD 位不会影响命令字节,命令字节始终最先发送。

寄存器(Registers)

DAC1220 内部共有 4 类寄存器,寄存器映射见 Table 11。

其中:DIR(Data Input Register,数据输入寄存器):24 位;两个校准寄存器:均为 24 位;CMR(Command Register,命令寄存器):16 位。CMR 中主要存放 DAC1220 的配置位。

工作模式(Modes)

DAC1220 有 3 种工作模式:

  1. Sleep Mode,睡眠模式
  2. Normal Mode,正常模式
  3. Self Calibration Mode,自校准模式

在 Sleep 模式下:DAC1220 输出关闭;输出端处于高阻态;大部分内部电路关闭;功耗很低;但内部振荡器仍然继续工作。

芯片复位后首先进入 Sleep 模式。

在 Normal 模式下:DAC1220 内部功能完全开启;模拟输出有效。

进入 Self Calibration 模式后,DAC1220 会自动执行内部自校准流程。当自校准完成后:DAC1220 会自动切换回 Normal Mode。

启动流程(Startup Sequence)

在启动 DAC1220 时,通常应按照以下步骤进行初始化:

  1. 等待晶振启动 如果 DAC1220 使用外部晶振提供时钟,应等待晶振启动,至少等待:25 ms之后再尝试与 DAC1220 通信。如果在晶振尚未达到最终工作频率之前就尝试通信,通常会导致通信数据损坏。
  2. 可选执行 SCLK 复位序列 晶振启动后,也可以执行一次 SCLK Reset Pattern(SCLK 复位序列)。这是因为该复位序列的检测依赖于晶振时钟周期。因此,在上电时执行复位序列,可以确保 DAC1220 被正确复位,而不会因为:POR 上电复位失败;电源欠压(Brownout)或其他原因导致芯片停留在未知状态。复位成功后,DAC1220 会进入:Normal Mode(正常模式)
  3. 配置 Command Register 按照实际应用需求设置 Command Register(命令寄存器)。其中可能包括将 DAC 的工作模式从Sleep Mode → Normal Mode 或者进入Self Calibration Mode(自校准模式)
  4. 对 DAC1220 进行校准 虽然校准是可选步骤,但数据手册建议 DAC1220 几乎每次都应该进行校准。可以:每次启动时重新校准;或使用之前保存的校准参数。具体校准方法见后面的 **Calibration(校准)**章节。

校准完成后,DAC1220 会返回 Normal Mode。DAC1220 在进入 Normal Mode 后即可接受数据,但数据手册强烈建议进行校准,或者使用之前保存的校准值。

校准(Calibration)

DAC1220 的校准由两个寄存器控制:偏移校准寄存器 OCR(用于存储决定 DAC 偏移校准的参数);满量程校准寄存器 FCR(用于存储决定 DAC 增益校准的参数)。OCR 中的数值采用**缩放并累加(scaled and additive)的方式。它与 DAC 内部产生的偏移校准电压之间具有线性关系。FCR 中的数值采用缩放并乘法(scaled and multiplicative)**的方式。它与 DAC 内部产生的增益校准乘数之间具有线性关系。多次校准可以提高精度

由于 DAC1220 的校准功能具有线性特性,因此可以通过多次校准并对结果进行平均来获得更高的精度。例如,可以:连续执行多次自校准;每次记录校准结果;将所有结果进行平均;将平均结果分别写入 OCR 和 FCR。这样可以进一步降低校准结果中的随机误差。

自校准流程(Self-Calibration Procedure)

进行自校准时,需要首先将 DAC1220 设置为:Self Calibration Mode(自校准模式)

具体方法是:将 Command Register 中的 MD1 设置为 0;将 MD0 设置为 1。在 2.5 MHz 时钟频率下,一次完整的自校准通常需要:300~500 ms。具体校准时间并不确定,而是取决于校准结果。

CALPIN 位的作用:

如果 Command Register 中CALPIN = 1,那么在校准过程中,DAC 的输出端仍然保持连接。也就是说:

DAC输出 ─────→ 外部负载

校准过程中仍连接

校准期间 DAC 输出电压会发生变化。如果 DAC 输出端连接了较大的负载,那么这种方式可能比较重要。

如果CALPIN = 0,则在校准过程中,DAC 的输出端会被断开。这时 DAC 输出端呈现:高阻抗状态数据手册特别指出,如果校准期间断开输出,DAC 输出放大器会处于高阻状态,这与正常工作状态不同。因此,校准时是否断开输出,需要根据实际负载情况选择。为什么断开输出后仍然可以进行校准?如果CALPIN = 0,那么当校准开始时,DAC 会短暂地给输出端的 C2 电容充电,使其达到当前输出电压。如果外部没有负载:C2 实际上就相当于一个采样保持(Sample-and-Hold)电容。这样,在校准过程中最终输出电压仍然可以保持在相应的电压水平。

当校准完成后,DAC1220 会自动切换回:Normal Mode。如果在校准期间输出端被断开,那么校准结束时会重新连接输出端。可以通过读取:MD1 和 MD0来判断校准是否完成。当MD1 = 0,MD0 = 0时,说明:自校准已经完成,DAC1220 已经回到 Normal Mode。

如果不读取校准状态,那么可以采用简单的等待方式:在 2.5 MHz 时钟条件下,校准启动后至少等待 500 ms,然后再向 DAC1220 发送新的命令。这样可以避免校准尚未完成时就发送新的控制命令。自校准完成后:OCR 中保存偏移校准结果;FCR 中保存增益校准结果;新的校准参数会立即生效。

设置输出电压(Setting the Output Voltage)

要设置 DAC1220 的输出电压,需要向 **Data Input Register(DIR,数据输入寄存器)**写入相应的数字码。向 DIR 的任意一个字节写入数据,都会使 DAC 更新输出电压,但只有在整个写命令完成后,输出电压才会真正发生变化。

  1. DIR 数据寄存器
    DAC1220 可以工作在:16 位模式或 20 位模式。DIR 的宽度为 24 位,其中存储的是 DAC 输出码。但是,DIR 的低位部分会被忽略。16 位模式只有 DIR 的高 16 位有效,低 8 位被忽略。因此在 16 位模式下,只需要写入 DIR 的前两个字节即可。第三个字节对输出没有影响。20 位模式DIR 的高 20 位有效,低 4 位被忽略。因此在 20 位模式下,必须把 DIR 的3 个字节全部写入,才能完整更新 DAC 输出码。
  2. 输出码格式
    DAC1220 支持两种数字编码格式:① 直接二进制(Straight Binary):即普通的无符号二进制编码。② 偏移二进制/偏移二补码(Offset Two's Complement):数据手册这里的 offset two's complement 可以理解为以中点为零点的二补码形式。两种格式具体通过 Command Register 中的 DF 位进行选择。
  3. 一共有 4 种数据传输方式
    由于有两个因素(16 位 / 20 位)以及(Straight Binary / Offset Two's Complement)因此一共形成:4种数据传输/输出转换方式。具体对应关系见数据手册 Table 8。
  4. DIR 代码可以理解成一个 24 位数字
    DIR 中的代码也可以被理解成一个 24 位数字。这个理解方式对于软件编程非常方便。
  5. 16 位和 20 位模式的一个重要区别
    如果把 DIR 当作一个 24 位数字,那么 16 位和 20 位模式可以使用相同的转换函数,只是最终写入时进行不同位数的截断。

快速建立模式(Fast Settling Mode)

为了加快 DAC 输出电压的建立速度,DAC1220 可以改变其输出滤波器的截止频率。提高滤波器截止频率可以使 DAC 输出更快地稳定,但代价是:噪声会增加。DAC1220 提供了一种**自适应滤波(Adaptive Filtering)**模式,在速度和噪声之间进行折中。其工作方式是:当 DAC 输出电压变化超过约 40 mV 时,提高滤波器截止频率,从而实现快速建立;当 DAC 输出电压已经稳定后,再次降低滤波器截止频率,以降低噪声。也就是说:快速建立模式由两个配置位控制。快速建立功能由 **Command Register(CMR,命令寄存器)**中的两个 bit 控制:ADPT(CMR bit 15)和 DISF(CMR bit 4)。两者组合决定具体的快速建立模式。

寄存器(REGISTERS)

命令寄存器 CMR

**Command Register(CMR,命令寄存器)**包含 DAC1220 的各种配置位。CMR 的具体 bit 定义见数据手册 Table 12。这里有一个非常重要的时序要求:对 CMR 的写入,要在整个写命令最后一个字节的最后一个 bit 所对应的 SCLK 下降沿时才生效。

数据输入寄存器(Data Input Register,DIR)

数据输入寄存器 DIR 决定 DAC1220 在 **Normal Mode(正常模式)**下的输出电压。在 Sleep Mode(睡眠模式)下,向 DIR 写入数据不会影响输出电压,但写入的数值会被保存。当 DAC1220 重新进入 Normal Mode 时,DIR 中保存的数值会立即生效。

复位后DIR=0。关于 DIR 的具体使用方法,请参见前面的 **Setting the Output Voltage(设置输出电压)**章节。

偏移校准寄存器(Offset Calibration Register,OCR)

偏移校准寄存器 OCR 存储一个 24 位二进制补码(Two's Complement)数值。在 DAC 进行数字码转换之前,这个 OCR 数值会被加到 DIR 中的数值上。可以简单理解为:DAC内部校正码 = DIR + OCR。因此,OCR 主要用于补偿 DAC 的偏移误差(Offset Error)。在 Sleep Mode 下向 OCR 写入数据不会影响当前输出;但数据会被保存;当 DAC1220 重新进入 Normal Mode 后,OCR 中的数值会立即生效。复位后OCR =0 。具体校准方法参见数据手册中的 **Calibration(校准)**章节。

满量程校准寄存器(Full-Scale Calibration Register,FCR)

满量程校准寄存器 FCR 存储 DAC 的增益校准参数(Gain Calibration Constant)。在 DAC 进行最终数字码转换之前,DIR 中的数据会根据 FCR 中的值进行乘法调整。也就是说,可以简单理解为:DAC内部最终码 - DIR -FCR。因此:OCR → 主要负责偏移校准;FCR → 主要负责增益校准。在 Sleep Mode 下:向 FCR 写入数据不会影响当前输出;但数据会被保存;当 DAC1220 重新进入 Normal Mode 后,FCR 中的值会立即生效,复位后FCR=800000H。

应用信息(APPLICATION INFORMATION)

PCB 布局建议(Layout Recommendations)

DAC1220 是一种高精度模拟器件,内部同时包含数字电路。要实现良好的代码精度并不困难,但如果希望达到优秀的整体精度性能,PCB 布局可能需要经过多次优化。

  1. C1、C2 周围设置保护环
    在 C1 和 C2 引脚周围设置足够宽的**保护环(Guard Ring)或保护区域(Fill)**非常重要。保护环应连接到参考电压 VREF。这是因为 C1、C2 节点对噪声非常敏感,容易将噪声耦合到输出端。在 PCB 上,C1、C2 的另一侧设置GND或大面积接地平面(Ground Plane)也有助于降低噪声。
  2. 电容尽可能靠近芯片
    C1 和 C2 本身应尽可能靠近 DAC1220 对应引脚放置。特别需要注意:C1、C2 的走线必须尽可能短。而连接和VOUT和VREF的走线可以相对长一些。
  3. 数字线路与模拟线路分开
    必须特别注意:数字信号走线应尽可能远离模拟信号走线。这样可以避免数字信号的回流电流耦合到模拟部分。
  4. 晶振布线
    如果使用外部晶振,尽可能不要通过过孔(Via)连接晶振与 DAC1220。因为过孔会增加寄生电感,从而影响晶振的起振;稳定性;可靠性。
    晶振连接走线应该尽可能短;晶振尽可能靠近 DAC1220;避免不必要的走线长度。还需要注意:增加接地平面或增加走线长度都会增加寄生电容,因此在选择晶振负载电容时,应将这些额外寄生电容考虑进去。

软件注意事项(Software Considerations)

要实现 DAC1220 的可靠通信,严格遵守数据手册规定的接口时序非常重要。如果违反这些时序要求,轻则可能导致输出数据错误;严重时可能导致整个通信过程出现错误。因此,ESP32-S3 编写 DAC1220 驱动时,不能仅仅考虑:SPI频率,CPOL,CPHA还必须严格考虑数据手册规定的CS 建立时间;CS 保持时间;SCLK 高/低电平时间;数据建立时间;数据保持时间;字节之间的延时;CS 拉高/拉低后的延时。如果不使用片选 CS,相关延时要求会略有不同。

SPI 字节传输开始时刻与微控制器内部 SPI 外设产生的时序之间可能存在一定问题。SPI 字节传输开始时的延时,是使用 SPI 外设的微控制器中比较常见的问题。因此需要确保:延时操作是在一个完整的 SPI 字节传输完成之后开始的。或者将一个字节实际传输所需要的时间加入到延时时间中。有些程序可能会发现,使用:Bit-Banging(GPIO 软件模拟 SPI)反而是与 DAC1220 通信最简单的方法。原因是 DAC1220 对时序和方向变化有一定要求,而软件模拟 SPI 可以更加精确地控制:SCLK,SDIO和CS之间的变化时刻和延时。

仅写入接口(Write-Only Interfacing)

在一些应用中,例如隔离通信(Isolated Interface),由于 SDIO 需要在读回数据时改变数据方向,因此使用 DAC1220 的双向通信可能比较麻烦。这种情况下:DAC1220 可以采用只写(Write-Only)方式进行通信。但需要考虑以下问题:

  1. 无法验证通信是否正常
    采用只写方式后,无法仅通过串行接口确认 DAC1220 是否正在正常工作。因为你没有读取 DAC1220 内部寄存器的能力。
  2. 建议启动后等待 150~200 ms
    启动后至少等待 150~200 ms,再开始发送通信命令。这样做可以确保,如果之前出现固件问题;复位问题;上电异常;导致 DAC1220 没有正确启动,那么之前的通信状态可以通过 I/O Recovery 超时机制被取消。也就是说,等待 150~200 ms 有利于确保 DAC1220 进入一个干净、确定的通信状态。
  3. 使用 SCLK Reset Pattern 时的注意事项
    如果使用:SCLK Reset Pattern(SCLK 复位序列)来代替上述等待过程,则需要先给晶振足够的时间启动。原因是:SCLK Reset Pattern 是根据 DAC1220 内部晶振的时钟周期进行检测的。如果晶振还没有开始运行,就可能无法正确检测到复位序列。

隔离(Isolation)

DAC1220 的串行接口允许采用两线方式连接。当系统需要进行**电气隔离(Galvanic Isolation)**时,这种两线接口非常有优势。图 13 给出了一个隔离连接的示例。在该示例中:CS(片选)没有使用,因此直接接地;DAC1220 工作在单向通信模式(unidirectionally)。也就是说,如果只需要向 DAC1220 写入数据,而不需要读取寄存器,就可以采用这种简单的两线接口,非常适合后续做数字隔离。

DAC1220 版本差异(DAC1220 Revisions)

截至该数据手册发布时,DAC1220 一共发布过两个版本。两个版本之间唯一的区别是:Command Register(CMR,命令寄存器)的 Bit 13。

第一版Bit 13可以写入;默认值为 0。1999 年发布的当前版本中:Bit 13 固定为 1;不可写入。如果使用第一版 DAC1220,应始终将 CMR 的 Bit 13 写成 1。虽然这个 bit 并不是关键功能位,但是:如果没有将该 bit 设置为 1,DAC1220 的性能可能无法达到最佳状态。对于当前版本的 DAC1220,设置这个 bit 不会造成任何问题。

因此,从软件兼容性角度来看,建议你的 ESP32-S3 驱动在初始化 CMR 时,始终将 Bit 13 设置为 1。

术语定义(Definition of Terms)

  1. 差分非线性误差(Differential Nonlinearity Error,DNL)
    指实际的**步进宽度(Step Width)**与理想的 1 LSB之间的差值。
    如果实际步进=1LSB,那么:DNL=0。DNL 小于 1 LSB 的指标可以保证 DAC 具有单调性(Monotonicity)。
  2. 漂移(Drift)
    指某个参数随温度发生的变化。例如 DAC 的输出电压随着环境温度变化而发生变化,就属于温度漂移。
  3. 满量程范围(Full-Scale Range,FSR)
    FSR 表示 DAC 的典型模拟输出电压范围。DAC1220 的FSR = 2 x VREF。例如:VREF = 2.5V,则:FSR = 2 x 2.5 = 5V。因此 DAC1220 的典型输出范围为:0 - 5V
  4. 增益误差(Gain Error)
    增益误差表示:实际传输特性曲线与理想传输特性曲线之间的斜率差异。如果理想情况下:数字码增加 → 输出电压按照固定比例增加。但实际 DAC 的斜率略高或略低,就会产生增益误差。这也是为什么 DAC1220 中需要使用:FCR(Full-Scale Calibration Register)来进行增益校准。
  5. 线性误差(Linearity Error)
    线性误差------实际传输函数相对于由数据端点之间连接形成的理想直线的偏离程度。也就是说,如果把数字输入码 → 模拟输出电压画成曲线,理想情况下应该是一条非常直的直线。实际测量点可能会稍微偏离这条直线,这种偏离就是线性误差。
  6. 最低有效位权重(Least Significant Bit Weight,LSB Weight)
    LSB 权重------数字输入码变化 1 LSB 时,模拟输出电压对应发生的理想变化量。
  7. 单调性(Monotonicity)
    单调性------保证随着数字输入码增加,模拟输出只能增加或者保持不变,不会反而下降。
  8. 偏移误差(Offset Error)
    偏移误差------输出为零附近时,期望模拟输出值与实际模拟输出值之间的差值。该参数是在 VOUT = 20mV 附近进行测量并计算的。简单来说,就是 DAC 的"零点偏差"。
  9. 建立时间(Settling Time)
    建立时间------数字输入码发生变化以后,输出电压达到新的稳定值所需要的时间。
  10. fXIN
    fXIN表示 DAC1220 的 XIN 输入端的晶体振荡器频率或者兼容 CMOS 的外部输入时钟频率。
相关推荐
secondyoung1 天前
I2C通信协议详解
arm开发·驱动开发·stm32·单片机·嵌入式硬件·mcu·51单片机
不怕犯错,就怕不做2 天前
RK linux在buildroot中如何添加linux命令
linux·驱动开发·嵌入式硬件
喵叔哟2 天前
从 Prompt 到可执行规格:认识 GitHub Spec Kit
驱动开发·prompt·github
飞多学堂2 天前
每日开源硬件精选简报 2026-09-11
驱动开发·开源·开源硬件·硬件开源·电子制作
码农客栈3 天前
Linux I2C驱动实验
linux·运维·驱动开发
智者知已应修善业3 天前
【如何将此图变为000到101就返回】2026-4-7
驱动开发·经验分享·笔记·硬件架构·硬件工程
国产化创客4 天前
创客开发入门(七)Arduino ESP32-WS2812开发
驱动开发·单片机·物联网·智能硬件
ItJavawfc5 天前
Linux驱动-RTC-RX8010集成-驱动开发-系统移植-移植RX8010驱动
驱动开发·rtc·8010rtc 驱动移植
sukalot5 天前
windows 驱动实例分析系列: HidHide驱动分析-HidHideClient 篇(中)
windows·驱动开发