MBI5026驱动心得
- 格式:pdf
- 大小:394.39 KB
- 文档页数:4
MBI5026 是一块用得比较广泛的 16 位等电流 led 驱动器,电流输出值稳定,相互之间 误差小,同时可以使用外接电阻来调节输出电流(5~90mA),操作电压 5V。而且该芯片能 够通过级联方式实现多级控制,适用于大型 led 点阵控制。
官方给出的特点说明如下:
该芯片拥有 24 脚,有两种封装我们只针对其中一种加以说明。
首先 CLK 上升沿输入数据没什么问题,输入完一个 16 位数据(假设一个芯片)。在此期间
LE 保持在低电位这样不会影响之前的显示。然后 LE 给一个高电平让输入的数据进入锁存器。
之后再给 OE 一个低电平,这样就在输出端口输出了刚才的 16 位数据。
我设计的是一个 6 芯片级联的行扫过程。开始显示的时候发现消影没做好,下一行的灯
//将数据载入到位 //关断输出
delay(5); MBI5026_LE_H;
//载入所有数据到锁存器
delay(5);
MBI5026_LE_L;
delay(5); HC138_display(i); MBI5026_OE_L;
//先给该行供电 //输出端口打开,输出数据
delay(5);
}
点会在上一行留下一个残影。
我的数据载入过程如下:将我要载入的数据存在一个 8 行 12 列的数组当中。每一行 12
个八位数据对应我要输入 6 块芯片的数据量。在那一行显示我就改变这一行的数据然后载入
到芯片中。
void MBI_data(uint8_t k)
{
uint8_t i,j;
uint8_t data;
上诉管脚中 OUT0~OUT15、VDD、GND 这几个端口没什么好说的,R-EXT 是连接外接电
阻,该阻值用以调节等电流输出的大小。官方给出的电流调节说明如下:
我们在使用该芯片时,多半是配合行驱动芯片来进行行扫,所以每个管脚每次之负载一到两 个电阻,所以电流不用设置太大,我使用的是 1K 的调节电阻。 SDI 端口是用来输入串行数据,SDO 端口是用来级联下一块芯片的 SDI 端口。 CLK 为时钟信号输入端口,在该信号的上升边沿串行数据发生位移。 LE 和 OE 两个是配合使用来进行串行数据输出到端口上。
delay(5);
MBI5026_CLK_H;
//载入芯片
delay(5);
data=data>>1;
}
}
}
如果只是单行显示的时候直接输出就行了。但是多行的行扫实际上是在高频变换中通过
视觉残留效果来实现全屏的点亮。这个过程中就应该先载入数据然后通过 OE 位关断输出(这
里的 OE 位关断很重要,我开始就是没有加上这个然后导致重新载入数据的时候会影响上一
该芯片给出的电源电压范围为 4.5V~5.5V。输入端电压范围如图:
所以高电位最低为 0.8*4.5=3.6V。所以驱动的时候如果使用的是 STM32 的 3.3v 芯片,最好 是加上上拉电阻到 5V(注意 STM32 对于管脚能不能外部上拉到 5V 是有限制的,有些管脚 是不能外部上拉的。我就是设计的时候没注意,最后发现上拉发现电平拉不上去。)
for(i=11;i>=0;i--)
//12 个数据
{
data=LED_Data[k][i];
for(j=0;j<8;j++)
//8 位数据按位输入
{
MBI5026_CLK_L;
//先将 CLK 置低
if((0x01&data)==1)MBI5026_SDI_H;
//将要载入的数据设好
else MBI5026_SDI_L;
注意一个问题,MBI5026 输出连接如下图所示:
输出端口作为灯的负极。这样低电位输入的时候灯就亮了。 驱动该芯片的例程网上没找到,我自己写了一个,开始的时候一直没弄明白哪个 LE 和
OE 的关系。后来仔细研究了一下时序图。
C C V 0 D E? LD 61R1I 09876543210 2111111111198765 9876543210 TTTTTTTTTT UUUUUUUUUU OOOOOOOOOO 51TUO41TUO31TUO21TUO11TUO01TUO DKD DEELN VTXE-RODSOLCIDSG 1 6205IBMI 4321 4321 2222 1IDSOLIDSC EL E K C C V r 5 0 1 8 0R F p 0 0 paC1IC1 D N G
行的灯留下残影),这里延时一定要短然后迅速将 LE 置高并马上拉低,这样数据进入锁存器,
通过开通 OE 位输出到管脚上,这样从关断 OE 位到开通 OE 位也就 us 级别的不会影响到视 觉效果出现灯点很暗甚至不亮的情况。
for(i=0;i<8;i++)
{ MBI_data(i); MBI5026_OE_H;