【STM32】使用DMA+SPI传输数据

本文介绍了如何在STM32中使用DMA和SPI进行数据传输,包括DMA的基本概念,如传输方式、DMA控制器和通道的配置。通过STM32F4的示例,讲解了从初始化SPI到配置DMA的详细步骤,以及代码实现中的关键函数和标志清除过程。
摘要由CSDN通过智能技术生成

DMA(Direct Memory Access):直接存储器访问

一些简单的动作,例如复制或发送,就可以不透过CPU,从而减轻CPU负担

由于本人使用的是正点原子开发板,部分代码取自里面的范例

 

本篇内容大纲

【1】DMA初步了解

【2】导入相关的库

【3】代码流程

 

【1】DMA初步了解

DMA可以设定三种传输方式:『外设到存储器』『存储器到外设』『存储器到存储器』(第三种方式仅DMA2能执行)

本篇测试的是『存储器到外设』,下面继续介绍DMA

STM32F4两个DMA控制器(DMA1、DMA2)

每个控制器8个数据流(Stream)

然后,每个数据流又有8个通道(Channel)

下面两张张表格,来说明『DMA控制器』『数据流』『通道』所对应的DMA请求映射(request mapping)

以下这图是针对STM32F4的,其他芯片,例如STM32F1,应该要找各自的说明书,也许表格会有出入

在使用DMA之前需要做设定,例如我想用串口1的发送(USART1_TX),在DMA2里面,『Stream = 7』『Channel = 4』 就是我们要的了

/* ---------------------------------------------------------------------- 题外话 ----------------------------------------------------------------------------------- */

也许你会发现,为什么会有两个一样的,例如DMA1表格里,【Stream0、Channel0】【Stream2、Channel0】对应的都是SPI3_RX

在网上问人后,对方是和我说,因为有两个DMA控制器,这部分后续有时间再研究

/* ------------------------------------------------------------------------------------------------------------------------------------------------------------------- */

 

【2】导入相关的库

因为本篇测试的是『存储器到外设』

先看看有没有所需外设的文件,例如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值