st7305-lcd 0.2.0

Platform-independent no_std driver for the Sitronix ST7305 reflective LCD controller (embedded-hal 1.0, blocking and async)
Documentation
/// Waveshare 4.2" RLCD board (ST7305, 400 x 300): the initialization table and the matching GRAM
/// layout, verified on hardware.
pub mod waveshare_rlcd_42 {
    use crate::InitStep::{self, Cmd, DelayMs};

    /// Initialization table of the Waveshare 4.2" RLCD board (ST7305, 400 x 300): power, timing and
    /// panel registers, sleep out, 4-pixel-block data format, inversion on, GRAM window for 15000 bytes, tearing
    /// effect line on, high power mode and display on. Use with `init_with`.
    pub const INIT: &[InitStep<'static>] = &[
        Cmd(0xD6, &[0x17, 0x02]),
        Cmd(0xD1, &[0x01]),
        Cmd(0xC0, &[0x11, 0x04]),
        Cmd(0xC1, &[0x69, 0x69, 0x69, 0x69]),
        Cmd(0xC2, &[0x19, 0x19, 0x19, 0x19]),
        Cmd(0xC4, &[0x4B, 0x4B, 0x4B, 0x4B]),
        Cmd(0xC5, &[0x19, 0x19, 0x19, 0x19]),
        Cmd(0xD8, &[0x80, 0xE9]),
        Cmd(0xB2, &[0x02]),
        Cmd(
            0xB3,
            &[0xE5, 0xF6, 0x05, 0x46, 0x77, 0x77, 0x77, 0x77, 0x76, 0x45],
        ),
        Cmd(0xB4, &[0x05, 0x46, 0x77, 0x77, 0x77, 0x77, 0x76, 0x45]),
        Cmd(0x62, &[0x32, 0x03, 0x1F]),
        Cmd(0xB7, &[0x13]),
        Cmd(0xB0, &[0x64]),
        Cmd(0x11, &[]),
        DelayMs(200),
        Cmd(0xC9, &[0x00]),
        Cmd(0x36, &[0x48]),
        Cmd(0x3A, &[0x11]),
        Cmd(0xB9, &[0x20]),
        Cmd(0xB8, &[0x29]),
        Cmd(0x21, &[]),
        Cmd(0x2A, &[0x12, 0x2A]),
        Cmd(0x2B, &[0x00, 0xC7]),
        Cmd(0x35, &[0x00]),
        Cmd(0xD0, &[0xFF]),
        Cmd(0x38, &[]),
        Cmd(0x29, &[]),
    ];

    /// GRAM layout of the panel: `CASET` columns `0x12..=0x2A` (25 bands of 12 pixels), `RASET`
    /// rows `0..=0xC7`. Datasheet v0.2 gives other limits (`0x13..=0x28`), they do not match this
    /// panel.
    #[cfg(feature = "framebuffer")]
    pub type Map = crate::framebuffer::Landscape<400, 300, 0x12, 0x00>;

    /// Frame buffer of the panel.
    #[cfg(feature = "framebuffer")]
    pub type FrameBuffer = crate::framebuffer::FrameBuffer<Map, 15_000>;
}

pub use waveshare_rlcd_42::INIT as WAVESHARE_RLCD_42;