HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2023/08/04

Raspberry Pi Pico RP2040で QMKのファームウェアを動かす! Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!

(Raspberry Pi Pico RP2040でも QMKのファームウェアを公式に動かせる様になりました!)

Tags: [電子工作], [QMK]




● QMK firmwareの関連記事


2021/08/23
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法

  ラズパイや Windows WSL環境でカスタマイズ キーボードのファームウェア QMK firmwareの開発環境を構築

2022/01/09
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法

  BUFFALO USB 10-Key keyboard BSTK100 modification by Pro Micro and QMK firmware VIA

2022/03/13
市販のキーボードを無改造で QMK化する QMK USB Converterを作ってみる
市販のキーボードを無改造で QMK化する QMK USB Converterを作ってみる

  QMK firmware QMK USB to USB keyboard protocol converter Pro Micro 3.3V + USB Host MAX3421E

● Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!

 Raspberry Pi Pico RP2040でも QMKのファームウェアを公式に動かせる様になりました!

 また、RP2040の GPIOを使って USB HOST機能を実装する事で MAX3421E等の USB IC無しで USBデバイスを接続する事ができます。(Pico-PIO-USB)

 これにより、市販のキーボードを無改造で QMK化する QMK USB Converterが超絶手軽に作れる様になりました!

 AVRの Pro Micro基板を使う場合は、
 ・Pro Micro基板は +3.3V仕様は入手性が悪い & そこそこの値段がする
 ・MAX3421E基板が必要 & そこそこの値段がする
 ・Pro Micro基板で使用している AVR ATmega32U4マイコンチップの Flash容量が 32KBしかなく QMK USB Converterの実装だけでギリギリなので多くの機能を詰め込めない
 の欠点がありますが、RP2040を使う事で全て解決できます!

2022/03/13
市販のキーボードを無改造で QMK化する QMK USB Converterを作ってみる
市販のキーボードを無改造で QMK化する QMK USB Converterを作ってみる

  QMK firmware QMK USB to USB keyboard protocol converter Pro Micro 3.3V + USB Host MAX3421E

参考資料:
QMK - Raspberry Pi RP2040
[Core] Add Raspberry Pi RP2040 support #14877

2021年の振り返りとRP2040(RPi Pico)を使って分割キーボードの通信をUSBにする話
sekigon-gonnoc / Pico-PIO-USB
Pico Pico USB
how to use the Pico-PIO-USB library
hoboNicolaのPico-PIO-USB対応
SparkFun Pro Micro - RP2040


Waveshare RP2040-Zero 高性能ピコライクMCUボード Raspberry PiマイクロコントローラーRP2040 カステレーションモジュールでキャリアボードに直接はんだ付け可能 - 2個
ASIN: B0B2Z3YWB9

Seeed Studio XIAO RP2040 マイクロコントローラー デュアルコア ARM Cortex M0+ プロセッサ Arduino、MicroPython、サーキットパイソンをサポートし、豊富なインターフェースを備えています。
ASIN: B09NNVNW7M

KKHMF 20個 USB タイプA メスソケット ブレイクアウトボード 4Pアダプタコネクタ 2.54mm ソルダープリント DIY 基板 ブレッドボード 電源
ASIN: B099PCM2D2

ARCELI 20値0805SMD抵抗器アソートメントキットSMD抵抗器各20合計400
ASIN: B07RTH6JHX

※ 22Ωの抵抗が必要だから

GAOHOU 5個 0.42インチ 4ピン OLEDディスプレイ SSD1306 LCD IICインタフェースモジュール 白表示
ASIN: B0CDC6VSKC

※ I2C OLED SSD1306


● Windowsの WSLの Ubuntu環境で QMKをビルド、開発できます

2021/08/23
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法

  ラズパイや Windows WSL環境でカスタマイズ キーボードのファームウェア QMK firmwareの開発環境を構築

Raspberry Pi Pico SDK
# Raspberry Pi Pico SDKのセットアップ
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib

cd
git clone https://github.com/raspberrypi/pico-sdk

cd pico-sdk/
export PICO_SDK_PATH=`pwd`
export | grep PICO
# declare -x PICO_SDK_PATH="/home/user/pico-sdk"

git submodule update --init

