返回列表 发帖

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

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

1.1.- 嵌入式底层驱动开发技术学习网站3 q$ Z2 a0 O+ n) n. ]" l/ s% v* v
概述
W90P710计时器模块包括2个信道,TIMER0TIMER1,允许用户容易地实现一个计数计划。每个信道有独立的时钟资源。输入时钟被一个8bit分频器分频并且随后被一个24bit减计数器引用。当计数器减数到0时,如果中断启动了的话定时器将声明一个中断请求。一个普通的软件计数器计划是用来设置一个软件计数器,并在每一个中断发生时加1给它。
4 ~3 B% K9 P- d" u" r# l嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 - 嵌入式底层驱动开发技术学习网站% g2 C2 l. V' F1 I* o4 a
一个普通的定时器控制器有以下几个特征:
2 x0 _4 ]% S5 j! [  |6 xmcuos.coml嵌入式开发联盟# q; E4 R5 |! k! U% f, o5 d
AMBA APB接口兼容

9 m2 o8 S  t' H! h嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习l
& M9 a# Z) U6 m) Q6 A4 ]: [3 ~
兩个带一个8bit分频计数器/24bit减计数器和一个中断申请的信道

! Z+ f6 w& l; Yl- 嵌入式底层驱动开发技术学习网站" D% ?' X% p2 C4 b! r7 d" m
对每个信道的独立时钟资源

( [& y. }% F& ~嵌入式开发联盟l9 M# O, P* f2 D. D
最大不中断时间 = (1 / 25 MHz) * (256) * (2^24), if TCLK = 25 MHz

9 h; X5 ]9 l% ^7 r- {  \mcuos.com 嵌入式开发联盟( q3 s* N+ @1 C/ \5 f" Z) `* W
定时器模式也包括一个看门狗定时器。如果系统出问题时,它支持系统重启。这是保护系统免受无限长时间的挂死。看门狗定时器是一个带可编程超时间隔的自由运行的计数器。当特定的时间间隔超时时,它声明一个中断来通知软件去重启计数器。如果在512WDT时钟内计数器没有被重启,看门狗定时器将产生一个系统重启信号来重启整个系统。通常,如果看门狗定时器使能的话,程序会执行一个任务来周期性地重启计数器。- 嵌入式底层驱动开发技术学习网站. \5 w3 o6 k2 z1 g' T9 p0 h& j

" c( m9 c9 S9 T- 嵌入式底层驱动开发技术学习网站

7 [) n: [  P0 G本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
, {9 {- ^; @% K2 [" _/ N/ E- 嵌入式底层驱动开发技术学习网站

7 D6 j& W7 c$ c$ Y5 m& j本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
3 t3 h5 r  k! }3 G) H! }; a  Y( {本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.1.
5 U) o4 U0 s0 b2 Q8 V8 p( v本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
寄存器映射表
R : 只读, W : 只写, R/W : 可读可写
/ g7 H5 N2 m0 v# l5 _

Register
5 I: h+ P8 e" f嵌入式开发联盟
Address
' d8 [5 @6 j+ L! @嵌入式开发联盟
R/W/C
& o) S3 r! G- u嵌入式开发联盟
Description
6 z+ I( v3 o. `& nmcuos.com
Reset Valuemcuos.com( A& U) h' n; f) y8 y
TCSR0
3 Y) y- k6 M0 |( c: m2 r4 A- 嵌入式底层驱动开发技术学习网站
0xFFF8.1000嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% X* W3 H2 K$ e, O
R/W嵌入式开发联盟! t0 T" L) N2 @. y/ f& c
Timer Control and Status Register 0
  E1 g) B  z4 y; @: P
0x0000.0005- 嵌入式底层驱动开发技术学习网站2 U2 E" y4 Q! U$ V
TCSR1mcuos.com. t2 V: z0 o: d+ t6 r
0xFFF8.1004
2 w5 c1 @/ m/ ^- d' z1 d7 _mcuos.com
R/W2 ~- o. [1 C; ?
Timer Control and Status Register 1
1 J. z- \( t9 c0 P& v- A+ d/ ]3 @: S本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0005
; O# o# A$ [4 c( {( |嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
TICR0
8 p# W+ P3 x) @+ q' y- 嵌入式底层驱动开发技术学习网站
0xFFF8.1008嵌入式开发联盟" O( e$ E1 I5 G
R/W
" n; k- g2 v. ^& n9 y( S; B本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
Timer Initial Control Register 0嵌入式开发联盟4 d- z1 @/ p0 T+ c- N& s' H- U
0x0000.0000
. F' O+ U/ P+ t) w* D6 |( g8 ]mcuos.com
TICR1
3 w8 U" Y& q( w0 L% F嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0xFFF8.100C
, u$ j. s( w# k0 J嵌入式开发联盟
R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习" c5 i9 S& j& a, J1 Z
Timer Initial Control Register 1
4 R2 I7 h% {! _" r
0x0000.0000
5 }8 F8 y/ V7 j( s% R; ^+ b: P3 a  c0 O
TDR0
" p" q3 i: G0 h- 嵌入式底层驱动开发技术学习网站
0xFFF8.1010
2 ~( S5 S& K8 z' p" A! Q嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
R
8 f+ ?6 ~* p  m) `嵌入式开发联盟
Timer Data Register 0
9 @$ i5 j' Q3 D: L. J; x; R6 q本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0000
6 a1 n! H8 ?8 `$ d6 [$ p; |3 i) w- 嵌入式底层驱动开发技术学习网站
TDR1嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4 O6 T0 Y4 M! T$ K, l
0xFFF8.1014
2 w+ a2 c/ A$ C& M1 H) {" N" ^mcuos.com
R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- A$ Z( m  e6 ]3 J
Timer Data Register 1本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ V8 v6 k5 r8 M4 N" p7 h
0x0000.0000
4 \2 Z0 T0 N; h8 o嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
TISR
, {4 @. k6 @& D- 嵌入式底层驱动开发技术学习网站
0xFFF8.1018mcuos.com" m8 u( {0 s; x- W+ ?& }
R/W
0 l& E1 v8 J1 s6 N# ^mcuos.com
Timer Interrupt Status Register
5 w  P+ f& g. K* U5 b5 y嵌入式开发联盟
0x0000.0000
+ r0 r* i( U3 kmcuos.com
WTCR
8 `+ B) Z0 D7 r. K嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0xFFF8.101C
! t' H' d& {" ?; p  ]5 l6 x
R/W
+ C1 v2 A; Q9 s# T5 z! |6 k) C本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
Watchdog Timer Control Register- 嵌入式底层驱动开发技术学习网站$ o9 ]% Y- f7 ?$ D/ P* \5 R
0x0000.0000
8 e2 K. f4 l) K! q4 {- 嵌入式底层驱动开发技术学习网站

- 嵌入式底层驱动开发技术学习网站3 f) G8 Y, Z+ E# H) M% P

0 X7 \/ z/ U% v4 a/ ?9 B( {本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
( @# m: b* z3 f2 ~
3 o& U0 D; D% C6 [# Y* V嵌入式开发联盟 ) v; |% i6 [4 P
1.2.
' V+ C$ b  n( F* G9 }mcuos.com
程序设计指南
1.2.1.- 嵌入式底层驱动开发技术学习网站" ?6 C7 w! L3 Q5 l; |
普通定时器中断频率
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习, _, E# g% k) f  F  R9 n# O
定时器中断的频率取决于以下等式:嵌入式开发联盟; ?5 Q6 t6 i1 p; K3 d- ]& T: N
Freq. = Crystal clock / ((pre-scaler+1) * counter))嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 t4 R& A9 }3 }: [, ]" G% ~

6 l/ c7 W: o' B/ f对于W90P710,晶振时钟输出是15 MHz。根据这个等式,用户可以决定分频器和计数器的值来得到想要的中断频率。
+ ~3 Y  D  p1 h本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。定时器参考设置值:嵌入式开发联盟/ t. o; S+ l+ b
Frequency (1/sec)
( P+ d' ?$ }; [嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
[Pre-Scalar]- 嵌入式底层驱动开发技术学习网站3 j$ \3 @0 D3 T  x
[Counter]- 嵌入式底层驱动开发技术学习网站  U  K; _4 B, [  @
18- 嵌入式底层驱动开发技术学习网站* P, x+ \, s& c/ K9 y; }, O
0
! I) ^$ _+ u! R% ?嵌入式开发联盟
0xCB735mcuos.com: n$ L5 r8 z1 G& Z8 X! {
40- 嵌入式底层驱动开发技术学习网站7 a' w* t  y9 A! ], p" L8 o* b/ k1 Z
0
& K4 a/ R- L# Q- A! a6 {4 e- 嵌入式底层驱动开发技术学习网站
0x5B8D8
8 O3 N2 O% t$ x8 Y
100本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 R" D) R$ q- j) |- U
0
/ \4 E" `0 {9 O, w3 Z( X2 Z$ e' v" Z- 嵌入式底层驱动开发技术学习网站
0x249F0
  h2 v! N3 \+ Jmcuos.com

8 B6 @# N& K0 S+ u3 ~- 嵌入式底层驱动开发技术学习网站
" m* @( b% l* Y# A3 `嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.2.2.- 嵌入式底层驱动开发技术学习网站; W" C9 y1 f. L+ ^( I( T
普通定时器初始化

8 n9 j, E) {0 A1 M嵌入式开发联盟在使能计数器中断前,驱动应该设置操作模式、分频器和计数器。定时器支持一次性模式、周期模式和翻转模式给用户来执行计数计划。嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习$ F) p# a! n& V1 h; s) A. D4 J
  • 在一次性模式下,中断信号一旦被产生将不会再次产生除非定时器以后被重新使能。
  • 在周期模式下,中断信号被周期性地产生。
  • 在翻转模式下,中断信号在每个50%周期由低到高或由高到低转换时被产生。
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习- N+ i5 m9 H) p
1.1.1.
+ I; ^" \( s. }/ L
普通定时器中断服务流程
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3 _! j) R* Q0 n4 P( ~% Q! |1 R
一个公用的定时器中断服务流程很简单。它包括软件计数器并清空计时器中断状态。
# R: z0 |1 [0 U3 B8 a
9 U6 J2 D. ]3 v; G普通定时器中断服务流程- 嵌入式底层驱动开发技术学习网站0 [! @. [# ?- k
mcuos.com/ J+ k+ ~# F# W, S# p5 M
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习. B9 t9 W$ U+ `2 G7 k: o
1.1.1.mcuos.com5 q; X, s% K& }. z+ ^) e6 X
看门狗定时器控制

- [) E3 v: b4 O) f9 @嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习寄存器WTCR被用来控制看门狗定时器。WTR位应该在启动看门狗定时器之前就被设置。它确保看门狗定时器从一个已知的状态重启。本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。$ L$ {5 F2 S+ l
看门狗定时器重启时间(使用15MHz晶振)嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% Q, C& F  ~2 y2 Q1 J! U
WTIS[5:4]嵌入式开发联盟8 Z! Z  A7 O3 \, \1 H' e3 V
Interrupt Time-out- 嵌入式底层驱动开发技术学习网站) J4 @) \/ |" f
Reset Time-out
( T$ @* N0 W2 B  ]嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
Actual time WTCLK = 1- 嵌入式底层驱动开发技术学习网站; _! p/ E. Y/ A' }0 E& m& E. A
Actual time WTCLK = 0
. V! [+ Y9 x3 p嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
00
! y1 c7 ~6 }. q: O嵌入式开发联盟
214 clocks
5 D0 k$ g/ A3 c: f9 u6 d本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
214 + 1024 clocks嵌入式开发联盟7 J) u; d4 w' S8 c- N( j$ R
0.28 sec
4 {9 a8 d" y  O/ s6 I  P- [嵌入式开发联盟
1.1 msecmcuos.com. G/ R5 b) `; [" T8 B
01
6 U3 n# ]0 V  c: O. v* [) `
216 clocks- 嵌入式底层驱动开发技术学习网站3 b/ ^/ S0 [: C# F
216 + 1024 clocks嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4 z2 _+ `" O$ ?) d. W# u/ x
1.12 sec
8 g# g7 p6 x8 r& h- v  R  H/ [4 w  Q8 y本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
4.3 msec
! @# m: D# |  [本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
10
1 }+ M. A' L- Y! J6 Z- V$ \mcuos.com
218 clocks嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 M6 {" B! o" l' O' z
218 + 1024 clocks
7 }5 u5 [! S; _2 a6 j本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
4.47 sec+ e' O+ v& I2 L4 t" F& Y: L
17 msec本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- a, r9 W. d2 J; A& C
11
/ V9 x5 N7 e% ~8 }嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
220 clocksmcuos.com# k3 K8 f' \- i4 I, n
220 + 1024 clocks嵌入式开发联盟2 B' T9 T! V0 _! V) h5 f# z
17.9 sec
& b# e6 L  C; l. V: T- Y+ g7 O% d/ jmcuos.com
70 msec嵌入式开发联盟' ]2 T# Z( a* H) C& v
- 嵌入式底层驱动开发技术学习网站# h# G! b2 C+ Y
1.1.2.- 嵌入式底层驱动开发技术学习网站: }% o7 P3 R' i" B& A
定时器控制的示例
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习$ Q' K4 }6 H& R5 n0 K
1.1.2.1.嵌入式开发联盟1 ~7 r0 |% v9 `/ Y
设置普通定时器频率
频率:100/每秒(外部时钟15MHz
: J( K/ y6 ?  Y+ [$ O6 t0 m嵌入式开发联盟 本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。6 g; ?: p( T( w' L4 ~
命令:- 嵌入式底层驱动开发技术学习网站0 Z. q, y: I9 R* h9 l
1.
/ ^. L8 ~8 \" P本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0到寄存器TCSR
  I3 O3 H) j( ?6 E( {* H来禁用定时器。
mcuos.com+ ]8 p! `" l6 }# H; b
2.- 嵌入式底层驱动开发技术学习网站& J1 t) J" e# O" M2 h
0x249F0到寄存器TICR
7 S3 g. x' U& A$ v7 k0 ~4 l- 嵌入式底层驱动开发技术学习网站来设置定时器初始化计数。
嵌入式开发联盟( ~, p7 D# i  k! S. a
3.
4 w9 J8 u. {2 \% J$ H3 Q! t  A) @mcuos.com
0x01TCSR[28:27]来选择周期模式。
mcuos.com; _9 ~* G. B! r# z+ P
4.
9 j( l, b. [( T" a: H* Q* M
1Write 1 TCSR[30]TCSR[29]
3 u- V2 Y: n4 H$ S* V本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。来启动定时器计数器和定时器中断。

8 B7 W6 O; B' P0 V4 \; a; s5.
3 b8 Q) k7 o8 ]本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
当定时器产生时,检查寄存器TISR嵌入式开发联盟4 v! J, M& t: c1 t- n0 m0 H  [
并写1来清空特定的定时器中断标记。

" b) Q% G* T) K9 Q. F( j: |mcuos.com - 嵌入式底层驱动开发技术学习网站7 a) z) |2 t) |) T4 C( P

% Z" E& V% H7 g9 r( _7 D- 嵌入式底层驱动开发技术学习网站
0 B) L7 ^" s( s# Z$ \; d本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
, J6 U$ Z( _$ [5 n7 C* m8 c嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.1.2.2.
5 E# l" `3 I5 D嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
执行看门狗定时器重启功能

& B. @) B0 \( K" q) M: c) rmcuos.com 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习" o4 B8 g% t( ~, M% r+ ~
重启间隔:0.28本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. s7 `1 F1 W2 K0 p4 b4 ]

# {: _$ Z5 Q  T" Q' {: U+ T- 嵌入式底层驱动开发技术学习网站命令:mcuos.com2 x% [8 }9 s7 j/ V# c
1.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; [, F- a3 H8 L3 s) \! u. R, ]1 {
1WTCR[0]

' F, a  t% b# a$ I4 G) q! ?mcuos.com2.嵌入式开发联盟' e4 [0 V2 ~. M+ @+ H
0x4C3到寄存器WTCR本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- T% h4 h+ _6 N

$ V5 e7 r( A. e% }% \$ tmcuos.com3.
- V* C( T, t/ N9 y# i$ y! p7 A- h本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
当看门狗定时器中断发生时,写1WTCR[3]WTCR[0]来清空看门狗定时器中断标记并重启看门狗定时器。
嵌入式开发联盟4 S6 o( ]4 w8 p9 _) F. x! s
mcuos.com& d4 U7 r& G3 g* n
- 嵌入式底层驱动开发技术学习网站( ?6 O: R% D. X. g9 u7 X
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

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