Merge pull request #5 from adafruit/main

Merge latest changes
This commit is contained in:
Enrique Casado 2020-11-16 10:29:22 +01:00 committed by GitHub
commit bff40fc1c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
50 changed files with 383 additions and 79 deletions

@ -1 +1 @@
Subproject commit de6b7704c530d886ad8dfa0fa1864764d86117ee Subproject commit 902c16f49197a8baf5e71ec924a812a86e733a74

View File

@ -435,6 +435,11 @@ msgstr "Di bawah frame rate minimum"
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "Bit clock dan word harus memiliki kesamaan pada clock unit" msgstr "Bit clock dan word harus memiliki kesamaan pada clock unit"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "Kedalaman bit harus kelipatan 8." msgstr "Kedalaman bit harus kelipatan 8."

View File

@ -429,6 +429,11 @@ msgstr ""
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "" msgstr ""
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "" msgstr ""

View File

@ -433,6 +433,11 @@ msgstr ""
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "" msgstr ""
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "" msgstr ""

View File

@ -436,6 +436,11 @@ msgstr "Unterhalb der minimalen Frame Rate"
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "Bit clock und word select müssen eine clock unit teilen" msgstr "Bit clock und word select müssen eine clock unit teilen"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "Bit depth muss ein Vielfaches von 8 sein." msgstr "Bit depth muss ein Vielfaches von 8 sein."

View File

@ -428,6 +428,11 @@ msgstr ""
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "" msgstr ""
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "" msgstr ""

View File

@ -442,6 +442,11 @@ msgstr "Por debajo de taza mínima de refrescamiento"
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "Bit clock y word select deben compartir una unidad de reloj" msgstr "Bit clock y word select deben compartir una unidad de reloj"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "Bits depth debe ser múltiplo de 8." msgstr "Bits depth debe ser múltiplo de 8."

View File

@ -433,6 +433,11 @@ msgstr ""
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "Ang bit clock at word select dapat makibahagi sa isang clock unit" msgstr "Ang bit clock at word select dapat makibahagi sa isang clock unit"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "Bit depth ay dapat multiple ng 8." msgstr "Bit depth ay dapat multiple ng 8."

View File

@ -442,6 +442,11 @@ msgstr "Inférieur à la fréquence d'images minimale"
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "'bit clock' et 'word select' doivent partager une horloge" msgstr "'bit clock' et 'word select' doivent partager une horloge"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "La profondeur de bit doit être un multiple de 8." msgstr "La profondeur de bit doit être un multiple de 8."

View File

@ -428,6 +428,11 @@ msgstr ""
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "" msgstr ""
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "" msgstr ""

View File

@ -433,6 +433,11 @@ msgid "Bit clock and word select must share a clock unit"
msgstr "" msgstr ""
"Clock di bit e selezione parola devono condividere la stessa unità di clock" "Clock di bit e selezione parola devono condividere la stessa unità di clock"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "La profondità di bit deve essere multipla di 8." msgstr "La profondità di bit deve essere multipla di 8."

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-04 21:18+0530\n" "POT-Creation-Date: 2020-11-04 21:18+0530\n"
"PO-Revision-Date: 2020-11-06 20:29+0000\n" "PO-Revision-Date: 2020-11-12 22:51+0000\n"
"Last-Translator: sporeball <sporeballdev@gmail.com>\n" "Last-Translator: sporeball <sporeballdev@gmail.com>\n"
"Language-Team: none\n" "Language-Team: none\n"
"Language: ja\n" "Language: ja\n"
@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.3.2\n" "X-Generator: Weblate 4.4-dev\n"
#: main.c #: main.c
msgid "" msgid ""
@ -437,6 +437,11 @@ msgstr "最低のフレームレート未満"
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "bit clockとword selectはクロックユニットを共有しなければなりません" msgstr "bit clockとword selectはクロックユニットを共有しなければなりません"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "ビット深度は8の倍数でなければなりません" msgstr "ビット深度は8の倍数でなければなりません"
@ -2786,7 +2791,7 @@ msgstr ""
#: shared-bindings/wifi/Radio.c #: shared-bindings/wifi/Radio.c
msgid "invalid hostname" msgid "invalid hostname"
msgstr "" msgstr "不正なホスト名"
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"

View File

@ -433,6 +433,11 @@ msgstr ""
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "" msgstr ""
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "" msgstr ""

View File

@ -435,6 +435,11 @@ msgstr "Onder de minimum frame rate"
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "Bit clock en word select moeten een clock eenheid delen" msgstr "Bit clock en word select moeten een clock eenheid delen"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "Bit diepte moet een meervoud van 8 zijn." msgstr "Bit diepte moet een meervoud van 8 zijn."