# Submodule 'lib/btstack' (https://github.com/bluekitchen/btstack.git) registered for path 'lib/btstack'
# Submodule 'lib/cyw43-driver' (https://github.com/georgerobotics/cyw43-driver.git) registered for path 'lib/cyw43-driver'
# Submodule 'lib/lwip' (https://github.com/lwip-tcpip/lwip.git) registered for path 'lib/lwip'
# Submodule 'lib/mbedtls' (https://github.com/Mbed-TLS/mbedtls.git) registered for path 'lib/mbedtls'
# Submodule 'tinyusb' (https://github.com/hathach/tinyusb.git) registered for path 'lib/tinyusb'

how to use the Pico-PIO-USB library
# pico_device_and_hostのビルド
git clone https://github.com/brendena/pico_device_and_host
cd pico_device_and_host/
mkdir build
cd build

cmake ..

make -j

# [100%] Linking CXX executable USB_DEVICE_AND_KEYBOARD.elf
# Memory region         Used Size  Region Size  %age Used
#            FLASH:       57220 B         2 MB      2.73%
#              RAM:       21968 B       256 KB      8.38%
#        SCRATCH_X:          2 KB         4 KB     50.00%
#        SCRATCH_Y:          0 GB         4 KB      0.00%
# [100%] Built target USB_DEVICE_AND_KEYBOARD

ls -l USB_DEVICE_AND_KEYBOARD.elf
# -rwxr-xr-x 1 user user 162636 Aug  5 00:09 USB_DEVICE_AND_KEYBOARD.elf

ls -l *.uf2
# -rw-r--r-- 1 user user 114688 Aug  5 00:09 USB_DEVICE_AND_KEYBOARD.uf2

 USBに使用する GPIOピンを変更したい場合。
 ※ D-のピンは D+のピンの GPIO番号を +1したもの。

 デフォルトは
 D+ = GPIO 0
 D- = GPIO 1
nano Pico-PIO-USB/src/pio_usb_configuration.h

#ifndef PIO_USB_DP_PIN_DEFAULT
#define PIO_USB_DP_PIN_DEFAULT 0
#endif

#define PIO_USB_DM_PIN_DEFAULT (PIO_USB_DP_PIN_DEFAULT + 1)

 main_host.cに #define PIO_USB_DP_PIN_DEFAULT 10を追加。
 D+ = GPIO 10
 D- = GPIO 11
 に成る。
nano main_host.c

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "pico/stdlib.h"
#include "pico/multicore.h"
#include "pico/bootrom.h"

#define PIO_USB_DP_PIN_DEFAULT 10

#include "pio_usb.h"
#include "tusb.h"
#include "usb_descriptors.h"

$ diff USB_DEVICE_AND_KEYBOARD.hex USB_DEVICE_AND_KEYBOARD.hex_
2654c2654
< :10A5B8000D0A00000A000000010001000000000070
---
> :10A5B8000D0A00000000000001000100000000007A

・Raspberry Pi Pico RP2040で QMKのファームウェアを動かす! 回路図
Raspberry Pi Pico RP2040で QMKのファームウェアを動かす! 回路図



・Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!
Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!


Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!


Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!


Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!


Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!


Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!
 22Ωの抵抗が無かったので 33Ωを使用しています。
 (この USBに入れる直列抵抗(22Ω)は必須ではないが「入れたほうが良い」)

Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!


Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!


Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!


Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!



・Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!
Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!


Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!


Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!


Raspberry Pi Pico RP2040で QMKのファームウェアを動かす!
 とりあえず OLEDを動かした!


● Please set PICO_SDK_PATH or set PICO_SDK_FETCH_FROM_GIT
CMake Error at pico_sdk_import.cmake:44 (message):
  SDK location was not specified.  Please set PICO_SDK_PATH or set
  PICO_SDK_FETCH_FROM_GIT to on to fetch from git.
Call Stack (most recent call first):
  CMakeLists.txt:3 (include)

-- Configuring incomplete, errors occurred!

Solution
cd
git clone https://github.com/raspberrypi/pico-sdk
cd pico-sdk/
export PICO_SDK_PATH=`pwd`
export | grep PICO
# declare -x PICO_SDK_PATH="/home/user/pico-sdk"

