Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: Chromatograph_Mobile
FT_Gpu_Hal.h
00001 /*! 00002 * \file FT_GPU_HAL.h 00003 * 00004 00005 Curt added Load_raw 7/22/16 00006 00007 00008 00009 * \author FTDI 00010 * \date 2013.04.24 00011 * 00012 * Copyright 2013 Future Technology Devices International Limited 00013 * 00014 * Project: FT813 or EVE compatible silicon 00015 * File Description: 00016 * This file defines the generic APIs of host access layer for the FT813 or EVE compatible silicon. 00017 * Application shall access FT813 or EVE resources over these APIs. In addition, there are 00018 * some helper functions defined for FT813 coprocessor engine as well as host commands. 00019 * Rivision History: 00020 * ported to mbed by Peter Drescher, DC2PD 2014 00021 * 00022 */ 00023 00024 #ifndef FT_GPU_HAL_H 00025 #define FT_GPU_HAL_H 00026 00027 #include "mbed.h" 00028 #include "FT_DataTypes.h" 00029 00030 typedef enum { 00031 FT_GPU_I2C_MODE = 0, 00032 FT_GPU_SPI_MODE, 00033 00034 FT_GPU_MODE_COUNT, 00035 FT_GPU_MODE_UNKNOWN = FT_GPU_MODE_COUNT 00036 } FT_GPU_HAL_MODE_E; 00037 00038 typedef enum { 00039 OPENED, 00040 READING, 00041 WRITING, 00042 CLOSED, 00043 STATUS_COUNT, 00044 STATUS_ERROR = STATUS_COUNT 00045 } FT_GPU_HAL_STATUS_E; 00046 00047 typedef struct { 00048 ft_uint8_t reserved; 00049 } Ft_Gpu_App_Context_t; 00050 00051 typedef struct { 00052 /* Total number channels for libmpsse */ 00053 ft_uint32_t TotalChannelNum; 00054 } Ft_Gpu_HalInit_t; 00055 00056 typedef enum { 00057 FT_GPU_READ = 0, 00058 FT_GPU_WRITE, 00059 } FT_GPU_TRANSFERDIR_T; 00060 00061 00062 typedef struct { 00063 ft_uint32_t length; //IN and OUT 00064 ft_uint32_t address; 00065 ft_uint8_t *buffer; 00066 } Ft_Gpu_App_Transfer_t; 00067 00068 typedef struct { 00069 char name[50]; 00070 uint32_t addr; 00071 uint32_t size; 00072 uint16_t fmt; 00073 uint16_t w; 00074 uint16_t h; 00075 } Ft_Gpu_App_Bitmap_t; 00076 00077 class FT813 00078 { 00079 public: 00080 FT813(PinName mosi, 00081 PinName miso, 00082 PinName sck, 00083 PinName ss, 00084 PinName intr, 00085 PinName pd); 00086 00087 private: 00088 SPI _spi; 00089 DigitalOut _ss; 00090 DigitalOut _pd; 00091 InterruptIn _f800_isr; 00092 ft_uint8_t _IsOn; //дисплей включен 00093 ft_uint16_t _count; 00094 ft_uint32_t _address; 00095 ft_uint32_t _addresses[64]; 00096 ft_uint16_t _bitmap_count; 00097 ft_uint32_t _orientation; 00098 ft_uint16_t _bitmapCount; 00099 ft_uint32_t _bitmapAddress; 00100 00101 Ft_Gpu_App_Bitmap_t _bitmaps[64]; 00102 00103 //uint32_t screenshot[800*480]; 00104 00105 00106 public: 00107 /* Global used for buffer optimization */ 00108 //Ft_Gpu_Hal_Context_t host,*phost; 00109 Ft_Gpu_App_Context_t app_header; 00110 ft_uint16_t cmd_fifo_wp; //coprocessor fifo write pointer 00111 ft_uint16_t dl_buff_wp; //display command memory write pointer 00112 FT_GPU_HAL_STATUS_E status; //OUT 00113 ft_void_t* hal_handle; //IN/OUT 00114 ft_uint32_t CmdBuffer_Index; 00115 ft_uint32_t DlBuffer_Index; 00116 ft_int16_t DispWidth; 00117 ft_int16_t DispHeight; 00118 ft_int16_t DispHCycle; 00119 ft_int16_t DispHOffset; 00120 ft_int16_t DispHSync0; 00121 ft_int16_t DispHSync1; 00122 ft_int16_t DispVCycle; 00123 ft_int16_t DispVOffset; 00124 ft_int16_t DispVSync0; 00125 ft_int16_t DispVSync1; 00126 ft_uint8_t DispPCLK; 00127 ft_char8_t DispSwizzle; 00128 ft_char8_t DispPCLKPol; 00129 00130 00131 char BootupConfig(void); 00132 ft_bool_t Bootup(void); 00133 ft_bool_t IsOn(void);//return 1 if display is on (04.08.2020/15:22) 00134 00135 00136 /*The basic APIs Level 1*/ 00137 ft_bool_t Init(); 00138 ft_bool_t Open(); 00139 00140 /*The APIs for reading/writing transfer continuously only with small buffer system*/ 00141 ft_void_t StartTransfer(FT_GPU_TRANSFERDIR_T rw,ft_uint32_t addr); 00142 ft_uint8_t Transfer8(ft_uint8_t value); 00143 ft_uint16_t Transfer16(ft_uint16_t value); 00144 ft_uint32_t Transfer32(ft_uint32_t value); 00145 ft_void_t EndTransfer(); 00146 00147 /*Read & Write APIs for both burst and single transfer,depending on buffer size*/ 00148 ft_void_t Read(Ft_Gpu_App_Transfer_t *transfer); 00149 ft_void_t Write(Ft_Gpu_App_Transfer_t *transfer); 00150 00151 ft_void_t Close(); 00152 ft_void_t DeInit(); 00153 00154 /*Helper function APIs Read*/ 00155 ft_uint8_t Rd8(ft_uint32_t addr); 00156 ft_uint16_t Rd16(ft_uint32_t addr); 00157 ft_uint32_t Rd32(ft_uint32_t addr); 00158 00159 /*Helper function APIs Write*/ 00160 ft_void_t Wr8(ft_uint32_t addr, ft_uint8_t v); 00161 ft_void_t Wr16(ft_uint32_t addr, ft_uint16_t v); 00162 ft_void_t Wr32(ft_uint32_t addr, ft_uint32_t v); 00163 00164 /*******************************************************************************/ 00165 /*******************************************************************************/ 00166 /*APIs for coprocessor Fifo read/write and space management*/ 00167 ft_void_t Updatecmdfifo(ft_uint16_t count); 00168 ft_void_t WrCmd32(ft_uint32_t cmd); 00169 ft_void_t WrCmdBuf(ft_uint8_t *buffer,ft_uint16_t count); 00170 ft_void_t WaitCmdfifo_empty(); 00171 ft_void_t ResetCmdFifo(); 00172 ft_void_t CheckCmdBuffer(ft_uint16_t count); 00173 ft_void_t ResetDLBuffer(); 00174 00175 ft_void_t StartCmdTransfer(FT_GPU_TRANSFERDIR_T rw, ft_uint16_t count); 00176 ft_void_t Powercycle(ft_bool_t up); 00177 00178 00179 /*******************************************************************************/ 00180 /*******************************************************************************/ 00181 /*APIs for Host Commands*/ 00182 typedef enum { 00183 FT_GPU_INTERNAL_OSC = 0x48, //default 00184 FT_GPU_EXTERNAL_OSC = 0x44, 00185 } FT_GPU_PLL_SOURCE_T; 00186 typedef enum { 00187 FT_GPU_PLL_48M = 0x62, //default 00188 FT_GPU_PLL_36M = 0x61, 00189 FT_GPU_PLL_24M = 0x64, 00190 } FT_GPU_PLL_FREQ_T; 00191 00192 typedef enum { 00193 FT_GPU_ACTIVE_M = 0x00, 00194 FT_GPU_STANDBY_M = 0x41,//default 00195 FT_GPU_SLEEP_M = 0x42, 00196 FT_GPU_POWERDOWN_M = 0x50, 00197 } FT_GPU_POWER_MODE_T; 00198 00199 #define FT_GPU_CORE_RESET (0x68) 00200 00201 ft_int32_t hal_strlen(const ft_char8_t *s); 00202 ft_void_t Sleep(ft_uint16_t ms); 00203 ft_void_t ClockSelect(FT_GPU_PLL_SOURCE_T pllsource); 00204 ft_void_t PLL_FreqSelect(FT_GPU_PLL_FREQ_T freq); 00205 ft_void_t PowerModeSwitch(FT_GPU_POWER_MODE_T pwrmode); 00206 ft_void_t CoreReset(); 00207 //ft_void_t Ft_Gpu_Hal_StartTransfer( ,FT_GPU_TRANSFERDIR_T rw,ft_uint32_t addr); 00208 ft_void_t WrMem(ft_uint32_t addr, const ft_uint8_t *buffer, ft_uint32_t length); 00209 ft_void_t WrMemFromFlash(ft_uint32_t addr,const ft_prog_uchar8_t *buffer, ft_uint32_t length); 00210 ft_void_t WrCmdBufFromFlash(FT_PROGMEM ft_prog_uchar8_t *buffer,ft_uint16_t count); 00211 ft_void_t RdMem(ft_uint32_t addr, ft_uint8_t *buffer, ft_uint32_t length); 00212 ft_void_t WaitLogo_Finish(); 00213 ft_uint8_t TransferString(const ft_char8_t *string); 00214 ft_void_t HostCommand(ft_uint8_t cmd); 00215 ft_int32_t Dec2Ascii(ft_char8_t *pSrc,ft_int32_t value); 00216 00217 00218 ft_void_t DLstart(); 00219 ft_void_t Swap(); 00220 ft_void_t ColdStart(); 00221 ft_void_t Interrupt(ft_uint32_t ms); 00222 ft_void_t Append(ft_uint32_t ptr, ft_uint32_t num); 00223 ft_void_t RegRead(ft_uint32_t ptr, ft_uint32_t result); 00224 ft_void_t MemWrite(ft_uint32_t ptr, ft_uint32_t num); 00225 ft_void_t Inflate(ft_uint32_t ptr); 00226 ft_void_t LoadImage(ft_uint32_t ptr, ft_uint32_t options); 00227 ft_void_t MediaFifo(ft_uint32_t ptr, ft_uint32_t size); 00228 ft_void_t PlayVideo(ft_uint32_t opts); 00229 ft_void_t VideoStart(); 00230 ft_void_t VideoFrame(ft_uint32_t dst, ft_uint32_t ptr); 00231 ft_void_t Memcrc(ft_uint32_t ptr, ft_uint32_t num, ft_uint32_t result); 00232 ft_void_t MemZero(ft_uint32_t ptr, ft_uint32_t num); 00233 ft_void_t MemSet(ft_uint32_t ptr, ft_uint32_t value, ft_uint32_t num); 00234 ft_void_t Memcpy(ft_uint32_t dest, ft_uint32_t src, ft_uint32_t num); 00235 ft_void_t Button(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_int16_t font, ft_uint16_t options, const ft_char8_t* s); 00236 ft_void_t Clock(ft_int16_t x, ft_int16_t y, ft_int16_t r, ft_uint16_t options, ft_uint16_t h, ft_uint16_t m, ft_uint16_t s, ft_uint16_t ms); 00237 ft_void_t FgColor(ft_uint32_t c); 00238 ft_void_t BgColor(ft_uint32_t c); 00239 ft_void_t GradColor(ft_uint32_t c); 00240 ft_void_t Gauge(ft_int16_t x, ft_int16_t y, ft_int16_t r, ft_uint16_t options, ft_uint16_t major, ft_uint16_t minor, ft_uint16_t val, ft_uint16_t range); 00241 ft_void_t Gradient(ft_int16_t x0, ft_int16_t y0, ft_uint32_t rgb0, ft_int16_t x1, ft_int16_t y1, ft_uint32_t rgb1); 00242 ft_void_t Keys(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_int16_t font, ft_uint16_t options, const ft_char8_t* s); 00243 ft_void_t Progress(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_uint16_t options, ft_uint16_t val, ft_uint16_t range); 00244 ft_void_t Scrollbar(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_uint16_t options, ft_uint16_t val, ft_uint16_t size, ft_uint16_t range); 00245 ft_void_t Slider(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_uint16_t options, ft_uint16_t val, ft_uint16_t range); 00246 ft_void_t Dial(ft_int16_t x, ft_int16_t y, ft_int16_t r, ft_uint16_t options, ft_uint16_t val); 00247 ft_void_t Toggle(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t font, ft_uint16_t options, ft_uint16_t state, const ft_char8_t* s); 00248 ft_void_t Text(ft_int16_t x, ft_int16_t y, ft_int16_t font, ft_uint16_t options, const ft_char8_t* s); 00249 ft_void_t SetBase(ft_uint32_t base); 00250 ft_void_t Number(ft_int16_t x, ft_int16_t y, ft_int16_t font, ft_uint16_t options, ft_int32_t n); 00251 ft_void_t LoadIdentity(); 00252 ft_void_t SetMatrix(); 00253 ft_void_t GetMatrix(ft_int32_t a, ft_int32_t b, ft_int32_t c, ft_int32_t d, ft_int32_t e, ft_int32_t f); 00254 ft_void_t GetPtr(ft_uint32_t result); 00255 ft_void_t GetProps(ft_uint32_t ptr, ft_uint32_t w, ft_uint32_t h); 00256 ft_void_t Scale(ft_int32_t sx, ft_int32_t sy); 00257 ft_void_t Rotate(ft_int32_t a); 00258 ft_void_t Translate(ft_int32_t tx, ft_int32_t ty); 00259 ft_void_t Calibrate(ft_uint32_t result); 00260 ft_void_t SetRotate(ft_uint32_t r); 00261 ft_void_t Spinner(ft_int16_t x, ft_int16_t y, ft_uint16_t style, ft_uint16_t scale); 00262 ft_void_t ScreenSaver(); 00263 ft_void_t Sketch(ft_int16_t x, ft_int16_t y, ft_uint16_t w, ft_uint16_t h, ft_uint32_t ptr, ft_uint16_t format); 00264 ft_void_t Stop(); 00265 ft_void_t SetFont(ft_uint32_t font, ft_uint32_t ptr); 00266 ft_void_t SetFont2(ft_uint32_t font, ft_uint32_t ptr, ft_uint32_t firstchar); 00267 ft_void_t SetScratch(ft_uint32_t handle); 00268 ft_void_t RomFont(ft_uint32_t font, ft_uint32_t rom_slot); 00269 ft_void_t Track(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_int16_t tag); 00270 ft_void_t Snapshot(ft_uint32_t ptr); 00271 ft_void_t Snapshot2(ft_uint32_t fmt, ft_uint32_t ptr, ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h); 00272 ft_void_t SetBitmap(ft_int32_t addr, ft_int16_t fmt, ft_uint16_t width, ft_uint16_t height); 00273 ft_void_t Logo(); 00274 00275 ft_void_t Bitmap_Transform(ft_int32_t x0, ft_int32_t y0, ft_int32_t x1, ft_int32_t y1, ft_int32_t x2, ft_int32_t y2, ft_int32_t tx0, ft_int32_t ty0, ft_int32_t tx1, ft_int32_t ty1, ft_int32_t tx2, ft_int32_t ty2, ft_uint16_t result); 00276 00277 00278 ft_void_t SendCmd(ft_uint32_t cmd); 00279 ft_void_t SendStr(const ft_char8_t *s); 00280 ft_void_t StartFunc(ft_uint16_t count); 00281 // ft_void_t EndFunc(ft_uint16_t count); 00282 ft_void_t EndFunc(); 00283 00284 ft_void_t TouchTransform(ft_int32_t x0, ft_int32_t y0, ft_int32_t x1, ft_int32_t y1, ft_int32_t x2, ft_int32_t y2, ft_int32_t tx0, ft_int32_t ty0, ft_int32_t tx1, ft_int32_t ty1, ft_int32_t tx2, ft_int32_t ty2, ft_uint16_t result); 00285 ft_void_t BitmapTransform(ft_int32_t x0, ft_int32_t y0, ft_int32_t x1, ft_int32_t y1, ft_int32_t x2, ft_int32_t y2, ft_int32_t tx0, ft_int32_t ty0, ft_int32_t tx1, ft_int32_t ty1, ft_int32_t tx2, ft_int32_t ty2, ft_uint16_t result); 00286 ft_void_t MemCrc(ft_uint32_t ptr, ft_uint32_t num, ft_uint32_t result); 00287 00288 ft_uint16_t fifo_Freespace(); 00289 00290 ft_void_t DL(ft_uint32_t cmd); 00291 ft_void_t WrDlCmd_Buffer(ft_uint32_t cmd); 00292 ft_void_t Flush_DL_Buffer(); 00293 ft_void_t Flush_Co_Buffer(); 00294 ft_void_t fadeout(); 00295 ft_void_t fadein(); 00296 ft_void_t DLSwap(ft_uint8_t DL_Swap_Type); 00297 00298 ft_void_t Point(ft_int16_t x, ft_int16_t y, ft_uint16_t size); 00299 ft_void_t Line(ft_int16_t x0, ft_int16_t y0, ft_int16_t x1, ft_int16_t y1, ft_int16_t width); 00300 ft_void_t Rect(ft_int16_t x0, ft_int16_t y0, ft_int16_t x1, ft_int16_t y1, ft_int16_t corner); 00301 ft_void_t RectWH(ft_int16_t x0, ft_int16_t y0, ft_int16_t w, ft_int16_t h, ft_int16_t corner); 00302 ft_uint8_t LoadJpg(char* filename, ft_int16_t* x_size, ft_int16_t* y_size); 00303 ft_uint8_t LoadPng(char* filename, ft_int16_t* x_size, ft_int16_t* y_size); 00304 //Curt added Load_raw 7/22/16 00305 int LoadRaw(char* filename); 00306 int LoadRawFile(ft_uint32_t address, char* filename); 00307 00308 void FillBitmap(ft_int16_t bitmap_number); 00309 void ClearBitmapCount(void); 00310 ft_uint32_t ReadBigInt32(unsigned char* data, ft_uint32_t offset); 00311 00312 ft_uint8_t Jpg(char *jpg_filename, int x, int y); 00313 ft_uint8_t Png(char *png_filename, int x, int y); 00314 ft_uint8_t Png(char *png_filename, int x, int y, ft_int32_t address); 00315 00316 ft_uint8_t JpgSplash(char *jpg_filename, ft_uint8_t r, ft_uint8_t g, ft_uint8_t b); 00317 00318 ft_uint16_t CoProFIFO_FreeSpace(void); 00319 void Wait4CoProFIFO(ft_uint32_t room); 00320 void Wait4CoProFIFOEmpty(void); 00321 ft_uint8_t CheckIfCoProFIFOEmpty(void); 00322 ft_uint32_t WriteBlockRAM(ft_uint32_t Add, const ft_uint8_t *buff, ft_uint32_t count); 00323 00324 00325 ft_void_t Sound_ON(); 00326 ft_void_t Sound_OFF(); 00327 00328 // int Load_jpg(char* filename, ft_int16_t* x_size, ft_int16_t* y_size,ft_uint32_t address); 00329 00330 ft_void_t Calibrate(); 00331 ft_uint8_t read_calibrate_reg(ft_uint8_t i); 00332 ft_uint32_t read_calibrate_reg32(ft_uint8_t i); 00333 ft_void_t read_calibrate(ft_uint8_t data[24]); 00334 ft_void_t write_calibrate(ft_uint8_t data[24]); 00335 ft_void_t write_calibrate32(ft_uint32_t data[6]); 00336 00337 ft_uint32_t color_rgb(ft_uint8_t red,ft_uint8_t green, ft_uint8_t blue); 00338 ft_uint32_t clear_color_rgb(ft_uint8_t red,ft_uint8_t green, ft_uint8_t blue); 00339 00340 void SetBacklight(ft_uint16_t brightness); 00341 00342 void Tag(ft_uint8_t s); 00343 void ClearTag(ft_uint8_t s); 00344 void TagMask(ft_uint8_t mask); 00345 void BitmapLayoutH(ft_uint8_t linestride, ft_uint8_t height); 00346 void BitmapSizeH(ft_uint8_t width, ft_uint8_t height); 00347 00348 ft_void_t SetLoadAddress(ft_uint32_t address); 00349 ft_void_t SetBitmapCount(ft_uint8_t count); 00350 ft_uint32_t GetBitmapAddress(ft_uint8_t count); 00351 void SetThemeDefaultColor(void); 00352 void SetThemeColor(ft_uint32_t c); 00353 void ShowCalibrationInCode(void); 00354 void SetOrientation(ft_uint8_t orientation); 00355 void ShowBitmap(ft_uint8_t bitmap, ft_int16_t fmt, ft_uint16_t x, ft_uint16_t y, ft_uint16_t width, ft_uint16_t height); 00356 void ShowBitmapAtAddress(ft_uint32_t addr, ft_int16_t fmt, ft_uint16_t x, ft_uint16_t y, ft_uint16_t width, ft_uint16_t height); 00357 int GetImageIndexFromName(char *name); 00358 int ResetInflateFileBitmap(void); 00359 uint32_t GetRamUsage(void); 00360 uint16_t GetRamNoOfBitmaps(void); 00361 int LoadInflateFileBitmap(char *name, uint16_t fmt, uint16_t w, uint16_t h); 00362 int ShowBitmapByName(char *name, uint16_t w, uint16_t h); 00363 uint16_t GetTouchedTag(void); 00364 uint16_t GetTouchedTag(uint8_t point_number); 00365 uint8_t GetTag(void); 00366 uint16_t GetTagX(void); 00367 uint16_t GetTagY(void); 00368 uint8_t GetTouchTag(void); 00369 uint16_t GetTouchTagX(void); 00370 uint16_t GetTouchTagY(void); 00371 uint32_t GetTouchTagXY(void);//добавка своя 00372 uint16_t GetTouchConfig(void); 00373 void SetTouchConfig(uint16_t TouchConfigVal); 00374 00375 void screenShot(void); 00376 00377 int LoadRawFile(ft_uint32_t address, const char *filename); 00378 int LoadInflateFile(ft_uint32_t address, const char *filename); 00379 int LoadImageFile(ft_uint32_t address, const char *filename); 00380 ft_void_t SetEndAddressForSize(ft_uint32_t addr); 00381 00382 ft_void_t Wr8s(ft_uint32_t addr, ft_uint8_t *buffer, ft_uint8_t length); 00383 00384 }; // end of class 00385 00386 #endif /*FT_GPU_HAL_H*/
Generated on Wed Aug 3 2022 23:29:07 by
1.7.2