无CS引脚的1.3英寸ST7789显示屏与Raspberry Pi Pico适配问题求助
无CS引脚的1.3英寸ST7789显示屏与Raspberry Pi Pico适配问题求助
兄弟我之前踩过同款国产ST7789屏的坑,刚拿到手也是只有背光亮,急得不行,后来一步步排查才搞定,给你分享几个肯定能用到的解决思路:
先搞懂为什么这款屏没有CS引脚
很多低价国产1.3寸ST7789屏会把CS(片选)引脚在PCB板上直接焊死接地或者接3.3V,相当于硬件上固定了片选状态,不需要我们再通过Pico控制。这也是为啥你看不到这个引脚的原因,咱们只需要在代码和硬件接线上适配这个状态就行。
1. 先检查硬件接线(最容易忽略的基础)
虽然没有CS引脚,但其他核心引脚必须接对,不然肯定只亮背光:
- SCL/SCK、SDA/MOSI:这两个SPI通信引脚必须和代码里配置的Pico引脚一一对应,接反了直接通信失败;
- DC(数据/命令选择引脚):这个是关键!如果DC引脚接错或者代码里配置错,屏接收不到正确的命令/数据,就只会亮背光;
- RST(复位引脚):绝大多数ST7789屏需要复位脉冲才能初始化,要是没接RST或者代码里没给复位信号,屏就会卡在初始状态,只亮背光;
- BL(背光引脚):你这个已经亮了,暂时不用管,但可以确认下是高电平还是低电平有效,避免后续出问题。
2. 修改代码中的CS引脚配置(核心解决步骤)
之前的代码肯定有指定CS引脚的部分,现在要根据屏的硬件状态修改:
方案一:直接移除CS参数
很多ST7789的驱动库(比如MicroPython的st7789库)支持忽略CS引脚,直接把初始化代码里的cs参数删掉或者设为None。举个例子:
原来的代码(带CS):from machine import Pin, SPI import st7789 spi = SPI(1, baudrate=40000000, sck=Pin(10), mosi=Pin(11)) display = st7789.ST7789( spi, cs=Pin(12), # 原来的CS引脚配置 dc=Pin(8), rst=Pin(13), bl=Pin(14), width=240, height=240 )修改后(移除CS):
from machine import Pin, SPI import st7789 spi = SPI(1, baudrate=20000000, sck=Pin(10), mosi=Pin(11)) # 先把速率降到20MHz试试 display = st7789.ST7789( spi, dc=Pin(8), rst=Pin(13), bl=Pin(14), width=240, height=240 )方案二:固定CS引脚电平
如果驱动库必须要求传CS参数,那找个Pico的闲置引脚,根据屏的硬件状态固定电平:- 假设屏的CS在板上接地:把闲置引脚设为低电平输出
cs_pin = Pin(12, Pin.OUT, value=0) display = st7789.ST7789(spi, cs=cs_pin, dc=Pin(8), rst=Pin(13), bl=Pin(14), width=240, height=240) - 假设屏的CS在板上接3.3V:把闲置引脚设为高电平输出
cs_pin = Pin(12, Pin.OUT, value=1) display = st7789.ST7789(spi, cs=cs_pin, dc=Pin(8), rst=Pin(13), bl=Pin(14), width=240, height=240)
不确定的话,两种电平都试一遍,总有一个能行。
- 假设屏的CS在板上接地:把闲置引脚设为低电平输出
3. 调整SPI通信速率与分辨率
- 降低SPI速率:国产屏的稳定性一般不如官方屏,之前用的40MHz可能太高,先降到20MHz甚至10MHz试试,通信稳定了初始化才会成功;
- 确认分辨率:1.3寸ST7789屏大多是240x240,但也有少数是240x320,代码里的
width和height必须和屏的实际分辨率一致,不然初始化后也不会显示内容。
4. 排查初始化命令(极端情况)
如果上面几步都不行,那可能是这款国产屏的初始化序列和通用ST7789驱动不匹配:
- 你可以打开用的
st7789.py驱动文件,找到init函数里的命令序列,比如修改0x36(内存访问模式)的参数,或者添加/删除一些初始化命令; - 比如把
0x36的参数从0x00改成0x70,这是很多国产屏的适配技巧。
最后,你先按这几步试,尤其是移除CS参数/固定电平这一步,90%的概率能解决问题。要是还不行,把你的屏引脚定义(比如屏上的引脚标识)和当前用的代码片段贴出来,咱们再接着排查!




