eGUI alias D4D  Release 3.0
Reference Manual
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
d4dlcdhw_gpio8080_8b.c
Go to the documentation of this file.
1 /**************************************************************************
2 *
3 * Copyright 2014 by Petr Gargulak. eGUI Community.
4 * Copyright 2009-2013 by Petr Gargulak. Freescale Semiconductor, Inc.
5 *
6 ***************************************************************************
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License Version 3
9 * or later (the "LGPL").
10 *
11 * As a special exception, the copyright holders of the eGUI project give you
12 * permission to link the eGUI sources with independent modules to produce an
13 * executable, regardless of the license terms of these independent modules,
14 * and to copy and distribute the resulting executable under terms of your
15 * choice, provided that you also meet, for each linked independent module,
16 * the terms and conditions of the license of that module.
17 * An independent module is a module which is not derived from or based
18 * on this library.
19 * If you modify the eGUI sources, you may extend this exception
20 * to your version of the eGUI sources, but you are not obligated
21 * to do so. If you do not wish to do so, delete this
22 * exception statement from your version.
23 *
24 * This program is distributed in the hope that it will be useful,
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
27 *
28 * You should have received a copy of the GNU General Public License
29 * and the GNU Lesser General Public License along with this program.
30 * If not, see <http://www.gnu.org/licenses/>.
31 *
32 ***************************************************************************/
46 #include "d4d.h" // include of all public items (types, function etc) of D4D driver
47 #include "common_files/d4d_lldapi.h" // include non public low level driver interface header file (types, function prototypes, enums etc. )
48 #include "common_files/d4d_private.h" // include the private header file that contains perprocessor macros as D4D_MK_STR
49 
50 
51 // identification string of driver - must be same as name D4DTCH_FUNCTIONS structure + "_ID"
52 // it is used for enable the code for compilation
53 #define d4dlcdhw_gpio8080_8b_ID 1
54 
55 
56 // copilation enable preprocessor condition
57 // the string d4dtch_gpio8080_8b_ID must be replaced by define created one line up
58 #if (D4D_MK_STR(D4D_LLD_LCD_HW) == d4dlcdhw_gpio8080_8b_ID)
59 
60  // include of low level driver heaser file
61  // it will be included into wole project only in case that this driver is selected in main D4D configuration file
63  /******************************************************************************
64  * Macros
65  ******************************************************************************/
66  #if D4D_COLOR_SYSTEM != D4D_COLOR_SYSTEM_RGB565
67  #error The eGUI low level driver "d4dlcdhw_gpio8080_8b" not supported selected type of D4D_COLOR_SYSTEM. To run this driver just select D4D_COLOR_SYSTEM_RGB565.
68  #endif
69  /******************************************************************************
70  * Internal function prototypes
71  ******************************************************************************/
72 
73  static unsigned char D4DLCDHW_Init_Gpio8080_8b(void);
74  static unsigned char D4DLCDHW_DeInit_Gpio8080_8b(void);
75  static void D4DLCDHW_SendDataWord_Gpio8080_8b(unsigned short value);
76  static void D4DLCDHW_SendCmdWord_Gpio8080_8b(unsigned short cmd);
77  static unsigned short D4DLCDHW_ReadDataWord_Gpio8080_8b(void);
78  static unsigned short D4DLCDHW_ReadCmdWord_Gpio8080_8b(void);
79  static unsigned char D4DLCDHW_PinCtl_Gpio8080_8b(D4DLCDHW_PINS pinId, D4DHW_PIN_STATE setState);
80  static void D4DLCD_FlushBuffer_Gpio8080_8b(D4DLCD_FLUSH_MODE mode);
81 
82  /**************************************************************/
88  // the main structure that contains low level driver api functions
89  // the name fo this structure is used for recognizing of configured low level driver of whole D4D
90  // so this name has to be used in main configuration header file of D4D driver to enable this driver
91  const D4DLCDHW_FUNCTIONS d4dlcdhw_gpio8080_8b =
92  {
93  D4DLCDHW_Init_Gpio8080_8b,
94  D4DLCDHW_SendDataWord_Gpio8080_8b,
95  D4DLCDHW_SendCmdWord_Gpio8080_8b,
96  D4DLCDHW_ReadDataWord_Gpio8080_8b,
97  D4DLCDHW_ReadCmdWord_Gpio8080_8b,
98  D4DLCDHW_PinCtl_Gpio8080_8b,
99  D4DLCD_FlushBuffer_Gpio8080_8b,
100  D4DLCDHW_DeInit_Gpio8080_8b
101  };
102  /**************************************************************/
108  /**************************************************************/
115  //-----------------------------------------------------------------------------
116  // FUNCTION: D4DLCDHW_Init_Gpio8080_8b
117  // SCOPE: Low Level Driver API function
118  // DESCRIPTION: The function is used for initialization of this low level driver
119  //
120  // PARAMETERS: none
121  //
122  // RETURNS: result: 1 - Success
123  // 0 - Failed
124  //-----------------------------------------------------------------------------
125  static unsigned char D4DLCDHW_Init_Gpio8080_8b(void)
126  {
127  #ifdef D4DLCD_DISPLAY_MCU_USER_INIT
128  D4DLCD_DISPLAY_MCU_USER_INIT
129  #endif
130 
131  D4DLCD_ASSERT_CS;
132  D4DLCD_ASSERT_DC;
133 
134  D4DLCD_INIT_CS;
135  D4DLCD_INIT_DC;
136 
137 
138  D4DLCD_INIT_DATA; // 8 bit data port all outputs
139 
140  D4DLCD_INIT_WR;
141  D4DLCD_INIT_RD;
142 
143  D4DLCD_DEASSERT_WR;
144  D4DLCD_DEASSERT_RD;
145 
146  return 1;
147  }
148 
149 
150  //-----------------------------------------------------------------------------
151  // FUNCTION: D4DLCDHW_DeInit_Gpio8080_8b
152  // SCOPE: Low Level Driver API function
153  // DESCRIPTION: The function is used for deinitialization of this low level driver
154  //
155  // PARAMETERS: none
156  //
157  // RETURNS: result: 1 - Success
158  // 0 - Failed
159  //-----------------------------------------------------------------------------
160  static unsigned char D4DLCDHW_DeInit_Gpio8080_8b(void)
161  {
162  return 0;
163  }
164 
165  //-----------------------------------------------------------------------------
166  // FUNCTION: D4DLCDHW_SendDataWord_Gpio8080_8b
167  // SCOPE: Low Level Driver API function
168  // DESCRIPTION: The function send the one 16 bit variable into LCD
169  //
170  // PARAMETERS: unsigned short value variable to send
171  //
172  // RETURNS: none
173  //-----------------------------------------------------------------------------
174  static void D4DLCDHW_SendDataWord_Gpio8080_8b(unsigned short value)
175  {
176  OUTPUT_ALL(D4DLCD_DATA);
177  D4DLCD_ASSERT_CS;
178 
179  D4DLCD_DATA_WRITE((unsigned char) ((value >> 8) & 0xff)); // msb!
180  D4DLCD_ASSERT_WR;
181  D4DLCD_DEASSERT_WR;
182 
183  D4DLCD_DATA_WRITE((unsigned char) (value & 0xff)); // lsb!
184  D4DLCD_ASSERT_WR;
185  D4DLCD_DEASSERT_WR;
186 
187  D4DLCD_DEASSERT_CS;
188  }
189 
190  //-----------------------------------------------------------------------------
191  // FUNCTION: D4DLCDHW_SendCmdWord_Gpio8080_8b
192  // SCOPE: Low Level Driver API function
193  // DESCRIPTION: The function send the one 16 bit command into LCD
194  //
195  // PARAMETERS: unsigned short cmd command to send
196  //
197  // RETURNS: none
198  //-----------------------------------------------------------------------------
199  static void D4DLCDHW_SendCmdWord_Gpio8080_8b(unsigned short cmd)
200  {
201  D4DLCD_ASSERT_DC; // DataCmd := 0
202  D4DLCDHW_SendDataWord_Gpio8080_8b(cmd);
203  D4DLCD_DEASSERT_DC; // DataCmd := 1
204  }
205 
206 
207  //-----------------------------------------------------------------------------
208  // FUNCTION: D4DLCDHW_ReadDataWord_Gpio8080_8b
209  // SCOPE: Low Level Driver API function
210  // DESCRIPTION: The function reads the one 16 bit variable from LCD (if this function is supported)
211  //
212  // PARAMETERS: none
213  //
214  // RETURNS: unsigned short - the readed value
215  //
216  //-----------------------------------------------------------------------------
217  static unsigned short D4DLCDHW_ReadDataWord_Gpio8080_8b(void)
218  {
219  unsigned short value;
220 
221  INPUT_ALL(D4DLCD_DATA);
222  D4DLCD_DEASSERT_DC;
223  D4DLCD_ASSERT_CS;
224 
225  D4DLCD_ASSERT_RD;
226  D4DLCD_DEASSERT_RD;
227  value = D4DLCD_DATA; // msb!
228 
229  D4DLCD_ASSERT_RD;
230  D4DLCD_DEASSERT_RD;
231  value |= (unsigned short) ((D4DLCD_DATA << 8) & 0xff00); // msb!
232 
233  D4DLCD_DEASSERT_CS;
234 
235  return value;
236  }
237 
238  //-----------------------------------------------------------------------------
239  // FUNCTION: D4DLCDHW_ReadCmdWord_Gpio8080_8b
240  // SCOPE: Low Level Driver API function
241  // DESCRIPTION: The function reads the one 16 bit command from LCD (if this function is supported)
242  //
243  // PARAMETERS: none
244  //
245  // RETURNS: unsigned short - the readed value
246  //
247  //-----------------------------------------------------------------------------
248  static unsigned short D4DLCDHW_ReadCmdWord_Gpio8080_8b(void)
249  {
250  unsigned short tmp_res;
251  D4DLCD_ASSERT_DC; // DataCmd := 0
252  tmp_res = D4DLCDHW_ReadDataWord_Gpio8080_8b();
253  D4DLCD_DEASSERT_DC; // DataCmd := 1
254 
255  return tmp_res;
256  }
257 
258  //-----------------------------------------------------------------------------
259  // FUNCTION: D4DLCDHW_PinCtl_Gpio8080_8b
260  // SCOPE: Low Level Driver API function
261  // DESCRIPTION: allows control GPIO pins for LCD conrol purposes
262  //
263  // PARAMETERS: D4DLCDHW_PINS pinId - Pin identification
264  // D4DHW_PIN_STATE setState - Pin action
265  // RETURNS: for Get action retuns the pin value
266  //-----------------------------------------------------------------------------
267  static unsigned char D4DLCDHW_PinCtl_Gpio8080_8b(D4DLCDHW_PINS pinId, D4DHW_PIN_STATE setState)
268  {
269  switch(pinId)
270  {
271  case D4DLCD_RESET_PIN:
272  switch(setState)
273  {
274  case D4DHW_PIN_OUT:
275  OUTPUT(D4DLCD_RESET);
276  break;
277  case D4DHW_PIN_IN:
278  INPUT(D4DLCD_RESET);
279  break;
280  case D4DHW_PIN_SET_1:
281  D4DLCD_DEASSERT_RESET;
282  break;
283  case D4DHW_PIN_SET_0:
284  D4DLCD_ASSERT_RESET;
285  break;
286  }
287  break;
289  switch(setState)
290  {
291 
292  #ifdef D4DLCD_BACKLIGHT
293 
294  case D4DHW_PIN_OUT:
295  OUTPUT(D4DLCD_BACKLIGHT);
296  break;
297  case D4DHW_PIN_IN:
298  INPUT(D4DLCD_BACKLIGHT);
299  break;
300  case D4DHW_PIN_SET_1:
301  D4DLCD_DEASSERT_BACKLIGHT;
302  break;
303  case D4DHW_PIN_SET_0:
304  D4DLCD_ASSERT_BACKLIGHT;
305  break;
306 
307  #endif
308 
309  }
310  break;
311 
312  case D4DLCD_CS_PIN:
313  switch(setState)
314  {
315  case D4DHW_PIN_SET_1:
316  D4DLCD_DEASSERT_CS;
317  break;
318  case D4DHW_PIN_SET_0:
319  D4DLCD_ASSERT_CS;
320  break;
321  }
322  break;
323 
324  }
325  return 0;
326  }
327 
328  //-----------------------------------------------------------------------------
329  // FUNCTION: D4DLCD_FlushBuffer_Gpio8080_8b
330  // SCOPE: Low Level Driver API function
331  // DESCRIPTION: For buffered low level interfaces is used to inform
332  // driver the complete object is drawed and pending pixels should be flushed
333  //
334  // PARAMETERS: none
335  //
336  // RETURNS: none
337  //-----------------------------------------------------------------------------
338  static void D4DLCD_FlushBuffer_Gpio8080_8b(D4DLCD_FLUSH_MODE mode)
339  {
340  D4D_UNUSED(mode);
341  }
342 
343 #endif //(D4D_MK_STR(D4D_LLD_LCD_HW) == d4dlcdhw_gpio8080_8b_ID)
D4D low level standard LCD Hardware interface API structure.
Definition: d4d_lldapi.h:163
D4D driver SSD1289 hardware level LCD header file.
#define INPUT(x)
D4D Driver main header file.
LCD device chip select signal.
Definition: d4d_lldapi.h:100
D4DHW_PIN_STATE
D4D low level MCU pin state enumeration type.
Definition: d4d_lldapi.h:73
D4DLCD_FLUSH_MODE
D4D low level eGUI flush screen types enumeration.
Definition: d4d_lldapi.h:136
D4D Driver private header file.
D4DLCDHW_PINS
D4D low level MCU types definition for general LCD screen control signals.
Definition: d4d_lldapi.h:96
#define OUTPUT(x)
Switch pin to input mode (equivalent to high-Z)
Definition: d4d_lldapi.h:78
Switch pin to output mode.
Definition: d4d_lldapi.h:77
Set pin output register to logic 1.
Definition: d4d_lldapi.h:80
LCD device backlight enable signal.
Definition: d4d_lldapi.h:99
#define INPUT_ALL(x)
#define D4D_UNUSED(x)
Macro used just for notify compiler that the input parameter is not used.
Definition: d4d_base.h:504
Set pin output register to logic 0.
Definition: d4d_lldapi.h:79
D4D driver - resistive touch screen driver function header file.
LCD device reset signal.
Definition: d4d_lldapi.h:98
#define OUTPUT_ALL(x)