返回列表 发帖

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

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

1.1.
7 B+ q! _/ j- N嵌入式开发联盟
概述
W90P710计时器模块包括2个信道,TIMER0TIMER1,允许用户容易地实现一个计数计划。每个信道有独立的时钟资源。输入时钟被一个8bit分频器分频并且随后被一个24bit减计数器引用。当计数器减数到0时,如果中断启动了的话定时器将声明一个中断请求。一个普通的软件计数器计划是用来设置一个软件计数器,并在每一个中断发生时加1给它。
" @% H# P5 C, a嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
  ^/ A- W% n, v; ?& i. n/ a. pmcuos.com一个普通的定时器控制器有以下几个特征:嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! _1 I  q( c% h+ J
l本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。$ s+ n1 x9 \$ h
AMBA APB接口兼容
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 _. f- }5 ~2 ?, k6 ~& E
l
3 Z/ i, D' M+ v' ~5 m; h$ }嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
兩个带一个8bit分频计数器/24bit减计数器和一个中断申请的信道

# G, k& P/ |: b$ Y; a5 f" Al- 嵌入式底层驱动开发技术学习网站; G2 _1 h3 `1 v. v; N
对每个信道的独立时钟资源
嵌入式开发联盟3 q" N, [+ `5 V0 S, \+ e% ?7 g
l
2 r- k: D- V0 u/ C! f! [. B) d嵌入式开发联盟
最大不中断时间 = (1 / 25 MHz) * (256) * (2^24), if TCLK = 25 MHz
$ Q3 F8 H% i+ o0 u( \! z4 M3 S
- 嵌入式底层驱动开发技术学习网站) `! P' d4 I0 ^+ j6 d' P. v4 L9 x
定时器模式也包括一个看门狗定时器。如果系统出问题时,它支持系统重启。这是保护系统免受无限长时间的挂死。看门狗定时器是一个带可编程超时间隔的自由运行的计数器。当特定的时间间隔超时时,它声明一个中断来通知软件去重启计数器。如果在512WDT时钟内计数器没有被重启,看门狗定时器将产生一个系统重启信号来重启整个系统。通常,如果看门狗定时器使能的话,程序会执行一个任务来周期性地重启计数器。
% @5 ]9 R9 `8 v" m8 w! ?0 Xmcuos.com
4 K( D% V8 Y3 Hmcuos.com

0 `, @& t4 w5 [- o嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
: [2 f$ g4 G8 p) q# Q6 }7 M7 T嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

: `$ n; ?; @! H嵌入式开发联盟 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习, I! C8 z+ c1 @# |
1.1.- 嵌入式底层驱动开发技术学习网站0 p8 Q( N5 \5 K- k4 H) }
寄存器映射表
R : 只读, W : 只写, R/W : 可读可写
# J. b8 O4 ~! V4 {' b

