Skip to content

Commit cbb736f

Browse files
authored
Merge pull request #225 from SolderedElectronics/dev
Dev
2 parents 6b931e0 + 6af74e2 commit cbb736f

File tree

8 files changed

+70
-33
lines changed

8 files changed

+70
-33
lines changed

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=InkplateLibrary
2-
version=8.2.0
2+
version=8.2.1
33
author=e-radionica.com <[email protected]>
44
maintainer=David Zovko <[email protected]>
55
sentence=Inkplate boards driver library

src/boards/Inkplate10.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,22 @@ bool Inkplate::begin()
143143
pinMode(25, OUTPUT);
144144
pinMode(26, OUTPUT);
145145
pinMode(27, OUTPUT); // D7
146-
146+
#ifdef ARDUINO_INKPLATE10
147147
// TOUCHPAD PINS
148148
pinModeInternal(IO_INT_ADDR, ioRegsInt, 10, INPUT);
149149
pinModeInternal(IO_INT_ADDR, ioRegsInt, 11, INPUT);
150150
pinModeInternal(IO_INT_ADDR, ioRegsInt, 12, INPUT);
151-
151+
#else
152+
pinModeInternal(IO_INT_ADDR, ioRegsInt, 10, OUTPUT);
153+
pinModeInternal(IO_INT_ADDR, ioRegsInt, 11, OUTPUT);
154+
pinModeInternal(IO_INT_ADDR, ioRegsInt, 12, OUTPUT);
155+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 10, LOW);
156+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 11, LOW);
157+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 12, LOW);
158+
#endif
152159
// Battery voltage Switch MOSFET
153160
pinModeInternal(IO_INT_ADDR, ioRegsInt, 9, OUTPUT);
161+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 9, LOW);
154162

155163
DMemoryNew = (uint8_t *)ps_malloc(E_INK_WIDTH * E_INK_HEIGHT / 8);
156164
_partial = (uint8_t *)ps_malloc(E_INK_WIDTH * E_INK_HEIGHT / 8);

src/boards/Inkplate4.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,19 @@ bool Inkplate::begin()
4545
return false;
4646
}
4747

48+
// Set SPI Pins for microSD card to input to reduce power consumption.
49+
pinMode(12, INPUT);
50+
pinMode(13, INPUT);
51+
pinMode(14, INPUT);
52+
pinMode(15, INPUT);
53+
4854
// Init TwoWire and GPIO expander
4955
setIOExpanderForLowPower();
5056

57+
// Disable the microSD card pin for now.
58+
pinModeInternal(IO_INT_ADDR, ioRegsInt, SD_PMOS_PIN, OUTPUT);
59+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, SD_PMOS_PIN, HIGH);
60+
5161
// Set the default text color
5262
setTextColor(INKPLATE4_BLACK);
5363

@@ -399,7 +409,6 @@ void Inkplate::setIOExpanderForLowPower()
399409
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_A6, OUTPUT);
400410
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_A7, OUTPUT);
401411
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B0, OUTPUT);
402-
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B2, OUTPUT);
403412
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B3, OUTPUT);
404413
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B4, OUTPUT);
405414
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B5, OUTPUT);
@@ -415,7 +424,6 @@ void Inkplate::setIOExpanderForLowPower()
415424
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_A6, LOW);
416425
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_A7, LOW);
417426
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B0, LOW);
418-
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B2, LOW);
419427
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B3, LOW);
420428
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B4, LOW);
421429
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B5, LOW);

src/boards/Inkplate4TEMPERA.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ bool Inkplate::begin(void)
163163
pinModeInternal(TOUCHSCREEN_IO_EXPANDER, ioRegsEx, TOUCHSCREEN_EN, OUTPUT);
164164
digitalWriteInternal(TOUCHSCREEN_IO_EXPANDER, ioRegsEx, TOUCHSCREEN_EN, HIGH);
165165

