以下应用笔记介绍了MAX6964 LED驱动器的独特特性,以及如何在需要强度控制的应用中正确利用这些特性。应用笔记还提供了编程程序示例,展示了MAX6964主端口和单独端口的强度控制选择。LED强度控制的特性在汽车应用中特别有价值,在这些应用中,LED强度需要针对白天和夜间条件进行调节。
MAX6964为高输出电流、17端口LED驱动器,具有8位、脉宽调制(PWM)强度控制。每个单独的端口允许高达 50mA 的灌电流。通过接地引脚的最大组合总灌电流限制在 350mA。8 位 PWM 强度控制分为应用于所有端口的 4 位主控和 4 位单个端口控制。主强度控制可用于调整通用设备的LED强度,以响应环境照明条件的变化,例如白天和夜间条件下的汽车。然后,可以根据其应用需求使用单个端口控制来产生所需的强度。或者,可以使用 4 个全局控制位来同时控制所有单个端口强度。寄存器0x0E的位 D0 到 D3 可用于全局或端口 O16 强度控制。此外,主强度控制与单个强度控制可以组合在一起,以在所有端口上产生淡入淡出效果。
众所周知,如果光源打开/关闭得足够快,人眼会感知到物体持续点亮。PWM 强度控制通过改变导通时间来改变感知强度,同时将开/关频率保持在固定速率。为避免闪烁效应,PWM开/关频率通常需要高于100Hz。MAX6964的PWM强度控制由标称频率为32kHz的内部振荡器驱动。MAX6964的PWM周期持续240个时钟周期,PWM开/关频率为32000/240 = 133.33Hz。
当相应的极性位为0时,连接到MAX6964输出的LED的强度取决于主端口和单个端口控制的重叠导通时间(逻辑低电平)。
MAX6964的主强度控制由寄存器0x0F的D7–D4位决定。这四个主控位将PWM周期划分为15个时隙。对于 0001、0010、...、1101 和 1110 位模式,插槽上的主时间分别为 1/15、2/15、...、13/15 和 14/15th。
各个端口控制位(每个端口每组 4 个)位于寄存器中,0x10到0x17。端口 16 控制位位于寄存器0x0F的 D3 到 D0 处。寄存器0x0F的这些位 (D3–D0) 也用于全局控制(如果启用了该选项)。每个主时隙由 16 个内部振荡器时钟周期组成。这些时钟周期可以激活 1/16、2/16、...、15/16 和 16/16,位模式分别为 0000、0001、...、1110 和 1111。
图1显示了当极性位为0时,主导通时间为2/15(对应于位模式为0010)和单个端口的导通时间为2/16(对应于位模式为0001)的端口输出波形。有两个主导通时隙可用,它们都处于 2/16 开启状态,具体取决于单个端口的导通时间。
图1.端口的输出波形。
端口 7 到 0 和端口 15 到 8 的相位 0 极性位分别位于寄存器0x02和 0x03 中。同样,端口 7 到 0 和端口 15 到 8 的相位极性位可以在寄存器0x0A和 0x0B 中找到。端口 16 的极性由寄存器0x0F的相位 1 (D5) 和相位 0 (D4) 位指示。未启用闪烁功能时,只有相位 0 极性位相关。
图2显示了端口的输出波形,主端口位模式和单个端口位模式相同,为0010和0001,但极性位为1。比较图1和图2,可以观察到开和关时间是相反的——它们形成互补波形。最好以极性 0 对强度级别进行编程,但闪烁需要极性为 1。
图2.一个的互补波形。
MAX6964驱动的LED可通过切换BLINK输入或翻转闪烁翻转位(寄存器0x0F的D1)使LED闪烁(开和关)。闪烁使能位(寄存器0x0F的D0)必须设置为1才能激活BLINK输入和闪烁翻转位。主机控制器需要改变BLINK输入逻辑电平,或者每次闪烁事件都需要写入MAX6964。启用闪烁 (D0 = 1) 时,特定端口的 LED 极性与相位 0 或相位 1 相关,具体取决于 BLINK 输入和闪烁翻转位的独占 OR 是否等于 0 或 1。
要激活所需端口的闪烁,相应的相位 0 和 1 极性位必须不同。由于使能闪烁时PWM强度控制仍然起作用,因此不仅可以打开和关闭闪烁的LED,还可以根据正常和互补波形控制在较亮和较暗的模式之间切换强度。此外,通过分别为不同端口选择相位 0 和 1 逻辑电平,可以使它们在相反相位闪烁或根本不闪烁。例如,将端口 1 相位 0 位设置为 0,将相位 1 位设置为 1,将端口 2 相位 0 位设置为 1,将相位 1 位设置为 0,将使它们在相反的相位中闪烁。将端口的第 0 阶段和第 1 阶段位设置为 0 或 1 将使端口保持较亮或较暗的模式。
图3显示了原始波形及其互补波形之间的相位0和相位1的闪烁。相位 0 和阶段 1 的持续时间取决于主机控制器的动作,通常比单个 PWM 周期持续更长,以使闪烁事件明显。
图3.在阶段 0 和阶段 1 之间闪烁。
以下是 I 的示例2C命令序列发送到MAX6964,以在特定PWM强度水平下开启LED。
以下三个我2C 写入命令可用于以最低强度水平打开 O16 LED。我2MAX6964的C器件地址为0x49。
0x49 0x0F 0x30 // Turn off the global bit 0x49 0x0E 0x10 // Select 1/15th for master and 1/16th // for O16 0x49 0x0F 0x00 // Set phase 0 and 1 polarity bits of // O16 to 00
以下我2C 写入命令可用于以最低强度水平打开所有 LED。
0x49 0x0F 0x30 // Turn off the global bit 0x49 0x0E 0x10 // Select 1/15th for master and 1/16th for O16 0x49 0x0F 0x00 // Set phase 0 and 1 polarity bits of O16 to 00 0x49 0x10 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 // Set 1/16th for all ports 0x49 0x02 0x00 0x00 // Set phase 0 polarity bits for all ports
最后两个命令利用了寄存器地址自动递增功能,该功能允许使用单个写入命令写入多个寄存器。
有时,LED需要在上电期间逐渐打开。通过将主控制从低到高设置,并在每次主设置时将单个端口控制从低更改为高,可以从低到高调整 LED 的强度。由于某些主端口和单个端口组合会产生相同或相似的强度级别,因此并非所有设置都是增加强度所必需的。在高强度水平下,必须跳过一些较低的单个端口设置(表1)。由于跳过了一些重复或相似的强度级别,因此强度级别的增加基于双循环(主强度变化为一个循环,单个端口为第二个循环)。表 1 仅显示了总共 240 种可用组合中的 59 个步骤。
个人 | 主人 | 强度 | 个人 | 主人 | 强度 |
X | 0 | 0 | C | 4 | 52 |
0 | 1 | 1 | D | 4 | 56 |
1 | 1 | 2 | E | 4 | 60 |
2 | 1 | 3 | F | 4 | 64 |
3 | 1 | 4 | C | 5 | 65 |
4 | 1 | 5 | D | 5 | 70 |
5 | 1 | 6 | E | 5 | 75 |
6 | 1 | 7 | F | 5 | 80 |
7 | 1 | 8 | D | 6 | 84 |
8 | 1 | 9 | E | 6 | 90 |
9 | 1 | 10 | F | 6 | 96 |
一个 | 1 | 11 | D | 7 | 98 |
B | 1 | 12 | E | 7 | 105 |
C | 1 | 13 | F | 7 | 112 |
D | 1 | 14 | E | 8 | 120 |
E | 1 | 15 | F | 8 | 128 |
F | 1 | 16 | E | 9 | 135 |
8 | 2 | 18 | F | 9 | 144 |
9 | 2 | 20 | E | 一个 | 150 |
一个 | 2 | 22 | F | 一个 | 160 |
B | 2 | 24 | E | B | 165 |
C | 2 | 26 | F | B | 176 |
D | 2 | 28 | E | D | 195 |
E | 2 | 30 | F | D | 208 |
F | 2 | 32 | E | E | 210 |
一个 | 3 | 33 | F | E | 224 |
B | 3 | 36 | E | F | 225 |
C | 3 | 39 | F | F | 240 |
D | 3 | 42 | |||
E | 3 | 45 | |||
F | 3 | 48 |
以下文本是一个伪编程代码,用于在 LoopLength x WaitTime 秒数内逐渐打开 LED。我2C例程向MAX6964寄存器发出写命令,该寄存器具有由阵列定义的特定强度。寄存器地址自动递增功能也可以容纳多次写入。
LoopLength; // Total number of step in the increase in // intensity MasterPort(2, LoopLength); // Array for master/port setting pairs of every // step StepTime; // Lighting duration at each intensity step For i = 1 to LoopLength // Start intensity increasing loop I2C(Write, 0x0E, MasterPort(1, i)); // Set master intensity level I2C(Write, 0x10, MasterPort(2, i), MasterPort(2, i), ...); // Set port // intensity // levels Wait(StepTime); // Lighting up End // End loop
LED 强度级别取决于主端口和单个端口 PWM 控制位的选择。可以通过两个不同的主端口和单个端口组合复制特定的强度级别。另一方面,某些强度级别可能不会通过任何组合产生。表 2 显示了根据主端口和单个端口 PWM 强度控制位的值提供的强度级别。强度级别是极性位为 0 时表中的数字除以 240。此表沿对角线对称,从上角到左上角,在右下角旁边结束。
主端口强度 | |||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 一个 | B | C | D | E | F | ||
单个 端口 强度 |
0 | 关闭 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
1 | 关闭 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | 24 | 26 | 28 | 30 | |
2 | 关闭 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 | 33 | 36 | 39 | 42 | 45 | |
3 | 关闭 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | |
4 | 关闭 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 75 | |
5 | 关闭 | 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | 60 | 66 | 72 | 78 | 84 | 90 | |
6 | 关闭 | 7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 | 70 | 77 | 84 | 91 | 98 | 105 | |
7 | 关闭 | 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 | 88 | 96 | 104 | 112 | 120 | |
8 | 关闭 | 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 | 90 | 99 | 108 | 117 | 126 | 135 | |
9 | 关闭 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | |
一个 | 关闭 | 11 | 22 | 33 | 44 | 55 | 66 | 77 | 88 | 99 | 110 | 121 | 132 | 143 | 154 | 165 | |
B | 关闭 | 12 | 24 | 36 | 48 | 60 | 72 | 84 | 96 | 108 | 120 | 132 | 144 | 156 | 168 | 180 | |
C | 关闭 | 13 | 26 | 39 | 52 | 65 | 78 | 91 | 104 | 117 | 130 | 143 | 156 | 169 | 182 | 195 | |
D | 关闭 | 14 | 28 | 42 | 56 | 70 | 84 | 98 | 112 | 126 | 140 | 154 | 168 | 182 | 196 | 210 | |
E | 关闭 | 15 | 30 | 45 | 60 | 75 | 90 | 105 | 120 | 135 | 150 | 165 | 180 | 195 | 210 | 225 | |
F | 关闭 | 16 | 32 | 48 | 64 | 80 | 96 | 112 | 128 | 144 | 160 | 176 | 192 | 208 | 224 | 240 |
在表 2 中,请注意,存在直到数字 16 的连续整数。超过16,质数丢失(即,不能通过乘以1到16和1到15来复制这些素数)。此外,还可以通过选择主端口和单个端口设置来生成许多数字/事件。表3显示了线性增加的强度水平趋势,以及其较短的版本。Short1 列表的强度级别跳过为 2/240th,Short2 列表的跳过为 4/240th。您还可以通过沿表 2 所示的对角线使用这些主端口和单个端口组合来获得 2 的幂增加趋势。或者,您可以通过从表 2 中选择最接近的组合来拟合所需的增长趋势。
选择 1 | 选择 2 | 强度级别 x 240 | ||||
个人 | 主人 | 个人 | 主人 | 满 | 短1 | 短2 |
X | 0 | X | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 2 | 2 | 2 | |
2 | 1 | 0 | 3 | 3 | ||
3 | 1 | 0 | 4 | 4 | 4 | 4 |
4 | 1 | 0 | 5 | 5 | ||
5 | 1 | 0 | 6 | 6 | 6 | |
6 | 1 | 0 | 7 | 7 | ||
7 | 1 | 0 | 8 | 8 | 8 | 8 |
8 | 1 | 0 | 9 | 9 | ||
9 | 1 | 0 | 一个 | 10 | 10 | |
一个 | 1 | 0 | B | 11 | ||
B | 1 | 0 | C | 12 | 12 | 12 |
C | 1 | 0 | D | 13 | ||
D | 1 | 0 | E | 14 | 14 | |
E | 1 | 0 | F | 15 | ||
F | 1 | 1 | 8 | 16 | 16 | 16 |
8 | 2 | 1 | 9 | 18 | 18 | |
9 | 2 | 1 | 一个 | 20 | 20 | 20 |
6 | 3 | 2 | 7 | 21 | ||
一个 | 2 | 1 | B | 22 | 22 | |
B | 2 | 1 | C | 24 | 24 | 24 |
4 | 5 | 4 | 5 | 25 | ||
C | 2 | 1 | D | 26 | 26 | |
8 | 3 | 2 | 9 | 27 | ||
6 | 4 | 3 | 7 | 28 | 28 | 28 |
9 | 3 | 2 | 一个 | 30 | 30 | |
7 | 4 | 3 | 8 | 32 | 32 | 32 |
一个 | 3 | 2 | B | 33 | 33 | |
6 | 5 | 4 | 7 | 35 | ||
B | 3 | 2 | C | 36 | 36 | 36 |
C | 3 | 2 | D | 39 | 39 | |
9 | 4 | 3 | 一个 | 40 | 40 | 40 |
6 | 6 | 5 | 7 | 42 | 42 | |
一个 | 4 | 3 | B | 44 | 44 | 44 |
8 | 5 | 4 | 9 | 45 | 45 | |
B | 4 | 3 | C | 48 | 48 | 48 |
9 | 5 | 4 | 一个 | 50 | 50 | |
C | 4 | 3 | D | 52 | 52 | 52 |
8 | 6 | 5 | 9 | 54 | 54 | |
一个 | 5 | 4 | B | 55 | ||
7 | 7 | 6 | 8 | 56 | 56 | 56 |
9 | 6 | 5 | 一个 | 60 | 60 | 60 |
8 | 7 | 6 | 9 | 63 | 63 | |
F | 4 | F | 4 | 64 | 64 | 64 |
C | 5 | 4 | D | 65 | ||
一个 | 6 | 5 | B | 66 | 66 | 66 |
9 | 7 | 6 | 一个 | 70 | 70 | |
B | 6 | 5 | C | 72 | 72 | 72 |
E | 5 | 4 | F | 75 | 75 | |
一个 | 7 | 6 | B | 77 | 77 | 77 |
C | 6 | 5 | D | 78 | 78 | |
9 | 8 | 7 | 一个 | 80 | 80 | 80 |
8 | 9 | 8 | 9 | 81 | 81 | |
B | 7 | 6 | C | 84 | 84 | 84 |
一个 | 8 | 7 | B | 88 | 88 | 88 |
E | 6 | 5 | F | 90 | 90 | |
C | 7 | 6 | D | 91 | 91 | 91 |
B | 8 | 7 | C | 96 | 96 | 96 |
D | 7 | 6 | E | 98 | 98 | |
一个 | 9 | 8 | B | 99 | ||
9 | 一个 | 9 | 一个 | 100 | 100 | 100 |
C | 8 | 7 | D | 104 | 104 | 104 |
E | 7 | 6 | F | 105 | 105 | |
B | 9 | 8 | C | 108 | 108 | 108 |
一个 | 一个 | 9 | B | 110 | 110 | |
D | 8 | 7 | E | 112 | 112 | 112 |
C | 9 | 8 | D | 117 | 117 | 117 |
E | 8 | 7 | F | 120 | 120 | 120 |
一个 | B | 一个 | B | 121 | 121 | |
D | 9 | 8 | E | 126 | 126 | 126 |
F | 8 | F | 8 | 128 | 128 | 128 |
C | 一个 | 9 | D | 130 | 130 | |
B | B | 一个 | C | 132 | 132 | 132 |
E | 9 | 8 | F | 135 | 135 | 135 |
D | 一个 | 9 | E | 140 | 140 | 140 |
C | B | 一个 | D | 143 | 143 | |
B | C | B | C | 144 | 144 | 144 |
E | 一个 | 9 | F | 150 | 150 | 150 |
D | B | 一个 | E | 154 | 154 | 154 |
C | C | B | D | 156 | 156 | 156 |
F | 一个 | F | 一个 | 160 | 160 | 160 |
E | B | 一个 | F | 165 | 165 | 165 |
D | C | B | E | 168 | 168 | 168 |
C | D | C | D | 169 | 169 | 169 |
F | B | F | B | 176 | 176 | 176 |
E | C | B | F | 180 | 180 | 180 |
D | D | C | E | 182 | 182 | 182 |
F | C | F | C | 192 | 192 | 192 |
E | D | C | F | 195 | 195 | 195 |
D | E | D | E | 196 | 196 | 196 |
F | D | F | D | 208 | 208 | 208 |
E | E | D | F | 210 | 210 | 210 |
F | E | F | E | 224 | 224 | 224 |
E | F | E | F | 225 | 225 | 225 |
F | F | F | F | 240 | 240 | 240 |
表 3 显示,在 240 种主端口和单个端口设置组合中,有 96 个可区分的强度级别。为了遵循所有强度级别的这种增长趋势,需要在某些步骤中向后设置主强度级别。这可以通过使用设置数组来实现,例如伪编程代码中显示的数组。
以下我2C写命令可用于闪烁MAX6964驱动的LED。我2MAX6964的C器件地址再次0x49。
0x49 0x02 0x00 0x00 // Set phase 0 polarity to all zeros to // turn LEDs on 0x49 0x0E 0xF0 // Set master intensity to full 0x49 0x0F 0x0D // Set the blinking enable bit to start 0x49 0x0F 0x0F // Switch blinking flip bit to blink 0x49 0x0F 0x0D // Switch back the blinking flip bit to // blink ... 0x49 0x0F 0x0C // Reset the blinking enable bit to stop // blinking 0x49 0x02 0xFF 0xFF // Set phase 0 polarity to all ones to // turn LEDs off
对于上述命令,假定所有端口的相位 1 极性位设置为 1(默认上电)。对于未设置为闪烁的端口,相位 0 和相位 1 寄存器中的极性位可以设置为相同的值。PWM 强度级别设置在闪烁期间处于活动状态。如果相位 0 或相位 1 中的极性位为 0,则设置 PWM 强度电平。否则,其互补波形将驱动LED。
总之,MAX6964 LED驱动器可以编程为在互补波形定义的一对不同强度电平之间闪烁。逐渐的强度水平变化,有时称为衰落,也可以通过适当的编程来完成。
MAX7313/MAX7314具有与MAX6964相似的LED驱动能力,所有端口均可用作带转换检测的逻辑输入。MAX6965、MAX7315和MAX7316也是同类器件,但端口数量只有一半。本应用笔记中介绍的MAX6964通用编程技术也可用于控制这些类似器件的PWM强度。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !