Ga naar inhoud

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: MeshCore v1.16.0, commit 03b6ef4, 28 juli 2026 — bestanden platformio.ini en src/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.

Bronnen