Pervasive Displays Library Suite - Basic edition  5.2.6
Library for Pervasive Displays e-paper screens and EXT3 extension board
hV_Configuration.h File Reference

Configuration of the options for Pervasive Displays Library Suite. More...

#include "Arduino.h"
Include dependency graph for hV_Configuration.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  pins_t
 Board configuration structure. More...
 

Macros

#define hV_CONFIGURATION_RELEASE   525
 Release.
 
#define MAX_FONT_SIZE   4
 4- Maximum number of fonts More...
 
1- List of supported Pervasive Displays screens
#define eScreen_EPD_EXT3_t   uint32_t
 
#define eScreen_EPD_EXT3_154   (uint32_t)0x1500
 reference xE2154CSxxx More...
 
#define eScreen_EPD_EXT3_213   (uint32_t)0x2100
 reference xE2213CSxxx
 
#define eScreen_EPD_EXT3_266   (uint32_t)0x2600
 reference xE2266CSxxx
 
#define eScreen_EPD_EXT3_271   (uint32_t)0x2700
 reference xE2271CSxxx
 
#define eScreen_EPD_EXT3_287   (uint32_t)0x2800
 reference xE2287CSxxx
 
#define eScreen_EPD_EXT3_290   (uint32_t)0x2900
 reference xE2290CSxxx
 
#define eScreen_EPD_EXT3_370   (uint32_t)0x3700
 reference xE2370CSxxx
 
#define eScreen_EPD_EXT3_417   (uint32_t)0x4100
 reference xE2417CSxxx
 
#define eScreen_EPD_EXT3_437   (uint32_t)0x4300
 reference xE2437CSxxx
 
#define eScreen_EPD_EXT3_565   (uint32_t)0x5600
 reference xE2565CSxxx
 
#define eScreen_EPD_EXT3_581   (uint32_t)0x580B
 reference xE2581CS0Bx, same as eScreen_EPD_EXT3_581_0B
 
#define eScreen_EPD_EXT3_741   (uint32_t)0x740B
 reference xE2741CS0Bx, same as eScreen_EPD_EXT3_741_0B
 
#define eScreen_EPD_EXT3_969   (uint32_t)0x960B
 reference xE2969CS0Bx, same as eScreen_EPD_EXT3_969_0B
 
#define eScreen_EPD_EXT3_B98   (uint32_t)0xB90B
 reference xE2B98CS0Bx, same as eScreen_EPD_EXT3_B98_0B
 
#define eScreen_EPD_EXT3_581_08   (uint32_t)0x5808
 reference xE2581CS08x, previous type More...
 
#define eScreen_EPD_EXT3_741_08   (uint32_t)0x7408
 reference xE2741CS08x, previous type
 
#define eScreen_EPD_EXT3_969_08   (uint32_t)0x9608
 reference xE2969CS08x, previous type More...
 
#define eScreen_EPD_EXT3_B98_08   (uint32_t)0xB908
 reference xE2B98CS08x, previous type
 
#define eScreen_EPD_EXT3_154_0C   (uint32_t)0x150C
 reference xE2154CS0Cx More...
 
#define eScreen_EPD_EXT3_213_09   (uint32_t)0x2109
 reference xE2213xS09x
 
#define eScreen_EPD_EXT3_213_0C   (uint32_t)0x210C
 reference xE2213CS0Cx
 
#define eScreen_EPD_EXT3_266_09   (uint32_t)0x2609
 reference xE2266xS09x
 
#define eScreen_EPD_EXT3_266_0C   (uint32_t)0x260C
 reference xE2266CS0Cx
 
#define eScreen_EPD_EXT3_266_Armor   (uint32_t)0x042609
 reference xE2266CS0Cx
 
#define eScreen_EPD_EXT3_271_09   (uint32_t)0x2709
 reference xE2271CS09x
 
#define eScreen_EPD_EXT3_271_Fast   (uint32_t)0x012709
 reference xE2271PS09x
 
#define eScreen_EPD_EXT3_287_09   (uint32_t)0x2809
 reference xE2287CS09x
 
