USB host implementation using PIO of raspberry pi pico (RP2040).

Overview

Pico-PIO-USB

USB host implementation using PIO of raspberry pi pico (RP2040).

You can add additional USB port to RP2040.

🚧 This library is WIP. API may be changed drastically in future. 🚧

Demo

demo.mp4

Project status

Planned Features Status
FS Host
LS Host
Hub support 🚧
Multi port 🚧
FS Device 🚧

Examples

capture_hid_report.c is a sample program which print HID reports received from device.

cd example
mkdir build
cd build
cmake ..
make
# Copy UF2 file to RPiPico and open serial port

Another sample program for split keyboard with QMK

https://github.com/sekigon-gonnoc/qmk_firmware/tree/rp2040/keyboards/pico_pico_usb

Resource Usage

  • Two PIO
    • One PIO is for USB transmitter using 22 instruction and one state machine
    • Another PIO is for USB receiver using 32 instruction and two state machine (No space for other program)
  • Two GPIO for D+/D- (Series 22ohm resitors are better)
  • 10KB ROM and RAM
Comments
  • add controller register interface and support TinyUSB

    add controller register interface and support TinyUSB

    Whoop, after 2-3 weeks of works, I finally wrap up this PR. This is more difficult than my initial thought. Your repo is going uber low (bit banging) into USB, I learn quite a lot more from your code despite working with USB for quite some time. I could only imagine amount of time and effort you spend on oscilloscope to get this working. Really brilliant work !!

    This PR implement #14 and add an register interface for pio-usb port (host/device) similar to native usb controller on rp2040 e.g event interrupt status, ep complete/error/stalled and irq handler. This allow pio-usb "low-level controller part" can be used with tinyusb.

    Following is the notable changes:

    • Move host and device specific code to pio_usb_host/device.c . This is mostly for maintaining purpose, I think it would be easier to separate code from separated mode. The cons is: this requires common function/variable declaration need to be placed in the an header. Let me know if you prefer to keep it all in one file, I will merge it back.
    • Add new internal header pio_usb_ll.h for controller register interface (along with other internal common function of host & device)
    • add some extra field for endpoint_t so that I could work as standalone without usb_devices variable. Also allow it to transfer more than max packet size for transfer like control, msc bulk in the future.
    • Support for endpoint flow control with NAK if there is no "active" transfer to prevent overrun error. Also support endpoint stalled sent/received
    • add PIO_USB_USE_TINYUSB to off-out internal usb host/device stack.
    • All the existing API of pio_usb still and should work as it is and require no changes from running examples.

    This is no way perfect and not optimized, but I did quite a bit of testing with both host and device. Let me know what you think and would change, I hope we could merge this soon.

    Note: For testing with TinyUSB

    • check out https://github.com/hathach/tinyusb/tree/pio-host and its submodule lib/Pico-PIO-USB
    • compile example host/hid_to_cdc, which is configured to use native usb as cdc device, and pio usb as host to get hid input.
    • any input event e.g mouse move, button will be printed to cdc on the native usb.

    @tannewt @ladyada

    opened by hathach 13
  • 💡[FEATURE] Dedicated Controller API

    💡[FEATURE] Dedicated Controller API

    Describe the feature you want to implement here:

    First of all, thank you for this brilliant project. I have never worked with an software (bit-banging) controller that works as great as yours. I am sure lots of others will find this project helpful as well since it literally add free usb ports to pico mcu.

    I am trying to add support for pico-usb as software controller to TinyUSB project, so that user can let's say have native usb for device, and pico-usb for host concurrently (or vice versa) while running in a single TinyUSB stack. It is a bit hacky at the moment but runs well in host mode as proof of concept, and is able to enumerate and get report my hid device. If you are interested in testing it out: cdc_msc_hid. I do have to temporarily remove some static of pico_usb.c so that tinyusb could extern and update the internal struct

    https://github.com/hathach/Pico-PIO-USB/blob/92268187f3b0490a43d139ed2cb598b06258011f/pio_usb.c#L66-L69

    After working on the port, I realize that both TinyUSB and pico-usb have host/device stack which handles anything above transaction-level e.g enumeration, class driver etc... This makes porting and maintaining a bit difficult and could potentially waste ram/rom for having same thing twice. I have spent more time to go through pio_usb.c and quite positive that we could separate controller (sub-transaction) and protocol stack. Though I am not sure if you are willing to do so.

    TLDR, are you interested in separating controller to has its own API ? Which can be used by either TinyUSB (optional config) or your own driver (default config). You already did a great job with most of the abstraction, we only need to move them to a new file with a clear API with some hardware register style and/or callback e.g pio_usb_endpoint_irqhandle() when an transfer is complete etc... We could work out on the detail later. If you agree I will try my best to make an (draft) PR then you could review and shape the API to your liking or if you already have in your mind, that would be great to start with. The cons would be a bit of overhead is introduced, but I doubt that it is noticeable. Let me know what you think.

    @tannewt @ladyada

    opened by hathach 12
  • 💡[FEATURE] Make repo Arduino library compatible

    💡[FEATURE] Make repo Arduino library compatible

    Hi hi, I am trying to get pico-pio-usb working with arduino platform, basically with

    • https://github.com/earlephilhower/arduino-pico
    • https://github.com/adafruit/Adafruit_TinyUSB_Arduino

    It is actually quite easy to make this repo compatible with Arduino IDE. We only need to

    • add library.properties
    • rename example to examples (plugrals)
    • also included generated usb_rx/tx.pio.h since we probably don't have access to cmake pico_generate_pio_header
    • Finally registry to arduino indexer https://github.com/arduino/library-registry

    Another gotcha that Arduino IDE will recursive compiles all the files/folders under src, but I think we are good with it, just need to pay attention to this in the future PRs. But we could add an ci to verify that it build with arduino just fine.

    Let me know what you think, since I have done a decent amount of work with Arduino library, I could help making all of these.

    @ladyada

    opened by hathach 8
  • Make Pico-PIO-USB compatible with Arduino library

    Make Pico-PIO-USB compatible with Arduino library

    implement #31

    • rename example to examples (plurals)
    • add generated usb_rx/tx.pio.h header to src
    • add library.properties: Please update library description to your liking. You could also add your maintainer email if wanted. Note: version= must be update correctly/consistently when making an release for arduino indexer to update
    • include examples/arduino/device_info that print out device descriptor with pio-usb as host. required wip branch of
      • https://github.com/adafruit/Adafruit_TinyUSB_Arduino/tree/rp2040-pio-usb-host
      • 120mh, 240mhz option PR https://github.com/earlephilhower/arduino-pico/pull/628

    ~~Note: Since this PR also include the changes in #34, I will make this as draft and rebase when #34 is merged~~ rebased.

    opened by hathach 5
  • usb host stops working after some seconds

    usb host stops working after some seconds

    Describe the bug you encountered:

    capture_hid_report

    I connected a mouse to the gpio usb host, it works as expected during few seconds, then it just stop working until i restart the pico, then it works during few seconds... It looks like something breaks after few seconds of operation. How can I debug that?

    What did you expect to happen instead?

    capture_hid_report should work permanently.

    What actually happened in your case?

    capture_hid_report works only for a few seconds after power on. Then it just stop working.

    ...

    Additional information

    connected as: #7

    Output:

    4e53:5407 EP 0x81:      01 00 fd df 00 00 
    4e53:5407 EP 0x81:      01 00 ff ef 00 00 
    4e53:5407 EP 0x81:      01 00 00 f0 00 00 
    4e53:5407 EP 0x81:      01 00 00 f0 00 00 
    4e53:5407 EP 0x81:      01 00 01 e0 ff 00 
    4e53:5407 EP 0x81:      01 00 01 f0 ff 00 
    4e53:5407 EP 0x81:      01 00 02 f0 ff 00 
    4e53:5407 EP 0x81:      01 00 02 e0 ff 00 
    4e53:5407 EP 0x81:      01 00 02 e0 ff 00 
    4e53:5407 EP 0x81:      01 00 02 d0 ff 00 
    4e53:5407 EP 0x81:      01 00 00 d0 ff 00 
    4e53:5407 EP 0x81:      01 00 ff 9f ff 00 
    

    And after few seconds, it just stop working.

    bug 
    opened by mnesarco 5
  • USB Communication problem (newbie question)

    USB Communication problem (newbie question)

    Describe the bug you encountered: After clone, build and flash, used minicom to see, at leasts "hello!" should appear right? But there is no communication

    minicom -D /dev/ttyACM0
    
    Welcome to minicom 2.7.1
    
    OPTIONS: I18n 
    Compiled on Aug 13 2017, 15:25:34.
    Port /dev/ttyACM0, 11:13:37
    
    Press CTRL-A Z for help on special keys
    
    control in[timeout]
    Enumeration failed(-2)
    Root 0 disconnected
    Disconnect                                                                                                                                                                
    Disconnect device 0                                                                                                                                                       
    Root 0 connected                                                                                                                                                          
    Device 0 Connected                                                                                                                                                        
    control in[complete]                                                                                                                                                      
    Enumerating 10c4:8108, class:0, address:1                                                                                                                                 
    control out[complete]                                                                                                                                                     
    control in[timeout]                                                                                                                                                       
    Failed to get string descriptor (Manufacture)                                                                                                                             
    control in[timeout]                                                                                                                                                       
    Failed to get string descriptor (Product)                                                                                                                                 
    control in[timeout]                                                                                                                                                       
    Enumeration failed(-2)                                                                                                                                                    
    Root 0 disconnected                                                                                                                                                       
    Disconnect                                                                                                                                                                
    Disconnect device 1                                                                                                                                                       
    Root 0 connected                                                                                                                                                          
    Device 0 Connected                                                                                                                                                        
    control in[complete]                                                                                                                                                      
    Enumerating 10c4:8108, class:0, address:1
    control out[complete]
    control in[complete]
    control in[timeout]
    Failed to get string descriptor (Manufacture)
    control in[complete]
    control in[timeout]
    Failed to get string descriptor (Product)
    control in[complete]
    control in[timeout]
    Enumeration failed(-2)
    Root 0 disconnected
    Disconnect
    Disconnect device 1
    Root 0 connected
    Device 0 Connected
    control in[complete]
    Enumerating 10c4:8108, class:0, address:1
    control out[complete]
    control in[complete]
    control in[timeout]
    Failed to get string descriptor (Manufacture)
    control in[timeout]
    Failed to get string descriptor (Product)
    control in[timeout]
    Enumeration failed(-2)
    Root 0 disconnected
    Disconnect
    Disconnect device 1
    Root 0 connected
    Device 0 Connected
    control in[complete]
    Enumerating 10c4:8108, class:0, address:1
    control out[complete]
    control in[timeout]
    Failed to get string descriptor (Manufacture)
    control in[timeout]
    Failed to get string descriptor (Product)
    control in[timeout]
    Enumeration failed(-2)
    Root 0 disconnected
    Disconnect
    Disconnect device 1
    Root 0 connected
    Device 0 Connected
    

    What did you expect to happen instead?

    I expected the connection to succeed and to see "hello!" at least.

    What actually happened in your case?

    No communication.

    Additional information

    git clone https://github.com/sekigon-gonnoc/Pico-PIO-USB.git
    cd Pico-PIO-USB/example
    mkdir build
    cd bulild
    cmake ..
    make
    

    Then copied: Pico-PIO-USB/example/build/capture_hid_report/capture_hid_report.uf2 to Pico board and Disconnect/Reconnect.

    bug 
    opened by mnesarco 5
  • Created cmake file for this as a proper library.

    Created cmake file for this as a proper library.

    I created a CMakeLists.txt for this library so projects can easily include it. Also makes it easier for projects if this library makes more changes.

    Edited example cmake files to use library rather than manually add the sources.

    Removed unused include that needed an extra library to compile.

    Fixed a small compile warning when comparing signed to unsigned.

    opened by Molorius 4
  • USB 1:2 Mux

    USB 1:2 Mux

    I'm looking to implement a USB mux for a keyboard and mouse. I know these exist in IC form with chips such as the FSUSB42UMX but I thought it would be neat if I could intercept a certain key combo on the keyboard to toggle the mux. I immediately though of the PIO on the RP2040 knowing it would be fast enough for USB FS. I was really happy to see that this library already existed.

    With the current implementation would it be possible to create 2 device ports and a host port? Or could I create two device ports and use the native USB as the host? I know you have examples for multiple host ports but I need multiple devices. It looks like it should be possible, I just wanted to check before I get too deep into this.

    Thanks for the help!

    opened by Spegs21 3
  • Missing dcd_pio_usb.c

    Missing dcd_pio_usb.c

    When I try to run cmake .. I get this:

    PICO_SDK_PATH is /home/user/pico-sdk
    PICO platform is rp2040.
    Build type is Release
    PICO target board is pico.
    Using board configuration from /home/user/pico-sdk/src/boards/include/boards/pico.h
    TinyUSB available at /home/user/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040; enabling build support for USB.
    cyw43-driver available at /home/user/pico-sdk/lib/cyw43-driver
    lwIP available at /home/user/pico-sdk/lib/lwip
    -- Configuring done
    CMake Error at host_hid_to_device_cdc/CMakeLists.txt:2 (add_executable):
      Cannot find source file:
    
        /home/user/pico-sdk/lib/tinyusb/src/portable/raspberrypi/pio_usb/dcd_pio_usb.c
    
      Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
      .hpp .hxx .in .txx
    
    
    -- Generating done
    CMake Generate step failed.  Build files cannot be regenerated correctly.
    

    Quick workaround is to disable host_hid_to_device_cdc in CMakeLists.txt like this:

    add_subdirectory(capture_hid_report)
    add_subdirectory(usb_device)
    # add_subdirectory(host_hid_to_device_cdc)
    

    But where can an individual obtains missing files to get all examples to work?

    opened by Timu5 2
  • Mouse Data Packet Clarification

    Mouse Data Packet Clarification

    Describe the bug you encountered:

    The capture_hid_report shows the following data on mouse movements:

    4e53:5407 EP 0x81:      01 00 fd df 00 00 
    4e53:5407 EP 0x81:      01 00 ff ef 00 00 
    4e53:5407 EP 0x81:      01 00 00 f0 00 00 
    4e53:5407 EP 0x81:      01 00 00 f0 00 00 
    4e53:5407 EP 0x81:      01 00 01 e0 ff 00 
    4e53:5407 EP 0x81:      01 00 01 f0 ff 00 
    4e53:5407 EP 0x81:      01 00 02 f0 ff 00 
    4e53:5407 EP 0x81:      01 00 02 e0 ff 00 
    4e53:5407 EP 0x81:      01 00 02 e0 ff 00 
    4e53:5407 EP 0x81:      01 00 02 d0 ff 00 
    4e53:5407 EP 0x81:      01 00 00 d0 ff 00 
    4e53:5407 EP 0x81:      01 00 ff 9f ff 00 
    4e53:5407 EP 0x81:      01 00 fd 9f ff 00 
    4e53:5407 EP 0x81:      01 00 fb 7f ff 00 
    4e53:5407 EP 0x81:      01 00 fb 7f ff 00 
    4e53:5407 EP 0x81:      01 00 fa 7f ff 00 
    4e53:5407 EP 0x81:      01 00 fc 7f ff 00 
    4e53:5407 EP 0x81:      01 00 fc 8f ff 00 
    4e53:5407 EP 0x81:      01 00 fe 9f ff 00 
    4e53:5407 EP 0x81:      01 00 ff bf ff 00 
    4e53:5407 EP 0x81:      01 00 00 d0 ff 00 
    4e53:5407 EP 0x81:      01 00 ff df ff 00 
    4e53:5407 EP 0x81:      01 00 00 e0 ff 00 
    4e53:5407 EP 0x81:      01 00 00 f0 ff 00 
    4e53:5407 EP 0x81:      01 00 00 f0 ff 00 
    
    

    As you can see, changes are only in bytes 2,3,4.

    On button events:

    4e53:5407 EP 0x81:      01 01 00 00 00 00 
    4e53:5407 EP 0x81:      01 00 00 00 00 00 
    4e53:5407 EP 0x81:      01 02 00 00 00 00 
    4e53:5407 EP 0x81:      01 00 00 00 00 00 
    4e53:5407 EP 0x81:      01 02 00 00 00 00 
    4e53:5407 EP 0x81:      01 00 00 00 00 00 
    4e53:5407 EP 0x81:      01 02 00 00 00 00 
    4e53:5407 EP 0x81:      01 00 00 00 00 00 
    4e53:5407 EP 0x81:      01 02 00 00 00 00 
    4e53:5407 EP 0x81:      01 00 00 00 00 00 
    4e53:5407 EP 0x81:      01 08 00 00 00 00 
    4e53:5407 EP 0x81:      01 00 00 00 00 00 
    4e53:5407 EP 0x81:      01 08 00 00 00 00 
    4e53:5407 EP 0x81:      01 00 00 00 00 00 
    4e53:5407 EP 0x81:      01 08 00 00 00 00 
    4e53:5407 EP 0x81:      01 00 00 00 00 00 
    
    

    ... for buttons, changes are in byte 1 only ... for wheel events, changes are in byte 5 only. ... byte 0 never changes, it is always 01

    What did you expect to happen instead?

    I was expecting: byte0 = Button number byte1, byte2 = 16bit x axis byte3, byte4 = 16bit y axis byte5 = wheel ...

    What actually happened in your case?

    Am I misinterpreting the data?

    Apparently the actual data looks like:

    byte0 = always 01 byte1 = Button byte2, byte3[0-3] = 12 bit X axis ? byte3[4-7], byte4 = 12 bit Y axis ? byte5 = wheel

    Does it make sense?

    bug 
    opened by mnesarco 2
  • Dropped input reports

    Dropped input reports

    Hi,

    While evaluating this project I encountered an issue with HID input reports seemingly dropped. I'm not sure it it's a problem with this library or if I'm doing something wrong.

    I have a USB mouse that sends 1000 input reports per second. In the HID report there's a counter field that increases by 1 with every consecutive report. Here's what it looks like when connected directly to the computer (usbhid-dump output). Note the consecutive numbers:

    002:006:000:STREAM             1645632911.827409
     00 00 00 00 00 81 23
    
    002:006:000:STREAM             1645632911.828371
     00 00 00 00 00 82 23
    
    002:006:000:STREAM             1645632911.829447
     00 00 00 00 00 83 23
    
    002:006:000:STREAM             1645632911.830400
     00 00 00 00 00 84 23
    
    002:006:000:STREAM             1645632911.831391
     00 00 00 00 00 85 23
    
    002:006:000:STREAM             1645632911.832444
     00 00 00 00 00 86 23
    

    But when I connect it to my Raspberry Pi Pico and run the "capture_hid_report" example, here's what I get (note that some of the numbers in the counter field are missing - they are not consecutive):

    cafe:baba EP 0x81:	00 00 00 00 00 3f 0e 
    cafe:baba EP 0x81:	00 00 00 00 00 43 0e 
    cafe:baba EP 0x81:	00 00 00 00 00 46 0e 
    cafe:baba EP 0x81:	00 00 00 00 00 4a 0e 
    cafe:baba EP 0x81:	00 00 00 00 00 4e 0e 
    cafe:baba EP 0x81:	00 00 00 00 00 51 0e 
    cafe:baba EP 0x81:	00 00 00 00 00 55 0e 
    cafe:baba EP 0x81:	00 00 00 00 00 58 0e 
    

    It seems like I'm only getting every third or fourth input report.

    Any help?

    opened by jfedor2 2
  • 💡[FEATURE] Combo device support

    💡[FEATURE] Combo device support

    There is support for hub and it is possible to add additional port on host side. Is it also possible to support combo devices on device side: example simultaneous keyboard and mouse?


    opened by moc32 0
  • 💡[FEATURE] High Speed capability on a supported Pi device?

    💡[FEATURE] High Speed capability on a supported Pi device?

    **Hi, I'm very thankful that you have made this library. I have been able to poll my devices at 1KHz thanks to this library. I was wondering if the same code can be replicated to work on a Pi board that supports high speed usb port speed so that it may be possible to poll devices at even higher rates - say up to even 4KHz? Any idea where one can start in order to do this? Which board would you recommend and how challenging would it be to do it? **

    Describe the feature you want to implement here:

    I have a project that currently uses the built-in USB as device and your PIO USB library as host. If possible, I would like to use your PIO USB library as an additional device.

    Is it currently possible to use your PIO library for device and host simultaneously?

    If it is not currently possible, could it be possible in the future? I realize that there may be hardware constraints.

    Assuming it is possible, my request is to have simultaneous PIO USB host and device.

    opened by Molorius 1
