芯片破解STC单片机驱动OLED液晶的感受
芯片破解MSP430控制OLED已经成功了,所以我就把它的时序图作为范本来进行研究。
先用分析仪捕获MSP430控制OLED的几根主要信号线(时钟、指令/数据标志、数据等),为了研究问题简单,只捕获初始化程序第一字节指令,时序图如下:
而初始化程序第一字节时序图的源代码为:
0xAE换算成二进制数就是:10101110,与捕获到的数据是一致的。
通过MSP430正确运行的代码而捕获到的以上时序图,也初步学会了“逻辑分析仪”的使用。
用STC单片机控制OLED的平台是前不久刚制作完成的STC32G最小系统板,此单片机可以工作在3.3V电压下,为了问题简便,只写了OLED的初始化代码,甚至在初始化函数中只向OLED发送了一字节指令,如上所示。
用“逻辑分析仪”捕获到的时序图为:
这个时序图一看就不正常,芯片破解感觉时钟脉冲的“占空比”都比较小,形成的脉冲很窄,D/C波形也没看到有高电平,数据也不正确。
以“模拟电路”的思维分析这些脉冲,感觉是负载太重,驱动电路在输出高电平时,瞬间被负载拉低所造成的。
初步怀疑OLED需要的驱动电流比较大,STC单片机的“准双向口”无法胜任,故高电平无法维持足够长的时间,导致脉冲波变窄。
因为以前用STC的单片机驱动LCD时,使用的都是默认的“准双向口”,这次想到OLED与LCD都差不多,也就没特别去配置I/O口,默认使用它的“准双向口”。
后来将:时钟、指令/数据标志、数据、复位等控制线的I/O口模式改为“推挽模式”,亦即:
程序修改以后,时序图正常了。
其实“逻辑分析仪”的软件自己也会分析数据,根据设置的SPI协议,软件分析出来的数据又快又准:

芯片解密