@@ -1,98 +1,99 | |||||
1 | /*------------------------------------------------------------------------------ |
|
1 | /*------------------------------------------------------------------------------ | |
2 | -- This file is a part of the LPP VHDL IP LIBRARY |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
4 | -- |
|
4 | -- | |
5 | -- This program is free software; you can redistribute it and/or modify |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
6 | -- it under the terms of the GNU General Public License as published by |
|
6 | -- it under the terms of the GNU General Public License as published by | |
7 | -- the Free Software Foundation; either version 3 of the License, or |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
8 | -- (at your option) any later version. |
|
8 | -- (at your option) any later version. | |
9 | -- |
|
9 | -- | |
10 | -- This program is distributed in the hope that it will be useful, |
|
10 | -- This program is distributed in the hope that it will be useful, | |
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | -- GNU General Public License for more details. |
|
13 | -- GNU General Public License for more details. | |
14 | -- |
|
14 | -- | |
15 | -- You should have received a copy of the GNU General Public License |
|
15 | -- You should have received a copy of the GNU General Public License | |
16 | -- along with this program; if not, write to the Free Software |
|
16 | -- along with this program; if not, write to the Free Software | |
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | -------------------------------------------------------------------------------*/ |
|
18 | -------------------------------------------------------------------------------*/ | |
19 | /*-- Author : Alexis Jeandet |
|
19 | /*-- Author : Alexis Jeandet | |
20 | -- Mail : alexis.jeandet@lpp.polytechnique.fr |
|
20 | -- Mail : alexis.jeandet@lpp.polytechnique.fr | |
21 | ----------------------------------------------------------------------------*/ |
|
21 | ----------------------------------------------------------------------------*/ | |
22 | #ifndef APB_LCD_DRIVER_H |
|
22 | #ifndef APB_LCD_DRIVER_H | |
23 | #define APB_LCD_DRIVER_H |
|
23 | #define APB_LCD_DRIVER_H | |
24 |
|
24 | |||
25 | #define readyFlag 1024 |
|
25 | #define readyFlag 1024 | |
26 | #define lcdCharCnt 80 |
|
26 | #define lcdCharCnt 80 | |
27 |
|
27 | |||
28 |
|
28 | |||
29 | /** @todo implemente some shift functions */ |
|
29 | /** @todo implemente some shift functions */ | |
30 |
|
30 | |||
31 |
|
31 | |||
32 | /*=================================================== |
|
32 | /*=================================================== | |
33 | T Y P E S D E F |
|
33 | T Y P E S D E F | |
34 | ====================================================*/ |
|
34 | ====================================================*/ | |
35 |
|
35 | |||
36 |
|
36 | |||
37 |
|
37 | |||
38 | /** error type used for most of lcd functions */ |
|
38 | /** error type used for most of lcd functions */ | |
39 | typedef int lcd_err; |
|
39 | typedef int lcd_err; | |
40 |
|
40 | |||
41 | /** lcd error ennum for higher abstraction level when error decoding */ |
|
41 | /** lcd error ennum for higher abstraction level when error decoding */ | |
42 | enum lcd_error |
|
42 | enum lcd_error | |
43 | { |
|
43 | { | |
44 | lcd_error_no_error, /**< no error append while function execution */ |
|
44 | lcd_error_no_error, /**< no error append while function execution */ | |
45 | lcd_error_not_ready, /**< the lcd isn't available*/ |
|
45 | lcd_error_not_ready, /**< the lcd isn't available*/ | |
46 | lcd_error_not_openned, /**< the device guiven to the function isn't opened*/ |
|
46 | lcd_error_not_openned, /**< the device guiven to the function isn't opened*/ | |
47 | lcd_error_too_long /**< the string guiven to the lcd is bigger than the lcd frame buffer memory */ |
|
47 | lcd_error_too_long /**< the string guiven to the lcd is bigger than the lcd frame buffer memory */ | |
48 | }; |
|
48 | }; | |
49 |
|
49 | |||
50 |
|
50 | |||
51 | /** for each command sended to the lcd driver a time should be guiven according to the lcd datasheet */ |
|
51 | /** for each command sended to the lcd driver a time should be guiven according to the lcd datasheet */ | |
52 | enum lcd_CMD_time |
|
52 | enum lcd_CMD_time | |
53 | { |
|
53 | { | |
54 | lcd_4us = 0x0FF, |
|
54 | lcd_4us = 0x0FF, | |
55 | lcd_100us = 0x1FF, |
|
55 | lcd_100us = 0x1FF, | |
56 | lcd_4ms = 0x2FF, |
|
56 | lcd_4ms = 0x2FF, | |
57 | lcd_20ms = 0x3FF |
|
57 | lcd_20ms = 0x3FF | |
58 | }; |
|
58 | }; | |
59 |
|
59 | |||
60 | /** list of availiable lcd commands use whith an AND mask whith cmd time */ |
|
60 | /** list of availiable lcd commands use whith an AND mask whith cmd time */ | |
61 | enum lcd_CMD |
|
61 | enum lcd_CMD | |
62 | { |
|
62 | { | |
63 | CursorON = 0xF0E, |
|
63 | CursorON = 0xF0E, | |
64 | CursorOFF = 0xF0C |
|
64 | CursorOFF = 0xF0C | |
65 | }; |
|
65 | }; | |
66 |
|
66 | |||
67 | /** structure representing the lcd registers */ |
|
67 | /** structure representing the lcd registers */ | |
68 | struct lcd_driver |
|
68 | struct lcd_driver | |
69 | { |
|
69 | { | |
70 |
int cfg_reg; /**< Configuration register composed of Ready flag [10], CMD time Value [9:8], |
|
70 | int cfg_reg; /**< Configuration register composed of Ready flag [10], CMD time Value [9:8], | |
|
71 | CMD to send [7:0]*/ | |||
71 | int Frame_buff[lcdCharCnt]; /**< Frame Buffer space each address corresponds to a char on the lcd screen */ |
|
72 | int Frame_buff[lcdCharCnt]; /**< Frame Buffer space each address corresponds to a char on the lcd screen */ | |
72 | }; |
|
73 | }; | |
73 |
|
74 | |||
74 | typedef struct lcd_driver lcd_device; |
|
75 | typedef struct lcd_driver lcd_device; | |
75 |
|
76 | |||
76 | /*=================================================== |
|
77 | /*=================================================== | |
77 | F U N C T I O N S |
|
78 | F U N C T I O N S | |
78 | ====================================================*/ |
|
79 | ====================================================*/ | |
79 |
|
80 | |||
80 | /** says if the lcd is busy */ |
|
81 | /** says if the lcd is busy */ | |
81 | int lcdbusy(lcd_device * lcd); |
|
82 | int lcdbusy(lcd_device * lcd); | |
82 |
|
83 | |||
83 | /** Opens and returns the counth lcd found on APB bus else NULL */ |
|
84 | /** Opens and returns the counth lcd found on APB bus else NULL */ | |
84 | lcd_device* lcdopen(int count); |
|
85 | lcd_device* lcdopen(int count); | |
85 |
|
86 | |||
86 | /** Sends a command to the given device, don't forget to guive the time of the cmd */ |
|
87 | /** Sends a command to the given device, don't forget to guive the time of the cmd */ | |
87 | lcd_err lcdsendcmd(lcd_device* lcd,int cmd); |
|
88 | lcd_err lcdsendcmd(lcd_device* lcd,int cmd); | |
88 |
|
89 | |||
89 | /** Sets a char on the given device at given position */ |
|
90 | /** Sets a char on the given device at given position */ | |
90 | lcd_err lcdsetchar(lcd_device* lcd,int position,const char value); |
|
91 | lcd_err lcdsetchar(lcd_device* lcd,int position,const char value); | |
91 |
|
92 | |||
92 | /** Prints a message on the given device at given position, "\n" is understood but for others use sprintf before */ |
|
93 | /** Prints a message on the given device at given position, "\n" is understood but for others use sprintf before */ | |
93 | lcd_err lcdprint(lcd_device* lcd,int position,const char* value); |
|
94 | lcd_err lcdprint(lcd_device* lcd,int position,const char* value); | |
94 |
|
95 | |||
95 | /** Writes space character on each adress of the lcd screen */ |
|
96 | /** Writes space character on each adress of the lcd screen */ | |
96 | lcd_err lcdclear(lcd_device* lcd); |
|
97 | lcd_err lcdclear(lcd_device* lcd); | |
97 |
|
98 | |||
98 | #endif |
|
99 | #endif |
@@ -1,98 +1,99 | |||||
1 | /*------------------------------------------------------------------------------ |
|
1 | /*------------------------------------------------------------------------------ | |
2 | -- This file is a part of the LPP VHDL IP LIBRARY |
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS |
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
4 | -- |
|
4 | -- | |
5 | -- This program is free software; you can redistribute it and/or modify |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
6 | -- it under the terms of the GNU General Public License as published by |
|
6 | -- it under the terms of the GNU General Public License as published by | |
7 | -- the Free Software Foundation; either version 3 of the License, or |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
8 | -- (at your option) any later version. |
|
8 | -- (at your option) any later version. | |
9 | -- |
|
9 | -- | |
10 | -- This program is distributed in the hope that it will be useful, |
|
10 | -- This program is distributed in the hope that it will be useful, | |
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | -- GNU General Public License for more details. |
|
13 | -- GNU General Public License for more details. | |
14 | -- |
|
14 | -- | |
15 | -- You should have received a copy of the GNU General Public License |
|
15 | -- You should have received a copy of the GNU General Public License | |
16 | -- along with this program; if not, write to the Free Software |
|
16 | -- along with this program; if not, write to the Free Software | |
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | -------------------------------------------------------------------------------*/ |
|
18 | -------------------------------------------------------------------------------*/ | |
19 | /*-- Author : Alexis Jeandet |
|
19 | /*-- Author : Alexis Jeandet | |
20 | -- Mail : alexis.jeandet@lpp.polytechnique.fr |
|
20 | -- Mail : alexis.jeandet@lpp.polytechnique.fr | |
21 | ----------------------------------------------------------------------------*/ |
|
21 | ----------------------------------------------------------------------------*/ | |
22 | #ifndef APB_LCD_DRIVER_H |
|
22 | #ifndef APB_LCD_DRIVER_H | |
23 | #define APB_LCD_DRIVER_H |
|
23 | #define APB_LCD_DRIVER_H | |
24 |
|
24 | |||
25 | #define readyFlag 1024 |
|
25 | #define readyFlag 1024 | |
26 | #define lcdCharCnt 80 |
|
26 | #define lcdCharCnt 80 | |
27 |
|
27 | |||
28 |
|
28 | |||
29 | /** @todo implemente some shift functions */ |
|
29 | /** @todo implemente some shift functions */ | |
30 |
|
30 | |||
31 |
|
31 | |||
32 | /*=================================================== |
|
32 | /*=================================================== | |
33 | T Y P E S D E F |
|
33 | T Y P E S D E F | |
34 | ====================================================*/ |
|
34 | ====================================================*/ | |
35 |
|
35 | |||
36 |
|
36 | |||
37 |
|
37 | |||
38 | /** error type used for most of lcd functions */ |
|
38 | /** error type used for most of lcd functions */ | |
39 | typedef int lcd_err; |
|
39 | typedef int lcd_err; | |
40 |
|
40 | |||
41 | /** lcd error ennum for higher abstraction level when error decoding */ |
|
41 | /** lcd error ennum for higher abstraction level when error decoding */ | |
42 | enum lcd_error |
|
42 | enum lcd_error | |
43 | { |
|
43 | { | |
44 | lcd_error_no_error, /**< no error append while function execution */ |
|
44 | lcd_error_no_error, /**< no error append while function execution */ | |
45 | lcd_error_not_ready, /**< the lcd isn't available*/ |
|
45 | lcd_error_not_ready, /**< the lcd isn't available*/ | |
46 | lcd_error_not_openned, /**< the device guiven to the function isn't opened*/ |
|
46 | lcd_error_not_openned, /**< the device guiven to the function isn't opened*/ | |
47 | lcd_error_too_long /**< the string guiven to the lcd is bigger than the lcd frame buffer memory */ |
|
47 | lcd_error_too_long /**< the string guiven to the lcd is bigger than the lcd frame buffer memory */ | |
48 | }; |
|
48 | }; | |
49 |
|
49 | |||
50 |
|
50 | |||
51 | /** for each command sended to the lcd driver a time should be guiven according to the lcd datasheet */ |
|
51 | /** for each command sended to the lcd driver a time should be guiven according to the lcd datasheet */ | |
52 | enum lcd_CMD_time |
|
52 | enum lcd_CMD_time | |
53 | { |
|
53 | { | |
54 | lcd_4us = 0x0FF, |
|
54 | lcd_4us = 0x0FF, | |
55 | lcd_100us = 0x1FF, |
|
55 | lcd_100us = 0x1FF, | |
56 | lcd_4ms = 0x2FF, |
|
56 | lcd_4ms = 0x2FF, | |
57 | lcd_20ms = 0x3FF |
|
57 | lcd_20ms = 0x3FF | |
58 | }; |
|
58 | }; | |
59 |
|
59 | |||
60 | /** list of availiable lcd commands use whith an AND mask whith cmd time */ |
|
60 | /** list of availiable lcd commands use whith an AND mask whith cmd time */ | |
61 | enum lcd_CMD |
|
61 | enum lcd_CMD | |
62 | { |
|
62 | { | |
63 | CursorON = 0xF0E, |
|
63 | CursorON = 0xF0E, | |
64 | CursorOFF = 0xF0C |
|
64 | CursorOFF = 0xF0C | |
65 | }; |
|
65 | }; | |
66 |
|
66 | |||
67 | /** structure representing the lcd registers */ |
|
67 | /** structure representing the lcd registers */ | |
68 | struct lcd_driver |
|
68 | struct lcd_driver | |
69 | { |
|
69 | { | |
70 |
int cfg_reg; /**< Configuration register composed of Ready flag [10], CMD time Value [9:8], |
|
70 | int cfg_reg; /**< Configuration register composed of Ready flag [10], CMD time Value [9:8], | |
|
71 | CMD to send [7:0]*/ | |||
71 | int Frame_buff[lcdCharCnt]; /**< Frame Buffer space each address corresponds to a char on the lcd screen */ |
|
72 | int Frame_buff[lcdCharCnt]; /**< Frame Buffer space each address corresponds to a char on the lcd screen */ | |
72 | }; |
|
73 | }; | |
73 |
|
74 | |||
74 | typedef struct lcd_driver lcd_device; |
|
75 | typedef struct lcd_driver lcd_device; | |
75 |
|
76 | |||
76 | /*=================================================== |
|
77 | /*=================================================== | |
77 | F U N C T I O N S |
|
78 | F U N C T I O N S | |
78 | ====================================================*/ |
|
79 | ====================================================*/ | |
79 |
|
80 | |||
80 | /** says if the lcd is busy */ |
|
81 | /** says if the lcd is busy */ | |
81 | int lcdbusy(lcd_device * lcd); |
|
82 | int lcdbusy(lcd_device * lcd); | |
82 |
|
83 | |||
83 | /** Opens and returns the counth lcd found on APB bus else NULL */ |
|
84 | /** Opens and returns the counth lcd found on APB bus else NULL */ | |
84 | lcd_device* lcdopen(int count); |
|
85 | lcd_device* lcdopen(int count); | |
85 |
|
86 | |||
86 | /** Sends a command to the given device, don't forget to guive the time of the cmd */ |
|
87 | /** Sends a command to the given device, don't forget to guive the time of the cmd */ | |
87 | lcd_err lcdsendcmd(lcd_device* lcd,int cmd); |
|
88 | lcd_err lcdsendcmd(lcd_device* lcd,int cmd); | |
88 |
|
89 | |||
89 | /** Sets a char on the given device at given position */ |
|
90 | /** Sets a char on the given device at given position */ | |
90 | lcd_err lcdsetchar(lcd_device* lcd,int position,const char value); |
|
91 | lcd_err lcdsetchar(lcd_device* lcd,int position,const char value); | |
91 |
|
92 | |||
92 | /** Prints a message on the given device at given position, "\n" is understood but for others use sprintf before */ |
|
93 | /** Prints a message on the given device at given position, "\n" is understood but for others use sprintf before */ | |
93 | lcd_err lcdprint(lcd_device* lcd,int position,const char* value); |
|
94 | lcd_err lcdprint(lcd_device* lcd,int position,const char* value); | |
94 |
|
95 | |||
95 | /** Writes space character on each adress of the lcd screen */ |
|
96 | /** Writes space character on each adress of the lcd screen */ | |
96 | lcd_err lcdclear(lcd_device* lcd); |
|
97 | lcd_err lcdclear(lcd_device* lcd); | |
97 |
|
98 | |||
98 | #endif |
|
99 | #endif |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now