Fast! Install BurstSPI library! https://os.mbed.com/users/peekpt/code/BurstSPI/ New display (greentab2 blue module compact).

Files at this revision

API Documentation at this revision

Comitter:
peekpt
Date:
Fri Apr 24 11:14:56 2020 +0000
Parent:
7:856a3443f68d
Commit message:
ADDED BURST SPI

Changed in this revision

Adafruit_ST7735.cpp Show annotated file Show diff for this revision Revisions of this file
Adafruit_ST7735.h Show annotated file Show diff for this revision Revisions of this file
--- a/Adafruit_ST7735.cpp	Mon Apr 20 18:17:52 2020 +0000
+++ b/Adafruit_ST7735.cpp	Fri Apr 24 11:14:56 2020 +0000
@@ -17,6 +17,7 @@
  ****************************************************/
 
 // + GREENTAB2 display
+// BurstSPI
 
 #include "Adafruit_ST7735.h"
 
@@ -36,14 +37,16 @@
   _rs = 0;
   _cs = 0;
 
-  lcdPort.write(c);
+  lcdPort.fastWrite(c);
+  lcdPort.clearRX();
   _cs = 1;
 }
 
 void Adafruit_ST7735::writedata(uint8_t c) {
   _rs = 1;
   _cs = 0;
-  lcdPort.write(c);
+  lcdPort.fastWrite(c);
+  lcdPort.clearRX();
 
   _cs = 1;
 }
@@ -300,8 +303,11 @@
   _cs = 1;
 
   // use default SPI format
-  lcdPort.format(8, 0);
-  lcdPort.frequency(20000000);
+
+  // lcdPort.format(8, 0);
+  // lcdPort.frequency(4000000);
+
+  lcdPort.setFormat();
 
   // toggle RST low to reset; CS low so it'll listen to us
   _cs = 0;
@@ -371,8 +377,10 @@
   _rs = 1;
   _cs = 0;
 
-  lcdPort.write(color >> 8);
-  lcdPort.write(color);
+  lcdPort.fastWrite(color >> 8);
+  lcdPort.clearRX();
+  lcdPort.fastWrite(color);
+  lcdPort.clearRX();
   _cs = 1;
 }
 
@@ -385,8 +393,10 @@
   _rs = 1;
   _cs = 0;
 
-  lcdPort.write(color >> 8);
-  lcdPort.write(color);
+  lcdPort.fastWrite(color >> 8);
+  lcdPort.clearRX();
+  lcdPort.fastWrite(color);
+  lcdPort.clearRX();
 
   _cs = 1;
 }
@@ -404,8 +414,10 @@
   _rs = 1;
   _cs = 0;
   while (h--) {
-    lcdPort.write(hi);
-    lcdPort.write(lo);
+    lcdPort.fastWrite(hi);
+    lcdPort.clearRX();
+    lcdPort.fastWrite(lo);
+    lcdPort.clearRX();
   }
   _cs = 1;
 }
@@ -423,8 +435,10 @@
   _rs = 1;
   _cs = 0;
   while (w--) {
-    lcdPort.write(hi);
-    lcdPort.write(lo);
+    lcdPort.fastWrite(hi);
+    lcdPort.clearRX();
+    lcdPort.fastWrite(lo);
+    lcdPort.clearRX();
   }
   _cs = 1;
 }
@@ -451,8 +465,10 @@
   _cs = 0;
   for (y = h; y > 0; y--) {
     for (x = w; x > 0; x--) {
-      lcdPort.write(hi);
-      lcdPort.write(lo);
+      lcdPort.fastWrite(hi);
+      lcdPort.clearRX();
+      lcdPort.fastWrite(lo);
+      lcdPort.clearRX();
     }
   }
 
@@ -535,4 +551,4 @@
 
 void Adafruit_ST7735::invertDisplay(boolean i) {
   writecommand(i ? ST7735_INVON : ST7735_INVOFF);
-}
+}
\ No newline at end of file
--- a/Adafruit_ST7735.h	Mon Apr 20 18:17:52 2020 +0000
+++ b/Adafruit_ST7735.h	Fri Apr 24 11:14:56 2020 +0000
@@ -16,16 +16,16 @@
   MIT license, all text above must be included in any redistribution
  ****************************************************/
 
-
- // + GREENTAB2 display 
+// + GREENTAB2 display
+// BurstSPI
 
 #ifndef _ADAFRUIT_ST7735H_
 #define _ADAFRUIT_ST7735H_
 
 #include "Adafruit_GFX.h"
+#include "BurstSPI.h"
 #include "mbed.h"
 
-
 #define boolean bool
 
 // some flags for initR() :(
@@ -102,6 +102,7 @@
 #define ST7735_MAGENTA 0xF81F
 #define ST7735_YELLOW 0xFFE0
 #define ST7735_WHITE 0xFFFF
+#define ST7735_ORANGE 0xFC00
 
 class Adafruit_ST7735 : public Adafruit_GFX {
 
@@ -131,10 +132,10 @@
 
   uint8_t colstart, rowstart; // some displays need this changed
 
-  SPI lcdPort;     // does SPI MOSI, MISO and SCK
-  DigitalOut _cs;  // does SPI CE
-  DigitalOut _rs;  // register/date select
-  DigitalOut _rst; // does 3310 LCD_RST
+  BurstSPI lcdPort; // does SPI MOSI, MISO and SCK
+  DigitalOut _cs;   // does SPI CE
+  DigitalOut _rs;   // register/date select
+  DigitalOut _rst;  // does 3310 LCD_RST
 };
 
-#endif
+#endif
\ No newline at end of file