spi dma st7789 hal
时间: 2025-02-25 10:30:13 浏览: 109
### 使用 SPI 和 DMA 通过 HAL 库驱动 ST7789 显示屏
为了使用硬件 SPI 和 DMA 驱动 ST7789 显示屏,可以基于现有的 HAL 库函数来构建初始化和数据传输功能。下面是一个完整的示例代码框架。
#### 初始化配置
首先,在 `main.c` 文件中完成必要的外设初始化:
```c
#include "stm32f1xx_hal.h"
#include "st7789.h"
// 定义SPI句柄结构体变量
extern SPI_HandleTypeDef hspi1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_SPI1_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_SPI1_Init();
// 初始化LCD屏幕
ST7789_Init(&hspi1, LCD_WIDTH, LCD_HEIGHT);
while (1)
{
// 主循环逻辑
}
}
/**
* @brief SPI1 Initialization Function
*/
static void MX_SPI1_Init(void)
{
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 10;
if (HAL_SPI_Init(&hspi1) != HAL_OK)
{
Error_Handler();
}
__HAL_LINKDMA(&hspi1, hdmatx, DmaHandleTx);
}
```
#### 数据发送函数
接着定义用于向显示器发送命令或数据的辅助函数:
```c
#define CMD_WRITE 0xFF
#define DATA_WRITE 0xFE
void ST7789_WriteCmd(uint8_t cmd)
{
GPIO_WritePin(LCD_DC_PORT, LCD_DC_PIN, RESET);
HAL_SPI_Transmit(&hspi1, &cmd, 1, HAL_MAX_DELAY);
}
void ST7789_WriteData(uint8_t* data, uint16_t length)
{
GPIO_WritePin(LCD_DC_PORT, LCD_DC_PIN, SET);
HAL_SPI_Transmit_DMA(&hspi1, data, length);
}
```
这里需要注意的是,当采用DMA方式进行大批量的数据传送时,应该等待前一次操作结束再发起新的请求。
#### 屏幕刷新函数
最后编写一个简单的绘图函数作为测试用途:
```c
void DrawPixel(int16_t x, int16_t y, uint16_t color)
{
if ((x >= 0 && x < LCD_WIDTH) && (y >= 0 && y < LCD_HEIGHT))
{
ST7789_SetCursor(x, y);
ST7789_WriteColor(color);
}
}
void FillScreen(uint16_t color)
{
for (uint16_t i=0; i<LCD_WIDTH*LCD_HEIGHT; ++i){
ST7789_WriteColor(color);
}
}
```
上述代码片段展示了如何利用STM32 HAL库中的SPI接口配合DMA控制器高效地与ST7789 IPS显示模块交互[^1]。
阅读全文
相关推荐
















