older Version without DMA

Fork of SPI_TFT by Peter Drescher

Files at this revision

API Documentation at this revision

Comitter:
dreschpe
Date:
Wed Jul 13 08:25:10 2011 +0000
Parent:
0:cccc5726bdf3
Child:
2:0cc880f230ad
Commit message:
Add Docu

Changed in this revision

SPI_TFT.c Show annotated file Show diff for this revision Revisions of this file
SPI_TFT.h Show annotated file Show diff for this revision Revisions of this file
--- a/SPI_TFT.c	Tue Jul 12 08:27:34 2011 +0000
+++ b/SPI_TFT.c	Wed Jul 13 08:25:10 2011 +0000
@@ -13,51 +13,12 @@
 #include "SPI_TFT.h"
 #include "mbed.h"
 
-/** Display control class, based on GraphicsDisplay and TextDisplay
- *
- * Example:
- * @code
- * #include "stdio.h"
- * #include "mbed.h"
- * #include "SPI_TFT.h"
- * #include "string"
- * #include "Arial12x12.h"
- * #include "Arial24x23.h"
- * 
- *
- *
- * // the TFT is connected to SPI pin 5-7 
- * SPI_TFT TFT(p5, p6, p7, p8, p15,"TFT"); // mosi, miso, sclk, cs, reset
- * 
- * int main() {
- *     TFT.claim(stdout);      // send stdout to the TFT display 
- *     //TFT.claim(stderr);      // send stderr to the TFT display
- *
- *     TFT.background(Black);    // set background to black
- *     TFT.foreground(White);    // set chars to white
- *     TFT.cls();                // clear the screen
- *     TFT.set_font((unsigned char*) Arial12x12);  // select the font
- *     
- *     TFT.set_orientation(0);
- *     TFT.locate(0,0);
- *     printf("  Hello Mbed 0");
- *     TFT.set_font((unsigned char*) Arial24x23);  // select font 2
- *     TFT.locate(2,5);
- *     TFT.printf("Bigger Font");
- *  }
- * @endcode
- */
-
-#define BPP         16                  /* Bits per pixel                
 
 
-/** Create a SPI_TFT object connected to SPI and two pins
- *
- * @param mosi,miso,sclk SPI
- * @param cs pin connected to CS of display
- * @param reset pin connected to RESET of display
- *
- */ 
+#define BPP         16                  // Bits per pixel                
+
+
+
 SPI_TFT::SPI_TFT(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName reset, const char *name) 
     : _spi(mosi, miso, sclk), _cs(cs), _reset(reset),GraphicsDisplay(name) {
     tft_reset();
@@ -65,38 +26,18 @@
     char_x = 0;    
 }
 
-
-/** Get the width of the screen in pixel
- *
- * @param 
- * @returns width of screen in pixel
- *
- */
-
 int SPI_TFT::width() {
     if(orientation == 0 || orientation == 2) return 240; 
     else return 320;
     }
 
-
-/** Get the height of the screen in pixel
- *
- * @param  
- * @returns height of screen in pixel 
- *
- */
     
 int SPI_TFT::height() { 
     if(orientation == 0 || orientation == 2) return 320;
     else return 240;
     }
 
-/** Set the orientation of the screen
- *  x,y: 0,0 is always top left 
- *
- * @param o direction to use the screen 1-4
- *
- */
+
 
 void SPI_TFT::set_orientation(unsigned int o){
     orientation = o;
@@ -116,11 +57,7 @@
       }
     }  
 
-/** Write a command the LCD controller 
- *
- * @param cmd: command to be written   
- *
- */
+
 
 void SPI_TFT::wr_cmd(int cmd) {
     _cs = 0;
@@ -129,11 +66,7 @@
     _cs = 1;
 }
 
-/** Write data to the LCD controller
- *
- * @param dat data written to LCD controller
- * 
- */
+
 
 void SPI_TFT::wr_dat(int dat) {
     _cs = 0;
@@ -144,28 +77,20 @@
     _cs = 1;
 }
 
