Merge branch 'adafruit:main' into tiny2mb

This commit is contained in:
ZodiusInfuser 2021-12-08 16:51:47 +00:00 committed by GitHub
commit 3ea1619816
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
101 changed files with 2031 additions and 522 deletions
.gitmodulesREADME.rst
data
frozen
locale
main.c
ports
shared-bindings
busio
traceback
tests

2
.gitmodules vendored

@ -149,7 +149,7 @@
[submodule "ports/espressif/esp-idf"] [submodule "ports/espressif/esp-idf"]
path = ports/espressif/esp-idf path = ports/espressif/esp-idf
url = https://github.com/espressif/esp-idf.git url = https://github.com/espressif/esp-idf.git
branch = release/v4.3 branch = release/v4.4
[submodule "ports/espressif/certificates/nina-fw"] [submodule "ports/espressif/certificates/nina-fw"]
path = ports/espressif/certificates/nina-fw path = ports/espressif/certificates/nina-fw
url = https://github.com/adafruit/nina-fw.git url = https://github.com/adafruit/nina-fw.git

@ -213,7 +213,7 @@ Supported Support status
================ ============================================================ ================ ============================================================
atmel-samd ``SAMD21`` stable | ``SAMD51`` stable atmel-samd ``SAMD21`` stable | ``SAMD51`` stable
cxd56 stable cxd56 stable
espressif ``ESP32-C3`` beta | ``ESP32-S2`` stable espressif ``ESP32-C3`` beta | ``ESP32-S2`` stable | ``ESP32-S3`` beta
litex alpha litex alpha
mimxrt10xx alpha mimxrt10xx alpha
nrf stable nrf stable
@ -229,7 +229,7 @@ unix alpha
Boards Boards
~~~~~~ ~~~~~~
- Each ``port`` has a ``boards`` directory containing variations of boards - Each ``port`` has a ``boards`` directory containing boards
which belong to a specific microcontroller line. which belong to a specific microcontroller line.
- A list of native modules supported by a particular board can be found - A list of native modules supported by a particular board can be found
`here <https://circuitpython.readthedocs.io/en/latest/shared-bindings/support_matrix.html>`__. `here <https://circuitpython.readthedocs.io/en/latest/shared-bindings/support_matrix.html>`__.

@ -1 +1 @@
Subproject commit e5b149599d14a8841167fe552846ca36925b87a0 Subproject commit 266ea20ed80104c315dcb124b482fa5f9f48cdec

@ -1 +1 @@
Subproject commit 2c89a329063848bcd7dba6af6fb6c9d6036dd4f2 Subproject commit 3bdd335452ff14a53d1e840de043e3159cb3b829

@ -584,7 +584,7 @@ msgstr "Kedua pin harus mendukung hardware interrut"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "Kecerahan harus di antara 0-1.0" msgstr "Kecerahan harus di antara 0-1.0"
@ -1483,7 +1483,7 @@ msgstr "Panjang kata/bit tidak valid"
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "Panjang kunci harus 16, 24, atau 32 byte" msgstr "Panjang kunci harus 16, 24, atau 32 byte"
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2125,7 +2125,7 @@ msgstr "Tingkat sampel harus positif"
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "Nilai sampel terlalu tinggi. Nilai harus kurang dari %d" msgstr "Nilai sampel terlalu tinggi. Nilai harus kurang dari %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2386,7 +2386,7 @@ msgstr "Tidak dapat mengalokasikan buffer untuk signed conversion"
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr ""
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "Tidak dapat menemukan Tampilan I2C di %x" msgstr "Tidak dapat menemukan Tampilan I2C di %x"
@ -3988,12 +3988,14 @@ msgstr ""
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4008,6 +4010,7 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4500,7 +4503,7 @@ msgstr ""
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "" msgstr ""

@ -574,7 +574,7 @@ msgstr ""
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "" msgstr ""
@ -1462,7 +1462,7 @@ msgstr ""
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "" msgstr ""
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2090,7 +2090,7 @@ msgstr ""
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2351,7 +2351,7 @@ msgstr ""
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr ""
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "" msgstr ""
@ -3950,12 +3950,14 @@ msgstr ""
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3970,6 +3972,7 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4462,7 +4465,7 @@ msgstr ""
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "" msgstr ""

@ -577,7 +577,7 @@ msgstr ""
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "" msgstr ""
@ -1465,7 +1465,7 @@ msgstr ""
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "" msgstr ""
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2093,7 +2093,7 @@ msgstr ""
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2354,7 +2354,7 @@ msgstr ""
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr ""
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "" msgstr ""
@ -3953,12 +3953,14 @@ msgstr ""
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3973,6 +3975,7 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4465,7 +4468,7 @@ msgstr ""
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "" msgstr ""

@ -585,7 +585,7 @@ msgstr "Beide pins müssen Hardware Interrupts unterstützen"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "Die Helligkeit muss zwischen 0 und 1.0 liegen" msgstr "Die Helligkeit muss zwischen 0 und 1.0 liegen"
@ -1482,7 +1482,7 @@ msgstr "Ungültige Wort- / Bitlänge"
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "Der Schlüssel muss 16, 24 oder 32 Byte lang sein" msgstr "Der Schlüssel muss 16, 24 oder 32 Byte lang sein"
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2122,7 +2122,7 @@ msgstr "Abtastrate muss positiv sein"
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "Abtastrate zu hoch. Wert muss unter %d liegen" msgstr "Abtastrate zu hoch. Wert muss unter %d liegen"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2386,7 +2386,7 @@ msgstr "Konnte keine Buffer für Vorzeichenumwandlung allozieren"
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr ""
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "Konnte kein I2C Display finden an %x" msgstr "Konnte kein I2C Display finden an %x"
@ -4016,12 +4016,14 @@ msgstr "pow() mit 3 Argumenten erfordert Integer"
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4036,6 +4038,7 @@ msgstr "pow() mit 3 Argumenten erfordert Integer"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4533,7 +4536,7 @@ msgstr "watchdog Zeitlimit muss größer als 0 sein"
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "breite muss zwischen (inklusive) 2 und 8 liegen, nicht %d" msgstr "breite muss zwischen (inklusive) 2 und 8 liegen, nicht %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "breite muss größer als 0 sein" msgstr "breite muss größer als 0 sein"

@ -574,7 +574,7 @@ msgstr ""
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "" msgstr ""
@ -1462,7 +1462,7 @@ msgstr ""
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "" msgstr ""
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2090,7 +2090,7 @@ msgstr ""
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2351,7 +2351,7 @@ msgstr ""
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr ""
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "" msgstr ""
@ -3950,12 +3950,14 @@ msgstr ""
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3970,6 +3972,7 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4462,7 +4465,7 @@ msgstr ""
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "" msgstr ""

@ -585,7 +585,7 @@ msgstr "Both pins must support hardware interrupts"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "Brightness must be 0-1.0" msgstr "Brightness must be 0-1.0"
@ -1477,7 +1477,7 @@ msgstr "Invalid word/bit length"
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "Key must be 16, 24, or 32 bytes long" msgstr "Key must be 16, 24, or 32 bytes long"
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2114,7 +2114,7 @@ msgstr "Sample rate must be positive"
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "Sample rate too high. It must be less than %d" msgstr "Sample rate too high. It must be less than %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2382,7 +2382,7 @@ msgstr "Unable to allocate buffers for signed conversion"
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "Unable to create lock" msgstr "Unable to create lock"
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "Unable to find I2C display at %x" msgstr "Unable to find I2C display at %x"
@ -3987,12 +3987,14 @@ msgstr "pow() with 3 arguments requires integers"
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4007,6 +4009,7 @@ msgstr "pow() with 3 arguments requires integers"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4501,7 +4504,7 @@ msgstr "WatchDog timeout must be greater than 0"
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "width must be from 2 to 8 (inclusive), not %d" msgstr "width must be from 2 to 8 (inclusive), not %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "width must be greater than zero" msgstr "width must be greater than zero"

@ -589,7 +589,7 @@ msgstr "Ambos pines deben soportar interrupciones por hardware"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "El brillo debe ser 0-1.0" msgstr "El brillo debe ser 0-1.0"
@ -1495,7 +1495,7 @@ msgstr "Tamaño no válido de palabra/bit"
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "La llave debe tener 16, 24 o 32 bytes de longitud" msgstr "La llave debe tener 16, 24 o 32 bytes de longitud"
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2142,7 +2142,7 @@ msgstr "Sample rate debe ser positivo"
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "Frecuencia de muestreo demasiado alta. Debe ser menor a %d" msgstr "Frecuencia de muestreo demasiado alta. Debe ser menor a %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2413,7 +2413,7 @@ msgstr "No se pudieron asignar buffers para la conversión con signo"
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "No se puede crear bloqueo" msgstr "No se puede crear bloqueo"
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "No se puede encontrar la pantalla I2C en %x" msgstr "No se puede encontrar la pantalla I2C en %x"
@ -4033,12 +4033,14 @@ msgstr "pow() con 3 argumentos requiere enteros"
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4053,6 +4055,7 @@ msgstr "pow() con 3 argumentos requiere enteros"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4548,7 +4551,7 @@ msgstr "el tiempo de espera del perro guardián debe ser mayor a 0"
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "ancho debe estar entre 2 y 8 (inclusivamente), no %d" msgstr "ancho debe estar entre 2 y 8 (inclusivamente), no %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "el ancho debe ser mayor que cero" msgstr "el ancho debe ser mayor que cero"

@ -581,7 +581,7 @@ msgstr "Ang parehong mga pin ay dapat na sumusuporta sa hardware interrupts"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "" msgstr ""
@ -1477,7 +1477,7 @@ msgstr ""
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "" msgstr ""
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2110,7 +2110,7 @@ msgstr "Sample rate ay dapat positibo"
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "Sample rate ay masyadong mataas. Ito ay dapat hindi hiigit sa %d" msgstr "Sample rate ay masyadong mataas. Ito ay dapat hindi hiigit sa %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2371,7 +2371,7 @@ msgstr "Hindi ma-allocate ang buffers para sa naka-sign na conversion"
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr ""
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "" msgstr ""
@ -3991,12 +3991,14 @@ msgstr "pow() na may 3 argumento kailangan ng integers"
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4011,6 +4013,7 @@ msgstr "pow() na may 3 argumento kailangan ng integers"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4507,7 +4510,7 @@ msgstr ""
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "" msgstr ""

@ -591,7 +591,7 @@ msgstr "Les deux broches doivent supporter les interruptions matérielles"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "La luminosité doit être de 0 à 1.0" msgstr "La luminosité doit être de 0 à 1.0"
@ -1508,7 +1508,7 @@ msgstr "Longueur de mot / bit invalide"
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "La clé doit comporter 16, 24 ou 32 octets" msgstr "La clé doit comporter 16, 24 ou 32 octets"
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "La disposition des LED doit correspondre à la taille de l'écran" msgstr "La disposition des LED doit correspondre à la taille de l'écran"
@ -2154,7 +2154,7 @@ msgstr "Le taux d'échantillonage doit être positif"
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "Taux d'échantillonage trop élevé. Doit être inférieur à %d" msgstr "Taux d'échantillonage trop élevé. Doit être inférieur à %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "La dimension d'échelle doit être un multiple de 3" msgstr "La dimension d'échelle doit être un multiple de 3"
@ -2429,7 +2429,7 @@ msgstr "Impossible d'allouer des tampons pour une conversion signée"
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "Impossible de créer un verrou ('lock')" msgstr "Impossible de créer un verrou ('lock')"
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "Impossible de trouver l'affichage I2C à %x" msgstr "Impossible de trouver l'affichage I2C à %x"
@ -4065,12 +4065,14 @@ msgstr "pow() avec 3 arguments nécessite des entiers"
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4085,6 +4087,7 @@ msgstr "pow() avec 3 arguments nécessite des entiers"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4580,7 +4583,7 @@ msgstr "watchdog timeout doit être supérieur à 0"
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "width doit être entre 2 et 8 (inclusivement), non %d" msgstr "width doit être entre 2 et 8 (inclusivement), non %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "width doit être plus que zero" msgstr "width doit être plus que zero"

@ -574,7 +574,7 @@ msgstr ""
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "" msgstr ""
@ -1462,7 +1462,7 @@ msgstr ""
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "" msgstr ""
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2090,7 +2090,7 @@ msgstr ""
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2351,7 +2351,7 @@ msgstr ""
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr ""
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "" msgstr ""
@ -3950,12 +3950,14 @@ msgstr ""
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3970,6 +3972,7 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4462,7 +4465,7 @@ msgstr ""
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "" msgstr ""

@ -589,7 +589,7 @@ msgstr "Entrambi i pin devono supportare gli interrupt hardware"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "La luminosità deve essere tra 0-1.0" msgstr "La luminosità deve essere tra 0-1.0"
@ -1487,7 +1487,7 @@ msgstr ""
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "" msgstr ""
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2129,7 +2129,7 @@ msgid "Sample rate too high. It must be less than %d"
msgstr "" msgstr ""
"Frequenza di campionamento troppo alta. Il valore deve essere inferiore a %d" "Frequenza di campionamento troppo alta. Il valore deve essere inferiore a %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2390,7 +2390,7 @@ msgstr "Ipossibilitato ad allocare buffer per la conversione con segno"
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr ""
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "" msgstr ""
@ -4013,12 +4013,14 @@ msgstr "pow() con 3 argomenti richiede interi"
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4033,6 +4035,7 @@ msgstr "pow() con 3 argomenti richiede interi"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4529,7 +4532,7 @@ msgstr ""
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "" msgstr ""

@ -581,7 +581,7 @@ msgstr "両方のピンにハードウェア割り込み対応が必要"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "brightnessは0から1.0まででなければなりません" msgstr "brightnessは0から1.0まででなければなりません"
@ -1473,7 +1473,7 @@ msgstr "不正なワード/ビット長"
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "Keyの長さは、16, 24, 32バイトのいずれかでなければなりません" msgstr "Keyの長さは、16, 24, 32バイトのいずれかでなければなりません"
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2104,7 +2104,7 @@ msgstr "サンプルレートは正数でなければなりません"
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "サンプルレートは%d以下でなければなりません" msgstr "サンプルレートは%d以下でなければなりません"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2366,7 +2366,7 @@ msgstr ""
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr ""
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "I2Cディスプレイを %x に見つけられません" msgstr "I2Cディスプレイを %x に見つけられません"
@ -3972,12 +3972,14 @@ msgstr "pow()の第3引数には整数が必要"
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3992,6 +3994,7 @@ msgstr "pow()の第3引数には整数が必要"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4485,7 +4488,7 @@ msgstr "watchdogのtimeoutは0以上でなければなりません"
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "" msgstr ""

@ -577,7 +577,7 @@ msgstr ""
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "" msgstr ""
@ -1465,7 +1465,7 @@ msgstr ""
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "" msgstr ""
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2093,7 +2093,7 @@ msgstr ""
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2355,7 +2355,7 @@ msgstr ""
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr ""
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "" msgstr ""
@ -3954,12 +3954,14 @@ msgstr ""
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3974,6 +3976,7 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4466,7 +4469,7 @@ msgstr ""
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "" msgstr ""

@ -579,7 +579,7 @@ msgstr "Beide pinnen moeten hardware interrupts ondersteunen"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "Helderheid moet tussen de 0 en 1.0 liggen" msgstr "Helderheid moet tussen de 0 en 1.0 liggen"
@ -1474,7 +1474,7 @@ msgstr "Ongeldig woord/bit lengte"
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "Sleutel moet 16, 24, of 32 bytes lang zijn" msgstr "Sleutel moet 16, 24, of 32 bytes lang zijn"
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2116,7 +2116,7 @@ msgstr "Sample rate moet positief zijn"
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "Sample rate is te hoog. Moet minder dan %d zijn" msgstr "Sample rate is te hoog. Moet minder dan %d zijn"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2377,7 +2377,7 @@ msgstr "Niet in staat buffers voor gesigneerde conversie te alloceren"
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "Kan vergrendeling niet maken" msgstr "Kan vergrendeling niet maken"
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "Geen I2C beeldscherm gevonden bij %x" msgstr "Geen I2C beeldscherm gevonden bij %x"
@ -3991,12 +3991,14 @@ msgstr "pow() met 3 argumenten vereist integers"
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4011,6 +4013,7 @@ msgstr "pow() met 3 argumenten vereist integers"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4505,7 +4508,7 @@ msgstr "watchdog time-out moet groter zijn dan 0"
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "breedte moet groter dan nul zijn" msgstr "breedte moet groter dan nul zijn"

@ -581,7 +581,7 @@ msgstr "Obie nóżki muszą wspierać przerwania sprzętowe"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "Jasność musi wynosić 0-1,0" msgstr "Jasność musi wynosić 0-1,0"
@ -1473,7 +1473,7 @@ msgstr "Niepoprawna długość słowa/bitu"
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "Klucz musi mieć długość 16, 24 lub 32 bajtów" msgstr "Klucz musi mieć długość 16, 24 lub 32 bajtów"
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2101,7 +2101,7 @@ msgstr "Częstotliwość próbkowania musi być dodatnia"
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "Zbyt wysoka częstotliwość próbkowania. Musi być mniejsza niż %d" msgstr "Zbyt wysoka częstotliwość próbkowania. Musi być mniejsza niż %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2362,7 +2362,7 @@ msgstr "Nie udała się alokacja buforów do konwersji ze znakiem"
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr ""
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "" msgstr ""
@ -3963,12 +3963,14 @@ msgstr "trzyargumentowe pow() wymaga liczb całkowitych"
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -3983,6 +3985,7 @@ msgstr "trzyargumentowe pow() wymaga liczb całkowitych"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4476,7 +4479,7 @@ msgstr ""
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "szerokość musi być większa niż zero" msgstr "szerokość musi być większa niż zero"

