pub struct Configuration {
pub cpu_clock: CpuClock,
pub spi_frequency: HertzU32,
pub display_refresh_order: RefreshOrder,
pub display_rotation: Rotation,
pub display_tearing: TearingEffect,
pub adc_cfg: AdcCfg,
pub i2s_tx_config: I2sTxConfig,
pub buzzer_config: BuzzerConfig,
}Expand description
Top-level configuration passed to crate::Lilka::init.
All fields have sensible defaults via Configuration::default.
Use struct-update syntax to override only what you need:
use lilkaoxide::prelude::*;
let config = LilkaConfiguration {
display_rotation: mipidsi::options::Rotation::Deg90,
..LilkaConfiguration::default()
};§Field reference
| Field | Type | Default | Description |
|---|---|---|---|
cpu_clock | [CpuClock] | system default | ESP32-S3 core frequency. |
spi_frequency | HertzU32 | 60 MHz | SPI2 clock for display + SD. |
display_refresh_order | [RefreshOrder] | default | ST7789 line-scan order. |
display_rotation | [Rotation] | Deg270 | Screen rotation (landscape). |
display_tearing | [TearingEffect] | Off | Tearing-effect output signal. |
adc_cfg | AdcCfg | 11 dB attenuation | Battery ADC channel config. |
i2s_tx_config | I2sTxConfig | 44 100 Hz stereo | I2S audio output config. |
buzzer_config | BuzzerConfig | 4 kHz / 50 % | PWM buzzer config. |
Fields§
§cpu_clock: CpuClockCPU clock speed. Higher speeds increase performance but also current draw.
spi_frequency: HertzU32SPI2 bus clock. Both the display (ST7789) and the SD card share this bus. The ST7789 supports up to ~80 MHz; SD cards typically max out at 25 MHz. 60 MHz is a balanced default that works reliably with both devices.
display_refresh_order: RefreshOrderControls the order in which the ST7789 controller scans rows and columns during a frame refresh. Changing this can fix visual artifacts on some panels.
display_rotation: RotationPhysical rotation of the display image. The Lilka is held in landscape mode,
so the default Deg270 maps the (0,0) origin to the top-left corner.
display_tearing: TearingEffectEnables the tearing-effect (TE) output signal on the ST7789. Leave Off
unless you are implementing vsync-locked rendering.
adc_cfg: AdcCfgBattery ADC channel configuration. The default 11 dB attenuation allows measurement up to ~3.1 V which covers a typical Li-Po discharge range.
i2s_tx_config: I2sTxConfigI2S transmitter configuration (sample rate, channel count, bit depth, TDM standard).
buzzer_config: BuzzerConfigPWM buzzer configuration (frequency, duty cycle, timer resolution).
Implementations§
Source§impl Configuration
impl Configuration
Sourcepub fn new(
spi_frequency: HertzU32,
cpu_clock: CpuClock,
display_refresh_order: RefreshOrder,
display_rotation: Rotation,
display_tearing: TearingEffect,
adc_cfg: AdcCfg,
i2s_tx_config: I2sTxConfig,
buzzer_config: BuzzerConfig,
) -> Configuration
pub fn new( spi_frequency: HertzU32, cpu_clock: CpuClock, display_refresh_order: RefreshOrder, display_rotation: Rotation, display_tearing: TearingEffect, adc_cfg: AdcCfg, i2s_tx_config: I2sTxConfig, buzzer_config: BuzzerConfig, ) -> Configuration
Creates a fully-specified Configuration.
Prefer using struct-update syntax with Configuration::default when
you only want to override a few fields — it is more readable and less
error-prone than listing every argument.
§Parameters
spi_frequency— SPI2 clock.60.MHz()is a safe default.cpu_clock— CPU core frequency.CpuClock::default()starts at 240 MHz.display_refresh_order— ST7789 pixel scan order.display_rotation— Screen rotation; useRotation::Deg270for landscape.display_tearing— TE signal; useTearingEffect::Offunless you need vsync.adc_cfg— ADC1 attenuation for the battery pin.i2s_tx_config— Audio output format and sample rate.buzzer_config— Buzzer frequency and duty cycle.
§Example
use lilkaoxide::prelude::*;
use lilkaoxide::{LilkaConfiguration, AdcCfg, I2sTxConfig};
use esp_hal::analog::adc::Attenuation;
use esp_hal::clock::CpuClock;
use fugit::RateExtU32;
use mipidsi::options::{RefreshOrder, Rotation, TearingEffect};
let config = LilkaConfiguration::new(
80.MHz(), // spi_frequency
CpuClock::default(), // cpu_clock
RefreshOrder::default(), // display_refresh_order
Rotation::Deg270, // display_rotation
TearingEffect::Off, // display_tearing
AdcCfg { attenuation: Attenuation::_11dB },
I2sTxConfig::default(),
BuzzerConfig::default(),
);