ST意法半导体
直播中

幽默

9年用户 771经验值
擅长:362163
私信 关注
[问答]

STM32H735G-DK ADC的输入端是否设置为单端呢

你好。
我使用的是 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,但遇到了那种可怕的效果。

回帖(1)

程傍纯

2022-12-26 14:32:32
你应该试试:
   如果(HAL_ADCEx_Calibration_Start(&hadc1,ADC_CALIB_OFFSET,conf_in)!= HAL_OK){

   如果(HAL_ADCEx_Calibration_Start(&hadc1,ADC_CALIB_OFFSET_LINEARITY,conf_in)!= HAL_OK){
举报

更多回帖

发帖
×
20
完善资料,
赚取积分