ESP8266 esp-open-rtos驱动显示屏

        第一次写博客记录以下自己的学习历程,这几天在学习ESP8266的SDK开发,之前使用的是乐鑫提供的SDK,这次使用的是第三方的SDK驱动ST7789显示屏,8266与显示屏通信方式使用的是SPI方式,在esp-open-rtos中提供了SPI的相关demo,所以做起来也是比较方便的。

      环境准备:esp-open-sdk(开始使用的是乐鑫提供的SDK,结果编译总通不过)

                       esp-open-rtos

                       esp8266模块,ST7789显示屏

1.esp8266 SPI

        ESP8266包含两个SPI总线,其中一个是系统总线,另一个是用户总线,系统总线主要与片外flash通信,扩展存储空间,可以使用该总线配置SPIFFS文件系统,用户总线主要用于与其他SPI设备进行通信,ESP8266的各总线接口不像ESP32那样可以映射到指定管脚,而是每条总线都有其对应的引脚。所以使用的是用户总线BUS ID:1连接的显示屏,ESP8266 SPI1管脚如下:

                MISO:  GPIO12

                MOSI:  GPIO13

                SCK:    GPIO14

                CS0:       GPIO15

使用ST7789时,除使用SPI总线管脚外还有另外的RS(命令/数据选择引脚),RST(复位引脚)

2.代码编写

(1)管脚使能以及初始化SPI总线,SPI初始化根据个人需要,具体参数使用可以在esp-open-rtos/core/include/esp/spi.h中查到,该文件中有详细说明以及用例。

spi_init(1, SPI_MODE0, SPI_FREQ_DIV_1M, 1, SPI_BIG_ENDIAN, false);

(2)发送命令和数据,发送命令和数据主要是先通过RS选择是数据还是命令,然后通过SPI1发送

void writecmd(uint8_t cmd)
{
    gpio_write(LCD_RS, CMD_MODE);          //RS line output low
    spi_transfer_8(SPI_BUS,cmd);           //send cmd to lcd
    gpio_write(LCD_RS, DATA_MODE);         //RS line output high

}
void writedata(uint8_t data)
{
    gpio_write(LCD_RS, DATA_MODE);  //set as data transfer mode
    spi_transfer_8(SPI_BUS,data);   //send data
    gpio_write(LCD_RS,DATA_MODE);   //set as data transfermode
}
void writedata16(uint16_t data)
{
    gpio_write(LCD_RS, DATA_MODE);  //set as data transfer mode
    spi_transfer_16(SPI_BUS,data);  //send data
    gpio_write(LCD_RS,DATA_MODE);   //set as data transfermode

}
然后就可以对LCD发送命令和数据了,发送相关指令初始化LCD后就可以使用STM32上提供的相关函数来进行刷屏和绘图操作了

                   

                        

你可能感兴趣的:(ESP8266)