Add the logic analyzer implementation based on the SUMP protocol

Supported features:

- up to 16 probes (gpio 6-21 by default)
- 200kB RAM for samples
- RLE encoding
- test mode (external pattern)
  * probe 0 and 1 - 10Mhz PWM
  * probe 1 and 2 - 1Mhz PWM
  * probe 3 and 4 - 1kHz PWM
  * probe 8 and 9 - 1kHz PWM (swapped levels)
- test pin (gpio 22) - 5Mhz 50%/50% PWM for probe tests (activated only when sampling)

Limits:

- 50Mhz sampling rate when compiled with the TURBO_200MHZ define (otherwise 31.25Mhz)
- basic triggers are implemented (functional up to 10Mhz - TODO: PIO support)

This protocol is supported in sigrok as openbench-logic-sniffer:

  pulseview --driver=ols:conn=/dev/ttyACM1

  sigrok-cli --driver=ols:conn=/dev/ttyACM1 --config samplerate=50Mhz \
             --config pattern=External --samples 256 --channels 0-1

Misc:

- picoprobe reset pin is on gpio 28 (instead 6) now

Link: https://www.sump.org/projects/analyzer/protocol
Link: https://github.com/sigrokproject/libsigrok/tree/master/src/hardware/openbench-logic-sniffer
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Jaroslav Kysela 2021-04-28 17:35:57 +02:00
parent d18b0129a1
commit 989b533184
3 changed files with 1144 additions and 11 deletions

View File

@ -32,6 +32,8 @@ pico_generate_pio_header(picoprobe ${CMAKE_CURRENT_LIST_DIR}/src/probe.pio)
target_include_directories(picoprobe PRIVATE src)
target_link_libraries(picoprobe PRIVATE pico_stdlib pico_unique_id tinyusb_device tinyusb_board hardware_pio)
target_link_libraries(picoprobe PRIVATE pico_stdlib pico_unique_id
tinyusb_device tinyusb_board
hardware_pio hardware_dma hardware_pwm)
pico_add_extra_outputs(picoprobe)

File diff suppressed because it is too large Load Diff

View File

@ -56,7 +56,7 @@
#define PROBE_PIN_SWDIO PROBE_PIN_OFFSET + 1 // 3
// Target reset config
#define PROBE_PIN_RESET 6
#define PROBE_PIN_RESET 28
// UART config
#define PICOPROBE_UART_TX 4