#define eScreen_EPD_EXT3_370_0C   (uint32_t)0x370C
 reference xE2370CS0Cx
 
#define eScreen_EPD_EXT3_417_05   (uint32_t)0x4105
 reference xE2417CS05x
 
#define eScreen_EPD_EXT3_417_0D   (uint32_t)0x410D
 reference xE2417CS0Dx
 
#define eScreen_EPD_EXT3_437_0C   (uint32_t)0x430C
 reference xE2437CS0Cx
 
#define eScreen_EPD_EXT3_581_0B   (uint32_t)0x580B
 reference xE2581CS0Bx
 
#define eScreen_EPD_EXT3_741_0B   (uint32_t)0x740B
 reference xE2741CS0Bx
 
#define eScreen_EPD_EXT3_969_0B   (uint32_t)0x960B
 reference xE2969CS0Bx
 
#define eScreen_EPD_EXT3_B98_0B   (uint32_t)0xB90B
 reference xE2B98CS0Bx
 
#define eScreen_EPD_EXT3_437_08   (uint32_t)0x4308
 reference xE2437CS08x, previous type More...
 
Frame Frame-buffer sizes

Frame-buffer size = width * height / 8 * depth, uint32_t

Note
Only one frame buffer is required.
Depth = 2 for black-white-red screens and monochrome screens
#define frameSize_EPD_EXT3_154   (uint32_t)(5776)
 
#define frameSize_EPD_EXT3_213   (uint32_t)(5512)
 
#define frameSize_EPD_EXT3_266   (uint32_t)(11248)
 
#define frameSize_EPD_EXT3_271   (uint32_t)(11616)
 
#define frameSize_EPD_EXT3_287   (uint32_t)(9472)
 
#define frameSize_EPD_EXT3_370   (uint32_t)(24960)
 
#define frameSize_EPD_EXT3_417   (uint32_t)(30000)
 
#define frameSize_EPD_EXT3_437   (uint32_t)(21120)
 
#define frameSize_EPD_EXT3_565   (uint32_t)(33600)
 
#define frameSize_EPD_EXT3_581   (uint32_t)(46080)
 
#define frameSize_EPD_EXT3_741   (uint32_t)(96000)
 
#define frameSize_EPD_EXT3_969   (uint32_t)(161280)
 
#define frameSize_EPD_EXT3_B98   (uint32_t)(184320)
 
3- Set font mode

From header files or from external flash

  • Basic edition: Terminal font
  • Advanced edition: DejaVu font as header
  • Commercial edition: DejaVu font as either header or external SPI Flash
    Note
    USE_FONT_HEADER requires addFont()
    Font Manager requires USE_FONT_HEADER
    Warning
    8- and 16-bit MCUs may limit the size of the fonts. Use 32-bit MCUs for optimal performance.
#define USE_FONT_TERMINAL   1
 Use default Terminal fonts.
 
#define FONT_MODE   USE_FONT_TERMINAL
 Selected option.
 
5- Set SRAM memory

From internal MCU or external SPI

  • Basic edition: MCU internal SRAM
  • Commercial edition: MCU internal SRAM
  • Advanced edition: MCU internal or SPI external SRAM
#define USE_INTERNAL_MCU   1
 Use MCU internal.
 
#define SRAM_MODE   USE_INTERNAL_MCU
 Selected option.
 
6- Use virtual object

From hV_Screen_Virtual.h for extended compability

Note
Declare additional variables if USE_hV_SCREEN_SELF
Virtual object requires ~1 kB bytes.
  • Basic edition: self option
  • Advanced edition: virtual option
  • Commercial edition: self and virtual options
Recommended: USE_hV_SCREEN_VIRTUAL
Warning
Issues with virtual function on arm-none-eabi-g++ 4.9.3: use USE_hV_SCREEN_SELF instead.
#define USE_hV_SCREEN_SELF   2
 Do not use virtual object.
 
#define USE_hV_SCREEN   USE_hV_SCREEN_SELF
 Selected option.
 
7- Set touch mode

