#oled #embedded-hal-driver #no-std

no-std dev ssd1306

SSD1306 OLED显示控制器I2C/SPI驱动程序

27个版本

0.8.4 2023年10月27日
0.8.2 2023年9月29日
0.8.0 2023年6月1日
0.7.1 2022年8月15日
0.1.0 2018年4月30日

73嵌入式开发 中排名

Download history 2446/week @ 2024-04-20 2060/week @ 2024-04-27 1084/week @ 2024-05-04 1046/week @ 2024-05-11 2086/week @ 2024-05-18 2557/week @ 2024-05-25 1420/week @ 2024-06-01 1399/week @ 2024-06-08 1215/week @ 2024-06-15 1594/week @ 2024-06-22 1587/week @ 2024-06-29 1222/week @ 2024-07-06 2318/week @ 2024-07-13 1988/week @ 2024-07-20 1937/week @ 2024-07-27 1534/week @ 2024-08-03

每月7,969次下载
用于 30 个包

MIT/Apache

70KB
1K SLoC

SSD1306驱动程序

Build Status Crates.io Docs.rs

CRIUS display showing the Rust logo

SSD1306 OLED显示的I2C和SPI(4线)驱动程序。

文档

更新日志

示例

此包使用probe-run来运行示例。一旦设置完成,它应该像这样简单:cargo run --example <example name> --release

来自examples/image_i2c.rs

#![no_std]
#![no_main]

use cortex_m_rt::{entry, exception, ExceptionFrame};
use embedded_graphics::{
    image::{Image, ImageRaw},
    pixelcolor::BinaryColor,
    prelude::*,
};
use panic_halt as _;
use ssd1306::{prelude::*, I2CDisplayInterface, Ssd1306};
use stm32f1xx_hal::{
    i2c::{BlockingI2c, DutyCycle, Mode},
    prelude::*,
    stm32,
};

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

    let mut flash = dp.FLASH.constrain();
    let mut rcc = dp.RCC.constrain();

    let clocks = rcc.cfgr.freeze(&mut flash.acr);

    let mut afio = dp.AFIO.constrain(&mut rcc.apb2);

    let mut gpiob = dp.GPIOB.split(&mut rcc.apb2);

    let scl = gpiob.pb8.into_alternate_open_drain(&mut gpiob.crh);
    let sda = gpiob.pb9.into_alternate_open_drain(&mut gpiob.crh);

    let i2c = BlockingI2c::i2c1(
        dp.I2C1,
        (scl, sda),
        &mut afio.mapr,
        Mode::Fast {
            frequency: 400_000.hz(),
            duty_cycle: DutyCycle::Ratio2to1,
        },
        clocks,
        &mut rcc.apb1,
        1000,
        10,
        1000,
        1000,
    );

    let interface = I2CDisplayInterface::new(i2c);
    let mut display = Ssd1306::new(interface, DisplaySize128x64, DisplayRotation::Rotate0)
        .into_buffered_graphics_mode();
    display.init().unwrap();

    let raw: ImageRaw<BinaryColor> = ImageRaw::new(include_bytes!("./rust.raw"), 64);

    let im = Image::new(&raw, Point::new(32, 0));

    im.draw(&mut display).unwrap();

    display.flush().unwrap();

    loop {}
}

#[exception]
fn HardFault(ef: &ExceptionFrame) -> ! {
    panic!("{:#?}", ef);
}

许可证

根据您的选择,许可协议为以下之一

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,均应按上述方式双重许可,没有任何附加条款或条件。

依赖关系

~225KB