UART中的DMA数据处理过程

一、DMA简介

        DMA (Direct Memory Access) ,直接内存存储器,使用它在做数据传输时能够大大减轻CPU的负担。

        DMA,全称 Direct Memory Access,即直接存储器访问。用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。DMA传输无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。

二、主要特性整理

        (1)存储器和存储器间的传输。

        (2)外设和存储器、存储器和外设之间的传输。

        (3)有12个独立的可配置的通道(请求):DMA1有7个通道,DMA2有5个通道。

        (4)可编程的数据传输数目:最大为65535。

        (5)源和目标地址必须按数据传输宽度对齐。

        (6)在同一个DMA模块上,多个请求间的优先权可以通过软件编程设置(共有四级:很高、高、中等和低),优先权设置相等时由硬件决定(小的优先于大的)。

        (7)支持循环的缓冲器管理每个通道都有3个事件标志(DMA半传输、DMA传输完成和DMA传输出错),这3个事件标志逻辑或成为一个单独的中断请求。

        (8)每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置。

        (9)闪存、SRAM、外设的SRAM、APB1、APB2和AHB外设均可作为访问的源和目标。

三、DMA处理过程

        (1)在发生一个事件后,外设向DMA控制器发送一个请求信号。

        (2)DMA控制器根据通道的优先权处理请求。

        (3)当DMA控制器开始访问发出请求的外设时,DMA控制器立即发送给外设一个应答信号。

        (4)当从DMA控制器得到应答信号时,外设立即释放它的请求。一旦外设释放了这个请求,DMA控制器同时撤销应答信号。

        (5)如果有更多的请求时,外设可以启动下一个周期。

四、在STM32中DMA有norma和circular两种模式,每种模式在数据进行传输时需要告知传输数据的大小

        1、Normal mode:
        DMA 开始传输数据,当它传输完成后就会停止。下一次开始需要手动处理。

        2、Circular mode:
        DMA从传输开始,当它传输完成后会自动按照相同配置重新传输,周而复始直至被控制停止或传输发生错误。

五、DMA的普通模式和循环模式

        DMA传输模式有两种,普通模式和循环模式。相关寄存器有DMA_CCRx的CIRC位和DMA_CNDTRx。

        当工作在普通模式,DMA搬运了设定长度的数据后,CNDTR清0,会产生中断标志,然后DMA就停止工作了,如果再有数据也不接收了。需关断 DMA 使能后再重新配置后才能继续传输。

        当工作在循环模式,DMA搬运了设定长度的数据后,CNDTR清0,会产生中断标志,如果再有数据,DMA会循环保存到内存中,覆盖前面的数据。在CNDTR=0时DMA会自动装载初始化时的配置,CNDTR重置为初始值。

        DMA传输完成关闭是需要:1、先关闭外设;2、再关闭DMA模块,否则有一定概率导致DMA再次使用时异常。异常表现为DMA不运作。

 关于在BP10上的DMA的结构体讲解:

DMA的工作(发送和接收)

1、在DMA接收,定义DMA接收的外设ID和DMA的各种参数

2、在DMA发送,定义DMA发送的外设ID和DMA的各种参数

3、了解DMA的结构体

第一个是DMA通道的传输方向(DMA CHANNEL DIR PERI2MEM意味着DMA将从外设读取数据到内存)(DMA_CHANNEL_DIR_MEM2PERI意味着DMA将内存读取数据到外设)(DMA_CHANNEL_DIR_MEM2MEM意味着DMA将一个内存模块数据读取到另一个内存模块)

第二个是DMA传输模式,分为(DMA_BLOCK_MODE 块传输和DMA_CIRCULAR_MODE循环传输)

第三个是循环模式下的一个阈值或者长度

第四个是DMA源的数据宽度

第五个是DMA目的地数据宽度

第六个是 DMA 操作中源地址的自动增量模式,当设置为 AINCR 时,源地址将会在每次传输后自动增加,以指向下一个数据。这是为了方便从源位置连续地读取数据。

第七个是DMA 操作中目的地地址的自动增量模式,当设置为 AINCR 时,目的地地址将会在每次传输后自动增加,以指向下一个数据。这是为了方便从目的地位置连续地读取数据。

第八个是源地址

第九个是目的地地址

第十个是数据缓存长度Bufferlen

DMA的外设ID值表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1421732.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

从3D模型到渲染:完整的流程指南---模大狮模型网

在当今数字化时代,3D模型和渲染技术在各个领域中扮演着至关重要的角色,从影视制作到建筑设计,从游戏开发到工程模拟。了解如何将3D模型转化为逼真的渲染图像是数字创意领域从业者的关键技能之一。本文将为您介绍从3D模型到渲染的完整流程&…

【机器学习】人力资源管理的新篇章:AI驱动的高效与智能化

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

R语言数据分析案例-巴西固体燃料排放量预测与分析

1 背景 自18世纪中叶以来,由于快速城市化、人口增长和技术发展,导致一氧化二氮(N2O)、 甲烷(CH4)和二氧化碳(CO 2)等温室气体浓度急剧上升,引发了全球变暖、海平面上 升…