Only two screens are ready for touch

  • Basic edition: no touch
  • Advanced edition: iTC 2.71 BW and iTC 4.2 BW
  • Commercial edition: iTC 2.71 BW and iTC 4.2 BW
    Note
    Touch uses I2C and polling over interrupt
#define USE_TOUCH_NONE   0
 Do not use touch.
 
#define TOUCH_MODE   USE_TOUCH_NONE
 Selected option.
 
#define USE_HAPTICS_NONE   0
 8- Set haptic feedback mode More...
 
#define HAPTICS_MODE   USE_HAPTICS_NONE
 Selected option.
 
#define USE_EXPANDER_NONE   0
 9- Set GPIO expander mode More...
 
#define EXPANDER_MODE   USE_EXPANDER_NONE
 Selected option.
 
#define USE_STRING_OBJECT   1
 10- Set string mode More...
 
#define STRING_MODE   USE_STRING_OBJECT
 10- Set string mode More...
 
#define USE_NONE   0
 11- Storage mode More...
 
#define STORAGE_MODE   USE_NONE
 Selected options.
 

2- List of pre-configured boards

#define NOT_CONNECTED   (uint8_t)0xff
 Not connected pin.
 
const pins_t boardLaunchPad
 MSP430 and MSP432 LaunchPad configuration, tested. More...
 
const pins_t boardMSP430FR5994
 MSP430FR5994 LaunchPad with SD-card configuration, tested. More...
 
const pins_t boardCC1352
 CC1352 configuration, tested. More...
 
const pins_t boardLaunchPadGCU
 MSP5430FR5994 as GCU configuration, tested. More...
 
const pins_t boardRaspberryPiZeroB_RasPiArduino
 Raspberry Pi Zero, 2B, 3B, 4B configuration with RasPiArduino, tested. More...
 
const pins_t boardRaspberryPiPico_Arduino
 Raspberry Pi Pico Arduino mbed configuration, tested. More...
 
const pins_t boardRaspberryPiPico_RP2040
 Raspberry Pi Pico with default RP2040 configuration, tested. More...
 
const pins_t boardFeatherM0M4
 Feather M0 and M4 configuration, tested. More...
 
const pins_t boardArduinoZero
 Arduino Zero configuration, tested. More...
 
const pins_t boardNucleo64 = boardArduinoZero
 ST Nucleo 64, tested.
 
const pins_t boardESP32DevKitC
 Espressif ESP32-DevKitC. More...
 

Detailed Description

Configuration of the options for Pervasive Displays Library Suite.

Project Pervasive Displays Library Suite
Based on highView technology

1- List of supported Pervasive Displays screens 2- List of pre-configured boards 3- Font mode, internal MCU for basic edition 4- Maximum number of fonts 5- SRAM memory, internal MCU for basic edition 6- Use self for basic edition 7- Touch mode, not implemented 8- Haptic feedback mode, not implemented

  1. Set GPIO expander mode, not implemented
  2. String object for basic edition
  3. Set storage mode, not implemented
Author
Rei Vilo
Date
02 Feb 2022
Version
526
  • Basic edition: for hobbyists and for personal usage
    Creative Commons Attribution-NonCommercial-ShareAlike 4.0 Unported (CC BY-NC-SA 4.0)
See also
https://creativecommons.org/licenses/by-nc-sa/4.0/


Consider the advanced or commercial editions for professionals or organisations and for commercial usage

  • Advanced edition: for professionals or organisations, no commercial usage
    All rights reserved
  • Commercial edition: for professionals or organisations, commercial usage
    All rights reserved

Macro Definition Documentation

◆ eScreen_EPD_EXT3_154

#define eScreen_EPD_EXT3_154   (uint32_t)0x1500

reference xE2154CSxxx

  • Monochrome screens and default colour screens, global update

◆ eScreen_EPD_EXT3_154_0C

#define eScreen_EPD_EXT3_154_0C   (uint32_t)0x150C

reference xE2154CS0Cx

  • Specific monochrome screens, fast and partial update

◆ eScreen_EPD_EXT3_437_08

#define eScreen_EPD_EXT3_437_08   (uint32_t)0x4308

