【致敬未来的攻城狮计划】— 连续打卡第二十五天:RA2E1的 DTC传输模式

news2024/9/28 23:34:03

系列文章目录

        由于一些特殊原因:

系列文章链接:(其他系列文章,请点击链接,可以跳转到其他系列文章)

        24.RA2E1的 DMAC——数据传输 


文章目录

系列文章目录

前言

一、DTC是什么?

二、DTC内部寄存器

三、DTC 模块模式

四、正常传输模式

五、重复传输模式

六、块传输模式

七、DMAC和DTC关键特性对比

八、中断

风华正茂



前言

        DTC(Data Transfer Controller)为数据传输控制器,用于在被中断请求激活时传输数据。 DTC 也可以在不占用 CPU 的情况下将数据传输,它的功能与 DMAC 的功能其实是相似的。


一、DTC是什么?


二、DTC内部寄存器

        MRA、MRB、SAR、DAR、CRA 和 CRB 这些都是属于 DTC 内部的寄存器,它们是无法通过 CPU 直接访问的。 这些 DTC 内部寄存器中设置的值作为传输信息放置在 SRAM 区域中。 当生成激活请求时,DTC 从 SRAM 区域读取传输信息,并将其设置在其内部寄存器中。 数据传输结束后,内部寄存器内容作为传输信息写回 SRAM 区域。

三、DTC 模块模式

DTC 模块支持三种操作模式,相对于 DMAC,少了重复-块传输模式。

  • 正常模式: 在正常模式下,DTC每次接收到中断触发时都会传输单个数据单元。数据单元可以是1、2、4字节。 传输的长度(length)可以设置为[0, 65535]。当长度设置为0时,DTC将执行65536传输,而不是0。 在每次传输之后,源地址和目的地址可以单独设置为固定、递增或递减。 每次传输后,16位计数器递减。 当计数器达到 0 时,DTC传输将不再会被中断源触发,CPU可以被中断以通知所有传输已完成。

  • 重复模式: 重复模式的工作方式与正常模式相同,但长度(length)限制为范围 [1, 256] 内的整数。 当传输计数器达到 0 时,计数器被重置为其配置值(length), 重复区域(源或目的地址)被重置为其起始地址,并且传输仍将会被中断触发。

  • 块模式: 在块模式下,每个中断传输的数据单元量可以设置为范围 [1, 256] 内的整数。 还可以将要传输的块数量(num_blocks)配置为16位数字, 即可以设置为[0, 65535]。当长度设置为0时,DTC将执行65536传输,而不是0。 每次块传输后,重复区域(源或目的地址)将重置为原始地址,而另一个地址将递增或递减到下一个块。

四、正常传输模式

        正常传输模式(Normal Transfer Mode)允许在单个激活源上进行1字节(8位)、1半字(16位)、1字(32位)数据传输。 传输计数可以设置为 1 到 65536 (0x10000)。 传送源地址和目的地址也可以独立设置为递增、递减或固定。 该模式允许在指定的计数传输结束时生成对CPU的中断请求。

五、重复传输模式

        重复传输模式(Repeat Transfer Mode)允许在单个激活源上进行1字节(8位)、1半字(16位)或1字(32位)数据传输。 重复区域的传输源或传输目的地必须在MRB.DTS位中指定。 传输计数可以设置为从1到256。 当指定的传输计数完成时,恢复重复区域中指定的地址寄存器的初始值,恢复传输计数器的初始值,并重复传输。 另一地址寄存器连续递增或递减或保持不变。 在重复传输模式下,当传输计数器CRAL递减到0x00时,CRAL值更新为CRAH寄存器中设置的值。 因此,传输计数器不会清0,当MRB.DISEL位设置为0时,将禁用对CPU的中断请求。 当指定的数据传输完成时,会生成对CPU的中断请求。

六、块传输模式

        块传输模式(Block Transfer Mode)允许在单个激活源上进行单块数据传输。 数据块区域的传输源或传输目的地必须在MRB.DTS位中指定。 块大小可以设置为1至256字节、1至256半字(2至512字节)或1至256字(4至1024字节)。 当指定块的传输完成时,恢复块区域中指定的块大小计数器CRAL和地址寄存器 (当MRB.DTS=1时为SAR寄存器或当DTS=0时为DAR寄存器)的初始值。 另一地址寄存器连续递增或递减或保持不变。 传输计数(块计数)可以设置为从 1 到 65536。 该模式允许在指定计数块传输结束时生成对CPU的中断请求。

七、DMAC和DTC关键特性对比

        FSP 库里边的传输 API 可以由 DMAC 或者 DTC 实现, 因此理论上来说我们可以在 DMAC 和 DTC 之间切换使用。 但是 DMAC 和 DTC 还是有一些不同的,因此在它们之间进行选择时,请考虑以下因素:

DMAC

DTC

通道数

  • 8通道或更少

  • 每个中断一个实例

重复模式

  • 可配置重复次数

  • 最大重复大小为 1024 x 4 字节

  • 一直重复

  • 最大重复大小为 256 x 4 字节

