主题中讨论的其他器件:HALCOGEN、 TMS570LC4357、
你好。
IAM 正在处理 EEPROM 读取示例。我的配置如下
1.虚拟扇区的数目为2
2.块数为1
块大小为8字节
IAM 尝试仅存储一个整数值、即压力值到存储器中、但它同时存储压力和温度。、
请帮助您爱上它。
谢谢
注:示例和存储器布局位于下图中
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好。
IAM 正在处理 EEPROM 读取示例。我的配置如下
1.虚拟扇区的数目为2
2.块数为1
块大小为8字节
IAM 尝试仅存储一个整数值、即压力值到存储器中、但它同时存储压力和温度。、
请帮助您爱上它。
谢谢
注:示例和存储器布局位于下图中
您好 Surya、
如果只想存储一个整数的数据、则必须将块大小保持为4字节、声明两个块来存储温度和压力、并将块-1用于存储温度、而块-2用于存储压力。 您可以调用相应的块来存储相应参数的数据。
--
谢谢、此致、
Jagadish。
非常感谢您的回复。
尊敬的先生:
当 IAM 将压力值再次写入块时,它将到达该行。如果块已满,我们是否需要编写一些函数来覆盖块中的数据。,或者它将自动覆盖数据?
TI_fee_WriteAsync (BlockNumber、&presse_value);
操作
{
TI_fee_MainFunction();
delay();
STATUS=TI_FEE _GetStatus (0);
}
while (状态!=空闲);
BlockNumber = 0x2;
TI_fee_WriteAsync (BlockNumber、&temp_value);
操作
{
TI_fee_MainFunction();
delay();
STATUS=TI_FEE _GetStatus (0);
}
while (状态!=空闲);
presse_value = 120;
BlockNumber = 0x1U;
TI_fee_WriteAsync (BlockNumber、&presse_value); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 此处是编译器结构
操作
{
TI_fee_MainFunction();
delay();
STATUS=TI_FEE _GetStatus (0);
}
while (状态!=空闲);
我不了解存储器位置,前32个字节用于虚拟扇区标头,后24个字节用于数据块标头,但在存储器中,它首先显示数据标头旁边的数据? 其中有什么问题,请您解释一下吗?
您好 Surya、
您的数据看起来令人困惑、我在此处附上我的代码、请仔细检查一下、并使用我的参考代码验证您的配置和代码。
e2e.ti.com/.../FEE_5F00_TEST_5F00_LC4357.zip
我还在上面的代码中添加了两个读取函数、除了剩余的所有内容都与您的代码相匹配、
使用上述代码、我将以下数据写入闪存组7
在上面的数据中、黄色表示虚拟扇区标头、蓝色表示压力传感器数据、如块1、红色表示温度传感器数据、如块2。
我怀疑您第一次错误地进行了配置是不是吗? 您是否在修改配置和代码后完全擦除闪存?
如果不是、请确保在对 HALCoGen 中的 FEE 块或扇区立即执行新配置后、首次擦除整个闪存。
这是擦除整个闪存的选项
注意:我在 TMS570LC4357上创建了项目、而不是 在 TMS570LS3137中创建了项目。
--
谢谢、此致、
Jagadish。
尊敬的先生:
仔细检查您的代码并进行必要的更改、我在存储器中获得了与您的样本相同的数据、之后 IAM 尝试覆盖块值中的数据、即、 压力值设为“其他”,但为什么它不覆盖块1中的数据,为什么要将数据存储在另一个位置,如下所示?
您好 Surya、
[引用 userid="551680" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1194544/tms570ls3137-regarding-eeprom-access/4505527 #4505527"]向其他方推压值,但为什么它不覆盖块1中的数据,为什么它存储在下面所示的其他位置?不要混淆、这只是预期行为。 它不是实际的 EEPROM、而是闪存仿真的 EEPROM。 这里的数据不会被覆盖、这里的最小擦除大小仅为扇区。 因此、在这里、当您向块写入一些新数据时、它将再次存储在新的存储器位置、而不是覆盖旧的存储器位置、 但是 、写入的数据 将被标记为无效数据、新数据将被标记为有效数据、因此每当您再次请求获取某个数据块时、FEE 驱动器将仅向您提供最新的有效数据。
请使用块编号验证读取函数、以清楚了解上述行为。
写入一定数量后、虚拟扇区将完全填充、此时所有之前的有效数据将被复制到新的虚拟扇区中、旧的虚拟扇区将标记为擦除操作。
我希望这澄清了你的疑问。
--
谢谢、此致、
Jagadish。
非常感谢 您的回复。
我现在了解一切