DAC1282寄存器介绍以及模式操作介绍
寄存器映射总览 (Table 15)
地址 (Address) 寄存器名称 (Register) 上电默认值 (Default) 位 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0
0 GANMOD xxx11000 ID2 ID1 ID0 GAIN2 GAIN1 GAIN0 MODE1 MODE0
1 SINEG 00000000 SINEG7 SINEG6 SINEG5 SINEG4 SINEG3 SINEG2 SINEG1 SINEG0
2 SWM 00000000 FREQ SW2 SW1 SW0 M3 M2 M1 M0
3 N 00000111 N7 N6 N5 N4 N3 N2 N1 N0
4 DCG0 00000000 DCG7 DCG6 DCG5 DCG4 DCG3 DCG2 DCG1 DCG0
5 DCG1 00000000 DCG15 DCG14 DCG13 DCG12 DCG11 DCG10 DCG9 DCG8
6 DCG2 00000000 DCG23 DCG22 DCG21 DCG20 DCG19 DCG18 DCG17 DCG16
7 PULSA 00000000 0 0 0 PULSA4 PULSA3 PULSA2 PULSA1 PULSA0
8 PULSB 00000000 0 0 0 PULSB4 PULSB3 PULSB2 PULSB1 PULSB0
各个寄存器详细说明
1. GANMOD 寄存器 (地址 0h) - 增益与模式控制
这是最核心的控制寄存器。
位 名称 描述
7:5 ID[2:0] 只读的工厂识别码。用户无需关心,其值可能改变。
4:2 GAIN[2:0] 模拟增益控制。设置所有模式下的输出范围(脉冲模式除外)。
• 000 = 增益 1/1 (0 dB)
• 001 = 增益 1/2 (-6 dB) (仅DAC1282)
• 010 = 增益 1/4 (-12 dB)
• 011 = 增益 1/8 (-18 dB) (仅DAC1282)
• 100 = 增益 1/16 (-24 dB)
• 101 = 增益 1/32 (-30 dB) (仅DAC1282)
• 110 = 增益 1/64 (-36 dB) (仅DAC1282,此为默认值)
注意:DAC1282A仅支持 1/1, 1/4, 1/16。
1:0 MODE[1:0] 工作模式选择。改变模式会复位内部信号发生器。
• 00 = 正弦模式 (默认)
• 01 = 直流模式
• 10 = 数字数据模式
• 11 = 脉冲模式
2. SINEG 寄存器 (地址 1h) - 正弦模式数字增益
位 名称 描述
7:0 SINEG[7:0] 正弦波的数字衰减器。以0.5 dB为步进,从0 dB到全静音。
• 0000 0000 = 0 dB (默认)
• 0000 0001 = -0.5 dB
• 0000 0010 = -1.0 dB
• …
• 1110 1111 = -119.5 dB
• 1111 0000 至 1111 1111 = 全静音(输出为0)
3. SWM 寄存器 (地址 2h) - 开关、频率M值与范围
这是一个多功能寄存器。
位 名称 描述
7 FREQ 频率范围位。与M、N寄存器共同决定输出频率(见公式)。
6:4 SW[2:0] 开关控制。当SW/TD引脚为高电平时,控制内部开关的连接方式。
• 000 = 断开 (默认)
• 001 = 差分 (SWINP→SWOUTP, SWINN→SWOUTN)
• 010 = 差分反接
• 011 = 共模正
• 100 = 共模负
• 101 = 单端正
• 110 = 单端负
• 111 = 输出短路 (SWOUTP→SWOUTN)
3:0 M[3:0] 正弦频率 M 值。用于频率计算。
4. N 寄存器 (地址 3h) - 正弦频率 N 值
位 名称 描述
7:0 N[7:0] 正弦频率 N 值。用于频率计算。
输出频率计算公式 (Equation 1):
Foutput = (250 / 2^FREQ) * [(M[3:0] + 1) / (N[7:0] + 1)] Hz
(其中 fCLK = 4.096 MHz)
5. DCG0, DCG1, DCG2 寄存器 (地址 4h, 5h, 6h) - 直流模式数字增益
这三个寄存器组成一个24位的值,用于设置直流模式的输出电压。
DCG0: 最低有效字节 (LSB), Bits [7:0] = DCG[7:0]
DCG1: 中间字节, Bits [7:0] = DCG[15:8]
DCG2: 最高有效字节 (MSB), Bits [7:0] = DCG[23:16]
输出电压关系 (VREF=5V时):
0x000000 = -2.5 V × Gain
0x400000 = 0 V
0x7FFFFF = +2.5 V × Gain
0xFFFFFF = -2.5 V × Gain (环绕)
6. PULSA & PULSB 寄存器 (地址 7h, 8h) - 脉冲电平
这两个寄存器分别存储脉冲模式下的两个预设电平,由SYNC引脚选择。
位 名称 描述
7:5 - 保留。必须写入0。
4:0 PULSx[4:0] 脉冲电平。提供31个近似以3dB为步进的电平,从-2.5V到+2.5V。
• SYNC为低:输出 PULSA 设定的电平
• SYNC为高:输出 PULSB 设定的电平
注意:脉冲电平是固定的,不受GAIN[2:0]寄存器影响。
编程要点总结
基本配置流程:
通过 GANMOD 寄存器选择工作模式和模拟增益。
根据模式配置相应的寄存器:
正弦模式:设置 SWM(FREQ, M), N, SINEG。
直流模式:设置 DCG0-DCG2。
脉冲模式:设置 PULSA 和 PULSB。
数字数据模式:主要通过 SW/TD 引脚输入数据。
通过 SWM 寄存器控制输出开关的状态。
复位后状态:设备上电或复位后,默认处于正弦模式、频率31.25 Hz、增益1/64、数字增益0 dB、开关断开。
DAC1282A 与 DAC1282 的区别:主要体现在 GANMOD 寄存器的 GAIN[2:0] 位,DAC1282A 仅支持其中三个增益设置(1/1, 1/4, 1/16)。
8 Pulse Mode 核心原理
Pulse Mode 使用一个独立的、快速响应的 5位脉冲DAC,而不是主DAC。它有两个关键特点:
两个预设电平:您可以预先在 PULSA 和 PULSB 寄存器中设置两个不同的输出电压电平。
SYNC 引脚作为选择器:SYNC 引脚的电平决定当前输出哪个预设电平。
SYNC = 0 → 输出 PULSA 寄存器设定的电平。
SYNC = 1 → 输出 PULSB 寄存器设定的电平。
这使得您可以通过简单地切换 SYNC 引脚的电平,来生成一个在两个直流电平之间快速切换的脉冲信号。
Pulse Mode 操作步骤
第1步:切换到 Pulse Mode
通过 GANMOD 寄存器(地址 0h)的 MODE[1:0] 位将设备设置为脉冲模式。
写入操作:向地址 0h 写入数据,确保 MODE[1:0] = 11。
示例:如果要设置脉冲模式,并选择模拟增益为 1/1(此处注意:Pulse Mode 的电平是固定的,不受模拟增益影响,但寄存器仍需配置一个值),同时忽略只读的ID位。
数据字节:0xxx 0011 (其中 xxx 是 GAIN 位,可任意设置为有效值,例如 000 代表增益1/1)。
SPI 命令:WREG 指令,地址 00h,写入1个字节。
第2步:配置脉冲电平寄存器 PULSA 和 PULSB
这是最关键的一步。您需要根据 Table 6 来设置 PULSA[4:0] 和 PULSB[4:0] 的值。
Pulse Register 值与输出电压的对应关系 (VREF = 5 V)
输出电压 (V) PULSx[4:0] 输出电压 (V) PULSx[4:0]
+2.50 0 1111 -0.020 1 1111
+1.88 0 1110 -0.029 1 1110
+0.938 0 1100 -0.234 1 1000
… … … …
0 0 0000 -2.50 1 0001
编程示例:
假设我们希望:
当 SYNC=0 时,输出 +1.25 V
当 SYNC=1 时,输出 -1.25 V
设置 PULSA (SYNC=0 时的电平):
从表中查到 +1.25 V 对应的代码是 0 1101 (01101二进制)。
PULSA 寄存器(地址 07h)的格式是 000P4P3P2P1P0。
因此,需要写入 PULSA 寄存器的值是 0000 1101 = 0x0D。
SPI 命令:WREG 指令,地址 07h,写入1个字节,数据为 0x0D。
设置 PULSB (SYNC=1 时的电平):
从表中查到 -1.25 V 对应的代码是 1 0011 (10011二进制)。
需要写入 PULSB 寄存器(地址 08h)的值是 0001 0011 = 0x13。
SPI 命令:WREG 指令,地址 08h,写入1个字节,数据为 0x13。
第3步:触发脉冲输出(操作 SYNC 引脚)
配置完成后,脉冲DAC的输出就完全由 SYNC 引脚的电平控制。
初始状态:假设微控制器将 SYNC 引脚置为低电平,DAC输出立即变为 PULSA 设定的 +1.25V。
生成脉冲:
微控制器将 SYNC 引脚从 低电平切换到高电平。
DAC输出会非常快速地(建立时间约 25 µs)从 +1.25V 跳变到 PULSB 设定的 -1.25V。
根据需要,一段时间后,再将 SYNC 引脚拉低,输出又会跳变回 +1.25V。
9 DC 模式核心原理
在 DC 模式下,DAC1282 使用其主 DAC 和 24 位数字寄存器来生成一个高分辨率的直流电压。输出电压由两个因素共同决定:
模拟增益:由 GAIN[2:0] 位设置,决定输出电压的范围。
24 位数字代码:由 DCG[23:0] 寄存器设置,在选定的模拟增益范围内,精确控制输出电压的电平。
DC 模式操作步骤
第1步:切换到 DC Mode
通过 GANMOD 寄存器(地址 0h)的 MODE[1:0] 位将设备设置为直流模式。
写入操作:向地址 0h 写入数据,设置 MODE[1:0] = 01。
示例:要设置 DC 模式,并选择模拟增益为 1/4 (GAIN[2:0] = 010)。
数据字节:0xxx 1001 (其中 xxx 是 GAIN 位 010,ID位可忽略)。
即:0000 1001 = 0x09 (假设ID位为0)。
SPI 命令:WREG 指令,地址 00h,写入1个字节 0x09。
第2步:设置模拟增益
模拟增益 (GAIN[2:0]) 定义了 DC 模式下的最大输出范围。这个设置与正弦模式下的相同。
模拟增益设置 (Table 3)
GAIN[2:0] 模拟增益 (V/V) 差分输出范围 (Vpp) (VREF=5V)
000 1/1 ±2.5 V
001 1/2 ±1.25 V
010 1/4 ±0.625 V
011 1/8 ±0.312 V
100 1/16 ±0.156 V
101 1/32 ±0.078 V
110 1/64 ±0.039 V
注意:DAC1282A 仅支持 1/1, 1/4, 1/16。
选择策略:为了获得最佳性能(更好的SNR和更低的噪声),应选择能够覆盖您所需电压的最小增益(即最大的电压范围)。
第3步:设置 24 位数字代码
这是最核心的一步,通过三个8位寄存器 DCG0, DCG1, DCG2 来设置一个24位的值 DCG[23:0]。
DCG0 (地址 04h): 最低有效字节,Bits [7:0] = DCG[7:0]
DCG1 (地址 05h): 中间字节,Bits [7:0] = DCG[15:8]
DCG2 (地址 06h): 最高有效字节,Bits [7:0] = DCG[23:16]
数字代码与输出电压的关系 (Table 5)
DCG[23:0] 是一个二进制补码格式的24位数。
目标输出电压 (V_diff) DCG[23:0] 寄存器值 (十六进制) 说明
+FS × Gain 0x7F FFFF 正满量程
+0.5 × FS × Gain 0x40 0000 正半量程
0 0x00 0000 零输出
-0.5 × FS × Gain 0xC0 0000 负半量程
-FS × Gain 0x80 0000 负满量程
计算公式:
更精确的输出电压可以通过以下公式计算:
V_OUT = (DCG[23:0] / 2^23) × (V_REF × Gain)
其中:
DCG[23:0] 被理解为 24位有符号整数(范围从 -8,388,608 到 +8,388,607)。
V_REF 通常是 5 V。
Gain 是模拟增益 (如 1, 1/2, 1/4, …)。
编程示例:
假设我们已设置 Gain = 1/4 (输出范围 ±0.625 V),现在想要输出 +0.5 V。
计算所需代码:
满量程电压 = 2.5V × (1/4) = 0.625 V
所需输出相对于满量程的比例 = 0.5 V / 0.625 V = 0.8
24位代码值 = 0.8 × (2^23) = 0.8 × 8,388,608 = 6,710,886.4 ≈ 6,710,886 (十进制)
将 6,710,886 转换为十六进制:0x66 6666
写入寄存器:
写入 DCG2 (地址 06h): 0x66
写入 DCG1 (地址 05h): 0x66
写入 DCG0 (地址 04h): 0x66
SPI 命令:使用 WREG 指令,从地址 04h 开始连续写入3个字节,数据为 0x66, 0x66, 0x66。
DC 模式关键特性与注意事项
高分辨率:
24 位的分辨率意味着您可以在整个输出范围内进行 16,777,216 个步进的微调。对于增益 1/1 (±2.5V范围),每个步进约为 0.3 µV。
建立时间:
DC 模式的建立时间较慢,典型值为 100 µs (见 Figure 46)。这是因为输出经过了 CAPP/CAPN 引脚的外部滤波电容。在写入新的 DCG 值后,需要等待足够的时间让输出稳定。
DC 噪声:
数据手册中的 DC Noise 表格列出了在不同增益下,输出为 0V 时测得的输出噪声(RMS值)。
例如,在 Gain = 1/1 时,典型噪声为 1.3 µV₍RMS₎。这是评估系统本底噪声的重要参数。
输出精度:
DC 模式的精度受到增益误差、偏移误差和线性度的影响。这些参数在数据手册的 Electrical Characteristics 中有详细说明。
与 Pulse Mode 的区别:
DC Mode:使用主DAC,24位高分辨率,但建立时间慢(~100µs),输出经过滤波,噪声更低。
Pulse Mode:使用专用脉冲DAC,仅5位分辨率,但建立时间极快(~25µs),绕过输出滤波器。
操作流程总结
配置模式与增益:通过 GANMOD 寄存器设置为 DC 模式 (01) 并选择合适的模拟增益。
计算数字代码:根据所需的输出电压、参考电压和模拟增益,计算出 24 位的 DCG[23:0] 值。
写入数字代码:通过 SPI 将计算出的值分别写入 DCG2, DCG1, DCG0 三个寄存器。
等待稳定:等待至少 100 µs 让输出电压稳定下来。
测量验证:在 VOUTP 和 VOUTN 引脚之间测量差分输出电压。
正弦模式核心原理
在正弦模式下,DAC1282 内部的一个数字信号发生器会产生一个高纯度的正弦波数字序列。这个序列经过一个数字调制器后,转换成比特流去驱动主 DAC,最终通过输出放大器产生模拟正弦波。
输出电压的频率和幅度都可以通过寄存器进行高精度编程。
正弦模式操作步骤
第1步:切换到 Sine Mode
通过 GANMOD 寄存器(地址 0h)的 MODE[1:0] 位将设备设置为正弦模式。
写入操作:向地址 0h 写入数据,设置 MODE[1:0] = 00。
示例:要设置正弦模式,并选择模拟增益为 1/1 (GAIN[2:0] = 000)。
数据字节:0xxx 0000 (其中 xxx 是 GAIN 位 000,ID位可忽略)。
即:0000 0000 = 0x00 (假设ID位为0)。
SPI 命令:WREG 指令,地址 00h,写入1个字节 0x00。
第2步:设置输出频率
正弦波的输出频率由三个寄存器共同决定:FREQ (在 SWM 寄存器中)、M[3:0] 和 N[7:0]。
频率计算公式 (Equation 1):
F_output = (250 / 2^FREQ) * [(M + 1) / (N + 1)] Hz
约束条件:M[3:0] 的值必须 小于或等于 N[7:0] 的值。
参数说明:
FREQ位:一个粗调频段选择器。FREQ=0 对应高频段,FREQ=1 对应低频段(频率减半)。
M 和 N:细调频率的分子和分母。通过调整它们的比值,可以在一个频段内精确设定频率。
编程示例:
假设我们需要生成一个 31.25 Hz 的正弦波(这是数据手册中测试的常用频率)。
查找预设值:从数据手册的 Table 2 中,我们可以找到 31.25 Hz 的配置:
M[3:0] = 0000 (0)
N[7:0] = 0000 0111 (7)
FREQ = 0
写入寄存器:
SWM 寄存器 (地址 02h): 需要写入 FREQ, SW[2:0], M[3:0]。假设我们暂时不关心开关,设为断开 (SW[2:0]=000)。
数据字节:0 000 0000 = 0x00
N 寄存器 (地址 03h): 需要写入 N[7:0] = 0000 0111。
数据字节:0000 0111 = 0x07
SPI 命令:使用 WREG 指令,分别写入地址 02h (0x00) 和 03h (0x07)。
手动计算示例:生成 50 Hz 信号
FREQ=0, 根据公式:50 = 250 * (M+1)/(N+1) => (M+1)/(N+1) = 50/250 = 0.2
选择一个合适的分数,例如 1/5。则 M+1=1 => M=0; N+1=5 => N=4。
所以设置 M[3:0]=0000, N[7:0]=0000 0100。
第3步:设置输出幅度
正弦波的幅度由模拟增益和数字增益共同控制。
最终幅度 (dB) = 模拟增益 (dB) + 数字增益 (dB)
模拟增益:通过 GANMOD 寄存器的 GAIN[2:0] 设置(见DC模式中的表格)。它决定了输出的最大范围。例如,GAIN=1/1 时,最大差分输出为 ±2.5 V (峰值)。
数字增益:通过 SINEG 寄存器(地址 01h)设置。这是一个衰减器,以 0.5 dB 为步进,从 0 dB (无衰减) 到 -119.5 dB,最后是 全静音。
数字增益设置 (Table 4 & 18)
SINEG[7:0] 寄存器值 数字增益 (dB) 说明
0000 0000 0.0 无衰减 (默认)
0000 0001 -0.5
0000 0010 -1.0
… …
1110 1111 -119.5
1111 0000 至 1111 1111 Full Mute 输出为 0
编程示例:
假设我们在第1步已设置 GAIN=1/1 (0 dB)。现在我们希望将输出幅度衰减 10 dB。
需要设置的数字增益 = -10 dB。
因为步进是 0.5 dB,所以对应的 SINEG[7:0] 值 = 10 / 0.5 = 20 (十进制)。
将 20 转换为二进制:0001 0100。
写入 SINEG 寄存器 (地址 01h):数据字节为 0001 0100 = 0x14。
最佳实践:为了获得最佳的信噪比 (SNR),对于较小的输出幅度,应该降低模拟增益(使用更大的电压范围)并减少数字衰减,而不是在最大模拟增益下进行大量的数字衰减。
正弦模式关键特性与注意事项
同步功能:
在正弦模式下,SYNC 引脚可以被用来将正弦波重置到过零点。
在 SYNC 引脚上施加一个从低到高的跳变,下一个时钟周期正弦波就会从零相位开始。这对于需要与外部设备(如ADC)严格同步的应用至关重要。
频率更新与复位:
当您更新 M 或 N 寄存器的值时,正弦波发生器会被自动复位到零相位。这可以防止在频率改变时产生相位不连续的毛刺。
性能指标:
总谐波失真:非常高,在增益=1/1时典型值为 -125 dB。
信噪比:非常高,在增益=1/1时典型值为 120 dB。
这些卓越的性能指标使得 DAC1282 非常适合用于测试高精度 ADC(如 ADS1282)。
输出负载:
尽管输出缓冲器可以驱动小至 100Ω 的电阻负载,但为了保持低失真度(THD),建议使用大于 1 kΩ 的负载(参见 Figure 26)。
输出滤波:
连接在 CAPP 和 CAPN 引脚上的 1 nF 外部电容用于滤除 DAC 的高频采样噪声。这对于实现数据手册中标注的性能是必需的。
操作流程总结
配置模式与幅度范围:通过 GANMOD 寄存器设置为正弦模式 (00) 并选择合适的模拟增益。
设置频率:根据所需频率,计算或查表得到 FREQ、M[3:0] 和 N[7:0] 的值,并写入 SWM 和 N 寄存器。
设置精确幅度:通过 SINEG 寄存器设置数字衰减,微调输出幅度至目标值。
(可选)同步:如果需要,使用 SYNC 引脚来复位正弦波的相位。
测量输出:在 VOUTP 和 VOUTN 引脚之间测量差分正弦波。