Add frequency support to parallel bus
This commit is contained in:
parent
b080d6207b
commit
56a219911f
ports
atmel-samd/common-hal/displayio
esp32s2/common-hal/displayio
mimxrt10xx/common-hal/displayio
nrf/common-hal/displayio
raspberrypi/common-hal/displayio
stm/common-hal/displayio
shared-bindings/displayio
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
||||||
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
||||||
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset) {
|
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset, uint32_t frequency) {
|
||||||
|
|
||||||
uint8_t data_pin = data0->number;
|
uint8_t data_pin = data0->number;
|
||||||
if (data_pin % 8 != 0) {
|
if (data_pin % 8 != 0) {
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
||||||
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
||||||
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset) {
|
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset, uint32_t frequency) {
|
||||||
|
|
||||||
uint8_t data_pin = data0->number;
|
uint8_t data_pin = data0->number;
|
||||||
if (data_pin % 8 != 0) {
|
if (data_pin % 8 != 0) {
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
||||||
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
||||||
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset) {
|
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset, uint32_t frequency) {
|
||||||
|
|
||||||
mp_raise_NotImplementedError(translate("ParallelBus not yet supported"));
|
mp_raise_NotImplementedError(translate("ParallelBus not yet supported"));
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
||||||
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
||||||
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset) {
|
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset, uint32_t frequency) {
|
||||||
|
|
||||||
uint8_t data_pin = data0->number;
|
uint8_t data_pin = data0->number;
|
||||||
if (data_pin % 8 != 0) {
|
if (data_pin % 8 != 0) {
|
||||||
|
@ -45,7 +45,11 @@ static const uint16_t parallel_program[] = {
|
|||||||
|
|
||||||
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
||||||
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
||||||
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset) {
|
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset, uint32_t frequency) {
|
||||||
|
|
||||||
|
// If we did not set frequency guess at 60Mhz
|
||||||
|
if (frequency == 0)
|
||||||
|
frequency = 60000000;
|
||||||
|
|
||||||
uint8_t data_pin = data0->number;
|
uint8_t data_pin = data0->number;
|
||||||
for (uint8_t i = 0; i < 8; i++) {
|
for (uint8_t i = 0; i < 8; i++) {
|
||||||
@ -100,7 +104,7 @@ void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* sel
|
|||||||
|
|
||||||
bool ok = rp2pio_statemachine_construct(&self->state_machine,
|
bool ok = rp2pio_statemachine_construct(&self->state_machine,
|
||||||
parallel_program, sizeof(parallel_program) / sizeof(parallel_program[0]),
|
parallel_program, sizeof(parallel_program) / sizeof(parallel_program[0]),
|
||||||
60000000, //48000000, //125000000, // freq 24Mhz
|
frequency, // frequency
|
||||||
NULL, 0, // init
|
NULL, 0, // init
|
||||||
data0, 8, // first out pin, # out pins
|
data0, 8, // first out pin, # out pins
|
||||||
NULL, 0, // first in pin, # in pins
|
NULL, 0, // first in pin, # in pins
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
||||||
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
||||||
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset) {
|
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset, uint32_t frequency) {
|
||||||
|
|
||||||
mp_raise_NotImplementedError(translate("ParallelBus not yet supported"));
|
mp_raise_NotImplementedError(translate("ParallelBus not yet supported"));
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
//| ...
|
//| ...
|
||||||
//|
|
//|
|
||||||
STATIC mp_obj_t displayio_parallelbus_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
STATIC mp_obj_t displayio_parallelbus_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||||
enum { ARG_data0, ARG_command, ARG_chip_select, ARG_write, ARG_read, ARG_reset };
|
enum { ARG_data0, ARG_command, ARG_chip_select, ARG_write, ARG_read, ARG_reset, ARG_frequency };
|
||||||
static const mp_arg_t allowed_args[] = {
|
static const mp_arg_t allowed_args[] = {
|
||||||
{ MP_QSTR_data0, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
|
{ MP_QSTR_data0, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
|
||||||
{ MP_QSTR_command, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
|
{ MP_QSTR_command, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
|
||||||
@ -68,6 +68,7 @@ STATIC mp_obj_t displayio_parallelbus_make_new(const mp_obj_type_t *type, size_t
|
|||||||
{ MP_QSTR_write, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
|
{ MP_QSTR_write, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
|
||||||
{ MP_QSTR_read, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
|
{ MP_QSTR_read, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
|
||||||
{ MP_QSTR_reset, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
|
{ MP_QSTR_reset, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
|
||||||
|
{ MP_QSTR_frequency, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 0 } },
|
||||||
};
|
};
|
||||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||||
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||||
@ -82,7 +83,7 @@ STATIC mp_obj_t displayio_parallelbus_make_new(const mp_obj_type_t *type, size_t
|
|||||||
displayio_parallelbus_obj_t* self = &allocate_display_bus_or_raise()->parallel_bus;
|
displayio_parallelbus_obj_t* self = &allocate_display_bus_or_raise()->parallel_bus;
|
||||||
self->base.type = &displayio_parallelbus_type;
|
self->base.type = &displayio_parallelbus_type;
|
||||||
|
|
||||||
common_hal_displayio_parallelbus_construct(self, data0, command, chip_select, write, read, reset);
|
common_hal_displayio_parallelbus_construct(self, data0, command, chip_select, write, read, reset, args[ARG_frequency].u_int);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ extern const mp_obj_type_t displayio_parallelbus_type;
|
|||||||
|
|
||||||
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
||||||
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
||||||
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset);
|
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset, uint32_t frequency);
|
||||||
|
|
||||||
void common_hal_displayio_parallelbus_deinit(displayio_parallelbus_obj_t* self);
|
void common_hal_displayio_parallelbus_deinit(displayio_parallelbus_obj_t* self);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user