返回列表 发帖

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

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

1.1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习, V7 Y2 o$ f/ g9 n
概述
W90P710计时器模块包括2个信道,TIMER0TIMER1,允许用户容易地实现一个计数计划。每个信道有独立的时钟资源。输入时钟被一个8bit分频器分频并且随后被一个24bit减计数器引用。当计数器减数到0时,如果中断启动了的话定时器将声明一个中断请求。一个普通的软件计数器计划是用来设置一个软件计数器,并在每一个中断发生时加1给它。
$ {; Q" E# P+ ]* @: w4 I" b% ^+ ~嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
& S8 l3 m# c5 b9 j- 嵌入式底层驱动开发技术学习网站一个普通的定时器控制器有以下几个特征:
, K4 d/ V: S9 n1 D本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。lmcuos.com: k! g3 O/ i4 l" E9 Q4 Y8 P
AMBA APB接口兼容

) C. @# W. m* Rmcuos.coml
7 S1 d1 c$ o) T( r- 嵌入式底层驱动开发技术学习网站
兩个带一个8bit分频计数器/24bit减计数器和一个中断申请的信道

! w  \. z: z  I( {( d/ ymcuos.comlmcuos.com; z7 t1 q3 D0 W0 l% q
对每个信道的独立时钟资源
mcuos.com) O( c( l6 Y' D+ L8 F  c- ^
l
3 w- n1 }( M" |, z/ |8 M$ @- 嵌入式底层驱动开发技术学习网站
最大不中断时间 = (1 / 25 MHz) * (256) * (2^24), if TCLK = 25 MHz

/ {# C$ t9 P$ Y+ e  Y本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
5 {$ M7 T& L; X& o/ ^# V- 嵌入式底层驱动开发技术学习网站定时器模式也包括一个看门狗定时器。如果系统出问题时,它支持系统重启。这是保护系统免受无限长时间的挂死。看门狗定时器是一个带可编程超时间隔的自由运行的计数器。当特定的时间间隔超时时,它声明一个中断来通知软件去重启计数器。如果在512WDT时钟内计数器没有被重启,看门狗定时器将产生一个系统重启信号来重启整个系统。通常,如果看门狗定时器使能的话,程序会执行一个任务来周期性地重启计数器。
" ]3 l& l% H/ }0 y2 L- ?mcuos.com嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 R3 q/ E- u) J6 |$ e7 X% b# }

' b$ i" |5 X! r3 u6 Q1 Z
4 Z3 U% d1 l5 c- 嵌入式底层驱动开发技术学习网站

( s+ Q: S# L7 Q. @本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
! ?' J) Y. j3 g7 ~7 Y本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.1.
! r2 F4 |  W& e7 X  g本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
寄存器映射表
R : 只读, W : 只写, R/W : 可读可写
9 z* A' W, N) Z( Y  q; }6 C$ C  l$ k( f" G8 O本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

Register
3 \- n3 e+ x+ N6 X5 G$ p! h嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
Address
% V/ W/ N7 A' X' E- 嵌入式底层驱动开发技术学习网站
R/W/C- 嵌入式底层驱动开发技术学习网站& c7 U6 {" R- c$ H" C4 t3 @
Description
- Y) [* W% n( z. amcuos.com
Reset Value
/ d; c% @6 ]  O7 u) x嵌入式开发联盟
TCSR0
# ]$ `( ~. F2 M2 Q. E本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.1000mcuos.com7 x* Z0 V# }9 `8 n( R2 q
R/W
; B- j, A/ |; m* V' T  ^嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
Timer Control and Status Register 0嵌入式开发联盟; A- p! Y# ~/ s) }. P
0x0000.0005嵌入式开发联盟' V# i  h( e. U! P, d
TCSR1mcuos.com. R. d( x4 b9 \: D$ K& V  `
0xFFF8.1004
$ j  h' E( t* Q3 l. I- [嵌入式开发联盟
R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习* i/ M8 p5 @# U+ i! H
Timer Control and Status Register 1本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。% a( N9 Q  X0 L0 ?- H7 B
0x0000.0005& }% Y; J; w0 G: N; X6 C% a
TICR0
: B; P2 z9 R& S3 I本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.1008- 嵌入式底层驱动开发技术学习网站2 q3 C! K0 v, a: o
R/Wmcuos.com, q- j/ O! _9 v$ Z, O4 v' Y
Timer Initial Control Register 0- 嵌入式底层驱动开发技术学习网站8 N0 N2 V' V* _+ q9 `$ h- H
0x0000.0000- 嵌入式底层驱动开发技术学习网站8 o; j$ u" h, J; z0 e0 p+ ]% Q. O
TICR1! k  q+ |! p: e. H3 d1 \) o
0xFFF8.100C
# u. {+ H4 U* r8 i8 y9 ~
R/Wmcuos.com' g4 W0 e, ^+ b- C" k$ X
Timer Initial Control Register 1嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习7 L  l( N" @- L! Y: b
0x0000.0000
  D# R4 |: q; E4 xmcuos.com
TDR0
+ W& `2 |. I% c# T4 }, ]- 嵌入式底层驱动开发技术学习网站
0xFFF8.1010
0 S3 s  c$ n1 y本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
R
& y, E# J  c+ O: ?( h/ W- o
Timer Data Register 0mcuos.com% Y0 E* u9 {) D8 d% k
0x0000.0000嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 b0 K4 ~: }$ n  H
TDR1本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ a# p4 g1 i9 W! g7 ~
0xFFF8.1014
: ^: c9 j4 ~8 W7 D* h* @$ f4 B( |
Rmcuos.com/ z" c/ n+ M  o( i6 n
Timer Data Register 1
9 n& B' D9 j5 c( g; X( y, [本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0000
4 w4 y& m# _0 R2 V) M嵌入式开发联盟
TISR
2 V5 q6 P' _5 j0 k# |) d  f本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.1018
# O: d1 V' J7 m& ?" _; p* q- 嵌入式底层驱动开发技术学习网站
R/Wmcuos.com8 h4 }2 t2 X1 ]& r  s5 Q
Timer Interrupt Status Register- 嵌入式底层驱动开发技术学习网站. H/ {% s* i, r7 c* {% E* l
0x0000.0000
" W$ b8 `8 g. s( o: T+ C3 n1 N嵌入式开发联盟
WTCR
$ P) s0 S  i- D" J; F4 Zmcuos.com
0xFFF8.101C本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。# Y! K( o/ {4 ?) E
R/W
' |5 u3 }+ w& f% E/ n- o0 |" E' R5 G% L: W- 嵌入式底层驱动开发技术学习网站
Watchdog Timer Control Registermcuos.com  _2 |+ w0 X, ~" t
0x0000.0000嵌入式开发联盟  X" z% s6 |8 b5 l8 ^* R2 |


! ^+ \2 t/ y$ T1 |7 |2 f" V- 嵌入式底层驱动开发技术学习网站
, f; z0 b* I( o' y- 嵌入式底层驱动开发技术学习网站
  @+ W7 v! @8 q1 S' B! \# ~本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。mcuos.com3 O" g- L# ~( I8 X: P* @% D

3 t; S/ q, ^% u. p; T/ l6 B本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 Z9 }; N3 z& B3 G, n0 r
程序设计指南
1.2.1.
+ G% ~# r7 s7 t* D7 ?3 R: E- 嵌入式底层驱动开发技术学习网站
普通定时器中断频率

! P3 f; ~0 X! u5 Y( a- 嵌入式底层驱动开发技术学习网站定时器中断的频率取决于以下等式:
7 f9 T( S" ^5 N: O) C6 Y6 y# Z/ hFreq. = Crystal clock / ((pre-scaler+1) * counter))
$ i* `- Y1 P5 j; ^) _. @' R. [mcuos.com
9 W8 i) E1 |3 V9 I嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习对于W90P710,晶振时钟输出是15 MHz。根据这个等式,用户可以决定分频器和计数器的值来得到想要的中断频率。- 嵌入式底层驱动开发技术学习网站- g- A4 R' ^7 U' W/ ^& u9 G5 l+ s
定时器参考设置值:mcuos.com/ C$ r0 d; k" ]! W$ ~) M
Frequency (1/sec)本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。$ {" [5 N" w" {* L0 |9 @9 G
[Pre-Scalar]本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. V* s8 x& J. i) |+ l) f
[Counter]1 n0 M* Z( E7 J) _1 c
18- 嵌入式底层驱动开发技术学习网站5 N" x6 D/ N* g  c2 }. F1 z3 @' w
0- 嵌入式底层驱动开发技术学习网站5 n& R  T: M3 ~" }6 E
0xCB735
8 @  u4 s0 {" ?; x- x. l嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
40
8 v& m2 ?6 ~) j; _嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0
- _# L* _1 W  B% w嵌入式开发联盟
0x5B8D8
2 E: Q  B! B9 V$ O4 @- 嵌入式底层驱动开发技术学习网站
100
, G& Z& q/ S8 D. R0 B嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0
6 k; a5 z# C' s嵌入式开发联盟
0x249F0+ h0 l3 I. o* ^/ G" F

+ F, o$ V* `0 c) z" r( X
7 l1 {3 A! b( n  h1.2.2.嵌入式开发联盟/ m; D9 A5 e, y6 _8 C) n7 F7 `4 X
普通定时器初始化
嵌入式开发联盟- S3 {0 O) E& }! r
在使能计数器中断前,驱动应该设置操作模式、分频器和计数器。定时器支持一次性模式、周期模式和翻转模式给用户来执行计数计划。mcuos.com- }# i% _+ [( ]/ J" E5 W. _
  • 在一次性模式下,中断信号一旦被产生将不会再次产生除非定时器以后被重新使能。
  • 在周期模式下,中断信号被周期性地产生。
  • 在翻转模式下,中断信号在每个50%周期由低到高或由高到低转换时被产生。
3 v8 z2 L. b( m3 W+ n. e
1.1.1.5 Z0 V4 i. z# e% E7 U& w
普通定时器中断服务流程

& S( h& v9 ^) W7 t嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习一个公用的定时器中断服务流程很简单。它包括软件计数器并清空计时器中断状态。嵌入式开发联盟7 a2 }+ R$ L7 y4 P  M
嵌入式开发联盟) W( |; r! Y4 v  d9 [
普通定时器中断服务流程
7 a% S5 i( Z# [% M1 {嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
) r3 E0 j6 }' U6 Q. P4 f7 H- p本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
% b1 Q& _2 D2 e2 e1.1.1.
; P/ Z5 `' ?6 D& K. O' b9 G嵌入式开发联盟
看门狗定时器控制

% [8 I5 W0 C* {寄存器WTCR被用来控制看门狗定时器。WTR位应该在启动看门狗定时器之前就被设置。它确保看门狗定时器从一个已知的状态重启。本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。  `& c* ^3 E4 s0 l+ `
看门狗定时器重启时间(使用15MHz晶振)) G& }) _  Y$ g# U! i
WTIS[5:4]嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4 m& L+ u6 ^& H2 V
Interrupt Time-out本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。6 N+ `! M% ]$ W6 I, U1 O
Reset Time-out嵌入式开发联盟, I$ j: O- N4 |; S+ R
Actual time WTCLK = 1嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习: t; ^4 F9 D( g9 J( D: S) g; Z1 E
Actual time WTCLK = 0
" `/ H( [1 |+ B# ]# ?嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
00嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习6 X2 w: b6 j; q& }+ G" z. @( J
214 clocks- 嵌入式底层驱动开发技术学习网站/ J! I' s$ U1 O6 ]7 D5 k
214 + 1024 clocks- 嵌入式底层驱动开发技术学习网站( P; j; w+ V$ \
0.28 sec
6 Z! i0 I% L& f6 G* z嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
1.1 msec
3 [2 |' u, y; g* q
01mcuos.com$ {  C$ W4 y  Z% f! l3 q# P, \
216 clocks
1 G6 \* Y0 y2 w( I
216 + 1024 clocks
: e$ n3 T: U9 G8 [- g8 ?. [  lmcuos.com
1.12 sec本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. K6 J3 o7 [* @! h+ N
4.3 msec
/ O% \6 x, f1 U5 U, a' l) \本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
107 j3 h3 N1 W+ J, w
218 clocks0 x+ E1 K/ {2 \4 e7 {) g
218 + 1024 clocks嵌入式开发联盟8 R. z+ }6 r0 T
4.47 sec
. W: _& g' ]( q& ^/ ^. M嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
17 msec
/ L" d7 R8 u& F' V本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
11mcuos.com  z% r6 W. `! F
220 clocks
7 g9 v$ ]! v6 v本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
220 + 1024 clocks
, h  [* P8 `6 T8 B( F. k! ^- 嵌入式底层驱动开发技术学习网站
17.9 secmcuos.com" [. U/ U, w& Q" k  O9 W, `
70 msec
$ ^# A7 ^2 Q0 P  V8 t嵌入式开发联盟

$ r: d/ n! w! T$ kmcuos.com1.1.2.嵌入式开发联盟2 ?4 n$ W$ T/ z7 A/ l
定时器控制的示例
mcuos.com0 Y: a3 w# c3 C: Q2 A# i* n3 J
1.1.2.1.
4 F; _* F* S, [% W* a2 {6 n; J- 嵌入式底层驱动开发技术学习网站
设置普通定时器频率
频率:100/每秒(外部时钟15MHz
. G, w' @& g! M1 j, Y2 u- {5 J 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习* ^' N5 n1 U9 y4 @
命令:
$ d: Y& _$ I. k$ O' k1.
' C" V' Z; U- i
0到寄存器TCSR
3 s- r- G0 U# w7 i本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。来禁用定时器。

( p' H: [$ ]; P1 D" l- 嵌入式底层驱动开发技术学习网站2.
" v4 u2 c8 X) ~! N- 嵌入式底层驱动开发技术学习网站
0x249F0到寄存器TICR本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。5 h% S6 z3 d" ?- i$ G
来设置定时器初始化计数。

, {0 I& ^. r! g8 C嵌入式开发联盟3.- 嵌入式底层驱动开发技术学习网站5 L& L) h$ k1 Z2 d
0x01TCSR[28:27]来选择周期模式。

( V3 P! w% f$ j/ k7 W4.嵌入式开发联盟( s4 O3 y8 @6 e/ p: p) J
1Write 1 TCSR[30]TCSR[29]
; {: V7 V! i5 E, u+ k嵌入式开发联盟来启动定时器计数器和定时器中断。
mcuos.com$ m, a) Y) z1 H  d" V
5.
! P' g9 k/ Y" h" \2 I' [# |, t- 嵌入式底层驱动开发技术学习网站
当定时器产生时,检查寄存器TISR
4 l( K& g, l6 F( ?9 \& D5 ^- kmcuos.com并写1来清空特定的定时器中断标记。

0 T0 L/ ?5 D' l8 D' ^3 O- 嵌入式底层驱动开发技术学习网站
6 U3 W/ S: V5 [
9 p! k; g  ~$ F
4 ~- R4 m, Z9 r  v  j9 r3 j嵌入式开发联盟
# `8 I7 y! D, N9 g4 Smcuos.com1.1.2.2.
. _% v. L% X9 o, C嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
执行看门狗定时器重启功能
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 \8 e+ ^5 O5 ?: S
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。  y8 r/ d0 z4 l4 n' ~2 @7 T! {/ M
重启间隔:0.28本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 A3 L$ g) f, h+ _, {0 [# f/ r
mcuos.com8 _, E9 A8 u! l$ A) l2 x9 Y  r
命令:
5 w  V9 N6 a7 V- w2 U: j本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.嵌入式开发联盟5 A4 A1 m; W* s) m
1WTCR[0]

9 c" g7 N$ O2 T- b0 }( C2.- 嵌入式底层驱动开发技术学习网站9 H4 b+ j. s- H8 n- [  q+ W
0x4C3到寄存器WTCR
' {- z! r$ p( J7 t7 `mcuos.com
/ J1 B% ^" i( ^  l
3.mcuos.com7 x# _- ]# g+ u3 Y
当看门狗定时器中断发生时,写1WTCR[3]WTCR[0]来清空看门狗定时器中断标记并重启看门狗定时器。

! z  n7 p7 l2 i) A4 ?, m本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
( o4 o. H2 d/ a3 x  j3 O/ y嵌入式开发联盟 本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, g2 _' X! |$ M" M! g9 ?5 F
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

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