PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SPI, TWI, (I²C) - was kann was?



dieselhatza
22.04.2004, 18:03
Worin liegt der Unterschied?

I²C ist ein serielles System mit 2 Leitungen ... gut, das weiß ich, allerdings was ist mit den anderen 2 (SPI und TWI)

Frank
22.04.2004, 20:10
I2C und TWI sind identisch. Vermutlich hat Atmel nur aus rechtlichen Gründen anderen Namen gewählt. SPI benötigt mehr Leitungen aber erlaubt eine wesentlich schnellere Datenübertragung.
Populärer ist allerdings I2C, vermutlich weil es einfach recht bequem mit den 2 Leitungen zu verdrahten ist. Es gibt immer mehr Schaltkreise die I2C unterstützen.
Gute Compiler wie z.B. Bascom unterstützen beide und noch weitere Bus-Konzepte. SO gibt es sogar noch einen 1-Wire! Einen Bus der nur aus einem einzigen Draht besteht.
Im Kühnel Buch zu bascom und in der Help von Bascom findet man Infos dazu. Aber sicher auch im Netz.

dieselhatza
22.04.2004, 22:22
ahaaa

also wenn der µC beides kann, kann ich mich glücklich schätzen, egal ob ich es brauch oder ned :-)

Danke für die flotte Antwort

Kaiser-F
29.12.2005, 14:05
An dieser Stelle hätte ich eine Frege zu SPI:

Ich benutze den ATmega128 als SPI Master.

Kann ich da anstatt SS auch einen Anderen Pin verwenden? Zum Beispiel PB4? und den SS, also PB0 als normalen IO für was anderes?.
Platinentechnisch wäre das für mich besser.

Oder muss ich diesen speziellen SS Pin des AVR verwenden?

Ratber
29.12.2005, 17:40
Wenn du Hardware-SPI nutzt bist du auf die Hardware im Controller und die dafür vorgesehenen Pinne beschränkt.

Beisoftware-SPI (Alsi Nachbildung) bist du in der Wahl der Pinne frei.
Ist aber Platzfressender und langsamer.

MrQu
01.01.2006, 13:46
Ein Hallo an Alle *:-)*

Ich möchte mich jetzt mal mit SPI beschäftigen, habe ich bisher noch nicht gemacht.

Ich möchte eine SD-Card am den Hardware SPI meines ATMega32 anschliessen.

Bei meiner Suche bin ich auf die WebSeite eines Robotnetz Mitgliedes gestossen: http://www.ulrichradig.de/

Auf der Seite ist alles super beschrieben, nur der Ulrich benutz den Soft-SPI ich möchte allerdings den Hardware-SPI verwenden.

Jetzt habe ich in meinen Büchern und bei Atmel gesucht und das auch gefunden.
Aber ein kleines Problem, mir fehlt eine Leitung!!!
Und die Pinbelegung von SPI zu SD-Card

Kann mir da jemand helfen???


Gruß MrQu

Ratber
01.01.2006, 14:47
Welche Leitung ? (Meine Glaskugel ist defekt) :D


Die Pinbelegung von SD und MMC Karten findest du haufenweiseim Web und bei Ulrich ebenfalls

MrQu
01.01.2006, 15:19
hi @ratber

sorry da hab ich mich falsch ausgedrückt.
ich suche nicht die pinbelegung von der sd-card.

der ulrich benutzt die softspi ich möchte aber die hardspi meines atmega32 verwenden.

jetzt ist es so das mir eine leitung bei der hardspi fehlt.
und mir fehlt die zuordung zwischen den hardspi leitungen und der sd-card.

kannst du mir da helfen?

gruß mrqu

Ratber
01.01.2006, 15:37
Ich verstehe zwar immernoch nicht genau was du meinst (Mein Motor läuft noch nicht richtig) aber ich vermute mal du meinst welche Anschlüsse am Controller die für den SPI sind ja ?

Is einfach:

Wenn du deinen Controller so programierst wie die meisten dann haste die schon oft genutzt.

Mosi,Miso,sck und SS sind die Kandidaten.

Ratber
01.01.2006, 15:48
@Frank



I2C und TWI sind identisch. Vermutlich hat Atmel nur aus rechtlichen Gründen anderen Namen gewählt.

Nicht nur vermutlich.

Der Rechteinhaber (Meines Wissens nach immernoch Phillips) an I2C (bzw. I²C Alias IIC Alias Inter IC-Bus) hat sich den Begriff nicht nur schützen lassen sondern verlangt für "I2C-Applikationen und ähnliches" Lizenzgebüren bzw. besteht dabei auf strikte einhaltung gewisser Rahmenbedinungen..... blabla etc usw.

Naja,man merkt schon is umfangreich.

Damit Atmel nicht für jeden Furz bei Phillips auf der Matte zu stehen hat hat man das Kind einfach TWI (Two Wire Interface) genannt.


