Difference between revisions of "Newhaven LVDS Capacitive Display Set"

From Voipac Wiki
Jump to navigation Jump to search
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:iMX8M Industial Development Kit]]
+
[[Category:iMX8M Industrial Development Kit]]
[[Category:iMX8M Industial Peripherals]]
+
[[Category:iMX8M Industrial Peripherals]]
 
<!-- -->
 
<!-- -->
 
<div style="float:right">__TOC__</div>
 
<div style="float:right">__TOC__</div>
  
This section shows information about the Newhaven LVDS Capacitive Display Set. The iMX8M Industrial Development Kit in this configuration is equipped with Yocto dunfell, kernel 5.4 to support LVDS display with a touchscreen layer. In this case the display is installed on the top of the iMX8M Development Baseboard.<br />
+
This section shows information about the Newhaven LVDS Capacitive Display Set. The iMX8M Industrial Development Kit in this configuration is equipped with Yocto dunfell, kernel 5.4 to support LVDS display with a touchscreen layer. In this case the display is installed on the top of the iMX Development Baseboard.<br />
[[image:iMX8M_Industrial_NH_EMC.jpg|800px]]
+
[[image:Voipac NHD LCD Assembly.png|800px]]
  
 
== Mechanical connection ==
 
== Mechanical connection ==
Line 14: Line 14:
 
* 6 pin touchscreen flat flex  cable
 
* 6 pin touchscreen flat flex  cable
 
* necessary spacers
 
* necessary spacers
[[image:iMX8M_Industrial_NH_EMC.jpg|800px]]
+
[[image:Voipac NHD LCD Fastener.png|800px]]
  
 
== Hardware connection ==
 
== Hardware connection ==
 
To enable smooth communication between the board and the display, connect the 40 Position FFC cable for LCD and 6 pin touchscreen FFC cable. To implement the display capabilities, following connections need to be made:
 
To enable smooth communication between the board and the display, connect the 40 Position FFC cable for LCD and 6 pin touchscreen FFC cable. To implement the display capabilities, following connections need to be made:
* connection between LVDS Display and iMX8M Development Baseboard connector LVDS0 NHD (J12) using a 40 Position FFC cable
+
* connection between LVDS Display and iMX Development Baseboard connector LVDS0 NHD (J12) using a 40 Position FFC cable
* touchscreen connection between iMX8M Development Baseboard connector NHD Touch (J13) and Touchscreen 6 pin FFC cable
+
* touchscreen connection between iMX Development Baseboard connector NHD Touch (J13) and Touchscreen 6 pin FFC cable
 
=== LVDS and Touchscreen cable ===
 
=== LVDS and Touchscreen cable ===
 
[[image:imx8m_LVDS_with_touchscreen_cable_for_NHD.jpg|800px]]
 
[[image:imx8m_LVDS_with_touchscreen_cable_for_NHD.jpg|800px]]
 +
=== Hardware jumpers Newhaven LVDS ===
 +
Make sure that configurable 0R resistor are moved to Newhaven LVDS0 interface <br />
 +
[[image:LVDS0 NH jumpers.png|800px]]
 +
<br />
  
 
== Software instructions ==
 
== Software instructions ==
Line 28: Line 32:
 
Manually booting with LVDS interface as a primary source for video output:
 
Manually booting with LVDS interface as a primary source for video output:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
u-boot=>  
+
Fastboot: Normal
 +
Normal Boot
 +
Hit any key to stop autoboot:  0
 +
u-boot=>
 +
u-boot=>
 +
u-boot=>
 +
u-boot=>
 +
u-boot=>
 
u-boot=> fatls mmc 0:1
 
u-boot=> fatls mmc 0:1
u-boot=> setenv fdt_file  
+
27787776  Image
 +
    48586  imx8mq-evk-voipac-dp.dtb
 +
    48793  imx8mq-evk-voipac-hdmi.dtb
 +
    49194  imx8mq-evk-voipac-lvds-koe.dtb
 +
    49198  imx8mq-evk-voipac-lvds-newhaven.dtb
 +
 
 +
5 file(s), 0 dir(s)
 +
 
 +
u-boot=> setenv fdt_file imx8mq-evk-voipac-lvds-newhaven.dtb
 
u-boot=> saveenv
 
u-boot=> saveenv
u-boot=>  
+
Saving Environment to MMC... Writing to MMC(0)... OK
 +
u-boot=>
 
u-boot=> boot
 
u-boot=> boot
 +
 
.
 
.
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Touchscreen test ===
 
