当前位置:2019全年资料内部公开 > 全双工传输 >

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

  首页编程笔记其他【STM32】使用DMA+SPI传输数据

  本文章向大家介绍【STM32】使用DMA+SPI传输数据,主要包括【STM32】使用DMA+SPI传输数据使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

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

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

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

  先看看有没有所需外设的文件,例如stm32f4xx_usart.c,没有的话参考下面的图片来导入,以本篇来说,需要导入的外设是stm32f4xx_spi.c

  导入完成后,我们先打开stm32f4xx_dma.h这个头文件,可以看到一些设定的函数,例如初始化之类的

  基本上要设置时,所要调用的函数就在这里了,而下方红框是中断和标志相关的函数

  因为本篇使用SPI,但由于我懒得改图了,只要找到stm32f4xx_SPI.h这个头文件

  (3)在你需要执行传送数据的地方,执行数据的传送,这里是直接写在while(1)里面了

  这部分就不详解了,SPI的知识网上有很多介绍的,例如什么是CPOL,什么又是CPHA,这些都是重点

  (1)DMA数据流,参照文章一开始的表格,这里使用的是SPI3_TX,对应的是DMA1的数据流5(DMA1_Stream5)

  (2)通道,参照文章一开始的表格,这里使用的是SPI3_TX,对应的是DMA1的数据流5的通道0(DMA_Channel_0)

  函数的内容差不多也就那样,都是一些初始化的设定,也就传输方式、优先级、单次传输还是循环之类的

  while(1)之前的两个初始化介绍完了,接下来就是while(1)内部的几个函数

  参数1:哪个DMA控制器的哪个数据流,这里是DMA1数据流5(DMA1_Stream5)

  参数1:哪个DMA控制器的哪个数据流,这里是DMA1数据流5(DMA1_Stream5)

  参数2:图片的1068行,说明了可以用0~7的数据流,我使用的是数据流5,所以要清除的也是数据流5(DMA_FLAG_TCIF5)

http://cheonaekim.com/quanshuanggongchuanshu/586.html
点击次数:??更新时间2019-07-30??【打印此页】??【关闭
  • Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有  
  • 点击这里给我发消息
在线交流 
客服咨询
【我们的专业】
【效果的保证】
【百度百科】
【因为有我】
【所以精彩】