Co-authored-by: Guangzong Chen <chen-gz@outlook.com>. Add ADC in while loop
This commit is contained in:
parent
9e56111d9d
commit
2c18efa100
91
src/main.rs
91
src/main.rs
@ -21,23 +21,30 @@ fn i2c_init() -> (I2c, I2c) {
|
|||||||
(i2c_plus, i2c_minus)
|
(i2c_plus, i2c_minus)
|
||||||
}
|
}
|
||||||
fn switch_led_setup() -> ( gpio::GpioPort, gpio::GpioPort, gpio::GpioPort,
|
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 red: gpio::GpioPort = gpio::PB7;
|
||||||
let green: gpio::GpioPort = gpio::PB8;
|
let green: gpio::GpioPort = gpio::PB8;
|
||||||
|
let s0: gpio::GpioPort = gpio::PB15;
|
||||||
let s1: gpio::GpioPort = gpio::PA9;
|
let s1: gpio::GpioPort = gpio::PA9;
|
||||||
let s2: gpio::GpioPort = gpio::PA10;
|
let s2: gpio::GpioPort = gpio::PA10;
|
||||||
let s3: gpio::GpioPort = gpio::PB4;
|
let s3: gpio::GpioPort = gpio::PB4;
|
||||||
let s4: gpio::GpioPort = gpio::PB5;
|
let s4: gpio::GpioPort = gpio::PB5;
|
||||||
let s5: gpio::GpioPort = gpio::PA5;
|
let s5: gpio::GpioPort = gpio::PA5;
|
||||||
|
let s7: gpio::GpioPort = gpio::PA4;
|
||||||
|
let s8: gpio::GpioPort = gpio::PA3;
|
||||||
|
|
||||||
green.setup();
|
green.setup();
|
||||||
red.setup();
|
red.setup();
|
||||||
|
s0.setup();
|
||||||
s1.setup();
|
s1.setup();
|
||||||
s2.setup();
|
s2.setup();
|
||||||
s3.setup();
|
s3.setup();
|
||||||
s4.setup();
|
s4.setup();
|
||||||
s5.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]) {
|
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) {
|
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.
|
// 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.
|
// 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();
|
no_deep_sleep_request();
|
||||||
defmt::info!("setup led finished!");
|
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();
|
s1.set_low();
|
||||||
s2.set_high();
|
s2.set_low();
|
||||||
s3.set_low();
|
s3.set_high();
|
||||||
s4.set_low();
|
s4.set_high();
|
||||||
s5.set_low();
|
s5.set_high();
|
||||||
|
s7.set_low();
|
||||||
|
s8.set_low();
|
||||||
|
|
||||||
// let (mut i2c_plus, mut i2c_minus) = i2c_init();
|
let (mut i2c_plus, mut i2c_minus) = i2c_init();
|
||||||
// for i in 0..4{
|
for i in 0..4{
|
||||||
// i2c_send(&mut i2c_plus, POS_DAC_1_ADDR, [DAC_REG_BASE + i, 0xA8]);
|
i2c_send(&mut i2c_plus, POS_DAC_1_ADDR, [DAC_REG_BASE + i, 0xA8]);
|
||||||
// }
|
}
|
||||||
// for i in 0..4{
|
for i in 0..4{
|
||||||
// i2c_send(&mut i2c_plus, POS_DAC_2_ADDR, [DAC_REG_BASE + i, 0xA8]);
|
i2c_send(&mut i2c_plus, POS_DAC_2_ADDR, [DAC_REG_BASE + i, 0xA8]);
|
||||||
// }
|
}
|
||||||
// for i in 0..4 {
|
for i in 0..4 {
|
||||||
// i2c_send(&mut i2c_minus, NEG_DAC_1_ADDR, [DAC_REG_BASE + i, 0x50]);
|
i2c_send(&mut i2c_minus, NEG_DAC_1_ADDR, [DAC_REG_BASE + i, 0x50]);
|
||||||
// }
|
}
|
||||||
// for i in 0..4 {
|
for i in 0..4 {
|
||||||
// i2c_send(&mut i2c_minus, NEG_DAC_2_ADDR, [DAC_REG_BASE + i, 0x50]);
|
i2c_send(&mut i2c_minus, NEG_DAC_2_ADDR, [DAC_REG_BASE + i, 0x50]);
|
||||||
// }
|
}
|
||||||
// defmt::info!("i2c finished!");
|
defmt::info!("i2c finished!");
|
||||||
|
|
||||||
|
|
||||||
let tmp_adc = adc::ADC1;
|
let tmp_adc = adc::ADC1;
|
||||||
@ -91,12 +106,38 @@ async fn async_main(spawner: Spawner) {
|
|||||||
adc_pin.setup();
|
adc_pin.setup();
|
||||||
|
|
||||||
let res = tmp_adc.start_conversion_sw(5);
|
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 {
|
loop {
|
||||||
green.toggle();
|
s1.set_high();
|
||||||
// red.toggle();
|
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);
|
// delay_ms(1000);
|
||||||
// defmt::info!("toggle leds");
|
// defmt::info!("toggle leds");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user