● TinyUSB submodule has not been initialized; USB support will be unavailable
CMake Warning at /home/user/pico-sdk/src/rp2_common/tinyusb/CMakeLists.txt:10 (message):
  TinyUSB submodule has not been initialized; USB support will be unavailable

  hint: try 'git submodule update --init' from your SDK directory
  (/home/user/pico-sdk).

CMake Error at CMakeLists.txt:8 (add_subdirectory):
  The source directory

    /home/user/pico_device_and_host/Pico-PIO-USB

  does not contain a CMakeLists.txt file.

-- Configuring incomplete, errors occurred!

Solution
cd
git clone https://github.com/raspberrypi/pico-sdk
cd pico-sdk/
git submodule update --init


● Arduino環境の場合

 とりあえず RP2040や Pico-PIO-USBに慣れる為に色々動かしてみるのら!

Pico-PIO-USB/examples/arduino/device_info/device_info.ino
device_info.ino

Adafruit TinyUSB Library
Pico PIO USB

#define HOST_PIN_DP   10   // Pin used as D+ for host, D- = D+ + 1
 D+ = GPIO 10
 D- = GPIO 11

Error: CPU Clock = 133000000, PIO USB require CPU clock must be multiple of 120 Mhz
Change your CPU Clock to either 120 or 240 Mhz in Menu->CPU Speed

#error TinyUSB is not selected, please select it in "Tools->Menu->USB Stack"
"Tools->Menu->USB Stack"
・Adruino RP2040 Pico-PIO-USB PIO USB require CPU clock must be multiple of 120 Mhz
Adruino RP2040 Pico-PIO-USB PIO USB require CPU clock must be multiple of 120 Mhz


・Adruino RP2040 Pico-PIO-USB TinyUSB is not selected please select it in Tools->Menu->USB Stack
Adruino RP2040 Pico-PIO-USB TinyUSB is not selected please select it in Tools->Menu->USB Stack



No monitor available for the port protocol uf2conv. Could not connect to UF2_Board uf2conv port.

void setup()
{
  Serial1.begin(115200);

  Serial.begin(115200);
  //while ( !Serial ) delay(10);   // wait for native usb
  while(!Serial && (millis() < 5000));
  Serial.println("setup()");

  Serial.println("TinyUSB Dual Device Info Example");
}

 とりあえず動きますた!

 注意点としては RP2040を起動後に USBデバイスを差し込む事。
 (USBデバイスを差したままだと USB Device Infoを表示しない)
● BUFFALO USB GAME JOY PAD BSGP815GY
USB\VID_0583&PID_2060
USB\VID_0583&PID_2060 is recognizes as 2-axis 8-button gamepad

19:50:21.571 -> TinyUSB Dual Device Info Example
19:50:31.336 -> Device removed, address = 1
19:50:34.665 -> Device attached, address = 1
19:50:34.665 -> Device 1: ID 0583:2060
19:50:34.665 -> Device Descriptor:
19:50:34.665 ->   bLength             18
19:50:34.665 ->   bDescriptorType     1
19:50:34.665 ->   bcdUSB              0110
19:50:34.665 ->   bDeviceClass        0
19:50:34.665 ->   bDeviceSubClass     0
19:50:34.665 ->   bDeviceProtocol     0
19:50:34.665 ->   bMaxPacketSize0     8
19:50:34.665 ->   idVendor            0x0583
19:50:34.665 ->   idProduct           0x2060
19:50:34.665 ->   bcdDevice           0100
19:50:34.665 ->   iManufacturer       0
19:50:34.665 ->   iProduct            2     USB,2-axis 8-button gamepad
19:50:34.665 ->   iSerialNumber       0
19:50:34.665 ->   bNumConfigurations  1

● USB Flash Drive
USB\VID_058f&PID_6387
Alcor Micro Corp. Flash Drive USB\VID_058f&PID_6387

20:41:05.361 -> TinyUSB Dual Device Info Example
20:41:41.790 -> Device attached, address = 1
20:41:41.790 -> Device 1: ID 058f:6387
20:41:41.790 -> Device Descriptor:
20:41:41.790 ->   bLength             18
20:41:41.790 ->   bDescriptorType     1
20:41:41.790 ->   bcdUSB              0200
20:41:41.790 ->   bDeviceClass        0
20:41:41.790 ->   bDeviceSubClass     0
20:41:41.790 ->   bDeviceProtocol     0
20:41:41.790 ->   bMaxPacketSize0     64
20:41:41.790 ->   idVendor            0x058f
20:41:41.790 ->   idProduct           0x6387
20:41:41.790 ->   bcdDevice           0100
20:41:41.790 ->   iManufacturer       1     Generic
20:41:41.790 ->   iProduct            2     Mass Storage
20:41:41.790 ->   iSerialNumber       3     xxxxxxxx
20:41:41.915 ->   bNumConfigurations  1