Register本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。0 j" ?8 l1 a& k$ x& v
Address嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 w* w: f# ~2 a: i# g# z9 J: z
R/W/C
5 @7 C7 k& v8 L; i3 ?5 \嵌入式开发联盟
Description* u3 j' l$ A+ d+ `! o
Reset Value嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习  _+ }* r0 L. s' I4 E5 F
TCSR0
$ x1 ?5 u" c! g8 h0 h4 S0 q嵌入式开发联盟
0xFFF8.1000
. A; k) k; `4 r, F! ^/ u嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
R/W
! e& t1 @; p0 ?7 R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
Timer Control and Status Register 0
" p) J/ W4 m4 \4 ]& J, p$ c
0x0000.0005
( Y' d3 v! X% G2 t4 T嵌入式开发联盟
TCSR1
/ k7 Z. r7 [2 ^嵌入式开发联盟
0xFFF8.1004
: \0 {. {; y7 @- 嵌入式底层驱动开发技术学习网站
R/W嵌入式开发联盟# B2 x' \. h8 h2 L# r3 M
Timer Control and Status Register 1嵌入式开发联盟: u% H% [7 _) g4 d- `1 ?$ ]
0x0000.0005嵌入式开发联盟  L: G& ~$ b: ~
TICR0
/ V: }8 m7 D6 H嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0xFFF8.1008
4 \1 V; m. l- y" F! R* U$ d嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
R/W- 嵌入式底层驱动开发技术学习网站( N7 J8 ]  {& ^) q1 y
Timer Initial Control Register 0嵌入式开发联盟: I" G5 j# A( V  @1 D' `& q- x; }
0x0000.0000
0 ]" K$ G( u; U! x- 嵌入式底层驱动开发技术学习网站
TICR1
; ^; M" r, H  S+ |+ `1 i- 嵌入式底层驱动开发技术学习网站
0xFFF8.100C* R( t$ ?) O# e& U/ X: \
R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4 k# L0 R, o, D# e/ r7 N
Timer Initial Control Register 1
( R! E( t  V' q0 r; ^% s1 p* v6 ?5 Z嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0000
1 }: h1 }. }; {* x# _. A. rmcuos.com
TDR0嵌入式开发联盟7 g, u7 v1 }0 Z" F5 Y5 [  b& ]
0xFFF8.1010
, D* R, R% n/ Z5 _' A3 ~# P# Imcuos.com
R
6 G$ r( H- J# @3 |0 w. a6 j" ^嵌入式开发联盟
Timer Data Register 0
+ q9 S  E$ d0 o  J1 G7 G& @
0x0000.0000; @) v7 J/ p6 ~8 w3 O
TDR1
0 l: p0 p" ^6 d5 {% g# zmcuos.com
0xFFF8.1014
' t1 T) G( H; {嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
R- 嵌入式底层驱动开发技术学习网站/ A5 j, R/ e+ t4 s
Timer Data Register 1嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% o5 A9 S& J5 Q8 e7 G$ S5 f
0x0000.0000本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。2 D2 a9 y* F- A$ ~% U/ D
TISR
7 I% @) b. _% i+ D5 h5 y- 嵌入式底层驱动开发技术学习网站
0xFFF8.10181 C( R9 X! h3 p5 v2 \* Q3 V8 g, J* S4 {
R/W
: w* H0 O) D) I3 n  Y- G$ W( J嵌入式开发联盟
Timer Interrupt Status Register嵌入式开发联盟" e" K  |, L& N! l
0x0000.0000mcuos.com* |- I5 M$ h$ @  F( l) Y: }
WTCR
+ D! s! |  K" \$ z本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.101C& W; I0 P# o  S3 k6 m
R/W嵌入式开发联盟! s3 U9 y& M* X( m8 S& y4 ]8 J
Watchdog Timer Control Register
( I1 ]3 ?; e& G: @  E( j- 嵌入式底层驱动开发技术学习网站
0x0000.0000
' e6 k( e7 V& X嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。' e5 n% D- P6 m! U; x2 p

2 F2 l4 @2 C4 ~9 b7 m1 {mcuos.com) @. E/ v2 h) p$ R
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习/ t' Q& d/ ]; {8 K9 k

* s' Z( Q4 g% r' Y. c' b& j嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.2.- 嵌入式底层驱动开发技术学习网站/ ~! P* s3 Q8 y" W$ D( N/ v# i* M) ~
程序设计指南
1.2.1.mcuos.com# g. P/ Q2 H. O3 M
普通定时器中断频率