View File

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-04 21:18+0530\n" "POT-Creation-Date: 2020-11-04 21:18+0530\n"
"PO-Revision-Date: 2020-09-29 01:39+0000\n" "PO-Revision-Date: 2020-11-11 19:13+0000\n"
"Last-Translator: Maciej Stankiewicz <tawezik@gmail.com>\n" "Last-Translator: Maciej Stankiewicz <tawezik@gmail.com>\n"
"Language-Team: pl\n" "Language-Team: pl\n"
"Language: pl\n" "Language: pl\n"
@ -16,7 +16,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n" "|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.3-dev\n" "X-Generator: Weblate 4.4-dev\n"
#: main.c #: main.c
msgid "" msgid ""
@ -76,7 +76,7 @@ msgstr "%q poza zakresem"
#: py/obj.c #: py/obj.c
msgid "%q indices must be integers, not %q" msgid "%q indices must be integers, not %q"
msgstr "" msgstr "%q indeksy muszą być liczbami typu int, a nie %q"
#: shared-bindings/vectorio/Polygon.c #: shared-bindings/vectorio/Polygon.c
msgid "%q list must be a list" msgid "%q list must be a list"
@ -104,7 +104,7 @@ msgstr "%q poza zakresem"
#: ports/atmel-samd/common-hal/microcontroller/Pin.c #: ports/atmel-samd/common-hal/microcontroller/Pin.c
msgid "%q pin invalid" msgid "%q pin invalid"
msgstr "" msgstr "nieprawidłowy pin %q"
#: shared-bindings/fontio/BuiltinFont.c #: shared-bindings/fontio/BuiltinFont.c
msgid "%q should be an int" msgid "%q should be an int"
@ -254,7 +254,7 @@ msgstr "'return' poza funkcją"
#: py/compile.c #: py/compile.c
msgid "'yield from' inside async function" msgid "'yield from' inside async function"
msgstr "" msgstr "'yield from' wewnątrz funkcji asynchronicznej"
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
@ -283,7 +283,7 @@ msgstr "Kanał przerwań sprzętowych w użyciu"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c #: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi" msgid "ADC2 is being used by WiFi"
msgstr "" msgstr "ADC2 jest używany przez WiFi"
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
@ -437,6 +437,11 @@ msgstr ""
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "Zegar bitowy i wybór słowa muszą współdzielić jednostkę zegara" msgstr "Zegar bitowy i wybór słowa muszą współdzielić jednostkę zegara"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "Głębia musi być wielokrotnością 8." msgstr "Głębia musi być wielokrotnością 8."
@ -1033,7 +1038,7 @@ msgstr "Błąd wewnętrzny #%d"
#: shared-bindings/sdioio/SDCard.c #: shared-bindings/sdioio/SDCard.c
msgid "Invalid %q" msgid "Invalid %q"
msgstr "" msgstr "Nieprawidłowe %q"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
@ -1107,7 +1112,7 @@ msgstr "Zła wielkość fragmentu formatu"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c #: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "Invalid frequency" msgid "Invalid frequency"
msgstr "" msgstr "Nieprawidłowa częstotliwość"
#: ports/stm/common-hal/pwmio/PWMOut.c #: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Invalid frequency supplied" msgid "Invalid frequency supplied"
@ -1206,7 +1211,7 @@ msgstr ""
#: shared-module/displayio/Group.c #: shared-module/displayio/Group.c
msgid "Layer must be a Group or TileGrid subclass." msgid "Layer must be a Group or TileGrid subclass."
msgstr "Layer musi dziedziczyć z Group albo TileGrid" msgstr "Layer musi dziedziczyć z Group albo TileGrid."
#: py/objslice.c #: py/objslice.c
msgid "Length must be an int" msgid "Length must be an int"
@ -1344,7 +1349,7 @@ msgstr ""
#: ports/esp32s2/common-hal/pwmio/PWMOut.c #: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "No more channels available" msgid "No more channels available"
msgstr "" msgstr "Brak dostępnych kanałów"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c #: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "No more timers available" msgid "No more timers available"
@ -1436,7 +1441,7 @@ msgstr ""
#: shared-module/displayio/ColorConverter.c #: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time" msgid "Only one color can be transparent at a time"
msgstr "" msgstr "W danym momencie przezroczysty może być tylko jeden kolor"
#: shared-bindings/ipaddress/__init__.c #: shared-bindings/ipaddress/__init__.c
msgid "Only raw int supported for ip" msgid "Only raw int supported for ip"
@ -1505,7 +1510,7 @@ msgstr "Oraz moduły w systemie plików\n"
#: shared-module/vectorio/Polygon.c #: shared-module/vectorio/Polygon.c
msgid "Polygon needs at least 3 points" msgid "Polygon needs at least 3 points"
msgstr "" msgstr "Wielokąt musi mieć co najmniej 3 punkty"
#: ports/esp32s2/common-hal/pulseio/PulseOut.c #: ports/esp32s2/common-hal/pulseio/PulseOut.c
msgid "" msgid ""
@ -1817,7 +1822,7 @@ msgstr ""
#: ports/stm/common-hal/busio/UART.c #: ports/stm/common-hal/busio/UART.c
msgid "UART write error" msgid "UART write error"
msgstr "" msgstr "Błąd zapisu UART"
#: shared-module/usb_hid/Device.c #: shared-module/usb_hid/Device.c
msgid "USB Busy" msgid "USB Busy"
@ -2014,7 +2019,7 @@ msgstr "__init__() powinien zwracać None"
#: py/objtype.c #: py/objtype.c
msgid "__init__() should return None, not '%q'" msgid "__init__() should return None, not '%q'"
msgstr "" msgstr "__init__() powinno zwrócić None, a nie '%q'"
#: py/objobject.c #: py/objobject.c
msgid "__new__ arg must be a user-type" msgid "__new__ arg must be a user-type"
@ -3057,11 +3062,11 @@ msgstr "nie dość argumentów przy formatowaniu"
#: extmod/ulab/code/poly/poly.c #: extmod/ulab/code/poly/poly.c
msgid "number of arguments must be 2, or 3" msgid "number of arguments must be 2, or 3"
msgstr "" msgstr "liczba argumentów musi wynosić 2 lub 3"
#: extmod/ulab/code/ulab_create.c #: extmod/ulab/code/ulab_create.c
msgid "number of points must be at least 2" msgid "number of points must be at least 2"
msgstr "" msgstr "liczba punktów musi wynosić co najmniej 2"
#: py/obj.c #: py/obj.c
msgid "object '%q' is not a tuple or list" msgid "object '%q' is not a tuple or list"
@ -3374,7 +3379,7 @@ msgstr ""
#: shared-bindings/displayio/Bitmap.c #: shared-bindings/displayio/Bitmap.c
msgid "source palette too large" msgid "source palette too large"
msgstr "" msgstr "źródłowa paleta jest zbyt duża"
#: py/objstr.c #: py/objstr.c
msgid "start/end indices" msgid "start/end indices"

View File

@ -443,6 +443,11 @@ msgstr ""
"O clock de bits e a seleção de palavras devem compartilhar uma unidade de " "O clock de bits e a seleção de palavras devem compartilhar uma unidade de "
"clock" "clock"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "A profundidade de bits deve ser o múltiplo de 8." msgstr "A profundidade de bits deve ser o múltiplo de 8."

View File

@ -435,6 +435,11 @@ msgstr "Under minsta bildfrekvens"
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "Bitklocka och ordval måste dela en klockenhet" msgstr "Bitklocka och ordval måste dela en klockenhet"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "Bitdjup måste vara multipel av 8." msgstr "Bitdjup måste vara multipel av 8."

View File

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: circuitpython-cn\n" "Project-Id-Version: circuitpython-cn\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-04 21:18+0530\n" "POT-Creation-Date: 2020-11-04 21:18+0530\n"
"PO-Revision-Date: 2020-10-28 21:45+0000\n" "PO-Revision-Date: 2020-11-11 19:13+0000\n"
"Last-Translator: hexthat <hexthat@gmail.com>\n" "Last-Translator: hexthat <hexthat@gmail.com>\n"
"Language-Team: Chinese Hanyu Pinyin\n" "Language-Team: Chinese Hanyu Pinyin\n"
"Language: zh_Latn_pinyin\n" "Language: zh_Latn_pinyin\n"
@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.3.2-dev\n" "X-Generator: Weblate 4.4-dev\n"
#: main.c #: main.c
msgid "" msgid ""
@ -304,7 +304,7 @@ msgstr "Suǒyǒu I2C wàiwéi qì zhèngzài shǐyòng"
#: ports/esp32s2/peripherals/pcnt_handler.c #: ports/esp32s2/peripherals/pcnt_handler.c
msgid "All PCNT units in use" msgid "All PCNT units in use"
msgstr "" msgstr "suǒ yǒu zhèng zài shǐ yòng zhōng de PCNT dān yuán"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/esp32s2/common-hal/canio/Listener.c #: ports/esp32s2/common-hal/canio/Listener.c
@ -437,6 +437,11 @@ msgstr "Dī yú zuìdī zhèng sùlǜ"
msgid "Bit clock and word select must share a clock unit" msgid "Bit clock and word select must share a clock unit"
msgstr "Bǐtè shízhōng hé dānzì xuǎnzé bìxū gòngxiǎng shízhōng dānwèi" msgstr "Bǐtè shízhōng hé dānzì xuǎnzé bìxū gòngxiǎng shízhōng dānwèi"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
msgid "Bit depth must be from 1 to 6 inclusive, not %d"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8." msgid "Bit depth must be multiple of 8."
msgstr "Bǐtè shēndù bìxū shì 8 bèi yǐshàng." msgstr "Bǐtè shēndù bìxū shì 8 bèi yǐshàng."

View File

@ -12,11 +12,15 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = "GD25Q32C" EXTERNAL_FLASH_DEVICES = "GD25Q32C"
LONGINT_IMPL = MPZ LONGINT_IMPL = MPZ
CIRCUITPY_FULLBUILD = 0
CIRCUITPY_BITBANGIO = 0 CIRCUITPY_BITBANGIO = 0
CIRCUITPY_FREQUENCYIO = 0 CIRCUITPY_FREQUENCYIO = 0
CIRCUITPY_COUNTIO = 0 CIRCUITPY_COUNTIO = 0
CIRCUITPY_I2CPERIPHERAL = 0 CIRCUITPY_I2CPERIPHERAL = 1
CIRCUITPY_VECTORIO = 0 CIRCUITPY_VECTORIO = 0
CIRCUITPY_DISPLAYIO = 0
CIRCUITPY_TOUCHIO = 0
CIRCUITPY_ROTARYIO = 0
CFLAGS_INLINE_LIMIT = 60 CFLAGS_INLINE_LIMIT = 60

