Merge remote-tracking branch 'adafruit/main' into design_guide_update
This commit is contained in:
commit
1ae88c3131
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -307,3 +307,6 @@
|
||||
[submodule "frozen/circuitpython_picoed"]
|
||||
path = frozen/circuitpython_picoed
|
||||
url = https://github.com/elecfreaks/circuitpython_picoed.git
|
||||
[submodule "ports/espressif/esp32-camera"]
|
||||
path = ports/espressif/esp32-camera
|
||||
url = https://github.com/adafruit/esp32-camera/
|
||||
|
1
conf.py
1
conf.py
@ -199,6 +199,7 @@ exclude_patterns = ["**/build*",
|
||||
"ports/cxd56/spresense-exported-sdk",
|
||||
"ports/espressif/certificates",
|
||||
"ports/espressif/esp-idf",
|
||||
"ports/espressif/esp32-camera",
|
||||
"ports/espressif/.idf_tools",
|
||||
"ports/espressif/peripherals",
|
||||
"ports/litex/hw",
|
||||
|
@ -71,7 +71,7 @@ as a natural "TODO" list. An example minimal build list is shown below:
|
||||
CIRCUITPY_SDCARDIO = 0
|
||||
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||
CIRCUITPY_FREQUENCYIO = 0
|
||||
CIRCUITPY_I2CPERIPHERAL = 0
|
||||
CIRCUITPY_I2CTARGET = 0
|
||||
# Requires SPI, PulseIO (stub ok):
|
||||
CIRCUITPY_DISPLAYIO = 0
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit f993d5fac69f3a0cfa33988268666c462b72c0ec
|
||||
Subproject commit 9a8338b3bdaeac9eeb5b74d147107c67db33fdac
|
22
locale/ID.po
22
locale/ID.po
@ -404,12 +404,14 @@ msgstr "Alamat harus sepanjang %d byte"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Semua perangkat I2C sedang digunakan"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1609,7 +1611,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2350,11 +2352,11 @@ msgstr "__new__ arg harus berupa user-type"
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "sebuah objek menyerupai byte (bytes-like) dibutuhkan"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "alamat di luar batas"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr "alamatnya kosong"
|
||||
|
||||
@ -2546,7 +2548,7 @@ msgstr "tidak dapat menetapkan ke ekspresi"
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
@ -3283,6 +3285,10 @@ msgstr ""
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "micropython decorator tidak valid"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr ""
|
||||
@ -3538,7 +3544,7 @@ msgstr ""
|
||||
msgid "no response from SD card"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr ""
|
||||
|
||||
|
@ -398,12 +398,14 @@ msgstr ""
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1589,7 +1591,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2319,11 +2321,11 @@ msgstr ""
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr ""
|
||||
|
||||
@ -2515,7 +2517,7 @@ msgstr ""
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
@ -3252,6 +3254,10 @@ msgstr ""
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr ""
|
||||
@ -3507,7 +3513,7 @@ msgstr ""
|
||||
msgid "no response from SD card"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr ""
|
||||
|
||||
|
22
locale/cs.po
22
locale/cs.po
@ -405,12 +405,14 @@ msgstr "Adresa musí být %d bajtů dlouhá"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "Všechny CAN periferie jsou používány"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Všechny I2C periferie jsou používány"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1605,7 +1607,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2337,11 +2339,11 @@ msgstr ""
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr ""
|
||||
|
||||
@ -2533,7 +2535,7 @@ msgstr ""
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
@ -3270,6 +3272,10 @@ msgstr ""
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr ""
|
||||
@ -3525,7 +3531,7 @@ msgstr ""
|
||||
msgid "no response from SD card"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr ""
|
||||
|
||||
|
@ -407,12 +407,14 @@ msgstr "Die Adresse muss %d Bytes lang sein"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "Alle CAN-Schnittstellen sind in Benutzung"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Alle I2C-Peripheriegeräte sind in Benutzung"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1624,7 +1626,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr "Nur ein TouchAlarm kann in Deep Sleep gesetzt werden."
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr "Nur eine Adresse ist erlaubt"
|
||||
|
||||
@ -2389,11 +2391,11 @@ msgstr "__new__ arg muss user-type sein"
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "ein Byte-ähnliches Objekt ist erforderlich"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "Adresse außerhalb der Grenzen"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr "addresses ist leer"
|
||||
|
||||
@ -2587,7 +2589,7 @@ msgstr "kann keinem Ausdruck zuweisen"
|
||||
msgid "can't cancel self"
|
||||
msgstr "kann self nicht abbrechen"
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "kann %q nicht zu %q konvertieren"
|
||||
@ -3336,6 +3338,10 @@ msgstr "ungültiger Hostname"
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "ungültiger micropython decorator"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "ungültiger Schritt (step)"
|
||||
@ -3597,7 +3603,7 @@ msgstr "kein Reset Pin verfügbar"
|
||||
msgid "no response from SD card"
|
||||
msgstr "keine Antwort von der SD-Karte"
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr "kein solches Attribut"
|
||||
|
||||
|
22
locale/el.po
22
locale/el.po
@ -398,12 +398,14 @@ msgstr ""
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1589,7 +1591,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2319,11 +2321,11 @@ msgstr ""
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr ""
|
||||
|
||||
@ -2515,7 +2517,7 @@ msgstr ""
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
@ -3252,6 +3254,10 @@ msgstr ""
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr ""
|
||||
@ -3507,7 +3513,7 @@ msgstr ""
|
||||
msgid "no response from SD card"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr ""
|
||||
|
||||
|
@ -408,12 +408,14 @@ msgstr "Address must be %d bytes long"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "All CAN peripherals are in use"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "All I2C peripherals are in use"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1609,7 +1611,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr "Only one TouchAlarm can be set in deep sleep."
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2353,11 +2355,11 @@ msgstr "__new__ arg must be a user-type"
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "a bytes-like object is required"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "address out of bounds"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr "addresses is empty"
|
||||
|
||||
@ -2549,7 +2551,7 @@ msgstr "Can't assign to expression"
|
||||
msgid "can't cancel self"
|
||||
msgstr "can't cancel self"
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "Can't convert %q to %q"
|
||||
@ -3289,6 +3291,10 @@ msgstr "invalid hostname"
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "invalid micropython decorator"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "invalid step"
|
||||
@ -3544,7 +3550,7 @@ msgstr "no reset pin available"
|
||||
msgid "no response from SD card"
|
||||
msgstr "no response from SD card"
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr "no such attribute"
|
||||
|
||||
|
22
locale/es.po
22
locale/es.po
@ -407,12 +407,14 @@ msgstr "La dirección debe tener %d bytes de largo"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "Todos los periféricos CAN están en uso"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Todos los periféricos I2C están siendo usados"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1630,7 +1632,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr "Solamente una TouchAlarm puede ser configurada durante deep sleep."
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2386,11 +2388,11 @@ msgstr "__new__ arg debe ser un user-type"
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "se requiere un objeto bytes-like"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "address fuera de límites"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr "addresses esta vacío"
|
||||
|
||||
@ -2582,7 +2584,7 @@ msgstr "no se puede asignar a la expresión"
|
||||
msgid "can't cancel self"
|
||||
msgstr "no se puede cancelar a si mismo"
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "no puede convertir %q a %q"
|
||||
@ -3326,6 +3328,10 @@ msgstr "hostname inválido"
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "decorador de micropython inválido"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "paso inválido"
|
||||
@ -3585,7 +3591,7 @@ msgstr "no hay pin de reinicio disponible"
|
||||
msgid "no response from SD card"
|
||||
msgstr "no hay respuesta de la tarjeta SD"
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr "no hay tal atributo"
|
||||
|
||||
|
@ -401,12 +401,14 @@ msgstr "ang palette ay dapat 32 bytes ang haba"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Lahat ng I2C peripherals ginagamit"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1605,7 +1607,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2339,11 +2341,11 @@ msgstr "__new__ arg ay dapat na user-type"
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "a bytes-like object ay kailangan"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "wala sa sakop ang address"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr "walang laman ang address"
|
||||
|
||||
@ -2537,7 +2539,7 @@ msgstr "hindi ma i-assign sa expression"
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
@ -3285,6 +3287,10 @@ msgstr ""
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "mali ang micropython decorator"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "mali ang step"
|
||||
@ -3544,7 +3550,7 @@ msgstr ""
|
||||
msgid "no response from SD card"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr "walang ganoon na attribute"
|
||||
|
||||
|
22
locale/fr.po
22
locale/fr.po
@ -410,12 +410,14 @@ msgstr "L'adresse doit être longue de %d octets"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "Tous les périphériques CAN sont utilisés"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Tous les périphériques I2C sont utilisés"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1653,7 +1655,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr "Seulement une TouchAlarm peu être réglée en sommeil profond."
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr "Seulement une adresse est autorisée"
|
||||
|
||||
@ -2420,11 +2422,11 @@ msgstr "l'argument __new__ doit être d'un type défini par l'utilisateur"
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "un objet 'bytes-like' est requis"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "adresse hors limites"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr "adresses vides"
|
||||
|
||||
@ -2617,7 +2619,7 @@ msgstr "ne peut pas assigner à une expression"
|
||||
msgid "can't cancel self"
|
||||
msgstr "ne peut pas s'annuler soi-même"
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "impossible de convertir %q en %q"
|
||||
@ -3368,6 +3370,10 @@ msgstr "hostname incorrect"
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "décorateur micropython invalide"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "pas invalide"
|
||||
@ -3628,7 +3634,7 @@ msgstr "pas de broche de réinitialisation disponible"
|
||||
msgid "no response from SD card"
|
||||
msgstr "pas de réponse de la carte SD"
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr "pas de tel attribut"
|
||||
|
||||
|
22
locale/hi.po
22
locale/hi.po
@ -398,12 +398,14 @@ msgstr ""
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1589,7 +1591,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2319,11 +2321,11 @@ msgstr ""
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr ""
|
||||
|
||||
@ -2515,7 +2517,7 @@ msgstr ""
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
@ -3252,6 +3254,10 @@ msgstr ""
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr ""
|
||||
@ -3507,7 +3513,7 @@ msgstr ""
|
||||
msgid "no response from SD card"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr ""
|
||||
|
||||
|
@ -407,12 +407,14 @@ msgstr "L'indirizzo deve essere lungo %d byte"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "Tutte le periferiche CAN sono in uso"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Tutte le periferiche I2C sono in uso"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1612,7 +1614,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2349,11 +2351,11 @@ msgstr ""
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "un oggetto byte-like è richiesto"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "indirizzo fuori limite"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr "gli indirizzi sono vuoti"
|
||||
|
||||
@ -2549,7 +2551,7 @@ msgstr "impossibile assegnare all'espressione"
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
@ -3293,6 +3295,10 @@ msgstr ""
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "decoratore non valido in micropython"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "step non valida"
|
||||
@ -3553,7 +3559,7 @@ msgstr ""
|
||||
msgid "no response from SD card"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr "attributo inesistente"
|
||||
|
||||
|
22
locale/ja.po
22
locale/ja.po
@ -403,12 +403,14 @@ msgstr "アドレスは、%dバイト長でなければなりません"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "全てのCAN周辺機器が使用中"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "全てのI2C周辺機器が使用中"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1602,7 +1604,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2333,11 +2335,11 @@ msgstr "__new__の引数はユーザ型でなければなりません"
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "bytes-likeオブジェクトが必要"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "アドレスが範囲外"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr ""
|
||||
|
||||
@ -2529,7 +2531,7 @@ msgstr "式には代入できません"
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "%qを%qに変換できません"
|
||||
@ -3271,6 +3273,10 @@ msgstr "不正なホスト名"
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "不正なmicropythonデコレータ"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "不正なステップ"
|
||||
@ -3526,7 +3532,7 @@ msgstr "利用可能なリセットピンがありません"
|
||||
msgid "no response from SD card"
|
||||
msgstr "SDカードからの応答がありません"
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr "指定の属性はありません"
|
||||
|
||||
|
22
locale/ko.po
22
locale/ko.po
@ -399,12 +399,14 @@ msgstr ""
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "사용중인 모든 I2C주변 기기"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1592,7 +1594,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2323,11 +2325,11 @@ msgstr ""
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr ""
|
||||
|
||||
@ -2519,7 +2521,7 @@ msgstr ""
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
@ -3256,6 +3258,10 @@ msgstr ""
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "단계(step)가 유효하지 않습니다"
|
||||
@ -3511,7 +3517,7 @@ msgstr ""
|
||||
msgid "no response from SD card"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr ""
|
||||
|
||||
|
22
locale/nl.po
22
locale/nl.po
@ -401,12 +401,14 @@ msgstr "Adres moet %d bytes lang zijn"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "Alle CAN-peripherals zijn in gebruik"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Alle I2C peripherals zijn in gebruik"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1606,7 +1608,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2349,11 +2351,11 @@ msgstr "__new__ arg moet een user-type zijn"
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "een bytes-achtig object is vereist"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "adres buiten bereik"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr "adressen zijn leeg"
|
||||
|
||||
@ -2546,7 +2548,7 @@ msgstr "kan niet toewijzen aan expressie"
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "kan %q niet naar %q converteren"
|
||||
@ -3286,6 +3288,10 @@ msgstr "onjuiste hostnaam"
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "ongeldige micropython decorator"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "ongeldige stap"
|
||||
@ -3544,7 +3550,7 @@ msgstr "geen reset pin beschikbaar"
|
||||
msgid "no response from SD card"
|
||||
msgstr "geen antwoord van SD kaart"
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr "niet zo'n attribuut"
|
||||
|
||||
|
22
locale/pl.po
22
locale/pl.po
@ -403,12 +403,14 @@ msgstr "Adres musi mieć %d bajtów"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Wszystkie peryferia I2C w użyciu"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1600,7 +1602,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2330,11 +2332,11 @@ msgstr "Argument __new__ musi być typu użytkownika"
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "wymagany obiekt typu bytes"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "adres poza zakresem"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr "adres jest pusty"
|
||||
|
||||
@ -2526,7 +2528,7 @@ msgstr "przypisanie do wyrażenia"
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "nie można dokonać konwersji %q na %q"
|
||||
@ -3264,6 +3266,10 @@ msgstr ""
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "zły dekorator micropythona"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "zły krok"
|
||||
@ -3519,7 +3525,7 @@ msgstr ""
|
||||
msgid "no response from SD card"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr "nie ma takiego atrybutu"
|
||||
|
||||
|
@ -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-08-07 15:16+0000\n"
|
||||
"PO-Revision-Date: 2022-08-10 07:18+0000\n"
|
||||
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: pt_BR\n"
|
||||
@ -411,12 +411,14 @@ msgstr "O endereço deve ter %d bytes de comprimento"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "Todos os periféricos CAN estão em uso"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Todos os periféricos I2C estão em uso"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr "Todos os alvos I2C já estão em uso"
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1635,7 +1637,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr "Apenas um TouchAlarm pode ser colocado em deep sleep."
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr "Apenas um endereço é permitido"
|
||||
|
||||
@ -2402,11 +2404,11 @@ msgstr "O argumento __new__ deve ser um tipo usuário"
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "é necessário objetos tipo bytes"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "endereço fora dos limites"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr "os endereços estão vazios"
|
||||
|
||||
@ -2598,7 +2600,7 @@ msgstr "a expressão não pode ser atribuída"
|
||||
msgid "can't cancel self"
|
||||
msgstr "não é possível cancelar a si mesmo"
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "não é possível converter %q para %q"
|
||||
@ -3345,6 +3347,10 @@ msgstr "o nome do host é inválido"
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "o decorador micropython é inválido"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr "configuração inválida"
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "passo inválido"
|
||||
@ -3605,7 +3611,7 @@ msgstr "nenhum pino de redefinição está disponível"
|
||||
msgid "no response from SD card"
|
||||
msgstr "não houve resposta do cartão SD"
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr "não há tal atributo"
|
||||
|
||||
|
22
locale/ru.po
22
locale/ru.po
@ -406,12 +406,14 @@ msgstr "Адрес должен быть длиной %d байт"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "Все периферийные устройства CAN уже используются"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Все периферийные устройства I2C уже используются"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1631,7 +1633,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2368,11 +2370,11 @@ msgstr ""
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr ""
|
||||
|
||||
@ -2564,7 +2566,7 @@ msgstr ""
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
@ -3301,6 +3303,10 @@ msgstr ""
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr ""
|
||||
@ -3556,7 +3562,7 @@ msgstr "нет доступного контакта сброса"
|
||||
msgid "no response from SD card"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr ""
|
||||
|
||||
|
22
locale/sv.po
22
locale/sv.po
@ -406,12 +406,14 @@ msgstr "Adressen måste vara %d byte lång"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "All I2C-kringutrustning används"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "All I2C-kringutrustning används"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1615,7 +1617,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr "Endast ett TouchAlarm kan ställas in för djupsömn."
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr "Endast en adress är tillåten"
|
||||
|
||||
@ -2372,11 +2374,11 @@ msgstr "__new__ arg måste vara en användartyp"
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "ett bytesliknande objekt krävs"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "adress utanför gränsen"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr "adresserna är tomma"
|
||||
|
||||
@ -2568,7 +2570,7 @@ msgstr "kan inte tilldela uttryck"
|
||||
msgid "can't cancel self"
|
||||
msgstr "kan inte avbryta sig själv"
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "kan inte konvertera %q till %q"
|
||||
@ -3310,6 +3312,10 @@ msgstr "Ogiltigt värdnamn"
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "ogiltig mikropython-dekorator"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "ogiltigt steg"
|
||||
@ -3568,7 +3574,7 @@ msgstr "ingen reset-pinne tillgänglig"
|
||||
msgid "no response from SD card"
|
||||
msgstr "inget svar från SD-kort"
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr "inget sådant attribut"
|
||||
|
||||
|
22
locale/tr.po
22
locale/tr.po
@ -412,12 +412,14 @@ msgstr "Adres %d byte uzunluğunda olmalıdır"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "Tüm CAN çevre birimleri kullanımda"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Tüm I2C çevre birimleri kullanımda"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1606,7 +1608,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr ""
|
||||
|
||||
@ -2339,11 +2341,11 @@ msgstr ""
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr ""
|
||||
|
||||
@ -2535,7 +2537,7 @@ msgstr ""
|
||||
msgid "can't cancel self"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr ""
|
||||
@ -3272,6 +3274,10 @@ msgstr ""
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr ""
|
||||
@ -3527,7 +3533,7 @@ msgstr ""
|
||||
msgid "no response from SD card"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr ""
|
||||
|
||||
|
@ -409,12 +409,14 @@ msgstr "dìzhǐ chángdù bìxū shì %d zìjié"
|
||||
msgid "All CAN peripherals are in use"
|
||||
msgstr "suǒyǒu CAN wàishè dōu zài shǐyòng zhōng"
|
||||
|
||||
#: ports/espressif/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/espressif/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "suǒyǒu I2C wàishè dōu zài shǐyòng zhōng"
|
||||
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "All I2C targets are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/espressif/common-hal/countio/Counter.c
|
||||
#: ports/espressif/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/espressif/common-hal/rotaryio/IncrementalEncoder.c
|
||||
@ -1630,7 +1632,7 @@ msgstr ""
|
||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||
msgstr "zhǐ yǒu yí gè chù mō bì kě yǐ shè zhì zài shēn dù shuì mián."
|
||||
|
||||
#: ports/espressif/common-hal/i2cperipheral/I2CPeripheral.c
|
||||
#: ports/espressif/common-hal/i2ctarget/I2CTarget.c
|
||||
msgid "Only one address is allowed"
|
||||
msgstr "zhǐ yǔn xǔ yí gè dì zhǐ"
|
||||
|
||||
@ -2384,11 +2386,11 @@ msgstr "__new__ cānshù bìxū shì yònghù lèixíng"
|
||||
msgid "a bytes-like object is required"
|
||||
msgstr "xūyào yīgè zì jié lèi duìxiàng"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "address out of bounds"
|
||||
msgstr "dìzhǐ chāochū biānjiè"
|
||||
|
||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: shared-bindings/i2ctarget/I2CTarget.c
|
||||
msgid "addresses is empty"
|
||||
msgstr "dìzhǐ wèi kōng"
|
||||
|
||||
@ -2580,7 +2582,7 @@ msgstr "bùnéng fēnpèi dào biǎodá shì"
|
||||
msgid "can't cancel self"
|
||||
msgstr "bù néng qǔ xiāo zì wǒ"
|
||||
|
||||
#: py/obj.c py/objint.c shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||
#: py/obj.c py/objint.c shared-bindings/i2ctarget/I2CTarget.c
|
||||
#: shared-module/adafruit_pixelbuf/PixelBuf.c
|
||||
msgid "can't convert %q to %q"
|
||||
msgstr "Wúfǎ jiāng %q zhuǎnhuàn wèi %q"
|
||||
@ -3323,6 +3325,10 @@ msgstr "wú xiào zhǔ jī míng"
|
||||
msgid "invalid micropython decorator"
|
||||
msgstr "wúxiào de MicroPython zhuāngshì qì"
|
||||
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c
|
||||
msgid "invalid setting"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/random/__init__.c
|
||||
msgid "invalid step"
|
||||
msgstr "wúxiào bùzhòu"
|
||||
@ -3579,7 +3585,7 @@ msgstr "Méiyǒu kěyòng de fùwèi yǐn jiǎo"
|
||||
msgid "no response from SD card"
|
||||
msgstr "SD kǎ wú huíyīng"
|
||||
|
||||
#: py/objobject.c py/runtime.c
|
||||
#: ports/espressif/common-hal/esp32_camera/Camera.c py/objobject.c py/runtime.c
|
||||
msgid "no such attribute"
|
||||
msgstr "méiyǒu cǐ shǔxìng"
|
||||
|
||||
|
3
main.c
3
main.c
@ -213,8 +213,9 @@ void supervisor_execution_status(void) {
|
||||
if (_current_executing_filename != NULL) {
|
||||
serial_write(_current_executing_filename);
|
||||
} else if ((_exec_result.return_code & PYEXEC_EXCEPTION) != 0 &&
|
||||
_exec_result.exception_line > 0 &&
|
||||
exception != NULL) {
|
||||
mp_printf(&mp_plat_print, "@%d %q", _exec_result.exception_line, exception->base.type->name);
|
||||
mp_printf(&mp_plat_print, "%d@%s %q", _exec_result.exception_line, _exec_result.exception_filename, exception->base.type->name);
|
||||
} else {
|
||||
serial_write_compressed(translate("Done"));
|
||||
}
|
||||
|
@ -11,5 +11,3 @@ CIRCUITPY_BUILD_EXTENSIONS = bin,uf2
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
|
@ -9,5 +9,3 @@ CHIP_FAMILY = samd21
|
||||
SPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICES = "MX25L51245G","GD25S512MD"
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
|
@ -15,7 +15,6 @@ 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/frozen_cpx
|
||||
|
@ -12,7 +12,6 @@ EXTERNAL_FLASH_DEVICES = "S25FL216K, GD25Q16C"
|
||||
# Turn off features and optimizations for displayio build to make room for additional frozen libs.
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_KEYPAD = 0
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
CIRCUITPY_PIXELBUF = 0
|
||||
CIRCUITPY_ROTARYIO = 0
|
||||
CIRCUITPY_RTC = 0
|
||||
|
@ -9,5 +9,3 @@ CHIP_FAMILY = samd21
|
||||
SPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICES = "S25FL064L"
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
|
@ -104,8 +104,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_PA00,
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -84,8 +84,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_PB14, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -85,8 +85,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_PA23, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -84,7 +84,6 @@ void board_init(void) {
|
||||
NULL, // &pin_PA17, // brightness pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
0.0f, // brightness
|
||||
false, // auto_brightness
|
||||
false, // single_byte_bounds
|
||||
true, // data as commands
|
||||
true, // auto_refresh
|
||||
|
@ -33,7 +33,7 @@ CIRCUITPY_BLEIO = 0
|
||||
CIRCUITPY_BUSDEVICE = 0
|
||||
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||
CIRCUITPY_FREQUENCYIO = 0
|
||||
CIRCUITPY_I2CPERIPHERAL = 0
|
||||
CIRCUITPY_I2CTARGET = 0
|
||||
CIRCUITPY_MSGPACK = 0
|
||||
CIRCUITPY_NEOPIXEL_WRITE = 0
|
||||
CIRCUITPY_NVM = 0
|
||||
|
@ -137,8 +137,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
NULL, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
false, // auto_refresh
|
||||
|
@ -18,7 +18,7 @@ CIRCUITPY_AUDIOPWMIO = 0
|
||||
CIRCUITPY_BITBANGIO = 0
|
||||
CIRCUITPY_BITBANG_APA102 = 0
|
||||
CIRCUITPY_FREQUENCYIO = 0
|
||||
CIRCUITPY_I2CPERIPHERAL = 0
|
||||
CIRCUITPY_I2CTARGET = 0
|
||||
CIRCUITPY_NEOPIXEL_WRITE = 0
|
||||
CIRCUITPY_PARALLELDISPLAY = 0
|
||||
CIRCUITPY_PIXELBUF = 0
|
||||
|
@ -105,8 +105,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_PA01, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -107,8 +107,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_PA01, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -94,8 +94,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_PB31, // Backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -111,8 +111,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_PB31, // Backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -102,8 +102,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_PC05, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -22,8 +22,8 @@ CIRCUITPY_RTC = 0
|
||||
CIRCUITPY_MATH = 0
|
||||
#CIRCUITPY_RANDOM = 0
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
#CIRCUITPY_NEOPIXEL_WRITE = 1 # Needed fo RGB LEDs
|
||||
#CIRCUITPY_RAINBOWIO = 1 # Needed fo RGB LEDs
|
||||
CIRCUITPY_NEOPIXEL_WRITE = 1 # Needed for RGB LEDs
|
||||
CIRCUITPY_RAINBOWIO = 1 # Needed for RGB LEDs
|
||||
# These are used in a keyboard or computer input device.
|
||||
CIRCUITPY_ROTARYIO = 1
|
||||
CIRCUITPY_KEYPAD = 1
|
||||
|
@ -11,5 +11,4 @@ LONGINT_IMPL = NONE
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
# There are many pin definitions on this board; it doesn't quite fit on very large translations.
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
CIRCUITPY_USB_MIDI = 0
|
||||
|
@ -9,5 +9,3 @@ CHIP_FAMILY = samd21
|
||||
SPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICES = "W25Q32FV"
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
|
@ -9,5 +9,3 @@ CHIP_FAMILY = samd21
|
||||
SPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICES = "W25Q64JVxQ"
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
CIRCUITPY_ONEWIREIO = 0
|
||||
|
@ -105,7 +105,6 @@ void board_init(void) {
|
||||
NULL,
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness
|
||||
false, // auto_brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data as commands
|
||||
true, // auto_refresh
|
||||
|
@ -22,7 +22,7 @@ CIRCUITPY_AUDIOBUSIO = 0
|
||||
CIRCUITPY_BITBANGIO = 0
|
||||
CIRCUITPY_BITMAPTOOLS = 0
|
||||
CIRCUITPY_FREQUENCYIO = 0
|
||||
CIRCUITPY_I2CPERIPHERAL = 0
|
||||
CIRCUITPY_I2CTARGET = 0
|
||||
CIRCUITPY_NEOPIXEL_WRITE = 0
|
||||
CIRCUITPY_PARALLELDISPLAY = 0
|
||||
CIRCUITPY_PIXELBUF = 0
|
||||
|
@ -23,7 +23,7 @@ CIRCUITPY_AUDIOBUSIO = 0
|
||||
CIRCUITPY_BLEIO = 0
|
||||
CIRCUITPY_DISPLAYIO = 0
|
||||
CIRCUITPY_KEYPAD = 0
|
||||
CIRCUITPY_I2CPERIPHERAL = 0
|
||||
CIRCUITPY_I2CTARGET = 0
|
||||
CIRCUITPY_TOUCHIO = 0
|
||||
CIRCUITPY_RGBMATRIX = 0
|
||||
CIRCUITPY_PS2IO = 0
|
||||
|
@ -22,7 +22,7 @@ CIRCUITPY_BLEIO_HCI = 0
|
||||
CIRCUITPY_DISPLAYIO = 0
|
||||
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||
CIRCUITPY_KEYPAD = 0
|
||||
CIRCUITPY_I2CPERIPHERAL = 0
|
||||
CIRCUITPY_I2CTARGET = 0
|
||||
CIRCUITPY_TOUCHIO = 0
|
||||
CIRCUITPY_RGBMATRIX = 0
|
||||
CIRCUITPY_PS2IO = 0
|
||||
|
@ -1 +0,0 @@
|
||||
// No i2cperipheral module functions.
|
@ -24,7 +24,7 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "shared-bindings/i2cperipheral/I2CPeripheral.h"
|
||||
#include "shared-bindings/i2ctarget/I2CTarget.h"
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
#include "common-hal/busio/I2C.h"
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
#include "hal/include/hal_gpio.h"
|
||||
#include "peripherals/samd/sercom.h"
|
||||
|
||||
void common_hal_i2cperipheral_i2c_peripheral_construct(i2cperipheral_i2c_peripheral_obj_t *self,
|
||||
void common_hal_i2ctarget_i2c_target_construct(i2ctarget_i2c_target_obj_t *self,
|
||||
const mcu_pin_obj_t *scl, const mcu_pin_obj_t *sda,
|
||||
uint8_t *addresses, unsigned int num_addresses, bool smbus) {
|
||||
uint8_t sercom_index;
|
||||
@ -100,12 +100,12 @@ void common_hal_i2cperipheral_i2c_peripheral_construct(i2cperipheral_i2c_periphe
|
||||
sercom->I2CS.CTRLA.bit.ENABLE = 1;
|
||||
}
|
||||
|
||||
bool common_hal_i2cperipheral_i2c_peripheral_deinited(i2cperipheral_i2c_peripheral_obj_t *self) {
|
||||
bool common_hal_i2ctarget_i2c_target_deinited(i2ctarget_i2c_target_obj_t *self) {
|
||||
return self->sda_pin == NO_PIN;
|
||||
}
|
||||
|
||||
void common_hal_i2cperipheral_i2c_peripheral_deinit(i2cperipheral_i2c_peripheral_obj_t *self) {
|
||||
if (common_hal_i2cperipheral_i2c_peripheral_deinited(self)) {
|
||||
void common_hal_i2ctarget_i2c_target_deinit(i2ctarget_i2c_target_obj_t *self) {
|
||||
if (common_hal_i2ctarget_i2c_target_deinited(self)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -117,7 +117,7 @@ void common_hal_i2cperipheral_i2c_peripheral_deinit(i2cperipheral_i2c_peripheral
|
||||
self->scl_pin = NO_PIN;
|
||||
}
|
||||
|
||||
static int i2c_peripheral_check_error(i2cperipheral_i2c_peripheral_obj_t *self, bool raise) {
|
||||
static int i2c_target_check_error(i2ctarget_i2c_target_obj_t *self, bool raise) {
|
||||
if (!self->sercom->I2CS.INTFLAG.bit.ERROR) {
|
||||
return 0;
|
||||
}
|
||||
@ -136,8 +136,8 @@ static int i2c_peripheral_check_error(i2cperipheral_i2c_peripheral_obj_t *self,
|
||||
return -err;
|
||||
}
|
||||
|
||||
int common_hal_i2cperipheral_i2c_peripheral_is_addressed(i2cperipheral_i2c_peripheral_obj_t *self, uint8_t *address, bool *is_read, bool *is_restart) {
|
||||
int err = i2c_peripheral_check_error(self, false);
|
||||
int common_hal_i2ctarget_i2c_target_is_addressed(i2ctarget_i2c_target_obj_t *self, uint8_t *address, bool *is_read, bool *is_restart) {
|
||||
int err = i2c_target_check_error(self, false);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
@ -154,22 +154,22 @@ int common_hal_i2cperipheral_i2c_peripheral_is_addressed(i2cperipheral_i2c_perip
|
||||
|
||||
for (unsigned int i = 0; i < self->num_addresses; i++) {
|
||||
if (*address == self->addresses[i]) {
|
||||
common_hal_i2cperipheral_i2c_peripheral_ack(self, true);
|
||||
common_hal_i2ctarget_i2c_target_ack(self, true);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// This should clear AMATCH, but it doesn't...
|
||||
common_hal_i2cperipheral_i2c_peripheral_ack(self, false);
|
||||
common_hal_i2ctarget_i2c_target_ack(self, false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int common_hal_i2cperipheral_i2c_peripheral_read_byte(i2cperipheral_i2c_peripheral_obj_t *self, uint8_t *data) {
|
||||
int common_hal_i2ctarget_i2c_target_read_byte(i2ctarget_i2c_target_obj_t *self, uint8_t *data) {
|
||||
for (int t = 0; t < 100 && !self->sercom->I2CS.INTFLAG.reg; t++) {
|
||||
mp_hal_delay_us(10);
|
||||
}
|
||||
|
||||
i2c_peripheral_check_error(self, true);
|
||||
i2c_target_check_error(self, true);
|
||||
|
||||
if (!self->sercom->I2CS.INTFLAG.bit.DRDY ||
|
||||
self->sercom->I2CS.INTFLAG.bit.PREC ||
|
||||
@ -181,12 +181,12 @@ int common_hal_i2cperipheral_i2c_peripheral_read_byte(i2cperipheral_i2c_peripher
|
||||
return 1;
|
||||
}
|
||||
|
||||
int common_hal_i2cperipheral_i2c_peripheral_write_byte(i2cperipheral_i2c_peripheral_obj_t *self, uint8_t data) {
|
||||
int common_hal_i2ctarget_i2c_target_write_byte(i2ctarget_i2c_target_obj_t *self, uint8_t data) {
|
||||
for (int t = 0; !self->sercom->I2CS.INTFLAG.reg && t < 100; t++) {
|
||||
mp_hal_delay_us(10);
|
||||
}
|
||||
|
||||
i2c_peripheral_check_error(self, true);
|
||||
i2c_target_check_error(self, true);
|
||||
|
||||
if (self->sercom->I2CS.INTFLAG.bit.PREC) {
|
||||
return 0;
|
||||
@ -208,12 +208,12 @@ int common_hal_i2cperipheral_i2c_peripheral_write_byte(i2cperipheral_i2c_periphe
|
||||
return 1;
|
||||
}
|
||||
|
||||
void common_hal_i2cperipheral_i2c_peripheral_ack(i2cperipheral_i2c_peripheral_obj_t *self, bool ack) {
|
||||
void common_hal_i2ctarget_i2c_target_ack(i2ctarget_i2c_target_obj_t *self, bool ack) {
|
||||
self->sercom->I2CS.CTRLB.bit.ACKACT = !ack;
|
||||
self->sercom->I2CS.CTRLB.bit.CMD = 0x03;
|
||||
}
|
||||
|
||||
void common_hal_i2cperipheral_i2c_peripheral_close(i2cperipheral_i2c_peripheral_obj_t *self) {
|
||||
void common_hal_i2ctarget_i2c_target_close(i2ctarget_i2c_target_obj_t *self) {
|
||||
for (int t = 0; !self->sercom->I2CS.INTFLAG.reg && t < 100; t++) {
|
||||
mp_hal_delay_us(10);
|
||||
}
|
||||
@ -223,7 +223,7 @@ void common_hal_i2cperipheral_i2c_peripheral_close(i2cperipheral_i2c_peripheral_
|
||||
}
|
||||
|
||||
if (!self->sercom->I2CS.STATUS.bit.DIR) {
|
||||
common_hal_i2cperipheral_i2c_peripheral_ack(self, false);
|
||||
common_hal_i2ctarget_i2c_target_ack(self, false);
|
||||
} else {
|
||||
int i = 0;
|
||||
while (self->sercom->I2CS.INTFLAG.reg == SERCOM_I2CS_INTFLAG_DRDY) {
|
@ -24,8 +24,8 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_PERIPHERAL_H
|
||||
#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_PERIPHERAL_H
|
||||
#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_TARGET_H
|
||||
#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_TARGET_H
|
||||
|
||||
#include "common-hal/microcontroller/Pin.h"
|
||||
#include "py/obj.h"
|
||||
@ -40,6 +40,6 @@ typedef struct {
|
||||
uint8_t scl_pin;
|
||||
uint8_t sda_pin;
|
||||
bool writing;
|
||||
} i2cperipheral_i2c_peripheral_obj_t;
|
||||
} i2ctarget_i2c_target_obj_t;
|
||||
|
||||
#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_PERIPHERAL_H
|
||||
#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_TARGET_H
|
1
ports/atmel-samd/common-hal/i2ctarget/__init__.c
Normal file
1
ports/atmel-samd/common-hal/i2ctarget/__init__.c
Normal file
@ -0,0 +1 @@
|
||||
// No i2ctarget module functions.
|
@ -38,7 +38,7 @@ CIRCUITPY_FRAMEBUFFERIO ?= 0
|
||||
CIRCUITPY_FREQUENCYIO ?= 0
|
||||
CIRCUITPY_GETPASS ?= 0
|
||||
CIRCUITPY_GIFIO ?= 0
|
||||
CIRCUITPY_I2CPERIPHERAL ?= 0
|
||||
CIRCUITPY_I2CTARGET ?= 0
|
||||
CIRCUITPY_JSON ?= 0
|
||||
CIRCUITPY_KEYPAD ?= 0
|
||||
CIRCUITPY_MSGPACK ?= 0
|
||||
|
@ -9,7 +9,7 @@ CIRCUITPY_AUDIOBUSIO = 0
|
||||
CIRCUITPY_AUDIOIO = 0
|
||||
CIRCUITPY_COUNTIO = 0
|
||||
CIRCUITPY_FREQUENCYIO = 0
|
||||
CIRCUITPY_I2CPERIPHERAL = 0
|
||||
CIRCUITPY_I2CTARGET = 0
|
||||
CIRCUITPY_NVM = 0
|
||||
CIRCUITPY_PARALLELDISPLAY = 0
|
||||
CIRCUITPY_PULSEIO = 0
|
||||
|
@ -15,7 +15,7 @@ CIRCUITPY_COUNTIO = 0
|
||||
CIRCUITPY_DISPLAYIO = 0
|
||||
CIRCUITPY_FREQUENCYIO = 0
|
||||
CIRCUITPY_GNSS = 1
|
||||
CIRCUITPY_I2CPERIPHERAL = 0
|
||||
CIRCUITPY_I2CTARGET = 0
|
||||
CIRCUITPY_KEYPAD = 0
|
||||
CIRCUITPY_NEOPIXEL_WRITE = 0
|
||||
CIRCUITPY_NVM = 0
|
||||
|
@ -8,6 +8,13 @@ set(ENV{IDF_PATH} ${CMAKE_SOURCE_DIR}/esp-idf)
|
||||
# can build.
|
||||
set(COMPONENTS esptool_py soc driver log main esp-tls mbedtls mdns esp_event esp_adc_cal esp_netif esp_wifi lwip wpa_supplicant freertos bt usb)
|
||||
|
||||
if("${CIRCUITPY_ESP32_CAMERA}")
|
||||
message("Including esp32-camera")
|
||||
set(EXTRA_COMPONENT_DIRS "esp32-camera")
|
||||
list(APPEND COMPONENTS "esp32-camera")
|
||||
message("COMPONENTS = ${COMPONENTS}")
|
||||
endif()
|
||||
|
||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||
project(circuitpython)
|
||||
|
||||
|
@ -261,7 +261,6 @@ SRC_C += \
|
||||
peripherals/touch.c
|
||||
ifeq ($(IDF_TARGET),esp32s2)
|
||||
SRC_C += \
|
||||
cam.c \
|
||||
i2s_lcd_esp32s2_driver.c
|
||||
endif
|
||||
endif
|
||||
@ -283,6 +282,15 @@ endif
|
||||
|
||||
SRC_C += $(wildcard common-hal/espidf/*.c)
|
||||
|
||||
ifneq ($(CIRCUITPY_ESP32_CAMERA),0)
|
||||
SRC_CAMERA := \
|
||||
$(wildcard common-hal/esp32_camera/*.c) \
|
||||
$(wildcard bindings/esp32_camera/*.c)
|
||||
SRC_C += $(SRC_CAMERA)
|
||||
CFLAGS += -isystem esp32-camera/driver/include
|
||||
CFLAGS += -isystem esp32-camera/conversions/include
|
||||
endif
|
||||
|
||||
SRC_COMMON_HAL_EXPANDED = \
|
||||
$(addprefix shared-bindings/, $(SRC_COMMON_HAL)) \
|
||||
$(addprefix shared-bindings/, $(SRC_BINDINGS_ENUMS)) \
|
||||
@ -341,8 +349,10 @@ ifneq ($(CIRCUITPY_BLEIO),0)
|
||||
SDKCONFIGS := esp-idf-config/sdkconfig-ble.defaults;$(SDKCONFIGS)
|
||||
endif
|
||||
# create the config headers
|
||||
$(BUILD)/esp-idf/config/sdkconfig.h: boards/$(BOARD)/sdkconfig | $(BUILD)/esp-idf
|
||||
IDF_PATH=$(IDF_PATH) cmake -S . -B $(BUILD)/esp-idf -DSDKCONFIG=$(BUILD)/esp-idf/sdkconfig -DSDKCONFIG_DEFAULTS="$(SDKCONFIGS)" -DCMAKE_TOOLCHAIN_FILE=$(IDF_PATH)/tools/cmake/toolchain-$(IDF_TARGET).cmake -DIDF_TARGET=$(IDF_TARGET) -GNinja
|
||||
.PHONY: do-sdkconfig
|
||||
do-sdkconfig: $(BUILD)/esp-idf/config/sdkconfig.h
|
||||
$(BUILD)/esp-idf/config/sdkconfig.h: boards/$(BOARD)/sdkconfig CMakeLists.txt | $(BUILD)/esp-idf
|
||||
IDF_PATH=$(IDF_PATH) cmake -S . -B $(BUILD)/esp-idf -DSDKCONFIG=$(BUILD)/esp-idf/sdkconfig -DSDKCONFIG_DEFAULTS="$(SDKCONFIGS)" -DCMAKE_TOOLCHAIN_FILE=$(IDF_PATH)/tools/cmake/toolchain-$(IDF_TARGET).cmake -DIDF_TARGET=$(IDF_TARGET) -GNinja -DCIRCUITPY_ESP32_CAMERA=$(CIRCUITPY_ESP32_CAMERA)
|
||||
|
||||
# build a lib
|
||||
# Adding -d explain -j 1 -v to the ninja line will output debug info
|
||||
@ -391,6 +401,11 @@ BINARY_BLOBS += esp-idf/components/xtensa/$(IDF_TARGET)/libxt_hal.a
|
||||
ESP_IDF_COMPONENTS_EXPANDED += esp-idf/components/xtensa/$(IDF_TARGET)/libxt_hal.a
|
||||
endif
|
||||
|
||||
ifneq ($(CIRCUITPY_ESP32_CAMERA),0)
|
||||
ESP_IDF_COMPONENTS_EXPANDED += $(BUILD)/esp-idf/esp-idf/esp32-camera/libesp32-camera.a
|
||||
#$(error $(ESP_IDF_COMPONENTS_EXPANDED))
|
||||
endif
|
||||
|
||||
# BOOTLOADER_OFFSET is determined by chip type, based on the ROM bootloader, and is not changeable.
|
||||
ifeq ($(IDF_TARGET),esp32)
|
||||
BOOTLOADER_OFFSET = 0x1000
|
||||
|
1030
ports/espressif/bindings/esp32_camera/Camera.c
Normal file
1030
ports/espressif/bindings/esp32_camera/Camera.c
Normal file
File diff suppressed because it is too large
Load Diff
116
ports/espressif/bindings/esp32_camera/Camera.h
Normal file
116
ports/espressif/bindings/esp32_camera/Camera.h
Normal file
@ -0,0 +1,116 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
#include "py/enum.h"
|
||||
#include "py/obj.h"
|
||||
|
||||
#include "esp_camera.h"
|
||||
|
||||
#include "shared-bindings/busio/I2C.h"
|
||||
|
||||
extern const mp_obj_type_t esp32_camera_camera_type;
|
||||
typedef struct esp32_camera_camera_obj esp32_camera_camera_obj_t;
|
||||
|
||||
extern void common_hal_esp32_camera_camera_construct(
|
||||
esp32_camera_camera_obj_t *self,
|
||||
uint8_t data_pins[8],
|
||||
const mcu_pin_obj_t *external_clock_pin,
|
||||
const mcu_pin_obj_t *pixel_clock_pin,
|
||||
const mcu_pin_obj_t *vsync_pin,
|
||||
const mcu_pin_obj_t *href_pin,
|
||||
const mcu_pin_obj_t *powerdown_pin,
|
||||
const mcu_pin_obj_t *reset_pin,
|
||||
const busio_i2c_obj_t *i2c,
|
||||
mp_int_t external_clock_frequency,
|
||||
pixformat_t pixel_format,
|
||||
framesize_t frame_size,
|
||||
mp_int_t jpeg_quality,
|
||||
mp_int_t framebuffer_count,
|
||||
camera_grab_mode_t grab_mode);
|
||||
|
||||
extern void common_hal_esp32_camera_camera_deinit(esp32_camera_camera_obj_t *self);
|
||||
extern bool common_hal_esp32_camera_camera_deinited(esp32_camera_camera_obj_t *self);
|
||||
extern bool common_hal_esp32_camera_camera_available(esp32_camera_camera_obj_t *self);
|
||||
extern camera_fb_t *common_hal_esp32_camera_camera_take(esp32_camera_camera_obj_t *self, int timeout_ms);
|
||||
extern void common_hal_esp32_camera_camera_reconfigure(esp32_camera_camera_obj_t *self, framesize_t frame_size, pixformat_t pixel_format, camera_grab_mode_t grab_mode, mp_int_t framebuffer_count);
|
||||
|
||||
#define DECLARE_SENSOR_GETSET(type, name, field_name, setter_function_name) \
|
||||
DECLARE_SENSOR_GET(type, name, field_name, setter_function_name) \
|
||||
DECLARE_SENSOR_SET(type, name, setter_function_name)
|
||||
|
||||
#define DECLARE_SENSOR_STATUS_GETSET(type, name, status_field_name, setter_function_name) \
|
||||
DECLARE_SENSOR_GETSET(type, name, status.status_field_name, setter_function_name)
|
||||
|
||||
#define DECLARE_SENSOR_STATUS_GET(type, name, status_field_name, setter_function_name) \
|
||||
DECLARE_SENSOR_GET(type, name, status.status_field_name, setter_function_name)
|
||||
|
||||
#define DECLARE_SENSOR_GET(type, name, status_field_name, setter_function_name) \
|
||||
extern type common_hal_esp32_camera_camera_get_##name(esp32_camera_camera_obj_t * self);
|
||||
|
||||
#define DECLARE_SENSOR_SET(type, name, setter_function_name) \
|
||||
extern void common_hal_esp32_camera_camera_set_##name(esp32_camera_camera_obj_t * self, type value);
|
||||
|
||||
DECLARE_SENSOR_GET(pixformat_t, pixel_format, pixformat, set_pixformat)
|
||||
DECLARE_SENSOR_STATUS_GET(framesize_t, frame_size, framesize, set_framesize)
|
||||
DECLARE_SENSOR_STATUS_GETSET(int, contrast, contrast, set_contrast);
|
||||
DECLARE_SENSOR_STATUS_GETSET(int, brightness, brightness, set_brightness);
|
||||
DECLARE_SENSOR_STATUS_GETSET(int, saturation, saturation, set_saturation);
|
||||
DECLARE_SENSOR_STATUS_GETSET(int, sharpness, sharpness, set_sharpness);
|
||||
DECLARE_SENSOR_STATUS_GETSET(int, denoise, denoise, set_denoise);
|
||||
DECLARE_SENSOR_STATUS_GETSET(gainceiling_t, gainceiling, gainceiling, set_gainceiling);
|
||||
DECLARE_SENSOR_STATUS_GETSET(int, quality, quality, set_quality);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, colorbar, colorbar, set_colorbar);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, whitebal, whitebal, set_whitebal);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, gain_ctrl, gain_ctrl, set_gain_ctrl);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, exposure_ctrl, exposure_ctrl, set_exposure_ctrl);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, hmirror, hmirror, set_hmirror);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, vflip, vflip, set_vflip);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, aec2, aec2, set_aec2);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, awb_gain, awb_gain, set_awb_gain);
|
||||
DECLARE_SENSOR_STATUS_GETSET(int, agc_gain, agc_gain, set_agc_gain);
|
||||
DECLARE_SENSOR_STATUS_GETSET(int, aec_value, aec_value, set_aec_value);
|
||||
DECLARE_SENSOR_STATUS_GETSET(int, special_effect, special_effect, set_special_effect);
|
||||
DECLARE_SENSOR_STATUS_GETSET(int, wb_mode, wb_mode, set_wb_mode);
|
||||
DECLARE_SENSOR_STATUS_GETSET(int, ae_level, ae_level, set_ae_level);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, dcw, dcw, set_dcw);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, bpc, bpc, set_bpc);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, wpc, wpc, set_wpc);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, raw_gma, raw_gma, set_raw_gma);
|
||||
DECLARE_SENSOR_STATUS_GETSET(bool, lenc, lenc, set_lenc);
|
||||
|
||||
// From settings
|
||||
extern camera_grab_mode_t common_hal_esp32_camera_camera_get_grab_mode(esp32_camera_camera_obj_t *self);
|
||||
extern int common_hal_esp32_camera_camera_get_framebuffer_count(esp32_camera_camera_obj_t *self);
|
||||
|
||||
// From camera_sensor_info_t
|
||||
extern int common_hal_esp32_camera_camera_get_address(esp32_camera_camera_obj_t *self);
|
||||
extern const char *common_hal_esp32_camera_camera_get_sensor_name(esp32_camera_camera_obj_t *self);
|
||||
extern const bool common_hal_esp32_camera_camera_get_supports_jpeg(esp32_camera_camera_obj_t *self);
|
||||
extern framesize_t common_hal_esp32_camera_camera_get_max_frame_size(esp32_camera_camera_obj_t *self);
|
||||
extern int common_hal_esp32_camera_camera_get_width(esp32_camera_camera_obj_t *self);
|
||||
extern int common_hal_esp32_camera_camera_get_height(esp32_camera_camera_obj_t *self);
|
287
ports/espressif/bindings/esp32_camera/__init__.c
Normal file
287
ports/espressif/bindings/esp32_camera/__init__.c
Normal file
@ -0,0 +1,287 @@
|
||||
/*
|
||||
* This file is part of the MicroPython 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.
|
||||
*/
|
||||
|
||||
#include "py/obj.h"
|
||||
#include "py/runtime.h"
|
||||
#include "py/mphal.h"
|
||||
|
||||
#include "bindings/espidf/__init__.h"
|
||||
#include "bindings/esp32_camera/__init__.h"
|
||||
#include "bindings/esp32_camera/Camera.h"
|
||||
|
||||
#include "esp_camera.h"
|
||||
#include "sensor.h"
|
||||
|
||||
//| """Wrapper for the esp32_camera library
|
||||
//|
|
||||
//| This library enables access to any camera sensor supported by the library,
|
||||
//| including OV5640 and OV2640.
|
||||
//|
|
||||
//| .. seealso::
|
||||
//|
|
||||
//| Non-Espressif microcontrollers use the `imagecapture` module together with wrapper libraries such as `adafruit_ov5640 <https://circuitpython.readthedocs.io/projects/ov5640/en/latest/>`_.
|
||||
//|
|
||||
//| """
|
||||
|
||||
//| class GrabMode:
|
||||
//| """Controls when a new frame is grabbed."""
|
||||
//|
|
||||
//| WHEN_EMPTY: GrabMode
|
||||
//| """Fills buffers when they are empty. Less resources but first ``fb_count`` frames might be old"""
|
||||
//|
|
||||
//| LATEST: GrabMode
|
||||
//| """Except when 1 frame buffer is used, queue will always contain the last ``fb_count`` frames"""
|
||||
//|
|
||||
|
||||
MAKE_ENUM_VALUE(esp32_camera_grab_mode_type, grab_mode, WHEN_EMPTY, CAMERA_GRAB_WHEN_EMPTY);
|
||||
MAKE_ENUM_VALUE(esp32_camera_grab_mode_type, grab_mode, LATEST, CAMERA_GRAB_LATEST);
|
||||
|
||||
MAKE_ENUM_MAP(esp32_camera_grab_mode) {
|
||||
MAKE_ENUM_MAP_ENTRY(grab_mode, WHEN_EMPTY),
|
||||
MAKE_ENUM_MAP_ENTRY(grab_mode, LATEST),
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(esp32_camera_grab_mode_locals_dict, esp32_camera_grab_mode_locals_table);
|
||||
MAKE_PRINTER(esp32_camera, esp32_camera_grab_mode);
|
||||
MAKE_ENUM_TYPE(esp32_camera, GrabMode, esp32_camera_grab_mode);
|
||||
|
||||
camera_grab_mode_t validate_grab_mode(mp_obj_t obj, qstr arg_name) {
|
||||
return cp_enum_value(&esp32_camera_grab_mode_type, mp_arg_validate_type(obj, &esp32_camera_grab_mode_type, arg_name));
|
||||
}
|
||||
|
||||
//| class PixelFormat:
|
||||
//| """Format of data in the captured frames"""
|
||||
//|
|
||||
//| RGB565: PixelFormat
|
||||
//| """A 16-bit format with 5 bits of Red and Blue and 6 bits of Green"""
|
||||
//|
|
||||
//| GRAYSCALE: PixelFormat
|
||||
//| """An 8-bit format with 8-bits of luminance"""
|
||||
//|
|
||||
//| JPEG: PixelFormat
|
||||
//| """A compressed format"""
|
||||
//|
|
||||
|
||||
MAKE_ENUM_VALUE(esp32_camera_pixel_format_type, pixel_format, RGB565, PIXFORMAT_RGB565);
|
||||
MAKE_ENUM_VALUE(esp32_camera_pixel_format_type, pixel_format, GRAYSCALE, PIXFORMAT_GRAYSCALE);
|
||||
MAKE_ENUM_VALUE(esp32_camera_pixel_format_type, pixel_format, JPEG, PIXFORMAT_JPEG);
|
||||
|
||||
MAKE_ENUM_MAP(esp32_camera_pixel_format) {
|
||||
MAKE_ENUM_MAP_ENTRY(pixel_format, RGB565),
|
||||
MAKE_ENUM_MAP_ENTRY(pixel_format, GRAYSCALE),
|
||||
MAKE_ENUM_MAP_ENTRY(pixel_format, JPEG),
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(esp32_camera_pixel_format_locals_dict, esp32_camera_pixel_format_locals_table);
|
||||
MAKE_PRINTER(esp32_camera, esp32_camera_pixel_format);
|
||||
MAKE_ENUM_TYPE(esp32_camera, PixelFormat, esp32_camera_pixel_format);
|
||||
|
||||
pixformat_t validate_pixel_format(mp_obj_t obj, qstr arg_name) {
|
||||
return cp_enum_value(&esp32_camera_pixel_format_type, mp_arg_validate_type(obj, &esp32_camera_pixel_format_type, arg_name));
|
||||
}
|
||||
|
||||
//| class FrameSize:
|
||||
//| """The pixel size of the captured frames"""
|
||||
//|
|
||||
//| R96X96: FrameSize
|
||||
//| """96x96"""
|
||||
//|
|
||||
//| QQVGA: FrameSize
|
||||
//| """160x120"""
|
||||
//|
|
||||
//| QCIF: FrameSize
|
||||
//| """176x144"""
|
||||
//|
|
||||
//| HQVGA: FrameSize
|
||||
//| """240x176"""
|
||||
//|
|
||||
//| R240X240: FrameSize
|
||||
//| """240x240"""
|
||||
//|
|
||||
//| QVGA: FrameSize
|
||||
//| """320x240 """
|
||||
//|
|
||||
//| CIF: FrameSize
|
||||
//| """400x296"""
|
||||
//|
|
||||
//| HVGA: FrameSize
|
||||
//| """480x320"""
|
||||
//|
|
||||
//| VGA: FrameSize
|
||||
//| """640x480"""
|
||||
//|
|
||||
//| SVGA: FrameSize
|
||||
//| """800x600"""
|
||||
//|
|
||||
//| XGA: FrameSize
|
||||
//| """1024x768"""
|
||||
//|
|
||||
//| HD: FrameSize
|
||||
//| """1280x720"""
|
||||
//|
|
||||
//| SXGA: FrameSize
|
||||
//| """1280x1024"""
|
||||
//|
|
||||
//| UXGA: FrameSize
|
||||
//| """1600x1200"""
|
||||
//|
|
||||
//| FHD: FrameSize
|
||||
//| """1920x1080"""
|
||||
//|
|
||||
//| P_HD: FrameSize
|
||||
//| """ 720x1280"""
|
||||
//|
|
||||
//| P_3MP: FrameSize
|
||||
//| """ 864x1536"""
|
||||
//|
|
||||
//| QXGA: FrameSize
|
||||
//| """2048x1536"""
|
||||
//|
|
||||
//| QHD: FrameSize
|
||||
//| """2560x1440"""
|
||||
//|
|
||||
//| WQXGA: FrameSize
|
||||
//| """2560x1600"""
|
||||
//|
|
||||
//| P_FHD: FrameSize
|
||||
//| """1080x1920"""
|
||||
//|
|
||||
//| QSXGA: FrameSize
|
||||
//| """2560x1920"""
|
||||
//|
|
||||
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, R96X96, FRAMESIZE_96X96);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, R240X240, FRAMESIZE_240X240);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, QQVGA, FRAMESIZE_QQVGA);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, QCIF, FRAMESIZE_QCIF);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, HQVGA, FRAMESIZE_HQVGA);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, QVGA, FRAMESIZE_QVGA);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, CIF, FRAMESIZE_CIF);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, HVGA, FRAMESIZE_HVGA);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, VGA, FRAMESIZE_VGA);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, SVGA, FRAMESIZE_SVGA);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, XGA, FRAMESIZE_XGA);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, HD, FRAMESIZE_HD);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, SXGA, FRAMESIZE_SXGA);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, UXGA, FRAMESIZE_UXGA);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, FHD, FRAMESIZE_FHD);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, P_HD, FRAMESIZE_P_HD);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, P_3MP, FRAMESIZE_P_3MP);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, QXGA, FRAMESIZE_QXGA);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, QHD, FRAMESIZE_QHD);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, WQXGA, FRAMESIZE_WQXGA);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, P_FHD, FRAMESIZE_P_FHD);
|
||||
MAKE_ENUM_VALUE(esp32_camera_frame_size_type, frame_size, QSXGA, FRAMESIZE_QSXGA);
|
||||
MAKE_ENUM_MAP(esp32_camera_frame_size) {
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, R96X96),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, R240X240),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, QQVGA),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, QCIF),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, HQVGA),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, QVGA),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, CIF),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, HVGA),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, VGA),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, SVGA),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, XGA),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, HD),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, SXGA),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, UXGA),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, FHD),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, P_HD),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, P_3MP),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, QXGA),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, QHD),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, WQXGA),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, P_FHD),
|
||||
MAKE_ENUM_MAP_ENTRY(frame_size, QSXGA),
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(esp32_camera_frame_size_locals_dict, esp32_camera_frame_size_locals_table);
|
||||
MAKE_PRINTER(esp32_camera, esp32_camera_frame_size);
|
||||
MAKE_ENUM_TYPE(esp32_camera, FrameSize, esp32_camera_frame_size);
|
||||
|
||||
framesize_t validate_frame_size(mp_obj_t obj, qstr arg_name) {
|
||||
return cp_enum_value(&esp32_camera_frame_size_type, mp_arg_validate_type(obj, &esp32_camera_frame_size_type, arg_name));
|
||||
}
|
||||
|
||||
//| class GainCeiling:
|
||||
//| """The maximum amount of gain applied to raw sensor data.
|
||||
//|
|
||||
//| Higher values are useful in darker conditions, but increase image noise."""
|
||||
//|
|
||||
//| GAIN_2X: GainCeiling
|
||||
//| GAIN_4X: GainCeiling
|
||||
//| GAIN_8X: GainCeiling
|
||||
//| GAIN_16X: GainCeiling
|
||||
//| GAIN_32X: GainCeiling
|
||||
//| GAIN_64X: GainCeiling
|
||||
//| GAIN_128X: GainCeiling
|
||||
//|
|
||||
|
||||
MAKE_ENUM_VALUE(esp32_camera_gain_ceiling_type, gain_ceiling, GAIN_2X, GAINCEILING_2X);
|
||||
MAKE_ENUM_VALUE(esp32_camera_gain_ceiling_type, gain_ceiling, GAIN_4X, GAINCEILING_4X);
|
||||
MAKE_ENUM_VALUE(esp32_camera_gain_ceiling_type, gain_ceiling, GAIN_8X, GAINCEILING_8X);
|
||||
MAKE_ENUM_VALUE(esp32_camera_gain_ceiling_type, gain_ceiling, GAIN_16X, GAINCEILING_16X);
|
||||
MAKE_ENUM_VALUE(esp32_camera_gain_ceiling_type, gain_ceiling, GAIN_32X, GAINCEILING_32X);
|
||||
MAKE_ENUM_VALUE(esp32_camera_gain_ceiling_type, gain_ceiling, GAIN_64X, GAINCEILING_64X);
|
||||
MAKE_ENUM_VALUE(esp32_camera_gain_ceiling_type, gain_ceiling, GAIN_128X, GAINCEILING_128X);
|
||||
|
||||
MAKE_ENUM_MAP(esp32_camera_gain_ceiling) {
|
||||
MAKE_ENUM_MAP_ENTRY(gain_ceiling, GAIN_2X),
|
||||
MAKE_ENUM_MAP_ENTRY(gain_ceiling, GAIN_4X),
|
||||
MAKE_ENUM_MAP_ENTRY(gain_ceiling, GAIN_8X),
|
||||
MAKE_ENUM_MAP_ENTRY(gain_ceiling, GAIN_16X),
|
||||
MAKE_ENUM_MAP_ENTRY(gain_ceiling, GAIN_32X),
|
||||
MAKE_ENUM_MAP_ENTRY(gain_ceiling, GAIN_64X),
|
||||
MAKE_ENUM_MAP_ENTRY(gain_ceiling, GAIN_128X)
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(esp32_camera_gain_ceiling_locals_dict, esp32_camera_gain_ceiling_locals_table);
|
||||
MAKE_PRINTER(esp32_camera, esp32_camera_gain_ceiling);
|
||||
MAKE_ENUM_TYPE(esp32_camera, GainCeiling, esp32_camera_gain_ceiling);
|
||||
|
||||
gainceiling_t validate_gain_ceiling(mp_obj_t obj, qstr arg_name) {
|
||||
return cp_enum_value(&esp32_camera_gain_ceiling_type, mp_arg_validate_type(obj, &esp32_camera_gain_ceiling_type, arg_name));
|
||||
}
|
||||
|
||||
STATIC const mp_rom_map_elem_t esp32_camera_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_esp32_camera) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_Camera), MP_ROM_PTR(&esp32_camera_camera_type), },
|
||||
{ MP_ROM_QSTR(MP_QSTR_FrameSize), &esp32_camera_frame_size_type },
|
||||
{ MP_ROM_QSTR(MP_QSTR_GainCeiling), &esp32_camera_gain_ceiling_type },
|
||||
{ MP_ROM_QSTR(MP_QSTR_GrabMode), &esp32_camera_grab_mode_type },
|
||||
{ MP_ROM_QSTR(MP_QSTR_PixelFormat), &esp32_camera_pixel_format_type },
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(esp32_camera_module_globals, esp32_camera_module_globals_table);
|
||||
|
||||
const mp_obj_module_t esp32_camera_module = {
|
||||
.base = { &mp_type_module },
|
||||
.globals = (mp_obj_dict_t *)&esp32_camera_module_globals,
|
||||
};
|
||||
|
||||
MP_REGISTER_MODULE(MP_QSTR_esp32_camera, esp32_camera_module, CIRCUITPY_ESP32_CAMERA);
|
45
ports/espressif/bindings/esp32_camera/__init__.h
Normal file
45
ports/espressif/bindings/esp32_camera/__init__.h
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
#include "py/enum.h"
|
||||
#include "py/obj.h"
|
||||
|
||||
#include "esp_camera.h"
|
||||
|
||||
extern const mp_obj_type_t esp32_camera_grab_mode_type;
|
||||
extern const cp_enum_obj_t grab_mode_WHEN_EMPTY_obj;
|
||||
extern const mp_obj_type_t esp32_camera_pixel_format_type;
|
||||
extern const cp_enum_obj_t pixel_format_RGB565_obj;
|
||||
extern const mp_obj_type_t esp32_camera_frame_size_type;
|
||||
extern const cp_enum_obj_t frame_size_QQVGA_obj;
|
||||
extern const mp_obj_type_t esp32_camera_gain_ceiling_type;
|
||||
|
||||
extern camera_grab_mode_t validate_grab_mode(mp_obj_t obj, qstr arg_name);
|
||||
extern pixformat_t validate_pixel_format(mp_obj_t obj, qstr arg_name);
|
||||
extern framesize_t validate_frame_size(mp_obj_t obj, qstr arg_name);
|
||||
extern gainceiling_t validate_gain_ceiling(mp_obj_t obj, qstr arg_name);
|
@ -89,8 +89,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO38, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -95,7 +95,7 @@ void board_init(void) {
|
||||
display->base.type = &displayio_display_type;
|
||||
|
||||
// workaround as board_init() is called before reset_port() in main.c
|
||||
pwmout_reset();
|
||||
/// pwmout_reset();
|
||||
|
||||
common_hal_displayio_display_construct(
|
||||
display,
|
||||
@ -118,8 +118,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO45, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
false, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
@ -128,8 +127,6 @@ void board_init(void) {
|
||||
false, // SH1107_addressing
|
||||
50000 // backlight pwm frequency
|
||||
);
|
||||
|
||||
common_hal_never_reset_pin(&pin_GPIO45); // backlight pin
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
@ -144,6 +141,18 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
|
||||
gpio_set_level(21, true);
|
||||
return true;
|
||||
}
|
||||
// Pull LED down on reset rather than the default up
|
||||
if (pin_number == 13) {
|
||||
gpio_config_t cfg = {
|
||||
.pin_bit_mask = BIT64(pin_number),
|
||||
.mode = GPIO_MODE_DISABLE,
|
||||
.pull_up_en = false,
|
||||
.pull_down_en = true,
|
||||
.intr_type = GPIO_INTR_DISABLE,
|
||||
};
|
||||
gpio_config(&cfg);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -94,8 +94,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO7, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -17,3 +17,4 @@ CIRCUITPY_ESP_FLASH_FREQ = 40m
|
||||
CIRCUITPY_ESP_FLASH_SIZE = 4MB
|
||||
|
||||
OPTIMIZATION_FLAGS = -Os
|
||||
CIRCUITPY_ESP32_CAMERA = 0
|
||||
|
@ -118,8 +118,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO45, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
false, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -18,3 +18,4 @@ CIRCUITPY_ESP_FLASH_FREQ = 40m
|
||||
CIRCUITPY_ESP_FLASH_SIZE = 4MB
|
||||
|
||||
OPTIMIZATION_FLAGS = -Os
|
||||
CIRCUITPY_ESP32_CAMERA = 0
|
||||
|
@ -97,8 +97,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO21, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -16,6 +16,8 @@ CIRCUITPY_ESP_FLASH_MODE = dio
|
||||
CIRCUITPY_ESP_FLASH_FREQ = 40m
|
||||
CIRCUITPY_ESP_FLASH_SIZE = 4MB
|
||||
|
||||
CIRCUITPY_ESP32_CAMERA = 0
|
||||
|
||||
# Include these Python libraries in firmware.
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_PortalBase
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_FakeRequests
|
||||
|
@ -16,6 +16,8 @@ CIRCUITPY_ESP_FLASH_MODE = dio
|
||||
CIRCUITPY_ESP_FLASH_FREQ = 40m
|
||||
CIRCUITPY_ESP_FLASH_SIZE = 4MB
|
||||
|
||||
CIRCUITPY_ESP32_CAMERA = 0
|
||||
|
||||
# Include these Python libraries in firmware.
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_PortalBase
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_FakeRequests
|
||||
|
46
ports/espressif/boards/espressif_esp32_eye/board.c
Normal file
46
ports/espressif/boards/espressif_esp32_eye/board.c
Normal file
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "supervisor/board.h"
|
||||
#include "mpconfigboard.h"
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
#include "components/driver/include/driver/gpio.h"
|
||||
#include "components/hal/include/hal/gpio_hal.h"
|
||||
#include "common-hal/microcontroller/Pin.h"
|
||||
|
||||
void board_init(void) {
|
||||
reset_board();
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
}
|
||||
|
||||
void board_deinit(void) {
|
||||
}
|
39
ports/espressif/boards/espressif_esp32_eye/mpconfigboard.h
Normal file
39
ports/espressif/boards/espressif_esp32_eye/mpconfigboard.h
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2022 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
// Micropython setup
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "Espressif ESP32-EYE"
|
||||
#define MICROPY_HW_MCU_NAME "ESP32"
|
||||
|
||||
#define CIRCUITPY_BOARD_I2C (1)
|
||||
#define CIRCUITPY_BOARD_I2C_PIN {{.scl = &pin_GPIO23, .sda = &pin_GPIO18}}
|
||||
|
||||
// UART pins attached to the USB-serial converter chip
|
||||
#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO1)
|
||||
#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO3)
|
||||
|
||||
#define DEFAULT_RESERVED_PSRAM (1048576)
|
11
ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk
Normal file
11
ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk
Normal file
@ -0,0 +1,11 @@
|
||||
CIRCUITPY_CREATOR_ID = 0x000C303A
|
||||
CIRCUITPY_CREATION_ID = 0x00320001
|
||||
|
||||
IDF_TARGET = esp32
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
CIRCUITPY_ESP_FLASH_MODE = dio
|
||||
CIRCUITPY_ESP_FLASH_FREQ = 40m
|
||||
CIRCUITPY_ESP_FLASH_SIZE = 4MB
|
40
ports/espressif/boards/espressif_esp32_eye/pins.c
Normal file
40
ports/espressif/boards/espressif_esp32_eye/pins.c
Normal file
@ -0,0 +1,40 @@
|
||||
#include "py/objtuple.h"
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
|
||||
STATIC const mp_rom_obj_tuple_t camera_data_tuple = {
|
||||
{&mp_type_tuple},
|
||||
8,
|
||||
{
|
||||
MP_ROM_PTR(&pin_GPIO34),
|
||||
MP_ROM_PTR(&pin_GPIO13),
|
||||
MP_ROM_PTR(&pin_GPIO14),
|
||||
MP_ROM_PTR(&pin_GPIO35),
|
||||
MP_ROM_PTR(&pin_GPIO39), // "S_VN"
|
||||
MP_ROM_PTR(&pin_GPIO38),
|
||||
MP_ROM_PTR(&pin_GPIO37),
|
||||
MP_ROM_PTR(&pin_GPIO36), // "S_VP"
|
||||
}
|
||||
};
|
||||
|
||||
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2S_SCK), MP_ROM_PTR(&pin_GPIO26) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2S_WS), MP_ROM_PTR(&pin_GPIO32) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2S_SDO), MP_ROM_PTR(&pin_GPIO32) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO0) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO15) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED_RED), MP_ROM_PTR(&pin_GPIO21) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED_WHITE), MP_ROM_PTR(&pin_GPIO22) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_CAMERA_DATA), MP_ROM_PTR(&camera_data_tuple) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_CAMERA_VSYNC), MP_ROM_PTR(&pin_GPIO5) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_CAMERA_HREF), MP_ROM_PTR(&pin_GPIO27) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_CAMERA_PCLK), MP_ROM_PTR(&pin_GPIO25) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_CAMERA_XCLK), MP_ROM_PTR(&pin_GPIO4) },
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
72
ports/espressif/boards/espressif_esp32_eye/sdkconfig
Normal file
72
ports/espressif/boards/espressif_esp32_eye/sdkconfig
Normal file
@ -0,0 +1,72 @@
|
||||
# Automatically generated file. DO NOT EDIT.
|
||||
# Espressif IoT Development Framework (ESP-IDF) Project Configuration
|
||||
#
|
||||
#
|
||||
# Component config
|
||||
#
|
||||
#
|
||||
# ESP32-specific
|
||||
#
|
||||
CONFIG_ESP32_SPIRAM_SUPPORT=y
|
||||
#
|
||||
# SPI RAM config
|
||||
#
|
||||
CONFIG_SPIRAM_TYPE_AUTO=y
|
||||
# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set
|
||||
# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
|
||||
# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set
|
||||
CONFIG_SPIRAM_SIZE=-1
|
||||
CONFIG_SPIRAM_SPEED_40M=y
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_BOOT_INIT=y
|
||||
CONFIG_SPIRAM_IGNORE_NOTFOUND=y
|
||||
CONFIG_SPIRAM_USE_MEMMAP=y
|
||||
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
|
||||
# CONFIG_SPIRAM_USE_MALLOC is not set
|
||||
CONFIG_SPIRAM_MEMTEST=y
|
||||
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
|
||||
# CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY is not set
|
||||
CONFIG_SPIRAM_CACHE_WORKAROUND=y
|
||||
# CONFIG_SPIRAM_BANKSWITCH_ENABLE is not set
|
||||
# end of SPI RAM config
|
||||
|
||||
# end of ESP32-specific
|
||||
|
||||
#
|
||||
# NVS
|
||||
#
|
||||
# CONFIG_NVS_ASSERT_ERROR_CHECK is not set
|
||||
# end of NVS
|
||||
|
||||
#
|
||||
# Camera configuration
|
||||
#
|
||||
CONFIG_OV7670_SUPPORT=y
|
||||
CONFIG_OV7725_SUPPORT=y
|
||||
CONFIG_NT99141_SUPPORT=y
|
||||
CONFIG_OV2640_SUPPORT=y
|
||||
CONFIG_OV3660_SUPPORT=y
|
||||
CONFIG_OV5640_SUPPORT=y
|
||||
CONFIG_GC2145_SUPPORT=y
|
||||
CONFIG_GC032A_SUPPORT=y
|
||||
CONFIG_GC0308_SUPPORT=y
|
||||
CONFIG_BF3005_SUPPORT=y
|
||||
CONFIG_BF20A6_SUPPORT=y
|
||||
# CONFIG_SC101IOT_SUPPORT is not set
|
||||
CONFIG_SC030IOT_SUPPORT=y
|
||||
# CONFIG_SCCB_HARDWARE_I2C_PORT0 is not set
|
||||
CONFIG_SCCB_HARDWARE_I2C_PORT1=y
|
||||
CONFIG_SCCB_CLK_FREQ=100000
|
||||
# CONFIG_GC_SENSOR_WINDOWING_MODE is not set
|
||||
CONFIG_GC_SENSOR_SUBSAMPLE_MODE=y
|
||||
CONFIG_CAMERA_CORE0=y
|
||||
# CONFIG_CAMERA_CORE1 is not set
|
||||
# CONFIG_CAMERA_NO_AFFINITY is not set
|
||||
CONFIG_CAMERA_DMA_BUFFER_SIZE_MAX=32768
|
||||
# end of Camera configuration
|
||||
|
||||
# end of Component config
|
||||
#
|
||||
CONFIG_ESP_CONSOLE_UART_TX_GPIO=1
|
||||
CONFIG_ESP_CONSOLE_UART_RX_GPIO=3
|
||||
|
@ -80,8 +80,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO45, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -81,8 +81,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO45, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
137
ports/espressif/boards/espressif_esp32s3_eye/board.c
Normal file
137
ports/espressif/boards/espressif_esp32s3_eye/board.c
Normal file
@ -0,0 +1,137 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "supervisor/board.h"
|
||||
#include "mpconfigboard.h"
|
||||
#include "shared-bindings/busio/SPI.h"
|
||||
#include "shared-bindings/displayio/FourWire.h"
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
|
||||
displayio_fourwire_obj_t board_display_obj;
|
||||
|
||||
#define DELAY 0x80
|
||||
|
||||
// display init sequence according to LilyGO example app
|
||||
uint8_t display_init_sequence[] = {
|
||||
// sw reset
|
||||
0x01, 0 | DELAY, 150,
|
||||
// sleep out
|
||||
0x11, 0 | DELAY, 255,
|
||||
// normal display mode on
|
||||
0x13, 0,
|
||||
// display and color format settings
|
||||
0x36, 1, 0x08,
|
||||
0xB6, 2, 0x0A, 0x82,
|
||||
0x3A, 1 | DELAY, 0x55, 10,
|
||||
// ST7789V frame rate setting
|
||||
0xB2, 5, 0x0C, 0x0C, 0x00, 0x33, 0x33,
|
||||
// voltages: VGH / VGL
|
||||
0xB7, 1, 0x35,
|
||||
// ST7789V power setting
|
||||
0xBB, 1, 0x28,
|
||||
0xC0, 1, 0x0C,
|
||||
0xC2, 2, 0x01, 0xFF,
|
||||
0xC3, 1, 0x10,
|
||||
0xC4, 1, 0x20,
|
||||
0xC6, 1, 0x0F,
|
||||
0xD0, 2, 0xA4, 0xA1,
|
||||
// ST7789V gamma setting
|
||||
0xE0, 14, 0xD0, 0x00, 0x02, 0x07, 0x0A, 0x28, 0x32, 0x44, 0x42, 0x06, 0x0E, 0x12, 0x14, 0x17,
|
||||
0xE1, 14, 0xD0, 0x00, 0x02, 0x07, 0x0A, 0x28, 0x31, 0x54, 0x47, 0x0E, 0x1C, 0x17, 0x1B, 0x1E,
|
||||
0x21, 0,
|
||||
// display on
|
||||
0x29, 0 | DELAY, 255,
|
||||
};
|
||||
|
||||
void board_init(void) {
|
||||
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;
|
||||
|
||||
common_hal_displayio_fourwire_construct(
|
||||
bus,
|
||||
spi,
|
||||
&pin_GPIO43, // DC
|
||||
&pin_GPIO44, // CS
|
||||
NULL, // no reset pin
|
||||
40000000, // baudrate
|
||||
0, // polarity
|
||||
0 // phase
|
||||
);
|
||||
displayio_display_obj_t *display = &displays[0].display;
|
||||
display->base.type = &displayio_display_type;
|
||||
|
||||
// workaround as board_init() is called before reset_port() in main.c
|
||||
pwmout_reset();
|
||||
|
||||
common_hal_displayio_display_construct(
|
||||
display,
|
||||
bus,
|
||||
240, // width (after rotation)
|
||||
240, // height (after rotation)
|
||||
0, // column start
|
||||
0, // row start
|
||||
0, // rotation
|
||||
16, // color depth
|
||||
false, // grayscale
|
||||
false, // pixels in a byte share a row. Only valid for depths < 8
|
||||
1, // bytes per cell. Only valid for depths < 8
|
||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||
true, // reverse_pixels_in_word
|
||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // set column command
|
||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // set row command
|
||||
MIPI_COMMAND_WRITE_MEMORY_START, // write memory command
|
||||
display_init_sequence,
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO48, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
60, // native_frames_per_second
|
||||
false, // backlight_on_high
|
||||
false, // SH1107_addressing
|
||||
50000 // backlight pwm frequency
|
||||
);
|
||||
|
||||
common_hal_never_reset_pin(&pin_GPIO48); // backlight pin
|
||||
// Debug UART
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
|
||||
}
|
||||
|
||||
void board_deinit(void) {
|
||||
}
|
47
ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.h
Normal file
47
ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.h
Normal file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2019 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
// Micropython setup
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "ESP32-S3-EYE"
|
||||
#define MICROPY_HW_MCU_NAME "ESP32S3"
|
||||
|
||||
// Shared by the camera and accelerometer
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO4)
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO5)
|
||||
|
||||
// This is the SD card connection, not the LCD
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO39)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO40)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO38)
|
||||
|
||||
#define CIRCUITPY_BOARD_SPI (2)
|
||||
#define CIRCUITPY_BOARD_SPI_PIN { \
|
||||
{.clock = &pin_GPIO21, .mosi = &pin_GPIO47, .miso = NULL}, \
|
||||
{.clock = &pin_GPIO39, .mosi = &pin_GPIO40, .miso = &pin_GPIO38}, \
|
||||
}
|
||||
|
||||
#define DEFAULT_RESERVED_PSRAM (1048576)
|
@ -0,0 +1,17 @@
|
||||
USB_VID = 0x303A
|
||||
USB_PID = 0x700F
|
||||
USB_PRODUCT = "ESP32-S3-EYE"
|
||||
USB_MANUFACTURER = "Espressif"
|
||||
|
||||
IDF_TARGET = esp32s3
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
# The default queue depth of 16 overflows on release builds,
|
||||
# so increase it to 32.
|
||||
CFLAGS += -DCFG_TUD_TASK_QUEUE_SZ=32
|
||||
|
||||
CIRCUITPY_ESP_FLASH_MODE = dio
|
||||
CIRCUITPY_ESP_FLASH_FREQ = 80m
|
||||
CIRCUITPY_ESP_FLASH_SIZE = 8MB
|
56
ports/espressif/boards/espressif_esp32s3_eye/pins.c
Normal file
56
ports/espressif/boards/espressif_esp32s3_eye/pins.c
Normal file
@ -0,0 +1,56 @@
|
||||
#include "py/objtuple.h"
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
|
||||
STATIC const mp_rom_obj_tuple_t camera_data_tuple = {
|
||||
{&mp_type_tuple},
|
||||
8,
|
||||
{
|
||||
MP_ROM_PTR(&pin_GPIO11),
|
||||
MP_ROM_PTR(&pin_GPIO9),
|
||||
MP_ROM_PTR(&pin_GPIO8),
|
||||
MP_ROM_PTR(&pin_GPIO10),
|
||||
MP_ROM_PTR(&pin_GPIO12),
|
||||
MP_ROM_PTR(&pin_GPIO18),
|
||||
MP_ROM_PTR(&pin_GPIO17),
|
||||
MP_ROM_PTR(&pin_GPIO16),
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO0) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BUTTONS), MP_ROM_PTR(&pin_GPIO1) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MIC_SDO), MP_ROM_PTR(&pin_GPIO2) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, // LCD
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO4) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO5) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_CAMERA_DATA), MP_ROM_PTR(&camera_data_tuple) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_CAMERA_VSYNC), MP_ROM_PTR(&pin_GPIO6) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_CAMERA_HREF), MP_ROM_PTR(&pin_GPIO7) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_CAMERA_PCLK), MP_ROM_PTR(&pin_GPIO13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_GPIO14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_CAMERA_XCLK), MP_ROM_PTR(&pin_GPIO15) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO47) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO21) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_MISO1), MP_ROM_PTR(&pin_GPIO40) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI1), MP_ROM_PTR(&pin_GPIO38) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCK1), MP_ROM_PTR(&pin_GPIO39) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_MIC_SCK), MP_ROM_PTR(&pin_GPIO41) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MIC_WS), MP_ROM_PTR(&pin_GPIO42) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LCD_DC), MP_ROM_PTR(&pin_GPIO43) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LCD_CS), MP_ROM_PTR(&pin_GPIO44) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BACKLIGHT), MP_ROM_PTR(&pin_GPIO48) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO48) },
|
||||
|
||||
{ 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_DISPLAY), MP_ROM_PTR(&displays[0].display)},
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
34
ports/espressif/boards/espressif_esp32s3_eye/sdkconfig
Normal file
34
ports/espressif/boards/espressif_esp32s3_eye/sdkconfig
Normal file
@ -0,0 +1,34 @@
|
||||
CONFIG_ESP32S3_SPIRAM_SUPPORT=y
|
||||
#
|
||||
# SPI RAM config
|
||||
#
|
||||
# CONFIG_SPIRAM_MODE_QUAD is not set
|
||||
CONFIG_SPIRAM_MODE_OCT=y
|
||||
# CONFIG_SPIRAM_TYPE_AUTO is not set
|
||||
CONFIG_SPIRAM_TYPE_ESPPSRAM64=y
|
||||
CONFIG_SPIRAM_SIZE=8388608
|
||||
# end of SPI RAM config
|
||||
|
||||
CONFIG_DEFAULT_PSRAM_CLK_IO=30
|
||||
#
|
||||
# PSRAM Clock and CS IO for ESP32S3
|
||||
#
|
||||
CONFIG_DEFAULT_PSRAM_CS_IO=26
|
||||
# end of PSRAM Clock and CS IO for ESP32S3
|
||||
|
||||
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
|
||||
# CONFIG_SPIRAM_RODATA is not set
|
||||
CONFIG_SPIRAM_SPEED_80M=y
|
||||
# CONFIG_SPIRAM_SPEED_40M is not set
|
||||
CONFIG_SPIRAM=y
|
||||
CONFIG_SPIRAM_BOOT_INIT=y
|
||||
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
|
||||
CONFIG_SPIRAM_USE_MEMMAP=y
|
||||
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
|
||||
# CONFIG_SPIRAM_USE_MALLOC is not set
|
||||
CONFIG_SPIRAM_MEMTEST=y
|
||||
#
|
||||
# LWIP
|
||||
#
|
||||
CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3-eye"
|
||||
# end of LWIP
|
@ -108,8 +108,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO9, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -30,3 +30,6 @@
|
||||
#define MICROPY_HW_MCU_NAME "ESP32S2"
|
||||
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_GPIO45)
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO7)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO8)
|
||||
|
@ -140,5 +140,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_AUDIO_I2S1_LRCK_DAC1), MP_ROM_PTR(&pin_GPIO17) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_AUDIO_I2S1_BCLK_DAC2), MP_ROM_PTR(&pin_GPIO18) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
||||
|
@ -100,8 +100,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO14, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -112,8 +112,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO45, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
false, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -117,8 +117,7 @@ static void display_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO38, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
false, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -117,8 +117,7 @@ static void display_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
&pin_GPIO33, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
false, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
@ -16,6 +16,8 @@ CIRCUITPY_ESP_FLASH_MODE = dio
|
||||
CIRCUITPY_ESP_FLASH_FREQ = 40m
|
||||
CIRCUITPY_ESP_FLASH_SIZE = 4MB
|
||||
|
||||
CIRCUITPY_ESP32_CAMERA = 0
|
||||
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/mixgo_cp_lib/mixgoce_lib
|
||||
|
@ -16,6 +16,8 @@ CIRCUITPY_ESP_FLASH_MODE = dio
|
||||
CIRCUITPY_ESP_FLASH_FREQ = 40m
|
||||
CIRCUITPY_ESP_FLASH_SIZE = 4MB
|
||||
|
||||
CIRCUITPY_ESP32_CAMERA = 0
|
||||
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/mixgo_cp_lib/mixgoce_lib
|
||||
|
@ -198,8 +198,7 @@ void board_init(void) {
|
||||
sizeof(display_init_sequence),
|
||||
NULL, // There is no backlight pin, defined for now.
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
1.0f, // brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
|
48
ports/espressif/boards/smartbeedesigns_bee_motion_s3/board.c
Normal file
48
ports/espressif/boards/smartbeedesigns_bee_motion_s3/board.c
Normal file
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "supervisor/board.h"
|
||||
#include "mpconfigboard.h"
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
|
||||
void board_init(void) {
|
||||
// Debug UART
|
||||
#ifdef DEBUG
|
||||
common_hal_never_reset_pin(&pin_GPIO43);
|
||||
common_hal_never_reset_pin(&pin_GPIO44);
|
||||
#endif /* DEBUG */
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
|
||||
}
|
||||
|
||||
void board_deinit(void) {
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2019 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
// Micropython setup
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "Bee-Motion-S3"
|
||||
#define MICROPY_HW_MCU_NAME "ESP32S3"
|
||||
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_GPIO48)
|
||||
#define DEFAULT_UART_BUS_RX (&pin_GPIO44)
|
||||
#define DEFAULT_UART_BUS_TX (&pin_GPIO43)
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO36)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO37)
|
||||
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO17)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO15)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO16)
|
@ -0,0 +1,20 @@
|
||||
USB_VID = 0x303A
|
||||
USB_PID = 0x8114
|
||||
USB_PRODUCT = "Bee-Motion-S3"
|
||||
USB_MANUFACTURER = "Smart Bee Designs"
|
||||
|
||||
IDF_TARGET = esp32s3
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
# The default queue depth of 16 overflows on release builds,
|
||||
# so increase it to 32.
|
||||
CFLAGS += -DCFG_TUD_TASK_QUEUE_SZ=32
|
||||
|
||||
CIRCUITPY_ESP_FLASH_MODE = dio
|
||||
CIRCUITPY_ESP_FLASH_FREQ = 80m
|
||||
CIRCUITPY_ESP_FLASH_SIZE = 8MB
|
||||
|
||||
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
102
ports/espressif/boards/smartbeedesigns_bee_motion_s3/pins.c
Normal file
102
ports/espressif/boards/smartbeedesigns_bee_motion_s3/pins.c
Normal file
@ -0,0 +1,102 @@
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
|
||||
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
|
||||
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO5) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO6) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_GPIO7) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_GPIO8) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO8) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_GPIO9) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_GPIO10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_GPIO11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A12), MP_ROM_PTR(&pin_GPIO12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A12), MP_ROM_PTR(&pin_GPIO12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A13), MP_ROM_PTR(&pin_GPIO13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A14), MP_ROM_PTR(&pin_GPIO14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO14) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A15), MP_ROM_PTR(&pin_GPIO15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO15) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO17) },
|
||||
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO35) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO36) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO36) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO37) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_GPIO37) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO40) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO34) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D43), MP_ROM_PTR(&pin_GPIO43) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44)},
|
||||
{ MP_ROM_QSTR(MP_QSTR_D44), MP_ROM_PTR(&pin_GPIO44) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_BOOT_BTN), MP_ROM_PTR(&pin_GPIO0) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_GPIO1) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VBAT), MP_ROM_PTR(&pin_GPIO1) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VBAT_SENSE), MP_ROM_PTR(&pin_GPIO1) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_GPIO1) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VBUS_SENSE), MP_ROM_PTR(&pin_GPIO2) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LIGHT), MP_ROM_PTR(&pin_GPIO3) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LIGHT_SENSOR), MP_ROM_PTR(&pin_GPIO3) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_PIR), MP_ROM_PTR(&pin_GPIO4) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_PIR_SENSOR), MP_ROM_PTR(&pin_GPIO4) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_), MP_ROM_PTR(&pin_GPIO34) },
|
||||
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
@ -0,0 +1,6 @@
|
||||
# CONFIG_ESP32S3_SPIRAM_SUPPORT is not set
|
||||
#
|
||||
# LWIP
|
||||
#
|
||||
CONFIG_LWIP_LOCAL_HOSTNAME="smartbeedesigns_bee_motion_s3"
|
||||
# end of LWIP
|
48
ports/espressif/boards/smartbeedesigns_bee_s3/board.c
Normal file
48
ports/espressif/boards/smartbeedesigns_bee_s3/board.c
Normal file
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "supervisor/board.h"
|
||||
#include "mpconfigboard.h"
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
|
||||
void board_init(void) {
|
||||
// Debug UART
|
||||
#ifdef DEBUG
|
||||
common_hal_never_reset_pin(&pin_GPIO43);
|
||||
common_hal_never_reset_pin(&pin_GPIO44);
|
||||
#endif /* DEBUG */
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
|
||||
}
|
||||
|
||||
void board_deinit(void) {
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user