返回列表 发帖

[原创经验] 华邦w90x700系列计时器/看门狗控制器

[原创经验] 华邦w90x700系列计时器/看门狗控制器

1.1.
) Y% Z5 M( t" \2 L; F- 嵌入式底层驱动开发技术学习网站
概述
W90P710计时器模块包括2个信道,TIMER0TIMER1,允许用户容易地实现一个计数计划。每个信道有独立的时钟资源。输入时钟被一个8bit分频器分频并且随后被一个24bit减计数器引用。当计数器减数到0时,如果中断启动了的话定时器将声明一个中断请求。一个普通的软件计数器计划是用来设置一个软件计数器,并在每一个中断发生时加1给它。嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习$ M9 B+ _) T) o5 l

' i0 `6 {8 y% R+ s$ H一个普通的定时器控制器有以下几个特征:' o) o/ M* H) x8 h0 \7 F
l
+ w9 h& v! j4 @# }& D* l2 w嵌入式开发联盟
AMBA APB接口兼容
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习5 ?2 b8 s! l# M* X6 U
l嵌入式开发联盟, X3 y2 I$ E2 O( X1 G$ s
兩个带一个8bit分频计数器/24bit减计数器和一个中断申请的信道

# E9 M8 D8 ], P0 Y6 F$ W嵌入式开发联盟l( Z) t  g! A, M, \( B
对每个信道的独立时钟资源
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。% N) c2 M# O; R, W6 V1 u% }8 ^
lmcuos.com+ }. H0 w1 Z& \% t/ @
最大不中断时间 = (1 / 25 MHz) * (256) * (2^24), if TCLK = 25 MHz

5 h% u: m1 |* |- g" E: D) }2 Z- q; |嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习' H9 _; c7 \* ]* z; h
定时器模式也包括一个看门狗定时器。如果系统出问题时,它支持系统重启。这是保护系统免受无限长时间的挂死。看门狗定时器是一个带可编程超时间隔的自由运行的计数器。当特定的时间间隔超时时,它声明一个中断来通知软件去重启计数器。如果在512WDT时钟内计数器没有被重启,看门狗定时器将产生一个系统重启信号来重启整个系统。通常,如果看门狗定时器使能的话,程序会执行一个任务来周期性地重启计数器。嵌入式开发联盟, @3 C; o5 U1 e! C
& D4 o0 C, z9 G) x
mcuos.com/ K  o6 K' I) C! V
- }  u( J6 J9 \

# \/ C: ]$ Q* b/ S; C mcuos.com2 h. G  |7 k. g
1.1.6 ~- C) S+ V* @1 O/ \$ K0 d
寄存器映射表
R : 只读, W : 只写, R/W : 可读可写本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 C$ G7 j2 Y1 d$ y! T+ }0 I0 D4 o$ M

