Forum: Mikrocontroller und Digitale Elektronik Nutzen des TouchSensingControllers von STM32F0 mit TouchLib


von Thomas (Gast)


Lesenswert?

Hi!

Ich versuche gerade mit einem kleinen STM32F042K6 Nucleo drei 
Elektroden/Tasten mit der STM TouchLib zum Laufen zu bekommen.

Genutzt habe ich Cube mit HAL.
Ich habe die Doku über die Touchlib.
Alle Suchen nach irgendwelchem Beispielcode enden ständig im Leeren, 
CMSYS oder TSC ohne den TouchTreiber von STM.
Ich verstehe derzeit einfach nicht wie das ganze zu händeln ist :(

Habe bei einer Suche ein Polling mit:
if(tsl_user_Exec() == TSL_USER_STATUS_OK_NO_ECS)
gefunden, die nun in der main while auch munter durchlaufen wird.

Habe einen Interrupt, der auch läuft namens:
void HAL_TSC_ConvCpltCallback(TSC_HandleTypeDef* htsc)

Kann mir als Neuling in HAL, STM32 und zudem TSC jemand einmal bitte auf 
die Sprünge helfen?
Möchte doch nur unsere Küche nochmal erhellen, lach.

Danke Euch erst einmal,
Thomas

von pegel (Gast)


Lesenswert?

Wenn ich mir die Beispiele unter:

STM32Cube_FW_F0_V1.9.0/Projects/STM32F072B-Discovery/Examples/TSC

ansehe, scheinen mir die komplett für polling oder interrupt.
Jeweils für 3 Tasten.

von Thomas (Gast)


Lesenswert?

Ach da sind auch noch Examples versteckt.
Unfassbar... Hab auch welche runter geladen, aber habe immer nur CMSYS 
Dinge gefunden.

Danke Dir fürs Aufzeigen!
Werde ich mir anschauen.

Schönen Abend noch!

von Thomas (Gast)


Lesenswert?

Hallo!

Dank Deines Tips mit den HAL-Libs funktioniert der Touch nun.

Mein Problem ist, dass alle drei Tasten in einer Gruppe zusammen sind.
Diese Gruppe kann ich wunderbar auswerten - aber ich kommt nicht auf den 
gedrückten Button daraus.

Im Interrupt-Example sieht man, dass drei Buttons genutzt werden.
Diese sind aber auch über drei Gruppen verstreut - was bei mir 
theoretisch ja auch ginge.

Nun würde es mich aber brenned interessieren wie ich denn innerhalb 
einer Gruppe nach
1
uhTSCAcquisitionValue = HAL_TSC_GroupGetValue(&htsc, TSC_GROUP2_IDX);
die Taste heraus finde.

Das geht doch bestimmt irgendwie.
Leider finde ich auch im Datenblatt keine Infos darüber.

Evtl. kann mir da jemand einen Tip geben.
Schönen Abend noch, Thomas.

von Thomas (Gast)


Lesenswert?

Es gibt ja neben dem TSC_GROUP2_IDX auch noch für jeden Pin ein 
TSC_GROUP2_IO1.
Wenn ich den Wert auslese, steht aber immer 4096 drin...
1
uhTSCAcquisitionValue = HAL_TSC_GroupGetValue(&htsc, TSC_GROUP2_IO1);

von Thomas (Gast)


Lesenswert?

Und mit "TSC_GROUP2_IO2" und "TSC_GROUP2_IO3" bekomme ich ständig "0" 
zurück geliefert.

von Thomas (Gast)


Lesenswert?

Also so wie ich das sehe, ist es nicht gedacht mehrere Buttons in einer 
Group zu haben.
Alle Register, wie auch zugefügte HAL-Files deuten darauf hin, dass man 
es nicht filtern kann.

Falls noch jemand etwas anderes darüber weiß, bitte her damit ;)
Thomas

von Thomas (Gast)


