Ameba Arduino: [RTL8195] Flash Memory – 使用超过4K的flash memory

材料准备

  • Ameba x 1

范例说明

Flash Memory API预设使用4K大小的memory,对大部份的应用应该已经足够,但如果遇到需要用到超过4K的情况,可以指定特定的位置与大小来使用。
首先打开范例 “File” -> “Examples” -> “AmebaFlashMemory” -> “ReadWriteOneWord”
这个范例里会宣告Flash起始位置为0xFC000, 大小为0x4000。 (预设起始位置为0xFF000,大小为0x1000)
然后根据offset对特定位置做读写。范例里使用offset 0x3F00,即Flash位置0xFC000 + 0x3F00 = 0xFFF00。第一次读出来将值设定成0,之后每次开机都加1。
1

程式码说明

之前的Flash API可以直接使用,但预设起始位置为0xFF000,大小为0x1000,如果要使用别的设定,则要呼叫begin(),范例里第一个参数是起始位置,第二个参数是大小。

FlashMemory.begin(0xFC000, 0x4000);

要读出这个区块的值,使用readWord(),范例里读出offset 0x3F00的地方,也就是0xFC000 + 0x3F00 = 0xFFF00的位置,读出来的大小为32-bit,放在回传值里

value = FlashMemory.readWord(0x3F00);

写入则使用writeWord(),第一个参数是offset,第二个参数是要写入的值。

FlashMemory.writeWord(0x3F0C, value);