source: PlatformSupport/User_IO/util/warp_userioboard_util.h

Last change on this file was 1204, checked in by murphpo, 15 years ago

ongoing refdes13 work

  • Property svn:executable set to *
File size: 10.6 KB
Line 
1/*! \file warp_userioboard_util.h
2 \brief Header file for User I/O Board utility code
3*/
4
5#include "warp_fpga_board.h"
6
7//Function prototypes
8void warp_userioboard_lcd_init(unsigned char slotNumber, unsigned char invertColors);
9int warp_userio_lcd_print(unsigned char* chars, unsigned char numChars, unsigned char line, unsigned char col, unsigned char charBuf);
10int warp_userio_lcd_displayCFimage(const char* filename);
11void warp_userioboard_buzzer_set(unsigned int period, unsigned int enable_thresh);
12
13/************ START LCD Controller ********************/
14#ifdef WARP_FPGA_BOARD_V1_2
15    //Macros that wrap functions
16    #define warp_userio_lcd_printline(chars, numChars, line, charBuf) warp_userio_lcd_print(chars, numChars, line, 0, charBuf)
17
18    //Shortcuts for register writes
19    #define warp_userioboard_set_lcd_charbuf(c) XIo_Out32(XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_CHARACTERSSELECT, c)
20
21    //Shortcuts for memory locations
22    // Each character sub-buffer is 16x16 chars (corresponding to the 256 character blocks on the screen)
23    #define warp_userioboard_get_lcd_charbufaddr(c) (XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_CHARACTERS + c*256*sizeof(char))
24
25    //Shortcuts of the LCD controller shared memory buffers
26    #define LCD_CHAR_BUFFER     XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_CHARACTERS
27    #define LCD_CHARMAP_BUFFER  XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_CHARACTERMAP
28    #define LCD_COMMAND_BUFFER  XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_COMMANDS
29
30    /************ Other I/O ********************/
31    #define warp_userioboard_set_leds(c) XIo_Out32(XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LEDS, 0xFF&c)
32    #define warp_userioboard_set_buzzer_en(c) XIo_Out32(XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_BUZZER_ENABLE, 0x1&c)
33
34    //Shortcuts for register reads
35    #define warp_userioboard_get_leds() XIo_In32(XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LEDS)
36    #define warp_userioboard_get_trackball() XIo_In32(XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_TRACKBALL)
37    #define warp_userioboard_get_dipsw() XIo_In32(XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_DIP_SWITCH)
38    #define warp_userioboard_get_smallbuttons() XIo_In32(XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_BUTTONS_SMALL)
39    #define warp_userioboard_get_bigbuttons() XIo_In32(XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_BUTTONS_BIG)
40
41    #define USER_IO_BOARD_CONTROLLER_LCD_RESETLCD   XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_RESETLCD
42    #define USER_IO_BOARD_CONTROLLER_LCD_BACKGROUNDCOLOR    XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_BACKGROUNDCOLOR
43    #define USER_IO_BOARD_CONTROLLER_LCD_CHARACTERSSELECT   XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_CHARACTERSSELECT
44    #define USER_IO_BOARD_CONTROLLER_LCD_COLSET XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_COLSET
45    #define USER_IO_BOARD_CONTROLLER_LCD_CONFIGLOCATION XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_CONFIGLOCATION
46    #define USER_IO_BOARD_CONTROLLER_LCD_DIVIDERSELECT  XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_DIVIDERSELECT
47    #define USER_IO_BOARD_CONTROLLER_LCD_FIRSTEND   XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_FIRSTEND
48    #define USER_IO_BOARD_CONTROLLER_LCD_FIRSTSTART XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_FIRSTSTART
49    #define USER_IO_BOARD_CONTROLLER_LCD_RAMWRITE   XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_RAMWRITE
50    #define USER_IO_BOARD_CONTROLLER_LCD_ROWSET XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_ROWSET
51    #define USER_IO_BOARD_CONTROLLER_LCD_SECONDEND  XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_SECONDEND
52    #define USER_IO_BOARD_CONTROLLER_LCD_SECONDSTART    XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_SECONDSTART
53    #define USER_IO_BOARD_CONTROLLER_LCD_SEND   XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_SEND
54    #define USER_IO_BOARD_CONTROLLER_LCD_TOTALCMDTRANSFER   XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_TOTALCMDTRANSFER
55    #define USER_IO_BOARD_CONTROLLER_LCD_RESET  XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_RESET
56    #define USER_IO_BOARD_CONTROLLER_LCD_TOTALCMDTRANSFER   XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_TOTALCMDTRANSFER
57    #define USER_IO_BOARD_CONTROLLER_LCD_SEND   XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_SEND
58    #define USER_IO_BOARD_CONTROLLER_LCD_RESET  XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_LCD_RESET
59    #define USER_IO_BOARD_CONTROLLER_BUZZER_PERIOD  XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_BUZZER_PERIOD
60    #define USER_IO_BOARD_CONTROLLER_BUZZER_DUTYCYCLE   XPAR_USER_IO_BOARD_CONTROLLER_PLBW_0_MEMMAP_BUZZER_DUTYCYCLE
61
62#elif defined WARP_FPGA_BOARD_V2_1
63    //Macros that wrap functions
64    #define warp_userio_lcd_printline(chars, numChars, line, charBuf) warp_userio_lcd_print(chars, numChars, line, 0, charBuf)
65
66    //Shortcuts for register writes
67    #define warp_userioboard_set_lcd_charbuf(c) XIo_Out32(XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_CHARACTERSSELECT, c)
68
69    //Shortcuts for memory locations
70    // Each character sub-buffer is 16x16 chars (corresponding to the 256 character blocks on the screen)
71    #define warp_userioboard_get_lcd_charbufaddr(c) (XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_CHARACTERS + c*256*sizeof(char))
72
73    //Shortcuts of the LCD controller shared memory buffers
74    #define LCD_CHAR_BUFFER     XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_CHARACTERS
75    #define LCD_CHARMAP_BUFFER  XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_CHARACTERMAP
76    #define LCD_COMMAND_BUFFER  XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_COMMANDS
77
78    /************ Other I/O ********************/
79    #define warp_userioboard_set_leds(c) XIo_Out32(XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LEDS, 0xFF&c)
80    #define warp_userioboard_set_buzzer_en(c) XIo_Out32(XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_BUZZER_ENABLE, 0x1&c)
81
82    //Shortcuts for register reads
83    #define warp_userioboard_get_leds() XIo_In32(XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LEDS)
84    #define warp_userioboard_get_trackball() XIo_In32(XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_TRACKBALL)
85    #define warp_userioboard_get_dipsw() XIo_In32(XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_DIP_SWITCH)
86    #define warp_userioboard_get_smallbuttons() XIo_In32(XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_BUTTONS_SMALL)
87    #define warp_userioboard_get_bigbuttons() XIo_In32(XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_BUTTONS_BIG)
88
89    #define USER_IO_BOARD_CONTROLLER_LCD_RESETLCD   XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_RESETLCD
90    #define USER_IO_BOARD_CONTROLLER_LCD_BACKGROUNDCOLOR    XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_BACKGROUNDCOLOR
91    #define USER_IO_BOARD_CONTROLLER_LCD_CHARACTERSSELECT   XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_CHARACTERSSELECT
92    #define USER_IO_BOARD_CONTROLLER_LCD_COLSET XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_COLSET
93    #define USER_IO_BOARD_CONTROLLER_LCD_CONFIGLOCATION XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_CONFIGLOCATION
94    #define USER_IO_BOARD_CONTROLLER_LCD_DIVIDERSELECT  XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_DIVIDERSELECT
95    #define USER_IO_BOARD_CONTROLLER_LCD_FIRSTEND   XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_FIRSTEND
96    #define USER_IO_BOARD_CONTROLLER_LCD_FIRSTSTART XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_FIRSTSTART
97    #define USER_IO_BOARD_CONTROLLER_LCD_RAMWRITE   XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_RAMWRITE
98    #define USER_IO_BOARD_CONTROLLER_LCD_ROWSET XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_ROWSET
99    #define USER_IO_BOARD_CONTROLLER_LCD_SECONDEND  XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_SECONDEND
100    #define USER_IO_BOARD_CONTROLLER_LCD_SECONDSTART    XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_SECONDSTART
101    #define USER_IO_BOARD_CONTROLLER_LCD_SEND   XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_SEND
102    #define USER_IO_BOARD_CONTROLLER_LCD_TOTALCMDTRANSFER   XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_TOTALCMDTRANSFER
103    #define USER_IO_BOARD_CONTROLLER_LCD_RESET  XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_RESET
104    #define USER_IO_BOARD_CONTROLLER_LCD_TOTALCMDTRANSFER   XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_TOTALCMDTRANSFER
105    #define USER_IO_BOARD_CONTROLLER_LCD_SEND   XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_SEND
106    #define USER_IO_BOARD_CONTROLLER_LCD_RESET  XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_LCD_RESET
107    #define USER_IO_BOARD_CONTROLLER_BUZZER_PERIOD  XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_BUZZER_PERIOD
108    #define USER_IO_BOARD_CONTROLLER_BUZZER_DUTYCYCLE   XPAR_USER_IO_BOARD_CONTROLLER_SLOT1_MEMMAP_BUZZER_DUTYCYCLE
109
110#endif
111
112//Don't include the initialization command sequence by default (it's in hardware already)
113#define INCLUDE_LCD_INIT_CODE 0
114
115//The LCD controller IC defines a set of commands used to setup/control the LCD from code
116// These commands are taken from the datasheet http://www.sparkfun.com/datasheets/LCD/S1D15G10D08BE_TM_MF1493_03.pdf
117#define LCDCMD_DISON       0x01af
118#define LCDCMD_DISOFF      0x01ae
119#define LCDCMD_DISNOR      0x01a6
120#define LCDCMD_DISINV      0x01a7
121#define LCDCMD_COMSCN      0x01bb
122#define LCDCMD_DISCTL      0x01ca
123#define LCDCMD_SLPIN       0x0195
124#define LCDCMD_SLPOUT      0x0194
125#define LCDCMD_PASET       0x0175
126#define LCDCMD_CASET       0x0115
127#define LCDCMD_DATCTL      0x01bc
128#define LCDCMD_RGBSET8     0x01ce
129#define LCDCMD_RAMWR       0x015c
130#define LCDCMD_RAMRD       0x015d
131#define LCDCMD_PTLIN       0x01a8
132#define LCDCMD_PTLOUT      0x01a9
133#define LCDCMD_RMWIN       0x01e0
134#define LCDCMD_RMWOUT      0x01ee
135#define LCDCMD_ASCSET      0x01aa
136#define LCDCMD_SCSTART     0x01ab
137#define LCDCMD_OSCON       0x01d1
138#define LCDCMD_OSCOFF      0x01d2
139#define LCDCMD_PWRCTR      0x0120
140#define LCDCMD_VOLCTR      0x0181
141#define LCDCMD_VOLUP       0x01d6
142#define LCDCMD_VOLDOWN     0x01d7
143#define LCDCMD_TMPGRD      0x0182
144#define LCDCMD_EPCTIN      0x01cd
145#define LCDCMD_EPCOUT      0x01cc
146#define LCDCMD_EPMWR       0x01fc
147#define LCDCMD_EPMRD       0x01fd
148#define LCDCMD_EPSRRD1     0x017c
149#define LCDCMD_EPSRRD2     0x017d
150#define LCDCMD_NOP         0x0125
151/************ END LCD Controller ********************/
152
153
154//The orientations used in the #defines below assume a user I/O board in slot 1 or 2
155// If mounted in slots 3 or 4, orientations will need to be rotated 180 degrees
156
157//Bit masks for the trackball inputs; each "click" when rolling the trackball corresponds to a switch closing, then opening
158#define TRACKBALL_LEFT 0x01
159#define TRACKBALL_RIGHT 0x02
160#define TRACKBALL_UP 0x04
161#define TRACKBALL_DOWN 0x08
162#define TRACKBALL_PUSH 0x10
163
164//Bit masks for the small push buttons (the six along the LCD's left edge)
165#define PB_SMALL_0 0x01
166#define PB_SMALL_1 0x02
167#define PB_SMALL_2 0x04
168#define PB_SMALL_3 0x08
169#define PB_SMALL_4 0x10
170#define PB_SMALL_5 0x20
171
172//Bit masks for the two large push buttons (under the trackball)
173#define PB_BIG_0 0x1
174#define PB_BIG_1 0x2
175
176//Bit masks for the ring of 8 LEDs; the "south" LED is nearest the trackball
177#define LED_N   0x01
178#define LED_NW  0x02
179#define LED_W   0x04
180#define LED_SW  0x08
181#define LED_S   0x10
182#define LED_SE  0x20
183#define LED_E   0x40
184#define LED_NE  0x80
Note: See TracBrowser for help on using the repository browser.