@ -594,7 +594,7 @@ msgstr "Ambos os pinos devem suportar interrupções de hardware"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "O brilho deve ser 0-1,0" msgstr "O brilho deve ser 0-1,0"
@ -1499,7 +1499,7 @@ msgstr "O comprimento do bit/palavra são inválidos"
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "A chave deve ter 16, 24 ou 32 bytes de comprimento" msgstr "A chave deve ter 16, 24 ou 32 bytes de comprimento"
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "Os mapeamentos do led devem corresponder ao tamanho do display" msgstr "Os mapeamentos do led devem corresponder ao tamanho do display"
@ -2146,7 +2146,7 @@ msgstr "A taxa de amostragem deve ser positiva"
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "Taxa de amostragem muito alta. Deve ser menor que %d" msgstr "Taxa de amostragem muito alta. Deve ser menor que %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "As dimensões da escala devem ser poder ser divididas por 3" msgstr "As dimensões da escala devem ser poder ser divididas por 3"
@ -2422,7 +2422,7 @@ msgstr "Não é possível alocar buffers para conversão assinada"
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "Não é possível criar um lock" msgstr "Não é possível criar um lock"
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "Não foi possível encontrar a tela I2C no %x" msgstr "Não foi possível encontrar a tela I2C no %x"
@ -4054,12 +4054,14 @@ msgstr "o pow() com 3 argumentos requer números inteiros"
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4074,6 +4076,7 @@ msgstr "o pow() com 3 argumentos requer números inteiros"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4568,7 +4571,7 @@ msgstr "o tempo limite do watchdog deve ser maior que 0"
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "a largura deve ser entre 2 a 8 (inclusive), não %d" msgstr "a largura deve ser entre 2 a 8 (inclusive), não %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "a largura deve ser maior que zero" msgstr "a largura deve ser maior que zero"

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2021-11-29 12:53+0000\n" "PO-Revision-Date: 2021-12-04 12:51+0000\n"
"Last-Translator: Clay <code.clayt@gmail.com>\n" "Last-Translator: Clay <code.clayt@gmail.com>\n"
"Language-Team: none\n" "Language-Team: none\n"
"Language: ru\n" "Language: ru\n"
@ -74,16 +74,17 @@ msgstr "%%c требует int или char"
#, c-format #, c-format
msgid "" msgid ""
"%d address pins, %d rgb pins and %d tiles indicate a height of %d, not %d" "%d address pins, %d rgb pins and %d tiles indicate a height of %d, not %d"
msgstr "" msgstr "%d адресные пины, %d rgb пины и %d плитки указывают высоту %d а не %d"
"%d адресные выводы, %d rgb выводы и %d плитки указывают высоту %d а не %d"
#: shared-bindings/microcontroller/Pin.c #: shared-bindings/microcontroller/Pin.c
#, fuzzy
msgid "%q and %q contain duplicate pins" msgid "%q and %q contain duplicate pins"
msgstr "%q и %q содержат повторяющиеся выводы" msgstr "%q и %q содержат пины-дупликаты"
#: shared-bindings/microcontroller/Pin.c #: shared-bindings/microcontroller/Pin.c
#, fuzzy
msgid "%q contains duplicate pins" msgid "%q contains duplicate pins"
msgstr "%q содержит повторяющиеся выводы" msgstr "%q содержит пины-дупликаты"
#: ports/atmel-samd/common-hal/sdioio/SDCard.c #: ports/atmel-samd/common-hal/sdioio/SDCard.c
msgid "%q failure: %d" msgid "%q failure: %d"
@ -170,7 +171,7 @@ msgstr "%q вне диапазона"
#: ports/atmel-samd/common-hal/microcontroller/Pin.c #: ports/atmel-samd/common-hal/microcontroller/Pin.c
msgid "%q pin invalid" msgid "%q pin invalid"
msgstr "Вывод %q не допустим" msgstr "Пин %q не допустим"
#: shared-bindings/fontio/BuiltinFont.c #: shared-bindings/fontio/BuiltinFont.c
msgid "%q should be an int" msgid "%q should be an int"
@ -434,7 +435,7 @@ msgstr "Все каналы событий синхронизации уже и
#: shared-bindings/pwmio/PWMOut.c #: shared-bindings/pwmio/PWMOut.c
msgid "All timers for this pin are in use" msgid "All timers for this pin are in use"
msgstr "Все таймеры для этого вывода уже используются" msgstr "Все таймеры для этого Пина уже используются"
#: ports/atmel-samd/common-hal/_pew/PewPew.c #: ports/atmel-samd/common-hal/_pew/PewPew.c
#: ports/atmel-samd/common-hal/audioio/AudioOut.c #: ports/atmel-samd/common-hal/audioio/AudioOut.c
@ -472,7 +473,7 @@ msgstr "Поиск сетей wifi уже происходит"
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
msgid "AnalogIn not supported on given pin" msgid "AnalogIn not supported on given pin"
msgstr "AnalogIn не поддерживается на данном выводе" msgstr "AnalogIn не поддерживается на данном пине"
#: ports/cxd56/common-hal/analogio/AnalogOut.c #: ports/cxd56/common-hal/analogio/AnalogOut.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogOut.c #: ports/mimxrt10xx/common-hal/analogio/AnalogOut.c
@ -487,7 +488,7 @@ msgstr "AnalogOut имеет только 16 бит. Значение должн
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
msgid "AnalogOut not supported on given pin" msgid "AnalogOut not supported on given pin"
msgstr "AnalogOut не поддерживается на данном выводе" msgstr "AnalogOut не поддерживается на данном пине"
#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c #: ports/stm/common-hal/audiopwmio/PWMAudioOut.c
msgid "Another PWMAudioOut is already active" msgid "Another PWMAudioOut is already active"
@ -556,8 +557,7 @@ msgstr "Ниже минимальной частоты кадров"
#: ports/raspberrypi/common-hal/audiobusio/I2SOut.c #: ports/raspberrypi/common-hal/audiobusio/I2SOut.c
msgid "Bit clock and word select must be sequential pins" msgid "Bit clock and word select must be sequential pins"
msgstr "" msgstr ""
"Битовый тактовый генератор и выбор слова должны быть последовательными " "Битовый тактовый генератор и выбор слова должны быть последовательными пинами"
"выводами"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
@ -588,11 +588,11 @@ msgstr "Для управления потоком требуется как RX,
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c #: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
msgid "Both pins must support hardware interrupts" msgid "Both pins must support hardware interrupts"
msgstr "Оба вывода должны поддерживать аппаратные прерывания" msgstr "Оба пина должны поддерживать аппаратные прерывания"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "Яркость должна быть в диапазоне от 0 до 1.0" msgstr "Яркость должна быть в диапазоне от 0 до 1.0"
@ -663,7 +663,7 @@ msgstr "Буферы должны быть одинакового размера
#: ports/raspberrypi/common-hal/paralleldisplay/ParallelBus.c #: ports/raspberrypi/common-hal/paralleldisplay/ParallelBus.c
#, c-format #, c-format
msgid "Bus pin %d is already in use" msgid "Bus pin %d is already in use"
msgstr "Вывод шины %d уже используется" msgstr "Пин шины %d уже используется"
#: shared-bindings/_bleio/UUID.c #: shared-bindings/_bleio/UUID.c
msgid "Byte buffer must be 16 bytes." msgid "Byte buffer must be 16 bytes."
@ -687,7 +687,7 @@ msgstr "Вызовите super().__init__() перед обращением к
#: ports/espressif/common-hal/alarm/pin/PinAlarm.c #: ports/espressif/common-hal/alarm/pin/PinAlarm.c
msgid "Can only alarm on RTC IO from deep sleep." msgid "Can only alarm on RTC IO from deep sleep."
msgstr "Сигнал из глубокого сна может подаваться только на выводе RTC IO." msgstr "Сигнал из глубокого сна может подаваться только на пине RTC IO."
#: ports/espressif/common-hal/alarm/pin/PinAlarm.c #: ports/espressif/common-hal/alarm/pin/PinAlarm.c
msgid "Can only alarm on one low pin while others alarm high from deep sleep." msgid "Can only alarm on one low pin while others alarm high from deep sleep."
@ -1265,8 +1265,9 @@ msgid "Insufficient encryption"
msgstr "Недостаточное шифрование" msgstr "Недостаточное шифрование"
#: ports/espressif/common-hal/wifi/Radio.c #: ports/espressif/common-hal/wifi/Radio.c
#, fuzzy
msgid "Interface must be started" msgid "Interface must be started"
msgstr "" msgstr "Интерфейс должен быть запущен"
#: ports/atmel-samd/audio_dma.c ports/raspberrypi/audio_dma.c #: ports/atmel-samd/audio_dma.c ports/raspberrypi/audio_dma.c
msgid "Internal audio buffer too small" msgid "Internal audio buffer too small"
@ -1504,7 +1505,7 @@ msgstr "Недопустимая длина слова/бита"
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "Ключ должен быть длинной 16, 24 или 32 байта" msgstr "Ключ должен быть длинной 16, 24 или 32 байта"
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -1561,9 +1562,9 @@ msgstr ""
"Отсутствует first_out_pin. Инструкция %d вводит (shifts out) на вывод(ы)" "Отсутствует first_out_pin. Инструкция %d вводит (shifts out) на вывод(ы)"
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
#, c-format #, fuzzy, c-format
msgid "Missing first_in_pin. Instruction %d waits based on pin" msgid "Missing first_in_pin. Instruction %d waits based on pin"
msgstr "" msgstr "Отсутствует first_in_pin. Инструкция %d ожидает на основе вывода"
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
#, c-format #, c-format
@ -1687,7 +1688,7 @@ msgstr "Свободные GCLK отсутствуют"
#: shared-bindings/os/__init__.c #: shared-bindings/os/__init__.c
msgid "No hardware random available" msgid "No hardware random available"
msgstr "" msgstr "Отсутствует аппаратный генератор случайных чисел"
#: ports/atmel-samd/common-hal/ps2io/Ps2.c #: ports/atmel-samd/common-hal/ps2io/Ps2.c
msgid "No hardware support on clk pin" msgid "No hardware support on clk pin"
@ -1705,7 +1706,7 @@ msgstr "Нет in в программе"
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
msgid "No in or out in program" msgid "No in or out in program"
msgstr "" msgstr "В программе отсутствует ввод или вывод"
#: shared-bindings/aesio/aes.c #: shared-bindings/aesio/aes.c
msgid "No key was specified" msgid "No key was specified"
@ -1718,7 +1719,7 @@ msgstr "Нет поддержки длинных целых чисел (long int
#: shared-module/usb_hid/__init__.c #: shared-module/usb_hid/__init__.c
#, c-format #, c-format
msgid "No more than %d HID devices allowed" msgid "No more than %d HID devices allowed"
msgstr "" msgstr "Допускается не более %d HID устройств"
#: shared-bindings/wifi/Radio.c #: shared-bindings/wifi/Radio.c
msgid "No network with that ssid" msgid "No network with that ssid"
@ -1726,7 +1727,7 @@ msgstr "Нет сети с этим ssid"
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
msgid "No out in program" msgid "No out in program"
msgstr "" msgstr "В программе отсутствует вывод"
#: ports/atmel-samd/common-hal/busio/I2C.c #: ports/atmel-samd/common-hal/busio/I2C.c
#: ports/espressif/common-hal/busio/I2C.c #: ports/espressif/common-hal/busio/I2C.c
@ -1773,11 +1774,12 @@ msgstr "Не подключено"
#: shared-bindings/audiobusio/I2SOut.c shared-bindings/audioio/AudioOut.c #: shared-bindings/audiobusio/I2SOut.c shared-bindings/audioio/AudioOut.c
#: shared-bindings/audiopwmio/PWMAudioOut.c #: shared-bindings/audiopwmio/PWMAudioOut.c
msgid "Not playing" msgid "Not playing"
msgstr "" msgstr "Не играет"
#: shared-bindings/_bleio/__init__.c #: shared-bindings/_bleio/__init__.c
#, fuzzy
msgid "Not settable" msgid "Not settable"
msgstr "" msgstr "Не устанавливается"
#: ports/espressif/common-hal/paralleldisplay/ParallelBus.c #: ports/espressif/common-hal/paralleldisplay/ParallelBus.c
#, c-format #, c-format
@ -1797,8 +1799,9 @@ msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
#: ports/raspberrypi/common-hal/audiobusio/PDMIn.c #: ports/raspberrypi/common-hal/audiobusio/PDMIn.c
#, fuzzy
msgid "Only 8 or 16 bit mono with " msgid "Only 8 or 16 bit mono with "
msgstr "" msgstr "Только 8- или 16-битное моно с "
#: ports/espressif/common-hal/wifi/__init__.c #: ports/espressif/common-hal/wifi/__init__.c
msgid "Only IPv4 addresses supported" msgid "Only IPv4 addresses supported"
@ -2142,7 +2145,7 @@ msgstr ""
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2403,7 +2406,7 @@ msgstr ""
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr ""
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "" msgstr ""
@ -4002,12 +4005,14 @@ msgstr ""
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4022,6 +4027,7 @@ msgstr ""
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4514,7 +4520,7 @@ msgstr ""
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "" msgstr ""
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "" msgstr ""
@ -4576,8 +4582,9 @@ msgid "zi must be an ndarray"
msgstr "" msgstr ""
#: extmod/ulab/code/scipy/signal/signal.c #: extmod/ulab/code/scipy/signal/signal.c
#, fuzzy
msgid "zi must be of float type" msgid "zi must be of float type"
msgstr "" msgstr "zi должно быть типа float"
#: extmod/ulab/code/scipy/signal/signal.c #: extmod/ulab/code/scipy/signal/signal.c
msgid "zi must be of shape (n_section, 2)" msgid "zi must be of shape (n_section, 2)"

@ -584,7 +584,7 @@ msgstr "Båda pinnarna måste stödja maskinvaruavbrott"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "Ljusstyrkan måste vara mellan 0 och 1,0" msgstr "Ljusstyrkan måste vara mellan 0 och 1,0"
@ -1481,7 +1481,7 @@ msgstr "Ogiltig word-/bitlängd"
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "Nyckeln måste vara 16, 24 eller 32 byte lång" msgstr "Nyckeln måste vara 16, 24 eller 32 byte lång"
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "LED-mappning måste matcha displaystorlek" msgstr "LED-mappning måste matcha displaystorlek"
@ -2122,7 +2122,7 @@ msgstr "Samplingsfrekvensen måste vara positiv"
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "Samplingsfrekvensen är för hög. Den måste vara mindre än %d" msgstr "Samplingsfrekvensen är för hög. Den måste vara mindre än %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "Skaldimension måste vara delbar med 3" msgstr "Skaldimension måste vara delbar med 3"
@ -2393,7 +2393,7 @@ msgstr "Det går inte att allokera buffert för signerad konvertering"
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "Kan inte skapa lås" msgstr "Kan inte skapa lås"
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "Det gick inte att hitta I2C-display på %x" msgstr "Det gick inte att hitta I2C-display på %x"
@ -4011,12 +4011,14 @@ msgstr "pow() med 3 argument kräver heltal"
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4031,6 +4033,7 @@ msgstr "pow() med 3 argument kräver heltal"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4525,7 +4528,7 @@ msgstr "watchdog timeout måste vara större än 0"
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "width måste vara mellan 2 och 8, inte %d" msgstr "width måste vara mellan 2 och 8, inte %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "width måste vara större än noll" msgstr "width måste vara större än noll"

@ -591,7 +591,7 @@ msgstr "liǎnggè yǐnjiǎo dōu bìxū zhīchí yìngjiàn zhōngduàn"
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "Brightness must be 0-1.0" msgid "Brightness must be 0-1.0"
msgstr "Liàngdù bìxū wèi 0-1.0" msgstr "Liàngdù bìxū wèi 0-1.0"
@ -1492,7 +1492,7 @@ msgstr "Wúxiào de zì/wèi chángdù"
msgid "Key must be 16, 24, or 32 bytes long" msgid "Key must be 16, 24, or 32 bytes long"
msgstr "mì yào bì xū wéi 16, 24 huò 32 zì jié cháng" msgstr "mì yào bì xū wéi 16, 24 huò 32 zì jié cháng"
#: shared-module/is31fl3741/is31fl3741.c #: shared-module/is31fl3741/IS31FL3741.c
msgid "LED mappings must match display size" msgid "LED mappings must match display size"
msgstr "" msgstr ""
@ -2132,7 +2132,7 @@ msgstr "Cǎiyàng lǜ bìxū wèi zhèng shù"
msgid "Sample rate too high. It must be less than %d" msgid "Sample rate too high. It must be less than %d"
msgstr "Cǎiyàng lǜ tài gāo. Tā bìxū xiǎoyú %d" msgstr "Cǎiyàng lǜ tài gāo. Tā bìxū xiǎoyú %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
msgid "Scale dimensions must divide by 3" msgid "Scale dimensions must divide by 3"
msgstr "" msgstr ""
@ -2402,7 +2402,7 @@ msgstr "Wúfǎ fēnpèi huǎnchōng qū yòng yú qiānmíng zhuǎnhuàn"
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "Wúfǎ chuàngjiàn suǒ" msgstr "Wúfǎ chuàngjiàn suǒ"
#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c
#, c-format #, c-format
msgid "Unable to find I2C Display at %x" msgid "Unable to find I2C Display at %x"
msgstr "Wúfǎ zài%x zhǎodào I2C xiǎnshìqì" msgstr "Wúfǎ zài%x zhǎodào I2C xiǎnshìqì"
@ -4018,12 +4018,14 @@ msgstr "pow() yǒu 3 cānshù xūyào zhěngshù"
#: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h
#: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h
#: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h
#: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h
#: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h
#: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h
#: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h
#: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h
#: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h
#: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h
@ -4038,6 +4040,7 @@ msgstr "pow() yǒu 3 cānshù xūyào zhěngshù"
#: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h
#: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h
#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h
#: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h
#: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h
@ -4535,7 +4538,7 @@ msgstr "kān mén gǒu chāoshí bìxū dàyú 0"
msgid "width must be from 2 to 8 (inclusive), not %d" msgid "width must be from 2 to 8 (inclusive), not %d"
msgstr "kuān dù bì xū cóng 2 dào 8 ( hán ), ér bù shì %d" msgstr "kuān dù bì xū cóng 2 dào 8 ( hán ), ér bù shì %d"
#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/is31fl3741/IS31FL3741.c
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "kuāndù bìxū dàyú líng" msgstr "kuāndù bìxū dàyú líng"

1
main.c

@ -56,6 +56,7 @@
#include "supervisor/shared/safe_mode.h" #include "supervisor/shared/safe_mode.h"
#include "supervisor/shared/stack.h" #include "supervisor/shared/stack.h"
#include "supervisor/shared/status_leds.h" #include "supervisor/shared/status_leds.h"
#include "supervisor/shared/tick.h"
#include "supervisor/shared/traceback.h" #include "supervisor/shared/traceback.h"
#include "supervisor/shared/translate.h" #include "supervisor/shared/translate.h"
#include "supervisor/shared/workflow.h" #include "supervisor/shared/workflow.h"

