33
33
#include "shared-bindings/framebufferio/FramebufferDisplay.h"
34
34
#include "shared-bindings/microcontroller/Pin.h"
35
35
#include "shared-module/displayio/__init__.h"
36
+ #include "boards/espressif_esp32s3_lcd_ev/board.h"
37
+
38
+ #define MP_DEFINE_BYTES_OBJ (obj_name , bin ) mp_obj_str_t obj_name = {{&mp_type_bytes}, 0, sizeof(bin) - 1, (const byte *)bin}
36
39
37
40
static const uint8_t display_init_sequence [] = {
38
41
0xf0 , 5 , 0x55 , 0xaa , 0x52 , 0x08 , 0x00 ,
@@ -80,8 +83,17 @@ static const uint8_t display_init_sequence[] = {
80
83
0x3a , 1 , 0x66 ,
81
84
0x3a , 1 , 0x66 ,
82
85
0x11 , 0x80 , 120 ,
83
- 0x29 , 0x0
86
+ 0x29 , 0x0 ,
87
+ 0 , // trailing NUL for Python bytes() representation
88
+ };
89
+ MP_DEFINE_BYTES_OBJ (display_init_byte_obj , display_init_sequence );
90
+
91
+ static const char i2c_bus_init_sequence [] = {
92
+ 2 , 3 , 0xf1 , // set GPIO direction
93
+ 2 , 2 , 0 , // disable all output inversion
94
+ 0 , // trailing NUL for Python bytes() representation
84
95
};
96
+ MP_DEFINE_BYTES_OBJ (i2c_init_byte_obj , i2c_bus_init_sequence );
85
97
86
98
static const mcu_pin_obj_t * red_pins [] = {
87
99
& pin_GPIO1 , & pin_GPIO2 , & pin_GPIO42 , & pin_GPIO41 , & pin_GPIO40
@@ -103,7 +115,7 @@ void board_init(void) {
103
115
/* hsync */ & pin_GPIO46 ,
104
116
/* dclk */ & pin_GPIO9 ,
105
117
/* data */ red_pins , MP_ARRAY_SIZE (red_pins ), green_pins , MP_ARRAY_SIZE (green_pins ), blue_pins , MP_ARRAY_SIZE (blue_pins ),
106
- /* frequency */ 6500000 ,
118
+ /* frequency */ 12000000 ,
107
119
/* width x height */ 480 , 480 ,
108
120
/* horizontal: pulse, back & front porch, idle */ 13 , 20 , 40 , false,
109
121
/* vertical: pulse, back & front porch, idle */ 15 , 20 , 40 , false,
@@ -127,20 +139,6 @@ void board_init(void) {
127
139
common_hal_busio_i2c_construct (& i2c , DEFAULT_I2C_BUS_SCL , DEFAULT_I2C_BUS_SDA , 400000 , 255 );
128
140
const int i2c_device_address = 32 ;
129
141
130
- common_hal_busio_i2c_try_lock (& i2c );
131
-
132
- {
133
- uint8_t buf [2 ] = {3 , 0xf1 }; // set GPIO direction
134
- common_hal_busio_i2c_write (& i2c , i2c_device_address , buf , sizeof (buf ));
135
- }
136
-
137
- {
138
- uint8_t buf [2 ] = {2 , 0 }; // set all output pins low initially
139
- common_hal_busio_i2c_write (& i2c , i2c_device_address , buf , sizeof (buf ));
140
- }
141
-
142
- common_hal_busio_i2c_unlock (& i2c );
143
-
144
142
dotclockframebuffer_ioexpander_spi_bus spibus = {
145
143
.bus = & i2c ,
146
144
.i2c_device_address = i2c_device_address ,
@@ -151,7 +149,9 @@ void board_init(void) {
151
149
.clk_mask = 0x100 << 2 ,
152
150
};
153
151
154
- dotclockframebuffer_ioexpander_send_init_sequence (& spibus , display_init_sequence , sizeof (display_init_sequence ));
152
+ static const mp_buffer_info_t bufinfo_display_init = { (void * )display_init_sequence , sizeof (display_init_sequence ) - 1 };
153
+ static const mp_buffer_info_t bufinfo_i2c_bus_init = { (void * )i2c_bus_init_sequence , sizeof (i2c_bus_init_sequence ) - 1 };
154
+ dotclockframebuffer_ioexpander_send_init_sequence (& spibus , & bufinfo_i2c_bus_init , & bufinfo_display_init );
155
155
156
156
common_hal_busio_i2c_deinit (& i2c );
157
157
}
0 commit comments