Simple
This commit is contained in:
+22
-12
@@ -4,6 +4,7 @@
|
|||||||
use defmt::*;
|
use defmt::*;
|
||||||
use embassy_executor::Spawner;
|
use embassy_executor::Spawner;
|
||||||
use embassy_stm32::{Config, bind_interrupts, dma::InterruptHandler, i2c::{self, ErrorInterruptHandler, EventInterruptHandler, I2c}, peripherals::{DMA1_CH1, DMA1_CH2, I2C2}};
|
use embassy_stm32::{Config, bind_interrupts, dma::InterruptHandler, i2c::{self, ErrorInterruptHandler, EventInterruptHandler, I2c}, peripherals::{DMA1_CH1, DMA1_CH2, I2C2}};
|
||||||
|
use embassy_time::Timer;
|
||||||
|
|
||||||
use defmt_rtt as _;
|
use defmt_rtt as _;
|
||||||
use panic_probe as _;
|
use panic_probe as _;
|
||||||
@@ -14,24 +15,33 @@ bind_interrupts!(struct Irqs {
|
|||||||
I2C2_3 => EventInterruptHandler<I2C2>, ErrorInterruptHandler<I2C2>;
|
I2C2_3 => EventInterruptHandler<I2C2>, ErrorInterruptHandler<I2C2>;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const ADDR: u8 = 0x1A;
|
||||||
|
|
||||||
#[embassy_executor::main]
|
#[embassy_executor::main]
|
||||||
async fn main(_spawner: Spawner) {
|
async fn main(_spawner: Spawner) {
|
||||||
let config = Config::default();
|
let p = embassy_stm32::init(Config::default());
|
||||||
let p = embassy_stm32::init(config);
|
|
||||||
|
|
||||||
let mut i2c_cfg = i2c::Config::default();
|
let mut i2c_cfg = i2c::Config::default();
|
||||||
// i2c_cfg.sda_pullup = true;
|
|
||||||
// i2c_cfg.scl_pullup = true;
|
|
||||||
i2c_cfg.sda_pullup = false;
|
i2c_cfg.sda_pullup = false;
|
||||||
i2c_cfg.scl_pullup = false;
|
i2c_cfg.scl_pullup = false;
|
||||||
let mut i2c = I2c::new(
|
let mut i2c = I2c::new(p.I2C2, p.PA7, p.PA6, p.DMA1_CH1, p.DMA1_CH2, Irqs, i2c_cfg);
|
||||||
p.I2C2,
|
|
||||||
p.PA7, p.PA6,
|
|
||||||
p.DMA1_CH1, p.DMA1_CH2,
|
|
||||||
Irqs,
|
|
||||||
i2c_cfg);
|
|
||||||
|
|
||||||
i2c.write(0x1A, &[0x02u8]).await.unwrap();
|
i2c.write(ADDR, &[0x01, 0x01]).await.unwrap();
|
||||||
|
Timer::after_millis(30).await;
|
||||||
|
|
||||||
info!("Success!");
|
// Start a PTAT measurement of block 0 (1<<3 | 1).
|
||||||
|
i2c.write(ADDR, &[0x01, 0x09]).await.unwrap();
|
||||||
|
|
||||||
|
let mut status = [0u8; 1];
|
||||||
|
while {
|
||||||
|
i2c.write_read(ADDR, &[0x02], &mut status).await.unwrap();
|
||||||
|
status[0] & 0x01 == 0
|
||||||
|
} {
|
||||||
|
Timer::after_millis(250).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut data = [0u8; 258];
|
||||||
|
i2c.write_read(ADDR, &[0x0A], &mut data).await.unwrap();
|
||||||
|
|
||||||
|
info!("Measurement: {:?}", data);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user