README.txt 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. nuttx/drivers/lcd README
  2. ========================
  3. This is the README.txt file for the drivers/lcd/ directory.
  4. Contents
  5. ========
  6. - LCD Header files
  7. include/nuttx/lcd/lcd.h
  8. struct lcd_dev_s
  9. - Binding LCD Drivers
  10. - Examples: /drivers/lcd/
  11. - Examples: boards/
  12. - graphics/
  13. LCD Header files
  14. ================
  15. include/nuttx/lcd/lcd.h
  16. Structures and APIs needed to work with LCD drivers are provided in
  17. this header file. This header file also depends on some of the same
  18. definitions used for the frame buffer driver as provided in
  19. include/nuttx/video/fb.h.
  20. struct lcd_dev_s
  21. Each LCD device driver must implement an instance of struct lcd_dev_s.
  22. That structure defines a call table with the following methods:
  23. - Get information about the LCD video controller configuration and the
  24. configuration of each LCD color plane.
  25. int (*getvideoinfo)(FAR struct lcd_dev_s *dev,
  26. FAR struct fb_videoinfo_s *vinfo);
  27. int (*getplaneinfo)(FAR struct lcd_dev_s *dev, unsigned int planeno,
  28. FAR struct lcd_planeinfo_s *pinfo);
  29. - The following are provided only if the video hardware supports RGB
  30. color mapping:
  31. int (*getcmap)(FAR struct lcd_dev_s *dev,
  32. FAR struct fb_cmap_s *cmap);
  33. int (*putcmap)(FAR struct lcd_dev_s *dev,
  34. FAR const struct fb_cmap_s *cmap);
  35. - The following are provided only if the video hardware supports a
  36. hardware cursor:
  37. int (*getcursor)(FAR struct lcd_dev_s *dev,
  38. FAR struct fb_cursorattrib_s *attrib);
  39. int (*setcursor)(FAR struct lcd_dev_s *dev,
  40. FAR struct fb_setcursor_s *settings);
  41. - Get the LCD panel power status (0: full off - CONFIG_LCD_MAXPOWER:
  42. full on). On backlit LCDs, this setting may correspond to the
  43. backlight setting.
  44. int (*getpower)(struct lcd_dev_s *dev);
  45. - Enable/disable LCD panel power (0: full off - CONFIG_LCD_MAXPOWER:
  46. full on). On backlit LCDs, this setting may correspond to the
  47. backlight setting.
  48. int (*setpower)(struct lcd_dev_s *dev, int power);
  49. - Get the current contrast setting (0-CONFIG_LCD_MAXCONTRAST) */
  50. int (*getcontrast)(struct lcd_dev_s *dev);
  51. - Set LCD panel contrast (0-CONFIG_LCD_MAXCONTRAST)
  52. int (*setcontrast)(struct lcd_dev_s *dev, unsigned int contrast);
  53. Binding LCD Drivers
  54. ===================
  55. LCD drivers are not normally directly accessed by user code, but are
  56. usually bound to another, higher level device driver. In general, the
  57. binding sequence is:
  58. 1. Get an instance of struct lcd_dev_s from the hardware-specific LCD
  59. device driver, and
  60. 2. Provide that instance to the initialization method of the higher
  61. level device driver.
  62. Examples: /drivers/lcd/
  63. =======================
  64. Re-usable LCD drivers reside in the drivers/lcd directory:
  65. LCDs:
  66. ----
  67. mio283qt2.c. This is a driver for the MI0283QT-2 LCD from Multi-Inno
  68. Technology Co., Ltd. This LCD is based on the Himax HX8347-D LCD
  69. controller.
  70. mio283qt9a.c. This is a driver for the MI0283QT-9A LCD from Multi-Inno
  71. Technology Co., Ltd. This LCD is based on the Ilitek ILI9341 LCD
  72. controller.
  73. ssd12989.c. Generic LCD driver for LCDs based on the Solomon Systech
  74. SSD1289 LCD controller. Think of this as a template for an LCD driver
  75. that you will probably have to customize for any particular LCD
  76. hardware. (See also boards/arm/stm32/hymini-stm32v/src/ssd1289.c below).
  77. st7567.c. LCD Display Module, ST7567, Univision Technology Inc. Used
  78. with the LPCXpresso and Embedded Artists base board.
  79. memlcd.c. Sharp Memory LCD Suite, LS013B7DH01, LS013B7DH03, etc.
  80. There are some more different models, they are basically controlled
  81. by similar logics, thus this driver can be extended.
  82. ra8875.c. RAiO Technologies RA8875 LCD controller. Contributed by
  83. Marten Svanfeldt.
  84. OLEDs:
  85. -----
  86. p14201.c. Driver for RiT P14201 series display with SD1329 IC
  87. controller. Based on the SD1329 controller. This OLED is used with
  88. older versions of the TI/Luminary LM3S8962 Evaluation Kit. Example
  89. usage:
  90. boards/arm/tiva/lm3s6965-ek/src
  91. boards/arm/tiva/lm3s8962-ek/src
  92. ug-2864ambag01.c. OLED Display Module, UUG-2864AMBAG01, Univision
  93. Technology Inc. Based on the SH1101A controller. Example usage:
  94. boards/arm/stm32/stm32f4discovery
  95. boards/arm/lpc214x/zp214xpa
  96. ug-9664hswag01.c. OLED Display Module, UG-9664HSWAG01, Univision
  97. Technology Inc. Based on the SSD1305 controller. Used with the
  98. LPC Xpresso and Embedded Artists base board. Example usage:
  99. boards/arm/lpc71xx_40xx/lpcxpresso-lpc1768
  100. ssd1306.c. OLED Display Modules based on the SSD1306 controllers.
  101. This includes the UG-2864HSWEG01 and UG2832HSWEG04, both from Univision
  102. Technology Inc. The latter is used with the OLED1 module that comes
  103. with the Atmel SAM4l Xplained Pro board. This driver also supports
  104. Densitron Technologies DD-12864WO-4A which is based on SSD1309 LCD
  105. controller. Example usage:
  106. boards/arm/stm32/stm32f4discovery
  107. boards/arm/sam34/sam4l-xplained
  108. Segment LCDS (SLCDs):
  109. ---------------------
  110. pcf8574_lcd_backpack.c: See pcf8574_lcd_backpack_readme.txt.
  111. Examples: boards/
  112. ==================
  113. There are additional LCD drivers in the boards/<arch>/<chip>/<board>/src
  114. directory that support additional LCDs. LCD drivers in the configuration
  115. directory if they support some differ LCD interface (such as a parallel
  116. interface) that makes then less re-usable:
  117. SSD1289 Drivers:
  118. boards/arm/stm32/hymini-stm32v/src/ssd1289.c. See also
  119. drivers/lcd/ssd1298.c above.
  120. boards/arm/stm32/stm32f4discovery/src/stm32_ssd1289.c. This examples
  121. is the bottom half for the SSD1289 driver at drivers/lcd/ssd1289.c
  122. boards/arm/stm32/hymini-stm32v/src/ssd1289.c. See also
  123. drivers/lcd/ssd1298.c above.
  124. boards/arm/stm32/shenzhou/src/stm32_ssd1289.c
  125. kwikstik-k40:
  126. boards/arm/kinetis/kwikstik-k40/src/k40_lcd.c. Don't waste your time.
  127. This is just a stub.
  128. HX8346:
  129. boards/arm/sam34/sam3u-ek/src/sam_lcd.c. The SAM3U-EK development board
  130. features a TFT/Transmissive color LCD module with touch-screen,
  131. FTM280C12D, with integrated driver IC HX8346.
  132. HX8347:
  133. boards/mips/pic32mx/pic32mx7mmb/src/pic32_mio283qt2.c. This driver is
  134. for the MI0283QT-2 LCD from Multi-Inno Technology Co., Ltd. This LCD
  135. is based on the Himax HX8347-D LCD controller.
  136. ILI93xx and Similar:
  137. boards/arm/stm32/stm3210e-eval/src/stm32_lcd.c. This driver supports the
  138. following LCDs:
  139. 1. Ampire AM-240320LTNQW00H
  140. 2. Orise Tech SPFD5408B
  141. 3. RenesasSP R61580
  142. boards/arm/stm32/stm3220g-eval/src/stm32_lcd.c and
  143. boards/stm3240g-eval/src/smt32_lcd.c.
  144. AM-240320L8TNQW00H (LCD_ILI9320 or LCD_ILI9321) and
  145. AM-240320D5TOQW01H (LCD_ILI9325)
  146. boards/arm/stm32/shenzhou/src/stm32_ili93xx.c. Another ILI93xx driver.
  147. config/arm/sam34/sam4e-ek/src/sam_ili9325.c. ILI9325 driver
  148. config/arm/sam34/sam4e-ek/src/sam_ili9341.c. ILI9341 driver
  149. ILI9488
  150. boards/arm/samv7/samv71-xult/src/sam_ili9488.c
  151. include/nuttx/lcd/ili9488.h
  152. R61505U
  153. boards/arm/stm32/hymini-stm32v/src/stm32_r61505u.c
  154. Sharp Memory LCD:
  155. boards/arm/stm32/maple/src/stm32_lcd.c
  156. OLEDs:
  157. boards/arm/stm32/stm32f4discovery/src/stm32_ug2864ambag01.c
  158. boards/arm/stm32/stm32f4discovery/src/stm32_ug2864hsweg01.c
  159. boards/arm/sam34/sam4l-xplained/src/sam_ug2832hsweg04.c
  160. boards/arm/lpc214x/zp214xpa/src/lpc2148_ug2864ambag01.c
  161. LCD controllers built-into the MCU:
  162. arch/arm/src/lpc17xx_40xx/lpc17_40_lcd.c and
  163. boards/arm/lpc17xx_40xx/open1788/src/lpc17_40_lcd.c.
  164. RGB LCD display panel.
  165. boards/arm/stm32/stm32ldiscovery/src/stm32_lcd.c. 1x6 segment LCD with
  166. bars using the segment LCD controller built-into the STM32L15X.
  167. Alphanumeric/segment LCD Displays:
  168. boards/renesas/m16c/skp16c26/src/m16c_lcd.c. Untested alphanumeric
  169. LCD driver.
  170. boards/mips/pic32mx/sure-pic32mx/src/pic32_lcd1602.c. An LCD1602 segment
  171. LCD. This is a bit-bang version of the driver and appears to
  172. be fully functional. This version of the LCD1602 driver has
  173. been verified and is working fine.
  174. boards/arm/stm32/stm32ldiscovery/src/stm32_lcd.c. 1x6 segment LCD with
  175. bars using the segment LCD controller built-into the STM32L15X.
  176. TFT Panel Drivers:
  177. boards/arm/lpc17xx_40xx/open1788/src/lpc17_40_lcd.c and
  178. arch/arm/src/lpc17xx_40xx/lpc17_40_lcd.c
  179. boards/arm/sama5/sama5d3x-ek/src and boards/arm/sama5/sama5d4-ek/src:
  180. Use
  181. arch/arm/src/sama5/sam_lcd.c
  182. graphics/
  183. =========
  184. See also the usage of the LCD driver in the graphics/ directory.