View File

@ -4,17 +4,17 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB11) }, { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB11) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA12) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA12) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB10) }, { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB10) },
{ MP_ROM_QSTR(MP_QSTR_D30), MP_ROM_PTR(&pin_PA30) }, { MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_PA30) },
{ MP_ROM_QSTR(MP_QSTR_D31), MP_ROM_PTR(&pin_PA31) }, { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_PA31) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA17) }, { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA17) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA07) }, { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA07) },
{ MP_ROM_QSTR(MP_QSTR_OVTEMP), MP_ROM_PTR(&pin_PA07) }, { MP_ROM_QSTR(MP_QSTR_OVTEMP), MP_ROM_PTR(&pin_PA07) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA16) }, { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA16) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA08) }, { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA08) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA09) }, { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA09) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA11) }, { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA11) },
{ MP_ROM_QSTR(MP_QSTR_SAT_RESET), MP_ROM_PTR(&pin_PA11) }, { MP_ROM_QSTR(MP_QSTR_SAT_RESET), MP_ROM_PTR(&pin_PA11) },
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA10) }, { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA10) },
{ MP_ROM_QSTR(MP_QSTR_SAT_PWR_ENABLE), MP_ROM_PTR(&pin_PA10) }, { MP_ROM_QSTR(MP_QSTR_SAT_PWR_ENABLE), MP_ROM_PTR(&pin_PA10) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA19) }, { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA19) },
{ MP_ROM_QSTR(MP_QSTR_INT_IMU_OBC), MP_ROM_PTR(&pin_PA19) }, { MP_ROM_QSTR(MP_QSTR_INT_IMU_OBC), MP_ROM_PTR(&pin_PA19) },
@ -22,10 +22,17 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_PWRMON_SDA), MP_ROM_PTR(&pin_PA04) }, { MP_ROM_QSTR(MP_QSTR_PWRMON_SDA), MP_ROM_PTR(&pin_PA04) },
{ MP_ROM_QSTR(MP_QSTR_PWRMON_SCL), MP_ROM_PTR(&pin_PA05) }, { MP_ROM_QSTR(MP_QSTR_PWRMON_SCL), MP_ROM_PTR(&pin_PA05) },
{ MP_ROM_QSTR(MP_QSTR_PWRMON_ALERT), MP_ROM_PTR(&pin_PB03) }, { MP_ROM_QSTR(MP_QSTR_PWRMON_ALERT), MP_ROM_PTR(&pin_PB03) },
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PB09) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB02) },
{ MP_ROM_QSTR(MP_QSTR_V_3V3_MEAS), MP_ROM_PTR(&pin_PB09) },
{ MP_ROM_QSTR(MP_QSTR_V_5V_MEAS), MP_ROM_PTR(&pin_PB02) },
{ MP_ROM_QSTR(MP_QSTR_FLASH_SCK), MP_ROM_PTR(&pin_PA23) },
{ MP_ROM_QSTR(MP_QSTR_FLASH_MOSI), MP_ROM_PTR(&pin_PA22) },
{ MP_ROM_QSTR(MP_QSTR_FLASH_MISO), MP_ROM_PTR(&pin_PA21) },
{ MP_ROM_QSTR(MP_QSTR_FLASH_CS), MP_ROM_PTR(&pin_PA20) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA06) }, { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA06) }, { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_I2C_MONITOR), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_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_UART), MP_ROM_PTR(&board_uart_obj) },
}; };

View File

@ -26,12 +26,16 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB07) }, { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB07) },
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB06) }, { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB06) },
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PB30) }, { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PB30) },
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA12) },
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA15) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PB00) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA08) }, { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA08) },
{ MP_ROM_QSTR(MP_QSTR_D32), MP_ROM_PTR(&pin_PA30) }, { MP_ROM_QSTR(MP_QSTR_D32), MP_ROM_PTR(&pin_PA30) },
{ MP_ROM_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_PA31) }, { MP_ROM_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_PA31) },
{ MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_PB22) }, { MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_PB22) },
{ MP_ROM_QSTR(MP_QSTR_INT_IMU), MP_ROM_PTR(&pin_PA12) }, { MP_ROM_QSTR(MP_QSTR_INT_IMU), MP_ROM_PTR(&pin_PA12) },
{ MP_ROM_QSTR(MP_QSTR_SAT_POWER), MP_ROM_PTR(&pin_PA15) }, { MP_ROM_QSTR(MP_QSTR_SAT_POWER), MP_ROM_PTR(&pin_PA15) },
{ MP_ROM_QSTR(MP_QSTR_OVTEMP), MP_ROM_PTR(&pin_PB00) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA08) }, { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA08) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },

View File

@ -33,6 +33,10 @@
#define DEFAULT_UART_BUS_RX (&pin_PA11) #define DEFAULT_UART_BUS_RX (&pin_PA11)
#define DEFAULT_UART_BUS_TX (&pin_PA10) #define DEFAULT_UART_BUS_TX (&pin_PA10)
// These pins are connected to the external crystal.
#define IGNORE_PIN_PA00 1
#define IGNORE_PIN_PA01 1
// USB is always used internally so skip the pin objects for it. // USB is always used internally so skip the pin objects for it.
#define IGNORE_PIN_PA24 1 #define IGNORE_PIN_PA24 1
#define IGNORE_PIN_PA25 1 #define IGNORE_PIN_PA25 1

View File

