Skip to content

Commit fa1b5a3

Browse files
committed
tulip_cc_r11 display functions
1 parent 17355f2 commit fa1b5a3

File tree

5 files changed

+67
-57
lines changed

5 files changed

+67
-57
lines changed

ports/espressif/boards/tulip_cc_r11/board.c

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,10 @@ static const mcu_pin_obj_t *red_pins[] = {
4242
static void display_init(void) {
4343

4444
mp_int_t height = 0, width = 0, frequency = 0;
45-
os_getenv_err_t result;
4645

47-
result = common_hal_os_getenv_int("CIRCUITPY_DISPLAY_WIDTH", &width);
48-
if (result == GETENV_OK && width == 800) {
49-
width = 800;
50-
height = 480;
51-
frequency = 6500000;
52-
53-
} else {
54-
width = 1024;
55-
height = 600;
56-
frequency = 10000000;
57-
}
46+
width = TULIP_DISPLAY_WIDTH;
47+
height = TULIP_DISPLAY_HEIGHT;
48+
frequency = TULIP_DISPLAY_FREQUENCY;
5849

5950
dotclockframebuffer_framebuffer_obj_t *framebuffer = &allocate_display_bus_or_raise()->dotclock;
6051
framebuffer->base.type = &dotclockframebuffer_framebuffer_type;

ports/espressif/boards/tulip_cc_r11/mpconfigboard.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@
1010
// UART pins attached to the USB-serial converter chip
1111
#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO43)
1212
#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO44)
13+
#define CIRCUITPY_BOARD_UART (1)
14+
#define CIRCUITPY_BOARD_UART_PIN {{.tx = &pin_GPIO43, .rx = &pin_GPIO44}}
1315

1416
#define CIRCUITPY_BOARD_I2C (1)
1517
#define CIRCUITPY_BOARD_I2C_PIN {{.scl = &pin_GPIO18, .sda = &pin_GPIO17}}
1618

19+
#define DOUBLE_TAP_PIN (&pin_GPIO0)
1720
//#define CONFIG_I2S_LRCLK 2
1821
//#define CONFIG_I2S_BCLK 8
1922

20-
#define TULIP_DISPLAY_FREQUENCY 16000000
23+
#define TULIP_DISPLAY_FREQUENCY 10000000
2124
#define TULIP_DISPLAY_WIDTH 1024
2225
#define TULIP_DISPLAY_HEIGHT 600
2326

ports/espressif/boards/tulip_cc_r11/mpconfigboard.mk

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,4 @@ CIRCUITPY_ESP_PSRAM_FREQ = 80m
1818

1919
CIRCUITPY_ESPCAMERA = 0
2020
CIRCUITPY_DOTCLOCKFRAMEBUFFER = 1
21-
CIRCUITPY_WIFI = 1
22-
23-
CIRCUITPY_RGBMATRIX = 0
24-
CIRCUITPY_CANIO = 0
25-
CIRCUITPY_USB_DEVICE = 0
2621

ports/espressif/boards/tulip_cc_r11/pins.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -229,11 +229,11 @@ static const mp_rom_map_elem_t board_module_globals_table[] = {
229229
{ MP_ROM_QSTR(MP_QSTR_I2S_WORD_SELECT), MP_ROM_PTR(&pin_GPIO2) },
230230
{ MP_ROM_QSTR(MP_QSTR_I2S_DATA), MP_ROM_PTR(&pin_GPIO5) },
231231

232-
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) },
233-
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) },
232+
// { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) },
233+
// { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) },
234234

235-
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO18) },
236-
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO17) },
235+
// { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO18) },
236+
// { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO17) },
237237

238238
// USB = D- 19, D+ 20
239239