20:43:51.818 -> Device removed, address = 1

・Adruino RP2040 Pico-PIO-USB USB HOST demo
Adruino RP2040 Pico-PIO-USB USB HOST demo




● Pico-PIO-USB examples

 とりあえず RP2040や Pico-PIO-USBに慣れる為に色々動かしてみるのら!

pio_usb_configuration.h
 D+ = GPIO 10
 D- = GPIO 11
#ifndef PIO_USB_DP_PIN_DEFAULT
#define PIO_USB_DP_PIN_DEFAULT 10
#endif

# Raspberry Pi Pico SDKのセットアップ
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib

cd
git clone https://github.com/raspberrypi/pico-sdk
cd pico-sdk/
export PICO_SDK_PATH=`pwd`
export | grep PICO
# declare -x PICO_SDK_PATH="/home/user/pico-sdk"

git submodule update --init

# Pico-PIO-USBの examplesのビルド
cd
git clone https://github.com/sekigon-gonnoc/Pico-PIO-USB
cd Pico-PIO-USB/
cd examples/
mkdir build
cd build
cmake ..
make

ls -l host_hid_to_device_cdc/
# drwxr-xr-x 1 user user   4096 Aug  6 18:23 CMakeFiles
# -rw-r--r-- 1 user user 156113 Aug  6 18:23 Makefile
# -rw-r--r-- 1 user user   1012 Aug  6 18:23 cmake_install.cmake
# -rwxr-xr-x 1 user user  56008 Aug  6 18:24 host_hid_to_device_cdc.bin
# -rw-r--r-- 1 user user 980701 Aug  6 18:24 host_hid_to_device_cdc.dis
# -rwxr-xr-x 1 user user 157644 Aug  6 18:24 host_hid_to_device_cdc.elf
# -rw-r--r-- 1 user user 314467 Aug  6 18:24 host_hid_to_device_cdc.elf.map
# -rw-r--r-- 1 user user 157593 Aug  6 18:24 host_hid_to_device_cdc.hex
# -rw-r--r-- 1 user user 112128 Aug  6 18:24 host_hid_to_device_cdc.uf2