@ -63,6 +63,7 @@ SRC_C += bindings/videocore/__init__.c \
lib/tinyusb/src/portable/synopsys/dwc2/dcd_dwc2.c \ lib/tinyusb/src/portable/synopsys/dwc2/dcd_dwc2.c \
peripherals/broadcom/caches.c \ peripherals/broadcom/caches.c \
peripherals/broadcom/gen/interrupt_handlers.c \ peripherals/broadcom/gen/interrupt_handlers.c \
peripherals/broadcom/gen/pins.c \
peripherals/broadcom/gpio.c \ peripherals/broadcom/gpio.c \
peripherals/broadcom/interrupts.c \ peripherals/broadcom/interrupts.c \
peripherals/broadcom/mmu.c \ peripherals/broadcom/mmu.c \
@ -165,7 +166,7 @@ $(BUILD)/firmware.disk.img.zip: $(BUILD)/kernel8.img
$(Q)parted -s $(BUILD)/circuitpython-disk.img mkpart primary fat32 0% 100% $(Q)parted -s $(BUILD)/circuitpython-disk.img mkpart primary fat32 0% 100%
$(Q)mkfs.fat -F 32 -n BOOT --offset=2048 $(BUILD)/circuitpython-disk.img $(Q)mkfs.fat -F 32 -n BOOT --offset=2048 $(BUILD)/circuitpython-disk.img
$(Q)mcopy -i $(BUILD)/circuitpython-disk.img@@1M config.txt firmware/bootcode.bin firmware/fixup* firmware/start* :: $(Q)mcopy -i $(BUILD)/circuitpython-disk.img@@1M config.txt firmware/bootcode.bin firmware/fixup* firmware/start* firmware/*.dtb ::
$(Q)mcopy -i $(BUILD)/circuitpython-disk.img@@1M $(BUILD)/kernel8.img :: $(Q)mcopy -i $(BUILD)/circuitpython-disk.img@@1M $(BUILD)/kernel8.img ::
$(Q)zip $@ $(BUILD)/circuitpython-disk.img $(Q)zip $@ $(BUILD)/circuitpython-disk.img
$(Q)rm $(BUILD)/circuitpython-disk.img $(Q)rm $(BUILD)/circuitpython-disk.img

@ -2,3 +2,5 @@
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) #define DEFAULT_I2C_BUS_SDA (&pin_GPIO2)
#define MICROPY_HW_LED_STATUS (&pin_GPIO42)

@ -57,6 +57,8 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) }, { MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO42) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}, { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)},
}; };

@ -2,3 +2,5 @@
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) #define DEFAULT_I2C_BUS_SDA (&pin_GPIO2)
#define MICROPY_HW_LED_STATUS (&pin_GPIO42)

@ -3,4 +3,4 @@ USB_PID = 0xF001
USB_PRODUCT = "Raspberry Pi 4B" USB_PRODUCT = "Raspberry Pi 4B"
USB_MANUFACTURER = "Raspberry Pi" USB_MANUFACTURER = "Raspberry Pi"
CHIP_VARIANT = bcm2711 CHIP_VARIANT = "bcm2711"

@ -57,6 +57,8 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) }, { MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO42) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}, { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)},
}; };

@ -3,4 +3,4 @@ USB_PID = 0xF002
USB_PRODUCT = "Raspberry Pi Zero 2W" USB_PRODUCT = "Raspberry Pi Zero 2W"
USB_MANUFACTURER = "Raspberry Pi" USB_MANUFACTURER = "Raspberry Pi"
CHIP_VARIANT = rp3a0 CHIP_VARIANT = "bcm2837"

@ -0,0 +1,34 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#pragma once
#include "py/obj.h"
extern const mp_obj_type_t mcu_pin_type;
#define PIN_PREFIX_VALUES { &mcu_pin_type },
#define PIN_PREFIX_FIELDS mp_obj_base_t base;

@ -35,35 +35,64 @@
#include "peripherals/broadcom/cpu.h" #include "peripherals/broadcom/cpu.h"
#include "peripherals/broadcom/vcmailbox.h" #include "peripherals/broadcom/vcmailbox.h"
#define NUM_I2C (2) #if BCM_VERSION == 2711
#define NUM_I2C (8)
STATIC BSC0_Type *i2c[NUM_I2C] = {BSC0, BSC1, NULL, BSC3, BSC4, BSC5, BSC6, NULL};
#else
#define NUM_I2C (3)
STATIC BSC0_Type *i2c[NUM_I2C] = {BSC0, BSC1, NULL};
#endif
STATIC bool never_reset_i2c[NUM_I2C]; STATIC bool never_reset_i2c[NUM_I2C];
STATIC bool in_use_i2c[NUM_I2C]; STATIC bool i2c_in_use[NUM_I2C];
STATIC BSC0_Type *i2c[2] = {BSC0, BSC1};
void reset_i2c(void) { void reset_i2c(void) {
for (size_t i = 0; i < 2; i++) { // BSC2 is dedicated to the first HDMI output.
never_reset_i2c[2] = true;
i2c_in_use[2] = true;
#if BCM_VERSION == 2711
// BSC7 is dedicated to the second HDMI output.
never_reset_i2c[7] = true;
i2c_in_use[7] = true;
#endif
for (size_t i = 0; i < NUM_I2C; i++) {
if (never_reset_i2c[i]) { if (never_reset_i2c[i]) {
continue; continue;
} }
in_use_i2c[i] = false; i2c_in_use[i] = false;
i2c[i]->C_b.I2CEN = false;
COMPLETE_MEMORY_READS;
} }
} }
void common_hal_busio_i2c_construct(busio_i2c_obj_t *self, void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
const mcu_pin_obj_t *scl, const mcu_pin_obj_t *sda, uint32_t frequency, uint32_t timeout) { const mcu_pin_obj_t *scl, const mcu_pin_obj_t *sda, uint32_t frequency, uint32_t timeout) {
size_t instance_index = NUM_I2C; size_t instance_index = NUM_I2C;
if ((scl == &pin_GPIO1 || scl == &pin_GPIO29 || scl == &pin_GPIO45) && uint8_t scl_alt = 0;
(sda == &pin_GPIO0 || sda == &pin_GPIO28 || sda == &pin_GPIO44)) { uint8_t sda_alt = 0;
instance_index = 0; for (scl_alt = 0; scl_alt < 6; scl_alt++) {
} else if ((scl == &pin_GPIO44 || scl == &pin_GPIO3) && if (scl->functions[scl_alt].type != PIN_FUNCTION_I2C ||
(sda == &pin_GPIO43 || sda == &pin_GPIO2)) { i2c_in_use[scl->functions[scl_alt].index] ||
instance_index = 1; scl->functions[scl_alt].function != I2C_FUNCTION_SCL) {
continue;
}
for (sda_alt = 0; sda_alt < 6; sda_alt++) {
if (sda->functions[sda_alt].type != PIN_FUNCTION_I2C ||
scl->functions[scl_alt].index != sda->functions[sda_alt].index ||
sda->functions[sda_alt].function != I2C_FUNCTION_SDA) {
continue;
}
instance_index = scl->functions[scl_alt].index;
break;
}
if (instance_index != NUM_I2C) {
break;
}
} }
if (instance_index == NUM_I2C) { if (instance_index == NUM_I2C) {
mp_raise_ValueError(translate("Invalid pins")); mp_raise_ValueError(translate("Invalid pins"));
} }
in_use_i2c[instance_index] = true; i2c_in_use[instance_index] = true;
self->index = instance_index; self->index = instance_index;
self->peripheral = i2c[self->index]; self->peripheral = i2c[self->index];
self->sda_pin = sda; self->sda_pin = sda;
@ -73,8 +102,8 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
uint16_t clock_divider = source_clock / frequency; uint16_t clock_divider = source_clock / frequency;
self->peripheral->DIV_b.CDIV = clock_divider; self->peripheral->DIV_b.CDIV = clock_divider;
gpio_set_function(sda->number, GPIO_GPFSEL0_FSEL2_SDA1); gpio_set_function(sda->number, FSEL_VALUES[sda_alt]);
gpio_set_function(scl->number, GPIO_GPFSEL0_FSEL3_SCL1); gpio_set_function(scl->number, FSEL_VALUES[scl_alt]);
} }
bool common_hal_busio_i2c_deinited(busio_i2c_obj_t *self) { bool common_hal_busio_i2c_deinited(busio_i2c_obj_t *self) {
@ -86,6 +115,7 @@ void common_hal_busio_i2c_deinit(busio_i2c_obj_t *self) {
return; return;
} }
never_reset_i2c[self->index] = false; never_reset_i2c[self->index] = false;
i2c_in_use[self->index] = false;
common_hal_reset_pin(self->sda_pin); common_hal_reset_pin(self->sda_pin);
common_hal_reset_pin(self->scl_pin); common_hal_reset_pin(self->scl_pin);
@ -95,7 +125,6 @@ void common_hal_busio_i2c_deinit(busio_i2c_obj_t *self) {
bool common_hal_busio_i2c_probe(busio_i2c_obj_t *self, uint8_t addr) { bool common_hal_busio_i2c_probe(busio_i2c_obj_t *self, uint8_t addr) {
uint8_t result = common_hal_busio_i2c_write(self, addr, NULL, 0, true); uint8_t result = common_hal_busio_i2c_write(self, addr, NULL, 0, true);
// mp_printf(&mp_plat_print, "result %d %d\n", addr, result);
return result == 0; return result == 0;
} }

@ -41,7 +41,14 @@
#define NO_PIN 0xff #define NO_PIN 0xff
#define UART_INST(uart) (((uart) ? uart1 : uart0)) // UART1 is a different peripheral than the rest so it is hardcoded below.
#if BCM_VERSION == 2711
#define NUM_UART (6)
STATIC ARM_UART_PL011_Type *uart[NUM_UART] = {UART0, NULL, UART2, UART3, UART4, UART5};
#else
#define NUM_UART (2)
STATIC ARM_UART_PL011_Type *uart[NUM_UART] = {UART0, NULL};
#endif
typedef enum { typedef enum {
STATUS_FREE = 0, STATUS_FREE = 0,
@ -49,29 +56,62 @@ typedef enum {
STATUS_NEVER_RESET STATUS_NEVER_RESET
} uart_status_t; } uart_status_t;
// The Broadcom chips have two different types of UARTs. UART1 is the "mini-UART" static uart_status_t uart_status[NUM_UART];
// that is most available so we've implemented it first. The ARM PL011 UART static busio_uart_obj_t *active_uart[NUM_UART];
// support will be added later. We set NUM_UARTS to 2 here so that we can match
// the indexing even though UART0 isn't supported yet. We currently use this
// UART for debugging so we don't support user use of UART yet.
#define NUM_UARTS 2
static uart_status_t uart_status[NUM_UARTS];
void reset_uart(void) { void reset_uart(void) {
for (uint8_t num = 0; num < NUM_UARTS; num++) { bool any_pl011_active = false;
for (uint8_t num = 0; num < NUM_UART; num++) {
if (uart_status[num] == STATUS_BUSY) { if (uart_status[num] == STATUS_BUSY) {
if (num == 1) {
UART1->IER_b.DATA_READY = false;
UART1->CNTL = 0;
COMPLETE_MEMORY_READS;
AUX->ENABLES_b.UART_1 = false;
} else {
ARM_UART_PL011_Type *pl011 = uart[num];
pl011->CR = 0;
}
active_uart[num] = NULL;
uart_status[num] = STATUS_FREE; uart_status[num] = STATUS_FREE;
} else {
any_pl011_active = any_pl011_active || (num != 1 && uart_status[num] == STATUS_NEVER_RESET);
}
}
if (!any_pl011_active) {
BP_DisableIRQ(UART_IRQn);
}
COMPLETE_MEMORY_READS;
if (AUX->ENABLES == 0) {
BP_DisableIRQ(AUX_IRQn);
}
}
STATIC void fetch_all_from_fifo(busio_uart_obj_t *self) {
if (self->uart_id == 1) {
while (UART1->STAT_b.DATA_READY && ringbuf_num_empty(&self->ringbuf) > 0) {
int c = UART1->IO_b.DATA;
if (self->sigint_enabled && c == mp_interrupt_char) {
mp_sched_keyboard_interrupt();
continue;
}
ringbuf_put(&self->ringbuf, c);
}
} else {
ARM_UART_PL011_Type *pl011 = uart[self->uart_id];
while (!pl011->FR_b.RXFE && ringbuf_num_empty(&self->ringbuf) > 0) {
int c = pl011->DR_b.DATA;
if (self->sigint_enabled && c == mp_interrupt_char) {
mp_sched_keyboard_interrupt();
continue;
}
ringbuf_put(&self->ringbuf, c);
} }
} }
} }
static busio_uart_obj_t *active_uarts[NUM_UARTS];
void UART1_IRQHandler(void) { void UART1_IRQHandler(void) {
while (UART1->STAT_b.DATA_READY && ringbuf_num_empty(&active_uarts[1]->ringbuf) > 0) { fetch_all_from_fifo(active_uart[1]);
ringbuf_put(&active_uarts[1]->ringbuf, (uint8_t)UART1->IO_b.DATA);
}
// We couldn't read all pending data (overrun) so clear the FIFO so that the interrupt // We couldn't read all pending data (overrun) so clear the FIFO so that the interrupt
// can finish. // can finish.
if (UART1->STAT_b.DATA_READY) { if (UART1->STAT_b.DATA_READY) {
@ -79,6 +119,33 @@ void UART1_IRQHandler(void) {
} }
} }
void pl011_IRQHandler(uint8_t index) {
fetch_all_from_fifo(active_uart[index]);
// Clear the interrupt in case we weren't able to clear it by emptying the
// FIFO. (This won't clear the FIFO.)
ARM_UART_PL011_Type *pl011 = uart[index];
pl011->ICR = UART0_ICR_RXIC_Msk;
}
void UART0_IRQHandler(void) {
pl011_IRQHandler(0);
}
#if BCM_VERSION == 2711
void UART2_IRQHandler(void) {
pl011_IRQHandler(2);
}
void UART3_IRQHandler(void) {
pl011_IRQHandler(3);
}
void UART4_IRQHandler(void) {
pl011_IRQHandler(4);
}
void UART5_IRQHandler(void) {
pl011_IRQHandler(5);
}
#endif
void common_hal_busio_uart_never_reset(busio_uart_obj_t *self) { void common_hal_busio_uart_never_reset(busio_uart_obj_t *self) {
uart_status[self->uart_id] = STATUS_NEVER_RESET; uart_status[self->uart_id] = STATUS_NEVER_RESET;
} }
@ -103,14 +170,43 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
mp_raise_NotImplementedError(translate("RS485 Not yet supported on this device")); mp_raise_NotImplementedError(translate("RS485 Not yet supported on this device"));
} }
if (tx == &pin_GPIO14) { size_t instance_index = NUM_UART;
if (rx == &pin_GPIO15) { BP_Function_Enum tx_alt = 0;
self->uart_id = 1; BP_Function_Enum rx_alt = 0;
BP_Function_Enum rts_alt = 0;
BP_Function_Enum cts_alt = 0;
for (size_t i = 0; i < NUM_UART; i++) {
if (uart_status[i] != STATUS_FREE) {
continue;
} }
if (tx != NULL) {
if (!pin_find_alt(tx, PIN_FUNCTION_UART, i, UART_FUNCTION_TXD, &tx_alt)) {
continue;
}
if (rts != NULL && !pin_find_alt(rts, PIN_FUNCTION_UART, i, UART_FUNCTION_RTS, &rts_alt)) {
continue;
}
}
if (rx != NULL) {
if (!pin_find_alt(rx, PIN_FUNCTION_UART, i, UART_FUNCTION_RXD, &rx_alt)) {
continue;
}
if (cts != NULL && !pin_find_alt(cts, PIN_FUNCTION_UART, i, UART_FUNCTION_CTS, &cts_alt)) {
continue;
}
}
instance_index = i;
break;
}
if (instance_index == NUM_UART) {
mp_raise_ValueError(translate("Invalid pins"));
} }
self->rx_pin = rx; self->rx_pin = rx;
self->tx_pin = tx; self->tx_pin = tx;
self->rts_pin = rts;
self->cts_pin = cts;
self->sigint_enabled = sigint_enabled;
if (rx != NULL) { if (rx != NULL) {
if (receiver_buffer != NULL) { if (receiver_buffer != NULL) {
@ -129,8 +225,11 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
} }
} }
active_uart[self->uart_id] = self;
ARM_UART_PL011_Type *pl011 = uart[self->uart_id];
if (self->uart_id == 1) { if (self->uart_id == 1) {
active_uarts[1] = self;
AUX->ENABLES_b.UART_1 = true; AUX->ENABLES_b.UART_1 = true;
UART1->IER = 0; UART1->IER = 0;
@ -145,22 +244,80 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
// Clear interrupts // Clear interrupts
UART1->IIR = 0xff; UART1->IIR = 0xff;
uint32_t source_clock = vcmailbox_get_clock_rate_measured(VCMAILBOX_CLOCK_CORE); common_hal_busio_uart_set_baudrate(self, baudrate);
UART1->BAUD = ((source_clock / (baudrate * 8)) - 1);
if (tx != NULL) { if (tx != NULL) {
UART1->CNTL |= UART1_CNTL_TX_ENABLE_Msk; UART1->CNTL |= UART1_CNTL_TX_ENABLE_Msk;
gpio_set_pull(14, BP_PULL_NONE);
gpio_set_function(14, GPIO_GPFSEL1_FSEL14_TXD1);
} }
if (rx != NULL) { if (rx != NULL) {
UART1->CNTL |= UART1_CNTL_RX_ENABLE_Msk; UART1->CNTL |= UART1_CNTL_RX_ENABLE_Msk;
gpio_set_pull(15, BP_PULL_NONE);
gpio_set_function(15, GPIO_GPFSEL1_FSEL15_RXD1);
} }
} else {
// Ensure the UART is disabled as we configure it.
pl011->CR_b.UARTEN = false;
pl011->IMSC = 0;
pl011->ICR = 0x3ff;
common_hal_busio_uart_set_baudrate(self, baudrate);
uint32_t line_control = UART0_LCR_H_FEN_Msk;
line_control |= (bits - 5) << UART0_LCR_H_WLEN_Pos;
if (stop == 2) {
line_control |= UART0_LCR_H_STP2_Msk;
}
if (parity != BUSIO_UART_PARITY_NONE) {
line_control |= UART0_LCR_H_PEN_Msk;
}
if (parity == BUSIO_UART_PARITY_EVEN) {
line_control |= UART0_LCR_H_EPS_Msk;
}
pl011->LCR_H = line_control;
uint32_t control = UART0_CR_UARTEN_Msk;
if (tx != NULL) {
control |= UART0_CR_TXE_Msk;
}
if (rx != NULL) {
control |= UART0_CR_RXE_Msk;
}
if (cts != NULL) {
control |= UART0_CR_CTSEN_Msk;
}
if (rts != NULL) {
control |= UART0_CR_RTSEN_Msk;
}
pl011->CR = control;
}
// Setup the pins after waiting for UART stuff
COMPLETE_MEMORY_READS;
if (tx != NULL) {
gpio_set_pull(tx->number, BP_PULL_NONE);
gpio_set_function(tx->number, tx_alt);
}
if (rx != NULL) {
gpio_set_pull(rx->number, BP_PULL_NONE);
gpio_set_function(rx->number, rx_alt);
}
if (rts != NULL) {
gpio_set_pull(rts->number, BP_PULL_NONE);
gpio_set_function(rts->number, rts_alt);
}
if (cts != NULL) {
gpio_set_pull(cts->number, BP_PULL_NONE);
gpio_set_function(cts->number, cts_alt);
}
// Turn on interrupts
COMPLETE_MEMORY_READS;
if (self->uart_id == 1) {
UART1->IER_b.DATA_READY = true; UART1->IER_b.DATA_READY = true;
// Never disable this in case the SPIs are used. They can each be // Never disable this in case the SPIs are used. They can each be
// disabled at the peripheral itself. // disabled at the peripheral itself.
BP_EnableIRQ(AUX_IRQn); BP_EnableIRQ(AUX_IRQn);
} else {
pl011->IMSC_b.RXIM = true;
// Never disable this in case the other PL011 UARTs are used.
BP_EnableIRQ(UART_IRQn);
} }
} }
@ -176,8 +333,11 @@ void common_hal_busio_uart_deinit(busio_uart_obj_t *self) {
UART1->IER_b.DATA_READY = false; UART1->IER_b.DATA_READY = false;
UART1->CNTL = 0; UART1->CNTL = 0;
AUX->ENABLES_b.UART_1 = false; AUX->ENABLES_b.UART_1 = false;
active_uarts[1] = NULL; } else {
ARM_UART_PL011_Type *pl011 = uart[self->uart_id];
pl011->CR = 0;
} }
active_uart[self->uart_id] = NULL;
ringbuf_free(&self->ringbuf); ringbuf_free(&self->ringbuf);
uart_status[self->uart_id] = STATUS_FREE; uart_status[self->uart_id] = STATUS_FREE;
common_hal_reset_pin(self->tx_pin); common_hal_reset_pin(self->tx_pin);
@ -196,20 +356,46 @@ size_t common_hal_busio_uart_write(busio_uart_obj_t *self, const uint8_t *data,
mp_raise_ValueError(translate("No TX pin")); mp_raise_ValueError(translate("No TX pin"));
} }
if (self->uart_id == 1) { COMPLETE_MEMORY_READS;
COMPLETE_MEMORY_READS; ARM_UART_PL011_Type *pl011 = uart[self->uart_id];
for (size_t i = 0; i < len; i++) { for (size_t i = 0; i < len; i++) {
if (self->uart_id == 1) {
// Wait for the FIFO to have space. // Wait for the FIFO to have space.
while (!UART1->STAT_b.TX_READY) { while (!UART1->STAT_b.TX_READY) {
RUN_BACKGROUND_TASKS; RUN_BACKGROUND_TASKS;
} }
UART1->IO = data[i]; UART1->IO = data[i];
} else {
while (pl011->FR_b.TXFF) {
RUN_BACKGROUND_TASKS;
}
pl011->DR_b.DATA = data[i];
} }
COMPLETE_MEMORY_READS;
return len;
} }
// Wait for the data to be shifted out
if (self->uart_id == 1) {
while (!UART1->STAT_b.TX_DONE) {
RUN_BACKGROUND_TASKS;
}
} else {
while (pl011->FR_b.BUSY) {
RUN_BACKGROUND_TASKS;
}
}
COMPLETE_MEMORY_READS;
return len;
}
return 0; STATIC void disable_interrupt(busio_uart_obj_t *self) {
if (self->uart_id == 1) {
UART1->IER_b.DATA_READY = false;
}
}
STATIC void enable_interrupt(busio_uart_obj_t *self) {
if (self->uart_id == 1) {
UART1->IER_b.DATA_READY = true;
}
} }
// Read characters. // Read characters.
@ -225,9 +411,7 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
COMPLETE_MEMORY_READS; COMPLETE_MEMORY_READS;
// Prevent conflict with uart irq. // Prevent conflict with uart irq.
if (self->uart_id == 1) { disable_interrupt(self);
UART1->IER_b.DATA_READY = false;
}
// Copy as much received data as available, up to len bytes. // Copy as much received data as available, up to len bytes.
size_t total_read = ringbuf_get_n(&self->ringbuf, data, len); size_t total_read = ringbuf_get_n(&self->ringbuf, data, len);
@ -238,14 +422,11 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
uint64_t start_ticks = supervisor_ticks_ms64(); uint64_t start_ticks = supervisor_ticks_ms64();
// Busy-wait until timeout or until we've read enough chars. // Busy-wait until timeout or until we've read enough chars.
while (len > 0 && (supervisor_ticks_ms64() - start_ticks < self->timeout_ms)) { while (len > 0 && (supervisor_ticks_ms64() - start_ticks < self->timeout_ms)) {
if (UART1->STAT_b.DATA_READY) { fetch_all_from_fifo(self);
// Read and advance. size_t additional_read = ringbuf_get_n(&self->ringbuf, data + total_read, len);
data[total_read] = UART1->IO_b.DATA; len -= additional_read;
total_read += additional_read;
// Adjust the counters. if (additional_read > 0) {
len--;
total_read++;
// Reset the timeout on every character read. // Reset the timeout on every character read.
start_ticks = supervisor_ticks_ms64(); start_ticks = supervisor_ticks_ms64();
} }
@ -260,14 +441,10 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
// Now that we've emptied the ringbuf some, fill it up with anything in the // Now that we've emptied the ringbuf some, fill it up with anything in the
// FIFO. This ensures that we'll empty the FIFO as much as possible and // FIFO. This ensures that we'll empty the FIFO as much as possible and
// reset the interrupt when we catch up. // reset the interrupt when we catch up.
while (UART1->STAT_b.DATA_READY && ringbuf_num_empty(&self->ringbuf) > 0) { fetch_all_from_fifo(self);
ringbuf_put(&self->ringbuf, (uint8_t)UART1->IO_b.DATA);
}
// Re-enable irq. // Re-enable irq.
if (self->uart_id == 1) { enable_interrupt(self);
UART1->IER_b.DATA_READY = true;
}
COMPLETE_MEMORY_READS; COMPLETE_MEMORY_READS;
if (total_read == 0) { if (total_read == 0) {
@ -283,6 +460,31 @@ uint32_t common_hal_busio_uart_get_baudrate(busio_uart_obj_t *self) {
} }
void common_hal_busio_uart_set_baudrate(busio_uart_obj_t *self, uint32_t baudrate) { void common_hal_busio_uart_set_baudrate(busio_uart_obj_t *self, uint32_t baudrate) {
if (self->uart_id == 1) {
uint32_t source_clock = vcmailbox_get_clock_rate_measured(VCMAILBOX_CLOCK_CORE);
UART1->BAUD = ((source_clock / (baudrate * 8)) - 1);
} else {
ARM_UART_PL011_Type *pl011 = uart[self->uart_id];
bool reenable = false;
if (pl011->CR_b.UARTEN) {
pl011->CR_b.UARTEN = false;
reenable = true;
}
uint32_t source_clock = vcmailbox_get_clock_rate_measured(VCMAILBOX_CLOCK_UART);
uint32_t divisor = 16 * baudrate;
pl011->IBRD = source_clock / divisor;
// The fractional divisor is 64ths.
uint32_t remainder = source_clock % divisor;
uint32_t per_tick = (divisor / 64) + 1;
uint32_t adjust = 0;
if (remainder % per_tick > 0) {
adjust = 1;
}
pl011->FBRD = remainder / per_tick + adjust;
if (reenable) {
pl011->CR_b.UARTEN = true;
}
}
self->baudrate = baudrate; self->baudrate = baudrate;
} }
@ -295,6 +497,7 @@ void common_hal_busio_uart_set_timeout(busio_uart_obj_t *self, mp_float_t timeou
} }
uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) { uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) {
fetch_all_from_fifo(self);
return ringbuf_num_filled(&self->ringbuf); return ringbuf_num_filled(&self->ringbuf);
} }
@ -309,5 +512,5 @@ bool common_hal_busio_uart_ready_to_tx(busio_uart_obj_t *self) {
if (self->uart_id == 1) { if (self->uart_id == 1) {
return UART1->STAT_b.TX_READY; return UART1->STAT_b.TX_READY;
} }
return false; return !uart[self->uart_id]->FR_b.TXFF;
} }

@ -39,6 +39,7 @@ typedef struct {
uint8_t uart_id; uint8_t uart_id;
uint32_t baudrate; uint32_t baudrate;
uint32_t timeout_ms; uint32_t timeout_ms;
bool sigint_enabled;
ringbuf_t ringbuf; ringbuf_t ringbuf;
} busio_uart_obj_t; } busio_uart_obj_t;

@ -28,14 +28,41 @@
#include "peripherals/broadcom/gpio.h" #include "peripherals/broadcom/gpio.h"
STATIC bool pin_in_use[BCM_PIN_COUNT];
STATIC bool never_reset_pin[BCM_PIN_COUNT];
void reset_all_pins(void) { void reset_all_pins(void) {
for (size_t i = 0; i < BCM_PIN_COUNT; i++) {
if (never_reset_pin[i]) {
continue;
}
reset_pin_number(i);
}
} }
void never_reset_pin_number(uint8_t pin_number) { void never_reset_pin_number(uint8_t pin_number) {
never_reset_pin[pin_number] = true;
} }
void reset_pin_number(uint8_t pin_number) { void reset_pin_number(uint8_t pin_number) {
gpio_set_function(pin_number, 0); gpio_set_function(pin_number, GPIO_FUNCTION_INPUT);
pin_in_use[pin_number] = false;
never_reset_pin[pin_number] = false;
// Set the pull to match the datasheet.
BP_PULL_Enum pull = BP_PULL_NONE;
if (pin_number < 9 ||
(33 < pin_number && pin_number < 37) ||
pin_number > 45) {
pull = BP_PULL_UP;
} else if (pin_number != 28 &&
pin_number != 29 &&
pin_number != 44 &&
pin_number != 45) {
// Most pins are pulled low so we only exclude the four pins that aren't
// pulled at all.
pull = BP_PULL_DOWN;
}
gpio_set_pull(pin_number, pull);
} }
void common_hal_never_reset_pin(const mcu_pin_obj_t *pin) { void common_hal_never_reset_pin(const mcu_pin_obj_t *pin) {
@ -47,11 +74,11 @@ void common_hal_reset_pin(const mcu_pin_obj_t *pin) {
} }
void claim_pin(const mcu_pin_obj_t *pin) { void claim_pin(const mcu_pin_obj_t *pin) {
// Nothing to do because all changes will set the GPIO settings. pin_in_use[pin->number] = true;
} }
bool pin_number_is_free(uint8_t pin_number) { bool pin_number_is_free(uint8_t pin_number) {
return true; return !pin_in_use[pin_number];
} }
bool common_hal_mcu_pin_is_free(const mcu_pin_obj_t *pin) { bool common_hal_mcu_pin_is_free(const mcu_pin_obj_t *pin) {
@ -69,71 +96,3 @@ void common_hal_mcu_pin_claim(const mcu_pin_obj_t *pin) {
void common_hal_mcu_pin_reset_number(uint8_t pin_no) { void common_hal_mcu_pin_reset_number(uint8_t pin_no) {
reset_pin_number(pin_no); reset_pin_number(pin_no);
} }
#define PIN(num) \
const mcu_pin_obj_t pin_GPIO##num = { \
{ &mcu_pin_type }, \
.number = num \
};
PIN(0)
PIN(1)
PIN(2)
PIN(3)
PIN(4)
PIN(5)
PIN(6)
PIN(7)
PIN(8)
PIN(9)
PIN(10)
PIN(11)
PIN(12)
PIN(13)
PIN(14)
PIN(15)
PIN(16)
PIN(17)
PIN(18)
PIN(19)
PIN(20)
PIN(21)
PIN(22)
PIN(23)
PIN(24)
PIN(25)
PIN(26)
PIN(27)
PIN(28)
PIN(29)
PIN(30)
PIN(31)
PIN(32)
PIN(33)
PIN(34)
PIN(35)
PIN(36)
PIN(37)
PIN(38)
PIN(39)
PIN(40)
PIN(41)
PIN(42)
PIN(43)
PIN(44)
PIN(45)
PIN(46)
PIN(47)
PIN(48)
PIN(49)
PIN(50)
PIN(51)
PIN(52)
PIN(53)
PIN(54)
PIN(55)
PIN(56)
PIN(57)

@ -32,74 +32,7 @@
#include <py/obj.h> #include <py/obj.h>
typedef struct { #include "peripherals/broadcom/pins.h"
mp_obj_base_t base;
uint8_t number;
} mcu_pin_obj_t;
extern const mcu_pin_obj_t pin_GPIO0;
extern const mcu_pin_obj_t pin_GPIO1;
extern const mcu_pin_obj_t pin_GPIO2;
extern const mcu_pin_obj_t pin_GPIO3;
extern const mcu_pin_obj_t pin_GPIO4;
extern const mcu_pin_obj_t pin_GPIO5;
extern const mcu_pin_obj_t pin_GPIO6;
extern const mcu_pin_obj_t pin_GPIO7;
extern const mcu_pin_obj_t pin_GPIO8;
extern const mcu_pin_obj_t pin_GPIO9;
extern const mcu_pin_obj_t pin_GPIO10;
extern const mcu_pin_obj_t pin_GPIO11;
extern const mcu_pin_obj_t pin_GPIO12;
extern const mcu_pin_obj_t pin_GPIO13;
extern const mcu_pin_obj_t pin_GPIO14;
extern const mcu_pin_obj_t pin_GPIO15;
extern const mcu_pin_obj_t pin_GPIO16;
extern const mcu_pin_obj_t pin_GPIO17;
extern const mcu_pin_obj_t pin_GPIO18;
extern const mcu_pin_obj_t pin_GPIO19;
extern const mcu_pin_obj_t pin_GPIO20;
extern const mcu_pin_obj_t pin_GPIO21;
extern const mcu_pin_obj_t pin_GPIO22;
extern const mcu_pin_obj_t pin_GPIO23;
extern const mcu_pin_obj_t pin_GPIO24;
extern const mcu_pin_obj_t pin_GPIO25;
extern const mcu_pin_obj_t pin_GPIO26;
extern const mcu_pin_obj_t pin_GPIO27;
extern const mcu_pin_obj_t pin_GPIO28;
extern const mcu_pin_obj_t pin_GPIO29;
extern const mcu_pin_obj_t pin_GPIO30;
extern const mcu_pin_obj_t pin_GPIO31;
extern const mcu_pin_obj_t pin_GPIO32;
extern const mcu_pin_obj_t pin_GPIO33;
extern const mcu_pin_obj_t pin_GPIO34;
extern const mcu_pin_obj_t pin_GPIO35;
extern const mcu_pin_obj_t pin_GPIO36;
extern const mcu_pin_obj_t pin_GPIO37;
extern const mcu_pin_obj_t pin_GPIO38;
extern const mcu_pin_obj_t pin_GPIO39;
extern const mcu_pin_obj_t pin_GPIO40;
extern const mcu_pin_obj_t pin_GPIO41;
extern const mcu_pin_obj_t pin_GPIO42;
extern const mcu_pin_obj_t pin_GPIO43;
extern const mcu_pin_obj_t pin_GPIO44;
extern const mcu_pin_obj_t pin_GPIO45;
extern const mcu_pin_obj_t pin_GPIO46;
extern const mcu_pin_obj_t pin_GPIO47;
extern const mcu_pin_obj_t pin_GPIO48;
extern const mcu_pin_obj_t pin_GPIO49;
extern const mcu_pin_obj_t pin_GPIO50;
extern const mcu_pin_obj_t pin_GPIO51;
extern const mcu_pin_obj_t pin_GPIO52;
extern const mcu_pin_obj_t pin_GPIO53;
extern const mcu_pin_obj_t pin_GPIO54;
extern const mcu_pin_obj_t pin_GPIO55;
extern const mcu_pin_obj_t pin_GPIO56;
extern const mcu_pin_obj_t pin_GPIO57;
void reset_all_pins(void); void reset_all_pins(void);
// reset_pin_number takes the pin number instead of the pointer so that objects don't // reset_pin_number takes the pin number instead of the pointer so that objects don't

@ -187,9 +187,11 @@ const mp_rom_map_elem_t mcu_pin_global_dict_table[TOTAL_GPIO_COUNT] = {
PIN(51) PIN(51)
PIN(52) PIN(52)
PIN(53) PIN(53)
#if BCM_VERSION == 2711
PIN(54) PIN(54)
PIN(55) PIN(55)
PIN(56) PIN(56)
PIN(57) PIN(57)
#endif
}; };
MP_DEFINE_CONST_DICT(mcu_pin_globals, mcu_pin_global_dict_table); MP_DEFINE_CONST_DICT(mcu_pin_globals, mcu_pin_global_dict_table);

@ -1 +1 @@
Subproject commit 6a5207946edcd45813d1dd1572ca8bd8101b68b6 Subproject commit bf96d0eda5952595d717fedb797aeb168483e9fa

@ -1 +1 @@
Subproject commit 8057af2d614c27a1e103d5f4300428f341da6bcb Subproject commit c236f5a5ff93b50b8b948c904715e89f6d4fafe8

@ -59,76 +59,81 @@ include $(TOP)/supervisor/supervisor.mk
# Include make rules and variables common across CircuitPython builds. # Include make rules and variables common across CircuitPython builds.
include $(TOP)/py/circuitpy_defns.mk include $(TOP)/py/circuitpy_defns.mk
ifeq ($(IDF_TARGET),esp32s2) ifeq ($(IDF_TARGET),esp32c3)
IDF_TARGET_ARCH = xtensa
CROSS_COMPILE = xtensa-$(IDF_TARGET)-elf-
else ifeq ($(IDF_TARGET),esp32c3)
IDF_TARGET_ARCH = riscv IDF_TARGET_ARCH = riscv
CROSS_COMPILE = riscv32-esp-elf- CROSS_COMPILE = riscv32-esp-elf-
else
IDF_TARGET_ARCH = xtensa
CROSS_COMPILE = xtensa-$(IDF_TARGET)-elf-
endif endif
####################################### #######################################
# CFLAGS # CFLAGS
####################################### #######################################
INC += -I.\ INC += \
-I./boards \ -I.\
-I./boards/$(BOARD) \ -I./boards \
-I./peripherals \ -I./boards/$(BOARD) \
-I../.. \ -I./peripherals \
-I../../lib/mp-readline \ -I../.. \
-I../../lib/tinyusb/src \ -I../../lib/mp-readline \
-I../../supervisor/shared/usb \ -I../../lib/tinyusb/src \
-I$(BUILD) \ -I../../supervisor/shared/usb \
-I$(BUILD)/genhdr \ -I$(BUILD) \
-I$(BUILD)/esp-idf/config \ -I$(BUILD)/genhdr \
-isystem esp-idf \ -I$(BUILD)/esp-idf/config \
-isystem esp-idf/components/app_update/include \ -isystem esp-idf \
-isystem esp-idf/components/bootloader_support/include \ -isystem esp-idf/components/app_update/include \
-isystem esp-idf/components/driver/include \ -isystem esp-idf/components/bootloader_support/include \
-isystem esp-idf/components/driver/$(IDF_TARGET)/include \ -isystem esp-idf/components/driver/include \
-isystem esp-idf/components/$(IDF_TARGET)/include \ -isystem esp-idf/components/driver/$(IDF_TARGET)/include \
-isystem esp-idf/components/esp_adc_cal/include \ -isystem esp-idf/components/$(IDF_TARGET)/include \
-isystem esp-idf/components/esp_common/include \ -isystem esp-idf/components/esp_adc_cal/include \
-isystem esp-idf/components/esp_event/include \ -isystem esp-idf/components/esp_common/include \
-isystem esp-idf/components/esp_hw_support/include \ -isystem esp-idf/components/esp_event/include \
-isystem esp-idf/components/esp_netif/include \ -isystem esp-idf/components/esp_hw_support/include \
-isystem esp-idf/components/esp_pm/include \ -isystem esp-idf/components/esp_hw_support/include/soc \
-isystem esp-idf/components/esp_ringbuf/include \ -isystem esp-idf/components/esp_netif/include \
-isystem esp-idf/components/esp_rom/include \ -isystem esp-idf/components/esp_pm/include \
-isystem esp-idf/components/esp_system/include \ -isystem esp-idf/components/esp_ringbuf/include \
-isystem esp-idf/components/esp_timer/include \ -isystem esp-idf/components/esp_rom/include \
-isystem esp-idf/components/esp_wifi/include \ -isystem esp-idf/components/esp_system/include \
-isystem esp-idf/components/freertos/include \ -isystem esp-idf/components/esp_timer/include \
-isystem esp-idf/components/freertos/include/freertos \ -isystem esp-idf/components/esp_wifi/include \
-isystem esp-idf/components/freertos/port/$(IDF_TARGET_ARCH)/include \ -isystem esp-idf/components/freertos/include \
-isystem esp-idf/components/hal/include \ -isystem esp-idf/components/freertos/include/freertos \
-isystem esp-idf/components/hal/$(IDF_TARGET)/include \ -isystem esp-idf/components/freertos/include/esp_additions \
-isystem esp-idf/components/hal/platform_port/include \ -isystem esp-idf/components/freertos/include/esp_additions/freertos \
-isystem esp-idf/components/heap/include \ -isystem esp-idf/components/freertos/port/$(IDF_TARGET_ARCH)/include \
-isystem esp-idf/components/log/include \ -isystem esp-idf/components/hal/include \
-isystem esp-idf/components/lwip/include \ -isystem esp-idf/components/hal/$(IDF_TARGET)/include \
-isystem esp-idf/components/lwip/lwip/src/include \ -isystem esp-idf/components/hal/platform_port/include \
-isystem esp-idf/components/lwip/port/esp32/include \ -isystem esp-idf/components/heap/include \
-isystem esp-idf/components/mbedtls/esp_crt_bundle/include \ -isystem esp-idf/components/log/include \
-isystem esp-idf/components/mbedtls/mbedtls/include \ -isystem esp-idf/components/lwip/include \
-isystem esp-idf/components/mbedtls/port/include \ -isystem esp-idf/components/lwip/lwip/src/include \
-isystem esp-idf/components/newlib/platform_include \ -isystem esp-idf/components/lwip/port/esp32/include \
-isystem esp-idf/components/nvs_flash/include \ -isystem esp-idf/components/mbedtls/esp_crt_bundle/include \
-isystem esp-idf/components/soc/include \ -isystem esp-idf/components/mbedtls/mbedtls/include \
-isystem esp-idf/components/soc/$(IDF_TARGET)/include \ -isystem esp-idf/components/mbedtls/port/include \
-isystem esp-idf/components/spi_flash/include \ -isystem esp-idf/components/newlib/platform_include \
-isystem esp-idf/components/$(IDF_TARGET_ARCH)/include \ -isystem esp-idf/components/nvs_flash/include \
-isystem esp-idf/components/$(IDF_TARGET_ARCH)/$(IDF_TARGET)/include -isystem esp-idf/components/soc/include \
-isystem esp-idf/components/soc/$(IDF_TARGET)/include \
-isystem esp-idf/components/spi_flash/include \
-isystem esp-idf/components/$(IDF_TARGET_ARCH)/include \
-isystem esp-idf/components/$(IDF_TARGET_ARCH)/$(IDF_TARGET)/include
# See https://github.com/espressif/esp-idf/issues/6906 # See https://github.com/espressif/esp-idf/issues/6906
ifeq ($(IDF_TARGET),esp32c3) ifeq ($(IDF_TARGET),esp32c3)
CFLAGS += -include "esp32c3_fix.h" CFLAGS += -include "esp32c3_fix.h"
endif endif
CFLAGS += -DHAVE_CONFIG_H \ CFLAGS += \
-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" \ -DHAVE_CONFIG_H \
-DUNITY_INCLUDE_CONFIG_H -DWITH_POSIX -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" \
-DUNITY_INCLUDE_CONFIG_H -DWITH_POSIX
# Make our canary value match FreeRTOS's # Make our canary value match FreeRTOS's
# This define is in FreeRTOS as tskSTACK_FILL_BYTE 0xa5U which we expand out to a full word. # This define is in FreeRTOS as tskSTACK_FILL_BYTE 0xa5U which we expand out to a full word.
@ -158,33 +163,38 @@ endif
LDFLAGS = $(CFLAGS) -Wl,-nostdlib -Wl,-Map=$@.map -Wl,-cref -Wl,--undefined=uxTopUsedPriority LDFLAGS = $(CFLAGS) -Wl,-nostdlib -Wl,-Map=$@.map -Wl,-cref -Wl,--undefined=uxTopUsedPriority
LDFLAGS += -L$(BUILD)/esp-idf/esp-idf/$(IDF_TARGET) \ LDFLAGS += \
-L$(BUILD)/esp-idf/esp-idf/$(IDF_TARGET)/ld \ -L$(BUILD)/esp-idf/esp-idf/esp_system/ld \
-Lesp-idf/components/$(IDF_TARGET)/ld \ -Lesp-idf/components/esp_rom/$(IDF_TARGET)/ld \
-Lesp-idf/components/esp_rom/$(IDF_TARGET)/ld \ -Lesp-idf/components/soc/$(IDF_TARGET)/ld \
-T$(IDF_TARGET)_out.ld \ -Tmemory.ld \
-T$(IDF_TARGET).project.ld \ -Tsections.ld \
-T$(IDF_TARGET).peripherals.ld \ -T$(IDF_TARGET).peripherals.ld \
-T$(IDF_TARGET).rom.ld \ -T$(IDF_TARGET).rom.ld \
-T$(IDF_TARGET).rom.api.ld \ -T$(IDF_TARGET).rom.api.ld \
-T$(IDF_TARGET).rom.libgcc.ld \ -T$(IDF_TARGET).rom.libgcc.ld \
-T$(IDF_TARGET).rom.newlib-nano.ld -T$(IDF_TARGET).rom.newlib-nano.ld \
-Wl,-Bstatic \
-Wl,--no-warn-mismatch \
-Wl,--build-id=none \
-fno-rtti
ifeq ($(IDF_TARGET),esp32c3) ifeq ($(IDF_TARGET),esp32c3)
LDFLAGS += -Tesp32c3.rom.newlib.ld \ LDFLAGS += \
-Tesp32c3.rom.version.ld \ -Tesp32c3.rom.newlib.ld \
-Tesp32c3.rom.eco3.ld -Tesp32c3.rom.version.ld \
else -Tesp32c3.rom.eco3.ld
LDFLAGS += -T$(IDF_TARGET).rom.newlib-data.ld \ else ifeq ($(IDF_TARGET),esp32s2)
-T$(IDF_TARGET).rom.newlib-funcs.ld \ LDFLAGS += \
-T$(IDF_TARGET).rom.spiflash.ld -T$(IDF_TARGET).rom.newlib-data.ld \
-T$(IDF_TARGET).rom.newlib-funcs.ld \
-T$(IDF_TARGET).rom.spiflash.ld
else ifeq ($(IDF_TARGET),esp32s3)
LDFLAGS += \
-Tesp32s3.rom.newlib.ld \
-Tesp32s3.rom.version.ld
endif endif
LDFLAGS += -Wl,-Bstatic \
-Wl,--no-warn-mismatch \
-Wl,--build-id=none \
-fno-rtti
LIBS := -lgcc -lc -lstdc++ LIBS := -lgcc -lc -lstdc++
# Use toolchain libm if we're not using our own. # Use toolchain libm if we're not using our own.
@ -226,10 +236,13 @@ SRC_C += \
ifneq ($(IDF_TARGET),esp32c3) ifneq ($(IDF_TARGET),esp32c3)
SRC_C += \ SRC_C += \
cam.c \
i2s_lcd_esp32s2_driver.c \
peripherals/pcnt.c \ peripherals/pcnt.c \
peripherals/touch.c peripherals/touch.c
ifeq ($(IDF_TARGET),esp32s2)
SRC_C += \
cam.c \
i2s_lcd_esp32s2_driver.c
endif
endif endif
$(BUILD)/i2s_lcd_esp32s2_driver.o: CFLAGS += -Wno-sign-compare $(BUILD)/i2s_lcd_esp32s2_driver.o: CFLAGS += -Wno-sign-compare
@ -238,16 +251,15 @@ ifneq ($(CIRCUITPY_USB),0)
SRC_C += lib/tinyusb/src/portable/espressif/esp32sx/dcd_esp32sx.c SRC_C += lib/tinyusb/src/portable/espressif/esp32sx/dcd_esp32sx.c
endif endif
SRC_S = SRC_COMMON_HAL_EXPANDED = \
$(addprefix shared-bindings/, $(SRC_COMMON_HAL)) \
SRC_COMMON_HAL_EXPANDED = $(addprefix shared-bindings/, $(SRC_COMMON_HAL)) \ $(addprefix shared-bindings/, $(SRC_BINDINGS_ENUMS)) \
$(addprefix shared-bindings/, $(SRC_BINDINGS_ENUMS)) \ $(addprefix common-hal/, $(SRC_COMMON_HAL))
$(addprefix common-hal/, $(SRC_COMMON_HAL))
SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_MODULE)) \
$(addprefix shared-module/, $(SRC_SHARED_MODULE)) \
$(addprefix shared-module/, $(SRC_SHARED_MODULE_INTERNAL))
SRC_SHARED_MODULE_EXPANDED = \
$(addprefix shared-bindings/, $(SRC_SHARED_MODULE)) \
$(addprefix shared-module/, $(SRC_SHARED_MODULE)) \
$(addprefix shared-module/, $(SRC_SHARED_MODULE_INTERNAL))
ifneq ($(FROZEN_MPY_DIR),) ifneq ($(FROZEN_MPY_DIR),)
FROZEN_MPY_PY_FILES := $(shell find -L $(FROZEN_MPY_DIR) -type f -name '*.py') FROZEN_MPY_PY_FILES := $(shell find -L $(FROZEN_MPY_DIR) -type f -name '*.py')
@ -261,7 +273,6 @@ ifeq ($(INTERNAL_LIBM),1)
OBJ += $(addprefix $(BUILD)/, $(SRC_LIBM:.c=.o)) OBJ += $(addprefix $(BUILD)/, $(SRC_LIBM:.c=.o))
endif endif
OBJ += $(addprefix $(BUILD)/, $(SRC_CIRCUITPY_COMMON:.c=.o)) OBJ += $(addprefix $(BUILD)/, $(SRC_CIRCUITPY_COMMON:.c=.o))
OBJ += $(addprefix $(BUILD)/, $(SRC_S:.S=.o))
OBJ += $(addprefix $(BUILD)/, $(SRC_MOD:.c=.o)) OBJ += $(addprefix $(BUILD)/, $(SRC_MOD:.c=.o))
$(BUILD)/$(FATFS_DIR)/ff.o: COPT += -Os $(BUILD)/$(FATFS_DIR)/ff.o: COPT += -Os
@ -271,8 +282,6 @@ $(BUILD)/lib/protomatter/src/core.o: CFLAGS += -DESP32
# List of sources for qstr extraction # List of sources for qstr extraction
SRC_QSTR += $(SRC_C) $(SRC_SUPERVISOR) $(SRC_MOD) $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED) SRC_QSTR += $(SRC_C) $(SRC_SUPERVISOR) $(SRC_MOD) $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED)
# Sources that only hold QSTRs after pre-processing.
SRC_QSTR_PREPROCESSOR +=
# IDF build commands # IDF build commands
IDF_PATH = $(realpath ./esp-idf) IDF_PATH = $(realpath ./esp-idf)
@ -315,32 +324,28 @@ menuconfig: $(BUILD)/esp-idf/config
# qstr builds include headers so we need to make sure they are up to date # qstr builds include headers so we need to make sure they are up to date
$(HEADER_BUILD)/qstr.split: | $(BUILD)/esp-idf/config/sdkconfig.h $(HEADER_BUILD)/qstr.split: | $(BUILD)/esp-idf/config/sdkconfig.h
ESP_IDF_COMPONENTS_LINK = $(IDF_TARGET) $(IDF_TARGET_ARCH) app_update bootloader_support driver efuse esp_adc_cal esp_common esp_event esp_hw_support esp_netif esp_pm esp_ringbuf esp_rom esp_system esp_timer esp-tls esp_wifi freertos hal heap log lwip mbedtls newlib nvs_flash pthread soc spi_flash vfs wpa_supplicant BINARY_WIFI_BLOBS = libcoexist.a libcore.a libespnow.a libmesh.a libnet80211.a libpp.a libsmartconfig.a libwapi.a
BINARY_BLOBS = esp-idf/components/esp_phy/lib/$(IDF_TARGET)/libphy.a $(addprefix esp-idf/components/esp_wifi/lib/$(IDF_TARGET)/, $(BINARY_WIFI_BLOBS))
ESP_IDF_COMPONENTS_LINK = $(IDF_TARGET_ARCH) app_update bootloader_support driver efuse esp_adc_cal esp_common esp_event esp_hw_support esp_ipc esp_netif esp_pm esp_phy esp_ringbuf esp_rom esp_system esp_timer esp-tls esp_wifi freertos hal heap log lwip mbedtls newlib nvs_flash pthread soc spi_flash vfs wpa_supplicant
ESP_IDF_COMPONENTS_EXPANDED = $(foreach component, $(ESP_IDF_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/$(component)/lib$(component).a) ESP_IDF_COMPONENTS_EXPANDED = $(foreach component, $(ESP_IDF_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/$(component)/lib$(component).a)
ESP_IDF_WIFI_COMPONENTS_EXPANDED = $(foreach component, $(ESP_IDF_WIFI_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/$(component)/lib$(component).a)
MBEDTLS_COMPONENTS_LINK = crypto tls x509 MBEDTLS_COMPONENTS_LINK = crypto tls x509
MBEDTLS_COMPONENTS_LINK_EXPANDED = $(foreach component, $(MBEDTLS_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/mbedtls/mbedtls/library/libmbed$(component).a) MBEDTLS_COMPONENTS_LINK_EXPANDED = $(foreach component, $(MBEDTLS_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/mbedtls/mbedtls/library/libmbed$(component).a)
BINARY_WIFI_BLOBS = libcoexist.a libcore.a libespnow.a libmesh.a libnet80211.a libpp.a libsmartconfig.a libphy.a
ifneq ($(IDF_TARGET),esp32c3)
BINARY_WIFI_BLOBS += librtc.a
endif
BINARY_BLOBS = $(addprefix esp-idf/components/esp_wifi/lib/$(IDF_TARGET)/, $(BINARY_WIFI_BLOBS))
ifeq ($(IDF_TARGET_ARCH),xtensa) ifeq ($(IDF_TARGET_ARCH),xtensa)
BINARY_BLOBS += esp-idf/components/xtensa/$(IDF_TARGET)/libxt_hal.a BINARY_BLOBS += esp-idf/components/xtensa/$(IDF_TARGET)/libxt_hal.a
ESP_IDF_COMPONENTS_EXPANDED += esp-idf/components/xtensa/$(IDF_TARGET)/libxt_hal.a ESP_IDF_COMPONENTS_EXPANDED += esp-idf/components/xtensa/$(IDF_TARGET)/libxt_hal.a
endif endif
ifeq ($(IDF_TARGET), esp32c3) ifeq ($(IDF_TARGET),esp32c3)
ESPTOOL_BAUDRATE = 230400 BOOTLOADER_OFFSET = 0x0
BOOTLOADER_OFFSET = 0x0000 else ifeq ($(IDF_TARGET),esp32s3)
BOOTLOADER_OFFSET = 0x0
else else
ESPTOOL_BAUDRATE = 460800
BOOTLOADER_OFFSET = 0x1000 BOOTLOADER_OFFSET = 0x1000
endif endif
PARTITION_TABLE_OFFSET = 0x8000 PARTITION_TABLE_OFFSET = 0x8000
FIRMWARE_OFFSET = 0x10000 FIRMWARE_OFFSET = 0x10000
@ -348,7 +353,7 @@ ESP_AUTOGEN_LD = $(BUILD)/esp-idf/esp-idf/$(IDF_TARGET)/$(IDF_TARGET)_out.ld $(B
FLASH_FLAGS = --flash_mode $(CIRCUITPY_ESP_FLASH_MODE) --flash_freq $(CIRCUITPY_ESP_FLASH_FREQ) --flash_size $(CIRCUITPY_ESP_FLASH_SIZE) FLASH_FLAGS = --flash_mode $(CIRCUITPY_ESP_FLASH_MODE) --flash_freq $(CIRCUITPY_ESP_FLASH_FREQ) --flash_size $(CIRCUITPY_ESP_FLASH_SIZE)
ESPTOOL_FLAGS ?= -b $(ESPTOOL_BAUDRATE) --before=default_reset --after=no_reset ESPTOOL_FLAGS ?= --before=default_reset --after=no_reset
ifeq ($(IDF_TARGET),esp32c3) ifeq ($(IDF_TARGET),esp32c3)
all: $(BUILD)/firmware.bin all: $(BUILD)/firmware.bin
@ -360,17 +365,18 @@ endif
esp-idf-stamp: $(BUILD)/esp-idf/config/sdkconfig.h esp-idf-stamp: $(BUILD)/esp-idf/config/sdkconfig.h
$(Q)ninja -C $(BUILD)/esp-idf \ $(Q)ninja -C $(BUILD)/esp-idf \
bootloader/bootloader.bin \ bootloader/bootloader.bin \
esp-idf/esp_system/__ldgen_output_sections.ld \
esp-idf/app_update/libapp_update.a \ esp-idf/app_update/libapp_update.a \
esp-idf/bootloader_support/libbootloader_support.a \ esp-idf/bootloader_support/libbootloader_support.a \
esp-idf/driver/libdriver.a \ esp-idf/driver/libdriver.a \
esp-idf/efuse/libefuse.a \ esp-idf/efuse/libefuse.a \
esp-idf/$(IDF_TARGET)/lib$(IDF_TARGET).a \
esp-idf/$(IDF_TARGET)/ld/$(IDF_TARGET).project.ld \
esp-idf/esp_adc_cal/libesp_adc_cal.a \ esp-idf/esp_adc_cal/libesp_adc_cal.a \
esp-idf/esp_common/libesp_common.a \ esp-idf/esp_common/libesp_common.a \
esp-idf/esp_event/libesp_event.a \ esp-idf/esp_event/libesp_event.a \
esp-idf/esp_hw_support/libesp_hw_support.a \ esp-idf/esp_hw_support/libesp_hw_support.a \
esp-idf/esp_ipc/libesp_ipc.a \
esp-idf/esp_netif/libesp_netif.a \ esp-idf/esp_netif/libesp_netif.a \
esp-idf/esp_phy/libesp_phy.a \
esp-idf/esp_pm/libesp_pm.a \ esp-idf/esp_pm/libesp_pm.a \
esp-idf/esp_ringbuf/libesp_ringbuf.a \ esp-idf/esp_ringbuf/libesp_ringbuf.a \
esp-idf/esp_rom/libesp_rom.a \ esp-idf/esp_rom/libesp_rom.a \

@ -11,6 +11,7 @@ Support Status:
ESP32-C3, "beta" ESP32-C3, "beta"
ESP32-S2, "stable" ESP32-S2, "stable"
ESP32-S3, "beta"
How this port is organized: How this port is organized:
--------------------------------------- ---------------------------------------
@ -31,9 +32,11 @@ Connecting to the ESP32-C3
**USB Connetion:** **USB Connetion:**
On ESP32-C3 REV3 chips, a USB Serial/JTAG Controller is available. Note: The USB connection cannot be used for a ``CIRCUITPY`` drive. On ESP32-C3 REV3 chips, a USB Serial/JTAG Controller is available. Note: This USB connection cannot be used for a ``CIRCUITPY`` drive.
Depending on the board you have the USB port may or may not be connected to native USB, if it isn't connected to native USB then following connections need to be made to get serial console, REPL interface, flashing CircuitPython and JTAG debugging. Depending on the board you have, the USB port may or may not be connected to native USB.
Following connections need to be made if native USB isn't available on USB port:
.. csv-table:: .. csv-table::
:header: GPIO, USB :header: GPIO, USB
@ -47,7 +50,9 @@ Connect these pins using a `USB adapter <https://www.adafruit.com/product/4090>`
**UART Connection:** **UART Connection:**
A `USB to UART convertor <https://www.adafruit.com/product/3309>`_ can be used for connecting to ESP32-C3 to get serial console, REPL interface and flashing CircuitPython. Following connections need to be made in this case. A `USB to UART convertor <https://www.adafruit.com/product/3309>`_ can be used for connecting to ESP32-C3 to get serial console, REPL interface and flashing CircuitPython.
Following connections need to be made in this case.
.. csv-table:: .. csv-table::
:header: GPIO, UART :header: GPIO, UART
@ -66,7 +71,9 @@ Connecting to the ESP32-S2
**USB Connetion:** **USB Connetion:**
Depending on the board you have the USB port may or may not be connected to native USB, if it isn't connected to native USB then following connections need to be made to get CircuitPython working. Depending on the board you have, the USB port may or may not be connected to native USB.
Following connections need to be made if native USB isn't available on USB port:
.. csv-table:: .. csv-table::
:header: GPIO, USB :header: GPIO, USB
@ -78,16 +85,79 @@ Depending on the board you have the USB port may or may not be connected to nati
Connect these pins using a `USB adapter <https://www.adafruit.com/product/4090>`_ or `breakout cable <https://www.adafruit.com/product/4448>`_ to access the CircuitPython drive. Connect these pins using a `USB adapter <https://www.adafruit.com/product/4090>`_ or `breakout cable <https://www.adafruit.com/product/4448>`_ to access the CircuitPython drive.
**UART Connection:**
A `USB to UART convertor <https://www.adafruit.com/product/3309>`_ can be used for connecting to ESP32-S2 to get serial console and flashing CircuitPython.
Following connections need to be made in this case:
.. csv-table::
:header: GPIO, UART
43, "RX"
44, "TX"
GND, "GND"
5V, "5V"
**BLE Connection:**
This feature isn't available on ESP32-S2.
Connecting to the ESP32-S3
---------------------------------------
**USB Connetion:**
Depending on the board you have, the USB port may or may not be connected to native USB.
Following connections need to be made if native USB isn't available on USB port:
.. csv-table::
:header: GPIO, USB
20, "D+ (green)"
19, "D- (white)"
GND, "GND (black)"
5V, "5V (red)"
Connect these pins using a `USB adapter <https://www.adafruit.com/product/4090>`_ or `breakout cable <https://www.adafruit.com/product/4448>`_ to access the CircuitPython drive.
**UART Connection:**
A `USB to UART convertor <https://www.adafruit.com/product/3309>`_ can be used for connecting to ESP32-S3 to get serial console and flashing CircuitPython.
Following connections need to be made in this case:
.. csv-table::
:header: GPIO, UART
43, "RX"
44, "TX"
GND, "GND"
5V, "5V"
**BLE Connection:**
This feature is not yet available and currently under development.
Building and flashing Building and flashing
--------------------------------------- ---------------------------------------
Before building or flashing the, you must `install the esp-idf <https://docs.espressif.com/projects/esp-idf/en/latest/esp32/index.html>`_. This must be re-done every time the esp-idf is updated, but not every time you build. Run ``cd ports/espressif`` from ``circuitpython/`` to move to the espressif port root, and run: Before building or flashing the, you must `install the esp-idf <https://docs.espressif.com/projects/esp-idf/en/latest/esp32/index.html>`_.
Note: This must be re-done every time the esp-idf is updated, but not every time you build.
Run ``cd ports/espressif`` from ``circuitpython/`` to move to the espressif port root, and run:
.. code-block:: .. code-block::
./esp-idf/install.sh ./esp-idf/install.sh
After this initial installation, you must add the esp-idf tools to your path. You must also do this **any time you open a new bash environment for building or flashing**: After this initial installation, you must add the esp-idf tools to your path.
Note: This must be re-done every time you open a new bash environment for building or flashing.
Run ``cd ports/espressif`` from ``circuitpython/`` to move to the espressif port root, and run:
.. code-block:: .. code-block::
@ -106,7 +176,7 @@ Building boards is typically done through ``make BOARD=board_id``. The default p
Debugging Debugging
--------------------------------------- ---------------------------------------
TODO: Add documentation for ESP32-C3 JTAG feature. TODO: Add documentation for ESP32-C3/S3 JTAG feature.
The ESP32-S2 supports JTAG debugging over OpenOCD using a JLink or other probe hardware. The official tutorials can be found on the Espressif website `here <https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/api-guides/jtag-debugging/index.html>`_, but they are mostly for the ESP32-S2 Kaluga, which has built-in debugging. The ESP32-S2 supports JTAG debugging over OpenOCD using a JLink or other probe hardware. The official tutorials can be found on the Espressif website `here <https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/api-guides/jtag-debugging/index.html>`_, but they are mostly for the ESP32-S2 Kaluga, which has built-in debugging.

@ -0,0 +1,127 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "supervisor/board.h"
#include "mpconfigboard.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "shared-bindings/busio/SPI.h"
#include "shared-bindings/displayio/FourWire.h"
#include "shared-module/displayio/__init__.h"
#include "shared-module/displayio/mipi_constants.h"
uint8_t display_init_sequence[] = {
0x01, 0x80, 0x96, // _SWRESET and Delay 150ms
0x11, 0x80, 0xFF, // _SLPOUT and Delay 500ms
0x3A, 0x81, 0x55, 0x0A, // _COLMOD and Delay 10ms
0x36, 0x01, 0x08, // _MADCTL
0x13, 0x80, 0x0A, // _NORON and Delay 10ms
0x36, 0x01, 0xC0, // _MADCTL
0x29, 0x80, 0xFF, // _DISPON and Delay 500ms
};
void board_init(void) {
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
common_hal_busio_spi_construct(spi, &pin_GPIO7, &pin_GPIO6, NULL);
common_hal_busio_spi_never_reset(spi);
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;
bus->base.type = &displayio_fourwire_type;
common_hal_displayio_fourwire_construct(bus,
spi,
&pin_GPIO4, // TFT_DC Command or data
&pin_GPIO5, // TFT_CS Chip select
&pin_GPIO48, // TFT_RST Reset
60000000, // Baudrate
0, // Polarity
0); // Phase
displayio_display_obj_t *display = &displays[0].display;
display->base.type = &displayio_display_type;
common_hal_displayio_display_construct(display,
bus,
320, // Width
240, // Height
0, // column start
0, // row start
0, // rotation
16, // Color depth
false, // Grayscale
false, // pixels in a byte share a row. Only valid for depths < 8
1, // bytes per cell. Only valid for depths < 8
false, // reverse_pixels_in_byte. Only valid for depths < 8
true, // reverse_pixels_in_word
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
display_init_sequence,
sizeof(display_init_sequence),
&pin_GPIO45, // backlight pin
NO_BRIGHTNESS_COMMAND,
1.0f, // brightness (ignored)
true, // auto_brightness
false, // single_byte_bounds
false, // data_as_commands
true, // auto_refresh
60, // native_frames_per_second
true, // backlight_on_high
false); // SH1107_addressing
// USB
common_hal_never_reset_pin(&pin_GPIO19);
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif
// SPI Flash and RAM
common_hal_never_reset_pin(&pin_GPIO26);
common_hal_never_reset_pin(&pin_GPIO27);
common_hal_never_reset_pin(&pin_GPIO28);
common_hal_never_reset_pin(&pin_GPIO29);
common_hal_never_reset_pin(&pin_GPIO30);
common_hal_never_reset_pin(&pin_GPIO31);
common_hal_never_reset_pin(&pin_GPIO32);
common_hal_never_reset_pin(&pin_GPIO33);
common_hal_never_reset_pin(&pin_GPIO34);
common_hal_never_reset_pin(&pin_GPIO35);
common_hal_never_reset_pin(&pin_GPIO36);
common_hal_never_reset_pin(&pin_GPIO37);
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
}
void board_deinit(void) {
}

@ -0,0 +1,36 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2019 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
// Micropython setup
#define MICROPY_HW_BOARD_NAME "ESP32-S3-Box-2.5"
#define MICROPY_HW_MCU_NAME "ESP32S3"
#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0)
#define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n")
#define AUTORESET_DELAY_MS 500

@ -0,0 +1,17 @@
USB_VID = 0x303A
USB_PID = 0x7007
USB_PRODUCT = "ESP32-S3-Box-2.5"
USB_MANUFACTURER = "Espressif"
IDF_TARGET = esp32s3
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = MPZ
# The default queue depth of 16 overflows on release builds,
# so increase it to 32.
CFLAGS += -DCFG_TUD_TASK_QUEUE_SZ=32
CIRCUITPY_ESP_FLASH_MODE=dio
CIRCUITPY_ESP_FLASH_FREQ=80m
CIRCUITPY_ESP_FLASH_SIZE=16MB

@ -0,0 +1,67 @@
#include "shared-bindings/board/__init__.h"
#include "shared-module/displayio/__init__.h"
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
// First PMOD connector
{ MP_ROM_QSTR(MP_QSTR_G9), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_U0TXD), MP_ROM_PTR(&pin_GPIO43) },
{ MP_ROM_QSTR(MP_QSTR_G43), MP_ROM_PTR(&pin_GPIO43) },
{ MP_ROM_QSTR(MP_QSTR_U0RXD), MP_ROM_PTR(&pin_GPIO44) },
{ MP_ROM_QSTR(MP_QSTR_G44), MP_ROM_PTR(&pin_GPIO44) },
{ MP_ROM_QSTR(MP_QSTR_CS), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_G10), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_G11), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_G13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_G12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_G14), MP_ROM_PTR(&pin_GPIO14) },
// Second PMOD connector
{ MP_ROM_QSTR(MP_QSTR_G38), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_G39), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_SCL2), MP_ROM_PTR(&pin_GPIO40) },
{ MP_ROM_QSTR(MP_QSTR_G40), MP_ROM_PTR(&pin_GPIO40) },
{ MP_ROM_QSTR(MP_QSTR_SDA2), MP_ROM_PTR(&pin_GPIO41) },
{ MP_ROM_QSTR(MP_QSTR_G41), MP_ROM_PTR(&pin_GPIO41) },
{ MP_ROM_QSTR(MP_QSTR_G42), MP_ROM_PTR(&pin_GPIO42) },
{ MP_ROM_QSTR(MP_QSTR_G21), MP_ROM_PTR(&pin_GPIO21) },
// LCD & touchscreen
{ MP_ROM_QSTR(MP_QSTR_LCD_DC), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_LCD_CS), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_LCD_MOSI), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_LCD_SCK), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_LCD_RST), MP_ROM_PTR(&pin_GPIO48) },
{ MP_ROM_QSTR(MP_QSTR_LCD_CTRL), MP_ROM_PTR(&pin_GPIO45) },
{ MP_ROM_QSTR(MP_QSTR_CTP_INT), MP_ROM_PTR(&pin_GPIO3) },
// Audio
{ MP_ROM_QSTR(MP_QSTR_I2S_ADC_SDOUT), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_I2S_MCLK), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_I2S_SCLK), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_I2S_LRCK), MP_ROM_PTR(&pin_GPIO47) },
{ MP_ROM_QSTR(MP_QSTR_I2S_CODEC_DSDIN), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_PA_CTRL), MP_ROM_PTR(&pin_GPIO46) },
{ MP_ROM_QSTR(MP_QSTR_MUTE_STATUS), MP_ROM_PTR(&pin_GPIO1) },
// Internal I2C bus
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO18) },
// boot button, also usable as a software button
{ MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

@ -0,0 +1,9 @@
CONFIG_ESP32S3_SPIRAM_SUPPORT=y
CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3"
CONFIG_SPIRAM_BOOT_INIT=y
CONFIG_SPIRAM_MEMTEST=y
CONFIG_SPIRAM_MODE_OCT=y
CONFIG_SPIRAM_SPEED_80M=y
CONFIG_SPIRAM_TYPE_AUTO=y
CONFIG_SPIRAM_USE_MALLOC=n
CONFIG_SPIRAM=y

@ -0,0 +1,61 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "supervisor/board.h"
#include "mpconfigboard.h"
#include "shared-bindings/microcontroller/Pin.h"
void board_init(void) {
// USB
common_hal_never_reset_pin(&pin_GPIO19);
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif
// SPI Flash and RAM
common_hal_never_reset_pin(&pin_GPIO26);
common_hal_never_reset_pin(&pin_GPIO27);
common_hal_never_reset_pin(&pin_GPIO28);
common_hal_never_reset_pin(&pin_GPIO29);
common_hal_never_reset_pin(&pin_GPIO30);
common_hal_never_reset_pin(&pin_GPIO31);
common_hal_never_reset_pin(&pin_GPIO32);
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
}
void board_deinit(void) {
}

@ -0,0 +1,38 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2019 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
// Micropython setup
#define MICROPY_HW_BOARD_NAME "ESP32-S3-DevKitC-1"
#define MICROPY_HW_MCU_NAME "ESP32S3"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO48)
#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0)
#define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n")
#define AUTORESET_DELAY_MS 500

@ -0,0 +1,17 @@
USB_VID = 0x303A
USB_PID = 0x7003
USB_PRODUCT = "ESP32-S3-DevKitC-1"
USB_MANUFACTURER = "Espressif"
IDF_TARGET = esp32s3
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = MPZ
# The default queue depth of 16 overflows on release builds,
# so increase it to 32.
CFLAGS += -DCFG_TUD_TASK_QUEUE_SZ=32
CIRCUITPY_ESP_FLASH_MODE=dio
CIRCUITPY_ESP_FLASH_FREQ=80m
CIRCUITPY_ESP_FLASH_SIZE=8MB

@ -0,0 +1,45 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
{ MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) },
{ MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) },
{ MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) },
{ MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) },
{ MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_IO41), MP_ROM_PTR(&pin_GPIO41) },
{ MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) },
{ MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43) },
{ MP_ROM_QSTR(MP_QSTR_TXD0), MP_ROM_PTR(&pin_GPIO43) },
{ MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44) },
{ MP_ROM_QSTR(MP_QSTR_TXD1), MP_ROM_PTR(&pin_GPIO44) },
{ MP_ROM_QSTR(MP_QSTR_IO45), MP_ROM_PTR(&pin_GPIO45) },
{ MP_ROM_QSTR(MP_QSTR_IO46), MP_ROM_PTR(&pin_GPIO46) },
{ MP_ROM_QSTR(MP_QSTR_IO47), MP_ROM_PTR(&pin_GPIO47) },
{ MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO48) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

@ -0,0 +1,40 @@
CONFIG_ESP32S3_SPIRAM_SUPPORT=y
#
# SPI RAM config
#
# CONFIG_SPIRAM_TYPE_AUTO is not set
# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set
# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
CONFIG_SPIRAM_TYPE_ESPPSRAM16=y
CONFIG_SPIRAM_SIZE=2097152
#
# PSRAM clock and cs IO for ESP32S3
#
CONFIG_DEFAULT_PSRAM_CLK_IO=30
CONFIG_DEFAULT_PSRAM_CS_IO=26
# end of PSRAM clock and cs IO for ESP32S3
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
# CONFIG_SPIRAM_RODATA is not set
CONFIG_SPIRAM_SPEED_80M=y
# CONFIG_SPIRAM_SPEED_40M is not set
# CONFIG_SPIRAM_SPEED_26M is not set
# CONFIG_SPIRAM_SPEED_20M is not set
CONFIG_SPIRAM=y
CONFIG_SPIRAM_BOOT_INIT=y
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
CONFIG_SPIRAM_USE_MEMMAP=y
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
# CONFIG_SPIRAM_USE_MALLOC is not set
CONFIG_SPIRAM_MEMTEST=y
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
# end of SPI RAM config
#
# LWIP
#
CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3"
# end of LWIP

@ -0,0 +1,61 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "supervisor/board.h"
#include "mpconfigboard.h"
#include "shared-bindings/microcontroller/Pin.h"
void board_init(void) {
// USB
common_hal_never_reset_pin(&pin_GPIO19);
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif
// SPI Flash and RAM
common_hal_never_reset_pin(&pin_GPIO26);
common_hal_never_reset_pin(&pin_GPIO27);
common_hal_never_reset_pin(&pin_GPIO28);
common_hal_never_reset_pin(&pin_GPIO29);
common_hal_never_reset_pin(&pin_GPIO30);
common_hal_never_reset_pin(&pin_GPIO31);
common_hal_never_reset_pin(&pin_GPIO32);
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
}
void board_deinit(void) {
}

@ -0,0 +1,38 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2019 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
// Micropython setup
#define MICROPY_HW_BOARD_NAME "ESP32-S3-DevKitC-1-nopsram"
#define MICROPY_HW_MCU_NAME "ESP32S3"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO48)
#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0)
#define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n")
#define AUTORESET_DELAY_MS 500

@ -0,0 +1,17 @@
USB_VID = 0x303A
USB_PID = 0x7005
USB_PRODUCT = "ESP32-S3-DevKitC-1-nopsram"
USB_MANUFACTURER = "Espressif"
IDF_TARGET = esp32s3
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = MPZ
# The default queue depth of 16 overflows on release builds,
# so increase it to 32.
CFLAGS += -DCFG_TUD_TASK_QUEUE_SZ=32
CIRCUITPY_ESP_FLASH_MODE=dio
CIRCUITPY_ESP_FLASH_FREQ=80m
CIRCUITPY_ESP_FLASH_SIZE=8MB

@ -0,0 +1,45 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
{ MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) },
{ MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) },
{ MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) },
{ MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) },
{ MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) },
{ MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38) },
{ MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39) },
{ MP_ROM_QSTR(MP_QSTR_IO41), MP_ROM_PTR(&pin_GPIO41) },
{ MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) },
{ MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43) },
{ MP_ROM_QSTR(MP_QSTR_TXD0), MP_ROM_PTR(&pin_GPIO43) },
{ MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44) },
{ MP_ROM_QSTR(MP_QSTR_TXD1), MP_ROM_PTR(&pin_GPIO44) },
{ MP_ROM_QSTR(MP_QSTR_IO45), MP_ROM_PTR(&pin_GPIO45) },
{ MP_ROM_QSTR(MP_QSTR_IO46), MP_ROM_PTR(&pin_GPIO46) },
{ MP_ROM_QSTR(MP_QSTR_IO47), MP_ROM_PTR(&pin_GPIO47) },
{ MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO48) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

@ -0,0 +1,8 @@
CONFIG_ESP32S3_SPIRAM_SUPPORT=n
#
# LWIP
#
CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3"
# end of LWIP

@ -21,8 +21,13 @@
#include "esp_log.h" #include "esp_log.h"
#include "soc/i2s_struct.h" #include "soc/i2s_struct.h"
#include "soc/apb_ctrl_reg.h" #include "soc/apb_ctrl_reg.h"
#ifdef CONFIG_IDF_TARGET_ESP32S2
#include "esp32s2/rom/lldesc.h" #include "esp32s2/rom/lldesc.h"
#include "esp32s2/rom/cache.h" #include "esp32s2/rom/cache.h"
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
#include "esp32s3/rom/lldesc.h"
#include "esp32s3/rom/cache.h"
#endif
#include "soc/dport_access.h" #include "soc/dport_access.h"
#include "soc/dport_reg.h" #include "soc/dport_reg.h"
#include "driver/ledc.h" #include "driver/ledc.h"

@ -32,11 +32,11 @@
#include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/microcontroller/Pin.h"
#include "shared-bindings/microcontroller/__init__.h" #include "shared-bindings/microcontroller/__init__.h"
#include "esp_sleep.h"
#include "hal/gpio_ll.h" #include "hal/gpio_ll.h"
#include "esp_debug_helpers.h" #include "esp_debug_helpers.h"
#include "components/driver/include/driver/rtc_io.h" #include "components/driver/include/driver/rtc_io.h"
#include "components/esp_system/include/esp_sleep.h"
#include "components/freertos/include/freertos/FreeRTOS.h" #include "components/freertos/include/freertos/FreeRTOS.h"
void common_hal_alarm_pin_pinalarm_construct(alarm_pin_pinalarm_obj_t *self, const mcu_pin_obj_t *pin, bool value, bool edge, bool pull) { void common_hal_alarm_pin_pinalarm_construct(alarm_pin_pinalarm_obj_t *self, const mcu_pin_obj_t *pin, bool value, bool edge, bool pull) {

@ -40,7 +40,13 @@
#define DEFAULT_VREF 1100 #define DEFAULT_VREF 1100
#define NO_OF_SAMPLES 2 #define NO_OF_SAMPLES 2
#define ATTENUATION ADC_ATTEN_DB_11 #define ATTENUATION ADC_ATTEN_DB_11
#ifdef CONFIG_IDF_TARGET_ESP32C3
#define DATA_WIDTH ADC_WIDTH_BIT_12
#elif defined(CONFIG_IDF_TARGET_ESP32S2)
#define DATA_WIDTH ADC_WIDTH_BIT_13 #define DATA_WIDTH ADC_WIDTH_BIT_13
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
#define DATA_WIDTH ADC_WIDTH_BIT_12
#endif
void common_hal_analogio_analogin_construct(analogio_analogin_obj_t *self, void common_hal_analogio_analogin_construct(analogio_analogin_obj_t *self,
const mcu_pin_obj_t *pin) { const mcu_pin_obj_t *pin) {

@ -41,6 +41,7 @@
void common_hal_analogio_analogout_construct(analogio_analogout_obj_t *self, void common_hal_analogio_analogout_construct(analogio_analogout_obj_t *self,
const mcu_pin_obj_t *pin) { const mcu_pin_obj_t *pin) {
#ifdef CONFIG_IDF_TARGET_ESP32S2
if (pin == &pin_GPIO17) { if (pin == &pin_GPIO17) {
self->channel = DAC_CHANNEL_1; self->channel = DAC_CHANNEL_1;
} else if (pin == &pin_GPIO18) { } else if (pin == &pin_GPIO18) {
@ -49,6 +50,9 @@ void common_hal_analogio_analogout_construct(analogio_analogout_obj_t *self,
mp_raise_ValueError(translate("Invalid DAC pin supplied")); mp_raise_ValueError(translate("Invalid DAC pin supplied"));
} }
dac_output_enable(self->channel); dac_output_enable(self->channel);
#else
mp_raise_NotImplementedError(NULL);
#endif
} }
bool common_hal_analogio_analogout_deinited(analogio_analogout_obj_t *self) { bool common_hal_analogio_analogout_deinited(analogio_analogout_obj_t *self) {
@ -56,18 +60,24 @@ bool common_hal_analogio_analogout_deinited(analogio_analogout_obj_t *self) {
} }
void common_hal_analogio_analogout_deinit(analogio_analogout_obj_t *self) { void common_hal_analogio_analogout_deinit(analogio_analogout_obj_t *self) {
#ifdef CONFIG_IDF_TARGET_ESP32S2
dac_output_disable(self->channel); dac_output_disable(self->channel);
self->channel = DAC_CHANNEL_MAX; self->channel = DAC_CHANNEL_MAX;
#endif
} }
void common_hal_analogio_analogout_set_value(analogio_analogout_obj_t *self, void common_hal_analogio_analogout_set_value(analogio_analogout_obj_t *self,
uint16_t value) { uint16_t value) {
#ifdef CONFIG_IDF_TARGET_ESP32S2
uint8_t dac_value = (value * 255) / 65535; uint8_t dac_value = (value * 255) / 65535;
dac_output_enable(self->channel); dac_output_enable(self->channel);
dac_output_voltage(self->channel, dac_value); dac_output_voltage(self->channel, dac_value);
#endif
} }
void analogout_reset(void) { void analogout_reset(void) {
#ifdef CONFIG_IDF_TARGET_ESP32S2
dac_output_disable(DAC_CHANNEL_1); dac_output_disable(DAC_CHANNEL_1);
dac_output_disable(DAC_CHANNEL_2); dac_output_disable(DAC_CHANNEL_2);
#endif
} }

@ -93,7 +93,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
mp_raise_ValueError(translate("All SPI peripherals are in use")); mp_raise_ValueError(translate("All SPI peripherals are in use"));
} }
esp_err_t result = spi_bus_initialize(self->host_id, &bus_config, self->host_id /* dma channel */); esp_err_t result = spi_bus_initialize(self->host_id, &bus_config, SPI_DMA_CH_AUTO);
if (result == ESP_ERR_NO_MEM) { if (result == ESP_ERR_NO_MEM) {
mp_raise_msg(&mp_type_MemoryError, translate("ESP-IDF memory allocation failed")); mp_raise_msg(&mp_type_MemoryError, translate("ESP-IDF memory allocation failed"));
} else if (result == ESP_ERR_INVALID_ARG) { } else if (result == ESP_ERR_INVALID_ARG) {

@ -56,11 +56,15 @@ static void IRAM_ATTR timer_interrupt_handler(void *self_in) {
// reset interrupt // reset interrupt
timg_dev_t *device = self->timer.group ? &(TIMERG1) : &(TIMERG0); timg_dev_t *device = self->timer.group ? &(TIMERG1) : &(TIMERG0);
if (self->timer.idx) { if (self->timer.idx) {
device->int_clr.t1 = 1; device->int_clr_timers.t1_int_clr = 1;
} else { } else {
device->int_clr.t0 = 1; device->int_clr_timers.t0_int_clr = 1;
} }
device->hw_timer[self->timer.idx].config.alarm_en = 1; #ifdef CONFIG_IDF_TARGET_ESP32S2
device->hw_timer[self->timer.idx].config.tx_alarm_en = 1;
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
device->hw_timer[self->timer.idx].config.tn_alarm_en = 1;
#endif
} }
static void init_pcnt(frequencyio_frequencyin_obj_t *self) { static void init_pcnt(frequencyio_frequencyin_obj_t *self) {

@ -95,8 +95,8 @@ void reset_all_pins(void) {
} }
floating_gpio_reset(i); floating_gpio_reset(i);
} }
in_use[0] = 0; in_use[0] = never_reset_pins[0];
in_use[1] = 0; in_use[1] = never_reset_pins[1];
} }
void claim_pin_number(gpio_num_t pin_number) { void claim_pin_number(gpio_num_t pin_number) {

@ -43,11 +43,15 @@
float common_hal_mcu_processor_get_temperature(void) { float common_hal_mcu_processor_get_temperature(void) {
float tsens_out; float tsens_out;
#ifdef CONFIG_IDF_TARGET_ESP32S3
mp_raise_NotImplementedError(NULL);
#else
temp_sensor_config_t temp_sensor = TSENS_CONFIG_DEFAULT(); // DEFAULT: range:-10℃ ~ 80℃, error < 1℃. temp_sensor_config_t temp_sensor = TSENS_CONFIG_DEFAULT(); // DEFAULT: range:-10℃ ~ 80℃, error < 1℃.
temp_sensor_set_config(temp_sensor); temp_sensor_set_config(temp_sensor);
temp_sensor_start(); temp_sensor_start();
temp_sensor_read_celsius(&tsens_out); temp_sensor_read_celsius(&tsens_out);
temp_sensor_stop(); temp_sensor_stop();
#endif
return tsens_out; return tsens_out;
} }

@ -47,13 +47,16 @@
#ifdef CONFIG_IDF_TARGET_ESP32C3 #ifdef CONFIG_IDF_TARGET_ESP32C3
#include "esp32c3/rom/rtc.h" #include "esp32c3/rom/rtc.h"
#elif CONFIG_IDF_TARGET_ESP32S2 #elif defined(CONFIG_IDF_TARGET_ESP32S2)
#include "esp32s2/rom/rtc.h" #include "esp32s2/rom/rtc.h"
#include "esp32s2/rom/usb/usb_persist.h" #include "esp32s2/rom/usb/usb_persist.h"
#include "esp32s2/rom/usb/chip_usb_dw_wrapper.h" #include "esp32s2/rom/usb/chip_usb_dw_wrapper.h"
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
#include "esp32s3/rom/rtc.h"
#include "esp32s3/rom/usb/usb_persist.h"
#include "esp32s3/rom/usb/chip_usb_dw_wrapper.h"
#endif #endif
void common_hal_mcu_delay_us(uint32_t delay) { void common_hal_mcu_delay_us(uint32_t delay) {
mp_hal_delay_us(delay); mp_hal_delay_us(delay);
} }

@ -32,10 +32,9 @@
#define INDEX_EMPTY 0xFF #define INDEX_EMPTY 0xFF
STATIC bool not_first_reset = false;
STATIC uint32_t reserved_timer_freq[LEDC_TIMER_MAX]; STATIC uint32_t reserved_timer_freq[LEDC_TIMER_MAX];
STATIC bool varfreq_timers[LEDC_TIMER_MAX]; STATIC bool varfreq_timers[LEDC_TIMER_MAX];
STATIC uint8_t reserved_channels[LEDC_CHANNEL_MAX]; STATIC uint8_t reserved_channels[LEDC_CHANNEL_MAX] = { [0 ... LEDC_CHANNEL_MAX - 1] = INDEX_EMPTY};
STATIC bool never_reset_tim[LEDC_TIMER_MAX]; STATIC bool never_reset_tim[LEDC_TIMER_MAX];
STATIC bool never_reset_chan[LEDC_CHANNEL_MAX]; STATIC bool never_reset_chan[LEDC_CHANNEL_MAX];
@ -56,7 +55,7 @@ STATIC uint32_t calculate_duty_cycle(uint32_t frequency) {
void pwmout_reset(void) { void pwmout_reset(void) {
for (size_t i = 0; i < LEDC_CHANNEL_MAX; i++) { for (size_t i = 0; i < LEDC_CHANNEL_MAX; i++) {
if (reserved_channels[i] != INDEX_EMPTY && not_first_reset) { if (reserved_channels[i] != INDEX_EMPTY) {
ledc_stop(LEDC_LOW_SPEED_MODE, i, 0); ledc_stop(LEDC_LOW_SPEED_MODE, i, 0);
} }
if (!never_reset_chan[i]) { if (!never_reset_chan[i]) {
@ -72,7 +71,6 @@ void pwmout_reset(void) {
varfreq_timers[i] = false; varfreq_timers[i] = false;
} }
} }
not_first_reset = true;
} }
pwmout_result_t common_hal_pwmio_pwmout_construct(pwmio_pwmout_obj_t *self, pwmout_result_t common_hal_pwmio_pwmout_construct(pwmio_pwmout_obj_t *self,

@ -1 +1 @@
Subproject commit e493a4c30e1b2f7c54a376327388b9e12262cbbf Subproject commit ddc44956bf718540d5451e17e1becf6c7dffe5b8

@ -1,9 +1,3 @@
#
# Bootloader config
#
# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set
# end of Bootloader config
# #
# Serial flasher config # Serial flasher config
# #
@ -50,6 +44,14 @@ CONFIG_ESP32S2_DATA_CACHE_16KB=y
# end of Cache config # end of Cache config
# end of ESP32S2-specific # end of ESP32S2-specific
#
# ESP32S3-specific
#
# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160 is not set
CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y
CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=240
# end of ESP32S3-specific
# #
# Common ESP-related # Common ESP-related
# #

@ -26,7 +26,7 @@ CIRCUITPY_FRAMEBUFFERIO ?= 1
CIRCUITPY_FREQUENCYIO ?= 1 CIRCUITPY_FREQUENCYIO ?= 1
CIRCUITPY_IMAGECAPTURE ?= 1 CIRCUITPY_IMAGECAPTURE ?= 1
CIRCUITPY_I2CPERIPHERAL ?= 1 CIRCUITPY_I2CPERIPHERAL ?= 1
CIRCUITPY_RGBMATRIX ?= 1 CIRCUITPY_RGBMATRIX ?= 0
CIRCUITPY_ROTARYIO ?= 1 CIRCUITPY_ROTARYIO ?= 1
CIRCUITPY_NVM ?= 1 CIRCUITPY_NVM ?= 1
CIRCUITPY_PS2IO ?= 1 CIRCUITPY_PS2IO ?= 1
@ -43,17 +43,18 @@ CIRCUITPY_USB = 0
CIRCUITPY_ALARM = 0 CIRCUITPY_ALARM = 0
CIRCUITPY_COUNTIO = 0 CIRCUITPY_COUNTIO = 0
CIRCUITPY_ROTARYIO = 0 CIRCUITPY_ROTARYIO = 0
CIRCUITPY_ANALOGIO = 0
CIRCUITPY_RGBMATRIX = 0
CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_FREQUENCYIO = 0 CIRCUITPY_FREQUENCYIO = 0
CIRCUITPY_IMAGECAPTURE = 0 CIRCUITPY_IMAGECAPTURE = 0
CIRCUITPY_PARALLELDISPLAY = 0 CIRCUITPY_PARALLELDISPLAY = 0
CIRCUITPY_TOUCHIO ?= 1 CIRCUITPY_TOUCHIO ?= 1
CIRCUITPY_TOUCHIO_USE_NATIVE = 0 CIRCUITPY_TOUCHIO_USE_NATIVE = 0
else ifeq ($(IDF_TARGET),esp32s3)
CIRCUITPY_IMAGECAPTURE = 0
CIRCUITPY_PARALLELDISPLAY = 0
endif endif
# From the ESP32-S2 datasheet: # From ESP32-S2/S3 Technical Reference Manual:
# #
# Endpoint number 0 always present (bi-directional, consisting of EP0 IN and EP0 OUT) # Endpoint number 0 always present (bi-directional, consisting of EP0 IN and EP0 OUT)
# Six additional endpoints (endpoint numbers 1 to 6), configurable as IN or OUT # Six additional endpoints (endpoint numbers 1 to 6), configurable as IN or OUT

@ -25,22 +25,17 @@
* THE SOFTWARE. * THE SOFTWARE.
*/ */
#include <string.h>
#include "py/mphal.h" #include "py/mphal.h"
#include "py/mpstate.h" #include "supervisor/cpu.h"
#include "py/gc.h"
#include "esp_debug_helpers.h"
#ifdef CONFIG_IDF_TARGET_ESP32C3 #ifdef CONFIG_IDF_TARGET_ESP32C3
#include "components/esp_rom/include/esp32c3/rom/ets_sys.h" #include "components/esp_rom/include/esp32c3/rom/ets_sys.h"
#elif CONFIG_IDF_TARGET_ESP32S2 #elif defined(CONFIG_IDF_TARGET_ESP32S2)
#include "components/esp_rom/include/esp32s2/rom/ets_sys.h" #include "components/esp_rom/include/esp32s2/rom/ets_sys.h"
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
#include "components/esp_rom/include/esp32s3/rom/ets_sys.h"
#endif #endif
#include "supervisor/cpu.h"
void mp_hal_delay_us(mp_uint_t delay) { void mp_hal_delay_us(mp_uint_t delay) {
ets_delay_us(delay); ets_delay_us(delay);
} }

@ -0,0 +1,73 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2021 microDev
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "peripherals/pins.h"
const mcu_pin_obj_t pin_GPIO0 = PIN(0, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO1 = PIN(1, ADC_UNIT_1, ADC_CHANNEL_0, TOUCH_PAD_NUM1);
const mcu_pin_obj_t pin_GPIO2 = PIN(2, ADC_UNIT_1, ADC_CHANNEL_1, TOUCH_PAD_NUM2);
const mcu_pin_obj_t pin_GPIO3 = PIN(3, ADC_UNIT_1, ADC_CHANNEL_2, TOUCH_PAD_NUM3);
const mcu_pin_obj_t pin_GPIO4 = PIN(4, ADC_UNIT_1, ADC_CHANNEL_3, TOUCH_PAD_NUM4);
const mcu_pin_obj_t pin_GPIO5 = PIN(5, ADC_UNIT_1, ADC_CHANNEL_4, TOUCH_PAD_NUM5);
const mcu_pin_obj_t pin_GPIO6 = PIN(6, ADC_UNIT_1, ADC_CHANNEL_5, TOUCH_PAD_NUM6);
const mcu_pin_obj_t pin_GPIO7 = PIN(7, ADC_UNIT_1, ADC_CHANNEL_6, TOUCH_PAD_NUM7);
const mcu_pin_obj_t pin_GPIO8 = PIN(8, ADC_UNIT_1, ADC_CHANNEL_7, TOUCH_PAD_NUM8);
const mcu_pin_obj_t pin_GPIO9 = PIN(9, ADC_UNIT_1, ADC_CHANNEL_8, TOUCH_PAD_NUM9);
const mcu_pin_obj_t pin_GPIO10 = PIN(10, ADC_UNIT_1, ADC_CHANNEL_9, TOUCH_PAD_NUM10);
const mcu_pin_obj_t pin_GPIO11 = PIN(11, ADC_UNIT_2, ADC_CHANNEL_0, TOUCH_PAD_NUM11);
const mcu_pin_obj_t pin_GPIO12 = PIN(12, ADC_UNIT_2, ADC_CHANNEL_1, TOUCH_PAD_NUM12);
const mcu_pin_obj_t pin_GPIO13 = PIN(13, ADC_UNIT_2, ADC_CHANNEL_2, TOUCH_PAD_NUM13);
const mcu_pin_obj_t pin_GPIO14 = PIN(14, ADC_UNIT_2, ADC_CHANNEL_3, TOUCH_PAD_NUM14);
const mcu_pin_obj_t pin_GPIO15 = PIN(15, ADC_UNIT_2, ADC_CHANNEL_4, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO16 = PIN(16, ADC_UNIT_2, ADC_CHANNEL_5, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO17 = PIN(17, ADC_UNIT_2, ADC_CHANNEL_6, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO18 = PIN(18, ADC_UNIT_2, ADC_CHANNEL_7, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO19 = PIN(19, ADC_UNIT_2, ADC_CHANNEL_8, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO20 = PIN(20, ADC_UNIT_2, ADC_CHANNEL_9, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO21 = PIN(21, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO26 = PIN(26, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO27 = PIN(27, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO28 = PIN(28, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO29 = PIN(29, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO30 = PIN(30, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO31 = PIN(31, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO32 = PIN(32, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO33 = PIN(33, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO34 = PIN(34, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO35 = PIN(35, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO36 = PIN(36, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO37 = PIN(37, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO38 = PIN(38, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO39 = PIN(39, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO40 = PIN(40, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO41 = PIN(41, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO42 = PIN(42, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO43 = PIN(43, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO44 = PIN(44, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO45 = PIN(45, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO46 = PIN(46, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO47 = PIN(47, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);
const mcu_pin_obj_t pin_GPIO48 = PIN(48, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL);

@ -0,0 +1,80 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2021 microDev
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
// DO NOT include this file directly.
// Use shared-bindings/microcontroller/Pin.h instead.
// This ensures that all necessary includes are already included.
#ifndef MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32S3_PINS_H
#define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32S3_PINS_H
extern const mcu_pin_obj_t pin_GPIO0;
extern const mcu_pin_obj_t pin_GPIO1;
extern const mcu_pin_obj_t pin_GPIO2;
extern const mcu_pin_obj_t pin_GPIO3;
extern const mcu_pin_obj_t pin_GPIO4;
extern const mcu_pin_obj_t pin_GPIO5;
extern const mcu_pin_obj_t pin_GPIO6;
extern const mcu_pin_obj_t pin_GPIO7;
extern const mcu_pin_obj_t pin_GPIO8;
extern const mcu_pin_obj_t pin_GPIO9;
extern const mcu_pin_obj_t pin_GPIO10;
extern const mcu_pin_obj_t pin_GPIO11;
extern const mcu_pin_obj_t pin_GPIO12;
extern const mcu_pin_obj_t pin_GPIO13;
extern const mcu_pin_obj_t pin_GPIO14;
extern const mcu_pin_obj_t pin_GPIO15;
extern const mcu_pin_obj_t pin_GPIO16;
extern const mcu_pin_obj_t pin_GPIO17;
extern const mcu_pin_obj_t pin_GPIO18;
extern const mcu_pin_obj_t pin_GPIO19;
extern const mcu_pin_obj_t pin_GPIO20;
extern const mcu_pin_obj_t pin_GPIO21;
extern const mcu_pin_obj_t pin_GPIO26;
extern const mcu_pin_obj_t pin_GPIO27;
extern const mcu_pin_obj_t pin_GPIO28;
extern const mcu_pin_obj_t pin_GPIO29;
extern const mcu_pin_obj_t pin_GPIO30;
extern const mcu_pin_obj_t pin_GPIO31;
extern const mcu_pin_obj_t pin_GPIO32;
extern const mcu_pin_obj_t pin_GPIO33;
extern const mcu_pin_obj_t pin_GPIO34;
extern const mcu_pin_obj_t pin_GPIO35;
extern const mcu_pin_obj_t pin_GPIO36;
extern const mcu_pin_obj_t pin_GPIO37;
extern const mcu_pin_obj_t pin_GPIO38;
extern const mcu_pin_obj_t pin_GPIO39;
extern const mcu_pin_obj_t pin_GPIO40;
extern const mcu_pin_obj_t pin_GPIO41;
extern const mcu_pin_obj_t pin_GPIO42;
extern const mcu_pin_obj_t pin_GPIO43;
extern const mcu_pin_obj_t pin_GPIO44;
extern const mcu_pin_obj_t pin_GPIO45;
extern const mcu_pin_obj_t pin_GPIO46;
extern const mcu_pin_obj_t pin_GPIO47;
extern const mcu_pin_obj_t pin_GPIO48;
#endif // MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32S3_PINS_H

@ -28,6 +28,7 @@
#define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_PCNT_HANDLER_H #define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_PCNT_HANDLER_H
#include "driver/pcnt.h" #include "driver/pcnt.h"
#include "soc/pcnt_struct.h"
extern int peripherals_pcnt_init(pcnt_config_t pcnt_config); extern int peripherals_pcnt_init(pcnt_config_t pcnt_config);
extern void peripherals_pcnt_deinit(pcnt_unit_t *unit); extern void peripherals_pcnt_deinit(pcnt_unit_t *unit);

@ -67,8 +67,10 @@ extern const mp_obj_type_t mcu_pin_type;
// Choose based on chip // Choose based on chip
#ifdef CONFIG_IDF_TARGET_ESP32C3 #ifdef CONFIG_IDF_TARGET_ESP32C3
#include "esp32c3/pins.h" #include "esp32c3/pins.h"
#elif CONFIG_IDF_TARGET_ESP32S2 #elif defined(CONFIG_IDF_TARGET_ESP32S2)
#include "esp32s2/pins.h" #include "esp32s2/pins.h"
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
#include "esp32s3/pins.h"
#endif #endif
#endif // MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_PINS_H #endif // MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_PINS_H

@ -58,6 +58,9 @@
#if CIRCUITPY_COUNTIO || CIRCUITPY_ROTARYIO || CIRCUITPY_FREQUENCYIO #if CIRCUITPY_COUNTIO || CIRCUITPY_ROTARYIO || CIRCUITPY_FREQUENCYIO
#include "peripherals/pcnt.h" #include "peripherals/pcnt.h"
#endif
#if CIRCUITPY_TOUCHIO_USE_NATIVE
#include "peripherals/touch.h" #include "peripherals/touch.h"
#endif #endif
@ -69,16 +72,13 @@
#include "cam.h" #include "cam.h"
#endif #endif
#include "esp_heap_caps.h"
#include "esp_debug_helpers.h"
#include "soc/cache_memory.h" #include "soc/cache_memory.h"
#include "soc/rtc_cntl_reg.h" #include "soc/rtc_cntl_reg.h"
#ifdef CONFIG_IDF_TARGET_ESP32C3 #include "esp_debug_helpers.h"
#include "components/esp_rom/include/esp32c3/rom/ets_sys.h"
#elif CONFIG_IDF_TARGET_ESP32S2 #ifdef CONFIG_SPIRAM
#include "components/esp_rom/include/esp32s2/rom/ets_sys.h" #include "esp32/spiram.h"
#endif #endif
#define HEAP_SIZE (48 * 1024) #define HEAP_SIZE (48 * 1024)
@ -136,7 +136,7 @@ safe_mode_t port_init(void) {
#ifdef CONFIG_IDF_TARGET_ESP32C3 #ifdef CONFIG_IDF_TARGET_ESP32C3
common_hal_never_reset_pin(&pin_GPIO20); common_hal_never_reset_pin(&pin_GPIO20);
common_hal_never_reset_pin(&pin_GPIO21); common_hal_never_reset_pin(&pin_GPIO21);
#elif CONFIG_IDF_TARGET_ESP32S2 #elif defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
common_hal_never_reset_pin(&pin_GPIO43); common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44); common_hal_never_reset_pin(&pin_GPIO44);
#endif #endif
@ -153,7 +153,7 @@ safe_mode_t port_init(void) {
common_hal_never_reset_pin(&pin_GPIO5); common_hal_never_reset_pin(&pin_GPIO5);
common_hal_never_reset_pin(&pin_GPIO6); common_hal_never_reset_pin(&pin_GPIO6);
common_hal_never_reset_pin(&pin_GPIO7); common_hal_never_reset_pin(&pin_GPIO7);
#elif CONFIG_IDF_TARGET_ESP32S2 #elif defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
common_hal_never_reset_pin(&pin_GPIO39); common_hal_never_reset_pin(&pin_GPIO39);
common_hal_never_reset_pin(&pin_GPIO40); common_hal_never_reset_pin(&pin_GPIO40);
common_hal_never_reset_pin(&pin_GPIO41); common_hal_never_reset_pin(&pin_GPIO41);
@ -162,8 +162,11 @@ safe_mode_t port_init(void) {
#endif #endif
#ifdef CONFIG_SPIRAM #ifdef CONFIG_SPIRAM
heap = (uint32_t *)(DRAM0_CACHE_ADDRESS_HIGH - CONFIG_SPIRAM_SIZE); if (esp_spiram_is_initialized()) {
heap_size = CONFIG_SPIRAM_SIZE / sizeof(uint32_t); size_t spiram_size = esp_spiram_get_size();
heap = (uint32_t *)(SOC_EXTRAM_DATA_HIGH - spiram_size);
heap_size = spiram_size / sizeof(uint32_t);
}
#endif #endif
if (heap == NULL) { if (heap == NULL) {

@ -33,6 +33,7 @@
#include "shared/readline/readline.h" #include "shared/readline/readline.h"
#include "hal/gpio_ll.h" #include "hal/gpio_ll.h"
#include "hal/usb_hal.h"
#include "soc/usb_periph.h" #include "soc/usb_periph.h"
#include "components/driver/include/driver/gpio.h" #include "components/driver/include/driver/gpio.h"
@ -40,15 +41,15 @@
#ifdef CONFIG_IDF_TARGET_ESP32C3 #ifdef CONFIG_IDF_TARGET_ESP32C3
#include "components/esp_rom/include/esp32c3/rom/gpio.h" #include "components/esp_rom/include/esp32c3/rom/gpio.h"
#elif CONFIG_IDF_TARGET_ESP32S2 #elif defined(CONFIG_IDF_TARGET_ESP32S2)
#include "components/esp_rom/include/esp32s2/rom/gpio.h" #include "components/esp_rom/include/esp32s2/rom/gpio.h"
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
#include "components/esp_rom/include/esp32s3/rom/gpio.h"
#endif #endif
#include "freertos/FreeRTOS.h" #include "freertos/FreeRTOS.h"
#include "freertos/task.h" #include "freertos/task.h"
#include "hal/usb_hal.h"
#include "tusb.h" #include "tusb.h"
#ifdef CFG_TUSB_DEBUG #ifdef CFG_TUSB_DEBUG

@ -12,10 +12,10 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO19) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO19) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO20) }, { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO20) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) }, { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) }, { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) },
@ -27,14 +27,14 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) }, { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) }, { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO11) }, { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO12) }, { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO13) }, { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO17) }, { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO17) },

@ -0,0 +1,40 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2021 Wai Weng for Cytron Technologies
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "supervisor/board.h"
void board_init(void) {
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
}
void board_deinit(void) {
}

@ -0,0 +1,12 @@
#define MICROPY_HW_BOARD_NAME "Cytron Maker Nano RP2040"
#define MICROPY_HW_MCU_NAME "rp2040"
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO1)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO0)
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO18)
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO19)
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO16)
#define DEFAULT_UART_BUS_RX (&pin_GPIO1)
#define DEFAULT_UART_BUS_TX (&pin_GPIO0)

@ -0,0 +1,15 @@
USB_VID = 0x2E8A
USB_PID = 0x100f
USB_PRODUCT = "Maker Nano RP2040"
USB_MANUFACTURER = "Cytron"
CHIP_VARIANT = RP2040
CHIP_FAMILY = rp2
EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ"
CIRCUITPY__EVE = 1
# Include these Python libraries in firmware.
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SimpleIO

@ -0,0 +1,4 @@
// Put board-specific pico-sdk definitions here. This file must exist.
// Allow extra time for xosc to start.
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64

@ -0,0 +1,55 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
{ MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_GP2), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_GP3), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_GP4), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_GP5), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_GP6), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_GP7), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_GP8), MP_ROM_PTR(&pin_GPIO8) },
{ MP_ROM_QSTR(MP_QSTR_GP9), MP_ROM_PTR(&pin_GPIO9) },
{ MP_ROM_QSTR(MP_QSTR_RGB), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_GP11), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_GP12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_GP13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_GP14), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_GP15), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_GP16), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_GP17), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_GP18), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_GP19), MP_ROM_PTR(&pin_GPIO19) },
{ MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO20) },
{ MP_ROM_QSTR(MP_QSTR_GP20), MP_ROM_PTR(&pin_GPIO20) },
{ MP_ROM_QSTR(MP_QSTR_BUZZER), MP_ROM_PTR(&pin_GPIO22) },
{ MP_ROM_QSTR(MP_QSTR_GP22), MP_ROM_PTR(&pin_GPIO22) },
{ MP_ROM_QSTR(MP_QSTR_GP26_A0), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_GP26), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_GP27_A1), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_GP27), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_GP28_A2), MP_ROM_PTR(&pin_GPIO28) },
{ MP_ROM_QSTR(MP_QSTR_GP28), MP_ROM_PTR(&pin_GPIO28) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) },
{ MP_ROM_QSTR(MP_QSTR_GP29_A3), MP_ROM_PTR(&pin_GPIO29) },
{ MP_ROM_QSTR(MP_QSTR_GP29), MP_ROM_PTR(&pin_GPIO29) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO29) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

