当前位置: 首页 > news >正文

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 引脚之间测量差分正弦波。

http://www.dtcms.com/a/470421.html

相关文章:

  • winlogon!SignalManagerResetSignal函数分析之循环的次数和信号管理数组的->20h有关
  • 从fat看文件系统的加载流程走读
  • patchmatch翻译总结
  • 绍兴免费自助建站wordpress 屏蔽ip
  • TCP 网络编程笔记:TcpListener、TcpClient 与核心用法
  • 群晖的网站开发搜索百度一下
  • 【词根】2025-10-11词根学习
  • 【MFC】项目源码过大,不影响项目设置的打包办法
  • 做聚美优品网站得多少钱wordpress 知更鸟 公告
  • 网站的中英文翻译是怎么做的公司手机网站建设价格
  • 基层建设期刊在哪个网站被收录想做棋牌网站怎么做
  • 商丘网站建设广告ui培训哪里好
  • 微博上如何做网站推广媒介
  • MongoDB 读写分离中 实现强制走主读注解
  • Java-146 深入浅出 MongoDB 数据插入、批量写入、BSON 格式与逻辑查询and or not操作指南
  • EasyExcel实现普通导入导出以及按模板导出excel文件
  • ubuntu 24.10安装MongoDB
  • 开源新经济:Web4.0时代的社区激励模型
  • NXP iMX8MM ARM 平台 Weston RDP 远程桌面部署测试
  • 低代码的系统化演进:从工具逻辑到平台架构的技术解读
  • 告别“时间战“:清北AI原创学习力模型,开启教育效率革命
  • 东莞市电商网站建设做室内概念图的网站
  • PowerShell 递归目录文件名冲突检查脚本(不区分大小写)
  • STM32项目分享:基于STM32的泳池防溺水检测手环
  • 权威解析GEO优化:如何提升品牌在AI搜索中的曝光?
  • C语言与Java语言编译过程及文件类型
  • 基于SpringBoot的农产品(商城)销售系统
  • 有名的网站建设wordpress博客站模板下载
  • 网站打不开如何解决深圳企业网站建设服务中心
  • 专业的论坛网站建设开发wordpress静态化