STM32H743 DAC Anstiegs-/Abfallzeit-Experimente

Diese Oszilloskop-Spur wurde erhalten, indem zuerst der STM32H743ZI (Nucleo) DAC auf 0x00 gesetzt wurde, dann auf den Maximalwert (4096) ohne Zwischenschritte.
Der Ausgangspuffer war aktiviert.
Wie auf der Spur zu sehen ist, beträgt die Anstiegs-/Abfallzeit ungefähr 1us. Für dieses Beispiel sind keine Informationen über die Taktrate usw. verfügbar (Arduino auf PlatformIO wurde mit Standardeinstellungen verwendet). Es scheint jedoch nicht, dass die Anstiegs-/Abfallzeit durch die Update-Rate verursacht wird. Das Setzen der GPIO-Geschwindigkeit auf Maximum ändert den Wert nicht.
Dies passt gut zur datenblatt-basierten Einstellzeit von 1.7us(typ).
Beim Deaktivieren des Ausgangspuffers sieht das Ergebnis so aus:

Wenn andererseits derselbe Pin als GPIO verwendet wird - mit genau demselben Messaufbau (direkte Verbindung zum BNC mit 1M Messimpedanz) - ist die Anstiegs-/Abfallzeit fast null.
Codebeispiel
// Function to initialize the DAC
void MX_DAC_Init(void)
{
DAC_ChannelConfTypeDef sConfig = {0};
// Initialize DAC
hdac.Instance = DAC1;
if (HAL_DAC_Init(&hdac) != HAL_OK)
{
// Initialization Error
__BKPT();
}
// Configure DAC channel
sConfig.DAC_Trigger = DAC_TRIGGER_NONE; // No trigger, free-running mode
sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
if (HAL_DAC_ConfigChannel(&hdac, &sConfig, DAC_CHANNEL_1) != HAL_OK)
{
// Channel configuration Error
__BKPT();
}
// Enable DAC Channel and start the conversion
if (HAL_DAC_Start(&hdac, DAC_CHANNEL_1) != HAL_OK)
{
// Starting Error
__BKPT();
}
}Der DAC-Wert wurde gesetzt mit
if (HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, 4095) != HAL_OK) {
// Setting DAC value Error
__BKPT();
}