1
摘要
本篇应用笔记主要介绍如何使用华大单片机 HC32F460 系列MCU的 DMA 模块传输数据。
2
DMA 简介
什么是 DMA?
DMA(直接内存访问控制器)功能块可以不通过 CPU 高速传输数据。使用 DMA 能提高系统性能。
DMA 的重要特征?
DMA 独立于 CPU 总线的总线,所以即便是在使用 CPU 总线的时候, DMA 也可进行传输操作。
3
华大单片机HC32F460 系列MCU的 DMA
3.1
简介
华大单片机HC32F460 系列 MCU 内部集成 DMAC 模块,能够在 CPU 不参与的情况下实现存储器之间,存储器和外围功能模块之间以及外围功能模块之间的数据交换。
3.2
说明
DMAC 总线独立于 CPU 总线,按照 AMBA AHB-Lite 总线协议传输。
拥有 2 个 DMA 控制单元,共 8 个独立通道,可以独立操作不同的 DMA 传输功能。两个控制单元受不同处理器控制,可以同时独立使用。每个通道的启动资源通过独立的触发源选择寄存器配置。每次请求传输一个数据块,数据块最小为 1 个数据,最多为 1024 个数据。每个数据的宽度可配置为 8bit,16bit,32bit。源地址和目标地址可以独立配置为固定、自增、自减、循环或偏移量的跳转。可产生 3 种中断:块传输完成中断,传输完成中断,传输错误中断。每种中断都可配置是否屏蔽。其中块传输完成,传输完成可作为事件输出,作为其他外围模块的触发源。支持连锁传输功能,可实现一次请求传输多个数据块。支持外部事件触发通道重置。不使用时可设置进入模块停止状态以降低功耗。
3.2.1 寄存器介绍

  1. DMA_EN:DMA 使能寄存器,使能或关闭 DMA 模块。
  2. DMA_CHEN:通道使能寄存器,使能或关闭 DMA 通道,bit0~3 分别对应一个通道。
  3. DMA_INSTAT0~1:中断状态寄存器(传输请求溢出错误中断、传输错误中断、块传输完成中断、传输完成中断)。
  4. DMA_INTMASK0~1:中断屏蔽寄存器,配置各中断是否屏蔽。
  5. DMA_INTCLR0~1:中断复位寄存器,清空中断状态标志位。
  6. DMA_RCFGCTL:通道重置寄存器,配置 DMA 重置后的相关参数,包括:剩余传输次数计数方式、目标/源地址重置方式、通道选择、链式传输等。
  7. DMA_CHSTAT:通道状态观测寄存器。
  8. DMA_TRGSEL0~3:触发源选择寄存器,配置各通道启动传输的触发源,配置前需打开PWR_FCG0 寄存器的 AOS 位。
  9. DMA_TRGSELRC:通道重置触发源选择寄存器,配置启动通道重置的触发源。
  10. DMA_SAR0~3:源地址寄存器,配置传输源地址。
  11. DMA_DAR0~3:目标地址寄存器,配置传输目标地址。
  12. DMA_DTCTL0~3:数据控制寄存器,配置传输次数和数据块大小。
  13. DMA_RPT0~3:重复区域大小寄存器,配置源地址和目标地址重复区域大小。
  14. DMA_RPTBB0~3: 重复区域大小寄存器 B,配置源地址和目标地址重复区域大小。
  15. DMA_SNSEQCTL0~3: 源设备不连续地址传输控制寄存器,配置源地址跳转的地址偏移和源地址跳转的数据量
  16. DMA_SNSEQCTLB0~3: 源设备不连续地址传输控制寄存器 B,配置源不连续区域地址间距和源地址跳转的数据量
  17. DMA_DNSEQCTL0~3: 目标设备不连续地址传输控制寄存器,配置目标地址跳转的地址偏移量和数据量
  18. DMA_DNSEQCTLB0~3: 目标设备不连续地址传输控制寄存器 B,配置目标不连续区域地址间距和目标地址跳转数据量
  19. DMA_LLP0~3: 链指针寄存器,配置链指针
  20. DMA_CHxCTL(x=0~3):通道控制寄存器
  21. DMA_MONSARx , DMA_MONDARx , DMA_MONDTCTLx , DMA_MONRPTx ,DMA_MONSNSEQCTLx,DMA_MONDNSEQCTLx:通道监视寄存器,DMA 每完成一次传输请求后更新
    3.2.2 工作流程介绍
    本章节主要介绍 DMA 传输模式的设置和运行流程。
  22. 重载传输
    该传输可以配置源地址、目标地址在增加/减少至寄存器配置的重复区域大小时重新返回至最初的地址设定值。重复区域的大小由寄存器 DMA_RPT DMA_CHxCTL.HSIZE 的设定值决定。
  23. 不连续传输
    该传输可以传输数量的数据后,地址将跳过偏移量,当地址重载与不连续跳转的条件同时满足时,执行地址重载。
  24. 连锁传输
    该传输当一个描述符的最后传输结束时,LLP 的下一个描述符将被从存储器中载入通道配置寄存器。等待下一次传输请求输入,开始新描述符的一次传输。或者根据寄存器 DMA_CHxCTLx.LLPRUN 的设置,在载入新描述符后直接开始一次传输。
  25. 通道重置传输
    通道重置功能,是指通过外围电路的事件请求来修改通道内部状态寄存器,重新配置下一次数据的传输方式。
  26. 传输提前终止
    传输过程中通道使能寄存器 DMA_CHEN.CHENx 保持有效,非连锁传输时,数据控制寄存器 DMA_DTCTLx 设定的传输次数完成后自动置为无效,连锁传输时,最后传输的传输次数完成后自动置为无效。传输过程中如果软件写 DMA_CHEN.CHENx 为 0,则 DMA将在完成当次数据读写后终止传输。
    4
    样例代码
    4.1
    代码介绍
    用户可根据上述的工作流程编写自己的代码来学习验证该模块,也可以直接通过华大半导体的网站下载到设备驱动库(Device Driver Library, DDL)的样例代码并使用其中的 DMA 的样例进行验证。
    4.2 代码运行
    用户可以通过华大半导体的网站下载到 HC32F460 的 DDL 的样例代码
    (dmac_reload_address),并配合评估用板(EV-HC32F460-LQFP100-050-V1.1)运行相关代码学习使用 DMA 模块。以下部分主要介绍如何在评估板上运行 DMA 样例代码并观察结果:
    - 确认安装正确的 IAR EWARM v7.7 工具(请从 IAR 官方网站下载相应的安装包,并参考用户手册进行安装)。
    - 从华大半导体网站下载 HC32F460 DDL 代码。

