STM32F4 DAC 引脚导致相邻 GPIO 引脚出现问题
STM32F4 DAC pins causes problems with adjacent GPIO pin
我有一个我不明白的奇怪问题。请告诉我,因为这是一个很难解构的问题。因此,我将尽可能多地提供有关测试用例和发现的结果的信息。
问题:
- 我需要将 PA6 设置为低电平然后使用 DAC。当 DAC 以瞬态方式变化时,引脚 PA6 设置为 HIGH 时不会 return 到 3V。
- 也就是说DAC导致PA6电压上限为0.6-0.8V
- 我已经用示波器证实了这一点。
- 以下代码在 task/thread 中调用并以 50Hz 执行:
if (enable == 1)
{
HAL_GPIO_WritePin(PROPULSION_ENABLE_GPIO_PORT, PROPULSION_ENABLE_GPIO_PIN, GPIO_PIN_RESET);
HAL_DAC_SetValue(&PropulsionModule_DAC, PropulsionModule_DAC_CHANNEL, DAC_ALIGN_12B_R, PropulsionData.propulsionSetPoint_12bit);
}
else
{
HAL_GPIO_WritePin(PROPULSION_ENABLE_GPIO_PORT, PROPULSION_ENABLE_GPIO_PIN, GPIO_PIN_SET);
HAL_DAC_SetValue(&PropulsionModule_DAC, PropulsionModule_DAC_CHANNEL, DAC_ALIGN_12B_R, 0);
}
设置和环境
- STM32F4探索板
- 配置了线程、队列和其他一切的 FreeRTOS 按预期工作
- 我在 DAC_channel_2 (PA5) 和 GPIO_output (PA6) 上设置了一个 DAC。
- 我也启用了这些外围设备,CAN总线,UART,几个GPIO等。请看附图
调查结果:
- 当我将 PA6 引脚更改为 PC4(相邻引脚)时,问题就消失了
- 当我将 DAC_channel_2 更改为 DAC_channel_1 时,问题就消失了
- 我将代码刷写到另外两个全新的、开箱即用的板子上,错误相同。
- 一旦PA6出现故障,其高电平状态为0.6V,复位微控制器将复位引脚PA6,PA6将return变为3V高电平状态。
如有任何帮助,我们将不胜感激。
我发现了问题。问题是发现板上的 MEMS 芯片。意识到并不是发现板上的所有引脚都可用是非常重要的。
请参阅下面第 22 页中第一个 link 可用的引脚。请注意,一些“非免费”的引脚仍然可以使用。请参阅第二个 link.
板上每个芯片的应用说明
Link 2: https://ucilnica.fri.uni-lj.si/pluginfile.php/29604/mod_resource/content/1/en.DM00039084.pdf
我有一个我不明白的奇怪问题。请告诉我,因为这是一个很难解构的问题。因此,我将尽可能多地提供有关测试用例和发现的结果的信息。
问题:
- 我需要将 PA6 设置为低电平然后使用 DAC。当 DAC 以瞬态方式变化时,引脚 PA6 设置为 HIGH 时不会 return 到 3V。
- 也就是说DAC导致PA6电压上限为0.6-0.8V
- 我已经用示波器证实了这一点。
- 以下代码在 task/thread 中调用并以 50Hz 执行:
if (enable == 1)
{
HAL_GPIO_WritePin(PROPULSION_ENABLE_GPIO_PORT, PROPULSION_ENABLE_GPIO_PIN, GPIO_PIN_RESET);
HAL_DAC_SetValue(&PropulsionModule_DAC, PropulsionModule_DAC_CHANNEL, DAC_ALIGN_12B_R, PropulsionData.propulsionSetPoint_12bit);
}
else
{
HAL_GPIO_WritePin(PROPULSION_ENABLE_GPIO_PORT, PROPULSION_ENABLE_GPIO_PIN, GPIO_PIN_SET);
HAL_DAC_SetValue(&PropulsionModule_DAC, PropulsionModule_DAC_CHANNEL, DAC_ALIGN_12B_R, 0);
}
设置和环境
- STM32F4探索板
- 配置了线程、队列和其他一切的 FreeRTOS 按预期工作
- 我在 DAC_channel_2 (PA5) 和 GPIO_output (PA6) 上设置了一个 DAC。
- 我也启用了这些外围设备,CAN总线,UART,几个GPIO等。请看附图
调查结果:
- 当我将 PA6 引脚更改为 PC4(相邻引脚)时,问题就消失了
- 当我将 DAC_channel_2 更改为 DAC_channel_1 时,问题就消失了
- 我将代码刷写到另外两个全新的、开箱即用的板子上,错误相同。
- 一旦PA6出现故障,其高电平状态为0.6V,复位微控制器将复位引脚PA6,PA6将return变为3V高电平状态。
如有任何帮助,我们将不胜感激。
我发现了问题。问题是发现板上的 MEMS 芯片。意识到并不是发现板上的所有引脚都可用是非常重要的。
请参阅下面第 22 页中第一个 link 可用的引脚。请注意,一些“非免费”的引脚仍然可以使用。请参阅第二个 link.
板上每个芯片的应用说明Link 2: https://ucilnica.fri.uni-lj.si/pluginfile.php/29604/mod_resource/content/1/en.DM00039084.pdf