=== Touchscreen test ===
Make sure TSC2007 chip is detected and bound as input device:
+
Default Voipac iMX8M Image contain evtest utility to catch touchscreen events. Make sure SiS9509 controller is detected and bound as input device. Select the device event number 1 (generic ft5x06 (79)):
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx6-rexultra:~# dmesg | grep -i tsc2007
+
root@imx8mq-voipac:~# evtest
input: TSC2007 Touchscreen as /devices/soc0/soc.0/2100000.aips-bus/21a4000.i2c/i2c-1/1-0048/input/input0
+
No device specified, trying to scan all of /dev/input/event*
evbug: Connected device: input0 (TSC2007 Touchscreen at 1-0048/input0)
+
Available devices:
</syntaxhighlight>
+
/dev/input/event0:      30370000.snvs:snvs-powerkey
 
+
/dev/input/event1:      generic ft5x06 (79)
Touchscreen events are generated after pressing the resistive layer:
+
/dev/input/event2:      gpio-buttons
<syntaxhighlight lang="bash">
+
/dev/input/event3:     bd718xx-pwrkey
root@imx6-rexultra:~# evtest /dev/input/by-path/platform-21a4000.i2c-event
+
/dev/input/event4:      Logitech USB Receiver
 +
/dev/input/event5:      Logitech USB Receiver Mouse
 +
/dev/input/event6:     Logitech USB Receiver Consumer Control
 +
/dev/input/event7:      Logitech USB Receiver System Control
 +
Select the device event number [0-7]: 1
 
Input driver version is 1.0.1
 
Input driver version is 1.0.1
 
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
 
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
Input device name: "TSC2007 Touchscreen"
+
Input device name: "generic ft5x06 (79)"
 
Supported events:
 
Supported events:
 
   Event type 0 (EV_SYN)
 
   Event type 0 (EV_SYN)
Line 57: Line 82:
 
   Event type 3 (EV_ABS)
 
   Event type 3 (EV_ABS)
 
     Event code 0 (ABS_X)
 
     Event code 0 (ABS_X)
       Value   3529
+
       Value   308
 
       Min        0
 
       Min        0
       Max    4095
+
       Max    1023
 
     Event code 1 (ABS_Y)
 
     Event code 1 (ABS_Y)
       Value    375
+
       Value    211
 +
      Min        0
 +
      Max      799
 +
    Event code 47 (ABS_MT_SLOT)
 +
      Value      0
 
       Min        0
 
       Min        0
       Max     4095
+
       Max       4
     Event code 24 (ABS_PRESSURE)
+
     Event code 53 (ABS_MT_POSITION_X)
 
       Value      0
 
       Value      0
 
       Min        0
 
       Min        0
       Max    4095
+
       Max    1023
 +
    Event code 54 (ABS_MT_POSITION_Y)
 +
      Value      0
 +
      Min        0
 +
      Max      799
 +
    Event code 57 (ABS_MT_TRACKING_ID)
 +
      Value      0
 +
      Min        0
 +
      Max    65535
 
Properties:
 
Properties:
 +
  Property type 1 (INPUT_PROP_DIRECT)
 +
 +
 +
</syntaxhighlight>
 +
 +
Touchscreen events are generated after touching capacitive touch screen.
 +
<syntaxhighlight lang="bash">
 
Testing ... (interrupt to exit)
 
Testing ... (interrupt to exit)
Event: time 1457899907.959665, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
+
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 40
Event: time 1457899907.959665, type 3 (EV_ABS), code 0 (ABS_X), value 1657
+
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 506
Event: time 1457899907.959665, type 3 (EV_ABS), code 1 (ABS_Y), value 2486
+
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 478
Event: time 1457899907.959665, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3268
+
Event: time 1658851286.1658851286, -------------- SYN_REPORT ------------
Event: time 1457899907.959665, -------------- EV_SYN ------------
+
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1
Event: time 1457899907.969094, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
+
Event: time 1658851286.1658851286, -------------- SYN_REPORT ------------
Event: time 1457899907.969094, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
+
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 41
Event: time 1457899907.969094, -------------- EV_SYN ------------
+
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 453
 +
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 447
 +
Event: time 1658851532.1658851532, -------------- SYN_REPORT ------------
 +
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 456
 +
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 449
 +
Event: time 1658851532.1658851532, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 460
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 451
 +
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 468
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 456
 +
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 471
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 458
 +
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 482
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 461
 +
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 489
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 463
 +
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 492
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 464
 +
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 495
 +
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 497
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 467
 +
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 499
 +
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 506
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 468
 +
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 512
 +
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 520
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 466
 +
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 528
 +
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 465
 
</syntaxhighlight>
 
</syntaxhighlight>

Latest revision as of 14:49, 11 September 2024

This section shows information about the Newhaven LVDS Capacitive Display Set. The iMX8M Industrial Development Kit in this configuration is equipped with Yocto dunfell, kernel 5.4 to support LVDS display with a touchscreen layer. In this case the display is installed on the top of the iMX Development Baseboard.
Voipac NHD LCD Assembly.png

