gpt4 book ai didi

timer - STM32 DMA 从定时器计数到内存

转载 作者:行者123 更新时间:2023-12-04 01:30:14 27 4
gpt4 key购买 nike

我正在使用 STM32H743。我有一个外部时钟信号进入 GPIO 引脚,我想非常准确地测量外部时钟信号中每个上升(或下降)沿之间耗时。所以我进行了设置,使 TIM4 由外部时钟触发,TIM5 由内部振荡器触发。

我编写了一个 IRQ,以便每当 TIM4 触发时,都会运行一个中断来捕获 TIM5 的值。它似乎工作正常,但我想知道是否可以通过 DMA 来避免所有上下文切换并释放 CPU。基本上我想设置一个 DMA,以便每个 TIM4 事件启动一个 DMA 传输,将 TIM5 计数器值复制到某个地方的循环缓冲区。

我已经搜索了论坛和 DMA 文档,但我对定时器寄存器是否可以是有效的 DMA 源感到模糊。我在想也许我可以做这样的事情:

hDma->PAR = (uint32_t) &htim5.Instance->CNT;
hDma->M0AR = (uint32_t) myBufferPtr;
hDma->NDTR = myBufferSize;
hDma->CR |= (uint32_t)DMA_SxCR_EN;

但我不确定这是否可行。

简短版本:我可以使用定时器的 CNT 寄存器作为 DMA 传输源吗?它会是外设到内存的传输吗?还是内存到内存的传输?我还需要其他标志来完成这项工作吗?或者不可能?或者是否有另一个 STM32 功能可以更轻松地计算脉冲之间的时间?

最佳答案

免责声明

我必须承认,我在 STM32 方面的长期实践经验目前停留在主流 Controller 系列中,如 STM32F0、STM32F3、STM32F4 和 STM32L4。
因此,我将根据这些 Controller 在您的情况下为您提供的内容进行回答。
STM32H7 系列要强大得多,更不用说它提供了几种额外的 DMA 技术,如 DMA2D、MDMA 和许多我不确定的其他东西。
但我认为一个简化的答案现在也可能对你有帮助,所以我敢写。

Can I use the timer's CNT register as a DMA transfer source? Would it be a peripheral-to-memory transfer? Or a memory-to-memory transfer? Are there other flags I need to make this work? Or is it not possible?



我希望这能奏效。
我认为没有理由不在 DMA 传输中读取 TIMx_CNT 寄存器。

CNT寄存器肯定是 外设地址因此您必须将其配置为外设到内存的传输。
我相信外设/内存分离是指 DMA Controller 从每个 STM32 中实现的总线矩阵中获取数据(或将数据传送到哪个总线)的总线。

Or is there another STM32 feature that would make it easier to count time between pulses?



就在这里:
许多 TIM 外设(并非所有外设都相同)为您提供称为“输入捕获”的功能,该功能将 TIM 实例的 channel (子)外设连接到输入,并具有(相同!)TIM 外设的主要部分做内部时钟。
这样做的先决条件是,您要测量的引脚具有 TIMx_CHy 替代功能,而不是“仅”一个 TIMx_ETR 功能。

TIM 外围设备提供了丰富的不同配置选项 - 只要您不习惯它,它就会一团糟。
作为介绍和很好的概述,我推荐 ST 的两个应用笔记:
  • AN4013 Application note. "STM32 cross-series timer overview", Rev.8

    您的 µC 上有哪些计时器,以及哪个计时器提供了哪些功能。
  • AN4776 Application note. "General-purpose timer cookbook for STM32 microcontrollers", Rev.3

    如何使用您拥有的计时器。查看第 2.6 节,输入捕获在第 27 页。

  • 查找这两个,我发现了第三个你可能想检查一下以获得更好的精度,与 HRTIM 计时器相关:
  • AN4539 Application note. "HRTIM cookbook", Rev.4
  • 关于timer - STM32 DMA 从定时器计数到内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61177322/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com