Arduino Portenta H7 ist ein Arduino am oberen Ende des Leistungsspektrums der Arduino Familie.
Kern ist ein STM32H747XI Dual Core Mikrocontroller mit einem Cortex-M7 und einem Cortex+M4 Core. Der Cortex-M7 wird mit 480 MHz getaktet. Beim Cortex-M4 sind das 240 MHz. Beide Core kommunizieren über einen Remote Procedure Call (RPC) Mechanismus.
CoreMark
Für einen Arduino am oberen Ende des Leistungsspektrums ist ein Benchmark zum Vergleich mit anderen Arduinos von Interesse.
Ich habe auf meiner Benchmark-Seite Benchmarks von 8-Bit-AVR-, 32-Bit Cortex-Mx-, 32-Bit-ESP32- und RISC-V-MCU vergleichend gegenüber gestellt.
Mit einem CoreMark von 1133 mus sich der Cortex-M7 im Arduino Portenta H7 nur dem Teensy 4.0 mit einem NXP iMXRT1062 geschlagen geben.
DAC-ADC-Subsystem
Der Portenta H7 ist mit einem komfortablen DAC-ADC-Subsystem ausgestattet.
ADC | 3× ADCs with 16-bit max. resolution (up to 36 channels, up to 3.6 MSPS) |
DAC | 2× 12-bit DAC (1 MHz) |
Inwieweit das für einen Arduino dann auch nutzbar ist, muss sich zeigen. Im Datenblatt des STM32H747x sind erst mal ernüchternde Daten vorzufinden:

Wie schon beim ESP32 habe ich deshalb das DAC-ADC-Subsystem einem Test unterzogen.
Ich will es vorweg nehmen, dass mein Aufbau sicher suboptimal ist. Als Referenzspannung Vref habe ich 3V3 verwendet und den DAC-Ausgang A6 mit dem ADC-Eingang A0 über Jumper verbunden. DAC und ADC sind für 12 Bit Auflösung konfiguriert

Unter diesen Voraussetzungen habe ich mit dem Programm PortentaH7_ADC_DAC.ino die folgende DAC-ADC-Charakteristik ermittelt. Die Trendlinie zeigt ein lineares Verhalten mit leichtem Offset aber deutlichen Abweichungen in den einzelnen Stufen.

Schauen wir die Abweichungen an, dann übersteigen diese die im Datenblatt gemachten Angaben. Ausserdem zeigt die Trendlinie neben dem bekannten Offset auch noch einen Gain-Fehler.

Durch das Filtern der ADC-Werte mit einer Mittelwertbildung über jeweils 10 Messwerte können die Abweichungen erwartungsgemäss reduziert werden. Die Trendlinie zeigt praktisch gleiches Verhalten.

Bei einem Blick in die diversen Foren zeigen sich zahlreiche kritische Stimmen zum Verhalten des DAC-ADC-Subsystems.
Allerdings dürfen Sie nicht ausser Acht lassen, dass bei einer 12-Bit-Umsetzung im Spannungsbereich von 3.3 V DC das LSB immerhin bei nur 800 uV liegt.
Eine stabile Referenzspannung Vref und eine optimale Verdrahtung sind für geringere Abweichungen bei der AD-Umsetzung zwingend erforderlich. Durch die Verbindung von Vref mit 3.3 V ist das schon mal nicht gegeben.
Optimierungsmöglichkeiten sind in der AN2834 Application note How to get the best ADC accuracy in STM32 microcontrollers zu finden.
Im Zweifelsfall bleibt aber immer noch ein externer AD-Umsetzer, wie ich den auch beim ESP32 verwendet habe.
2021-11-02/CK