@ -326,7 +326,7 @@ static void setup_dma(audiobusio_pdmin_obj_t* self, uint32_t length,
// higher sample rate than specified. Then after the audio is // higher sample rate than specified. Then after the audio is
// recorded, a more expensive filter non-real-time filter could be // recorded, a more expensive filter non-real-time filter could be
// used to down-sample and low-pass. // used to down-sample and low-pass.
uint16_t sinc_filter [OVERSAMPLING] = { const uint16_t sinc_filter [OVERSAMPLING] = {
0, 2, 9, 21, 39, 63, 94, 132, 0, 2, 9, 21, 39, 63, 94, 132,
179, 236, 302, 379, 467, 565, 674, 792, 179, 236, 302, 379, 467, 565, 674, 792,
920, 1055, 1196, 1341, 1487, 1633, 1776, 1913, 920, 1055, 1196, 1341, 1487, 1633, 1776, 1913,

View File

@ -129,7 +129,8 @@ bool common_hal_displayio_parallelbus_begin_transaction(mp_obj_t obj) {
return true; return true;
} }
void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type, display_chip_select_behavior_t chip_select, uint8_t *data, uint32_t data_length) { void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type,
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length) {
displayio_parallelbus_obj_t* self = MP_OBJ_TO_PTR(obj); displayio_parallelbus_obj_t* self = MP_OBJ_TO_PTR(obj);
common_hal_digitalio_digitalinout_set_value(&self->command, byte_type == DISPLAY_DATA); common_hal_digitalio_digitalinout_set_value(&self->command, byte_type == DISPLAY_DATA);
uint32_t* clear_write = (uint32_t*) &self->write_group->OUTCLR.reg; uint32_t* clear_write = (uint32_t*) &self->write_group->OUTCLR.reg;

View File

@ -26,7 +26,83 @@
#include "boards/board.h" #include "boards/board.h"
#include "mpconfigboard.h" #include "mpconfigboard.h"
#include "shared-bindings/busio/SPI.h"
#include "shared-bindings/displayio/FourWire.h"
#include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/microcontroller/Pin.h"
#include "shared-module/displayio/__init__.h"
#include "supervisor/shared/board.h"
#define DELAY 0x80
// This is an ILO373 control chip. The display is a 2.9" grayscale EInk.
const uint8_t display_start_sequence[] = {
0x01, 5, 0x03, 0x00, 0x2b, 0x2b, 0x13, // power setting
0x06, 3, 0x17, 0x17, 0x17, // booster soft start
0x04, DELAY, 200, // power on and wait 200 ms
0x00, 1, 0x7f, // panel setting
0x50, 1, 0x97, // CDI setting
0x30, 1, 0x3c, // PLL set to 50 Hx (M = 7, N = 4)
0x61, 3, 0x80, 0x01, 0x28, // Resolution
0x82, DELAY | 1, 0x12, 50, // VCM DC and delay 50ms
// Look up tables for voltage sequence for pixel transition
// Common voltage
0x20, 0x2a,
0x00, 0x0a, 0x00, 0x00, 0x00, 0x01,
0x60, 0x14, 0x14, 0x00, 0x00, 0x01,
0x00, 0x14, 0x00, 0x00, 0x00, 0x01,
0x00, 0x13, 0x0a, 0x01, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// White to white
0x21, 0x2a,
0x40, 0x0a, 0x00, 0x00, 0x00, 0x01,
0x90, 0x14, 0x14, 0x00, 0x00, 0x01,
0x10, 0x14, 0x0a, 0x00, 0x00, 0x01,
0xa0, 0x13, 0x01, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Black to white
0x22, 0x2a,
0x40, 0x0a, 0x00, 0x00, 0x00, 0x01,
0x90, 0x14, 0x14, 0x00, 0x00, 0x01,
0x00, 0x14, 0x0a, 0x00, 0x00, 0x01,
0x99, 0x0c, 0x01, 0x03, 0x04, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// White to black
0x23, 0x2a,
0x40, 0x0a, 0x00, 0x00, 0x00, 0x01,
0x90, 0x14, 0x14, 0x00, 0x00, 0x01,
0x00, 0x14, 0x0a, 0x00, 0x00, 0x01,
0x99, 0x0b, 0x04, 0x04, 0x01, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Black to black
0x24, 0x2a,
0x80, 0x0a, 0x00, 0x00, 0x00, 0x01,
0x90, 0x14, 0x14, 0x00, 0x00, 0x01,
0x20, 0x14, 0x0a, 0x00, 0x00, 0x01,
0x50, 0x13, 0x01, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const uint8_t display_stop_sequence[] = {
0x50, 0x01, 0x17, // CDI Setting
0x82, 0x01, 0x00, // VCM DC to -0.1V
0x02, 0x00 // Power off
};
void board_init(void) { void board_init(void) {
// USB // USB
@ -36,6 +112,52 @@ void board_init(void) {
// Debug UART // Debug UART
common_hal_never_reset_pin(&pin_GPIO43); common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44); common_hal_never_reset_pin(&pin_GPIO44);
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
common_hal_busio_spi_construct(spi, &pin_GPIO36, &pin_GPIO35, NULL);
common_hal_busio_spi_never_reset(spi);
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
bus->base.type = &displayio_fourwire_type;
common_hal_displayio_fourwire_construct(bus,
spi,
&pin_GPIO7, // EPD_DC Command or data
&pin_GPIO8, // EPD_CS Chip select
&pin_GPIO6, // EPD_RST Reset
4000000, // Baudrate
0, // Polarity
0); // Phase
displayio_epaperdisplay_obj_t* display = &displays[0].epaper_display;
display->base.type = &displayio_epaperdisplay_type;
common_hal_displayio_epaperdisplay_construct(
display,
bus,
display_start_sequence, sizeof(display_start_sequence),
display_stop_sequence, sizeof(display_stop_sequence),
296, // width
128, // height
160, // ram_width
296, // ram_height
0, // colstart
0, // rowstart
270, // rotation
NO_COMMAND, // set_column_window_command
NO_COMMAND, // set_row_window_command
NO_COMMAND, // set_current_column_command
NO_COMMAND, // set_current_row_command
0x10, // write_black_ram_command
false, // black_bits_inverted
0x13, // write_color_ram_command
false, // color_bits_inverted
0x000000, // highlight_color
0x12, // refresh_display_command
1.0, // refresh_time
&pin_GPIO5, // busy_pin
false, // busy_state
5.0, // seconds_per_frame
false, // always_toggle_chip_select
true); // grayscale
} }
bool board_requests_safe_mode(void) { bool board_requests_safe_mode(void) {

View File

@ -1,5 +1,7 @@
#include "shared-bindings/board/__init__.h" #include "shared-bindings/board/__init__.h"
#include "shared-module/displayio/__init__.h"
STATIC const mp_rom_map_elem_t board_global_dict_table[] = { STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) }, { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) },
{ MP_ROM_QSTR(MP_QSTR_AD1), MP_ROM_PTR(&pin_GPIO18) }, { MP_ROM_QSTR(MP_QSTR_AD1), MP_ROM_PTR(&pin_GPIO18) },
@ -37,5 +39,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].epaper_display)}
}; };
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);

View File

@ -25,7 +25,6 @@
*/ */
//Micropython setup //Micropython setup
#define MICROPY_HW_BOARD_NAME "microS2" #define MICROPY_HW_BOARD_NAME "microS2"
#define MICROPY_HW_MCU_NAME "ESP32S2" #define MICROPY_HW_MCU_NAME "ESP32S2"
@ -33,8 +32,20 @@
#define MICROPY_HW_BUTTON (&pin_GPIO0) #define MICROPY_HW_BUTTON (&pin_GPIO0)
#define MICROPY_HW_NEOPIXEL (&pin_GPIO33) #define MICROPY_HW_NEOPIXEL (&pin_GPIO33)
// Default bus pins
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO1)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2)
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO36)
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO35)
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO37)
#define DEFAULT_UART_BUS_TX (&pin_GPIO43)
#define DEFAULT_UART_BUS_RX (&pin_GPIO44)
#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0) #define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0)
// Explanation of how a user got into safe mode.
#define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n") #define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n")
#define AUTORESET_DELAY_MS 500 #define AUTORESET_DELAY_MS 500

View File

@ -37,3 +37,13 @@
// #define MICROPY_HW_APA102_MOSI (&pin_GPIO40) // #define MICROPY_HW_APA102_MOSI (&pin_GPIO40)
// #define MICROPY_HW_APA102_SCK (&pin_GPIO45) // #define MICROPY_HW_APA102_SCK (&pin_GPIO45)
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO9)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO8)
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO36)
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO35)
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO37)
#define DEFAULT_UART_BUS_RX (&pin_GPIO44)
#define DEFAULT_UART_BUS_TX (&pin_GPIO43)

View File

@ -57,7 +57,8 @@ bool common_hal_displayio_parallelbus_begin_transaction(mp_obj_t obj) {
return false; return false;
} }
void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type, display_chip_select_behavior_t chip_select, uint8_t *data, uint32_t data_length) { void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type,
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length) {
} }

View File

