Skip to content

Commit 6dbeb75

Browse files
authored
Merge pull request #4880 from jepler/esp32s2-imagecapture
Esp32s2: implement ParallelImageCapture
2 parents a4d6452 + 198e3ad commit 6dbeb75

File tree

23 files changed

+898
-31
lines changed

23 files changed

+898
-31
lines changed

locale/circuitpython.pot

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,10 @@ msgstr ""
115115
msgid "%q must be a tuple of length 2"
116116
msgstr ""
117117

118+
#: ports/esp32s2/common-hal/imagecapture/ParallelImageCapture.c
119+
msgid "%q must be between %d and %d"
120+
msgstr ""
121+
118122
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
119123
#: shared-bindings/canio/Match.c
120124
msgid "%q out of range"
@@ -1280,6 +1284,11 @@ msgstr ""
12801284
msgid "Invalid data_count %d"
12811285
msgstr ""
12821286

1287+
#: ports/atmel-samd/common-hal/imagecapture/ParallelImageCapture.c
1288+
#, c-format
1289+
msgid "Invalid data_pins[%d]"
1290+
msgstr ""
1291+
12831292
#: shared-bindings/digitalio/DigitalInOut.c
12841293
msgid "Invalid direction."
12851294
msgstr ""
@@ -1813,6 +1822,7 @@ msgid ""
18131822
"constructor"
18141823
msgstr ""
18151824

1825+
#: ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.c
18161826
#: ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c
18171827
msgid "Pins must be sequential"
18181828
msgstr ""

ports/atmel-samd/common-hal/imagecapture/ParallelImageCapture.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,16 @@
5050
#define PIN_PCC_CLK (PIN_PA14)
5151

5252
void common_hal_imagecapture_parallelimagecapture_construct(imagecapture_parallelimagecapture_obj_t *self,
53-
const mcu_pin_obj_t *data0,
53+
const uint8_t data_pins[],
54+
uint8_t data_count,
5455
const mcu_pin_obj_t *data_clock,
5556
const mcu_pin_obj_t *vertical_sync,
56-
const mcu_pin_obj_t *horizontal_reference,
57-
int data_count) {
58-
if (data0->number != PIN_PCC_D0) {
59-
mp_raise_ValueError_varg(translate("Invalid %q pin"), MP_QSTR_data0);
57+
const mcu_pin_obj_t *horizontal_reference) {
58+
59+
for (int i = 0; i < data_count; i++) {
60+
if (data_pins[i] != PIN_PCC_D0 + i) {
61+
mp_raise_ValueError_varg(translate("Invalid data_pins[%d]"), i);
62+
}
6063
}
6164
// The peripheral supports 8, 10, 12, or 14 data bits, but the code only supports 8 at present
6265
if (data_count != 8) {
@@ -73,7 +76,7 @@ void common_hal_imagecapture_parallelimagecapture_construct(imagecapture_paralle
7376
}
7477
// technically, 0 was validated as free already but check again
7578
for (int i = 0; i < data_count; i++) {
76-
if (!pin_number_is_free(data0->number + i)) {
79+
if (!pin_number_is_free(data_pins[i])) {
7780
mp_raise_ValueError_varg(translate("data pin #%d in use"), i);
7881
}
7982
}

ports/esp32s2/Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ CFLAGS += -DCFG_TUD_VENDOR_RX_BUFSIZE=128 -DCFG_TUD_VENDOR_TX_BUFSIZE=128
176176

177177
SRC_C += \
178178
background.c \
179+
cam.c \
179180
fatfs_port.c \
180181
mphalport.c \
181182
bindings/espidf/__init__.c \
@@ -337,6 +338,10 @@ flash: $(BUILD)/firmware.bin
337338
flash-circuitpython-only: $(BUILD)/circuitpython-firmware.bin
338339
esptool.py --chip esp32s2 -p $(PORT) $(ESPTOOL_FLAGS) write_flash $(FLASH_FLAGS) 0x10000 $^
339340

341+
monitor: $(BUILD)/firmware.elf
342+
cp $< build/circuitpython.elf
343+
idf.py monitor -p $(PORT)
344+
340345
include $(TOP)/py/mkrules.mk
341346

342347
# Print out the value of a make variable.

ports/esp32s2/boards/espressif_kaluga_1/pins.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
1+
#include "py/objtuple.h"
12
#include "shared-bindings/board/__init__.h"
23

4+
STATIC const mp_rom_obj_tuple_t camera_data_tuple = {
5+
{&mp_type_tuple},
6+
8,
7+
{
8+
MP_ROM_PTR(&pin_GPIO46),
9+
MP_ROM_PTR(&pin_GPIO45),
10+
MP_ROM_PTR(&pin_GPIO41),
11+
MP_ROM_PTR(&pin_GPIO42),
12+
MP_ROM_PTR(&pin_GPIO39),
13+
MP_ROM_PTR(&pin_GPIO40),
14+
MP_ROM_PTR(&pin_GPIO21),
15+
MP_ROM_PTR(&pin_GPIO38),
16+
}
17+
};
18+
319
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
420
{ MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) },
521
{ MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) },
@@ -54,6 +70,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
5470
{ MP_ROM_QSTR(MP_QSTR_CAMERA_SIOC), MP_ROM_PTR(&pin_GPIO7) },
5571

5672

73+
{ MP_ROM_QSTR(MP_QSTR_CAMERA_DATA), MP_ROM_PTR(&camera_data_tuple) },
5774
{ MP_ROM_QSTR(MP_QSTR_CAMERA_D2), MP_ROM_PTR(&pin_GPIO46) },
5875
{ MP_ROM_QSTR(MP_QSTR_CAMERA_D3), MP_ROM_PTR(&pin_GPIO45) },
5976
{ MP_ROM_QSTR(MP_QSTR_CAMERA_D4), MP_ROM_PTR(&pin_GPIO41) },

0 commit comments

Comments
 (0)