前几天拿到了一个3.5"的屏,驱动芯片是SSD2119,芯片手册可以在网上下载,从手册中可知其支持9种接口,主要是6800、8080、SPI、RGB这四种形式,为了兼容这些接口,采用了宏定义的方式来解决:
#define SSD2119_INTERFACE_8080_8BIT 1
//#define SSD2119_INTERFACE_8080_9BIT 1
//#define SSD2119_INTERFACE_8080_16BIT 1
//#define SSD2119_INTERFACE_8080_18BIT 1
//#define SSD2119_INTERFACE_6800_8BIT 1
//#define SSD2119_INTERFACE_6800_9BIT 1
//#define SSD2119_INTERFACE_6800_16BIT 1
//#define SSD2119_INTERFACE_6800_18BIT 1
//#define SSD2119_INTERFACE_RGB_6BIT 1
//#define SSD2119_INTERFACE_RGB_18BIT 1
//#define SSD2119_INTERFACE_3SPI 1
//#define SSD2119_INTERFACE_4SPI 1
需要哪种接口,释放该对应的宏定义,同时注释掉其他的。
同样为了开发底层简单以及便于在M3/M0/M4/M0+这些内核芯片上平滑移植,我使用了CooCox开发的一套CoX库。该库可以提高开发者的效率,降低入门门槛。软件平台使用同样是CooCox推出的CoIDE编译器,操作非常简单。下面以8080、8bit为例来说明。
1、定义端口
#define SSD2119_PIN_D17 PD7
#define SSD2119_PIN_D16 PD6
#define SSD2119_PIN_D15 PD5
#define SSD2119_PIN_D14 PD4
#define SSD2119_PIN_D13 PD3
#define SSD2119_PIN_D12 PD2
#define SSD2119_PIN_D11 PD1
#define SSD2119_PIN_D10 PD0
#define SSD2119_PIN_DC PH7
#define SSD2119_PIN_CS PF3
#define SSD2119_PIN_WR PH6
#define SSD2119_PIN_RD PB5
#define SSD2119_PIN_RST PB7
#define SSD2119_PIN_BACKLIGHT PB6
2、端口初始化
xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(SSD2119_PIN_RD));
xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(SSD2119_PIN_WR));
xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(SSD2119_PIN_CS));
xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(SSD2119_PIN_DC));
xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(SSD2119_PIN_D17));
xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(SSD2119_PIN_D16));
xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(SSD2119_PIN_D15));
xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(SSD2119_PIN_D14));
xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(SSD2119_PIN_D13));
xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(SSD2119_PIN_D12));
xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(SSD2119_PIN_D11));
xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(SSD2119_PIN_D10));
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_RD);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_WR);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_CS);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_DC);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_D17);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_D16);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_D15);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_D14);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_D13);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_D12);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_D11);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_D10);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_RST);
xGPIOSPinTypeGPIOOutput(SSD2119_PIN_BACKLIGHT);
//
// Turn on the backlight.
//
xGPIOSPinWrite(SSD2119_PIN_BACKLIGHT, SSD2119_BACKLIGHT_ON);
3、LCD初始化(正在开发中……)
……