• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32F407VET6+IS62WV51216读写不一致

1965dad14f3a8405 2018-06-20 浏览量:2263
STM32F407VET6+IS62WV51216
读出的数据和写入的数据总是不一致初始化代码用CubeMX生成设置如下

1.jpg

2.jpg

CUbeMX中这颗芯片的内存类型里没有SARM选项只有PSARMBank选项也正确

读写测试代码是

*((uint64_t*)SendBuf) = 0xAA55A55AA5A55A5A;
SendStatue=HAL_SRAM_Write_16b(&hsram1(uint32_t*)addrSendBuf4);
HAL_Delay(10);
*((uint64_t*)ReadBuf) = 0x55AA5AA55A5AA5A5;
ReadStatue = HAL_SRAM_Read_16b(&hsram1(uint32_t*)addrReadBuf4);
if(*((uint64_t*)SendBuf)  == *((uint64_t*)ReadBuf))
{
    HAL_Delay(10);
}

addr+=0x1000;
​其中ReadStatue 和SendStatue都是HAL_OK(虽然看了源码后发现这个返回值没什么意义)

addr初始值为0x600000000​当地址为0x64000000时会进错误中断说明地址区间是对的但是写入的数据和读出的数据总是不能一致.

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 最好是查一下硬件上的连接,看看有没有虚焊之类的错误。

    你的程序配置与硬件电路是不是一样的。

    • 发布于 2018-06-21
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • 这个一般都是要检查一下软件的寄存器和数据是不是写入正确
    • 发布于2018-06-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 检查一下HAL_Delay(10);的时候是否有别的任务操作了SRAM​
    • 发布于2018-06-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个要看看你的软件是不是在其他地方又操作了sram
    • 发布于2018-06-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果能确定硬件连线没问题的话,那肯定就是软件误操作SRAM使得读写数据不同了,要检查下读写的步骤是不是按顺序执行。

    • 发布于2018-06-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 要检查一下你的软件是不是驱动时序有问题,一般这种情况都是你的驱动时序不一致导致的
    • 发布于2018-07-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 主要排查一下你的sram地址是不是有问题,是不是两次读书都是用了同一个地址
    • 发布于2018-07-15
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32F407VET6+IS62WV51216读写不一致