Bemerkung

Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community auf Facebook! Tauche gemeinsam mit anderen Enthusiasten tiefer in Raspberry Pi, Arduino und ESP32 ein.

Warum beitreten?

  • Experten-Support: Löse After-Sales-Probleme und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.

  • Lernen & Teilen: Tausche Tipps und Tutorials aus, um deine Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalte frühzeitig Zugang zu neuen Produktankündigungen und Sneak Peeks.

  • Spezielle Rabatte: Profitiere von exklusiven Rabatten auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nimm an Gewinnspielen und Feiertagsaktionen teil.

👉 Bereit, mit uns zu entdecken und zu erschaffen? Klicke [here] und tritt noch heute bei!

Onboard-MCU

Der Fusion HAT+ ist mit einem GD32E203C8T6-Mikrocontroller ausgestattet. Es handelt sich um einen ARM Cortex-M23-Prozessor mit einer maximalen Taktfrequenz von 72 MHz. Der Mikrocontroller verfügt über 64 KB Flash-Speicher und 8 KB SRAM.

Die Onboard-PWM und der ADC werden vom Mikrocontroller gesteuert. Die Kommunikation zwischen dem Raspberry Pi und dem Mikrocontroller erfolgt über die I2C-Schnittstelle. Die für die Kommunikation verwendete I2C-Adresse ist 0x17.

ADC

Registeradressen sind 1 Byte; 0x10 bis 0x19 sind die ADC-Kanäle 0 bis 3. Die ADC-Auflösung beträgt 12 Bit und der Wert liegt zwischen 0 und 4095. Weitere Details siehe fusion_hat.adc.ADC.

Adresse

Beschreibung

0x10

ADC-Kanal 0 H

0x11

ADC-Kanal 0 L

0x12

ADC-Kanal 1 H

0x13

ADC-Kanal 1 L

0x14

ADC-Kanal 2 H

0x15

ADC-Kanal 2 L

0x16

ADC-Kanal 3 H

0x17

ADC-Kanal 3 L

0x18

ADC 4 H ( Akkustand )

0x19

ADC-Kanal 4 L

PWM

Frequenz- und Periodeneinstellungen

Die PWM-Frequenz wird durch den Periodenwert ( ARR ) und den Prescaler ( PSC ) bestimmt. Das Prinzip ist, dass der interne Takt des Mikrocontrollers mit 72 MHz läuft. Durch Prescaling wird der Takt geteilt, um eine Frequenz Fp zu erhalten, die anschließend durch den Periodenzähler weiter geteilt wird, um die PWM-Ausgangsfrequenz F zu erhalten. Daher:

F = 72,000,000 / (PSC + 1) / (ARR + 1)

Im Allgemeinen kannst du durch Angabe der gewünschten Frequenz und Periode den erforderlichen Prescaler berechnen. Um beispielsweise einen Servo anzusteuern, benötigst du eine Frequenz von 50 Hz und eine gewünschte Auflösung von 12 Bit ( d. h. eine Periode von 2¹² = 4096 ). Der Prescaler PSC kann wie folgt berechnet werden:

PSC = 72,000,000 / F / (ARR + 1) - 1
= 72,000,000 / 50 / (4095 + 1) - 1
= 350.5625
≈ 351

Da PSC eine ganze Zahl sein muss, wird auf 351 gerundet. Daher erhältst du bei PSC = 351 und ARR = 4096 eine tatsächliche PWM-Frequenz von:

72,000,000 / 352 / 4096 = 49.937 Hz ≈ 50 Hz.

Standardmäßig sind der PWM-Prescaler ( PSC ) und die Periode ( ARR ) auf 351 bzw. 4095 gesetzt, was zu einer Standardfrequenz von ungefähr 50 Hz führt.

Die Pulsbreite entspricht dem Tastgradwert innerhalb der Periode. Zum Beispiel ergibt bei der obigen Konfiguration mit einer Periode ( ARR ) von 4096 das Setzen der Pulsbreite ( CCR ) auf 2048 einen PWM-Ausgang von 50 %.

Duty Cycle = CCR / (ARR + 1)

Pulsbreite

Die Pulsbreite eines Kanals zu steuern ist ziemlich einfach: Schreibe einfach den Wert in das Register.

Aber welcher Wert ist das? Wenn du die PWM auf 50 % Pulsbreite setzen möchtest, musst du genau wissen, wie groß die Periode ist. Basierend auf der obigen Berechnung gilt: Wenn du die Periode auf 4095 setzt, dann ist ein Pulswert von 2048 ungefähr 50 % Pulsbreite.

Adresse

Beschreibung

Adresse

Beschreibung

0x60

PWM0_CCR_H

0x6C

PWM6_CCR_H

0x61

PWM0_CCR_L

0x6D

PWM6_CCR_L

0x62

PWM1_CCR_H

0x6E

PWM7_CCR_H

0x63

PWM1_CCR_L

0x6F

PWM7_CCR_L

0x64

PWM2_CCR_H

0x70

PWM8_CCR_H

0x65

PWM2_CCR_L

0x71

PWM8_CCR_L

0x66

PWM3_CCR_H

0x72

PWM9_CCR_H

0x67

PWM3_CCR_L

0x73

PWM9_CCR_L

0x68

PWM4_CCR_H

0x74

PWM10_CCR_H

0x69

PWM4_CCR_L

0x75

PWM10_CCR_L

0x6A

PWM5_CCR_H

0x76

PWM11_CCR_H

0x6B

PWM5_CCR_L

0x77

PWM11_CCR_L

Prescaler

Register ab 0x40 werden verwendet, um den PWM-Prescaler einzustellen ( Bereich: 0–65535 ).

Adresse

Beschreibung

0x40

PWM_TIM0_PSC_H

0x41

PWM_TIM0_PSC_L

0x42

PWM_TIM1_PSC_H

0x43

PWM_TIM1_PSC_L

0x44

PWM_TIM2_PSC_H

0x45

PWM_TIM2_PSC_L

Periode

Register ab 0x50 werden verwendet, um die PWM-Periode einzustellen ( Bereich: 0–65535 ).

Adresse

Beschreibung

0x50

PWM_TIM0_ARR_H

0x51

PWM_TIM0_ARR_L

0x52

PWM_TIM1_ARR_H

0x53

PWM_TIM1_ARR_L

0x54

PWM_TIM2_ARR_H

0x55

PWM_TIM2_ARR_L

Tasten- und LED-Steuerung

Element

Adresse

Beschreibung

USR-Taste ( r/- )

0x24

Lese den Pegelstatus der USR-Taste:

0: Low-Pegel

1: High-Pegel

LED ( r/w )

0x30

Lese oder steuere die LED:

0: aus

1: an

2: umschalten

Summer-Schaltersteuerung

Element

Adresse

Beschreibung

Summer-Schalter ( r/w )

0x31

Lese oder steuere den Summer-Schalter:

0: aus

1: an

Servo-Nullstellung

  • Wenn du die Taste zweimal drückst, werden alle PWM-Signale auf 1500 us Puls und 20000 us Periode gesetzt. Das heißt, der Servo befindet sich in der Mittelposition. In diesem Zustand solltest du den Servohebel am Servo befestigen.

  • Drücke die Taste erneut zweimal, dann werden alle PWM-Signale auf 0 Puls gesetzt.

Ladestatus

Adresse

Wert

0x25

0: Nicht am Laden

1: Wird geladen

Sicheres Herunterfahren

Der Fusion HAT+ verfügt über einen integrierten Mechanismus für sicheres Herunterfahren. Er führt ein softwarebasiertes Herunterfahren durch, indem der Registerstatus des Mikrocontrollers über I2C ausgelesen wird.

Adresse

Wert

0x26

0: Keine Anforderung

1: Niedriger Akkustand, Herunterfahren angefordert

2: Herunterfahren durch Netztaste angefordert

Um das Shutdown-Signal des Raspberry Pi zu konfigurieren, siehe Herunterfahrverhalten konfigurieren für detaillierte Anweisungen.