硬汉嵌入式论坛

 找回密码
 立即注册
查看: 362|回复: 6
收起左侧

[有问必答] stm32标准库 FSMC 写入 SRAM 异常

[复制链接]

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2024-2-19 11:17:56 | 显示全部楼层 |阅读模式
本帖最后由 王浩然 于 2024-2-19 11:18 编辑

平台 STM32F407 + IS61LV51216

代码中只写入一个地址一次, 但是内存中却有两个地址的数据同时改变, 有人遇到过吗?


捕获1.PNG

捕获.PNG
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2024-2-19 12:30:21 | 显示全部楼层
自己做的板子吗,看看是不是有虚焊或引脚有焊接到一起了。
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2024-2-19 14:41:33 | 显示全部楼层
eric2013 发表于 2024-2-19 12:30
自己做的板子吗,看看是不是有虚焊或引脚有焊接到一起了。

买的板子放家里了, 用的别人画的板子, 看了下应该没有连焊. 连焊或者虚焊应该都会导致数据错误甚至不能读写吧? 但是我这好像数据写入都是对的, 但是写入了两个地址, 测试了多次写入都是这样, 而且两个地址相差16个字节
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2024-2-19 15:43:29 | 显示全部楼层
王浩然 发表于 2024-2-19 14:41
买的板子放家里了, 用的别人画的板子, 看了下应该没有连焊. 连焊或者虚焊应该都会导致数据错误甚至不能读 ...

1、写法上修改下
*(__IO uint16_t*) (Bank1_SRAM4_ADDR + counter) = (uint16_t)(uhWritedata_16b + counter);
2、还有就是不要使用调试状态看,直接打印出来看下,注意要所有地址都初始化后,打印出来看。
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2024-2-19 20:36:41 | 显示全部楼层
eric2013 发表于 2024-2-19 15:43
1、写法上修改下
*(__IO uint16_t*) (Bank1_SRAM4_ADDR + counter) = (uint16_t)(uhWritedata_16b + co ...

他之前就是这么写的, 然后报错了我才改的
捕获.PNG
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2024-2-20 00:21:26 | 显示全部楼层
王浩然 发表于 2024-2-19 20:36
他之前就是这么写的, 然后报错了我才改的

适当调整下FSMC时序配置试试,不行的话,得排查下硬件问题了。
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2024-2-20 09:40:48 | 显示全部楼层
eric2013 发表于 2024-2-20 00:21
适当调整下FSMC时序配置试试,不行的话,得排查下硬件问题了。

好的, 多谢
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 14:00 , Processed in 0.179716 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表