Merge branch 'adafruit:main' into main
This commit is contained in:
commit
5df4c8640e
2
.github/workflows/create_website_pr.yml
vendored
2
.github/workflows/create_website_pr.yml
vendored
@ -42,5 +42,5 @@ jobs:
|
||||
working-directory: tools
|
||||
env:
|
||||
RELEASE_TAG: ${{ github.event.release.tag_name }}
|
||||
ADABOT_GITHUB_ACCESS_TOKEN: ${{ secrets.BLINKA_GITHUB_ACCESS_TOKEN }}
|
||||
ADABOT_GITHUB_ACCESS_TOKEN: ${{ secrets.ADABOT_GITHUB_ACCESS_TOKEN }}
|
||||
if: github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested')
|
||||
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -196,6 +196,9 @@
|
||||
url = https://github.com/raspberrypi/rpi-firmware.git
|
||||
branch = master
|
||||
shallow = true
|
||||
[submodule "lib/adafruit_floppy"]
|
||||
path = lib/adafruit_floppy
|
||||
url = https://github.com/adafruit/Adafruit_Floppy
|
||||
[submodule "ports/stm/st_driver/cmsis_device_f4"]
|
||||
path = ports/stm/st_driver/cmsis_device_f4
|
||||
url = https://github.com/STMicroelectronics/cmsis_device_f4.git
|
||||
|
2
conf.py
2
conf.py
@ -83,7 +83,7 @@ extensions = [
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['templates']
|
||||
templates_path = ['templates', "docs/templates"]
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = {
|
||||
|
@ -440,7 +440,7 @@ STATIC const mp_obj_property_t fat_vfs_label_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&fat_vfs_getlabel_obj,
|
||||
(mp_obj_t)&fat_vfs_setlabel_obj,
|
||||
(mp_obj_t)MP_ROM_NONE},
|
||||
MP_ROM_NONE},
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit baab505fd4dcc54d8e9d45e6463c68bdc6d100eb
|
||||
Subproject commit 9bd48820928afad549832fe9b4ae497b224007f0
|
@ -1 +1 @@
|
||||
Subproject commit beec03065712cd62f79e839d5cf8f7c9847fc3b1
|
||||
Subproject commit 13c529288e9431541fe58cf7992d4f53f7ca3b76
|
@ -1 +1 @@
|
||||
Subproject commit 859a7d403e4e79ec1c8915c81ba581dbaab8a4ac
|
||||
Subproject commit 258bb62c58e545c38749b8a66f5872035b2384cb
|
@ -1 +1 @@
|
||||
Subproject commit a8abc3aa8dece6c4d0152b001dfca7d2c279f899
|
||||
Subproject commit b96f0d279481446017ca1cc1ff4abf1f5a10346f
|
@ -1 +1 @@
|
||||
Subproject commit b04042addd47c2645e139032b02a3b9ddeeb3425
|
||||
Subproject commit f82d3ef195256aa71d274a34ea25f760d7e651d1
|
@ -1 +1 @@
|
||||
Subproject commit 708bb0c82c7b075bd6912c97231aea880b1a1cb8
|
||||
Subproject commit 2fad6f2f98c0df135e2306d32af18bb2796b852c
|
@ -1 +1 @@
|
||||
Subproject commit 0bd04a235556979bd13a373821a6602445fe132b
|
||||
Subproject commit de3276cc08ba13901d1f69060ff7501c1699bc4d
|
@ -1 +1 @@
|
||||
Subproject commit eb6124fdff59b98d7d49dd86072df99c0e97167b
|
||||
Subproject commit a90579e1e1e1c973e6ba8f6cf8e914d77fc8f0f2
|
@ -1 +1 @@
|
||||
Subproject commit 13775b058422085762874fde8e587f2e9f066855
|
||||
Subproject commit ddd26eb4abcd3c10ae5dd33b1345d10d58707995
|
@ -1 +1 @@
|
||||
Subproject commit bccbe3da75f42b540b3faebb9d5a2d1ccf5e7147
|
||||
Subproject commit a77f0f9c2e8f64568bbb68254d0134fbc7b5a8af
|
@ -1 +1 @@
|
||||
Subproject commit 9771c9369c7e251f514eb26abcfcea1e891e6f27
|
||||
Subproject commit 1e478b1530b3be81bd84f13620d0a23502d377f1
|
@ -1 +1 @@
|
||||
Subproject commit 29816fbe98c012ea0a1b5cae7f07aeae7ebf8b52
|
||||
Subproject commit a9cf0cde77c185c6bbc79a3b6d77dd024a9683d2
|
@ -1 +1 @@
|
||||
Subproject commit 75e9ec62e4fe47a7212a69fb84aa1cfa7848e2b3
|
||||
Subproject commit 2dfd61a0d5ffc8048e72d24e5ecdac9a74bb2bc3
|
@ -1 +1 @@
|
||||
Subproject commit 6641509ef43b672a82addf41f02b6466d6c67f01
|
||||
Subproject commit 3d871907f0187c627277382f184209f5520703a6
|
@ -1 +1 @@
|
||||
Subproject commit fd478fda7adbd254282b8cad5000f06a96760c91
|
||||
Subproject commit 207953aac033d40728b5f8dd7fd73d90facbca5c
|
@ -1 +1 @@
|
||||
Subproject commit a115fc30df1c230c09c8a533ca77f3a4afd9f6c3
|
||||
Subproject commit 36d4a31010461e47f265553ebd764c69d38a254c
|
@ -1 +1 @@
|
||||
Subproject commit 77ba8eedf89b96c85a6194e5da2061c9d5c20242
|
||||
Subproject commit bcfaae874fbae294ce04549d55b96d6b41603944
|
@ -1 +1 @@
|
||||
Subproject commit 270565665ada26fe8d7a99a3cb5941b452444471
|
||||
Subproject commit 2e6b3f9feeacc678402454f7d3416b04a9a93e17
|
@ -1 +1 @@
|
||||
Subproject commit 9dd51fecfcbb15cb2a00eeadbd66b36ce0c09ee2
|
||||
Subproject commit da02c76d4c802cd5abac73a5f274243b05e8cb35
|
@ -1 +1 @@
|
||||
Subproject commit 79c70a49285be8b6548de3f5ca20aa5ac1fafa22
|
||||
Subproject commit 5fdd62ab69fda70407644acc6f9b45681da9ef68
|
@ -1 +1 @@
|
||||
Subproject commit c89c8689161e5b35bfe4fa8355615696e03f0648
|
||||
Subproject commit 3aaf72165bc6ba10bf5219716c8654651649f87b
|
1
lib/adafruit_floppy
Submodule
1
lib/adafruit_floppy
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit e36a6127b957ab2f602e031ba3583de9c571582e
|
28
locale/ID.po
28
locale/ID.po
@ -631,7 +631,7 @@ msgstr "Panjang buffer %d terlalu besar. Itu harus kurang dari %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "Panjang buffer harus kelipatan 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
@ -1124,6 +1124,11 @@ msgstr ""
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr "Frekuensi harus cocok dengan PWMOut yang ada menggunakan timer ini"
|
||||
@ -1549,6 +1554,15 @@ msgstr ""
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr "Penundaan mulai mikrofon harus dalam kisaran 0,0 hingga 1,0"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr "Tidak menemukan Pin MISO atau MOSI"
|
||||
@ -1618,6 +1632,10 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr "Nama terlalu panjang"
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2050,7 +2068,7 @@ msgstr "Kesalahan DeInit RNG"
|
||||
msgid "RNG Init Error"
|
||||
msgstr "Kesalahan Init RNG"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -3054,7 +3072,7 @@ msgstr ""
|
||||
msgid "complex values not supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "kompresi header"
|
||||
|
||||
@ -3308,6 +3326,10 @@ msgstr ""
|
||||
msgid "format requires a dict"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr ""
|
||||
|
@ -623,7 +623,7 @@ msgstr ""
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
@ -1107,6 +1107,11 @@ msgstr ""
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1530,6 +1535,15 @@ msgstr ""
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr ""
|
||||
@ -1599,6 +1613,10 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -1731,6 +1749,10 @@ msgstr ""
|
||||
msgid "No space left on device"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c
|
||||
msgid "No such device"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c
|
||||
msgid "No such file/directory"
|
||||
msgstr ""
|
||||
@ -1838,6 +1860,10 @@ msgstr ""
|
||||
msgid "Only one color can be transparent at a time"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c
|
||||
msgid "Operation not permitted"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||
msgid "Operation or feature not supported"
|
||||
msgstr ""
|
||||
@ -2019,7 +2045,7 @@ msgstr ""
|
||||
msgid "RNG Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -2503,10 +2529,6 @@ msgstr ""
|
||||
msgid "Unsupported format"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c
|
||||
msgid "Unsupported operation"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/dualbank/__init__.c
|
||||
msgid "Update Failed"
|
||||
msgstr ""
|
||||
@ -3019,7 +3041,7 @@ msgstr ""
|
||||
msgid "complex values not supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr ""
|
||||
|
||||
@ -3273,6 +3295,10 @@ msgstr ""
|
||||
msgid "format requires a dict"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr ""
|
||||
|
28
locale/cs.po
28
locale/cs.po
@ -630,7 +630,7 @@ msgstr ""
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
@ -1114,6 +1114,11 @@ msgstr ""
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1537,6 +1542,15 @@ msgstr ""
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr ""
|
||||
@ -1606,6 +1620,10 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2028,7 +2046,7 @@ msgstr ""
|
||||
msgid "RNG Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -3028,7 +3046,7 @@ msgstr ""
|
||||
msgid "complex values not supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr ""
|
||||
|
||||
@ -3282,6 +3300,10 @@ msgstr ""
|
||||
msgid "format requires a dict"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr ""
|
||||
|
@ -634,7 +634,7 @@ msgstr "Die Pufferlänge %d ist zu groß. Sie muss kleiner als %d sein"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "Die Pufferlänge muss ein vielfaches von 512 sein"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "Der Puffer muss ein vielfaches von 512 bytes sein"
|
||||
|
||||
@ -1125,6 +1125,11 @@ msgstr "Format nicht unterstützt"
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr "Framepuffer benötigt %d bytes"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1557,6 +1562,15 @@ msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr ""
|
||||
"Die Startverzögerung des Mikrofons muss im Bereich von 0,0 bis 1,0 liegen"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr "Fehlender MISO- oder MOSI-Pin"
|
||||
@ -1626,6 +1640,10 @@ msgstr "NVS-Fehler"
|
||||
msgid "Name too long"
|
||||
msgstr "Name zu lang"
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr "Kein Speicher mehr für Nible vorhanden"
|
||||
@ -2058,7 +2076,7 @@ msgstr "RNG DeInit-Fehler"
|
||||
msgid "RNG Init Error"
|
||||
msgstr "RNG Init-Fehler"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr "RS485 wird von diesem Gerät nicht unterstützt"
|
||||
|
||||
@ -3097,7 +3115,7 @@ msgstr "Komplexe Division durch null"
|
||||
msgid "complex values not supported"
|
||||
msgstr "Komplexe Zahlen nicht unterstützt"
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "kompression header"
|
||||
|
||||
@ -3353,6 +3371,10 @@ msgstr "Die Schriftart (font) muss 2048 Byte lang sein"
|
||||
msgid "format requires a dict"
|
||||
msgstr "Format erfordert ein Wörterbuch (dict)"
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr "voll"
|
||||
|
28
locale/el.po
28
locale/el.po
@ -623,7 +623,7 @@ msgstr ""
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
@ -1107,6 +1107,11 @@ msgstr ""
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1530,6 +1535,15 @@ msgstr ""
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr ""
|
||||
@ -1599,6 +1613,10 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2019,7 +2037,7 @@ msgstr ""
|
||||
msgid "RNG Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -3019,7 +3037,7 @@ msgstr ""
|
||||
msgid "complex values not supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr ""
|
||||
|
||||
@ -3273,6 +3291,10 @@ msgstr ""
|
||||
msgid "format requires a dict"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr ""
|
||||
|
@ -632,7 +632,7 @@ msgstr "Buffer length %d too big. It must be less than %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "Buffer length must be a multiple of 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "Buffer must be a multiple of 512 bytes"
|
||||
|
||||
@ -1118,6 +1118,11 @@ msgstr "Format not supported"
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr "Framebuffer requires %d bytes"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr "Frequency must match existing PWMOut using this timer"
|
||||
@ -1543,6 +1548,15 @@ msgstr "Messages limited to 8 bytes"
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr "Missing MISO or MOSI pin"
|
||||
@ -1612,6 +1626,10 @@ msgstr "NVS Error"
|
||||
msgid "Name too long"
|
||||
msgstr "Name too long"
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2041,7 +2059,7 @@ msgstr "RNG deinit Error"
|
||||
msgid "RNG Init Error"
|
||||
msgstr "RNG init Error"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr "RS485 not yet supported on this device"
|
||||
|
||||
@ -3053,7 +3071,7 @@ msgstr "complex division by zero"
|
||||
msgid "complex values not supported"
|
||||
msgstr "complex values not supported"
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "compression header"
|
||||
|
||||
@ -3308,6 +3326,10 @@ msgstr "font must be 2048 bytes long"
|
||||
msgid "format requires a dict"
|
||||
msgstr "format requires a dict"
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr "full"
|
||||
|
28
locale/es.po
28
locale/es.po
@ -637,7 +637,7 @@ msgstr "Longitud del buffer %d es demasiado grande. Tiene que ser menor a %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "El tamaño del búfer debe ser múltiplo de 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "Búfer deber ser un múltiplo de 512 bytes"
|
||||
|
||||
@ -1128,6 +1128,11 @@ msgstr "Sin capacidades para el formato"
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr "Framebuffer requiere %d bytes"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1561,6 +1566,15 @@ msgstr "Mensajes limitados a 8 bytes"
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr "Micrófono demora de inicio debe estar en el rango 0.0 a 1.0"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr "Falta el pin MISO o MOSI"
|
||||
@ -1634,6 +1648,10 @@ msgstr "Error NVS"
|
||||
msgid "Name too long"
|
||||
msgstr "Nombre muy largo"
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2068,7 +2086,7 @@ msgstr "Error de desinicialización de RNG"
|
||||
msgid "RNG Init Error"
|
||||
msgstr "Error de inicialización de RNG"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr "RS485 no esta soportado todavía en este dispositivo"
|
||||
|
||||
@ -3091,7 +3109,7 @@ msgstr "división compleja por cero"
|
||||
msgid "complex values not supported"
|
||||
msgstr "valores complejos no soportados"
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "encabezado de compresión"
|
||||
|
||||
@ -3347,6 +3365,10 @@ msgstr "font debe ser 2048 bytes de largo"
|
||||
msgid "format requires a dict"
|
||||
msgstr "format requiere un dict"
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr "lleno"
|
||||
|
@ -630,7 +630,7 @@ msgstr ""
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
@ -1120,6 +1120,11 @@ msgstr ""
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1545,6 +1550,15 @@ msgstr ""
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr "Ang delay ng startup ng mikropono ay dapat na nasa 0.0 hanggang 1.0"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr ""
|
||||
@ -1614,6 +1628,10 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2038,7 +2056,7 @@ msgstr ""
|
||||
msgid "RNG Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -3048,7 +3066,7 @@ msgstr "kumplikadong dibisyon sa pamamagitan ng zero"
|
||||
msgid "complex values not supported"
|
||||
msgstr "kumplikadong values hindi sinusuportahan"
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "compression header"
|
||||
|
||||
@ -3307,6 +3325,10 @@ msgstr "font ay dapat 2048 bytes ang haba"
|
||||
msgid "format requires a dict"
|
||||
msgstr "kailangan ng format ng dict"
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr "puno"
|
||||
|
28
locale/fr.po
28
locale/fr.po
@ -638,7 +638,7 @@ msgstr "La longueur du tampon %d est trop grande. Il doit être inférieur à %d
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "La longueur de la mémoire tampon doit être un multiple de 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "La mémoire tampon doit être un multiple de 512"
|
||||
|
||||
@ -1138,6 +1138,11 @@ msgstr "Format non supporté"
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr "FrameBuffer nécessite %d octets"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1574,6 +1579,15 @@ msgstr "Messages limités à 8 octets"
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr "Le délais au démarrage du micro doit être entre 0.0 et 1.0"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr "Broche MISO ou MOSI manquante"
|
||||
@ -1645,6 +1659,10 @@ msgstr "Erreur NVS"
|
||||
msgid "Name too long"
|
||||
msgstr "Nom trop long"
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2081,7 +2099,7 @@ msgstr "Erreur de désinitialisation du RNG"
|
||||
msgid "RNG Init Error"
|
||||
msgstr "Erreur d'initialisation du RNG"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr "RS485 n'est pas encore supporté sur cet appareil"
|
||||
|
||||
@ -3117,7 +3135,7 @@ msgstr "division complexe par zéro"
|
||||
msgid "complex values not supported"
|
||||
msgstr "valeurs complexes non supportées"
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "entête de compression"
|
||||
|
||||
@ -3374,6 +3392,10 @@ msgstr "la police doit être longue de 2048 octets"
|
||||
msgid "format requires a dict"
|
||||
msgstr "le format nécessite un dict"
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr "plein"
|
||||
|
28
locale/hi.po
28
locale/hi.po
@ -623,7 +623,7 @@ msgstr ""
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
@ -1107,6 +1107,11 @@ msgstr ""
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1530,6 +1535,15 @@ msgstr ""
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr ""
|
||||
@ -1599,6 +1613,10 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2019,7 +2037,7 @@ msgstr ""
|
||||
msgid "RNG Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -3019,7 +3037,7 @@ msgstr ""
|
||||
msgid "complex values not supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr ""
|
||||
|
||||
@ -3273,6 +3291,10 @@ msgstr ""
|
||||
msgid "format requires a dict"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr ""
|
||||
|
@ -636,7 +636,7 @@ msgstr "Lunghezza Buffer %d troppo grande. Deve essere meno di %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "La lunghezza del buffer deve essere un multiplo di 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "Il buffer deve essere un multiplo di 512 bytes"
|
||||
|
||||
@ -1125,6 +1125,11 @@ msgstr ""
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1554,6 +1559,15 @@ msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr ""
|
||||
"Il ritardo di avvio del microfono deve essere nell'intervallo tra 0.0 e 1.0"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr ""
|
||||
@ -1623,6 +1637,10 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2053,7 +2071,7 @@ msgstr ""
|
||||
msgid "RNG Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -3064,7 +3082,7 @@ msgstr "complex divisione per zero"
|
||||
msgid "complex values not supported"
|
||||
msgstr "valori complessi non supportai"
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "compressione dell'header"
|
||||
|
||||
@ -3322,6 +3340,10 @@ msgstr "il font deve essere lungo 2048 byte"
|
||||
msgid "format requires a dict"
|
||||
msgstr "la formattazione richiede un dict"
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr "pieno"
|
||||
|
28
locale/ja.po
28
locale/ja.po
@ -630,7 +630,7 @@ msgstr "バッファ長%dは大きすぎます。%d以下でなければなり
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "バッファ長は512の倍数でなければなりません"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "バッファは512の倍数でなければなりません"
|
||||
|
||||
@ -1116,6 +1116,11 @@ msgstr "非対応の形式"
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr "このタイマーを使う既存のPWMOutと周波数を一致させる必要があります"
|
||||
@ -1541,6 +1546,15 @@ msgstr ""
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr "マイクのスタートアップディレイは 0.0 から 1.0 の間でなければなりません"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr "MISOまたはMOSIピンがありません"
|
||||
@ -1610,6 +1624,10 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr "名前が長すぎます"
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2033,7 +2051,7 @@ msgstr "RNG解体エラー"
|
||||
msgid "RNG Init Error"
|
||||
msgstr "乱数生成器の初期化エラー"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -3036,7 +3054,7 @@ msgstr "複素数ゼロ除算"
|
||||
msgid "complex values not supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "圧縮ヘッダー"
|
||||
|
||||
@ -3292,6 +3310,10 @@ msgstr "fontは2048バイト長でなければなりません"
|
||||
msgid "format requires a dict"
|
||||
msgstr "formatにはdictが必要"
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr ""
|
||||
|
28
locale/ko.po
28
locale/ko.po
@ -626,7 +626,7 @@ msgstr ""
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
@ -1110,6 +1110,11 @@ msgstr ""
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1533,6 +1538,15 @@ msgstr ""
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr ""
|
||||
@ -1602,6 +1616,10 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2022,7 +2040,7 @@ msgstr ""
|
||||
msgid "RNG Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -3023,7 +3041,7 @@ msgstr ""
|
||||
msgid "complex values not supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr ""
|
||||
|
||||
@ -3277,6 +3295,10 @@ msgstr ""
|
||||
msgid "format requires a dict"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr "완전한(full)"
|
||||
|
28
locale/nl.po
28
locale/nl.po
@ -628,7 +628,7 @@ msgstr "Buffer lengte %d te groot. Het moet kleiner zijn dan %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "Buffer lengte moet een veelvoud van 512 zijn"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "Buffer moet een veelvoud van 512 bytes zijn"
|
||||
|
||||
@ -1116,6 +1116,11 @@ msgstr "Formaat wordt niet ondersteund"
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr "Framebuffer benodigd %d bytes"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1542,6 +1547,15 @@ msgstr "Berichten zijn beperkt tot 8 bytes"
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr "Microfoon opstart vertraging moet in bereik van 0.0 tot 1.0 zijn"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr "Ontbrekende MISO of MOSI Pin"
|
||||
@ -1611,6 +1625,10 @@ msgstr "NVS-fout"
|
||||
msgid "Name too long"
|
||||
msgstr "Naam te lang"
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2045,7 +2063,7 @@ msgstr "RNG DeInit Fout"
|
||||
msgid "RNG Init Error"
|
||||
msgstr "RNG Init Fout"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -3053,7 +3071,7 @@ msgstr "complexe deling door 0"
|
||||
msgid "complex values not supported"
|
||||
msgstr "complexe waardes niet ondersteund"
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "compressie header"
|
||||
|
||||
@ -3309,6 +3327,10 @@ msgstr "lettertype moet 2048 bytes lang zijn"
|
||||
msgid "format requires a dict"
|
||||
msgstr "format vereist een dict"
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr "vol"
|
||||
|
28
locale/pl.po
28
locale/pl.po
@ -630,7 +630,7 @@ msgstr "Długość %d bufora jest za duża. Musi być mniejsza niż %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "Długość bufora musi być wielokrotnością 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "Bufor musi być wielokrotnością 512 bajtów"
|
||||
|
||||
@ -1116,6 +1116,11 @@ msgstr "Nie wspierany format"
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr "Bufor ramki wymaga %d bajtów"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1541,6 +1546,15 @@ msgstr "Wiadomości ograniczone do 8 bajtów"
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr "Opóźnienie włączenia mikrofonu musi być w zakresie od 0.0 do 1.0"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr "Brak pinu MISO lub MOSI"
|
||||
@ -1610,6 +1624,10 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr "Za długa nazwa"
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2030,7 +2048,7 @@ msgstr ""
|
||||
msgid "RNG Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -3030,7 +3048,7 @@ msgstr "zespolone dzielenie przez zero"
|
||||
msgid "complex values not supported"
|
||||
msgstr "wartości zespolone nieobsługiwane"
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "nagłówek kompresji"
|
||||
|
||||
@ -3285,6 +3303,10 @@ msgstr "font musi mieć 2048 bajtów długości"
|
||||
msgid "format requires a dict"
|
||||
msgstr "format wymaga słownika"
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr "pełny"
|
||||
|
@ -6,7 +6,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||
"PO-Revision-Date: 2022-03-21 22:57+0000\n"
|
||||
"PO-Revision-Date: 2022-05-08 16:37+0000\n"
|
||||
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: pt_BR\n"
|
||||
@ -14,7 +14,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.12-dev\n"
|
||||
"X-Generator: Weblate 4.12.1\n"
|
||||
|
||||
#: main.c
|
||||
msgid ""
|
||||
@ -643,7 +643,7 @@ msgstr "O tamanho do buffer %d é muito grande. Deve ser menor que %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "O comprimento do Buffer deve ser um múltiplo de 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "O buffer deve ser um múltiplo de 512 bytes"
|
||||
|
||||
@ -1135,6 +1135,13 @@ msgstr "O formato não é suportado"
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr "O Framebuffer requer %d bytes"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
"A frequência deve ser 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 ou "
|
||||
"1008 Mhz"
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1567,6 +1574,15 @@ msgstr "As mensagens estão limitadas a 8 bytes"
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr "O atraso na inicialização do microfone deve estar entre 0,0 e 1,0"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr "O tamanho dos dados é incompatível"
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr "Sinalizador de troca incompatível"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr "O pino MISO ou MOSI está ausente"
|
||||
@ -1636,6 +1652,10 @@ msgstr "Erro NVS"
|
||||
msgid "Name too long"
|
||||
msgstr "Nome muito longo"
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr "O novo bitmap deve ter o mesmo tamanho que o bitmap antigo"
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr "Ágil fora da memória"
|
||||
@ -2075,7 +2095,7 @@ msgstr "Erro DeInit RNG"
|
||||
msgid "RNG Init Error"
|
||||
msgstr "Houve um erro na inicialização do RNG"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr "Ainda não há suporte para o RS485 neste dispositivo"
|
||||
|
||||
@ -3109,7 +3129,7 @@ msgstr "divisão complexa por zero"
|
||||
msgid "complex values not supported"
|
||||
msgstr "os valores complexos não compatíveis"
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "compressão do cabeçalho"
|
||||
|
||||
@ -3366,6 +3386,10 @@ msgstr "a fonte deve ter 2048 bytes de comprimento"
|
||||
msgid "format requires a dict"
|
||||
msgstr "formato requer um dict"
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr "nesta placa, a frequência é de apenas leitura"
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr "cheio"
|
||||
|
28
locale/ru.po
28
locale/ru.po
@ -637,7 +637,7 @@ msgstr "Размер буфера %d слишком большой. Он дол
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "Размер буфера должен быть кратен 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "Буфер должен быть кратен 512"
|
||||
|
||||
@ -1134,6 +1134,11 @@ msgstr "Формат не поддерживается"
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr "Фреймбуфер требует %d байт"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1566,6 +1571,15 @@ msgstr "Сообщения ограничены 8 байтами"
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr "Задержка включения микрофона должна быть в диапазоне от 0.0 до 1.0"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr "Отсутствует пин MISO или MOSI"
|
||||
@ -1636,6 +1650,10 @@ msgstr "Ошибка NVS"
|
||||
msgid "Name too long"
|
||||
msgstr "Имя слишком длинное"
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2066,7 +2084,7 @@ msgstr ""
|
||||
msgid "RNG Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -3068,7 +3086,7 @@ msgstr ""
|
||||
msgid "complex values not supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr ""
|
||||
|
||||
@ -3322,6 +3340,10 @@ msgstr ""
|
||||
msgid "format requires a dict"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr ""
|
||||
|
40
locale/sv.po
40
locale/sv.po
@ -6,7 +6,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||
"PO-Revision-Date: 2022-03-23 08:58+0000\n"
|
||||
"PO-Revision-Date: 2022-05-10 08:16+0000\n"
|
||||
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: sv\n"
|
||||
@ -14,7 +14,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.12-dev\n"
|
||||
"X-Generator: Weblate 4.12.1\n"
|
||||
|
||||
#: main.c
|
||||
msgid ""
|
||||
@ -633,7 +633,7 @@ msgstr "Buffertlängd %d för stor. Den måste vara mindre än %d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "Buffertlängd måste vara en multipel av 512"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "Bufferten måste vara en multipel av 512 byte"
|
||||
|
||||
@ -1122,18 +1122,25 @@ msgstr "Formatet stöds inte"
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr "Framebuffer kräver %d byte"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
"Frekvens måste vara en av 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 "
|
||||
"eller 1008 Mhz"
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr "Frekvensen måste matcha befintlig PWMOut med denna timer"
|
||||
msgstr "Frekvensen måste matcha befintlig PWMOut med den här timern"
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/bitbangio/SPI.c
|
||||
#: shared-bindings/busio/I2C.c shared-bindings/busio/SPI.c
|
||||
msgid "Function requires lock"
|
||||
msgstr "Funktion kräver lås"
|
||||
msgstr "Funktionen kräver lås"
|
||||
|
||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||
msgid "Generic Failure"
|
||||
msgstr "Generiskt fel"
|
||||
msgstr "Allmänt fel"
|
||||
|
||||
#: shared-bindings/displayio/Display.c
|
||||
#: shared-bindings/displayio/EPaperDisplay.c
|
||||
@ -1550,6 +1557,15 @@ msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr ""
|
||||
"Startfördröjningen för mikrofonen måste vara i intervallet 0,0 till 1,0"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr "Datastorlek matchar inte"
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr "Felaktig swapflagga"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr "MISO- eller MOSI-pinne saknas"
|
||||
@ -1619,6 +1635,10 @@ msgstr "NVS-fel"
|
||||
msgid "Name too long"
|
||||
msgstr "Name är för långt"
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr "Ny bitmapp måste ha samma storlek som tidigare bitmapp"
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr "Nimble har inget minne kvar"
|
||||
@ -2051,7 +2071,7 @@ msgstr "RNG DeInit-fel"
|
||||
msgid "RNG Init Error"
|
||||
msgstr "RNG Init-fel"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr "RS485 stöds ännu inte på den här enheten"
|
||||
|
||||
@ -3073,7 +3093,7 @@ msgstr "komplex division med noll"
|
||||
msgid "complex values not supported"
|
||||
msgstr "komplexa värden stöds inte"
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "komprimeringsheader"
|
||||
|
||||
@ -3330,6 +3350,10 @@ msgstr "typsnitt måste vara 2048 bytes långt"
|
||||
msgid "format requires a dict"
|
||||
msgstr "formatet kräver en dict"
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr "frekvens är skrivskyddad för detta kort"
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr "full"
|
||||
|
82
locale/tr.po
82
locale/tr.po
@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2022-01-16 13:56+0000\n"
|
||||
"Last-Translator: Gökhan Koçmarlı <gokhankocmarli@gmail.com>\n"
|
||||
"PO-Revision-Date: 2022-04-19 17:07+0000\n"
|
||||
"Last-Translator: Siyabend Ürün <urunsiyabend@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: tr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.10.1\n"
|
||||
"X-Generator: Weblate 4.12-dev\n"
|
||||
|
||||
#: main.c
|
||||
msgid ""
|
||||
@ -30,6 +30,9 @@ msgid ""
|
||||
"\n"
|
||||
"Code stopped by auto-reload. Reloading soon.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Program otomatik yeniden yükleme tarafından durduruldu. Birazdan tekrar "
|
||||
"yüklenecek.\n"
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid ""
|
||||
@ -513,7 +516,7 @@ msgstr "Dizi değerleri tekil bytelar olmalıdır."
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
msgid "At most %d %q may be specified (not %d)"
|
||||
msgstr ""
|
||||
msgstr "En az %d %q belirtilmeli (%d değil)"
|
||||
|
||||
#: shared-module/memorymonitor/AllocationAlarm.c
|
||||
#, c-format
|
||||
@ -568,23 +571,24 @@ msgstr ""
|
||||
#: shared-bindings/rgbmatrix/RGBMatrix.c
|
||||
#, c-format
|
||||
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
|
||||
msgstr ""
|
||||
msgstr "Bit derinliği 1-6 aralığında olmalı, %d değil"
|
||||
|
||||
#: shared-bindings/audiobusio/PDMIn.c
|
||||
msgid "Bit depth must be multiple of 8."
|
||||
msgstr ""
|
||||
msgstr "Bit derinliği 8'in katı olacak şekilde olmalı."
|
||||
|
||||
#: shared-bindings/bitmaptools/__init__.c
|
||||
#, fuzzy
|
||||
msgid "Bitmap size and bits per value must match"
|
||||
msgstr ""
|
||||
msgstr "Bitmap boyutu ve bit başına değer uyuşmalı"
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Boot device must be first device (interface #0)."
|
||||
msgstr ""
|
||||
msgstr "Önyükleme cihazı ilk cihaz olmalı (arayüz #0)."
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c
|
||||
msgid "Both RX and TX required for flow control"
|
||||
msgstr ""
|
||||
msgstr "Hem RX hem de TX akış kontrolü için gerekli"
|
||||
|
||||
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
|
||||
msgid "Both pins must support hardware interrupts"
|
||||
@ -595,12 +599,12 @@ msgstr ""
|
||||
#: shared-bindings/is31fl3741/FrameBuffer.c
|
||||
#: shared-bindings/rgbmatrix/RGBMatrix.c
|
||||
msgid "Brightness must be 0-1.0"
|
||||
msgstr ""
|
||||
msgstr "Parlaklık 0-1.0 aralığında olmalı"
|
||||
|
||||
#: shared-bindings/displayio/Display.c
|
||||
#: shared-bindings/framebufferio/FramebufferDisplay.c
|
||||
msgid "Brightness not adjustable"
|
||||
msgstr ""
|
||||
msgstr "Parlaklık ayarlanabilir değil"
|
||||
|
||||
#: shared-bindings/_bleio/UUID.c
|
||||
#, c-format
|
||||
@ -614,35 +618,35 @@ msgstr ""
|
||||
#: shared-module/usb_hid/Device.c
|
||||
#, c-format
|
||||
msgid "Buffer incorrect size. Should be %d bytes."
|
||||
msgstr ""
|
||||
msgstr "Geçersiz arabellek boyutu. %d kadar olmalı"
|
||||
|
||||
#: shared-bindings/framebufferio/FramebufferDisplay.c
|
||||
msgid "Buffer is not a bytearray."
|
||||
msgstr ""
|
||||
msgstr "Arabellek bayt dizisi değil"
|
||||
|
||||
#: ports/cxd56/common-hal/camera/Camera.c shared-bindings/displayio/Display.c
|
||||
#: shared-bindings/framebufferio/FramebufferDisplay.c
|
||||
msgid "Buffer is too small"
|
||||
msgstr ""
|
||||
msgstr "Arabellek çok küçük"
|
||||
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/stm/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#, c-format
|
||||
msgid "Buffer length %d too big. It must be less than %d"
|
||||
msgstr ""
|
||||
msgstr "Mevcut arabellek boyutu %d çok büyük. En fazla %d kadar olmalı"
|
||||
|
||||
#: ports/atmel-samd/common-hal/sdioio/SDCard.c
|
||||
#: ports/cxd56/common-hal/sdioio/SDCard.c shared-module/sdcardio/SDCard.c
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr ""
|
||||
msgstr "Arabellek boyutu 512'nin katı olmalı"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/bitbangio/I2C.c
|
||||
msgid "Buffer must be at least length 1"
|
||||
msgstr ""
|
||||
msgstr "Arabellek boyutu en az 1 olmalı"
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
#, c-format
|
||||
@ -651,7 +655,7 @@ msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/imagecapture/ParallelImageCapture.c
|
||||
msgid "Buffers must be same size"
|
||||
msgstr ""
|
||||
msgstr "Arabellek boyutları aynı olmalı"
|
||||
|
||||
#: ports/atmel-samd/common-hal/paralleldisplay/ParallelBus.c
|
||||
#: ports/espressif/common-hal/paralleldisplay/ParallelBus.c
|
||||
@ -659,7 +663,7 @@ msgstr ""
|
||||
#: ports/raspberrypi/common-hal/paralleldisplay/ParallelBus.c
|
||||
#, c-format
|
||||
msgid "Bus pin %d is already in use"
|
||||
msgstr ""
|
||||
msgstr "Veriyolu pini %d kullanımda"
|
||||
|
||||
#: shared-bindings/_bleio/UUID.c
|
||||
msgid "Byte buffer must be 16 bytes."
|
||||
@ -667,15 +671,15 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr ""
|
||||
msgstr "Baytlar 0-255 aralığında olmalı"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
msgstr "CBC blokları 16 baytın katları şeklinde olmalı"
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "CIRCUITPY drive could not be found or created."
|
||||
msgstr ""
|
||||
msgstr "CIRCUITPY sürücüsü bulunamadı veya oluşturulamadı"
|
||||
|
||||
#: ports/espressif/bindings/espidf/__init__.c ports/espressif/esp_error.c
|
||||
msgid "CRC or checksum was invalid"
|
||||
@ -705,17 +709,17 @@ msgstr ""
|
||||
#: shared-bindings/storage/__init__.c shared-bindings/usb_cdc/__init__.c
|
||||
#: shared-bindings/usb_hid/__init__.c shared-bindings/usb_midi/__init__.c
|
||||
msgid "Cannot change USB devices now"
|
||||
msgstr ""
|
||||
msgstr "USB aygıtları şu an değiştirilemez"
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "Cannot create a new Adapter; use _bleio.adapter;"
|
||||
msgstr ""
|
||||
msgstr "Yeni Adapter oluşturulamaz, _bleio.adapter; kullanın"
|
||||
|
||||
#: shared-bindings/displayio/Bitmap.c
|
||||
#: shared-bindings/memorymonitor/AllocationSize.c
|
||||
#: shared-bindings/pulseio/PulseIn.c
|
||||
msgid "Cannot delete values"
|
||||
msgstr ""
|
||||
msgstr "Değerler silinemez"
|
||||
|
||||
#: ports/atmel-samd/common-hal/digitalio/DigitalInOut.c
|
||||
#: ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.c
|
||||
@ -1120,6 +1124,11 @@ msgstr ""
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr ""
|
||||
@ -1543,6 +1552,15 @@ msgstr ""
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr ""
|
||||
@ -1612,6 +1630,10 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr ""
|
||||
@ -2035,7 +2057,7 @@ msgstr ""
|
||||
msgid "RNG Init Error"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr ""
|
||||
|
||||
@ -3035,7 +3057,7 @@ msgstr ""
|
||||
msgid "complex values not supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr ""
|
||||
|
||||
@ -3289,6 +3311,10 @@ msgstr ""
|
||||
msgid "format requires a dict"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr ""
|
||||
|
@ -7,7 +7,7 @@ msgstr ""
|
||||
"Project-Id-Version: circuitpython-cn\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||
"PO-Revision-Date: 2022-02-13 00:57+0000\n"
|
||||
"PO-Revision-Date: 2022-04-23 21:13+0000\n"
|
||||
"Last-Translator: hexthat <hexthat@gmail.com>\n"
|
||||
"Language-Team: Chinese Hanyu Pinyin\n"
|
||||
"Language: zh_Latn_pinyin\n"
|
||||
@ -15,7 +15,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.11-dev\n"
|
||||
"X-Generator: Weblate 4.12.1-dev\n"
|
||||
|
||||
#: main.c
|
||||
msgid ""
|
||||
@ -30,6 +30,9 @@ msgid ""
|
||||
"\n"
|
||||
"Code stopped by auto-reload. Reloading soon.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"dài mǎ yīn zì dòng chóng xīn jiā zǎi ér tíng zhǐ. jí jiāng chóng xīn jiā "
|
||||
"zǎi.\n"
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid ""
|
||||
@ -356,9 +359,8 @@ msgid "0.0 to a complex power"
|
||||
msgstr "0.0 de fùshù cì mì"
|
||||
|
||||
#: py/modbuiltins.c
|
||||
#, fuzzy
|
||||
msgid "3-arg pow() not supported"
|
||||
msgstr "bù zhīchí 3-arg pow()"
|
||||
msgstr "bù zhī chí 3-arg pow()"
|
||||
|
||||
#: shared-module/msgpack/__init__.c
|
||||
msgid "64 bit types"
|
||||
@ -638,7 +640,7 @@ msgstr "Huǎnchōng qū chángdù%d tài dà. Tā bìxū xiǎoyú%d"
|
||||
msgid "Buffer length must be a multiple of 512"
|
||||
msgstr "Huǎnchōngqū chángdù bìxū wéi 512 de bèishù"
|
||||
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c
|
||||
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
|
||||
msgid "Buffer must be a multiple of 512 bytes"
|
||||
msgstr "Huǎnchōngqū bìxū shì 512 zìjié de bèishù"
|
||||
|
||||
@ -1131,6 +1133,12 @@ msgstr "Bù zhīyuán géshì"
|
||||
msgid "Framebuffer requires %d bytes"
|
||||
msgstr "zhēn huǎn chōng qū xū yào %d zì jié"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/microcontroller/Processor.c
|
||||
msgid ""
|
||||
"Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"
|
||||
msgstr ""
|
||||
"pín lǜ bì xū wéi 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 huò 1008 Mhz"
|
||||
|
||||
#: shared-bindings/pwmio/PWMOut.c
|
||||
msgid "Frequency must match existing PWMOut using this timer"
|
||||
msgstr "Pínlǜ bìxū yǔ shǐyòng cǐ jìshí qì de xiàn yǒu PWMOut xiāng pǐpèi"
|
||||
@ -1561,6 +1569,15 @@ msgstr "Yóujiàn xiànzhì wèi 8 gè zì jié"
|
||||
msgid "Microphone startup delay must be in range 0.0 to 1.0"
|
||||
msgstr "Màikèfēng qǐdòng yánchí bìxū zài 0.0 Dào 1.0 De fànwéi nèi"
|
||||
|
||||
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched data size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
|
||||
msgid "Mismatched swap flag"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Missing MISO or MOSI Pin"
|
||||
msgstr "Quēshǎo MISO huò MOSI yǐn jiǎo"
|
||||
@ -1631,6 +1648,10 @@ msgstr "NVS cuò wù"
|
||||
msgid "Name too long"
|
||||
msgstr "Míngchēng tài zhǎng"
|
||||
|
||||
#: shared-bindings/displayio/TileGrid.c
|
||||
msgid "New bitmap must be same size as old bitmap"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
msgid "Nimble out of memory"
|
||||
msgstr "líng huó de bǎi tuō jì yì"
|
||||
@ -2062,7 +2083,7 @@ msgstr "RNG qǔxiāo chūshǐhuà cuòwù"
|
||||
msgid "RNG Init Error"
|
||||
msgstr "RNG chūshǐhuà cuòwù"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c ports/raspberrypi/common-hal/busio/UART.c
|
||||
#: ports/nrf/common-hal/busio/UART.c
|
||||
msgid "RS485 Not yet supported on this device"
|
||||
msgstr "RS485 cǐ shè bèi shàng bù zhī chí"
|
||||
|
||||
@ -2462,7 +2483,7 @@ msgstr "Wúfǎ dúqǔ tiáosèbǎn shùjù"
|
||||
|
||||
#: ports/espressif/common-hal/mdns/Server.c
|
||||
msgid "Unable to start mDNS query"
|
||||
msgstr ""
|
||||
msgstr "wú fǎ qǐ dòng mDNS chá xún"
|
||||
|
||||
#: shared-bindings/nvm/ByteArray.c
|
||||
msgid "Unable to write to nvm."
|
||||
@ -2484,12 +2505,12 @@ msgstr "Wèi chǔlǐ de ESP TLS cuòwù %d %d %x %d"
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
#, c-format
|
||||
msgid "Unknown BLE error at %s:%d: %d"
|
||||
msgstr ""
|
||||
msgstr "%s:%d: %d chù chū xiàn wèi zhī BLE cuò wù"
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/__init__.c
|
||||
#, c-format
|
||||
msgid "Unknown BLE error: %d"
|
||||
msgstr ""
|
||||
msgstr "wèi zhī de BLE cuò wù: %d"
|
||||
|
||||
#: shared-bindings/wifi/Radio.c
|
||||
#, c-format
|
||||
@ -2953,7 +2974,7 @@ msgstr "wúfǎ yòng '%q' ' suǒyǐn jiāzài"
|
||||
|
||||
#: py/builtinimport.c
|
||||
msgid "can't perform relative import"
|
||||
msgstr ""
|
||||
msgstr "wú fǎ zhí xíng xiāng duì dǎo rù"
|
||||
|
||||
#: py/objgenerator.c
|
||||
msgid "can't send non-None value to a just-started generator"
|
||||
@ -3085,7 +3106,7 @@ msgstr "fùzá de fēngé wèi 0"
|
||||
msgid "complex values not supported"
|
||||
msgstr "bù zhīchí fùzá de zhí"
|
||||
|
||||
#: extmod/moduzlib.c shared-module/zlib/DecompIO.c
|
||||
#: extmod/moduzlib.c
|
||||
msgid "compression header"
|
||||
msgstr "yāsuō tóu bù"
|
||||
|
||||
@ -3341,6 +3362,10 @@ msgstr "zìtǐ bìxū wèi 2048 zì jié"
|
||||
msgid "format requires a dict"
|
||||
msgstr "géshì yāoqiú yīgè yǔjù"
|
||||
|
||||
#: shared-bindings/microcontroller/Processor.c
|
||||
msgid "frequency is read-only for this board"
|
||||
msgstr "cǐ zhǔ bǎn de pín lǜ wéi zhǐ dú"
|
||||
|
||||
#: py/objdeque.c
|
||||
msgid "full"
|
||||
msgstr "chōngfèn"
|
||||
@ -3696,11 +3721,11 @@ msgstr "Wài shè bù zhī chí huán huí + jìng yīn mó shì"
|
||||
|
||||
#: ports/espressif/common-hal/mdns/Server.c
|
||||
msgid "mDNS already initialized"
|
||||
msgstr ""
|
||||
msgstr "mDNS yǐ chū shǐ huà"
|
||||
|
||||
#: ports/espressif/common-hal/mdns/Server.c
|
||||
msgid "mDNS only works with built-in WiFi"
|
||||
msgstr ""
|
||||
msgstr "mDNS jǐn shì yòng yú nèi zhì wú xiàn wǎng luò"
|
||||
|
||||
#: py/parse.c
|
||||
msgid "malformed f-string"
|
||||
@ -3720,7 +3745,7 @@ msgstr "jǔzhèn bùshì zhèngdìng de"
|
||||
|
||||
#: ports/espressif/common-hal/wifi/Radio.c
|
||||
msgid "max_connections must be between 0 and 10"
|
||||
msgstr ""
|
||||
msgstr "max_connections bì xū jiè yú 0 hé 10 zhī jiān"
|
||||
|
||||
#: ports/espressif/common-hal/_bleio/Descriptor.c
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
@ -4101,7 +4126,7 @@ msgstr "pixel_shader bìxū shì displayio.Palette huò displayio.ColorConverter
|
||||
|
||||
#: extmod/vfs_posix_file.c
|
||||
msgid "poll on file not available on win32"
|
||||
msgstr ""
|
||||
msgstr "zài win32 shàng bù tí gōng wén jiàn tóu piào"
|
||||
|
||||
#: shared-module/vectorio/Polygon.c
|
||||
msgid "polygon can only be registered in one parent"
|
||||
|
7
main.c
7
main.c
@ -62,6 +62,7 @@
|
||||
#include "supervisor/shared/workflow.h"
|
||||
#include "supervisor/usb.h"
|
||||
#include "supervisor/workflow.h"
|
||||
#include "supervisor/shared/external_flash/external_flash.h"
|
||||
|
||||
#include "shared-bindings/microcontroller/__init__.h"
|
||||
#include "shared-bindings/microcontroller/Processor.h"
|
||||
@ -836,6 +837,12 @@ int __attribute__((used)) main(void) {
|
||||
// Start the debug serial
|
||||
serial_early_init();
|
||||
|
||||
#if !INTERNAL_FLASH_FILESYSTEM
|
||||
// Set up anything that might need to get done before we try to use SPI flash
|
||||
// This is needed for some boards where flash relies on GPIO setup to work
|
||||
external_flash_setup();
|
||||
#endif
|
||||
|
||||
// Create a new filesystem only if we're not in a safe mode.
|
||||
// A power brownout here could make it appear as if there's
|
||||
// no SPI flash filesystem, and we might erase the existing one.
|
||||
|
@ -6,12 +6,7 @@ include ../py/mkenv.mk
|
||||
|
||||
# define main target
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
# Detect a MINGW32 build, and change the name of the final executable.
|
||||
PROG ?= mpy-cross.exe
|
||||
else
|
||||
PROG ?= mpy-cross
|
||||
endif
|
||||
|
||||
# qstr definitions (must come before including py.mk)
|
||||
QSTR_DEFS = qstrdefsport.h
|
||||
|
@ -319,13 +319,10 @@ $(patsubst %.c,$(BUILD)/%.o,$(SRC_PERIPHERALS)): CFLAGS += -Wno-missing-prototyp
|
||||
SRC_C += \
|
||||
audio_dma.c \
|
||||
background.c \
|
||||
bindings/samd/Clock.c \
|
||||
bindings/samd/__init__.c \
|
||||
boards/$(BOARD)/board.c \
|
||||
boards/$(BOARD)/pins.c \
|
||||
eic_handler.c \
|
||||
fatfs_port.c \
|
||||
freetouch/adafruit_ptc.c \
|
||||
lib/tinyusb/src/portable/microchip/samd/dcd_samd.c \
|
||||
mphalport.c \
|
||||
reset.c \
|
||||
@ -340,10 +337,18 @@ ifneq (,$(filter 1,$(CIRCUITPY_PWMIO) $(CIRCUITPY_AUDIOIO) $(CIRCUITPY_RGBMATRIX
|
||||
SRC_C += shared_timers.c
|
||||
endif
|
||||
|
||||
ifeq ($(CIRCUITPY_SAMD),1)
|
||||
SRC_C += bindings/samd/Clock.c bindings/samd/__init__.c
|
||||
endif
|
||||
|
||||
ifeq ($(CIRCUITPY_SDIOIO),1)
|
||||
SRC_C += ports/atmel-samd/sd_mmc/sd_mmc.c
|
||||
endif
|
||||
|
||||
ifeq ($(CIRCUITPY_TOUCHIO),1)
|
||||
SRC_C += freetouch/adafruit_ptc.c
|
||||
endif
|
||||
|
||||
# The smallest SAMD51 packages don't have I2S. Everything else does.
|
||||
ifeq ($(CIRCUITPY_AUDIOBUSIO),1)
|
||||
SRC_C += peripherals/samd/i2s.c peripherals/samd/$(PERIPHERALS_CHIP_FAMILY)/i2s.c
|
||||
|
@ -53,12 +53,8 @@ STATIC mp_obj_t samd_clock_get_enabled(mp_obj_t self_in) {
|
||||
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(samd_clock_get_enabled_obj, samd_clock_get_enabled);
|
||||
|
||||
const mp_obj_property_t samd_clock_enabled_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&samd_clock_get_enabled_obj,
|
||||
MP_ROM_NONE,
|
||||
MP_ROM_NONE,},
|
||||
};
|
||||
MP_PROPERTY_GETTER(samd_clock_enabled_obj,
|
||||
(mp_obj_t)&samd_clock_get_enabled_obj);
|
||||
|
||||
//| parent: Union[Clock, None]
|
||||
//| """Clock parent. (read-only)"""
|
||||
@ -82,12 +78,8 @@ STATIC mp_obj_t samd_clock_get_parent(mp_obj_t self_in) {
|
||||
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(samd_clock_get_parent_obj, samd_clock_get_parent);
|
||||
|
||||
const mp_obj_property_t samd_clock_parent_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&samd_clock_get_parent_obj,
|
||||
MP_ROM_NONE,
|
||||
MP_ROM_NONE,},
|
||||
};
|
||||
MP_PROPERTY_GETTER(samd_clock_parent_obj,
|
||||
(mp_obj_t)&samd_clock_get_parent_obj);
|
||||
|
||||
//| frequency: int
|
||||
//| """Clock frequency in Herz. (read-only)"""
|
||||
@ -99,12 +91,8 @@ STATIC mp_obj_t samd_clock_get_frequency(mp_obj_t self_in) {
|
||||
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(samd_clock_get_frequency_obj, samd_clock_get_frequency);
|
||||
|
||||
const mp_obj_property_t samd_clock_frequency_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&samd_clock_get_frequency_obj,
|
||||
MP_ROM_NONE,
|
||||
MP_ROM_NONE,},
|
||||
};
|
||||
MP_PROPERTY_GETTER(samd_clock_frequency_obj,
|
||||
(mp_obj_t)&samd_clock_get_frequency_obj);
|
||||
|
||||
//| calibration: int
|
||||
//| """Clock calibration. Not all clocks can be calibrated."""
|
||||
@ -130,12 +118,9 @@ STATIC mp_obj_t samd_clock_set_calibration(mp_obj_t self_in, mp_obj_t calibratio
|
||||
|
||||
MP_DEFINE_CONST_FUN_OBJ_2(samd_clock_set_calibration_obj, samd_clock_set_calibration);
|
||||
|
||||
const mp_obj_property_t samd_clock_calibration_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&samd_clock_get_calibration_obj,
|
||||
(mp_obj_t)&samd_clock_set_calibration_obj,
|
||||
MP_ROM_NONE,},
|
||||
};
|
||||
MP_PROPERTY_GETSET(samd_clock_calibration_obj,
|
||||
(mp_obj_t)&samd_clock_get_calibration_obj,
|
||||
(mp_obj_t)&samd_clock_set_calibration_obj);
|
||||
|
||||
STATIC const mp_rom_map_elem_t samd_clock_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_enabled), MP_ROM_PTR(&samd_clock_enabled_obj) },
|
||||
|
@ -9,3 +9,5 @@ CHIP_FAMILY = samd21
|
||||
SPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICES = "MX25L51245G","GD25S512MD"
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
|
@ -15,6 +15,7 @@ LONGINT_IMPL = NONE
|
||||
CIRCUITPY_BUSDEVICE = 1
|
||||
CIRCUITPY_DISPLAYIO = 0
|
||||
CIRCUITPY_KEYPAD = 0
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
|
||||
# Include these Python libraries in firmware.
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_CircuitPlayground
|
||||
|
@ -28,6 +28,13 @@ SECTIONS
|
||||
_sfixed = .;
|
||||
KEEP(*(.vectors)) /* isr vector table */
|
||||
|
||||
__property_getter_start = .;
|
||||
*(.property_getter)
|
||||
__property_getter_end = .;
|
||||
__property_getset_start = .;
|
||||
*(.property_getset)
|
||||
__property_getset_end = .;
|
||||
|
||||
/* Sort text sections so that they have fewer *fill* bytes needed. */
|
||||
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.text))) /* .text sections (code) */
|
||||
*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.text*))) /* .text* sections (code) */
|
||||
|
@ -9,3 +9,5 @@ CHIP_FAMILY = samd21
|
||||
SPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICES = "S25FL064L"
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
|
@ -18,6 +18,7 @@ CIRCUITPY_AUDIOMIXER = 0
|
||||
CIRCUITPY_AUDIOMP3 = 0
|
||||
CIRCUITPY_BLEIO_HCI = 0
|
||||
CIRCUITPY_DISPLAYIO = 0
|
||||
CIRCUITPY_FLOPPYIO = 0
|
||||
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||
CIRCUITPY_GETPASS = 0
|
||||
CIRCUITPY_KEYPAD = 0
|
||||
|
@ -9,3 +9,5 @@ CHIP_FAMILY = samd21
|
||||
SPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICES = "S25FL216K, GD25Q16C"
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
|
@ -28,6 +28,8 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA19) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA17) },
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_LED),MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D13),MP_ROM_PTR(&pin_PA16) },
|
||||
|
||||
// ESP control
|
||||
|
@ -41,6 +41,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA07) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED),MP_ROM_PTR(&pin_PA10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D13),MP_ROM_PTR(&pin_PA10) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_APA102_MOSI), MP_ROM_PTR(&pin_PA00) },
|
||||
|
@ -9,3 +9,5 @@ CHIP_FAMILY = samd21
|
||||
SPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICES = "W25Q32FV"
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
|
@ -26,6 +26,9 @@
|
||||
|
||||
#include "supervisor/board.h"
|
||||
#include "mpconfigboard.h"
|
||||
#include "common-hal/microcontroller/Pin.h"
|
||||
#include "hal/include/hal_gpio.h"
|
||||
#include "supervisor/shared/external_flash/external_flash.h"
|
||||
|
||||
void board_init(void) {
|
||||
}
|
||||
@ -39,3 +42,20 @@ void reset_board(void) {
|
||||
|
||||
void board_deinit(void) {
|
||||
}
|
||||
|
||||
void external_flash_setup(void) {
|
||||
// Do not reset the external flash write-protect and hold pins high
|
||||
never_reset_pin_number(PIN_PB22);
|
||||
never_reset_pin_number(PIN_PB23);
|
||||
|
||||
// note: using output instead of input+pullups because the pullups are a little weak
|
||||
// Set the WP pin high
|
||||
gpio_set_pin_function(PIN_PB22, GPIO_PIN_FUNCTION_OFF);
|
||||
gpio_set_pin_direction(PIN_PB22, GPIO_DIRECTION_OUT);
|
||||
gpio_set_pin_level(PIN_PB22, true);
|
||||
|
||||
// Set the HOLD pin high
|
||||
gpio_set_pin_function(PIN_PB23, GPIO_PIN_FUNCTION_OFF);
|
||||
gpio_set_pin_direction(PIN_PB23, GPIO_DIRECTION_OUT);
|
||||
gpio_set_pin_level(PIN_PB23, true);
|
||||
}
|
||||
|
@ -27,3 +27,7 @@
|
||||
// USB is always used internally so skip the pin objects for it.
|
||||
#define IGNORE_PIN_PA24 1
|
||||
#define IGNORE_PIN_PA25 1
|
||||
|
||||
// The external flash chip has WP (write-protect) and hold pins we should ignore
|
||||
#define IGNORE_PIN_PB22
|
||||
#define IGNORE_PIN_PB23
|
||||
|
@ -9,3 +9,5 @@ CHIP_FAMILY = samd21
|
||||
SPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ"
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
|
@ -187,3 +187,30 @@ digitalio_pull_t common_hal_digitalio_digitalinout_get_pull(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool common_hal_digitalio_has_reg_op(digitalinout_reg_op_t op) {
|
||||
return true;
|
||||
}
|
||||
|
||||
volatile uint32_t *common_hal_digitalio_digitalinout_get_reg(digitalio_digitalinout_obj_t *self, digitalinout_reg_op_t op, uint32_t *mask) {
|
||||
const uint8_t pin = self->pin->number;
|
||||
int port = GPIO_PORT(pin);
|
||||
|
||||
*mask = 1u << GPIO_PIN(pin);
|
||||
|
||||
|
||||
switch (op) {
|
||||
case DIGITALINOUT_REG_READ:
|
||||
return (volatile uint32_t *)&PORT->Group[port].IN.reg;
|
||||
case DIGITALINOUT_REG_WRITE:
|
||||
return &PORT->Group[port].OUT.reg;
|
||||
case DIGITALINOUT_REG_SET:
|
||||
return &PORT->Group[port].OUTSET.reg;
|
||||
case DIGITALINOUT_REG_RESET:
|
||||
return &PORT->Group[port].OUTCLR.reg;
|
||||
case DIGITALINOUT_REG_TOGGLE:
|
||||
return &PORT->Group[port].OUTTGL.reg;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
30
ports/atmel-samd/common-hal/floppyio/__init__.h
Normal file
30
ports/atmel-samd/common-hal/floppyio/__init__.h
Normal file
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* This file is part of the Micro Python project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2022 Jeff Epler 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
|
||||
|
||||
// empirical-ish from Arduino @ 120MHz
|
||||
#define FLOPPYIO_SAMPLERATE (14666667)
|
@ -46,6 +46,9 @@ __attribute__((naked,noinline,aligned(16)))
|
||||
static void neopixel_send_buffer_core(volatile uint32_t *clraddr, uint32_t pinMask,
|
||||
const uint8_t *ptr, int numBytes);
|
||||
|
||||
// The SAMD21 timing loop durations below are approximate,
|
||||
// because the other instructions take significant time.
|
||||
|
||||
static void neopixel_send_buffer_core(volatile uint32_t *clraddr, uint32_t pinMask,
|
||||
const uint8_t *ptr, int numBytes) {
|
||||
asm volatile (" push {r4, r5, r6, lr};"
|
||||
@ -54,25 +57,28 @@ static void neopixel_send_buffer_core(volatile uint32_t *clraddr, uint32_t pinMa
|
||||
" ldrb r5, [r2, #0];" // r5 := *ptr
|
||||
" add r2, #1;" // ptr++
|
||||
" movs r4, #128;" // r4-mask, 0x80
|
||||
|
||||
"loopBit:"
|
||||
" str r1, [r0, #4];" // set
|
||||
#ifdef SAMD21
|
||||
" movs r6, #3; d2: sub r6, #1; bne d2;" // delay 3
|
||||
" movs r6, #2; d2: sub r6, #1; bne d2;" // 248 ns high (entire T0H or start T1H)
|
||||
#endif
|
||||
#ifdef SAM_D5X_E5X
|
||||
" movs r6, #16; d2: subs r6, #1; bne d2;" // delay 3
|
||||
" movs r6, #11; d2: subs r6, #1; bne d2;" // 300 ns high (entire T0H or start T1H)
|
||||
#endif
|
||||
" tst r4, r5;" // mask&r5
|
||||
" bne skipclr;"
|
||||
" str r1, [r0, #0];" // clr
|
||||
|
||||
"skipclr:"
|
||||
#ifdef SAMD21
|
||||
" movs r6, #6; d0: sub r6, #1; bne d0;" // delay 6
|
||||
" movs r6, #7; d0: sub r6, #1; bne d0;" // 772 ns low or high (start T0L or end T1H)
|
||||
#endif
|
||||
#ifdef SAM_D5X_E5X
|
||||
" movs r6, #16; d0: subs r6, #1; bne d0;" // delay 6
|
||||
" movs r6, #15; d0: subs r6, #1; bne d0;" // 388 ns low or high (start T0L or end T1H)
|
||||
#endif
|
||||
" str r1, [r0, #0];" // clr (possibly again, doesn't matter)
|
||||
|
||||
#ifdef SAMD21
|
||||
" asr r4, r4, #1;" // mask >>= 1
|
||||
#endif
|
||||
@ -82,15 +88,20 @@ static void neopixel_send_buffer_core(volatile uint32_t *clraddr, uint32_t pinMa
|
||||
" beq nextbyte;"
|
||||
" uxtb r4, r4;"
|
||||
#ifdef SAMD21
|
||||
" movs r6, #2; d1: sub r6, #1; bne d1;" // delay 2
|
||||
" movs r6, #5; d1: sub r6, #1; bne d1;" // 496 ns (end TOL or entire T1L)
|
||||
#endif
|
||||
#ifdef SAM_D5X_E5X
|
||||
" movs r6, #15; d1: subs r6, #1; bne d1;" // delay 2
|
||||
" movs r6, #20; d1: subs r6, #1; bne d1;" // 548 ns (end TOL or entire T1L)
|
||||
#endif
|
||||
" b loopBit;"
|
||||
|
||||
"nextbyte:"
|
||||
#ifdef SAMD21
|
||||
" movs r6, #1; d3: sub r6, #1; bne d3;" // 60 ns (end TOL or entire T1L)
|
||||
// other instructions add more delay
|
||||
#endif
|
||||
#ifdef SAM_D5X_E5X
|
||||
" movs r6, #12; d3: subs r6, #1; bne d3;" // delay 2
|
||||
" movs r6, #18; d3: subs r6, #1; bne d3;" // extra for 936 ns total (byte end T0L or entire T1L)
|
||||
#endif
|
||||
" cmp r2, r3;"
|
||||
" bcs neopixel_stop;"
|
||||
|
@ -132,7 +132,7 @@ void pulsein_interrupt_handler(uint8_t channel) {
|
||||
if (self->len < self->maxlen) {
|
||||
self->len++;
|
||||
} else {
|
||||
self->start++;
|
||||
self->start = (self->start + 1) % self->maxlen;
|
||||
}
|
||||
}
|
||||
self->last_overflow = current_overflow;
|
||||
|
@ -8,6 +8,7 @@ INTERNAL_LIBM = 1
|
||||
USB_NUM_ENDPOINT_PAIRS = 8
|
||||
|
||||
CIRCUITPY_ROTARYIO_SOFTENCODER = 1
|
||||
CIRCUITPY_OPTIMIZE_PROPERTY_FLASH_SIZE ?= 1
|
||||
|
||||
######################################################################
|
||||
# Put samd21-only choices here.
|
||||
@ -98,6 +99,7 @@ CIRCUITPY_TOUCHIO_USE_NATIVE = 0
|
||||
CIRCUITPY_ALARM ?= 1
|
||||
CIRCUITPY_PS2IO ?= 1
|
||||
CIRCUITPY_SAMD ?= 1
|
||||
CIRCUITPY_FLOPPYIO ?= $(CIRCUITPY_FULL_BUILD)
|
||||
CIRCUITPY_FRAMEBUFFERIO ?= $(CIRCUITPY_FULL_BUILD)
|
||||
CIRCUITPY_RGBMATRIX ?= $(CIRCUITPY_FRAMEBUFFERIO)
|
||||
CIRCUITPY_WATCHDOG ?= 1
|
||||
@ -110,7 +112,7 @@ endif # samd51
|
||||
|
||||
ifeq ($(CHIP_FAMILY),same51)
|
||||
|
||||
# No native touchio on SAMD51.
|
||||
# No native touchio on SAME51.
|
||||
CIRCUITPY_TOUCHIO_USE_NATIVE = 0
|
||||
|
||||
# The ?='s allow overriding in mpconfigboard.mk.
|
||||
@ -118,6 +120,7 @@ CIRCUITPY_TOUCHIO_USE_NATIVE = 0
|
||||
CIRCUITPY_ALARM ?= 1
|
||||
CIRCUITPY_PS2IO ?= 1
|
||||
CIRCUITPY_SAMD ?= 1
|
||||
CIRCUITPY_FLOPPYIO ?= $(CIRCUITPY_FULL_BUILD)
|
||||
CIRCUITPY_FRAMEBUFFERIO ?= $(CIRCUITPY_FULL_BUILD)
|
||||
CIRCUITPY_RGBMATRIX ?= $(CIRCUITPY_FRAMEBUFFERIO)
|
||||
|
||||
|
@ -131,7 +131,11 @@
|
||||
static volatile bool sleep_ok = true;
|
||||
|
||||
#ifdef SAMD21
|
||||
uint8_t _tick_event_channel;
|
||||
static uint8_t _tick_event_channel = EVSYS_SYNCH_NUM;
|
||||
|
||||
static bool tick_enabled(void) {
|
||||
return _tick_event_channel != EVSYS_SYNCH_NUM;
|
||||
}
|
||||
|
||||
// Sleeping requires a register write that can stall interrupt handling. Turning
|
||||
// off sleeps allows for more accurate interrupt timing. (Python still thinks
|
||||
@ -431,8 +435,15 @@ void reset_port(void) {
|
||||
pew_reset();
|
||||
#endif
|
||||
|
||||
reset_event_system();
|
||||
reset_ticks();
|
||||
#ifdef SAMD21
|
||||
if (!tick_enabled())
|
||||
// SAMD21 ticks depend on the event system, so don't disturb the event system if we need ticks,
|
||||
// such as for a display that lives across VM instantiations.
|
||||
#endif
|
||||
{
|
||||
reset_event_system();
|
||||
reset_ticks();
|
||||
}
|
||||
|
||||
reset_all_pins();
|
||||
|
||||
@ -613,8 +624,8 @@ void port_enable_tick(void) {
|
||||
RTC->MODE0.INTENSET.reg = RTC_MODE0_INTENSET_PER2;
|
||||
#endif
|
||||
#ifdef SAMD21
|
||||
// SAMD21 ticks won't survive reset_port(). This *should* be ok since it'll
|
||||
// be triggered by ticks and no Python will be running.
|
||||
// reset_port() preserves the event system if ticks were still enabled after a VM finished,
|
||||
// such as for an on-board display. Normally the event system would be reset between VM instantiations.
|
||||
if (_tick_event_channel >= EVSYS_SYNCH_NUM) {
|
||||
turn_on_event_system();
|
||||
_tick_event_channel = find_sync_event_channel();
|
||||
|
@ -96,12 +96,8 @@ STATIC mp_obj_t videocore_framebuffer_get_width(mp_obj_t self_in) {
|
||||
return MP_OBJ_NEW_SMALL_INT(common_hal_videocore_framebuffer_get_width(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(videocore_framebuffer_get_width_obj, videocore_framebuffer_get_width);
|
||||
const mp_obj_property_t videocore_framebuffer_width_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&videocore_framebuffer_get_width_obj,
|
||||
MP_ROM_NONE,
|
||||
MP_ROM_NONE},
|
||||
};
|
||||
MP_PROPERTY_GETTER(videocore_framebuffer_width_obj,
|
||||
(mp_obj_t)&videocore_framebuffer_get_width_obj);
|
||||
|
||||
//| height: int
|
||||
//| """The height of the display, in pixels"""
|
||||
@ -113,12 +109,8 @@ STATIC mp_obj_t videocore_framebuffer_get_height(mp_obj_t self_in) {
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(videocore_framebuffer_get_height_obj, videocore_framebuffer_get_height);
|
||||
|
||||
const mp_obj_property_t videocore_framebuffer_height_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&videocore_framebuffer_get_height_obj,
|
||||
MP_ROM_NONE,
|
||||
MP_ROM_NONE},
|
||||
};
|
||||
MP_PROPERTY_GETTER(videocore_framebuffer_height_obj,
|
||||
(mp_obj_t)&videocore_framebuffer_get_height_obj);
|
||||
|
||||
STATIC const mp_rom_map_elem_t videocore_framebuffer_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&videocore_framebuffer_deinit_obj) },
|
||||
|
@ -75,7 +75,7 @@ static int pulsein_interrupt_handler(int irq, FAR void *context, FAR void *arg)
|
||||
if (self->len < self->maxlen) {
|
||||
self->len++;
|
||||
} else {
|
||||
self->start++;
|
||||
self->start = (self->start + 1) % self->maxlen;
|
||||
}
|
||||
}
|
||||
self->last_us = current_us;
|
||||
|
@ -71,6 +71,12 @@ uint8_t display_init_sequence[] = {
|
||||
|
||||
|
||||
void board_init(void) {
|
||||
// THIS SHOULD BE HANDLED BY espressif_board_reset_pin_number(), but it is not working.
|
||||
// TEMPORARY FIX UNTIL IT'S DIAGNOSED.
|
||||
common_hal_never_reset_pin(&pin_GPIO21);
|
||||
gpio_set_direction(21, GPIO_MODE_DEF_OUTPUT);
|
||||
gpio_set_level(21, true);
|
||||
|
||||
busio_spi_obj_t *spi = common_hal_board_create_spi(0);
|
||||
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;
|
||||
bus->base.type = &displayio_fourwire_type;
|
||||
|
@ -20,5 +20,4 @@ CIRCUITPY_MODULE=wroom
|
||||
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
|
||||
|
@ -27,8 +27,6 @@
|
||||
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
|
||||
CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1)
|
||||
|
||||
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
|
@ -29,8 +29,8 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit QT Py ESP32-S3 no psram"
|
||||
#define MICROPY_HW_MCU_NAME "ESP32S3"
|
||||
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_GPIO38)
|
||||
#define CIRCUITPY_STATUS_LED_POWER (&pin_GPIO37)
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_GPIO39)
|
||||
#define CIRCUITPY_STATUS_LED_POWER (&pin_GPIO38)
|
||||
|
||||
#define CIRCUITPY_BOARD_I2C (2)
|
||||
#define CIRCUITPY_BOARD_I2C_PIN {{.scl = &pin_GPIO6, .sda = &pin_GPIO7}, \
|
||||
|
@ -19,5 +19,4 @@ CIRCUITPY_ESP_FLASH_SIZE=8MB
|
||||
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
|
||||
|
@ -45,8 +45,8 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO36) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO36) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO37) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO38) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO38) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO39) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL1), MP_ROM_PTR(&pin_GPIO40) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D40), MP_ROM_PTR(&pin_GPIO40) },
|
||||
|
@ -142,9 +142,9 @@ void common_hal_digitalio_digitalinout_set_pull(
|
||||
digitalio_pull_t common_hal_digitalio_digitalinout_get_pull(
|
||||
digitalio_digitalinout_obj_t *self) {
|
||||
gpio_num_t gpio_num = self->pin->number;
|
||||
if (REG_GET_BIT(GPIO_PIN_MUX_REG[gpio_num], FUN_PU) == 1) {
|
||||
if (REG_GET_BIT(GPIO_PIN_MUX_REG[gpio_num], FUN_PU)) {
|
||||
return PULL_UP;
|
||||
} else if (REG_GET_BIT(GPIO_PIN_MUX_REG[gpio_num], FUN_PD) == 1) {
|
||||
} else if (REG_GET_BIT(GPIO_PIN_MUX_REG[gpio_num], FUN_PD)) {
|
||||
return PULL_DOWN;
|
||||
}
|
||||
return PULL_NONE;
|
||||
|
@ -47,11 +47,11 @@
|
||||
#include "components/driver/include/driver/rmt.h"
|
||||
#include "peripherals/rmt.h"
|
||||
|
||||
// 416 ns is 1/3 of the 1250ns period of a 800khz signal.
|
||||
#define WS2812_T0H_NS (416)
|
||||
#define WS2812_T0L_NS (416 * 2)
|
||||
#define WS2812_T1H_NS (416 * 2)
|
||||
#define WS2812_T1L_NS (416)
|
||||
// Use closer to WS2812-style timings instead of WS2812B, to accommodate more varieties.
|
||||
#define WS2812_T0H_NS (316)
|
||||
#define WS2812_T0L_NS (316 * 3)
|
||||
#define WS2812_T1H_NS (700)
|
||||
#define WS2812_T1L_NS (564)
|
||||
|
||||
static uint32_t ws2812_t0h_ticks = 0;
|
||||
static uint32_t ws2812_t1h_ticks = 0;
|
||||
|
@ -42,19 +42,19 @@ STATIC void update_internal_buffer(pulseio_pulsein_obj_t *self) {
|
||||
for (size_t i = 0; i < length; i++) {
|
||||
uint16_t pos = (self->start + self->len) % self->maxlen;
|
||||
self->buffer[pos] = items[i].duration0 * 3;
|
||||
// Check if second item exists before incrementing
|
||||
if (items[i].duration1) {
|
||||
self->buffer[pos + 1] = items[i].duration1 * 3;
|
||||
if (self->len < (self->maxlen - 1)) {
|
||||
self->len += 2;
|
||||
} else {
|
||||
self->start += 2;
|
||||
}
|
||||
if (self->len < self->maxlen) {
|
||||
self->len++;
|
||||
} else {
|
||||
self->start = (self->start + 1) % self->maxlen;
|
||||
}
|
||||
// Check if second item exists
|
||||
if (items[i].duration1) {
|
||||
pos = (self->start + self->len) % self->maxlen;
|
||||
self->buffer[pos] = items[i].duration1 * 3;
|
||||
if (self->len < self->maxlen) {
|
||||
self->len++;
|
||||
} else {
|
||||
self->start++;
|
||||
self->start = (self->start + 1) % self->maxlen;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 121ddb87e5130314e4fcc5e9cb260a81b7d30d36
|
||||
Subproject commit 944c01eef4fbba693f991f9d033cda3f59ca82c9
|
64
ports/mimxrt10xx/boards/sparkfun_teensy_micromod/board.c
Normal file
64
ports/mimxrt10xx/boards/sparkfun_teensy_micromod/board.c
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2019 Scott Shawcroft for Adafruit Industries
|
||||
* Copyright (c) 2019 Artur Pacholec
|
||||
*
|
||||
* 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 "boards/flash_config.h"
|
||||
#include "mpconfigboard.h"
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
|
||||
void board_init(void) {
|
||||
// FLEX flash
|
||||
common_hal_never_reset_pin(&pin_GPIO_SD_B1_06);
|
||||
common_hal_never_reset_pin(&pin_GPIO_SD_B1_07);
|
||||
common_hal_never_reset_pin(&pin_GPIO_SD_B1_08);
|
||||
common_hal_never_reset_pin(&pin_GPIO_SD_B1_09);
|
||||
common_hal_never_reset_pin(&pin_GPIO_SD_B1_10);
|
||||
common_hal_never_reset_pin(&pin_GPIO_SD_B1_11);
|
||||
|
||||
// FLEX flash 2
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_04);
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_06);
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_07);
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_08);
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_09);
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_10);
|
||||
common_hal_never_reset_pin(&pin_GPIO_EMC_01);
|
||||
common_hal_never_reset_pin(&pin_GPIO_B0_13);
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_11);
|
||||
// Data strobe needs protection despite being grounded
|
||||
common_hal_never_reset_pin(&pin_GPIO_SD_B1_05);
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
}
|
||||
|
||||
void board_deinit(void) {
|
||||
}
|
@ -0,0 +1 @@
|
||||
_ld_reserved_flash_size = 4K;
|
170
ports/mimxrt10xx/boards/sparkfun_teensy_micromod/flash_config.c
Normal file
170
ports/mimxrt10xx/boards/sparkfun_teensy_micromod/flash_config.c
Normal file
@ -0,0 +1,170 @@
|
||||
/*
|
||||
* Copyright 2017 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include "boards/flash_config.h"
|
||||
|
||||
#include "fsl_flexspi_nor_boot.h"
|
||||
|
||||
|
||||
__attribute__((section(".boot_hdr.ivt")))
|
||||
/*************************************
|
||||
* IVT Data
|
||||
*************************************/
|
||||
const ivt image_vector_table = {
|
||||
IVT_HEADER, /* IVT Header */
|
||||
IMAGE_ENTRY_ADDRESS, /* Image Entry Function */
|
||||
IVT_RSVD, /* Reserved = 0 */
|
||||
(uint32_t)DCD_ADDRESS, /* Address where DCD information is stored */
|
||||
(uint32_t)BOOT_DATA_ADDRESS, /* Address where BOOT Data Structure is stored */
|
||||
(uint32_t)&image_vector_table, /* Pointer to IVT Self (absolute address */
|
||||
(uint32_t)CSF_ADDRESS, /* Address where CSF file is stored */
|
||||
IVT_RSVD /* Reserved = 0 */
|
||||
};
|
||||
|
||||
__attribute__((section(".boot_hdr.boot_data")))
|
||||
/*************************************
|
||||
* Boot Data
|
||||
*************************************/
|
||||
const BOOT_DATA_T boot_data = {
|
||||
FLASH_BASE, /* boot start location */
|
||||
FLASH_SIZE, /* size */
|
||||
PLUGIN_FLAG, /* Plugin flag*/
|
||||
0xFFFFFFFF /* empty - extra data word */
|
||||
};
|
||||
|
||||
// Config for W25Q64JV with QSPI routed.
|
||||
__attribute__((section(".boot_hdr.conf")))
|
||||
const flexspi_nor_config_t qspiflash_config = {
|
||||
.pageSize = 256u,
|
||||
.sectorSize = 4u * 1024u,
|
||||
.ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz,
|
||||
.blockSize = 0x00010000,
|
||||
.isUniformBlockSize = false,
|
||||
.memConfig =
|
||||
{
|
||||
.tag = FLEXSPI_CFG_BLK_TAG,
|
||||
.version = FLEXSPI_CFG_BLK_VERSION,
|
||||
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
|
||||
.csHoldTime = 3u,
|
||||
.csSetupTime = 3u,
|
||||
|
||||
.busyOffset = 0u, // Status bit 0 indicates busy.
|
||||
.busyBitPolarity = 0u, // Busy when the bit is 1.
|
||||
|
||||
.deviceModeCfgEnable = 1u,
|
||||
.deviceModeType = kDeviceConfigCmdType_QuadEnable,
|
||||
.deviceModeSeq = {
|
||||
.seqId = 4u,
|
||||
.seqNum = 1u,
|
||||
},
|
||||
.deviceModeArg = 0x02,
|
||||
.deviceType = kFlexSpiDeviceType_SerialNOR,
|
||||
.sflashPadType = kSerialFlash_4Pads,
|
||||
.serialClkFreq = kFlexSpiSerialClk_60MHz,
|
||||
.sflashA1Size = FLASH_SIZE,
|
||||
.lookupTable =
|
||||
{
|
||||
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
|
||||
// The high 16 bits is command 1 and the low are command 0.
|
||||
// Within a command, the top 6 bits are the opcode, the next two are the number
|
||||
// of pads and then last byte is the operand. The operand's meaning changes
|
||||
// per opcode.
|
||||
|
||||
// Indices with ROM should always have the same function because the ROM
|
||||
// bootloader uses it.
|
||||
|
||||
// 0: ROM: Read LUTs
|
||||
// Quad version
|
||||
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB /* the command to send */,
|
||||
RADDR_SDR, FLEXSPI_4PAD, 24 /* bits to transmit */),
|
||||
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 6 /* 6 dummy cycles, 2 for M7-0 and 4 dummy */,
|
||||
READ_SDR, FLEXSPI_4PAD, 0x04),
|
||||
// Single fast read version, good for debugging.
|
||||
// FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x0B /* the command to send */,
|
||||
// RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
|
||||
// FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_1PAD, 8 /* 8 dummy clocks */,
|
||||
// READ_SDR, FLEXSPI_1PAD, 0x04),
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS),
|
||||
|
||||
// 1: ROM: Read status
|
||||
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05 /* the command to send */,
|
||||
READ_SDR, FLEXSPI_1PAD, 0x01),
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS),
|
||||
|
||||
// 2: Empty
|
||||
EMPTY_SEQUENCE,
|
||||
|
||||
// 3: ROM: Write Enable
|
||||
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06 /* the command to send */,
|
||||
STOP, FLEXSPI_1PAD, 0x00),
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS),
|
||||
|
||||
// 4: Config: Write Status
|
||||
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x31 /* the command to send */,
|
||||
WRITE_SDR, FLEXSPI_1PAD, 0x01),
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS),
|
||||
|
||||
// 5: ROM: Erase Sector
|
||||
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20 /* the command to send */,
|
||||
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS),
|
||||
|
||||
// 6: Empty
|
||||
EMPTY_SEQUENCE,
|
||||
|
||||
// 7: Empty
|
||||
EMPTY_SEQUENCE,
|
||||
|
||||
// 8: Block Erase
|
||||
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8 /* the command to send */,
|
||||
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS),
|
||||
|
||||
// 9: ROM: Page program
|
||||
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x02 /* the command to send */,
|
||||
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
|
||||
|
||||
FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04 /* data out */,
|
||||
STOP, FLEXSPI_1PAD, 0),
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS),
|
||||
|
||||
// 10: Empty
|
||||
EMPTY_SEQUENCE,
|
||||
|
||||
// 11: ROM: Chip erase
|
||||
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x60 /* the command to send */,
|
||||
STOP, FLEXSPI_1PAD, 0),
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS,
|
||||
TWO_EMPTY_STEPS),
|
||||
|
||||
// 12: Empty
|
||||
EMPTY_SEQUENCE,
|
||||
|
||||
// 13: ROM: Read SFDP
|
||||
EMPTY_SEQUENCE,
|
||||
|
||||
// 14: ROM: Restore no cmd
|
||||
EMPTY_SEQUENCE,
|
||||
|
||||
// 15: ROM: Dummy
|
||||
EMPTY_SEQUENCE
|
||||
},
|
||||
},
|
||||
};
|
@ -0,0 +1,21 @@
|
||||
#define MICROPY_HW_BOARD_NAME "SparkFun Teensy MicroMod Processor"
|
||||
#define MICROPY_HW_MCU_NAME "IMXRT1062DVL6A"
|
||||
|
||||
// If you change this, then make sure to update the linker scripts as well to
|
||||
// make sure you don't overwrite code
|
||||
#define CIRCUITPY_INTERNAL_NVM_SIZE 0
|
||||
|
||||
#define BOARD_FLASH_SIZE (16 * 1024 * 1024)
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO_AD_B1_00)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO_AD_B1_01)
|
||||
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO_B0_03)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO_B0_02)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO_B0_01)
|
||||
|
||||
#define DEFAULT_UART_BUS_RX (&pin_GPIO_AD_B0_03)
|
||||
#define DEFAULT_UART_BUS_TX (&pin_GPIO_AD_B0_02)
|
||||
|
||||
#define CIRCUITPY_USB_DEVICE_INSTANCE 0
|
||||
#define CIRCUITPY_USB_HOST_INSTANCE 1
|
@ -0,0 +1,11 @@
|
||||
USB_VID = 0x1B4F
|
||||
USB_PID = 0x002E
|
||||
USB_PRODUCT = "Teensy MicroMod"
|
||||
USB_MANUFACTURER = "PJRC/Sparkfun"
|
||||
|
||||
CHIP_VARIANT = MIMXRT1062DVJ6A
|
||||
CHIP_FAMILY = MIMXRT1062
|
||||
FLASH = W25Q128JV
|
||||
CIRCUITPY__EVE = 1
|
||||
CIRCUITPY_USB_HOST = 1
|
||||
CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY = 1
|
208
ports/mimxrt10xx/boards/sparkfun_teensy_micromod/pins.c
Normal file
208
ports/mimxrt10xx/boards/sparkfun_teensy_micromod/pins.c
Normal file
@ -0,0 +1,208 @@
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
|
||||
#include "supervisor/board.h"
|
||||
|
||||
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
|
||||
|
||||
// Micromod pins mapped to logical Teensy pins
|
||||
// Plus pins mapping some of the names on micromod breakout boards
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_AD_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO_AD_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX1), MP_ROM_PTR(&pin_GPIO_AD_B0_03)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO_AD_B0_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO_AD_B0_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX1), MP_ROM_PTR(&pin_GPIO_AD_B0_02)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO_EMC_04)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO_EMC_05)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO_EMC_06)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO_EMC_08)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO_B0_10)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO_B1_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX4), MP_ROM_PTR(&pin_GPIO_B1_01)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX4), MP_ROM_PTR(&pin_GPIO_B1_00)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO_B0_11)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO_B0_00)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO_B0_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO_B0_02)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO_B0_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO_B0_01)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO_B0_03)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO_AD_B1_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO_AD_B1_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX3), MP_ROM_PTR(&pin_GPIO_AD_B1_02)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO_AD_B1_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO_AD_B1_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX3), MP_ROM_PTR(&pin_GPIO_AD_B1_03)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO_AD_B1_07)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO_AD_B1_07)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX2), MP_ROM_PTR(&pin_GPIO_AD_B1_07)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO_AD_B1_06)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO_AD_B1_06)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX2), MP_ROM_PTR(&pin_GPIO_AD_B1_06)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO_AD_B1_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO_AD_B1_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO_AD_B1_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SDA0), MP_ROM_PTR(&pin_GPIO_AD_B1_01)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO_AD_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO_AD_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO_AD_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCL0), MP_ROM_PTR(&pin_GPIO_AD_B1_00)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO_AD_B1_10)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO_AD_B1_10)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX5), MP_ROM_PTR(&pin_GPIO_AD_B1_10)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO_AD_B1_11)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_GPIO_AD_B1_11)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX5), MP_ROM_PTR(&pin_GPIO_AD_B1_11)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO_AD_B1_08)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_GPIO_AD_B1_08)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO_AD_B1_09)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_GPIO_AD_B1_09)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO_AD_B0_12)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_GPIO_AD_B0_12)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX6), MP_ROM_PTR(&pin_GPIO_AD_B0_12)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO_AD_B0_13)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_GPIO_AD_B0_13)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX6), MP_ROM_PTR(&pin_GPIO_AD_B0_13)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO_AD_B1_14)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A12), MP_ROM_PTR(&pin_GPIO_AD_B1_14)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO_AD_B1_15)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A13), MP_ROM_PTR(&pin_GPIO_AD_B1_15)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D28), MP_ROM_PTR(&pin_GPIO_EMC_32)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX7), MP_ROM_PTR(&pin_GPIO_EMC_32)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D29), MP_ROM_PTR(&pin_GPIO_EMC_31)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX7), MP_ROM_PTR(&pin_GPIO_EMC_31)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D30), MP_ROM_PTR(&pin_GPIO_EMC_37)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D31), MP_ROM_PTR(&pin_GPIO_EMC_36)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D32), MP_ROM_PTR(&pin_GPIO_B0_12)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_GPIO_EMC_07)},
|
||||
|
||||
// SD Card slot
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D34), MP_ROM_PTR(&pin_GPIO_SD_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_DAT1), MP_ROM_PTR(&pin_GPIO_SD_B0_03)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO_SD_B0_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_DAT0), MP_ROM_PTR(&pin_GPIO_SD_B0_02)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO_SD_B0_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO_SD_B0_01)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_GPIO_SD_B0_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_CMD), MP_ROM_PTR(&pin_GPIO_SD_B0_00)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D38), MP_ROM_PTR(&pin_GPIO_SD_B0_05)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_DAT3), MP_ROM_PTR(&pin_GPIO_SD_B0_05)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D39), MP_ROM_PTR(&pin_GPIO_SD_B0_04)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_DAT2), MP_ROM_PTR(&pin_GPIO_SD_B0_04)},
|
||||
|
||||
// new pins (not on T4 or T4.1)
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D40), MP_ROM_PTR(&pin_GPIO_B0_04)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_BUS0), MP_ROM_PTR(&pin_GPIO_B0_04)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D41), MP_ROM_PTR(&pin_GPIO_B0_05)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_BUS1), MP_ROM_PTR(&pin_GPIO_B0_05)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D42), MP_ROM_PTR(&pin_GPIO_B0_06)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_BUS2), MP_ROM_PTR(&pin_GPIO_B0_06)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D43), MP_ROM_PTR(&pin_GPIO_B0_07)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_BUS3), MP_ROM_PTR(&pin_GPIO_B0_07)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D44), MP_ROM_PTR(&pin_GPIO_B0_08)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_BUS4), MP_ROM_PTR(&pin_GPIO_B0_08)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D45), MP_ROM_PTR(&pin_GPIO_B0_09)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_BUS5), MP_ROM_PTR(&pin_GPIO_B0_09)},
|
||||
|
||||
// USB Host
|
||||
{MP_ROM_QSTR(MP_QSTR_USB_HOST_POWER), MP_ROM_PTR(&pin_GPIO_EMC_40)},
|
||||
{MP_ROM_QSTR(MP_QSTR_USB_HOST_DP), MP_ROM_PTR(&pin_USB_OTG2_DP)},
|
||||
{MP_ROM_QSTR(MP_QSTR_USB_HOST_DM), MP_ROM_PTR(&pin_USB_OTG2_DN)},
|
||||
|
||||
{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)},
|
||||
|
||||
// Micromod Names on different carrier boards
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_RX), MP_ROM_PTR(&pin_GPIO_AD_B0_03)}, // D0
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_TX), MP_ROM_PTR(&pin_GPIO_AD_B0_02)}, // D1
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_PWM1), MP_ROM_PTR(&pin_GPIO_EMC_04)}, // D2
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_PWM0), MP_ROM_PTR(&pin_GPIO_EMC_05)}, // D3
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_D0), MP_ROM_PTR(&pin_GPIO_EMC_06)}, // D4
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_D1), MP_ROM_PTR(&pin_GPIO_EMC_08)}, // D5
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_G6), MP_ROM_PTR(&pin_GPIO_B0_10)}, // D6
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_I2S_SDO), MP_ROM_PTR(&pin_GPIO_B1_01)}, // D7
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_I2S_SDI), MP_ROM_PTR(&pin_GPIO_B1_00)}, // D8
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_G7), MP_ROM_PTR(&pin_GPIO_B0_11)}, // D9
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_CS), MP_ROM_PTR(&pin_GPIO_B0_00)}, // D10
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_COPI), MP_ROM_PTR(&pin_GPIO_B0_02)}, // D11
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_CIPO), MP_ROM_PTR(&pin_GPIO_B0_01)}, // D12
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_SCK), MP_ROM_PTR(&pin_GPIO_B0_03)}, // D13
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_A0), MP_ROM_PTR(&pin_GPIO_AD_B1_02)}, // D14
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_A1), MP_ROM_PTR(&pin_GPIO_AD_B1_03)}, // D15
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_RX2), MP_ROM_PTR(&pin_GPIO_AD_B1_07)}, // D16
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_TX2), MP_ROM_PTR(&pin_GPIO_AD_B1_06)}, // D17
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_SDA), MP_ROM_PTR(&pin_GPIO_AD_B1_01)}, // D18
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_SCL), MP_ROM_PTR(&pin_GPIO_AD_B1_00)}, // D19
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_I2S_FS), MP_ROM_PTR(&pin_GPIO_AD_B1_10)}, // D20
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_I2S_CLK), MP_ROM_PTR(&pin_GPIO_AD_B1_11)}, // D21
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_BATT_VIN3), MP_ROM_PTR(&pin_GPIO_AD_B1_08)}, // D22
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_MCLK), MP_ROM_PTR(&pin_GPIO_AD_B1_09)}, // D23
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_SCL1), MP_ROM_PTR(&pin_GPIO_AD_B0_12)}, // D24
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_SDA1), MP_ROM_PTR(&pin_GPIO_AD_B0_13)}, // D25
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_G8), MP_ROM_PTR(&pin_GPIO_AD_B1_14)}, // D26
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_G11), MP_ROM_PTR(&pin_GPIO_AD_B1_15)}, // D27
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_33V_EN), MP_ROM_PTR(&pin_GPIO_EMC_32)}, // D28
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_I2C_INT), MP_ROM_PTR(&pin_GPIO_EMC_31)}, // D29
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_CAN_RX), MP_ROM_PTR(&pin_GPIO_EMC_37)}, // D30
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_CAN_TX), MP_ROM_PTR(&pin_GPIO_EMC_36)}, // D31
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_G9), MP_ROM_PTR(&pin_GPIO_B0_12)}, // D32
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_G10), MP_ROM_PTR(&pin_GPIO_EMC_07)}, // D33
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_DAT1), MP_ROM_PTR(&pin_GPIO_SD_B0_03)}, // D34
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_DAT0), MP_ROM_PTR(&pin_GPIO_SD_B0_02)}, // 35
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_CIPO1), MP_ROM_PTR(&pin_GPIO_SD_B0_02)}, // 35
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_SCK1), MP_ROM_PTR(&pin_GPIO_SD_B0_01)}, // D36
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_COPI1), MP_ROM_PTR(&pin_GPIO_SD_B0_00)}, // D37
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_CS1), MP_ROM_PTR(&pin_GPIO_SD_B0_05)}, // D38
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_DAT3), MP_ROM_PTR(&pin_GPIO_SD_B0_05)}, // D38
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_DAT2), MP_ROM_PTR(&pin_GPIO_SD_B0_04)},
|
||||
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_G0), MP_ROM_PTR(&pin_GPIO_B0_04)}, // D40
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_G1), MP_ROM_PTR(&pin_GPIO_B0_05)}, // D41
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_G2), MP_ROM_PTR(&pin_GPIO_B0_06)}, // D42
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_G3), MP_ROM_PTR(&pin_GPIO_B0_07)}, // D43
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_G4), MP_ROM_PTR(&pin_GPIO_B0_08)}, // D44
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MM_G5), MP_ROM_PTR(&pin_GPIO_B0_09)}, // D45
|
||||
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
@ -7,3 +7,4 @@ CHIP_VARIANT = MIMXRT1062DVJ6A
|
||||
CHIP_FAMILY = MIMXRT1062
|
||||
FLASH = W25Q16JV
|
||||
CIRCUITPY__EVE = 1
|
||||
CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY = 1
|
||||
|
@ -6,111 +6,133 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
|
||||
|
||||
// With USB on left. Bottom edge.
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_AD_B0_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO_AD_B0_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX1), MP_ROM_PTR(&pin_GPIO_AD_B0_03) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_AD_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO_AD_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX1), MP_ROM_PTR(&pin_GPIO_AD_B0_03)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO_AD_B0_02) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO_AD_B0_02) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX1), MP_ROM_PTR(&pin_GPIO_AD_B0_02) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO_AD_B0_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO_AD_B0_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX1), MP_ROM_PTR(&pin_GPIO_AD_B0_02)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO_EMC_04) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO_EMC_05) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO_EMC_06) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO_EMC_08) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO_B0_10) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO_B1_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO_B1_00) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO_B0_11) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO_B0_00) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO_EMC_04)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO_EMC_05)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO_EMC_06)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO_EMC_08)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO_B0_10)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO_B1_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO_B0_11)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO_B0_00)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO_B0_02) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO_B0_02) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO_B0_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO_B0_02)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO_B0_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO_B0_01) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO_B0_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO_B0_01)},
|
||||
|
||||
// Top edge
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO_B0_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO_B0_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO_B0_03) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO_B0_03)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO_AD_B1_02) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO_AD_B1_02) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO_AD_B1_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO_AD_B1_02)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO_AD_B1_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO_AD_B1_03) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO_AD_B1_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO_AD_B1_03)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO_AD_B1_07) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO_AD_B1_07) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO_AD_B1_07)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO_AD_B1_07)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO_AD_B1_06) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO_AD_B1_06) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO_AD_B1_06)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO_AD_B1_06)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO_AD_B1_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO_AD_B1_01) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO_AD_B1_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO_AD_B1_01)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO_AD_B1_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA0), MP_ROM_PTR(&pin_GPIO_AD_B1_01) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO_AD_B1_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SDA0), MP_ROM_PTR(&pin_GPIO_AD_B1_01)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO_AD_B1_00) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO_AD_B1_00) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO_AD_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO_AD_B1_00)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO_AD_B1_00) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL0), MP_ROM_PTR(&pin_GPIO_AD_B1_00) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO_AD_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCL0), MP_ROM_PTR(&pin_GPIO_AD_B1_00)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO_AD_B1_10) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO_AD_B1_10) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO_AD_B1_10)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO_AD_B1_10)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO_AD_B1_11) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_GPIO_AD_B1_11) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO_AD_B1_11)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_GPIO_AD_B1_11)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO_AD_B1_08) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_GPIO_AD_B1_08) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO_AD_B1_08)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_GPIO_AD_B1_08)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO_AD_B1_09) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_GPIO_AD_B1_09) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO_AD_B1_09)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_GPIO_AD_B1_09)},
|
||||
|
||||
// Back side
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO_AD_B0_12) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_GPIO_AD_B0_12) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO_AD_B0_12)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_GPIO_AD_B0_12)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO_AD_B0_13) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_GPIO_AD_B0_13) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO_AD_B0_13)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_GPIO_AD_B0_13)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO_AD_B1_14) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A12), MP_ROM_PTR(&pin_GPIO_AD_B1_14) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO_AD_B1_14)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A12), MP_ROM_PTR(&pin_GPIO_AD_B1_14)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO_AD_B1_15) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A13), MP_ROM_PTR(&pin_GPIO_AD_B1_15) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO_AD_B1_15)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A13), MP_ROM_PTR(&pin_GPIO_AD_B1_15)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D28), MP_ROM_PTR(&pin_GPIO_EMC_32) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D29), MP_ROM_PTR(&pin_GPIO_EMC_31) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D30), MP_ROM_PTR(&pin_GPIO_EMC_37) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D31), MP_ROM_PTR(&pin_GPIO_EMC_36) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D32), MP_ROM_PTR(&pin_GPIO_B0_12) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_GPIO_EMC_07) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D28), MP_ROM_PTR(&pin_GPIO_EMC_32)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D29), MP_ROM_PTR(&pin_GPIO_EMC_31)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D30), MP_ROM_PTR(&pin_GPIO_EMC_37)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D31), MP_ROM_PTR(&pin_GPIO_EMC_36)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D32), MP_ROM_PTR(&pin_GPIO_B0_12)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_GPIO_EMC_07)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D34), MP_ROM_PTR(&pin_GPIO_SD_B0_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_DAT1), MP_ROM_PTR(&pin_GPIO_SD_B0_03) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D34), MP_ROM_PTR(&pin_GPIO_SD_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_DAT1), MP_ROM_PTR(&pin_GPIO_SD_B0_03)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO_SD_B0_02) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_DAT0), MP_ROM_PTR(&pin_GPIO_SD_B0_02) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO_SD_B0_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_DAT0), MP_ROM_PTR(&pin_GPIO_SD_B0_02)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO_SD_B0_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO_SD_B0_01) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO_SD_B0_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO_SD_B0_01)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_GPIO_SD_B0_00) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_CMD), MP_ROM_PTR(&pin_GPIO_SD_B0_00) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_GPIO_SD_B0_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_CMD), MP_ROM_PTR(&pin_GPIO_SD_B0_00)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D38), MP_ROM_PTR(&pin_GPIO_SD_B0_04) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_DAT3), MP_ROM_PTR(&pin_GPIO_SD_B0_04) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D38), MP_ROM_PTR(&pin_GPIO_SD_B0_04)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_DAT3), MP_ROM_PTR(&pin_GPIO_SD_B0_04)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D39), MP_ROM_PTR(&pin_GPIO_SD_B0_05) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_DAT2), MP_ROM_PTR(&pin_GPIO_SD_B0_05) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D39), MP_ROM_PTR(&pin_GPIO_SD_B0_05)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_DAT2), MP_ROM_PTR(&pin_GPIO_SD_B0_05)},
|
||||
|
||||
{ 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_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)},
|
||||
|
||||
// other i2c ports defined
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SDA1), MP_ROM_PTR(&pin_GPIO_AD_B1_06)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCL1), MP_ROM_PTR(&pin_GPIO_AD_B1_07)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SDA2), MP_ROM_PTR(&pin_GPIO_AD_B0_13)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCL2), MP_ROM_PTR(&pin_GPIO_AD_B0_12)},
|
||||
|
||||
// Serial Pins
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX2), MP_ROM_PTR(&pin_GPIO_B1_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX2), MP_ROM_PTR(&pin_GPIO_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX3), MP_ROM_PTR(&pin_GPIO_AD_B1_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX3), MP_ROM_PTR(&pin_GPIO_AD_B1_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX4), MP_ROM_PTR(&pin_GPIO_AD_B1_07)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX4), MP_ROM_PTR(&pin_GPIO_AD_B1_06)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX5), MP_ROM_PTR(&pin_GPIO_AD_B1_11)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX5), MP_ROM_PTR(&pin_GPIO_AD_B1_10)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX6), MP_ROM_PTR(&pin_GPIO_AD_B0_13)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX6), MP_ROM_PTR(&pin_GPIO_AD_B0_12)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX7), MP_ROM_PTR(&pin_GPIO_EMC_32)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX7), MP_ROM_PTR(&pin_GPIO_EMC_31)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX8), MP_ROM_PTR(&pin_GPIO_B1_13)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX8), MP_ROM_PTR(&pin_GPIO_B1_12)},
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
||||
|
@ -8,3 +8,4 @@ CHIP_FAMILY = MIMXRT1062
|
||||
FLASH = W25Q64JV
|
||||
CIRCUITPY__EVE = 1
|
||||
CIRCUITPY_USB_HOST = 1
|
||||
CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY = 1
|
||||
|
@ -6,149 +6,171 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
|
||||
|
||||
// With USB on left. Bottom edge.
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_AD_B0_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO_AD_B0_03) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_AD_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO_AD_B0_03)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX1), MP_ROM_PTR(&pin_GPIO_AD_B0_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO_AD_B0_02) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX1), MP_ROM_PTR(&pin_GPIO_AD_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO_AD_B0_02)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO_AD_B0_02) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX1), MP_ROM_PTR(&pin_GPIO_AD_B0_02) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO_AD_B0_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX1), MP_ROM_PTR(&pin_GPIO_AD_B0_02)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO_EMC_04) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO_EMC_05) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO_EMC_06) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO_EMC_08) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO_B0_10) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO_B1_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO_B1_00) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO_B0_11) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO_B0_00) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO_EMC_04)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO_EMC_05)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO_EMC_06)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO_EMC_08)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO_B0_10)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO_B1_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO_B0_11)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO_B0_00)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO_B0_02) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO_B0_02) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO_B0_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO_B0_02)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO_B0_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO_B0_01) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO_B0_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO_B0_01)},
|
||||
|
||||
// Bottom Edge extended for 4.1
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO_AD_B0_12) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_GPIO_AD_B0_12) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO_AD_B0_12)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_GPIO_AD_B0_12)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO_AD_B0_13) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_GPIO_AD_B0_13) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO_AD_B0_13)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_GPIO_AD_B0_13)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO_AD_B1_14) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A12), MP_ROM_PTR(&pin_GPIO_AD_B1_14) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO_AD_B1_14)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A12), MP_ROM_PTR(&pin_GPIO_AD_B1_14)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO_AD_B1_15) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A13), MP_ROM_PTR(&pin_GPIO_AD_B1_15) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO_AD_B1_15)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A13), MP_ROM_PTR(&pin_GPIO_AD_B1_15)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D28), MP_ROM_PTR(&pin_GPIO_EMC_32) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D29), MP_ROM_PTR(&pin_GPIO_EMC_31) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D30), MP_ROM_PTR(&pin_GPIO_EMC_37) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D31), MP_ROM_PTR(&pin_GPIO_EMC_36) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D32), MP_ROM_PTR(&pin_GPIO_B0_12) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D28), MP_ROM_PTR(&pin_GPIO_EMC_32)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D29), MP_ROM_PTR(&pin_GPIO_EMC_31)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D30), MP_ROM_PTR(&pin_GPIO_EMC_37)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D31), MP_ROM_PTR(&pin_GPIO_EMC_36)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D32), MP_ROM_PTR(&pin_GPIO_B0_12)},
|
||||
|
||||
// Top edge
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO_B0_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO_B0_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO_B0_03) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO_B0_03)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO_AD_B1_02) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO_AD_B1_02) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO_AD_B1_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO_AD_B1_02)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO_AD_B1_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO_AD_B1_03) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO_AD_B1_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO_AD_B1_03)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO_AD_B1_07) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO_AD_B1_07) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO_AD_B1_07)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO_AD_B1_07)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO_AD_B1_06) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO_AD_B1_06) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO_AD_B1_06)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO_AD_B1_06)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO_AD_B1_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO_AD_B1_01) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO_AD_B1_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO_AD_B1_01)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO_AD_B1_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA0), MP_ROM_PTR(&pin_GPIO_AD_B1_01) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO_AD_B1_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SDA0), MP_ROM_PTR(&pin_GPIO_AD_B1_01)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO_AD_B1_00) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO_AD_B1_00) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO_AD_B1_00) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL0), MP_ROM_PTR(&pin_GPIO_AD_B1_00) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO_AD_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO_AD_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO_AD_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCL0), MP_ROM_PTR(&pin_GPIO_AD_B1_00)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO_AD_B1_10) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO_AD_B1_10) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO_AD_B1_10)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO_AD_B1_10)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO_AD_B1_11) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_GPIO_AD_B1_11) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO_AD_B1_11)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_GPIO_AD_B1_11)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO_AD_B1_08) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_GPIO_AD_B1_08) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO_AD_B1_08)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_GPIO_AD_B1_08)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO_AD_B1_09) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_GPIO_AD_B1_09) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO_AD_B1_09)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_GPIO_AD_B1_09)},
|
||||
|
||||
// Top edge extended for Teensy 4.1
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_GPIO_EMC_07) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D34), MP_ROM_PTR(&pin_GPIO_B1_13) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO_B1_12) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO_B1_02) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_GPIO_B1_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D38), MP_ROM_PTR(&pin_GPIO_AD_B1_12) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D39), MP_ROM_PTR(&pin_GPIO_AD_B1_13) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D40), MP_ROM_PTR(&pin_GPIO_AD_B1_04) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D41), MP_ROM_PTR(&pin_GPIO_AD_B1_05) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_GPIO_EMC_07)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D34), MP_ROM_PTR(&pin_GPIO_B1_13)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO_B1_12)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO_B1_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_GPIO_B1_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D38), MP_ROM_PTR(&pin_GPIO_AD_B1_12)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D39), MP_ROM_PTR(&pin_GPIO_AD_B1_13)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D40), MP_ROM_PTR(&pin_GPIO_AD_B1_04)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D41), MP_ROM_PTR(&pin_GPIO_AD_B1_05)},
|
||||
|
||||
// SD Card slot
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_DAT1), MP_ROM_PTR(&pin_GPIO_SD_B0_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D42), MP_ROM_PTR(&pin_GPIO_SD_B0_03) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_DAT1), MP_ROM_PTR(&pin_GPIO_SD_B0_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D42), MP_ROM_PTR(&pin_GPIO_SD_B0_03)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_DAT0), MP_ROM_PTR(&pin_GPIO_SD_B0_02) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D43), MP_ROM_PTR(&pin_GPIO_SD_B0_02) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_DAT0), MP_ROM_PTR(&pin_GPIO_SD_B0_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D43), MP_ROM_PTR(&pin_GPIO_SD_B0_02)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO_SD_B0_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D44), MP_ROM_PTR(&pin_GPIO_SD_B0_01) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO_SD_B0_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D44), MP_ROM_PTR(&pin_GPIO_SD_B0_01)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_CMD), MP_ROM_PTR(&pin_GPIO_SD_B0_00) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D45), MP_ROM_PTR(&pin_GPIO_SD_B0_00) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_CMD), MP_ROM_PTR(&pin_GPIO_SD_B0_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D45), MP_ROM_PTR(&pin_GPIO_SD_B0_00)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_DAT3), MP_ROM_PTR(&pin_GPIO_SD_B0_05) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D46), MP_ROM_PTR(&pin_GPIO_SD_B0_05) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_DAT3), MP_ROM_PTR(&pin_GPIO_SD_B0_05)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D46), MP_ROM_PTR(&pin_GPIO_SD_B0_05)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_DAT2), MP_ROM_PTR(&pin_GPIO_SD_B0_04) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D47), MP_ROM_PTR(&pin_GPIO_SD_B0_04) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_DAT2), MP_ROM_PTR(&pin_GPIO_SD_B0_04)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D47), MP_ROM_PTR(&pin_GPIO_SD_B0_04)},
|
||||
|
||||
// Flash expansion spot and PSRAM expansion spot on a shared QSPI BUS
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D48), MP_ROM_PTR(&pin_GPIO_EMC_24) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_PSRAM_CS), MP_ROM_PTR(&pin_GPIO_EMC_24) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D48), MP_ROM_PTR(&pin_GPIO_EMC_24)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_PSRAM_CS), MP_ROM_PTR(&pin_GPIO_EMC_24)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D49), MP_ROM_PTR(&pin_GPIO_EMC_27) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_QSPI_IO1), MP_ROM_PTR(&pin_GPIO_EMC_27) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D49), MP_ROM_PTR(&pin_GPIO_EMC_27)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_QSPI_IO1), MP_ROM_PTR(&pin_GPIO_EMC_27)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D50), MP_ROM_PTR(&pin_GPIO_EMC_28) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_QSPI_IO2), MP_ROM_PTR(&pin_GPIO_EMC_28) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D50), MP_ROM_PTR(&pin_GPIO_EMC_28)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_QSPI_IO2), MP_ROM_PTR(&pin_GPIO_EMC_28)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D51), MP_ROM_PTR(&pin_GPIO_EMC_22) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_FLASH_CS), MP_ROM_PTR(&pin_GPIO_EMC_22) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D51), MP_ROM_PTR(&pin_GPIO_EMC_22)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_FLASH_CS), MP_ROM_PTR(&pin_GPIO_EMC_22)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D52), MP_ROM_PTR(&pin_GPIO_EMC_26) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_QSPI_IO0), MP_ROM_PTR(&pin_GPIO_EMC_26) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D52), MP_ROM_PTR(&pin_GPIO_EMC_26)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_QSPI_IO0), MP_ROM_PTR(&pin_GPIO_EMC_26)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D53), MP_ROM_PTR(&pin_GPIO_EMC_25) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_QSPI_CLK), MP_ROM_PTR(&pin_GPIO_EMC_25) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D53), MP_ROM_PTR(&pin_GPIO_EMC_25)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_QSPI_CLK), MP_ROM_PTR(&pin_GPIO_EMC_25)},
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D54), MP_ROM_PTR(&pin_GPIO_EMC_29) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_QSPI_IO3), MP_ROM_PTR(&pin_GPIO_EMC_29) },
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_D54), MP_ROM_PTR(&pin_GPIO_EMC_29)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_QSPI_IO3), MP_ROM_PTR(&pin_GPIO_EMC_29)},
|
||||
|
||||
// USB Host
|
||||
{ MP_ROM_QSTR(MP_QSTR_USB_HOST_POWER), MP_ROM_PTR(&pin_GPIO_EMC_40) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_USB_HOST_DP), MP_ROM_PTR(&pin_USB_OTG2_DP) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_USB_HOST_DM), MP_ROM_PTR(&pin_USB_OTG2_DN) },
|
||||
{MP_ROM_QSTR(MP_QSTR_USB_HOST_POWER), MP_ROM_PTR(&pin_GPIO_EMC_40)},
|
||||
{MP_ROM_QSTR(MP_QSTR_USB_HOST_DP), MP_ROM_PTR(&pin_USB_OTG2_DP)},
|
||||
{MP_ROM_QSTR(MP_QSTR_USB_HOST_DM), MP_ROM_PTR(&pin_USB_OTG2_DN)},
|
||||
|
||||
{ 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_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)},
|
||||
|
||||
// other i2c ports defined
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SDA1), MP_ROM_PTR(&pin_GPIO_AD_B1_06)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCL1), MP_ROM_PTR(&pin_GPIO_AD_B1_07)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SDA2), MP_ROM_PTR(&pin_GPIO_AD_B0_13)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_SCL2), MP_ROM_PTR(&pin_GPIO_AD_B0_12)},
|
||||
|
||||
// Serial Pins
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX2), MP_ROM_PTR(&pin_GPIO_B1_01)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX2), MP_ROM_PTR(&pin_GPIO_B1_00)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX3), MP_ROM_PTR(&pin_GPIO_AD_B1_03)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX3), MP_ROM_PTR(&pin_GPIO_AD_B1_02)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX4), MP_ROM_PTR(&pin_GPIO_AD_B1_07)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX4), MP_ROM_PTR(&pin_GPIO_AD_B1_06)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX5), MP_ROM_PTR(&pin_GPIO_AD_B1_11)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX5), MP_ROM_PTR(&pin_GPIO_AD_B1_10)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX6), MP_ROM_PTR(&pin_GPIO_AD_B0_13)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX6), MP_ROM_PTR(&pin_GPIO_AD_B0_12)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX7), MP_ROM_PTR(&pin_GPIO_EMC_32)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX7), MP_ROM_PTR(&pin_GPIO_EMC_31)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_RX8), MP_ROM_PTR(&pin_GPIO_B1_13)},
|
||||
{MP_OBJ_NEW_QSTR(MP_QSTR_TX8), MP_ROM_PTR(&pin_GPIO_B1_12)},
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
||||
|
@ -39,6 +39,17 @@
|
||||
#include "periph.h"
|
||||
|
||||
#include "fsl_lpuart.h"
|
||||
#include "fsl_gpio.h"
|
||||
// ==========================================================
|
||||
// Debug code
|
||||
// ==========================================================
|
||||
#define ENABLE_DEBUG_PRINTING 0
|
||||
#if ENABLE_DEBUG_PRINTING
|
||||
#define DBGPrintf mp_printf
|
||||
#else
|
||||
#define DBGPrintf(p,...)
|
||||
#endif
|
||||
|
||||
|
||||
// arrays use 0 based numbering: UART1 is stored at index 0
|
||||
#define MAX_UART 8
|
||||
@ -90,6 +101,7 @@ void common_hal_busio_uart_never_reset(busio_uart_obj_t *self) {
|
||||
common_hal_never_reset_pin(self->rx);
|
||||
common_hal_never_reset_pin(self->rts);
|
||||
common_hal_never_reset_pin(self->cts);
|
||||
common_hal_never_reset_pin(self->rs485_dir);
|
||||
}
|
||||
|
||||
void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
@ -108,9 +120,12 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
mp_raise_ValueError(translate("Invalid word/bit length"));
|
||||
}
|
||||
|
||||
DBGPrintf(&mp_plat_print, "uart_construct: tx:%p rx:%p rts:%p cts:%p rs485:%p\n", tx, rx, rts, cts, rs485_dir);
|
||||
|
||||
// We are transmitting one direction if one pin is NULL and the other isn't.
|
||||
bool is_onedirection = (rx == NULL) != (tx == NULL);
|
||||
bool uart_taken = false;
|
||||
bool use_rts_for_rs485 = false;
|
||||
|
||||
const uint32_t rx_count = MP_ARRAY_SIZE(mcu_uart_rx_list);
|
||||
const uint32_t tx_count = MP_ARRAY_SIZE(mcu_uart_tx_list);
|
||||
@ -187,11 +202,14 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
|
||||
// Filter for sane settings for RS485
|
||||
if (rs485_dir != NULL) {
|
||||
DBGPrintf(&mp_plat_print, "\t(485 pin): gpio:%p #:%x Mux: %x %x cfg:%x reset:%x %x\n",
|
||||
rs485_dir->gpio, rs485_dir->number, rs485_dir->mux_idx, rs485_dir->mux_reg, rs485_dir->cfg_reg,
|
||||
rs485_dir->mux_reset, rs485_dir->pad_reset);
|
||||
if ((rts != NULL) || (cts != NULL)) {
|
||||
mp_raise_ValueError(translate("Cannot specify RTS or CTS in RS485 mode"));
|
||||
}
|
||||
// For IMXRT the RTS pin is used for RS485 direction
|
||||
rts = rs485_dir;
|
||||
// For IMXRT the RTS pin is used for RS485 direction ???? - Can be will try
|
||||
// it if this is an rts pin.
|
||||
} else {
|
||||
if (rs485_invert) {
|
||||
mp_raise_ValueError(translate("RS485 inversion specified when not in RS485 mode"));
|
||||
@ -202,16 +220,22 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
const uint32_t rts_count = MP_ARRAY_SIZE(mcu_uart_rts_list);
|
||||
const uint32_t cts_count = MP_ARRAY_SIZE(mcu_uart_cts_list);
|
||||
|
||||
if (rts != NULL) {
|
||||
if ((rts != NULL) || (rs485_dir != NULL)) {
|
||||
for (uint32_t i = 0; i < rts_count; ++i) {
|
||||
if (mcu_uart_rts_list[i].bank_idx == rx_config->bank_idx) {
|
||||
if (mcu_uart_rts_list[i].pin == rts) {
|
||||
rts_config = &mcu_uart_rts_list[i];
|
||||
break;
|
||||
} else if (mcu_uart_rts_list[i].pin == rs485_dir) {
|
||||
rts_config = &mcu_uart_rts_list[i];
|
||||
use_rts_for_rs485 = true;
|
||||
rts = rs485_dir;
|
||||
rs485_dir = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (rts_config == NULL) {
|
||||
if ((rts != NULL) && (rts_config == NULL)) {
|
||||
mp_raise_ValueError_varg(translate("Invalid %q pin"), MP_QSTR_RTS);
|
||||
}
|
||||
}
|
||||
@ -225,7 +249,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
}
|
||||
}
|
||||
}
|
||||
if (cts == NULL) {
|
||||
if (cts_config == NULL) {
|
||||
mp_raise_ValueError_varg(translate("Invalid %q pin"), MP_QSTR_CTS);
|
||||
}
|
||||
}
|
||||
@ -257,7 +281,32 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
config_periph_pin(cts_config);
|
||||
self->cts = cts;
|
||||
}
|
||||
if (rs485_dir) {
|
||||
DBGPrintf(&mp_plat_print, "\tInit rs485 pin\n");
|
||||
// lets configure this pin as standard GPIO output pin.
|
||||
claim_pin(rs485_dir);
|
||||
|
||||
#define IOMUXC_SW_MUX_CTL_PAD_MUX_MODE_ALT5 5U
|
||||
IOMUXC_SetPinMux(rs485_dir->mux_reg, IOMUXC_SW_MUX_CTL_PAD_MUX_MODE_ALT5, 0, 0, 0, 0);
|
||||
DBGPrintf(&mp_plat_print, "\tAfter IOMUXC_SetPinMux\n");
|
||||
IOMUXC_SetPinConfig(0, 0, 0, 0, rs485_dir->cfg_reg,
|
||||
IOMUXC_SW_PAD_CTL_PAD_HYS(1)
|
||||
| IOMUXC_SW_PAD_CTL_PAD_PUS(0)
|
||||
| IOMUXC_SW_PAD_CTL_PAD_PUE(0)
|
||||
| IOMUXC_SW_PAD_CTL_PAD_PKE(1)
|
||||
| IOMUXC_SW_PAD_CTL_PAD_ODE(0)
|
||||
| IOMUXC_SW_PAD_CTL_PAD_SPEED(2)
|
||||
| IOMUXC_SW_PAD_CTL_PAD_DSE(1)
|
||||
| IOMUXC_SW_PAD_CTL_PAD_SRE(0));
|
||||
DBGPrintf(&mp_plat_print, "\tAfter IOMUXC_SetPinConfig\n");
|
||||
|
||||
const gpio_pin_config_t config = { kGPIO_DigitalOutput, rs485_invert, kGPIO_NoIntmode };
|
||||
GPIO_PinInit(rs485_dir->gpio, rs485_dir->number, &config);
|
||||
DBGPrintf(&mp_plat_print, "\tAfter GPIO_PinInit\n");
|
||||
self->rs485_dir = rs485_dir;
|
||||
self->rs485_invert = rs485_invert;
|
||||
|
||||
}
|
||||
lpuart_config_t config = { 0 };
|
||||
LPUART_GetDefaultConfig(&config);
|
||||
|
||||
@ -279,7 +328,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
// Before we init, setup RS485 direction pin
|
||||
// ..unfortunately this isn't done by the driver library
|
||||
uint32_t modir = (self->uart->MODIR) & ~(LPUART_MODIR_TXRTSPOL_MASK | LPUART_MODIR_TXRTSE_MASK);
|
||||
if (rs485_dir != NULL) {
|
||||
if (use_rts_for_rs485) {
|
||||
modir |= LPUART_MODIR_TXRTSE_MASK;
|
||||
if (rs485_invert) {
|
||||
modir |= LPUART_MODIR_TXRTSPOL_MASK;
|
||||
@ -311,6 +360,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
|
||||
claim_pin(self->rx);
|
||||
}
|
||||
DBGPrintf(&mp_plat_print, "\t<< Init completed >>\n");
|
||||
}
|
||||
|
||||
bool common_hal_busio_uart_deinited(busio_uart_obj_t *self) {
|
||||
@ -330,9 +380,16 @@ void common_hal_busio_uart_deinit(busio_uart_obj_t *self) {
|
||||
|
||||
common_hal_reset_pin(self->rx);
|
||||
common_hal_reset_pin(self->tx);
|
||||
common_hal_reset_pin(self->cts);
|
||||
common_hal_reset_pin(self->rts);
|
||||
common_hal_reset_pin(self->rs485_dir);
|
||||
|
||||
self->rx = NULL;
|
||||
self->tx = NULL;
|
||||
self->cts = NULL;
|
||||
self->rts = NULL;
|
||||
self->rs485_dir = NULL;
|
||||
|
||||
}
|
||||
|
||||
// Read characters.
|
||||
@ -371,6 +428,10 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
|
||||
uint32_t recvd = 0;
|
||||
LPUART_TransferGetReceiveCount(self->uart, &self->handle, &recvd);
|
||||
LPUART_TransferAbortReceive(self->uart, &self->handle);
|
||||
if (recvd == 0) {
|
||||
*errcode = EAGAIN;
|
||||
return MP_STREAM_ERROR;
|
||||
}
|
||||
return recvd;
|
||||
}
|
||||
|
||||
@ -393,8 +454,21 @@ size_t common_hal_busio_uart_write(busio_uart_obj_t *self, const uint8_t *data,
|
||||
if (self->tx == NULL) {
|
||||
mp_raise_ValueError(translate("No TX pin"));
|
||||
}
|
||||
|
||||
LPUART_WriteBlocking(self->uart, data, len);
|
||||
if (self->rs485_dir && len) {
|
||||
GPIO_PinWrite(self->rs485_dir->gpio, self->rs485_dir->number, !self->rs485_invert);
|
||||
LPUART_WriteBlocking(self->uart, data, len);
|
||||
// Probably need to verify we have completed output.
|
||||
uint32_t dont_hang_count = 0xffff;
|
||||
while (dont_hang_count--) {
|
||||
if (LPUART_GetStatusFlags(self->uart) & kLPUART_TransmissionCompleteFlag) {
|
||||
break; // hardware says it completed.
|
||||
}
|
||||
}
|
||||
GPIO_PinWrite(self->rs485_dir->gpio, self->rs485_dir->number, self->rs485_invert);
|
||||
} else {
|
||||
// could combine with above but would go through two ifs
|
||||
LPUART_WriteBlocking(self->uart, data, len);
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
@ -50,6 +50,9 @@ typedef struct {
|
||||
const mcu_pin_obj_t *tx;
|
||||
const mcu_pin_obj_t *cts;
|
||||
const mcu_pin_obj_t *rts;
|
||||
const mcu_pin_obj_t *rs485_dir;
|
||||
bool rs485_invert;
|
||||
|
||||
} busio_uart_obj_t;
|
||||
|
||||
void uart_reset(void);
|
||||
|
@ -27,6 +27,8 @@
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include "py/runtime.h"
|
||||
|
||||
#include "common-hal/microcontroller/Processor.h"
|
||||
#include "shared-bindings/microcontroller/Processor.h"
|
||||
#include "shared-bindings/microcontroller/ResetReason.h"
|
||||
@ -50,6 +52,18 @@ float common_hal_mcu_processor_get_temperature(void) {
|
||||
return temp;
|
||||
}
|
||||
|
||||
uint32_t common_hal_mcu_processor_set_frequency(mcu_processor_obj_t *self,
|
||||
uint32_t frequency) {
|
||||
uint32_t freq = frequency / 1000000;
|
||||
if (freq != 24 && freq != 150 && freq != 396 && freq != 450 && freq != 528 && freq != 600 &&
|
||||
freq != 720 && freq != 816 && freq != 912 && freq != 960 && freq != 1008) {
|
||||
mp_raise_ValueError(translate("Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz"));
|
||||
}
|
||||
SystemCoreClock = setarmclock(frequency);
|
||||
return SystemCoreClock;
|
||||
}
|
||||
|
||||
|
||||
float common_hal_mcu_processor_get_voltage(void) {
|
||||
return NAN;
|
||||
}
|
||||
|
@ -31,10 +31,11 @@
|
||||
#define COMMON_HAL_MCU_PROCESSOR_UID_LENGTH 16
|
||||
|
||||
#include "py/obj.h"
|
||||
#include "clocks.h"
|
||||
|
||||
typedef struct {
|
||||
mp_obj_base_t base;
|
||||
// Stores no state currently.
|
||||
uint32_t frequency;
|
||||
} mcu_processor_obj_t;
|
||||
|
||||
#endif // MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H
|
||||
|
@ -38,6 +38,10 @@
|
||||
#include "supervisor/shared/translate.h"
|
||||
#include "periph.h"
|
||||
|
||||
// Debug print support set to zero to enable debug printing
|
||||
#define ENABLE_DEBUG_PRINTING 0
|
||||
|
||||
|
||||
static void config_periph_pin(const mcu_pwm_obj_t *periph) {
|
||||
IOMUXC_SetPinMux(
|
||||
periph->pin->mux_reg, periph->mux_mode,
|
||||
@ -83,6 +87,33 @@ static int calculate_pulse_count(uint32_t frequency, uint8_t *prescaler) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ==========================================================
|
||||
// Debug code
|
||||
// ==========================================================
|
||||
#if ENABLE_DEBUG_PRINTING
|
||||
#define DBGPrintf mp_printf
|
||||
extern void debug_print_flexpwm_registers(PWM_Type *base);
|
||||
|
||||
void debug_print_flexpwm_registers(PWM_Type *base) {
|
||||
mp_printf(&mp_plat_print,
|
||||
"\t\tPWM OUTEN:%x MASK:%x SWCOUT:%x DTSRCSEL:%x MCTRL:%x MCTRL2:%x FCTRL:%x FSTS:%x FFILT:%x FTST:%x FCTRL2:%x\n",
|
||||
base->OUTEN, base->MASK, base->SWCOUT, base->DTSRCSEL, base->MCTRL, base->MCTRL2, base->FCTRL,
|
||||
base->FSTS, base->FFILT, base->FTST, base->FCTRL2);
|
||||
for (uint8_t i = 0; i < 4; i++) {
|
||||
mp_printf(&mp_plat_print,
|
||||
"\t\t(%u) INIT:%x CTRL2:%x CTRL:%x VAL0:%x VAL1:%x VAL2:%x VAL3:%x VAL4:%x VAL5:%x OCTRL:%x DTCNT0:%x DTCNT1:%x DISMAP: %x %x\n", i,
|
||||
base->SM[i].INIT, base->SM[i].CTRL2, base->SM[i].CTRL, base->SM[i].VAL0, base->SM[i].VAL1, base->SM[i].VAL2,
|
||||
base->SM[i].VAL3, base->SM[i].VAL4, base->SM[i].VAL5, base->SM[i].OCTRL, base->SM[i].DTCNT0, base->SM[i].DTCNT1,
|
||||
base->SM[i].DISMAP[0], base->SM[i].DISMAP[1]);
|
||||
}
|
||||
|
||||
}
|
||||
#else
|
||||
#define DBGPrintf(p,...)
|
||||
inline void debug_print_flexpwm_registers(PWM_Type *base) {
|
||||
}
|
||||
#endif
|
||||
|
||||
pwmout_result_t common_hal_pwmio_pwmout_construct(pwmio_pwmout_obj_t *self,
|
||||
const mcu_pin_obj_t *pin,
|
||||
uint16_t duty,
|
||||
@ -93,6 +124,9 @@ pwmout_result_t common_hal_pwmio_pwmout_construct(pwmio_pwmout_obj_t *self,
|
||||
|
||||
const uint32_t pwm_count = sizeof(mcu_pwm_list) / sizeof(mcu_pwm_obj_t);
|
||||
|
||||
DBGPrintf(&mp_plat_print, ">>> common_hal_pwmio_pwmout_construct called: pin: %p %u freq:%u duty:%u var:%u\n",
|
||||
self->pin->gpio, self->pin->number, frequency, duty, variable_frequency);
|
||||
|
||||
for (uint32_t i = 0; i < pwm_count; ++i) {
|
||||
if (mcu_pwm_list[i].pin != pin) {
|
||||
continue;
|
||||
@ -107,6 +141,8 @@ pwmout_result_t common_hal_pwmio_pwmout_construct(pwmio_pwmout_obj_t *self,
|
||||
return PWMOUT_INVALID_PIN;
|
||||
}
|
||||
|
||||
DBGPrintf(&mp_plat_print, "\tFound in PWM List\n");
|
||||
|
||||
config_periph_pin(self->pwm);
|
||||
|
||||
pwm_config_t pwmConfig;
|
||||
@ -138,33 +174,67 @@ pwmout_result_t common_hal_pwmio_pwmout_construct(pwmio_pwmout_obj_t *self,
|
||||
|
||||
pwmConfig.prescale = self->prescaler;
|
||||
|
||||
DBGPrintf(&mp_plat_print, "\tCall PWM_Init\n");
|
||||
if (PWM_Init(self->pwm->pwm, self->pwm->submodule, &pwmConfig) == kStatus_Fail) {
|
||||
return PWMOUT_INVALID_PIN;
|
||||
}
|
||||
|
||||
pwm_signal_param_t pwmSignal = {
|
||||
.pwmChannel = self->pwm->channel,
|
||||
.level = kPWM_HighTrue,
|
||||
.dutyCyclePercent = 0, // avoid an initial transient
|
||||
.deadtimeValue = 0, // allow 100% duty cycle
|
||||
};
|
||||
|
||||
// Disable all fault inputs
|
||||
self->pwm->pwm->SM[self->pwm->submodule].DISMAP[0] = 0;
|
||||
self->pwm->pwm->SM[self->pwm->submodule].DISMAP[1] = 0;
|
||||
|
||||
status_t status = PWM_SetupPwm(self->pwm->pwm, self->pwm->submodule, &pwmSignal, 1, kPWM_EdgeAligned, frequency, PWM_SRC_CLK_FREQ);
|
||||
DBGPrintf(&mp_plat_print, "\tCall PWM_SetupPwm %p %x %u\n", self->pwm->pwm, self->pwm->submodule);
|
||||
// ========================================================================================================
|
||||
// Not calling the PWM_SetupPwm as it was setup to only work for PWM output on chan A and B but not X
|
||||
// I have done some experimenting, probably could try others, but again they do not work with X.
|
||||
// Most of the code checks to see if A if not, then it assume B.
|
||||
//
|
||||
// Instead I set it up to work similar to what the Teensy 4.x code does.
|
||||
//
|
||||
// That is we set the PWM_CTRL_FULL_MASK, which then uses base->SM[submodule].VAL1 to control
|
||||
// when the timer is reset, so it sets up your cycle/frequency. But then this implies that X channel
|
||||
// which uses 0, 1 has to be handled specially. So for the different channels:
|
||||
// A - Uses VAL2 to turn on (0) and VAL3=duty to turn off
|
||||
// B - Uses VAL4 to turn on (0) and VAL5 to turn off
|
||||
// X - As mentioned above VAL1 turns off, but it's set to the timing for frequency. so
|
||||
// VAL0 turns on, so we set it to VAL1 - duty
|
||||
//
|
||||
PWM_Type *base = self->pwm->pwm;
|
||||
uint8_t submodule = self->pwm->submodule;
|
||||
|
||||
if (status != kStatus_Success) {
|
||||
return PWMOUT_INITIALIZATION_ERROR;
|
||||
uint32_t mask = 1 << submodule;
|
||||
uint32_t olddiv = base->SM[submodule].VAL1 + 1;
|
||||
if (self->pulse_count != olddiv) {
|
||||
base->MCTRL |= PWM_MCTRL_CLDOK(mask);
|
||||
base->SM[submodule].CTRL = PWM_CTRL_PRSC_MASK | PWM_CTRL_PRSC(self->prescaler);
|
||||
base->SM[submodule].VAL1 = self->pulse_count - 1;
|
||||
base->SM[submodule].CTRL2 = PWM_CTRL2_INDEP_MASK | PWM_CTRL2_WAITEN_MASK | PWM_CTRL2_DBGEN_MASK;
|
||||
|
||||
if (olddiv == 1) {
|
||||
base->SM[submodule].CTRL = PWM_CTRL_FULL_MASK;
|
||||
base->SM[submodule].VAL0 = 0;
|
||||
base->SM[submodule].VAL2 = 0;
|
||||
base->SM[submodule].VAL3 = 0;
|
||||
base->SM[submodule].VAL4 = 0;
|
||||
base->SM[submodule].VAL5 = 0;
|
||||
} else {
|
||||
base->SM[submodule].VAL0 = (base->SM[submodule].VAL0 * self->pulse_count) / olddiv;
|
||||
base->SM[submodule].VAL3 = (base->SM[submodule].VAL3 * self->pulse_count) / olddiv;
|
||||
base->SM[submodule].VAL5 = (base->SM[submodule].VAL5 * self->pulse_count) / olddiv;
|
||||
}
|
||||
base->MCTRL |= PWM_MCTRL_LDOK(mask);
|
||||
}
|
||||
debug_print_flexpwm_registers(self->pwm->pwm);
|
||||
|
||||
PWM_SetPwmLdok(self->pwm->pwm, 1 << self->pwm->submodule, true);
|
||||
|
||||
PWM_StartTimer(self->pwm->pwm, 1 << self->pwm->submodule);
|
||||
|
||||
|
||||
DBGPrintf(&mp_plat_print, "\tCall common_hal_pwmio_pwmout_set_duty_cycle\n");
|
||||
common_hal_pwmio_pwmout_set_duty_cycle(self, duty);
|
||||
|
||||
DBGPrintf(&mp_plat_print, "\tReturn OK\n");
|
||||
return PWMOUT_OK;
|
||||
}
|
||||
|
||||
@ -185,7 +255,16 @@ void common_hal_pwmio_pwmout_set_duty_cycle(pwmio_pwmout_obj_t *self, uint16_t d
|
||||
// we do not use PWM_UpdatePwmDutycycle because ...
|
||||
// * it works in integer percents
|
||||
// * it can't set the "X" duty cycle
|
||||
// As mentioned in the setting up of the frequency code
|
||||
// A - Uses VAL2 to turn on (0) and VAL3=duty to turn off
|
||||
// B - Uses VAL4 to turn on (0) and VAL5 to turn off
|
||||
// X - As mentioned above VAL1 turns off, but it's set to the timing for frequency. so
|
||||
// VAL0 turns on, so we set it to VAL1 - duty
|
||||
|
||||
DBGPrintf(&mp_plat_print, "common_hal_pwmio_pwmout_set_duty_cycle %u\n", duty);
|
||||
self->duty_cycle = duty;
|
||||
PWM_Type *base = self->pwm->pwm;
|
||||
uint8_t mask = 1 << self->pwm->submodule;
|
||||
if (duty == 65535) {
|
||||
self->duty_scaled = self->pulse_count + 1;
|
||||
} else {
|
||||
@ -193,18 +272,21 @@ void common_hal_pwmio_pwmout_set_duty_cycle(pwmio_pwmout_obj_t *self, uint16_t d
|
||||
}
|
||||
switch (self->pwm->channel) {
|
||||
case kPWM_PwmX:
|
||||
self->pwm->pwm->SM[self->pwm->submodule].VAL0 = 0;
|
||||
self->pwm->pwm->SM[self->pwm->submodule].VAL1 = self->duty_scaled;
|
||||
base->SM[self->pwm->submodule].VAL0 = self->pulse_count - self->duty_scaled;
|
||||
base->OUTEN |= PWM_OUTEN_PWMX_EN(mask);
|
||||
break;
|
||||
case kPWM_PwmA:
|
||||
self->pwm->pwm->SM[self->pwm->submodule].VAL2 = 0;
|
||||
self->pwm->pwm->SM[self->pwm->submodule].VAL3 = self->duty_scaled;
|
||||
base->SM[self->pwm->submodule].VAL3 = self->duty_scaled;
|
||||
base->OUTEN |= PWM_OUTEN_PWMA_EN(mask);
|
||||
break;
|
||||
case kPWM_PwmB:
|
||||
self->pwm->pwm->SM[self->pwm->submodule].VAL4 = 0;
|
||||
self->pwm->pwm->SM[self->pwm->submodule].VAL5 = self->duty_scaled;
|
||||
base->SM[self->pwm->submodule].VAL5 = self->duty_scaled;
|
||||
base->OUTEN |= PWM_OUTEN_PWMB_EN(mask);
|
||||
}
|
||||
PWM_SetPwmLdok(self->pwm->pwm, 1 << self->pwm->submodule, true);
|
||||
|
||||
debug_print_flexpwm_registers(self->pwm->pwm);
|
||||
|
||||
}
|
||||
|
||||
uint16_t common_hal_pwmio_pwmout_get_duty_cycle(pwmio_pwmout_obj_t *self) {
|
||||
|
1
ports/mimxrt10xx/linking/flash/W25Q128JV.ld
Normal file
1
ports/mimxrt10xx/linking/flash/W25Q128JV.ld
Normal file
@ -0,0 +1 @@
|
||||
_ld_flash_size = 16M;
|
@ -34,6 +34,7 @@
|
||||
|
||||
#include "fsl_clock.h"
|
||||
#include "fsl_iomuxc.h"
|
||||
#include "fsl_device_registers.h"
|
||||
|
||||
#include "clocks.h"
|
||||
|
||||
@ -335,3 +336,257 @@ void clocks_init(void) {
|
||||
|
||||
CLOCK_EnableClock(kCLOCK_Iomuxc);
|
||||
}
|
||||
|
||||
/* clockspeed.c
|
||||
* http://www.pjrc.com/teensy/
|
||||
* Copyright (c) 2017 PJRC.COM, LLC
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
// Note setarmclock is a port from Teensyduino for the Teensy 4.x written by Paul Stroffgren,
|
||||
// A brief explanation of F_CPU_ACTUAL vs F_CPU
|
||||
// https://forum.pjrc.com/threads/57236?p=212642&viewfull=1#post212642
|
||||
volatile uint32_t F_CPU_ACTUAL = 396000000;
|
||||
volatile uint32_t F_BUS_ACTUAL = 132000000;
|
||||
|
||||
// Define these to increase the voltage when attempting overclocking
|
||||
// The frequency step is how quickly to increase voltage per frequency
|
||||
// The datasheet says 1600 is the absolute maximum voltage. The hardware
|
||||
// can actually create up to 1575. But 1300 is the recommended limit.
|
||||
// (earlier versions of the datasheet said 1300 was the absolute max)
|
||||
#define OVERCLOCK_STEPSIZE 28000000
|
||||
#define OVERCLOCK_MAX_VOLT 1575
|
||||
|
||||
#define DCDC_REG3 0x40080012
|
||||
#define DCDC_REG0 0x40080000
|
||||
#define DCDC_REG0_STS_DC_OK_L ((uint32_t)(1 << 31))
|
||||
#define CCM_ANALOG_PLL_USB1_ENABLE_L ((uint32_t)(1 << 13))
|
||||
#define CCM_ANALOG_PLL_USB1_POWER_L ((uint32_t)(1 << 12))
|
||||
#define CCM_ANALOG_PLL_USB1_EN_USB_CLKS_L ((uint32_t)(1 << 6))
|
||||
#define CCM_ANALOG_PLL_USB1_LOCK_L ((uint32_t)(1 << 31))
|
||||
#define CCM_CCGR6_DCDC(n) ((uint32_t)(((n) & 0x03) << 6))
|
||||
#define CCM_ANALOG_PLL_ARM_LOCK_L ((uint32_t)(1 << 31))
|
||||
#define CCM_ANALOG_PLL_ARM_BYPASS_L ((uint32_t)(1 << 16))
|
||||
#define CCM_ANALOG_PLL_ARM_ENABLE_L ((uint32_t)(1 << 13))
|
||||
#define CCM_ANALOG_PLL_ARM_POWERDOWN_L ((uint32_t)(1 << 12))
|
||||
#define CCM_CDHIPR_ARM_PODF_BUSY_L ((uint32_t)(1 << 16))
|
||||
#define CCM_CDHIPR_AHB_PODF_BUSY_L ((uint32_t)(1 << 1))
|
||||
#define CCM_CDHIPR_PERIPH_CLK_SEL_BUSY_L ((uint32_t)(1 << 5))
|
||||
#define CCM_CBCDR_PERIPH_CLK_SEL_L ((uint32_t)(1 << 25))
|
||||
#define CCM_CCGR_OFF 0
|
||||
#define CCM_CCGR_ON_RUNONLY 1
|
||||
#define CCM_CCGR_ON 3
|
||||
|
||||
/* Teensyduino Core Library - clockspeed.c
|
||||
* http://www.pjrc.com/teensy/
|
||||
* Copyright (c) 2017 PJRC.COM, LLC.
|
||||
*
|
||||
* 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:
|
||||
*
|
||||
* 1. The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* 2. If the Software is incorporated into a build system that allows
|
||||
* selection among a list of target devices, then similar target
|
||||
* devices manufactured by PJRC.COM must be included in the list of
|
||||
* target devices and selectable in the same manner.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
// uint32_t set_arm_clock(uint32_t frequency);
|
||||
|
||||
// stuff needing wait handshake:
|
||||
// CCM_CACRR ARM_PODF
|
||||
// CCM_CBCDR PERIPH_CLK_SEL
|
||||
// CCM_CBCMR PERIPH2_CLK_SEL
|
||||
// CCM_CBCDR AHB_PODF
|
||||
// CCM_CBCDR SEMC_PODF
|
||||
|
||||
uint32_t setarmclock(uint32_t frequency) {
|
||||
uint32_t cbcdr = CCM->CBCDR; // pg 1021
|
||||
uint32_t cbcmr = CCM->CBCMR; // pg 1023
|
||||
uint32_t dcdc = DCDC->REG3;
|
||||
|
||||
// compute required voltage
|
||||
uint32_t voltage = 1150; // default = 1.15V
|
||||
if (frequency > 528000000) {
|
||||
voltage = 1250; // 1.25V
|
||||
#if defined(OVERCLOCK_STEPSIZE) && defined(OVERCLOCK_MAX_VOLT)
|
||||
if (frequency > 600000000) {
|
||||
voltage += ((frequency - 600000000) / OVERCLOCK_STEPSIZE) * 25;
|
||||
if (voltage > OVERCLOCK_MAX_VOLT) {
|
||||
voltage = OVERCLOCK_MAX_VOLT;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
} else if (frequency <= 24000000) {
|
||||
voltage = 950; // 0.95
|
||||
}
|
||||
|
||||
// if voltage needs to increase, do it before switch clock speed
|
||||
CCM->CCGR6 |= CCM_CCGR6_DCDC(CCM_CCGR_ON);
|
||||
if ((dcdc & ((uint32_t)(0x1F << 0))) < ((uint32_t)(((voltage - 800) / 25) & 0x1F) << 0)) {
|
||||
dcdc &= ~((uint32_t)(0x1F << 0));
|
||||
dcdc |= ((uint32_t)(((voltage - 800) / 25) & 0x1F) << 0);
|
||||
DCDC->REG3 = dcdc;
|
||||
while (!(DCDC->REG0 & DCDC_REG0_STS_DC_OK_L)) {
|
||||
; // wait voltage settling
|
||||
}
|
||||
}
|
||||
|
||||
if (!(cbcdr & CCM_CBCDR_PERIPH_CLK_SEL_L)) {
|
||||
const uint32_t need1s = CCM_ANALOG_PLL_USB1_ENABLE_L | CCM_ANALOG_PLL_USB1_POWER_L |
|
||||
CCM_ANALOG_PLL_USB1_LOCK_L | CCM_ANALOG_PLL_USB1_EN_USB_CLKS_L;
|
||||
uint32_t sel, div;
|
||||
if ((CCM_ANALOG->PLL_USB1 & need1s) == need1s) {
|
||||
sel = 0;
|
||||
div = 3; // divide down to 120 MHz, so IPG is ok even if IPG_PODF=0
|
||||
} else {
|
||||
sel = 1;
|
||||
div = 0;
|
||||
}
|
||||
if ((cbcdr & ((uint32_t)(0x07 << 27))) != CCM_CBCDR_PERIPH_CLK2_PODF(div)) {
|
||||
// PERIPH_CLK2 divider needs to be changed
|
||||
cbcdr &= ~((uint32_t)(0x07 << 27));
|
||||
cbcdr |= CCM_CBCDR_PERIPH_CLK2_PODF(div);
|
||||
CCM->CBCDR = cbcdr;
|
||||
}
|
||||
if ((cbcmr & ((uint32_t)(0x03 << 12))) != CCM_CBCMR_PERIPH_CLK2_SEL(sel)) {
|
||||
// PERIPH_CLK2 source select needs to be changed
|
||||
cbcmr &= ~((uint32_t)(0x03 << 12));
|
||||
cbcmr |= CCM_CBCMR_PERIPH_CLK2_SEL(sel);
|
||||
CCM->CBCMR = cbcmr;
|
||||
while (CCM->CDHIPR & ((uint32_t)(1 << 3))) {
|
||||
; // wait
|
||||
}
|
||||
}
|
||||
// switch over to PERIPH_CLK2
|
||||
cbcdr |= ((uint32_t)(1 << 25));
|
||||
CCM->CBCDR = cbcdr;
|
||||
while (CCM->CDHIPR & ((uint32_t)(1 << 5))) {
|
||||
; // wait
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: check if PLL2 running, can 352, 396 or 528 can work? (no need for ARM PLL)
|
||||
|
||||
// DIV_SELECT: 54-108 = official range 648 to 1296 in 12 MHz steps
|
||||
uint32_t div_arm = 1;
|
||||
uint32_t div_ahb = 1;
|
||||
while (frequency * div_arm * div_ahb < 648000000) {
|
||||
if (div_arm < 8) {
|
||||
div_arm = div_arm + 1;
|
||||
} else {
|
||||
if (div_ahb < 5) {
|
||||
div_ahb = div_ahb + 1;
|
||||
div_arm = 1;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
uint32_t mult = (frequency * div_arm * div_ahb + 6000000) / 12000000;
|
||||
if (mult > 108) {
|
||||
mult = 108;
|
||||
}
|
||||
if (mult < 54) {
|
||||
mult = 54;
|
||||
}
|
||||
|
||||
frequency = mult * 12000000 / div_arm / div_ahb;
|
||||
|
||||
const uint32_t arm_pll_mask = CCM_ANALOG_PLL_ARM_LOCK_L | CCM_ANALOG_PLL_ARM_BYPASS_L |
|
||||
CCM_ANALOG_PLL_ARM_ENABLE_L | CCM_ANALOG_PLL_ARM_POWERDOWN_L |
|
||||
CCM_ANALOG_PLL_ARM_DIV_SELECT_MASK;
|
||||
if ((CCM_ANALOG->PLL_ARM & arm_pll_mask) != (CCM_ANALOG_PLL_ARM_LOCK_L
|
||||
| CCM_ANALOG_PLL_ARM_ENABLE_L | CCM_ANALOG_PLL_ARM_DIV_SELECT(mult))) {
|
||||
// printf("ARM PLL needs reconfigure\n");
|
||||
CCM_ANALOG->PLL_ARM = CCM_ANALOG_PLL_ARM_POWERDOWN_L;
|
||||
// TODO: delay needed?
|
||||
CCM_ANALOG->PLL_ARM = CCM_ANALOG_PLL_ARM_ENABLE_L
|
||||
| CCM_ANALOG_PLL_ARM_DIV_SELECT(mult);
|
||||
while (!(CCM_ANALOG->PLL_ARM & CCM_ANALOG_PLL_ARM_LOCK_L)) {
|
||||
; // wait for lock
|
||||
}
|
||||
}
|
||||
|
||||
if ((CCM->CACRR & ((uint32_t)(0x07 << 0))) != (div_arm - 1)) {
|
||||
CCM->CACRR = CCM_CACRR_ARM_PODF(div_arm - 1);
|
||||
while (CCM->CDHIPR & CCM_CDHIPR_ARM_PODF_BUSY_L) {
|
||||
; // wait
|
||||
}
|
||||
}
|
||||
|
||||
if ((cbcdr & ((uint32_t)(0x07 << 10))) != CCM_CBCDR_AHB_PODF(div_ahb - 1)) {
|
||||
cbcdr &= ~((uint32_t)(0x07 << 10));
|
||||
cbcdr |= CCM_CBCDR_AHB_PODF(div_ahb - 1);
|
||||
CCM->CBCDR = cbcdr;
|
||||
while (CCM->CDHIPR & CCM_CDHIPR_AHB_PODF_BUSY_L) {
|
||||
; // wait
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t div_ipg = (frequency + 149999999) / 150000000;
|
||||
if (div_ipg > 4) {
|
||||
div_ipg = 4;
|
||||
}
|
||||
if ((cbcdr & ((uint32_t)(0x03 << 8))) != (CCM_CBCDR_IPG_PODF(div_ipg - 1))) {
|
||||
cbcdr &= ~((uint32_t)(0x03 << 8));
|
||||
cbcdr |= CCM_CBCDR_IPG_PODF(div_ipg - 1);
|
||||
// TODO: how to safely change IPG_PODF ??
|
||||
CCM->CBCDR = cbcdr;
|
||||
}
|
||||
|
||||
// cbcdr &= ~CCM_CBCDR_PERIPH_CLK_SEL;
|
||||
// CCM_CBCDR = cbcdr; // why does this not work at 24 MHz?
|
||||
CCM->CBCDR &= ~((uint32_t)(1 << 25));
|
||||
while (CCM->CDHIPR & CCM_CDHIPR_PERIPH_CLK_SEL_BUSY_L) {
|
||||
; // wait
|
||||
|
||||
}
|
||||
F_CPU_ACTUAL = frequency;
|
||||
F_BUS_ACTUAL = frequency / div_ipg;
|
||||
// scale_cpu_cycles_to_microseconds = 0xFFFFFFFFu / (uint32_t)(frequency / 1000000u);
|
||||
|
||||
// if voltage needs to decrease, do it after switch clock speed
|
||||
if ((dcdc & ((uint32_t)(0x1F << 0))) > ((uint32_t)(((voltage - 800) / 25) & 0x1F) << 0)) {
|
||||
dcdc &= ~((uint32_t)(0x1F << 0));
|
||||
dcdc |= ((uint32_t)(0x1F << 0));
|
||||
DCDC->REG3 = dcdc;
|
||||
while (!(DCDC->REG0 & DCDC_REG0_STS_DC_OK_L)) {
|
||||
; // wait voltage settling
|
||||
}
|
||||
}
|
||||
|
||||
return frequency;
|
||||
}
|
||||
|
@ -27,3 +27,4 @@
|
||||
extern uint32_t SystemCoreClock;
|
||||
|
||||
void clocks_init(void);
|
||||
uint32_t setarmclock(uint32_t frequency);
|
||||
|
@ -398,6 +398,13 @@ void port_interrupt_after_ticks(uint32_t ticks) {
|
||||
|
||||
void port_idle_until_interrupt(void) {
|
||||
// App note here: https://www.nxp.com/docs/en/application-note/AN12085.pdf
|
||||
// Currently I have disabled the setting into wait mode as this impacts lots of different
|
||||
// subsystems and it is unclear if you can or should set it generically without having
|
||||
// a better understanding of user intent. For example by default it will kill PWM
|
||||
// when in this mode, unless PWM_CTRL2_WAITEN_MASK is set, and even with this set
|
||||
// it may not work properly if the same timer/subtimer is trying to PWM on multiple channels.
|
||||
// Maybe at later date, revisit after we have a better understanding on things like which
|
||||
// timers it impacts and how each subsystem is configured.
|
||||
|
||||
// Clear the FPU interrupt because it can prevent us from sleeping.
|
||||
if (__get_FPSCR() & ~(0x9f)) {
|
||||
@ -408,13 +415,7 @@ void port_idle_until_interrupt(void) {
|
||||
common_hal_mcu_disable_interrupts();
|
||||
if (!background_callback_pending()) {
|
||||
NVIC_ClearPendingIRQ(SNVS_HP_WRAPPER_IRQn);
|
||||
// Don't down clock on debug builds because it prevents the DAP from
|
||||
// reading memory
|
||||
#if CIRCUITPY_DEBUG == 0
|
||||
CLOCK_SetMode(kCLOCK_ModeWait);
|
||||
#endif
|
||||
__WFI();
|
||||
CLOCK_SetMode(kCLOCK_ModeRun);
|
||||
}
|
||||
common_hal_mcu_enable_interrupts();
|
||||
}
|
||||
|
@ -26,27 +26,28 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "supervisor/serial.h"
|
||||
#include "py/mphal.h"
|
||||
#include <string.h>
|
||||
#include "supervisor/serial.h"
|
||||
|
||||
#include "fsl_clock.h"
|
||||
#include "fsl_lpuart.h"
|
||||
|
||||
// TODO: Switch this to using DEBUG_UART.
|
||||
|
||||
// If the board defined a debug uart tx or rx pin then we enable this code
|
||||
#if defined(CIRCUITPY_DEBUG_UART_TX) || defined(CIRCUITPY_DEBUG_UART_RX)
|
||||
// static LPUART_Type *uart_instance = LPUART1; // evk
|
||||
static LPUART_Type *uart_instance = LPUART4; // feather 1011
|
||||
// static LPUART_Type *uart_instance = LPUART2; // feather 1062
|
||||
|
||||
static uint32_t UartSrcFreq(void) {
|
||||
uint32_t freq;
|
||||
|
||||
/* To make it simple, we assume default PLL and divider settings, and the only variable
|
||||
from application is use PLL3 source or OSC source */
|
||||
/* To make it simple, we assume default PLL and divider settings, and the only
|
||||
variable from application is use PLL3 source or OSC source */
|
||||
/* PLL3 div6 80M */
|
||||
if (CLOCK_GetMux(kCLOCK_UartMux) == 0) {
|
||||
freq = (CLOCK_GetPllFreq(kCLOCK_PllUsb1) / 6U) / (CLOCK_GetDiv(kCLOCK_UartDiv) + 1U);
|
||||
freq = (CLOCK_GetPllFreq(kCLOCK_PllUsb1) / 6U) /
|
||||
(CLOCK_GetDiv(kCLOCK_UartDiv) + 1U);
|
||||
} else {
|
||||
freq = CLOCK_GetOscFreq() / (CLOCK_GetDiv(kCLOCK_UartDiv) + 1U);
|
||||
}
|
||||
@ -88,3 +89,4 @@ void port_serial_write_substring(const char *text, uint32_t len) {
|
||||
|
||||
LPUART_WriteBlocking(uart_instance, (uint8_t *)text, len);
|
||||
}
|
||||
#endif // USE_DEBUG_PORT_CODE
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user