A31L12x F/W Packages  1.4.0
ABOV Cortex-M0+ Core based MCUs Integrated Driver
A31L12x_hal_lcd.h
Go to the documentation of this file.
1 /***************************************************************************//****************************************************************************/
34 
35 #ifndef _LCD_H_
36 #define _LCD_H_
37 
38 #include "A31L12x.h"
39 #include "A31L12x_hal_aa_types.h"
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 //******************************************************************************
46 // Constant
47 //******************************************************************************
48 
49 // Internal LCD Bias Dividing Resistor Selection Control
50 /*
51 #define LCD_RLCD3 (0x0uL << 6)
52 #define LCD_RLCD1 (0x1uL << 6)
53 #define LCD_RLCD2 (0x2uL << 6)
54 #define LCD_RLCD4 (0x3uL << 6)
55 */
56 #define IRSEL_RLCD3 (LCD_CR_IRSEL_RLCD3 << LCD_CR_IRSEL_Pos) // RLCD3 : 105/105/80[kohm] @(1/2)/(1/3)/(1/4) bias
57 #define IRSEL_RLCD1 (LCD_CR_IRSEL_RLCD1 << LCD_CR_IRSEL_Pos) // RLCD1 : 10/10/10[kohm] @(1/2)/(1/3)/(1/4) bias
58 #define IRSEL_RLCD2 (LCD_CR_IRSEL_RLCD2 << LCD_CR_IRSEL_Pos) // RLCD2 : 66/66/50[kohm] @(1/2)/(1/3)/(1/4) bias
59 #define IRSEL_RLCD4 (LCD_CR_IRSEL_RLCD4 << LCD_CR_IRSEL_Pos) // RLCD4 : 320/320/240[kohm] @(1/2)/(1/3)/(1/4) bias
60 
61 // LCD Duty and Bias Selection Control
62 /*
63 #define LCD_8D4B (0x0uL << 3)
64 #define LCD_6D4B (0x1uL << 3)
65 #define LCD_5D3B (0x2uL << 3)
66 #define LCD_4D3B (0x3uL << 3)
67 #define LCD_3D3B (0x4uL << 3)
68 #define LCD_3D2B (0x5uL << 3)
69 */
70 #define DBS_8D4B (LCD_CR_DBS_8D4B << LCD_CR_DBS_Pos) // 8D4B : 1/8 duty, 1/4 bias
71 #define DBS_6D4B (LCD_CR_DBS_6D4B << LCD_CR_DBS_Pos) // 6D4B : 1/6 duty, 1/4 bias
72 #define DBS_5D3B (LCD_CR_DBS_5D3B << LCD_CR_DBS_Pos) // 5D3B : 1/5 duty, 1/3 bias
73 #define DBS_4D3B (LCD_CR_DBS_4D3B << LCD_CR_DBS_Pos) // 4D3B : 1/4 duty, 1/3 bias
74 #define DBS_3D3B (LCD_CR_DBS_3D3B << LCD_CR_DBS_Pos) // 3D3B : 1/3 duty, 1/3 bias
75 #define DBS_3D2B (LCD_CR_DBS_3D2B << LCD_CR_DBS_Pos) // 3D2B : 1/3 duty, 1/2 bias
76 
77 // LCD Clock Selection Control
78 /*
79 #define LCD_CLK128 (0x0uL << 1)
80 #define LCD_CLK256 (0x1uL << 1)
81 #define LCD_CLK512 (0x2uL << 1)
82 #define LCD_CLK1024 (0x3uL << 1)
83 */
84 #define LCLK_128Hz (LCD_CR_LCLK_128Hz << LCD_CR_LCLK_Pos) // 128Hz : 32.768kHz(fLCD) / 256
85 #define LCLK_256Hz (LCD_CR_LCLK_256Hz << LCD_CR_LCLK_Pos) // 256Hz : 32.768kHz(fLCD) / 128
86 #define LCLK_512Hz (LCD_CR_LCLK_512Hz << LCD_CR_LCLK_Pos) // 512Hz : 32.768kHz(fLCD) / 64
87 #define LCLK_1024Hz (LCD_CR_LCLK_1024Hz << LCD_CR_LCLK_Pos) // 1024Hz : 32.768kHz(fLCD) / 32
88 
89 // LCD Automatic Bias Control
90 /*
91 #define LCD_ABCDIS (0x0uL << 12)
92 #define LCD_ABCEN (0x1uL << 12)
93 */
94 #define LCDABC_Off (LCD_BCCR_LCDABC_Off << LCD_BCCR_LCDABC_Pos)
95 #define LCDABC_On (LCD_BCCR_LCDABC_On << LCD_BCCR_LCDABC_Pos)
96 
97 // 'Bias Mode A' Time Selection Control
98 /*
99 #define LCD_BIA1CLK (0x0uL << 8)
100 #define LCD_BIA2CLK (0x1uL << 8)
101 #define LCD_BIA3CLK (0x2uL << 8)
102 #define LCD_BIA4CLK (0x3uL << 8)
103 #define LCD_BIA5CLK (0x4uL << 8)
104 #define LCD_BIA6CLK (0x5uL << 8)
105 #define LCD_BIA7CLK (0x6uL << 8)
106 #define LCD_BIA8CLK (0x7uL << 8)
107 */
108 #define BMSEL_BMA1Clk (LCD_BCCR_BMSEL_BMA1Clk << LCD_BCCR_BMSEL_Pos) // BMA1Clk : 'Bias Mode A' for 1-clock of fLCD
109 #define BMSEL_BMA2Clk (LCD_BCCR_BMSEL_BMA2Clk << LCD_BCCR_BMSEL_Pos) // BMA2Clk : 'Bias Mode A' for 2-clock of fLCD
110 #define BMSEL_BMA3Clk (LCD_BCCR_BMSEL_BMA3Clk << LCD_BCCR_BMSEL_Pos) // BMA3Clk : 'Bias Mode A' for 3-clock of fLCD
111 #define BMSEL_BMA4Clk (LCD_BCCR_BMSEL_BMA4Clk << LCD_BCCR_BMSEL_Pos) // BMA4Clk : 'Bias Mode A' for 4-clock of fLCD
112 #define BMSEL_BMA5Clk (LCD_BCCR_BMSEL_BMA5Clk << LCD_BCCR_BMSEL_Pos) // BMA5Clk : 'Bias Mode A' for 5-clock of fLCD
113 #define BMSEL_BMA6Clk (LCD_BCCR_BMSEL_BMA6Clk << LCD_BCCR_BMSEL_Pos) // BMA6Clk : 'Bias Mode A' for 6-clock of fLCD
114 #define BMSEL_BMA7Clk (LCD_BCCR_BMSEL_BMA7Clk << LCD_BCCR_BMSEL_Pos) // BMA7Clk : 'Bias Mode A' for 7-clock of fLCD
115 #define BMSEL_BMA8Clk (LCD_BCCR_BMSEL_BMA8Clk << LCD_BCCR_BMSEL_Pos) // BMA8Clk : 'Bias Mode A' for 8-clock of fLCD
116 
117 // LCD Driver Contrast Control
118 /*
119 #define LCD_CONTDIS (0x0uL << 5)
120 #define LCD_CONTEN (0x1uL << 5)
121 */
122 #define LCTEN_Disable (LCD_BCCR_LCTEN_Disable << LCD_BCCR_LCTEN_Pos)
123 #define LCTEN_Enable (LCD_BCCR_LCTEN_Enable << LCD_BCCR_LCTEN_Pos)
124 
125 // VLC0 Voltage Control
126 /*
127 #define LCD_VLC31 (0x0uL << 0)
128 #define LCD_VLC30 (0x1uL << 0)
129 #define LCD_VLC29 (0x2uL << 0)
130 #define LCD_VLC28 (0x3uL << 0)
131 #define LCD_VLC27 (0x4uL << 0)
132 #define LCD_VLC26 (0x5uL << 0)
133 #define LCD_VLC25 (0x6uL << 0)
134 #define LCD_VLC24 (0x7uL << 0)
135 #define LCD_VLC23 (0x8uL << 0)
136 #define LCD_VLC22 (0x9uL << 0)
137 #define LCD_VLC21 (0xAuL << 0)
138 #define LCD_VLC20 (0xBuL << 0)
139 #define LCD_VLC19 (0xCuL << 0)
140 #define LCD_VLC18 (0xDuL << 0)
141 #define LCD_VLC17 (0xEuL << 0)
142 #define LCD_VLC16 (0xFuL << 0)
143 */
144 #define VLCD_Step0 (LCD_BCCR_VLCD_Step0 << LCD_BCCR_VLCD_Pos) // Step0 : VDD x 32/47 Step
145 #define VLCD_Step1 (LCD_BCCR_VLCD_Step1 << LCD_BCCR_VLCD_Pos) // Step1 : VDD x 32/46 Step
146 #define VLCD_Step2 (LCD_BCCR_VLCD_Step2 << LCD_BCCR_VLCD_Pos) // Step2 : VDD x 32/45 Step
147 #define VLCD_Step3 (LCD_BCCR_VLCD_Step3 << LCD_BCCR_VLCD_Pos) // Step3 : VDD x 32/44 Step
148 #define VLCD_Step4 (LCD_BCCR_VLCD_Step4 << LCD_BCCR_VLCD_Pos) // Step4 : VDD x 32/43 Step
149 #define VLCD_Step5 (LCD_BCCR_VLCD_Step5 << LCD_BCCR_VLCD_Pos) // Step5 : VDD x 32/42 Step
150 #define VLCD_Step6 (LCD_BCCR_VLCD_Step6 << LCD_BCCR_VLCD_Pos) // Step6 : VDD x 32/41 Step
151 #define VLCD_Step7 (LCD_BCCR_VLCD_Step7 << LCD_BCCR_VLCD_Pos) // Step7 : VDD x 32/40 Step
152 #define VLCD_Step8 (LCD_BCCR_VLCD_Step8 << LCD_BCCR_VLCD_Pos) // Step8 : VDD x 32/39 Step
153 #define VLCD_Step9 (LCD_BCCR_VLCD_Step9 << LCD_BCCR_VLCD_Pos) // Step9 : VDD x 32/38 Step
154 #define VLCD_Step10 (LCD_BCCR_VLCD_Step10 << LCD_BCCR_VLCD_Pos) // Step10 : VDD x 32/37 Step
155 #define VLCD_Step11 (LCD_BCCR_VLCD_Step11 << LCD_BCCR_VLCD_Pos) // Step11 : VDD x 32/36 Step
156 #define VLCD_Step12 (LCD_BCCR_VLCD_Step12 << LCD_BCCR_VLCD_Pos) // Step12 : VDD x 32/35 Step
157 #define VLCD_Step13 (LCD_BCCR_VLCD_Step13 << LCD_BCCR_VLCD_Pos) // Step13 : VDD x 32/34 Step
158 #define VLCD_Step14 (LCD_BCCR_VLCD_Step14 << LCD_BCCR_VLCD_Pos) // Step14 : VDD x 32/33 Step
159 #define VLCD_Step15 (LCD_BCCR_VLCD_Step15 << LCD_BCCR_VLCD_Pos) // Step15 : VDD x 32/32 Step
160 
161 // Display Data RAM Size
162 #define LCDBufSize 33
163 
164 //******************************************************************************
165 // Type
166 //******************************************************************************
167 
168 //==============================================================================
169 // Structure
170 //==============================================================================
171 
172 typedef struct
173 {
174  // LCD_CR
175  uint32_t Bias; // IRSEL
176  uint32_t Duty; // DBS
177  uint32_t Clk; // LCLK
178 
179  // LCD_BCCR
180  uint32_t AutoBiasEn; // LCDABC
181  uint32_t BiasTime; // BMSEL
182  uint32_t Contrast; // LCTEN
183  uint32_t ContrastStep; // VLCD
184 } LCD_CFG_Type;
185 
186 //******************************************************************************
187 // Macro
188 //******************************************************************************
189 
190 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
194 #define LCDON() (LCD->CR_b.DISP = 1)
195 
196 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
200 #define LCDOFF() (LCD->CR_b.DISP = 0)
201 
202 //******************************************************************************
203 // Function
204 //******************************************************************************
205 
207 
208 HAL_Status_Type HAL_LCD_SetRegister( uint32_t u32LCD_CR, uint32_t u32LCD_BCCR );
210 HAL_Status_Type HAL_LCD_WriteDspRam( uint8_t* write_buf, uint32_t u32Index, uint32_t size );
211 
212 #ifdef __cplusplus
213 }
214 #endif
215 
216 #endif /* _LCD_H_ */
217 
uint32_t ContrastStep
uint32_t Contrast
HAL_Status_Type HAL_LCD_Init(LCD_CFG_Type *LCD_Config)
Initialize the LCD peripheral with the specified parameters.
Contains the ABOV typedefs for C standard types. It is intended to be used in ISO C conforming develo...
HAL_Status_Type
uint32_t AutoBiasEn
HAL_Status_Type HAL_LCD_WriteDspRam(uint8_t *write_buf, uint32_t u32Index, uint32_t size)
Write LCD Buffer.
uint32_t BiasTime
HAL_Status_Type HAL_LCD_ClearDspRam(void)
Clear LCD Buffer.
HAL_Status_Type HAL_LCD_SetRegister(uint32_t u32LCD_CR, uint32_t u32LCD_BCCR)
Set LCD LCD_CR/LCD_BCCR Registers.