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:
21:ae0a4eedfc90
Parent:
20:14daa48ffd4c
Child:
25:daacdcf34e52
diff -r 14daa48ffd4c -r ae0a4eedfc90 Display/LCD.cpp
--- a/Display/LCD.cpp	Mon Mar 23 14:08:04 2015 +0000
+++ b/Display/LCD.cpp	Tue Mar 31 21:14:48 2015 +0000
@@ -41,6 +41,28 @@
   //  cls();
   //  locate(0,0);
 }
+LCD::LCD(proto_t displayproto, PinName* buspins, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const int lcdsize_x, const int lcdsize_y, const int ic_x_segs, const int ic_y_coms, const char *name)
+    : GraphicsDisplay(name), screensize_X(lcdsize_x), screensize_Y(lcdsize_y), _LCDPAGES(lcdsize_y>>3), _IC_X_SEGS(ic_x_segs), _IC_Y_COMS(ic_y_coms), _IC_PAGES(ic_y_coms>>3)
+{
+    if(displayproto==BUS_8)
+    {
+        PinName pins[16];
+        for(int i=0; i<16; i++) pins[i]=NC;
+        for(int i=0; i<8; i++) pins[i]=buspins[i];
+        proto = new BUS8(pins, CS, reset, DC, WR, RD);
+    }
+    useNOP=false;
+    buffer = (unsigned char*) malloc (screensize_X*_LCDPAGES);
+    buffer16 = (unsigned short*)buffer;
+    draw_mode = NORMAL;
+    set_orientation(1);
+    foreground(White);
+    background(Black);
+    set_auto_up(true);
+    tftID=0;
+  //  cls();
+  //  locate(0,0);
+}
 LCD::LCD(proto_t displayproto, int Hz, PinName mosi, PinName miso, PinName sclk, PinName CS, PinName reset, PinName DC, const int lcdsize_x, const int lcdsize_y, const int ic_x_segs, const int ic_y_coms, const char *name)
     : GraphicsDisplay(name), screensize_X(lcdsize_x), screensize_Y(lcdsize_y), _LCDPAGES(lcdsize_y>>3), _IC_X_SEGS(ic_x_segs), _IC_Y_COMS(ic_y_coms), _IC_PAGES(ic_y_coms>>3)
 {