В качестве подтверждения, предлагаю обратить внимание на состояние стёртой памяти в моём сообщении выше, а так же на результат перезаписи различных значений ячеек флеш значением 0xE339.
Вот значения, записанные в стёртую память, подписанные контрольной суммой CRC-32 (посчитанной модулем CRC МК):
FLASHdata start address: 0x08007000, size: 0x00001000
Flash content with a pattern
Page: 0 Data: 0x8007000:0x01010000 0x8007004:0x03030202 0x8007008:0x05050404 0x800700c:0x07070606 0x8007010:0x09090808 0x8007014:0x0B0B0A0A 0x8007018:0x0D0D0C0C 0x800701c:0x0F0F0E0E
Page: 0 Data: 0x8007020:0x11111010 0x8007024:0x13131212 0x8007028:0x15151414 0x800702c:0x17171616 0x8007030:0x19191818 0x8007034:0x1B1B1A1A 0x8007038:0x1D1D1C1C 0x800703c:0x1F1F1E1E
Page: 0 Data: 0x8007040:0x21212020 0x8007044:0x23232222 0x8007048:0x25252424 0x800704c:0x27272626 0x8007050:0x29292828 0x8007054:0x2B2B2A2A 0x8007058:0x2D2D2C2C 0x800705c:0x2F2F2E2E
Page: 0 Data: 0x8007060:0x31313030 0x8007064:0x33333232 0x8007068:0x35353434 0x800706c:0x37373636 0x8007070:0x39393838 0x8007074:0x3B3B3A3A 0x8007078:0x3D3D3C3C 0x800707c:0x3F3F3E3E
Page: 0 Data: 0x8007080:0x41414040 0x8007084:0x43434242 0x8007088:0x45454444 0x800708c:0x47474646 0x8007090:0x49494848 0x8007094:0x4B4B4A4A 0x8007098:0x4D4D4C4C 0x800709c:0x4F4F4E4E
Page: 0 Data: 0x80070a0:0x51515050 0x80070a4:0x53535252 0x80070a8:0x55555454 0x80070ac:0x57575656 0x80070b0:0x59595858 0x80070b4:0x5B5B5A5A 0x80070b8:0x5D5D5C5C 0x80070bc:0x5F5F5E5E
Page: 0 Data: 0x80070c0:0x61616060 0x80070c4:0x63636262 0x80070c8:0x65656464 0x80070cc:0x67676666 0x80070d0:0x69696868 0x80070d4:0x6B6B6A6A 0x80070d8:0x6D6D6C6C 0x80070dc:0x6F6F6E6E
Page: 0 Data: 0x80070e0:0x71717070 0x80070e4:0x73737272 0x80070e8:0x75757474 0x80070ec:0x77777676 0x80070f0:0x79797878 0x80070f4:0x7B7B7A7A 0x80070f8:0x7D7D7C7C 0x80070fc:0x7F7F7E7E
CRC of page 0 is: 0xC5D7D770
Page: 1 Data: 0x8007100:0x81818080 0x8007104:0x83838282 0x8007108:0x85858484 0x800710c:0x87878686 0x8007110:0x89898888 0x8007114:0x8B8B8A8A 0x8007118:0x8D8D8C8C 0x800711c:0x8F8F8E8E
Page: 1 Data: 0x8007120:0x91919090 0x8007124:0x93939292 0x8007128:0x95959494 0x800712c:0x97979696 0x8007130:0x99999898 0x8007134:0x9B9B9A9A 0x8007138:0x9D9D9C9C 0x800713c:0x9F9F9E9E
Page: 1 Data: 0x8007140:0xA1A1A0A0 0x8007144:0xA3A3A2A2 0x8007148:0xA5A5A4A4 0x800714c:0xA7A7A6A6 0x8007150:0xA9A9A8A8 0x8007154:0xABABAAAA 0x8007158:0xADADACAC 0x800715c:0xAFAFAEAE
Page: 1 Data: 0x8007160:0xB1B1B0B0 0x8007164:0xB3B3B2B2 0x8007168:0xB5B5B4B4 0x800716c:0xB7B7B6B6 0x8007170:0xB9B9B8B8 0x8007174:0xBBBBBABA 0x8007178:0xBDBDBCBC 0x800717c:0xBFBFBEBE
Page: 1 Data: 0x8007180:0xC1C1C0C0 0x8007184:0xC3C3C2C2 0x8007188:0xC5C5C4C4 0x800718c:0xC7C7C6C6 0x8007190:0xC9C9C8C8 0x8007194:0xCBCBCACA 0x8007198:0xCDCDCCCC 0x800719c:0xCFCFCECE
Page: 1 Data: 0x80071a0:0xD1D1D0D0 0x80071a4:0xD3D3D2D2 0x80071a8:0xD5D5D4D4 0x80071ac:0xD7D7D6D6 0x80071b0:0xD9D9D8D8 0x80071b4:0xDBDBDADA 0x80071b8:0xDDDDDCDC 0x80071bc:0xDFDFDEDE
Page: 1 Data: 0x80071c0:0xE1E1E0E0 0x80071c4:0xE3E3E2E2 0x80071c8:0xE5E5E4E4 0x80071cc:0xE7E7E6E6 0x80071d0:0xE9E9E8E8 0x80071d4:0xEBEBEAEA 0x80071d8:0xEDEDECEC 0x80071dc:0xEFEFEEEE
Page: 1 Data: 0x80071e0:0xF1F1F0F0 0x80071e4:0xF3F3F2F2 0x80071e8:0xF5F5F4F4 0x80071ec:0xF7F7F6F6 0x80071f0:0xF9F9F8F8 0x80071f4:0xFBFBFAFA 0x80071f8:0xFDFDFCFC 0x80071fc:0xFFFFFEFE
CRC of page 1 is: 0xBC97F246
Занято всего две страницы по 256 байт каждая (два минимальных блока записи). Тестовый код проверяет значения от 0 до 256 в каждом байте 16бит-полуслова (слово в данной архитектуре - 32 бита).
Выполнена запись в каждое полуслово значения 0xE339. Запись выполнена "быстрым" способом, 256 байт за один раз в каждую страницу. Стирание не использовалось, запись поверх тестовых данных.
Вот результат чтения после перезаписи (см. контрольные суммы):
Write 0xE339 over existing halfwords witout of erasing Flash content after 0xFFFF write-over Page: 0 Data: 0x8007000:0x01010000 0x8007004:0x03030202 0x8007008:0x05050404 0x800700c:0x07070606 0x8007010:0x09090808 0x8007014:0x0B0B0A0A 0x8007018:0x0D0D0C0C 0x800701c:0x0F0F0E0E Page: 0 Data: 0x8007020:0x11111010 0x8007024:0x13131212 0x8007028:0x15151414 0x800702c:0x17171616 0x8007030:0x19191818 0x8007034:0x1B1B1A1A 0x8007038:0x1D1D1C1C 0x800703c:0x1F1F1E1E Page: 0 Data: 0x8007040:0x21212020 0x8007044:0x23232222 0x8007048:0x25252424 0x800704c:0x27272626 0x8007050:0x29292828 0x8007054:0x2B2B2A2A 0x8007058:0x2D2D2C2C 0x800705c:0x2F2F2E2E Page: 0 Data: 0x8007060:0x31313030 0x8007064:0x33333232 0x8007068:0x35353434 0x800706c:0x37373636 0x8007070:0x39393838 0x8007074:0x3B3B3A3A 0x8007078:0x3D3D3C3C 0x800707c:0x3F3F3E3E Page: 0 Data: 0x8007080:0x41414040 0x8007084:0x43434242 0x8007088:0x45454444 0x800708c:0x47474646 0x8007090:0x49494848 0x8007094:0x4B4B4A4A 0x8007098:0x4D4D4C4C 0x800709c:0x4F4F4E4E Page: 0 Data: 0x80070a0:0x51515050 0x80070a4:0x53535252 0x80070a8:0x55555454 0x80070ac:0x57575656 0x80070b0:0x59595858 0x80070b4:0x5B5B5A5A 0x80070b8:0x5D5D5C5C 0x80070bc:0x5F5F5E5E Page: 0 Data: 0x80070c0:0x61616060 0x80070c4:0x63636262 0x80070c8:0x65656464 0x80070cc:0x67676666 0x80070d0:0x69696868 0x80070d4:0x6B6B6A6A 0x80070d8:0x6D6D6C6C 0x80070dc:0x6F6F6E6E Page: 0 Data: 0x80070e0:0x71717070 0x80070e4:0x73737272 0x80070e8:0x75757474 0x80070ec:0x77777676 0x80070f0:0x79797878 0x80070f4:0x7B7B7A7A 0x80070f8:0x7D7D7C7C 0x80070fc:0x7F7F7E7E CRC of page 0 is: 0xC5D7D770 Page: 1 Data: 0x8007100:0x81818080 0x8007104:0x83838282 0x8007108:0x85858484 0x800710c:0x87878686 0x8007110:0x89898888 0x8007114:0x8B8B8A8A 0x8007118:0x8D8D8C8C 0x800711c:0x8F8F8E8E Page: 1 Data: 0x8007120:0x91919090 0x8007124:0x93939292 0x8007128:0x95959494 0x800712c:0x97979696 0x8007130:0x99999898 0x8007134:0x9B9B9A9A 0x8007138:0x9D9D9C9C 0x800713c:0x9F9F9E9E Page: 1 Data: 0x8007140:0xA1A1A0A0 0x8007144:0xA3A3A2A2 0x8007148:0xA5A5A4A4 0x800714c:0xA7A7A6A6 0x8007150:0xA9A9A8A8 0x8007154:0xABABAAAA 0x8007158:0xADADACAC 0x800715c:0xAFAFAEAE Page: 1 Data: 0x8007160:0xB1B1B0B0 0x8007164:0xB3B3B2B2 0x8007168:0xB5B5B4B4 0x800716c:0xB7B7B6B6 0x8007170:0xB9B9B8B8 0x8007174:0xBBBBBABA 0x8007178:0xBDBDBCBC 0x800717c:0xBFBFBEBE Page: 1 Data: 0x8007180:0xC1C1C0C0 0x8007184:0xC3C3C2C2 0x8007188:0xC5C5C4C4 0x800718c:0xC7C7C6C6 0x8007190:0xC9C9C8C8 0x8007194:0xCBCBCACA 0x8007198:0xCDCDCCCC 0x800719c:0xCFCFCECE Page: 1 Data: 0x80071a0:0xD1D1D0D0 0x80071a4:0xD3D3D2D2 0x80071a8:0xD5D5D4D4 0x80071ac:0xD7D7D6D6 0x80071b0:0xD9D9D8D8 0x80071b4:0xDBDBDADA 0x80071b8:0xDDDDDCDC 0x80071bc:0xDFDFDEDE Page: 1 Data: 0x80071c0:0xE1E1E0E0 0x80071c4:0xE3E3E2E2 0x80071c8:0xE5E5E4E4 0x80071cc:0xE7E7E6E6 0x80071d0:0xE9E9E8E8 0x80071d4:0xEBEBEAEA 0x80071d8:0xEDEDECEC 0x80071dc:0xEFEFEEEE Page: 1 Data: 0x80071e0:0xF1F1F0F0 0x80071e4:0xF3F3F2F2 0x80071e8:0xF5F5F4F4 0x80071ec:0xF7F7F6F6 0x80071f0:0xF9F9F8F8 0x80071f4:0xFBFBFAFA 0x80071f8:0xFDFDFCFC 0x80071fc:0xFFFFFEFE CRC of page 1 is: 0xBC97F246
Как видно, данные не изменились. Что подтверждает предположение о применении функции XOR 0x1CC6 к данным флеш как при чтении, так и при записи.
Судите сами: Чистая флеш читается как 0xE339, что равно 0xFFFF XOR 0xE339. А запись 0xE339, эквивалентна по воздействию на ячейки записи 0xFFFF, так как 0xE339 XOR 0x1CC6 = 0xFFFF.