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:
17:1dafb896c6f5
Parent:
15:b9483ba842c8
--- a/Inits/SSD1306.cpp	Mon Feb 23 23:36:22 2015 +0000
+++ b/Inits/SSD1306.cpp	Tue Feb 24 22:30:05 2015 +0000
@@ -134,3 +134,44 @@
   
     wr_cmd16(0x8100|(o&0xFF));
 }
+
+////////////////////////////////////////////////////////////////////
+// functions that overrides the standard ones implemented in LCD.cpp
+////////////////////////////////////////////////////////////////////
+
+
+const uint8_t scroll_speed[8]={3,2,1,6,0,5,4,7};
+
+////////////////////////////////////////////////////////////////////
+// functions addon  to LCD.cpp
+////////////////////////////////////////////////////////////////////
+void SSD1306::horizontal_scroll(int l_r,int s_page,int e_page,int speed){
+    wr_cmd8(0x2E);                      // deactivate scroll before change
+    if(l_r == 1){
+        wr_cmd16(0x2700);               // horizontal scroll left
+    }
+    else {
+        wr_cmd16(0x2600);
+    }
+    wr_cmd16((s_page & 0x07)<<8 | (scroll_speed[speed & 0x07]));
+    wr_cmd16((e_page & 0x07)<<8 );
+    wr_cmd16(0xFF2F);
+}
+
+void SSD1306::horiz_vert_scroll(int l_r,int s_page,int e_page,int v_off,int speed){
+    wr_cmd8(0x2E);                      // deactivate scroll before change
+    if(l_r == 1){
+            wr_cmd16(0x2A00);               // horizontal scroll left
+        }
+        else {
+            wr_cmd16(0x2900);
+        }
+        wr_cmd16((s_page & 0x07)<<8 | (scroll_speed[speed & 0x07]));
+        wr_cmd16((e_page & 0x07)<<8 | (v_off & 0x3F) );
+        wr_cmd8(0x2F);
+
+}
+
+void SSD1306::end_scroll(){
+    wr_cmd8(0x2E);
+}