你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
螃蟹狂飙 提问时间:2021-9-7 19:26 /
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读诹传感器数据时是正常的。这到底是怎么回事



收藏 评论12 发布时间:2021-9-7 19:26

举报

12个回答
李康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
微信图片_20210919211914.jpg 有人能确定这个晶振频率是27MHZ?
螃蟹狂飙 回答时间:2021-9-19 21:26:00
螃蟹狂飙 发表于 2021-9-19 21:21
有人能确定这个晶振频率是27MHZ?

我怀疑这个晶振频率不是27MHZ,我配置成27MHZ,造成的上面一系列问题
螃蟹狂飙 回答时间:2021-10-1 15:46:14
问题解决,就是晶振频率搞错了,标着27,000,实际上是8MHZ的。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版