drv_slcd_truly_tft240240.c 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. /*
  2. * File : drv_slcd_truly240240.c
  3. * COPYRIGHT (C) 2008 - 2016, RT-Thread Development Team
  4. *
  5. * Change Logs:
  6. * Date Author Notes
  7. * 2017Äê4ÔÂ28ÈÕ Urey the first version
  8. */
  9. #include <rtthread.h>
  10. #include <cache.h>
  11. #include "board.h"
  12. #include "drv_slcdc.h"
  13. #include <drv_gpio.h>
  14. #ifdef RT_USING_TRULY_TFT240240
  15. rt_uint32_t _truly_tft240240_cmd_table[]=
  16. {
  17. 0x2c2c0000,
  18. };
  19. struct slcd_data_table _truly_tft240240_data_table[] =
  20. {
  21. /* LCD init code */
  22. {SMART_CONFIG_CMD, 0x01}, //soft reset, 120 ms = 120 000 us
  23. {SMART_CONFIG_UDELAY, 20},
  24. {SMART_CONFIG_CMD, 0x11},
  25. {SMART_CONFIG_UDELAY, 10}, /* sleep out 50 ms */
  26. {SMART_CONFIG_CMD, 0x36},
  27. #ifdef CONFIG_TRULY_240X240_ROTATE_180
  28. {SMART_CONFIG_DATA, 0xd0}, //40
  29. #else
  30. {SMART_CONFIG_DATA, 0x00}, //40
  31. #endif
  32. {SMART_CONFIG_CMD, 0x2a},
  33. {SMART_CONFIG_DATA, 0x00},
  34. {SMART_CONFIG_DATA, 0x00},
  35. {SMART_CONFIG_DATA, 0x00},
  36. {SMART_CONFIG_DATA, 0xef},
  37. {SMART_CONFIG_CMD, 0x2b},
  38. {SMART_CONFIG_DATA, 0x00},
  39. {SMART_CONFIG_DATA, 0x00},
  40. {SMART_CONFIG_DATA, 0x00},
  41. {SMART_CONFIG_DATA, 0xef},
  42. {SMART_CONFIG_CMD, 0x3a},
  43. #if defined(CONFIG_SLCD_TRULY_18BIT) //if 18bit/pixel unusual. try to use 16bit/pixel
  44. {SMART_CONFIG_DATA, 0x06}, //6-6-6
  45. #else
  46. {SMART_CONFIG_DATA, 0x05}, //5-6-5
  47. #endif
  48. // {SMART_CONFIG_DATA, 0x55},
  49. {SMART_CONFIG_CMD, 0xb2},
  50. {SMART_CONFIG_DATA, 0x7f},
  51. {SMART_CONFIG_DATA, 0x7f},
  52. {SMART_CONFIG_DATA, 0x01},
  53. {SMART_CONFIG_DATA, 0xde},
  54. {SMART_CONFIG_DATA, 0x33},
  55. {SMART_CONFIG_CMD, 0xb3},
  56. {SMART_CONFIG_DATA, 0x10},
  57. {SMART_CONFIG_DATA, 0x05},
  58. {SMART_CONFIG_DATA, 0x0f},
  59. {SMART_CONFIG_CMD, 0xb4},
  60. {SMART_CONFIG_DATA, 0x0b},
  61. {SMART_CONFIG_CMD, 0xb7},
  62. {SMART_CONFIG_DATA, 0x35},
  63. {SMART_CONFIG_CMD, 0xbb},
  64. {SMART_CONFIG_DATA, 0x28}, //23
  65. {SMART_CONFIG_CMD, 0xbc},
  66. {SMART_CONFIG_DATA, 0xec},
  67. {SMART_CONFIG_CMD, 0xc0},
  68. {SMART_CONFIG_DATA, 0x2c},
  69. {SMART_CONFIG_CMD, 0xc2},
  70. {SMART_CONFIG_DATA, 0x01},
  71. {SMART_CONFIG_CMD, 0xc3},
  72. {SMART_CONFIG_DATA, 0x1e}, //14
  73. {SMART_CONFIG_CMD, 0xc4},
  74. {SMART_CONFIG_DATA, 0x20},
  75. {SMART_CONFIG_CMD, 0xc6},
  76. {SMART_CONFIG_DATA, 0x14},
  77. {SMART_CONFIG_CMD, 0xd0},
  78. {SMART_CONFIG_DATA, 0xa4},
  79. {SMART_CONFIG_DATA, 0xa1},
  80. {SMART_CONFIG_CMD, 0xe0},
  81. {SMART_CONFIG_DATA, 0xd0},
  82. {SMART_CONFIG_DATA, 0x00},
  83. {SMART_CONFIG_DATA, 0x00},
  84. {SMART_CONFIG_DATA, 0x08},
  85. {SMART_CONFIG_DATA, 0x07},
  86. {SMART_CONFIG_DATA, 0x05},
  87. {SMART_CONFIG_DATA, 0x29},
  88. {SMART_CONFIG_DATA, 0x54},
  89. {SMART_CONFIG_DATA, 0x41},
  90. {SMART_CONFIG_DATA, 0x3c},
  91. {SMART_CONFIG_DATA, 0x17},
  92. {SMART_CONFIG_DATA, 0x15},
  93. {SMART_CONFIG_DATA, 0x1a},
  94. {SMART_CONFIG_DATA, 0x20},
  95. {SMART_CONFIG_CMD, 0xe1},
  96. {SMART_CONFIG_DATA, 0xd0},
  97. {SMART_CONFIG_DATA, 0x00},
  98. {SMART_CONFIG_DATA, 0x00},
  99. {SMART_CONFIG_DATA, 0x08},
  100. {SMART_CONFIG_DATA, 0x07},
  101. {SMART_CONFIG_DATA, 0x04},
  102. {SMART_CONFIG_DATA, 0x29},
  103. {SMART_CONFIG_DATA, 0x44},
  104. {SMART_CONFIG_DATA, 0x42},
  105. {SMART_CONFIG_DATA, 0x3b},
  106. {SMART_CONFIG_DATA, 0x16},
  107. {SMART_CONFIG_DATA, 0x15},
  108. {SMART_CONFIG_DATA, 0x1b},
  109. {SMART_CONFIG_DATA, 0x1f},
  110. {SMART_CONFIG_CMD, 0x35}, // TE on
  111. {SMART_CONFIG_DATA, 0x00}, // TE mode: 0, mode1; 1, mode2
  112. // {SMART_CONFIG_CMD, 0x34}, // TE off
  113. {SMART_CONFIG_CMD, 0x29}, //Display ON
  114. /* set window size*/
  115. // {SMART_CONFIG_CMD, 0xcd},
  116. {SMART_CONFIG_CMD, 0x2a},
  117. {SMART_CONFIG_DATA, 0},
  118. {SMART_CONFIG_DATA, 0},
  119. {SMART_CONFIG_DATA, (239>> 8) & 0xff},
  120. {SMART_CONFIG_DATA, 239 & 0xff},
  121. #ifdef CONFIG_TRULY_240X240_ROTATE_180
  122. {SMART_CONFIG_CMD, 0x2b},
  123. {SMART_CONFIG_DATA, ((320-240)>>8)&0xff},
  124. {SMART_CONFIG_DATA, ((320-240)>>0)&0xff},
  125. {SMART_CONFIG_DATA, ((320-1)>>8) & 0xff},
  126. {SMART_CONFIG_DATA, ((320-1)>>0) & 0xff},
  127. #else
  128. {SMART_CONFIG_CMD, 0x2b},
  129. {SMART_CONFIG_DATA, 0},
  130. {SMART_CONFIG_DATA, 0},
  131. {SMART_CONFIG_DATA, (239>> 8) & 0xff},
  132. {SMART_CONFIG_DATA, 239 & 0xff},
  133. #endif
  134. {SMART_CONFIG_CMD, 0X2C}, //GRAM start writing
  135. };
  136. struct slcd_configure _truly_tft240240_config =
  137. {
  138. .width = 240,
  139. .height = 240,
  140. .fmt = RTGRAPHIC_PIXEL_FORMAT_RGB565,
  141. .bpp = 16,
  142. .bus_width = 8,
  143. .reg_width = 8,
  144. .refresh = 60,
  145. .reg_write_twice = 0,
  146. .rsply_cmd_high = 0,
  147. .csply_active_high = 0,
  148. /* write graphic ram command, in word, for example 8-bit bus, write_gram_cmd=C3C2C1C0. */
  149. .newcfg_fmt_conv = 1,
  150. .data_table = &_truly_tft240240_data_table[0],
  151. .data_table_num = sizeof(_truly_tft240240_data_table)/sizeof(_truly_tft240240_data_table[0]),
  152. .cmd_table = &_truly_tft240240_cmd_table[0],
  153. .cmd_table_num = sizeof(_truly_tft240240_cmd_table)/sizeof(_truly_tft240240_cmd_table[0])
  154. };
  155. int truly_tft240240_init(void)
  156. {
  157. /* reset lcd pane */
  158. gpio_direction_output(LCD_RST_PORT, LCD_RST_PIN, 0); //reset
  159. rt_thread_delay(rt_tick_from_millisecond(50));
  160. gpio_set_value(LCD_RST_PORT, LCD_RST_PIN, 1);
  161. rt_thread_delay(rt_tick_from_millisecond(50));
  162. /* enable backlight */
  163. gpio_direction_output(LCD_BLEN_PORT, LCD_BLEN_PIN,1);
  164. gpio_direction_output(LCD_BLPWM_PORT, LCD_BLPWM_PIN,1);
  165. /* init lcd & register lcd device */
  166. rt_hw_slcd_init(&_truly_tft240240_config);
  167. return 0;
  168. }
  169. #endif