螃蟹狂飙 发表于 2021-9-7 19:26:57

STM32H743VIH6 usart dma闲时中断无法获取数据

STM32H743VIH6 usart dma闲时中断无法获取数据。之前一直认为我代码写错了,但 是后来。我用STM32CUBE 又做了一工程,只是串口空闲中断,两块板不同,一块是STM32H743VIH6,一块 是STM32H743VIT6。代码一样,前者是用串口8,后者是用串口2,晶振频率不同,但是串口的时钟频率我都调到都是120MHZ。其它的设置也一样,结果前者依然读不到数据,后者就可以。 我还一度找了STM32H743的官司勘误手册对照了发现DMA_SxCR_TRBUFF要使能,我看了STM32Cube FW_H7 V1.9.0中的stm32h7xx_hal_dma.c,已经在HAL_DMA_Init函数中使能了。 registerValue |= DMA_SxCR_TRBUFF; 同时我可以确定的是我的STM32H743VIH6与STM32H743VIT6都是V版的。芯片上有印。
我一度怀疑STM32H743VIH6的芯片是不是坏了,但是我用他做SPI 与I2C读诹传感器数据时是正常的。这到底是怎么回事



李康1202 发表于 2021-9-8 08:55:25

电路有问题没有

xmshao 发表于 2021-9-8 10:19:52

对你说的DMA闲时中断无法读取数据,也表示难以理解。是指通过DMA读取UART接收到的数据是吗?专门做个测试程序,
在两块板上比较测试下,STM32H743VIH6和TM32H743VIT6除了封装有差异而已,其它芯片特性及功能一样的。如果一块OK,一块异常,重点
比较下硬件线路及电源方面,重点核对下管脚。

螃蟹狂飙 发表于 2021-9-8 19:57:48

xmshao 发表于 2021-9-8 10:19
对你说的DMA闲时中断无法读取数据,也表示难以理解。是指通过DMA读取UART接收到的数据是吗?专门做个测试程 ...

我用的是http://www.mateksys.com/?portfolio=h743-slim#tab-id-3这块板。接的串口8 。板上用黄色圈起来的地方,我用的是vsw=5V,用的是DMA+USART串口闲时中断接收数据,我试过去掉DMA,使用串口中断,能接收到数据,但是都是错误的。

螃蟹狂飙 发表于 2021-9-8 19:58:40

xmshao 发表于 2021-9-8 10:19
对你说的DMA闲时中断无法读取数据,也表示难以理解。是指通过DMA读取UART接收到的数据是吗?专门做个测试程 ...

而且我用这块板上的SPI ,I2C与传感器进行通讯,都没有问题,芯片应该是没问题的。

xmshao 发表于 2021-9-10 11:24:53

哦,基于你的补充信息,核心问题是当使用DMA后数据传输有问题,请你注意因D-cache导致的一致性问题,你可以先将D-Cache关闭后验证。然后你可以做些MPU配置方面的操作,比方将相关内存配置为透写属性等。这个问题是很多初次接触H7常碰到的问题。

xmshao 发表于 2021-9-10 11:39:42

螃蟹狂飙 发表于 2021-9-8 19:58
而且我用这块板上的SPI ,I2C与传感器进行通讯,都没有问题,芯片应该是没问题的。
...

ok,明白你的意思了。问题应该出在CACHE的使用上。你将D-CACHE关闭后测试下。你可能需要做下mpu配置,将DMA访问的相关区域配置为透写属性。

螃蟹狂飙 发表于 2021-9-11 21:14:06

xmshao 发表于 2021-9-10 11:39
ok,明白你的意思了。问题应该出在CACHE的使用上。你将D-CACHE关闭后测试下。你可能需要做下mpu配置,将DM ...

我没有开CACHE。接收变量也是在0X240000范围内,DMA可以直接访问的。

xmshao 发表于 2021-9-16 09:45:59

螃蟹狂飙 发表于 2021-9-11 21:14
我没有开CACHE。接收变量也是在0X240000范围内,DMA可以直接访问的。

既然这样,你还要注意另一个问题,就是UART接收是否发生了溢出,它会导致DMA接收无法继续下去。

螃蟹狂飙 发表于 2021-9-19 21:02:02

xmshao 发表于 2021-9-16 09:45
既然这样,你还要注意另一个问题,就是UART接收是否发生了溢出,它会导致DMA接收无法继续下去。
...

没有看到溢出错误,接收的数据一次25字节,1秒70HZ多,缓冲50字节,不会存在溢出。

螃蟹狂飙 发表于 2021-9-19 21:21:31

有人能确定这个晶振频率是27MHZ?

螃蟹狂飙 发表于 2021-9-19 21:26:00

螃蟹狂飙 发表于 2021-9-19 21:21
有人能确定这个晶振频率是27MHZ?

我怀疑这个晶振频率不是27MHZ,我配置成27MHZ,造成的上面一系列问题

螃蟹狂飙 发表于 2021-10-1 15:46:14

问题解决,就是晶振频率搞错了,标着27,000,实际上是8MHZ的。
页: [1]
查看完整版本: STM32H743VIH6 usart dma闲时中断无法获取数据