Skip to content

Commit 1248f2b

Browse files
committed
modularise pins
1 parent e531089 commit 1248f2b

2 files changed

Lines changed: 99 additions & 34 deletions

File tree

src/bin/rx.rs

Lines changed: 46 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,44 @@ use embassy_executor::Spawner;
88
use embassy_time::Timer;
99
use esp_backtrace as _;
1010
use esp_hal::{
11-
gpio::{Input, Level, Output, Pin, Pull},
12-
peripherals::Peripherals,
11+
gpio::{AnyPin, Input, Level, Output, Pin, Pull},
12+
peripherals::{Peripherals, DMA, SPI2, TIMG0},
1313
timer::timg::TimerGroup,
1414
};
1515

1616
use stack_ripper::{lora, spi, state};
1717

18+
struct RxPins {
19+
20+
lora_rst: AnyPin,
21+
lora_irq: AnyPin,
22+
23+
lora_nss: AnyPin,
24+
lora_mosi: AnyPin,
25+
lora_miso: AnyPin,
26+
lora_clk: AnyPin,
27+
28+
timg: TIMG0,
29+
dma: DMA,
30+
spi: SPI2,
31+
}
32+
33+
fn get_rx_pins_v001(p: Peripherals) -> RxPins {
34+
RxPins {
35+
lora_rst: p.GPIO6.degrade(),
36+
lora_irq: p.GPIO5.degrade(),
37+
38+
lora_nss: p.GPIO1.degrade(),
39+
lora_clk: p.GPIO4.degrade(),
40+
lora_miso: p.GPIO3.degrade(),
41+
lora_mosi: p.GPIO2.degrade(),
42+
43+
timg: p.TIMG0,
44+
dma: p.DMA,
45+
spi: p.SPI2,
46+
}
47+
}
48+
1849
#[embassy_executor::task]
1950
async fn print_state() -> ! {
2051
loop {
@@ -28,31 +59,30 @@ async fn main(spawner: Spawner) {
2859
info!("Initializing");
2960

3061
let peripherals: Peripherals = esp_hal::init(esp_hal::Config::default());
31-
let timg0 = TimerGroup::new(peripherals.TIMG0);
62+
63+
let pins = get_rx_pins_v001(peripherals);
64+
65+
let timg0 = TimerGroup::new(pins.timg);
3266

3367
esp_hal_embassy::init(timg0.timer0);
3468

3569
info!("Initializing compete");
3670

37-
// Set SPI bus
38-
let spi_clock = peripherals.GPIO4.degrade();
39-
let spi_miso = peripherals.GPIO3.degrade();
40-
let spi_mosi = peripherals.GPIO2.degrade();
41-
71+
// Setup SPI bus
4272
let spi_bus = spi::init(
43-
peripherals.DMA,
44-
peripherals.SPI2,
45-
spi_clock,
46-
spi_mosi,
47-
spi_miso,
73+
pins.dma,
74+
pins.spi,
75+
pins.lora_clk,
76+
pins.lora_mosi,
77+
pins.lora_miso,
4878
);
4979

50-
let lora_spi_csb = Output::new(peripherals.GPIO1.degrade(), Level::High);
80+
let lora_spi_csb = Output::new(pins.lora_nss, Level::High);
5181

5282
let lora_spi = SpiDevice::new(spi_bus, lora_spi_csb);
5383

54-
let lora_rst = Output::new(peripherals.GPIO6.degrade(), Level::High);
55-
let lora_irq = Input::new(peripherals.GPIO5.degrade(), Pull::Up);
84+
let lora_rst = Output::new(pins.lora_rst, Level::High);
85+
let lora_irq = Input::new(pins.lora_irq.degrade(), Pull::Up);
5686

5787
spawner
5888
.spawn(lora::receive(lora_spi, lora_irq, lora_rst))

src/bin/tx.rs

Lines changed: 53 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ use embassy_embedded_hal::shared_bus::asynch::spi::SpiDevice;
66
use embassy_executor::Spawner;
77

88
use esp_hal::{
9-
gpio::{Input, Level, Output, Pull},
10-
peripherals::Peripherals,
9+
gpio::{AnyPin, Input, Level, Output, Pull},
10+
peripherals::{Peripherals, DMA, SPI2, TIMG0, UART0},
1111
prelude::*,
1212
timer::timg::TimerGroup,
1313
uart::{Config, Uart},
@@ -18,23 +18,61 @@ use esp_backtrace as _;
1818

1919
use stack_ripper::{gps, lora, spi};
2020

21+
struct TxPins {
22+
uart_rx: AnyPin,
23+
uart_tx: AnyPin,
24+
25+
lora_rst: AnyPin,
26+
lora_irq: AnyPin,
27+
28+
lora_nss: AnyPin,
29+
lora_mosi: AnyPin,
30+
lora_miso: AnyPin,
31+
lora_clk: AnyPin,
32+
33+
timg: TIMG0,
34+
uart: UART0,
35+
dma: DMA,
36+
spi: SPI2,
37+
}
38+
39+
fn get_tx_pins_v003(p: Peripherals) -> TxPins {
40+
TxPins {
41+
uart_rx: p.GPIO4.degrade(),
42+
uart_tx: p.GPIO5.degrade(),
43+
44+
lora_rst: p.GPIO6.degrade(),
45+
lora_irq: p.GPIO7.degrade(),
46+
47+
lora_nss: p.GPIO8.degrade(),
48+
lora_clk: p.GPIO21.degrade(),
49+
lora_miso: p.GPIO20.degrade(),
50+
lora_mosi: p.GPIO10.degrade(),
51+
52+
timg: p.TIMG0,
53+
uart: p.UART0,
54+
dma: p.DMA,
55+
spi: p.SPI2,
56+
}
57+
}
58+
2159
#[main]
2260
async fn main(_spawner: Spawner) -> () {
2361
info!("Initializing");
2462

2563
let peripherals: Peripherals = esp_hal::init(esp_hal::Config::default());
26-
let timg0 = TimerGroup::new(peripherals.TIMG0);
64+
65+
let pins = get_tx_pins_v003(peripherals);
66+
67+
let timg0 = TimerGroup::new(pins.timg);
2768

2869
esp_hal_embassy::init(timg0.timer0);
2970

3071
info!("Initializing compete");
3172

3273
// Setup UART for GPS
33-
let rx_pin = peripherals.GPIO8.degrade();
34-
let tx_pin = peripherals.GPIO7.degrade();
35-
3674
let uart_config = Config::default().baudrate(9600);
37-
let uart = Uart::new_with_config(peripherals.UART0, uart_config, rx_pin, tx_pin)
75+
let uart = Uart::new_with_config(pins.uart, uart_config, pins.uart_rx, pins.uart_tx)
3876
.unwrap()
3977
.into_async();
4078

@@ -45,23 +83,20 @@ async fn main(_spawner: Spawner) -> () {
4583
_spawner.spawn(gps::sample_uart(rx)).unwrap();
4684

4785
// Setup SPI bus
48-
let spi_clock = peripherals.GPIO20.degrade();
49-
let spi_miso = peripherals.GPIO21.degrade();
50-
let spi_mosi = peripherals.GPIO1.degrade();
5186

5287
let spi_bus = spi::init(
53-
peripherals.DMA,
54-
peripherals.SPI2,
55-
spi_clock,
56-
spi_mosi,
57-
spi_miso,
88+
pins.dma,
89+
pins.spi,
90+
pins.lora_clk,
91+
pins.lora_mosi,
92+
pins.lora_miso,
5893
);
5994

60-
let lora_spi_csb = Output::new(peripherals.GPIO0.degrade(), Level::High);
95+
let lora_spi_csb = Output::new(pins.lora_nss, Level::High);
6196
let lora_spi = SpiDevice::new(spi_bus, lora_spi_csb);
6297

63-
let lora_rst = Output::new(peripherals.GPIO10.degrade(), Level::High);
64-
let lora_irq = Input::new(peripherals.GPIO2.degrade(), Pull::Up);
98+
let lora_rst = Output::new(pins.lora_rst, Level::High);
99+
let lora_irq = Input::new(pins.lora_irq, Pull::Up);
65100

66101
_spawner
67102
.spawn(lora::transmit(lora_spi, lora_irq, lora_rst))

0 commit comments

Comments
 (0)