@ -0,0 +1,40 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "supervisor/board.h"
void board_init(void) {
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
}
void board_deinit(void) {
}

@ -0,0 +1,14 @@
#define MICROPY_HW_BOARD_NAME "Oak Dev Tech Cast-Away RP2040"
#define MICROPY_HW_MCU_NAME "rp2040"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO18)
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO1)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO0)
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO2)
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO3)
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO4)
#define DEFAULT_UART_BUS_RX (&pin_GPIO14)
#define DEFAULT_UART_BUS_TX (&pin_GPIO15)

@ -0,0 +1,11 @@
USB_VID = 0x1209
USB_PID = 0x4DF2
USB_PRODUCT = "CAST AWAY RP2040"
USB_MANUFACTURER = "Oak Dev Tech"
CHIP_VARIANT = RP2040
CHIP_FAMILY = rp2
EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ"
CIRCUITPY__EVE = 1

@ -0,0 +1,3 @@
// Put board-specific pico-sdk definitions here. This file must exist.
// Allow extra time for xosc to start.
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64

@ -0,0 +1,41 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) },
{ MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO14) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO15) },
{ MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_D28), MP_ROM_PTR(&pin_GPIO28) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);

@ -0,0 +1,40 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "supervisor/board.h"
void board_init(void) {
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
}
void board_deinit(void) {
}

