esp-idf环境 esp32s3芯片点亮一块1.54寸单色墨水屏 用spi协议点不亮,求解答

img

img

img

img

img


这个是代码和引脚图,求解答 我也用了i2c进行点亮,也不行,希望各位多多指教,刷图,点亮都行

从您提供的代码中,我没有看到有关连接到1.54寸单色墨水屏的代码。因此,我建议您检查以下内容:

确认您连接了正确的引脚。请参考您使用的1.54寸单色墨水屏的数据手册,查找正确的引脚连接方式。

确认您已经正确初始化了SPI总线。请参考ESP-IDF文档,查找如何初始化和配置SPI总线。

确认您已经正确设置了SPI的时序和模式。请参考您使用的1.54寸单色墨水屏的数据手册,查找正确的SPI时序和模式设置。

确认您已经正确设置了1.54寸单色墨水屏的驱动器芯片。请参考您使用的1.54寸单色墨水屏的数据手册,查找正确的驱动器芯片型号和设置。

检查您的代码,确保您已经正确使用SPI接口来与1.54寸单色墨水屏通信。请参考ESP-IDF文档中关于使用SPI接口通信的示例代码,确保您的代码逻辑正确。

你的程序里并没有操作屏幕啊,只是简单读取里芯片信息并显示,然后反复重启。

参考思路:
1、接口的配置:1.54寸单色墨水屏使用SPI0接口。
2、通信协议:1.54寸单色墨水屏使用Master模式。
3、SPI时钟频率:1.54寸单色墨水屏使用24MHz时钟频率。
4、SPI数据格式:1.54寸单色墨水屏使用8位数据格式。
5、SPI片选信号:1.54寸单色墨水屏使用CE0片选信号。
以上都确认OK,那就要检查下ESP32-S3芯片和屏幕之间的连接是否良好

如果您使用的是ESP-IDF环境搭配ESP32S3芯片,想要使用SPI协议驱动1.54寸单色墨水屏,应该遵循以下步骤:

  1. 确认连接方式

首先,需要确认1.54寸单色墨水屏SPI接口的连接方式是否正确。通常,1.54寸单色墨水屏的驱动芯片为ST7528或SSD1608,其中SPI接口的MISO、MOSI、CLK、CS、DC、RST等接口需要连接到ESP32S3芯片对应的引脚上。

現在市場上常見1.54寸黑白墨水屏有2种接口类型,一种是4线SPI接口,另一种是3线SPI接口,确认好单色墨水屏的接口类型,确定连接方式。

  1. 配置IDF环境

在使用ESP-IDF环境时,需要在menuconfig中进行相关配置,以确保SPI控制器的设置正确。常规的SPI控制器配置包括主从模式、时钟频率、传输大小、位序等,需要根据1.54寸单色墨水屏的规格进行相应的配置,一般来说这些配置信息可以在墨水屏的数据手册中找到。

  1. 程序设计

在程序设计时,需要确保SPI的初始化、通讯等操作正确。通常,需要定义SPI设备,并进行初始化,然后通过spi_device_transmit函数来发送数据,具体的函数可以查看ESP-IDF的API文档。

具体的实现方法可能有所不同,需要结合具体的硬件设备和规格手册进行调整。

建议您检查以下几个方面:

  1. 接口互联是否正确:请检查墨水屏与芯片的接口连接是否正确,硬件接法、线路连接以及电源电压等信息是否匹配。

  2. 接口设置是否正确:需要通过注册的方式,分配所有的SPI信号引脚,并检查SPI主控引脚与单色墨水屏的控制引脚是否相互匹配。

  3. 驱动程序是否正确:需要编写SPI数据传输程序,并使用SPI Transmit函数将数据发送到墨水屏上。

通过仔细检查硬件连接以及协议设置,您可以更好地使用ESP-IDF环境来驱动1.54寸单色墨水屏。

最后一张图是墨水屏连接硬件的引脚图


void ds_screen_gpio_init(){
    gpio_config_t io_conf;
    //disable interrupt
    io_conf.intr_type = GPIO_PIN_INTR_DISABLE;
    //set as output mode
    io_conf.mode = GPIO_MODE_OUTPUT;
    //bit mask of the pins that you want to set,e.g.GPIO18/19
    io_conf.pin_bit_mask = SCREEN_GPIO_OUTPUT_CS_SEL;
    //disable pull-down mode
    io_conf.pull_down_en = 0;
    //disable pull-up mode
    io_conf.pull_up_en = 0;
    //configure GPIO with the given settings
    gpio_config(&io_conf);//初始化片选
 
    //bit mask of the pins that you want to set,e.g.GPIO18/19
    io_conf.pin_bit_mask = SCREEN_GPIO_OUTPUT_DC_SEL;
    //configure GPIO with the given settings
    gpio_config(&io_conf);//初始化D/C
 
    //bit mask of the pins that you want to set,e.g.GPIO18/19
    io_conf.pin_bit_mask = SCREEN_GPIO_OUTPUT_RES_SEL;
    //configure GPIO with the given settings
    gpio_config(&io_conf);//复位
 
    io_conf.intr_type = GPIO_INTR_NEGEDGE;//这里为啥要用下降沿来进行中断触发,存疑
    //bit mask of the pins, use GPIO4/5 here
    io_conf.pin_bit_mask = SCREEN_GPIO_INTPUT_BUSY_SEL;
    //set as input mode    
    io_conf.mode = GPIO_MODE_INPUT;
    //enable pull-up mode
    io_conf.pull_up_en = 1;
    gpio_config(&io_conf);
   
}

看你这电路图是用的2个i2c接口,i2c接口读取寄存器的值与手册上是一样吗?确保了i2c时序的正确性了吗?