Updated AD5940 lib, now wait for custom PCB.

This commit is contained in:
2025-08-04 13:06:53 +02:00
parent d04f457c9f
commit 0256b5d3f4
4 changed files with 308 additions and 118 deletions

View File

@@ -7,6 +7,8 @@ use embassy_stm32::gpio::{Level, Output, Speed};
use embassy_stm32::{i2c, spi, Config};
use embassy_stm32::time::Hertz;
use embassy_time::Timer;
use crate::ad5940_registers::{AFECON, AFEGENINTSTA};
use {defmt_rtt as _, panic_probe as _};
mod ad5940;
@@ -41,41 +43,62 @@ async fn main(_spawner: Spawner) {
// let mut led = Output::new(p.PA5, Level::High, Speed::Low);
// Set up SPI for AD5940
let cs = Output::new(p.PC9, Level::High, Speed::Low);
let rst = Output::new(p.PB3, Level::High, Speed::Low);
// // Set up SPI for AD5940
// let cs = Output::new(p.PC9, Level::High, Speed::Low);
// let rst = Output::new(p.PB3, Level::High, Speed::Low);
let spi = spi::Spi::new_blocking(
p.SPI1,
p.PA5, // SCK
p.PA7, // MOSI
p.PA6, // MISO
spi::Config::default()
);
// let spi = spi::Spi::new_blocking(
// p.SPI1,
// p.PA5, // SCK
// p.PA7, // MOSI
// p.PA6, // MISO
// spi::Config::default()
// );
let mut ad5940 = AD5940::new(spi, cs, rst);
ad5940.reset().await.unwrap();
Timer::after_millis(1).await;
ad5940.system_init().await.unwrap();
// let mut ad5940 = AD5940::new(spi, cs, rst);
// ad5940.reset().await.unwrap();
// Timer::after_millis(1).await;
// ad5940.system_init().await.unwrap();
// ad5940.init_temperature().await.unwrap();
ad5940.init_waveform().await.unwrap();
// ad5940.init_waveform().await.unwrap();
// Set up I2C for ADG2128
let i2c = i2c::I2c::new_blocking(
p.I2C1,
p.PB6,
p.PB7,
Hertz(400_000),
i2c::Config::default()
);
// // Set up I2C for ADG2128
// let i2c = i2c::I2c::new_blocking(
// p.I2C1,
// p.PB6,
// p.PB7,
// Hertz(400_000),
// i2c::Config::default()
// );
// Initialize electrodes
let mut electrodes = Electrodes::new(i2c);
electrodes.reset_all();
electrodes.set(Electrode::E1, AD5940Pin::CE0, State::ENABLED);
electrodes.set(Electrode::E3, AD5940Pin::AIN1, State::ENABLED);
// electrodes.set(Electrode::E12, AD5940Pin::RE0, State::ENABLED);
// // Initialize electrodes
// let mut electrodes = Electrodes::new(i2c);
// electrodes.reset_all();
// electrodes.set(Electrode::E1, AD5940Pin::CE0, State::ENABLED);
// electrodes.set(Electrode::E3, AD5940Pin::AIN1, State::ENABLED);
// // electrodes.set(Electrode::E12, AD5940Pin::RE0, State::ENABLED);
// // Sequencer test
// ad5940.sequencer_enable(true).await;
// ad5940.afecon(AFECON::WAVEGENEN, true).await;
// ad5940.wgfcw(1000).await;
// ad5940.sequencer_wait(600_000).await;
// ad5940.wgfcw(2000).await;
// ad5940.sequencer_trigger_interrupt(AFEGENINTSTA::CUSTOMINT0).await;
// ad5940.sequencer_trigger_interrupt(AFEGENINTSTA::CUSTOMINT1).await;
// ad5940.sequencer_wait(160_000).await;
// ad5940.afecon(AFECON::WAVEGENEN, false).await;
// ad5940.sequencer_enable(false).await;
// // Configure the sequencer cmd data sram
// ad5940.cmddatacon().await;
// let start_address = 100; // 20 works
// ad5940.sequencer_cmd_write(start_address).await;
// ad5940.sequencer_info_configure(0, ad5940.seq_len, start_address).await;
// info!("{}", ad5940.seq_len);
loop {
// Read chip id
@@ -86,15 +109,14 @@ async fn main(_spawner: Spawner) {
// let temp = ad5940.get_temperature().await.unwrap();
// info!("Temperature: {}°C", temp);
let result = electrodes.get_all();
info!("Electrodes states: {:?}", result);
// let result = electrodes.get_all();
// info!("Electrodes states: {:?}", result);
// info!("high");
// led.set_high();
Timer::after_millis(500).await;
Timer::after_millis(1000).await;
// info!("low");
// led.set_low();
Timer::after_millis(500).await;
// ad5940.sequencer_trigger().await;
}
}