shields: add WAVESHARE e-Paper shield

Add WAVESHARE e-Paper shield and support for
GDEH0213B1 and GDEH029A1 displays.

Signed-off-by: Johann Fischer <j.fischer@phytec.de>
This commit is contained in:
Johann Fischer 2019-07-15 14:12:28 +02:00 committed by Andrew Boie
parent f2af3b66ff
commit d1d683beef
7 changed files with 282 additions and 0 deletions

View file

@ -0,0 +1,88 @@
.. _waveshare_e_paper_raw_panel_shield:
WAVESHARE e-Paper Raw Panel Shield
##################################
Overview
********
The WAVESHARE e-Paper Raw Panel Shield is a universal driver shield.
The shield can be used to drive various Electrophoretic (electronic ink)
Display (EPD) with a SPI interface.
This shield includes a 23LC1024 1Mb SPI Serial SRAM that is
not currently supported by the Zephyr RTOS.
More information about the shield can be found
at the `Universal e-Paper Raw Panel Driver Shield website`_.
Pins Assignment of the e-Paper Shield
=====================================
+-----------------------+------------+----------------------------+
| Shield Connector Pin | Function | |
+=======================+============+============================+
| D5 | RAM CSn | RAM Chip Select |
+-----------------------+------------+----------------------------+
| D6 | SD CSn | EPD SD Card Chip Select |
+-----------------------+------------+----------------------------+
| D7 | EPD BUSY | EPD Busy Output |
+-----------------------+------------+----------------------------+
| D8 | EPD RESETn | EPD Reset Input |
+-----------------------+------------+----------------------------+
| D9 | EPD DC | EPD Data/Command Input |
+-----------------------+------------+----------------------------+
| D10 | EPD CSn | EPD Chip Select Input |
+-----------------------+------------+----------------------------+
| D11 | SPI MOSI | Serial Data Input |
+-----------------------+------------+----------------------------+
| D12 | SPI MISO | Serial Data Out |
+-----------------------+------------+----------------------------+
| D13 | SPI SCK | Serial Clock Input |
+-----------------------+------------+----------------------------+
Current supported displays
==========================
+--------------+-----------------+--------------+------------------------------+
| Display | Ribbon Cable | Controller / | Shield Designation |
| | Label | Driver | |
+==============+=================+==============+==============================+
| Good Display | HINK-E0213 | SSD1673 / | waveshare_epaper_gdeh0213b1 |
| GDEH0213B1 | | ssd16xx | |
+--------------+-----------------+--------------+------------------------------+
| Good Display | HINK-E0213A22 | IL3897 / | waveshare_epaper_gdeh0213b72 |
| GDEH0213B72 | | ssd16xx | |
+--------------+-----------------+--------------+------------------------------+
| Good Display | E029A01 | IL3820 / | waveshare_epaper_gdeh029a1 |
| GDEH029A1 | | ssd16xx | |
+--------------+-----------------+--------------+------------------------------+
Requirements
************
This shield can only be used with a board that provides a configuration
for Arduino connectors and defines node aliases for SPI and GPIO interfaces
(see :ref:`shields` for more details).
Programming
***********
Correct shield designation (see the table above) for your display must
be entered when you invoke ``west build``.
For example:
.. zephyr-app-commands::
:zephyr-app: samples/gui/lvgl
:board: nrf52840_pca10056
:shield: waveshare_epaper_gdeh0213b1
:goals: build
References
**********
.. target-notes::
.. _Universal e-Paper Raw Panel Driver Shield website:
https://www.waveshare.com/e-paper-shield.htm

View file

@ -0,0 +1,18 @@
#
# Copyright (c) 2019, PHYTEC Messtechnik GmbH
#
# SPDX-License-Identifier: Apache-2.0
#
CONFIG_SSD16XX=y
CONFIG_GPIO=y
CONFIG_SPI=y
CONFIG_LVGL_COLOR_DEPTH_1=y
CONFIG_LVGL_BITS_PER_PIXEL=1
CONFIG_LVGL_HOR_RES=250
CONFIG_LVGL_VER_RES=120
CONFIG_LVGL_DPI=130
CONFIG_LVGL_VDB_SIZE=16
CONFIG_LVGL_DISPLAY_DEV_NAME="SSD16XX"

View file

