Refactor CoreVoltage enum, separate for rp2040 and rp235x

This commit is contained in:
1-rafael-1 2025-05-12 21:42:03 +02:00
parent 79e452922a
commit be1b679d48

View File

@ -156,93 +156,79 @@ pub enum PeriClkSrc {
/// **Note**: For RP235x the maximum voltage is 1.30V, unless unlocked by setting unless the voltage limit /// **Note**: For RP235x the maximum voltage is 1.30V, unless unlocked by setting unless the voltage limit
/// is disabled using the disable_voltage_limit field in the vreg_ctrl register. For lack of practical use at this /// is disabled using the disable_voltage_limit field in the vreg_ctrl register. For lack of practical use at this
/// point in time, this is not implemented here. So the maximum voltage in this enum is 1.30V for now. /// point in time, this is not implemented here. So the maximum voltage in this enum is 1.30V for now.
#[cfg(feature = "rp2040")]
#[repr(u8)] #[repr(u8)]
#[derive(Clone, Copy, Debug, PartialEq, Eq)] #[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))] #[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum CoreVoltage { pub enum CoreVoltage {
// RP2040 voltage levels /// 0.80V
#[cfg(feature = "rp2040")]
/// RP2040: 0.80V
V0_80 = 0b0000, V0_80 = 0b0000,
#[cfg(feature = "rp2040")] /// 0.85V
/// RP2040: 0.85V
V0_85 = 0b0110, V0_85 = 0b0110,
#[cfg(feature = "rp2040")] /// 0.90V
/// RP2040: 0.90V
V0_90 = 0b0111, V0_90 = 0b0111,
#[cfg(feature = "rp2040")] /// 0.95V
/// RP2040: 0.95V
V0_95 = 0b1000, V0_95 = 0b1000,
#[cfg(feature = "rp2040")] /// 1.00V
/// RP2040: 1.00V
V1_00 = 0b1001, V1_00 = 0b1001,
#[cfg(feature = "rp2040")] /// 1.05V
/// RP2040: 1.05V
V1_05 = 0b1010, V1_05 = 0b1010,
#[cfg(feature = "rp2040")] /// 1.10V - Default voltage level
/// RP2040: 1.10V - Default voltage level
V1_10 = 0b1011, V1_10 = 0b1011,
#[cfg(feature = "rp2040")] /// 1.15V - Required for overclocking to 133-200MHz
/// RP2040: 1.15V - Required for overclocking to 133-200MHz
V1_15 = 0b1100, V1_15 = 0b1100,
#[cfg(feature = "rp2040")] /// 1.20V
/// RP2040: 1.20V
V1_20 = 0b1101, V1_20 = 0b1101,
#[cfg(feature = "rp2040")] /// 1.25V
/// RP2040: 1.25V
V1_25 = 0b1110, V1_25 = 0b1110,
#[cfg(feature = "rp2040")] /// 1.30V
/// RP2040: 1.30V
V1_30 = 0b1111, V1_30 = 0b1111,
}
// RP235x voltage levels /// Core voltage regulator settings.
#[cfg(feature = "_rp235x")] ///
/// RP235x: 0.55V /// The voltage regulator can be configured for different output voltages.
/// Higher voltages allow for higher clock frequencies but increase power consumption and heat.
///
/// **Note**: For RP235x the maximum voltage is 1.30V, unless unlocked by setting unless the voltage limit
/// is disabled using the disable_voltage_limit field in the vreg_ctrl register. For lack of practical use at this
/// point in time, this is not implemented here. So the maximum voltage in this enum is 1.30V for now.
#[cfg(feature = "_rp235x")]
#[repr(u8)]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum CoreVoltage {
/// 0.55V
V0_55 = 0b00000, V0_55 = 0b00000,
#[cfg(feature = "_rp235x")] /// 0.60V
/// RP235x: 0.60V
V0_60 = 0b00001, V0_60 = 0b00001,
#[cfg(feature = "_rp235x")] /// 0.65V
/// RP235x: 0.65V
V0_65 = 0b00010, V0_65 = 0b00010,
#[cfg(feature = "_rp235x")] /// 0.70V
/// RP235x: 0.70V
V0_70 = 0b00011, V0_70 = 0b00011,
#[cfg(feature = "_rp235x")] /// 0.75V
/// RP235x: 0.75V
V0_75 = 0b00100, V0_75 = 0b00100,
#[cfg(feature = "_rp235x")] /// 0.80V
/// RP235x: 0.80V
V0_80 = 0b00101, V0_80 = 0b00101,
#[cfg(feature = "_rp235x")] /// 0.85V
/// RP235x: 0.85V
V0_85 = 0b00110, V0_85 = 0b00110,
#[cfg(feature = "_rp235x")] /// 0.90V
/// RP235x: 0.90V
V0_90 = 0b00111, V0_90 = 0b00111,
#[cfg(feature = "_rp235x")] /// 0.95V
/// RP235x: 0.95V
V0_95 = 0b01000, V0_95 = 0b01000,
#[cfg(feature = "_rp235x")] /// 1.00V
/// RP235x: 1.00V
V1_00 = 0b01001, V1_00 = 0b01001,
#[cfg(feature = "_rp235x")] /// 1.05V
/// RP235x: 1.05V
V1_05 = 0b01010, V1_05 = 0b01010,
#[cfg(feature = "_rp235x")] /// 1.10V - Default voltage level
/// RP235x: 1.10V - Default voltage level
V1_10 = 0b01011, V1_10 = 0b01011,
#[cfg(feature = "_rp235x")] /// 1.15V
/// RP235x: 1.15V
V1_15 = 0b01100, V1_15 = 0b01100,
#[cfg(feature = "_rp235x")] /// 1.20V
/// RP235x: 1.20V
V1_20 = 0b01101, V1_20 = 0b01101,
#[cfg(feature = "_rp235x")] /// 1.25V
/// RP235x: 1.25V
V1_25 = 0b01110, V1_25 = 0b01110,
#[cfg(feature = "_rp235x")] /// 1.30V
/// RP235x: 1.30V
V1_30 = 0b01111, V1_30 = 0b01111,
} }