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

stm32 RESET之后,电压采样

[复制链接]
fan-347685 发布时间:2015-8-3 11:46
stm32f030系统reset起来之后,电压采样,,为什么不精确,,,系统采样20次之后,才会变得稳定,,为什么!!!!!


采样AD.jpg
收藏 评论4 发布时间:2015-8-3 11:46

举报

4个回答
fan-347685 回答时间:2015-8-3 11:50:44
  1. #define ADC1_DR_Address                0x40012440
  2. __IO uint32_t TempSensVoltmv = 0, VrefIntVoltmv = 0;
  3. __IO uint16_t RegularConvData_Tab[10];


  4. #if 1
  5. void ADC1_CH_DMA_Config(void)
  6. {
  7.   ADC_InitTypeDef     ADC_InitStructure;
  8.   DMA_InitTypeDef     DMA_InitStructure;
  9.         GPIO_InitTypeDef    GPIO_InitStructure;
  10.   
  11.   /* ADC1 DeInit */  
  12.   ADC_DeInit(ADC1);
  13.           /* GPIOC Periph clock enable */
  14.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
  15.   
  16.   /* ADC1 Periph clock enable */
  17.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
  18.   
  19.   /* DMA1 clock enable */
  20.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 , ENABLE);
  21.        
  22.        
  23.           /* Configure ADC Channel2 as analog input */
  24.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 ;
  25.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  26.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
  27.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  28.   
  29.   /* DMA1 Channel1 Config */
  30.   DMA_DeInit(DMA1_Channel1);
  31.   DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC1_DR_Address;
  32.   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)RegularConvData_Tab;
  33.   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
  34.   DMA_InitStructure.DMA_BufferSize = 10;
  35.   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  36.   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
  37.   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
  38.   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
  39.   DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
  40.   DMA_InitStructure.DMA_Priority = DMA_Priority_High;
  41.   DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
  42.   DMA_Init(DMA1_Channel1, &DMA_InitStructure);
  43.   
  44.   /* DMA1 Channel1 enable */
  45.   DMA_Cmd(DMA1_Channel1, ENABLE);
  46.   
  47.   /* ADC DMA request in circular mode */
  48.   ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);
  49.   
  50.   /* Enable ADC_DMA */
  51.   ADC_DMACmd(ADC1, ENABLE);  
  52.   
  53.   /* Initialize ADC structure */
  54.   ADC_StructInit(&ADC_InitStructure);
  55.   
  56.   /* Configure the ADC1 in continous mode withe a resolutuion equal to 12 bits  */
  57.   ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
  58.   ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
  59.   ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
  60.   ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  61.   ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Backward;
  62.   ADC_Init(ADC1, &ADC_InitStructure);

  63.    /* Convert the ADC1 Channel 11 with 239.5 Cycles as sampling time */
  64.   ADC_ChannelConfig(ADC1, ADC_Channel_2 , ADC_SampleTime_55_5Cycles);   
  65. // ADC_TempSensorCmd(ENABLE);

  66.   /* ADC Calibration */
  67.   //ADC_GetCalibrationFactor(ADC1);
  68.        
  69.           /* Enable the auto delay feature */   
  70.   //ADC_WaitModeCmd(ADC1, ENABLE);
  71.   
  72.   /* Enable the Auto power off mode */
  73. //  ADC_AutoPowerOffCmd(ADC1, ENABLE);
  74.   
  75.   /* Enable ADC1 */
  76.   ADC_Cmd(ADC1, ENABLE);     
  77.   
  78.   /* Wait the ADCEN falg */
  79.   while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));
  80.   
  81.   /* ADC1 regular Software Start Conv */
  82. // ADC_StartOfConversion(ADC1);
  83. }

  84. uint32_t Get_RF_Voltage(void)
  85. {
  86.        
  87.         uint16_t i;
  88.         uint32_t vol =0;
  89.        
  90.         ADC_StartOfConversion(ADC1);
  91.                 /* Test DMA1 TC flag */
  92.         while((DMA_GetFlagStatus(DMA1_FLAG_TC1)) == RESET );
  93.        
  94.         /* Clear DMA TC flag */
  95.         DMA_ClearFlag(DMA1_FLAG_TC1);
  96.        
  97.         for(i=0;i<10;i++)
  98.         {
  99.                         vol += RegularConvData_Tab[i];
  100.         }
  101.         vol = vol*330/0xfff;
  102.         return vol;
  103. }
复制代码
你好我好大家好! 回答时间:2015-8-3 12:03:57
ding                 
fan-347685 回答时间:2015-8-3 13:49:39
各位大侠们,,有什么见解,,都帮忙看看!!!
bldc小菜鸟 回答时间:2015-8-20 14:50:16

所属标签

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