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_g.h Source File

segmentlcdconfig_stk_g.h

Go to the documentation of this file.
00001 /**************************************************************************//**
00002  * @file
00003  * @brief Segment LCD Config for the EFM32 Gecko STK (G8xx_STK)
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 
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif
00024 
00025 /** Range of symbols available on display */
00026 typedef enum
00027 {
00028   LCD_SYMBOL_GECKO,
00029   LCD_SYMBOL_ANT,
00030   LCD_SYMBOL_PAD0,
00031   LCD_SYMBOL_PAD1,
00032   LCD_SYMBOL_AM,
00033   LCD_SYMBOL_PM,
00034   LCD_SYMBOL_EFM32,
00035   LCD_SYMBOL_MINUS,
00036   LCD_SYMBOL_COL3,
00037   LCD_SYMBOL_COL5,
00038   LCD_SYMBOL_COL10,
00039   LCD_SYMBOL_DEGC,
00040   LCD_SYMBOL_DEGF,
00041   LCD_SYMBOL_MICROAMP,
00042   LCD_SYMBOL_MILLIAMP,
00043   LCD_SYMBOL_DP6,
00044   LCD_SYMBOL_DP10,
00045 } lcdSymbol;
00046 
00047 
00048 #define LCD_SYMBOL_GECKO_COM  3
00049 #define LCD_SYMBOL_GECKO_SEG  8
00050 #define LCD_SYMBOL_ANT_COM  3
00051 #define LCD_SYMBOL_ANT_SEG  1
00052 #define LCD_SYMBOL_PAD0_COM  1
00053 #define LCD_SYMBOL_PAD0_SEG  8
00054 #define LCD_SYMBOL_PAD1_COM  2
00055 #define LCD_SYMBOL_PAD1_SEG  8
00056 #define LCD_SYMBOL_AM_COM  0
00057 #define LCD_SYMBOL_AM_SEG  32
00058 #define LCD_SYMBOL_PM_COM  0
00059 #define LCD_SYMBOL_PM_SEG  35
00060 #define LCD_SYMBOL_EFM32_COM  0
00061 #define LCD_SYMBOL_EFM32_SEG  8
00062 #define LCD_SYMBOL_MINUS_COM  0
00063 #define LCD_SYMBOL_MINUS_SEG  9
00064 #define LCD_SYMBOL_COL3_COM  0
00065 #define LCD_SYMBOL_COL3_SEG  16
00066 #define LCD_SYMBOL_COL5_COM  0
00067 #define LCD_SYMBOL_COL5_SEG  24
00068 #define LCD_SYMBOL_COL10_COM  0
00069 #define LCD_SYMBOL_COL10_SEG  39
00070 #define LCD_SYMBOL_DEGC_COM  0
00071 #define LCD_SYMBOL_DEGC_SEG  34
00072 #define LCD_SYMBOL_DEGF_COM  1
00073 #define LCD_SYMBOL_DEGF_SEG  34
00074 #define LCD_SYMBOL_MICROAMP_COM  2
00075 #define LCD_SYMBOL_MICROAMP_SEG  34
00076 #define LCD_SYMBOL_MILLIAMP_COM  3
00077 #define LCD_SYMBOL_MILLIAMP_SEG  34
00078 #define LCD_SYMBOL_DP6_COM  0
00079 #define LCD_SYMBOL_DP6_SEG  21
00080 #define LCD_SYMBOL_DP10_COM  0
00081 #define LCD_SYMBOL_DP10_SEG  37
00082 
00083 /* LCD Controller Prescaler (divide by 128) */
00084 /* CLKlcd = 256 Hz */
00085 #define LCD_CMU_CLK_PRE         cmuClkDiv_128
00086 #define LCD_CMU_CLK_DIV         0
00087 
00088 #define LCD_BOOST_LEVEL         lcdVBoostLevel0
00089 
00090 #define LCD_INIT_DEF \
00091 { true,\
00092   lcdMuxQuadruplex,\
00093   lcdBiasOneThird,\
00094   lcdWaveLowPower,\
00095   lcdVLCDSelVDD,\
00096   lcdConConfVLCD }
00097 
00098 #define LCD_NUMBER_OFF() \
00099 do { \
00100   LCD_SegmentSetLow(0, 0x80000000, 0x00000000);\
00101   LCD_SegmentSetLow(1, 0x80000000, 0x00000000);\
00102   LCD_SegmentSetLow(2, 0x80000000, 0x00000000);\
00103   LCD_SegmentSetLow(3, 0x80000000, 0x00000000);\
00104   LCD_SegmentSetHigh(0, 0x52, 0x00000000);\
00105   LCD_SegmentSetHigh(1, 0xFB, 0x00000000);\
00106   LCD_SegmentSetHigh(2, 0xFB, 0x00000000);\
00107   LCD_SegmentSetHigh(3, 0xFB, 0x00000000);\
00108 } while (0)
00109 
00110 #define LCD_ALPHA_NUMBER_OFF() \
00111 do { \
00112   LCD_SegmentSetLow(0, 0x7ECCCC00, 0x00000000);\
00113   LCD_SegmentSetLow(1, 0x7FFFFEFC, 0x00000000);\
00114   LCD_SegmentSetLow(2, 0x7FFFFEFC, 0x00000000);\
00115   LCD_SegmentSetLow(3, 0x7FFFFEFC, 0x00000000);\
00116 } while(0)
00117 
00118 #define LCD_ALL_SEGMENTS_OFF() \
00119 do { \
00120   LCD_SegmentSetLow(0, 0xFFFFFFFF, 0x00000000);\
00121   LCD_SegmentSetLow(1, 0xFFFFFFFF, 0x00000000);\
00122   LCD_SegmentSetLow(2, 0xFFFFFFFF, 0x00000000);\
00123   LCD_SegmentSetLow(3, 0xFFFFFFFF, 0x00000000);\
00124   LCD_SegmentSetHigh(0, 0xFF, 0x00000000);\
00125   LCD_SegmentSetHigh(1, 0xFF, 0x00000000);\
00126   LCD_SegmentSetHigh(2, 0xFF, 0x00000000);\
00127   LCD_SegmentSetHigh(3, 0xFF, 0x00000000);\
00128 } while(0)
00129 
00130 #define LCD_ALL_SEGMENTS_ON() \
00131 do { \
00132   LCD_SegmentSetLow(0, 0xFFFFFFFF, 0xFFFFFFFF);\
00133   LCD_SegmentSetLow(1, 0xFFFFFFFF, 0xFFFFFFFF);\
00134   LCD_SegmentSetLow(2, 0xFFFFFFFF, 0xFFFFFFFF);\
00135   LCD_SegmentSetLow(3, 0xFFFFFFFF, 0xFFFFFFFF);\
00136   LCD_SegmentSetHigh(0, 0xFF, 0xFFFFFFFF);\
00137   LCD_SegmentSetHigh(1, 0xFF, 0xFFFFFFFF);\
00138   LCD_SegmentSetHigh(2, 0xFF, 0xFFFFFFFF);\
00139   LCD_SegmentSetHigh(3, 0xFF, 0xFFFFFFFF);\
00140 } while(0)
00141 
00142 #define LCD_SEGMENTS_ENABLE() \
00143 do { \
00144   LCD_SegmentRangeEnable(lcdSegmentAll, true);\
00145 } while(0)
00146 
00147 #define LCD_DISPLAY_ENABLE() \
00148 do { \
00149   ;\
00150 } while(0)
00151 
00152 #define EFM_DISPLAY_DEF {\
00153   .Text        = {\
00154     { /* 1 */\
00155       .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\
00156       .bit[0] = 10, .bit[1] = 12, .bit[2] = 12, .bit[3] = 10,\
00157       .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\
00158       .bit[4] = 9, .bit[5] = 9, .bit[6] = 9, .bit[7] = 10,\
00159       .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\
00160       .bit[8] = 11, .bit[9] = 11, .bit[10] = 12, .bit[11] = 11,\
00161       .com[12] = 1, .com[13] = 1,\
00162       .bit[12] = 11, .bit[13] = 10\
00163     },\
00164     { /* 2 */\
00165       .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\
00166       .bit[0] = 14, .bit[1] = 16, .bit[2] = 16, .bit[3] = 14,\
00167       .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\
00168       .bit[4] = 13, .bit[5] = 13, .bit[6] = 13, .bit[7] = 14,\
00169       .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\
00170       .bit[8] = 15, .bit[9] = 15, .bit[10] = 16, .bit[11] = 15,\
00171       .com[12] = 1, .com[13] = 1,\
00172       .bit[12] = 15, .bit[13] = 14\
00173     },\
00174     { /* 3 */\
00175       .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\
00176       .bit[0] = 18, .bit[1] = 20, .bit[2] = 20, .bit[3] = 18,\
00177       .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\
00178       .bit[4] = 17, .bit[5] = 17, .bit[6] = 17, .bit[7] = 18,\
00179       .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\
00180       .bit[8] = 19, .bit[9] = 19, .bit[10] = 20, .bit[11] = 19,\
00181       .com[12] = 1, .com[13] = 1,\
00182       .bit[12] = 19, .bit[13] = 18\
00183     },\
00184     { /* 4 */\
00185       .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\
00186       .bit[0] = 22, .bit[1] = 24, .bit[2] = 24, .bit[3] = 22,\
00187       .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\
00188       .bit[4] = 21, .bit[5] = 21, .bit[6] = 21, .bit[7] = 22,\
00189       .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\
00190       .bit[8] = 23, .bit[9] = 23, .bit[10] = 24, .bit[11] = 23,\
00191       .com[12] = 1, .com[13] = 1,\
00192       .bit[12] = 23, .bit[13] = 22\
00193     },\
00194     { /* 5 */\
00195       .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\
00196       .bit[0] = 25, .bit[1] = 6, .bit[2] = 6, .bit[3] = 25,\
00197       .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\
00198       .bit[4] = 7, .bit[5] = 7, .bit[6] = 7, .bit[7] = 25,\
00199       .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\
00200       .bit[8] = 26, .bit[9] = 26, .bit[10] = 6, .bit[11] = 26,\
00201       .com[12] = 1, .com[13] = 1,\
00202       .bit[12] = 26, .bit[13] = 25\
00203     },\
00204     { /* 6 */\
00205       .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\
00206       .bit[0] = 27, .bit[1] = 04, .bit[2] = 04, .bit[3] = 27,\
00207       .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\
00208       .bit[4] = 5, .bit[5] = 5, .bit[6] = 5, .bit[7] = 27,\
00209       .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\
00210       .bit[8] = 28, .bit[9] = 28, .bit[10] = 4, .bit[11] = 28,\
00211       .com[12] = 1, .com[13] = 1,\
00212       .bit[12] = 28, .bit[13] = 27\
00213     },\
00214     { /* 7 */\
00215       .com[0] = 3, .com[1] = 3, .com[2] = 1, .com[3] = 0,\
00216       .bit[0] = 29, .bit[1] = 2, .bit[2] = 2, .bit[3] = 29,\
00217       .com[4] = 1, .com[5] = 3, .com[6] = 2, .com[7] = 2,\
00218       .bit[4] = 03, .bit[5] = 3, .bit[6] = 3, .bit[7] = 29,\
00219       .com[8] = 2, .com[9] = 3, .com[10] = 2, .com[11] = 0,\
00220       .bit[8] = 30, .bit[9] = 30, .bit[10] = 2, .bit[11] = 30,\
00221       .com[12] = 1, .com[13] = 1,\
00222       .bit[12] = 30, .bit[13] = 29\
00223     }\
00224   },\
00225   .Number      = {\
00226     {\
00227       .com[0] = 3, .com[1] = 2, .com[2] = 1, .com[3] = 0,\
00228       .bit[0] = 31, .bit[1] = 31, .bit[2] = 31, .bit[3] = 31,\
00229       .com[4] = 1, .com[5] = 3, .com[6] = 2,\
00230       .bit[4] = 32, .bit[5] = 32, .bit[6] = 32,\
00231     },\
00232     {\
00233       .com[0] = 3, .com[1] = 2, .com[2] = 1, .com[3] = 0,\
00234       .bit[0] = 33, .bit[1] = 33, .bit[2] = 33, .bit[3] = 33,\
00235       .com[4] = 1, .com[5] = 3, .com[6] = 2,\
00236       .bit[4] = 35, .bit[5] = 35, .bit[6] = 35,\
00237     },\
00238     {\
00239       .com[0] = 3, .com[1] = 2, .com[2] = 1, .com[3] = 0,\
00240       .bit[0] = 36, .bit[1] = 36, .bit[2] = 36, .bit[3] = 36,\
00241       .com[4] = 1, .com[5] = 3, .com[6] = 2,\
00242       .bit[4] = 37, .bit[5] = 37, .bit[6] = 37,\
00243     },\
00244     {\
00245       .com[0] = 3, .com[1] = 2, .com[2] = 1, .com[3] = 0,\
00246       .bit[0] = 38, .bit[1] = 38, .bit[2] = 38, .bit[3] = 38,\
00247       .com[4] = 1, .com[5] = 3, .com[6] = 2,\
00248       .bit[4] = 39, .bit[5] = 39, .bit[6] = 39,\
00249     },\
00250   },\
00251   .EMode       = {\
00252     .com[0] = 1, .bit[0] = 1,\
00253     .com[1] = 2, .bit[1] = 1,\
00254     .com[2] = 1, .bit[2] = 0,\
00255     .com[3] = 2, .bit[3] = 0,\
00256     .com[4] = 3, .bit[4] = 0,\
00257   },\
00258   .ARing       = {\
00259     .com[0] = 0, .bit[0] = 0,\
00260     .com[1] = 0, .bit[1] = 1,\
00261     .com[2] = 0, .bit[2] = 2,\
00262     .com[3] = 0, .bit[3] = 3,\
00263     .com[4] = 0, .bit[4] = 4,\
00264     .com[5] = 0, .bit[5] = 5,\
00265     .com[6] = 0, .bit[6] = 6,\
00266     .com[7] = 0, .bit[7] = 7,\
00267   },\
00268   .Battery     = {\
00269     .com[0] = 0, .bit[0] = 12,\
00270     .com[1] = 0, .bit[1] = 17,\
00271     .com[2] = 0, .bit[2] = 20,\
00272     .com[3] = 0, .bit[3] = 13,\
00273   }\
00274 }
00275 
00276 static const PinName outPins[] = {
00277         /* SEG28..39 */
00278         PA7,    //LCD_SEG35
00279         PA8,    //LCD_SEG36
00280         PA9,    //LCD_SEG37
00281         PA10,   //LCD_SEG38
00282         PA11,   //LCD_SEG39
00283         PB0,    //LCD_SEG32
00284         PB1,    //LCD_SEG33
00285         PB2,    //LCD_SEG34
00286         PD9,    //LCD_SEG28
00287         PD10,   //LCD_SEG29
00288         PD11,   //LCD_SEG30
00289         PD12,   //LCD_SEG31
00290         /* SEG 20..27 */
00291         PB3,    //LCD_SEG20
00292         PB4,    //LCD_SEG21
00293         PB5,    //LCD_SEG22
00294         PB6,    //LCD_SEG23
00295         PF6,    //LCD_SEG24
00296         PF7,    //LCD_SEG25
00297         PF8,    //LCD_SEG26
00298         PF9,    //LCD_SEG27
00299         /* SEG12..19 */
00300         PA0,    //LCD_SEG13
00301         PA1,    //LCD_SEG14
00302         PA2,    //LCD_SEG15
00303         PA3,    //LCD_SEG16
00304         PA4,    //LCD_SEG17
00305         PA5,    //LCD_SEG18
00306         PA6,    //LCD_SEG19
00307         PA15,   //LCD_SEG12
00308         /* SEG0..11 */
00309         PF2,    //LCD_SEG0
00310         PF3,    //LCD_SEG1
00311         PF4,    //LCD_SEG2
00312         PF5,    //LCD_SEG3
00313         PE8,    //LCD_SEG4
00314         PE9,    //LCD_SEG5
00315         PE10,   //LCD_SEG6
00316         PE11,   //LCD_SEG7
00317         PE12,   //LCD_SEG8
00318         PE13,   //LCD_SEG9
00319         PE14,   //LCD_SEG10
00320         PE15,   //LCD_SEG11
00321         PA15,   //LCD_SEG12
00322         /* COM0..3 */
00323         PE4,    //LCD_COM0
00324         PE5,    //LCD_COM1
00325         PE6,    //LCD_COM2
00326         PE7     //LCD_COM3
00327 };
00328 
00329 #ifdef __cplusplus
00330 }
00331 #endif
00332 
00333 #endif