166+
// Set the rest of the IO Expander pins to low to reduce power in deep sleep.
166167
for (int i = 2; i < 15; i++)
167168
{
168169
pinModeInternal(IO_EXT_ADDR, ioRegsEx, i, OUTPUT);

src/boards/Inkplate5.cpp

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -72,19 +72,23 @@ bool Inkplate::begin(void)
7272
WAKEUP_CLEAR;
7373

7474
// To reduce power consumption in deep sleep, unused pins of
75-
// first I/O expander have to be also set as inputs with pull down
76-
// resistors.
77-
pinModeInternal(IO_INT_ADDR, ioRegsInt, 11, INPUT_PULLDOWN);
78-
pinModeInternal(IO_INT_ADDR, ioRegsInt, 12, INPUT_PULLDOWN);
79-
pinModeInternal(IO_INT_ADDR, ioRegsInt, 13, INPUT_PULLDOWN);
80-
pinModeInternal(IO_INT_ADDR, ioRegsInt, 14, INPUT_PULLDOWN);
81-
pinModeInternal(IO_INT_ADDR, ioRegsInt, 15, INPUT_PULLDOWN);
82-
83-
// Set SPI pins to input to reduce power consumption in deep sleep
84-
pinMode(12, INPUT);
85-
pinMode(13, INPUT);
86-
pinMode(14, INPUT);
87-
pinMode(15, INPUT);
75+
// first I/O expander have to be also set as output with pulled low.
76+
pinModeInternal(IO_INT_ADDR, ioRegsInt, 11, OUTPUT);
77+
pinModeInternal(IO_INT_ADDR, ioRegsInt, 12, OUTPUT);
78+
pinModeInternal(IO_INT_ADDR, ioRegsInt, 13, OUTPUT);
79+
pinModeInternal(IO_INT_ADDR, ioRegsInt, 14, OUTPUT);
80+
pinModeInternal(IO_INT_ADDR, ioRegsInt, 15, OUTPUT);
81+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 11, LOW);
82+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 12, LOW);
83+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 13, LOW);
84+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 14, LOW);
85+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 15, LOW);
86+
87+
// Enable pull down resistors on SPI lines to reduce power consumption in deep sleep.
88+
pinMode(12, INPUT_PULLDOWN);
89+
pinMode(13, INPUT_PULLDOWN);
90+
pinMode(14, INPUT_PULLDOWN);
91+
pinMode(15, INPUT_PULLDOWN);
8892

8993
// And also disable uSD card supply
9094
pinModeInternal(IO_INT_ADDR, ioRegsInt, SD_PMOS_PIN, INPUT);
@@ -108,11 +112,6 @@ bool Inkplate::begin(void)
108112
pinMode(26, OUTPUT);
109113
pinMode(27, OUTPUT); // D7
110114

111-
// TOUCHPAD PINS
112-
pinModeInternal(IO_INT_ADDR, ioRegsInt, 10, INPUT);
113-
pinModeInternal(IO_INT_ADDR, ioRegsInt, 11, INPUT);
114-
pinModeInternal(IO_INT_ADDR, ioRegsInt, 12, INPUT);
115-
116115
// Battery voltage Switch MOSFET
117116
pinModeInternal(IO_INT_ADDR, ioRegsInt, 9, OUTPUT);
118117

src/boards/Inkplate6.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,13 +134,23 @@ bool Inkplate::begin(void)
134134
// driver.
135135
I2SInit(myI2S, NULL, NULL);
136136

137+
#ifndef ARDUINO_INKPLATE6V2
137138
// TOUCHPAD PINS
138139
pinModeInternal(IO_INT_ADDR, ioRegsInt, 10, INPUT);
139140
pinModeInternal(IO_INT_ADDR, ioRegsInt, 11, INPUT);
140141
pinModeInternal(IO_INT_ADDR, ioRegsInt, 12, INPUT);
142+
#else
143+
pinModeInternal(IO_INT_ADDR, ioRegsInt, 10, OUTPUT);
144+
pinModeInternal(IO_INT_ADDR, ioRegsInt, 11, OUTPUT);
145+
pinModeInternal(IO_INT_ADDR, ioRegsInt, 12, OUTPUT);
146+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 10, LOW);
147+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 11, LOW);
148+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 12, LOW);
149+
#endif
141150

