Forum: Mikrocontroller und Digitale Elektronik TRF7970A NFC inbetriebnahme sehr problematisch


von Ursus P. (unwichtig)


Lesenswert?

Hallo allerseits, beschäftige mich seit ein paar Wochen mit TRF7970A. 
Bis jetzt nicht so sehr erfolgreich. Habe 2 Platinen mit TRF7970A und 
Atmega1284P ausgestattet und versuche zwischen denen die Kommunikation 
per NFC aufzubauen. Mein jetziger Stand:
- Die Kommunikation mit µC funktioniert(Die Steuerregister können 
beschrieben und ausgelesen werden)
- Die Trägerfrequenz ist da
- Kann den Geräten zuweisen was Initiator und was Target ist
- man kann am Oszilloskop sehen das der Initiator versucht per ASK 
Verfahren mit dem Target zu kommunizieren.

Wo ich noch Probleme habe:
- der IRQ Register(beim Target) signalisiert kein Datenempfang oder 
Trägerfrequenzerkennung
- Unklar wie man mehrere Bytes in den FIFO Register schreibt und 
ausliest
- Die Protokollroutine bei ISO14443A/B, muss man die Request und 
Antikollisionanfragen von Hand durchführen? So gesehen ein State 
Maschine auf dem µC einprogrammieren?
- wird der ISO14443A/B nur auf physische Ebene(Modulation und 
Demodulation) unterstützt?

http://www.ti.com/product/trf7970a?qgpn=trf7970a

Freue mich über jede Hilfe.
Grüße aus dem Pott

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Was mir seinerzeit bei dem TRF7960A sehr geholfen hat, war das Anmelden 
im TI-Support-Forum und das direkte Aufzeigen von Problemen. Es hat sich 
herausgestellt, dass sämtliche RFID-Chips der Serie mehr oder weniger 
buggy sind und den einen oder anderen Workaround benötigen. Wenn man das 
alles dann beachtet, laufen sie aber recht zuverlässig.

von Maxx (Gast)


Lesenswert?

Otto Rohrpott schrieb:
> - der IRQ Register(beim Target) signalisiert kein Datenempfang oder
> Trägerfrequenzerkennung

Sind die beiden RX Pins sauber angeschlossen und führen Signal wenn das 
RF Feld an ist?

> - Unklar wie man mehrere Bytes in den FIFO Register schreibt und
> ausliest

Continous write register. Bei dem Fifo Daten Register wird nicht 
automatisch die Registernummer hoch gezählt, so dass mehrere 
Schreibzugriffe mehrere Bytes ins Register schieben. Beim Lesen 
entsprechend.

> - Die Protokollroutine bei ISO14443A/B, muss man die Request und
> Antikollisionanfragen von Hand durchführen? So gesehen ein State
> Maschine auf dem µC einprogrammieren?

Für das Lesen/Scannen: Ja
Der TRF7970A als aktiver Trabnsponder: nein. Da brauchts dann nur den 
richtigen Modus und die UID richtig gesetzt auf die er reagieren soll. 
Aber für alles nach der AC: Ebenfalls Ja

> - wird der ISO14443A/B nur auf physische Ebene(Modulation und
> Demodulation) unterstützt?

Iso14443 wird bis ISO14443-2 (Physisches Interface und Framing) gemacht. 
Die Kommandos musst du dir jedoch selber anhand ISO14443-3/4 bzw 
ISO15693, 18000-3, DESfire, Mifare Classic, ISO7816 oder was du auch 
immer machen willst selber zusammensetzen.

von Ursus P. (unwichtig)


Lesenswert?

Knut Ballhause schrieb:
> Was mir seinerzeit bei dem TRF7960A sehr geholfen hat, war das Anmelden
> im TI-Support-Forum und das direkte Aufzeigen von Problemen. Es hat sich
> herausgestellt, dass sämtliche RFID-Chips der Serie mehr oder weniger
> buggy sind und den einen oder anderen Workaround benötigen. Wenn man das
> alles dann beachtet, laufen sie aber recht zuverlässig.

Danke, gibt mir etwas hoffung

von Ursus P. (unwichtig)


