ssd1677-driver 0.1.0

A `no_std` driver for an SSD1677 based display compatible with Embedded Graphics.
Documentation

SSD1677 driver

Blocking SPI driver to use SSD1677 e-paper displays in embedded Rust.
The driver currently supports binary monochromatic usage.

This driver is tested on the GDEQ0426T82 display from GoodDisplay.

Features

Implemented:

Not implemented:

  • Red support
  • Async

Usage

The following section will show a simplified example based on the example in the exmaples directory. This snippet will not compile by itself and is only intended as a basic example of how the display can be initialised.

For more usage see the Examples folder.

use ssd1677::{self, interface::Interface4Pin};

fn main() -> ! {
    // Initialize the device pins
    let dc = Output::new(dc_pin, gpio::Level::Low, gpio::Speed::Medium);
    let reset = Output::new(reset_pin, gpio::Level::High, gpio::Speed::Medium);
    let busy = Input::new(busy_pin, gpio::Pull::None);

    // Create the display configuration
    let config: ssd1677::Config = ssd1677::ConfigBuilder::new()
        .dimensions(ssd1677::Dimensions {
            rows: 480,
            cols: 800,
        })
        .rotation(ssd1677::Rotation::Rotate0)
        .auto_update(false)
        .build()
        .expect("Failed to create display config");

    // Create the display interface
    let interface = Interface4Pin::new(display_spi_device, dc, reset, busy);

    // Create the pixel buffer for the display.
    // This needs to be large enough to store the entire display contents.
    // One bit per pixel is used for a black-and-white display.
    let mut display_buffer = [0u8; 480 * 800 / 8];

    // Create the display
    let mut display = ssd1677::Display::new(interface, &mut display_buffer, config);

    // Reset the display so it is ready for use
    display.reset(&mut Delay).expect("Failed to reset display");

    // Clear the display
    display.clear(BinaryColor::Off).unwrap();
    display
        .update(ssd1677::basic_display::DisplayUpdateMode::Slow)
        .unwrap();

    // You now have an initialised display, you can now draw to 
    // the display using embedded graphics.
}