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

segmentlcdconfig_stk_tg.h

Go to the documentation of this file.
00001 /**************************************************************************//**
00002  * @file
00003  * @brief Segment LCD Config for the EFM32 Tiny Gecko STK (STK_3300)
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     LCD_SYMBOL_GECKO,
00028     LCD_SYMBOL_ANT,
00029     LCD_SYMBOL_PAD0,
00030     LCD_SYMBOL_PAD1,
00031     LCD_SYMBOL_EFM32,
00032     LCD_SYMBOL_MINUS,
00033     LCD_SYMBOL_COL3,
00034     LCD_SYMBOL_COL5,
00035     LCD_SYMBOL_COL10,
00036     LCD_SYMBOL_DEGC,
00037     LCD_SYMBOL_DEGF,
00038     LCD_SYMBOL_DP2,
00039     LCD_SYMBOL_DP3,
00040     LCD_SYMBOL_DP4,
00041     LCD_SYMBOL_DP5,
00042     LCD_SYMBOL_DP6,
00043     LCD_SYMBOL_DP10,
00044 } lcdSymbol;
00045 
00046 #define LCD_SYMBOL_GECKO_COM  1
00047 #define LCD_SYMBOL_GECKO_SEG  0
00048 #define LCD_SYMBOL_ANT_COM  0
00049 #define LCD_SYMBOL_ANT_SEG  12
00050 #define LCD_SYMBOL_PAD0_COM  3
00051 #define LCD_SYMBOL_PAD0_SEG  19
00052 #define LCD_SYMBOL_PAD1_COM  2
00053 #define LCD_SYMBOL_PAD1_SEG  0
00054 #define LCD_SYMBOL_EFM32_COM  0
00055 #define LCD_SYMBOL_EFM32_SEG  8
00056 #define LCD_SYMBOL_MINUS_COM  3
00057 #define LCD_SYMBOL_MINUS_SEG  0
00058 #define LCD_SYMBOL_COL3_COM  4
00059 #define LCD_SYMBOL_COL3_SEG  0
00060 #define LCD_SYMBOL_COL5_COM  0
00061 #define LCD_SYMBOL_COL5_SEG  10
00062 #define LCD_SYMBOL_COL10_COM  5
00063 #define LCD_SYMBOL_COL10_SEG  19
00064 #define LCD_SYMBOL_DEGC_COM  0
00065 #define LCD_SYMBOL_DEGC_SEG  14
00066 #define LCD_SYMBOL_DEGF_COM  0
00067 #define LCD_SYMBOL_DEGF_SEG  15
00068 #define LCD_SYMBOL_DP2_COM  7
00069 #define LCD_SYMBOL_DP2_SEG  0
00070 #define LCD_SYMBOL_DP3_COM  5
00071 #define LCD_SYMBOL_DP3_SEG  0
00072 #define LCD_SYMBOL_DP4_COM  6
00073 #define LCD_SYMBOL_DP4_SEG  0
00074 #define LCD_SYMBOL_DP5_COM  7
00075 #define LCD_SYMBOL_DP5_SEG  9
00076 #define LCD_SYMBOL_DP6_COM  7
00077 #define LCD_SYMBOL_DP6_SEG  11
00078 #define LCD_SYMBOL_DP10_COM  4
00079 #define LCD_SYMBOL_DP10_SEG  19
00080 
00081 #define LCD_STK3300             TRUE
00082 #define LCD_DISPLAY_TYPE        8x20
00083 #define LCD_BOOST_LEVEL         lcdVBoostLevel3
00084 
00085   /* LCD Controller Prescaler (divide LFACLK / 64) */
00086   /* LFACLK_LCDpre = 512 Hz */
00087   /* Set FDIV=0, means 512/1 = 512 Hz */
00088   /* With octaplex mode, 512/16 => 32 Hz Frame Rate */
00089 #define LCD_CMU_CLK_PRE         cmuClkDiv_64
00090 #define LCD_CMU_CLK_DIV         cmuClkDiv_1
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_SegmentSetLow(0, 0x00078000, 0x00000000);\
00103   LCD_SegmentSetLow(1, 0x00078000, 0x00000000);\
00104   LCD_SegmentSetLow(2, 0x00078000, 0x00000000);\
00105   LCD_SegmentSetLow(3, 0x00078000, 0x00000000);\
00106   LCD_SegmentSetLow(4, 0x00078000, 0x00000000);\
00107   LCD_SegmentSetLow(5, 0x00078000, 0x00000000);\
00108   LCD_SegmentSetLow(6, 0x00078000, 0x00000000);\
00109   LCD_SegmentSetLow(7, 0x00078000, 0x00000000);\
00110 } while (0)
00111 
00112 #define LCD_ALPHA_NUMBER_OFF() \
00113 do { \
00114   LCD_SegmentSetLow(7, 0x000075FE, 0x00000000);\
00115   LCD_SegmentSetLow(6, 0x00007FFE, 0x00000000);\
00116   LCD_SegmentSetLow(5, 0x00007FFE, 0x00000000);\
00117   LCD_SegmentSetLow(4, 0x00007FFE, 0x00000000);\
00118   LCD_SegmentSetLow(3, 0x00007FFE, 0x00000000);\
00119   LCD_SegmentSetLow(2, 0x00007FFE, 0x00000000);\
00120   LCD_SegmentSetLow(1, 0x00007FFE, 0x00000000);\
00121   LCD_SegmentSetLow(0, 0x00000A00, 0x00000000);\
00122 } while(0)
00123 
00124 #define LCD_ALL_SEGMENTS_OFF() \
00125 do { \
00126   LCD_SegmentSetLow(0, 0xFFFFFFFF, 0x00000000);\
00127   LCD_SegmentSetLow(1, 0xFFFFFFFF, 0x00000000);\
00128   LCD_SegmentSetLow(2, 0xFFFFFFFF, 0x00000000);\
00129   LCD_SegmentSetLow(3, 0xFFFFFFFF, 0x00000000);\
00130   LCD_SegmentSetLow(4, 0xFFFFFFFF, 0x00000000);\
00131   LCD_SegmentSetLow(5, 0xFFFFFFFF, 0x00000000);\
00132   LCD_SegmentSetLow(6, 0xFFFFFFFF, 0x00000000);\
00133   LCD_SegmentSetLow(7, 0xFFFFFFFF, 0x00000000);\
00134 } while(0)
00135 
00136 #define LCD_ALL_SEGMENTS_ON() \
00137 do { \
00138   LCD_SegmentSetLow(0, 0xFFFFFFFF, 0xFFFFFFFF);\
00139   LCD_SegmentSetLow(1, 0xFFFFFFFF, 0xFFFFFFFF);\
00140   LCD_SegmentSetLow(2, 0xFFFFFFFF, 0xFFFFFFFF);\
00141   LCD_SegmentSetLow(3, 0xFFFFFFFF, 0xFFFFFFFF);\
00142   LCD_SegmentSetLow(4, 0xFFFFFFFF, 0xFFFFFFFF);\
00143   LCD_SegmentSetLow(5, 0xFFFFFFFF, 0xFFFFFFFF);\
00144   LCD_SegmentSetLow(6, 0xFFFFFFFF, 0xFFFFFFFF);\
00145   LCD_SegmentSetLow(7, 0xFFFFFFFF, 0xFFFFFFFF);\
00146 } while(0)
00147 
00148 #define LCD_SEGMENTS_ENABLE() \
00149 do { \
00150   LCD_SegmentRangeEnable(lcdSegmentAll, true);\
00151 } while(0)
00152 
00153 #define LCD_DISPLAY_ENABLE() \
00154 do { \
00155   ;\
00156 } while(0)
00157 
00158 #define EFM_DISPLAY_DEF {\
00159   .Text        = {\
00160     { /* 1 */\
00161       .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00162       .bit[0] = 1, .bit[1] = 2, .bit[2] = 2, .bit[3] = 2,\
00163       .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
00164       .bit[4] = 1, .bit[5] = 1, .bit[6] = 1, .bit[7] = 1,\
00165       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00166       .bit[8] = 2, .bit[9] = 2, .bit[10] = 2, .bit[11] = 2,\
00167       .com[12] = 5, .com[13] = 6,\
00168       .bit[12] = 1, .bit[13] = 1\
00169     },\
00170     { /* 2 */\
00171       .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00172       .bit[0] = 3, .bit[1] = 4, .bit[2] = 4, .bit[3] = 4,\
00173       .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
00174       .bit[4] = 3, .bit[5] = 3, .bit[6] = 3, .bit[7] = 3,\
00175       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00176       .bit[8] = 4, .bit[9] = 4, .bit[10] = 4, .bit[11] = 4,\
00177       .com[12] = 5, .com[13] = 6,\
00178       .bit[12] = 3, .bit[13] = 3\
00179     },\
00180     { /* 3 */\
00181       .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00182       .bit[0] = 5, .bit[1] = 6, .bit[2] = 6, .bit[3] = 6,\
00183       .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
00184       .bit[4] = 5, .bit[5] = 5, .bit[6] = 5, .bit[7] = 5,\
00185       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00186       .bit[8] = 6, .bit[9] = 6, .bit[10] = 6, .bit[11] = 6,\
00187       .com[12] = 5, .com[13] = 6,\
00188       .bit[12] = 5, .bit[13] = 5\
00189     },\
00190     { /* 4 */\
00191       .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00192       .bit[0] = 7, .bit[1] = 8, .bit[2] = 8, .bit[3] = 8,\
00193       .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
00194       .bit[4] = 7, .bit[5] = 7, .bit[6] = 7, .bit[7] = 7,\
00195       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00196       .bit[8] = 8, .bit[9] = 8, .bit[10] = 8, .bit[11] = 8,\
00197       .com[12] = 5, .com[13] = 6,\
00198       .bit[12] = 7, .bit[13] = 7\
00199     },\
00200     { /* 5 */\
00201       .com[0] = 0, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00202       .bit[0] = 9, .bit[1] = 10, .bit[2] = 10, .bit[3] = 10,\
00203       .com[4] = 6, .com[5] = 2, .com[6] = 3, .com[7] = 1,\
00204       .bit[4] = 9, .bit[5] = 9, .bit[6] = 9, .bit[7] = 9,\
00205       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00206       .bit[8] = 10, .bit[9] = 10, .bit[10] = 10, .bit[11] = 10,\
00207       .com[12] = 4, .com[13] = 5,\
00208       .bit[12] = 9, .bit[13] = 9\
00209     },\
00210     { /* 6 */\
00211       .com[0] = 0, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00212       .bit[0] = 11, .bit[1] = 12, .bit[2] = 12, .bit[3] = 12,\
00213       .com[4] = 6, .com[5] = 2, .com[6] = 3, .com[7] = 1,\
00214       .bit[4] = 11, .bit[5] = 11, .bit[6] = 11, .bit[7] = 11,\
00215       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00216       .bit[8] = 12, .bit[9] = 12, .bit[10] = 12, .bit[11] = 12,\
00217       .com[12] = 4, .com[13] = 5,\
00218       .bit[12] = 11, .bit[13] = 11\
00219     },\
00220     { /* 7 */\
00221       .com[0] = 1, .com[1] = 1, .com[2] = 5, .com[3] = 7,\
00222       .bit[0] = 13, .bit[1] = 14, .bit[2] = 14, .bit[3] = 14,\
00223       .com[4] = 7, .com[5] = 3, .com[6] = 4, .com[7] = 2,\
00224       .bit[4] = 13, .bit[5] = 13, .bit[6] = 13, .bit[7] = 13,\
00225       .com[8] = 3, .com[9] = 2, .com[10] = 4, .com[11] = 6,\
00226       .bit[8] = 14, .bit[9] = 14, .bit[10] = 14, .bit[11] = 14,\
00227       .com[12] = 5, .com[13] = 6,\
00228       .bit[12] = 13, .bit[13] = 13\
00229     },\
00230   },\
00231   .Number      = {\
00232     {\
00233       .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\
00234       .bit[0] = 15, .bit[1] = 15, .bit[2] = 15, .bit[3] = 15,\
00235       .com[4] = 3, .com[5] = 6, .com[6] = 4,\
00236       .bit[4] = 15, .bit[5] = 15, .bit[6] = 15,\
00237     },\
00238     {\
00239       .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\
00240       .bit[0] = 16, .bit[1] = 16, .bit[2] = 16, .bit[3] = 16,\
00241       .com[4] = 3, .com[5] = 6, .com[6] = 4,\
00242       .bit[4] = 16, .bit[5] = 16, .bit[6] = 16,\
00243     },\
00244     {\
00245       .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\
00246       .bit[0] = 17, .bit[1] = 17, .bit[2] = 17, .bit[3] = 17,\
00247       .com[4] = 3, .com[5] = 6, .com[6] = 4,\
00248       .bit[4] = 17, .bit[5] = 17, .bit[6] = 17,\
00249     },\
00250     {\
00251       .com[0] = 7, .com[1] = 5, .com[2] = 2, .com[3] = 1,\
00252       .bit[0] = 18, .bit[1] = 18, .bit[2] = 18, .bit[3] = 18,\
00253       .com[4] = 3, .com[5] = 6, .com[6] = 4,\
00254       .bit[4] = 18, .bit[5] = 18, .bit[6] = 18,\
00255     },\
00256   },\
00257   .EMode       = {\
00258     .com[0] = 0, .bit[0] = 19,\
00259     .com[1] = 1, .bit[1] = 19,\
00260     .com[2] = 7, .bit[2] = 19,\
00261     .com[3] = 2, .bit[3] = 19,\
00262     .com[4] = 6, .bit[4] = 19,\
00263   },\
00264   .ARing       = {\
00265     .com[0] = 0, .bit[0] = 7,\
00266     .com[1] = 0, .bit[1] = 6,\
00267     .com[2] = 0, .bit[2] = 5,\
00268     .com[3] = 0, .bit[3] = 4,\
00269     .com[4] = 0, .bit[4] = 3,\
00270     .com[5] = 0, .bit[5] = 2,\
00271     .com[6] = 0, .bit[6] = 1,\
00272     .com[7] = 0, .bit[7] = 0,\
00273   },\
00274   .Battery     = {\
00275     .com[0] = 0, .bit[0] = 13,\
00276     .com[1] = 0, .bit[1] = 17,\
00277     .com[2] = 0, .bit[2] = 16,\
00278     .com[3] = 0, .bit[3] = 18,\
00279   }\
00280 }
00281 
00282 static const PinName outPins[] = {
00283         /* SEG28..39 */
00284         PA7,    //LCD_SEG35
00285         PA8,    //LCD_SEG36
00286         PA9,    //LCD_SEG37
00287         PA10,   //LCD_SEG38
00288         PA11,   //LCD_SEG39
00289         PB0,    //LCD_SEG32
00290         PB1,    //LCD_SEG33
00291         PB2,    //LCD_SEG34
00292         PD9,    //LCD_SEG28
00293         PD10,   //LCD_SEG29
00294         PD11,   //LCD_SEG30
00295         PD12,   //LCD_SEG31
00296         /* SEG12..19 */
00297         PA0,    //LCD_SEG13
00298         PA1,    //LCD_SEG14
00299         PA2,    //LCD_SEG15
00300         PA3,    //LCD_SEG16
00301         PA4,    //LCD_SEG17
00302         PA5,    //LCD_SEG18
00303         PA6,    //LCD_SEG19
00304         PA15,   //LCD_SEG12
00305         /* COM4..7 */
00306         PB3,    //LCD_COM4
00307         PB4,    //LCD_COM5
00308         PB5,    //LCD_COM6
00309         PB6,    //LCD_COM7
00310         /* COM0..3 */
00311         PE4,    //LCD_COM0
00312         PE5,    //LCD_COM1
00313         PE6,    //LCD_COM2
00314         PE7     //LCD_COM3
00315 };
00316 
00317 #ifdef __cplusplus
00318 }
00319 #endif
00320 
00321 #endif