Reverse engineering the Arduino Portenta H7 Bootloader [Oscillators] [Part 2]

Reverse engineering the Arduino Portenta H7 Bootloader [Oscillators] [Part 2]
arduino
rust
bootloader
h7
oscillator

Oscillators on the H7

The Arduino Portenta H7 uses three diffrent oscillators.

  1. 32.768kHz (Y1) SiT1532AI-J4-DCC-32.768E
  2. 25MHz (U17) DSC6151HI2B-025.0000
  3. 27MHz (U18) DSC6151HI2B-027.0000T

32.768kHz (Y1)

This oscillator is connected to the WiFi module and MCU. This signal can be used by the real-time-clock on the MCU. It’s worth noting however that VDD on Y1 is not connected to VBAT+ which means that the clock will stop even if you have a coin cell installed.

25MHz (U17)

The external LAN Phy is the only device using this clock.

27MHz (U18)

Both the external High-Speed USB Phy and ANX7625 chip uses this clock.

Enable the oscillators

Both U17 and U18 have to manually be enabled by the user. The OSCEN pin is connected to MCU port H, pin 1 (PH1).

let mut oscen = gpioh.ph1.into_push_pull_output();
oscen.set_high().unwrap();
// Wait for osc to be stable
delay.delay_ms(10u32);