$ |4 J+ V  B+ s- w' y6 [0 jmcuos.com定时器中断的频率取决于以下等式:
+ q# v! y, c, v3 Y本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。Freq. = Crystal clock / ((pre-scaler+1) * counter))
. E( {  v2 c) w1 s6 b  M
" W+ f. A, m/ z$ s- Y5 ^嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习对于W90P710,晶振时钟输出是15 MHz。根据这个等式,用户可以决定分频器和计数器的值来得到想要的中断频率。- 嵌入式底层驱动开发技术学习网站7 I1 k  m# M/ ?  p, B" T
定时器参考设置值:嵌入式开发联盟8 A% i, x: d- o) g% u7 y+ j% G1 Z) {
Frequency (1/sec)
6 L1 B3 o' ]# c$ a$ v6 o
[Pre-Scalar]本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 s7 Q! B: e5 }  Y- n. L& Z2 v
[Counter]
; W- a- w# S5 S' S: V嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
18
) W8 Q0 v0 U# r* e4 ~* j( Imcuos.com
0mcuos.com5 L" ~' E* Y  _/ ^. s$ y
0xCB735嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习, K. J! U$ T& n- E: l3 n
40
( o' g+ x  `) V+ u3 \/ [嵌入式开发联盟
0嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习  [8 W9 ~4 ~; T; T; U
0x5B8D8本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。" i5 b/ h/ c* ^% e& @% Y" e
100
3 s$ Z  K2 S$ i8 kmcuos.com
0
. G" k- i+ \2 p$ x) D/ ^( ~- 嵌入式底层驱动开发技术学习网站
0x249F0
$ f* n' d. ~% B5 j. C) o嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。2 \$ ^4 h. u0 B! @
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ Q+ y7 @  G$ D' \  t& B
1.2.2.
2 M! s  m: g3 R6 l2 }+ r# Y% U+ r' i
普通定时器初始化

: d6 ?  ^8 k1 g( N, a. I& u: f7 E在使能计数器中断前,驱动应该设置操作模式、分频器和计数器。定时器支持一次性模式、周期模式和翻转模式给用户来执行计数计划。+ b! B6 }2 n3 h7 l* K  K2 a3 V0 T
  • 在一次性模式下,中断信号一旦被产生将不会再次产生除非定时器以后被重新使能。
  • 在周期模式下,中断信号被周期性地产生。
  • 在翻转模式下,中断信号在每个50%周期由低到高或由高到低转换时被产生。

# y. X& }" Y: R8 Q( D4 }嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.1.1.- 嵌入式底层驱动开发技术学习网站) K/ O! g$ O& d( @
普通定时器中断服务流程

/ h& q& f7 W: z; B7 o- 嵌入式底层驱动开发技术学习网站一个公用的定时器中断服务流程很简单。它包括软件计数器并清空计时器中断状态。
7 G1 b' d1 A# w7 `! l; J- 嵌入式底层驱动开发技术学习网站 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1 E, B  i5 }; W: K/ i
普通定时器中断服务流程嵌入式开发联盟/ A8 M4 x. o9 l1 J3 c" N

$ H4 j" P) l5 q7 T本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
2 g  p* H7 o, b5 l/ v# o嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.1.1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& q- [; s& F) u  F3 J' K
看门狗定时器控制
7 c( l: g8 u  s) E
寄存器WTCR被用来控制看门狗定时器。WTR位应该在启动看门狗定时器之前就被设置。它确保看门狗定时器从一个已知的状态重启。mcuos.com2 t* u; z, q2 f: ]. @0 c
看门狗定时器重启时间(使用15MHz晶振)
( c  w9 q/ i0 B" U本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
WTIS[5:4]
! \& t3 R3 X7 T本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
Interrupt Time-out
3 f# u0 I" k0 N/ t0 }7 [嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
Reset Time-out- 嵌入式底层驱动开发技术学习网站$ a1 D( c* h' b9 i/ d
Actual time WTCLK = 1
, D* C" s& Q2 {  v/ _& n: s
Actual time WTCLK = 0
4 l0 j) l9 P$ t$ f嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
00
) S6 ~( Y. {: t& Z* U( Q, F% ]
214 clocks
% C0 T/ Z4 [1 H0 G! Z嵌入式开发联盟
214 + 1024 clocks嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 x; p- `3 D2 @% i! [+ r1 f
0.28 sec
6 G! g  |, G$ m4 [$ m! N2 X$ w
1.1 msec
$ l, }5 l/ S3 s# p' j- J* I本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
01
! W& d8 H; ]! z7 Y. T/ M本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
216 clocks本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- j. N" v$ W: N
216 + 1024 clocks
% A2 W+ N# B/ ~  Y嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
1.12 sec
) ^+ a/ ^- _- B$ n8 Kmcuos.com
4.3 msec
  n, D1 D+ k) {: ]; Q+ a3 l嵌入式开发联盟
10本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 r0 x1 k9 {5 |( a
218 clocks
* Z! h" P4 [& W" e! _. b* v) N嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
218 + 1024 clocks
) V) X/ F7 D3 Q# B( J' _2 e本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
4.47 sec
! Q! q) |2 ^# b6 A3 T' `本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
17 msec
' A8 a9 c5 {8 A' i! X- 嵌入式底层驱动开发技术学习网站
11本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。6 J3 f  o5 `5 }$ `& U! g& t' Q8 t7 ]
220 clocks
$ A9 L! |* @$ F# @1 u; k) O0 t嵌入式开发联盟
220 + 1024 clocks
% e' p7 O. H% A嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
17.9 sec嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习, I$ j) B" B1 R3 k: b
70 msec嵌入式开发联盟4 e, T( `$ u# r! w% c  R
( L8 Q. X, P4 w# L) X
1.1.2.
; _8 z1 U' [( l" U& W4 O7 S- {嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
定时器控制的示例
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习$ c; @! D- d5 c$ j2 c. R/ q) }
1.1.2.1.
0 V$ |" p" W/ m. O嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
设置普通定时器频率
频率:100/每秒(外部时钟15MHzmcuos.com6 J6 {; d* h% \: u7 L
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。0 G' x$ B4 G* l/ s4 h
命令:
' Y" f! g! H: Y6 N3 S5 |; d1.
" J7 h" w) r: K# `; {嵌入式开发联盟
0到寄存器TCSR
  S! G* a* g6 a  R嵌入式开发联盟来禁用定时器。

! Z% q+ x$ a% d3 H嵌入式开发联盟2.嵌入式开发联盟2 o/ k5 D: T, Y! H2 I- T# y/ l
0x249F0到寄存器TICRmcuos.com1 ~- X/ g, N: ?+ P1 _4 ^# g) Y; R
来设置定时器初始化计数。

4 X/ j' L/ Z* `嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3.
5 k1 R9 R0 {# a/ g) s/ k$ L# |- 嵌入式底层驱动开发技术学习网站
0x01TCSR[28:27]来选择周期模式。

+ ?* s; e$ G4 {* U4 f嵌入式开发联盟4.' r( r: V* _7 v& ~0 [
1Write 1 TCSR[30]TCSR[29]- 嵌入式底层驱动开发技术学习网站/ u% V3 R& D" O2 C4 y
来启动定时器计数器和定时器中断。

5 x) R1 o( w' c( o4 L1 g嵌入式开发联盟5.
# ^& \: N1 B! Z. c' ?本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
当定时器产生时,检查寄存器TISR
4 r4 j0 j" M, G/ F' m- 嵌入式底层驱动开发技术学习网站并写1来清空特定的定时器中断标记。
3 ?& K4 w& l: U' P
- 嵌入式底层驱动开发技术学习网站9 r6 x. t- n( J) W

6 i1 B2 R' j4 N2 @2 p- n! O+ k' j嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
, R# U! z9 p! R+ C
% L9 W8 l  c" v- 嵌入式底层驱动开发技术学习网站1.1.2.2.
7 S, p, c2 a5 m3 K( b9 m3 f$ c嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
执行看门狗定时器重启功能
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 q; t! S8 k) T, |
- 嵌入式底层驱动开发技术学习网站" q7 y  J2 \' o1 M
重启间隔:0.28嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习: v. I4 C6 @& Z9 e
嵌入式开发联盟! G8 v0 `2 c2 y( Y' G8 f9 h
命令:本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 I7 @' o  N3 S; ]! j: ^. N
1.7 K8 u0 Y  w5 V% _* ^
1WTCR[0]

( A: q  [1 E! K+ L/ \2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 J( ]; }, D& H! \/ U5 Q0 S6 Z
0x4C3到寄存器WTCR嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习: u+ C3 L4 j) C. i0 u1 g
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。0 o& ~6 j6 s9 p# K  N, |+ U
3.
9 T6 l: F: B2 Z/ S
当看门狗定时器中断发生时,写1WTCR[3]WTCR[0]来清空看门狗定时器中断标记并重启看门狗定时器。
嵌入式开发联盟: D; Y" ?0 I: |: V, X- b
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 E& O! ~1 D: U6 H! Y) Y6 L

  K: t. a) G/ k" \! u) N嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

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