ssd1315-driver 0.4.1

SSD1315 OLED driver.
Documentation
This repository is based on [ssd1315](https://github.com/InfyniteHeap/ssd1315) which have not been updated for a long time.

# SSD1315 driver

[![Crates.io](https://img.shields.io/crates/v/ssd1315-driver.svg)](https://crates.io/crates/ssd1315-driver)
[![Docs.rs](https://docs.rs/ssd1315-driver/badge.svg)](https://docs.rs/ssd1315-driver)

I2C and SPI (4 wire) driver for the the SSD1315 OLED driver.

SSD1315 is a smaller [SSD1306](https://github.com/rust-embedded-community/ssd1306) display driver, but this repo is much easier to use than the SSD1306 driver. Generally speaking, you can use the [SSD1306](https://github.com/rust-embedded-community/ssd1306) driver to drive the SSD1315 display.

SSD1315 is a display driver IC from Solomon Systech designed for small-size, monochrome OLED or PLED panels with a resolution of up to 128×64 pixels. More information about the SSD1315 can be found in the documentation: [SSD1315](https://github.com/LinkWanna/ssd1315-driver/tree/main/doc).

## Example

Here is a full example (the MCU model is STM32F411CEU6):

```rust
#![deny(unsafe_code)]
#![no_std]
#![no_main]

use cortex_m::asm::nop;
use cortex_m_rt::entry;
use embedded_graphics::{
    pixelcolor::BinaryColor,
    prelude::*,
    primitives::{Circle, PrimitiveStyle},
};
use panic_halt as _;
use ssd1315::*;
use stm32f4xx_hal::{
    i2c::{DutyCycle, Mode},
    pac,
    prelude::*,
};

#[entry]
fn main() -> ! {
    let dp = pac::Peripherals::take().unwrap();

    let rcc = dp.RCC.constrain();
    let clocks = rcc.cfgr.freeze();

    let gpiob = dp.GPIOB.split();
    let (scl, sda) = (
        gpiob.pb8.into_alternate_open_drain(),
        gpiob.pb9.into_alternate_open_drain(),
    );

    let i2c = dp.I2C1.i2c(
        (scl, sda),
        Mode::fast(400000.Hz(), DutyCycle::Ratio2to1),
        &clocks,
    );

    let interface = interface::I2cDisplayInterface::new(i2c);
    let config = config::Ssd1315Config::preset_config();

    let mut display = Ssd1315::new(interface);

    Circle::new(Point::new(0, 0), 40)
        .into_styled(PrimitiveStyle::with_fill(BinaryColor::On))
        .draw(&mut display)
        .unwrap();

    display.init(config).unwrap();
    display.flush().unwrap();

    loop {
        nop()
    }
}
```

## License

This software is distributed under GPL-3.0 license.

## Contributing

Thank you for your interest in contributing to this project! If you find any bugs or have suggestions to improve this project, please open an issue or submit a pull request! :)