Hilfe bei SPI und Funkchip CC1150

#4014436
Lesenswert?

Hi,

ich habe hier so eine Handferndbedinung mit einem Attiny2313 und einem 
CC1150 (http://www.ti.com/lit/ds/symlink/cc1150.pdf).

Diese will ich auf ein andere Protokoll umbauen.

Mit dem Datenblatt habe ich zwar herausgefunden, was ich dem Chip senden 
muss, aber es klappt hinten und vorne nicht.
Also habe ich den Logicanalyser angeklemmt, und mal die originale 
Kommunikation mitgelauscht. Habe dann bemerkt, dass mein SPI wohl zu 
schnell war.

Ich habe kurzerhand mit Bitbanging das SPI nachgebaut, so dass das 
Timing exact wie das originale ist. Leider bekomme ich keine Rückantwort 
von dem Chip.

Eigentlich antwortet der Chip bei der original Software bereits, wenn 
sein CSn Pin(Kanal 4 im Screenshot) auf Low gezogen wird...

Ich finde auch im Datenblatt nichts, was falsch sein könnte. Weiß jemand 
warum ich keine Rückantwort bekomme?
Angehängte Dateien:
#4014458
Lesenswert?

Hardware ist die gleiche.
Habe vorher HardSPI genommen, jetzt Soft SPI.
Kommt genau das raus was raus soll (auf die zehntel µs genau)
Die Befehle sind auch die richtigen.
Ich habe nur meinen Programmer dran angeschlossen und wechsel immer 
zwischen meiner Software und der Originalen.

Die Sache ist die: Wenn der CSn Pin auf Low gezogen wir, sollte der Chip 
eigentlich damit antworten, dass er seinen DataOut(SO) auch auf Low 
zieht. Aber nicht mal das macht er. AuoReset Bedingung ist laut 
Datenblatt hier auch erfüllt. Manueller Reset ist nicht möglich, da 
DataOut vom Slave nicht auf 0 gezogen wird.

Der LogicAnalyser bestätigt, dass ich alles genauso mache wie die 
Original Software, aber irgendwas entgeht mir wohl doch...


Zum Screenshot oben:
Hatte versehentlich die Beschriftung abgeschnitten:
Von Oben nach unten:
MISO
MOSI
CLK
LEER
CSn
Gast #4014843
Lesenswert?

Leider auch nicht, habe alle Pins nachverfolgt. Der Funkchip wird über 
die SPI Pins in den Schlafmodus versetzt, und Reset erfolgt auch über 
diese Pins. In dem FSM Diagram steht auch, dass er auf jedenfall bei CSn 
Low in den Idle Modus gehen sollte.

Einzige Sache, wenn der Oszillator noch nicht stabil ist, will er das 
noch nicht. Da würde er sich so verhalten, wie er es gerade tut. Aber 
ich habe auch die manuelle Resetprozedur befolgt, und er geht trotzdem 
nicht in den idle Modus....

Evtl. verstehe ich etwas falsch. Dort steht Burst CSn, auf low, dann auf 
high (40us halten ab dem low ziehen gemessen)  und dann wieder auf low 
ziehen. Spätestens jetzt sollte der Chip mit seinem Datenausgang auf Low 
gehen, macht er aber nicht.
Evtl verstehe ich den Ablauf falsch?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren