SWM341_dma2d.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef __SWM341_DMA2D_H__
  2. #define __SWM341_DMA2D_H__
  3. #include <stdint.h>
  4. typedef struct {
  5. uint16_t Interval; // 每传输一块数据(64个字),等待指定个系统周期后再传输下一个块,防止DMA2D占用过多SDRAM带宽,影响LCD读取显示数据;取值1--1023
  6. uint8_t IntEOTEn; // End of Transter(传输完成)中断使能
  7. } DMA2D_InitStructure;
  8. typedef struct {
  9. uint32_t Address;
  10. uint32_t LineOffset; // added at the end of each line to determine the starting address of the next line
  11. uint8_t ColorMode; // DMA2D_FMT_ARGB888、DMA2D_FMT_RGB888、DMA2D_FMT_RGB565、...
  12. uint8_t AlphaMode; // DMA2D_AMODE_PIXEL、DMA2D_AMODE_ALPHA、DMA2D_AMODE_PMULA、...
  13. uint8_t Alpha;
  14. /* 只有输出层需要设置这两个域,前景层和背景层不需设置 */
  15. uint16_t LineCount; // 显示数据行数
  16. uint16_t LinePixel; // 每行像素个数
  17. } DMA2D_LayerSetting;
  18. #define DMA2D_LAYER_FG 0 // Foreground layer
  19. #define DMA2D_LAYER_BG 1 // Background layer
  20. #define DMA2D_LAYER_OUT 2 // Output layer
  21. /* Color Format */
  22. #define DMA2D_FMT_ARGB888 (0 | (0 << 4))
  23. #define DMA2D_FMT_RGB888 (1 | (0 << 4))
  24. #define DMA2D_FMT_RGB565 (2 | (0 << 4))
  25. #define DMA2D_FMT_ABGR888 (0 | (1 << 4))
  26. #define DMA2D_FMT_BGR888 (1 | (1 << 4))
  27. #define DMA2D_FMT_BGR565 (2 | (1 << 4))
  28. /* Alpha Mode */
  29. #define DMA2D_AMODE_PIXEL (0 | (0 << 5)) // 使用像素点自带Alpha值
  30. #define DMA2D_AMODE_ALPHA (0 | (1 << 5)) // 使用软件指定的Alpha值
  31. #define DMA2D_AMODE_PMULA (0 | (2 << 5)) // 使用像素点自带Alpha值与软件指定的Alpha值的乘积
  32. void DMA2D_Init(DMA2D_InitStructure * initStruct);
  33. void DMA2D_PixelFill(DMA2D_LayerSetting * outLayer, uint32_t color);
  34. void DMA2D_PixelMove(DMA2D_LayerSetting * fgLayer, DMA2D_LayerSetting * outLayer);
  35. void DMA2D_PixelConvert(DMA2D_LayerSetting * fgLayer, DMA2D_LayerSetting * outLayer);
  36. void DMA2D_PixelBlend(DMA2D_LayerSetting * fgLayer, DMA2D_LayerSetting * bgLayer, DMA2D_LayerSetting * outLayer);
  37. uint32_t DMA2D_IsBusy(void);
  38. void DMA2D_INTEn(void);
  39. void DMA2D_INTDis(void);
  40. void DMA2D_INTClr(void);
  41. uint32_t DMA2D_INTStat(void);
  42. #endif // __SWM341_DMA2D_H__