OLED_SSD1327.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. /*
  2. * OLED_SSD1327.h
  3. *
  4. * The MIT License.
  5. * Created on: 16.07.2020
  6. * Author: Mateusz Salamon
  7. * www.msalamon.pl
  8. * mateusz@msalamon.pl
  9. */
  10. #ifndef OLED_SSD1327_H_
  11. #define OLED_SSD1327_H_
  12. #include "stm32g4xx_hal.h"
  13. /*
  14. *
  15. * SETTINGS
  16. *
  17. * Please set only one interface. It won't work with both one time.
  18. *
  19. */
  20. #define SSD1327_SPI_CONTROL
  21. //#define SSD1327_I2C_CONTROL
  22. #ifdef SSD1327_I2C_CONTROL
  23. //#define SSD1327_I2C_DMA_ENABLE
  24. #define SSD1327_I2C_ADDRESS (0x3D << 1)
  25. #endif
  26. #ifdef SSD1327_SPI_CONTROL
  27. #define SSD1327_RESET_USE
  28. #define SSD1327_SPI_DMA_ENABLE
  29. #define SPI_CS_HARDWARE_CONTROL
  30. #endif
  31. //
  32. // Resolution
  33. //
  34. #define SSD1327_LCDWIDTH 128
  35. #define SSD1327_LCDHEIGHT 128 //96
  36. /*
  37. * Please set what functionality you want to use.
  38. * Some functions need other functionalities. It should works automatically.
  39. *
  40. * 1 - will be compiled
  41. * 0 - won't be compiled
  42. */
  43. #define GRAPHIC_ACCELERATION_COMMANDS 0
  44. /****************************************************************/
  45. //
  46. // Commands
  47. //
  48. /*
  49. Эта трёхбайтовая команда определяет начальный и конечный адреса столбцов
  50. в ОЗУ данных отображения. Эта
  51. команда также устанавливает указатель адреса столбца на начальный адрес столбца.
  52. Этот указатель используется для определения
  53. текущего адреса столбца для чтения/записи в ОЗУ данных графического отображения.
  54. Если режим горизонтального увеличения адреса включён командой A0h, после
  55. завершения чтения/записи данных одного столбца он автоматически увеличивается до
  56. адреса следующего столбца. Всякий раз, когда указатель адреса столбца завершает
  57. доступ к адресу конечного столбца, он сбрасывается обратно на адрес начального
  58. столбца, а адрес строки увеличивается до следующей строки.
  59. */
  60. #define SSD1327_SETCOLUMNADDRESS 0x15
  61. #define SSD1327_SETROWADDRESS 0x75
  62. #define SSD1327_SETCONTRASTCURRENT 0x81
  63. #define SSD1327_NOP 0x84
  64. #define SSD1327_SEGREMAP 0xA0
  65. #define SSD1327_SETDISPLAYSTARTLINE 0xA1
  66. #define SSD1327_SETDISPLAYOFFSET 0xA2
  67. #define SSD1327_DISPLAYALLON_RESUME 0xA4
  68. #define SSD1327_DISPLAYALLON 0xA5
  69. #define SSD1327_NORMALDISPLAY 0xA6
  70. #define SSD1327_INVERTDISPLAY 0xA7
  71. #define SSD1327_SETMULTIPLEX 0xA8
  72. #define SSD1327_FUNCTIONSELECTIONA 0xAB
  73. #define SSD1327_DISPLAYOFF 0xAE
  74. #define SSD1327_DISPLAYON 0xAF
  75. #define SSD1327_SETPHASELENGTH 0xB1
  76. #define SSD1327_SETFRONTCLOCKDIVIDER_OSCILLATORFREQUENCY 0xB3
  77. #define SSD1327_SETGPIO 0xB5
  78. #define SSD1327_SETSECONDPRECHARGEPERTIOD 0xB6
  79. #define SSD1327_SETGRAYSCALETABLE 0xB8
  80. #define SSD1327_SELECTDEFAULTLINEARGRAYSCALETABLE 0xB9
  81. #define SSD1327_SETPRECHARGEVOLTAGE 0xBC
  82. #define SSD1327_SETSETVCOMVOLTAGE 0xBE
  83. #define SSD1327_FUNCTIONSELECTIONB 0xD5
  84. #define SSD1327_SETCOMMANDLOCK 0xFD
  85. //
  86. // Scrolling #defines
  87. //
  88. #define SSD1327_ACTIVATE_SCROLL 0x2F
  89. #define SSD1327_DEACTIVATE_SCROLL 0x2E
  90. #define SSD1327_RIGHT_HORIZONTAL_SCROLL 0x26
  91. #define SSD1327_LEFT_HORIZONTAL_SCROLL 0x27
  92. //
  93. // Colors
  94. //
  95. #define BLACK 0
  96. // Grays between
  97. #define WHITE 15
  98. //
  99. // Scrolling enums
  100. //
  101. typedef enum
  102. {
  103. SCROLL_EVERY_5_FRAMES,
  104. SCROLL_EVERY_64_FRAMES,
  105. SCROLL_EVERY_128_FRAMES,
  106. SCROLL_EVERY_256_FRAMES,
  107. SCROLL_EVERY_3_FRAMES,
  108. SCROLL_EVERY_4_FRAMES,
  109. SCROLL_EVERY_25_FRAMES,
  110. SCROLL_EVERY_2_FRAMES,
  111. } scroll_horizontal_speed;
  112. //
  113. // Functions
  114. //
  115. #ifdef SSD1327_I2C_CONTROL
  116. void SSD1327_I2cInit(I2C_HandleTypeDef *i2c);
  117. #endif
  118. #if defined(SSD1327_SPI_CONTROL)
  119. void SSD1327_SpiInit(SPI_HandleTypeDef *spi);
  120. #endif
  121. #if defined(SSD1327_SPI_CONTROL) && !defined(SSD1327_SPI_DMA_ENABLE)
  122. void SSD1327_DmaEndCallback(SPI_HandleTypeDef *hspi);
  123. #endif
  124. //
  125. // Configuration
  126. //
  127. void SSD1327_DisplayON(uint8_t On);
  128. void SSD1327_InvertColors(uint8_t Invert);
  129. void SSD1327_RotateDisplay(uint8_t Rotate);
  130. void SSD1327_SetContrast(uint8_t Contrast);
  131. //
  132. // Drawing
  133. //
  134. void SSD1327_DrawPixel(int16_t x, int16_t y, uint8_t Color);
  135. void SSD1327_Clear(uint8_t Color);
  136. void SSD1327_Display(void);
  137. void SSD1327_Bitmap(uint8_t *bitmap);
  138. #if GRAPHIC_ACCELERATION_COMMANDS == 1
  139. //
  140. // Graphic Acceleration Commands
  141. //
  142. void SSD1327_StartScrollRight(uint8_t StartPage, uint8_t EndPage, scroll_horizontal_speed Speed);
  143. void SSD1327_StartScrollLeft(uint8_t StartPage, uint8_t EndPage, scroll_horizontal_speed Speed);
  144. void SSD1327_StopScroll(void);
  145. #endif
  146. void SSD1327_Command(uint8_t com);
  147. void SSD1327_Data(uint8_t dat);
  148. #endif /* OLED_SSD1327_H_ */