块模式

  • 最大块大小为 1024 x 4 字节

  • 最大块大小为 256 x 4 字节

链传输模式

  • 不支持

  • 支持

软件触发

  • 在不使用软件ELC事件时支持软件触发器

  • 支持 TRANSFER_START_MODE_SINGLE

    和 TRANSFER_START_MODE_REPEAT 模式

  • 必须使用软件ELC事件

偏移地址模式

  • 支持

  • 不支持

八、中断

中断

DTC 和 DMAC 的中断行为不同:

  • DTC 使用配置的 IELSR 事件 IRQ 作为中断源

  • 而每个 DMAC 通道都有自己的 IRQ

其他注意事项:

  • DTC 需要一定的 RAM。

  • DTC 将传输信息存储在RAM中,并在每次传输后写回RAM,而 DMAC 将所有传输信息存储在寄存器中。

  • 当为多个激活源配置传输时,DTC 必须在每次中断时从RAM获取传输信息。这可能会导致传输之间的延迟更高。

  • DTC 使用激活源的IRQ中断CPU。每个 DMAC 通道都有自己的IRQ。

另外在传输信息的 transfer_info_t::irq 属性的设置上,根据所选模式的不同,其具体行为也略有不同。

正常模式 (Normal Mode)

中断模式

DMAC

DTC

TRANSFER_IRQ_EACH

N/A

每次传输后中断

TRANSFER_IRQ_END

完成最后一次传输后中断

完成最后一次传输后中断

重复模式 (Repeat Mode)

中断模式

DMAC

DTC

TRANSFER_IRQ_EACH

每次传输后中断

每次传输后中断

TRANSFER_IRQ_END

完成最后一次传输后中断

每次传输后中断

块模式 (Block Mode)

中断模式

DMAC

DTC

TRANSFER_IRQ_EACH

每次传输后中断

每次传输后中断

TRANSFER_IRQ_END

完成最后一次传输后中断

完成最后一次传输后中断

重复-块模式 (Repeat-block Mode)

中断模式

DMAC

DTC

TRANSFER_IRQ_EACH

N/A

N/A

TRANSFER_IRQ_END

完成最后一次传输后中断

N/A


风华正茂

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

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

相关文章

Springboot——集成Elastic Job实现任务调度

目录 1.任务调度 2.Elastic Job 3.springboot集成Elastic Job 1.任务调度 什么是任务调度? 任务调度就是指系统为了自动地完成特定任务,在指定的时刻去执行任务的过程,其目的是为了让系统自动且精确地完成任务从而解放人力资源。 如&am…

WX小程序 - 1

视图层:WXML,WXSS 逻辑层:JS 响应数据绑定,事件绑定 勾选这个其实就是解决跨域问题(仅限本地开发阶段)。 上线需要去合法域名添加。 app.json 文件创建和删除,保持一致,否则报错…

二叉树的层序遍历思想模板

分为两种&#xff1a; 1.第一种是直接将遍历的数据保存到列表里&#xff1b; 2.第二种是将每一层的数据以列表形式保存在列表&#xff1b;&#xff08;今天要讲述的内容&#xff09; 代码如下&#xff0c;思想在后 class Solution {public List<List<Integer>> …

全新 – Amazon EC2 R6a 实例由第三代 AMD EPYC 处理器提供支持,适用于内存密集型工作负载

我们在 Amazon re:Invent 2021 上推出了通用型 Amazon EC2 M6a 实例&#xff0c;并于今年 2 月推出了计算密集型 C6a 实例。这些实例由运行频率高达 3.6 GHz 的第三代 AMD EPYC 处理器提供支持&#xff0c;与上一代实例相比&#xff0c;性价比提高多达 35%。 如今&#xff0c;…

不断联的从Google Drive下载超大文件

不断联的从Google Drive下载超大文件 最近在研究OWOD代码&#xff0c;需要从google drive 下载超大文件&#xff0c;普通方式下载&#xff0c;首先得有个上外网的工具&#xff0c;其次下载过程中总是会断开&#xff0c;所以看了一些博客&#xff0c;总结如下&#xff1a; 安…

基于TINY4412的Andorid开发-------简单的LED灯控制【转】

基于TINY4412的Andorid开发-------简单的LED灯控制 阅读目录(Content) 一、编写驱动程序二、编写代码测试驱动程序三、编写HAL代码四、编写Framework代码五、编写JNI代码六、编写App 参考资料&#xff1a; 《Andriod系统源代码情景分析》 《嵌入式Linux系统开发完全手册_基…

实时语义分割PIDNet算法TensorRT转换

[PIDNet](GitHub - XuJiacong/PIDNet: This is the official repository for our recent work: PIDNet) 是22年新开源的实时语义分割算法&#xff0c;和DDRNet一样具有不错的性能 网络结构如下&#xff1a; 网络分为三个分支&#xff0c;如上图&#xff0c;整体结构和DDRNet比…

shell 脚本中的函数

目录 一. shell 函数作用&#xff1a;二. shell 函数的定义格式&#xff1a;三.函数返回值&#xff1a;四.函数传参&#xff1a;扩展&#xff1a; 六. 函数变量的作用范围:七 . 递归7.1阶乘 八. 函数库 一. shell 函数作用&#xff1a; 使用函数可以避免代码的重复 使用函数可以…