@ -0,0 +1,15 @@
#define MICROPY_HW_BOARD_NAME "Seeeduino XIAO RP2040"
#define MICROPY_HW_MCU_NAME "rp2040"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO12)
#define CIRCUITPY_STATUS_LED_POWER (&pin_GPIO11)
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO7)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO6)
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO2)
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO3)
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO4)
#define DEFAULT_UART_BUS_RX (&pin_GPIO1)
#define DEFAULT_UART_BUS_TX (&pin_GPIO0)

@ -0,0 +1,9 @@
USB_VID = 0x2886
USB_PID = 0x0042
USB_PRODUCT = "Seeeduino XIAO RP2040"
USB_MANUFACTURER = "Seeed"
CHIP_VARIANT = RP2040
CHIP_FAMILY = rp2
EXTERNAL_FLASH_DEVICES = "P25Q16H"

@ -0,0 +1,4 @@
// Put board-specific pico-sdk definitions here. This file must exist.
// Allow extra time for xosc to start.
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64

@ -0,0 +1,51 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO26) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO27) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) },
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO28) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO29) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO29) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO6) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO7) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO0) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO1) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO2) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO4) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO3) },
{ MP_ROM_QSTR(MP_QSTR_TX_LED), MP_ROM_PTR(&pin_GPIO16) },
{ MP_ROM_QSTR(MP_QSTR_RX_LED), MP_ROM_PTR(&pin_GPIO17) },
{ MP_ROM_QSTR(MP_QSTR_YELLOW_LED), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO18) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO11) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