-/** Start data sequence to the LCD controller
- * 
- */
+
 
 void SPI_TFT::wr_dat_start(void){ 
   _cs = 0;
   _spi.write(SPI_START | SPI_WR | SPI_DATA);    /* Write : RS = 1, RW = 0       */
 }
 
-/** Stop of data writing to the LCD controller
- *   
- */
+
 
 void SPI_TFT::wr_dat_stop (void){ 
   _cs = 1;
 }
 
-/** write data to the LCD controller
- *
- * @param data to be written 
- *                                           *
- */
+
 
 void SPI_TFT::wr_dat_only (unsigned short dat) {
 
@@ -174,11 +99,7 @@
   _spi.format(8,3);                         // 8 bit Mode 3
 }
 
-/** Read data from the LCD controller
- *
- * @returns data from LCD controller
- *  
- */
+
 
 unsigned short SPI_TFT::rd_dat (void) {
   unsigned short val = 0;
@@ -193,11 +114,7 @@
   return (val);
 }
 
-/** Write a value to the to a LCD register
- *
- * @param reg register to be written
- * @param val data to be written
- */
+
 
 void SPI_TFT::wr_reg (unsigned char reg, unsigned short val) {
 
@@ -205,11 +122,7 @@
   wr_dat(val);
 }
 
-/** Read a LCD register
- *
- * @param reg register to be read
- * @returns value of the register 
- */
+
  
  unsigned short SPI_TFT::rd_reg (unsigned char reg) {
 
@@ -217,9 +130,7 @@
   return(rd_dat());
 }
 
-/** Init the HX8347D controller 
- *
- */
+
  
  void SPI_TFT::tft_reset() {
   static unsigned short driverCode;
@@ -319,12 +230,7 @@
 }
 
 
-/** Draw a pixel at x,y with color 
- *  
- * @param x horizontal position
- * @param y vertical position
- * @param color 16 bit pixel color
- **/
+
 
 void SPI_TFT::pixel(int x, int y, int color) {
   wr_reg(0x03, (x >> 0));
@@ -336,13 +242,7 @@
 }
 
 
