TITLE AUTHOR Version 1.
ii
Table of Contents Table of contents iii
Driving EInk Displays EInk Segmented Display Technology Electronic ink is made up of millions of tiny microcapsules, about the diameter of a human hair. Each microcapsule contains positively charged white particles and negatively charged black particles which are suspended in a clear fluid. When a positive or negative electric field is applied, corresponding particles move to the top of the microcapsule where they become visible to the user. This makes the surface appear white or black at that spot.
The Physical Layer: The physical layer consists of the actual pins that toggle voltages for each segment of the EInk display. This is done using the function SetOutput in the file rEInkDrive.c . The user should add more statements to this function in the already present format to extend functionality for the actual number of segments present.
updateRequest curDisplay nextDisplay Some of the important preprocessor definitions that may change according to your requirements are: SEG_DELAY NUM_FENCES PICKET_SHORT NUM_SEGMENTS TOP_PLANE USING_PICKET_FENCE USING_SLIDESHOWS USING_GLOBAL_UPDATES An important structure definition to look at: einkScreenDef Some important functions to look over are: initEInkHardware einkDriver Connecting the hardware to EInk displays EInk displays are usually terminated with stiffeners that can slide into FPC connectors.
Redefine the preprocessor definitions for PICKET_SHORT, NUM_FENCES, SEG_DELAY. Make sure that you are utilizing atleast one driving waveform by defining USING_PICKET_FENCE, USING_SLIDESHOWS or USING_GLOBAL_UPDATES. either Step 3: Testing: Causing an update Once Step Step 1: Defining the segments and Step 2: Positioning the driver function and delay have been completed, set some of the elements of the nextDisplay array to 1 and set variable updateRequest to 1.
Each zone can be viewed as consisting of one or multiple digits; where each digit can have one or mutliple segments. For e.g. As seen in Figure 3, Zone 0 has 1 digit with 9 segments per digit. Zone 6 consists of 1 digit and 4 segments for each digit. Use this information for filling the arrays in YRPDSKRL78EINK_Display.c Once the arrays and the hexadecimal encodings are filled in, use a function to set up the einkScreenDef structure and call a function in main to set it up.
Class Index Class List Here are the classes, structs, unions and interfaces with brief descriptions: einkScreenDef (Structure for holding organized information about the EInk display screen ) ....7 sw_flag_u (A union for accessing the switch states in either bit mode or byte mode (Not relevant to the driver) ) ..................................................................................................................................................
C:/Users/oraut/Documents/Workspace/Renesas/EInkDriverFinal/YLPDSKRL78EINK/user_src/presenta tion/YRPDSKRL78EINK_Display.h (Description:This file is the header to the screen definition file ) ................................................................................................................................................................19 Class Documentation einkScreenDef Struct Reference Structure for holding organized information about the EInk display screen. #include
unsigned char* einkScreenDef::hexEncodingMap[NUM_MAPPINGS] Hexadecimal Encoding for displaying a digit (7-8 bit) unsigned char einkScreenDef::numHexEncodingsAvailable Identify the number of encodings available(used during switching the type) unsigned char einkScreenDef::numSegments Used to specify number of segments used by the display unsigned char einkScreenDef::numZones Number of displayZones available on screen unsigned char einkScreenDef::screenName[6] Used to identify screen name unsigned char* e
Access information bitwise using a struct. Detailed Description A union for accessing the switch states in either bit mode or byte mode (Not relevant to the driver) The documentation for this union was generated from the following file: C:/Users/oraut/Documents/Workspace/Renesas/EInkDriverFinal/YLPDSKRL78EINK/user_src/application /switches.h tmr_flag_u Union Reference A union to access timer information in either bitwise or byte mode (Only delayFsm may be related to timing). #include
#include #include #include #include #include #include #include "r_cg_macrodriver.h" "rEInkInclude.h" "rPresentation.h" "YRPDSKRL78EINK_Display.h" "eink_demos.h" "switches.h" "application.h" Functions void application (void) The function called from main to do all the tasks. Detailed Description Description: This file contains the application. Copyright 2012 BNS Solutions.
A variable that indicates that we are updating the display. uint8_t updateType The display waveform to use to update the display. uint8_t einkNextDir Next direction of drive. 0 is forward. 1 is reverse. (when driving the lines directly from the MCU pins) Detailed Description Description: This file contains all the externalally defined variables that may be needed through out the project. Filename: extern.h Creation Date: October 31, 2012 Author: O.
Variables const uint8_t allZeros [NUM_SEGMENTS] = {0} An array of all Zeroes (used to set pin voltage to 0) uint8_t changingState = 0 A variable that indicates that we are updating the display. uint8_t updateNum A simple counter to make sure that a global update is done every few physical updates to the screen. static uint8_t curState A variable that indicates the state of the FSM. uint8_t nextState The next state of the FSM. static uint8_t updateStep = 0 The current step in toggling the waveforms.
Defines #define USING_PICKET_FENCE Defining this preprocessor definition will compile the code for using picket fence waveform. #define USING_SLIDESHOWS Defining this preprocessor definition will compile the code for using slideshow waveform. #define USING_GLOBAL_UPDATES Defining this preprocessor definition will compile the code for using global update waveform. #define TRUE (1) Compiler independent specification of TRUE. #define FALSE (0) Compiler independent specification of FALSE.
void initEInkHardware (void) Initializes the required peripherals; i.e. Output pin segments and peripheral timer. This function is part of the Hardware abstraction layer. Detailed Description Description:This file is the header file for the driver layer of the EInk driver. Filename: rEInkPresentation.h Creation Date: October 31, 2012 Author: O.
Reason: --------------- C:/Users/oraut/Documents/Workspace/Renesas/EInkDriverFinal/YLPD SKRL78EINK/user_src/presentation/rPresentation.c File Reference Description:This file contains the source code for the state machine to drive an EInk segmented display. #include #include #include #include "rEInkInclude.h" "rPresentation.h"
C:/Users/oraut/Documents/Workspace/Renesas/EInkDriverFinal/YLPD SKRL78EINK/user_src/presentation/rPresentation.h File Reference Description:This file is the header file for the presentation layer of the EInk driver. Calling the function displayInZone is not necessary and the driver is independent of the same. Classes struct einkScreenDef Structure for holding organized information about the EInk display screen.
REVISION HISTORY: Modified: ------Date: ----------Reason: --------------- Function Documentation uint8_t displayInZone (uint8_t zone, uint8_t * str, uint8_t count, struct einkScreenDef * thisScreen) This function is part of the presentation layer for the EInk Segmented display driver. It is responsible for setting up the next segments to turn ON or OFF by using screen definitions and information.
Detailed Description Description:This file contains the information that the presentation layer function can use to set up the array nextDisplay. Copyright 2012 BNS Solutions. The computer program contained herein is the property of BNS Solutions and may not be copied in whole or in part without prior written authorization from BNS Solutions. Filename: YRPDSKRL78EINK_Display.c Creation Date: October 29, 2012 Author: O.
0x40, 0xC0, 0x20, 0x60, 0xA0, 0xE0, } Hexadecimal encoding look up table 03 const uint8_t hexEncoding04[] Initial value: { 0x00, 0x80, } Hexadecimal encoding look up table 04 uint8_t hexEncodingInfo[] Initial value: { 7, 2, 3, 1, } Type of hexadecimal encoding uint8_t segmentInfo[] Segment information uint8_t segmentsPerDigit[] Initial value: { 7, 2, 2, 3, 1, 1, 1, 1, } Segment information per digit C:/Users/oraut/Documents/Workspace/Renesas/EInkDriverFinal/YLPD SKRL78EINK/user_src/presentation/YRPDSK
Variables struct einkScreenDef einkScr001 Detailed Description Description:This file is the header to the screen definition file. Filename: YRPDSKRL78EINK_Display.h Creation Date: October 31, 2012 Author: O.