[python] TFT Display测试心得碎念(拿st7735的经验拯救ili9341)

使用的python函式库为:

sudo pip3 install adafruit-circuitpython-rgb-display

此函式库为Adafruit推出的套件,并提供了範例原始码如下:

import timeimport busioimport digitaliofrom board import SCK, MOSI, MISO, D2, D3from adafruit_rgb_display import color565import adafruit_rgb_display.ili9341 as ili9341# Configuration for CS and DC pins:CS_PIN = D2DC_PIN = D3# Setup SPI bus using hardware SPI:spi = busio.SPI(clock=SCK, MOSI=MOSI, MISO=MISO)# Create the ILI9341 display:display = ili9341.ILI9341(spi, cs=digitalio.DigitalInOut(CS_PIN),                          dc=digitalio.DigitalInOut(DC_PIN))# Main loop:while True:    # Clear the display    display.fill(0)    # Draw a red pixel in the center.    display.pixel(120, 160, color565(255, 0, 0))    # Pause 2 seconds.    time.sleep(2)    # Clear the screen blue.    display.fill(color565(0, 0, 255))    # Pause 2 seconds.    time.sleep(2)

我根据board类别得知 GPIO 参数设定如下:

 'CE0', 'CE1', 'D0', 'D1', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15',            8      7      0     1     10     11     12     13     14     15            'D16', 'D17', 'D18', 'D19', 'D2', 'D20', 'D21', 'D22', 'D23', 'D24',  16      17     18     19     2     20     21     22     23     24     'D25', 'D26', 'D27', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9',  25      26     27     3     4     5     6     7     8     9    'I2C',                       'MISO', 'MISO_1', 'MOSI', 'MOSI_1',  <function I2C at 0xb6564078>     9        19      10        20      'RX', 'RXD', 'SCK', 'SCK_1', 'SCL', 'SCLK', 'SCLK_1', 'SDA',   15     15     11       21      3      11        21      2      'SPI',                       'TX', 'TXD', <function SPI at 0xb6564108>  14     14

呼叫busio.SPI物件确定了SCK, MOSI, MISO三个参数, 呼叫ili9341.ILI9341物件又确定了cs, dc此二个参数

# Setup SPI bus using hardware SPI:spi = busio.SPI(clock=SCK, MOSI=MOSI, MISO=MISO)# Create the ILI9341 display:display = ili9341.ILI9341(spi, cs=digitalio.DigitalInOut(CS_PIN), dc=digitalio.DigitalInOut(DC_PIN))

翻开ili9341.ILI9341的初始设定, 确定rst设为None

def __init__(        self,        spi,        dc,        cs,        rst=None,        width=240,        height=320,        baudrate=16000000,        polarity=0,        phase=0,        rotation=0,    )

于是归纳结论 GPIO layout Setting如下:

SCK->11, MOSI->10, MISO->9, CS_PIN->2, DC_PIN->3, rst->None, 也就是如下图模式:

http://img2.58codes.com/2024/20119608OUQREdNm2s.jpg

接下来我的问题就来了, 如下图, 购入的TFT模组并未特别注明SPI格式的接脚

http://img2.58codes.com/2024/20119608dXa8ptqC2H.jpg

除了未标明MOSI, MISO外,SCK(SCL)是跟SDA作为I2C格式的搭配, 另一BL可同样接5v或是不接, 同样是八个针脚的ILI9341 TFT模组,电路格式不一定找得到统一的方法去做设定.

最后决定的 gpio Layout

以下是最终测试成功后的GPIO接线Layout示意图
http://img2.58codes.com/2024/20119608qxiltEmlwE.jpg

使用参考案例为https://jakew.me/2018/01/19/st7735-pi/的GPIOLayout

最后我的程式改写

请注意以下:
定义以下 SCK, MOSI(SDA), D25(RS_PIN), D8(CS_PIN), D24(DC_PIN)
from board import SCK, MOSI, D25, D8, D24

CS_PIN = D8DC_PIN = D24RS_PIN = D25

并在呼叫spi时省略MISO
spi = busio.SPI(clock=SCK, MOSI=MOSI)

呼叫display时加上rst设定
display = ili9341.ILI9341(spi, cs=digitalio.DigitalInOut(CS_PIN), dc=digitalio.DigitalInOut(DC_PIN), rst = digitalio.DigitalInOut(RS_PIN))

成果
http://img2.58codes.com/2024/201196089z3O3YU0Iv.jpg

本篇原文来自https://github.com/KaliChen/ILI9341TFT240x320/blob/master/README.md


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章