Lesenswert?

danke :-))

Maxx schrieb:
> Otto Rohrpott schrieb:
>> - der IRQ Register(beim Target) signalisiert kein Datenempfang oder
>> Trägerfrequenzerkennung
>
> Sind die beiden RX Pins sauber angeschlossen und führen Signal wenn das
> RF Feld an ist?

Habe richtiges Layot(nix Handgeflicktes :-)) ) mit Filter nach TI 
Vorgaben gemacht. An beiden RX1 und RX2 kann ich eine Gleichspannung ca. 
2V DC mit SIN Anteil messen, die Signale kommen sauber am CHIP an.

>> - Unklar wie man mehrere Bytes in den FIFO Register schreibt und
>> ausliest
>
> Continous write register. Bei dem Fifo Daten Register wird nicht
> automatisch die Registernummer hoch gezählt, so dass mehrere
> Schreibzugriffe mehrere Bytes ins Register schieben. Beim Lesen
> entsprechend.

Kannst du bitte an dieser Stelle etwas genauer sein? :-)


>> - Die Protokollroutine bei ISO14443A/B, muss man die Request und
>> Antikollisionanfragen von Hand durchführen? So gesehen ein State
>> Maschine auf dem µC einprogrammieren?
>
> Für das Lesen/Scannen: Ja
> Der TRF7970A als aktiver Trabnsponder: nein. Da brauchts dann nur den
> richtigen Modus und die UID richtig gesetzt auf die er reagieren soll.
> Aber für alles nach der AC: Ebenfalls Ja

Und wenn mir die UID scheissegal ist? Das ich einfach ohne irgendwelche 
ID die Kommunikation aufbaue? :-)


>> - wird der ISO14443A/B nur auf physische Ebene(Modulation und
>> Demodulation) unterstützt?
>
> Iso14443 wird bis ISO14443-2 (Physisches Interface und Framing) gemacht.
> Die Kommandos musst du dir jedoch selber anhand ISO14443-3/4 bzw
> ISO15693, 18000-3, DESfire, Mifare Classic, ISO7816 oder was du auch
> immer machen willst selber zusammensetzen.

Für die Commandos hast dich an dem Datenblatt vom TI bedient oder steht 
das noch iregndwo im Applikation Note?

von Maxx (Gast)


Lesenswert?

Otto Rohrpott schrieb:
> Habe richtiges Layot(nix Handgeflicktes :-)) ) mit Filter nach TI
> Vorgaben gemacht. An beiden RX1 und RX2 kann ich eine Gleichspannung ca.
> 2V DC mit SIN Anteil messen, die Signale kommen sauber am CHIP an.

Dann schau mal, was nach dem Kommando 
http://www.ti.com/product/TRF7970A/datasheet/detailed_description#SLOS7437757
im Register 
http://www.ti.com/product/TRF7970A/datasheet/detailed_description#SLOS7438025

als RSSI Wert angegeben wird. Das sollte sich mit / ohne Feld 
unterscheiden. Warte zwischen dem Kommando und dem auslesen des RSSI 
Wertes ein wenig. (Mach ich z.B. zum Power-On-Selftest ob die RX/TX 
Leitungen alle den Erwartungen entsprechen mit 10ms dazwischen)

> Kannst du bitte an dieser Stelle etwas genauer sein? :-)

Schau mal bei
http://www.ti.com/product/TRF7970A/datasheet/detailed_description#SLOS7438258

und

http://www.ti.com/product/TRF7970A/datasheet/detailed_description#SLOS7437662

>
>>> - Die Protokollroutine bei ISO14443A/B, muss man die Request und
>>> Antikollisionanfragen von Hand durchführen? So gesehen ein State
>>> Maschine auf dem µC einprogrammieren?

> Und wenn mir die UID scheissegal ist? Das ich einfach ohne irgendwelche
> ID die Kommunikation aufbaue? :-)

Du benötigst eine UID. Wenn sie dir egal ist wähle irgendeine. Als 
"Target" musst du jedoch eine haben, da Iso14443 Transponder erst nach 
der Selektion (braucht eine UID) in den Protokoll-Modus wechseln.

