你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请教STM32F334 ADC 差分应用问题

[复制链接]
xihui8817 提问时间:2015-6-23 16:21 /
本帖最后由 xihui-122742 于 2015-6-23 16:27 编辑

安:你好!

一、硬件连接:
1.  +3.3V 串3个10k电阻到地 取中间电阻电压(1.10V)送AD 得到码数为:2610
2.     +5V 串3个10k电阻到地 取中间电阻电压(1.66V)送AD 得到码数为:2915
3.   ADC1_IN1->PA0 接信号+
      ADC1_IN2->PA1 接信号-

二、问题:为何电压和码数无法对应呢?

三、代码:(cube生成)
/** System Clock Configuration
*/
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct;
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
  RCC_PeriphCLKInitTypeDef PeriphClkInit;
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = 16;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16;
  HAL_RCC_OscConfig(&RCC_OscInitStruct);
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_HRTIM1|RCC_PERIPHCLK_USART1
                              |RCC_PERIPHCLK_ADC12;
  PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1;
  PeriphClkInit.Adc12ClockSelection = RCC_ADC12PLLCLK_DIV1;
  PeriphClkInit.Hrtim1ClockSelection = RCC_HRTIM1CLK_PLLCLK;
  HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);
  __SYSCFG_CLK_ENABLE();
}

*******************************************************

/* ADC1 init function */
void MX_ADC1_Init(void)
{
  ADC_ChannelConfTypeDef sConfig;
    /**Common config
    */
  hadc1.Instance = ADC1;
  hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC;
  hadc1.Init.Resolution = ADC_RESOLUTION12b;
  hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
  hadc1.Init.ContinuousConvMode = ENABLE;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  hadc1.Init.NbrOfConversion = 1;
  hadc1.Init.DMAContinuousRequests = DISABLE;
  hadc1.Init.EOCSelection = EOC_SINGLE_CONV;
  hadc1.Init.LowPowerAutoWait = DISABLE;
  hadc1.Init.Overrun = OVR_DATA_OVERWRITTEN;
  HAL_ADC_Init(&hadc1);
    /**Configure Regular Channel
    */
  sConfig.Channel = ADC_CHANNEL_1;
  sConfig.Rank = 1;
  sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED;
  sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
  sConfig.OffsetNumber = ADC_OFFSET_NONE;
  sConfig.Offset = 0;
  HAL_ADC_ConfigChannel(&hadc1, &sConfig);
}

*******************************************************

  HAL_ADC_Start(&hadc1);
  while (1)
  {
    ADC_GetValue=HAL_ADC_GetValue(&hadc1);  
    printf("%d \r\n", ADC_GetValue);  
   }


收藏 评论15 发布时间:2015-6-23 16:21

举报

15个回答
黑溱郎 回答时间:2015-6-23 17:40:31
帮楼主顶一下。
废鱼 回答时间:2015-6-25 14:09:29
3.   ADC1_IN1->PA0 接信号+
      ADC1_IN2->PA1 接信号-

这里说的信号+ -指的是具体哪个?还有参考电压ref是多少?
黑皮男 回答时间:2015-6-25 14:20:40
路过帮顶
XH750507 回答时间:2015-7-3 16:27:01
自己顶一下
XH750507 回答时间:2015-7-3 16:32:15
参考电压:3.3V
满码:4096
差分信号输入
1.10V送AD 得到码数为:2610
1.66V送AD 得到码数为:2915
请教码数和电压的换算关系?是不是选择了差分输入则AD自动为双极性?
废鱼 回答时间:2015-7-3 17:05:03
ADC1_IN1->PA0 接信号+
ADC1_IN2->PA1 接信号-

这里的信号+指的是哪个?信号-指的是哪个?
如果不用差分,这个时候采集到的AD值是多少?他应该是实际电压/REF*4096.
stary666 回答时间:2015-7-4 00:37:00
顶一下,,,,,,,,
XH750507 回答时间:2015-7-4 13:26:10
本帖最后由 XH750507 于 2015-7-4 13:27 编辑

参考电压:3.3V
满码:4096
差分信号输入
2.20-1.10=1.10V送AD 得到码数为:2610
ADC1_IN1->PA0 接+2.20V
ADC1_IN2->PA1 接+1.10V
3.32-1.66=1.66V送AD 得到码数为:2915
ADC1_IN1->PA0 接+3.32V
ADC1_IN2->PA1 接+1.66V
请教码数和电压的换算关系?
是不是选择了差分输入则AD自动为双极性?
废鱼 回答时间:2015-7-4 16:44:37
从手册看是芯片自动转换了。
In differential input mode, the analog voltage to be converted for channel “i” is the difference
between the external voltage ADC_INi (positive input) and ADC_INi+1 (negative input).
废鱼 回答时间:2015-7-4 16:55:41
对于差分AD的使用,一块探讨一下。
XH750507 回答时间:2015-7-8 08:57:59
我在使用334的差分AD的时候 转换的码数如果按照双极性来计算 电压和码数似乎是有对应关系的
欣辰天下 回答时间:2016-7-1 22:42:44
牙子男男 回答时间:2019-2-20 11:23:57
楼主~这个问题你是怎么解决的? 我现在也遇到这个情况了。看你题目上写的已解决,特来请教,望回复
牙子男男 回答时间:2019-2-20 11:55:54
XH750507 发表于 2015-7-8 08:57
我在使用334的差分AD的时候 转换的码数如果按照双极性来计算 电压和码数似乎是有对应关系的
...

您好~麻烦问一下您说的双极性指的是什么? 我也在用334,遇到楼主的问题了
12下一页

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版