健康行业CRM软件-保健行业CRM解决方案示例

Z公司面临客户信息管理和销售效率的挑战,提出使用ZohoCRM解决方案。ZohoCRM可集中管理客户信息、自动化销售流程并优化客户关系,提供数据分析和市场趋势洞察,帮助Z公司提升销售效率和客户满意度。 一、健康公司痛点 Z公司作为一家专注于特膳…

视频推拉流EasyDSS视频直播点播平台如何优先展示正在直播的直播间?

视频推拉流EasyDSS视频直播点播平台集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体,可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务,在应用场景上,平台可以运用在互联网教育、在线课堂、游戏…

美国加州正测试ChatGPT等生成式AI,在4大部门应用

5月11日,美联社消息,美国加州政府正在测试ChatGPT等生成式AI,应用在税收和收费管理部、交通部、公共卫生部以及卫生与公众服务部4大部门。 测试时间6个月,为其提供技术支持的一共有5家公司,分别是OpenAI、Anthropic、…

韵搜坊(全栈)-- 前后端初始化

文章目录 前端初始化后端初始化 前端初始化 使用ant design of vue 组件库 官网快速上手:https://www.antdv.com/docs/vue/getting-started-cn 安装脚手架工具 进入cmd $ npm install -g vue/cli # OR $ yarn global add vue/cli创建一个项目 $ vue create ant…

Wifi——Wifi断连问题分析

一、iperf测试wifi断连 1.信号强度差 -36表示非常强;但网络质量依然非常差。 可以分析出四个原因: 2.与throughput相关 为什么同一个网络的信号强度估算会有一定差异?! 下图是上述log的一些信息:

uni-app条件编译和网页打包

在项目打包时,存在打包微信小程序、h5网页端或者其他平台小程序的情况,但是有些api是某些小程序中特有的,例如wx.requestPayment(),微信支付、授权等功能。 这时,若不做条件编译,打包成非微信小程序的项目…

pci设备枚举流程

概念 PCI设备:遵循PCI规范,工作在PCI局部总线环境下的设备。PCI局部总线规范指出,每个PCI设备可以包含最多8个PCI功能,每个PCI功能是一个逻辑设备 PCI桥设备:由于电子负载限制,每条PCI总线上可以挂载的设…

什么是.faust勒索病毒?应该如何防御?

faust勒索病毒详细介绍 faust勒索病毒是一种新型的勒索软件,最早出现在2018年。该病毒通过加密计算机系统中的文件并要求支付赎金来解锁文件,从而获取经济利益。与传统的勒索软件相比,faust勒索病毒采用了更加先进的加密算法和隐藏技术&#…

国标GB28181协议EasyGBS视频监控云平台端口正常却不能播放,是什么原因?

国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频…

IDEA buid一直不能完成,无法运行

问题如下所示: 解决方案 output 路径不对,正确路径:项目目录\target\classes

难以重现的 Bug如何处理

对很多测试人员(尤其是对新手来说)在工作过程中最不愿遇到的一件事情就是:在测试过 程中发现了一个问题,觉得是 bug,再试的时候又正常了。 碰到这样的事情,职业素养和测试人员长期养成的死磕的习性会让她…

【数据分析面试】42.用户流失预测模型搭建(资料数据分享)

题目 保持高的客户留存率可以稳定和提到企业的收入。因此,预测和防止客户流失是在业务中常见的一项数据分析任务。这次分享的数据集包括了电信行业、银行、人力资源和电商行业,涵盖了不同业务背景下的流失预测数据。 后台回复暗号(在本文末…

Nios-II编程

文章目录 一硬件部分设计1Qsys2Quartus 二软件1Nios-II Eclipse 三运行项目及效果1配置 FPGA 一硬件部分设计 1Qsys 1创建一个项目 2点击 Tools 下拉菜单下的 Platform Designer 工具,启动 Platform Designer 后,点击 File-save,在文件名中…

用命令运行Java程序

1、创建一个类 2、在类文件路径下执行命令(编译),生成.class javac 类名.java 3、运行.class文件 java 类名

使用 Docker 部署 WebTop 运行 Linux 系统

1)项目介绍 GitHub:https://github.com/linuxserver/docker-webtop WebTop 它是一个基于 Linux ( Ubuntu 和 Alpine 两种版本)的轻量级容器,具有在浏览器中运行的完整桌面环境,具有基本的窗口管理器、像素…

持续集成-Git

重要步骤命令 git init (初始化一个仓库) git add [文件名] (添加新的文件) git commit -m [关于本次提交的相关说明] (提交) git status (查看文件状态) git diff (如果文件改变,比较两个文件内容) git add[文件名] || git commit -a -m [关于本次提交的相关说…

天诚AIoT无线联网智能门锁即将亮相成都安博会、永康门博会

5月上旬,对于江苏新巢天诚智能技术有限公司(以下简称“天诚”)而言,依旧忙得如火如荼。随着各地人才公寓、公租房、智慧校园类智慧通行与租住新项目的实施、落地与服务,天诚也不忘初心,携全新升级的AIoT全场…