Melopero RV3028¶
RTC · I²C-PROBE · RUNTIME-DETECTIE · ÉÉN BRONBESTAND
De RV3028 is een klokchip met een extreem laag verbruik. De library ervoor
staat in [arduino_base] en wordt daarmee in alle 507 build-targets
meegecompileerd — ook op de borden die helemaal geen RTC aan boord hebben.
In de hele firmware wordt hij in precies één bronbestand gebruikt.
[!NOTE] Bron. Deze pagina is geverifieerd tegen de firmware zelf:
MeshCorev1.16.0, commit03b6ef4, 28 juli 2026 — bestandenplatformio.iniensrc/helpers/AutoDiscoverRTCClock.cpp.
Wat het doet¶
De Micro Crystal RV-3028-C7 is een real-time clock die met ongeveer 45 nA toekan. De library van Melopero praat er over I²C mee: tijd lezen en zetten, registers schrijven, en het gedrag bij het wegvallen van de voedingsspanning instellen.
De upstream-repo was bij het schrijven van dit hoofdstuk niet vindbaar onder
de naam die het PlatformIO-registrypakket noemt; zie
../dependencies.md.
Hoe MeshCore hem binnenhaalt¶
platformio.ini r.25
melopero/Melopero RV3028 @ ^1.1.0
De regel staat in [arduino_base]. Er is geen bouwvlag die hem uitschakelt:
elk bord krijgt de library mee, of er nu een RV3028 op zit of niet.
Hoe MeshCore hem gebruikt¶
MeshCore kiest zijn klokchip niet met een compileervlag maar door bij het opstarten op de I²C-bus te kijken wie er antwoordt:
src/helpers/AutoDiscoverRTCClock.cpp r.23-27
bool AutoDiscoverRTCClock::i2c_probe(TwoWire& wire, uint8_t addr) {
wire.beginTransmission(addr);
uint8_t error = wire.endTransmission();
return (error == 0);
}
Het adres van de RV3028 staat als constante bovenaan (r.19), naast dat van
de DS3231, de PCF8563 en de RX8130CE. Reageert er iets op adres 0x52, dan
wordt de chip geïnitialiseerd en meteen ingesteld:
src/helpers/AutoDiscoverRTCClock.cpp r.36-40
if (i2c_probe(wire, RV3028_ADDRESS)) {
rtc_rv3028.initI2C(wire);
rtc_rv3028.writeToRegister(0x35, 0x00);
rtc_rv3028.writeToRegister(0x37, 0xB4); // Direct Switching Mode (DSM): when VDD < VBACKUP, switchover occurs from VDD to VBACKUP
rtc_rv3028.set24HourMode(); // Set the device to use the 24hour format (default) instead of the 12 hour format
AutoDiscoverRTCClock.cpp is het enige bronbestand van de 590 waarin de
tekst RV3028 voorkomt.
Wat het voor een node betekent¶
De detectie gebeurt bij elke start opnieuw. Dat betekent dat dezelfde firmware op een bord mét en op een bord zónder RV3028 werkt, zonder aparte build. De prijs is dat de code voor vier klokchips altijd meegaat, ook als er geen enkele aanwezig is.
De instelling op register 0x37 zorgt ervoor dat de chip bij het wegvallen
van de voedingsspanning automatisch overschakelt op de backupvoeding. Een
node met een RV3028 en een knoopcel houdt de tijd dus vast als de accu leeg
raakt.