WHALEE 发表于 2025-5-28 20:39

在 STM32 中不启用 DMA 的情况下使用 FIFO 吗?

在 STM32 中不启用 DMA 的情况下使用 FIFO 吗?
想在 STM32CubeIDE 中不启用 USART_DMA情况下使用 FIFO 。可以吗?
如果可能的话,我可以区分数据之间的小延迟。可以根据我的要求处理数据。

t60yz 发表于 2025-5-31 23:38

STM32H7 系列支持硬件 FIFO 缓冲区,即使你没有使用 DMA,也可以使用 FIFO 来增强数据处理能力。

三生万物 发表于 2025-6-9 11:30

在STM32中,不启用DMA的情况下完全可以使用FIFO(先进先出队列)来管理USART数据。FIFO是一种常用的数据结构,用于缓冲输入或输出数据,特别适用于需要处理数据流的应用场景

光辉梦境 发表于 2025-6-9 12:00

其实FIFO本身不依赖于DMA,它可以通过软件实现,使用一个数组和两个指针(或索引)来跟踪数据的写入和读取位置。

一秒落纱 发表于 2025-6-9 14:12

在代码中定义一个FIFO结构,包括缓冲区、写入和读取索引。
时间戳记录,在接收数据时,可以记录每个数据到达的时间戳(例如使用系统滴答定时器SysTick)

夜阑风雨 发表于 2025-6-9 17:44

在读取数据时,比较当前数据与前一个数据的时间戳,计算延迟,并根据延迟进行数据处理

远山寻你 发表于 2025-6-9 18:21

时间戳记录,在接收数据时,可以记录每个数据到达的时间戳(例如使用系统滴答定时器SysTick)

别乱了阵脚 发表于 2025-6-9 20:15

中断优先级,确保USART中断的优先级适当,以避免数据丢失

淡漠安然 发表于 2025-6-9 23:00

应根据应用需求选择合适的FIFO大小。如果数据到达速度远快于处理速度,可能需要较大的FIFO

一秒落纱 发表于 2025-6-10 01:00

在代码中定义一个FIFO结构,包括缓冲区、写入和读取索引

暖了夏天蓝了海 发表于 2025-6-10 07:00

错误处理,处理FIFO溢出、数据错误等情况。

三生万物 发表于 2025-6-11 11:00

在STM32中,不启用DMA的情况下完全可以使用FIFO(先进先出队列)来管理USART数据。FIFO是一种常用的数据结构,用于缓冲输入或输出数据,特别适用于需要处理数据流的应用场景

冰春彩落下 发表于 2025-6-11 11:01

性能优化,在高频数据接收时,注意中断处理的时间,避免长时间占用中断服务例程

江河千里 发表于 2025-6-12 11:00

FIFO用于存储接收到的数据,直到处理器准备好处理它们。它可以平滑数据流,防止数据丢失,尤其是在处理器忙于其他任务时
页: [1]
查看完整版本: 在 STM32 中不启用 DMA 的情况下使用 FIFO 吗?