▬▬▬▬▬▶SPI+DMA驱动LCD◀▬▬▬▬▬
⚔️前言
其实HAL库我用不太习惯,一直也是用的标准库
但HAL库确实是好上手一些,可以快速的创建一个工程
这次就当尝试一下吧,因为用的比较少,我会记录的详细一些
⚔️先看效果
F411CE 硬件SPI+DMA驱动LCD
⚔️如图点击,创建新工程

⚔️搜索型号,双击选择

⚔️左边这些都能点开,有兴趣可以点开康康

Systemcore Core 如图选择
选择的是外部高速时钟,陶瓷晶振
这里设置是为了等下配置系统时钟

⚔️SYS 打开SWD接口,不配置的话芯片的SWD口会锁住
如果你恰好没配置,点击查看解决办法

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

⚔️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模板

这里有个坑,我用DMA发送,发送一次后标志位一直是busy
在网上找了好久 后来调用1ms延时+HAL_SPI_Abort(&hspi1)
函数解决

⚔️项目获取
▬▬▬▬▬▶点击获取工程代码◀▬▬▬▬▬

本文介绍了如何使用标准库,结合SPI和DMA驱动LCD,具体步骤包括创建STM32F411CE工程,配置SPI、DMA和时钟参数,以及解决发送后标志位忙碌的问题。最后提供了项目获取方式。

被折叠的 条评论
为什么被折叠?



