STM32H743 DAC 上升/下降时间实验

此示波器轨迹是通过首先将 STM32H743ZI (Nucleo) DAC 设置为 0x00,然后无任何中间步骤将其设置为最大值 (4096) 获得的。
输出缓冲已启用。
从轨迹可以看出,上升/下降时间约为 1us。此示例没有时钟速度等信息(PlatformIO 上的 Arduino 使用标准设置)。然而,上升/下降时间似乎不是由更新速率引起的。将 GPIO 速度设置为最大不会改变该值。
这与数据手册提供的 1.7us(typ) 建立时间很匹配。
禁用输出缓冲时,结果如下:

另一方面,当使用同一引脚作为 GPIO - 使用完全相同的测量设置(直接连接到 BNC,1M 测量阻抗)时,上升/下降时间几乎为零。
代码示例
stm32h743_dac_init.cpp
// 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();
}
}DAC 值使用以下代码设置
stm32h743_dac_set_value.cpp
if (HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, 4095) != HAL_OK) {
// Setting DAC value Error
__BKPT();
}If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow