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 |
|---|---|
|
ADC-Kanal 0 H |
|
ADC-Kanal 0 L |
|
ADC-Kanal 1 H |
|
ADC-Kanal 1 L |
|
ADC-Kanal 2 H |
|
ADC-Kanal 2 L |
|
ADC-Kanal 3 H |
|
ADC-Kanal 3 L |
|
ADC 4 H ( Akkustand ) |
|
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 |
|---|---|---|---|
|
PWM0_CCR_H |
|
PWM6_CCR_H |
|
PWM0_CCR_L |
|
PWM6_CCR_L |
|
PWM1_CCR_H |
|
PWM7_CCR_H |
|
PWM1_CCR_L |
|
PWM7_CCR_L |
|
PWM2_CCR_H |
|
PWM8_CCR_H |
|
PWM2_CCR_L |
|
PWM8_CCR_L |
|
PWM3_CCR_H |
|
PWM9_CCR_H |
|
PWM3_CCR_L |
|
PWM9_CCR_L |
|
PWM4_CCR_H |
|
PWM10_CCR_H |
|
PWM4_CCR_L |
|
PWM10_CCR_L |
|
PWM5_CCR_H |
|
PWM11_CCR_H |
|
PWM5_CCR_L |
|
PWM11_CCR_L |
Prescaler
Register ab 0x40 werden verwendet, um den PWM-Prescaler einzustellen ( Bereich: 0–65535 ).
Adresse |
Beschreibung |
|---|---|
|
PWM_TIM0_PSC_H |
|
PWM_TIM0_PSC_L |
|
PWM_TIM1_PSC_H |
|
PWM_TIM1_PSC_L |
|
PWM_TIM2_PSC_H |
|
PWM_TIM2_PSC_L |
Periode
Register ab 0x50 werden verwendet, um die PWM-Periode einzustellen ( Bereich: 0–65535 ).
Adresse |
Beschreibung |
|---|---|
|
PWM_TIM0_ARR_H |
|
PWM_TIM0_ARR_L |
|
PWM_TIM1_ARR_H |
|
PWM_TIM1_ARR_L |
|
PWM_TIM2_ARR_H |
|
PWM_TIM2_ARR_L |
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 |
|---|---|
|
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 |
|---|---|
|
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.