你好。
我使用的是
STM32H735G-DK,但在使用 ADC 时遇到了问题,所以我做了一个非常短的 CubeMX 项目来检查这个。
我从没有外设默认初始化的 CubeMX 配置板开始。
然后我勾选了ADC1 IN0。所以默认情况下它设置为 16bits 转换与软件启动。我将 CPU 时钟更改为 550MHz。
在生成的项目中:
- 我正在开始 ADC 转换
- 然后我轮询转换完成
- 然后我读取 ADC 结果并存储它
HAL_ADC_Start(&hadc1);
HAL_StatusTypeDef status = HAL_ADC_PollForConversion(&hadc1, 1000);
adc_buff = HAL_ADC_GetValue(&hadc1);
默认引脚分配使用 Arduino A2 引脚 (PA0_C)。我在 ADC 输入端连接了 3.3V。ADC 结果为 65535,这很好。奇怪的是它不会因为噪音而改变单个 lsb。
然后我将 0V 连接到 ADC 输入端。我得到的结果是 1000+-100lsb 而不是 0。
这基本上意味着在 16 位转换中,我有 10 位噪声。
- 我检查了通道是否设置为单端
- 我检查过 VDDA 和 GNDA 设置为 3.3V 和 0V。
- 我改用 ADC2
- 我用另一个引脚尝试了 ADC2
- 我试图将 ADC 时钟减慢到 1MHz
但它仍然给了我巨大的抵消。如何摆脱这个?
最不幸的是录音已经不行了
所以我改用 ADC,但遇到了那种可怕的效果。