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; } }
Revision 36:0ced7cf0ec8c, committed 2017-08-04
- Comitter:
- trevieze
- Date:
- Fri Aug 04 19:47:21 2017 +0000
- Parent:
- 34:7eea44b19734
- Commit message:
- Added Gimp Graphic Display Routine for Compass
Changed in this revision
Graphics/GraphicsDisplay.cpp | Show annotated file Show diff for this revision Revisions of this file |
Graphics/GraphicsDisplay.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 7eea44b19734 -r 0ced7cf0ec8c Graphics/GraphicsDisplay.cpp --- a/Graphics/GraphicsDisplay.cpp Fri Apr 28 01:45:26 2017 +0000 +++ b/Graphics/GraphicsDisplay.cpp Fri Aug 04 19:47:21 2017 +0000 @@ -333,7 +333,7 @@ } void GraphicsDisplay::Bitmap(int x, int y, int w, int h,unsigned char *bitmap) { - int j; + int i,j; unsigned char padd; unsigned short *bitmap_ptr = (unsigned short *)bitmap; @@ -349,12 +349,34 @@ window(x, y, w-cropX, h-cropY); bitmap_ptr += ((h - 1)* (w + padd)); // begin of last line in array (first line of image)(standard bmp scan direction is left->right bottom->top) for (j = 0; j < h-cropY; j++) { //Lines - window_pushpixelbuf(bitmap_ptr, w-cropX); - bitmap_ptr -= w+padd; + for (i = 0; i < w-cropX; i++) { + window_pushpixelbuf(bitmap_ptr, w-cropX); + //bitmap_ptr++; + bitmap_ptr -= w+padd; + } + bitmap_ptr -= 2*w; + bitmap_ptr -= padd; } if(auto_up) copy_to_lcd(); } +//Draw XBitMap Files (*.xbm), exported from GIMP, +//Usage: Export from GIMP to *.xbm, rename *.xbm to *.c and open in editor. +//C Array can be directly used with this function +void GraphicsDisplay::drawXBitmap(int16_t x, int16_t y,const uint8_t *bitmap, int16_t w, int16_t h,uint16_t color) { + int16_t i, j, byteWidth = (w + 7) >> 3; + window(x, y, w, h); + + for (j=0; j<h; j++) { + for (i=0; i<w; i++ ) { + if (*(bitmap + j * byteWidth + (i >> 3)) & (1 << (i & 7))) { + pixel(x+i, y+j, color); + } + } + } +} + + // local filesystem is not implemented in kinetis board , but you can add a SD card // fixme this whole functions needs testing and speedup int GraphicsDisplay::BMP_16(int x, int y, const char *Name_BMP)
diff -r 7eea44b19734 -r 0ced7cf0ec8c Graphics/GraphicsDisplay.h --- a/Graphics/GraphicsDisplay.h Fri Apr 28 01:45:26 2017 +0000 +++ b/Graphics/GraphicsDisplay.h Fri Aug 04 19:47:21 2017 +0000 @@ -256,8 +256,8 @@ * use Gimp to create / load , save as BMP, option 16 bit R5 G6 B5 * copy to internal file system or SD card */ - int BMP_16(int x, int y, const char *Name_BMP); + int BMP_16(int x, int y, const char *charName_BMP); /** select the font to use @@ -324,6 +324,7 @@ */ bool get_auto_up(void); + void drawXBitmap(int16_t x, int16_t y,const uint8_t *bitmap, int16_t w, int16_t h,uint16_t color); private: