[PIC®/AVR®/dsPIC®产品]

关于dsPIC33FJ128芯片的Flash读写的问题

[复制链接]
1318|15
手机看帖
扫描二维码
随时随地手机跟帖
阿巴斯|  楼主 | 2023-1-31 19:41 | 显示全部楼层 |阅读模式
近日在做dsPIC33FJ128芯片的片内Flash读写的时候,遇到2个问题:

1、程序1读写片内Flash,然后通过CAN 发送出来,写是通过扇区的方式来写的,读数据也是按照扇区的方式来读。即一次读写一个扇区。但是程序1中在一个地址写入数据,下载进芯片,等待芯片运行几秒后,通过MPLAB X IDE软件在读取整个Flash的数据,发现写数据的地址与程序1中写数据的地址不一样,如:写的地址是0x0000F000,但是重新读取的flash中的数据地址是:0x0000E400。这个很不理解。

2、程序1在片内的Flash中写入数据,在程序2中要读这个数据,如何保证数据不被程序2覆盖?

麻烦大佬给上上课。。。。。

使用特权

评论回复
阿巴斯|  楼主 | 2023-1-31 19:45 | 显示全部楼层
@lvyunhua  大佬解读写下,感谢

使用特权

评论回复
lvyunhua| | 2023-2-2 09:35 | 显示全部楼层
1、程序1读写片内Flash的地址是不是和程序1的存储空间重合了,需要避开
2、程序1写完做一个标志,通知程序2可以读取了,这个标志可以在数据FLASH中指定一个地址来存储’

使用特权

评论回复
阿巴斯|  楼主 | 2023-3-2 16:24 | 显示全部楼层
lvyunhua 发表于 2023-2-2 09:35
1、程序1读写片内Flash的地址是不是和程序1的存储空间重合了,需要避开
2、程序1写完做一个标志,通知程序2 ...

谢谢,问题解决了!是2个不同的程序,程序1写flash,然后下载程序2读程序1写的flash数据。需要使用IPE软件设置保留区域范围,程序写数据到核实的区域就行了!

使用特权

评论回复
嵌入式新手hhh| | 2024-4-26 15:41 | 显示全部楼层
有偿求大佬的flash代码哦~

使用特权

评论回复
l1uyn9b| | 2024-5-11 12:53 | 显示全部楼层
关于程序1中写入数据后读取出现地址不一致的问题,可能是由于程序1中的写入操作没有正确完成导致的

使用特权

评论回复
lamanius| | 2024-5-11 14:10 | 显示全部楼层
建议在进行Flash写入操作时,需要确保写入操作已经完成,可以通过检查相关的状态寄存器或标志位来确认写入操作是否成功

使用特权

评论回复
b5z1giu| | 2024-5-11 15:17 | 显示全部楼层
需要考虑是否有其他操作或中断干扰了写入操作,导致数据写入不完整

使用特权

评论回复
q1d0mnx| | 2024-5-11 16:13 | 显示全部楼层
为了确保程序2中读取的数据不被覆盖,可以考虑在程序1中写入数据时,使用某种方式进行标记或保护

使用特权

评论回复
g0d5xs| | 2024-5-11 17:22 | 显示全部楼层
其实可以在写入数据时在Flash中的特定位置写入一个标记,表示该数据已经被写入并且有效

使用特权

评论回复
y1n9an| | 2024-5-11 18:28 | 显示全部楼层
我觉得可以在程序2中读取数据时,首先检查这个标记,如果标记存在且有效,则可以读取相应的数据。这样可以避免程序2覆盖程序1中写入的数据

使用特权

评论回复
zhizia4f| | 2024-5-12 07:45 | 显示全部楼层
Flash的话,只要地址设置好,一般不会覆盖啥的吧

使用特权

评论回复
lix1yr| | 2024-5-12 08:30 | 显示全部楼层
你想要做啥啊?是OTA升级吗?

使用特权

评论回复
liu96jp| | 2024-5-12 10:05 | 显示全部楼层
建议你仔细检查程序1中的写入操作是否正确完成,并考虑在写入数据时添加一些标记或保护机制来确保数据的完整性和不被覆盖

使用特权

评论回复
t1ngus4| | 2024-5-12 11:27 | 显示全部楼层
按理来说,地址设置对了,应该就可以的啊,而且数据地址设置别弄重合了

使用特权

评论回复
阿巴斯|  楼主 | 2024-5-28 14:47 | 显示全部楼层
嵌入式新手hhh 发表于 2024-4-26 15:41
有偿求大佬的flash代码哦~

这个网上还是有教程的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

26

帖子

0

粉丝