基于STM32F411使用SPI+DMA驱动LCD

Posted 文某9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于STM32F411使用SPI+DMA驱动LCD相关的知识,希望对你有一定的参考价值。

先看效果

F411CE 硬件SPI+DMA驱动LCD

基于HAL库

其实HAL库我用不太习惯,一直也是用的标准库

但HAL库确实是好上手一些,就迅速创建一个新的template

这次就当尝试一下吧,因为用的比较少,我会记录的详细

如图点击,创建新工程

搜索型号,双击选择

左边这些都能点开,具体点开就知道了

Systemcore Core 如图选择

选择的是外部高速时钟,陶瓷晶振

这里设置是为了等下配置系统时钟

SYS 打开SWD接口,不配置的话芯片的SWD口会锁住

如果你恰好没配置,点击查看解决办法

Connectivity SPI设置主机全双工(你也可以选别的)

Frame Format 这个默认摩托罗拉

Data Size 数据位

First Bit 选择先发高位或者低位,MSB为高位

Prescaler 系统分频,这个影响到SPI速度,后面还会提一次

CPOL 时钟空闲是高电平或低电平

CPHA 奇数偶数采样选择,这两个是SPI的基础知识

CRC校验这里不开启

使能使用的软件控制,我其实是直接拉的GND

DMA配置 点击ADD添加

Stram流,其实就是通道,具体的流通道请看通道映射

Direction 方向选择,无非就内存到外设,外设到内存

Priority 优先级 随便选了没什么影响

increment address 地址递增 因为我要往外设发数组里面的值,所以我本身(Memory)要设置为递增

Datawidth 数据宽度,8位 16位 32位 这里主从宽度要相同

mode模式,可设置为正常或循环,正常就是只发一次

时钟设置,直接拉到100M

拉完到100M,再回过头来看这个SPI速度就到了主频的一半

生成

Project Name 工程名字
Project location 路径
IDE选择MDK-ARM 也就是keil

生成独立的ch文件方便查看

全部配置完成点击GENERATE CODE生成工程即可

打开工程需要移植LCD驱动,在网上找的一个

文件免费分析,我会整理好放到我的gitee

这里有个坑,我用DMA发送,发送一次后标志位一直是busy

在网上找了好久 后来调用1ms延时+HAL_SPI_Abort(&hspi1)

函数解决

全套流程梳理

用cubemx创建spi+dma模板,移植LCD驱动,接好硬件

工程免费分享,评论区贴到gitee

以上是关于基于STM32F411使用SPI+DMA驱动LCD的主要内容,如果未能解决你的问题,请参考以下文章

STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFT LCD128X160 ST7735S屏幕

jlxLCD12864液晶屏驱动STM32F411

在 STM32F411 Discovery 上实现 HD44780 LCD 时调试 HardFault

STM32CubeIDESTM32F103硬件SPI驱动1.8寸TFT LCD128X160 ST7735S屏幕

STM32F429开发板用户手册第32章 STM32F429的SPI总线应用之驱动W25QXX(支持查询,中断和DMA)

stm32f412 SPI dma接收和UART dma发送问题解决