1 /** 2 ****************************************************************************** 3 * @file st7735.h 4 * @author MCD Application Team 5 * @brief This file contains all the functions prototypes for the st7735.c 6 * driver. 7 ****************************************************************************** 8 * @attention 9 * 10 * <h2><center>© Copyright (c) 2018 STMicroelectronics. 11 * All rights reserved.</center></h2> 12 * 13 * This software component is licensed by ST under BSD 3-Clause license, 14 * the "License"; You may not use this file except in compliance with the 15 * License. You may obtain a copy of the License at: 16 * opensource.org/licenses/BSD-3-Clause 17 * 18 ****************************************************************************** 19 */ 20 21 /* Define to prevent recursive inclusion -------------------------------------*/ 22 #ifndef ST7735_H 23 #define ST7735_H 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif 28 29 /* Includes ------------------------------------------------------------------*/ 30 #include "st7735_reg.h" 31 #include <stddef.h> 32 33 /** @addtogroup BSP 34 * @{ 35 */ 36 37 /** @addtogroup Components 38 * @{ 39 */ 40 41 /** @defgroup ST7735 ST7735 42 * @{ 43 */ 44 45 /** @defgroup ST7735_Exported_Types Exported Types 46 * @{ 47 */ 48 typedef int32_t (*ST7735_Init_Func) (void); 49 typedef int32_t (*ST7735_DeInit_Func) (void); 50 typedef int32_t (*ST7735_GetTick_Func) (void); 51 typedef int32_t (*ST7735_Delay_Func) (uint32_t); 52 typedef int32_t (*ST7735_WriteReg_Func) (uint8_t, uint8_t*, uint32_t); 53 typedef int32_t (*ST7735_ReadReg_Func) (uint8_t, uint8_t*); 54 typedef int32_t (*ST7735_SendData_Func) (uint8_t*, uint32_t); 55 typedef int32_t (*ST7735_RecvData_Func) (uint8_t*, uint32_t); 56 57 typedef struct 58 { 59 ST7735_Init_Func Init; 60 ST7735_DeInit_Func DeInit; 61 uint16_t Address; 62 ST7735_WriteReg_Func WriteReg; 63 ST7735_ReadReg_Func ReadReg; 64 ST7735_SendData_Func SendData; 65 ST7735_RecvData_Func RecvData; 66 ST7735_GetTick_Func GetTick; 67 } ST7735_IO_t; 68 69 70 typedef struct 71 { 72 ST7735_IO_t IO; 73 st7735_ctx_t Ctx; 74 uint8_t IsInitialized; 75 } ST7735_Object_t; 76 77 typedef struct 78 { 79 /* Control functions */ 80 int32_t (*Init )(ST7735_Object_t*, uint32_t, uint32_t); 81 int32_t (*DeInit )(ST7735_Object_t*); 82 int32_t (*ReadID )(ST7735_Object_t*, uint32_t*); 83 int32_t (*DisplayOn )(ST7735_Object_t*); 84 int32_t (*DisplayOff )(ST7735_Object_t*); 85 int32_t (*SetBrightness )(ST7735_Object_t*, uint32_t); 86 int32_t (*GetBrightness )(ST7735_Object_t*, uint32_t*); 87 int32_t (*SetOrientation )(ST7735_Object_t*, uint32_t); 88 int32_t (*GetOrientation )(ST7735_Object_t*, uint32_t*); 89 90 /* Drawing functions*/ 91 int32_t ( *SetCursor ) (ST7735_Object_t*, uint32_t, uint32_t); 92 int32_t ( *DrawBitmap ) (ST7735_Object_t*, uint32_t, uint32_t, uint8_t *); 93 int32_t ( *FillRGBRect ) (ST7735_Object_t*, uint32_t, uint32_t, uint8_t*, uint32_t, uint32_t); 94 int32_t ( *DrawHLine ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t, uint32_t); 95 int32_t ( *DrawVLine ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t, uint32_t); 96 int32_t ( *FillRect ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); 97 int32_t ( *GetPixel ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t*); 98 int32_t ( *SetPixel ) (ST7735_Object_t*, uint32_t, uint32_t, uint32_t); 99 int32_t ( *GetXSize ) (ST7735_Object_t*, uint32_t *); 100 int32_t ( *GetYSize ) (ST7735_Object_t*, uint32_t *); 101 102 }ST7735_LCD_Drv_t; 103 104 /** 105 * @} 106 */ 107 108 /** @defgroup ST7735_Exported_Constants Exported Constants 109 * @{ 110 */ 111 112 /** 113 * @brief ST7735 Size 114 */ 115 #define ST7735_OK (0) 116 #define ST7735_ERROR (-1) 117 118 /** 119 * @brief ST7735 ID 120 */ 121 #define ST7735_ID 0x5CU 122 123 /** 124 * @brief ST7735 Size 125 */ 126 #define ST7735_WIDTH 80U 127 #define ST7735_HEIGHT 160U 128 129 /** 130 * @brief LCD_OrientationTypeDef 131 * Possible values of Display Orientation 132 */ 133 #define ST7735_ORIENTATION_PORTRAIT 0x00U /* Portrait orientation choice of LCD screen */ 134 #define ST7735_ORIENTATION_PORTRAIT_ROT180 0x01U /* Portrait rotated 180° orientation choice of LCD screen */ 135 #define ST7735_ORIENTATION_LANDSCAPE 0x02U /* Landscape orientation choice of LCD screen */ 136 #define ST7735_ORIENTATION_LANDSCAPE_ROT180 0x03U /* Landscape rotated 180° orientation choice of LCD screen */ 137 138 /** 139 * @brief Possible values of pixel data format (ie color coding) 140 */ 141 #define ST7735_FORMAT_RBG444 0x03U /* Pixel format chosen is RGB444 : 12 bpp */ 142 #define ST7735_FORMAT_RBG565 0x05U /* Pixel format chosen is RGB565 : 16 bpp */ 143 #define ST7735_FORMAT_RBG666 0x06U /* Pixel format chosen is RGB666 : 18 bpp */ 144 #define ST7735_FORMAT_DEFAULT ST7735_FORMAT_RBG565 145 /** 146 * @} 147 */ 148 149 /** @defgroup ST7735_Exported_Functions Exported Functions 150 * @{ 151 */ 152 int32_t ST7735_RegisterBusIO (ST7735_Object_t *pObj, ST7735_IO_t *pIO); 153 int32_t ST7735_Init(ST7735_Object_t *pObj, uint32_t ColorCoding, uint32_t Orientation); 154 int32_t ST7735_DeInit(ST7735_Object_t *pObj); 155 int32_t ST7735_ReadID(ST7735_Object_t *pObj, uint32_t *Id); 156 int32_t ST7735_DisplayOn(ST7735_Object_t *pObj); 157 int32_t ST7735_DisplayOff(ST7735_Object_t *pObj); 158 int32_t ST7735_SetBrightness(ST7735_Object_t *pObj, uint32_t Brightness); 159 int32_t ST7735_GetBrightness(ST7735_Object_t *pObj, uint32_t *Brightness); 160 int32_t ST7735_SetOrientation(ST7735_Object_t *pObj, uint32_t Orientation); 161 int32_t ST7735_GetOrientation(ST7735_Object_t *pObj, uint32_t *Orientation); 162 163 int32_t ST7735_SetCursor(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos); 164 int32_t ST7735_DrawBitmap(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint8_t *pBmp); 165 int32_t ST7735_FillRGBRect(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint8_t *pData, uint32_t Width, uint32_t Height); 166 int32_t ST7735_DrawHLine(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Length, uint32_t Color); 167 int32_t ST7735_DrawVLine(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Length, uint32_t Color); 168 int32_t ST7735_FillRect(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Width, uint32_t Height, uint32_t Color); 169 int32_t ST7735_SetPixel(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t Color); 170 int32_t ST7735_GetPixel(ST7735_Object_t *pObj, uint32_t Xpos, uint32_t Ypos, uint32_t *Color); 171 int32_t ST7735_GetXSize(ST7735_Object_t *pObj, uint32_t *XSize); 172 int32_t ST7735_GetYSize(ST7735_Object_t *pObj, uint32_t *YSize); 173 174 extern ST7735_LCD_Drv_t ST7735_LCD_Driver; 175 176 /** 177 * @} 178 */ 179 180 #ifdef __cplusplus 181 } 182 #endif 183 184 #endif /* ST7735_H */ 185 186 /** 187 * @} 188 */ 189 190 /** 191 * @} 192 */ 193 194 /** 195 * @} 196 */ 197 198 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 199