Der Initiator muss diese Selektion durchführen (kennt dann ja auch 
bereits im Vorfeld deine frei gewählte UID)

http://www.ti.com/product/TRF7970A/datasheet/detailed_description#SLOS7439196 
beschreibt die beiden Rollen.

Ich muss allerdings dazu sagen, dass ich selbst den TRF noch nicht als 
Target betrieben habe. Dazu gibt es aber beim Eval Board irgendwo eine 
Beispiel Firmware, die mir mal demonstriert wurde.

> Für die Commandos hast dich an dem Datenblatt vom TI bedient oder steht
> das noch iregndwo im Applikation Note?

Nein. Aus den Iso-Normen (Kostenpflichtig, aber findest du in Teilen 
auch in den Datenblättern kompatibler Transponder, ist dann halt nur ne 
heiden Arbeit alle Kommandos rauszusuchen und vernünftig lesbar 
zusammenzufassen)

ISO 14443-3 (Typ A Anticollision & Select)
ISO 14443-4 (Typ B AntiCollision und Protokoll Modus für A und B)

Was du dann im Protokoll-Modus an Paketen definierst ist in der ISO14443 
nicht definiert. Verbreitet sind hier proprietäre Protokolle als auch 
ISO7816. Darfst dich also frei austoben mit der Definition der Pakete, 
da du Initiator und Target unter derine Kontrolle hast.

von Ursus P. (unwichtig)


Lesenswert?

Maxx schrieb:
> Otto Rohrpott schrieb:
>> Habe richtiges Layot(nix Handgeflicktes :-)) ) mit Filter nach TI
>> Vorgaben gemacht. An beiden RX1 und RX2 kann ich eine Gleichspannung ca.
>> 2V DC mit SIN Anteil messen, die Signale kommen sauber am CHIP an.
>
> Dann schau mal, was nach dem Kommando
> http://www.ti.com/product/TRF7970A/datasheet/detailed_description#SLOS7437757
> im Register
> http://www.ti.com/product/TRF7970A/datasheet/detailed_description#SLOS7438025
>
> als RSSI Wert angegeben wird. Das sollte sich mit / ohne Feld
> unterscheiden. Warte zwischen dem Kommando und dem auslesen des RSSI
> Wertes ein wenig. (Mach ich z.B. zum Power-On-Selftest ob die RX/TX
> Leitungen alle den Erwartungen entsprechen mit 10ms dazwischen)

nach langer fummelei durch die Datenblätter bin ich soweit, auf jeden 
Fall funktionieren meine RX1 und RX2, wegen dem Rest muss ich weiter 
gucken.

Danke dir Maxx.

von Ursus P. (unwichtig)


Lesenswert?

Maxx schrieb:

>http://www.ti.com/product/TRF7970A/datasheet/detailed_description#SLOS743825>8
und
http://www.ti.com/product/TRF7970A/datasheet/detailed_description#SLOS7437662
>
Sende mit dem Initiaotor ALL_REQ(0x52) an Target und versuche erfolglos 
den FIFO im Target auszulesen. Kann aber den "FIFO Status Register(0x1C) 
" auslesen und der sag mir das FIFO voll ist, habe versucht den FIFO mit 
"continuis read" oder "direkt" auslesen, bekomme nur eine "1" 
ausgelesen. Frage mich schon was ich wieder Falsch mache :-(( ?

>> Für die Commandos hast dich an dem Datenblatt vom TI bedient oder steht
>> das noch iregndwo im Applikation Note?
>
> Nein. Aus den Iso-Normen (Kostenpflichtig, aber findest du in Teilen
> auch in den Datenblättern kompatibler Transponder, ist dann halt nur ne
> heiden Arbeit alle Kommandos rauszusuchen und vernünftig lesbar
> zusammenzufassen)

Diese Befehle/Kommandos, werden die Intern im TRF7970A nach dem Empfang 
verarbeitet ohne das man etwas mitbekommt? oder sind das vom NORM 
definierte Befehle die man für solche Anfragen(ALL_REQ, SENS_REQ) nehmen 
soll,bzw. implementieren damit ein Standard entsteht?

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.