ESP8266 SPI Запись и чтение в энерго независимую память

Пытаюсь разобраться с (адресами) чтением и записью в память ESP8266. Вот есть код

   char copy[1000];
   spi_flash_erase_sector(0x7c); //Очистка зачем она нужна непонятно но без нее не работает
   spi_flash_write(0x7c000, (uint32 *)&copy, sizeof(copy)); //Непосредствено запись
   ...
   char ssidAp[1000];
   spi_flash_read(0x7c000, (uint32 *)&ssidAp, sizeof(ssidAp)); //Чтение

Все работает но если указываю в очистке адрес не 0x7c а 0x7c000 Как и в других местах не работает запись. Цифра вроде одинакова должна быть. В чем проблема и как исправить может кто то знает. (Хочу перевести адреса в десятичною систему, но пока не решу данный вопрос ето не возможно)

===Структурирую Ответ===

Спасибо ответу разобраться Все заработало как нужно.

7C000 = 507904 (Байта)

7C = 124 (Просто Номер)

Размер сектора в байтах = 4096

Байт с которого начинается запись = 507904 Номер сектора который будит стерт = 124

Получилось начальный сектор с которого начинаться стирание = Номер * Размер = 124 * 4096;

В таком случаи с в десятичной системе это будит так

spi_flash_erase_sector(124);
spi_flash_write(507904, (uint32 *)&copy, sizeof(copy));

или

int Num = 124;
spi_flash_erase_sector(Num);
spi_flash_write(Num * 4096, (uint32 *)&copy, sizeof(copy)); 

Ответы (1 шт):

Автор решения: eri

spi_flash_erase_sector - просит номер сектора, а не байта.

Размер сектора 4096 == 0x1000

Сектор с адресом 0x7c000 соответсвенно имеет адрес 0x7c000 // 0x1000 Стирается до 0x7cfff - учитывай это, если хранишь какие-то данные ещё в этом секторе. Стирание требуется потому что так организованна SPI флешка. Если нужно хранить какие-то данные - лучше подпаять нанд. SPI не предназназначенна для постоянных перезаписей.

→ Ссылка