ls -l */*.uf2
-rw-r--r-- 1 user user 112128 Aug  6 18:24 capture_hid_report/capture_hid_report.uf2
-rw-r--r-- 1 user user 112128 Aug  6 18:24 host_hid_to_device_cdc/host_hid_to_device_cdc.uf2
-rw-r--r-- 1 user user  87552 Aug  6 18:24 usb_device/usb_device.uf2

# .uf2ファイルを RP2040に書き込みます

# host_hid_to_device_cdc
USBキーボードや USBマウスの入力を UARTのシリアルに出力します。

・RP2040 Pico-PIO-USB USB HOST host_hid_to_device_cdc demo
RP2040 Pico-PIO-USB USB HOST host_hid_to_device_cdc demo


RP2040 Pico-PIO-USB USB HOST host_hid_to_device_cdc demo


RP2040 Pico-PIO-USB USB HOST host_hid_to_device_cdc demo




● Pico Pico USB

 RP2040が 10秒程度でリセットする??うごかねぇ!?

# Pico Pico USB
cd
git clone https://github.com/sekigon-gonnoc/qmk_firmware sekigon
cd sekigon
sudo ./util/qmk_install.sh
python3 -m pip install qmk
# WARNING: The script qmk is installed in '/home/user/.local/bin' which is not on PATH.
PATH="$HOME/.local/bin:$PATH"

qmk -V
# 1.0.0

make git-submodule
# QMK Firmware bmp-0.11.3

cd keyboards/pico_pico_usb/

# Make example for this keyboard (after setting up your build environment):
make pico_pico_usb/simple_split:default

# Flashing example for this keyboard by picotool:
make pico_pico_usb/simple_split:default:flash

---
# Convert firmware into uf2 format:
make pico_pico_usb/simple_split:default:uf2

Compiling: quantum/via.c                                                                            [OK]
Linking: .build/pico_pico_usb_simple_split_default.elf                                              [WARNINGS]
 |
 | Memory region         Used Size  Region Size  %age Used
 |            FLASH:       66764 B         2 MB      3.18%
 |              RAM:       25604 B       256 KB      9.77%
 |        SCRATCH_X:          2 KB         4 KB     50.00%
 |        SCRATCH_Y:          0 GB         4 KB      0.00%
 |
Creating binary load file for flashing: .build/pico_pico_usb_simple_split_default.bin               [OK]
Creating load file for flashing: .build/pico_pico_usb_simple_split_default.hex                      [OK]
Creating UF2 file for deployment: .build/pico_pico_usb_simple_split_default.uf2                     [OK]
Converting to uf2, output size: 133632, start address: 0x10000000
Wrote 133632 bytes to pico_pico_usb_simple_split_default.uf2.

ls -l *.uf2
# -rw-r--r-- 1 user user 133632 Aug  6 19:32 pico_pico_usb_simple_split_default.uf2

pio_usb_configuration.h
 D+ = GPIO 10
 D- = GPIO 11
keyboards/pico_pico_usb/pico_pio_usb/pio_usb_configuration.h
#define PIO_USB_DP_PIN_DEFAULT 10

Compiling: /home/user/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp
  pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp:12:10: fatal error: pico.h: No such file or directory
   12 | #include "pico.h"
      |          ^~~~~~~~
compilation terminated.
 [ERRORS]

Solution
ls -l $PICO_SDK_PATH/src/boards/include/boards/
cp $PICO_SDK_PATH/src/boards/include/boards/pico.h keyboards/pico_pico_usb/
boards/pico.h

Compiling: tmk_core/protocol/pico/protocol.c
  tmk_core/protocol/pico/protocol.c:199:6: error: conflicting types for 'tud_hid_report_complete_cb'
  199 | void tud_hid_report_complete_cb(uint8_t itf, uint8_t const* report,
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from pico-sdk/lib/tinyusb/src/tusb.h:70,
                 from tmk_core/protocol/pico/protocol.c:40:
pico-sdk/lib/tinyusb/src/class/hid/hid_device.h:119:19: note: previous declaration of 'tud_hid_report_complete_cb' was here
  119 | TU_ATTR_WEAK void tud_hid_report_complete_cb(uint8_t instance, uint8_t const* report, uint16_t len);
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
 [ERRORS]

Solution
export -n PICO_SDK_PATH
unset PICO_SDK_PATH
rm keyboards/pico_pico_usb/pico.h

☒ pico_pico_usb/simple_split: MATRIX_ROWS is inconsistent with the size of MATRIX_ROW_PINS: 1 != 3
config.h
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4

#define MATRIX_ROW_PINS { 2, 3, 4 }    // 3個にする
#define MATRIX_COL_PINS { 5, 6, 7, 8 } // 4個にする


● QMK keyboards/handwired/onekey/rp2040

 動作 OK!

cd
git clone --recursive https://github.com/qmk/qmk_firmware qmk_rp2040

cd
cd qmk_rp2040
ls -l ./lib/chibios/

sudo ./util/qmk_install.sh
python3 -m pip install qmk

PATH="$HOME/.local/bin:$PATH"

qmk -V
# 1.0.0

make git-submodule
make handwired/onekey:default:uf2
 動作 OK!

rules.mk
DEFAULT_FOLDER = handwired/onekey/rp2040

info.json
    "matrix_pins": {
        "cols": ["GP0"],
        "rows": ["GP4"]
    },
    "backlight": {
        "pin": "GP16"
    },
    "ws2812": {
        "pin": "GP16"
    }

config.h
#define QMK_WAITING_TEST_BUSY_PIN GP8
#define QMK_WAITING_TEST_YIELD_PIN GP9

#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP16

#define AUDIO_PIN GP27

#define ADC_PIN GP26

rules.mk
PICO_FLASH_SPI_CLKDIV = 4

● alcor_dactyl RP2040

alcor_dactyl

make handwired/alcor_dactyl:default:uf2
 動作 OK!

config.h
#define SERIAL_USART_TX_PIN GP26
#define SERIAL_USART_RX_PIN GP27

info.json
    "matrix_pins": {
        "cols": ["GP6", "GP7", "GP8", "GP9", "GP12", "GP13", "GP14"],
        "rows": ["GP5", "GP4", "GP3", "GP2", "GP1", "GP0"]

keymap.c
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    [0] = LAYOUT(
        KC_NO,
 KC_NO -> KC_8

rules.mk
PICO_FLASH_SPI_CLKDIV = 4


● QMK RP2040 Keyboard Quantizer

keyboard_quantizer

cd
git clone --recursive https://github.com/sekigon-gonnoc/qmk_firmware.git quantizer_mini --depth 1 -b quantizer_mini

cd
cd quantizer_mini
cd ./lib/
git clone https://github.com/sekigon-gonnoc/Pico-PIO-USB -b for-keyboard-quantizer
cd ..

sudo ./util/qmk_install.sh
python3 -m pip install qmk
# WARNING: The script qmk is installed in '/home/user/.local/bin' which is not on PATH.
PATH="$HOME/.local/bin:$PATH"

qmk -V
# 1.0.0

make git-submodule
# QMK Firmware kqrp-0.1.4
quantizer_mini\keyboards
  - keyboard_quantizer
  - sekigon

keyboards\keyboard_quantizer\mini
mini.c
    pio_usb_configuration_t pio_cfg = PIO_USB_DEFAULT_CONFIG;
    pio_cfg.pin_dp = 10;

rules.mk
PICO_FLASH_SPI_CLKDIV = 8

make keyboard_quantizer/mini:default:uf2
 動作 OK!

# Compiling: tmk_core/protocol/pico/usbd.c                           [OK]
# Linking: .build/keyboard_quantizer_mini_default.elf                [WARNINGS]
#  |
#  | Memory region         Used Size  Region Size  %age Used
#  |            FLASH:       89284 B         2 MB      4.26%
#  |              RAM:       34056 B       256 KB     12.99%
#  |        SCRATCH_X:          2 KB         4 KB     50.00%
#  |        SCRATCH_Y:          0 GB         4 KB      0.00%
#  |
# Creating binary load file for flashing: .build/keyboard_quantizer_mini_default.bin  [OK]
# Creating load file for flashing: .build/keyboard_quantizer_mini_default.hex         [OK]
# Creating UF2 file for deployment: .build/keyboard_quantizer_mini_default.uf2        [OK]
# Converting to uf2, output size: 178688, start address: 0x10000000
# Wrote 178688 bytes to keyboard_quantizer_mini_default.uf2.

ls -l *.uf2
# -rw-r--r-- 1 user user 178688 Aug  7 20:53 keyboard_quantizer_mini_default.uf2


● hoboNicolaLibrary 1.6.3版 (239,561bytes) 2022/9/20

 動作 OK!

hoboNicolaのPico-PIO-USB対応

rp_hobo_nicola.ino
 D+ = GPIO 10
 D- = GPIO 11
static const uint8_t usbh_dp_gpio = 10;

// core1 setup.
void setup1() {
  init_device_info();
  delay(10);  // wait a while for core0 setup() done.
  pio_usb_configuration_t pio_cfg = PIO_USB_DEFAULT_CONFIG;
  pio_cfg.pin_dp = usbh_dp_gpio;
  USBHost.configure_pio_usb(1, &pio_cfg);
  USBHost.begin(1);
}


● pico_bootsel_via_double_reset

 素早く 2回リセットを押すと BOOTSELモードに入る。

 BOOTSELボタンが無い基板やボタンを 2個押すのが面倒な時に使うと便利。

pico_bootsel_via_double_reset

boot stage2: double reset to uf2 #87


● PICO_FLASH_SPI_CLKDIV

Incorrect PICO_FLASH_SPI_CLKDIV for WaveShare RP2040-Zero #1304

Winbond W25Q16JVUXIQ W25Q16JV-IQ 16M-bit
1Pyww
0Qxxxx
W25Q16JV-IQ/JQ 14h 4015h
Clock frequency for Read Data instruction (03h) fR = Max. 50MHz {2}I think PICO_FLASH_SPI_CLKDIV should be set to 4 in SDK for WaveShare RP2040-Zero board.

PICO_XOSC_STARTUP_DELAY_MULTIPLIER


● RP2040-E5 USB Errata

[solved] Errata RP2040-E5 workaround

Errata : RP2040-E5
Summary : USB device fails to exit RESET state on busy USB bus.
Workaround : Use software to force USB device controller to see idle USB bus for 800us

rp2040_usb_device_enumeration.c

dcd_rp2040.c#L303

RP2040-E5 fix needs tinyusb_additions added to CMakeLists.txt #759

add_compile_definitions(
    TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX=1
)

target_compile_definitions(myexecutable PRIVATE PICO_RP2040_USB_DEVICE_ENUMERATION_FIX=1)

$ grep device_enumeration_fix myexecutable.elf.map
 .text.rp2040_usb_device_enumeration_fix
                0x1000d428                rp2040_usb_device_enumeration_fix



Tags: [電子工作], [QMK]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

【自由工作】市販のキーボードを無改造で VIA QMK化する Keyboard Quantizerを自作する【夏休み】
【自由工作】市販のキーボードを無改造で VIA QMK化する Keyboard Quantizerを自作する【夏休み】

  夏休みが明けたら 僕のキーボードが最強になって クラスのみんなから MMK 大作戦

BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法

  BUFFALO USB 10-Key keyboard BSTK100 modification by Pro Micro and QMK firmware VIA

QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法

  ラズパイや Windows WSL環境でカスタマイズ キーボードのファームウェア QMK firmwareの開発環境を構築

QMK firmwareでプログラムのサイズを小さくするテクニック、ケチケチ プログラミングの方法
QMK firmwareでプログラムのサイズを小さくするテクニック、ケチケチ プログラミングの方法

  QMK firmware How to Reduce Program Size、Reducing QMK firmware size

QMK firmwareで I/Oピンが足りない場合にデコーダ、デマルチプレクサを使用して IOを拡張する解決方法
QMK firmwareで I/Oピンが足りない場合にデコーダ、デマルチプレクサを使用して IOを拡張する解決方法

  QMK firmware expand I/O for many matrix keyboard、How to use IO Expander Multiplexer / Demultiplexer / Decoder

QMK firmwareで I/Oピンが足りない場合に I2Cの GPIOエキスパンダを使用して IOを拡張する解決方法
QMK firmwareで I/Oピンが足りない場合に I2Cの GPIOエキスパンダを使用して IOを拡張する解決方法

  QMK firmware expand I/O for many matrix keyboard、How to use I2C GPIO Expander PCF8574 and PCF8575

QMK firmwareで Audio機能を試してみる
QMK firmwareで Audio機能を試してみる

  QMK firmware test Audio function with Piezo buzzer

QMK firmwareで OLED機能で SSD1306を試してみる
QMK firmwareで OLED機能で SSD1306を試してみる

  QMK firmware test OLED Driver with SSD1306

QMK firmwareで Analog Stick機能で PSP2000用アナログ ジョイスティックを試してみる
QMK firmwareで Analog Stick機能で PSP2000用アナログ ジョイスティックを試してみる

  QMK firmware test Analog Joystick function with PSP2000 Analog Stick

最新の QMK firmwareで new_keyboard.shのコマンドが動かなくなったのを修正する方法
最新の QMK firmwareで new_keyboard.shのコマンドが動かなくなったのを修正する方法

  QMK Bugfix Create New Keyboard new_keyboard.sh command No such file or directory Error

QMK firmwareの Githubを forkした自分のリモートに pushすると怒られて pushできない場合の対応方法
QMK firmwareの Githubを forkした自分のリモートに pushすると怒られて pushできない場合の対応方法

  refusing to allow an OAuth App to create or update workflow `.github/workflows/api.yml` without `workflow` scope

中華製の格安なプログラマブル USBキーボードを買ってみた QMK VIAとは別物
中華製の格安なプログラマブル USBキーボードを買ってみた QMK VIAとは別物

  中華製のプログラマブル USBキーボード KeyboardSetter.exe

社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応
社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応

  キー内容が Remap等でカスタマイズ可能な社畜のキーボード「新入社員の同期」を 3500円で購入




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2023 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/hardware/qmk_rp2040/