Forum: Mikrocontroller und Digitale Elektronik BME680 3-Wire SPI


von S. M. (erfindix)


Lesenswert?

Hallo

Ich möchte gerne den BME680 über den 3-Wire SPI ansprechen.
Bei Libary`s für den I2C-Bus,4-Wire Hardware-SPI und 4-Wire Software-SPI 
wird Man fündig. Leider aber zum 3-Wire SPI nicht. Auch eine generelle 
Ansteuerung zum 3-Wire habe ich bisher nicht gefunden.
Bei dem Bus wird nicht, wie sonst über zwei Kanäle (Miso & Mosi), die 
Datenverbindung aufgebaut, sondern beide Leitungen zusammen über eine 
gelegt. Somit wird über die eine Leitung zunächst ein Befehl gesendet 
und anschließend die Antwort vom uC über die gleiche Schnittstelle 
empfangen.

Hat wer hierzu schon etwas gemacht und kann helfen ?

4-Wire-SPI      3-Wire-SPI
-Miso           - SDIO
-Mosi           - SCK
-CS             - CS
-SCK

von Rainer W. (rawi)


Lesenswert?

S. M. schrieb:
> Ansteuerung zum 3-Wire habe ich bisher nicht gefunden.

Wie die Signale aussehen müssen, ist doch haarklein im Datenblatt des 
BME680 beschrieben (S.37f).
Im 3-Wire Mode wird SDI für beide Datenrichtungen benutzt und SDO vom 
Sensor wird auf High-Z geschaltet.

Warum willst du unbedingt den 3-Wire SPI Mode benutzen?

: Bearbeitet durch User
von S. M. (erfindix)


Lesenswert?

Der 3-Wire SPI ist leider zwingend erforderlich und kann nicht geändert 
werden.
Ja das stimmt, das ist sehr gut erklärt.
Frage wäre ob es bereits etwas als Libary gibt ? Etwas um den 3-Wire 
anzusprechen würde auch reichen.
Leider ist es für mich etwas schwierig eine bestehende Libary vom BME680 
so umzufunktionieren das es klappt

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

S. M. schrieb:
> Leider ist es für mich etwas schwierig eine bestehende Libary vom BME680
> so umzufunktionieren das es klappt

Jo dann mach was anderes. Blinkende LED oder so. Oder arbeite dich in 
das Thema rein. Dumm gucken und auf ne fertige Lib warten bringts halt 
nicht.

: Bearbeitet durch User
von S. M. (erfindix)


Lesenswert?

Cyblord -. schrieb:
> Dumm gucken und auf ne fertige Lib warten bringts halt
> nicht.

Sorry die "dummy Frage" aber es hätte ja sein können das es war im Bezug 
auf den 3-Wire bereits gibt....
Es muss nicht immer alles neu gemacht werden

von S. L. (sldt)


Lesenswert?

Durchaus verständlich, aber es ist nun mal eine Nischenanforderung - 
wenn man Leitungen sparen will, wird man im Normalfall gleich I2C 
nehmen.
  Ist doch nur eine nette Fingerübung für einen 'erfindix'.

von Wastl (hartundweichware)


Lesenswert?

S. M. schrieb:
> Ich möchte gerne den BME680 über den 3-Wire SPI ansprechen.

Um eine Leitung einzusparen so einen Aufwand treiben?

Ist auf jeden Fall sehr unterhaltsam dauernd die Datenrichtung
des Datenpins im Controller umzuschalten und aufzupassen dass
es keine Kollisionen gibt. Man gönnt sich ja sonst nichts.

S. M. schrieb:
> Bei Libary`s für den I2C-Bus

Bitte keine Deppenapostrophen.
http://www.deppenapostroph.info

von Rainer W. (rawi)


Lesenswert?

S. M. schrieb:
> Der 3-Wire SPI ist leider zwingend erforderlich und kann nicht geändert
> werden.

