Search by Tags

First Steps with Capacitive Touch Display 7 Inch Parallel

 
Applicable for


Compare with Revision




Subscribe for this article updates

Introduction

This article provides information on how to start working with the Capacitive Touch Display 7 Inch Parallel, which includes how to set up the hardware (wiring), install and configure the necessary drivers for a touch demo.


Getting Started

Connections on Ixora, Aster

This topic provides pin connection details in regards to connecting the Capacitive Touch Display 7 Inch Parallel to any of our carrier boards. Please refer to the below images for connecting the display to our Ixora Carrier Board(V1.1 and above, for V1.0 the Capacitive Touch Adapter is needed) & Aster Carrier Board. At present these carrier boards support a Capacitive Touch Interface Connector with our Capacitive Touch Display 7 Inch Parallel.


Connections on Iris, Viola, Colibri Evautation Board, Apalis Evaluation board

For other carrier boards or evaluation boards like Iris, Viola, Colibri Evaluation Board, Apalis Evaluation Board, one can use the Capacitive Touch Adapter as the capacitive touch connector not yet available. All connection details are available in the Capacitive Touch Adapter datasheet.

WinCE

Multi-Touch Driver Installation

Modules (Colibri / Apalis) T20 VF50 VF61 T30 iMX6 iMX7 PXA
Windows Embedded CE 6.0 (CE6) [1] ok ok ok -- -- -- [3]
Windows Embedded Compact 7 (CE7) [2] ok ok ok ok ok ok --
Windows Embedded Compact 2013 (CE8) [2] -- ok ok ok ok ok --

Download touch demo application for the respective OS below:

OS: WCE6 WEC7 WEC2013
TouchDemo -- here here

Note :
[1] Supports single-touch and gestures.
[2] Supports multi-touch, single-touch, and gestures.
[3] The installer can be installed on WinCE6 PXA modules. The Hwadapt application doesn't support PXAs. It would need porting to the legacy library to make it work for PXA. Please refer to the Capacitive Multi-Touch Solution Source Code for more information about the Hwadapt application.

Registry Settings

Registry Settings: After installing the multi-touch driver, current settings in the registry can be viewed, exported, and edited with the help of registry editor on the module:

Start->Programs->ColibriTool->RegEdit

Display Settings: Click here.

Display Rotation: Click here.

Multi-Touch Hardware Adaption: The current hardware adaption (connection to the carrier board) is stored at:

[HKEY_LOCAL_MACHINE\Software\Toradex\MultiTchHwAdapt]

Information about the registry settings of the hardware adaption can be found on Capacitive Multi-Touch Solution.

Troubleshooting Touch Panel

After the hardware setup, driver installation, and registry settings are completed, the following steps and tools will help to bring up the device:

  • The display should show the Windows CE desktop without any border, flicker, etc. Click here for more details including, checking the documents for general functionality, multi-touch hardware adaption application.
  • In rare cases, if you experience I2C failures of Vybrid Modules with connected touch, reducing pull-up resistor value may be of valuable help. 1.8K pull-up can give the better result.

Colibri iMX7

Reset and Interrupt lines:

  • In case of any issue with reset or interrupt lines, use GPIO Config Tool to monitor and control reset & interrupt pins (SODIMM or MXM3 pin).

I2C Bus (SDA, SCL signals):

  • In case of any issue, run the I2C demo tool to scan the I2C addresses which is part of the package in the Toradex CE libraries and code samples. The tool shows the I2C addresses of all devices on the I2C bus. One of these addresses should be the address of the touch controller. (Please note that the shown addresses are the addresses of the devices on the I2C bus and not the address set in the registry.)
  • Please check if the reset pin is in its inactive state (level is 1) so that the touch controller of the display can run.

Embedded Linux

Resolution

To configure the correct display resolution, stop U-Boot by pressing any key while booting and set the vidargs environment variable according to your module as described below. For more information refer to the Display Output, Resolution and Timings article.

Colibri VF50/VF61

setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt resize && fdt set /panel compatible "logic,lt161010-2nhc"'
saveenv

Colibri iMX6

setenv vidargs 'video=mxcfb0:dev=lcd,FusionF07A,if=RGB666 video=mxcfb1:off fbmem=8'
saveenv

Colibri iMX6ULL/iMX7

setenv vidargs 'video=mxsfb:800x480M-16@60,pixclockpol=1'
saveenv

Apalis/Colibri T20/T30

setenv vidargs 'video=tegrafb0:pixclockpol:0,800x480-16@60'
saveenv

Apalis iMX6

setenv vidargs 'video=mxcfb0:dev=lcd,FusionF07A,if=RGB24 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=32M'
saveenv

Apalis TK1

The Apalis TK1 does not provide the RGB interface required for the screen to work.

Touch Screen

Starting with our Embedded Linux BSPs 2.7b4 the Capacitive Touch Display 7 Inch Parallel without Capacitive Touch Adapter is supported in single-touch mode. However, while the lower stack (driver and X-Server) supports multi-touch, the desktop environment doesn't make use of it. Also, there is no gesture engine inside the driver or X server itself.

