Driver Library for our displays

Dependents:   dm_bubbles dm_calc dm_paint dm_sdcard_with_adapter ... more

Revision:
14:2db7065edbec
Parent:
0:d6ff5fa503e8
--- a/DmTftIli9341.cpp	Fri Sep 18 14:59:13 2015 +0000
+++ b/DmTftIli9341.cpp	Mon Oct 12 08:35:35 2015 +0000
@@ -10,31 +10,28 @@
  NO RESPONSIBILITY OR LIABILITY FOR THE USE OF THE SOFTWARE.
  ********************************************************************************************/
 
+//Tested on NUCLEO-F401RE, LPCXpresso11U68, LPCXpresso824-MAX platform.
+
 #include "DmTftIli9341.h"
 #if defined (DM_TOOLCHAIN_ARDUINO)
 DmTftIli9341::DmTftIli9341(uint8_t cs, uint8_t dc)
+:DmTftBase(240, 320)
 #elif defined (DM_TOOLCHAIN_MBED)
-DmTftIli9341::DmTftIli9341(uint8_t cs, uint8_t dc, uint8_t miso, uint8_t mosi, uint8_t clk)
+DmTftIli9341::DmTftIli9341(PinName cs, PinName dc, PinName mosi, PinName miso, PinName clk)
+:DmTftBase(240, 320), spi(mosi, miso, clk)
 #endif
-: DmTftBase(240, 320){
+{
   _cs = cs;
   _dc = dc;
-#if defined (DM_TOOLCHAIN_MBED)
-  _miso = miso;
-  _mosi = mosi;
-  _clk = clk;
-#endif
 }
 
 DmTftIli9341::~DmTftIli9341() {
 #if defined (DM_TOOLCHAIN_MBED)
 delete _pinCS;
 delete _pinDC;
-delete _spi;
 
 _pinCS = NULL;
 _pinDC = NULL;
-_spi = NULL;
 #endif
 }
 
@@ -44,34 +41,27 @@
   SPDR = data;                 // SPI Data Register
   while(!(SPSR & _BV(SPIF)));  // SPI Status Register Wait for transmission to finish
 #elif defined (DM_TOOLCHAIN_MBED)
-  _spi->write(data);
+  spi.write(data);
 #endif
 }
 
 void DmTftIli9341::sendCommand(uint8_t index) {
-  // cbi(_pinCS, _bitmaskCS);
   cbi(_pinDC, _bitmaskDC);
-
   writeBus(index);
-  // sbi(_pinCS, _bitmaskCS);
 }
 
 void DmTftIli9341::send8BitData(uint8_t data) {
-  //cbi(_pinCS, _bitmaskCS);
   sbi(_pinDC, _bitmaskDC);
   writeBus(data);
-  //sbi(_pinCS, _bitmaskCS);
 }
 
 void DmTftIli9341::sendData(uint16_t data) {
   uint8_t dh = data>>8;
   uint8_t dl = data&0xff;
 
-  //cbi(_pinCS, _bitmaskCS);
   sbi(_pinDC, _bitmaskDC);
   writeBus(dh);
   writeBus(dl);
-  //sbi(_pinCS, _bitmaskCS);
 }
 
 void DmTftIli9341::setAddress(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
@@ -104,13 +94,12 @@
   SPI.setDataMode(SPI_MODE0);
   _spiSettings = SPCR;
 #elif defined (DM_TOOLCHAIN_MBED)
-  _pinCS = new DigitalOut((PinName)_cs);
-  _pinDC = new DigitalOut((PinName)_dc);
+  _pinCS = new DigitalOut(_cs);
+  _pinDC = new DigitalOut(_dc);
   sbi(_pinCS, _bitmaskCS);
-
-  _spi = new SPI((PinName)_mosi, (PinName)_miso, (PinName)_clk);
-  _spi->format(8,0);
-  _spi->frequency(8000000); // Max SPI speed for display is 10 and for 17 for LPC15xx
+  
+  spi.format(8,0);
+  spi.frequency(8000000); // Max SPI speed for display is 10 and for 17 for LPC15xx  
 #endif
   cbi(_pinCS, _bitmaskCS);
   delay(135); // This much delay needed??