新闻中心

EEPW首页 > 电源与新能源 > 设计应用 > 基于I2C接口的LED驱动器设计与实现

基于I2C接口的LED驱动器设计与实现

作者: 时间:2013-07-02 来源:网络 收藏

第一个应用,我们将用PCA9633来亮度条。我们知道一般像亮度条这样的应用,往往需要用到大量串联来进行。如果用单个接口去每个,会使成本和软件复杂度大大增加。而通过I2C,在硬件上只需要两条线,在软件上只需发一条字节命令,就可以轻松进行操控。除此之外,由于I2C器件地址的唯一性,可以按所驱动的数量使用几个PCA9633来进行控制。如果实际应用中PCA9633本身的驱动电流不够,只需在外围加一个FET就可以轻松解决。另外,PCA9633独有的Group PWM使得控制整个亮度条的光强和闪烁变的得心应手。下面是其原理图(见图4),其中I2C master由系统提供,可以是MCU,也可以是逻辑电路。

图4中左半部为I2C的master,不作细述。右边最上为LED限流电阻,通常LED的前向电压为3V左右,根据不同的颜色和制造工艺会有一些差别。我们可以通过所需LED电流去计算这个限流电阻的值:  R=(Vsupply-Vfsum)/If。如果所需的LED电流大于25mA,那么图中所加的FET可以轻松解决这一问题。当我们外加了FET以后,只需把PCA9633的相应寄存器的OUTDRV设为高就可以了,以区别于它的默认值。现在我们可以看到用PCA9633去控制如此多的LED,原理图相当简洁,同样在软件设置寄存器上也同样方便。PCA9633提供了简易且完整的内部寄存器,例如LED输出结构设置、节电模式设置、芯片使能模式设置、LED的输出状态设置,以及每个PWM和Group PWM的控制寄存器设置等。除此之外,PCA9633还提供了一个寄存器设置递增位,也就是说如果我们设置了这一位,那么我们可以通过一个指令序列来完成内部所有寄存器的顺序配置,这在一些特定的应用中是非常有用的,能最大程度节省软件和系统资源。下面,我们将通过另外一个例子来说明内部寄存器的设置。

第二个例子是我们用PCA9633来完成呼吸灯的功能。虽然PCA9633内部不带呼吸灯模块,但我们可以通过一些简单的寄存器设置来实现这个功能,这样相比于专用的呼吸灯芯片在成本上无疑有很大的优势。为了便于说明,我们只用PCA9633来控制一个LED的呼吸动作,原理图很简单,在此略去,通过控制这一个LED的渐亮与渐暗过程以达到呼吸的目的。要实现这个功能,PCA9633的独立PWM将是最主要的因素。如前我们已经提到每个LED都是由一个8bit/256阶PWM来控制,那么也就是说,每个灯有256段亮暗色阶可调,可以完美实现呼吸功能。具体,我们通过控制PWM的占空比来完成。如果我们的LED是由PCA9633的PWM0来控制,那么PWM0的占空比将决定这个LED的亮度:Bright(duty cycle)=PWM0[7:0]/256。撑握了这一原则,我们就可以通过I2C往PCA9633的寄存器上写点什么了:

START

0xC4 (往PCA9633 I2C设备地址C4写操作)

00h=0x00; 01h=0x00 (设置LED的输出结构为开漏)

08h=0x02 (设置LED由PWM0来控制)

Delay 1 second (延时1秒进行呼吸)

02h=bright; For bright=0; bright《255;bright++ (LED从0到255渐亮)

Delay 10 ms (完成渐亮延时10毫秒继续)

02h=bright; For bright=255; bright》0;bright- - (LED从255到0渐暗)

STOP

到此,一个完整的呼吸过程就完成了,用几个简单的寄存器设置,就完成了看起来似乎只有用复杂系统或专用芯片才能做的事情。从以上两个例子,我们可以看到用恩智浦的I2C LED,不论是硬件上还是软件上都是非常简单和易操作的,而且用此类器件所能实现的功能,丝毫不比一些系统和专有芯片逊色。

综上所述,恩智浦I2C LED提供了高性价比的LED设计方案,相比于用GPIO或专用LED,不仅节省了系统资源,也使设计的成本和复杂度大大减少,并可以有效提高设计的可靠性和驱动光的均匀性。此外,采用此类LED驱动器,可以很有效地帮助我们减少设计周期并提升设计灵活性。恩智浦目前可以向客户提供从4路到24路不等的I2C LED驱动器,并已应用于汽车、家电、通信等各大领域。


上一页 1 2 下一页

关键词: LED 驱动器 控制

评论


相关推荐

技术专区

关闭