Skip to content

Commit da035fe

Browse files
authored
Merge pull request #5990 from sgauche/stm_spi_3wire
Add support for half-duplex SPI to CPy
2 parents 7270d46 + 72317c3 commit da035fe

File tree

45 files changed

+102
-62
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+102
-62
lines changed

locale/circuitpython.pot

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ msgstr ""
579579

580580
#: shared-bindings/displayio/Display.c
581581
#: shared-bindings/framebufferio/FramebufferDisplay.c
582-
#: shared-bindings/is31fl3741/IS31FL3741.c
582+
#: shared-bindings/is31fl3741/FrameBuffer.c
583583
#: shared-bindings/rgbmatrix/RGBMatrix.c
584584
msgid "Brightness must be 0-1.0"
585585
msgstr ""
@@ -1129,6 +1129,13 @@ msgstr ""
11291129
msgid "Group already used"
11301130
msgstr ""
11311131

1132+
#: ports/atmel-samd/common-hal/busio/SPI.c ports/cxd56/common-hal/busio/SPI.c
1133+
#: ports/espressif/common-hal/busio/SPI.c
1134+
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/nrf/common-hal/busio/SPI.c
1135+
#: ports/raspberrypi/common-hal/busio/SPI.c
1136+
msgid "Half duplex SPI is not implemented"
1137+
msgstr ""
1138+
11321139
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
11331140
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
11341141
#: ports/stm/common-hal/sdioio/SDCard.c
@@ -1480,7 +1487,7 @@ msgstr ""
14801487
msgid "Key must be 16, 24, or 32 bytes long"
14811488
msgstr ""
14821489

1483-
#: shared-module/is31fl3741/IS31FL3741.c
1490+
#: shared-module/is31fl3741/FrameBuffer.c
14841491
msgid "LED mappings must match display size"
14851492
msgstr ""
14861493

@@ -1508,7 +1515,7 @@ msgstr ""
15081515
msgid "MOSI pin init failed."
15091516
msgstr ""
15101517

1511-
#: shared-bindings/is31fl3741/__init__.c
1518+
#: shared-bindings/is31fl3741/IS31FL3741.c
15121519
msgid "Mapping must be a tuple"
15131520
msgstr ""
15141521

@@ -2121,7 +2128,7 @@ msgstr ""
21212128
msgid "Sample rate too high. It must be less than %d"
21222129
msgstr ""
21232130

2124-
#: shared-bindings/is31fl3741/IS31FL3741.c
2131+
#: shared-bindings/is31fl3741/FrameBuffer.c
21252132
msgid "Scale dimensions must divide by 3"
21262133
msgstr ""
21272134

@@ -4557,7 +4564,7 @@ msgstr ""
45574564
msgid "width must be from 2 to 8 (inclusive), not %d"
45584565
msgstr ""
45594566

4560-
#: shared-bindings/is31fl3741/IS31FL3741.c
4567+
#: shared-bindings/is31fl3741/FrameBuffer.c
45614568
#: shared-bindings/rgbmatrix/RGBMatrix.c
45624569
msgid "width must be greater than zero"
45634570
msgstr ""

ports/atmel-samd/boards/arduino_mkr1300/mpconfigboard.mk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,3 @@ CHIP_FAMILY = samd21
99
INTERNAL_FLASH_FILESYSTEM = 1
1010
LONGINT_IMPL = NONE
1111
CIRCUITPY_FULL_BUILD = 0
12-
13-
CIRCUITPY_ONEWIREIO = 0

ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.mk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,3 @@ CHIP_FAMILY = samd21
99
INTERNAL_FLASH_FILESYSTEM = 1
1010
LONGINT_IMPL = NONE
1111
CIRCUITPY_FULL_BUILD = 0
12-
13-
CIRCUITPY_ONEWIREIO = 0

ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.mk

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ INTERNAL_FLASH_FILESYSTEM = 1
1010
LONGINT_IMPL = NONE
1111
CIRCUITPY_FULL_BUILD = 0
1212