reference xE2437CS08x, previous type

  • Specific monochrome screens, previous type with fast update only

◆ eScreen_EPD_EXT3_581_08

#define eScreen_EPD_EXT3_581_08   (uint32_t)0x5808

reference xE2581CS08x, previous type

  • Specific medium screens, previous type, global update

◆ eScreen_EPD_EXT3_969_08

#define eScreen_EPD_EXT3_969_08   (uint32_t)0x9608

reference xE2969CS08x, previous type

  • Specific large screens, previous type, global update

◆ eScreen_EPD_EXT3_t

#define eScreen_EPD_EXT3_t   uint32_t

screen type

◆ MAX_FONT_SIZE

#define MAX_FONT_SIZE   4

4- Maximum number of fonts

With MCU Flash, based on available memory, check performed at compilation

  • USE_FONT_TERMINAL: 1..4
  • USE_FONT_HEADER: 1..64

With SPI Flash, based on the fonts previously uploaded

  • USE_FONT_FLASH: eg. 64

◆ STRING_MODE

#define STRING_MODE   USE_STRING_OBJECT

10- Set string mode

  • Basic edition: String object
  • Advanced edition: char array
  • Commercial edition: String object or char array

◆ USE_EXPANDER_NONE

#define USE_EXPANDER_NONE   0

9- Set GPIO expander mode

  • Basic edition: no expander
  • Advanced edition: PCF8574 or PCA9536
  • Commercial edition: PCF8574 or PCA9536 No I2C expander

◆ USE_HAPTICS_NONE

#define USE_HAPTICS_NONE   0

8- Set haptic feedback mode

  • Basic edition: no haptic feedback
  • Advanced edition: ERM or LRA
  • Commercial edition: ERM or LRA No motor

◆ USE_NONE

#define USE_NONE   0

11- Storage mode

  • Basic edition: none
  • Advanced edition: none
  • Commercial edition: option No storage

◆ USE_STRING_OBJECT

#define USE_STRING_OBJECT   1

10- Set string mode

  • Basic edition: String object
  • Advanced edition: char array
  • Commercial edition: String object or char array

Variable Documentation

◆ boardArduinoZero

const pins_t boardArduinoZero
Initial value:
=
{
.panelBusy = 4,
.panelDC = 5,
.panelReset = 6,
.flashCS = 7,
.panelCS = 8,
.panelCSS = 9,
.flashCSS = 10,
.touchReset = NOT_CONNECTED,
.touchInt = NOT_CONNECTED,
.cardCS = NOT_CONNECTED,
.cardDetect = NOT_CONNECTED,
}
#define NOT_CONNECTED
Not connected pin.
Definition: hV_Configuration.h:135

Arduino Zero configuration, tested.

Note
In case of use of SERCOM
#define SPI_CLOCK_PIN 13 ///< EXT3 pin 2 -> 13
#define SPI_CLOCK_MISO 11 ///< EXT3 pin 6 -> 11
#define SPI_CLOCK_MOSI 12 ///< EXT3 pin 7 -> 12

◆ boardCC1352

const pins_t boardCC1352
Initial value:
=
{
.panelBusy = 5,
.panelDC = 6,
.panelReset = 19,
.flashCS = 24,
.panelCS = 26,
.panelCSS = 37,
.flashCSS = 27,
.touchReset = NOT_CONNECTED,
.touchInt = NOT_CONNECTED,
.cardCS = NOT_CONNECTED,
.cardDetect = NOT_CONNECTED,
}

CC1352 configuration, tested.

◆ boardESP32DevKitC

const pins_t boardESP32DevKitC
Initial value:
=
{
.panelBusy = 27,
.panelDC = 26,
.panelReset = 25,
.flashCS = 33,
.panelCS = 32,
.panelCSS = 4,
.flashCSS = 0,
.touchReset = NOT_CONNECTED,
.touchInt = NOT_CONNECTED,
.cardCS = NOT_CONNECTED,
.cardDetect = NOT_CONNECTED,
}

Espressif ESP32-DevKitC.

Note
Numbers refer to GPIOs not pins

◆ boardFeatherM0M4

