【STM32Cube】基于H743的SPI配置


1. SPI普通配置

STM设置NSS引脚的软件管理是为了可以将NSS引脚空出来,像普通IO引脚运用。所以一般使用时,配置为软件管理模式(SSM=1),然后从机的CS片选引脚由一个IO控制(可以用空出来的NSS引脚),这里就配置该引脚为输入输出状态就可以。

2. SPI+中断配置

配置同上,加上中断即可。

3. SPI+DMA

SPI接口具有发送和接收两个请求,在大数据量传输时,使用DMA更高效。原有数据都不用更改,只需要为SPI5配置两个DMA请求配置流。

两个DMA流的Mode一定要设置为Normal,因为每次DMA发送或者接收只执行一次,不需要循环执行。外设和存储数据宽度为字节。并且开启存储器地址自增功能。 

设置两个DMA的流中断抢占优先级为1.因为DMA流中断函数会间接用到延时函数HAL_Delay();

4. SPI+DMA+FIFO

启用DMA的FIFO可以最大程度地避免数据传输过程中的溢出问题,可以减少DMA对内存的访问次数从而减少总线访问竞争,通过BURST分组传输优化传输带宽以提升芯片性能。利用FIFO,通过对源端/目标端的数据进行打包或拆包以适应不同数据宽度的访问需求.让DMA的使用更为方便灵活.

5. Quad-SPI

标准的SPI总线,SPI由四根线控制,NSS为片选,SCK为时钟信号线。MISO,MOSI为数据线,一根作为输入,一根作为输出。

Quad-SPI总共有6根控制线:CS为片选,CLK为时钟信号线。IO0~IO3为数据线,可以发送数据也可以接收数据。

QUADSPI 通过命令与 Flash 通信 每条命令包括指令、地址、交替字节、空指令和数据这五
个阶段,任一阶段均可跳过,但至少要包含指令、地址、交替字节或数据阶段之一。nCS 在每条指令开始前下降,在每条指令完成后再次上升。

QuadSPI模式选择Bank1四线SPI。

 

QUADSPI配置如下。时钟分频设置为1,故QSPI时钟 = 200M / (1+ 1) = 100MHz

FIFO深度设置为4个字节,配置QSPI 在Flash 驱动信号后过半个CLK 周期才对Flash 驱动的数据采样。

Flash Size设置外部存储器大小,本实验以W25Q128FV芯片为例,大小为16MB(使用24位寻址),则设置为23。

 

生成报告以及代码,编译程序。在quadspi.c文件中可以看到初始化函数。stm32f7xx_hal_qspic.h头文件中可以看到QSPI的操作函数。分别对应轮询,中断和DMA三种控制方式。

开启DMA。 

开启中断。 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米杰的声音

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值