Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions include/board_example_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
#define PROBE_PIN_RESET 1

#define PROBE_SM 0
/* Set PROBE_PIO_BASE base to 16 to use gpio 32 and above */
#define PROBE_PIO_BASE 0
#define PROBE_PIN_OFFSET 12
/* PIO config for PROBE_IO_RAW */
#if defined(PROBE_IO_RAW)
Expand Down
3 changes: 3 additions & 0 deletions src/probe.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,9 @@ void probe_write_mode(void) {

void probe_init() {
if (!probe.initted) {
// MUST be early, before any SM config/init that uses pins
pio_set_gpio_base(pio0,PROBE_PIO_BASE);

probe_gpio_init();
uint offset = pio_add_program(pio0, &probe_program);
probe.offset = offset;
Expand Down
10 changes: 5 additions & 5 deletions src/probe.pio
Original file line number Diff line number Diff line change
Expand Up @@ -102,15 +102,15 @@ static inline void probe_gpio_deinit()
static inline void probe_sm_init(pio_sm_config* sm_config) {

// Set SWCLK as a sideset pin
sm_config_set_sideset_pins(sm_config, PROBE_PIN_SWCLK);
sm_config_set_sideset_pins(sm_config, PIO_PIN(PROBE_PIN_SWCLK));

// Set SWDIO offset
sm_config_set_out_pins(sm_config, PROBE_PIN_SWDIO, 1);
sm_config_set_set_pins(sm_config, PROBE_PIN_SWDIO, 1);
sm_config_set_out_pins(sm_config, PIO_PIN(PROBE_PIN_SWDIO), 1);
sm_config_set_set_pins(sm_config, PIO_PIN(PROBE_PIN_SWDIO), 1);
#ifdef PROBE_IO_SWDI
sm_config_set_in_pins(sm_config, PROBE_PIN_SWDI);
sm_config_set_in_pins(sm_config, PIO_PIN(PROBE_PIN_SWDI));
#else
sm_config_set_in_pins(sm_config, PROBE_PIN_SWDIO);
sm_config_set_in_pins(sm_config, PIO_PIN(PROBE_PIN_SWDIO));
#endif


Expand Down
5 changes: 5 additions & 0 deletions src/probe_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,11 @@ do { \
#include "board_debug_probe_config.h"
#endif
//#include "board_example_config.h"
#if !defined(PROBE_PIO_BASE)
#define PROBE_PIO_BASE 0
#endif
#define PIO_PIN(gpio) ((gpio) - PROBE_PIO_BASE)


// Add the configuration to binary information
void bi_decl_config();
Expand Down
9 changes: 5 additions & 4 deletions src/probe_oen.pio
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,13 @@ static inline void probe_gpio_deinit()
static inline void probe_sm_init(pio_sm_config* sm_config) {

// Set SWDIOEN and SWCLK as sideset pins
sm_config_set_sideset_pins(sm_config, PROBE_PIN_SWDIOEN);
sm_config_set_sideset_pins(sm_config, PIO_PIN(PROBE_PIN_SWDIOEN));

// Set SWDIO offset
sm_config_set_out_pins(sm_config, PROBE_PIN_SWDIO, 1);
sm_config_set_set_pins(sm_config, PROBE_PIN_SWDIO, 1);
sm_config_set_in_pins(sm_config, PROBE_PIN_SWDI);
sm_config_set_out_pins(sm_config, PIO_PIN(PROBE_PIN_SWDIO), 1);
sm_config_set_set_pins(sm_config, PIO_PIN(PROBE_PIN_SWDIO), 1);

sm_config_set_in_pins(sm_config, PIO_PIN(PROBE_PIN_SWDI));

// Set SWDIOEN, SWD and SWDIO pins as output to start. This will be set in the sm
pio_sm_set_consecutive_pindirs(pio0, PROBE_SM, PROBE_PIN_OFFSET, 3, true);
Expand Down