为了使之前实现的功能更加完善,决定外接一个LCD屏作为显示,后期移植LVGL实现一些界面操作
屏幕具体的型号为如下图:1.83英寸,采用ST7789T3驱动,240*280,接口采用3line 9bit。由于未详细的看说明,此处的3line 9bit 虽然采用spi接口但是发送数据极为不便捷,采用的是官方提供的GPIO模拟的方式。具体的发送数据方式下图,所以购买屏幕一定一定要看清楚接口方式以及数据发送方式等因素,这些都会影响后续的开发进度,以及显示的效果。
此屏幕还有一个问题就是采用FH35C-13s-0.5SHW(50) 接口,此接口对刚刚接触焊接的小伙伴很不友好,尽量选择直接焊接接口的LCD屏幕或者购买LCD模块,这样节省自己焊接和PCB制作过程。
根据官方提供的原理图,自行设计的PCB ,如下:
电路图相对简单,PCB制作完成后,还是采用stm32f103rct6进行通信调试。具体的代码实现,见下面,后续进行LVGL移植说明。
lcd_init.c 代码主要根据提供的demo进行自行更改合适的接口IO
#include "zjy_lcdinit.h"
/*---------------------------
中景园LCD 240(H)RGB x280(V) 1.83寸
TE ---> (PB1) EXIT
MOSI ---> SPI1_MOSI(PA7)
SCLK ---> SPI1_SCK (PA5)
CS ---> (PA4)
D/C ---> (PA6) 0--> 写REG
1--> 写DATA
RESET --> (PC4) 0--> 复位
BLK --> (PC5) 1--> 开启背光 0--> 关闭背光
----------------------------*/
void LCD_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
// CS MOSI SCLK
GPIO_InitStructure.Pin = SPIx_SCK_PIN | SPIx_MOSI_PIN | SPIx_CS_PIN;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; //推挽输出
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH; //速度50MHz
HAL_GPIO_Init(SPIx_SPI_GPIO_PORT, &GPIO_InitStructure);
HAL_GPIO_Wr