Cortex-A7-Kern-IIC-Experiment – STM32MP157AAA

Der Zweck des Experiments: die Erfassung der Temperatur- und Feuchtigkeitssensorwerte

1. Das Konzept von IIC

1. Synchroner serieller Halbduplex-Bus, der hauptsächlich zur Verbindung der Gesamtschaltung verwendet wird. Die Hardwarestruktur ist einfach, die Schnittstellenverbindung ist bequem und die Kosten sind niedrig

2. Zweidrahtsystem, nur zwei bidirektionale Signalleitungen, Datenleitung SDA, Taktleitung SCL

3. IIC-Übertragungsrate: 1) niedrige Geschwindigkeit: 100.000, 2) 400.000, volle Geschwindigkeit: 3,4 Mio

4. Es gibt zwei Pull-up-Widerstände außerhalb des Busses: Wenn sich der Bus im Leerlaufzustand befindet, befindet er sich standardmäßig in einem Zustand mit hohem Pegel

2. Hardware-Verbindung

1. Unterstützt den Multi-Master- und Multi-Slave-Modus, aber gleichzeitig können nur ein Master und ein Slave kommunizieren, und in den meisten Fällen wird der Single-Master- und Multi-Slave-Modus verwendet

2. Jedes an den IIC-Bus angeschlossene Slave-Gerät verfügt über eine eigene eindeutige 7-Bit-Slave-Adresse

3. Daten senden----Sender, Daten empfangen----Empfänger

 Daten aktiv initiieren ---- Master, Daten passiv empfangen ---- Slave

4. Das Taktsignal wird vom Master erzeugt und wirkt auf den Slave, um die Synchronisierung der Datenübertragung und des Empfangs abzuschließen

3. Internes Blockdiagramm

 

Viertens: Timing

1. Bus-Timing, Timing-Spleißen ist das Protokoll

2. SCL-High-Pegel, kann Startsignal und Stoppsignal senden

SCL niedriger Pegel, kann Datenübertragungssignal senden

3. Nach dem Senden von 8 Datenbits muss ein Antwortbit gesendet werden, und das Endsignal kann erst nach der Antwort gesendet werden

4. Die Slave-Adresse muss nach dem Startsignal geschrieben werden, also

1. Startsignal

1. Sowohl das Startsignal als auch das Stoppsignal werden vom Host generiert

2. Nachdem das Startsignal generiert wurde, bedeutet dies, dass der Bus mit der Datenübertragung beginnt

3. Startsignal: Während des High-Pegels von SCL wechselt die Datenleitung von High nach Low (fallende Flanke).

4. Nach der Erzeugung des Startsignals befindet sich der Bus im belegten Zustand

2. Stoppsignal

1. Nachdem das Stoppsignal erzeugt wurde, bedeutet dies das Ende der Busübertragungsdaten

2. Stoppsignal: Während des High-Pegels von SCL wechselt die Datenleitung von Low nach High (steigende Flanke).

3. Nachdem das Stoppsignal erzeugt wurde, befindet sich der Bus im Ruhezustand

3. Datenübertragungssignal

Wenn SCL niedrig ist, können sich die Daten auf der Datenleitung ändern und der Sender schreibt Daten auf die Datenleitung

Während des hohen SCL-Pegels müssen die Daten auf der Datenleitung stabil bleiben und dürfen keine Änderungen zulassen, und der Empfänger liest Daten von der Datenleitung

4. Antwortsignal

Bild ist beschädigt :<

1. Für alle übertragenen Daten muss die Länge von 8 Bits gewährleistet sein ==> Zuerst das High-Bit und dann das Low-Bit senden

2. Nachdem jeweils 8 Datenbits übertragen wurden, muss ein Antwortbit vorhanden sein, ein Datenrahmen = 8 Datenbits + 1 Antwortbit = 9 Bits

3. Der Sender schreibt 8-Bit-Daten auf die Datenleitung und der Empfänger schreibt im 9. Taktzyklus das Antwortsignal/Nicht-Antwortsignal auf die Datenleitung

Der Sender liest im 9. Taktzyklus Daten von der Datenleitung

        Read 0: Der Empfänger sendet ein Bestätigungssignal zurück

        Read 1: Der Empfänger hat ein Nichtbestätigungssignal zurückgegeben

5. Adressierung von Signalen

1. Der IIC-Bus überträgt Daten im weitesten Sinne: Er kann 8-Bit-Daten oder 7-Bit-Slave-Adressen + Lese-/Schreibbits übertragen

2. Das Schreibbit wird durch 0 dargestellt und das Lesebit wird durch 1 dargestellt

3. Daten vom Bus lesen: 7-Bit-Slave-Adresse + lesen (1)

4. Daten auf den Bus schreiben: 7-Bit-Slave-Adresse + Schreiben (0)

5. Die Slave-Adresse muss nach dem Startsignal geschrieben werden, damit diese 8 Bits den Adressierungsvorgang darstellen

Fünftens IIC-Protokoll

1. Der Master sendet ein Byte an den Slave

2. Der Master sendet mehrere Bytes an den Slave

3. Der Slave sendet ein Byte an den Master

4. Der Slave sendet ein Byte an den Master

 Sechstens: Analysieren Sie den si7006-Chip

1. si7006-Slave-Adresse ===> 0x40

2. Internes Blockdiagramm von si7006

3. So initialisieren Sie den Chip (Adresse/Wert) ===> 0xE6 0x3A

4. So erfassen Sie die Temperatur- und Luftfeuchtigkeitsadresse

5. Suchen Sie das Erfassungsprotokoll des si7006-Chip-Handbuchs

6. So konvertieren Sie Daten in eine analoge ===> Formel

1. Internes Blockdiagramm

  

 2. Slave-Adresse

:0x40 

Slave-Adresse + lesen: 0x40 << 1 | 1

Slave-Adresse + Schreiben: 0x40 << 1 | 0

3. Lesen Sie den Befehlscode für Temperatur und Luftfeuchtigkeit

Bild ist beschädigt :<

 Relative Luftfeuchtigkeit messen, Host-Modus beibehalten: 0xE5

 Relative Luftfeuchtigkeit messen, Host-Modus nicht beibehalten: 0xF5

 Relative Temperatur messen, Host-Modus beibehalten: 0xE3

 Relative Temperatur messen, Host-Modus nicht beibehalten: 0xF3

Lesen Sie aus der zuvor gemessenen Luftfeuchtigkeit den Temperaturwert ab: 0xE0

Benutzerregister 1 schreiben: 0xE6

Benutzerregister 1 lesen: 0xE7

Sieben, Startsignal

Startsignal===Slave-Adresse+Schreiben===ACK===Befehlscode===ACK===Startsignal===Slave-Adresse+Lesen===ACK===Verzögerungsfunktion== ===== ==== hohe acht Bits === ACK === achtes Bit NACK === Stoppsignal

Acht, die Umrechnungsformel

Da es sich bei dem gemessenen Wert um einen analogen Wert handelt, muss ein ADC verwendet werden, um ihn in einen digitalen Wert umzuwandeln

Formel zur Umrechnung der Luftfeuchtigkeit H = %RH - 125*RH_Code / 65536 -6

Temperaturumrechnungsformel T = 175,72*Temp_Code / 65536 - 46,85 

Neun, Initialisierungswert

Registerinitialisierungswert: 0011 1010 ====== 0x3A

 [7][0] == 00: Messgenauigkeit

[6] == 0: Leistungsstatus: 0 = hoher Pegel, 1 = niedriger Pegel

Supongo que te gusta

Origin blog.csdn.net/MaGuangming001/article/details/132482661
Recomendado
Clasificación