Mechanical connection

When combined with the complete iMX8M Industrial Kit, the Display Set creates a compact, ready-to-use solution. To assemble them together, the following mechanical and electrical accessories were designed and selected to be part of the Display set:

  • TFT LCD 1024x600 Pixels display with LVDS interface and Capacitive Touch with SiS9509 controller
  • 4x Hex Standoff Threaded M3 30.00mm long [Manufacturer PN: 971300321]
  • 40 Position flat flex cable 50.80mm long [Manufacturer PN: 0150200427]
  • 6 pin touchscreen flat flex cable
  • necessary spacers

Voipac NHD LCD Fastener.png

Hardware connection

To enable smooth communication between the board and the display, connect the 40 Position FFC cable for LCD and 6 pin touchscreen FFC cable. To implement the display capabilities, following connections need to be made:

  • connection between LVDS Display and iMX Development Baseboard connector LVDS0 NHD (J12) using a 40 Position FFC cable
  • touchscreen connection between iMX Development Baseboard connector NHD Touch (J13) and Touchscreen 6 pin FFC cable

LVDS and Touchscreen cable

imx8m LVDS with touchscreen cable for NHD.jpg

Hardware jumpers Newhaven LVDS

Make sure that configurable 0R resistor are moved to Newhaven LVDS0 interface
LVDS0 NH jumpers.png

Software instructions

iMX8M Industrial kit is preinstalled with Yocto dunfell operation system enabling LVDS and touchscreen capabilities by default. Manual configuration is necessary, Devicetree in U-Boot have to by set to NHD LVDS0 LCD.

LVDS0 NHD Devicetree in U-Boot

Manually booting with LVDS interface as a primary source for video output:

Fastboot: Normal
Normal Boot
Hit any key to stop autoboot:  0
u-boot=>
u-boot=>
u-boot=>
u-boot=>
u-boot=>
u-boot=> fatls mmc 0:1
 27787776   Image
    48586   imx8mq-evk-voipac-dp.dtb
    48793   imx8mq-evk-voipac-hdmi.dtb
    49194   imx8mq-evk-voipac-lvds-koe.dtb
    49198   imx8mq-evk-voipac-lvds-newhaven.dtb

5 file(s), 0 dir(s)

u-boot=> setenv fdt_file imx8mq-evk-voipac-lvds-newhaven.dtb
u-boot=> saveenv
Saving Environment to MMC... Writing to MMC(0)... OK
u-boot=>
u-boot=> boot

.

Touchscreen test

Default Voipac iMX8M Image contain evtest utility to catch touchscreen events. Make sure SiS9509 controller is detected and bound as input device. Select the device event number 1 (generic ft5x06 (79)):

root@imx8mq-voipac:~# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      30370000.snvs:snvs-powerkey
/dev/input/event1:      generic ft5x06 (79)
/dev/input/event2:      gpio-buttons
/dev/input/event3:      bd718xx-pwrkey
/dev/input/event4:      Logitech USB Receiver
/dev/input/event5:      Logitech USB Receiver Mouse
/dev/input/event6:      Logitech USB Receiver Consumer Control
/dev/input/event7:      Logitech USB Receiver System Control
Select the device event number [0-7]: 1
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
Input device name: "generic ft5x06 (79)"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value    308
      Min        0
      Max     1023
    Event code 1 (ABS_Y)
      Value    211
      Min        0
      Max      799
    Event code 47 (ABS_MT_SLOT)
      Value      0
      Min        0
      Max        4
    Event code 53 (ABS_MT_POSITION_X)
      Value      0
      Min        0
      Max     1023
    Event code 54 (ABS_MT_POSITION_Y)
      Value      0
      Min        0
      Max      799
    Event code 57 (ABS_MT_TRACKING_ID)
      Value      0
      Min        0
      Max    65535
Properties:
  Property type 1 (INPUT_PROP_DIRECT)

Touchscreen events are generated after touching capacitive touch screen.

Testing ... (interrupt to exit)
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 40
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 506
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 478
Event: time 1658851286.1658851286, -------------- SYN_REPORT ------------
Event: time 1658851286.1658851286, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1
Event: time 1658851286.1658851286, -------------- SYN_REPORT ------------
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 41
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 453
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 447
Event: time 1658851532.1658851532, -------------- SYN_REPORT ------------
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 456
Event: time 1658851532.1658851532, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 449
Event: time 1658851532.1658851532, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 460
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 451
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 468
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 456
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 471
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 458
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 482
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 461
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 489
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 463
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 492
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 464
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 495
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 497
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 467
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 499
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 506
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 468
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 512
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 520
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 466
Event: time 1658851533.1658851533, -------------- SYN_REPORT ------------
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 528
Event: time 1658851533.1658851533, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 465