龙空技术网

单片机学习的坎坷路:STM32H7串口DMA发送遇到的问题

科技始发站 384

前言:

今天咱们对“串口数据错位”大致比较关心,你们都想要分析一些“串口数据错位”的相关资讯。那么小编在网摘上收集了一些有关“串口数据错位””的相关知识,希望各位老铁们能喜欢,咱们一起来学习一下吧!

最近做了一块STM32H743IIT6的工控板,想学习一下主频480M的单片机。和我以前接触过的单片机相比,这块芯片简直太高级了。自带

USART+UART+LPUART这三种串口加起来一共9个,正好可以用来做工控设备的协议转换。由于刚刚上手这块芯片,还不太熟悉,英文手册看起来也很费劲,所以就决定尝试一下ST官方推出的STM32Cube-MX配置工具,用它来配置参数生成项目。

STM32Cube-MX还是非常强大的,直接可视化配置,先来试试串口DMA发送数据吧。直接在软件里开启串口,然后添加DMA发送,整个配置过程非常简单,配置完成后直接生成项目,之后就能开始编制用户程序了。

在测试中发现,用DMA形式通过串口发送初始化时已经赋值的全局数组时,一切正常,但是在函数中发送局部数组或者全局数组动态赋值时,电脑上串口工具收到的数据全是 00,数据个数倒是对了。被折磨了好久都没有解决。后来查了一下资料,发送可能是Cache导致的,于是在配置软件中关闭这两个Cache,之后全局数组动态赋值发送数据就正常了。

大神们解释说这是Cache一致性的问题,目前我还没搞太明白,先Mark一下,大家有好的解决方法也可以留言讨论!

标签: #串口数据错位