如何使用生锈的 raspberrypi 控制 8x8 LED 矩阵显示器 Max7219?

时间:2021-07-10 17:31:45

标签: rust raspberry-pi

我想通过 SPI 接口手动控制由 max7219 微控制器控制的 4 个链接在一起的 8*8 LED 矩阵上的每个点。

我已经将时钟、主输出/从输入和芯片选择信号连接到我的示波器上,一切似乎都按应有的方式工作。

但我只能通过向它发送随机数据来使显示正常工作,我不知道这些数据是如何编码的。

这是代码

use rand::Rng;

use std::io;
use std::io::prelude::*;
use spidev::{Spidev, SpidevOptions, SpidevTransfer, SpiModeFlags};

// Read the state of GPIO4 on a raspberry pi.  /dev/gpiochip0
// maps to the driver for the SoC (builtin) GPIO controller.
fn main() -> Result<(), gpio_cdev::Error> {
    let mut spi = create_spi().unwrap();
    write_spi(&mut spi);
    Ok(())
}

fn write_spi(spi: &mut Spidev) -> io::Result<()> {
    let mut rng = rand::thread_rng();
    loop {
        let mut tx_buf = [0u8; 8];
        for i in 0..8 {
                tx_buf[i] = rng.gen_range(0..255);
        }

        spi.write(&tx_buf);
    }

    Ok(())
}


fn create_spi() -> io::Result<Spidev> {
    let mut spi = Spidev::open("/dev/spidev0.0")?;
    let options = SpidevOptions::new()
         .bits_per_word(8)
         .max_speed_hz(10_000)
         .mode(SpiModeFlags::SPI_MODE_0)
         .build();
    spi.configure(&options)?;
    Ok(spi)
}

必须发送哪些数据才能使其正常工作?

0 个答案:

没有答案
相关问题