War mal für die die immerwieder danach fragen.

Ja..öh...Ende der Durchsage. :mrgreen:

MrQu
01.01.2006, 15:59
@ratber

ok, das hatte ich schon gelesen, in so nem schreiben von atmel.

mein problem ist ich brauche an meiner sd-card ja die pins:
DO, DI, CLK, CS/ und ich weiß nicht wo ich diese am ISP-Port anschliessen muß.

da hängt mein problem, mir fehlt hier die zuordung

danke vorweg

gruß mrqu

Ratber
01.01.2006, 16:09
Ja wenn du mal die ausgeschrieben Namen nimmst dann kommste drauf.

Am Controller haste folgendes:

SCK = Serial Clock
MOSI = Master Out,Slave In
MISO = Master In ,Slave Out
SS(Invertiert) = Slave Select.


Und an der SD-Card haste dan diese:

CLK = Clock
DI = Data In
DO = Data Out
CS(Invertiert) = Chip Select



Na ?
Kommste allein drauf wer wohin gehöhrt ?

Wenn nicht dann stehts schon in richtiger reihenfolge da. :wink:

MrQu
02.01.2006, 06:15
@ratber

Danke *freu*

Habe gestern noch ein bischen "herumgelesen" und mir dann gedacht das es so sein könnte.
Das einzige worüber ich nichts gefunden hatte war SS bzw. CS.

Gruß MrQu

Kaiser-F
02.01.2006, 08:39
Bei SPI ist es meistens so, dass man einen MASTER hat, und Mehrere Slaves.

Alle sind aber "BUS-MÄßIG" mit den Leitungen SCK, MOSI, MISO verbunden.

Damit nun der MASTER mit einem bestimmten SLAVE kommunizieren kann, müssen alle anderen "schweigen".

Darum gibt es die SS oder auch CS Leitung.

Jeder SLAVE hat eine sepperate SS-Leitung zum MASTER.

Will der MASTER nun mit SLAVE X Daten austauschen, sind alle anderen SS-Leitungen der SLAVES ZY auf HIGH, und die des SLAVE X auf LOW.

Jetzt reagiert nur SLAVE X auf die DATEN des MASTERS.

Wenn nur zwei Chips miteinander kommunizieren braucht man das theoretisch nicht. Ist aber besser!

MrQu
02.01.2006, 15:56
Hi @Kaiser-F

d.h. wenn ich jetzt meine SD-Card mit meinem ATMega32 verbinden will, dann muß ich meine SS-Leiung vom ISP einfach an der CS-Leitung meiner SD-Kard hängen. - Oder, stimmt das so???

Gruß MrQu

Ratber
02.01.2006, 16:14
Ja,ist richtig.

Die anderen Leitungen natürlich auch.
Es ändert sich nix wenn der ISp noch dranhängt.
Solange nicht programiert wird ist der passiv und der Controller kann sich ganz der Karte widmen.
Wird programiert dann ist der Controller im Empfangsmodus fürs Programm.

Also alles Perfekt

Kaiser-F
02.01.2006, 16:27
Achja genau, wie Ratber schon angedeutet hat,
Du musst immer beachten, (vorausgesetzt dein AVR muss über MOSI MISO SCK programmiert werden) dass die anderen SPI teilnehmer dann "schweigen" wenn du den AVR beschreibst. nicht dass die karte bzw. ein SPI teilnehmer da dazwischenfunkt...

Kaiser-F
07.02.2006, 12:42
Mal eine ganz blöde Frage...

Beim Master ist es ja egal wo die SS Leitung angeschlossen ist oder?

Ratber
07.02.2006, 12:53
Meinst du "Was passiert wenn ich Programieren will und die SS ist irgendwie in Betrieb ?"

Oder gehts um den SPI-Normalbetrieb ?

Kaiser-F
07.02.2006, 13:01
Danke für die rasche Antwort.

Folgende Sache, ich will einen CAN controller am MEGA128 anschließen, und wenn ich die SS Leitung an PB4 anstatt an PB0 anschließe, gehts mir auf der Platine besser aus.

Es herrschen SPI Normalbedingungen, der Mega ist immer der MASTER, und es gibt nur einen Teilnehmer.

SprinterSB
07.02.2006, 13:18
Ja und Nein.

Wenn du den SPI aktiviert hast und Master bist, muss entweder der SS-Pin als Ausgang definiert sein, oder er darf nie LOW sehen (oder dein AVR wird zum Slave). Den Hardware-SS kannst du natürlich für irgendwas nehmen und den Slave-SS an irgendeinen Port legen.

Kaiser-F
08.02.2006, 18:00
Hmm ok. Das hab ich im DB ganz übersehen. Danke SprinterSB,

Du hast mir wieder mal VIEL VIEL Arbeit erspart.

Vielen Dank!