pounder_test/src/eeprom.rs

24 lines
633 B
Rust
Executable File

use stm32h7::stm32h743 as pac;
use super::i2c;
const I2C_ADDR: u8 = 0xa0;
pub fn read_eui48<'a>(i2c: &pac::I2C2) -> Result<[u8; 6], i2c::Error> {
let mut buffer = [0u8; 6];
i2c::write_read(i2c, I2C_ADDR, &[0xFAu8], &mut buffer)?;
Ok(buffer)
}
pub fn read(i2c: &pac::I2C2, addr: u8, mut buffer: &mut [u8]) -> Result<(), i2c::Error> {
i2c::write_read(i2c, I2C_ADDR, &[addr], &mut buffer)?;
Ok(())
}
pub fn write(i2c: &pac::I2C2, addr: u8, buffer: &[u8]) -> Result<(), i2c::Error> {
for (i, &byte) in buffer.iter().enumerate() {
i2c::write(i2c, I2C_ADDR, &[addr+i as u8, byte])?;
}
Ok(())
}