分享
基于STM32的DMA共性技术分析及应用.pdf
下载文档

ID:3076967

大小:666.03KB

页数:4页

格式:PDF

时间:2024-01-19

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于 STM32 DMA 共性 技术 分析 应用
第 卷第 期计算机应用与软件 年 月 基于 的 共性技术分析及应用奚圣鑫王宜怀李跃华(苏州大学计算机科学与技术学院江苏 苏州 )(南通大学信息科学与技术学院江苏 南通 )收稿日期:。国家自然科学基金项目();江苏高校优势学科建设工程资助项目()。奚圣鑫,硕士生,主研领域:嵌入式人工智能与物联网。王宜怀,教授。李跃华,副教授。摘要数据传输是微控制器运行中必不可缺少的操作,绝大部分时间也都花费在数据的搬运上。直接存储器访问(,)是大多数处理器中提高数据传输速度的方式之一。在分析了多种微控制器芯片中 控制器工作原理的基础上,总结出其共性技术,从而提出一种基于 芯片的基础构件封装方式,并将其与 串口相结合应用到实践中。实践证明,具有传输速度快、准确率高等优点,同时也提高了 的工作效率。关键词 共性技术构件封装 中图分类号 文献标志码 :(,)(,),(),引言直接存储器访问()是一种数据传输的方式 ,它可以将数据不经过 直接从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器与存储器之间的高速传输。在嵌入式微处理器的实际应用过程中,无时无刻都需要数据的传输,我们正常的方法都是查询方式进行编程来控制 的输入输出,或者通过中断来处理数据传输 。虽然采取中断来控制 比查询方式控制 更加有效和省时,但是仍然需要 的干预才能实现存储器与 模块之间的数据进行传输。任何 设备与存储器间的数据传输必须通过 ,因此大大降低了 的效率。这两种形式的 存在以下两种缺点:()数据传输的速度受处理器性能和 设备所提供服务速度的限制;()处理器负责控制 数据的传输时必须要执行一些指令,这就浪费了 的时间。为了弥补这两种数据传输方式的缺点,可以采用嵌入式处理器中的 数据传输方式。当使用 传输数据时,这个动作本身是由 控制器()来实现和完成的,无须 的介入和控制,也就不需要 先把所有数据复制到暂存器,然后把它们再写回到目的地址去 。同时也没有中断处理 方式那样需要保第 期奚圣鑫,等:基于 的 共性技术分析及应用 留现场和传输完成后的恢复现场的过程。方式的数据传输与查询方式访问 和中断驱动 相比,具有传输速度快、响应时间短、额外开销小的明显优点 。现在越来越多的嵌入式微处理器都具有 技术以提供外设和存储器之间的高速数据传输,但却很少会去使用它。本文将基于 芯片来介绍 控制器的基本原理及技术,在此基础上提供一种 构建的封装方式,并将其与 结合提供具体的应用实例。控制器原理 功能介绍 中的 控制器()包含 个 端口(,),每个端口都拥有 个通道,每个通道都可以执行 传输。其传输数据量是可编程的,最大可以达到 。和 核心共享系统的数据总线,在 传输时,请求会暂停 访问系统总线若干个周期,此阶段由 直接掌管总线,因此,存在着一个总线控制权转移过程。此过程是由总线仲裁器执行循环调度,以保证 至少可以得到一半的系统总线(存储器或外设)带宽 。另外每个端口还包含一个仲裁器、中断接口和内部一些寄存器组,其结构如图 所示 。图 结构 可以将数据从源地址搬移到目的地址,在 中 操作存在三种操作模式。即存储器到外设、外设到存储器、存储器到存储器。一般的 至少应该具备以下的基本功能:()能够接收外部设备发出的 请求,并向 提出总线占用请求。()在 对 配置结束后,可以代替 对总线进行控制。()可以独立地确定传输数据的起始地址和目的地址以及传输长度。()传输过程中,在发生传输错误时需要进行报错处理。需要独立判断是否传输成功,并且在传输成功后能够发出中断信号,释放对总线的控制权。当然对于功能复杂的 ,除了完成以上功能之外,还会有其他的功能。一般的 在传递完成一次连续地址的数据之后需要重新进行配置才能进行下一次的数据传输,但是复杂的 可以内部增加逻辑加减,在传输数据时无论有多少个非连续的数据块,可以只配置一次即可完成。一次完整的 传输过程必须经过请求、响应、传输和结束四个过程,其工作流程如图 所示。图 控制器工作流程()首先会将 初始化。当存储设备 向 发出请求 方式进行数据传输请求。()向 发出总线请求,然后 释放总线控制权,并通过 通知 接口开始 传输。()获得总线控制权后,即可进行数据传输。整个数据传输过程主要可以分为两个阶段,分别为从源地址中读取数据和写回数据到目的地址。读操作阶段数据从源地址中被搬运到数据总线上,然后再存放到 内部 中用来缓存数据。写操作是将 中的缓存数据写到目的地址上去。在同一时刻只能进行一种操作。()当完成数据传输后,立即释放总线控制权,至此,整个 操作结束。寄存器描述 中每个通道都有相应的 配置寄存器(,)、外设地址寄存器(,)、存储器地址寄存器(,)、传输数据数量寄存器(,),此外还有 中断状态寄存器()和中断标志清理寄存器()。每个寄存 计算机应用与软件 年器的功能如表 所示。表 寄存器列表寄存器名称功能配置寄存器初始化 功能,设置优先级、数据传输方向和中断使能等外设地址寄存器设置外设地址,包含读 写数据的外设数据的基址存储器地址寄存器设置存储器地址,包含读 写数据的存储器的基址传输数据数量寄存器设置待传输数据数中断状态寄存器 中断状态标志包括传输完成、半传输、传输错误、全局中断标志其中最重要的就是 配置寄存器,在使用 传输之前必须要对其进行初始化。到 位保留,其余各位的含义如表 所示。表 配置寄存器各位表位编号位名称描述通道使能()在使用 通道传输数据时必须将该位置 使能之后才能使用传输完成中断使能()传输完成之后发出中断信号半传输完成中断使能()传输一半之后发出中断信号传输错误中断使能()传输发生错误之后发出中断信号数据传输方向()数据从外设到存储器或者从存储器到外设循环模式()一次 读取还是多次外设递增模式()外设每次 传输地址递增存储器递增模式()存储器每次 传输地址递增,外设大小()外设的每次 传输的数据大小 ,存储器大小()存储器的每次 传输的数据大小 ,优先级()通道 优先级外设地址存储器指定当传输时数据的地址是外设时的地址;存储器地址寄存器指定当传输时数据的地址是存储器时的地址。传输数量寄存器指定传输次数,每一次“先读后写”传输后递减,直至为 传输结束,但是如果在配置寄存器中设置为循环模式时会自动再加载之前的设定值。构件封装软件构件技术的出现,为实现软件构件的工业化生产提供了理论与技术基石 。软件构件的封装性、可移植性和可复用性是软件构件的基本特性,采用构件技术设计软件,可以使软件具有更好的开放性、通用性和适应性。在此思想基础上,以 芯片为基础,提出 构件基础功能封装规则。首先对 进行要点分析,即分析应该设计哪几个函数及函数入口参数。前面已经分析了 传输数据的完整步骤,所以通用的 构件必须封装 初始化函数、传输数据函数、关闭 函数。构件由 和 两个文件组成,如果想要使用,只需要将这两个文件加入到工程项目中即可。)模块初始化()。使用 功能之前必须对其进行初始化,所以初始化函数必须提供。由于 端口有两个,每个端口有 个通道,且 传输模式有三种,是否循环输入。因此 初始化函数的参数为 端口、通道数、传输方向、是否循环输入。这样 初始化原型可以设计为:(,)传输开始()。在 初始化之后就可以开始 传输,此时需要传输数据的源地址、目的地址、数据长度,所以参数必须要有这三个,同时开始函数还要对 模块进行使能,只有使能之后才能正常使用。这样 传输开始原型可以设计为:(,)模块关闭()。在使用 传输数据之后,要将 模块关闭,反使能模块,重启传输数据寄存器以及清除所有的包含中断在内的标志位,所以此函数不需要传递参数,原型可以直接设计为:()这三个函数基本满足了对 操作的基本需求。还有中断使能与禁止等函数可以根据需求添加和使用。数据传输应用实例在软硬件的调试过程中,经常需要将数据通过串口打印出来。使用串口进行传输数据,这时就可以利用 技术进行数据传输。芯片不仅提供了 基本功能,还提供了 请求复用器()。请求复用器可以在外设和 控制器之间重新配置 请求 ,从而实现数据直接从存储器到串口 、或者 等外设,也可以从一个外设到另一个外设。第 期奚圣鑫,等:基于 的 共性技术分析及应用 本文提供了 和串口 复用的应用实例,可以直接通过串口将微控制器内存内数据直接发送给上位机,从而用来模拟我们日常生活中的 函数的功能。函数有个缺陷,就是花费的时间太多了,虽然在日常使用中我们绝大部分人没有发现,但是在一些大型的项目对数据需要大量传输时,不能每次都让微控制器等待来显示串口,所以作者便考虑到能否用 来取代 。但是用 来执行串口的数据打印实际时间点是会比使用 的时间点会晚个几毫秒,因为 传输数据是在 完成当前时间周期之后把系统总线让给 然后才开始数据传输,但是 传输数据是发起后立即执行。但是这几毫秒在我们实际应用中对我们来说没有任何影响,但是对 来说,传输并没有占用 ,从而 可以运行更多的计算。和串口 复用的函数流程如图 所示。图 串口复用函数流程程序实现了两种串口传输以存储器为起始地址的 个字节的数据到上位机上。其核心代码如下:();起始地址存放源数据 (,);初始化 引脚 (,);输出低电平 (,);串口传输数据 (,);输出高电平 ();延时 (,);输出低电平 ();传输数据 (,);输出高电平经反复通过对 引脚高低电平状态持续时间测试得出,在使用 复用串口发送一个包含了三十个字符的字符串只需要大约 的 耗时,而 则需要大约 的 耗时。结语本文实现了在 的微控制器上的 数据传输,并且发现在结合 、或 等设备时,会比我们正常使用这些设备更加方便。因为我们在使用这些设备的同时 会花费大量的时间在数据的传输上,如果我们采用了 来进行数据传输,则会大量减少 的工作任务,从而让 去执行其他工作。实践证明,在利用基于 共性技术的基础上封装的 构件,可以将繁重的数据传输工作通过 控制器来完成,从而提高了 的数据处理能力和 的工作效率。参考文献蒋婷,王宜怀,李涛 基于 系列 的构件化汇编框架研究 计算机应用与软件,():,与 权威指南 吴常玉,曹孟娟,王丽红,译 北京:清华大学出版社,王宜怀,许粲昊,曹国平 嵌入式技术基础与实践(第 版)北京:清华大学出版社,计算机组织与结构:性能设计 北京:高等教育出版社,卢有亮 基于 的嵌入式系统原理与设计 北京:机械工业出版社,中文版 王宜怀,刘长勇,帅辉明,等 窄带物联网技术基础与应用 北京:人民邮电出版社,:

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开