Releases(0.5.0)
Owner
null
Pico-uart-bridge - Raspberry Pi Pico UART-USB bridge

Raspberry Pi Pico USB-UART Bridge This program bridges the Raspberry Pi Pico HW UARTs to two independent USB CDC serial devices in order to behave lik

Álvaro Fernández Rojas 130 Sep 19, 2022
This is a set of utilities that allow you to read, write or erase SPI flash chips using a Raspberry Pi Pico (RP2040) chip.

Pico SPI Utilities This is a set of utilities that allow you to read, write or erase SPI flash chips using a Raspberry Pi Pico (RP2040) chip. While th

Two Bean Development 2 Aug 7, 2022
Raspberry Pi Pico (RP2040) and Micro-ROS (ROS 2) Integration

The Pico is an amazing microcontroller and I couldn't wait for ROS 2 support or Arduino Core, so here is my approach. Once the Arduino Core for RP2040 is out it will be easier to use micro_ros_arduino.

Darko Lukić 19 Jun 19, 2022
built-in CMSIS-DAP debugger tailored especially for the RP2040 “Raspberry Pi Pico”

RP2040 has two ARM Cortex-M0+ cores, and the second core normally remains dormant. pico-debug runs on one core in a RP2040 and provides a USB CMSIS-DAP interface to debug the other core. No hardware is added; it is as if there were a virtual debug pod built-in.

