From 9e56111d9d1b502a1063198fd63b373ad82e6661 Mon Sep 17 00:00:00 2001 From: Connie Date: Mon, 6 May 2024 15:12:13 -0400 Subject: [PATCH 1/3] delte .cargo/config.toml --- .cargo/config.toml | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml deleted file mode 100644 index 9d7b4a3..0000000 --- a/.cargo/config.toml +++ /dev/null @@ -1,6 +0,0 @@ -[target.thumbv8m.main-none-eabihf] -runner = "probe-rs run --chip STM32U575CIUxQ" -[build] -target = "thumbv8m.main-none-eabihf" -[env] -DEFMT_LOG = "info" From 2c18efa100a77f39191b2b315086e77f4a934667 Mon Sep 17 00:00:00 2001 From: Connie Date: Mon, 6 May 2024 15:12:49 -0400 Subject: [PATCH 2/3] Co-authored-by: Guangzong Chen . Add ADC in while loop --- src/main.rs | 93 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 67 insertions(+), 26 deletions(-) diff --git a/src/main.rs b/src/main.rs index ea1d86c..eaaf471 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,23 +21,30 @@ fn i2c_init() -> (I2c, I2c) { (i2c_plus, i2c_minus) } fn switch_led_setup() -> ( gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, - gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio::GpioPort){ + gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, gpio::GpioPort, + gpio::GpioPort, gpio::GpioPort, gpio::GpioPort){ let red: gpio::GpioPort = gpio::PB7; let green: gpio::GpioPort = gpio::PB8; + let s0: gpio::GpioPort = gpio::PB15; let s1: gpio::GpioPort = gpio::PA9; let s2: gpio::GpioPort = gpio::PA10; let s3: gpio::GpioPort = gpio::PB4; let s4: gpio::GpioPort = gpio::PB5; let s5: gpio::GpioPort = gpio::PA5; + let s7: gpio::GpioPort = gpio::PA4; + let s8: gpio::GpioPort = gpio::PA3; green.setup(); red.setup(); + s0.setup(); s1.setup(); s2.setup(); s3.setup(); s4.setup(); s5.setup(); - (green, red, s1, s2, s3,s4,s5) + s7.setup(); + s8.setup(); + (green, red, s0, s1, s2, s3, s4, s5, s7, s8) } fn i2c_send( i2c:&mut I2c, addr: u16, mut data: [u8; 2]) { @@ -59,30 +66,38 @@ const DAC_REG_BASE: u8 = 0xF8; async fn async_main(spawner: Spawner) { // be careful, if the dbg is not enabled, but using deep sleep. This framework will not able to connect to chip. // stm32cube programmer, stmcubeide can be used to program the chip, then this framework can be used to debug. - clock::init_clock(false, true, 16_000_000, true, clock::ClockFreqs::KernelFreq160Mhz); + clock::init_clock(true, true, 16_000_000, true, clock::ClockFreqs::KernelFreq160Mhz); no_deep_sleep_request(); defmt::info!("setup led finished!"); - let (green, red, s1, s2, s3, s4, s5) = switch_led_setup(); + clock::set_mco( + gpio::GPIO_MCO_PA8, + clock::Mcosel::HSE, + clock::Mcopre::DIV4, + ); // clock. which use PA8 as clock output + let (green, red, s0, s1, s2, s3, s4, s5, s7, s8) = switch_led_setup(); + s0.set_low(); s1.set_low(); - s2.set_high(); - s3.set_low(); - s4.set_low(); - s5.set_low(); - - // let (mut i2c_plus, mut i2c_minus) = i2c_init(); - // for i in 0..4{ - // i2c_send(&mut i2c_plus, POS_DAC_1_ADDR, [DAC_REG_BASE + i, 0xA8]); - // } - // for i in 0..4{ - // i2c_send(&mut i2c_plus, POS_DAC_2_ADDR, [DAC_REG_BASE + i, 0xA8]); - // } - // for i in 0..4 { - // i2c_send(&mut i2c_minus, NEG_DAC_1_ADDR, [DAC_REG_BASE + i, 0x50]); - // } - // for i in 0..4 { - // i2c_send(&mut i2c_minus, NEG_DAC_2_ADDR, [DAC_REG_BASE + i, 0x50]); - // } - // defmt::info!("i2c finished!"); + s2.set_low(); + s3.set_high(); + s4.set_high(); + s5.set_high(); + s7.set_low(); + s8.set_low(); + + let (mut i2c_plus, mut i2c_minus) = i2c_init(); + for i in 0..4{ + i2c_send(&mut i2c_plus, POS_DAC_1_ADDR, [DAC_REG_BASE + i, 0xA8]); + } + for i in 0..4{ + i2c_send(&mut i2c_plus, POS_DAC_2_ADDR, [DAC_REG_BASE + i, 0xA8]); + } + for i in 0..4 { + i2c_send(&mut i2c_minus, NEG_DAC_1_ADDR, [DAC_REG_BASE + i, 0x50]); + } + for i in 0..4 { + i2c_send(&mut i2c_minus, NEG_DAC_2_ADDR, [DAC_REG_BASE + i, 0x50]); + } + defmt::info!("i2c finished!"); let tmp_adc = adc::ADC1; @@ -91,12 +106,38 @@ async fn async_main(spawner: Spawner) { adc_pin.setup(); let res = tmp_adc.start_conversion_sw(5); - defmt::info!("adc value: {}", res); + let mut vref:f32 = (res as f32/16383f32)*3.3; + defmt::info!("vref value: {}", vref); + let mut counter = 0; + loop { - green.toggle(); - // red.toggle(); + s1.set_high(); + if (counter == 60000){ + let res = tmp_adc.start_conversion_sw(5); + let mut vpos : f32 = (res as f32 / 16383f32) * 3.3; + defmt::info!("pos pulse value: {}", vpos); + } + delay_ms(2); + s1.set_low(); + delay_ms(1); + s2.set_high(); + if (counter == 60000){ + let res = tmp_adc.start_conversion_sw(5); + let mut vneg : f32 = (res as f32 / 16383f32) * 3.3; + defmt::info!("neg pulse value: {}", vneg); + counter = 0; + } + else{ + counter += 1; + } + delay_ms(1); + s2.set_low(); + delay_ms(6); + + // green.toggle(); + //red.toggle(); // delay_ms(1000); // defmt::info!("toggle leds"); } From d723176e10c654eafd58c57fc1138647e6739022 Mon Sep 17 00:00:00 2001 From: Connie Date: Mon, 6 May 2024 16:22:52 -0400 Subject: [PATCH 3/3] Co-authored-by: Guangzong Chen --- .gitignore | 3 ++- src/main.rs | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 2a0038a..2657a13 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /target -.idea \ No newline at end of file +.idea +.cargo/config.toml \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index eaaf471..27e2225 100644 --- a/src/main.rs +++ b/src/main.rs @@ -114,7 +114,7 @@ async fn async_main(spawner: Spawner) { loop { s1.set_high(); - if (counter == 60000){ + if (counter == 1000){ let res = tmp_adc.start_conversion_sw(5); let mut vpos : f32 = (res as f32 / 16383f32) * 3.3; defmt::info!("pos pulse value: {}", vpos); @@ -123,7 +123,7 @@ async fn async_main(spawner: Spawner) { s1.set_low(); delay_ms(1); s2.set_high(); - if (counter == 60000){ + if (counter == 1000){ let res = tmp_adc.start_conversion_sw(5); let mut vneg : f32 = (res as f32 / 16383f32) * 3.3; defmt::info!("neg pulse value: {}", vneg);