52
52
DISPLAY_TYPE_ST7735 = const (5 )
53
53
54
54
_TRANSFER_BUFFER_LENGTH = const (16 )
55
+ _MALLOC_DMA = esp .MALLOC_CAP .DMA | esp .MALLOC_CAP .INTERNAL
55
56
56
57
class ili9XXX :
57
58
@@ -102,6 +103,8 @@ def __init__(self,
102
103
self .swap_rgb565_bytes = swap_rgb565_bytes
103
104
self .rgb565_swap_func = lv .draw_sw_rgb565_swap if swap_rgb565_bytes else None
104
105
106
+ flush_cb = esp .ili9xxx_flush if hybrid and hasattr (esp , 'ili9xxx_flush' ) else self .flush
107
+
105
108
if not color_format :
106
109
raise RuntimeError (f"No color format defined for display { self .display_name } " )
107
110
@@ -127,19 +130,19 @@ def __init__(self,
127
130
# Allocate display buffer(s)
128
131
129
132
self .buf_size = (self .width * self .height * self .pixel_size ) // factor
130
- self .buf1 = esp .heap_caps_malloc (self .buf_size , esp . MALLOC_CAP . DMA )
133
+ self .buf1 = esp .heap_caps_malloc (self .buf_size , _MALLOC_DMA )
131
134
if not self .buf1 :
132
- free = esp .heap_caps_get_largest_free_block (esp . MALLOC_CAP . DMA )
135
+ free = esp .heap_caps_get_largest_free_block (_MALLOC_DMA )
133
136
raise RuntimeError (f"Not enough DMA-capable memory to allocate display buffer. Needed: { self .buf_size } bytes, largest free block: { free } bytes" )
134
- self .buf2 = esp .heap_caps_malloc (self .buf_size , esp . MALLOC_CAP . DMA ) if double_buffer else None
137
+ self .buf2 = esp .heap_caps_malloc (self .buf_size , _MALLOC_DMA ) if double_buffer else None
135
138
136
139
# Register display driver
137
140
138
141
self .disp_spi_init ()
139
142
self .disp_drv = lv .display_create (self .width , self .height )
140
143
self .disp_drv .set_color_format (color_format )
141
144
self .disp_drv .set_buffers (self .buf1 , self .buf2 , self .buf_size , lv .DISPLAY_RENDER_MODE .PARTIAL )
142
- self .disp_drv .set_flush_cb (esp . ili9xxx_flush if hybrid and hasattr ( esp , 'ili9xxx_flush' ) else self . flush )
145
+ self .disp_drv .set_flush_cb (flush_cb )
143
146
self .disp_drv .set_driver_data ({
144
147
'dc' : self .dc ,
145
148
'spi' : self .spi ,
@@ -214,7 +217,7 @@ def disp_spi_init(self):
214
217
ret = esp .spi_bus_initialize (self .spihost , buscfg , 1 )
215
218
if ret != 0 : raise RuntimeError ("Failed initializing SPI bus" )
216
219
217
- self .trans_buffer = esp .heap_caps_malloc (_TRANSFER_BUFFER_LENGTH , esp . MALLOC_CAP . DMA )
220
+ self .trans_buffer = esp .heap_caps_malloc (_TRANSFER_BUFFER_LENGTH , _MALLOC_DMA )
218
221
self .cmd_trans_data = self .trans_buffer .__dereference__ (1 )
219
222
self .word_trans_data = self .trans_buffer .__dereference__ (4 )
220
223
0 commit comments