142151
// Battery voltage Switch MOSFET
143152
pinModeInternal(IO_INT_ADDR, ioRegsInt, 9, OUTPUT);
153+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, 9, LOW);
144154

145155
DMemoryNew = (uint8_t *)ps_malloc(E_INK_WIDTH * E_INK_HEIGHT / 8);
146156
_partial = (uint8_t *)ps_malloc(E_INK_WIDTH * E_INK_HEIGHT / 8);

src/boards/Inkplate6Color.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,10 @@ bool Inkplate::setPanelDeepSleep(bool _state)
320320
sendCommand(0xE3);
321321
sendData(0xAA);
322322

323+
delay(100);
324+
sendCommand(VCOM_DATA_INTERVAL_REGISTER);
325+
sendData(0x37);
326+
323327
return true;
324328
}
325329
else
@@ -336,8 +340,6 @@ bool Inkplate::setPanelDeepSleep(bool _state)
336340

337341
epdSPI.end();
338342

339-
pinMode(EPAPER_DIN, INPUT);
340-
pinMode(EPAPER_CLK, INPUT);
341343
return true;
342344
}
343345
}
@@ -390,4 +392,4 @@ void Inkplate::setIOExpanderForLowPower()
390392
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B6, LOW);
391393
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B7, LOW);
392394
}
393-
#endif
395+
#endif

src/boards/Inkplate7.cpp

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,19 @@ bool Inkplate::begin()
4646
return false;
4747
}
4848

49+
// Set SPI Pins for microSD card to input pull down to reduce power consumption.
50+
pinMode(12, INPUT_PULLDOWN);
51+
pinMode(13, INPUT_PULLDOWN);
52+
pinMode(14, INPUT_PULLDOWN);
53+
pinMode(15, INPUT_PULLDOWN);
54+
4955
// Init TwoWire and GPIO expander
5056
setIOExpanderForLowPower();
5157

58+
// Disable the microSD card pin for now.
59+
pinModeInternal(IO_INT_ADDR, ioRegsInt, SD_PMOS_PIN, OUTPUT);
60+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, SD_PMOS_PIN, HIGH);
61+
5262
// Set the default text color
5363
setTextColor(INKPLATE7_BLACK);
5464

@@ -58,7 +68,6 @@ bool Inkplate::begin()
5868
_beginDone = 1;
5969
}
6070

61-
6271
// Wake the ePaper and initialize everything
6372
// If it fails, return false
6473
if (!setPanelDeepSleep(false))
@@ -345,15 +354,11 @@ void Inkplate::setIOExpanderForLowPower()
345354
memset(ioRegsInt, 0, 22);
346355
ioBegin(IO_INT_ADDR, ioRegsInt);
347356

348-
// TOUCHPAD PINS
349-
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B2, INPUT);
350-
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B3, INPUT);
351-
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B4, INPUT);
352-
353357
// Battery voltage Switch MOSFET
354358
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B1, OUTPUT);
359+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B1, LOW);
355360

356-
// Rest of pins go to OUTPUT LOW state because in deepSleep mode they are
361+
// Rest of pins go to low because in deepSleep mode they are
357362
// using least amount of power
358363
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_A0, OUTPUT);
359364
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_A1, OUTPUT);
@@ -364,6 +369,8 @@ void Inkplate::setIOExpanderForLowPower()
364369
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_A6, OUTPUT);
365370
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_A7, OUTPUT);
366371
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B0, OUTPUT);
372+
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B3, OUTPUT);
373+
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B4, OUTPUT);
367374
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B5, OUTPUT);
368375
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B6, OUTPUT);
369376
pinModeInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B7, OUTPUT);
@@ -377,6 +384,8 @@ void Inkplate::setIOExpanderForLowPower()
377384
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_A6, LOW);
378385
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_A7, LOW);
379386
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B0, LOW);
387+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B3, LOW);
388+
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B4, LOW);
380389
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B5, LOW);
381390
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B6, LOW);
382391
digitalWriteInternal(IO_INT_ADDR, ioRegsInt, IO_PIN_B7, LOW);

0 commit comments

Comments
 (0)