gpt4 book ai didi

stm32 - 访问 STM32 dma 目标位置

转载 作者:行者123 更新时间:2023-12-04 23:21:00 24 4
gpt4 key购买 nike

我想知道从 dma 正在写入数据的内存中读取是否安全?

我有一个带有 adc 设置的 stm32F1,可以连续执行转换并使用 dma 将数据传输到 ram 缓冲区。
我知道我可以使用 adc 中断安全地访问缓冲区,但是如何从非中断上下文访问缓冲区呢?如果我尝试从 dma 正在写入的同一位置读取数据,是否会损坏数据?

最佳答案

你的数据不会被破坏——这些芯片有总线仲裁器,它允许 DMA 或 CPU(你的代码)访问总线(因此也访问 RAM 内存),因此每个事务(对 RAM 的单次访问,​​不一定访问整个变量) 是原子的。

请参阅 RM0008 引用手册中的此信息:

3.1 System architecture

...

BusMatrix

The BusMatrix manages the access arbitration between the core system bus and the DMA master bus. The arbitration uses a Round Robin algorithm. In connectivity line devices, the BusMatrix is composed of five masters (CPU DCode, System bus, Ethernet DMA, DMA1 and DMA2 bus) and three slaves (FLITF, SRAM and AHB2APB bridges). In other devices, the BusMatrix is composed of four masters (CPU DCode, System bus, DMA1 bus and DMA2 bus) and four slaves (FLITF, SRAM, FSMC and AHB2APB bridges). AHB peripherals are connected on system bus through a BusMatrix to allow DMA access.

关于stm32 - 访问 STM32 dma 目标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26803978/

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