找回密码
 注册
关于网站域名变更的通知
查看: 936|回复: 4
打印 上一主题 下一主题

TMS320F28335之ADC功能

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-2 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

TMS320F28335内部包含12位AD转换器,其功能有:( Z: ^. p! h; A) O. p* ~, X
具有内置(采样保持)S/H的12位ADC内核3 d! P5 b+ c! D
模拟输入:0.0V至3.0V(高于3.0V的电压产生满刻度转换结果)。, V7 T' D9 B, a2 T& y
快速转换率:在25MHzADC时钟12.5MSPS上时高达80ns5 ?" G$ Y; `$ o# }2 f0 W# X
16个专用ADC通道。7 ]0 z! f" `5 {, W" I/ D
每次采样/保持都有复用的8通道* j1 V% T3 `. j
自动定序功能在单次会话中可提供多达16次“自动转换”。可将每次转换编程为选择16个输入信道中的任何一个。
: z2 t) m% s" e& `- E序列发生器可运行为2个独立的8态序列发生器,或作为1个较大的16态序列发生器(即2个级联的8态序列发生器)。! V8 [8 B) J* p$ f
用于存储转换值的16个结果寄存器(可分别寻址)* e9 ^0 j* I* L) _- q& C
– 输入模拟电压的数值源自:
, r3 }1 p5 Q% t3 ^1 [4 v6 `( |+ [当input<0时:digital value =0;) ~4 v: u5 }- X% K& n. M
当0<input<3.0时:digital value =4096*(input analog voltage-ADCLO)/3;
9 O( L5 x! e4 `" T当input>3.0时:digital value =4095;

9 L( b1 W  `; r* q* M0 S
作为转换开始(SOC)序列源的多个触发器
# X! A$ M3 v; ?7 q5 t$ h1 Z– S/W-软件立即启动: n, W  {) w6 ]) I3 V, E
– ePWMM转换开始
) `, F' F1 O/ |) h– XINT2ADC转换开始
: U4 t# t* v3 j: I0 ~6 r' r! E6 F4 W灵活的中断控制允许每个序列结束(EOS) 或每个其它EOS上的中断请求。: U# u0 B0 c8 b0 W
序列发生器可运行于“启/停”模式,从而实现多个“时序触发器”同步转换。
! _. Q! t0 ?) m  C+ T$ lSOCA和SOCB触发器可独立运行在双序列发生器模式中。% r  D) r& G$ w# }6 n/ h4 A
采样保持(S/H)采集时间窗口具有独立的预分频控制。

要获得指定的ADC精度,正确的电路板布局非常关键。为尽可能达到最佳效果,引入ADCIN引脚的走线不应太靠近数字信号通道。这是为了最大程度地减少数字线路上因ADC输入耦合而产生的开关噪声。而且,适当的隔离技术必须被用来将数字电源从ADC模块电源引脚(VDD1A18,VDD2A18,VDDA2,VDDAIO)上隔离。