13-
CIRCUITPY_ONEWIREIO = 0
13+
# This board has many pins, and we have to remove something else to make room.
14+
CIRCUITPY_RAINBOWIO = 0

ports/atmel-samd/boards/arduino_zero/mpconfigboard.mk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,3 @@ CHIP_FAMILY = samd21
99
INTERNAL_FLASH_FILESYSTEM = 1
1010
LONGINT_IMPL = NONE
1111
CIRCUITPY_FULL_BUILD = 0
12-
13-
CIRCUITPY_ONEWIREIO = 0

ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ LONGINT_IMPL = NONE
1515
CIRCUITPY_BUSDEVICE = 1
1616
CIRCUITPY_DISPLAYIO = 0
1717
CIRCUITPY_KEYPAD = 0
18-
CIRCUITPY_ONEWIREIO = 0
1918

2019
# Include these Python libraries in firmware.
2120
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_CircuitPlayground

ports/atmel-samd/boards/datum_imu/mpconfigboard.mk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,3 @@ CHIP_FAMILY = samd21
99
INTERNAL_FLASH_FILESYSTEM = 1
1010
LONGINT_IMPL = NONE
1111
CIRCUITPY_FULL_BUILD = 0
12-
13-
CIRCUITPY_ONEWIREIO = 0

ports/atmel-samd/boards/feather_m0_adalogger/mpconfigboard.mk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,3 @@ CHIP_FAMILY = samd21
99
INTERNAL_FLASH_FILESYSTEM = 1
1010
LONGINT_IMPL = NONE
1111
CIRCUITPY_FULL_BUILD = 0
12-
13-
CIRCUITPY_ONEWIREIO = 0