@@ -243,8 +243,8 @@ static const mp_rom_map_elem_t board_module_globals_table[] = {
243243
{ MP_ROM_QSTR(MP_QSTR_MIDI_OUT), MP_ROM_PTR(&pin_GPIO12) },
244244

245245
// boot mode button can be used in SW as well
246-
{ MP_ROM_QSTR(MP_QSTR_BOOT0), MP_ROM_PTR(&pin_GPIO0) },
247-
{ MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO1) },
246+
// { MP_ROM_QSTR(MP_QSTR_BOOT0), MP_ROM_PTR(&pin_GPIO0) },
247+
// { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO1) },
248248

249249
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
250250
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },

ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.c

Lines changed: 54 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,39 @@ static int valid_pin(const mcu_pin_obj_t *pin, qstr name) {
6060
return result;
6161
}
6262

63-
void common_hal_dotclockframebuffer_framebuffer_construct(dotclockframebuffer_framebuffer_obj_t *self,
64-
const mcu_pin_obj_t *de,
65-
const mcu_pin_obj_t *vsync,
66-
const mcu_pin_obj_t *hsync,
67-
const mcu_pin_obj_t *dclk,
68-
const mcu_pin_obj_t **red, uint8_t num_red,
69-
const mcu_pin_obj_t **green, uint8_t num_green,
70-
const mcu_pin_obj_t **blue, uint8_t num_blue,
71-
int frequency, int width, int height,
72-
int hsync_pulse_width, int hsync_back_porch, int hsync_front_porch, bool hsync_idle_low,
73-
int vsync_pulse_width, int vsync_back_porch, int vsync_front_porch, bool vsync_idle_low,
74-
bool de_idle_high, bool pclk_active_high, bool pclk_idle_high, int overscan_left) {
75-
76-
if (num_red != 5 || num_green != 6 || num_blue != 5) {
77-
mp_raise_ValueError(MP_ERROR_TEXT("Must provide 5/6/5 RGB pins"));
63+
static void allocate_gpio_range(
64+
const mcu_pin_obj_t** pins,
65+
const int num_pins,
66+
const int expected_pins,
67+
esp_lcd_rgb_panel_config_t* cfg,
68+
int *gpio_num,
69+
qstr pin_group_name
70+
)
71+
{
72+
for (int i = 0; i < expected_pins; i++, (*gpio_num)++) {
73+
cfg->data_gpio_nums[*gpio_num] = (i < num_pins ? valid_pin(pins[i], pin_group_name) : GPIO_NUM_NC);
7874
}
75+
}
76+
77+
void common_hal_dotclockframebuffer_framebuffer_construct(dotclockframebuffer_framebuffer_obj_t *self,
78+
const mcu_pin_obj_t *de,
79+
const mcu_pin_obj_t *vsync,
80+
const mcu_pin_obj_t *hsync,
81+
const mcu_pin_obj_t *dclk,
82+
const mcu_pin_obj_t **red, uint8_t num_red,
83+
const mcu_pin_obj_t **green, uint8_t num_green,
84+
const mcu_pin_obj_t **blue, uint8_t num_blue,
85+
int frequency, int width, int height,
86+
int hsync_pulse_width, int hsync_back_porch, int hsync_front_porch, bool hsync_idle_low,
87+
int vsync_pulse_width, int vsync_back_porch, int vsync_front_porch, bool vsync_idle_low,
88+
bool de_idle_high, bool pclk_active_high, bool pclk_idle_high, int overscan_left) {
89+
90+
const int expected_red = 5;
91+
const int expected_green = 6;
92+
const int expected_blue = 5;
93+
// if (num_red != 5 || num_green != 6 || num_blue != 5) {
94+
// mp_raise_ValueError(MP_ERROR_TEXT("Must provide 5/6/5 RGB pins"));
95+
// }
7996

8097
claim_and_record(de, &self->used_pins_mask);
8198
claim_and_record(vsync, &self->used_pins_mask);
@@ -117,24 +134,28 @@ void common_hal_dotclockframebuffer_framebuffer_construct(dotclockframebuffer_fr
117134
cfg->pclk_gpio_num = valid_pin(dclk, MP_QSTR_dclk);
118135
cfg->clk_src = LCD_CLK_SRC_DEFAULT;
119136

120-
cfg->data_gpio_nums[0] = valid_pin(blue[0], MP_QSTR_blue);
121-
cfg->data_gpio_nums[1] = valid_pin(blue[1], MP_QSTR_blue);
122-
cfg->data_gpio_nums[2] = valid_pin(blue[2], MP_QSTR_blue);
123-
cfg->data_gpio_nums[3] = valid_pin(blue[3], MP_QSTR_blue);
124-
cfg->data_gpio_nums[4] = valid_pin(blue[4], MP_QSTR_blue);
125-
126-
cfg->data_gpio_nums[5] = valid_pin(green[0], MP_QSTR_green);
127-
cfg->data_gpio_nums[6] = valid_pin(green[1], MP_QSTR_green);
128-
cfg->data_gpio_nums[7] = valid_pin(green[2], MP_QSTR_green);
129-
cfg->data_gpio_nums[8] = valid_pin(green[3], MP_QSTR_green);
130-
cfg->data_gpio_nums[9] = valid_pin(green[4], MP_QSTR_green);
131-
cfg->data_gpio_nums[10] = valid_pin(green[5], MP_QSTR_green);
132-
133-
cfg->data_gpio_nums[11] = valid_pin(red[0], MP_QSTR_red);
134-
cfg->data_gpio_nums[12] = valid_pin(red[1], MP_QSTR_red);
135-
cfg->data_gpio_nums[13] = valid_pin(red[2], MP_QSTR_red);
136-
cfg->data_gpio_nums[14] = valid_pin(red[3], MP_QSTR_red);
137-
cfg->data_gpio_nums[15] = valid_pin(red[4], MP_QSTR_red);
137+
int gpio_num = 0;
138+
allocate_gpio_range(blue, num_blue, expected_blue, cfg, &gpio_num, MP_QSTR_blue);
139+
// cfg->data_gpio_nums[0] = valid_pin(blue[0], MP_QSTR_blue);
140+
// cfg->data_gpio_nums[1] = valid_pin(blue[1], MP_QSTR_blue);
141+
// cfg->data_gpio_nums[2] = valid_pin(blue[2], MP_QSTR_blue);
142+
// cfg->data_gpio_nums[3] = valid_pin(blue[3], MP_QSTR_blue);
143+
// cfg->data_gpio_nums[4] = valid_pin(blue[4], MP_QSTR_blue);
144+
145+
allocate_gpio_range(green, num_green, expected_green, cfg, &gpio_num, MP_QSTR_green);
146+
// cfg->data_gpio_nums[5] = valid_pin(green[0], MP_QSTR_green);
147+
// cfg->data_gpio_nums[6] = valid_pin(green[1], MP_QSTR_green);
148+
// cfg->data_gpio_nums[7] = valid_pin(green[2], MP_QSTR_green);
149+
// cfg->data_gpio_nums[8] = valid_pin(green[3], MP_QSTR_green);
150+
// cfg->data_gpio_nums[9] = valid_pin(green[4], MP_QSTR_green);
151+
// cfg->data_gpio_nums[10] = valid_pin(green[5], MP_QSTR_green);
152+
153+
allocate_gpio_range(red, num_red, expected_red, cfg, &gpio_num, MP_QSTR_red);
154+
// cfg->data_gpio_nums[11] = valid_pin(red[0], MP_QSTR_red);
155+
// cfg->data_gpio_nums[12] = valid_pin(red[1], MP_QSTR_red);
156+
// cfg->data_gpio_nums[13] = valid_pin(red[2], MP_QSTR_red);
157+
// cfg->data_gpio_nums[14] = valid_pin(red[3], MP_QSTR_red);
158+
// cfg->data_gpio_nums[15] = valid_pin(red[4], MP_QSTR_red);
138159

139160
cfg->disp_gpio_num = GPIO_NUM_NC;
140161

0 commit comments

Comments
 (0)