An error occurred while loading the file. Please try again.
-
0d83e278
#![no_main]
#![no_std]
extern crate panic_halt;
use cortex_m::asm;
use embedded_hal::blocking::i2c::{Read, Write};
use rtfm::app;
use lpc43xx_hal as driver;
use driver::i2c;
use driver::time::U32Ext;
#[app(device = lpc43xx_pac)]
const APP: () = {
static mut I2C: i2c::I2C = ();
#[init]
fn init() -> init::LateResources {
let scu = device.SCU;
let i2c0 = device.I2C0;
let rgu = device.RGU;
// reset i2c peripheral
rgu.reset_ctrl1.write(|w| {
w.
i2c0_rst().set_bit()
});
// wait for reset
for _ in 0..10000 {
asm::nop();
}
let i2c = i2c::I2C::new(
&scu.sfsi2c0,
i2c0,
i2c::Mode::Master,
i2c::Speed::Normal,
12.mhz());
init::LateResources {
I2C: i2c,
}
}
#[idle(resources = [I2C])]
fn idle() -> ! {
let i2c = resources.I2C;
let write_buffer: [u8; 2] = [0b000_1111, 234];
let select_reg: [u8; 1] = [0b000_1111];
let mut read_buffer: [u8; 1] = [0; 1];
let slave_addr: u8 = 0b1010_000;
i2c.write(slave_addr, &write_buffer).unwrap();
i2c.write(slave_addr, &select_reg).unwrap();
i2c.read(slave_addr, &mut read_buffer).unwrap();
assert!(
write_buffer[1] == read_buffer[0],
"Data should be the same");
asm::bkpt();
717273747576
loop {
cortex_m::asm::wfi();
}
}
};