Added SPI burst mode to spi 8 bit.
Dependents: Bicycl_Computer_NUCLEO-F411RE Bicycl_Computer_NUCLEO-L476RG
Fork of UniGraphic by
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; } }
Diff: Graphics/GraphicsDisplay.cpp
- Revision:
- 32:9cd6227dc7a6
- Parent:
- 22:f9a37f22b9cb
diff -r ef4225cef157 -r 9cd6227dc7a6 Graphics/GraphicsDisplay.cpp --- a/Graphics/GraphicsDisplay.cpp Fri Apr 01 06:00:02 2016 +0000 +++ b/Graphics/GraphicsDisplay.cpp Mon May 02 22:44:05 2016 +0000 @@ -275,8 +275,6 @@ unsigned char* zeichen; unsigned char z,w,v; - if ((c < firstch) || (c > lastch)) return; // test char range - /* // read font parameter from start of array offset = font[0]; // bytes / char hor = font[1]; // get hor size of font @@ -291,23 +289,30 @@ } } window(char_x, char_y,fonthor*fontzoomhor,fontvert*fontzoomver); // char box - zeichen = &font[((c-firstch) * fontoffset) + 4]; // start of char bitmap - w = zeichen[0]; // width of actual char - // construct the char into the buffer - for (j=0; j<fontvert; j++) { // vert line - for (v=0; v<fontzoomver; v++) { // repeat horiz line for vertical zooming - for (i=0; i<fonthor; i++) { // horz line - z = zeichen[(fontbpl * i) + ((j & 0xF8) >> 3)+1]; - b = 1 << (j & 0x07); - if (( z & b ) == 0x00) { - // pixel(char_x+i,char_y+j,0); - window_pushpixel(_background, fontzoomhor); //(color, howmany) - } else { - // pixel(char_x+i,char_y+j,1); - window_pushpixel(_foreground, fontzoomhor); - } - } - } //for each zoomed vert + if ((c < firstch) || (c > lastch)) { // test char range - if not exist fill with blank + for (i = 0; i < fonthor*fontvert*fontzoomver;i++){ + window_pushpixel(_background, fontzoomhor); //(color, howmany) + } + } + else{ + zeichen = &font[((c-firstch) * fontoffset) + 4]; // start of char bitmap + w = zeichen[0]; // width of actual char + // construct the char into the buffer + for (j=0; j<fontvert; j++) { // vert line + for (v=0; v<fontzoomver; v++) { // repeat horiz line for vertical zooming + for (i=0; i<fonthor; i++) { // horz line + z = zeichen[(fontbpl * i) + ((j & 0xF8) >> 3)+1]; + b = 1 << (j & 0x07); + if (( z & b ) == 0x00) { + // pixel(char_x+i,char_y+j,0); + window_pushpixel(_background, fontzoomhor); //(color, howmany) + } else { + // pixel(char_x+i,char_y+j,1); + window_pushpixel(_foreground, fontzoomhor); + } + } + } //for each zoomed vert + } } if(fontprop) {