TI-Mikrocontoller

Sensorik – Hardware Stratosphärenballon

Verwendete Protokolle und Schnittstellen

Wie in der Abb. im Abschnitt Sensorik-Hardware dargestellt, kommuniziert der MSP430F5529 mit einer Reihe anderer Geräte. Um Informationen zwischen diesen auszutauschen werden verschiedene Protokolle verwendet. 

I2C (Inter Integrated Curcuit)

Synchroner (= Takt gesteuerter) halbduplex Schnittstellenstandard zur Kommunikation von ICs, üblicherweise innerhalb eines einzelnen Gerätes. I2C (auch IIC oder I2C genannt) nutzt je eine Takt- sowie Datenleitung und benötigt darüber hinaus keine weiteren Leitungen. Jeder Busteilnehmer erhält eine 7-Bit-Adresse, die üblicherweise in Hardware vorgegeben ist und sich teilweise über das Pinning der Geräte in den Least Significant Bits ändern lässt. Adressen müssen eindeutig sein, solange auf zusätzliche Leitungen zur Aktivierung/Deaktivierung von Geräten verzichtet werden soll.

Im Ruhezustand sind die Takt- und Datenleitung über Pullup-Widerstände auf einen High-Pegel gezogen. Angeschlossene Geräte können den Pegel runter ziehen oder die Leitung freigeben, bei vollständiger Freigabe wird die Leitung durch den Pullup wieder auf High gezogen. Bei Start der Kommunikation wird zunächst die Datenleitung, gefolgt von der Taktleitung, vom Master herunter gezogen, anschließend wird die 7-Bit-Adresse gesendet und ein weiteres Bit angehängt, welches festlegt, ob der Master lesen oder schreiben möchte. Damit lassen sich bis zu 127 (abzüglich einiger reservierter Adressen) Busteilnehmer über nur zwei Leitungen anbinden. All dies wird vom entsprechenden Hardwaremodul MSP430 automatisch erledigt.

Nach dem Startsignal folgen 8-Bit Worte sowie ein sogenannter ACKnowledge oder Not ACKnowledge (NACK). ACK bedeutet dabei, dass der Buspartner den Erhalt des letzten Bytes bestätigt. So kann z.B. der Master ein Startsignal mitsamt Adresse und Lese-/Schreibbit verschicken und die Leitung dann für ein weiteres Bit freigeben. Falls ein Gerät auf dem Bus mit der angegebenen Adresse existiert, zieht dieses die Leitung auf Low und bestätigt (ACK) damit seine Anwesenheit. Wird die Leitung nicht von einem Busteilnehmer heruntergezogen, dann zieht der Pullup Widerstand die Leitung auf High und es wird kein ACK generiert, der Master interpretiert dies als NACK. Im Falle eines NACK wird die Kommunikation beendet, ansonsten können Daten übertragen werden.

I2C-Kommunikation-Stratosphärenballon
I2C-Kommunikation zwischen MSP430 und dem Drucksensor BMP085

Die dargestelte Aufnahme zeigt beispielhaft das Programm der Logic Analyzer von Saleae, mit welchem die Kommunikation eines MSP430G2553 mit einem BMP085 Drucksensor aufgezeichnet wurde. Zu sehen ist die Adressierung des Sensors (Adresse 0x77) zunächst im Schreibmodus (0x77 mit angehängtem Write Bit = 0xEE = 238) sowie etwas später das Adressieren zum Lesen (0x77 mit Read Bit = 239) mit anschließender Übertragung der Kalibrationsdaten.

Der MSP430F5529 verfügt über zwei I2C Hardware Module, von denen je eins für die Kommunikation mit der Sensorik und dem RPi verwendet wird.  

OneWire

Halbduplex Schnittstellenstandard der Firma Dallas Semiconductor (heute Maxim Integrated). Benötigt lediglich eine Leitung zur Datenübertragung und arbeitet anstelle eines Taktes mit Zeitfenstern. Ein Pullup hält wie beim I2C die Leitung auf High, die Busteilnehmer können sie zur Kommunikation auf Low ziehen. Ebenfalls ähnlich zu I2C besitzt jedes OneWire Modul eine Hardwareadresse, die ab Werk fest vorgegeben ist, allerdings sind die Adressen einzigartig und haben eine Länge von 64 Bit. Die Adressen der Sensoren müssen vor ihrer Verwendung zunächst bestimmt werden, sollte sich neben dem Mikrocontroller mehr als ein Gerät auf dem Bus befinden.

Die Kommunikation wird eingeleitet mit einem Reset Befehl, für den der Master die Taktleitung für mindestens 480µs auf low zieht und diese anschließend wieder frei gibt. Falls sich ein Teilnehmer auf dem Bus befindet, zieht dieser die Leitung nach 15-60 us auf low und bestätigt sein Anweseheit, bevor er nach etwa 200µs die Busleitung wieder frei gibt.

One-Wire_Maxim-Integrated
Signalbild der One Wire Kommunikation

Eine Bit Übertragung wird durch runter ziehen der Leitung für etwa 20µs initiiert, anschließend wird die Leitung für 60-80µs auf den gewünschte Wert gezogen, gefolgt von einem 20µs langen High und anschließender Freigabe der Leitung. 

UART

UART ist ein asynchroner (bedeutet ohne Taktsignal arbeitender), vollduplex Übertragungsstandard, mit einer Leitung pro Übertragungsrichtung. Es gibt keine Adressen wie bei den anderen verwendeten Standards. Für den Aufbau einer direkten Verbindung zweier Teilnehmer ist UART gut geeignet, bei mehreren Teilnehmern muss die Auswahl des Kommunikationspartners manuell über andere Wege erfolgen. UART wird nur zum Debugging für Übertragung von Daten an einen Rechner verwendet, weshalb der Standard nicht weiter beschrieben wird. 

Seiten: 1 2 3 4 5