DMA直接存储器存取

news/2025/2/16 2:10:16/

目录

存储器映像

 寄存器

 DMA框图

 DMA基本结构

DMA请求映射

 数据宽度与对齐

​编辑

存储器到存储器 ​编辑

外设与存储器


来源b站江科大stm3入门教程


存储器映像

 寄存器

 DMA框图

AHB从设备(DMA自身的寄存器)连接在总线矩阵右侧的AHB总线上

所以DMA既是总线矩阵的主动单元,可以读写各种寄存器,也是AHB总线上的被动单元(CPU可以通过这条线路对DMA进行配置)

DMA请求用于硬件触发DMA数据转运

 DMA基本结构

 如果是存储器到存储器的转运,把其中一个存储器的地址放在外设站点,将Flash或SRAM的地址写入外设的起止地址。

传输计数器:总共转运多少次,每转运一次计数器自减

自动重装器:传输计数器是否恢复到初始的值:即单次模式还是循环模式

软件触发:连续不断的触发DMA,把传输计数器清零,所以不能和自动重装器的循环模式同时使用。

DMA转运三个条件:开关控制;传输计数器>0;有触发信号;

注意:写传输计数器时,必须先将DMA关闭

DMA请求映射

可以看到每个通道对应的外设请求信号

 数据宽度与对齐

小数据传到大的中去,高位补零,大的传到小的高位舍弃

存储器到存储器 

外设与存储器

 如果ADCA是单次模式,传输计数器可以不自动重装,如果是连续模式,可以使用自动重装。

配置为硬件触发 


http://www.ppmy.cn/news/73722.html

相关文章

你是不是在担心,ChatGPT写出的文字被其它AI识别?

文 / 高扬(微信公众号:量子论) 最近不少人问我一个道听途说的事情:听说已经有AI工具能够识别是不是ChatGPT写的文字了? 看来必要写篇文章,通过摆事实,为大家压压惊。 在赌场里,能抓老千的人一定…

Mysql 字符替换 REPLACE、SUBSTRING 、REGEXP_REPLACE

REPLACE 函数的语法 REPLACE(str, from_string, to_string) 其中,参数 str 是要进行替换操作的字符串,from_string 是要被替换的子字符串,to_string 是替换成的新字符串。 REPLACE 函数的使用案例 例如,我们有一个包含下面文本…

【数据库】游标及应用

概念 游标 cursor是对以前查询结果一条一条记录处理的机制。 查询select的结果是一个视图,也是一条条地从数据库/视图提取出来的,呈现在用户面前时是个二维关系表,用户无法直接再一条一条地处理。 例:要把第一个同学的姓名改为张三四,把三个同学的生日提前3天,把第四个…

WuThreat身份安全云-TVD每日漏洞情报-2023-05-16

漏洞名称:KEEPASS API 页面文件.SYS缺少加密 漏洞级别:低危 漏洞编号:CVE-2023-32784 相关涉及: 2.54 之前的 KeePass 2.x 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-12077 漏洞名称:Telegram 的 macOS 应用程序 绕过 TCC 漏洞级别:未定义…

计算机网络:计网体系结构

计网体系结构 1. 基本概念1.0 计算机网络的发展1.0.1 第一阶段1.0.2 第二阶段1.0.3 第三阶段 1.1 计算机网络的概念1.2 计算机网络的功能1.3 计算机网络的组成1.4 计算机网络的分类1.5 标准化工作及相关组织1.6 相关性能指标1.6.1 速率1.6.2 带宽1.6.3 吞吐量1.6.4 时延1.6.5 时…

上下文无关文法、句柄、正规文法、规范推导、文法二义性

目录 上下文无关文法 句柄 正规文法 规范推导 文法二义性 上下文无关文法 上下文无关文法(Context-Free Grammar,CFG)是一种形式语言,用于描述一类语言的语法结构。它由一组产生式规则组成,每个规则定义了如何将一…

论文阅读_音频表示_W2V-BERT

信息 number headings: auto, first-level 2, max 4, _.1.1 name_en: w2v-BERT: Combining Contrastive Learning and Masked Language Modeling for Self-Supervised Speech Pre-Training name_ch: W2V-BERT:结合对比学习和Mask语言建模进行自监督语音预训练 pape…

Linux——线程6

POSIX信号量 POSIX信号量和SystemV信号量作用相同,都是用于同步操作,达到无冲突的访问共享资源目的。 但POSIX可以用于 线程间同步。 初始化信号量 #include <semaphore.h> int sem_init(sem_t *sem, int pshared, unsigned int value); 参数: pshared:0表示线程间共享…