#lcd #嵌入式-hal-driver #无-std

无-std st7565

基于ST7565芯片的显示器驱动程序

12个不稳定版本 (4个破坏性版本)

0.5.0 2024年5月22日
0.4.0 2024年5月20日
0.3.1 2023年11月12日
0.3.0 2023年8月16日
0.1.3 2022年8月16日

#149 in 嵌入式开发

每月31次下载

MIT/Apache

86KB
875

st7565

DOGM132W-5 display showing the graphics example

Crates.io Crates.io License Build Status docs.rs

这个软件包旨在提供一个与嵌入式图形库兼容的基于ST7565芯片集的显示器驱动程序。

示例

以下示例适用于连接到DOGM132W-5显示器和nRF52840微控制器的DOGM132W-5显示器。

请注意SPI的MODE_3模式。DOGM132W-5显示器期望时钟配置为CPOL=1CPHA=1,这也称为SPI模式3

// Create DOGM132W-5 spi bus
let disp_spi = SPIInterface::new(
    hal::Spim::new(
        peripherals.SPIM0,
        hal::spim::Pins {
            sck: disp_scl,
            mosi: Some(disp_si),
            miso: None,
        },
        hal::spim::Frequency::M8,
        hal::spim::MODE_3,
        0,
    ),
    disp_a0,
    disp_cs,
);

// Create DOGM132W-5 display driver
let mut page_buffer = GraphicsPageBuffer::new();
let mut disp = ST7565::new(disp_spi, DOGM132W5).into_graphics_mode(&mut page_buffer);
disp.reset(&mut disp_rst, &mut timer).unwrap();
disp.flush().unwrap();
disp.set_display_on(true).unwrap();

// Draw on it using the embedded_graphics library
Circle::new(Point::new(10, 6), 20)
    .into_styled(PrimitiveStyle::with_stroke(BinaryColor::On, 2))
    .draw(&mut disp)
    .unwrap();
disp.flush().unwrap();

请注意DOGM132W5对象。这是一个包含所有需要应用于ST7565芯片的显示特定配置选项的显示规范。

此外,请注意调用into_graphics_mode(),它将驱动程序从其初始模式切换到嵌入式图形驱动程序模式。然后可以将disp对象用作DrawTarget嵌入式图形调用中。

绘制完成后,必须发出一个flush()调用,以便实际将修改后的数据发送到显示器。

添加对新ST7565基于显示器的支持

上述示例在[ST7565::new()]调用中使用DOGM132W5结构。

为了用不同的显示器初始化ST7565驱动程序结构,必须创建一个新的显示规范。这可以通过创建一个实现DisplaySpecs特质的空结构来完成。

例如,DOGM132W5 结构体的定义如下

pub struct DOGM132W5;
impl DisplaySpecs<132, 32, 4> for DOGM132W5 {
    const FLIP_ROWS: bool = false;
    const FLIP_COLUMNS: bool = true;
    const INVERTED: bool = false;
    const BIAS_MODE_1: bool = false;
    const POWER_CONTROL: PowerControlMode = PowerControlMode {
        booster_circuit: true,
        voltage_regulator_circuit: true,
        voltage_follower_circuit: true,
    };
    const VOLTAGE_REGULATOR_RESISTOR_RATIO: u8 = 0b011;
    const ELECTRONIC_VOLUME: u8 = 0b011111;
    const BOOSTER_RATIO: BoosterRatio = BoosterRatio::StepUp2x3x4x;
    const COLUMN_OFFSET: u8 = 0;
}

相应的显示的确切值需要从显示手册中获取。

如果您为新显示创建了规范,请在 https://github.com/Finomnis/st7565/pulls 上创建一个拉取请求,以便将其提供给公众。

依赖项

~560KB