TI-RTOS Drivers  tidrivers_full_2_20_00_08
LCDDogm1286.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
255 #ifndef ti_drivers_lcd_LCDDogm1286__include
256 #define ti_drivers_lcd_LCDDogm1286__include
257 
258 #ifdef __cplusplus
259 extern "C" {
260 #endif
261 
262 #include <xdc/std.h>
263 #include <ti/drivers/SPI.h>
264 
265 #define ti_sysbios_family_arm_m3_Hwi__nolocalnames
266 #include <ti/sysbios/family/arm/m3/Hwi.h>
267 #include <ti/sysbios/knl/Semaphore.h>
268 
270 #define LCD_PIXELS 8192
271 
272 #define LCD_BYTES 1024
273 
274 #define LCD_COLS 128
275 
276 #define LCD_X_MIN 0
277 
278 #define LCD_X_MAX (LCD_COLS-1)
279 
280 #define LCD_ROWS 64
281 
282 #define LCD_Y_MIN 0
283 
284 #define LCD_Y_MAX (LCD_ROWS-1)
285 
286 #define LCD_PAGES 8
287 
288 #define LCD_PAGE_ROWS 8
289 
290 #define LCD_CHAR_WIDTH 6
291 
292 #define LCD_FONT_WIDTH 5
293 
294 
298 typedef struct LCD_Config *LCD_Handle;
299 
307 typedef enum LCD_Align
308 {
312 } LCD_Align;
313 
321 typedef enum LCD_Page
322 {
332 } LCD_Page;
333 
341 typedef enum LCD_X_Limit
342 {
345 } LCD_X_Limit;
346 
354 typedef enum LCD_Y_Limit
355 {
358 } LCD_Y_Limit;
359 
367 typedef struct LCD_Params
368 {
369  unsigned int lcdWriteTimeout;
371  /* SPI parameters */
372  unsigned int spiBitRate;
374 } LCD_Params;
375 
380 typedef struct LCD_Command
381 {
383  char adcSet;
386  char lcdBias;
395  char displayEn;
396  char setPage;
397  char columnHi;
398  char columnLo;
399 } LCD_Command;
400 
412 typedef struct LCD_Buffer
413 {
414  char *pcBuffer;
415  unsigned int bufSize;
416  Semaphore_Struct bufMutex;
417 } LCD_Buffer;
418 
424 typedef struct LCD_Object
425 {
426  /* LCD control variables */
427  Bool isOpen; /* Has the obj been opened? */
428  SPI_Handle spiHandle; /* SPI handle used by the LCD */
429  unsigned int lcdWriteTimeout; /* Timeout for write semaphore */
430  Semaphore_Struct lcdMutex; /* Semaphore associated with the lcd */
431  LCD_Buffer *lcdBuffers; /* Pointer to the array
432  with lcd buffers */
433  uint8_t nBuffers; /* number of buffers availible */
434 } LCD_Object;
435 
450 typedef struct LCD_HWAttrs
451 {
454  /* LCD mode pin */
455  uint8_t lcdModePin;
456  /* LCD reset pin */
457  uint8_t lcdResetPin;
458  /* LCD CSn pin */
459  uint8_t lcdCsnPin;
460  /* Logical peripheral number indexed
461  into the SPI_config table */
462  uint8_t spiIndex;
463 
464 } LCD_HWAttrs;
465 
471 typedef struct LCD_Config
472 {
477 } LCD_Config;
478 
487 static const LCD_Command LCD_initCmd =
488 {
489  0x40, /*Display start line 0 */
490  0xA1, /*ADC reverse, 6 oclock viewing direction */
491  0xC0, /*Normal COM0...COM63 */
492  0xA6, /*Display normal, not mirrored */
493  0xA2, /*Set Bias 1/9 (Duty 1/65) */
494  0x2F, /*Booster, Regulator and Follower On */
495  0xF8, /*Set internal Booster to 4x */
496  0x00, /* */
497  0x27, /*Contrast set */
498  0x81, /* */
499  0x16, /* <- use value from LCD-MODULE .doc guide*/
500  /* for better contrast (not 0x10) */
501  0xAC, /*No indicator */
502  0x00, /* */
503  0xAF, /*Display on */
504  0xB0, /*Set Page 0 */
505  0x10, /*High-Nibble of column address */
506  0x00 /*Low-Nibble of column address */
507 };
508 
520 extern void LCD_close(LCD_Handle handle);
521 
530 extern void LCD_init(void);
531 
551 extern LCD_Handle LCD_open(LCD_Buffer *buffers, uint8_t nBuffers, LCD_Params *params);
552 
567 extern void LCD_Params_init(LCD_Params *params);
568 
596 extern void LCD_writeLine(LCD_Handle handle, unsigned int bufIndex, char *str, unsigned int uiValue, unsigned char ucFormat, unsigned char ucLine);
597 
612 extern void LCD_update(LCD_Handle handle, unsigned int bufIndex);
613 
650 extern void LCD_updatePart(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo,
651  LCD_Page iPageFrom, LCD_Page iPageTo);
652 
667 extern void LCD_bufferClear(LCD_Handle handle, unsigned int bufIndex);
668 
696 extern void LCD_bufferClearPage(LCD_Handle handle, unsigned int bufIndex, LCD_Page iPage);
697 
734 extern void LCD_bufferClearPart(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo,
735  LCD_Page iPageFrom, LCD_Page iPageTo);
736 
762 extern void LCD_bufferInvert(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucYFrom,
763  unsigned char ucXTo, unsigned char ucYTo);
764 
797 extern void LCD_bufferInvertPage(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo,
798  LCD_Page iPage);
799 
830 extern void LCD_bufferPrintString(LCD_Handle handle, unsigned int bufIndex, const char *pcStr, unsigned char ucX,
831  LCD_Page iPage);
832 
869 extern void LCD_bufferPrintStringAligned(LCD_Handle handle, unsigned int bufIndex, const char *pcStr,
870  LCD_Align iAlignment, LCD_Page iPage);
871 
901 extern void LCD_bufferPrintInt(LCD_Handle handle, unsigned int bufIndex, int i32Number, unsigned char ucX,
902  LCD_Page iPage);
903 
939 extern void LCD_bufferPrintIntAligned(LCD_Handle handle, unsigned int bufIndex, int i32Number,
940  LCD_Align iAlignment, LCD_Page iPage);
941 
978 extern void LCD_bufferPrintFloat(LCD_Handle handle, unsigned int bufIndex, float fNumber, unsigned char ucDecimals,
979  unsigned char ucX, LCD_Page iPage);
980 
1019 extern void LCD_bufferPrintFloatAligned(LCD_Handle handle, unsigned int bufIndex, float fNumber, unsigned char ucDecimals,
1020  LCD_Align iAlignment, LCD_Page iPage);
1021 
1048 extern void LCD_bufferSetLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucYFrom,
1049  unsigned char ucXTo, unsigned char ucYTo);
1050 
1077 extern void LCD_bufferClearLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucYFrom,
1078  unsigned char ucXTo, unsigned char ucYTo);
1079 
1103 extern void LCD_bufferSetHLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo,
1104  unsigned char ucY);
1105 
1129 extern void LCD_bufferClearHLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom,
1130  unsigned char ucXTo, unsigned char ucY);
1131 
1155 extern void LCD_bufferSetVLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucYFrom,
1156  unsigned char ucYTo);
1157 
1181 extern void LCD_bufferClearVLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucYFrom,
1182  unsigned char ucYTo);
1183 
1209 extern void LCD_bufferHArrow(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, unsigned char ucY);
1210 
1236 extern void LCD_bufferVArrow(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucYFrom, unsigned char ucYTo);
1237 
1258 extern void LCD_bufferSetPx(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucY);
1259 
1279 extern void LCD_bufferClearPx(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucY);
1280 
1300 extern void LCD_bufferCopy(LCD_Handle handle, unsigned int fromBufIndex, unsigned int toBufIndex);
1301 
1316 extern void LCD_setContrast(LCD_Handle handle, unsigned char ucContrast);
1317 
1318 /* Do not interfere with the app if they include the family Hwi module */
1319 #undef ti_sysbios_family_arm_m3_Hwi__nolocalnames
1320 
1321 #ifdef __cplusplus
1322 }
1323 #endif
1324 
1325 #endif /* ti_drivers_lcd_LCDDogm1286__include */
char displayStartLine
Definition: LCDDogm1286.h:382
LCD_Command const * LCD_initCmd
Definition: LCDDogm1286.h:453
void LCD_bufferInvertPage(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, LCD_Page iPage)
This function inverts a range of columns in the display buffer on a specified page (for example...
void LCD_bufferClearPage(LCD_Handle handle, unsigned int bufIndex, LCD_Page iPage)
This function clears the page specified by iPage in the given buffer.
void LCD_Params_init(LCD_Params *params)
Function to initialize the LCD_Params struct to its defaults.
char setPage
Definition: LCDDogm1286.h:396
void LCD_writeLine(LCD_Handle handle, unsigned int bufIndex, char *str, unsigned int uiValue, unsigned char ucFormat, unsigned char ucLine)
Function that writes a string and value to a buffer and sends it to the LCD display. The written page is being cleared before it is written to.
void LCD_bufferPrintString(LCD_Handle handle, unsigned int bufIndex, const char *pcStr, unsigned char ucX, LCD_Page iPage)
Function that writes a string to the specified buffer.
void LCD_bufferCopy(LCD_Handle handle, unsigned int fromBufIndex, unsigned int toBufIndex)
This function copies the content of fromBufIndex to toBufIndex.
Definition: LCDDogm1286.h:311
unsigned int bufSize
Definition: LCDDogm1286.h:415
char contrastSet1
Definition: LCDDogm1286.h:391
void LCD_bufferClearVLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucYFrom, unsigned char ucYTo)
This function clears a vertical line from (ucX,ucYFrom) to (ucX,ucYTo) from the buffer specified...
void LCD_bufferSetPx(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucY)
This function sets a pixel on (ucX,ucY).
SPI driver interface.
void LCD_bufferClear(LCD_Handle handle, unsigned int bufIndex)
Function that empties the specified LCD buffer.
struct LCD_Config LCD_Config
The LCD_Config structure contains a set of pointers used to characterize the LCD driver implementatio...
LCD_Align
LCD alignment enum.
Definition: LCDDogm1286.h:307
void LCD_bufferPrintFloat(LCD_Handle handle, unsigned int bufIndex, float fNumber, unsigned char ucDecimals, unsigned char ucX, LCD_Page iPage)
This function writes a number of data type float to the given buffer at a specified column and page...
uint8_t spiIndex
Definition: LCDDogm1286.h:462
char adcSet
Definition: LCDDogm1286.h:383
struct LCD_Params LCD_Params
LCD Parameters are used to with the LCD_open() call. Default values for these parameters are set usin...
LCD Object.
Definition: LCDDogm1286.h:424
unsigned int lcdWriteTimeout
Definition: LCDDogm1286.h:429
struct LCD_HWAttrs LCD_HWAttrs
LCD Hardware attributes.
char columnLo
Definition: LCDDogm1286.h:398
LCD_Buffer used to store data to be printed on the LCD display.
Definition: LCDDogm1286.h:412
char staticIndicator1
Definition: LCDDogm1286.h:394
Definition: LCDDogm1286.h:343
void LCD_bufferClearHLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, unsigned char ucY)
This function clears a horizontal line from (ucXFrom,ucY) to (ucXTo,ucY) from the specified buffer...
struct LCD_Object LCD_Object
LCD Object.
void LCD_bufferPrintIntAligned(LCD_Handle handle, unsigned int bufIndex, int i32Number, LCD_Align iAlignment, LCD_Page iPage)
This function writes an integer to the given buffer as specified by the iAlignment argument...
void LCD_bufferSetLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucYFrom, unsigned char ucXTo, unsigned char ucYTo)
This function draws a line in the specified buffer from (ucXFrom,ucYFrom) to (ucXTo,ucYTo). The function uses Bresenham's line algorithm.
Definition: LCDDogm1286.h:309
SPI Global configuration.
Definition: SPI.h:436
uint8_t lcdCsnPin
Definition: LCDDogm1286.h:459
LCD_Page
LCD page enum.
Definition: LCDDogm1286.h:321
#define LCD_ROWS
Definition: LCDDogm1286.h:280
SPI_FrameFormat spiFrameFormat
Definition: LCDDogm1286.h:373
void LCD_close(LCD_Handle handle)
Function to close the LCD instance specified by the LCD handle.
void LCD_bufferClearLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucYFrom, unsigned char ucXTo, unsigned char ucYTo)
This function clears a line in the specified buffer from (ucXFrom,ucYFrom) to (ucXTo,ucYTo). The function uses Bresenham's line algorithm.
Definition: LCDDogm1286.h:324
LCD Parameters are used to with the LCD_open() call. Default values for these parameters are set usin...
Definition: LCDDogm1286.h:367
The LCD_Config structure contains a set of pointers used to characterize the LCD driver implementatio...
Definition: LCDDogm1286.h:471
LCD_Handle LCD_open(LCD_Buffer *buffers, uint8_t nBuffers, LCD_Params *params)
Function to set up the DOGM128W-6 LCD display.
struct LCD_Buffer LCD_Buffer
LCD_Buffer used to store data to be printed on the LCD display.
void LCD_init(void)
This function initializes the LCD driver module.
void LCD_bufferPrintFloatAligned(LCD_Handle handle, unsigned int bufIndex, float fNumber, unsigned char ucDecimals, LCD_Align iAlignment, LCD_Page iPage)
This function writes a float number to the given buffer as specified by the iAlignment argument...
#define LCD_COLS
Definition: LCDDogm1286.h:274
void LCD_bufferPrintInt(LCD_Handle handle, unsigned int bufIndex, int i32Number, unsigned char ucX, LCD_Page iPage)
Function that writes an integer to the specified buffer.
LCD_X_Limit
LCD x-axis enum.
Definition: LCDDogm1286.h:341
Definition: LCDDogm1286.h:326
void LCD_bufferPrintStringAligned(LCD_Handle handle, unsigned int bufIndex, const char *pcStr, LCD_Align iAlignment, LCD_Page iPage)
This function writes a string to the given buffer specified by the iAlignment argument.
char contrastSet2
Definition: LCDDogm1286.h:392
char columnHi
Definition: LCDDogm1286.h:397
void LCD_bufferClearPx(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucY)
This function clears the pixel at (ucX,ucY).
Bool isOpen
Definition: LCDDogm1286.h:427
uint8_t nBuffers
Definition: LCDDogm1286.h:433
Definition: LCDDogm1286.h:329
void LCD_bufferClearPart(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, LCD_Page iPageFrom, LCD_Page iPageTo)
This function clears the pixels in a given piece of a page. Resolution is given in coulmns [0–127] a...
uint8_t lcdModePin
Definition: LCDDogm1286.h:455
LCD Hardware attributes.
Definition: LCDDogm1286.h:450
Definition: LCDDogm1286.h:325
char staticIndicator0
Definition: LCDDogm1286.h:393
unsigned int lcdWriteTimeout
Definition: LCDDogm1286.h:369
Definition: LCDDogm1286.h:330
struct LCD_Config * LCD_Handle
A handle that is returned from a LCD_open() call.
Definition: LCDDogm1286.h:298
char outputMode
Definition: LCDDogm1286.h:384
struct LCD_Command LCD_Command
Format of LCD commands used by the LCD controller.
char contrastSet0
Definition: LCDDogm1286.h:390
uint8_t lcdResetPin
Definition: LCDDogm1286.h:457
Definition: LCDDogm1286.h:310
LCD_Buffer * lcdBuffers
Definition: LCDDogm1286.h:431
char displayType
Definition: LCDDogm1286.h:385
void LCD_bufferVArrow(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucYFrom, unsigned char ucYTo)
This function draws a vertical arrow from (ucX,ucYFrom) to (ucX,ucYTo) to the buffer specified...
void LCD_update(LCD_Handle handle, unsigned int bufIndex)
Function that writes the specified buffer to the LCD display.
char lcdBias
Definition: LCDDogm1286.h:386
void LCD_bufferSetVLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucX, unsigned char ucYFrom, unsigned char ucYTo)
This function draws a vertical line from (ucX,ucYFrom) to (ucX,ucYTo) into the specified buffer...
char boosterRadio1
Definition: LCDDogm1286.h:389
void LCD_bufferInvert(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucYFrom, unsigned char ucXTo, unsigned char ucYTo)
This function inverts the pixels (bits) in a given region of the specified buffer.
Definition: LCDDogm1286.h:344
void LCD_updatePart(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, LCD_Page iPageFrom, LCD_Page iPageTo)
Function that sends the specified part of the given buffer to the corresponding part on the LCD...
Definition: LCDDogm1286.h:357
LCD_Object * object
Definition: LCDDogm1286.h:474
Definition: LCDDogm1286.h:328
char displayEn
Definition: LCDDogm1286.h:395
Definition: LCDDogm1286.h:356
char * pcBuffer
Definition: LCDDogm1286.h:414
Format of LCD commands used by the LCD controller.
Definition: LCDDogm1286.h:380
char powerControl
Definition: LCDDogm1286.h:387
void LCD_bufferSetHLine(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, unsigned char ucY)
This function draws a horizontal line from (ucXFrom,ucY) to (ucXTo,ucY) into the specified buffer...
void LCD_bufferHArrow(LCD_Handle handle, unsigned int bufIndex, unsigned char ucXFrom, unsigned char ucXTo, unsigned char ucY)
This function draws a horizontal arrow from (ucXFrom,ucY) to (ucXTo,ucY) to buffer specified...
Definition: LCDDogm1286.h:323
SPI_Handle spiHandle
Definition: LCDDogm1286.h:428
Semaphore_Struct bufMutex
Definition: LCDDogm1286.h:416
void LCD_setContrast(LCD_Handle handle, unsigned char ucContrast)
This Function sets the LCD contrast.
Semaphore_Struct lcdMutex
Definition: LCDDogm1286.h:430
char boosterRadio0
Definition: LCDDogm1286.h:388
unsigned int spiBitRate
Definition: LCDDogm1286.h:372
SPI_FrameFormat
Definitions for various SPI data frame formats.
Definition: SPI.h:297
Definition: LCDDogm1286.h:331
Definition: LCDDogm1286.h:327
LCD_HWAttrs const * hwAttrs
Definition: LCDDogm1286.h:476
LCD_Y_Limit
LCD y-axis enum.
Definition: LCDDogm1286.h:354
Copyright 2016, Texas Instruments Incorporated