Skip to content

Commit e6ded8d

Browse files
authored
Merge pull request #1953 from tannewt/expose_baudrate
Add baudrate to FourWire and shorten delay.
2 parents c4170d2 + 2dddccb commit e6ded8d

File tree

8 files changed

+20
-17
lines changed

8 files changed

+20
-17
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,12 @@ void board_init(void) {
7474
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
7575
bus->base.type = &displayio_fourwire_type;
7676
busio_spi_obj_t *spi = common_hal_board_create_spi();
77-
common_hal_busio_spi_configure(spi, 12000000, 0, 0, 8);
7877
common_hal_displayio_fourwire_construct(bus,
7978
spi,
8079
&pin_PA28, // Command or data
8180
&pin_PA01, // Chip select
82-
&pin_PA27); // Reset
81+
&pin_PA27, // Reset
82+
12000000);
8383

8484
displayio_display_obj_t* display = &displays[0].display;
8585
display->base.type = &displayio_display_type;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ void board_init(void) {
7373
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
7474
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
7575
common_hal_busio_spi_never_reset(spi);
76-
common_hal_busio_spi_configure(spi, 24000000, 0, 0, 8);
7776

7877
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
7978
bus->base.type = &displayio_fourwire_type;
8079
common_hal_displayio_fourwire_construct(bus,
8180
spi,
8281
&pin_PB05, // TFT_DC Command or data
8382
&pin_PB07, // TFT_CS Chip select
84-
&pin_PA00); // TFT_RST Reset
83+
&pin_PA00, // TFT_RST Reset
84+
60000000);
8585

8686
displayio_display_obj_t* display = &displays[0].display;
8787
display->base.type = &displayio_display_type;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,15 @@ void board_init(void) {
5151
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
5252
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
5353
common_hal_busio_spi_never_reset(spi);
54-
common_hal_busio_spi_configure(spi, 24000000, 0, 0, 8);
5554

5655
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
5756
bus->base.type = &displayio_fourwire_type;
5857
common_hal_displayio_fourwire_construct(bus,
5958
spi,
6059
&pin_PB05, // TFT_DC Command or data
6160
&pin_PB06, // TFT_CS Chip select
62-
&pin_PB07); // TFT_RST Reset
61+
&pin_PB07, // TFT_RST Reset
62+
60000000);
6363

6464
displayio_display_obj_t* display = &displays[0].display;
6565
display->base.type = &displayio_display_type;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ void board_init(void) {
7373
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
7474
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
7575
common_hal_busio_spi_never_reset(spi);
76-
common_hal_busio_spi_configure(spi, 24000000, 0, 0, 8);
7776

7877
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
7978
bus->base.type = &displayio_fourwire_type;
8079
common_hal_displayio_fourwire_construct(bus,
8180
spi,
8281
&pin_PB05, // TFT_DC Command or data
8382
&pin_PB12, // TFT_CS Chip select
84-
&pin_PA00); // TFT_RST Reset
83+
&pin_PA00, // TFT_RST Reset
84+
60000000);
8585

8686
displayio_display_obj_t* display = &displays[0].display;
8787
display->base.type = &displayio_display_type;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,12 @@ void board_init(void) {
7474
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
7575
bus->base.type = &displayio_fourwire_type;
7676
busio_spi_obj_t *spi = common_hal_board_create_spi();
77-
common_hal_busio_spi_configure(spi, 24000000, 0, 0, 8);
7877
common_hal_displayio_fourwire_construct(bus,
7978
spi,
8079
&pin_PA09, // Command or data
8180
&pin_PA08, // Chip select
82-
NULL); // Reset
81+
NULL, // Reset
82+
24000000);
8383

8484
displayio_display_obj_t* display = &displays[0].display;
8585
display->base.type = &displayio_display_type;

