working
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
use defmt::*;
|
use defmt::*;
|
||||||
use embassy_executor::Spawner;
|
use embassy_executor::Spawner;
|
||||||
use embassy_stm32::spi::{Config, Spi};
|
use embassy_stm32::spi::{Config, Spi};
|
||||||
use embassy_stm32::gpio::{Pull, Level, Speed, Output};
|
use embassy_stm32::gpio::{Level, Speed, Output};
|
||||||
use embassy_time::{Duration, Timer};
|
use embassy_time::{Duration, Timer};
|
||||||
use {defmt_rtt as _, panic_probe as _};
|
use {defmt_rtt as _, panic_probe as _};
|
||||||
|
|
||||||
@@ -15,37 +15,36 @@ async fn main(_spawner: Spawner) {
|
|||||||
|
|
||||||
let p = embassy_stm32::init(Default::default());
|
let p = embassy_stm32::init(Default::default());
|
||||||
|
|
||||||
let mut spi = Spi::new_blocking(p.SPI1, p.PA5, p.PA7, p.PA6, Config::default());
|
let mut spi = Spi::new_blocking(p.SPI1, p.PB3, p.PB5, p.PB4, Config::default());
|
||||||
let mut cs = Output::new(p.PA4, Level::High, Speed::VeryHigh);
|
let mut cs = Output::new(p.PA4, Level::High, Speed::VeryHigh);
|
||||||
|
|
||||||
cs.set_low();
|
cs.set_low();
|
||||||
if let Err(e) = spi.blocking_write(&[0x01u8, 0x79u8]) {
|
let _ = spi.blocking_write(&[0x01u8, 0x79u8]);
|
||||||
error!("Nepodarilo sa aktivovať CMM: {:?}", e);
|
|
||||||
}
|
|
||||||
cs.set_high();
|
cs.set_high();
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let mut data = [0u8; 10];
|
let mut data = [0u8; 10];
|
||||||
|
|
||||||
data[0] = 0xA4;
|
data[0] = 0xA4;
|
||||||
|
|
||||||
cs.set_low();
|
cs.set_low();
|
||||||
let result = spi.blocking_transfer_in_place(&mut data);
|
let result = spi.blocking_transfer_in_place(&mut data);
|
||||||
cs.set_high();
|
cs.set_high();
|
||||||
|
|
||||||
match result {
|
match result {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// index 0, len potvrdenie prijatia adresy
|
|
||||||
let raw = &data[1..];
|
let raw = &data[1..];
|
||||||
|
|
||||||
info!("X: {:02x}{:02x}{:02x} Y: {:02x}{:02x}{:02x} Z: {:02x}{:02x}{:02x}",
|
// 1. Correct 24-bit Signed Conversion (Minimal change)
|
||||||
raw[0], raw[1], raw[2],
|
let x = (((raw[0] as i32) << 24) | ((raw[1] as i32) << 16) | ((raw[2] as i32) << 8)) >> 8;
|
||||||
raw[3], raw[4], raw[5],
|
let y = (((raw[3] as i32) << 24) | ((raw[4] as i32) << 16) | ((raw[5] as i32) << 8)) >> 8;
|
||||||
raw[6], raw[7], raw[8]);
|
let z = (((raw[6] as i32) << 24) | ((raw[7] as i32) << 16) | ((raw[8] as i32) << 8)) >> 8;
|
||||||
|
|
||||||
|
// 2. Display in Relevant Decimal Format
|
||||||
|
info!("X: {} Y: {} Z: {}", x, y, z);
|
||||||
}
|
}
|
||||||
Err(e) => error!("SPI error: {:?}", e),
|
Err(e) => error!("SPI error: {:?}", e),
|
||||||
}
|
}
|
||||||
|
|
||||||
Timer::after(Duration::from_millis(100)).await;
|
Timer::after(Duration::from_millis(10)).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user