我已经调通了flash。
现在我的需求是这样:
我每隔1分钟存储一次信息,包括:时间,应力,信号幅值。。。。。大概100字节。
这样存最多可以存半个月的信息吧。
会有上位机软件不定期向我获取flash里的信息。它的指令里会给我两个时间参数,我要把这段时间内的历史数据发给上位机。
我的问题是这样:
1,如何把指令里的时间段和我的FLASH存储地址对应起来
2,考虑到停电的情况,flash里存储的信息并不是连续的。也就是说我要知道上位机想要获取的时间段内我自身有没有掉电。
3,半个月后我会用新的信息把最老的信息覆盖掉,这就导致flash最早的有效信息不一定在哪个地址上。
因为以前没做过这样的事,感觉有点思路但还是很乱。
请有经验的前辈指点一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
存入flash的每条信息都带着时间。先假设没有掉电的情况,每条信息在FLASH的存储地址和时间是一一对应的。
也就是说假如你最近一次存储数据的时间是t,那么在t之前的任何时间段T1到T2之间,都会有对应的地址段ADDR1到ADDR2。
如果有掉电呢?ADDR1和ADDR2会向你最近一次存储数据的地址偏移一定量。
所以我的思路是根据时间段算出地址区间,取得区间边界的时间与命令中的时间段作比较,如果吻合直接从地址段中取数据回应。如果不吻合就把地址段整体偏移,然后在取地址边界的时间作比较,这个过程用了二分法。
本着回应的数据只多不少的原则,我这样做暂时达到了目的。
一周热门 更多>