Skip to content

Commit 5b4047f

Browse files
authored
Merge pull request #6 from cristidragomir97/main
Added TurnPeripheralsOff example
2 parents 38bdac1 + cfea391 commit 5b4047f

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

Diff for: examples/TurnPeripheralsOff/TurnPeripheralsOff.ino

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/**
2+
* This example builds on the Standby Example which puts the microcontroller of the Portenta H7 into
3+
* standby mode for 10 seconds by also turning off most of the peripherals on the board using the PF1550 PMIC.
4+
* This example turns off the following power rails on the PMIC:
5+
* * LDO1 - ANX7625 video bridge
6+
* * LDO2 - onboard misc. chips
7+
* * LDO3 - 1.2V for Ethernet
8+
* * SW1 - Ethernet PHY, SDRAM, USB PHY
9+
* * SW2 - External Power Regulator
10+
*
11+
* Original author: A. Vidstrom (http://arduino.cc)
12+
* Updated by: C. Dragomir (http://arduino.cc)
13+
* This code is in the public domain
14+
*/
15+
16+
#define NO_ETHERNET_TURN_OFF
17+
18+
#include "Arduino_LowPowerPortentaH7.h"
19+
#include "Arduino_PMIC.h"
20+
#include "Wire.h"
21+
22+
void setup() {
23+
24+
#if defined CORE_CM7
25+
if (LowPowerReturnCode::success != LowPower.checkOptionBytes()) {
26+
LowPower.prepareOptionBytes();
27+
}
28+
bootM4();
29+
#endif
30+
31+
pinMode(LEDB, OUTPUT);
32+
digitalWrite(LEDB, LOW);
33+
delay(1000);
34+
35+
#if defined CORE_CM7
36+
PMIC.begin();
37+
38+
// Turn off the ANX7625 video bridge
39+
PMIC.getControl() -> turnLDO1Off(Ldo1Mode::Normal);
40+
41+
// Turn off misc onboard chips
42+
PMIC.getControl() -> turnLDO2Off(Ldo2Mode::Normal);
43+
44+
// Turn off the 1.2V for Ethernet
45+
PMIC.getControl() -> turnLDO3Off(Ldo3Mode::Normal);
46+
47+
// Turn off the Ethernet PHY, SDRAM, and USB PHY
48+
PMIC.getControl() -> turnSw1Off(Sw1Mode::Normal);
49+
50+
// Turn off the external power regulator
51+
PMIC.getControl() -> turnSw2Off(Sw2Mode::Normal);
52+
53+
// Turn off the I2C bus as the PMIC might try to communicate with the microcontroller
54+
Wire1.end();
55+
56+
57+
58+
LowPower.standbyM7(LowPowerStandbyType::untilPinActivity | LowPowerStandbyType::untilTimeElapsed, 10 s);
59+
//
60+
// The following is an alternative way to go into Standby Mode for 10 seconds:
61+
// LowPower.standbyM7(LowPowerStandbyType::untilTimeElapsed, RTCWakeupDelay(0, 0, 10));
62+
//
63+
// The following is how to go to into Standby Mode waiting only for a wakeup pin:
64+
// LowPower.standbyM7(LowPowerStandbyType::untilPinActivity);
65+
//
66+
#else
67+
LowPower.standbyM4();
68+
#endif
69+
}
70+
71+
void loop() {}

0 commit comments

Comments
 (0)