USB mouse works!

This commit is contained in:
Jeff Epler 2025-03-14 15:05:19 -05:00
parent d0a29092b6
commit 6c18cee5ec
7 changed files with 40 additions and 7 deletions

6
.gitmodules vendored
View file

@ -4,3 +4,9 @@
[submodule "external/no-OS-FatFS-SD-SPI-RPi-Pico"]
path = external/no-OS-FatFS-SD-SPI-RPi-Pico
url = https://github.com/evansm7/no-OS-FatFS-SD-SPI-RPi-Pico.git
[submodule "lib/tinyusb"]
path = lib/tinyusb
url = https://github.com/hathach/tinyusb
[submodule "lib/Pico-PIO-USB"]
path = lib/Pico-PIO-USB
url = https://github.com/tannewt/Pico-PIO-USB

View file

@ -32,6 +32,9 @@ cmake_minimum_required(VERSION 3.13)
# Note: to build for fruit jam:
# cmake -DPICO_BOARD=pico2 -DUSE_HSTX=1 -S . -B build_hstx -DPICO_SDK_PATH=../pico-sdk
set(PICO_TINYUSB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib/tinyusb)
set(PIOUSB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib/Pico-PIO-USB)
option(USE_SD "Build in SD support" OFF)
set(SD_TX 3 CACHE STRING "SD SPI TX pin")
set(SD_RX 4 CACHE STRING "SD SPI RX pin")
@ -71,8 +74,6 @@ pico_sdk_init()
set(FAMILY rp2040)
set(BOARD raspberry_pi_pico)
set(TINYUSB_PATH ${PICO_SDK_PATH}/lib/tinyusb)
# umac subproject (and Musashi sub-subproject)
set(UMAC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external/umac)
set(UMAC_MUSASHI_PATH ${UMAC_PATH}/external/Musashi)
@ -128,6 +129,8 @@ endif()
add_compile_definitions(PIN_USB_HOST_DP=${PIN_USB_HOST_DP})
add_compile_definitions(PIN_USB_HOST_DM=${PIN_USB_HOST_DM})
add_compile_definitions(PICO_DEFAULT_PIO_USB_DP_PIN=${PIN_USB_HOST_DP})
add_compile_definitions(PICO_DEFAULT_PIO_USB_DM_PIN=${PIN_USB_HOST_DM})
if (TARGET tinyusb_device)
add_executable(firmware
@ -137,6 +140,11 @@ if (TARGET tinyusb_device)
src/hid.c
${EXTRA_SD_SRC}
${PICO_TINYUSB_PATH}/src/portable/raspberrypi/pio_usb/hcd_pio_usb.c
${PIOUSB_PATH}/src/pio_usb.c
${PIOUSB_PATH}/src/pio_usb_host.c
${PIOUSB_PATH}/src/usb_crc.c
${UMAC_SOURCES}
)
@ -163,10 +171,12 @@ if (TARGET tinyusb_device)
target_include_directories(firmware PRIVATE
${CMAKE_CURRENT_LIST_DIR}/include
${TINYUSB_PATH}/hw
${TINYUSB_PATH}/src
${PICO_TINYUSB_PATH}/hw
${PICO_TINYUSB_PATH}/src
${UMAC_INCLUDE_PATHS}
${PIOUSB_PATH}/src
incbin
${CMAKE_CURRENT_LIST_DIR}
)
pico_enable_stdio_uart(firmware 1)

View file

@ -89,6 +89,10 @@
#define CFG_TUH_HID_EPIN_BUFSIZE 64
#define CFG_TUH_HID_EPOUT_BUFSIZE 64
#ifndef BOARD_TUH_RHPORT
#define BOARD_TUH_RHPORT 1
#endif
#ifdef __cplusplus
}
#endif

1
lib/Pico-PIO-USB Submodule

@ -0,0 +1 @@
Subproject commit 1862cc008e026cbd07b97b28e29eafb5f38b35fb

1
lib/tinyusb Submodule

@ -0,0 +1 @@
Subproject commit 5333d042f9384ec1cc0663a2708c0ca7cb5cdc32

View file

@ -24,7 +24,7 @@
* THE SOFTWARE.
*/
#include "bsp/rp2040/board.h"
#include "bsp/rp2040/boards/adafruit_fruit_jam/board.h"
#include "tusb.h"
#include "kbd.h"

View file

@ -40,7 +40,8 @@
#include "video.h"
#include "kbd.h"
#include "bsp/rp2040/board.h"
#include "pio_usb_configuration.h"
#include "bsp/rp2040/boards/adafruit_fruit_jam/board.h"
#include "tusb.h"
#include "umac.h"
@ -275,9 +276,19 @@ int main()
printf("Starting, init usb\n");
pio_usb_configuration_t pio_cfg = PIO_USB_DEFAULT_CONFIG;
pio_cfg.tx_ch = 2;
pio_cfg.pin_dp = PICO_DEFAULT_PIO_USB_DP_PIN;
//#ifdef PICO_DEFAULT_PIO_USB_VBUSEN_PIN
gpio_init(PICO_DEFAULT_PIO_USB_VBUSEN_PIN);
gpio_set_dir(PICO_DEFAULT_PIO_USB_VBUSEN_PIN, GPIO_OUT);
gpio_put(PICO_DEFAULT_PIO_USB_VBUSEN_PIN, PICO_DEFAULT_PIO_USB_VBUSEN_STATE);
//#endif
#if 0
_Static_assert(PIN_USB_HOST_DP + 1 == PIN_USB_HOST_DM || PIN_USB_HOST_DP - 1 == PIN_USB_HOST_DM, "Permitted USB D+/D- configuration");
pio_cfg.pinout = PIN_USB_HOST_DP + 1 == PIN_USB_HOST_DM ? PIO_USB_PINOUT_DPDM : PIO_USB_PINOUT_DMDP;
pio_cfg.pin_dp = PIN_USB_HOST_DP;
#endif
tuh_configure(BOARD_TUH_RHPORT, TUH_CFGID_RPI_PIO_USB_CONFIGURATION, &pio_cfg);
tuh_init(BOARD_TUH_RHPORT);