Skip to content

Commit 54f1cd4

Browse files
committed
1.0.4
1 parent 7cbfed5 commit 54f1cd4

15 files changed

+105
-42
lines changed

RELEASES.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Releases
22

3+
## 1.0.4
4+
5+
* Added chipselect callback.
6+
37
## 1.0.3
48

59
* Renamed `mr_set_text_color` to `mr_set_stroke_color`.

docs/supported-devices.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ To initialize, call:
3535
uint32_t textbuffer_size,
3636
mr_sleep_callback_t sleep_callback,
3737
mr_set_reset_callback_t set_reset_callback,
38+
mr_set_chipselect_callback_t set_chipselect_callback,
3839
mr_set_command_callback_t set_command_callback,
3940
mr_send_callback_t send_callback,
4041
mr_send_callback_t send16_callback);
@@ -43,7 +44,7 @@ To initialize, call:
4344

4445
`textbuffer` is a user-provided framebuffer that should be capable of holding at least two characters, of minimum size `2 * font_boundingbox_width * font_boundingbox_height`. If this framebuffer is too small, text will not render correctly.
4546

46-
`sleep_callback`, `set_reset_callback`, `set_command_callback`, `send_callback` and `send16_callback` are user-provided callbacks. They should, respectively, delay the processor a certain number of milliseconds, set the display's reset line (RESX or RES), set the display's command/data line (DCX, DC or A0) and send 8-bit and 16-bit data to the display.
47+
`sleep_callback`, `set_reset_callback`, `set_chipselect_callback`, `set_command_callback`, `send_callback` and `send16_callback` are user-provided callbacks. They should, respectively, delay the processor a certain number of milliseconds, set the display's reset line (RESX or RES), set the display's chip select line (CS), set the display's command/data line (DCX, DC or A0) and send 8-bit and 16-bit data to the display.
4748

4849
mcu-renderer's display initialization is bare-bones. After calling `mr_st7789_init()` you should send a customized initialization sequence with `mr_send_sequence()`.
4950

@@ -67,13 +68,14 @@ To initialize, call:
6768
uint8_t *framebuffer,
6869
mr_sleep_callback_t sleep_callback,
6970
mr_set_reset_callback_t set_reset_callback,
71+
mr_set_chipselect_callback_t set_chipselect_callback,
7072
mr_set_command_callback_t set_command_callback,
7173
mr_send_callback_t send_callback);
7274

7375
`width` and `height` specify the physical display size. `rotation` allows you to rotate the screen.
7476

7577
`framebuffer` is a user-provided framebuffer of size (width * (height + 7) / 8).
7678

77-
`sleep_callback`, `set_reset_callback`, `set_command_callback` and `send_callback` are user-provided callbacks. They should, respectively, delay the processor a certain number of milliseconds, set the display's reset line (RESX or RES), set the display's command/data line (DCX, DC or A0) and send 8-bit data to the display.
79+
`sleep_callback`, `set_reset_callback`, `set_chipselect_callback`, `set_command_callback` and `send_callback` are user-provided callbacks. They should, respectively, delay the processor a certain number of milliseconds, set the display's reset line (RESX or RES), set the display's chip select line (CSX or CS), set the display's command/data line (DCX, DC or A0) and send 8-bit data to the display.
7880

7981
mcu-renderer's display initialization is bare-bones. After calling `mr_st7565_init()` you should send a customized initialization sequence with `mr_send_sequence()`.

examples/arduino/helloworld-stm32-st7789/display.cpp

+7-10
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,14 @@ void on_display_set_reset(bool value)
4646
digitalWrite(DISPLAY_RESX, !value);
4747
}
4848