@ -29,14 +29,20 @@
#define PCNT_UNIT_ACTIVE 1 #define PCNT_UNIT_ACTIVE 1
#define PCNT_UNIT_INACTIVE 0 #define PCNT_UNIT_INACTIVE 0
static uint8_t pcnt_state[4]; static uint8_t pcnt_unit_state[4];
void peripherals_pcnt_reset(void) {
for (uint8_t i = 0; i<=3; i++) {
pcnt_unit_state[i] = PCNT_UNIT_INACTIVE;
}
}
int peripherals_pcnt_init(pcnt_config_t pcnt_config) { int peripherals_pcnt_init(pcnt_config_t pcnt_config) {
// Look for available pcnt unit // Look for available pcnt unit
for (uint8_t i = 0; i<=3; i++) { for (uint8_t i = 0; i<=3; i++) {
if (pcnt_state[i] == PCNT_UNIT_INACTIVE) { if (pcnt_unit_state[i] == PCNT_UNIT_INACTIVE) {
pcnt_config.unit = (pcnt_unit_t)i; pcnt_config.unit = (pcnt_unit_t)i;
pcnt_state[i] = PCNT_UNIT_ACTIVE; pcnt_unit_state[i] = PCNT_UNIT_ACTIVE;
break; break;
} else if (i == 3) { } else if (i == 3) {
return -1; return -1;
@ -46,10 +52,6 @@ int peripherals_pcnt_init(pcnt_config_t pcnt_config) {
// Initialize PCNT unit // Initialize PCNT unit
pcnt_unit_config(&pcnt_config); pcnt_unit_config(&pcnt_config);
// Configure and enable the input filter
pcnt_set_filter_value(pcnt_config.unit, 100);
pcnt_filter_enable(pcnt_config.unit);
// Initialize PCNT's counter // Initialize PCNT's counter
pcnt_counter_pause(pcnt_config.unit); pcnt_counter_pause(pcnt_config.unit);
pcnt_counter_clear(pcnt_config.unit); pcnt_counter_clear(pcnt_config.unit);
@ -61,6 +63,6 @@ int peripherals_pcnt_init(pcnt_config_t pcnt_config) {
} }
void peripherals_pcnt_deinit(pcnt_unit_t* unit) { void peripherals_pcnt_deinit(pcnt_unit_t* unit) {
pcnt_state[*unit] = PCNT_UNIT_INACTIVE; pcnt_unit_state[*unit] = PCNT_UNIT_INACTIVE;
*unit = PCNT_UNIT_MAX; *unit = PCNT_UNIT_MAX;
} }

View File

@ -31,5 +31,6 @@
extern int peripherals_pcnt_init(pcnt_config_t pcnt_config); extern int peripherals_pcnt_init(pcnt_config_t pcnt_config);
extern void peripherals_pcnt_deinit(pcnt_unit_t* unit); extern void peripherals_pcnt_deinit(pcnt_unit_t* unit);
extern void peripherals_pcnt_reset(void);
#endif // MICROPY_INCLUDED_ESP32S2_PERIPHERALS_PCNT_HANDLER_H #endif // MICROPY_INCLUDED_ESP32S2_PERIPHERALS_PCNT_HANDLER_H

View File

@ -49,6 +49,7 @@
#include "shared-bindings/rtc/__init__.h" #include "shared-bindings/rtc/__init__.h"
#include "peripherals/rmt.h" #include "peripherals/rmt.h"
#include "peripherals/pcnt.h"
#include "components/heap/include/esp_heap_caps.h" #include "components/heap/include/esp_heap_caps.h"
#include "components/soc/soc/esp32s2/include/soc/cache_memory.h" #include "components/soc/soc/esp32s2/include/soc/cache_memory.h"
@ -117,6 +118,10 @@ void reset_port(void) {
uart_reset(); uart_reset();
#endif #endif
#if defined(CIRCUITPY_COUNTIO) || defined(CIRCUITPY_ROTARYIO)
peripherals_pcnt_reset();
#endif
#if CIRCUITPY_RTC #if CIRCUITPY_RTC
rtc_reset(); rtc_reset();
#endif #endif

View File

@ -57,7 +57,8 @@ bool common_hal_displayio_parallelbus_begin_transaction(mp_obj_t obj) {
return false; return false;
} }
void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type, display_chip_select_behavior_t chip_select, uint8_t *data, uint32_t data_length) { void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type,
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length) {
} }

View File

@ -141,7 +141,8 @@ bool common_hal_displayio_parallelbus_begin_transaction(mp_obj_t obj) {
} }
// This ignores chip_select behaviour because data is clocked in by the write line toggling. // This ignores chip_select behaviour because data is clocked in by the write line toggling.
void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type, display_chip_select_behavior_t chip_select, uint8_t *data, uint32_t data_length) { void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type,
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length) {
displayio_parallelbus_obj_t* self = MP_OBJ_TO_PTR(obj); displayio_parallelbus_obj_t* self = MP_OBJ_TO_PTR(obj);
common_hal_digitalio_digitalinout_set_value(&self->command, byte_type == DISPLAY_DATA); common_hal_digitalio_digitalinout_set_value(&self->command, byte_type == DISPLAY_DATA);
uint32_t* clear_write = (uint32_t*) &self->write_group->OUTCLR; uint32_t* clear_write = (uint32_t*) &self->write_group->OUTCLR;

View File

@ -57,7 +57,8 @@ bool common_hal_displayio_parallelbus_begin_transaction(mp_obj_t obj) {
return false; return false;
} }
void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type, display_chip_select_behavior_t chip_select, uint8_t *data, uint32_t data_length) { void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type,
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length) {
} }

View File

@ -186,7 +186,7 @@ typedef long mp_off_t;
#define MICROPY_CPYTHON_COMPAT (CIRCUITPY_FULL_BUILD) #define MICROPY_CPYTHON_COMPAT (CIRCUITPY_FULL_BUILD)
#define MICROPY_PY_BUILTINS_POW3 (CIRCUITPY_FULL_BUILD) #define MICROPY_PY_BUILTINS_POW3 (CIRCUITPY_FULL_BUILD)
#define MICROPY_COMP_FSTRING_LITERAL (MICROPY_CPYTHON_COMPAT) #define MICROPY_COMP_FSTRING_LITERAL (MICROPY_CPYTHON_COMPAT)
#define MICROPY_MODULE_WEAK_LINKS (CIRCUITPY_FULL_BUILD) #define MICROPY_MODULE_WEAK_LINKS (0)
#define MICROPY_PY_ALL_SPECIAL_METHODS (CIRCUITPY_FULL_BUILD) #define MICROPY_PY_ALL_SPECIAL_METHODS (CIRCUITPY_FULL_BUILD)
#define MICROPY_PY_BUILTINS_COMPLEX (CIRCUITPY_FULL_BUILD) #define MICROPY_PY_BUILTINS_COMPLEX (CIRCUITPY_FULL_BUILD)
#define MICROPY_PY_BUILTINS_FROZENSET (CIRCUITPY_FULL_BUILD) #define MICROPY_PY_BUILTINS_FROZENSET (CIRCUITPY_FULL_BUILD)

View File