shared-bindings/displayio/FourWire.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
//| Manage updating a display over SPI four wire protocol in the background while Python code runs.
4747
//| It doesn't handle display initialization.
4848
//|
49-
//| .. class:: FourWire(spi_bus, *, command, chip_select, reset=None)
49+
//| .. class:: FourWire(spi_bus, *, command, chip_select, reset=None, baudrate=24000000)
5050
//|
5151
//| Create a FourWire object associated with the given pins.
5252
//|
@@ -59,14 +59,16 @@
5959
//| :param microcontroller.Pin command: Data or command pin
6060
//| :param microcontroller.Pin chip_select: Chip select pin
6161
//| :param microcontroller.Pin reset: Reset pin. When None only software reset can be used
62+
//| :param int baudrate: Maximum baudrate in Hz for the display on the bus
6263
//|
6364
STATIC mp_obj_t displayio_fourwire_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
64-
enum { ARG_spi_bus, ARG_command, ARG_chip_select, ARG_reset };
65+
enum { ARG_spi_bus, ARG_command, ARG_chip_select, ARG_reset, ARG_baudrate };
6566
static const mp_arg_t allowed_args[] = {
6667
{ MP_QSTR_spi_bus, MP_ARG_REQUIRED | MP_ARG_OBJ },
6768
{ MP_QSTR_command, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
6869
{ MP_QSTR_chip_select, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
6970
{ MP_QSTR_reset, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_obj = mp_const_none} },
71+
{ MP_QSTR_baudrate, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 24000000} },
7072
};
7173
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
7274
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
@@ -97,7 +99,7 @@ STATIC mp_obj_t displayio_fourwire_make_new(const mp_obj_type_t *type, size_t n_
9799
}
98100

99101
common_hal_displayio_fourwire_construct(self,
100-
MP_OBJ_TO_PTR(spi), command, chip_select, reset);
102+
MP_OBJ_TO_PTR(spi), command, chip_select, reset, args[ARG_baudrate].u_int);
101103
return self;
102104
}
103105

shared-bindings/displayio/FourWire.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ extern const mp_obj_type_t displayio_fourwire_type;
3636

3737
void common_hal_displayio_fourwire_construct(displayio_fourwire_obj_t* self,
3838
busio_spi_obj_t* spi, const mcu_pin_obj_t* command,
39-
const mcu_pin_obj_t* chip_select, const mcu_pin_obj_t* reset);
39+
const mcu_pin_obj_t* chip_select, const mcu_pin_obj_t* reset, uint32_t baudrate);
4040

4141
void common_hal_displayio_fourwire_deinit(displayio_fourwire_obj_t* self);
4242

shared-module/displayio/FourWire.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,22 @@
3131
#include "py/gc.h"
3232
#include "shared-bindings/busio/SPI.h"
3333
#include "shared-bindings/digitalio/DigitalInOut.h"
34+
#include "shared-bindings/microcontroller/__init__.h"
3435
#include "shared-bindings/time/__init__.h"
3536

3637
#include "tick.h"
3738

3839
void common_hal_displayio_fourwire_construct(displayio_fourwire_obj_t* self,
3940
busio_spi_obj_t* spi, const mcu_pin_obj_t* command,
40-
const mcu_pin_obj_t* chip_select, const mcu_pin_obj_t* reset) {
41+
const mcu_pin_obj_t* chip_select, const mcu_pin_obj_t* reset, uint32_t baudrate) {
4142

4243
self->bus = spi;
4344
common_hal_busio_spi_never_reset(self->bus);
4445
// Our object is statically allocated off the heap so make sure the bus object lives to the end
4546
// of the heap as well.
4647
gc_never_free(self->bus);
4748

48-
self->frequency = common_hal_busio_spi_get_frequency(spi);
49+
self->frequency = baudrate;
4950
self->polarity = common_hal_busio_spi_get_polarity(spi);
5051
self->phase = common_hal_busio_spi_get_phase(spi);
5152

@@ -89,7 +90,7 @@ void common_hal_displayio_fourwire_send(mp_obj_t obj, bool command, uint8_t *dat
8990
displayio_fourwire_obj_t* self = MP_OBJ_TO_PTR(obj);
9091
if (command) {
9192
common_hal_digitalio_digitalinout_set_value(&self->chip_select, true);
92-
common_hal_time_delay_ms(1);
93+
common_hal_mcu_delay_us(1);
9394
common_hal_digitalio_digitalinout_set_value(&self->chip_select, false);
9495
}
9596
common_hal_digitalio_digitalinout_set_value(&self->command, !command);

0 commit comments

Comments
 (0)