49+
void on_display_set_reset(bool value)
50+
{
51+
digitalWrite(DISPLAY_CSX, !value);
52+
}
53+
4954
void on_display_set_command(bool value)
5055
{
51-
if (value)
52-
{
53-
// Trigger CS before command
54-
digitalWrite(DISPLAY_CSX, HIGH);
55-
digitalWrite(DISPLAY_CSX, LOW);
56-
57-
digitalWrite(DISPLAY_DCX, LOW);
58-
}
59-
else
60-
digitalWrite(DISPLAY_DCX, HIGH);
56+
digitalWrite(DISPLAY_DCX, !value);
6157
}
6258

6359
void on_display_send(uint16_t value)
@@ -93,6 +89,7 @@ void init_display(mr_t *mr)
9389
sizeof(display_text_buffer),
9490
on_display_sleep,
9591
on_display_set_reset,
92+
on_display_set_chipselect,
9693
on_display_set_command,
9794
on_display_send,
9895
on_display_send16);

examples/gammacalibration-stm32-st7789/src/display.c

+9-6
Original file line numberDiff line numberDiff line change
@@ -57,19 +57,21 @@ void on_display_set_reset(bool value)
5757
DISPLAY_RESX_PIN);
5858
}
5959

60-
void on_display_set_command(bool value)
60+
void on_display_set_chipselect(bool value)
6161
{
6262
if (value)
63-
{
64-
// Trigger CS before command
65-
gpio_set(DISPLAY_CSX_PORT,
66-
DISPLAY_CSX_PIN);
6763
gpio_clear(DISPLAY_CSX_PORT,
6864
DISPLAY_CSX_PIN);
65+
else
66+
gpio_set(DISPLAY_CSX_PORT,
67+
DISPLAY_CSX_PIN);
68+
}
6969

70+
void on_display_set_command(bool value)
71+
{
72+
if (value)
7073
gpio_clear(DISPLAY_DCX_PORT,
7174
DISPLAY_DCX_PIN);
72-
}
7375
else
7476
gpio_set(DISPLAY_DCX_PORT,
7577
DISPLAY_DCX_PIN);
@@ -136,6 +138,7 @@ void init_display(mr_t *mr)
136138
sizeof(display_text_buffer),
137139
on_display_sleep,
138140
on_display_set_reset,
141+
on_display_set_chipselect,
139142
on_display_set_command,
140143
on_display_send,
141144
on_display_send16);

examples/helloworld-stm32-st7789/src/display.c

+9-6
Original file line numberDiff line numberDiff line change
@@ -57,19 +57,21 @@ void on_display_set_reset(bool value)
5757
DISPLAY_RESX_PIN);
5858
}
5959

60-
void on_display_set_command(bool value)
60+
void on_display_set_chipselect(bool value)
6161
{
6262
if (value)
63-
{
64-
// Trigger CS before command
65-
gpio_set(DISPLAY_CSX_PORT,
66-
DISPLAY_CSX_PIN);
6763
gpio_clear(DISPLAY_CSX_PORT,
6864
DISPLAY_CSX_PIN);
65+
else
66+
gpio_set(DISPLAY_CSX_PORT,
67+
DISPLAY_CSX_PIN);
68+
}
6969

70+
void on_display_set_command(bool value)
71+
{
72+
if (value)
7073
gpio_clear(DISPLAY_DCX_PORT,
7174
DISPLAY_DCX_PIN);
72-
}
7375
else
7476
gpio_set(DISPLAY_DCX_PORT,
7577
DISPLAY_DCX_PIN);
@@ -136,6 +138,7 @@ void init_display(mr_t *mr)
136138
sizeof(display_text_buffer),
137139
on_display_sleep,
138140
on_display_set_reset,
141+
on_display_set_chipselect,
139142
on_display_set_command,
140143
on_display_send,
141144
on_display_send16);

library.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mcu-renderer",
3-
"version": "1.0.3",
3+
"version": "1.0.4",
44
"keywords": "antialiased, color-displays, display-driver, embedded-systems, font, graphics-library, lcd-display, microcontrollers, monochrome-displays, oled-display, renderer, text, tft-display",
55
"description": "A C-language graphics library, focused on rendering non-flickering, anti-aliased text with low resource use on both monochrome and color LCD displays.",
66
"license": "MIT",