Register
* d: a) D; ?/ Y# n& Y9 W2 G5 A3 @嵌入式开发联盟
Address嵌入式开发联盟1 [' ]+ V$ v/ B
R/W/C
' U9 q# F0 w# _& }" J0 N3 g8 V嵌入式开发联盟
Description
6 r* f4 X7 I8 `9 I) l0 P嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
Reset Value嵌入式开发联盟$ I9 M8 c; x# o
TCSR0mcuos.com9 K4 t  ^9 D  o* W  K
0xFFF8.1000
& c; S% s" t4 d; U1 s. [) Jmcuos.com
R/W3 [  A  r# |' _& n6 r* V
Timer Control and Status Register 0
, A/ a9 O. r( x( [0 f1 {嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0005
; P) M5 Y5 Y2 j% D/ F
TCSR1嵌入式开发联盟, b2 n, L& V5 l3 W3 {# c& j
0xFFF8.1004
1 O, m. R5 X& U; T  |4 t9 I嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
R/W
" h/ {6 F6 Q$ }: y# Umcuos.com
Timer Control and Status Register 1
# Z# H0 t$ O1 M0 F9 x  q
0x0000.00053 l% c+ m: C% i  c5 K: ~
TICR0  ]+ K4 H# _+ t  n
0xFFF8.1008本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。5 ^4 _+ D1 C: s' B+ ~% X8 L
R/W
* x* C  a$ M7 [- z
Timer Initial Control Register 0
1 `5 `# E  p( d本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0000嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1 b( w+ P* e0 p# I  A; a
TICR1
* B+ \, s. }3 C" O4 _/ c本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.100C- 嵌入式底层驱动开发技术学习网站- U# k! f" B' y6 O: o$ P* X1 J
R/W8 w+ p5 Q0 g: m/ U! c
Timer Initial Control Register 1本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。) z" a1 S  z( i) H+ C
0x0000.0000
' C2 T5 b; ?1 z6 e+ Emcuos.com
TDR0嵌入式开发联盟7 e4 |6 x+ @5 |7 m, p1 n
0xFFF8.1010mcuos.com1 b9 F$ F+ J7 A$ ]; ?: a! A$ l
R- 嵌入式底层驱动开发技术学习网站- M( G0 _8 z- G9 u/ X
Timer Data Register 0本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。% u) `$ o- e, R$ ]
0x0000.0000
. S5 ~) X2 i8 I1 ]- 嵌入式底层驱动开发技术学习网站
TDR1
+ R8 @, u' y: V6 Smcuos.com
0xFFF8.1014本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。* b. L& ?( ^6 ~
R
1 B/ A5 n6 W  Z9 G3 d0 L
Timer Data Register 1
" w& x6 g2 r0 R( k+ |本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0000mcuos.com  @! A/ v- |9 ?1 y4 o
TISR+ A6 n# d$ v9 F$ L9 O' K- H
0xFFF8.1018本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。/ ?0 Y$ M7 Q( ^( O& t; t) @8 n
R/W
- [) _4 [7 I0 \( S+ n嵌入式开发联盟
Timer Interrupt Status Register嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4 V/ D2 L4 I4 T2 t& B
0x0000.0000
9 S, \* e& W% j: I6 Q  U
WTCR- 嵌入式底层驱动开发技术学习网站8 G! ?: n" Z' f/ k/ s  D7 B
0xFFF8.101C
- e9 l% }! {1 k, x- ~* }2 pmcuos.com
R/W
2 ~! }0 T% [" c1 P4 T" {7 a  G嵌入式开发联盟
Watchdog Timer Control Register
7 ~9 m& V- h' f- f1 C3 @mcuos.com
0x0000.0000
1 q! w: B6 C8 j7 Q- 嵌入式底层驱动开发技术学习网站

嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习6 x3 b% ?% f+ B5 k  L$ g) {

: }" U: U/ J% Y3 X& j1 D# F5 z嵌入式开发联盟4 Y8 e2 J, q5 }) p5 D( @

3 {: z$ n# f# k$ I7 r$ [! _嵌入式开发联盟 嵌入式开发联盟& B6 n* z0 Y/ @7 i
1.2.嵌入式开发联盟2 i- ]3 `/ A% ]) m  P" O
程序设计指南
1.2.1.
5 W0 Q0 S. x8 f1 a" W  {- 嵌入式底层驱动开发技术学习网站
普通定时器中断频率

6 v4 m; j% e4 F7 a嵌入式开发联盟定时器中断的频率取决于以下等式:
1 X- M3 A; h% ?mcuos.comFreq. = Crystal clock / ((pre-scaler+1) * counter))
. X. g3 f: F1 b* B4 R1 D: \% N& Fmcuos.com
7 b) A+ ?' {( s4 P9 N嵌入式开发联盟对于W90P710,晶振时钟输出是15 MHz。根据这个等式,用户可以决定分频器和计数器的值来得到想要的中断频率。本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。5 ~! G* M5 |7 n- N" `. ^  c
定时器参考设置值:
$ E' H6 ~4 P; ?  s4 k3 g本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
Frequency (1/sec)
4 R0 c6 Q' G% {& N8 [2 T  d本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
[Pre-Scalar]嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& b% u# q% f  @: p
[Counter]嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习8 X/ m1 i5 L# ?! e; p% C7 ?
18
+ }. k$ b+ M+ W1 |: J' }) s
0嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% C( ?+ ]8 p7 t7 y+ e- s5 r
0xCB735嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4 q2 ?9 n5 b& B
40% _4 u* v' L! P0 O9 c# V
0嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习. ~% q1 E1 @, h2 s2 a  ~
0x5B8D8
  H/ K/ S3 o" ~嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
100mcuos.com4 u0 H5 {3 @$ u0 {* \: A
0
6 y. N$ H3 h3 e- O
0x249F0嵌入式开发联盟! J3 `5 f7 }/ ~

: v9 @2 z/ H: O# z5 \& amcuos.com
+ ^7 d; Q3 D% F' d! C0 G7 f2 }* A1.2.2.( t9 Q; D7 u& E8 w( E: d
普通定时器初始化

6 T2 _' D: S3 E在使能计数器中断前,驱动应该设置操作模式、分频器和计数器。定时器支持一次性模式、周期模式和翻转模式给用户来执行计数计划。' U* S% t' P: |! x$ Z7 |6 E
  • 在一次性模式下,中断信号一旦被产生将不会再次产生除非定时器以后被重新使能。
  • 在周期模式下,中断信号被周期性地产生。
  • 在翻转模式下,中断信号在每个50%周期由低到高或由高到低转换时被产生。
嵌入式开发联盟. I* E7 W/ v& b- j
1.1.1.. w8 j& u4 B0 x, c- m; P% e& H+ J
普通定时器中断服务流程
mcuos.com9 w$ K9 C4 c# I) a8 g5 @8 \$ s
一个公用的定时器中断服务流程很简单。它包括软件计数器并清空计时器中断状态。
! ]. U2 O6 a6 j' m - 嵌入式底层驱动开发技术学习网站! a3 S# Q, q* ^$ H# n
普通定时器中断服务流程
. G' d  y' W/ {; ?; {9 p- 嵌入式底层驱动开发技术学习网站mcuos.com/ A& z8 V; Z$ l9 h. l
嵌入式开发联盟6 n  l* }. \5 Q5 C( U
1.1.1.
1 n! Z0 ^4 p" {) x1 y* I- 嵌入式底层驱动开发技术学习网站
看门狗定时器控制

" _$ i  A- V4 ?! e, e6 _嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习寄存器WTCR被用来控制看门狗定时器。WTR位应该在启动看门狗定时器之前就被设置。它确保看门狗定时器从一个已知的状态重启。本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。( }1 f& u+ v1 V3 x  P
看门狗定时器重启时间(使用15MHz晶振)嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 l/ Q6 `! b# H$ T# S, ]8 i; d
WTIS[5:4]
3 R3 T4 Y" Q  cmcuos.com
Interrupt Time-out- 嵌入式底层驱动开发技术学习网站5 k0 D8 E) d4 ?. }0 @0 Z& q+ n6 {
Reset Time-out* B9 x6 A. ]* I3 X& u, B
Actual time WTCLK = 1
7 b% [, L) ?* m- 嵌入式底层驱动开发技术学习网站
Actual time WTCLK = 0本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。# p& @% w2 t! M6 u" j. z2 ]" a
00
9 t( {+ Q8 N: a4 z( `嵌入式开发联盟
214 clocks嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习( J  A5 p- @, {7 n3 @3 t/ |
214 + 1024 clocks- 嵌入式底层驱动开发技术学习网站% J0 i4 W9 p% k+ T/ s
0.28 sec嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; ?2 Q( Z' E4 @: P9 z( X6 m
1.1 msec2 s  T: a  h5 @5 U
01- 嵌入式底层驱动开发技术学习网站- G. w: m7 I; ^; l% c! A+ g
216 clocks嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% {. }+ H: h2 a9 N
216 + 1024 clocks
- b1 c1 q- Z% G; i% q' a5 p' v
1.12 sec
% p* P6 @' K# i% ~6 q, c嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
4.3 msec* ]' Z% }: ]$ j
10嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习. d' C8 {, s2 Q; u6 u' }
218 clocks嵌入式开发联盟1 O! a# E6 h9 [9 R$ T6 S. _
218 + 1024 clocks本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 a5 c  `3 ]6 s4 \  E
4.47 sec嵌入式开发联盟2 o: E  n; h; P
17 msec
% I9 q7 Y% e/ m; Z0 V5 T4 U嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
11
+ f- h" g. e+ g; E
220 clocks嵌入式开发联盟; B0 a9 W+ C# s! G
220 + 1024 clocks嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习; Y3 _, E8 L3 L9 r
17.9 secmcuos.com0 |( a* Z( F9 i1 S! J7 Q3 M
70 msec
2 m: S) _$ X& q7 {嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
- 嵌入式底层驱动开发技术学习网站4 e, U* W+ Y. Q" \! j0 @9 V8 o3 a# S
1.1.2.
4 _6 q; Q1 J5 [& tmcuos.com
定时器控制的示例

+ d( [; G% \* ?4 m$ \7 y3 U嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.1.2.1.
* w  C" x/ _' G& {$ l  S% C7 z嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
设置普通定时器频率
频率:100/每秒(外部时钟15MHz本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, V2 d& r$ a; u, W( k

# K/ a' i% b2 s8 ~嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习命令:
3 n9 b* f0 o: n% P- b; \) T0 H# B/ i嵌入式开发联盟1." p; D  O" A$ d0 }0 W- t) ?8 r
0到寄存器TCSR嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习' ]# a7 ?6 X, g+ z
来禁用定时器。
mcuos.com7 M; Q" ^6 @) m/ r/ Y
2.
; y3 i  S7 B. z嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x249F0到寄存器TICR嵌入式开发联盟4 l4 B$ G9 I& H$ x0 q9 J0 }
来设置定时器初始化计数。
mcuos.com, d7 G% r7 Y, r1 U" N5 Q
3.
& V/ G- }1 J: s4 |嵌入式开发联盟
0x01TCSR[28:27]来选择周期模式。
mcuos.com& W$ x6 t  ^5 l% ~! Q- o
4.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1 {7 }4 q9 |5 n0 v  ^6 ^' f8 p6 z' H
1Write 1 TCSR[30]TCSR[29]
- M, e" p7 X( E; b% x0 ^9 v- 嵌入式底层驱动开发技术学习网站来启动定时器计数器和定时器中断。
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 m$ N( Y3 }: [& s% U* C
5.% E6 L1 X" m! ?
当定时器产生时,检查寄存器TISR
7 h( f$ Z) ^! f+ K9 Z嵌入式开发联盟并写1来清空特定的定时器中断标记。
mcuos.com. Z/ v5 J: v  \$ D+ t) l; g% t

1 A3 ~  V! X( m* B4 s/ C嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习mcuos.com8 u$ U. n! O0 D8 a, L$ [

! T" a8 C& i$ F' ?2 ?' \2 Smcuos.com
2 @. Y8 H1 v6 I嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.1.2.2.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习5 r! _  M0 Q' h/ u  `. g
执行看门狗定时器重启功能

/ X- I9 n1 q$ J9 i本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
2 P* \; F$ h' U& Y2 j+ s5 w' \嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习重启间隔:0.28# O: h1 _! x/ `
嵌入式开发联盟- |" G2 j! g# J6 {# }
命令:- 嵌入式底层驱动开发技术学习网站: R" J1 w) |$ [, D# T$ z7 A0 A
1.
: d+ |5 p9 d$ U: B  L4 N1 b! i
1WTCR[0]

9 Q' H; ]) j! H8 l% v3 G本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。2.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习: P: N$ V7 I' ^, M* ~: }8 F
0x4C3到寄存器WTCR
; x9 \6 f; t3 @mcuos.com

5 @6 Y" }2 v" {1 F: B3 fmcuos.com3.mcuos.com3 F# ?* L7 D% r# ~3 `; L
当看门狗定时器中断发生时,写1WTCR[3]WTCR[0]来清空看门狗定时器中断标记并重启看门狗定时器。
- 嵌入式底层驱动开发技术学习网站, V1 }! m0 I' L/ Q5 h) k" j
mcuos.com# H# k+ D# d0 a) l' Q
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 R* V/ P. A4 h) d  I" s) u. z
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

返回列表
网页右侧QQ悬浮滚动在线客服
网页右侧QQ悬浮滚动在线客服