硬汉嵌入式论坛

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

内部flash读写问题

[复制链接]

3

主题

5

回帖

14

积分

新手上路

积分
14
发表于 2022-12-21 14:03:35 | 显示全部楼层 |阅读模式
想要往内部flash中存入浮点型数据(通过共用体实现的),但实际测试过程中,当连续多次写入数据时,会随机的出现写入错误的情况(不固定写第几次的时候,偶尔还会出现死机现象),这个时候读flash扇区中数据为全ff,继续写又好了,这是什么情况?有人能帮忙解答下么? _9~92WSWK4WXJOMKA0_A42Y.png 7M469$SF)YU76JRTRBQ6YGC.png (8X8R_X7I935KVC)TV}_X1V.png 8__RC0@R(`COPOE_S~~C)CE.png


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2022-12-21 14:09:23 | 显示全部楼层
楼主的这个是操作的那个系列,每次都是擦除固定大小吗,参数都是固定的写入到这个地址上。

另外你的读写和擦除Flash函数没有判断返回值,这个有必要判断下
回复

使用道具 举报

3

主题

5

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2022-12-21 14:49:29 | 显示全部楼层
eric2013 发表于 2022-12-21 14:09
楼主的这个是操作的那个系列,每次都是擦除固定大小吗,参数都是固定的写入到这个地址上。

另外你的读写 ...

我用的743,硬汉哥,我擦的是bank1的第二个扇区(0x08020000),用户程序都在第一个扇区中,您说的判断返回值是指的这个么?
回复

使用道具 举报

3

主题

5

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2022-12-21 14:50:27 | 显示全部楼层
eric2013 发表于 2022-12-21 14:09
楼主的这个是操作的那个系列,每次都是擦除固定大小吗,参数都是固定的写入到这个地址上。

另外你的读写 ...

uint8_t judgement_data_valid(uint8_t *data_p)
{
    if((data_p[0] == 0xff) && (data_p[1] == 0xff) && \
        (data_p[2] == 0xff) && (data_p[3] == 0xff) )
    {
        return INVALID;
    }
   
    return VALID;
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2022-12-21 15:02:27 | 显示全部楼层
Peng. 发表于 2022-12-21 14:49
我用的743,硬汉哥,我擦的是bank1的第二个扇区(0x08020000),用户程序都在第一个扇区中,您说的判断返 ...

使用H743的Flash要注意以下几点
1、每次擦除128KB Flash,时间还挺长的。
2、每次编程必须是32字节的整数倍,而且编程地址必须32字节对齐。
3、HAL库一定要使用新版,老版是有bug的。4、然后你调用的Flash HAL库API都是有返回值的,你的返回值要看下。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 21:55 , Processed in 0.171620 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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