40 Serial.println(
"MX25L25645 — write / readback test (SPIMemory)");
46 Serial.println(
"FAIL: flash.begin() — check wiring, CS, and power.");
53 const uint32_t jedec =
flash.getJEDECID();
54 Serial.printf(
"JEDEC ID: 0x%06lX\r\n",
static_cast<unsigned long>(jedec));
57 "WARN: expected 0x%06lX for MX25L25645G; continuing anyway.\r\n",
60 const uint32_t cap =
flash.getCapacity();
61 Serial.printf(
"Reported capacity: %lu bytes (%.2f MiB)\r\n",
62 static_cast<unsigned long>(cap),
63 static_cast<double>(cap) / (1024.0 * 1024.0));
65 if (cap < 4096U || MX25_TEST_BYTES > 4096U) {
66 Serial.println(
"FAIL: capacity or test size invalid.");
73 const uint32_t sectorBase = cap - 4096U;
74 Serial.printf(
"Test sector base: 0x%08lX\r\n",
75 static_cast<unsigned long>(sectorBase));
77 if (!
flash.eraseSector(sectorBase)) {
78 Serial.println(
"FAIL: eraseSector");
84 Serial.println(
"Sector erase OK.");
91 Serial.println(
"FAIL: writeByteArray");
97 Serial.printf(
"Wrote %u bytes at 0x%08lX\r\n",
99 static_cast<unsigned long>(sectorBase));
101 memset(readBuf, 0,
sizeof(readBuf));
103 Serial.println(
"FAIL: readByteArray");
112 Serial.println(
"PASS: readback matches written pattern.");
114 Serial.println(
"FAIL: readback mismatch.");
116 if (readBuf[i] != writeBuf[i]) {
117 Serial.printf(
" first diff @ %u: wrote 0x%02X read 0x%02X\r\n",
118 i, writeBuf[i], readBuf[i]);
126 const char* msg =
"MX25 OK";
128 const uint16_t strBytes =
129 static_cast<uint16_t
>(
sizeof(char) * (sIn.length() + 1U));
130 const uint32_t strAddr =
flash.getAddress(strBytes);
131 if (strAddr == 0 && strBytes > 0) {
132 Serial.println(
"WARN: getAddress failed for string test; skipping.");
134 if (!
flash.eraseSector(strAddr)) {
135 Serial.println(
"FAIL: eraseSector (string test)");
136 }
else if (!
flash.writeStr(strAddr, sIn, strBytes)) {
137 Serial.println(
"FAIL: writeStr");
140 sOut.reserve(sIn.length() + 1U);
141 if (!
flash.readStr(strAddr, sOut, strBytes))
142 Serial.println(
"FAIL: readStr");
143 else if (sOut == sIn)
144 Serial.println(
"PASS: String readback OK.");
146 Serial.println(
"FAIL: String readback mismatch.");
#define MX25_EXPECTED_JEDEC
bool fillTestPattern(uint8_t *buf, size_t len)
bool verifyPattern(const uint8_t *buf, size_t len)
SPIFlash flash(MX25_PIN_CS)