ADC未被使用,ADC连接
. S! T& U" L. w9 J& Y  \建议保持针对模拟电源引脚的连接,即便在ADC未被使用时也是如此。下面总结了如果ADC未在应用中使用,应该如何连接ADC引脚:, G  j$ b+ }7 [; T5 \; q2 Q# L
? VDD1A18/VDD2A18-连接至VDD1 `) J3 `0 h1 r9 P( M
? VDDA2,VDDAIO-连接至VDDIO6 z: s' I9 ^" ^: G2 D8 q
? VSS1AGND/VSS2AGND,VSSA2,VSSAIO-连接至VSS: b4 I; E5 p% K* n
? ADCLO-连接至VSS" }, t4 Q2 \0 v) U
? ADCREFIN-连接至VSS* \; R& Z  f4 P4 S' R4 Y; V
? ADCREFP/ADCREFM-连接一个100nF电容器至VSS
+ T' n( U/ I% T6 K? ADCRESEXT-连接一个20k?电阻器(非常松散的耐受)至VSS。3 T0 F; I8 a+ s  q- U: I, W# Y
? ADCINAn,ADCINBn-连接至VSS
; G- c& P5 N# i9 y当ADC未被使用时,为了达到节能的目的,请确保到ADC模块的时钟未被打开。- s( t5 Z/ m9 k" \3 v/ ^
当在一个应用中使用ADC模块时,未使用的ADC输入引脚应被连接至模拟接地(VSS1AGND/VSS2AGND)

ADC头文件与寄存器对应解读:

/ _% L4 [5 P$ ]2 w& k7 q2 M
struct ADCTRL1_BITS {      // bits  description- P5 a* L9 e) _
    Uint16  rsvd1:4;               // 3:0   reserved- P) K& E( R; R. i2 X9 E. }1 E( F
    Uint16  SEQ_CASC:1;      // 4     Cascaded sequencer mode 级联序列模式" F8 w8 \* n. I# D" J) ^4 I
    Uint16  SEQ_OVRD:1;     // 5     Sequencer override  序列发生器覆盖
+ p( @/ x9 t" L$ a- K    Uint16  CONT_RUN:1;    // 6     Continuous run 连续运行模式
1 U7 t1 x$ ~4 {6 F2 V2 O$ }    Uint16  CPS:1;                // 7     ADC core clock pre-scalar ADC核心时钟分频
! @! u# y4 I0 s  ]3 o    Uint16  ACQ_PS:4;         // 11:8  Acquisition window size采集窗口大小
/ Z) x* w' X/ i! G    Uint16  SUSMOD:2;       // 13:12 Emulation suspend mode仿真挂起模式
) \6 r/ ~( p. f    Uint16  RESET:1;          // 14    ADC reset ADC复位7 r# p  `/ p; o0 R9 P
    Uint16  rsvd2:1;            // 15    reserved 保留3 b: W1 N8 @4 q  r( R2 W2 F' |5 U/ i6 C
};0 D1 P; }) D" O6 K8 B7 E7 |
下面的联合体主要是为了解决对这个寄存器的控制,可以是整体赋值液可以是一位一位的赋值。( @6 t1 z  w8 V4 z! [
union ADCTRL1_REG {9 J& Z& w: D9 U* H
   Uint16                all;7 n9 S3 y1 z8 j; ?6 d
   struct ADCTRL1_BITS   bit;
, \( ?& r( K/ v: q};


( v( c: W' m7 s" p0 L" Lstruct ADCTRL2_BITS {                     // bits  description) U' j; t0 |5 r% [0 D* W
    Uint16  EPWM_SOCB_SEQ2:1;        // 0     EPWM compare B SOC mask for SEQ2  增强PWM比较器B作为SEQ2的启动转换标志/ t! c) b& G" D' r2 W
    Uint16  rsvd1:1;                               // 1     reserved
9 p5 ]  t4 \8 n* Y+ b+ g    Uint16  INT_MOD_SEQ2:1;             // 2     SEQ2 Interrupt mode  SEQ2终端模式                 
! w& c9 d: z3 L3 l3 ?; S    Uint16  INT_ENA_SEQ2:1;               // 3     SEQ2 Interrupt enable  SEQ2中断使能( K# A( F2 l$ z/ d
    Uint16  rsvd2:1;                               // 4     reserved
: `6 w7 [6 l$ @    Uint16  SOC_SEQ2:1;                      // 5     Start of conversion for SEQ2 启动SEQ2转换5 R( A! Y/ G5 @- |' \  c0 j* ^& s
    Uint16  RST_SEQ2:1;                      // 6     Reset SEQ2     SEQ2复位
2 y; }8 r9 L; R2 L    Uint16  EXT_SOC_SEQ1:1;             // 7     External start of conversion for SEQ1        序列1的外部转换启动8 s6 T2 R% X& c+ P1 O
    Uint16  EPWM_SOCA_SEQ1:1;       // 8     EPWM compare B SOC mask for SEQ1& H* E% D$ {  d
    Uint16  rsvd3:1;                              // 9     reserved$ m' l5 ^8 n; Q
    Uint16  INT_MOD_SEQ1:1;            // 10    SEQ1 Interrupt mode" v# }* V) l0 y4 x- i' n4 S+ M2 w7 l
    Uint16  INT_ENA_SEQ1:1;             // 11    SEQ1 Interrupt enable' i) m& {1 H5 {$ |: @& |3 U, q3 V9 a
    Uint16  rsvd4:1;                             // 12    reserved
; k3 y0 x" W) \/ s* p    Uint16  SOC_SEQ1:1;                    // 13    Start of conversion trigger for SEQ1
. W  K4 l- l+ _3 j) a8 i    Uint16  RST_SEQ1:1;                    // 14    Restart sequencer 1   
' U0 x! M+ N$ R5 K0 S1 C    Uint16  EPWM_SOCB_SEQ:1;       // 15    EPWM compare B SOC enable6 e. W' ^5 c0 l* I% U
};

: L) ^* H' ~. c


( y+ g! l$ p8 `9 Zstruct ADCASEQSR_BITS {       // bits   description
0 X- ~8 I. z% h( L0 n    Uint16  SEQ1_STATE:4;     // 3:0    SEQ1 state   序列1的状态/ C8 w) T2 u1 `3 I6 n) `" }
    Uint16  SEQ2_STATE:3;     // 6:4    SEQ2 state   序列2的状态
/ V/ M" M8 R: A, O7 W& A    Uint16  rsvd1:1;          // 7      reserved
0 Y, ^. @% K8 S5 ]7 z    Uint16  SEQ_CNTR:4;       // 11:8   Sequencing counter status   序列计数器状态5 M) L% n2 q0 F' P1 K7 A) O
    Uint16  rsvd2:4;          // 15:12  reserved  
& y: b! ]. j4 {6 J" v};

/ \7 r! E0 M+ A4 V2 G, l

8 n7 |# s# R% c1 F! S/ w1 d
ADC最大转换信道数寄存器
) I4 Q$ I% W& B# u9 nstruct ADCMAXCONV_BITS {      // bits  description
. e( O# ^# H1 ^3 p4 D    Uint16  MAX_CONV1:4;      // 3:0   Max number of conversions   序列1最大转换通道数% M* R1 `2 f! W$ k" y
    Uint16  MAX_CONV2:3;      // 6:4   Max number of conversions    序列2最大转换通道数
6 g( h4 b+ c. ?% u6 D8 Y    Uint16  rsvd1:9;          // 15:7  reserved
3 _! p4 A* x' L4 Z8 R};


2 E1 e3 q+ B9 Y: T  N4 }( C# ~! N8 j6 aADC信道选择排序控制寄存器% }1 M9 M" Z( S9 w/ J9 s& ~2 V
SEQ1只能使用ADCCHSELSEQ1和ADCCHSELSEQ2;AEQ2只能使用ADCCHSELSEQ3和ADCCHSELSEQ4
! F+ o1 [& l$ v. l7 C4 Sstruct ADCCHSELSEQ1_BITS {    // bits   description5 U& a. I" O( o4 y5 u2 j
    Uint16  CONV00:4;         // 3:0    Conversion selection 00
" d% D8 t1 X  |7 \6 u    Uint16  CONV01:4;         // 7:4    Conversion selection 01
5 Y# r: z  `2 ]* k9 k: L* @    Uint16  CONV02:4;         // 11:8   Conversion selection 02# ^$ t3 h2 m+ V& s
    Uint16  CONV03:4;         // 15:12  Conversion selection 03- I8 B1 b! D4 E+ ?1 V3 P/ e
};8 M" [9 S( y/ T- \( G5 @
struct ADCCHSELSEQ2_BITS {    // bits   description
5 Z5 s" Y) u8 \" q* `    Uint16  CONV04:4;         // 3:0    Conversion selection 04
- [8 u4 O- m; h8 ^  x5 w; R- o    Uint16  CONV05:4;         // 7:4    Conversion selection 058 a4 v0 O' G" i' @9 E# I6 r! z
    Uint16  CONV06:4;         // 11:8   Conversion selection 06, h$ j& v* _+ h, M9 o& e
    Uint16  CONV07:4;         // 15:12  Conversion selection 07
6 [* V9 z1 z3 D( z( n3 ?2 h2 l5 P- v};
( O: D. a" W- X2 v" D" {) sstruct ADCCHSELSEQ3_BITS {    // bits   description% P) i5 {0 e( G: D' j$ c8 N7 B
    Uint16  CONV08:4;         // 3:0    Conversion selection 08! I& L$ |# g+ t5 v6 ~# X- i  s
    Uint16  CONV09:4;         // 7:4    Conversion selection 09. `4 C  L# E4 P5 s1 s8 j
    Uint16  CONV10:4;         // 11:8   Conversion selection 10
8 u5 c8 b6 m8 ^8 P    Uint16  CONV11:4;         // 15:12  Conversion selection 11% c" I" S' \1 c
};: H3 U3 u8 Y7 R  ?
struct ADCCHSELSEQ4_BITS {    // bits   description
6 B9 v7 Q% u- |5 s" ?4 l" J* `7 {    Uint16  CONV12:4;         // 3:0    Conversion selection 12
0 @  N+ m0 Y, ?! Y7 \* `5 o    Uint16  CONV13:4;         // 7:4    Conversion selection 13: s; L8 m: O7 y# n/ E. `9 C' T
    Uint16  CONV14:4;         // 11:8   Conversion selection 14
! [4 u& K# n( F8 i2 L1 \1 ]; a2 `    Uint16  CONV15:4;         // 15:12  Conversion selection 15
0 U0 _4 h( `) |};

3 @; [9 p8 W4 M( H' U
控制寄存器3
" |* g) @5 K8 Hstruct ADCTRL3_BITS {         // bits   description! f' i; S# w% z3 k. ~3 u  w
    Uint16   SMODE_SEL:1;     // 0      Sampling mode select  采样模式选择
- T7 j) f. q. l    Uint16   ADCCLKPS:4;      // 4:1    ADC core clock divider  ADC时钟分频器
& e8 B) K& E  S0 F( K, }    Uint16   ADCPWDN:1;       // 5      ADC powerdown    ADC断电???, |; S$ e; x, s  ~) q6 M
    Uint16   ADCBGRFDN:2;     // 7:6    ADC bandgap/ref power down  ADC参考/带隙断电  ???* N4 E  _& v: t- P% I
    Uint16   rsvd1:8;         // 15:8   reserved
, h; Y3 v% z$ x0 M};

- o: n% H! `- r6 r& p( l
状态寄存器
* K# k+ ^; W$ J  M3 q- @7 ~9 g9 @struct ADCST_BITS {           // bits   description
6 s. h* s5 ~$ X    Uint16   INT_SEQ1:1;      // 0      SEQ1 Interrupt flag   序列1中断标志) X4 I/ P% k! [' o
    Uint16   INT_SEQ2:1;      // 1      SEQ2 Interrupt flag   序列2中断标志
- B1 I! }2 h) f! l+ L  E' x( ^. K    Uint16   SEQ1_BSY:1;      // 2      SEQ1 busy status      序列1忙标志8 o6 |1 s% f  v  R
    Uint16   SEQ2_BSY:1;      // 3      SEQ2 busy status     序列2忙标志
7 q$ C" C4 R) Q& ~5 e    Uint16   INT_SEQ1_CLR:1;  // 4      SEQ1 Interrupt clear  清除序列1中断标志& X9 k( o% W: g' e9 Q, H# r, g
    Uint16   INT_SEQ2_CLR:1;  // 5      SEQ2 Interrupt clear  清除序列2中断标志0 ?0 H) @9 z% s" ?2 c
    Uint16   EOS_BUF1:1;      // 6      End of sequence buffer1   序列缓冲器1结束! y. y( k( G2 u; d1 v# _
    Uint16   EOS_BUF2:1;      // 7      End of sequence buffer2  f3 u" b! J/ m, ^9 p
    Uint16   rsvd1:8;         // 15:8   reserved
7 J$ B+ k; u3 x8 k: j2 M9 D0 l};


4 t8 g! A9 q# G

% F9 `% |! v$ v/ W8 U- V! H+ w' v
struct ADCREFSEL_BITS {       // bits   description
; T* l5 s, e1 W4 aUint16   rsvd1:14;        // 13:0   reserved  % k$ B. e* E; ^$ N$ b
Uint16   REF_SEL:2;       // 15:14  Reference select   参考选择???$ G5 Q3 o- o7 U& W
};


- f/ u2 @. R. q4 vstruct ADCOFFTRIM_BITS{       // bits   description
( N6 D9 b5 J( E+ bint16 OFFSET_TRIM:9;    // 8:0    Offset Trim   偏移微调???9 h9 B1 ~& g- _# V
Uint16 rsvd1:7;          // 15:9   reserved
- O/ x9 N% Y; p4 g: J};


+ Q2 ]' W& P: r/ EADC寄存器
3 M4 h& H  G8 R# Bstruct ADC_REGS {
. S2 L; i" J8 r8 o# X2 `% q- O    union  ADCTRL1_REG       ADCTRL1;                   // ADC Control 14 i7 i* e1 e/ Z0 v
    union  ADCTRL2_REG       ADCTRL2;                   // ADC Control 2) J& c- x2 v7 ~& j
    union  ADCMAXCONV_REG    ADCMAXCONV;    // Max conversions
; w4 w( w; z" S- k- b7 y% n" ?    union  ADCCHSELSEQ1_REG  ADCCHSELSEQ1;  // Channel select sequencing control 1
# ^- e( h+ K/ ]    union  ADCCHSELSEQ2_REG  ADCCHSELSEQ2;  // Channel select sequencing control 2
6 J  w0 _2 s. M4 _7 a0 s: j% B    union  ADCCHSELSEQ3_REG  ADCCHSELSEQ3;  // Channel select sequencing control 3
/ g4 Y0 P' ]- Y7 \. C0 e1 W0 J    union  ADCCHSELSEQ4_REG  ADCCHSELSEQ4;  // Channel select sequencing control 4% E' T, ?$ k  N# A# o
    union  ADCASEQSR_REG       ADCASEQSR;        // Autosequence status register- q( B9 @9 U) \. Z: B* t
    Uint16                 ADCRESULT0;    // Conversion Result Buffer 0
, g$ J- P* T: i* G* _2 h    Uint16                 ADCRESULT1;    // Conversion Result Buffer 1' F2 ?& l% @% y: R
    Uint16                 ADCRESULT2;    // Conversion Result Buffer 2+ u3 U$ @# J3 p
    Uint16                 ADCRESULT3;    // Conversion Result Buffer 3
6 [; N' d+ b' _; b    Uint16                 ADCRESULT4;    // Conversion Result Buffer 4# k/ U$ _1 _/ V& _6 u
    Uint16                 ADCRESULT5;    // Conversion Result Buffer 5
1 a( O# m, J7 e! \+ r( [& o    Uint16                 ADCRESULT6;    // Conversion Result Buffer 68 {1 x" h# a6 d/ }
    Uint16                 ADCRESULT7;    // Conversion Result Buffer 7
% A0 C4 ?. b9 m7 ^    Uint16                 ADCRESULT8;    // Conversion Result Buffer 81 L* |  S9 K; ?
    Uint16                 ADCRESULT9;    // Conversion Result Buffer 9" X9 @/ [5 m0 ]- ]- m+ P) o8 {
    Uint16                 ADCRESULT10;   // Conversion Result Buffer 10* i# O, H, q+ `. U1 c: C+ H
    Uint16                 ADCRESULT11;   // Conversion Result Buffer 11
. y: r; z" i/ ^5 X    Uint16                 ADCRESULT12;   // Conversion Result Buffer 12; n9 `+ o+ f  V
    Uint16                 ADCRESULT13;   // Conversion Result Buffer 13* x1 h! `9 X- _1 o  R2 d! `  i
    Uint16                 ADCRESULT14;   // Conversion Result Buffer 14
7 d, v. a4 e4 D& J6 ^9 H: Y; h    Uint16                 ADCRESULT15;   // Conversion Result Buffer 15
, s, n- D  |4 M9 M" [    union  ADCTRL3_REG      ADCTRL3;       // ADC Control 3  0 v& z- G4 X3 c. V
    union  ADCST_REG          ADCST;         // ADC Status Register
6 K2 c  z+ q. S+ {/ m    Uint16                 rsvd1;
! Z& r! P1 S7 u4 q- l    Uint16                 rsvd2;" {0 r0 S% ^. S8 d3 z  r
    union  ADCREFSEL_REG      ADCREFSEL;      // Reference Select Register
3 e2 P' d8 J, ~8 A9 K" ^9 W+ E    union  ADCOFFTRIM_REG   ADCOFFTRIM;    // Offset Trim Register
0 c' E# r+ ?$ i1 z+ U) K};
& f1 C# T7 I3 K( B( r1 Xstruct ADC_RESULT_MIRROR_REGS" V5 R3 U) P$ K1 b1 M
{: X$ H& C( }- P& \$ o, j  U1 l
    Uint16                 ADCRESULT0;    // Conversion Result Buffer 05 @. a+ a" F+ b* |( H
    Uint16                 ADCRESULT1;    // Conversion Result Buffer 16 c( e3 E1 R2 {* a- f
    Uint16                 ADCRESULT2;    // Conversion Result Buffer 2
* C0 Q' l1 d% f1 Q) n/ X" n' D    Uint16                 ADCRESULT3;    // Conversion Result Buffer 3. P  b" Z8 C8 a, w' E' ^( T
    Uint16                 ADCRESULT4;    // Conversion Result Buffer 4
8 o' o4 n6 a/ g, V5 ]$ f0 C    Uint16                 ADCRESULT5;    // Conversion Result Buffer 5
0 `1 n5 n( [: S    Uint16                 ADCRESULT6;    // Conversion Result Buffer 6
, K1 Z6 o! s1 D7 V    Uint16                 ADCRESULT7;    // Conversion Result Buffer 7& Y9 r7 I( d6 W5 G( v
    Uint16                 ADCRESULT8;    // Conversion Result Buffer 8
" y2 f9 _- n0 b' k8 M. S" Y    Uint16                 ADCRESULT9;    // Conversion Result Buffer 9
" R; v% B: g$ x( Q    Uint16                 ADCRESULT10;   // Conversion Result Buffer 10" q0 F+ F! {: V, o8 b  D
    Uint16                 ADCRESULT11;   // Conversion Result Buffer 112 Y0 B# Y1 m! [! ]1 p9 i
    Uint16                 ADCRESULT12;   // Conversion Result Buffer 12
& v! I6 u, ~# X0 u    Uint16                 ADCRESULT13;   // Conversion Result Buffer 13
2 V# U: G- f9 f1 U. A% l    Uint16                 ADCRESULT14;   // Conversion Result Buffer 14
9 e" b, Q$ s- ?- \8 R+ X  Y    Uint16                 ADCRESULT15;   // Conversion Result Buffer 15
: D8 }- ~  _1 Q! K" x: W};


/ p9 A5 ]) `* P! l6 n

1 g1 Z- c/ o) n! H9 T
ADC_Cal()常规步骤:/ F  f" W7 o9 j4 Q$ v1 \0 q
第一步:这个是TI公司提供的文件3 @) ~% y( l; Z. b0 Q
.def _ADC_cal                                                      ;定义代码段名称
" r6 [% L) b+ b.asg "0x711C", ADCREFSEL_LOC                         ;ADCREFSEL_LOC 是 ADC Reference Select Register, 地址0x711C
* V0 j( t, l6 v! u4 _2 n" S0 {& P) Y.sect".adc_cal", ^" W2 A4 a6 n  _# |! L8 b
_ADC_cal
# S4 z/ j% z1 n& n) U! ]MOVW DP, #ADCREFSEL_LOC >> 6        ;此时 DP = 0x7100 # }( ~6 E/ M" V4 z1 k
MOV @28, #0xAAAA                                ;地址 : 0x7100 + 28; `+ S) y0 k7 Z4 j  p
MOV @29, #0xBBBB                                 ;地址 : 0x7100 + 29# ?5 I5 ]# {2 J: I
LRETR
/ g# Q) f$ w: k; e1 `第二步:为 ADC_Cal() 添加命令文件 6 e' ~4 g- @- {
MEMORY
0 j6 h+ Y, p% z1 ]& I, e{4 G$ }8 p* U8 ~* w1 F
PAGE 0 :
  o. p) }2 e+ M' W8 E0 r+ d5 b8 }$ O...
. W3 o1 g- t* [ADC_CAL : origin = 0x380080, length = 0x000009& g, x" H' I8 \2 w) i( B  |0 K
...' v8 ]3 w( }5 g
}
/ o% @6 ^$ B6 \6 S- `! @SECTIONS
, d: e  l, o6 ]9 B" d, P1 O% }{1 Z+ N$ s9 u+ o' y2 `6 D0 o! ?
...
& F8 e9 g: ^1 u& P0 m' _  U.adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD
: _0 m7 H; s( _' T$ b* @...
; g0 s1 R% F- z  N9 U: l& A}
1 |9 |, Q" u1 L8 }+ G* ~第三步:在使用ADC前要声明ADC_Cal(),并且在使用ADC_Cal()之前要使能ADC高速时钟。
& I3 m1 B) Y3 Sextern void ADC_cal(void);; N! U% R: A8 W* d

* Q4 G. |/ o6 t8 E$ ]" F" PEALLOW;                                                      //允许对受保护的寄存器进行操作
, O2 C/ ~6 n$ A9 BSysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;  //使能时钟
" Q" g4 c8 ]& K. o+ y6 D, }8 ~9 \+ bADC_cal();                                                    0 l3 Q- l) J' z8 x
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 0;  //关闭时钟
* x# g( c1 X( K. B- l# c2 v2 f2 ?, REDIS;                                                            //禁止对受保护的寄存器进行操作


% t* E7 n. E+ c8 S( [1 Y9 PADC转换软件步骤:
3 I! f% w! J5 Q1 a' r" _初始化DSP系统;  
; g1 }  I5 n+ C, s) j设置PIE 中断矢量表,
3 p* T0 P$ T" v, A9 D初始化ADC模块;
' e6 Q# I5 ^. c. x7 d: u6 L5 H  l  Z: H将ADC中断的入口地址装入PIE 中断矢量表中,开中断;   a; G  O% K9 ~3 Q
软件启动ADC转换;   b/ e; K+ Z9 Q
等待ADC中断; / `* X0 q6 G3 D# A3 C; S# p; X' c
在ADC中断中读取ADC转换结果,软件启动下一次ADC中断。

该用户从未签到

2#
发表于 2021-12-2 13:09 | 只看该作者
每次采样/保持都有复用的8通道

该用户从未签到

3#
发表于 2021-12-2 13:09 | 只看该作者
序列发生器可运行于“启/停”模式,从而实现多个“时序触发器”同步转换

该用户从未签到

4#
发表于 2021-12-2 13:09 | 只看该作者
建议保持针对模拟电源引脚的连接

该用户从未签到

5#
发表于 2021-12-2 13:10 | 只看该作者
当ADC未被使用时,为了达到节能的目的,请确保到ADC模块的时钟未被打开
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 23:21 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表