kl25的flash支持间断的写入数据吗

[复制链接]
4293|28
 楼主| 774729254 发表于 2013-12-18 09:51 | 显示全部楼层 |阅读模式
kl25自带的flash支持间断的写入数据吗,我的数据想通过串口每隔一秒发送一次,可以把数据全部写入吗
ar_m_cu 发表于 2013-12-18 10:08 | 显示全部楼层
肯定支持的
 楼主| 774729254 发表于 2013-12-18 10:30 | 显示全部楼层
ar_m_cu 发表于 2013-12-18 10:08
肯定支持的

你试验过吗
ar_m_cu 发表于 2013-12-18 10:36 | 显示全部楼层
774729254 发表于 2013-12-18 10:30
你试验过吗

没有试过这个,试过其他的,但是这些芯片都是类似的,肯定是可以的
 楼主| 774729254 发表于 2013-12-18 10:54 | 显示全部楼层
ar_m_cu 发表于 2013-12-18 10:36
没有试过这个,试过其他的,但是这些芯片都是类似的,肯定是可以的

但是这个flash不是写一次就得擦除一次,不然数据不是会被覆盖掉吗
ar_m_cu 发表于 2013-12-18 11:44 | 显示全部楼层
774729254 发表于 2013-12-18 10:54
但是这个flash不是写一次就得擦除一次,不然数据不是会被覆盖掉吗

写满再擦,比如你用其中的20K存储GPS数据,首先擦除这20K,然后开始写数据,第一次写10B,第二次接着上次的地址写20B,第三次接着上次的地址写10B。。。一直写,写满20K后再擦
 楼主| 774729254 发表于 2013-12-18 14:13 | 显示全部楼层
ar_m_cu 发表于 2013-12-18 11:44
写满再擦,比如你用其中的20K存储GPS数据,首先擦除这20K,然后开始写数据,第一次写10B,第二次接着上次 ...

那个地址我不会操作哎,我这里有写好的例程,不过他是对固定的扇区操作的,而且发送的是固定的数据,就写一次,所以我不怎么会改,初学者,清多多指教
ar_m_cu 发表于 2013-12-18 15:08 | 显示全部楼层
774729254 发表于 2013-12-18 14:13
那个地址我不会操作哎,我这里有写好的例程,不过他是对固定的扇区操作的,而且发送的是固定的数据,就写 ...

你在坛子里面找用FLASH模拟EEPROM的例程,这个可以作为参考
 楼主| 774729254 发表于 2013-12-18 16:14 | 显示全部楼层
有没有飞思卡尔的官方发言人,说明一下呢?
jd972594 发表于 2013-12-18 16:27 | 显示全部楼层
你可以每隔一秒将最新收到的数据写入FLASH啊
并不是写一次就得擦除一次的。
FSL_TICS_Robin 发表于 2013-12-18 16:30 | 显示全部楼层
774729254 发表于 2013-12-18 16:14
有没有飞思卡尔的官方发言人,说明一下呢?

请问你是想用苏大那本书上的函数操作吗?
FSL_TICS_Robin 发表于 2013-12-18 16:39 | 显示全部楼层
我记得你之前使用的都是苏大老师书上的例程,我看书上对flash函数写的很清楚啊。
其中就有flash_write函数
 楼主| 774729254 发表于 2013-12-18 19:24 | 显示全部楼层
FSL_TICS_Robin 发表于 2013-12-18 16:39
我记得你之前使用的都是苏大老师书上的例程,我看书上对flash函数写的很清楚啊。
其中就有flash_write函数 ...

里面是有例程,但是他里面没有说明是否可以接收串口的数据,而且是隔一秒发送一次的数据,里面只说了每写之前都要擦除啊,例程只是简单地实现flash写入与读出的功能
jd972594 发表于 2013-12-18 19:31 | 显示全部楼层
774729254 发表于 2013-12-18 19:24
里面是有例程,但是他里面没有说明是否可以接收串口的数据,而且是隔一秒发送一次的数据,里面只说了每写 ...

楼主 你觉得数据 和 串口收到的数据 有什么区别吗?
FLASH是单独的模块,书上肯定只提将数据存入FLASH。

楼主到底想做什么? 不是KL25芯片通过串口中断接收数据,将有用的数据放入数组,再把数组中的数据存入flash,然后如果另外一个串口收到特定指令(其实就是你自己程序里约定的)进行flash擦除吗?
 楼主| 774729254 发表于 2013-12-18 20:02 | 显示全部楼层
jd972594 发表于 2013-12-18 19:31
楼主 你觉得数据 和 串口收到的数据 有什么区别吗?
FLASH是单独的模块,书上肯定只提将数据存入FLASH。
...

我串口接收到的数据是一秒钟发送一次,如果都写在一个扇区,会覆盖掉原来的,而且书上说每写入到flash一次,就得要擦除一次啊,我是想保存所有的数据啊,而且书上只是说保存在一个扇区,没有说保存在连续几个扇区,我不怎么会编啊
FSL_TICS_Robin 发表于 2013-12-18 20:09 | 显示全部楼层
774729254 发表于 2013-12-18 20:02
我串口接收到的数据是一秒钟发送一次,如果都写在一个扇区,会覆盖掉原来的,而且书上说每写入到flash一 ...

我觉得你理解错了,flash在写入前擦除是确保这个扇区全1,那么我写入的才能正确。
一旦你将这个扇区擦除过,就可以对里面写了。
并不是你想写1byte进去,就要整片扇区擦除,写第二个byte,再整片擦除。
请参考6楼网友的解释。
FSL_TICS_Robin 发表于 2013-12-18 20:49 | 显示全部楼层
774729254 发表于 2013-12-18 20:02
我串口接收到的数据是一秒钟发送一次,如果都写在一个扇区,会覆盖掉原来的,而且书上说每写入到flash一 ...

请问你用的是这个函数吗?
flash_write.jpg
你一个扇区满了,可以换个扇区。
偏移地址和字节数目,是根据串口数据大小来的。
比如你的126扇区刚被你擦除,每次写4字节
第一次可以从offset写0,cnt写4。第一次写的是0~3地址处
第二次offset就是4了,cnt还是4.这样第二次其实写的就是4~7地址处

FSL_FAE_River 发表于 2013-12-18 22:12 | 显示全部楼层
如果数据很重要,建议开2个相同大小的区域,写满第一个就将新的数据写入第二个区,直到第二区满了以后再去擦除第一个区
 楼主| 774729254 发表于 2013-12-19 10:06 | 显示全部楼层
本帖最后由 774729254 于 2013-12-19 10:08 编辑
FSL_TICS_Robin 发表于 2013-12-18 20:49
请问你用的是这个函数吗?

你一个扇区满了,可以换个扇区。

他给的例程是写在10扇区,那像我要实现串口接收数据并保存,他会地址会自动增加吗,还是我得编程实现?
QQ截图20131219100606.png
FSL_TICS_Robin 发表于 2013-12-19 10:47 | 显示全部楼层
774729254 发表于 2013-12-19 10:06
他给的例程是写在10扇区,那像我要实现串口接收数据并保存,他会地址会自动增加吗,还是我得编程实现?
...

这个当然要你自己控制啦,因为书上这个只是flash模块的驱动。
你只是调用它这个工具来使用,具体怎么使用当然是根据使用者意图决定的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

299

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部