把M5Stack的UIFlow刷成了没有UIFlow的MicroPython以后,我又尝试了把手上的StickC刷成MicroPython。
StickC使用了一颗型号为ESP32-PICO-D4 (revision 1)的芯片,4M的Flash ROM,没有PSRAM。TFT LCD驱动芯片为ST7735S。留意到了m5stack团队改的Lobo MicroPython似乎是把ST7735的驱动模块给去掉了,所以我使用了原版Lobo MicroPython。
编译过程,同M5Stack类似,但是需要注意:
- menuconfig的时候需要把ROM大小改为4M
- 不要打开SPIRAM的支持选项
- 串口烧写速率不要使用921600,改为115200
- Use Display module - Enable support for SPI TFT displays 要打开
- ./BUILD.sh flash之前先./BUILD.sh erase
烧写成功后,用./BUILD.sh monitor就可以观察启动过程了。
注意,刷了Lobo MicroPython后,开关键的复位功能无效了,不过按6秒关机的功能还在。
本来以为Lobo MicroPython自带ST7735的驱动,点亮TFT LCD应该无压力,可惜我想错了。
首先发现StickC的TFT LCD的电源和背光并不是直接接到电源或者由GPIO控制的,而是由AXP192输出和控制的。所以,首先要对AXP192操作,打开TFT LCD的电源和背光。
import machine
i2c=machine.I2C(0,sda=21,scl=22)
i2c.writeto(0x34,'\x10\xff') # OLED_VPP Enable
i2c.writeto(0x34,'\x28\xff') # Enable LDO2&LDO3, LED&TFT 3.3V
i2c.writeto(0x34,'\x12\x4d') # Enable DC-DC1, OLED_VDD, 5B V_EXT
在REPL执行下列命令后,(注意:miso其实可以随意指定)
import display
tft = display.TFT()
tft.init(tft.ST7735, width=80, height=160, speed=10000000, rst_pin=18, miso=19, mosi=15, clk=13, cs=5, dc=23 , bgr=0x08)
没显示。
又试了下面两个
import display
tft = display.TFT()
tft.init(tft.ST7735R, width=80, height=160, speed=10000000, rst_pin=18, miso=19, mosi=15, clk=13, cs=5