st7735.h 6.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
/**
  ******************************************************************************
  * @file    st7735.h
  * @author  MCD Application Team
  * @brief   This file contains all the functions prototypes for the st7735.c
  *          driver.
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; Copyright (c) 2018 STMicroelectronics.
  * All rights reserved.</center></h2>
  *
  * This software component is licensed by ST under BSD 3-Clause license,
  * the "License"; You may not use this file except in compliance with the
  * License. You may obtain a copy of the License at:
  *                        opensource.org/licenses/BSD-3-Clause
  *
  ******************************************************************************
  */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef ST7735_H
#define ST7735_H

#ifdef __cplusplus
 extern "C" {
#endif 

/* Includes ------------------------------------------------------------------*/
#include "st7735_reg.h"
#include <stddef.h>

/** @addtogroup BSP
  * @{
  */ 

/** @addtogroup Components
  * @{
  */ 
  
/** @defgroup ST7735 ST7735
  * @{
  */

/** @defgroup ST7735_Exported_Types Exported Types
  * @{
  */
typedef int32_t (*ST7735_Init_Func)     (void);
typedef int32_t (*ST7735_DeInit_Func)   (void);
typedef int32_t (*ST7735_GetTick_Func)  (void);
typedef int32_t (*ST7735_Delay_Func)    (uint32_t);
typedef int32_t (*ST7735_WriteReg_Func) (uint8_t, uint8_t*, uint32_t);
typedef int32_t (*ST7735_ReadReg_Func)  (uint8_t, uint8_t*);
typedef int32_t (*ST7735_SendData_Func) (uint8_t*, uint32_t);
typedef int32_t (*ST7735_RecvData_Func) (uint8_t*, uint32_t);

typedef struct
{
  ST7735_Init_Func          Init;
  ST7735_DeInit_Func        DeInit;
  uint16_t                  Address;  
  ST7735_WriteReg_Func      WriteReg;
  ST7735_ReadReg_Func       ReadReg;
  ST7735_SendData_Func      SendData;
  ST7735_RecvData_Func      RecvData;
  ST7735_GetTick_Func       GetTick; 
} ST7735_IO_t;

 
typedef struct
{
  ST7735_IO_t         IO;
  st7735_ctx_t        Ctx;   
  uint8_t             IsInitialized;
} ST7735_Object_t;

typedef struct
{
  /* Control functions */
  int32_t (*Init             )(ST7735_Object_t*, uint32_t, uint32_t);
  int32_t (*DeInit           )(ST7735_Object_t*);
  int32_t (*ReadID           )(ST7735_Object_t*, uint32_t*);
  int32_t (*DisplayOn        )(ST7735_Object_t*);
  int32_t (*DisplayOff       )(ST7735_Object_t*);
  int32_t (*SetBrightness    )(ST7735_Object_t*, uint32_t); 
  int32_t (*GetBrightness    )(ST7735_Object_t*, uint32_t*);   
  int32_t (*SetOrientation   )(ST7735_Object_t*, uint32_t);
  int32_t (*GetOrientation   )(ST7735_Object_t*, uint32_t*);

  /* Drawing functions*/
  int32_t ( *SetCursor       ) (ST7735_Object_t*, uint32_t, uint32_t); 
  int32_t ( *DrawBitmap      ) (ST7735_Object_t*, uint32_t, uint32_t, uint8_t *);
  int32_t ( *FillRGBRect     ) (ST7735_Object_t*, uint32_t, uint32_t, uint8_t*, uint32_t, uint32_t);    
  int32_t ( *DrawHLine       ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t, uint32_t);
  int32_t ( *DrawVLine       ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t, uint32_t);
  int32_t ( *FillRect        ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
  int32_t ( *GetPixel        ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t*);
  int32_t ( *SetPixel        ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t);
  int32_t ( *GetXSize        ) (ST7735_Object_t*, uint32_t *);
  int32_t ( *GetYSize        ) (ST7735_Object_t*, uint32_t *);
  
}ST7735_LCD_Drv_t;
  
/**
  * @}
  */ 

/** @defgroup ST7735_Exported_Constants Exported Constants
  * @{
  */

/** 
  * @brief  ST7735 Size  
  */  
#define ST7735_OK                (0)
#define ST7735_ERROR             (-1)

/** 
  * @brief  ST7735 ID  
  */  
#define  ST7735_ID              0x5CU
  
/** 
  * @brief  ST7735 Size  
  */  
#define  ST7735_WIDTH           80U
#define  ST7735_HEIGHT          160U

/**
 *  @brief LCD_OrientationTypeDef
 *  Possible values of Display Orientation
 */
#define ST7735_ORIENTATION_PORTRAIT         0x00U /* Portrait orientation choice of LCD screen               */
#define ST7735_ORIENTATION_PORTRAIT_ROT180  0x01U /* Portrait rotated 180° orientation choice of LCD screen  */
#define ST7735_ORIENTATION_LANDSCAPE        0x02U /* Landscape orientation choice of LCD screen              */
#define ST7735_ORIENTATION_LANDSCAPE_ROT180 0x03U /* Landscape rotated 180° orientation choice of LCD screen */

/**
 *  @brief  Possible values of pixel data format (ie color coding) 
 */
#define ST7735_FORMAT_RBG444                0x03U /* Pixel format chosen is RGB444 : 12 bpp */   
#define ST7735_FORMAT_RBG565                0x05U /* Pixel format chosen is RGB565 : 16 bpp */
#define ST7735_FORMAT_RBG666                0x06U /* Pixel format chosen is RGB666 : 18 bpp */
#define ST7735_FORMAT_DEFAULT               ST7735_FORMAT_RBG565
/**
  * @}
  */
  
/** @defgroup ST7735_Exported_Functions Exported Functions
  * @{
  */ 
int32_t ST7735_RegisterBusIO (ST7735_Object_t *pObj, ST7735_IO_t *pIO);
int32_t ST7735_Init(ST7735_Object_t *pObj, uint32_t ColorCoding, uint32_t Orientation);
int32_t ST7735_DeInit(ST7735_Object_t *pObj);
int32_t ST7735_ReadID(ST7735_Object_t *pObj, uint32_t *Id);
int32_t ST7735_DisplayOn(ST7735_Object_t *pObj);
int32_t ST7735_DisplayOff(ST7735_Object_t *pObj);
int32_t ST7735_SetBrightness(ST7735_Object_t *pObj, uint32_t Brightness);
int32_t ST7735_GetBrightness(ST7735_Object_t *pObj, uint32_t *Brightness);
int32_t ST7735_SetOrientation(ST7735_Object_t *pObj, uint32_t Orientation);
int32_t ST7735_GetOrientation(ST7735_Object_t *pObj, uint32_t *Orientation);

int32_t ST7735_SetCursor(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos);
int32_t ST7735_DrawBitmap(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint8_t *pBmp);
int32_t ST7735_FillRGBRect(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint8_t *pData, uint32_t Width, uint32_t Height);
int32_t ST7735_DrawHLine(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Length, uint32_t Color);
int32_t ST7735_DrawVLine(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Length, uint32_t Color);
int32_t ST7735_FillRect(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Width, uint32_t Height, uint32_t Color);
int32_t ST7735_SetPixel(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Color);
int32_t ST7735_GetPixel(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t *Color);
int32_t ST7735_GetXSize(ST7735_Object_t *pObj, uint32_t *XSize);
int32_t ST7735_GetYSize(ST7735_Object_t *pObj, uint32_t *YSize);

extern ST7735_LCD_Drv_t   ST7735_LCD_Driver;

/**
  * @}
  */ 
      
#ifdef __cplusplus
}
#endif

#endif /* ST7735_H */

/**
  * @}
  */ 

/**
  * @}
  */ 

/**
  * @}
  */
  
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/