Solomon SSD1963 (LCD-P0005)
Controller: Solomon SSD1963.
Panel: Tibbo-supplied LCD-P0005 (320x240 pixels) and similar panels.
Type: TFT, color, 16 bits/pixel.
Locking: Supported, display picture stays stable for at least 0.5 seconds after the display is locked. After that, the image starts to deteriorate quickly.
Test hardware: TPS2L system (corresponding platform: TPP2W).
Tibbo Offers Two SSD1963 Drivers
- The driver titled "Solomon SSD1963" is the driver that allows remapping of all related I/O lines. You can choose any general-purpose I/O (GPIO) lines to connect to WR and RD. You can also choose any port to act as the LCD data bus.
- The driver titled "Solomon SSD1963 (fixed I/O-2)" is the same driver, but all I/O lines (and the port) are preassigned. This "fixed I/O" driver produces noticeably better performance compared to the "flexible" driver. We recommend that you choose this driver when working with the TPP2W platform (TPS2L). Note that the LCD initialization code (presented below) must still be used even with the "fixed" driver.
Hint: To select the driver, open the Project Settings dialog, then click Customize. In the Customize Project dialog, double-click on the Display panel type and select the driver you need. And don't forget to set Display (lcd.) object = Enabled.
I/O Mapping for SSD1963
The panel requires five I/O lines and an 8-bit data bus. The control lines are RESET, RS, WR, RD, and CS.
Each control line must be configured as an output.
For the "flexible" driver you can select any GPIO lines to control the LCD. For the "fixed" driver, the lines have been chosen by us and you can't change them.
The value of the lcd.iomapping property must be set correctly for the display to work (see Preparing the Display for Operation). For this particular display, the mapping string consists of six comma-separated decimal values:
- Number of the I/O line connected to RESET. It is #55 for the "fixed" I/O arrangement (and the TPP2W platform).
- Number of the I/O line connected to RS. It is #43 for the "fixed" I/O arrangement (and the TPP2W platform).
- Number of the I/O line connected to WR. It is #42 for the "fixed" I/O arrangement (and the TPP2W platform).
- Number of the I/O line connected to RD. It is #41 for the "fixed" I/O arrangement (and the TPP2W platform).
- Number of the I/O line connected to CS. It is #40 for the "fixed" I/O arrangement (and the TPP2W platform).
- Number of the I/O port connected to DB7-0. It is #0 for the "fixed" I/O arrangement (and the TPP2W platform).
I/O line numbers are from the pl_io_num enum. The port number is from the pl_io_port_num enum. The line and port numbers are platform-specific. See the list of pl_io_num and pl_io_port_num constants in the platform specifications.
Based on the above, for the TPP2W platform (and the TPS2L device), lcd.iomapping should be set to "55,43,42,41,40,0."
The LCD is Mounted Upside Down in the TPS2L
This is why the code below has the lcd.rotated = YES line!
You Won't See Anything With the Backlight Off
The code below turns on the backlight (active LOW). Strictly speaking, the backlight control line has nothing to do with the Solomon driver. This is just a regular GPIO. Still, it is necessary and so we show it here. Any GPIO line can be used to control the backlight, even with the "fixed" driver (once again, because the backlight control is just an independent control line).
Code Example — TPP2W
This code will properly set up and enable this controller/panel (we assume that the testing is done using the TPP2). Do not forget to select the fast "Solomon SSD1963 (fixed I/O-2)" driver.
lcd.iomapping="55,43,42,41,40,0" 'RESET,RS,WR,RD,CS,DB7-0
io.num=PL_IO_NUM_55 'RESET
io.enabled=YES
io.num=PL_IO_NUM_43 'RS
io.enabled=YES
io.num=PL_IO_NUM_42 'WR
io.enabled=YES
io.num=PL_IO_NUM_41 'RD
io.enabled=YES
io.num=PL_IO_NUM_40 'CS
io.enabled=YES
'set resolution
lcd.width=320
lcd.height=240
lcd.rotated=YES 'the LCD is mounted up side down inside the TPS2L
lcd.enabled=YES 'done!
'turn on the backlight (strictly speaking, this is not related to the LCD control, but we still show it here)
io.num=PL_IO_NUM_54
io.enabled=YES
io.state=HIGH