null 228 Sep 15, 2022
Raspberry Pi Pico Arduino core, for all RP2040 boards

Arduino-Pico Raspberry Pi Pico Arduino core, for all RP2040 boards This is a port of the RP2040 (Raspberry Pi Pico processor) to the Arduino ecosystem

Earle F. Philhower, III 735 Sep 24, 2022
Enable LoRaWAN communications on your Raspberry Pi Pico or any RP2040 based board. 📡

pico-lorawan Enable LoRaWAN communications on your Raspberry Pi Pico or any RP2040 based board using a Semtech SX1276 radio module. Based on the Semte

Sandeep Mistry 71 Sep 1, 2022
#PICOmputer - World first Raspberry RP2040 PICO - QWERTY & IPS devkit

PICOmputer #PICOmputer - World first Raspberry RP2040 PICO - QWERTY & IPS devkit https://www.pcbway.com/project/shareproject/_PICOmputer____World_firs

Peter Misenko 48 Aug 27, 2022
Capture audio from a microphone on your Raspberry Pi Pico or any RP2040 based board. 🎤

pico-microphone Capture audio from a microphone on your Raspberry Pi Pico or any RP2040 based board. ?? Hardware RP2040 board Raspberry Pi Pico Microp

Sandeep Mistry 108 Aug 17, 2022
ESP32 software USB host through general IO pins. We can connect up to 4 USB-LS HID (keyboard mouse joystick) devices simultaneously.

