Skip to content

Commit 8a2b2be

Browse files
committed
Add setMemoryType()
1 parent 148beb3 commit 8a2b2be

File tree

3 files changed

+115
-1
lines changed

3 files changed

+115
-1
lines changed

keywords.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ write KEYWORD2
2020
erase KEYWORD2
2121
setMemorySize KEYWORD2
2222
getMemorySize KEYWORD2
23+
setMemoryType KEYWORD2
2324
length KEYWORD2
2425
setPageSize KEYWORD2
2526
getPageSize KEYWORD2

src/SparkFun_External_EEPROM.cpp

Lines changed: 112 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,123 @@ uint32_t ExternalEEPROM::getMemorySize()
124124
void ExternalEEPROM::setMemorySizeBytes(uint32_t memSize)
125125
{
126126
settings.memorySize_bytes = memSize;
127+
128+
//Try to identify this memory size settings
129+
switch (memSize)
130+
{
131+
default:
132+
// Unknown memory size
133+
break;
134+
case (16):
135+
setAddressBytes(1);
136+
setPageSizeBytes(1);
137+
break;
138+
case (128):
139+
setAddressBytes(1);
140+
setPageSizeBytes(8);
141+
break;
142+
case (256):
143+
setAddressBytes(1);
144+
setPageSizeBytes(8);
145+
break;
146+
case (512):
147+
setAddressBytes(1);
148+
setPageSizeBytes(16);
149+
break;
150+
case (1024):
151+
setAddressBytes(1);
152+
setPageSizeBytes(16);
153+
break;
154+
case (2048):
155+
setAddressBytes(1);
156+
setPageSizeBytes(16);
157+
break;
158+
case (4096):
159+
setAddressBytes(2);
160+
setPageSizeBytes(32);
161+
break;
162+
case (8192):
163+
setAddressBytes(2);
164+
setPageSizeBytes(32);
165+
break;
166+
case (16384):
167+
setAddressBytes(2);
168+
setPageSizeBytes(64);
169+
break;
170+
case (32768):
171+
setAddressBytes(2);
172+
setPageSizeBytes(64);
173+
break;
174+
case (65536):
175+
setAddressBytes(2);
176+
setPageSizeBytes(128);
177+
break;
178+
case (128000):
179+
setAddressBytes(2);
180+
setPageSizeBytes(128);
181+
break;
182+
case (262144):
183+
setAddressBytes(2);
184+
setPageSizeBytes(256);
185+
break;
186+
}
127187
}
128188
uint32_t ExternalEEPROM::getMemorySizeBytes()
129189
{
130190
return settings.memorySize_bytes;
131191
}
132192

193+
void ExternalEEPROM::setMemoryType(uint16_t typeNumber)
194+
{
195+
//Set settings based on known memory types
196+
switch (typeNumber)
197+
{
198+
default:
199+
// Unknown type number
200+
break;
201+
case (0):
202+
setMemorySizeBytes(16);
203+
break;
204+
case (1):
205+
setMemorySizeBytes(128 * typeNumber); //128
206+
break;
207+
case (2):
208+
Serial.println("2");
209+
setMemorySizeBytes(128 * typeNumber); //256
210+
break;
211+
case (4):
212+
setMemorySizeBytes(128 * typeNumber); //512
213+
break;
214+
case (8):
215+
setMemorySizeBytes(128 * typeNumber); //1024
216+
break;
217+
case (16):
218+
setMemorySizeBytes(128 * typeNumber); //2048
219+
break;
220+
case (32):
221+
setMemorySizeBytes(128 * typeNumber); //4096
222+
break;
223+
case (64):
224+
setMemorySizeBytes(128 * typeNumber); //8192
225+
break;
226+
case (128):
227+
setMemorySizeBytes(128 * typeNumber); //16384
228+
break;
229+
case (256):
230+
setMemorySizeBytes(128 * typeNumber); //32768
231+
break;
232+
case (512):
233+
setMemorySizeBytes(128 * typeNumber); //65536
234+
break;
235+
case (1024):
236+
setMemorySizeBytes(128000); //128000
237+
break;
238+
case (2048):
239+
setMemorySizeBytes(262144); //262144
240+
break;
241+
}
242+
}
243+
133244
// Old get/setPageSize. Use get/setPageSizeBytes
134245
void ExternalEEPROM::setPageSize(uint16_t pageSize)
135246
{
@@ -475,7 +586,7 @@ uint16_t ExternalEEPROM::detectPageSizeBytes()
475586
// For EEPROMs of 4k, 8k, and 16k bit, there are three bits called
476587
// 'block select bits' inside the address byte that are used
477588
// For 32k, 64k, 128k, 256k, and 512k bit we need two address bytes
478-
// At 1Mbit (128,000 byte) and above there are two address bytes and a block select bit
589+
// At 1Mbit (128,000 byte) and above there are two address bytes and a block select bit
479590
// is used but at the upper end of the address bits (so instead of A2/A1/A0 it's B0/A1/A0).
480591
uint32_t ExternalEEPROM::detectMemorySizeBytes()
481592
{

src/SparkFun_External_EEPROM.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ class ExternalEEPROM
135135
uint32_t getMemorySize(); // Depricated
136136
uint32_t length(); // Return size of EEPROM in bytes
137137

138+
void setMemoryType(uint16_t typeNumber); // Valid types: 00, 01, 02, 04, 08, 16, 32, 64, 128, 256, 512, 1024, 2048
139+
138140
uint8_t detectAddressBytes(); // Determine the number of address bytes, 1 or 2
139141
void setAddressBytes(uint8_t addressBytes);
140142
uint8_t getAddressBytes();

0 commit comments

Comments
 (0)