玩转小熊派BearPi(二)使用STM32CubeMX + HAL点亮LCD并刷屏测试
【摘要】 小熊派板载一个1.3寸LCD屏幕,分辨率240*240,色彩深度16bit,非常具有可玩性,本文带你来一步步点亮LCD小屏幕。MCU与LCD屏幕控制器硬件连接板载LCD屏幕的液晶控制芯片是ST7789V2,硬件原理图如下:引脚分配如下表:SPI2_MOSIPC3SPI2_SCKPB13LCD_WR_RSPC6LCD_RESETPC7LCD_POWERPB15使用CubeMX生成LCD控制GP...
小熊派板载一个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流量也有限,就用多图代替吧~
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)