-/** Set draw window region
- *
- * @param x horizontal position
- * @param y vertical position
- * @param w window width in pixel
- * @param h window height in pixels
- **/
+
 
 void SPI_TFT::window (unsigned int x, unsigned int y, unsigned int w, unsigned int h) {
   wr_reg(0x03, (x >> 0));
@@ -358,18 +258,14 @@
 
 
 
-/** Set draw window region to whole screen
- *
- **/
+
 
 void SPI_TFT::WindowMax (void) {
   window (0, 0, width(),  height());
 }
 
 
-/** Fill the screen with _backgroun color
- *
- **/
+
 void SPI_TFT::cls (void) {
   unsigned int i;  
   WindowMax();
@@ -383,13 +279,7 @@
 }
 
 
-/** draw a circle
- *
- * @param x0,y0 center
- * @param r radius
- * @param color 16 bit color                                                                 *
- *
- */
+
 void SPI_TFT::circle(int x0, int y0, int r, int color) {
 
     int draw_x0, draw_y0;
@@ -515,14 +405,7 @@
     return;
 }
 
-/** draw a horizontal line
- *
- * @param x0 horizontal start
- * @param x1 horizontal stop
- * @param y vertical position
- * @param color 16 bit color                                               
- *
- **/
+
 void SPI_TFT::hline(int x0, int x1, int y, int color) {
     int w;
     w = x1 - x0 + 1; 
@@ -538,14 +421,7 @@
     return;
 }
 
-/** draw a vertical line
- *
- * @param x horizontal position
- * @param y0 vertical start 
- * @param y1 vertical stop
- * @param color 16 bit color
- *
- **/
+
 
 void SPI_TFT::vline(int x, int y0, int y1, int color) {
     int h;
@@ -562,13 +438,7 @@
     return;
 }
 
-/** draw a 1 pixel line
- *
- * @param x0,y0 start point
- * @param x1,y1 stop point
- * @param color 16 bit color
- *
- **/
+
 
 void SPI_TFT::line(int x0, int y0, int x1, int y1, int color) {
     WindowMax();
@@ -660,13 +530,7 @@
 }
 
 
-/** draw a rect
- *
- * @param x0,y0 top left corner
- * @param x1,y1 down right corner
- * @param color 16 bit color
- *                                                   *
- **/
+
 
 void SPI_TFT::rect(int x0, int y0, int x1, int y1, int color) {
     
@@ -685,13 +549,7 @@
     return;
 }
 
-/** draw a filled rect
- *
- * @param x0,y0 top left corner
- * @param x1,y1 down right corner
- * @param color 16 bit color
- *
- **/
+
  
 void SPI_TFT::fillrect(int x0, int y0, int x1, int y1, int color) {
 
@@ -711,46 +569,26 @@
 }
 
 
-/** setup cursor position
- *
- * @param column 0 to max
- * @param row 0 to max 
- * max depend on font size
- **/
+
 void SPI_TFT::locate(int column, int row) {
     _column = column;
     char_x = font[1] * column;   // get the horz. size of the actual font
     _row = row;
 }
 
-/** calculate the max number of char in a line
- *
- * @returns max columns
- * depends on actual font size
- *
- */
+
 
 int SPI_TFT::columns() { 
     return width() / font[1]; 
 }
 
-/** calculate the max number of columns
- *
- * @returns max column
- * depends on actual font size
- *
- */
+
 
 int SPI_TFT::rows() { 
     return height() / font[2]; 
 }
 
-/** put a char on the screen
- *
- * @param value char to print
- * @returns printed char
- *
- */
+
 
 int SPI_TFT::_putc(int value) {
     if(value == '\n') {
@@ -768,13 +606,7 @@
 }
 
 
-/** draw a character on given position out of the active font to the TFT
- *
- * @param col column
- * @param row row
- * @param c char to print
- *
- */
+
  
  void SPI_TFT::character(int col, int row, int c){
     unsigned int hor,vert,offset,bpl,j,i,b;
@@ -828,40 +660,14 @@
 }
 
 
-/** select the font to use
- *
- * @param f pointer to font array 
- *                                                                              
- *   font array can created with GLCD Font Creator from http://www.mikroe.com
- *   you have to add 4 parameter at the beginning of the font array to use: 
- *   - the number of byte / char
- *   - the vertial size in pixel
- *   - the horizontal size in pixel
- *   - the number of byte per vertical line
- *   you also have to change the array to char[]
- *
- */
+
 
 
 void SPI_TFT::set_font(unsigned char* f){
     font = f;
     }
 
-/** paint a bitmap on the TFT 
- *
- * @param x,y : upper left corner 
- * @param w width of bitmap
- * @param h high of bitmap
- * @param *bitmap pointer to the bitmap data
- *
- *   bitmap format: 16 bit R5 G6 B5
- * 
- *   use Gimp to create / load , save as BMP, option 16 bit R5 G6 B5            
- *   use winhex to load this file and mark data stating at offset 0x46 to end
- *   use edit -> copy block -> C Source to export C array
- *   paste this array into your program
- * 
- */
+
 
 void SPI_TFT::Bitmap(unsigned int x, unsigned int y, unsigned int w, unsigned int h,unsigned char *bitmap){
     unsigned int    i,j;
--- a/SPI_TFT.h	Tue Jul 12 08:27:34 2011 +0000
+++ b/SPI_TFT.h	Wed Jul 13 08:25:10 2011 +0000
@@ -13,6 +13,42 @@
 #ifndef MBED_SPI_TFT_H
 #define MBED_SPI_TFT_H
 
+/** Display control class, based on GraphicsDisplay and TextDisplay
+ *
+ * Example:
+ * @code
+ * #include "stdio.h"
+ * #include "mbed.h"
+ * #include "SPI_TFT.h"
+ * #include "string"
+ * #include "Arial12x12.h"
+ * #include "Arial24x23.h"
+ * 
+ *
+ *
+ * // the TFT is connected to SPI pin 5-7 
+ * SPI_TFT TFT(p5, p6, p7, p8, p15,"TFT"); // mosi, miso, sclk, cs, reset
+ * 
+ * int main() {
+ *     TFT.claim(stdout);      // send stdout to the TFT display 
+ *     //TFT.claim(stderr);      // send stderr to the TFT display
+ *
+ *     TFT.background(Black);    // set background to black
+ *     TFT.foreground(White);    // set chars to white
+ *     TFT.cls();                // clear the screen
+ *     TFT.set_font((unsigned char*) Arial12x12);  // select the font
+ *     
+ *     TFT.set_orientation(0);
+ *     TFT.locate(0,0);
+ *     printf("  Hello Mbed 0");
+ *     TFT.set_font((unsigned char*) Arial24x23);  // select font 2
+ *     TFT.locate(2,5);
+ *     TFT.printf("Bigger Font");
+ *  }
+ * @endcode
+ */
+
+
 #include "mbed.h"
 #include "GraphicsDisplay.h"
 
@@ -45,24 +81,164 @@
 
 
 
+
+
 class SPI_TFT : public GraphicsDisplay {
 public:
+
+/** Create a SPI_TFT object connected to SPI and two pins
+ *
+ * @param mosi,miso,sclk SPI
+ * @param cs pin connected to CS of display
+ * @param reset pin connected to RESET of display
+ *
+ */ 
     SPI_TFT(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName reset,const char* name ="TFT");
+    
+/** Get the width of the screen in pixel
+ *
+ * @param 
+ * @returns width of screen in pixel
+ *
+ */    
     virtual int width();
+
+/** Get the height of the screen in pixel
+ *
+ * @param  
+ * @returns height of screen in pixel 
+ *
+ */     
     virtual int height();
+    
+/** Draw a pixel at x,y with color 
+ *  
+ * @param x horizontal position
+ * @param y vertical position
+ * @param color 16 bit pixel color
+ **/    
     virtual void pixel(int x, int y, int colour);
+    
+/** draw a circle
+ *
+ * @param x0,y0 center
+ * @param r radius
+ * @param color 16 bit color                                                                 *
+ *
+ */    
     void circle(int x, int y, int r, int colour); 
+    
+/** draw a 1 pixel line
+ *
+ * @param x0,y0 start point
+ * @param x1,y1 stop point
+ * @param color 16 bit color
+ *
+ **/    
     void line(int x0, int y0, int x1, int y1, int colour);
+    
+/** draw a rect
+ *
+ * @param x0,y0 top left corner
+ * @param x1,y1 down right corner
+ * @param color 16 bit color
+ *                                                   *
+ **/    
     void rect(int x0, int y0, int x1, int y1, int colour);
+    
+/** draw a filled rect
+ *
+ * @param x0,y0 top left corner
+ * @param x1,y1 down right corner
+ * @param color 16 bit color
+ *
+ **/    
     void fillrect(int x0, int y0, int x1, int y1, int colour);
+    
+ /** setup cursor position
+ *
+ * @param column 0 to max
+ * @param row 0 to max 
+ * max depend on font size
+ **/   
     void locate(int column, int row);
+    
+ /** Fill the screen with _backgroun color
+ *
+ **/   
     virtual void cls (void);   
+    
+/** calculate the max number of char in a line
+ *
+ * @returns max columns
+ * depends on actual font size
+ *
+ */    
     int columns(void);
+    
+/** calculate the max number of columns
+ *
+ * @returns max column
+ * depends on actual font size
+ *
+ */   
     int rows(void);
+    
+/** put a char on the screen
+ *
+ * @param value char to print
+ * @returns printed char
+ *
+ */
     int _putc(int value);
+    
+/** draw a character on given position out of the active font to the TFT
+ *
+ * @param col column
+ * @param row row
+ * @param c char to print
+ *
+ */    
     virtual void character(int col, int row, int c);
+    
+/** paint a bitmap on the TFT 
+ *
+ * @param x,y : upper left corner 
+ * @param w width of bitmap
+ * @param h high of bitmap
+ * @param *bitmap pointer to the bitmap data
+ *
+ *   bitmap format: 16 bit R5 G6 B5
+ * 
+ *   use Gimp to create / load , save as BMP, option 16 bit R5 G6 B5            
+ *   use winhex to load this file and mark data stating at offset 0x46 to end
+ *   use edit -> copy block -> C Source to export C array
+ *   paste this array into your program
+ * 
+ */    
     void Bitmap(unsigned int x, unsigned int y, unsigned int w, unsigned int h,unsigned char *bitmap);
+    
+ /** select the font to use
+ *
+ * @param f pointer to font array 
+ *                                                                              
+ *   font array can created with GLCD Font Creator from http://www.mikroe.com
+ *   you have to add 4 parameter at the beginning of the font array to use: 
+ *   - the number of byte / char
+ *   - the vertial size in pixel
+ *   - the horizontal size in pixel
+ *   - the number of byte per vertical line
+ *   you also have to change the array to char[]
+ *
+ */   
     void set_font(unsigned char* f);
+   
+/** Set the orientation of the screen
+ *  x,y: 0,0 is always top left 
+ *
+ * @param o direction to use the screen (0-3) 90° Steps  
+ *
+ */  
     void set_orientation(unsigned int o);
     
     SPI _spi;
@@ -71,18 +247,95 @@
     unsigned char* font;
     
 protected:
+
+/** draw a horizontal line
+ *
+ * @param x0 horizontal start
+ * @param x1 horizontal stop
+ * @param y vertical position
+ * @param color 16 bit color                                               
+ *
+ **/
     void hline(int x0, int x1, int y, int colour);
+    
+ /** draw a vertical line
+ *
+ * @param x horizontal position
+ * @param y0 vertical start 
+ * @param y1 vertical stop
+ * @param color 16 bit color
+ **/
     void vline(int y0, int y1, int x, int colour);
+    
+/** Set draw window region
+ *
+ * @param x horizontal position
+ * @param y vertical position
+ * @param w window width in pixel
+ * @param h window height in pixels
+ **/    
     void window (unsigned int x, unsigned int y, unsigned int w, unsigned int h);
+    
+  /** Set draw window region to whole screen
+ *
+ **/  
     void WindowMax (void);
+    
+/** Init the HX8347D controller 
+ *
+ */    
     void tft_reset();
+    
+ /** Write data to the LCD controller
+ *
+ * @param dat data written to LCD controller
+ * 
+ */   
     void wr_dat(int value);
+    
+ /** Write a command the LCD controller 
+ *
+ * @param cmd: command to be written   
+ *
+ */   
     void wr_cmd(int value);
+    
+ /** Start data sequence to the LCD controller
+ * 
+ */   
     void wr_dat_start();
+    
+/** Stop of data writing to the LCD controller
+ *   
+ */  
     void wr_dat_stop();
+    
+/** write data to the LCD controller
+ *
+ * @param data to be written 
+ *                                           *
+ */    
     void wr_dat_only(unsigned short dat);
+    
+/** Read data from the LCD controller
+ *
+ * @returns data from LCD controller
+ *  
+ */    
     unsigned short rd_dat(void);
+    
+ /** Write a value to the to a LCD register
+ *
+ * @param reg register to be written
+ * @param val data to be written
+ */   
     void wr_reg (unsigned char reg, unsigned short val);
+    
+/** Read a LCD register
+ *
+ * @param reg register to be read
+ * @returns value of the register 
+ */    
     unsigned short rd_reg (unsigned char reg);
     
     unsigned int orientation;