Solomon SSD1963 (LCD-P0005)
Controller: Solomon SSD1963.
Panel: Tibbo-supplied LCD-P0005 (320x240) and similar panels.
Type: TFT, color, 16 bits/pixel.
Locking: Supported , display picture stays stable for at least 0.5 second after the display is locked. After that, the image starts to deteriorate quickly.
Test hardware: TPS2L system (corresponding platform: TPP2W). See Programmable Hardware Manual for details.
We offer two SSD1963 drivers
- The driver titled "Solomon SSD1963" is the driver that allows remapping of all related I/O lines. You can choose any GPIO lines to connect to the WR, 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 system). 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 5 I/O lines and an 8-bit data bus. 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 6 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. Port number is from the pl_io_port_num enum. Line and port numbers are platform-specific. See the list of pl_io_num and pl_io_port_num constants in the platform specifications.
Basing on the above, for the TPP2W platform (and the TPS2L device) the lcd.iomapping should be set to "55,43,42,41,40,0".
On the TPS2L the LCD is actually mounted up side down
This is why the code below has this lcd.rotated= YES line!
You won't see anything with the backlight off
The code below turns on the backlight (the control like is 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 setup and enable this controller/panel (we assume that the testing is done using the TPP2 board). Do not forget to select the fast "Solomon SSD1963 (fixed I/O-2)" driver.
** Tibbo Basic **
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