乒乓DMA缓冲区技术

TsinghuaJoking 2024-09-24 08:35
一、前言

  在单片即应用中,有的时候需要连续处理 ADC所采集到的数据,比如将它们不间断的传输到网络上。但是,如果在这个过程中,处理数据的时间随机波动,就有可能会出现丢失数据的现象。根据 TI 公司的一份技术报告,提出了 乒乓DMA模式,ADC采集的数据由DMA分别传输到内存的一个数据缓冲区。CPU 可以连续处理另外缓冲区内的数据。当 ADC的数据填充完一个数据缓冲区之后,便切换到另外一个数据缓冲区。CPU便可以处理另外一个缓冲区内的数据。由于是整批次处理数据,所以这种方式可以避免 ADC采集过程中丢失数据的现象。下面对此方式进行测试。

二、ADC转换速率

  在上午实验中STM32F103单片机平台上进行测试,这个平台原来适用于 CCD 数据采集用的。下面就直接利用这个单片机测试一下 DMA 乒乓缓冲区的功能。首先测量一下 STM32单片机ADC转换速率。

  在 STM32 数据手册中,给出了 ADC每隔通道的转换时间计算公式。那就是采样始终再加上12.5 个 ADC 时钟,便是 ADC  一次转换所需要的时间。

▲ 图1.1.1 STM32 ADC转换时间


  下面通过示波器测量 单片机实际 ADC采样时间。设置单片机的 ADC时钟。为 10.666MHz。根据 STM32单片机数据手册要求,这个时间频率必须小于 14MHz。 设置单片机的采样时间,这里选择为 28.5个时钟,那么,每隔ADC转换时间就是28.5 加上 12.5,等于41 可时钟。

  设置ADC的DMA通道,每次转换结束之后,通过 DMA将转换结果传到到内存中 ADC 缓冲区,ADC 缓冲区的长度为 128个数据,禁止 DMA 中途中断,这样,只有到 DMA 传输了整个 数据缓冲区之后,产生一次中断。在中断程序中,切换单片机 LED管脚的电平。因此通过测量 LED 管脚高电平的时间长度,便反应了 128个ADC转换所需要的时间。

         根据前面设置ADC的参数,每次转换需要41个周期,那么 128次转换所需要的时间,为 492微秒。这与实际测量的491微秒是符合的。

三、乒乓缓冲区

  为了实现乒乓DMA缓冲区,在DMA 中断程序中,根据中断次数是偶数还是奇数,将 DMA中的内存地址修改为 缓冲数组1,或者缓冲数组2。这样便可以在每次 ADC 采集完一组缓冲区之后,进行切换,并对已经采集到的数据集中进行处理。

  经过测试,上面这种切换的方式工作正常。由此,我们能够实现了 ADC 缓冲区的乒乓切换模式。

  结 ※

  文测试了在 STM32单片机中的乒乓缓冲区的模式。通过在 ADC 的 DMA传输中断程序中,来回切换DMA 的内存地址,便可以来回对所采集到的数据进行处理,而不用担心遗漏数据。

参考资料
[1]

DMA  乒乓 切换: https://dev.ti.com/tirex/explore/node?node=A__AGTNfDbVXbEdVyShrms1sA__MSPM0-SDK__a3PaaoK__LATEST


火星大王: 其实可以不用显式切换DMA缓冲区,可以利用DMA的循环传输和半传输中断,这样一旦DMA启动,如果是半传输完成中断,说明缓冲区的前半部分数据已经采集好了,CPU可以处理前半部分,此时DMA可以继续向后采集缓冲区的后半部分;

        如果触发传输完成中断,说明后半部分采集好了,CPU可以处理缓冲区的后半部分数据,同时,由于循环传输的存在,DMA此时会自动重新开始采集缓冲区的前半部分数据,以此循环往复。

        使用此法一旦配置完成,CPU就不再需要关闭DMA或者修改DMA的任何配置,只需要等待中断触发然后处理数据就好了,同时由于半传输和传输中断的标志位是不同的标志位,也不再需要维护额外的状态信息。

TsinghuaJoking 这是一个公众号,它不端、不装,与你同游在课下、课上。 卓晴博士,清华大学中央主楼 626A。010-62773349, 13501115467,zhuoqing@tsinghua.edu.cn
评论
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 166浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 88浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 72浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 81浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 110浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 76浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 171浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 71浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 79浏览
  • 随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。关于RK3576处理器国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性:8核心6 TOPS超强算力双千
    米尔电子嵌入式 2025-01-03 17:04 48浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 80浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