added ssd1289_lld
This commit is contained in:
parent
7122ec3d1c
commit
b008620171
@ -0,0 +1,58 @@
|
|||||||
|
#include "ssd1289_lld.h"
|
||||||
|
|
||||||
|
#ifdef LCD_USE_SSD1289
|
||||||
|
|
||||||
|
extern uint16_t lcd_width, lcd_height;
|
||||||
|
|
||||||
|
void lld_lcdWriteIndex(uint16_t index) {
|
||||||
|
Clr_RS;
|
||||||
|
Set_RD;
|
||||||
|
|
||||||
|
palWritePort(LCD_DATA_PORT, index);
|
||||||
|
|
||||||
|
Clr_WR;
|
||||||
|
Set_WR;
|
||||||
|
}
|
||||||
|
|
||||||
|
void lld_lcdWriteData(uint16_t data) {
|
||||||
|
Set_RS;
|
||||||
|
|
||||||
|
palWritePort(LCD_DATA_PORT, data);
|
||||||
|
|
||||||
|
Clr_WR;
|
||||||
|
Set_WR;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t lld_lcdReadData(void) {
|
||||||
|
uint16_t value;
|
||||||
|
|
||||||
|
Set_RS;
|
||||||
|
Set_WR;
|
||||||
|
Clr_RD;
|
||||||
|
|
||||||
|
// change pin mode to digital input
|
||||||
|
LCD_DATA_PORT->CRH = 0x44444444;
|
||||||
|
LCD_DATA_PORT->CRL = 0x44444444;
|
||||||
|
|
||||||
|
value = palReadPort(LCD_DATA_PORT); // dummy
|
||||||
|
value = palReadPort(LCD_DATA_PORT);
|
||||||
|
|
||||||
|
// change pin mode back to digital output
|
||||||
|
LCD_DATA_PORT->CRH = 0x33333333;
|
||||||
|
LCD_DATA_PORT->CRL = 0x33333333;
|
||||||
|
|
||||||
|
Set_RD;
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t lld_lcdGetHeight(void) {
|
||||||
|
return lcd_height;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t lld_lcdGetWidth(void) {
|
||||||
|
return lcd_width;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,15 @@
|
|||||||
|
#ifndef SSD1289_H
|
||||||
|
#define SSD1289_H
|
||||||
|
|
||||||
|
#include "glcd.h"
|
||||||
|
|
||||||
|
#ifndef LCD_USE_SSD1289
|
||||||
|
|
||||||
|
void lld_lcdWriteIndex(uint16_t index);
|
||||||
|
void lld_lcdWriteData(uint16_t data);
|
||||||
|
void lld_lcdWriteData(uint16_t data);
|
||||||
|
uint16_t lld_lcdGetHeight(void);
|
||||||
|
uint16_t lld_lcdGetWidth(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif
|
45
glcd.c
45
glcd.c
@ -8,46 +8,15 @@ static uint8_t font_width = 8, font_height = 16;
|
|||||||
uint16_t lcd_width, lcd_height;
|
uint16_t lcd_width, lcd_height;
|
||||||
|
|
||||||
static __inline void lcdWriteIndex(uint16_t index) {
|
static __inline void lcdWriteIndex(uint16_t index) {
|
||||||
Clr_RS;
|
lld_lcdWriteIndex(index);
|
||||||
Set_RD;
|
|
||||||
|
|
||||||
palWritePort(LCD_DATA_PORT, index);
|
|
||||||
|
|
||||||
Clr_WR;
|
|
||||||
Set_WR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static __inline void lcdWriteData(uint16_t data) {
|
static __inline void lcdWriteData(uint16_t data) {
|
||||||
Set_RS;
|
lld_lcdWriteData(data);
|
||||||
|
|
||||||
palWritePort(LCD_DATA_PORT, data);
|
|
||||||
|
|
||||||
Clr_WR;
|
|
||||||
Set_WR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static __inline uint16_t lcdReadData(void) {
|
static __inline uint16_t lcdReadData(void) {
|
||||||
uint16_t value;
|
return lld_lcdReadData();
|
||||||
|
|
||||||
Set_RS;
|
|
||||||
Set_WR;
|
|
||||||
Clr_RD;
|
|
||||||
|
|
||||||
// change pin mode to digital input
|
|
||||||
LCD_DATA_PORT->CRH = 0x44444444;
|
|
||||||
LCD_DATA_PORT->CRL = 0x44444444;
|
|
||||||
|
|
||||||
|
|
||||||
value = palReadPort(LCD_DATA_PORT); // dummy
|
|
||||||
value = palReadPort(LCD_DATA_PORT);
|
|
||||||
|
|
||||||
// change pin mode back to digital output
|
|
||||||
LCD_DATA_PORT->CRH = 0x33333333;
|
|
||||||
LCD_DATA_PORT->CRL = 0x33333333;
|
|
||||||
|
|
||||||
Set_RD;
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static __inline void lcdWriteReg(uint16_t lcdReg,uint16_t lcdRegValue) {
|
static __inline void lcdWriteReg(uint16_t lcdReg,uint16_t lcdRegValue) {
|
||||||
@ -70,11 +39,11 @@ static __inline uint16_t lcdReadReg(uint16_t lcdReg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint16_t lcdGetHeight(void) {
|
uint16_t lcdGetHeight(void) {
|
||||||
return lcd_height;
|
return lld_lcdGetHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t lcdGetWidth(void) {
|
uint16_t lcdGetWidth(void) {
|
||||||
return lcd_width;
|
return lld_lcdGetWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lcdSetCursor(uint16_t x, uint16_t y) {
|
static void lcdSetCursor(uint16_t x, uint16_t y) {
|
||||||
@ -744,5 +713,9 @@ void lcdInit() {
|
|||||||
lcdWriteReg(0x004e,0);
|
lcdWriteReg(0x004e,0);
|
||||||
}
|
}
|
||||||
lcdDelay(5);
|
lcdDelay(5);
|
||||||
|
|
||||||
|
lcd_height = SCREEN_HEIGHT;
|
||||||
|
lcd_width = SCREEN_WIDTH;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
5
glcd.h
5
glcd.h
@ -1,8 +1,9 @@
|
|||||||
#ifndef GLCD_H
|
#ifndef GLCD_H
|
||||||
#define GLCD_H
|
#define GLCD_H
|
||||||
|
|
||||||
#include <ch.h>
|
#include "ch.h"
|
||||||
#include <hal.h>
|
#include "hal.h"
|
||||||
|
#include "drivers/ssd1289_lld.h"
|
||||||
|
|
||||||
#define SCREEN_WIDTH 240
|
#define SCREEN_WIDTH 240
|
||||||
#define SCREEN_HEIGHT 320
|
#define SCREEN_HEIGHT 320
|
||||||
|
12
lcd.mk
12
lcd.mk
@ -1,8 +1,10 @@
|
|||||||
# LCD files.
|
# LCD files.
|
||||||
LCDSRC = ${CHIBIOS}/ext/lcd/glcd.c \
|
LCDSRC = ${CHIBIOS}/ext/lcd/glcd.c \
|
||||||
${CHIBIOS}/ext/fonts.c \
|
${CHIBIOS}/ext/lcd/fonts.c \
|
||||||
${CHIBIOS}/ext/touchpad.c \
|
${CHIBIOS}/ext/lcd/touchpad.c \
|
||||||
${CHIBIOS}/ext/graph.c \
|
${CHIBIOS}/ext/lcd/graph.c \
|
||||||
${CHIBIOS}/ext/gui.c
|
${CHIBIOS}/ext/lcd/gui.c \
|
||||||
|
${CHIBIOS}/ext/lcd/drivers/ssd1289_lld.c
|
||||||
|
|
||||||
LCDINC = ${CHIBIOS}/ext/lcd
|
LCDINC = ${CHIBIOS}/ext/lcd \
|
||||||
|
${CHIBIOS}/etc/lcd/drivers
|
||||||
|
Loading…
Reference in New Issue
Block a user