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

stm32 RESET之后,电压采样

[复制链接]
fan-347685 发布时间:2015-8-3 11:46
stm32f030系统reset起来之后,电压采样,,为什么不精确,,,系统采样20次之后,才会变得稳定,,为什么!!!!!
# {# t: c9 o/ }( D, S' z; Y, L" P0 x/ c: Z6 M

2 ?3 g8 Y) c, R6 V/ i
采样AD.jpg
赞 收藏 评论4 发布时间:2015-8-3 11:46

举报

4个回答
fan-347685 回答时间:2015-8-3 11:50:44
  1. #define ADC1_DR_Address                0x40012440
    ; n3 ^) A: W  B/ Y  ^" I
  2. __IO uint32_t TempSensVoltmv = 0, VrefIntVoltmv = 0;- Q, P5 s+ D  ~$ w* ?8 |" B# Y# C# D
  3. __IO uint16_t RegularConvData_Tab[10];# F/ b: Q2 n1 Z2 p8 S  L. n

  4. 6 G9 }$ ?" w$ R' E0 M. q
  5. " B+ d- X0 w. q& k/ n
  6. #if 1
    / J, R. \% ^: ?" U  t
  7. void ADC1_CH_DMA_Config(void)
    ' K% k0 b  G5 R+ P
  8. {
    6 G- R& c9 s  _3 o# [) T
  9.   ADC_InitTypeDef     ADC_InitStructure;3 a, d# L  B& e7 i
  10.   DMA_InitTypeDef     DMA_InitStructure;
    5 P* [, N* i( d0 j
  11.         GPIO_InitTypeDef    GPIO_InitStructure;5 r/ m8 q) J% W# a/ i  Q
  12.   
    5 {/ W) v% j0 \: |; Q
  13.   /* ADC1 DeInit */  
    * ~! B1 v" N2 r/ p0 [
  14.   ADC_DeInit(ADC1);
    8 r. c8 G& i% i! y( v( z) I
  15.           /* GPIOC Periph clock enable */
    & c. j" b! h) G3 f% V- R3 e
  16.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    4 i) t" a; ~) e- T. Q
  17.   
      I3 W# ]. U! o: d
  18.   /* ADC1 Periph clock enable */
    % c7 E$ n0 {; T+ w: X# e4 t$ m, Q
  19.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
    0 \# m, G5 h$ f  Q6 @
  20.   # }; l# |) Q: O. ^9 c( ]
  21.   /* DMA1 clock enable */
    ! M: ]: U/ }2 R& v; F6 `
  22.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 , ENABLE);
    $ Z! L) N/ Q- A) _! e8 W
  23.         : g, [- t$ f& [' w! H
  24.         6 ~1 u4 E- `2 B9 n8 n/ }0 r6 H
  25.           /* Configure ADC Channel2 as analog input */* ]) k$ |2 B& T) t5 h
  26.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 ;, x+ U$ W' S0 [- `0 ~
  27.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
    : L( U% `' Q" ~7 k8 O
  28.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
    8 d3 I# ^) G7 K; [: A; h
  29.   GPIO_Init(GPIOA, &GPIO_InitStructure);
    . z- Y/ z7 m2 q1 B
  30.   1 J, F  f7 _; W' T; H; R
  31.   /* DMA1 Channel1 Config */0 a9 l& \2 g. p" B7 b0 D% E
  32.   DMA_DeInit(DMA1_Channel1);/ P# p. B4 V" ]5 z$ N
  33.   DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC1_DR_Address;
    2 {6 F+ k  P, H
  34.   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)RegularConvData_Tab;
      x5 f% D+ W# F* S/ C8 ^
  35.   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;% F4 z- g/ ~4 r: _' k% l+ D" X/ R
  36.   DMA_InitStructure.DMA_BufferSize = 10;8 ^" K2 \+ A- ~$ |- t1 B2 s
  37.   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    # F. W% `  R3 d; E( k: t
  38.   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;9 x8 I. M8 v* F" E3 i) o8 Q- s
  39.   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
      X- N* R& g# Y
  40.   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;* k1 K  i0 z% o; u
  41.   DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;- J9 y( r0 j% s- }% ?0 y, Y
  42.   DMA_InitStructure.DMA_Priority = DMA_Priority_High;
    * l$ K; G0 H* C
  43.   DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
    , `: r; G# F+ |+ d1 V1 c
  44.   DMA_Init(DMA1_Channel1, &DMA_InitStructure);
    7 n% R  n% r1 |$ V. N$ C4 T7 S
  45.   , |! o: i' E1 I) s5 T/ g4 @
  46.   /* DMA1 Channel1 enable */
    $ d0 v) k+ p( c2 x6 `: q6 |. l* n
  47.   DMA_Cmd(DMA1_Channel1, ENABLE);+ ~0 [' u7 |% n% O1 G7 J6 E
  48.   & d% D* N# n" K: g  _2 O
  49.   /* ADC DMA request in circular mode */2 }% D+ w2 T: P! I
  50.   ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);+ V5 g8 A( A; `/ d  E% L
  51.   5 x& a5 e" X4 ?1 {) @$ ?+ W1 e! X
  52.   /* Enable ADC_DMA */
    + C# p6 z; r. y" ~9 g
  53.   ADC_DMACmd(ADC1, ENABLE);  " _" y3 j. R6 [6 u+ D! Y4 z7 O
  54.   
    ) P5 o& a2 m! o: S4 j
  55.   /* Initialize ADC structure */: w9 J, n9 S, U* P8 [, X" N
  56.   ADC_StructInit(&ADC_InitStructure);
    ; y6 Q: ~& z7 J7 ~+ K8 o( i
  57.   1 e* G7 P8 e& R/ j9 P7 y$ e. `1 r& ~
  58.   /* Configure the ADC1 in continous mode withe a resolutuion equal to 12 bits  */
    2 n$ H8 Y, k" p# M* ?0 t0 {3 U* ]
  59.   ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
    / w2 D! r: ?( S
  60.   ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; 0 S; t% t! Z% {3 Y  Z
  61.   ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
    % N8 A. N. S$ Z0 y/ m, ]0 A
  62.   ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;8 }* A/ I4 y3 ]# ?( U% O* Y
  63.   ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Backward;, h5 G  }1 c7 a( H- s
  64.   ADC_Init(ADC1, &ADC_InitStructure); / f1 u8 Y/ ]4 G# Y
  65. $ k' W- m; ^; C' p
  66.    /* Convert the ADC1 Channel 11 with 239.5 Cycles as sampling time */
    " V& X: C3 }3 [% K8 e- X
  67.   ADC_ChannelConfig(ADC1, ADC_Channel_2 , ADC_SampleTime_55_5Cycles);    8 F6 ]6 P# Z& F
  68. // ADC_TempSensorCmd(ENABLE);
    & {! ~: @. J' u# }" z: e
  69. 8 t4 _3 Z" d9 {1 o" n! g( x1 G2 d; r
  70.   /* ADC Calibration */' M. d* V  B8 a7 x6 D/ F
  71.   //ADC_GetCalibrationFactor(ADC1);0 T* M8 c: H! K& c' ?
  72.         , b4 h/ r3 u3 t9 W; p- M
  73.           /* Enable the auto delay feature */    0 r7 h9 R9 h/ h6 v" }
  74.   //ADC_WaitModeCmd(ADC1, ENABLE); ' M% k$ v' U/ I8 U( A) S
  75.   9 P. c( Y6 @. M5 k5 U- j# w5 h
  76.   /* Enable the Auto power off mode */1 w7 n3 _# U  W& k5 K5 b/ E
  77. //  ADC_AutoPowerOffCmd(ADC1, ENABLE); ; m/ i; ?3 l( O0 k7 o
  78.   
    9 Y' Y4 C3 l/ }8 o! l6 X/ I; |1 `+ }
  79.   /* Enable ADC1 */
    ( y6 Q# V3 \# g. `! m% g- i
  80.   ADC_Cmd(ADC1, ENABLE);     
    ! s; w9 |% L3 s: _& {, @$ m
  81.   ) |5 i$ l4 e! a: F( d3 U. Y$ L
  82.   /* Wait the ADCEN falg */
    2 ^$ b- d. C% d7 n3 B
  83.   while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN)); 2 }$ r! a0 F, `1 B, u: X
  84.   
    : ]8 T- P4 o' B# \- ?+ Y
  85.   /* ADC1 regular Software Start Conv */
    . K# g4 H! R2 D
  86. // ADC_StartOfConversion(ADC1);
    " Z1 \! P9 j: h+ F) R/ L
  87. }) @# P# A! I0 d( a- H& ^+ H
  88. 7 u* c. ~5 D5 U9 S: Z5 J1 g6 z
  89. uint32_t Get_RF_Voltage(void)
    8 |6 B2 Q: g& z7 s; D- I" A
  90. {6 Z$ D% }1 J$ h( e2 }. O8 u
  91.         + t" ^2 |+ \  V, \, a4 {' U9 \
  92.         uint16_t i;
    0 f* e0 q1 S: @3 a( ~: R
  93.         uint32_t vol =0;( Y: ^) m) X, u$ z, W, s; C) R
  94.        
    ; Z3 N& h; ~& h2 }1 E" A
  95.         ADC_StartOfConversion(ADC1);0 j3 v% S, z6 T# W! l( Y7 ]
  96.                 /* Test DMA1 TC flag */$ m# |( g+ M1 H. U$ a. m- w
  97.         while((DMA_GetFlagStatus(DMA1_FLAG_TC1)) == RESET ); / ?4 ~2 C' f+ C0 D) h
  98.         1 A0 N( w2 t! v$ T0 U# ~
  99.         /* Clear DMA TC flag */% W0 O6 _. W  d) ]0 X5 ~0 z
  100.         DMA_ClearFlag(DMA1_FLAG_TC1);  s9 E' ]1 D9 h9 B7 O# T. Y
  101.        
    : t; C. W; F( i) R3 K. s4 ^
  102.         for(i=0;i<10;i++)2 E' `4 f3 }% I
  103.         {
    . i# c& i/ i. s1 W% ]2 G% z9 W
  104.                         vol += RegularConvData_Tab[i];
    0 t) R9 j  ?# I- m, x
  105.         }
    : U8 Z4 ~( I& a3 @  r+ b+ ]
  106.         vol = vol*330/0xfff;! Q( P8 h* |1 h4 u0 ^
  107.         return vol;# P( F$ z  [/ I+ n! H
  108. }
复制代码
你好我好大家好! 回答时间:2015-8-3 12:03:57
ding                 
fan-347685 回答时间:2015-8-3 13:49:39
各位大侠们,,有什么见解,,都帮忙看看!!!
bldc小菜鸟 回答时间:2015-8-20 14:50:16
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版