您现在的位置是:首页 > 家电

MAX6956编程指南

2020-03-19 00:00:35

摘要:本指南给出了MAX6956 LED显示驱动器以及I/O扩展器编程的详细信息。同时还讨论了类似器件(MAX6957、MAX7300以及MAX7301)的一些编程技巧。

概述

MAX6956 LED驱动器和I/O扩展器无需外部限流电阻,即可为全部20或28个LED驱动端口(取决于采用何种封装类型)提供并维持所期望的恒定电流。所有端口可以同时设置,具有十六级恒定电流(从1.5mA至24mA);或者可以分别将各个端口设置为不同的恒定电流。MAX6956不仅仅具有LED亮度控制,同时器件的端口匹配精度确保了色度更将一致。除了恒流LED驱动器,MAX6956的各个独立端口还可以作为带有瞬态检测功能的输入端口,或者具有10mA吸入电流和4.5mA源出电流的推挽输出端口。

MAX6957与MAX6956类似,但采用SPI™而不是I²C兼容接口。MAX7300是一款与MAX6956相类似的通用I/O (GPIO)端口扩展器,但该器件不带恒流LED驱动功能。MAX7301则是一款类似MAX7300的GPIO端口扩展器,但器件采用SPI接口而不是I²C兼容接口。

图1给出了在没有限流电阻的情况下,采用MAX6956驱动十路白光和RGB LED的简单应用范例。

图1. MAX6956应用电路
图1. MAX6956应用电路

MAX6956配置寄存器

MAX6956的具体操作受控于对89个寄存器的写入。除了数据资料里所描述的四个寄存器(全局电流、配置、瞬态检测屏蔽以及显示测试),MAX6956还具有其它三个寄存器组:
  1. 端口配置(0x09至0x0F)
    端口配置寄存器中每个端口分为两个位。这两个位可以将各个端口定义为LED驱动器、输出端口或带/不带上拉电阻的输入端口。对应28个端口具有7个端口配置寄存器。
  2. 独立电流(0x12至0x1F)
    独立电流寄存器中每个端口分为四个位。这四个位可以将各个独立端口定义到期望的恒定电流。最小的步长为连接在ISET引脚的外部电阻所设置的最大电流值的1/16。
  3. 端口I/O值(0x20至0x5F)
    器件具有29个端口I/O值寄存器对应各个独立端口(端口31有两个寄存器)。有21个端口I/O值寄存器可用于同时定义8个不同端口为一组的I/O值。其他端口I/O值寄存器可以用于同时定义2、3、4、5、6或7个不同端口为一组。

MAX6956 I²C命令

下面给出了上电时,将所有端口设置到24mA最大恒定电流(采用39kΩ外部电阻)的一半的I²C命令。当AD0和AD1引脚均连接到地时,MAX6956的I²C器件地址为0x80。I2CWrite例程利用寄存器地址自动递增特性,向一个MAX6956寄存器写入一个特定字节或向一系列连续的寄存器写入多个字节的命令。

I2CWrite(0x80, 0x02, 0x07);  // Set a half global constant current

I2CWrite(0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);  // Set all ports to LED drive mode

I2CWrite(0x80, 0x04, 0x01); // Set the shutdown/run bit of the configuraTIon register

作为参考检查点,设置关断/运行位写命令的等效二进制数在下面列出来。
I2CWrite(0x80, 0x04, 0x01);

1 0 0 0 0 0 0 0  	0 0 0 0 0 1 0 0  	0 0 0 0 0 0 0 1  

下面给出了上电时,将一个端口(本例为P4)设置到满量程恒定电流的I²C命令。
I2CWrite(0x80, 0x12, 0x07);  // Set a half port P4 constant current

I2CWrite(0x80, 0x09, 0xA8); // Set P4 to LED drive mode

I2CWrite(0x80, 0x04, 0x01); // Set the shutdown/run bit of the configuraTIon register

上电时,所有端口均被设置为不带上拉电阻的逻辑输入。仅需下列I²C命令即可将MAX6956设置到所有上电默认状态工作。
I2CWrite(0x80, 0x04, 0x01); // Set the shutdown/run bit of the configuraTIon register

MAX6957 SPI命令

MAX6957的任意一个寄存器可以通过SPI接口发送包含寄存器地址以及紧接数据字节的16位字对其进行写入或读出。地址字节的第一位决定是写(0)命令还是读(1)命令。所有16位字可以与其他字排放在一起。

下面给出了MAX6957 DIN输入引脚上的数据字节,用于将所有端口设置到24mA最大恒定电流的一半。这些命令与MAX6956相似,除了需要指定器件地址。对于SPI接口,通过将低有效的CS输入引脚设为低电平可以选择特定的器件。MAX6957没有寄存器地址自动递增功能。
0x02, 0x07;  	// Set a half global constant current

0x09, 0x00;	// Set ports P4 through P7 to LED drive mode

0x0A, 0x00;	// Set ports P8 through P11 to LED drive mode

0x0B, 0x00;	// Set ports P12 through P15 to LED drive mode

0x0C, 0x00;	// Set ports P16 through P19 to LED drive mode

0x0D, 0x00;  	// Set ports P20 through P23 to LED drive mode

0x0E, 0x00;	// Set ports P24 through P27 to LED drive mode

0x0F, 0x00;  	// Set ports P28 through P31 to LED drive mode

0x04, 0x01; 	// Set the shutdown/run bit of the configuraTIon register

MAX7300/MAX7301配置寄存器

MAX7300和MAX7301没有恒流LED驱动能力。通过写73个寄存器控制器件的详细工作状态。此外,除了配置和瞬态检测屏蔽寄存器以外,还有另外两组寄存器:
  1. 端口配置(0x09至0x0F)
  2. 端口I/O值(0x20至0x5F)

MAX7300 I²C命令

上电时,所有端口均被设置为不带上拉电阻的逻辑输入。下面给出了输出为逻辑高时,将P14至P23设置为端口满电流一半,以及使芯片由初始关断进入工作状态的I²C命令。当AD0和AD1引脚连接到地时,MAX7300的I²C器件地址为0x80。
I2CWrite(0x80, 0x0B, 0x5A, 0x55, 0x55);  	// Set P14 through P23 to output

I2CWrite(0x80, 0x4E, 0xFF);  			// Set P14 through P21 to logic high

I2CWrite(0x80, 0x56, 0x03);  			// Set P22 through P23 to logic high

I2CWrite(0x80, 0x04, 0x01); 			// Set the shutdown/run bit 

MAX7301 SPI命令

MAX7301的任意一个寄存器可以通过SPI接口发送包含寄存器地址以及紧接数据字节的16位字对其进行写入或读出。地址字节的第一位决定是写(0)命令还是读(1)命令。所有16位字可以与其他字排放在一起。

下面给出了MAX7301 DIN输入引脚上的数据字节,当输出处于逻辑高时,将P14至P23设置到端口电流的一半,并且使芯片由初始关断进入工作状态。这些命令与MAX7300相似,除了需要指定器件地址。对于SPI接口,通过将低有效的CS输入引脚设为低电平可以选择特定的器件。MAX7300没有寄存器地址自动递增功能。
0x0B, 0x5A; 		// Set P14 and P15 to output

0x0C, 0x55; 		// Set P16 through P19 to output

0x0D, 0x55;  		// Set P20 through P23 to output

0x4E, 0xFF;  		// Set P14 through P21 to logic high

0x56, 0x03;  		// Set P22 and P23 to logic high

0x04, 0x01; 		// Set the shutdown/run bit