华大单片机HC32F460 系列MCU相关推荐

  1. 手把手教程1: 华大单片机HC32F460如何新建工程(ddl库版本)

    华大单片机HC32F460如何新建工程(ddl库版本) 目录 华大单片机HC32F460如何新建工程(ddl库版本) 准备工作 正式工作 开发板请点击:  https://item.taobao.co ...

  2. 华大单片机 HC32F460 串口调试

    华大单片机 HC32F460 串口调试 吐槽下,华大官方例程写到太复杂了,不熟练的一时摸不上手. #include "drvs.h" /********************** ...

  3. 华大单片机 HC32F460 驱动BM8563ESA RTC芯片

    前言 因华大单片机没有单独VBAT管脚,无法使用,如果用单片机自带的RTC模块,系统断电后时间无法准确,需要重新设置,影响用户体验,说以系统加入单独的RTC芯片. RTC时钟电路 单片机管脚定义 RT ...

  4. 国产(华大)单片机 hc32f460入门

    最近闹芯片慌,黄牛各种炒作,芯片价格居高不下,暂时选择国产方案替代. 本次选用了华大 m4内核方案, hc32f460芯片,型号很多,64pin的 keta(该版本实际有货),100脚的petb(实际 ...

  5. 32位ARM®Cortex®-M0+内核单片机 XL32F003系列MCU

    XL32F003系列微控制器采用高性能的32位ARM®Cortex®-M0+内核,宽电压工作范围的MCU.嵌入高达64 Kbytes flash和8 Kbytes SRAM存储器,最高工作频率32 M ...

  6. 华大单片机 HC32F460 驱动74HC595D

    在我刚学单片机时总是感觉很难理解,今天分析下74HC595串口转并口 IO扩展芯片,一般我们在IO口不够用的情况下才能祭出此神器. 那么我们如何驱动此神器呢? "念咒:天灵灵地灵灵,Q1开& ...

  7. 华大单片机 HC32F460 调试管脚 SWCLK SWDIO PA15 PB3 PB4引脚复用问题

    耶稣说:施比受更为有福 直接上图 第一次LCD显示屏没有用PA15 ,改版把它放到PA15上,发现显示屏不显示了.管脚初始化以后变成高组态模式了. 程序 void LCD_GPIO_Init(void ...

  8. 华大单片机HC32L130X

    目录 华大单片机HCL13X系列 1.简单介绍下华大单片机 2.资料获取: 3.学习思路: 4.客观意见: 5.预告 华大单片机HCL13X系列 1.简单介绍下华大单片机 第一部分都是我吐槽的地方,可 ...

  9. 应广单片机系列MCU

    触摸芯片 标准功能-触摸芯片,功能固化,对大批量采购需求,可定制开发. 产品名称 封装形式 工作电压 工作功耗 待机功耗 触控按键 输出通道 输出形态 触控技术 调试软件 功能描述 CheckSUM ...

最新文章

  1. c语言strcpy错误,C语言中的Printf和Strcpy错误。
  2. python中的out of loop_TclError: out of stack space (infinite loop?)
  3. ctfmon是什么启动项_启动项里ctfmon是什么意思,干什么用的??
  4. stata导入数据问题
  5. [CSS3]Clearfix
  6. 计算机组成cpu性能公式,2020考研计算机组成原理知识点:计算机性能指标
  7. OpenGL超级宝典(第7版)笔记12 前三章回顾 OpenGL扩展简介
  8. arch linux安装和dwm窗口管理器安装
  9. 硬件笔记1:80508550三极管对管驱动电机电路(已经实测可用)
  10. 如何解决SQL2008r2 登录不上的问题
  11. Javaweb安全——JSP Webshell
  12. ElasticSearch倒排索引原理 数据的写入与查询过程
  13. 高通快速调试命令集合---持续更新
  14. 复试机试【XN2018】
  15. 用计算机弹c哩c哩数字,C哩C哩 - 在线打字测试(dazi.kukuw.com)
  16. 《五种时间:重建人生秩序》读书笔记
  17. Win flex-bison 的简单使用
  18. Python Request POST 上传文件 Multipart/form-data
  19. Win7 wifi热点设置
  20. oppo手机邮件显示无法连接服务器,(oppo手机邮箱设置方法.doc

热门文章

  1. camunda modeler 汉化方法
  2. 自考 软件工程专业 07026 网络编程应用设计 总结
  3. uni-app引入海康威视h5player实现视频监控的播放
  4. 打开方式中选择默认方式无反映_「全民标签」论享声A1的APP打开方式以及与树莓派的使用对比...
  5. 计算机主板就一亮关机了,华南x79主板关机了鼠标还亮 为什么主板关机了鼠标还是亮呢?...
  6. 医疗器械计算机系统审评准则,医疗器械注册审评管理系统
  7. Wicket + Spring集成示例
  8. Android七大布局的介绍
  9. 如何使用命令在navicat中操作
  10. Matlab帮助文档网址