From 117e195354853ce2b53afef4ebb5860bf44fdde2 Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 21 Aug 2014 09:11:10 +1000 Subject: Update to the SPFD54124B gdisp driver. Added an example board file for it to the boards/addons/gdisp directory --- boards/addons/gdisp/board_SPFD54124B_stm32f3.h | 203 +++++++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 boards/addons/gdisp/board_SPFD54124B_stm32f3.h (limited to 'boards') diff --git a/boards/addons/gdisp/board_SPFD54124B_stm32f3.h b/boards/addons/gdisp/board_SPFD54124B_stm32f3.h new file mode 100644 index 00000000..765af495 --- /dev/null +++ b/boards/addons/gdisp/board_SPFD54124B_stm32f3.h @@ -0,0 +1,203 @@ +/* + * 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 + * + * Mail: fede.677387@hotmail.it + * + * Board: STM32F3-Discovery + */ + +/** + * @file boards/addons/gdisp/board_SPFD54124B_stm32f3.h + * @brief GDISP Graphic Driver subsystem board interface for the SPFD54124B display. + */ + +#ifndef _GDISP_LLD_BOARD_H +#define _GDISP_LLD_BOARD_H + +#define SPFD54124B_SPID SPID2 + +#define SPFD54124B_SPI_PORT GPIOB +#define SPFD54124B_SPI_NSS 12 +#define SPFD54124B_SPI_SCK 13 +#define SPFD54124B_SPI_MISO 14 // not used +#define SPFD54124B_SPI_MOSI 15 + +#define SPFD54124B_PIN_PORT GPIOA +#define SPFD54124B_PIN_RST 5 + +#define SET_RST palSetPad(SPFD54124B_PIN_PORT, SPFD54124B_PIN_RST); +#define CLR_RST palClearPad(SPFD54124B_PIN_PORT, SPFD54124B_PIN_RST); + +#define USE_SOFT_SPI TRUE +#define USE_HARD_SPI !(USE_SOFT_SPI) + +#if USE_HARD_SPI + +#if GFX_USE_OS_CHIBIOS +static int32_t thdPriority = 0; +#endif + +/* + * Maximum speed SPI configuration in 9 bit mode + */ +static const SPIConfig hs_spicfg = { + NULL, /* Operation complete callback or @p NULL. */ + SPFD54124B_SPI_PORT, /* The chip select line port */ + SPFD54124B_SPI_NSS, /* The chip select line pad number */ + 0, /* SPI CR1 register initialization data*/ + SPI_CR2_DS_3 /* SPI CR2 register initialization data 9-bit */ +}; +#endif + +#if USE_SOFT_SPI +static inline void soft_spi_sck(void){ + palSetPad(SPFD54124B_SPI_PORT, SPFD54124B_SPI_SCK); + palClearPad(SPFD54124B_SPI_PORT, SPFD54124B_SPI_SCK); +} + +static inline void soft_spi_write_9bit(uint16_t data){ + + uint8_t i; + + // activate lcd by low on CS pin + palClearPad(SPFD54124B_SPI_PORT, SPFD54124B_SPI_NSS); + + for (i=0; i<9; i++){ + // setting data + if(data & (SPFD54124B_SEND_DATA >> i)) { + palSetPad(SPFD54124B_SPI_PORT, SPFD54124B_SPI_MOSI); + } + else palClearPad(SPFD54124B_SPI_PORT, SPFD54124B_SPI_MOSI); + // clock data + soft_spi_sck(); + } + + //deactivate lcd by high on CS pin + palSetPad(SPFD54124B_SPI_PORT, SPFD54124B_SPI_NSS); + +} +#endif + +static inline void setpin_reset(GDisplay *g, bool_t state) { + (void) g; + if(state) { + CLR_RST; + } else { + SET_RST; + } +} + +static inline void init_board(GDisplay *g) { + // As we are not using multiple displays we set g->board to NULL as we don't use it. + g->board = 0; + + switch(g->controllerdisplay) { + case 0: // Set up for Display 0 + /* + * SPI1 I/O pins setup. + */ + palSetPadMode(SPFD54124B_PIN_PORT, SPFD54124B_PIN_RST, PAL_MODE_OUTPUT_PUSHPULL); /* RESET */ + setpin_reset(g, TRUE); + +#if USE_HARD_SPI + palSetPadMode(SPFD54124B_SPI_PORT, SPFD54124B_SPI_SCK, PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* SCK. */ + palSetPadMode(SPFD54124B_SPI_PORT, SPFD54124B_SPI_MISO, PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* MISO.*/ + palSetPadMode(SPFD54124B_SPI_PORT, SPFD54124B_SPI_MOSI, PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* MOSI.*/ + palSetPadMode(SPFD54124B_SPI_PORT, SPFD54124B_SPI_NSS, PAL_MODE_OUTPUT_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); /* NSS */ + palSetPad(SPFD54124B_SPI_PORT, SPFD54124B_SPI_NSS); + palClearPad(SPFD54124B_SPI_PORT, SPFD54124B_SPI_SCK); + palClearPad(SPFD54124B_SPI_PORT, SPFD54124B_SPI_MOSI); + spiInit(); +#endif + +#if USE_SOFT_SPI + palSetPadMode(SPFD54124B_SPI_PORT, SPFD54124B_SPI_SCK, PAL_MODE_OUTPUT_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); /* SCK. */ + palSetPadMode(SPFD54124B_SPI_PORT, SPFD54124B_SPI_MISO, PAL_MODE_OUTPUT_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); /* MISO.*/ + palSetPadMode(SPFD54124B_SPI_PORT, SPFD54124B_SPI_MOSI, PAL_MODE_OUTPUT_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); /* MOSI.*/ + palSetPadMode(SPFD54124B_SPI_PORT, SPFD54124B_SPI_NSS, PAL_MODE_OUTPUT_PUSHPULL | PAL_STM32_OSPEED_HIGHEST); /* NSS */ + palSetPad(SPFD54124B_SPI_PORT, SPFD54124B_SPI_NSS); + palClearPad(SPFD54124B_SPI_PORT, SPFD54124B_SPI_SCK); + palClearPad(SPFD54124B_SPI_PORT, SPFD54124B_SPI_MOSI); +#endif + + break; + } +} + +static inline void acquire_bus(GDisplay *g) { + (void) g; +#if USE_HARD_SPI +#if GFX_USE_OS_CHIBIOS + thdPriority = (int32_t)chThdGetPriority(); + chThdSetPriority(HIGHPRIO); +#endif + spiAcquireBus(&SPFD54124B_SPID); +#endif +} + +static inline void release_bus(GDisplay *g) { + (void) g; +#if USE_HARD_SPI +#if GFX_USE_OS_CHIBIOS + chThdSetPriority(thdPriority); +#endif + spiReleaseBus(&SPFD54124B_SPID); +#endif +} + +static inline void write_data(GDisplay *g, uint16_t data) { + (void) g; + + uint16_t b; + +#if USE_HARD_SPI + + spiStart(&SPFD54124B_SPID, &hs_spicfg); + spiSelect(&SPFD54124B_SPID); + + b = (data >> 0x08) | SPFD54124B_SEND_DATA; + spiSend(&SPFD54124B_SPID, 0x01, &b); + b = (data & 0xFF) | SPFD54124B_SEND_DATA; + spiSend(&SPFD54124B_SPID, 0x01, &b); + + spiUnselect(&SPFD54124B_SPID); + spiStop(&SPFD54124B_SPID); + +#endif +#if USE_SOFT_SPI + b = (data >> 0x08) | SPFD54124B_SEND_DATA; + soft_spi_write_9bit(b); + b = (data & 0xFF) | SPFD54124B_SEND_DATA; + soft_spi_write_9bit(b); +#endif + +} + +static inline void write_index(GDisplay *g, uint16_t index) { + (void) g; + +#if USE_HARD_SPI + spiStart(&SPFD54124B_SPID, &hs_spicfg); + spiSelect(&SPFD54124B_SPID); + spiSend(&SPFD54124B_SPID, 0x01, &index); + spiUnselect(&SPFD54124B_SPID); + spiStop(&SPFD54124B_SPID); +#endif +#if USE_SOFT_SPI + soft_spi_write_9bit(index); +#endif +} + +static inline void post_init_board(GDisplay *g) { + (void) g; +} + +static inline void set_backlight(GDisplay *g, uint8_t percent) { + (void) g; + (void) percent; +} + +#endif /* _GDISP_LLD_BOARD_H */ -- cgit v1.2.3 From 7c791f2a9204f892e141d03163c9bcb36b335b41 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Thu, 21 Aug 2014 18:33:07 +0200 Subject: board file compiler warning --- .../addons/gdisp/board_SSD1289_stm32f4discovery.h | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'boards') diff --git a/boards/addons/gdisp/board_SSD1289_stm32f4discovery.h b/boards/addons/gdisp/board_SSD1289_stm32f4discovery.h index acbe16c0..6198b73a 100644 --- a/boards/addons/gdisp/board_SSD1289_stm32f4discovery.h +++ b/boards/addons/gdisp/board_SSD1289_stm32f4discovery.h @@ -25,16 +25,17 @@ /* PWM configuration structure. We use timer 3 channel 3 */ static const PWMConfig pwmcfg = { - 100000, /* 100 kHz PWM clock frequency. */ - 100, /* PWM period is 100 cycles. */ - 0, - { - {PWM_OUTPUT_DISABLED, 0}, - {PWM_OUTPUT_DISABLED, 0}, - {PWM_OUTPUT_ACTIVE_HIGH, 0}, - {PWM_OUTPUT_DISABLED, 0} - }, - 0 + 100000, /* 100 kHz PWM clock frequency. */ + 100, /* PWM period is 100 cycles. */ + 0, + { + {PWM_OUTPUT_DISABLED, 0}, + {PWM_OUTPUT_DISABLED, 0}, + {PWM_OUTPUT_ACTIVE_HIGH, 0}, + {PWM_OUTPUT_DISABLED, 0} + }, + 0, + 0 }; static inline void init_board(GDisplay *g) { -- cgit v1.2.3 From 1a495f30130a0cc329f33dff7ad15b65221cd1b9 Mon Sep 17 00:00:00 2001 From: inmarket Date: Fri, 22 Aug 2014 18:20:02 +1000 Subject: Rename all driver makefiles to driver.mk --- boards/base/Embest-STM32-DMSTF4BB/board.mk | 4 ++-- boards/base/FireBull-STM32F103-FB/board.mk | 4 ++-- boards/base/Linux/board.mk | 2 +- boards/base/Marlin/board.mk | 4 ++-- boards/base/Mikromedia-STM32-M4-ILI9341/board.mk | 4 ++-- boards/base/Olimex-SAM7EX256-GE12/board.mk | 8 ++++---- boards/base/Olimex-SAM7EX256-GE8/board.mk | 8 ++++---- boards/base/Olimex-STM32-LCD/board.mk | 4 ++-- 8 files changed, 19 insertions(+), 19 deletions(-) (limited to 'boards') diff --git a/boards/base/Embest-STM32-DMSTF4BB/board.mk b/boards/base/Embest-STM32-DMSTF4BB/board.mk index 3795b43d..9deacc08 100644 --- a/boards/base/Embest-STM32-DMSTF4BB/board.mk +++ b/boards/base/Embest-STM32-DMSTF4BB/board.mk @@ -3,6 +3,6 @@ GFXSRC += GFXDEFS += -DGFX_USE_CHIBIOS=TRUE include $(GFXLIB)/boards/base/Embest-STM32-DMSTF4BB/chibios_board/board.mk -include $(GFXLIB)/drivers/gdisp/SSD2119/gdisp_lld.mk -include $(GFXLIB)/drivers/ginput/touch/STMPE811/ginput_lld.mk +include $(GFXLIB)/drivers/gdisp/SSD2119/driver.mk +include $(GFXLIB)/drivers/ginput/touch/STMPE811/driver.mk diff --git a/boards/base/FireBull-STM32F103-FB/board.mk b/boards/base/FireBull-STM32F103-FB/board.mk index 8f3e43c0..11714dc7 100644 --- a/boards/base/FireBull-STM32F103-FB/board.mk +++ b/boards/base/FireBull-STM32F103-FB/board.mk @@ -3,6 +3,6 @@ GFXSRC += GFXDEFS += -DGFX_USE_CHIBIOS=TRUE include $(GFXLIB)/boards/base/FireBull-STM32F103-FB/chibios_board/board.mk -include $(GFXLIB)/drivers/gdisp/SSD1289/gdisp_lld.mk -include $(GFXLIB)/drivers/ginput/touch/ADS7843/ginput_lld.mk +include $(GFXLIB)/drivers/gdisp/SSD1289/driver.mk +include $(GFXLIB)/drivers/ginput/touch/ADS7843/driver.mk diff --git a/boards/base/Linux/board.mk b/boards/base/Linux/board.mk index 8c480766..4334c2fc 100644 --- a/boards/base/Linux/board.mk +++ b/boards/base/Linux/board.mk @@ -2,5 +2,5 @@ GFXINC += $(GFXLIB)/boards/base/Linux GFXSRC += GFXDEFS += -DGFX_USE_OS_LINUX=TRUE -include $(GFXLIB)/drivers/multiple/X/gdisp_lld.mk +include $(GFXLIB)/drivers/multiple/X/driver.mk diff --git a/boards/base/Marlin/board.mk b/boards/base/Marlin/board.mk index 14e8132d..ac3d55f1 100644 --- a/boards/base/Marlin/board.mk +++ b/boards/base/Marlin/board.mk @@ -3,6 +3,6 @@ GFXSRC += GFXDEFS += -DGFX_USE_CHIBIOS=TRUE include $(GFXLIB)/boards/base/Marlin/chibios_board/board.mk -include $(GFXLIB)/drivers/gdisp/RA8875/gdisp_lld.mk -include $(GFXLIB)/drivers/ginput/touch/FT5x06/ginput_lld.mk +include $(GFXLIB)/drivers/gdisp/RA8875/driver.mk +include $(GFXLIB)/drivers/ginput/touch/FT5x06/driver.mk diff --git a/boards/base/Mikromedia-STM32-M4-ILI9341/board.mk b/boards/base/Mikromedia-STM32-M4-ILI9341/board.mk index b18bf8f5..0f472bcc 100644 --- a/boards/base/Mikromedia-STM32-M4-ILI9341/board.mk +++ b/boards/base/Mikromedia-STM32-M4-ILI9341/board.mk @@ -1,6 +1,6 @@ GFXINC += $(GFXLIB)/boards/base/Mikromedia-STM32-M4-ILI9341 GFXSRC += GFXDEFS += -DGFX_USE_OS_CHIBIOS=TRUE -include $(GFXLIB)/drivers/gdisp/ILI9341/gdisp_lld.mk -include $(GFXLIB)/drivers/ginput/touch/MCU/ginput_lld.mk +include $(GFXLIB)/drivers/gdisp/ILI9341/driver.mk +include $(GFXLIB)/drivers/ginput/touch/MCU/driver.mk include $(GFXLIB)/drivers/gaudio/vs1053/driver.mk diff --git a/boards/base/Olimex-SAM7EX256-GE12/board.mk b/boards/base/Olimex-SAM7EX256-GE12/board.mk index 2ef53142..ec712c18 100644 --- a/boards/base/Olimex-SAM7EX256-GE12/board.mk +++ b/boards/base/Olimex-SAM7EX256-GE12/board.mk @@ -1,8 +1,8 @@ GFXINC += $(GFXLIB)/boards/base/Olimex-SAM7EX256-GE12 $(GFXLIB)/boards/base/Olimex-SAM7EX256-GE8 GFXSRC += GFXDEFS += -DGFX_USE_OS_CHIBIOS=TRUE -include $(GFXLIB)/drivers/gdisp/Nokia6610GE12/gdisp_lld.mk -include $(GFXLIB)/drivers/gadc/AT91SAM7/gadc_lld.mk -include $(GFXLIB)/drivers/ginput/dial/GADC/ginput_lld.mk -include $(GFXLIB)/drivers/ginput/toggle/Pal/ginput_lld.mk +include $(GFXLIB)/drivers/gdisp/Nokia6610GE12/driver.mk +include $(GFXLIB)/drivers/gadc/AT91SAM7/driver.mk +include $(GFXLIB)/drivers/ginput/dial/GADC/driver.mk +include $(GFXLIB)/drivers/ginput/toggle/Pal/driver.mk include $(GFXLIB)/drivers/gaudio/gadc/driver.mk diff --git a/boards/base/Olimex-SAM7EX256-GE8/board.mk b/boards/base/Olimex-SAM7EX256-GE8/board.mk index 98119565..031bbe61 100644 --- a/boards/base/Olimex-SAM7EX256-GE8/board.mk +++ b/boards/base/Olimex-SAM7EX256-GE8/board.mk @@ -1,9 +1,9 @@ GFXINC += $(GFXLIB)/boards/base/Olimex-SAM7EX256-GE8 GFXSRC += GFXDEFS += -DGFX_USE_OS_CHIBIOS=TRUE -include $(GFXLIB)/drivers/gdisp/Nokia6610GE8/gdisp_lld.mk -include $(GFXLIB)/drivers/gadc/AT91SAM7/gadc_lld.mk -include $(GFXLIB)/drivers/ginput/dial/GADC/ginput_lld.mk -include $(GFXLIB)/drivers/ginput/toggle/Pal/ginput_lld.mk +include $(GFXLIB)/drivers/gdisp/Nokia6610GE8/driver.mk +include $(GFXLIB)/drivers/gadc/AT91SAM7/driver.mk +include $(GFXLIB)/drivers/ginput/dial/GADC/driver.mk +include $(GFXLIB)/drivers/ginput/toggle/Pal/driver.mk include $(GFXLIB)/drivers/gaudio/gadc/driver.mk include $(GFXLIB)/drivers/gaudio/pwm/driver.mk diff --git a/boards/base/Olimex-STM32-LCD/board.mk b/boards/base/Olimex-STM32-LCD/board.mk index a1e4b935..2dd9d97a 100644 --- a/boards/base/Olimex-STM32-LCD/board.mk +++ b/boards/base/Olimex-STM32-LCD/board.mk @@ -3,6 +3,6 @@ GFXSRC += GFXDEFS += -DGFX_USE_CHIBIOS=TRUE include $(GFXLIB)/boards/base/Olimex-STM32-LCD/chibios_board/board.mk -include $(GFXLIB)/drivers/gdisp/ILI9320/gdisp_lld.mk -include $(GFXLIB)/drivers/ginput/touch/MCU/ginput_lld.mk +include $(GFXLIB)/drivers/gdisp/ILI9320/driver.mk +include $(GFXLIB)/drivers/ginput/touch/MCU/driver.mk -- cgit v1.2.3