esp32_usb_soft_host esp32 USB-LS pure software host thru general IO pins. Up to 4 HID devices simultaneously. board ~$3 :https://www.aliexpress.com/pr

Samsonov Dima 279 Sep 23, 2022
ESP8266 software USB host through general IO pins. We can connect up to 2 USB-LS HID (keyboard mouse joystick) devices simultaneously.

esp8266_usb_soft_host Test for esp8266 usb host . Works with ESP-IDF v3.4 80MHz and 160MHz. WorkInProgress Test run with mouse & combined mouse & keyb

Samsonov Dima 28 Sep 1, 2022
Tiny and portable usb host and device stack for mcu with usb ip

Tiny and portable usb host and device stack for mcu with usb ip

sakumisu 452 Sep 25, 2022
Tetris on a Raspberry Pi Pico mounted on a Pimoroni Pico Explorer

PicoTetris Classic Tetris game running on a Raspberry Pi Pico microcontroller. Pico C port by Richard Birkby Original JavaScript implementation - Jake

Richard Birkby 33 Sep 3, 2022
Breakout game for Raspberry Pi Pico with Pimoroni Pico Display pack

breakout_rpi_pico Breakout game for Raspberry Pi Pico with Pimoroni Pico Display pack Prebuilt binary (breakout.uf2) is here. To build your own binary

