Skip to content

Commit e6ded8d

Browse files
authored
Merge pull request adafruit#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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy