EEPROM问题2

[复制链接]
1864|2
 楼主| win2000_li 发表于 2008-5-16 22:56 | 显示全部楼层 |阅读模式
请问各位同仁,在写EEPROM时,为了计算偏移量.是不是要定义一个数据的格式.<br /><br />比如:&nbsp;头(0x55)+长度(LEN)+数据(Data)<br /><br />在下一次写数据的时候,在开始址地址找起走,直到找到最后一个。来计算偏<br /><br />移量。再写到这个偏移量+开始地址的下一个地址。<br /><br />还是有其它办法,请兄弟指点。<br /><br />就是计算要写EEPROM的偏移量。<br /><br />请大家帮忙!!!<br /><br />
 楼主| win2000_li 发表于 2008-5-17 08:59 | 显示全部楼层

请大家帮忙!!!

以下这段程序是我从飞思卡尔AW32&nbsp;copy过来的,但是水平太差没有看懂。<br /><br />请兄弟们指点一下啊!<br /><br />/******************************************************************&nbsp;<br />*&nbsp;&nbsp;Function&nbsp;Description:&nbsp;&nbsp;get&nbsp;cur&nbsp;eeprom&nbsp;emulator&nbsp;data&nbsp;<br />*&nbsp;&nbsp;Return:&nbsp;0x0&nbsp;-&nbsp;0x200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valid&nbsp;offset&nbsp;to&nbsp;latest&nbsp;data&nbsp;package&nbsp;<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EEPROM_EMPTY&nbsp;&nbsp;&nbsp;&nbsp;No&nbsp;data&nbsp;available&nbsp;<br />*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EEPROM_INVALID&nbsp;&nbsp;Data&nbsp;corruption,&nbsp;need&nbsp;erase<br />*******************************************************************/<br />static&nbsp;UINT16&nbsp;get_cur_eeprom_offset()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;UINT16&nbsp;prev_len,&nbsp;cur_len;<br />&nbsp;&nbsp;&nbsp;&nbsp;UINT16&nbsp;cur_offset;<br />&nbsp;&nbsp;&nbsp;&nbsp;UINT8&nbsp;*addr;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;searching&nbsp;from&nbsp;start&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;cur_offset&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;prev_len&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;addr&nbsp;=&nbsp;(UINT8*)EEPROM_EMUL_START;<br />&nbsp;&nbsp;&nbsp;&nbsp;cur_len&nbsp;=&nbsp;*(UINT16&nbsp;*)addr;<br />&nbsp;&nbsp;&nbsp;&nbsp;while((cur_len&nbsp;&lt&nbsp;EEPROM_EMUL_SIZE&nbsp;-&nbsp;4)&nbsp;&&&nbsp;(cur_offset&nbsp;&lt&nbsp;EEPROM_EMUL_SIZE&nbsp;-&nbsp;2))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prev_len&nbsp;=&nbsp;cur_len;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur_offset&nbsp;+=&nbsp;cur_len&nbsp;+&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr&nbsp;=&nbsp;(UINT8&nbsp;*)(EEPROM_EMUL_START&nbsp;+&nbsp;cur_offset);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur_len&nbsp;=&nbsp;*(UINT16&nbsp;*)addr;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;correct&nbsp;last&nbsp;data&nbsp;package&nbsp;start&nbsp;with&nbsp;len&nbsp;+&nbsp;data&nbsp;+&nbsp;padding&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;if((cur_len&nbsp;==&nbsp;0xffff)&nbsp;&&&nbsp;(cur_offset&nbsp;&lt&nbsp;EEPROM_EMUL_SIZE&nbsp;-&nbsp;1))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur_offset&nbsp;-=&nbsp;prev_len&nbsp;+&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur_offset&nbsp;=&nbsp;EEPROM_INVALID;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;return&nbsp;correct&nbsp;offset&nbsp;for&nbsp;the&nbsp;last&nbsp;data&nbsp;package&nbsp;available&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;cur_offset;<br />}<br />
 楼主| win2000_li 发表于 2008-5-19 13:54 | 显示全部楼层

顶起啊!!!!!!!!!!!

为什么没有人理我啊?????
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

718

帖子

1

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