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

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

最佳答案

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

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

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

10-09 22:13