36 #define INCLUDE_FROM_DATAFLASHMANAGER_C
53 uint8_t CurrDFPageByteDiv16 = (CurrDFPageByte >> 4);
54 bool UsingSecondBuffer =
false;
57 Dataflash_SelectChipFromPage(CurrDFPage);
59 #if (DATAFLASH_PAGE_SIZE > VIRTUAL_MEMORY_BLOCK_SIZE)
61 Dataflash_SendByte(DF_CMD_MAINMEMTOBUFF1);
62 Dataflash_SendAddressBytes(CurrDFPage, 0);
63 Dataflash_WaitWhileBusy();
67 Dataflash_SendByte(DF_CMD_BUFF1WRITE);
68 Dataflash_SendAddressBytes(0, CurrDFPageByte);
76 uint8_t BytesInBlockDiv16 = 0;
93 if (CurrDFPageByteDiv16 == (DATAFLASH_PAGE_SIZE >> 4))
96 Dataflash_WaitWhileBusy();
97 Dataflash_SendByte(UsingSecondBuffer ? DF_CMD_BUFF2TOMAINMEMWITHERASE : DF_CMD_BUFF1TOMAINMEMWITHERASE);
98 Dataflash_SendAddressBytes(CurrDFPage, 0);
101 CurrDFPageByteDiv16 = 0;
105 if (Dataflash_GetSelectedChip() == DATAFLASH_CHIP_MASK(DATAFLASH_TOTALCHIPS))
106 UsingSecondBuffer = !(UsingSecondBuffer);
109 Dataflash_SelectChipFromPage(CurrDFPage);
111 #if (DATAFLASH_PAGE_SIZE > VIRTUAL_MEMORY_BLOCK_SIZE)
116 Dataflash_WaitWhileBusy();
117 Dataflash_SendByte(UsingSecondBuffer ? DF_CMD_MAINMEMTOBUFF2 : DF_CMD_MAINMEMTOBUFF1);
118 Dataflash_SendAddressBytes(CurrDFPage, 0);
119 Dataflash_WaitWhileBusy();
124 Dataflash_SendByte(UsingSecondBuffer ? DF_CMD_BUFF2WRITE : DF_CMD_BUFF1WRITE);
125 Dataflash_SendAddressBytes(0, 0);
147 CurrDFPageByteDiv16++;
162 Dataflash_WaitWhileBusy();
163 Dataflash_SendByte(UsingSecondBuffer ? DF_CMD_BUFF2TOMAINMEMWITHERASE : DF_CMD_BUFF1TOMAINMEMWITHERASE);
164 Dataflash_SendAddressBytes(CurrDFPage, 0x00);
165 Dataflash_WaitWhileBusy();
172 Dataflash_DeselectChip();
185 uint16_t TotalBlocks)
189 uint8_t CurrDFPageByteDiv16 = (CurrDFPageByte >> 4);
192 Dataflash_SelectChipFromPage(CurrDFPage);
195 Dataflash_SendByte(DF_CMD_MAINMEMPAGEREAD);
196 Dataflash_SendAddressBytes(CurrDFPage, CurrDFPageByte);
197 Dataflash_SendByte(0x00);
198 Dataflash_SendByte(0x00);
199 Dataflash_SendByte(0x00);
200 Dataflash_SendByte(0x00);
208 uint8_t BytesInBlockDiv16 = 0;
225 if (CurrDFPageByteDiv16 == (DATAFLASH_PAGE_SIZE >> 4))
228 CurrDFPageByteDiv16 = 0;
232 Dataflash_SelectChipFromPage(CurrDFPage);
235 Dataflash_SendByte(DF_CMD_MAINMEMPAGEREAD);
236 Dataflash_SendAddressBytes(CurrDFPage, 0);
237 Dataflash_SendByte(0x00);
238 Dataflash_SendByte(0x00);
239 Dataflash_SendByte(0x00);
240 Dataflash_SendByte(0x00);
262 CurrDFPageByteDiv16++;
281 Dataflash_DeselectChip();
294 uint16_t TotalBlocks,
299 uint8_t CurrDFPageByteDiv16 = (CurrDFPageByte >> 4);
300 bool UsingSecondBuffer =
false;
303 Dataflash_SelectChipFromPage(CurrDFPage);
305 #if (DATAFLASH_PAGE_SIZE > VIRTUAL_MEMORY_BLOCK_SIZE)
307 Dataflash_SendByte(DF_CMD_MAINMEMTOBUFF1);
308 Dataflash_SendAddressBytes(CurrDFPage, 0);
309 Dataflash_WaitWhileBusy();
313 Dataflash_SendByte(DF_CMD_BUFF1WRITE);
314 Dataflash_SendAddressBytes(0, CurrDFPageByte);
318 uint8_t BytesInBlockDiv16 = 0;
324 if (CurrDFPageByteDiv16 == (DATAFLASH_PAGE_SIZE >> 4))
327 Dataflash_WaitWhileBusy();
328 Dataflash_SendByte(UsingSecondBuffer ? DF_CMD_BUFF2TOMAINMEMWITHERASE : DF_CMD_BUFF1TOMAINMEMWITHERASE);
329 Dataflash_SendAddressBytes(CurrDFPage, 0);
332 CurrDFPageByteDiv16 = 0;
336 if (Dataflash_GetSelectedChip() == DATAFLASH_CHIP_MASK(DATAFLASH_TOTALCHIPS))
337 UsingSecondBuffer = !(UsingSecondBuffer);
340 Dataflash_SelectChipFromPage(CurrDFPage);
342 #if (DATAFLASH_PAGE_SIZE > VIRTUAL_MEMORY_BLOCK_SIZE)
347 Dataflash_WaitWhileBusy();
348 Dataflash_SendByte(UsingSecondBuffer ? DF_CMD_MAINMEMTOBUFF2 : DF_CMD_MAINMEMTOBUFF1);
349 Dataflash_SendAddressBytes(CurrDFPage, 0);
350 Dataflash_WaitWhileBusy();
355 Dataflash_ToggleSelectedChipCS();
356 Dataflash_SendByte(UsingSecondBuffer ? DF_CMD_BUFF2WRITE : DF_CMD_BUFF1WRITE);
357 Dataflash_SendAddressBytes(0, 0);
361 for (uint8_t ByteNum = 0; ByteNum < 16; ByteNum++)
362 Dataflash_SendByte(*(BufferPtr++));
365 CurrDFPageByteDiv16++;
376 Dataflash_WaitWhileBusy();
377 Dataflash_SendByte(UsingSecondBuffer ? DF_CMD_BUFF2TOMAINMEMWITHERASE : DF_CMD_BUFF1TOMAINMEMWITHERASE);
378 Dataflash_SendAddressBytes(CurrDFPage, 0x00);
379 Dataflash_WaitWhileBusy();
382 Dataflash_DeselectChip();
395 uint16_t TotalBlocks,
400 uint8_t CurrDFPageByteDiv16 = (CurrDFPageByte >> 4);
403 Dataflash_SelectChipFromPage(CurrDFPage);
406 Dataflash_SendByte(DF_CMD_MAINMEMPAGEREAD);
407 Dataflash_SendAddressBytes(CurrDFPage, CurrDFPageByte);
408 Dataflash_SendByte(0x00);
409 Dataflash_SendByte(0x00);
410 Dataflash_SendByte(0x00);
411 Dataflash_SendByte(0x00);
415 uint8_t BytesInBlockDiv16 = 0;
421 if (CurrDFPageByteDiv16 == (DATAFLASH_PAGE_SIZE >> 4))
424 CurrDFPageByteDiv16 = 0;
428 Dataflash_SelectChipFromPage(CurrDFPage);
431 Dataflash_SendByte(DF_CMD_MAINMEMPAGEREAD);
432 Dataflash_SendAddressBytes(CurrDFPage, 0);
433 Dataflash_SendByte(0x00);
434 Dataflash_SendByte(0x00);
435 Dataflash_SendByte(0x00);
436 Dataflash_SendByte(0x00);
440 for (uint8_t ByteNum = 0; ByteNum < 16; ByteNum++)
441 *(BufferPtr++) = Dataflash_ReceiveByte();
444 CurrDFPageByteDiv16++;
455 Dataflash_DeselectChip();
462 Dataflash_SelectChip(DATAFLASH_CHIP1);
463 Dataflash_SendByte(DF_CMD_GETSTATUS);
466 if (Dataflash_ReceiveByte() & DF_STATUS_SECTORPROTECTION_ON)
468 Dataflash_ToggleSelectedChipCS();
471 Dataflash_SendByte(DF_CMD_SECTORPROTECTIONOFF[0]);
472 Dataflash_SendByte(DF_CMD_SECTORPROTECTIONOFF[1]);
473 Dataflash_SendByte(DF_CMD_SECTORPROTECTIONOFF[2]);
474 Dataflash_SendByte(DF_CMD_SECTORPROTECTIONOFF[3]);
478 #if (DATAFLASH_TOTALCHIPS == 2)
479 Dataflash_SelectChip(DATAFLASH_CHIP2);
480 Dataflash_SendByte(DF_CMD_GETSTATUS);
483 if (Dataflash_ReceiveByte() & DF_STATUS_SECTORPROTECTION_ON)
485 Dataflash_ToggleSelectedChipCS();
488 Dataflash_SendByte(DF_CMD_SECTORPROTECTIONOFF[0]);
489 Dataflash_SendByte(DF_CMD_SECTORPROTECTIONOFF[1]);
490 Dataflash_SendByte(DF_CMD_SECTORPROTECTIONOFF[2]);
491 Dataflash_SendByte(DF_CMD_SECTORPROTECTIONOFF[3]);
496 Dataflash_DeselectChip();
508 Dataflash_SelectChip(DATAFLASH_CHIP1);
509 Dataflash_SendByte(DF_CMD_READMANUFACTURERDEVICEINFO);
510 ReturnByte = Dataflash_ReceiveByte();
511 Dataflash_DeselectChip();
514 if (ReturnByte != DF_MANUFACTURER_ATMEL)
517 #if (DATAFLASH_TOTALCHIPS == 2)
519 Dataflash_SelectChip(DATAFLASH_CHIP2);
520 Dataflash_SendByte(DF_CMD_READMANUFACTURERDEVICEINFO);
521 ReturnByte = Dataflash_ReceiveByte();
522 Dataflash_DeselectChip();
525 if (ReturnByte != DF_MANUFACTURER_ATMEL)