Connection with Capacitive Touch Interface Connector

The exact procedure depends on the module in use.

Apalis\Colibri IMX6, Colibri iMX6ULL, Colibri IMX7 and Colibri VF

Starting with release 2.7b4 the touch controller driver is compiled as a module, and the device tree includes a device node for the touch controller. By default, the atmel_mxt_ts@4a node is in a disabled state. To enable it, change the status property from disabled to okay. Stop U-Boot and run the command below according to your module.

Note: The following instructions were tested on BSP 2.7b4.

Colibri VF:

setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt set /soc/aips-bus@40000000/i2c@40066000/atmel_mxt_ts@4a status okay'
saveenv

Colibri iMX6:

setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt set /soc/aips-bus@02100000/i2c@021a8000/atmel_mxt_ts@4a status okay'
saveenv

Colibri iMX6ULL:

setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt set /soc/aips-bus@02100000/i2c@021a0000/atmel_mxt_ts@4a status okay'
saveenv

Colibri iMX7:

setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt set /soc/aips-bus@30800000/i2c@30a50000/atmel_mxt_ts@4a status okay'
saveenv

Apalis iMX6:

Note: The following instructions were tested on BSP 2.8b2.

setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt set /soc/aips-bus@02100000/i2c@021a0000/atmel_mxt_ts@4a status okay'
saveenv

To load the driver module use:

modprobe atmel_mxt_ts

To load the driver module automatically at boot time, creating a file atmel_mxt_ts.conf in the modules-load.d directory is required:

echo atmel_mxt_ts > /etc/modules-load.d/atmel_mxt_ts.conf
Apalis\Colibri T30, Colibri T20

Starting with release 2.7b4 touch controller will be automatically detected and the kernel module loaded, no changes are necessary.

Apalis TK1

This module does not provide the RGB interface required for the screen to work, therefore touch support was not enabled.

Connection with Capacitive Touch Adapter

Due to wiring differences, this needs further device tree customizations. For compatibility across carrier board/s PWM_B/PWM_C pins are used as pen-down and reset interrupt, so the PWM functionality on these pins has to be disabled and the relevant GPIO functionality enabled and assigned to the touch driver.

Note: The following instructions were tested on BSP 2.7b4.

Colibri iMX6

On i.MX6 based devices the two PWM instances need to be disabled in the device tree. There are two ways to do this.

The easiest way is by modifying the device tree through the U-Boot fdt (meaning Flattened Device Tree) command. Stop U-Boot by pressing any key while booting and run the following command:

setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt resize && fdt set /soc/aips-bus@02100000/i2c@021a8000/atmel_mxt_ts@4a pinctrl-0 <0x0000003f> && fdt set /soc/aips-bus@02100000/i2c@021a8000/atmel_mxt_ts@4a interrupt-parent <0x0000003e> && fdt set /soc/aips-bus@02100000/i2c@021a8000/atmel_mxt_ts@4a interrupts <0x00000009 0x00000002> && fdt set /soc/aips-bus@02100000/i2c@021a8000/atmel_mxt_ts@4a status okay && fdt set /soc/aips-bus@02000000/iomuxc@020e0000/gpio/pcap-1 linux,phandle <0x0000003f> && fdt set /soc/aips-bus@02000000/iomuxc@020e0000/gpio/pcap-1 phandle <0x0000003f> && fdt rm /soc/aips-bus@02000000/iomuxc@020e0000/gpio/mxt-ts linux,phandle && fdt rm /soc/aips-bus@02000000/iomuxc@020e0000/gpio/mxt-ts phandle && fdt set /soc/aips-bus@02000000/pwm@02080000 status disable && fdt set /soc/aips-bus@02000000/pwm@0208c000 status disable'
saveenv

The alternative is modifying the device tree, re-compiling and flashing the module again, according to the following instructions:

Colibri iMX6 Instructions
Colibri iMX6ULL

On i.MX6ULL based devices the two PWM instances need to be disabled in the device tree. There are two ways to do this.

The easiest way is by modifying the device tree through the U-Boot fdt (meaning Flattened Device Tree) command. Stop U-Boot by pressing any key while booting and run the following command:

setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt resize && fdt set /soc/aips-bus@02100000/i2c@021a0000/atmel_mxt_ts@4a pinctrl-0 <0x00000035> && fdt set /soc/aips-bus@02100000/i2c@021a0000/atmel_mxt_ts@4a interrupt-parent <0x00000036> && fdt set /soc/aips-bus@02100000/i2c@021a0000/atmel_mxt_ts@4a interrupts <0x00000010 0x00000002> && fdt set /soc/aips-bus@02100000/i2c@021a0000/atmel_mxt_ts@4a status okay && fdt set /soc/aips-bus@02000000/pwm@020f0000 status disabled && run fdt_fixup2'
setenv fdt_fixup2 ' fdt set /soc/aips-bus@02000000/pwm@020f4000 status disabled && fdt set /soc/aips-bus@02000000/iomuxc@020e0000/imx6ull-eval-v3/touchgpios fsl,pins <0x000001b8 0x00000444 0x00000000 0x00000005 0x00000000 0x00000074 0x000000d8 0x00000364 0x00000000 0x00000005 0x00000000 0x00000074>'
saveenv

