• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32的DMA如何启用?DMA又是如何与外设建立联系的?

捷波 2018-07-25 浏览量:791
STM32的DMA如何启用?DMA又是如何与外设建立联系的?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 不同外设都有个启动DMA的函数,如果是M2M的话也有单独的函数

    比如串口启动DMA接收

    HAL_UART_Receive_DMA
    如何建立联系的见下图:
    微信截图_20180725154411.png
    微信截图_20180725154502.png
    DMA 控制器执行直接存储器传输:因为采用 AHB 主总线,它可以控制 AHB 总线矩阵来启
    AHB 事务。
    它可以执行下列事务:
    外设到存储器的传输
    存储器到外设的传输
    存储器到存储器的传输
    DMA 控制器提供两个 AHB 主端口: AHB 存储器端口(用于连接存储器)和 AHB 外设端口
    (用于连接外设)。但是,要执行存储器到存储器的传输, AHB 外设端口必须也能访问存
    储器。
    AHB 从端口用于对 DMA 控制器进行编程(它仅支持 32 位访问)。

    以上抄自《STM32F4XX参考手册》。大概就是这么回事

    • 发布于 2018-07-25
    • 举报
    • 评论 0
    • 2
    • 0

其他答案 数量:5
  • 对DMA进行配置后,有个使能DMA通道的函数DMA_Cmd(DMA_Channel1ENABLE)就能开启DMA通道。

    不同外设对应的DMA通道不一样,要看下手册上的对照表。

    • 发布于2018-07-25
    • 举报
    • 评论 0
    • 0
    • 0

  • DMA,对于不同的外设不一样,但是总体就是,把数据放到DMA的输入端,在在DMA的输出端接收数据。这个你不能这么笼统的问。
    • 发布于2018-07-25
    • 举报
    • 评论 0
    • 0
    • 0

  • STM32的DMA可以直接通过寄存器或库函数配置的方式直接打开。DMA其实是内存中的一条容器/通道,外设和CPU都可以通过内存地址进行访问,数据也可以存放在这条通道中以作共享、

    • 发布于2018-07-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 启用DMA只需要初始化一些配置就行了,DMA通过特定的通道直接采集外设的数据
    • 发布于2018-07-29
    • 举报
    • 评论 0
    • 0
    • 0

  • DMA内部是有总线进行连接的,会把目标地址的数据通过总线传输到指定位置,所以只要初始化配置就好了
    • 发布于2018-08-14
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32的DMA如何启用?DMA又是如何与外设建立联系的?