正在用两片HC595和3片MBI5030驱动16*16的RBG点阵灯,采取逐行扫描的方式。
硬件简述:
1. 两片HC595通过SDO接SDI方式级联,共用Latch_1;
2. 三片MBI5030也采用SDO接SDI方式级联联,共用Latch_2;
3. 第一级MBI5030控制RGB灯红 {MOD},第二极绿 {MOD},第三极蓝 {MOD},共13行LED,每个芯片只用13端口;
3. 第一级HC595与第一级MBI5030共用SCK和SDI。
软件问题:
1. IO模拟时序来实现扫描点亮的方式会出现闪烁:
1.1 每发送一行的RGB数据给MBI5030(grayscale[3][16],三极芯片,每级16通道,每通道16bit),紧接着就发送一个16位的选通数据给HC595打开对应LED行的电源开关,如此循环完成扫描。但是IO翻转的方式发送数据消耗时间太长,导致每次更新完MBI5030数据,HC595不能很快切换至下一行选通的电源,从而导致更新MBI5030数据后上一行LED出现闪烁。
1.2 现在想用SPI取代IO模拟的方式,这样发送数据应该要快很多,节省些CPU资源。但是MBI5030的latch信号是在SDI接收最后一位数据的时间段完成翻转(如附图时序),而普通SPI的数据传输无法获取传输最后一位数据的时间点,所以很难实现。有一个想法是用两个SPI,SPI1传输数据给SDI,SPI2用来模拟Latch_2的时序。但会产生一个新的问题,如何让两个SPI同步发送。
请各位不吝赐教,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
看来还是沉掉了,打算换TLC5940,这种标准的SPI驱动应该会更快。
一周热门 更多>