The alternative is modifying the device tree, re-compiling and flashing the module again, according to the following instructions:

Colibri iMX6ULL Instructions
Colibri iMX7

On i.MX7 based devices the two PWM instances, PWM_B/PWM_C need to be disabled in the device tree. There are two ways to do this.

The easiest way is modifying the device tree through the U-Boot fdt (meaning Flattened Device Tree) command. Stop U-Boot pressing any key while booting and run the following command:

setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt resize && fdt set /soc/aips-bus@30800000/i2c@30a50000/atmel_mxt_ts@4a pinctrl-0 <0x00000043> && fdt set /soc/aips-bus@30800000/i2c@30a50000/atmel_mxt_ts@4a interrupt-parent <0x00000041> && fdt set /soc/aips-bus@30800000/i2c@30a50000/atmel_mxt_ts@4a interrupts <0x00000009 0x00000002> && fdt set /soc/aips-bus@30800000/i2c@30a50000/atmel_mxt_ts@4a status okay && fdt set /soc/aips-bus@30400000/pwm@30670000 status disabled && run fdt_fixup2'
setenv fdt_fixup2 'fdt set /soc/aips-bus@30400000/pwm@30680000 status disabled && fdt set /soc/aips-bus@30000000/iomuxc@30330000/imx7d-eval-v3/touchgpios fsl,pins <0x00000018 0x00000270 0x00000000 0x00000000 0x00000000 0x00000074 0x0000001c 0x00000274 0x00000000 0x00000000 0x00000000 0x00000074>'
saveenv

The alternative is modifying the device tree, re-compiling and flashing the module again, according to the following instructions:

Colibri iMX7 Instructions
Colibri VF

On Vybrid based devices the two PWM instances, PWM_B/PWM_C need to be disabled in the device tree. There are two ways to do this.

The easiest way is by modifying the device tree through the U-Boot fdt (meaning Flattened Device Tree) command. Stop U-Boot pressing any key while booting and run the following command:

setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt resize && fdt set /soc/aips-bus@40000000/i2c@40066000/atmel_mxt_ts@4a interrupt-parent <0x0000001a> && fdt set /soc/aips-bus@40000000/i2c@40066000/atmel_mxt_ts@4a interrupts <0x0000001e 0x00000002> && fdt set /soc/aips-bus@40000000/i2c@40066000/atmel_mxt_ts@4a status okay && fdt set /soc/aips-bus@40000000/pwm@40038000 pinctrl-0 <0x0000001b> && fdt set /soc/aips-bus@40000000/pwm@40038000 linux,phandle <0x0000003b> && fdt set /soc/aips-bus@40000000/pwm@40038000 linux,phandle <0x0000003b> && fdt set /soc/aips-bus@40000000/pwm@40038000 linux,phandle <0x0000003b> && fdt set /soc/aips-bus@40000000/pwm@40038000 phandle <0x0000003b> && fdt set /soc/aips-bus@40000000/pwm@40039000 pinctrl-0 <0x0000001c>'
saveenv

The alternative is modifying the device tree, re-compiling and flashing the module again, according to the following instructions:

Colibri VF Instructions
Colibri T30, Colibri T20

The preprocessor macro USE_CAPACITIVE_TOUCH_ADAPTER has to be defined in the board file.

E.g. for Colibri T30:

diff --git a/arch/arm/mach-tegra/board-colibri_t30.h b/arch/arm/mach-tegra/board-colibri_t30.h
index 94179b4..afb96a6 100644
--- a/arch/arm/mach-tegra/board-colibri_t30.h
+++ b/arch/arm/mach-tegra/board-colibri_t30.h
@@ -102,6 +102,10 @@
#define TPS6591X_IRQ_BASE STMPE811_IRQ_END
#define TPS6591X_IRQ_END (TPS6591X_IRQ_BASE + 18)
+/* Enable support for
+ * Capacitive Touch Adapter */
+#define USE_CAPACITIVE_TOUCH_ADAPTER
+
int colibri_t30_regulator_init(void);
Apalis iMX6

Note: The following instructions were tested on BSP 2.8b2.

On Apalis iMX6 based devices the atmel_mxt_ts@4a need to be enabled in the device tree.

The easiest way is by modifying the device tree through the U-Boot fdt (meaning Flattened Device Tree) command. Stop U-Boot by pressing any key while booting and run the following command:

setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt resize && fdt set /soc/aips-bus@02100000/i2c@021a0000/atmel_mxt_ts@4a status okay'
saveenv

The alternative is modifying the device tree, re-compiling and flashing the module again, according to the following instructions:

Apalis iMX6 Instructions

Backlight brightness

Apalis\Colibri T30, Colibri T20

By default the display cacklight brightness will be low. To set it to the max. brightness run:

echo 1 > /sys/class/backlight/pwm-backlight/brightness

The brightness value can be any integer in the <1,255> range, where 1 => brightest, 255=> darkest. /