Lesenswert?

Äähm, niemand Ideen darüber?

von Thomas E. (picalic)


Lesenswert?

Thomas schrieb:
> Äähm, niemand Ideen darüber?

Servus,

als ich so vor 1-2 Jahren mal 3 simple Touch-"Buttons" mit einem '32F042 
implementieren wollte, und nachdem ich relativ viel Zeit dafür geopfert 
hatte, halbwegs durch die Lib und die Beispiele von ST durchzusteigen, 
war meine Idee schließlich, den ganzen TSC-Library-Kram von ST über Bord 
zu werfen und die Hardware direkt mit meinem eigenen "Treiber" 
anzusprechen.
Hätte ich gleich so machen sollen...

von Thomas (Gast)


Lesenswert?

Hi Thomas² :)

> ...ganzen TSC-Library-Kram von ST über Bord
> zu werfen und die Hardware direkt mit meinem eigenen "Treiber"
> anzusprechen.

Oh, okay.
Das heißt, Du nutzt aber den TSC vom µC noch - und kein separater Chip 
dafür?
Wenn ja, wie zum Teufel kommt man über die Hardware-Register der Gruppen 
auf die IOs? Kannst Du mir da was sagen?

von Stefan (Gast)


Lesenswert?

Wenn es um Touch geht empfehle ich schau dir lieber andere Hersteller 
wie Renesas Cypress oder Atmel an. Deren Technologien sind ausgereift 
und vor allem Renesas hat einen sehr guten Support. St ist nicht gut 
aufgestellt wenn es um Touch geht und selbst die faes haben keine Ahnung 
von der Materie

von Thomas (Gast)


Lesenswert?

Hmm, echt schade eigentlich.
Denke für ein richtiges Bedienpanel mit Sliders, Wheels usw. wird man eh 
besser auf nen dedizierten Touch-Chip gehen.

Ich warte hier noch bisschen ob noch jemand Erfahrung mit sich bringt, 
ansonsten gibt es einmal eine Nachfrage in der STM32 Community.

von Axel S. (a-za-z0-9)


Lesenswert?

Thomas schrieb:
>
>> ...ganzen TSC-Library-Kram von ST über Bord
>> zu werfen und die Hardware direkt mit meinem eigenen "Treiber"
>> anzusprechen.

Jo. Genauso habe ich das auch gemacht, als ich mal einen Touchsensor 
gebraucht habe. Was STM an embedded Libraries für ihre Controller 
raushaut, ist - gelinde gesagt - eine Unverschämtheit. Glücklicherweise 
geht es ja nahezu immer auch ohne.

> Das heißt, Du nutzt aber den TSC vom µC noch - und kein separater Chip
> dafür?

Mir ist kein STM32F0x bekannt, der einen Touch Sensing Controller hätte. 
Das sind ganz simple Zugriffe auf die GPIOs.


Thomas schrieb:
> echt schade eigentlich.
> Denke für ein richtiges Bedienpanel mit Sliders, Wheels usw. wird man eh
> besser auf nen dedizierten Touch-Chip gehen.

Warum? Das ist alles kein Hexenwerk.

von Thomas E. (picalic)


Lesenswert?

Thomas schrieb:
> Das heißt, Du nutzt aber den TSC vom µC noch - und kein separater Chip
> dafür?

Ja, ich habe da schon die Touch-Hardware des STM32F042 benutzt. Das 
Projekt liegt auf dem Rechner in der Firma. Muss ich aber mal schauen, 
ob ich das nach der langen Zeit evtl. trotzdem soweit verstehe, wenn ich 
in's Datenblatt bzw. Referenz-Manual schaue, um evtl. Tipps zu geben. 
Wie sieht denn Deine Schaltung genau aus, was den Touch-Sensor Teil 
angeht? D.h. an welchen Pins sind die Sensoren, wo der 
Charge-Kondensator?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.