Co-authored-by: Guangzong Chen <chen-gz@outlook.com>. Add ADC in while loop
This commit is contained in:
parent
9e56111d9d
commit
2c18efa100
93
src/main.rs
93
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");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user