OJ刷题 第十五篇(递推较多,奥赛篇)

31005 - 昆虫繁殖&#xff08;难度非常大&#xff0c;信息奥赛题&#xff09; 时间限制 : 1 秒 内存限制 : 128 MB 科学家在热带森林中发现了一种特殊的昆虫&#xff0c;这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵&#xff0c;每对卵要过两个月长成成虫。假设每个成虫…

从零开始 Spring Boot 27:IoC

从零开始 Spring Boot 27&#xff1a;IoC 自从开始学习和从事Spring Boot开发以来&#xff0c;一个一直让我很迷惑的问题是IoC和Bean到底是什么东西。这个问题一直到我翻阅完Spring开发文档Core Technologies (spring.io)后才真正得到解惑。 虽然中文互联网上关于IoC的文章很多…

基于AT89C51单片机的电子琴设计与仿真

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87765092?spm1001.2014.3001.5503 源码获取 运用单片机&#xff0c;将音乐的大部分音符与相应按键相匹配&#xff0c;让音乐爱好者利用单片机也可以进行演奏。 基…

SAP EWM /SCWM/CHM_LOG - 显示及分析检查日志

很多公司上了EWM系统后会在运行一段时间之后出现一些系统数据异常情况&#xff0c;问题大致分为以下一些情况&#xff1a; 序号异常情况1 库存调整过账后可用数量的数据不正确2 错误地传输原产国 (2)3 HU 在可用库存中&#xff0c;即使不允许 HU4 非 AQUA 级别创建仓库任务后可…

TCP通讯(三次握手、四次挥手;滑动窗口;TCP状态转换;端口复用;TCP心跳检测机制)

前言&#xff1a;建议看着图片&#xff0c;根据文字描述走一遍TCP通讯过程&#xff0c;加深理解。 目录 TCP通信时序&#xff1a; 1&#xff09;建立连接&#xff08;三次握手&#xff09;的过程&#xff1a; 2&#xff09;数据传输的过程&#xff1a; 3&#xff09;关闭连…

智能优化算法:斑马优化算法-附代码

智能优化算法&#xff1a;斑马优化算法 文章目录 智能优化算法&#xff1a;斑马优化算法1.斑马优化算法1.1 初始化1.2 阶段一&#xff1a;觅食行为1.3 阶段二&#xff1a;针对捕食者的防御策略 2.实验结果3.参考文献4.Matlab 摘要&#xff1a;斑马优化算法&#xff08;Zebra Op…

协同设计有什么优势?都有哪些协同设计软件

设计师创作既有视觉吸引力又实用的作品需要很多时间。对于某些项目&#xff0c;第一次可能会顺利验收&#xff0c;但事实上&#xff0c;设计和修改总是伴随着。 如何有效地修改和促进项目的实施&#xff1f;答案很简单&#xff1a;协作设计。本文将带您深入学习协作设计的相关…

Spring01-Spring简介、IOC简介及入门、IOC详解、bean讲解、依赖注入、配置文件模块化、实现CRUD

Spring简介 一、Spring 是什么 Spring 是一个分层的 Java SE/EE full-stack (一站式) 轻量级开源框架 以 IOC &#xff08;Inverse Of Control:反转控制) 和 AOP &#xff08;Aspect Oriented Programming:面向切面编程) 为核心。 在 Java三层架构中 分别提供了响应技术 分…

docker php安装redis扩展

有这么一个情况&#xff0c;我在docker中&#xff0c;安装了镜像&#xff0c;也启动了容器&#xff0c;容器有&#xff1a;nginx、mysql、redis、php 是一个基本的开发环境 容器启动成功&#xff0c;我们先连接一下&#xff0c;看看是否正常。 先保证这些都ok&#xff0c;我们…

【Spring框架一】——Spring框架简介

系列文章目录 Spring框架简介 系列文章目录前言一、什么是Spring框架&#xff1f;二、Spring框架的优势1.简化开发流程&#xff1a;Spring提供了许多现成的功能&#xff0c;可以使得开发人员在构建应用程序时减少编写重复代码的工作。2.提高可维护性&#xff1a;Spring框架采用…

chatgpt搜索脚本

安装地址 https://greasyfork.org/zh-CN/scripts/459997 注意事项 &#xff01;&#xff01;注意&#xff1a;如果你在360相关浏览器上使用插件。360搜索将不会生效&#xff0c;因为已被浏览器禁用在so.com网址上使用。 &#xff01;&#xff01;尽量选择tampermonkey脚本管…

面试华为测试岗,收到offer后我却毫不犹豫拒绝了....

我大学学的是计算机专业&#xff0c;毕业的时候&#xff0c;对于找工作比较迷茫&#xff0c;也不知道当时怎么想的&#xff0c;一头就扎进了一家外包公司&#xff0c;一干就是2年。我想说的是&#xff0c;但凡有点机会&#xff0c;千万别去外包&#xff01; 在深思熟虑过后&am…