玩转小熊派BearPi(二)使用STM32CubeMX + HAL点亮LCD并刷屏测试
小熊派板载一个1.3寸LCD屏幕,分辨率240*240,色彩深度16bit,非常具有可玩性,本文带你来一步步点亮LCD小屏幕。
MCU与LCD屏幕控制器硬件连接
板载LCD屏幕的液晶控制芯片是ST7789V2,硬件原理图如下:
引脚分配如下表:
SPI2_MOSI | PC3 |
SPI2_SCK | PB13 |
LCD_WR_RS | PC6 |
LCD_RESET | PC7 |
LCD_POWER | PB15 |
使用CubeMX生成LCD控制GPIO和SPI2的初始化代码
STM32L431RCT6使用SPI2作为master与ST7789V2通信,并且使用另外的三个引脚LCD_WR_RS、LCD_RESET、LCD_POWER来分别控制读写数据/命令信号,LCD复位信号、LCD背光开关引脚,所以要先使用STM32CubeMX+HAL生成初始化SPI2和LCD控制GPIO的代码。
具体在STM32CubeMX的过程不再赘述,如不会使用CubeMX,请参考我的第一篇文章:
玩转小熊派BearPi(一)使用STM32CubeMX + HAL点亮一个LED
基于SPI初始化工程,编写LCD驱动程序
编写ST7789V2的驱动程序时需要参考其数据手册(见附件),大致的流程如下:
基于HAL库提供的SPI发送数据函数,填充LCD驱动框架中的底层LCD发送数据的函数:
static void LCD_SPI_Send(uint8_t *data, uint16_t size) { SPI2_WriteByte(data, size); }
基于底层LCD发送数据函数,编写两个函数,一个是发送命令的函数,一个是发送数据的函数:
static void LCD_Write_Cmd(uint8_t cmd) { LCD_WR_RS(0); LCD_SPI_Send(&cmd, 1); } static void LCD_Write_Data(uint8_t dat) { LCD_WR_RS(1); LCD_SPI_Send(&dat, 1); }
基于这两个底层函数编写LCD初始化函数,设置显存区域,清屏函数等;
最后在main.c中先调用LCD初始化函数,然后不停的使用不同的颜色清屏,就可以开启刷屏模式啦哈哈哈~
这里代码过多,不一一贴上了,完整的代码见我的Github: / HAL_Driver_Lib / LCD-SPI/
实验现象
原谅我的无知,我不会上传视频,我的OBS流量也有限,就用多图代替吧~
- 点赞
- 收藏
- 关注作者
评论(0)