27 #if defined (ARDUINO_ARCH_SAM)
28 #define CHIP_SELECT digitalWrite(csPin, LOW);
29 #define CHIP_DESELECT digitalWrite(csPin, HIGH);
30 #define xfer due.SPITransfer
31 #define BEGIN_SPI due.SPIBegin();
33 extern "C" char *sbrk(
int i);
38 #elif defined (BOARD_RTL8195A)
39 #define CHIP_SELECT gpio_write(&csPin, 0);
40 #define CHIP_DESELECT gpio_write(&csPin, 1);
41 #define xfer(n) SPI.transfer(n)
42 #define BEGIN_SPI SPI.begin();
45 #elif defined (ARDUINO_ARCH_SAMD) || defined(ARCH_STM32)|| defined(ARDUINO_ARCH_ESP32)
46 #define CHIP_SELECT digitalWrite(csPin, LOW);
47 #define CHIP_DESELECT digitalWrite(csPin, HIGH);
48 #define xfer(n) _spi->transfer(n)
49 #define BEGIN_SPI _spi->begin();
53 #define CHIP_SELECT digitalWrite(csPin, LOW);
54 #define CHIP_DESELECT digitalWrite(csPin, HIGH);
55 #define xfer(n) SPI.transfer(n)
56 #define BEGIN_SPI SPI.begin();
60 #if defined(ARDUINO_SAMD_ZERO) && defined(SERIAL_PORT_USBVIRTUAL)
61 #define Serial SERIAL_PORT_USBVIRTUAL
73 #define WRITEDISABLE 0x04
74 #define READSTAT1 0x05
75 #define READSTAT2 0x35
76 #define READSTAT3 0x15
77 #define WRITESTATEN 0x50
78 #define WRITESTAT1 0x01
79 #define WRITESTAT2 0x31
80 #define WRITESTAT3 0x11
81 #define WRITEENABLE 0x06
82 #define ADDR4BYTE_EN 0xB7
83 #define ADDR4BYTE_DIS 0xE9
84 #define SECTORERASE 0x20
85 #define BLOCK32ERASE 0x52
86 #define BLOCK64ERASE 0xD8
87 #define CHIPERASE 0x60
88 #define ALT_CHIPERASE 0xC7
93 #define POWERDOWN 0xB9
97 #define FRAMSERNO 0xC3
103 #define B(x) uint32_t(x*BYTE)
104 #define KB(x) uint32_t(x*KiB)
105 #define MB(x) uint32_t(x*MiB)
111 #define FIRSTBYTE 0x01
112 #define SFDPSIGNATURE 0x50444653
113 #define ADDRESSOFSFDPDWORD(x,y) x+((y - 1) * 4)
114 #define ADDRESSOFSFDPBYTE(x,y,z) x+((y - 1) * 4)+(z - 1)
115 #define KB4ERASE_TYPE 0x0C
116 #define KB32ERASE_TYPE 0x0F
117 #define KB64ERASE_TYPE 0x10
118 #define KB256ERASE_TYPE 0x12
119 #define MS1 0b00000000
120 #define MS16 0b00000001
121 #define MS128 0b00000010
122 #define S1 0b00000011
127 #define SFDP_HEADER_ADDR 0x00
128 #define SFDP_SIGNATURE_DWORD 0x01
129 #define SFDP_NPH_DWORD 0x02
130 #define SFDP_NPH_BYTE 0x03
131 #define SFDP_PARAM_TABLE_LENGTH_DWORD 0x01
132 #define SFDP_PARAM_TABLE_LENGTH_BYTE 0x04
133 #define SFDP_BASIC_PARAM_TABLE_HDR_ADDR 0x08
134 #define SFDP_BASIC_PARAM_TABLE_NO 0x01
135 #define SFDP_MEMORY_DENSITY_DWORD 0x02
136 #define SFDP_SECTOR_MAP_PARAM_TABLE_NO 0x02
137 #define SFDP_ERASE1_BYTE 0x01
138 #define SFDP_ERASE1_INSTRUCTION_DWORD 0x08
139 #define SFDP_ERASE2_INSTRUCTION_DWORD 0x09
140 #define SFDP_SECTOR_ERASE_TIME_DWORD 0x0A
141 #define SFDP_CHIP_ERASE_TIME_DWORD 0x0B
142 #define SFDP_PROGRAM_TIME_DWORD 0x0B
149 #define WINBOND_MANID 0xEF
150 #define SPI_PAGESIZE 0x100
151 #define WINBOND_WRITE_DELAY 0x02
152 #define WINBOND_WREN_TIMEOUT 10L
155 #define MICROCHIP_MANID 0xBF
161 #define CYPRESS_MANID 0x01
162 #define RAMTRON_FRAM_MANID 0xC2
165 #define ADESTO_MANID 0x1F
168 #define MICRON_MANID 0x20
172 #define ON_MANID 0x62
175 #define GIGA_MANID 0xC8
178 #define AMIC_MANID 0x37
181 #define MACRONIX_MANID 0xC2
182 #define MX25L4005 0x13
183 #define MX25L8005 0x14
191 #if defined (ARDUINO_ARCH_ESP32)
192 #define SPI_CLK 20000000
194 #define SPI_CLK 104000000
196 #define ENFASTREAD 0x01
202 #define DUMMYBYTE 0xEE
203 #define NULLBYTE 0x00
204 #define NULLINT 0x0000
205 #define NO_CONTINUE 0x00
206 #define NOVERBOSE 0x00
210 #define NOOVERFLOW false
211 #define NOERRCHK false
212 #define PRINTOVERRIDE true
213 #define ERASEFUNC 0xEF
214 #define BUSY_TIMEOUT 1000000000L
215 #define arrayLen(x) (sizeof(x) / sizeof(*x))
216 #define lengthOf(x) (sizeof(x))/sizeof(byte)
219 #define MiB KiB * KiB
221 #define TIME_TO_PROGRAM(x) (_byteFirstPrgmTime + (_byteAddnlPrgmTime * (x - 1)) )
223 #if defined (ARDUINO_ARCH_ESP8266)
225 #elif defined (ARDUINO_ARCH_SAMD)
235 #elif defined (BOARD_RTL8195A)
245 #define USE_SAM3X_DMAC 1
247 #define USE_SAM3X_BUS_MATRIX_FIX 0
249 #define SAM3X_DMA_TIMEOUT 100
251 #define SPI_CHIP_SEL 3
253 #define SPI_DMAC_RX_CH 1
255 #define SPI_DMAC_TX_CH 0
261 #define DUE_SPI_CLK 2
274 #define _STRING_ 0x08
275 #define _BYTEARRAY_ 0x09
276 #define _CHARARRAY_ 0x0A
277 #define _STRUCT_ 0x0B
284 #define Lo(param) ((char *)¶m)[0]
285 #define Hi(param) ((char *)¶m)[1]
286 #define Higher(param) ((char *)¶m)[2]
287 #define Highest(param) ((char *)¶m)[3]
288 #define Low(param) ((int *)¶m)[0]
289 #define Top(param) ((int *)¶m)[1]
293 #define setBit(x, y) x |= (1 << y)
294 #define clearBit(x, y) x &= ~(1 << y)
295 #define toggleBit(x, y) x ^= (1 << y)
299 #define bitIsSet(x, y) x & (1 << y)
300 #define bitIsClear(x, y) !(x & (1 << y))
304 #define setLowerNibble(x, y) x &= 0xF0; x |= (y & 0x0F)
305 #define setUpperNibble(x, y) x &= 0x0F; x |= (y & 0xF0)
309 #define LED_BUILTIN 13