277|5

395

帖子

0

TA的资源

一粒金砂(高级)

STM32H743 利用定时器DMA触发SPI发送和 接收数据,发现接收的数据,前面5个都不变化 [复制链接]

STM32H743  利用定时器DMA触发SPI发送和 接收数据,发现接收的前面5个都不变化,

SPI的芯片是一个ADC芯片,触发后,直接可以从MISO上获取到数据。

初始化程序,CH2 是 RX, CH4是TX,定义了两个buf

 

image.png  

image.png  

现象就是,我使用0X240049AC这个地址的变量,前面5个数据,就不会变化,只会变化后面的。

image.png  

 

而我如果使用 SPI1DMARxBuf ,地址是 0X24004A2C ,则发现,数据读写就正常。

image.png  

优化等级,设置的是LEVEL 0,   ICACHE 和 DCHACHE 都是enable的;

对于这个现象,百思不得其解,求助大佬指点

 

此帖出自stm32/stm8论坛

最新回复

[attach]895682[/attach]   DMA使用内存块有讲究,你自己可以研究一下。好像是说SRAM4是支持所有DMA。 你要指定使用那块内存块,错了就可能有问题。   详情 回复 发表于 6 天前

回复
举报

6174

帖子

4

TA的资源

版主

本帖最后由 damiaa 于 2025-3-13 20:12 编辑

是不是数组越界了?

170945pdkwewfha71cid1f.png  

1,对调一下这两个数组的定义位置。这样也许就DAMRxBuf变化,SPI1DMARxBuf异常了。

      不过就算改了后面的这个数据其实如果溢出也会覆盖其他数据。反正数组是不能越界的。越界就莫名其妙的问题出来。

2,这两个数据空间你加大一点试一下,比如加大到1024,让他们不会溢出。

 

此帖出自stm32/stm8论坛

点评

嗯,我试过,如果把下面那个变量,放在上面,就是说 0X240049AC这个地址的变量名就是SPI1DMARxBuf 了, 那这个变量的前5个地址也不会变化。 [attachimg]895543[/attachimg]   而且,变量  详情 回复 发表于 6 天前

回复

395

帖子

0

TA的资源

一粒金砂(高级)

damiaa 发表于 2025-3-13 20:10 是不是数组越界了?   1,对调一下这两个数组的定义位置。这样也许就DAMRxBuf变化,SPI1DMARxB ...

嗯,我试过,如果把下面那个变量,放在上面,就是说 0X240049AC这个地址的变量名就是SPI1DMARxBuf 了, 那这个变量的前5个地址也不会变化。

image.png  

而且,变量我申请了32个,我设置搬移的长度是14个,都不至于会溢出越界。

另外一个就是,如果我在定义的时候,初始化为0,其地址就变化了,  赋值也就都正常了

image.png  

此帖出自stm32/stm8论坛

点评

变量访问前最好初始化一下。  详情 回复 发表于 6 天前

回复

6174

帖子

4

TA的资源

版主

麻袋 发表于 2025-3-14 08:59 嗯,我试过,如果把下面那个变量,放在上面,就是说 0X240049AC这个地址的变量名就是SPI1DMARxBuf&n ...

变量访问前最好初始化一下。

此帖出自stm32/stm8论坛

回复

395

帖子

0

TA的资源

一粒金砂(高级)

damiaa 发表于 2025-3-14 09:38 变量访问前最好初始化一下。

不太理解,初始化只是给到了一个固定值,如果我不需要初始化值的话,应该意义也不大吧。

 

另外刚刚测试了一下,这个0X240049AC 这个地址的变量,如果我在程序里面 去写了自加一 的变量操作,是能正常动的 image.png  

此帖出自stm32/stm8论坛

回复

6174

帖子

4

TA的资源

版主

图片.png  

DMA使用内存块有讲究,你自己可以研究一下。好像是说SRAM4是支持所有DMA。

你要指定使用那块内存块,错了就可能有问题。

此帖出自stm32/stm8论坛

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 9

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表