ER-TFTM070 per SPI - Touch Erkennung?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe das ER-TFTM070 an meinem Raspberry Pi 2 (Quadcore 900MHz) per SPI angebunden und mit dem FBTFT (FrameBuffer) Treiber in Betrieb genommen. Die Anzeige funktioniert einwandfrei, keine Probleme. Hier sei dem User Pfanne gedankt der wirklich sehr gut beschrieben und auch noch auf das fbi (Imaging) Tool hingewiesen hat.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Nun da das Display was die grafische Anzeige angeht wirklich klasse funktioniert, wollte ich auch den Touchscreen testen...nur das scheint nicht unterstützt zu werden. Kann mir jemand an der Stelle weiterhelfen?

    Das Display hat den RA8875 Grafik Controller und bestellt habe ich es mit kapazitivem Touchsensor. Der RA8875 bietet außer den Zeichenfunktionen (Pixel) auch Zeichensatz Adressierung über separaten Font Chip und SD-Card Zugriff z.B. für Bildmaterial usw. an, außerdem in den Registern auch die Informationen für Touch und das sogar für bis zu 5 Finger gleichzeitig.
    So gut das mit dem Ansteuern des Displays geklappt hat...so schlecht komme ich mit der Touch Erkennung voran. :(

    Vielleicht hat ja einer von euch einen guten Tipp wo ich noch lesen kann.

    Danke im Voraus und besten Gruß,
    Kuppi...

  • Um mit meinem Problem mit dem Touchcontroller weiter zu kommen, hier mal ein paar technische Details. Hoffe dies hilft um mir mit ein paar Infos zu helfen.

    Code
    pi@rpi2jessie:~ $ modinfo fbtft
    filename:       /lib/modules/4.0.7-v7+/kernel/drivers/staging/fbtft/fbtft.ko
    license:        GPL
    srcversion:     D7AFEC09D80F5A109220B0C
    depends:        fb_sys_fops,syscopyarea,sysfillrect,sysimgblt
    staging:        Y
    intree:         Y
    vermagic:       4.0.7-v7+ SMP preempt mod_unload modversions ARMv7
    parm:           debug:override device debug level (ulong)
    parm:           dma:Use DMA buffer (bool)

    Hier habe ich konfiguriert dass der SPI und der FBTFT Treiber geladen wird:

    Code
    pi@rpi2jessie:~ $ cat /etc/modules
    # /etc/modules: kernel modules to load at boot time.
    #
    # This file contains the names of kernel modules that should be loaded
    # at boot time, one per line. Lines beginning with "#" are ignored.
    
    
    spi-bcm2708
    i2c-dev
    fbtft_device

    Um das für mich relevante Display ER-TFTM070_5 mit dem RA8875 Grafik Chip einzustellen:

    Code
    pi@rpi2jessie:~ $ cat /etc/modprobe.d/fbtft.conf
    options fbtft_device name=er_tftm070_5 speed=16000000

    Verdrahtet habe ich - außer der Spannungsversorgung - nur die SPI Schnittstelle:
    TFT <-> RaspberryPi
    PIN 5 /SCS <-> PIN 24 GPIO 8 (SPI_CE0) = rot
    PIN 6 SDO <-> PIN 21 GPIO 9 (SPI_MISO) = orange
    PIN 7 SDI <-> PIN 19 GPIO 10 (SPI_MOSI) = gelb
    PIN 8 SCLK <-> PIN 23 GPIO 11 (SPI_SCLK) = grün

    Wie ich in dem Datenblatt des Grafik Chips RA8875 gelesen habe können die Touch Sensor Daten auch über den SPI ausgelesen werden, von daher bin ich davon ausgegangen das kein weiterer Treiber und keine weitere Anbindung notwendig ist.
    Obwohl das Display für genau diese Touch Funktionalität zusätzliche Interface Pins zur Verfügung stellt:
    TFT
    PIN 32 CTP_WAKE => An interrupt signal for the host to change F5206 from hibernates to active mode
    PIN 33 CTP_INT => An interrupt signal to inform the host processor that touch data is ready for read
    PIN 34 CTP_SDA => Serial data input/output
    PIN 35 CTP_SCL => Serial clock input
    PIN 36 CTP_RST => External low signal reset the chip. RC reset circuit on board, this pin can be left unconnected.

    Nach meinem Verständnis kann man also per I2C (SDA+SCL) den Touch Sensor Chip auch direkt ansprechen und wie bei der WAKE Leitung beschrieben handelt es sich um einen F5206 Chip. Wenn der fbtft Treiber nur die Display Darstellung macht, dann müsste noch ein Treiber für den F5206 eingebunden und konfiguriert werden. Und natürlich außer der SPI Schnittstelle auch noch die I2C vom TFT an den Raspberry Pi verbunden werden.

    Hat da schon einer von euch Erfahrung und kann mir einen Tipp geben?

    Danke und Gruß,
    Kuppi...
    Automatisch zusammengefügt:
    Also da ich wie oben beschrieben darauf gekommen bin dass der fbtft (Framebuffer) Treiber wirklich nur die Display Ansteuerung macht ohne den Touch Sensor auszuwerten (obwohl das über die SPI über den RA8875 Chip möglich wäre), habe ich mir die I2C Development Tools installiert um von der Konsole testen zu können.

    Ohne angeschlossene I2C Leitung vom TFT Display:

    Code
    pi@rpi2jessie:~ $ i2cdetect -y 1
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --

    Nachdem ich dann den I2C vom Raspberry Pi mit dem I2C (CTP_SDA/CTP_SCL ) vom Display verbunden habe:

    Code
    pi@rpi2jessie:~ $ i2cdetect -y 1
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- 38 -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --

    Die Adresse 0x38 Binär 111000 passt zur Beschreibung vom FT5206, also soweit alles gut.
    Nun habe ich mal in den Kernel Sourcen nachgesehen, da gibt es unter ....linux/drivers/input/touchscreen/ das Source File "edt-ft5x06.c".

    Wie muss ich denn den INT verbinden und dann im Treiber konfigurieren, damit der Treiber weiß auf welchen Interrupt reagiert werden muss...wenn man das Display berührt und der Touch Sensor auslöst?

    Gruß,
    Kuppi...

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!