ports/atmel-samd/boards/hallowing_m4_express/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ uint8_t display_init_sequence[] = {
4848

4949
void board_init(void) {
5050
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
51-
common_hal_busio_spi_construct(spi, &pin_PA01, &pin_PA00, NULL);
51+
common_hal_busio_spi_construct(spi, &pin_PA01, &pin_PA00, NULL, false);
5252
common_hal_busio_spi_never_reset(spi);
5353

5454
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/monster_m4sk/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ uint8_t display_init_sequence[] = {
4949

5050
void board_init(void) {
5151
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
52-
common_hal_busio_spi_construct(spi, &pin_PA13, &pin_PA12, NULL);
52+
common_hal_busio_spi_construct(spi, &pin_PA13, &pin_PA12, NULL, false);
5353
common_hal_busio_spi_never_reset(spi);
5454

5555
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/openbook_m4/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ uint8_t stop_sequence[] = {
5454

5555
void board_init(void) {
5656
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
57-
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
57+
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL, false);
5858
common_hal_busio_spi_never_reset(spi);
5959

6060
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/pewpew_m4/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ uint8_t display_init_sequence[] = {
9898

9999
void board_init(void) {
100100
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
101-
common_hal_busio_spi_construct(spi, &pin_PA13, &pin_PA15, NULL);
101+
common_hal_busio_spi_construct(spi, &pin_PA13, &pin_PA15, NULL, false);
102102
common_hal_busio_spi_never_reset(spi);
103103

104104
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/pybadge/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ uint8_t display_init_sequence[] = {
7171

7272
void board_init(void) {
7373
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
74-
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
74+
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL, false);
7575
common_hal_busio_spi_never_reset(spi);
7676

7777
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/pygamer/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ uint8_t display_init_sequence[] = {
7171

7272
void board_init(void) {
7373
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
74-
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
74+
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL, false);
7575
common_hal_busio_spi_never_reset(spi);
7676

7777
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/seeeduino_wio_terminal/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ uint8_t display_init_sequence[] = {
6666

6767
void board_init(void) {
6868
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
69-
common_hal_busio_spi_construct(spi, &pin_PB20, &pin_PB19, NULL);
69+
common_hal_busio_spi_construct(spi, &pin_PB20, &pin_PB19, NULL, false);
7070
common_hal_busio_spi_never_reset(spi);
7171

7272
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/seeeduino_xiao/mpconfigboard.mk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,3 @@ CHIP_FAMILY = samd21
99
INTERNAL_FLASH_FILESYSTEM = 1
1010
LONGINT_IMPL = NONE
1111
CIRCUITPY_FULL_BUILD = 0
12-
13-
CIRCUITPY_ONEWIREIO = 0

ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.mk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,4 @@ LONGINT_IMPL = NONE
1111
CIRCUITPY_FULL_BUILD = 0
1212

1313
# There are many pin definitions on this board; it doesn't quite fit on very large translations.
14-
# Remove a couple of modules.
15-
CIRCUITPY_ONEWIREIO = 0
1614
CIRCUITPY_RAINBOWIO = 0

ports/atmel-samd/boards/sparkfun_samd21_dev/mpconfigboard.mk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,3 @@ CHIP_FAMILY = samd21
99
INTERNAL_FLASH_FILESYSTEM = 1
1010
LONGINT_IMPL = NONE
1111
CIRCUITPY_FULL_BUILD = 0
12-
13-
CIRCUITPY_ONEWIREIO = 0

ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ EXTERNAL_FLASH_DEVICES = AT25SF161
1212
LONGINT_IMPL = MPZ
1313

1414
CIRCUITPY_KEYPAD = 0
15-
CIRCUITPY_ONEWIREIO = 0
1615
CIRCUITPY_USB_MIDI = 0
1716

1817
CIRCUITPY_BITBANG_APA102 = 1

ports/atmel-samd/common-hal/busio/SPI.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
void common_hal_busio_spi_construct(busio_spi_obj_t *self,
4646
const mcu_pin_obj_t *clock, const mcu_pin_obj_t *mosi,
47-
const mcu_pin_obj_t *miso) {
47+
const mcu_pin_obj_t *miso, bool half_duplex) {
4848
Sercom *sercom = NULL;
4949
uint8_t sercom_index;
5050
uint32_t clock_pinmux = 0;
@@ -57,6 +57,10 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
5757
uint8_t miso_pad = 0;
5858
uint8_t dopo = 255;
5959

60+
if (half_duplex) {
61+
mp_raise_NotImplementedError(translate("Half duplex SPI is not implemented"));
62+
}
63+
6064
// Ensure the object starts in its deinit state.
6165
self->clock_pin = NO_PIN;
6266

ports/atmel-samd/mpconfigport.mk

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ CIRCUITPY_TOUCHIO_USE_NATIVE ?= 1
4747
CIRCUITPY_ULAB = 0
4848
CIRCUITPY_VECTORIO = 0
4949

50+
# TODO: In CircuitPython 8.0, turn this back on, after `busio.OneWire` is removed.
51+
# We'd like a smoother transition, but we can't afford the space to have both
52+
# `busio.OneWire` and `onewireio.OneWire` present on these tiny builds.
53+
54+
ifeq ($(INTERNAL_FLASH_FILESYSTEM),1)
55+
CIRCUITPY_ONEWIREIO ?= 0
56+
endif
57+
5058
MICROPY_PY_ASYNC_AWAIT = 0
5159

5260
# We don't have room for the fonts for terminalio for ja and ko

ports/broadcom/common-hal/busio/SPI.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,16 @@ void reset_spi(void) {
7777

7878
void common_hal_busio_spi_construct(busio_spi_obj_t *self,
7979
const mcu_pin_obj_t *clock, const mcu_pin_obj_t *mosi,
80-
const mcu_pin_obj_t *miso) {
80+
const mcu_pin_obj_t *miso, bool half_duplex) {
8181
size_t instance_index = NUM_SPI;
8282
BP_Function_Enum clock_alt = 0;
8383
BP_Function_Enum mosi_alt = 0;
8484
BP_Function_Enum miso_alt = 0;
85+
86+
if (half_duplex) {
87+
mp_raise_NotImplementedError(translate("Half duplex SPI is not implemented"));
88+
}
89+
8590
for (size_t i = 0; i < NUM_SPI; i++) {
8691
if (spi_in_use[i]) {
8792
continue;

ports/cxd56/common-hal/busio/SPI.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,13 @@
3535
#include "shared-bindings/busio/SPI.h"
3636

3737
void common_hal_busio_spi_construct(busio_spi_obj_t *self, const mcu_pin_obj_t *clock,
38-
const mcu_pin_obj_t *mosi, const mcu_pin_obj_t *miso) {
38+
const mcu_pin_obj_t *mosi, const mcu_pin_obj_t *miso, bool half_duplex) {
3939
int port = -1;
4040

41+
if (half_duplex) {
42+
mp_raise_NotImplementedError(translate("Half duplex SPI is not implemented"));
43+
}
44+
4145
if (clock->number == PIN_SPI4_SCK &&
4246
(mosi == NULL || mosi->number == PIN_SPI4_MOSI) &&
4347
(miso == NULL || miso->number == PIN_SPI4_MISO)) {

ports/espressif/boards/adafruit_funhouse/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ void board_init(void) {
5757
#endif /* DEBUG */
5858

5959
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
60-
common_hal_busio_spi_construct(spi, &pin_GPIO36, &pin_GPIO35, NULL);
60+
common_hal_busio_spi_construct(spi, &pin_GPIO36, &pin_GPIO35, NULL, false);
6161
common_hal_busio_spi_never_reset(spi);
6262

6363
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/espressif/boards/adafruit_magtag_2.9_grayscale/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ void board_init(void) {
117117
#endif /* DEBUG */
118118

119119
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
120-
common_hal_busio_spi_construct(spi, &pin_GPIO36, &pin_GPIO35, NULL);
120+
common_hal_busio_spi_construct(spi, &pin_GPIO36, &pin_GPIO35, NULL, false);
121121
common_hal_busio_spi_never_reset(spi);
122122

123123
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/espressif/boards/espressif_esp32s3_box/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ uint8_t display_init_sequence[] = {
4545

4646
void board_init(void) {
4747
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
48-
common_hal_busio_spi_construct(spi, &pin_GPIO7, &pin_GPIO6, NULL);
48+
common_hal_busio_spi_construct(spi, &pin_GPIO7, &pin_GPIO6, NULL, false);
4949
common_hal_busio_spi_never_reset(spi);
5050

5151
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/board.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ static void display_init(void) {
7171
spi,
7272
&pin_GPIO36, // CLK
7373
&pin_GPIO35, // MOSI
74-
NULL // MISO not connected
75-
);
74+
NULL, // MISO not connected
75+
false); // Not half-duplex
7676

7777
common_hal_busio_spi_never_reset(spi);
7878

ports/espressif/boards/morpheans_morphesp-240/board.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,8 @@ void board_init(void) {
153153
spi,
154154
&pin_GPIO12, // CLK
155155
&pin_GPIO11, // MOSI
156-
NULL // MISO not connected
157-
);
156+
NULL, // MISO not connected
157+
false); // Not half-duplex
158158

159159
common_hal_busio_spi_never_reset(spi);
160160

ports/espressif/common-hal/busio/SPI.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ static void set_spi_config(busio_spi_obj_t *self,
7373

7474
void common_hal_busio_spi_construct(busio_spi_obj_t *self,
7575
const mcu_pin_obj_t *clock, const mcu_pin_obj_t *mosi,
76-
const mcu_pin_obj_t *miso) {
76+
const mcu_pin_obj_t *miso, bool half_duplex) {
7777

7878
const spi_bus_config_t bus_config = {
7979
.mosi_io_num = mosi != NULL ? mosi->number : -1,
@@ -83,6 +83,10 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
8383
.quadhd_io_num = -1,
8484
};
8585

86+
if (half_duplex) {
87+
mp_raise_NotImplementedError(translate("Half duplex SPI is not implemented"));
88+
}
89+
8690
for (spi_host_device_t host_id = SPI2_HOST; host_id < SOC_SPI_PERIPH_NUM; host_id++) {
8791
if (spi_bus_is_free(host_id)) {
8892
self->host_id = host_id;

ports/mimxrt10xx/common-hal/busio/SPI.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,17 @@ void spi_reset(void) {
7575

7676
void common_hal_busio_spi_construct(busio_spi_obj_t *self,
7777
const mcu_pin_obj_t *clock, const mcu_pin_obj_t *mosi,
78-
const mcu_pin_obj_t *miso) {
78+
const mcu_pin_obj_t *miso, bool half_duplex) {
7979

8080
const uint32_t sck_count = MP_ARRAY_SIZE(mcu_spi_sck_list);
8181
const uint32_t miso_count = MP_ARRAY_SIZE(mcu_spi_miso_list);
8282
const uint32_t mosi_count = MP_ARRAY_SIZE(mcu_spi_mosi_list);
8383
bool spi_taken = false;
8484

85+
if (half_duplex) {
86+
mp_raise_NotImplementedError(translate("Half duplex SPI is not implemented"));
87+
}
88+
8589
for (uint i = 0; i < sck_count; i++) {
8690
if (mcu_spi_sck_list[i].pin != clock) {
8791
continue;

ports/nrf/boards/clue_nrf52840_express/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ uint8_t display_init_sequence[] = {
4848

4949
void board_init(void) {
5050
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
51-
common_hal_busio_spi_construct(spi, &pin_P0_14, &pin_P0_15, NULL);
51+
common_hal_busio_spi_construct(spi, &pin_P0_14, &pin_P0_15, NULL, false);
5252
common_hal_busio_spi_never_reset(spi);
5353

5454
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/nrf/boards/hiibot_bluefi/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ uint8_t display_init_sequence[] = {
4848

4949
void board_init(void) {
5050
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
51-
common_hal_busio_spi_construct(spi, &pin_P0_07, &pin_P1_08, NULL); // SCK, MOSI, MISO
51+
common_hal_busio_spi_construct(spi, &pin_P0_07, &pin_P1_08, NULL, false); // SCK, MOSI, MISO, not half-duplex
5252
common_hal_busio_spi_never_reset(spi);
5353

5454
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/nrf/boards/makerdiary_nrf52840_m2_devkit/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ uint8_t display_init_sequence[] = {
4949

5050
void board_init(void) {
5151
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
52-
common_hal_busio_spi_construct(spi, &pin_P0_11, &pin_P0_12, NULL);
52+
common_hal_busio_spi_construct(spi, &pin_P0_11, &pin_P0_12, NULL, false);
5353
common_hal_busio_spi_never_reset(spi);
5454

5555
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/nrf/boards/ohs2020_badge/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ uint8_t display_init_sequence[] = {
4848

4949
void board_init(void) {
5050
busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus;
51-
common_hal_busio_spi_construct(spi, &pin_P0_11, &pin_P0_12, NULL);
51+
common_hal_busio_spi_construct(spi, &pin_P0_11, &pin_P0_12, NULL, false);
5252
common_hal_busio_spi_never_reset(spi);
5353

5454
displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus;

ports/nrf/common-hal/busio/SPI.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,12 @@ static nrf_spim_frequency_t baudrate_to_spim_frequency(const uint32_t baudrate)
143143
return 0;
144144
}
145145

146-
void common_hal_busio_spi_construct(busio_spi_obj_t *self, const mcu_pin_obj_t *clock, const mcu_pin_obj_t *mosi, const mcu_pin_obj_t *miso) {
146+
void common_hal_busio_spi_construct(busio_spi_obj_t *self, const mcu_pin_obj_t *clock, const mcu_pin_obj_t *mosi, const mcu_pin_obj_t *miso, bool half_duplex) {
147+
148+
if (half_duplex) {
149+
mp_raise_NotImplementedError(translate("Half duplex SPI is not implemented"));
150+
}
151+
147152
// Find a free instance, with most desirable (highest freq and not shared) allocated first.
148153
self->spim_peripheral = NULL;
149154
for (size_t i = 0; i < MP_ARRAY_SIZE(spim_peripherals); i++) {

0 commit comments

Comments
 (0)