LCD SPI - Custom SPI LCD Display

Generic HID supports a custom hybrid character/graphic LCD module that uses an SPI interface.  The project to build this display can be found here.

The LCD SPI component will only work with this display.  The display is built around a 320x240 TFT RGB LCD module.  The display driver has 2 fonts (6x13 and 14x26), supports colour, and can draw rectangles.  A sample output is shown here...

The display uses the SPI interface.  There are 4 wires that must be wired correctly to the matching SPI pins on the microcontroller board.  Pins SS/SCK/MOSI/MISO on the display must be connected to SS(PB0)/SCK(PB1)/MOSI(PB2)/MISO(PB3) on the microcontroller board.  This isn't a generic SPI interface, but could be changed in the future. 

USB Interface

GenericHID implements an extended subset of the standard USB HID specification for character display modules.  The following reports are implemented. This is included only if you wish to program your own device.  This information can be retrieved from the HID descriptor reports.  You just need to know the custom usage ids for the extended facilities.


    // Output Report to display text
	USAGE_COLUMN			// column number
	USAGE_ROW			// row number
	USAGE_CURSOR_PIXEL_POSITIONING	// Row/column is a pixel address or character address
	USAGE_DISPLAY_DATA		// display text (one full row)
    // Feature Report to return display attributes
	USAGE_ROWS			// number of rows
	USAGE_COLUMNS			// number of columns

    // Output Report to change the display attributes
	USAGE_CLEAR_DISPLAY		// Clear the display
	USAGE_DISPLAY_BRIGHTNESS	// Set the display backlight brightness
	USAGE_FOREGROUND_COLOUR(FF00)	// 16 bit foreground colour (R:5,G:6,B:5)
	USAGE_BACKGROUND_COLOUR(FF01)	// 16 bit background colour (R:5,G:6,B:5)
	USAGE_SELECT_FONT(FF02)		// select the font
	USAGE_CHAR_ATTR_UNDERLINE	// enable underline (not implemented)
    // Output report to draw a rectangle
	USAGE_RECT_FILLED(FF04)		// filled or outline
	USAGE_RECT_X(FF05)		// x coordinate
	USAGE_RECT_Y(FF06)		// y coordinate
	USAGE_RECT_WIDTH(FF07)		// width
	USAGE_RECT_HEIGHT(FF08)		// height



Components can be given an optional name.  This is seen in the Test tab. Not all applications support the name.  Hidcomp/hidconfig supports names.


The UsagePage and Usage of the display. See Usages for more information.

Note- for an LCD display, this is fixed and cannot be changed.


Defines the amount of electrical current used by the LED in mA. This is used to estimate the USB power draw.  See the section on Power for more information.

LCD displays use very little power to display the LCD text, typically 1-2mA.  The LCD back light, however, are generally power hogs.