library.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=mcu-renderer
2-
version=1.0.3
2+
version=1.0.4
33
author=Gissio
44
maintainer=Gissio
55
sentence=A low-resource graphics library, focused on rendering non-flickering, anti-aliased text on both monochrome and color LCD displays.

src/mcu-renderer-ili9341.h

+3
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ extern "C" {
126126
* @param textbuffer_size The size of the user-provided buffer.
127127
* @param sleep_callback A user-provided sleep callback.
128128
* @param set_reset_callback A user-provided set reset callback.
129+
* @param set_chipselect_callback A user-provided set chipselect callback.
129130
* @param set_command_callback A user-provided set command callback.
130131
* @param send_callback A user-provided send 8-bit data callback.
131132
* @param send_callback A user-provided send 16-bit data callback.
@@ -138,6 +139,7 @@ static inline void mr_ili9341_init(mr_t *mr,
138139
uint32_t textbuffer_size,
139140
mr_sleep_callback_t sleep_callback,
140141
mr_set_reset_callback_t set_reset_callback,
142+
mr_set_chipselect_callback_t set_chipselect_callback,
141143
mr_set_command_callback_t set_command_callback,
142144
mr_send_callback_t send_callback,
143145
mr_send_callback_t send16_callback)
@@ -150,6 +152,7 @@ static inline void mr_ili9341_init(mr_t *mr,
150152
textbuffer_size,
151153
sleep_callback,
152154
set_reset_callback,
155+
set_chipselect_callback,
153156
set_command_callback,
154157
send_callback,
155158
send16_callback);

src/mcu-renderer-sdl.c

+5-1
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,10 @@ void mr_sdl_init(mr_t *mr,
5252

5353
mr->draw_rectangle_callback = mr_draw_rectangle_framebuffer_color;
5454
mr->draw_string_callback = mr_draw_string_framebuffer_color;
55-
#if defined(MCURENDERER_IMAGE_SUPPORT)
55+
#if defined(MCURENDERER_BITMAP_SUPPORT)
5656
mr->draw_bitmap_callback = mr_draw_bitmap_framebuffer_color;
57+
#endif
58+
#if defined(MCURENDERER_IMAGE_SUPPORT)
5759
mr->draw_image_callback = mr_draw_image_framebuffer_color;
5860
#endif
5961

@@ -99,9 +101,11 @@ void mr_sdl_init(mr_t *mr,
99101
exit(1);
100102
}
101103

104+
#ifndef __EMSCRIPTEN__
102105
SDL_RenderSetLogicalSize(display->sdl_renderer,
103106
width * upscale,
104107
height * upscale);
108+
#endif
105109

106110
display->sdl_texture = SDL_CreateTexture(display->sdl_renderer,
107111
SDL_PIXELFORMAT_ABGR8888,

src/mcu-renderer-st7565.c

+5-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ void mr_st7565_init(mr_t *mr,
4242
uint8_t *framebuffer,
4343
mr_sleep_callback_t sleep_callback,
4444
mr_set_reset_callback_t set_reset_callback,
45+
mr_set_chipselect_callback_t set_chipselect_callback,
4546
mr_set_command_callback_t set_command_callback,
4647
mr_send_callback_t send_callback)
4748
{
@@ -55,12 +56,15 @@ void mr_st7565_init(mr_t *mr,
5556

5657
mr->draw_rectangle_callback = mr_draw_rectangle_framebuffer_monochrome_vertical;
5758
mr->draw_string_callback = mr_draw_string_framebuffer_monochrome_vertical;
58-
#if defined(MCURENDERER_IMAGE_SUPPORT)
59+
#if defined(MCURENDERER_BITMAP_SUPPORT)
5960
mr->draw_bitmap_callback = mr_draw_bitmap_framebuffer_monochrome_vertical;
61+
#endif
62+
#if defined(MCURENDERER_IMAGE_SUPPORT)
6063
mr->draw_image_callback = mr_draw_image_framebuffer_monochrome_vertical;
6164
#endif
6265
mr->sleep_callback = sleep_callback;
6366
mr->set_reset_callback = set_reset_callback;
67+
mr->set_chipselect_callback = set_chipselect_callback;
6468
mr->set_command_callback = set_command_callback;
6569
mr->send_callback = send_callback;
6670

src/mcu-renderer-st7565.h

+2
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ extern "C" {
6565
* @param framebuffer A user-provided framebuffer of size (width * height / 8).
6666
* @param sleep_callback A user-provided sleep callback.
6767
* @param set_reset_callback A user-provided set reset callback.
68+
* @param set_chipselect_callback A user-provided set chipselect callback.
6869
* @param set_command_callback A user-provided set command callback.
6970
* @param send_callback A user-provided send 8-bit data callback.
7071
*/
@@ -75,6 +76,7 @@ void mr_st7565_init(mr_t *mr,
7576
uint8_t *framebuffer,
7677
mr_sleep_callback_t sleep_callback,
7778
mr_set_reset_callback_t set_reset_callback,
79+
mr_set_chipselect_callback_t set_chipselect_callback,
7880
mr_set_command_callback_t set_command_callback,
7981
mr_send_callback_t send_callback);
8082

src/mcu-renderer-st7789.c

+5-1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ void mr_st7789_init(mr_t *mr,
7070
uint32_t textbuffer_size,
7171
mr_sleep_callback_t sleep_callback,
7272
mr_set_reset_callback_t set_reset_callback,
73+
mr_set_chipselect_callback_t set_chipselect_callback,
7374
mr_set_command_callback_t set_command_callback,
7475
mr_send_callback_t send_callback,
7576
mr_send_callback_t send16_callback)
@@ -86,12 +87,15 @@ void mr_st7789_init(mr_t *mr,
8687
mr->draw_rectangle_callback = mr_st7789_draw_rectangle;
8788
mr->draw_string_callback = mr_draw_string_textbuffer;
8889
mr->draw_textbuffer_callback = mr_st7789_draw_textbuffer;
89-
#if defined(MCURENDERER_IMAGE_SUPPORT)
90+
#if defined(MCURENDERER_BITMAP_SUPPORT)
9091
mr->draw_bitmap_callback = mr_st7789_draw_bitmap;
92+
#endif
93+
#if defined(MCURENDERER_IMAGE_SUPPORT)
9194
mr->draw_image_callback = mr_st7789_draw_image;
9295
#endif
9396
mr->sleep_callback = sleep_callback;
9497
mr->set_reset_callback = set_reset_callback;
98+
mr->set_chipselect_callback = set_chipselect_callback;
9599
mr->set_command_callback = set_command_callback;
96100
mr->send_callback = send_callback;
97101
mr->send16_callback = send16_callback;

src/mcu-renderer-st7789.h

+2
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ extern "C" {
121121
* @param textbuffer_size The size of the user-provided buffer.
122122
* @param sleep_callback A user-provided sleep callback.
123123
* @param set_reset_callback A user-provided set reset callback.
124+
* @param set_chipselect_callback A user-provided set chipselect callback.
124125
* @param set_command_callback A user-provided set command callback.
125126
* @param send_callback A user-provided send 8-bit data callback.
126127
* @param send16_callback A user-provided send 16-bit data callback.
@@ -133,6 +134,7 @@ void mr_st7789_init(mr_t *mr,
133134
uint32_t textbuffer_size,
134135
mr_sleep_callback_t sleep_callback,
135136
mr_set_reset_callback_t set_reset_callback,
137+
mr_set_chipselect_callback_t set_chipselect_callback,
136138
mr_set_command_callback_t set_command_callback,
137139
mr_send_callback_t send_callback,
138140
mr_send_callback_t send16_callback);

0 commit comments

Comments
 (0)