Implemented postcard-rpc.

This commit is contained in:
2025-08-04 16:58:34 +02:00
parent 18220e4be9
commit 4cd3beba73
6 changed files with 537 additions and 36 deletions

View File

@@ -1,7 +1,7 @@
#![no_std]
#![no_main]
use defmt::*;
use defmt::info;
use embassy_executor::Spawner;
use embassy_stm32::gpio::{Level, Output, Speed};
use embassy_stm32::{i2c, spi, Config};
@@ -11,19 +11,29 @@ use crate::ad5940_registers::{AFECON, AFEGENINTSTA};
use {defmt_rtt as _, panic_probe as _};
mod ad5940;
use ad5940::AD5940;
// mod ad5940;
// use ad5940::AD5940;
mod adg2128;
use adg2128::State;
// mod adg2128;
// use adg2128::State;
mod electrodes;
use electrodes::{Electrodes, Electrode, AD5940Pin};
// mod electrodes;
// use electrodes::{Electrodes, Electrode, AD5940Pin};
mod ad5940_registers;
use embassy_stm32::usb::Driver;
use embassy_stm32::{bind_interrupts, peripherals, usb};
mod communication;
use communication::init_communication;
bind_interrupts!(struct Irqs {
USB_DRD_FS => usb::InterruptHandler<peripherals::USB>;
});
#[embassy_executor::main]
async fn main(_spawner: Spawner) {
async fn main(spawner: Spawner) {
let mut config = Config::default();
{
@@ -49,7 +59,7 @@ async fn main(_spawner: Spawner) {
let p = embassy_stm32::init(config);
info!("Hello World!");
// let mut led = Output::new(p.PA5, Level::High, Speed::Low);
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);
@@ -108,6 +118,10 @@ async fn main(_spawner: Spawner) {
// ad5940.sequencer_info_configure(0, ad5940.seq_len, start_address).await;
// info!("{}", ad5940.seq_len);
// Create USB driver and start postcard-rpc server
let driver = Driver::new(p.USB, Irqs, p.PA12, p.PA11);
init_communication(driver, spawner);
loop {
// Read chip id
// let chip_id = ad5940.get_chipid().await.unwrap();
@@ -121,10 +135,16 @@ async fn main(_spawner: Spawner) {
// info!("Electrodes states: {:?}", result);
// info!("high");
// led.set_high();
led.set_high();
Timer::after_millis(1000).await;
led.set_low();
Timer::after_millis(1000).await;
info!("Toggle!");
// ad5940.sequencer_trigger().await;
}
}