@ -36,6 +36,7 @@ SRC_BITMAP := \
shared-bindings/bitmaptools/__init__.c \ shared-bindings/bitmaptools/__init__.c \
shared-bindings/displayio/Bitmap.c \ shared-bindings/displayio/Bitmap.c \
shared-bindings/rainbowio/__init__.c \ shared-bindings/rainbowio/__init__.c \
shared-bindings/traceback/__init__.c \
shared-bindings/util.c \ shared-bindings/util.c \
shared-module/aesio/aes.c \ shared-module/aesio/aes.c \
shared-module/aesio/__init__.c \ shared-module/aesio/__init__.c \
@ -45,11 +46,18 @@ SRC_BITMAP := \
shared-module/displayio/ColorConverter.c \ shared-module/displayio/ColorConverter.c \
shared-module/displayio/ColorConverter.c \ shared-module/displayio/ColorConverter.c \
shared-module/rainbowio/__init__.c \ shared-module/rainbowio/__init__.c \
shared-module/traceback/__init__.c
$(info $(SRC_BITMAP)) $(info $(SRC_BITMAP))
SRC_C += $(SRC_BITMAP) SRC_C += $(SRC_BITMAP)
CFLAGS += -DCIRCUITPY_GIFIO=1 -DCIRCUITPY_DISPLAYIO_UNIX=1 -DCIRCUITPY_BITMAPTOOLS=1 -DCIRCUITPY_RAINBOWIO=1 -DCIRCUITPY_AESIO=1 CFLAGS += \
-DCIRCUITPY_AESIO=1 \
-DCIRCUITPY_BITMAPTOOLS=1 \
-DCIRCUITPY_DISPLAYIO_UNIX=1 \
-DCIRCUITPY_GIFIO=1 \
-DCIRCUITPY_RAINBOWIO=1 \
-DCIRCUITPY_TRACEBACK=1
SRC_C += coverage.c SRC_C += coverage.c
SRC_CXX += coveragecpp.cpp SRC_CXX += coveragecpp.cpp

