You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无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/SCKSDA/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)
      

    不确定的话,两种电平都试一遍,总有一个能行。

3. 调整SPI通信速率与分辨率

  • 降低SPI速率:国产屏的稳定性一般不如官方屏,之前用的40MHz可能太高,先降到20MHz甚至10MHz试试,通信稳定了初始化才会成功;
  • 确认分辨率:1.3寸ST7789屏大多是240x240,但也有少数是240x320,代码里的widthheight必须和屏的实际分辨率一致,不然初始化后也不会显示内容。

4. 排查初始化命令(极端情况)

如果上面几步都不行,那可能是这款国产屏的初始化序列和通用ST7789驱动不匹配:

  • 你可以打开用的st7789.py驱动文件,找到init函数里的命令序列,比如修改0x36(内存访问模式)的参数,或者添加/删除一些初始化命令;
  • 比如把0x36的参数从0x00改成0x70,这是很多国产屏的适配技巧。

最后,你先按这几步试,尤其是移除CS参数/固定电平这一步,90%的概率能解决问题。要是还不行,把你的屏引脚定义(比如屏上的引脚标识)和当前用的代码片段贴出来,咱们再接着排查!

火山引擎 最新活动