From c8141cb788c15706beb92eecec07c146ed6b13b7 Mon Sep 17 00:00:00 2001 From: asterix Date: Thu, 20 May 2010 16:57:41 +0000 Subject: [PATCH] Update board presets. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@3761 38d2e660-2303-0410-9eaa-f027e97ec537 --- boards/ek-lm3s1968/examples/gps/main.c | 2 +- boards/ek-lm3s1968/hw/hw_rit128x96.h | 1 - boards/ek-lpc-p2378/hw/hw_rit128x96.h | 122 +++++++++++++++++++++++++ 3 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 boards/ek-lpc-p2378/hw/hw_rit128x96.h diff --git a/boards/ek-lm3s1968/examples/gps/main.c b/boards/ek-lm3s1968/examples/gps/main.c index afa799b6..5e32dc5e 100644 --- a/boards/ek-lm3s1968/examples/gps/main.c +++ b/boards/ek-lm3s1968/examples/gps/main.c @@ -517,7 +517,7 @@ static struct MenuItem main_items[] = static struct Menu main_menu = { - main_items, "DevelGPS v0.1", MF_STICKY | MF_SAVESEL, &lcd_bitmap, 0 + main_items, "DevelGPS v0.1", MF_STICKY | MF_SAVESEL, &lcd_bitmap, 0, rit128x96_blitBitmap }; static void init(void) diff --git a/boards/ek-lm3s1968/hw/hw_rit128x96.h b/boards/ek-lm3s1968/hw/hw_rit128x96.h index 7ccdeb1d..f31bd56b 100644 --- a/boards/ek-lm3s1968/hw/hw_rit128x96.h +++ b/boards/ek-lm3s1968/hw/hw_rit128x96.h @@ -123,6 +123,5 @@ INLINE void lcd_bus_init(void) * XXX: menu stuff requires lcd_blitBimap() function to be defined. * Find a better way to do this. */ -#define rit128x96_blitBitmap lcd_blitBitmap #endif /* HW_RIT128x96_H */ diff --git a/boards/ek-lpc-p2378/hw/hw_rit128x96.h b/boards/ek-lpc-p2378/hw/hw_rit128x96.h new file mode 100644 index 00000000..2b7caa74 --- /dev/null +++ b/boards/ek-lpc-p2378/hw/hw_rit128x96.h @@ -0,0 +1,122 @@ +/** + * \file + * + * + * \brief LM3S1986: OLED-RIT-128x96 (P14201) low-level hardware macros + * + * \author Andrea Righi + */ + +#ifndef HW_RIT128x96_H +#define HW_RIT128x96_H + +#include "cfg/macros.h" /* BV() */ +#include "cfg/debug.h" + +#include +#include +#include + +#include +#include +#include + +/** + * \name LCD I/O pins/ports + * @{ + */ +/* OLED Data/Command control pin */ +#define GPIO_OLEDDC_PIN BV(2) + +/* OLED enable pin */ +#define GPIO_OLEDEN_PIN BV(3) +/*@}*/ + +/** + * \name LCD bus control macros + * @{ + */ +/* Enter command mode */ +#define LCD_SET_COMMAND() \ + lm3s_gpioPinWrite(GPIO_PORTH_BASE, GPIO_OLEDDC_PIN, 0) + +/* Enter data mode */ +#define LCD_SET_DATA() \ + lm3s_gpioPinWrite(GPIO_PORTH_BASE, GPIO_OLEDDC_PIN, GPIO_OLEDDC_PIN) + +/* Send data to the display */ +#define LCD_WRITE(x) \ + { \ + uint32_t _x; \ + while (!lm3s_ssiWriteFrameNonBlocking(SSI0_BASE, x)); \ + /* Dummy read to drain the FIFO */ \ + while (!lm3s_ssiReadFrameNonBlocking(SSI0_BASE, &_x)); \ + } +/*@}*/ + +INLINE void lcd_bus_init(void) +{ + uint32_t dummy; + + /* Enable the peripheral clock */ + SYSCTL_RCGC1_R |= SYSCTL_RCGC1_SSI0; + SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOA; + SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOH; + lm3s_busyWait(512); + + /* Configure the SSI0CLK and SSIOTX pins for SSI operation. */ + lm3s_gpioPinConfig(GPIO_PORTA_BASE, BV(2) | BV(3) | BV(5), + GPIO_DIR_MODE_HW, GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU); + /* + * Configure the GPIO port pin used as a D/C# signal (data/command + * control) for OLED device, and the port pin used to enable power to + * the OLED panel. + */ + lm3s_gpioPinConfig(GPIO_PORTH_BASE, GPIO_OLEDDC_PIN | GPIO_OLEDEN_PIN, + GPIO_DIR_MODE_OUT, GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD); + lm3s_gpioPinWrite(GPIO_PORTH_BASE, GPIO_OLEDDC_PIN | GPIO_OLEDEN_PIN, + GPIO_OLEDDC_PIN | GPIO_OLEDEN_PIN); + + /* Configure the SSI0 port for master mode */ + lm3s_ssiOpen(SSI0_BASE, SSI_FRF_MOTO_MODE_2, + SSI_MODE_MASTER, CPU_FREQ / 2, 8); + /* + * Configure the GPIO port pin used as a D/Cn signal for OLED device, + * and the port pin used to enable power to the OLED panel. + */ + lm3s_gpioPinConfig(GPIO_PORTA_BASE, GPIO_OLEDEN_PIN, + GPIO_DIR_MODE_HW, GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU); + + /* Drain the SSI RX FIFO */ + while (lm3s_ssiReadFrameNonBlocking(SSI0_BASE, &dummy)); +} + +#endif /* HW_RIT128x96_H */ -- 2.25.1