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上提供的相关函数来进行刷屏和绘图操作了

                   

                        

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值