Hallo, habe schon in bestehenden Foreneinträgen nach einer Lösung gesucht, keine gefunden, daher mein neuer Eintrag. Ich habe in meinem Projekt einen Sensor als Slave (TLE5012B, Infineon) und einen uC als Master (V850-Px, Renesas). Beide sollte über SPI miteinander kommunizieren, was laut Sensor (SPI kompatibel mit SSC Interface) kein Problem sein soll. Jedoch ist am Sensor statt den beiden MISO/MOSI Leitungen nur eine bidirektionale Datenleitung vorhanden. Der Sensor soll dabei sowohl Daten senden, wie auch einlesen können und genauso auch der Master. Der Versuch alle 3 Leitungen mit einem Pull-Up Widerstand zu verbinden und während den Sendungen vom Slave vom Master auf High halten, hat leider nichts gebracht. Hat jmd noch eine Idee/Erfahrung wie die Kommunikation sonst gestalten kann? Danke!
MOSI-Master -> Widerstand -> MISOMOSI-Slave MISO-Master <- MISOMOSI-Slave Wenn der Slave auf Empfangen geschaltet ist, kommen Befehle vom Master durch den R unverfälscht am Slave an. Für die Antwört enabled der Slave seinen MISOMOSI-Pin. Am MISO des Masters empfängst Du sowohl die Befehle des masters als auch die darauffolgende Antwort des Slaves. Gruß Stefan
KAstudents schrieb: > Jedoch ist am Sensor statt den beiden MISO/MOSI Leitungen nur eine > bidirektionale Datenleitung vorhanden. Der Sensor soll dabei sowohl > Daten senden, wie auch einlesen können und genauso auch der Master. Sieh dir mal das Protokoll im Datenblatt an. Da wirst du erkennen, dass eben immmer nur einer aktiv "reden" darf, der andere hört zu. Am einfachsten geht die Ansteuerung über Bitbanging, weil du dann den MOSI-Pin des uC hochohmig schalten kannst. Alternativ kannst du den MOSI-Pin des uC über den angesprochenen Widerstand so hochohmig machen, dass dessen "Geplapper" beim Empfangen nicht mehr stört:
1 | uC | | TLE |
2 | | | |
3 | MOSI |-----4k7-----o-------| DATA |
4 | | | | |
5 | MISO |-------------' | |
6 | | | |
:
Bearbeitet durch Moderator
Danke für die Antworten. Werde die hochohmige MOSI Leitung mit Bit-Banging mal ausprobieren.
Noch ein Frage zum Bit-Banging: Soll der MOSI Port so hochohmig geschalten werden dass er eig keine Funktion mehr hat? Weil ich muss ja nachwievor Daten vom Master an den Slave schicken können, worauf der Slave antworten soll (nach einer kurzen Verzögerung). Bzw. generelle Frage zum Bit-Banging: Benutze ich nur noch eine der beiden Leitungen (MISO/MOSI) und wechsel bei dieser zwischen In und Output? Oder benutzte ich beide und spreche sie nacheinander an? Wird dabei die kompletten vorkonfigurierten Register fürs SPI auf dem uC ignoriert und wirklich alles manuell gesteuert?
KAstudents schrieb: > Noch ein Frage zum Bit-Banging: > > Soll der MOSI Port so hochohmig geschalten werden dass er eig keine > Funktion mehr hat? Weil ich muss ja nachwievor Daten vom Master an den > Slave schicken können, worauf der Slave antworten soll (nach einer > kurzen Verzögerung). Was ist denn das Ziel? Das Ziel ist es doch, dass der Slave die Kontrolle über die Leitung kriegt. D.h. der Master muss seine MOSI Leitung von dieser gemeinsamen Datenleitung wegschalten, so dass er sie nicht mehr beeinflusst. Den Pin auf Eingang schalten sollte dafür ja eigentlich ausreichen. > Bzw. generelle Frage zum Bit-Banging: Benutze ich nur noch eine der > beiden Leitungen (MISO/MOSI) und wechsel bei dieser zwischen In und > Output? Du kannst beides machen. > Oder benutzte ich beide und spreche sie nacheinander an? Wird > dabei die kompletten vorkonfigurierten Register fürs SPI auf dem uC > ignoriert und wirklich alles manuell gesteuert? Ja, du machst alles manuell selber. Daher kannst du auch alles über nur einen Pin für die Datenleitung abwickeln, wenn du das willst, weil du ja weißt, dass der Slave erst nach deiner Übertragung zu ihm aktiv wird.
:
Bearbeitet durch User
noch kurze Frage die mir jetzt beim implementieren aufgefallen ist. Wenn ich den Takt manuell erzeuge: Muss der regelmäßig sein? Im Datenblatt des Sensors steht nur eine Maximalgeschwindigkeit (8MHz)
Hey danke für eure Hilfe! Es klappt! Doch mit Open-Drain Beschaltung und zusätzlichem Widerstand an der MOSI Leitung. Und es funktioniert sogar mit dem uC Spi-Treiber, also kein Bit-Banging nötig
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.