@ -0,0 +1,40 @@
/*
* Copyright (c) 2019, PHYTEC Messtechnik GmbH
*
* SPDX-License-Identifier: Apache-2.0
*/
&arduino_spi {
status = "okay";
cs-gpios = <&arduino_header 16 0>; /* D10 */
ssd16xxfb@0 {
compatible = "solomon,ssd16xxfb", "gooddisplay,gdeh0213b1";
label = "SSD16XX";
spi-max-frequency = <4000000>;
reg = <0>;
width = <250>;
height = <120>;
pp-width-bits = <8>;
pp-height-bits = <8>;
dc-gpios = <&arduino_header 15 0>; /* D9 */
reset-gpios = <&arduino_header 14 0>; /* D8 */
busy-gpios = <&arduino_header 13 0>; /* D7 */
gdv = [10 0a];
sdv = [19];
vcom = <0xa8>;
border-waveform = <0x71>;
lut-initial = [
22 55 AA 55 AA 55 AA 11
00 00 00 00 00 00 00 00
1E 1E 1E 1E 1E 1E 1E 1E
01 00 00 00 00
];
lut-default = [
18 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
0F 01 00 00 00 00 00 00
00 00 00 00 00
];
};
};

View file

@ -0,0 +1,19 @@
#
# Copyright (c) 2019, PHYTEC Messtechnik GmbH
#
# SPDX-License-Identifier: Apache-2.0
#
CONFIG_SSD16XX=y
CONFIG_GPIO=y
CONFIG_SPI=y
CONFIG_LVGL_COLOR_DEPTH_1=y
CONFIG_LVGL_BITS_PER_PIXEL=1
CONFIG_LVGL_HOR_RES=250
CONFIG_LVGL_VER_RES=120
CONFIG_LVGL_DPI=130
CONFIG_LVGL_VDB_SIZE=16
CONFIG_LVGL_DISPLAY_DEV_NAME="SSD16XX"

View file

@ -0,0 +1,57 @@
/*
* Copyright (c) 2019, PHYTEC Messtechnik GmbH
*
* SPDX-License-Identifier: Apache-2.0
*/
&arduino_spi {
status = "okay";
cs-gpios = <&arduino_header 16 0>; /* D10 */
ssd16xxfb@0 {
compatible = "solomon,ssd16xxfb", "gooddisplay,gdeh0213b72";
label = "SSD16XX";
spi-max-frequency = <4000000>;
reg = <0>;
width = <250>;
height = <120>;
pp-width-bits = <8>;
pp-height-bits = <16>;
dc-gpios = <&arduino_header 15 0>; /* D9 */
reset-gpios = <&arduino_header 14 0>; /* D8 */
busy-gpios = <&arduino_header 13 0>; /* D7 */
gdv = [15];
sdv = [41 a8 32];
vcom = <0x26>;
border-waveform = <0x03>;
lut-initial = [
80 60 40 00 00 00 00
10 60 20 00 00 00 00
80 60 40 00 00 00 00
10 60 20 00 00 00 00
00 00 00 00 00 00 00
03 03 00 00 02
09 09 00 00 02
03 03 00 00 02
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
];
lut-default = [
00 00 00 00 00 00 00
80 00 00 00 00 00 00
40 00 00 00 00 00 00
80 00 00 00 00 00 00
00 00 00 00 00 00 00
0A 00 00 00 04
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
];
};
};

View file

@ -0,0 +1,19 @@
#
# Copyright (c) 2019, PHYTEC Messtechnik GmbH
#
# SPDX-License-Identifier: Apache-2.0
#
CONFIG_SSD16XX=y
CONFIG_GPIO=y
CONFIG_SPI=y
CONFIG_LVGL_COLOR_DEPTH_1=y
CONFIG_LVGL_BITS_PER_PIXEL=1
CONFIG_LVGL_HOR_RES=296
CONFIG_LVGL_VER_RES=128
CONFIG_LVGL_DPI=130
CONFIG_LVGL_VDB_SIZE=16
CONFIG_LVGL_DISPLAY_DEV_NAME="SSD16XX"

View file

@ -0,0 +1,41 @@
/*
* Copyright (c) 2019, PHYTEC Messtechnik GmbH
*
* SPDX-License-Identifier: Apache-2.0
*/
&arduino_spi {
status = "okay";
cs-gpios = <&arduino_header 16 0>; /* D10 */
ssd16xxfb@0 {
compatible = "solomon,ssd16xxfb", "gooddisplay,gdeh029a1";
label = "SSD16XX";
spi-max-frequency = <4000000>;
reg = <0>;
width = <296>;
height = <128>;
pp-width-bits = <16>;
pp-height-bits = <16>;
dc-gpios = <&arduino_header 15 0>; /* D9 */
reset-gpios = <&arduino_header 14 0>; /* D8 */
busy-gpios = <&arduino_header 13 0>; /* D7 */
gdv = [16];
sdv = [0a];
vcom = <0xa8>;
border-waveform = <0x33>;
softstart = [d7 d6 9d];
lut-initial = [
50 AA 55 AA 11 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 FF FF 1F 00
00 00 00 00 00 00
];
lut-default = [
10 18 18 08 18 18 08 00
00 00 00 00 00 00 00 00
00 00 00 00 13 14 44 12
00 00 00 00 00 00
];
};
};