玩转小熊派BearPi(二)使用STM32CubeMX + HAL点亮LCD并刷屏测试

举报
mculover666 发表于 2019/07/11 10:10:11 2019/07/11
【摘要】 小熊派板载一个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,硬件原理图如下:

image.png

image.png


引脚分配如下表:

SPI2_MOSI
PC3
SPI2_SCKPB13
LCD_WR_RSPC6
LCD_RESETPC7
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:Mculover666 / HAL_Driver_Lib / LCD-SPI/


实验现象

原谅我的无知,我不会上传视频,我的OBS流量也有限,就用多图代替吧~


1.jpg

2.jpg

3.jpg

4.jpg

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。