This is a driver for the segment LCD found on the Silicon Labs EF32 Giant, Leopard and Wonder Gecko platforms. NOTE: This driver will not work with other platforms, because it contains EFM32-specific code.

Dependents:   EFM32 RDA5807M RDS Radio EMF32-Segment-Touch-Demo EMF32_ShowKey blinky_EFM32_Giant ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers segmentlcdconfig_stk_lg.h Source File

segmentlcdconfig_stk_lg.h

Go to the documentation of this file.
00001 /**************************************************************************//**
00002  * @file
00003  * @brief Segment LCD Config for the EFM32 Leopard Gecko STK (STK_3600)
00004  * @version 3.20.5
00005  ******************************************************************************
00006  * @section License
00007  * <b>(C) Copyright 2014 Silicon Labs, http://www.silabs.com</b>
00008  *******************************************************************************
00009  *
00010  * This file is licensensed under the Silabs License Agreement. See the file
00011  * "Silabs_License_Agreement.txt" for details. Before using this software for
00012  * any purpose, you must agree to the terms of that agreement.
00013  *
00014  ******************************************************************************/
00015 
00016 #ifndef __SEGMENTLCDCONFIG_H
00017 #define __SEGMENTLCDCONFIG_H
00018 
00019 #include "em_lcd.h"
00020 #include "PinNames.h"
00021 
00022 #ifdef __cplusplus
00023 extern "C" {
00024 #endif
00025 
00026 /** Range of symbols available on display */
00027 typedef enum {
00028     LCD_SYMBOL_GECKO,
00029     LCD_SYMBOL_ANT,
00030     LCD_SYMBOL_PAD0,
00031     LCD_SYMBOL_PAD1,
00032     LCD_SYMBOL_EFM32,
00033     LCD_SYMBOL_MINUS,
00034     LCD_SYMBOL_COL3,
00035     LCD_SYMBOL_COL5,
00036     LCD_SYMBOL_COL10,
00037     LCD_SYMBOL_DEGC,
00038     LCD_SYMBOL_DEGF,
00039     LCD_SYMBOL_DP2,
00040     LCD_SYMBOL_DP3,
00041     LCD_SYMBOL_DP4,
00042     LCD_SYMBOL_DP5,
00043     LCD_SYMBOL_DP6,
00044     LCD_SYMBOL_DP10,
00045 } lcdSymbol;
00046 
00047 #define LCD_SYMBOL_GECKO_COM  1
00048 #define LCD_SYMBOL_GECKO_SEG  12
00049 #define LCD_SYMBOL_ANT_COM  0
00050 #define LCD_SYMBOL_ANT_SEG  32
00051 #define LCD_SYMBOL_PAD0_COM  3
00052 #define LCD_SYMBOL_PAD0_SEG  39
00053 #define LCD_SYMBOL_PAD1_COM  2
00054 #define LCD_SYMBOL_PAD1_SEG  12
00055 #define LCD_SYMBOL_EFM32_COM  0
00056 #define LCD_SYMBOL_EFM32_SEG  28
00057 #define LCD_SYMBOL_MINUS_COM  3
00058 #define LCD_SYMBOL_MINUS_SEG  12
00059 #define LCD_SYMBOL_COL3_COM  4
00060 #define LCD_SYMBOL_COL3_SEG  12
00061 #define LCD_SYMBOL_COL5_COM  0
00062 #define LCD_SYMBOL_COL5_SEG  30
00063 #define LCD_SYMBOL_COL10_COM  5
00064 #define LCD_SYMBOL_COL10_SEG  39
00065 #define LCD_SYMBOL_DEGC_COM  0
00066 #define LCD_SYMBOL_DEGC_SEG  34
00067 #define LCD_SYMBOL_DEGF_COM  0
00068 #define LCD_SYMBOL_DEGF_SEG  35
00069 #define LCD_SYMBOL_DP2_COM  7
00070 #define LCD_SYMBOL_DP2_SEG  12
00071 #define LCD_SYMBOL_DP3_COM  5
00072 #define LCD_SYMBOL_DP3_SEG  12
00073 #define LCD_SYMBOL_DP4_COM  6
00074 #define LCD_SYMBOL_DP4_SEG  12
00075 #define LCD_SYMBOL_DP5_COM  7
00076 #define LCD_SYMBOL_DP5_SEG  29
00077 #define LCD_SYMBOL_DP6_COM  7
00078 #define LCD_SYMBOL_DP6_SEG  31
00079 #define LCD_SYMBOL_DP10_COM  4
00080 #define LCD_SYMBOL_DP10_SEG  39
00081 
00082 /* LCD Controller Prescaler (divide LFACLK / 64) */
00083 /* LFACLK_LCDpre = 512 Hz */
00084 /* Set FDIV=0, means 512/1 = 512 Hz */
00085 /* With octaplex mode, 512/16 => 32 Hz Frame Rate */
00086 #define LCD_CMU_CLK_PRE         cmuClkDiv_64
00087 #define LCD_CMU_CLK_DIV         cmuClkDiv_1
00088 
00089 #define LCD_BOOST_LEVEL         lcdVBoostLevel3
00090 
00091 
00092 #define LCD_INIT_DEF \
00093 { true,\
00094   lcdMuxOctaplex,\
00095   lcdBiasOneFourth,\
00096   lcdWaveLowPower,\
00097   lcdVLCDSelVDD, \
00098   lcdConConfVLCD }
00099 
00100 #define LCD_NUMBER_OFF() \
00101 do { \
00102   LCD_SegmentSetHigh(1, 0x00000078, 0x00000000); \
00103   LCD_SegmentSetHigh(2, 0x00000078, 0x00000000); \
00104   LCD_SegmentSetHigh(3, 0x00000078, 0x00000000); \
00105   LCD_SegmentSetHigh(4, 0x00000078, 0x00000000); \
00106   LCD_SegmentSetHigh(5, 0x00000078, 0x00000000); \
00107   LCD_SegmentSetHigh(6, 0x00000078, 0x00000000); \
00108   LCD_SegmentSetHigh(7, 0x00000078, 0x00000000); \
00109 } while (0)
00110 
00111 #define LCD_ALPHA_NUMBER_OFF() \
00112 do { \
00113   LCD_SegmentSetLow(7, 0x500FE000, 0x00000000);\
00114   LCD_SegmentSetLow(6, 0xF00FE000, 0x00000000);\
00115   LCD_SegmentSetLow(5, 0xF00FE000, 0x00000000);\
00116   LCD_SegmentSetLow(4, 0xF00FE000, 0x00000000);\
00117   LCD_SegmentSetLow(3, 0xF00FE000, 0x00000000);\
00118   LCD_SegmentSetLow(2, 0xF00FE000, 0x00000000);\
00119   LCD_SegmentSetLow(1, 0xF00FE000, 0x00000000);\
00120   LCD_SegmentSetLow(0, 0xA0000000, 0x00000000);\
00121   LCD_SegmentSetHigh(7, 0x00000007, 0x00000000);\
00122   LCD_SegmentSetHigh(6, 0x00000007, 0x00000000);\
00123   LCD_SegmentSetHigh(5, 0x00000007, 0x00000000);\
00124   LCD_SegmentSetHigh(4, 0x00000007, 0x00000000);\
00125   LCD_SegmentSetHigh(3, 0x00000007, 0x00000000);\
00126   LCD_SegmentSetHigh(2, 0x00000007, 0x00000000);\
00127   LCD_SegmentSetHigh(1, 0x00000007, 0x00000000);\
00128 } while(0)
00129 
00130 #define LCD_ALL_SEGMENTS_OFF() \
00131 do { \
00132   LCD_SegmentSetLow(0, 0xF00FF000, 0x00000000);\
00133   LCD_SegmentSetLow(1, 0xF00FF000, 0x00000000);\
00134   LCD_SegmentSetLow(2, 0xF00FF000, 0x00000000);\
00135   LCD_SegmentSetLow(3, 0xF00FF000, 0x00000000);\
00136   LCD_SegmentSetLow(4, 0xF00FF000, 0x00000000);\
00137   LCD_SegmentSetLow(5, 0xF00FF000, 0x00000000);\
00138   LCD_SegmentSetLow(6, 0xF00FF000, 0x00000000);\
00139   LCD_SegmentSetLow(7, 0xF00FF000, 0x00000000);\
00140   LCD_SegmentSetHigh(0, 0x000000FF, 0x00000000);\
00141   LCD_SegmentSetHigh(1, 0x000000FF, 0x00000000);\
00142   LCD_SegmentSetHigh(2, 0x000000FF, 0x00000000);\
00143   LCD_SegmentSetHigh(3, 0x000000FF, 0x00000000);\
00144   LCD_SegmentSetHigh(4, 0x000000FF, 0x00000000);\
00145   LCD_SegmentSetHigh(5, 0x000000FF, 0x00000000);\
00146   LCD_SegmentSetHigh(6, 0x000000FF, 0x00000000);\
00147   LCD_SegmentSetHigh(7, 0x000000FF, 0x00000000);\
00148 } while(0)
00149 
00150 #define LCD_ALL_SEGMENTS_ON() \
00151 do { \
00152   LCD_SegmentSetLow(0, 0xF00FF000, 0xFFFFFFFF);\
00153   LCD_SegmentSetLow(1, 0xF00FF000, 0xFFFFFFFF);\
00154   LCD_SegmentSetLow(2, 0xF00FF000, 0xFFFFFFFF);\
00155   LCD_SegmentSetLow(3, 0xF00FF000, 0xFFFFFFFF);\
00156   LCD_SegmentSetLow(4, 0xF00FF000, 0xFFFFFFFF);\
00157   LCD_SegmentSetLow(5, 0xF00FF000, 0xFFFFFFFF);\
00158   LCD_SegmentSetLow(6, 0xF00FF000, 0xFFFFFFFF);\
00159   LCD_SegmentSetLow(7, 0xF00FF000, 0xFFFFFFFF);\
00160   LCD_SegmentSetHigh(0, 0x000000FF, 0xFFFFFFFF);\
00161   LCD_SegmentSetHigh(1, 0x000000FF, 0xFFFFFFFF);\
00162   LCD_SegmentSetHigh(2, 0x000000FF, 0xFFFFFFFF);\
00163   LCD_SegmentSetHigh(3, 0x000000FF, 0xFFFFFFFF);\
00164   LCD_SegmentSetHigh(4, 0x000000FF, 0xFFFFFFFF);\
00165   LCD_SegmentSetHigh(5, 0x000000FF, 0xFFFFFFFF);\
00166   LCD_SegmentSetHigh(6, 0x000000FF, 0xFFFFFFFF);\
00167   LCD_SegmentSetHigh(7, 0x000000FF, 0xFFFFFFFF);\
00168 } while(0)
00169 
00170 #define LCD_SEGMENTS_ENABLE() \
00171 do { \
00172 LCD_SegmentRangeEnable(lcdSegment12_15, true);\
00173 LCD_SegmentRangeEnable(lcdSegment16_19, true);\
00174 LCD_SegmentRangeEnable(lcdSegment28_31, true);\
00175 LCD_SegmentRangeEnable(lcdSegment32_35, true);\
00176 LCD_SegmentRangeEnable(lcdSegment36_39, true);\
00177 } while(0)
00178 
00179 #define LCD_DISPLAY_ENABLE() \
00180 do { \
00181   ;\
00182 } while(0)
00183 
00184 #define EFM_DISPLAY_DEF {\
00185   .Text        = {\
00186     { /* 1 */\
00187       .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00188       .bit[0] = 13, .bit[1] = 14, .bit[2] = 14, .bit[3] = 14,\
00189       .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
00190       .bit[4] = 13, .bit[5] = 13, .bit[6] = 13, .bit[7] = 13,\
00191       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00192       .bit[8] = 14, .bit[9] = 14, .bit[10] = 14, .bit[11] = 14,\
00193       .com[12] = 5, .com[13] = 6,\
00194       .bit[12] = 13, .bit[13] = 13\
00195     },\
00196     { /* 2 */\
00197       .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00198       .bit[0] = 15, .bit[1] = 16, .bit[2] = 16, .bit[3] = 16,\
00199       .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
00200       .bit[4] = 15, .bit[5] = 15, .bit[6] = 15, .bit[7] = 15,\
00201       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00202       .bit[8] = 16, .bit[9] = 16, .bit[10] = 16, .bit[11] = 16,\
00203       .com[12] = 5, .com[13] = 6,\
00204       .bit[12] = 15, .bit[13] = 15\
00205     },\
00206     { /* 3 */\
00207       .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00208       .bit[0] = 17, .bit[1] = 18, .bit[2] = 18, .bit[3] = 18,\
00209       .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
00210       .bit[4] = 17, .bit[5] = 17, .bit[6] = 17, .bit[7] = 17,\
00211       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00212       .bit[8] = 18, .bit[9] = 18, .bit[10] = 18, .bit[11] = 18,\
00213       .com[12] = 5, .com[13] = 6,\
00214       .bit[12] = 17, .bit[13] = 17\
00215     },\
00216     { /* 4 */\
00217       .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00218       .bit[0] = 19, .bit[1] = 28, .bit[2] = 28, .bit[3] = 28,\
00219       .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
00220       .bit[4] = 19, .bit[5] = 19, .bit[6] = 19, .bit[7] = 19,\
00221       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00222       .bit[8] = 28, .bit[9] = 28, .bit[10] = 28, .bit[11] = 28,\
00223       .com[12] = 5, .com[13] = 6,\
00224       .bit[12] = 19, .bit[13] = 19\
00225     },\
00226     { /* 5 */\
00227       .com[0] = 0, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00228       .bit[0] = 29, .bit[1] = 30, .bit[2] = 30, .bit[3] = 30,\
00229       .com[4] = 6, .com[5] = 2, .com[6] = 3, .com[7] = 1,\
00230       .bit[4] = 29, .bit[5] = 29, .bit[6] = 29, .bit[7] = 29,\
00231       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00232       .bit[8] = 30, .bit[9] = 30, .bit[10] = 30, .bit[11] = 30,\
00233       .com[12] = 4, .com[13] = 5,\
00234       .bit[12] = 29, .bit[13] = 29\
00235     },\
00236     { /* 6 */\
00237       .com[0] = 0, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00238       .bit[0] = 31, .bit[1] = 32, .bit[2] = 32, .bit[3] = 32,\
00239       .com[4] = 6, .com[5] = 2, .com[6] = 3, .com[7] = 1,\
00240       .bit[4] = 31, .bit[5] = 31, .bit[6] = 31, .bit[7] = 31,\
00241       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00242       .bit[8] = 32, .bit[9] = 32, .bit[10] = 32, .bit[11] = 32,\
00243       .com[12] = 4, .com[13] = 5,\
00244       .bit[12] = 31, .bit[13] = 31\
00245     },\
00246     { /* 7 */\
00247       .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00248       .bit[0] = 33, .bit[1] = 34, .bit[2] = 34, .bit[3] = 34,\
00249       .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
00250       .bit[4] = 33, .bit[5] = 33, .bit[6] = 33, .bit[7] = 33,\
00251       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00252       .bit[8] = 34, .bit[9] = 34, .bit[10] = 34, .bit[11] = 34,\
00253       .com[12] = 5, .com[13] = 6,\
00254       .bit[12] = 33, .bit[13] = 33\
00255     },\
00256   },\
00257   .Number      = {\
00258     {\
00259       .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\
00260       .bit[0] = 35, .bit[1] = 35, .bit[2] = 35, .bit[3] = 35,\
00261       .com[4] = 3, .com[5] = 6, .com[6] = 4,\
00262       .bit[4] = 35, .bit[5] = 35, .bit[6] = 35,\
00263     },\
00264     {\
00265       .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\
00266       .bit[0] = 36, .bit[1] = 36, .bit[2] = 36, .bit[3] = 36,\
00267       .com[4] = 3, .com[5] = 6, .com[6] = 4,\
00268       .bit[4] = 36, .bit[5] = 36, .bit[6] = 36,\
00269     },\
00270     {\
00271       .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\
00272       .bit[0] = 37, .bit[1] = 37, .bit[2] = 37, .bit[3] = 37,\
00273       .com[4] = 3, .com[5] = 6, .com[6] = 4,\
00274       .bit[4] = 37, .bit[5] = 37, .bit[6] = 37,\
00275     },\
00276     {\
00277       .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\
00278       .bit[0] = 38, .bit[1] = 38, .bit[2] = 38, .bit[3] = 38,\
00279       .com[4] = 3, .com[5] = 6, .com[6] = 4,\
00280       .bit[4] = 38, .bit[5] = 38, .bit[6] = 38,\
00281     },\
00282   },\
00283   .EMode       = {\
00284     .com[0] = 0, .bit[0] = 39,\
00285     .com[1] = 1, .bit[1] = 39,\
00286     .com[2] = 7, .bit[2] = 39,\
00287     .com[3] = 2, .bit[3] = 39,\
00288     .com[4] = 6, .bit[4] = 39,\
00289   },\
00290   .ARing       = {\
00291     .com[0] = 0, .bit[0] = 19,\
00292     .com[1] = 0, .bit[1] = 18,\
00293     .com[2] = 0, .bit[2] = 17,\
00294     .com[3] = 0, .bit[3] = 16,\
00295     .com[4] = 0, .bit[4] = 15,\
00296     .com[5] = 0, .bit[5] = 14,\
00297     .com[6] = 0, .bit[6] = 13,\
00298     .com[7] = 0, .bit[7] = 12,\
00299   },\
00300   .Battery     = {\
00301     .com[0] = 0, .bit[0] = 33,\
00302     .com[1] = 0, .bit[1] = 37,\
00303     .com[2] = 0, .bit[2] = 36,\
00304     .com[3] = 0, .bit[3] = 38,\
00305   }\
00306 }
00307 
00308 static const PinName outPins[] = {
00309         /* SEG28..39 */
00310         PA7,    //LCD_SEG35
00311         PA8,    //LCD_SEG36
00312         PA9,    //LCD_SEG37
00313         PA10,   //LCD_SEG38
00314         PA11,   //LCD_SEG39
00315         PB0,    //LCD_SEG32
00316         PB1,    //LCD_SEG33
00317         PB2,    //LCD_SEG34
00318         PD9,    //LCD_SEG28
00319         PD10,   //LCD_SEG29
00320         PD11,   //LCD_SEG30
00321         PD12,   //LCD_SEG31
00322         /* SEG12..19 */
00323         PA0,    //LCD_SEG13
00324         PA1,    //LCD_SEG14
00325         PA2,    //LCD_SEG15
00326         PA3,    //LCD_SEG16
00327         PA4,    //LCD_SEG17
00328         PA5,    //LCD_SEG18
00329         PA6,    //LCD_SEG19
00330         PA15,   //LCD_SEG12
00331         /* COM4..7 */
00332         PB3,    //LCD_COM4
00333         PB4,    //LCD_COM5
00334         PB5,    //LCD_COM6
00335         PB6,    //LCD_COM7
00336         /* COM0..3 */
00337         PE4,    //LCD_COM0
00338         PE5,    //LCD_COM1
00339         PE6,    //LCD_COM2
00340         PE7     //LCD_COM3
00341 };
00342 
00343 #ifdef __cplusplus
00344 }
00345 #endif
00346 
00347 #endif