@ -58,24 +58,26 @@
//| r"""Create a Display object on the given display bus (`FourWire`, `ParallelBus` or `I2CDisplay`). //| r"""Create a Display object on the given display bus (`FourWire`, `ParallelBus` or `I2CDisplay`).
//| //|
//| The ``init_sequence`` is bitpacked to minimize the ram impact. Every command begins with a //| The ``init_sequence`` is bitpacked to minimize the ram impact. Every command begins with a
//| command byte followed by a byte to determine the parameter count and if a delay is need after. //| command byte followed by a byte to determine the parameter count and delay. When the top bit
//| When the top bit of the second byte is 1, the next byte will be the delay time in milliseconds. //| of the second byte is 1 (0x80), a delay will occur after the command parameters are sent.
//| The remaining 7 bits are the parameter count excluding any delay byte. The third through final //| The remaining 7 bits are the parameter count excluding any delay byte. The bytes following
//| bytes are the remaining command parameters. The next byte will begin a new command definition. //| are the parameters. When the delay bit is set, a single byte after the parameters specifies
//| Here is a portion of ILI9341 init code: //| the delay duration in milliseconds. The value 0xff will lead to an extra long 500 ms delay
//| instead of 255 ms. The next byte will begin a new command definition.
//| Here is an example:
//| //|
//| .. code-block:: python //| .. code-block:: python
//| //|
//| init_sequence = (b"\xe1\x0f\x00\x0E\x14\x03\x11\x07\x31\xC1\x48\x08\x0F\x0C\x31\x36\x0F" # Set Gamma //| init_sequence = (b"\xe1\x0f\x00\x0E\x14\x03\x11\x07\x31\xC1\x48\x08\x0F\x0C\x31\x36\x0F" # Set Gamma
//| b"\x11\x80\x78"# Exit Sleep then delay 0x78 (120ms) //| b"\x11\x80\x78"# Exit Sleep then delay 0x78 (120ms)
//| b"\x29\x80\x78"# Display on then delay 0x78 (120ms) //| b"\x29\x81\xaa\x78"# Display on then delay 0x78 (120ms)
//| ) //| )
//| display = displayio.Display(display_bus, init_sequence, width=320, height=240) //| display = displayio.Display(display_bus, init_sequence, width=320, height=240)
//| //|
//| The first command is 0xe1 with 15 (0xf) parameters following. The second and third are 0x11 and //| The first command is 0xe1 with 15 (0xf) parameters following. The second is 0x11 with 0
//| 0x29 respectively with delays (0x80) of 120ms (0x78) and no parameters. Multiple byte literals //| parameters and a 120ms (0x78) delay. The third command is 0x29 with one parameter 0xaa and a
//| (b"") are merged together on load. The parens are needed to allow byte literals on subsequent //| 120ms delay (0x78). Multiple byte literals (b"") are merged together on load. The parens
//| lines. //| are needed to allow byte literals on subsequent lines.
//| //|
//| The initialization sequence should always leave the display memory access inline with the scan //| The initialization sequence should always leave the display memory access inline with the scan
//| of the display to minimize tearing artifacts. //| of the display to minimize tearing artifacts.

View File

@ -65,11 +65,12 @@
//| """Create a EPaperDisplay object on the given display bus (`displayio.FourWire` or `displayio.ParallelBus`). //| """Create a EPaperDisplay object on the given display bus (`displayio.FourWire` or `displayio.ParallelBus`).
//| //|
//| The ``start_sequence`` and ``stop_sequence`` are bitpacked to minimize the ram impact. Every //| The ``start_sequence`` and ``stop_sequence`` are bitpacked to minimize the ram impact. Every
//| command begins with a command byte followed by a byte to determine the parameter count and if //| command begins with a command byte followed by a byte to determine the parameter count and
//| a delay is need after. When the top bit of the second byte is 1, the next byte will be the //| delay. When the top bit of the second byte is 1 (0x80), a delay will occur after the command
//| delay time in milliseconds. The remaining 7 bits are the parameter count excluding any delay //| parameters are sent. The remaining 7 bits are the parameter count excluding any delay
//| byte. The third through final bytes are the remaining command parameters. The next byte will //| byte. The bytes following are the parameters. When the delay bit is set, a single byte after
//| begin a new command definition. //| the parameters specifies the delay duration in milliseconds. The value 0xff will lead to an
//| extra long 500 ms delay instead of 255 ms. The next byte will begin a new command definition.
//| //|
//| :param display_bus: The bus that the display is connected to //| :param display_bus: The bus that the display is connected to
//| :type _DisplayBus: displayio.FourWire or displayio.ParallelBus //| :type _DisplayBus: displayio.FourWire or displayio.ParallelBus
@ -244,6 +245,23 @@ const mp_obj_property_t displayio_epaperdisplay_time_to_refresh_obj = {
(mp_obj_t)&mp_const_none_obj}, (mp_obj_t)&mp_const_none_obj},
}; };
//| busy: bool
//| """True when the display is refreshing. This uses the ``busy_pin`` when available or the
//| ``refresh_time`` otherwise."""
//|
STATIC mp_obj_t displayio_epaperdisplay_obj_get_busy(mp_obj_t self_in) {
displayio_epaperdisplay_obj_t *self = native_display(self_in);
return mp_obj_new_bool(common_hal_displayio_epaperdisplay_get_busy(self));
}
MP_DEFINE_CONST_FUN_OBJ_1(displayio_epaperdisplay_get_busy_obj, displayio_epaperdisplay_obj_get_busy);
const mp_obj_property_t displayio_epaperdisplay_busy_obj = {
.base.type = &mp_type_property,
.proxy = {(mp_obj_t)&displayio_epaperdisplay_get_busy_obj,
(mp_obj_t)&mp_const_none_obj,
(mp_obj_t)&mp_const_none_obj},
};
//| width: int //| width: int
//| """Gets the width of the display in pixels""" //| """Gets the width of the display in pixels"""
//| //|
@ -300,6 +318,7 @@ STATIC const mp_rom_map_elem_t displayio_epaperdisplay_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&displayio_epaperdisplay_width_obj) }, { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&displayio_epaperdisplay_width_obj) },
{ MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&displayio_epaperdisplay_height_obj) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&displayio_epaperdisplay_height_obj) },
{ MP_ROM_QSTR(MP_QSTR_bus), MP_ROM_PTR(&displayio_epaperdisplay_bus_obj) }, { MP_ROM_QSTR(MP_QSTR_bus), MP_ROM_PTR(&displayio_epaperdisplay_bus_obj) },
{ MP_ROM_QSTR(MP_QSTR_busy), MP_ROM_PTR(&displayio_epaperdisplay_busy_obj) },
{ MP_ROM_QSTR(MP_QSTR_time_to_refresh), MP_ROM_PTR(&displayio_epaperdisplay_time_to_refresh_obj) }, { MP_ROM_QSTR(MP_QSTR_time_to_refresh), MP_ROM_PTR(&displayio_epaperdisplay_time_to_refresh_obj) },
}; };
STATIC MP_DEFINE_CONST_DICT(displayio_epaperdisplay_locals_dict, displayio_epaperdisplay_locals_dict_table); STATIC MP_DEFINE_CONST_DICT(displayio_epaperdisplay_locals_dict, displayio_epaperdisplay_locals_dict_table);

View File

