ssd1306.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef __SSD1306_H__
  2. #define __SSD1306_H__
  3. #include <driver/spi_master.h>
  4. void i2c_master_init();
  5. esp_err_t oled_ssd1306_init();
  6. // I2C CONFIG
  7. #define I2C_MASTER_NUM I2C_NUM_1 /*!< I2C port number for master dev */
  8. #define I2C_MASTER_TX_BUF_DISABLE 0 /*!< I2C master do not need buffer */
  9. #define I2C_MASTER_RX_BUF_DISABLE 0 /*!< I2C master do not need buffer */
  10. #define SSD1306_OLED_ADDR 0x3C /*!< slave address for ssd1306 oled display */
  11. #define WRITE_BIT I2C_MASTER_WRITE /*!< I2C master write */
  12. #define READ_BIT I2C_MASTER_READ /*!< I2C master read */
  13. #define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/
  14. #define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */
  15. #define ACK_VAL 0x0 /*!< I2C ack value */
  16. #define NACK_VAL 0x1 /*!< I2C nack value */
  17. // Control bytes (page 20)
  18. #define COMMAND_MODE 0x00
  19. #define SINGLE_COMMAND_MODE 0x80
  20. #define DATA_MODE 0x40
  21. // Fundamental Command (page 28)
  22. #define DISPLAY_LINE_START 0x40
  23. #define CONTRAST_CONTROL 0x81
  24. #define DISABLE_ENTIRE_DISPLAY 0xA4
  25. #define DISPLAY_ON_REG02 0xA5
  26. #define NORMAL_DISPLAY 0xA6
  27. #define DISPLAY_INVERSE 0xA7
  28. #define DISPLAY_RESET 0xAE
  29. #define DISPLAY_ON 0xAF
  30. // Hardware Config (page 31)
  31. #define DISPLAY_START_LINE 0x40
  32. #define SEGMENT_REMAP 0xA0
  33. #define MULTIPLEX_RATIO 0xA8
  34. #define COM_OUTPUT_SCAN_DIR 0xC0
  35. #define DISPLAY_OFFSET 0xD3
  36. #define COM_PINS_HARDWARE_CONFIG 0xDA
  37. // Timing & Driving Scheme (page 32)
  38. #define DISPLAY_CLK_RATIO 0xD5
  39. #define PRE_CHARGE_PER 0xD9
  40. #define VCOMH_DESELECT_LEVEL 0xDB
  41. #define NOOPERATION 0xE3
  42. // Charge Pump (page 60)
  43. #define CHARGE_PUMP_SET 0x8D
  44. #endif