diff options
author | inmarket <andrewh@inmarket.com.au> | 2013-10-28 20:04:03 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2013-10-28 20:04:03 +1000 |
commit | 555257933af6e7e3b106ac3589520b5dad45061b (patch) | |
tree | b2c2cd148855bc20ebb476e62e0fa39ed1efbab0 /boards/addons/tdisp | |
parent | dc2d5be60625dc03f0982d61a55dd3ccf844fff5 (diff) | |
download | uGFX-555257933af6e7e3b106ac3589520b5dad45061b.tar.gz uGFX-555257933af6e7e3b106ac3589520b5dad45061b.tar.bz2 uGFX-555257933af6e7e3b106ac3589520b5dad45061b.zip |
Clean up the driver directory structure by moving all board specific files into the boards sub-structure.
Diffstat (limited to 'boards/addons/tdisp')
-rw-r--r-- | boards/addons/tdisp/HD44780/tdisp_lld_board_olimex_e407.h | 59 | ||||
-rw-r--r-- | boards/addons/tdisp/HD44780/tdisp_lld_board_st_stm32f4_discovery.h | 122 |
2 files changed, 181 insertions, 0 deletions
diff --git a/boards/addons/tdisp/HD44780/tdisp_lld_board_olimex_e407.h b/boards/addons/tdisp/HD44780/tdisp_lld_board_olimex_e407.h new file mode 100644 index 00000000..12407356 --- /dev/null +++ b/boards/addons/tdisp/HD44780/tdisp_lld_board_olimex_e407.h @@ -0,0 +1,59 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file drivers/tdisp/HD44780/tdisp_lld_board_olimex_e407.h + * @brief TDISP driver subsystem board interface for the HD44780 display + * + * @addtogroup TDISP + * @{ + */ + +#ifndef _TDISP_LLD_BOARD_H +#define _TDISP_LLD_BOARD_H + +/* Configure these to match the hardware connections on your board */ +#define BUS_4BITS FALSE +#define PORT_DATA GPIOG +#define PORT_CTRL GPIOE +#define PIN_RS 0 +#define PIN_RW 1 +#define PIN_EN 2 + +static void init_board(void) { + palSetGroupMode(PORT_CTRL, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL); + palSetGroupMode(PORT_DATA, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL); + palClearPad(PORT_CTRL, PIN_RW); +} + +static void writeToLCD(uint8_t data) { + palWritePort(PORT_DATA, data); + palSetPad(PORT_CTRL, PIN_EN); + gfxSleepMicroseconds(1); + palClearPad(PORT_CTRL, PIN_EN); + gfxSleepMicroseconds(5); +} + +static void write_cmd(uint8_t data) { + palClearPad(PORT_CTRL, PIN_RS); + #if BUS_4BITS + writeToLCD(data>>4); + #endif + writeToLCD(data); +} + +static void write_data(uint8_t data) { + palSetPad(PORT_CTRL, PIN_RS); + #if BUS_4BITS + writeToLCD(data>>4); + #endif + writeToLCD(data); +} + +#endif /* _TDISP_LLD_BOARD_H */ +/** @} */ + diff --git a/boards/addons/tdisp/HD44780/tdisp_lld_board_st_stm32f4_discovery.h b/boards/addons/tdisp/HD44780/tdisp_lld_board_st_stm32f4_discovery.h new file mode 100644 index 00000000..43e161f1 --- /dev/null +++ b/boards/addons/tdisp/HD44780/tdisp_lld_board_st_stm32f4_discovery.h @@ -0,0 +1,122 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file drivers/tdisp/HD44780/tdisp_lld_board_st_stm32f4_discovery.h + * @brief TDISP driver subsystem board interface for the HD44780 display + * + * @addtogroup TDISP + * @{ + */ + +#ifndef _TDISP_LLD_BOARD_H +#define _TDISP_LLD_BOARD_H + +/* Configure these to match the hardware connections on your board */ +#define BUS_4BITS TRUE + +/* Configure the bitoffset in the dataport so they match with the + * hardware pins. An offset of 0 means bit0 stays at bit0 of the dataport. + * If the offset is set to 3, bit0 of the nibble will be positioned at + * P[A..G]3 of the hardware-port. + */ +#define hardware_offset 3 + +/* The port where the data is sent to. In the + * low-leveldriver het hardware_offset is taken + * into account. If for example the hardware_offset + * is set to 3, then de data will be sent to + * PE3, PE4, PE5 en PE6, if the dataport where GPIOE. + */ +#define PORT_DATA GPIOE + +/* The port used to controle the controle lines of + * the display. + */ +#define PORT_CTRL GPIOD +/* Pin to controle the R/S-line of the display */ +#define PIN_RS 0 +/* Pin to controle the EN-line of the display */ +#define PIN_EN 1 +/* Pin to controle the R/W-pin of the display. + * If reading of the display is not used disable + * reading in the gfxconf.h and put a dummy value here + * as it will not be used. + */ +#define PIN_RW 7 + + +static void init_board(void) { + /* Initialize the ports for data and controle-lines */ + palSetGroupMode(PORT_CTRL, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL); + palSetGroupMode(PORT_DATA, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL); + /* Set alle controle pins to low */ + palClearPad(PORT_CTRL, PIN_RS); + palClearPad(PORT_CTRL, PIN_EN); + #if TDISP_NEED_READ + palClearPad(PORT_CTRL, PIN_RW); + #endif +} + +/* This is the low-level routine for sending the bits + * to the LCD-display. This routine shifts + * the bits so they match the hardware port. + */ +static void writeToLCD(uint8_t data) { + palWritePort(PORT_DATA, data<<hardware_offset); + palSetPad(PORT_CTRL, PIN_EN); + gfxSleepMicroseconds(1); + palClearPad(PORT_CTRL, PIN_EN); + /* wait a little while so that de display can process the data */ + gfxSleepMicroseconds(5); +} + +/* Writes a command to the display. The + * RS-line is pulled low and than the + * data is send. + */ +static void write_cmd(uint8_t data) { + palClearPad(PORT_CTRL, PIN_RS); + #if BUS_4BITS + /* first send the high-nibble */ + writeToLCD(data>>4); + #endif + /* send the low-nibble */ + #if BUS_4BITS + /* in 4-bit mode the high-nibble is zeroed out */ + writeToLCD(data & 0x0F); + #else + writeToLCD(data); + #endif +} + +// static void write_initcmd(uint8_t data) { +// write_cmd(data); +// } + +/* Write data to the display. The + * RS-line is pulled high and than the + * data is send. + */ +static void write_data(uint8_t data) { + palSetPad(PORT_CTRL, PIN_RS); + #if BUS_4BITS + /* first send the high-nibble */ + writeToLCD(data>>4); + #endif + /* send the low-nibble */ + #if BUS_4BITS + /* in 4-bit mode the high-nibble is zeroed out */ + writeToLCD(data & 0x0F); + #else + writeToLCD(data); + #endif +} + +#endif /* _TDISP_LLD_BOARD_H */ +/** @} */ + |