null 18 Jan 17, 2022
Digital rain animation gif with glow squeezed into a raspberry pi pico and pimoroni pico-display

pico-display-matrix Digital rain animation gif with glow squeezed into a raspberry pi pico and pimoroni pico-display or how to actually use all Flash

null 32 Sep 10, 2022
uSDR implementation based on a RP2040 Pi Pico

uSDR-pico A uSDR implementation based on a RP2040 Pi Pico. This code is experimental, intended to investigate how the HW and SDK work with an applicat

null 83 Sep 10, 2022
Prueba del Raspberry PI PICO con un display Raspberry PI TFT 3.5"

Raspberry-PI-PICO-display-RPI35 Prueba del Raspberry PI PICO con un display Raspberry PI TFT 3.5" Con ayuda de la libreria https://github.com/khoih-pr

null 1 Nov 10, 2021
Using a RP2040 Pico as a basic logic analyzer, exporting CSV data to read in sigrok / Pulseview

rp2040-logic-analyzer This project modified the PIO logic analyzer example that that was part of the Raspberry Pi Pico examples. The example now allow

Mark 56 Sep 18, 2022
I add my Pi Pico (RP2040) stuff here.

Pico Stuff I add my Pi Pico (RP2040) stuff here. There are complete apps and libraries for sensors or complicated tasks. Libraries BMP180: Header-only

Luigi Cruz 97 Sep 20, 2022
This is some utility functions/classes for having a nice way to communicate with a pico board RP2040

PicoScreenTerminal This is some utility functions/classes for having a nice way to communicate with a pico board RP2040 How to build First follow the

GuillaumeG. 4 Nov 15, 2021