const pins_t boardFeatherM0M4
Initial value:
=
{
.panelBusy = 13,
.panelDC = 12,
.panelReset = 11,
.flashCS = 10,
.panelCS = 9,
.panelCSS = NOT_CONNECTED,
.flashCSS = NOT_CONNECTED,
.touchReset = NOT_CONNECTED,
.touchInt = NOT_CONNECTED,
.cardCS = NOT_CONNECTED,
.cardDetect = NOT_CONNECTED,
}

Feather M0 and M4 configuration, tested.

◆ boardLaunchPad

const pins_t boardLaunchPad
Initial value:
=
{
.panelBusy = 11,
.panelDC = 12,
.panelReset = 13,
.flashCS = 18,
.panelCS = 19,
.panelCSS = 39,
.flashCSS = 38,
.touchReset = NOT_CONNECTED,
.touchInt = NOT_CONNECTED,
.cardCS = NOT_CONNECTED,
.cardDetect = NOT_CONNECTED,
}

MSP430 and MSP432 LaunchPad configuration, tested.

◆ boardLaunchPadGCU

const pins_t boardLaunchPadGCU
Initial value:
=
{
.panelBusy = 28,
.panelDC = 19,
.panelReset = 30,
.flashCS = 18,
.panelCS = 19,
.panelCSS = 39,
.flashCSS = 38,
.touchReset = NOT_CONNECTED,
.touchInt = NOT_CONNECTED,
.cardCS = NOT_CONNECTED,
.cardDetect = NOT_CONNECTED,
}

MSP5430FR5994 as GCU configuration, tested.

◆ boardMSP430FR5994

const pins_t boardMSP430FR5994
Initial value:
=
{
.panelBusy = 11,
.panelDC = 12,
.panelReset = 13,
.flashCS = 18,
.panelCS = 19,
.panelCSS = 39,
.flashCSS = 38,
.touchReset = NOT_CONNECTED,
.touchInt = NOT_CONNECTED,
.cardCS = 47,
.cardDetect = 51
}

MSP430FR5994 LaunchPad with SD-card configuration, tested.

◆ boardRaspberryPiPico_Arduino

const pins_t boardRaspberryPiPico_Arduino
Initial value:
=
{
.panelBusy = 13,
.panelDC = 12,
.panelReset = 11,
.flashCS = 10,
.panelCS = 5,
.panelCSS = 14,
.flashCSS = 15,
.touchReset = NOT_CONNECTED,
.touchInt = NOT_CONNECTED,
.cardCS = NOT_CONNECTED,
.cardDetect = NOT_CONNECTED,
}

Raspberry Pi Pico Arduino mbed configuration, tested.

Warning
Not recommended
See also
https://github.com/arduino/ArduinoCore-mbed

◆ boardRaspberryPiPico_RP2040

const pins_t boardRaspberryPiPico_RP2040
Initial value:
=
{
.panelBusy = 13,
.panelDC = 12,
.panelReset = 11,
.flashCS = 10,
.panelCS = 17,
.panelCSS = 14,
.flashCSS = 15,
.touchReset = NOT_CONNECTED,
.touchInt = NOT_CONNECTED,
.cardCS = NOT_CONNECTED,
.cardDetect = NOT_CONNECTED,
}

Raspberry Pi Pico with default RP2040 configuration, tested.

Note
Numbers refer to GPIOs, not pins
See also
https://github.com/earlephilhower/arduino-pico

◆ boardRaspberryPiZeroB_RasPiArduino

const pins_t boardRaspberryPiZeroB_RasPiArduino
Initial value:
=
{
.panelBusy = 7,
.panelDC = 8,
.panelReset = 25,
.flashCS = 22,
.panelCS = 27,
.panelCSS = 23,
.flashCSS = 24,
.touchReset = NOT_CONNECTED,
.touchInt = NOT_CONNECTED,
.cardCS = NOT_CONNECTED,
.cardDetect = NOT_CONNECTED,
}

Raspberry Pi Zero, 2B, 3B, 4B configuration with RasPiArduino, tested.

See also
https://github.com/me-no-dev/RasPiArduino