现象和发生背景
IO不足, 又不允许用SPI, 需要将 LCD12864 (控制器ST7920) 从 8-bits界面, 改成 4-bits。
基于 8bits 稳定使用的情况下,硬件断开 D[3:0]。
修改 Function, 从 0x30 -> 0x20
但初始化不稳定, 花屏机率高!
代码
hwSt7920_Reset = 0;
vDelayXms(1);
hwSt7920_Reset = 1;
vDelayXms(200); // Delay for Power On Reset
vst7920write( CMD, 0x30);
vDelayXms(5);
vst7920write( CMD, 0x20);
vDelayXms(5);
vst7920write( CMD, 0x0C);
vDelayXms(5);
vst7920write( CMD, 0x01);
vDelayXms(2);
运行结果
但初始化不稳定, 错误有这几种
- 花屏机率高! >> RESET重启无效, 需重新上电
- 出现色斑 >> RESET重启, 概率上可以成功
- 位置错误, >> 重新写入OK
我的解答思路和尝试过的方法
尝试:
- 加Power On Delay : 1000ms 无明显改善
- 软件顺序改变
方式一
方式二vst7920write( CMD, 0x30); vDelayXms(5); vst7920write( CMD, 0x30); vDelayXms(5); vst7920write( CMD, 0x20); vDelayXms(5); vst7920write( CMD, 0x0C); vDelayXms(5); vst7920write( CMD, 0x01); vDelayXms(5);
方式三vst7920write( CMD, 0x33); vDelayXms(5); vst7920write( CMD, 0x32); vDelayXms(5); vst7920write( CMD, 0x20); vDelayXms(5); vst7920write( CMD, 0x0C); vDelayXms(5); vst7920write( CMD, 0x01); vDelayXms(5);
无明显改善vst7920write( CMD, 0x30); vDelayXms(5); vst7920write( CMD, 0x22); vDelayXms(5); vst7920write( CMD, 0x20); vDelayXms(5); vst7920write( CMD, 0x0C); vDelayXms(5); vst7920write( CMD, 0x01); vDelayXms(5);
是不是我漏了什么环节没注意到呢?
2022/12/01 22:30 问题已找到方案:
依规格书建议, 用I/O控制 RST取代原 R/C Reset。