主要输入参数 | 主要输出信号 | 建议器件 |
---|---|---|
编程 DAC 代码 0x000 至 0xFFF、GPI 触发器的 SPI 或 I2C 通信 | 0A 至 250µA 和 0mA 至 20mA LED 电流 |
DAC53004(10 位)、 DAC63004(12 位) |
目标: 使用低功耗智能 DAC 对 LED 进行偏置
此设计使用四通道缓冲电压或电流输出低功耗智能 DAC(如 DAC53004 或 DAC63004(DACx3004))来偏置 LED。在需要几毫安电流的 LED 偏置应用中,智能 DAC 可在强制检测配置下与 MOSFET 相连接。DAC 将设置 MOSFET 的源极电流,并通过改变栅极电压来控制流过 LED(在电源和 MOSFET 漏极之间连接)的电流量。DAC 可以在电流输出模式下使用,以在低电流 LED 偏置应用中使用最高 250µA 电流直接驱动 LED。在使用 MOSFET 配置时,DACx3004 的 VFB 引脚将补偿栅源电压(VGS)压降和 MOSFET 的漂移。DACx3004 具备通用输入输出(GPIO)引脚,支持 DAC 进入和退出深度睡眠模式。可使用智能 DAC 上的非易失性存储器(NVM)保存所有寄存器设置,意味着可在不使用处理器的情况下使用该器件,即使在下电上电后也是如此。此电路可用于条形码扫描仪、条形码读取器、点钞机、POS 打印机、光学模块和电器照明等应用。
DAC 代码的计算方法为:
在此设计中,内部基准处于断电状态以限制功耗。此配置可补偿因温度、漏极电流和 MOSFET 老化而导致的栅源压降。假定典型栅源电压为 1.2V,电源余量为 200mV,则DAC 的 VDD 必须至少为(2.5V + 1.2V + 200mV)= 3.9V。如果使用 5V VDD 作为基准,则 10 位 DAC53004 的高 DAC 值和低 DAC 值变为:
其中
256 十进制数(256 d)向下舍入为 255 d,因此高值为 248.04µA。
其中
此原理图用于 DAC53004 的以下仿真。
此仿真显示了当 DAC 从裕度低到裕度高代码转换时的 LED 电流。
寄存器地址 | 寄存器名称 | 设置 | 说明 |
---|---|---|---|
0x01 | DAC-0-MARGIN-HIGH | 0x8000 | [15:4] 0x800:左对齐 10 位数据更新 MARGIN-HIGH 代码 |
[3:0] 0x0:不用考虑 | |||
0x02 | DAC-0-MARGIN-LOW | 0x0000 | [15:4] 0x000:左对齐 10 位数据更新 MARGIN-LOW 代码 |
[3:0] 0x0:不用考虑 | |||
0x06 | DAC-0-FUNC-CONFIG | 0x0001 | [15] 0b0:写入 0b1 以将 DAC-0 清除设置设为中标度 |
[14] 0b0:写入 0b1 以通过 LDAC 触发器更新 DAC-0 | |||
[13] 0b0:写入 0b1 以使 DAC-0 通过广播命令更新 | |||
[12:11] 0b00:为函数发生器选择相位 | |||
[10:8] 0b000:选择函数发生器生成的波形 | |||
[7] 0b0:写入 0b1 以启用对数转换 | |||
[6:4] 0b000:选择 1 LSB 的代码步进 | |||
[3:0] 0b001:选择 4µs/步进的压摆率 | |||
0x1F | COMMON-CONFIG | 0x0FF9 | [15] 0b0:写入 0b1 以将窗口比较器输出设置为锁存输出 |
[14] 0b0:写入 0b1 以锁定器件。将 0b0101 写入 COMMON-TRIGGER 寄存器的 DEV-UNLOCK 字段以进行解锁 | |||
[13] 0b0:写入 0b1 以在地址 0x01 处设置故障转储读取使能 | |||
[12] 0b0:写入 0b1 以启用内部基准 | |||
[11:10] 0b11:将 VOUT3 断电 | |||
[9] 0b1:将 IOUT3 断电 | |||
[8:7] 0b11:将 VOUT2 断电 | |||
[6] 0b1:将 IOUT2 断电 | |||
[5:4] 0b11:将 VOUT1 断电 | |||
[3] 0b1:将 IOUT1 断电 | |||
[2:1] 0b00:将 VOUT0 上电 | |||
[0] 0b1:将 IOUT0 断电 | |||
0x20 | COMMON-TRIGGER | 0x0002 | [15:12] 0b0000:写入 0b0101 以解锁器件 |
[11:8] 0b0000:写入 0b1010 以触发 POR 复位 | |||
[7] 0b0:写入 0b1 以在 DAC-X-FUNC-CONFIG 寄存器中相应的 SYNC-CONFIG-X 位为 1 时,触发 LDAC 操作 | |||
[6] 0b0:写入 0b1 以基于 DAC-X-FUNC-CONFIG 寄存器中相应的 CLR-SEL-X 位,将 DAC 寄存器和输出设置为零代码或中间代码 | |||
[5] 0b0:不用考虑 | |||
[4] 0b0:写入 0b1 以触发故障转储序列 | |||
[3] 0b0:写入 0b1 以触发 PROTECT 功能 | |||
[2] 0b0:写入 0b1 以读取一行 NVM 进行故障转储 | |||
[1] 0b1:写入 0b1 以将适用的寄存器设置存储到 NVM | |||
[0] 0b0:写入 0b1 以使用现有 NVM 设置重新加载适用的寄存器 | |||
0x24 | GPIO-CONFIG | 0x4001 | [15] 0b0:写入 0b1 以在 GPI 上启用干扰滤波器 |
[14] 0b1:启用深度睡眠功能 | |||
[13] 0b0:写入 0b1 以在 GPIO 引脚上启用输出模式 | |||
[12:9] 0b0000:作为输出映射到 GPIO 的 STATUS 功能设置 | |||
[8:5] 0b0000:确定受特定于通道的 GPI 功能影响的通道 | |||
[4:1] 0b0000:选择 GPI 以触发深度睡眠模式 | |||
[0] 0b1:启用 GPIO 引脚的输入模式 |
寄存器地址 | 寄存器名称 | 设置 | 说明 |
---|---|---|---|
0x01 | DAC-0-MARGIN-HIGH | 0xFF00 | [15:4] 0xFF0:左对齐 8 位数据更新 MARGIN-HIGH 代码 |
[3:0] 0x0:不用考虑 | |||
0x02 | DAC-0-MARGIN-LOW | 0x8000 | [15:4] 0x800:左对齐 8 位数据更新 MARGIN-LOW 代码 |
[3:0] 0x0:不用考虑 | |||
0x06 | DAC-0-FUNC-CONFIG | 0x0001 | [15] 0b0:写入 0b1 以将 DAC-0 清除设置设为中标度 |
[14] 0b0:写入 0b1 以通过 LDAC 触发器更新 DAC-0 | |||
[13] 0b0:写入 0b1 以使 DAC-0 通过广播命令更新 | |||
[12:11] 0b00:为函数发生器选择相位 | |||
[10:8] 0b000:选择函数发生器生成的波形 | |||
[7] 0b0:写入 0b1 以启用对数转换 | |||
[6:4] 0b000:选择 1 LSB 的 代码步进 | |||
[3:0] 0b001:选择 4µs/步进的压摆率 | |||
0x1F | COMMON-CONFIG | 0x0FFE | [15] 0b0:写入 0b1 以将窗口比较器输出设置为锁存输出 |
[14] 0b0:写入 0b1 以锁定器件。将 0b0101 写入 COMMON-TRIGGER 寄存器的 DEV-UNLOCK 字段以进行解锁 | |||
[13] 0b0:写入 0b1 以在地址 0x01 处设置故障转储读取使能 | |||
[12] 0b0:写入 0b1 以启用内部基准 | |||
[11:10] 0b11:将 VOUT3 断电 | |||
[9] 0b1:将 IOUT3 断电 | |||
[8:7] 0b11:将 VOUT2 断电 | |||
[6] 0b1:将 IOUT2 断电 | |||
[5:4] 0b11:将 VOUT1 断电 | |||
[3] 0b1:将 IOUT1 断电 | |||
[2:1] 0b11:将 VOUT0 断电 | |||
[0] 0b0:将 IOUT0 上电 | |||
0x20 | COMMON-TRIGGER | 0x0002 | [15:12] 0b0000:写入 0b0101 以解锁器件 |
[11:8] 0b0000:写入 0b1010 以触发 POR 复位 | |||
[7] 0b0:写入 0b1 以在 DAC-X-FUNC-CONFIG 寄存器中相应的 SYNC-CONFIG-X 位为 1 时,触发 LDAC 操作 | |||
[6] 0b0:写入 0b1 以基于 DAC-X-FUNC-CONFIG 寄存器中相应的 CLR-SEL-X 位,将 DAC 寄存器和输出设置为零代码或中间代码 | |||
[5] 0b0:不用考虑 | |||
[4] 0b0:写入 0b1 以触发故障转储序列 | |||
[3] 0b0:写入 0b1 以触发 PROTECT 功能 | |||
[2] 0b0:写入 0b1 以读取一行 NVM 进行故障转储 | |||
[1] 0b1:写入 0b1 以将适用的寄存器设置存储到 NVM | |||
[0] 0b0:写入 0b1 以使用现有 NVM 设置重新加载适用的寄存器 | |||
0x24 | GPIO-CONFIG | 0x4001 | [15] 0b0:写入 0b1 以在 GPI 上启用干扰滤波器 |
[14] 0b1:启用深度睡眠功能 | |||
[13] 0b0:写入 0b1 以在 GPIO 引脚上启用输出模式 | |||
[12:9] 0b0000:作为输出映射到 GPIO 的 STATUS 功能设置 | |||
[8:5] 0b0000:确定受特定于通道的 GPI 功能影响的通道 | |||
[4:1] 0b0000:选择 GPI 以触发深度睡眠模式 | |||
[0] 0b1:启用 GPIO 引脚的输入模式 |
1: //SYNTAX: WRITE <REGISTER NAME (Hex code)>, <MSB DATA>, <LSB DATA>
2: //Configure GPI for deep-sleep trigger and enable deep-sleep function
3: WRITE GPIO-CONFIG(0x24), 0x40, 0x01
4: //Write DAC0 margin high code
5: //With 16-bit left alignment 0x200 becomes 0x8000
6: WRITE DAC-0-MARGIN-HIGH(0x01), 0x80, 0x00
7: //Write DAC0 margin low code
8: WRITE DAC-0-MARGIN-LOW(0x02), 0x00, 0x00
9: //Set the CODE-SETP to 1 LSB and SLEW-RATE to 4 µs/step
10: WRITE DAC-0-FUNC-CONFIG(0x06), 0x00, 0x01
11: //Power-up voltage output on channel 0, internal reference disabled
12: WRITE COMMON-CONFIG(0x1F), 0x0F, 0xF9
13: //Enable the GPI, save settings to NVM
14: WRITE COMMON-TRIGGER(0x20), 0x00, 0x02
15: //Trigger for channel 0 margin high
16: WRITE COMMON-DAC-TRIG(0x21), 0x02, 0x00
17: //Trigger for channel 0 margin low
18: WRITE COMMON-DAC-TRIG(0x21), 0x04, 0x00
1: //SYNTAX: WRITE <REGISTER NAME (Hex code)>, <MSB DATA>, <LSB DATA>
2: //Configure GPI for deep-sleep trigger and enable deep-sleep function
3: WRITE GPIO-CONFIG(0x24), 0x40, 0x01
4: //Write DAC0 margin high code
5: //With 16-bit left alignment, 0xFF becomes 0xFF00
6: WRITE DAC-0-MARGIN-HIGH(0x01), 0xFF, 0x00
7: //Write DAC0 margin low code
8: //With 16-bit left alignment, 0x80 becomes 0x8000
9: WRITE DAC-0-MARGIN-LOW(0x02), 0x80, 0x00
10: //Set the CODE-SETP to 1 LSB and SLEW-RATE to 4 µs/step
11: WRITE DAC-0-FUNC-CONFIG(0x06), 0x00, 0x01
12: //Power-up current output on channel 0, internal reference disabled
13: WRITE COMMON-CONFIG(0x1F), 0x0F, 0xFE
14: //Enable the GPI, save settings to NVM
15: WRITE COMMON-TRIGGER(0x20), 0x00, 0x02
16: //Trigger for channel 0 margin high
17: WRITE COMMON-DAC-TRIG(0x21), 0x02, 0x00
18: //Trigger for channel 0 margin low
19: WRITE COMMON-DAC-TRIG(0x21), 0x04, 0x00