Added SPI burst mode to spi 8 bit.

Dependents:   Bicycl_Computer_NUCLEO-F411RE Bicycl_Computer_NUCLEO-L476RG

Fork of UniGraphic by GraphicsDisplay

Added SPI burst mode to this graphics driver. If whoever wants this rolled in to repository let me know. I replaced _spi.write(); with fastWrite(); and clearRX();

SPI8.cpp

// need to re-create SPI firmware to access SPI handle
static SPI_HandleTypeDef SpiHandle;

void SPI8::fastWrite(int data) {
    
      SpiHandle.Instance = SPI1;
    // Check if data is transmitted
    while ((SpiHandle.Instance->SR & SPI_SR_TXE) == 0);
    SpiHandle.Instance->DR = data;
}
    
void SPI8::clearRX( void ) {
        SpiHandle.Instance = SPI1;
    //Check if the RX buffer is busy
    //While busy, keep checking
    while (SpiHandle.Instance->SR & SPI_SR_BSY){   
        // Check RX buffer readable
        while ((SpiHandle.Instance->SR & SPI_SR_RXNE) == 0);
        int dummy = SpiHandle.Instance->DR;
    }
}      
Revision:
33:e3b3181a57e2
Parent:
11:b842b8e332cb
Child:
34:7eea44b19734
--- a/Protocols/SPI8.cpp	Mon Mar 02 10:52:26 2015 +0000
+++ b/Protocols/SPI8.cpp	Wed Apr 12 20:18:25 2017 +0000
@@ -49,7 +49,10 @@
     _CS = 0;
 #endif
     _DC.write(1); // 1=data
-    _spi.write(data);    // write 8bit
+    //_spi.write(data);    // write 8bit
+        fastWrite(data);
+        clearRX();
+    
 #ifdef USE_CS
     _CS = 1;
 #endif
@@ -72,8 +75,11 @@
     _CS = 0;
 #endif
     _DC.write(1); // 1=data
-    _spi.write(data>>8);    // write 8bit
-    _spi.write(data&0xFF);    // write 8bit
+    //_spi.write(data>>8);    // write 8bit
+    //_spi.write(data&0xFF);    // write 8bit
+        fastWrite(data>>8);
+        fastWrite(data&0xFF);
+        clearRX();
 #ifdef USE_CS
     _CS = 1;
 #endif
@@ -84,8 +90,12 @@
     _CS = 0;
 #endif
     _DC.write(1); // 1=data
-    _spi.write(data>>8);    // write 8bit
-    _spi.write(data&0xFF);    // write 8bit
+    //_spi.write(data>>8);    // write 8bit
+   // _spi.write(data&0xFF);    // write 8bit
+    fastWrite(data>>8);
+    fastWrite(data&0xFF);
+    clearRX();
+    
 #ifdef USE_CS
     _CS = 1;
 #endif
@@ -109,10 +119,13 @@
     {
         while(count)
         {
-            _spi.write(data>>8);    // write 8bit
-            _spi.write(data&0xFF);    // write 8bit
-            count--;
+            //_spi.write(data>>8);    // write 8bit
+            //_spi.write(data&0xFF);    // write 8bit
+                        fastWrite(data>>8);
+                        fastWrite(data&0xFF);
+              count--;
         }
+                clearRX();
     }
 #ifdef USE_CS
     _CS = 1;
@@ -126,11 +139,14 @@
     _DC.write(1); // 1=data
     while(lenght)
     {
-        _spi.write((*data)>>8);    // write 8bit
-        _spi.write((*data)&0xFF);    // write 8bit
+        //_spi.write((*data)>>8);    // write 8bit
+        //_spi.write((*data)&0xFF);    // write 8bit
+                fastWrite(*data>>8);
+                fastWrite(*data&0xFF);
         data++;
         lenght--;
     }
+        clearRX();
 #ifdef USE_CS
     _CS = 1;
 #endif
@@ -221,4 +237,26 @@
 void SPI8::BusEnable(bool enable)
 {
     _CS = enable ? 0:1;
-}
\ No newline at end of file
+}
+
+// need to re-create SPI firmware to access SPI handle
+static SPI_HandleTypeDef SpiHandle;
+
+void SPI8::fastWrite(int data) {
+    
+      SpiHandle.Instance = SPI1;
+    // Check if data is transmitted
+    while ((SpiHandle.Instance->SR & SPI_SR_TXE) == 0);
+    SpiHandle.Instance->DR = data;
+}
+    
+void SPI8::clearRX( void ) {
+        SpiHandle.Instance = SPI1;
+    //Check if the RX buffer is busy
+    //While busy, keep checking
+    while (SpiHandle.Instance->SR & SPI_SR_BSY){   
+        // Check RX buffer readable
+        while ((SpiHandle.Instance->SR & SPI_SR_RXNE) == 0);
+        int dummy = SpiHandle.Instance->DR;
+    }
+}       
\ No newline at end of file