SWM341_lcd.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #ifndef __SWM341_LCD_H__
  2. #define __SWM341_LCD_H__
  3. typedef struct {
  4. uint8_t ClkDiv; //取值范围2--65
  5. uint8_t Format; //LCD_FMT_RGB565、LCD_FMT_RGB888、LCD_FMT_SRGB565、LCD_FMT_SRGB888
  6. uint16_t HnPixel; //水平方向像素个数,最大取值1024
  7. uint16_t VnPixel; //垂直方向像素个数,最大取值1024
  8. uint8_t Hfp; //horizonal front porch,最大取值64
  9. uint16_t Hbp; //horizonal back porch, 最大取值256
  10. uint8_t Vfp; //vertical front porch, 最大取值64
  11. uint16_t Vbp; //vertical back porch, 最大取值256
  12. uint16_t HsyncWidth; //HSYNC低电平持续多少个DOTCLK,最大取值256
  13. uint16_t VsyncWidth; //VSYNC低电平持续多少个行时间,最大取值256
  14. uint32_t DataSource; //显示数据地址
  15. uint32_t Background; //背景颜色
  16. uint8_t SampleEdge; //屏幕在DOTCLK的哪个边沿采样数据:LCD_SAMPLE_RISE、LCD_SAMPLE_FALL
  17. uint8_t IntEOTEn; //End of Transter(传输完成)中断使能
  18. } LCD_InitStructure;
  19. typedef struct {
  20. uint8_t Alpha;
  21. uint16_t HStart; //水平方向起始位置,取值范围0 ~ HnPixel-1
  22. uint16_t HStop; //水平方向终止位置(包含),不得小于HStart,且 HStop - HStart 结果必须为奇数
  23. uint16_t VStart;
  24. uint16_t VStop;
  25. uint32_t DataSource; //显示数据地址
  26. } LCD_LayerInitStructure;
  27. #define LCD_FMT_RGB565 0
  28. #define LCD_FMT_RGB888 1
  29. #define LCD_FMT_SRGB565 2 //Serial RGB
  30. #define LCD_FMT_SRGB888 3
  31. #define LCD_SAMPLE_RISE 0 //屏幕在DOTCLK的上升沿采样数据
  32. #define LCD_SAMPLE_FALL 1 //屏幕在DOTCLK的下降沿采样数据
  33. #define LCD_LAYER_1 0
  34. #define LCD_LAYER_2 1
  35. void LCD_Init(LCD_TypeDef * LCDx, LCD_InitStructure * initStruct);
  36. void LCD_LayerInit(LCD_TypeDef * LCDx, uint32_t layerx, LCD_LayerInitStructure * initStruct);
  37. void LCD_SetLayerPos(LCD_TypeDef * LCDx, uint32_t layerx, uint16_t hstart, uint16_t hstop, uint16_t vstart, uint16_t vstop);
  38. void LCD_Start(LCD_TypeDef * LCDx);
  39. uint32_t LCD_IsBusy(LCD_TypeDef * LCDx);
  40. void LCD_INTEn(LCD_TypeDef * LCDx);
  41. void LCD_INTDis(LCD_TypeDef * LCDx);
  42. void LCD_INTClr(LCD_TypeDef * LCDx);
  43. uint32_t LCD_INTStat(LCD_TypeDef * LCDx);
  44. typedef struct {
  45. uint8_t RDHoldTime; //LCD_RD低电平保持时间,取值1--32
  46. uint8_t WRHoldTime; //LCD_WR低电平保持时间,取值1--16
  47. uint8_t CSFall_WRFall; //LCD_CS下降沿到LCD_WR下降沿延时,取值1--4
  48. uint8_t WRRise_CSRise; //LCD_WR上升沿到LCD_CS上升沿延时,取值1--4
  49. uint8_t RDCSRise_Fall; //读操作时,LCD_CS上升沿到下降沿延时,取值1--32
  50. uint8_t WRCSRise_Fall; //写操作时,LCD_CS上升沿到下降沿延时,取值1--16
  51. } MPULCD_InitStructure;
  52. void MPULCD_Init(LCD_TypeDef * LCDx, MPULCD_InitStructure * initStruct);
  53. void LCD_WR_REG(LCD_TypeDef * LCDx, uint16_t reg);
  54. void LCD_WR_DATA(LCD_TypeDef * LCDx, uint16_t val);
  55. void LCD_WriteReg(LCD_TypeDef * LCDx, uint16_t reg, uint16_t val);
  56. uint16_t LCD_ReadReg(LCD_TypeDef * LCDx, uint16_t reg);
  57. void MPULCD_DMAStart(LCD_TypeDef * LCDx, uint32_t * buff, uint16_t hpix, uint16_t vpix);
  58. uint32_t MPULCD_DMABusy(LCD_TypeDef * LCDx);
  59. #endif //__SWM341_LCD_H__