@ -39,7 +39,7 @@ extern const mp_obj_type_t displayio_epaperdisplay_type;
#define NO_COMMAND 0x100 #define NO_COMMAND 0x100
void common_hal_displayio_epaperdisplay_construct(displayio_epaperdisplay_obj_t* self, void common_hal_displayio_epaperdisplay_construct(displayio_epaperdisplay_obj_t* self,
mp_obj_t bus, uint8_t* start_sequence, uint16_t start_sequence_len, uint8_t* stop_sequence, uint16_t stop_sequence_len, mp_obj_t bus, const uint8_t* start_sequence, uint16_t start_sequence_len, const uint8_t* stop_sequence, uint16_t stop_sequence_len,
uint16_t width, uint16_t height, uint16_t ram_width, uint16_t ram_height, int16_t colstart, int16_t rowstart, uint16_t rotation, uint16_t width, uint16_t height, uint16_t ram_width, uint16_t ram_height, int16_t colstart, int16_t rowstart, uint16_t rotation,
uint16_t set_column_window_command, uint16_t set_row_window_command, uint16_t set_column_window_command, uint16_t set_row_window_command,
uint16_t set_current_column_command, uint16_t set_current_row_command, uint16_t set_current_column_command, uint16_t set_current_row_command,
@ -52,6 +52,7 @@ bool common_hal_displayio_epaperdisplay_show(displayio_epaperdisplay_obj_t* self
// Returns time in milliseconds. // Returns time in milliseconds.
uint32_t common_hal_displayio_epaperdisplay_get_time_to_refresh(displayio_epaperdisplay_obj_t* self); uint32_t common_hal_displayio_epaperdisplay_get_time_to_refresh(displayio_epaperdisplay_obj_t* self);
bool common_hal_displayio_epaperdisplay_get_busy(displayio_epaperdisplay_obj_t* self);
uint16_t common_hal_displayio_epaperdisplay_get_width(displayio_epaperdisplay_obj_t* self); uint16_t common_hal_displayio_epaperdisplay_get_width(displayio_epaperdisplay_obj_t* self);
uint16_t common_hal_displayio_epaperdisplay_get_height(displayio_epaperdisplay_obj_t* self); uint16_t common_hal_displayio_epaperdisplay_get_height(displayio_epaperdisplay_obj_t* self);

View File

@ -48,7 +48,8 @@ bool common_hal_displayio_fourwire_bus_free(mp_obj_t self);
bool common_hal_displayio_fourwire_begin_transaction(mp_obj_t self); bool common_hal_displayio_fourwire_begin_transaction(mp_obj_t self);
void common_hal_displayio_fourwire_send(mp_obj_t self, display_byte_type_t byte_type, display_chip_select_behavior_t chip_select, uint8_t *data, uint32_t data_length); void common_hal_displayio_fourwire_send(mp_obj_t self, display_byte_type_t byte_type,
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length);
void common_hal_displayio_fourwire_end_transaction(mp_obj_t self); void common_hal_displayio_fourwire_end_transaction(mp_obj_t self);

View File

@ -44,7 +44,8 @@ bool common_hal_displayio_i2cdisplay_bus_free(mp_obj_t self);
bool common_hal_displayio_i2cdisplay_begin_transaction(mp_obj_t self); bool common_hal_displayio_i2cdisplay_begin_transaction(mp_obj_t self);
void common_hal_displayio_i2cdisplay_send(mp_obj_t self, display_byte_type_t byte_type, display_chip_select_behavior_t chip_select, uint8_t *data, uint32_t data_length); void common_hal_displayio_i2cdisplay_send(mp_obj_t self, display_byte_type_t byte_type,
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length);
void common_hal_displayio_i2cdisplay_end_transaction(mp_obj_t self); void common_hal_displayio_i2cdisplay_end_transaction(mp_obj_t self);

View File

@ -46,7 +46,8 @@ bool common_hal_displayio_parallelbus_bus_free(mp_obj_t self);
bool common_hal_displayio_parallelbus_begin_transaction(mp_obj_t self); bool common_hal_displayio_parallelbus_begin_transaction(mp_obj_t self);
void common_hal_displayio_parallelbus_send(mp_obj_t self, display_byte_type_t byte_type, display_chip_select_behavior_t chip_select, uint8_t *data, uint32_t data_length); void common_hal_displayio_parallelbus_send(mp_obj_t self, display_byte_type_t byte_type,
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length);
void common_hal_displayio_parallelbus_end_transaction(mp_obj_t self); void common_hal_displayio_parallelbus_end_transaction(mp_obj_t self);

View File

@ -42,7 +42,8 @@ typedef enum {
typedef bool (*display_bus_bus_reset)(mp_obj_t bus); typedef bool (*display_bus_bus_reset)(mp_obj_t bus);
typedef bool (*display_bus_bus_free)(mp_obj_t bus); typedef bool (*display_bus_bus_free)(mp_obj_t bus);
typedef bool (*display_bus_begin_transaction)(mp_obj_t bus); typedef bool (*display_bus_begin_transaction)(mp_obj_t bus);
typedef void (*display_bus_send)(mp_obj_t bus, display_byte_type_t byte_type, display_chip_select_behavior_t chip_select, uint8_t *data, uint32_t data_length); typedef void (*display_bus_send)(mp_obj_t bus, display_byte_type_t byte_type,
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length);
typedef void (*display_bus_end_transaction)(mp_obj_t bus); typedef void (*display_bus_end_transaction)(mp_obj_t bus);
void common_hal_displayio_release_displays(void); void common_hal_displayio_release_displays(void);

View File

@ -197,6 +197,11 @@ STATIC mp_obj_t rgbmatrix_rgbmatrix_make_new(const mp_obj_type_t *type, size_t n
uint8_t clock_pin = validate_pin(args[ARG_clock_pin].u_obj); uint8_t clock_pin = validate_pin(args[ARG_clock_pin].u_obj);
uint8_t latch_pin = validate_pin(args[ARG_latch_pin].u_obj); uint8_t latch_pin = validate_pin(args[ARG_latch_pin].u_obj);
uint8_t output_enable_pin = validate_pin(args[ARG_output_enable_pin].u_obj); uint8_t output_enable_pin = validate_pin(args[ARG_output_enable_pin].u_obj);
int bit_depth = args[ARG_bit_depth].u_int;
if (bit_depth <= 0 || bit_depth > 6) {
mp_raise_ValueError_varg(translate("Bit depth must be from 1 to 6 inclusive, not %d"), bit_depth);
}
validate_pins(MP_QSTR_rgb_pins, rgb_pins, MP_ARRAY_SIZE(self->rgb_pins), args[ARG_rgb_list].u_obj, &rgb_count); validate_pins(MP_QSTR_rgb_pins, rgb_pins, MP_ARRAY_SIZE(self->rgb_pins), args[ARG_rgb_list].u_obj, &rgb_count);
validate_pins(MP_QSTR_addr_pins, addr_pins, MP_ARRAY_SIZE(self->addr_pins), args[ARG_addr_list].u_obj, &addr_count); validate_pins(MP_QSTR_addr_pins, addr_pins, MP_ARRAY_SIZE(self->addr_pins), args[ARG_addr_list].u_obj, &addr_count);
@ -229,7 +234,7 @@ STATIC mp_obj_t rgbmatrix_rgbmatrix_make_new(const mp_obj_type_t *type, size_t n
common_hal_rgbmatrix_rgbmatrix_construct(self, common_hal_rgbmatrix_rgbmatrix_construct(self,
args[ARG_width].u_int, args[ARG_width].u_int,
args[ARG_bit_depth].u_int, bit_depth,
rgb_count, rgb_pins, rgb_count, rgb_pins,
addr_count, addr_pins, addr_count, addr_pins,
clock_pin, latch_pin, output_enable_pin, clock_pin, latch_pin, output_enable_pin,

View File

@ -55,7 +55,7 @@ uint8_t displayio_colorconverter_compute_luma(uint32_t color_rgb888) {
uint32_t r8 = (color_rgb888 >> 16); uint32_t r8 = (color_rgb888 >> 16);
uint32_t g8 = (color_rgb888 >> 8) & 0xff; uint32_t g8 = (color_rgb888 >> 8) & 0xff;
uint32_t b8 = color_rgb888 & 0xff; uint32_t b8 = color_rgb888 & 0xff;
return (r8 * 19) / 255 + (g8 * 182) / 255 + (b8 + 54) / 255; return (r8 * 19 + g8 * 182 + b8 * 54) / 255;
} }
uint8_t displayio_colorconverter_compute_chroma(uint32_t color_rgb888) { uint8_t displayio_colorconverter_compute_chroma(uint32_t color_rgb888) {

View File

@ -43,7 +43,8 @@
#include <string.h> #include <string.h>
void common_hal_displayio_epaperdisplay_construct(displayio_epaperdisplay_obj_t* self, void common_hal_displayio_epaperdisplay_construct(displayio_epaperdisplay_obj_t* self,
mp_obj_t bus, uint8_t* start_sequence, uint16_t start_sequence_len, uint8_t* stop_sequence, uint16_t stop_sequence_len, mp_obj_t bus, const uint8_t* start_sequence, uint16_t start_sequence_len,
const uint8_t* stop_sequence, uint16_t stop_sequence_len,
uint16_t width, uint16_t height, uint16_t ram_width, uint16_t ram_height, uint16_t width, uint16_t height, uint16_t ram_width, uint16_t ram_height,
int16_t colstart, int16_t rowstart, uint16_t rotation, int16_t colstart, int16_t rowstart, uint16_t rotation,
uint16_t set_column_window_command, uint16_t set_row_window_command, uint16_t set_column_window_command, uint16_t set_row_window_command,
@ -133,14 +134,15 @@ STATIC void wait_for_busy(displayio_epaperdisplay_obj_t* self) {
} }
} }
STATIC void send_command_sequence(displayio_epaperdisplay_obj_t* self, bool should_wait_for_busy, uint8_t* sequence, uint32_t sequence_len) { STATIC void send_command_sequence(displayio_epaperdisplay_obj_t* self,
bool should_wait_for_busy, const uint8_t* sequence, uint32_t sequence_len) {
uint32_t i = 0; uint32_t i = 0;
while (i < sequence_len) { while (i < sequence_len) {
uint8_t *cmd = sequence + i; const uint8_t *cmd = sequence + i;
uint8_t data_size = *(cmd + 1); uint8_t data_size = *(cmd + 1);
bool delay = (data_size & DELAY) != 0; bool delay = (data_size & DELAY) != 0;
data_size &= ~DELAY; data_size &= ~DELAY;
uint8_t *data = cmd + 2; const uint8_t *data = cmd + 2;
displayio_display_core_begin_transaction(&self->core); displayio_display_core_begin_transaction(&self->core);
self->core.send(self->core.bus, DISPLAY_COMMAND, self->chip_select, cmd, 1); self->core.send(self->core.bus, DISPLAY_COMMAND, self->chip_select, cmd, 1);
self->core.send(self->core.bus, DISPLAY_DATA, self->chip_select, data, data_size); self->core.send(self->core.bus, DISPLAY_DATA, self->chip_select, data, data_size);
@ -358,6 +360,11 @@ void displayio_epaperdisplay_background(displayio_epaperdisplay_obj_t* self) {
} }
} }
bool common_hal_displayio_epaperdisplay_get_busy(displayio_epaperdisplay_obj_t* self) {
displayio_epaperdisplay_background(self);
return self->refreshing;
}
void release_epaperdisplay(displayio_epaperdisplay_obj_t* self) { void release_epaperdisplay(displayio_epaperdisplay_obj_t* self) {
if (self->refreshing) { if (self->refreshing) {
wait_for_busy(self); wait_for_busy(self);
@ -375,8 +382,8 @@ void release_epaperdisplay(displayio_epaperdisplay_obj_t* self) {
void displayio_epaperdisplay_collect_ptrs(displayio_epaperdisplay_obj_t* self) { void displayio_epaperdisplay_collect_ptrs(displayio_epaperdisplay_obj_t* self) {
displayio_display_core_collect_ptrs(&self->core); displayio_display_core_collect_ptrs(&self->core);
gc_collect_ptr(self->start_sequence); gc_collect_ptr((void *) self->start_sequence);
gc_collect_ptr(self->stop_sequence); gc_collect_ptr((void *) self->stop_sequence);
} }
bool maybe_refresh_epaperdisplay(void) { bool maybe_refresh_epaperdisplay(void) {

View File

@ -38,9 +38,9 @@ typedef struct {
displayio_display_core_t core; displayio_display_core_t core;
digitalio_digitalinout_obj_t busy; digitalio_digitalinout_obj_t busy;
uint32_t milliseconds_per_frame; uint32_t milliseconds_per_frame;
uint8_t* start_sequence; const uint8_t* start_sequence;
uint32_t start_sequence_len; uint32_t start_sequence_len;
uint8_t* stop_sequence; const uint8_t* stop_sequence;
uint32_t stop_sequence_len; uint32_t stop_sequence_len;
uint16_t refresh_time; uint16_t refresh_time;
uint16_t set_column_window_command; uint16_t set_column_window_command;

View File

@ -113,7 +113,8 @@ bool common_hal_displayio_fourwire_begin_transaction(mp_obj_t obj) {
return true; return true;
} }
void common_hal_displayio_fourwire_send(mp_obj_t obj, display_byte_type_t data_type, display_chip_select_behavior_t chip_select, uint8_t *data, uint32_t data_length) { void common_hal_displayio_fourwire_send(mp_obj_t obj, display_byte_type_t data_type,
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length) {
displayio_fourwire_obj_t* self = MP_OBJ_TO_PTR(obj); displayio_fourwire_obj_t* self = MP_OBJ_TO_PTR(obj);
common_hal_digitalio_digitalinout_set_value(&self->command, data_type == DISPLAY_DATA); common_hal_digitalio_digitalinout_set_value(&self->command, data_type == DISPLAY_DATA);
if (chip_select == CHIP_SELECT_TOGGLE_EVERY_BYTE) { if (chip_select == CHIP_SELECT_TOGGLE_EVERY_BYTE) {

View File

@ -103,7 +103,8 @@ bool common_hal_displayio_i2cdisplay_begin_transaction(mp_obj_t obj) {
return common_hal_busio_i2c_try_lock(self->bus); return common_hal_busio_i2c_try_lock(self->bus);
} }
void common_hal_displayio_i2cdisplay_send(mp_obj_t obj, display_byte_type_t data_type, display_chip_select_behavior_t chip_select, uint8_t *data, uint32_t data_length) { void common_hal_displayio_i2cdisplay_send(mp_obj_t obj, display_byte_type_t data_type,
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length) {
displayio_i2cdisplay_obj_t* self = MP_OBJ_TO_PTR(obj); displayio_i2cdisplay_obj_t* self = MP_OBJ_TO_PTR(obj);
if (data_type == DISPLAY_COMMAND) { if (data_type == DISPLAY_COMMAND) {
uint8_t command_bytes[2 * data_length]; uint8_t command_bytes[2 * data_length];

View File

@ -39,7 +39,7 @@
#define MSC_FLASH_BLOCK_SIZE 512 #define MSC_FLASH_BLOCK_SIZE 512
static bool ejected[1] = {true}; static bool ejected[1] = {false};
void usb_msc_mount(void) { void usb_msc_mount(void) {
// Reset the ejection tracking every time we're plugged into USB. This allows for us to battery // Reset the ejection tracking every time we're plugged into USB. This allows for us to battery