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.

[参考译文] CC2540:NV 存储器无法处理32位数字

Guru**** 2576815 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/564753/cc2540-nv-memory-not-working-for-32bit-numbers

器件型号:CC2540

我正在尝试将 UINT32值写入闪存存储器。 我能够写入16位、但不能写入32位。

这是我的代码。

uint8 flashWrite (uint8 addr、uint32 value){
uint8 flash_buffer[4];
for (int i=0;i<4;i++){
flash_buffer[i]=(uint8)值;
value = value>>8;
}
返回 osal_sv_write (addr、sizeof (flash_buffer)/sizeof (flash_buffer[0])、flash_buffer);
}

uint32 flashRead (uint8 addr){
uint8 buf[4];
uint32 value = 0;
uint8 i;buffef

(uint8)、sizef (uintsudr)、sizedr)(
对于(i=0;i<4;i++)
value += buf[i]<<(8*I);
return value;
} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我将0xAABBCCDD 写入 NV 闪存并读回同一地址、我只会得到0xFFFFFFCCDD。 缺少0xAABB
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您使用"osal_SNV_write (addr、4、flash_buffer)"而不是"osal_SNV_write (addr、sizeof (flash_buffer)/sizeof (flash_buffer[0])、flash_buffer)"和"osal_snv_read (addr、4、buf);"而不是"sizeof (flash_buf)、sizeof (0)、sizeof (sizeff)、可以读取"sizef_buf (sum_correct)、sizedr"(sizef (sizef)、sum_buf (sizef)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尝试更改"sizeof..." 并得到相同的结果。