-
Notifications
You must be signed in to change notification settings - Fork 48
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add an I2C/MPU6050 example (the timing is still broken).
- Loading branch information
1 parent
7b7d5d1
commit 00e9745
Showing
2 changed files
with
50 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
#![deny(warnings)] | ||
#![deny(unsafe_code)] | ||
#![no_main] | ||
#![no_std] | ||
|
||
use hal::i2c::Config; | ||
use hal::prelude::*; | ||
use hal::stm32; | ||
use stm32g4xx_hal as hal; | ||
|
||
use cortex_m_rt::entry; | ||
use log::info; | ||
use mpu6050::*; | ||
|
||
#[macro_use] | ||
mod utils; | ||
|
||
#[entry] | ||
fn main() -> ! { | ||
utils::logger::init(); | ||
|
||
let dp = stm32::Peripherals::take().expect("cannot take peripherals"); | ||
let cp = cortex_m::Peripherals::take().expect("cannot take core peripherals"); | ||
|
||
let mut rcc = dp.RCC.constrain(); | ||
let gpiob = dp.GPIOB.split(&mut rcc); | ||
|
||
let sda = gpiob.pb9.into_alternate_open_drain(); | ||
let scl = gpiob.pb8.into_alternate_open_drain(); | ||
|
||
//let i2c = dp.I2C1.i2c(sda, scl, Config::new(100.khz()), &mut rcc); | ||
/*let i2c = dp | ||
.I2C1 | ||
.i2c(sda, scl, Config::with_timing(0xf020_151b), &mut rcc);*/ | ||
let i2c = dp | ||
.I2C1 | ||
.i2c(sda, scl, Config::with_timing(0x3042_0f13), &mut rcc); | ||
|
||
let mut mpu = Mpu6050::new(i2c); | ||
let mut delay = cp.SYST.delay(&rcc.clocks); | ||
mpu.init(&mut delay).expect("cannot initialize the MPU6050"); | ||
|
||
loop { | ||
let acc = mpu.get_acc().expect("cannot read accelerometer"); | ||
let gyro = mpu.get_gyro().expect("cannot read gyro"); | ||
let temp = mpu.get_temp().expect("cannot read temperature"); | ||
info!("acc: {:?}, gyro: {:?}, temp: {:?}C", acc, gyro, temp); | ||
} | ||
} |