前言
本文记录了我移植厂家的ST7789的历程,由于厂家是用标准库写、软件模拟SPI的,现在我使用HAL库,以及硬件SPI来完成实验,使用的芯片是STM32F103C8T6,以免以后忘记。
1.cubemx配置
2.程序改写
#define LCD_RES_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET)//RES
#define LCD_RES_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2.GPIO_PIN_SET)
#define LCD_DC_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET)//DC
#define LCD_DC_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET)
#define LCD_CS_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET)//CS
#define LCD_CS_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET)
#define LCD_BLK_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET)//BLK
#define LCD_BLK_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET)
void LCD_Writ_Bus(u8 dat)
{
LCD_CS_Clr();
while(HAL_SPI_GetState(&hspi1) != HAL_SPI_STATE_READY);//检查接收标志位
HAL_SPI_Transmit(&hspi1, &dat, sizeof(dat), HAL_MAX_DELAY);
LCD_CS_Set();
}
3.引脚连线
PA1-->BLK
PA2-->RES
PA3-->DC
PA4-->CS
GND-->GND
VCC->3V3
4.实验现象
5.总结
更改代码的部分最主要的是把lcd_init.c中的LCD_Writ_Bus()函数改写成HAL库的形式,硬件SPI能加快数据的传输,我下次将实现硬件SPI+DMA的方式。