基于stm32的h5的spi屏幕调试
本文目标:基于stm32的基础实验
按照本文的描述,应该可以跑通实验并举一反三。
先决条件:装有编译和集成的开发环境,比如:Keil uVision5、STM32CubeMX
使用外设:GPIO、SPI
前言
跟着学习项目的一些笔记记录。
实验目的
基于stm32的h5系列新建一个能使用的工程,进行spi屏幕的点亮。
原理图部分
所涉及引脚列表如下:
厂商芯片部分资料
找到屏幕的厂家提供的资料信息,查看对应的芯片手册,部分内容如下:
去看一下4线的spi是需要如何进行配置的,
时钟的时序频率:
最小的时间,都可以达到1/7+7ns = 71.4M,所以我们配置时钟时,可以配置跟这个数相近。
写操作的时序如下:
读操作的时序如下:
搭建工程
启动原先的工程,进入STM32CubeMX 的配置,根据对应的引脚进行配置SPI
spi配置
io配置
配置一下LCD屏幕的其中引脚,同时把SPI的io速度提高一些,如下:
时钟配置界面
配置时钟,调高 CPU 频率:
工程选项卡
指定代码生成方法,如下
使用keil打开工程,编译工程,一切都是ok
添加驱动
代码成功生成,添加厂家提供的驱动,如下:
添加头文件路径
添加显示的汉字
使用字模软件生成一些中文,用于屏幕展示,把生成的文字添加一下所索引,然后拷贝到对应的数组中。
添加显示的图片
使用相应的代码来显示内容
在main.c进行编程,简简单单的下写下一些LCD屏幕的代码,测试一下。
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_SPI2_Init();
/* USER CODE BEGIN 2 */
LCD_Init(1); /* 初始化LCD为横屏 */
Draw_Init(); /* 初始化绘制系统 */
Draw_Clear(0); /* 清屏 */
Draw_String(0, 0, "www.stm32.com\r\nwww.keil.com", 0x0000ff00, 0); /* 绘制字符串 */
Draw_ChineseFont(0, 40, "欢迎关注独处东汉", 0xff0000, 0); /* 绘制汉字 */
extern const unsigned char gImage_test[43208];
Draw_Picture(0, 100, gImage_test); /* 绘制图片 */
Draw_Circle(60, 250, 50, 0xffffff); /* 画圆 */
Draw_Rectangle(180, 200, 280, 300, 0xffffff); /* 画矩形 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
HAL_Delay(500);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
刷入板子,LCD上的屏幕能正常点亮,同时有一些api函数可以直接调用,可以正常显示汉字,显示图片等信息
实验现象
本文中使用的测试工程
https://download.csdn.net/download/weixin_44317448/89067623