Das hört sich nach einer "schlüssigen" Erklärung an ;-(
Irgendjemand, der die Konsequenzen nicht überschaut, hat das so 
festgelegt - oder was ist der wahre Grund dafür?

von Cyblord -. (cyblord)


Lesenswert?

Rainer W. schrieb:
> S. M. schrieb:
>> Der 3-Wire SPI ist leider zwingend erforderlich und kann nicht geändert
>> werden.
>
> Das hört sich nach einer "schlüssigen" Erklärung an ;-(
> Irgendjemand, der die Konsequenzen nicht überschaut, hat das so
> festgelegt - oder was ist der wahre Grund dafür?

Das hat wohl jemand festgelegt der dringend diese Leitung einsparen 
wollte und fälschlicherweise glaubte, ein fähiger Entwickler würde daran 
arbeiten, der in der Lage wäre eine 3 Wire SPI IRGENDWIE zu realisieren. 
Er wusste wohl nicht dass dies jemand macht der nur mit fertigen libs 
etwas zusammenstoppeln kann.

Wastl schrieb:
> Ist auf jeden Fall sehr unterhaltsam dauernd die Datenrichtung
> des Datenpins im Controller umzuschalten und aufzupassen dass
> es keine Kollisionen gibt. Man gönnt sich ja sonst nichts.

Ist jetzt halt auch nicht der erste halbduplex Bus. Das ist keine 
Raketenwissenschaft. Man lässt es halt normalerweise nicht den Gärtner 
machen.

: Bearbeitet durch User
von S. M. (erfindix)


Lesenswert?

Cyblord -. schrieb:
> Das hat wohl jemand festgelegt der dringend diese Leitung einsparen
> wollte und fälschlicherweise glaubte, ein fähiger Entwickler würde daran
> arbeiten, der in der Lage wäre eine 3 Wire SPI IRGENDWIE zu realisieren.
> Er wusste wohl nicht dass dies jemand macht der nur mit fertigen libs
> etwas zusammenstoppeln kann.

Es geht in diesem Forum darum, Fragen zu stellen und vernünftige 
Antworten zu bekommen. Was ist daran so falsch mit "fertigen libs" zu 
arbeiten. Es geht mir darum eine lib anzupassen damit ich diese auch 
anderweitig verwenden kann. Wenn hier jemand lieber alles neu erfinden 
möchte dann gerne, aber man kann es auch einfacher machen und auf der 
Grundlage anderer Bibliotheken arbeiten ???

Rainer W. schrieb:
> Das hört sich nach einer "schlüssigen" Erklärung an ;-(
> Irgendjemand, der die Konsequenzen nicht überschaut, hat das so
> festgelegt - oder was ist der wahre Grund dafür?

Es geht hier darum eine Hilfe zu finden den 3-Wire SPI anzusprechen und 
nicht zu diskutieren, warum das so ein soll. Sonst können wir auch 
darüber sprechen warum die Banane krumm ist -,
Der Sensor ist jedenfalls auf einem Board + uC fest verbaut und ich 
möchte diesen gerne dementsprechend ansprechen. Das Board habe ich nicht 
entworfen und kann das dementsprechend nicht ändern


Cyblord -. schrieb:
> Jo dann mach was anderes. Blinkende LED oder so. Oder arbeite dich in
> das Thema rein. Dumm gucken und auf ne fertige Lib warten bringts halt
> nicht.

Ja ich versuchs, aber das Eine oder Andere Mal kann man sich auch gerne 
mal Hilfestellungen in Foren suchen

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

S. M. schrieb:
> Es geht in diesem Forum darum, Fragen zu stellen und vernünftige
> Antworten zu bekommen. Was ist daran so falsch mit "fertigen libs" zu
> arbeiten.

Nichts. Das Problem fängt dann an, wenn man es anders gar nicht kann. In 
der Zeit hätte ich drei komplette 3 Wire SPI libs from Scratch 
geschrieben.

> Ja ich versuchs, aber das Eine oder Andere Mal kann man sich auch gerne
> mal Hilfestellungen in Foren suchen

Hast du denn eine konkrete Frage gestellt? Ich lese nur "wer gibt mir 
was fertiges ich kann nichts selber machen".

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

S. M. schrieb:
> Das Board habe ich nicht entworfen und kann das dementsprechend nicht
> ändern

Genau das meinte ich.
Demjenigen, der das festgelegt hat, war nicht klar, das er damit die 
Software auf eine Schnittstelle festlegt, die dank ausreichend anderer, 
etablierter Schnittstellen (I2C, SPI) eher ein Alleinstellungsmerkmal 
darstellt und eher gar nicht durch Standardlibraries unterstützt wird. 
Auch HW-Unterstützung auf Controllerseite mit einem passenden HAL dafür 
wird man suchen müssen.
Und so muss die Software diese (Fehl-?)Entscheidung dann mit 
entsprechendem Mehraufwand bei der Entwicklung ausbaden.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

S. M. schrieb:
> Das Board habe ich nicht entworfen und kann das dementsprechend nicht
> ändern

Was ich daran nicht verstehe: die Datenleitungen sind doch die gleichen 
wie für I²C. Warum sollte man das Teil dann nicht auch im I²C-Modus 
benutzen können? Das einzige Hindernis, das ich mir vorstellen könnte, 
wären fehlende Pullups. Die in den MCUs eingebauten könnten zu 
schwächlich sein dafür.

Rainer W. schrieb:
> Auch HW-Unterstützung auf Controllerseite mit einem passenden HAL dafür
> wird man suchen müssen.

Wahrscheinlich gibt's auch gar keine eingebaute Hardware in Controllern 
dafür, d.h. man müsste alles als Software-SPI machen.

von Sebastian W. (wangnick)


Lesenswert?

S. M. schrieb:
> Der Sensor ist jedenfalls auf einem Board + uC fest verbaut

Welcher uC ist es denn?

LG, Sebastian

von Joe L. (joelisa)


Lesenswert?

Rainer W. schrieb:
> S. M. schrieb:
>> Der 3-Wire SPI ist leider zwingend erforderlich und kann nicht geändert
>> werden.
>
> Das hört sich nach einer "schlüssigen" Erklärung an ;-(
> Irgendjemand, der die Konsequenzen nicht überschaut, hat das so
> festgelegt - oder was ist der wahre Grund dafür?

Sonderlocken halt. Die kosteten schon immer "extra".

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.