@ -82,12 +82,6 @@ STATIC void validate_timeout(mp_float_t timeout) {
STATIC mp_obj_t busio_uart_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { STATIC mp_obj_t busio_uart_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
#if CIRCUITPY_BUSIO_UART #if CIRCUITPY_BUSIO_UART
// Always initially allocate the UART object within the long-lived heap.
// This is needed to avoid crashes with certain UART implementations which
// cannot accomodate being moved after creation. (See
// https://github.com/adafruit/circuitpython/issues/1056)
busio_uart_obj_t *self = m_new_ll_obj_with_finaliser(busio_uart_obj_t);
self->base.type = &busio_uart_type;
enum { ARG_tx, ARG_rx, ARG_baudrate, ARG_bits, ARG_parity, ARG_stop, ARG_timeout, ARG_receiver_buffer_size, enum { ARG_tx, ARG_rx, ARG_baudrate, ARG_bits, ARG_parity, ARG_stop, ARG_timeout, ARG_receiver_buffer_size,
ARG_rts, ARG_cts, ARG_rs485_dir,ARG_rs485_invert}; ARG_rts, ARG_cts, ARG_rs485_dir,ARG_rs485_invert};
static const mp_arg_t allowed_args[] = { static const mp_arg_t allowed_args[] = {
@ -140,6 +134,13 @@ STATIC mp_obj_t busio_uart_make_new(const mp_obj_type_t *type, size_t n_args, si
const bool rs485_invert = args[ARG_rs485_invert].u_bool; const bool rs485_invert = args[ARG_rs485_invert].u_bool;
// Always initially allocate the UART object within the long-lived heap.
// This is needed to avoid crashes with certain UART implementations which
// cannot accomodate being moved after creation. (See
// https://github.com/adafruit/circuitpython/issues/1056)
busio_uart_obj_t *self = m_new_ll_obj_with_finaliser(busio_uart_obj_t);
self->base.type = &busio_uart_type;
common_hal_busio_uart_construct(self, tx, rx, rts, cts, rs485_dir, rs485_invert, common_hal_busio_uart_construct(self, tx, rx, rts, cts, rs485_dir, rs485_invert,
args[ARG_baudrate].u_int, bits, parity, stop, timeout, args[ARG_baudrate].u_int, bits, parity, stop, timeout,
args[ARG_receiver_buffer_size].u_int, NULL, false); args[ARG_receiver_buffer_size].u_int, NULL, false);

@ -85,9 +85,9 @@ STATIC void traceback_exception_common(mp_print_t *print, mp_obj_t value, mp_obj
STATIC mp_obj_t traceback_format_exception(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { STATIC mp_obj_t traceback_format_exception(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
enum { ARG_etype, ARG_value, ARG_tb, ARG_limit, ARG_chain }; enum { ARG_etype, ARG_value, ARG_tb, ARG_limit, ARG_chain };
static const mp_arg_t allowed_args[] = { static const mp_arg_t allowed_args[] = {
{ MP_QSTR_etype, MP_ARG_OBJ | MP_ARG_REQUIRED }, { MP_QSTR_etype, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} },
{ MP_QSTR_value, MP_ARG_OBJ | MP_ARG_REQUIRED }, { MP_QSTR_value, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} },
{ MP_QSTR_tb, MP_ARG_OBJ | MP_ARG_REQUIRED }, { MP_QSTR_tb, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} },
{ MP_QSTR_limit, MP_ARG_OBJ, {.u_obj = mp_const_none} }, { MP_QSTR_limit, MP_ARG_OBJ, {.u_obj = mp_const_none} },
{ MP_QSTR_chain, MP_ARG_BOOL, {.u_bool = true} }, { MP_QSTR_chain, MP_ARG_BOOL, {.u_bool = true} },
}; };
@ -127,9 +127,9 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(traceback_format_exception_obj, 0, traceback_f
STATIC mp_obj_t traceback_print_exception(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { STATIC mp_obj_t traceback_print_exception(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
enum { ARG_etype, ARG_value, ARG_tb, ARG_limit, ARG_file, ARG_chain }; enum { ARG_etype, ARG_value, ARG_tb, ARG_limit, ARG_file, ARG_chain };
static const mp_arg_t allowed_args[] = { static const mp_arg_t allowed_args[] = {
{ MP_QSTR_etype, MP_ARG_OBJ | MP_ARG_REQUIRED }, { MP_QSTR_etype, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} },
{ MP_QSTR_value, MP_ARG_OBJ | MP_ARG_REQUIRED }, { MP_QSTR_value, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} },
{ MP_QSTR_tb, MP_ARG_OBJ | MP_ARG_REQUIRED }, { MP_QSTR_tb, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} },
{ MP_QSTR_limit, MP_ARG_OBJ, {.u_obj = mp_const_none} }, { MP_QSTR_limit, MP_ARG_OBJ, {.u_obj = mp_const_none} },
{ MP_QSTR_file, MP_ARG_OBJ, {.u_obj = mp_const_none} }, { MP_QSTR_file, MP_ARG_OBJ, {.u_obj = mp_const_none} },
{ MP_QSTR_chain, MP_ARG_BOOL, {.u_bool = true} }, { MP_QSTR_chain, MP_ARG_BOOL, {.u_bool = true} },

@ -0,0 +1,23 @@
No Trace:
Exception: test
Default Trace:
Traceback (most recent call last):
File "circuitpython/traceback_test.py", line 13, in <module>
File "circuitpython/traceback_test.py", line 9, in fun
Exception: test
Limit=1 Trace:
Traceback (most recent call last):
File "circuitpython/traceback_test.py", line 13, in <module>
Exception: test
Limit=0 Trace:
Exception: test
Limit=-1 Trace:
Traceback (most recent call last):
File "circuitpython/traceback_test.py", line 9, in fun
Exception: test

@ -17,7 +17,6 @@ if DEBUG:
def dprint(*v): def dprint(*v):
print(*v) print(*v)
else: else:
def dprint(*v): def dprint(*v):

@ -511,6 +511,9 @@ def run_tests(pyb, tests, args, result_dir, num_threads=1):
skip_tests.add("basics/scope_implicit.py") # requires checking for unbound local skip_tests.add("basics/scope_implicit.py") # requires checking for unbound local
skip_tests.add("basics/try_finally_return2.py") # requires raise_varargs skip_tests.add("basics/try_finally_return2.py") # requires raise_varargs
skip_tests.add("basics/unboundlocal.py") # requires checking for unbound local skip_tests.add("basics/unboundlocal.py") # requires checking for unbound local
skip_tests.add(
"circuitpython/traceback_test.py"
) # because native doesn't have proper traceback info
skip_tests.add("extmod/uasyncio_event.py") # unknown issue skip_tests.add("extmod/uasyncio_event.py") # unknown issue
skip_tests.add("extmod/uasyncio_lock.py") # requires async with skip_tests.add("extmod/uasyncio_lock.py") # requires async with
skip_tests.add("extmod/uasyncio_micropython.py") # unknown issue skip_tests.add("extmod/uasyncio_micropython.py") # unknown issue

@ -35,11 +35,11 @@ cexample cmath collections cppexample
displayio errno ffi framebuf displayio errno ffi framebuf
gc gifio hashlib json gc gifio hashlib json
math qrio rainbowio re math qrio rainbowio re
sys termios ubinascii uctypes sys termios traceback ubinascii
uerrno uheapq uio ujson uctypes uerrno uheapq uio
ulab uos urandom ure ujson ulab uos urandom
uselect ustruct utime utimeq ure uselect ustruct utime
uzlib utimeq uzlib
ime ime
utime utimeq utime utimeq

Some files were not shown because too many files have changed in this diff Show More