Sample SPI drivers for a number of the Adesto Technologies flash devices.
dataflash.h
Go to the documentation of this file.
1 /*
2  * The Clear BSD License
3  * Copyright (c) 2018 Adesto Technologies Corporation, Inc
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without modification,
7  * are permitted (subject to the limitations in the disclaimer below) provided
8  * that the following conditions are met:
9  *
10  * o Redistributions of source code must retain the above copyright notice, this list
11  * of conditions and the following disclaimer.
12  *
13  * o Redistributions in binary form must reproduce the above copyright notice, this
14  * list of conditions and the following disclaimer in the documentation and/or
15  * other materials provided with the distribution.
16  *
17  * o Neither the name of the copyright holder nor the names of its
18  * contributors may be used to endorse or promote products derived from this
19  * software without specific prior written permission.
20  *
21  * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
24  * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
25  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
26  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
27  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
29  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  */
33 
42 #ifndef DATAFLASH_H_
43 #define DATAFLASH_H_
44 
45 #include "cmd_defs.h"
46 #include "spi_driver.h"
47 #include "helper_functions.h"
48 #include <stdio.h>
49 #include <stdlib.h>
50 
51 #if (PARTNO == AT45DB021E) || \
52  (PARTNO == AT45DB041E) || \
53  (PARTNO == AT45DB081E) || \
54  (PARTNO == AT45DB161E) || \
55  (PARTNO == AT45DB321E) || \
56  (PARTNO == AT45DB641E) || \
57  (PARTNO == AT45DQ161) || \
58  (PARTNO == AT45DQ321) || \
59  (PARTNO == AT25PE20) || \
60  (PARTNO == AT25PE40) || \
61  (PARTNO == AT25PE80) || \
62  (PARTNO == AT25PE16) || \
63  (ALL == 1)
64 
66 
67 /******************************************
68  *
69  *
70  * Dataflash Commands
71  *
72  *
73  ******************************************/
80 
90 void dataflashReadMID(uint8_t *rxBuffer);
91 
101 void dataflashReadSR(uint8_t *rxBuffer);
102 
117 void dataflashMemoryPageRead(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
118 
134 void dataflashArrayReadLowPower(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
135 
150 void dataflashArrayReadLowFreq(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
151 
166 void dataflashArrayReadHighFreq0(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
167 
182 void dataflashArrayReadHighFreq1(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
183 
198 void dataflashArrayReadLegacy(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
199 
215 void dataflashBuffer1ReadLowFreq(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
216 
235 void dataflashBuffer1ReadHighFreq(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
236 
250 void dataflashBuffer1Write(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes);
251 
262 void dataflashBuffer1ToMainMemoryWithErase(uint32_t address);
263 
275 void dataflashBuffer1ToMainMemoryWithoutErase(uint32_t address);
276 
291 void dataflashMemoryProgramThruBuffer1WithErase(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes);
292 
312 void dataflashMemoryProgramThruBuffer1WithoutErase(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes);
313 
322 void dataflashPageErase(uint32_t address);
323 
332 void dataflashBlockErase(uint32_t address);
333 
345 void dataflashSectorErase(uint32_t address);
346 
353 void dataflashChipErase();
354 
368 void dataflashRMWThruBuffer1(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes);
369 
377 
385 
394 
407 void dataflashProgSectorProtectionReg(uint8_t *txBuffer, uint32_t txNumBytes);
408 
420 void dataflashReadSectorProtectionReg(uint8_t *rxBuffer, uint32_t rxNumBytes);
421 
422 
434 void dataflashReadSecurityReg(uint8_t *rxBuffer, uint32_t rxNumBytes);
435 
445 void dataflashMemtoBuffer1Transfer(uint32_t address);
446 
459 void dataflashMemtoBuffer1Compare(uint32_t address);
460 
470 void dataflashAutoPageRewrite1(uint32_t address);
471 
479 void dataflashDPD();
480 
488 
495 void dataflashUDPDMode();
496 
503 
511 
519 
526 
540 void dataflashBuffer1ReadLegacy(uint8_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
541 
555 void dataflashMemPageReadLegacy(uint8_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
556 
571 void dataflashContinuousArrayReadLegacy(uint8_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
572 
582 void dataflashReadSRLegacy(uint8_t *rxBuffer);
583 #if (PARTNO == AT45DQ161) || \
584  (PARTNO == AT45DQ321) || \
585  (ALL == 1)
586 
599 void dataflashDualOutputRead(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
600 
614 void dataflashQuadOutputRead(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
615 
630 void dataflashDualInputBuffer1Write(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes);
631 
646 void dataflashDualInputBuffer2Write(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes);
647 
662 void dataflashQuadInputBuffer1Write(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes);
663 
678 void dataflashQuadInputBuffer2Write(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes);
679 
688 void dataflashReadConfigRegister(uint8_t *rxBuffer);
689 
696 void dataflashQuadEnable();
697 
704 void dataflashQuadDisable();
705 #endif
706 
707 #if (PARTNO == AT45DB021E) || \
708  (PARTNO == AT45DB041E) || \
709  (PARTNO == AT45DB081E) || \
710  (PARTNO == AT45DB161E) || \
711  (PARTNO == AT45DB321E) || \
712  (PARTNO == AT45DB641E) || \
713  (PARTNO == AT45DQ161) || \
714  (PARTNO == AT45DQ321) || \
715  (ALL == 1)
716 
724 
732 
741 void dataflashSectorLockdown(uint32_t address);
742 
754 void dataflashReadSectorLockdownReg(uint8_t *rxBuffer, uint32_t rxNumBytes);
755 
764 
780 void dataflashProgSecurityReg(uint8_t *txBuffer, uint32_t txNumBytes);
781 #endif
782 #if (PARTNO == AT45DB021E) || \
783  (PARTNO == AT45DB041E) || \
784  (PARTNO == AT45DB081E) || \
785  (PARTNO == AT45DB161E) || \
786  (PARTNO == AT45DB321E) || \
787  (PARTNO == AT45DB641E) || \
788  (PARTNO == AT45DQ161) || \
789  (PARTNO == AT45DQ321) || \
790  (PARTNO == AT25PE40) || \
791  (PARTNO == AT25PE80) || \
792  (PARTNO == AT25PE16) || \
793  (ALL == 1)
794 
809 void dataflashBuffer2ReadLowFreq(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
810 
826 void dataflashBuffer2ReadHighFreq(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
827 
841 void dataflashBuffer2Write(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes);
842 
853 void dataflashBuffer2ToMainMemoryWithErase(uint32_t address);
854 
866 void dataflashBuffer2ToMainMemoryWithoutErase(uint32_t address);
867 
882 void dataflashMemoryProgramThruBuffer2WithErase(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes);
883 
897 void dataflashRMWThruBuffer2(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes);
898 
902 void dataflashMemtoBuffer2Transfer(uint32_t address);
903 
916 void dataflashMemtoBuffer2Compare(uint32_t address);
917 
927 void dataflashAutoPageRewrite2(uint32_t address);
928 
942 void dataflashBuffer2ReadLegacy(uint8_t address, uint8_t *rxBuffer, uint32_t rxNumBytes);
943 #endif
944 
945 #endif
946 
947 #endif /* DATAFLASH_H_ */
void dataflashQuadInputBuffer2Write(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x47 Programs &#39;txNumBytes&#39; bytes of data to buffer 2 starting at the address indicated by a...
Definition: dataflash.c:596
void dataflashMemoryProgramThruBuffer2WithErase(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x85 Programs main memory through buffer 2 starting at the address indicated by &#39;address&#39; w...
Definition: dataflash.c:804
void dataflashMemtoBuffer1Compare(uint32_t address)
OPCODE: 0x60 Compare the contents of a page in main memory to the contents of buffer 1...
Definition: dataflash.c:395
void dataflashArrayReadLowPower(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x01 Reads rxNumBytes starting from location &#39;address&#39; and stores the data in the byte arra...
Definition: dataflash.c:106
void dataflashBuffer2ReadLegacy(uint8_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x56 LEGACY: Reads rxNumBytes starting from location &#39;address&#39; in buffer 2 and stores the d...
Definition: dataflash.c:868
void dataflashHardwareReset()
Perform a JEDEC reset on the flash device.
Definition: dataflash.c:435
void dataflashMemoryProgramThruBuffer1WithErase(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x82 Programs main memory through buffer 1 starting at the address indicated by &#39;address&#39; w...
Definition: dataflash.c:213
void dataflashMemoryPageRead(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0xD2 Reads rxNumBytes starting from location &#39;address&#39; and stores the data in the byte arra...
Definition: dataflash.c:96
void dataflashBuffer2ToMainMemoryWithErase(uint32_t address)
OPCODE: 0x86 Programs the entire buffer 2 page to main memory starting at the address indicated by ...
Definition: dataflash.c:784
void dataflashDualOutputRead(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x3B Reads &#39;txNumBytes&#39; bytes of data in Dual Output Mode starting at &#39;address&#39; using both ...
Definition: dataflash.c:531
void dataflashSoftwareReset()
OPCODE: 0xF0_00_00_00 Perform a software reset on the device. This will terminate any read or write...
Definition: dataflash.c:476
void dataflashProgSectorProtectionReg(uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x3D_2A_7F_FC Program the sector protection register with the data in txBuffer.
Definition: dataflash.c:346
void dataflashRMWThruBuffer1(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x58 Reads main memory to buffer 1, modifies it, then writes the data back to main memory w...
Definition: dataflash.c:290
void dataflashMemPageReadLegacy(uint8_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x52 LEGACY: Reads rxNumBytes starting from location &#39;address&#39; and stores the data in the b...
Definition: dataflash.c:499
void dataflashQuadDisable()
OPCODE: 0x3D2A8167 Programs the NV-QE bit to a logical 0 to disable the Quad I/O commands...
Definition: dataflash.c:634
void dataflashSectorErase(uint32_t address)
OPCODE: 0x7C
Definition: dataflash.c:267
void dataflashBuffer1ReadLowFreq(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0xD1 Reads rxNumBytes starting from location &#39;address&#39; in buffer 1 and stores the data in t...
Definition: dataflash.c:156
void dataflashBuffer1ReadLegacy(uint8_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x54 LEGACY: Reads rxNumBytes starting from location &#39;address&#39; in buffer 2 and stores the dat...
Definition: dataflash.c:489
void dataflashMemtoBuffer1Transfer(uint32_t address)
OPCODE: 0x53 Transfer the contents of a page in main memory at the address indicated by &#39;address&#39; t...
Definition: dataflash.c:385
void dataflashEraseSectorProtectionReg()
OPCODE: 0x3D_2A_7F_CF Erases the sector protection register. Erasing is required for modification/s...
Definition: dataflash.c:333
void dataflashBuffer2ToMainMemoryWithoutErase(uint32_t address)
OPCODE: 0x89 Programs the entire buffer 2 page to main memory starting at the address indicated by ...
Definition: dataflash.c:794
void dataflashArrayReadLowFreq(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x03 Reads rxNumBytes starting from location &#39;address&#39; and stores the data in the byte arra...
Definition: dataflash.c:116
void dataflashArrayReadHighFreq1(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x1B Reads rxNumBytes starting from location &#39;address&#39; and stores the data in the byte arra...
Definition: dataflash.c:136
void dataflashProgSecurityReg(uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x9B_00_00_00 Program the security register with the data in txBuffer.
Definition: dataflash.c:716
void dataflashReadSR(uint8_t *rxBuffer)
OPCODE: 0xD7 Reads the value in the device status register (bytes 1 and 2).
Definition: dataflash.c:86
void dataflashReadSRLegacy(uint8_t *rxBuffer)
OPCODE: 0x57 LEGACY: Reads the value in the device status register (bytes 1 and 2)...
Definition: dataflash.c:519
uint8_t txDataflashInternalBuffer[MAXIMUM_TX_BYTES]
Definition: dataflash.c:61
void dataflashPageErase(uint32_t address)
OPCODE: 0x81 Erases a page of data (256/264 Bytes) starting from page address &#39;address.&#39;.
Definition: dataflash.c:247
void dataflashQuadEnable()
OPCODE: 0x3D2A8166 Programs the NV-QE bit to a logical 1 to enable the Quad I/O commands...
Definition: dataflash.c:621
void dataflashFreezeSectorLockdown()
OPCODE: 0x34_55_AA_40 Permanently freeze the sector lockdown register to prevent any future changes...
Definition: dataflash.c:703
void dataflashBuffer2ReadLowFreq(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0xD3 Reads rxNumBytes starting from location &#39;address&#39; in buffer 2 and stores the data in t...
Definition: dataflash.c:747
void dataflashBuffer2ReadHighFreq(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0xD6 Reads rxNumBytes starting from location &#39;address&#39; in buffer 2 and stores the data in t...
Definition: dataflash.c:757
void dataflashReadSecurityReg(uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x77 Reads &#39;rxNumBytes&#39; bytes of data in from the security register.
Definition: dataflash.c:375
void dataflashDisableSectorProtection()
OPCODE: 0x3D_2A_7F_9A Disables sector protection.
Definition: dataflash.c:320
void dataflashProgramEraseSuspend()
OPCODE: 0xB0 Suspends a program or erase operation in progress to a particular 64KB sector of the m...
Definition: dataflash.c:657
void dataflashAutoPageRewrite1(uint32_t address)
OPCODE: 0x58 Rewrite the page in main memory at address &#39;address.&#39; This performs a refresh of stored ...
Definition: dataflash.c:405
void dataflashAutoPageRewrite2(uint32_t address)
OPCODE: 0x59 Rewrite the page in main memory at address &#39;address.&#39; This performs a refresh of stored ...
Definition: dataflash.c:858
Definitions for opcodes.
#define MAXIMUM_TX_BYTES
Definition: cmd_defs.h:46
void dataflashBuffer1ReadHighFreq(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0xD4
Definition: dataflash.c:166
void dataflashUDPDMode()
OPCODE: 0x79 Put the device into ultra deep power down mode. Wake the device with dataflashHardware...
Definition: dataflash.c:425
void dataflashReadMID(uint8_t *rxBuffer)
OPCODE: 0x9F Reads the manufacturer ID and stores the data in rxBuffer.
Definition: dataflash.c:76
void dataflashMemtoBuffer2Transfer(uint32_t address)
OPCODE: 0x55
Definition: dataflash.c:838
void dataflashContinuousArrayReadLegacy(uint8_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x68 LEGACY: Reads rxNumBytes starting from location &#39;address&#39; and stores the data in the b...
Definition: dataflash.c:509
void dataflashDualInputBuffer2Write(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x24 Programs &#39;txNumBytes&#39; bytes of data to buffer 2 starting at the address indicated by a...
Definition: dataflash.c:566
void dataflashDualInputBuffer1Write(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x24 Programs &#39;txNumBytes&#39; bytes of data to buffer 1 starting at the address indicated by a...
Definition: dataflash.c:551
Declarations of spi_driver functions.
void dataflashBuffer1ToMainMemoryWithErase(uint32_t address)
OPCODE: 0x83 Programs the entire buffer 1 page to main memory starting at the address indicated by ...
Definition: dataflash.c:193
void dataflashWaitOnReady()
: Wait while Read/Busy Status bit in SRB is 1 (device is busy).
Definition: dataflash.c:65
void dataflashBuffer2Write(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x87 Programs &#39;txNumBytes&#39; bytes of data to buffer 2 starting at the address indicated by a...
Definition: dataflash.c:767
void dataflashBuffer1Write(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x84 Programs &#39;txNumBytes&#39; bytes of data to buffer 1 starting at the address indicated by a...
Definition: dataflash.c:176
void dataflashDPD()
OPCODE: 0xB9 Put the device into deep power down mode. Call dataflashResumeFromDPD() to wake up...
Definition: dataflash.c:415
void dataflashResumeFromDPD()
OPCODE: 0xAB Wake the device from deep power down mode. See dataflashDPD().
Definition: dataflash.c:440
void dataflashArrayReadLegacy(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0xE8 Reads rxNumBytes starting from location &#39;address&#39; and stores the data in the byte arra...
Definition: dataflash.c:146
void dataflashChipErase()
OPCODE: 0xC794_809A Erases the entire chip by setting all bits.
Definition: dataflash.c:277
void dataflashMemoryProgramThruBuffer1WithoutErase(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x02
Definition: dataflash.c:230
void dataflashMemtoBuffer2Compare(uint32_t address)
OPCODE: 0x61 Compare the contents of a page in main memory to the contents of buffer 2...
Definition: dataflash.c:848
void dataflashReadConfigRegister(uint8_t *rxBuffer)
OPCODE: 0x3F Reads the configuration register and returns the 1-byte value in rxBuffer.
Definition: dataflash.c:611
void dataflashQuadInputBuffer1Write(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x44 Programs &#39;txNumBytes&#39; bytes of data to buffer 2 starting at the address indicated by a...
Definition: dataflash.c:581
Declarations of helper functions.
void dataflashProgramEraseResume()
OPCODE: 0xD0 Resumes a suspended program or erase operation. See dataflashProgramEraseSuspend().
Definition: dataflash.c:667
void dataflashSectorLockdown(uint32_t address)
OPCODE: 0x3D_2A_7F_30 Permanently a sector to prevent erasing or programming the stored data...
Definition: dataflash.c:677
void dataflashReadSectorLockdownReg(uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x35 Reads &#39;rxNumBytes&#39; bytes of data in from the SL register.
Definition: dataflash.c:693
void dataflashBuffer1ToMainMemoryWithoutErase(uint32_t address)
OPCODE: 0x88 Programs the entire buffer 1 page to main memory starting at the address indicated by ...
Definition: dataflash.c:203
void dataflashBlockErase(uint32_t address)
OPCODE: 0x50 Erases a block of data (8 pages) starting from page address &#39;address.&#39;.
Definition: dataflash.c:257
void dataflashRMWThruBuffer2(uint32_t address, uint8_t *txBuffer, uint32_t txNumBytes)
OPCODE: 0x59 Reads main memory to buffer 1, modifies it, then writes the data back to main memory w...
Definition: dataflash.c:821
void dataflashReadSectorProtectionReg(uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x32 Reads &#39;txNumBytes&#39; bytes of data in from the SPR register.
Definition: dataflash.c:365
void dataflashQuadOutputRead(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x6B Reads &#39;txNumBytes&#39; bytes of data in Quad Output Mode starting at &#39;address&#39; using SI...
Definition: dataflash.c:541
void dataflashConfigureStandardPageSize()
OPCODE: 0x3D_2A_80_A7 Configure the device to read and write with pages configured to 264 bytes...
Definition: dataflash.c:463
void dataflashArrayReadHighFreq0(uint32_t address, uint8_t *rxBuffer, uint32_t rxNumBytes)
OPCODE: 0x0B Reads rxNumBytes starting from location &#39;address&#39; and stores the data in the byte arra...
Definition: dataflash.c:126
void dataflashConfigurePower2PageSize()
OPCODE: 0x3D_2A_80_A6 Configure the device to read and write with pages configured to 256 bytes...
Definition: dataflash.c:450
void dataflashEnableSectorProtection()
OPCODE: 0x3D_2A_7F_A9 Enables sector protection.
Definition: dataflash.c:307