ZHCSSG9 june 2023 DAC539E4W
PRODUCTION DATA
GPO 引脚为开漏输出。必须使用外部电阻器将这些引脚上拉至所需的 IO 电压。
此示例连接了 AINx 和 OUTx 引脚以简化布线。必须禁用 OUTx 引脚作为比较器输出,方法是将 DAC-x-VOUT-CMP-CONFIG 寄存器中的 CMP-x-OUT-EN 位设置为 0(这是默认设置)。
可以使用方程式 5 来计算 DAC-x-DATA 中存储的阈值代码。
DAC539E4W 是一个 10 位器件,这意味着最大 DAC 代码为 1023d。对于 1V VTHLD,DAC-0-DATA 通过方程式 6 计算得出。
该结果四舍五入为 205d (0x0CD)。表 8-2 列出了其余阈值的代码。
阈值电压 | DAC-x-DATA[9:0] |
---|---|
1V | 0x0CD |
2V | 0x19A |
3V | 0x266 |
4V | 0x333 |
AINx 输入连接到输出缓冲器的反相输入,阈值电压连接到非反相输入。默认情况下,当 AINx 上的电压低于阈值电压时,比较器输出为高电平。此示例通过将 DAC-x-VOUT-CMP-CONFIG 寄存器中的 CMP-x-INV-EN 位设置为 1 来反转比较器输出。
默认情况下,AINx 输入为高阻抗,并且输入电压范围受到限制。此示例将 DAC-x-VOUT-CMP-CONFIG 寄存器中的 CMP-x-HIZ-IN-DIS 位设置为 1,以将 AINx 输入连接到有限阻抗。输入电压范围为 0 至 VREF × 增益。
表 8-36 展示了此示例中使用的 LUT 配置。此示例应用使用四个不同的错误代码,其中 0b0000 表示没有错误。当 CMP0 和 CMP1 输出为高电平时,GPO 输出 0b0011。当 CMP2 为高电平时,GPO 输出 0b0100。当所有比较器输出均为高电平时,GPO 输出 0b1111。所有其他情况下输出 0b0000。表 8-36 展示了此示例的 LUT 设置。
比较器输出状态 CMP3、CMP2、CMP1、CMP0 |
输出 GPO3、GPO2、GPO1、GPO0 |
---|---|
0b0000 | LUT-0-DATA:0b0000 |
0b0001 | LUT-1-DATA:0b0000 |
0b0010 | LUT-2-DATA:0b0000 |
0b0011 | LUT-3-DATA:0b0011 |
0b0100 | LUT-4-DATA:0b0100 |
0b0101 | LUT-5-DATA:0b0100 |
0b0110 | LUT-6-DATA:0b0100 |
0b0111 | LUT-7-DATA:0b0100 |
0b1000 | LUT-8-DATA:0b0000 |
0b1001 | LUT-9-DATA:0b0000 |
0b1010 | LUT-10-DATA:0b0000 |
0b1011 | LUT-11-DATA:0b0000 |
0b1100 | LUT-12-DATA:0b0100 |
0b1101 | LUT-13-DATA:0b0100 |
0b1110 | LUT-14-DATA:0b0100 |
0b1111 | LUT-15-DATA:0b1111 |
在连续循环中读取 CMPx 输出并更新 GPO。循环刷新延迟可用于降低循环频率,以避免 AINx 引脚上的电压稳定时输出上出现任何开关噪声。计时器为 5 位,存储在 LOOP-WAIT SRAM 寄存器中。根据方程式 4 来计算延迟。将 LOOP-REFRESH 代码设置为 19d 可得到 41ms 延迟。
设置 DAC539E4W 上的寄存器时,应遵循以下指导原则:
寄存器名称 | 地址 [位] | 地址位置 |
---|---|---|
DAC-0-DATA | 0x21[15:6] | SRAM |
DAC-1-DATA | 0x22[15:6] | SRAM |
DAC-2-DATA | 0x23[15:0] | SRAM |
DAC-3-DATA | 0x24[15:6] | SRAM |
LUT-0-DATA | 0x25[3:0] | SRAM |
LUT-1-DATA | 0x26[3:0] | SRAM |
LUT-2-DATA | 0x27[3:0] | SRAM |
LUT-3-DATA | 0x28[3:0] | SRAM |
LUT-4-DATA | 0x29[3:0] | SRAM |
LUT-5-DATA | 0x2A[3:0] | SRAM |
LUT-6-DATA | 0x2B[3:0] | SRAM |
LUT-7-DATA | 0x2C[3:0] | SRAM |
LUT-8-DATA | 0x2D[3:0] | SRAM |
LUT-9-DATA | 0x2E[3:0] | SRAM |
LUT-10-DATA | 0x2F[3:0] | SRAM |
LUT-11-DATA | 0x30[3:0] | SRAM |
LUT-12-DATA | 0x31[3:0] | SRAM |
LUT-13-DATA | 0x32[3:0] | SRAM |
LUT-14-DATA | 0x33[3:0] | SRAM |
LUT-15-DATA | 0x34[3:0] | SRAM |
LOOP-WAIT | 0x35[3:0] | SRAM |
DAC-0-VOUT-CMP-CONFIG | 0x03[12:10][4:0] | 寄存器 |
DAC-1-VOUT-CMP-CONFIG | 0x09[12:10][4:0] | 寄存器 |
DAC-2-VOUT-CMP-CONFIG | 0x0F[12:10][4:0] | 寄存器 |
DAC-3-VOUT-CMP-CONFIG | 0x15[12:10][4:0] | 寄存器 |
COMMON-CONFIG | 0x1F[15:0] | 寄存器 |
DEVICE-MODE-CONFIG | 0x25[15:0] | 寄存器 |
STATE-MACHINE-CONFIG0 | 0x27[2:0] | 寄存器 |
只有表 8-4 的地址列中列出的位才会保存在 NVM 中,并在状态机中使用。例如,对于 DAC-X-VOUT-CMP-CONFIG 寄存器,只有位 12 至位 10 和位 4 至位 0 会保存在 NVM 中。
以下是该应用示例的伪代码:
//SYNTAX: WRITE <REGISTER NAME (REGISTER ADDRESS)>, <MSB DATA>, <LSB DATA>
//Pull MODE pin low to enter programming mode//SYNTAX: WRITE <REGISTER NAME(Hex Code)>, <MSB DATA>, <LSB DATA>
//Stop the state machine
WRITE STATE-MACHINE-CONFIG(0x27), 0x00, 0x03
//Set the comparator thresholds
WRITE DAC-0-DATA(SRAM 0x21), 0x33, 0x40
WRITE DAC-1-DATA(SRAM 0x22), 0x66, 0x80
WRITE DAC-2-DATA(SRAM 0x23), 0x99, 0x80
WRITE DAC-3-DATA(SRAM 0x24), 0xCC, 0xC0
//Set the LUT values
WRITE LUT-0-DATA(SRAM 0x25), 0x00, 0x00
WRITE LUT-1-DATA(SRAM 0x26), 0x00, 0x00
WRITE LUT-2-DATA(SRAM 0x27), 0x00, 0x00
WRITE LUT-3-DATA(SRAM 0x28), 0x00, 0x03
WRITE LUT-4-DATA(SRAM 0x29), 0x00, 0x04
WRITE LUT-5-DATA(SRAM 0x2A), 0x00, 0x04
WRITE LUT-6-DATA(SRAM 0x2B), 0x00, 0x04
WRITE LUT-7-DATA(SRAM 0x2C), 0x00, 0x04
WRITE LUT-8-DATA(SRAM 0x2D), 0x00, 0x00
WRITE LUT-9-DATA(SRAM 0x2E), 0x00, 0x00
WRITE LUT-10-DATA(SRAM 0x2F), 0x00, 0x00
WRITE LUT-11-DATA(SRAM 0x30), 0x00, 0x03
WRITE LUT-12-DATA(SRAM 0x31), 0x00, 0x04
WRITE LUT-13-DATA(SRAM 0x32), 0x00, 0x04
WRITE LUT-14-DATA(SRAM 0x33), 0x00, 0x04
WRITE LUT-15-DATA(SRAM 0x34), 0x00, 0x0F
//Set the loop refresh setting for 41 ms
WRITE LOOP-WAIT(SRAM 0x35), 0x00, 0x13
//Set the channel 0 reference to VDD and enable comparator mode
WRITE DAC-0-VOUT-CMP-CONFIG(0x03), 0x04, 0x07
//Set channel 1 reference to VDD and enable comparator mode
WRITE DAC-1-VOUT-CMP-CONFIG(0x09), 0x04, 0x07
//Set channel 2 reference to VDD and enable comparator mode
WRITE DAC-2-VOUT-CMP-CONFIG(0x0F), 0x04, 0x07
//Set channel 3 reference to VDD and enable comparator mode
WRITE DAC-3-VOUT-CMP-CONFIG(0x15), 0x04, 0x07
//Power on the DAC channels
WRITE COMMON-CONFIG(0x1F), 0x02, 0x49
//Set the device mode (this is the device default)
WRITE DEVICE-MODE-CONFIG(0x25), 0x80, 0x40
//Start the state machine
WRITE STATE-MACHINE-CONFIG0(0x27), 0x00, 0x03
//Save settings to NVM
WRITE COMMON-TRIGGER(0x20), 0x00, 0x02
//Pull the MODE pin high to enter standalone mode