做了比较长时间的LED显示屏相关的工作,不论软件还是硬件,以及上位机也一直在做。硬件原理都是一样的没什么特别的,也就动态扫描着显示。
最近用STM32做了一个相对比较好玩的,以下按步骤详细道来。
用PC端软件通过USB控制一张P6全彩的LED屏,所谓P6就是灯与灯之间的间距为6mm。用的是3528封装的贴片RGB灯。模组是HUB75接口的。STM32与显示模组之间的连接关系如下:
1 2
P6 STM32 P6 STM32
RD1 -| |-
GD1 RD1 <-----> PA0 A <-----> PB13
| BD1
-| |- N GD1 <-----> PA1 B <-----> PB14
|
RD2 -| |- GD2 BD1 <-----> PA2 C <-----> PB15
| BD2 -| |- N RD2 <----->
PA3 S <-----> PA9 | A -| |- B
GD2 <-----> PA4 L <-----> PA8 | C -| |- N
BD2 <-----> PA5 OE <-----> PB12 | S -| |-
L O
-| |- N 15 16 N <----->
GND HUB75接口
Contex-M3系列的bit-band不错,对端口或者内部RAM读写都很方便。所以这里对端口操作都采用了这个方式,实际测试速度可以达到2M左右,对驱动这个板足矣。
接下来就是对LED驱动芯片的时序进行模拟了。
购买模组的时候板子上面采用的国产的一款16bit的驱动芯片,觉得不爽,于是换成了聚积的MBI5039,这颗带有错误侦测功能,在以后结合PC端做上此功能,这里就暂时放在一边。具体的资料可以google一下datasheet。
MBI5039时序.jpg
接下来就是编程的问题了,结合逻辑分析仪,很方便看出时序
逻辑分析仪截取的图片.jpg
PC端软件用了C#,HID方式也很好实现
PC_c#.jpg
连接USB,得到实际的效果图
实际效果.jpg
用的是mini小板驱动.jpg
今天太晚了,没时间细细道来,有时间或有人有兴趣的话再写一个详细的说明。