返回列表 发帖

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

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

1.1.
7 Y0 Q5 x2 i  {5 ~% t2 ]- 嵌入式底层驱动开发技术学习网站
概述
W90P710计时器模块包括2个信道,TIMER0TIMER1,允许用户容易地实现一个计数计划。每个信道有独立的时钟资源。输入时钟被一个8bit分频器分频并且随后被一个24bit减计数器引用。当计数器减数到0时,如果中断启动了的话定时器将声明一个中断请求。一个普通的软件计数器计划是用来设置一个软件计数器,并在每一个中断发生时加1给它。
+ }% y4 @1 b& c8 a2 E/ K ( T" o8 `( L/ i8 C9 U4 ^9 ~
一个普通的定时器控制器有以下几个特征:
  Z1 c9 X* C1 A2 d/ Y- 嵌入式底层驱动开发技术学习网站l
2 P  ?# f  z; l6 w! w2 f/ W$ l嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
AMBA APB接口兼容
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。! f4 M7 o7 q# b5 [1 ~
l
6 ~# y* i6 l$ h  o本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
兩个带一个8bit分频计数器/24bit减计数器和一个中断申请的信道

1 D5 w5 V! ?1 I/ x嵌入式开发联盟l
! m+ B' G' o/ o( J! D2 I2 `嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
对每个信道的独立时钟资源

6 F, ]" X7 g/ c! p嵌入式开发联盟l7 j$ A$ l% O- s/ {
最大不中断时间 = (1 / 25 MHz) * (256) * (2^24), if TCLK = 25 MHz
嵌入式开发联盟1 a6 z+ l. F- A3 _0 @7 k
$ p% N( z( o. B4 m$ U' T  f! h- J
定时器模式也包括一个看门狗定时器。如果系统出问题时,它支持系统重启。这是保护系统免受无限长时间的挂死。看门狗定时器是一个带可编程超时间隔的自由运行的计数器。当特定的时间间隔超时时,它声明一个中断来通知软件去重启计数器。如果在512WDT时钟内计数器没有被重启,看门狗定时器将产生一个系统重启信号来重启整个系统。通常,如果看门狗定时器使能的话,程序会执行一个任务来周期性地重启计数器。
5 ~; o) b# k9 R% s- 嵌入式底层驱动开发技术学习网站
: I% X2 d0 [: K1 ]* Smcuos.com

4 l- t  @, X/ C8 T1 E. l* m嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
  d) O' p+ ^) G6 g- 嵌入式底层驱动开发技术学习网站

/ _7 n4 W3 q6 H. C( x4 x! dmcuos.com
) ?) g$ U: |* H1.1.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。6 ^5 |  q! W2 s8 c0 ^8 V) k/ g$ h4 b
寄存器映射表
R : 只读, W : 只写, R/W : 可读可写嵌入式开发联盟9 F; R$ x9 l6 T! |  [

Register- 嵌入式底层驱动开发技术学习网站* F, R' \* G6 d2 o7 w
Address嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4 E) j+ Q+ x5 Z. |. \* C9 b9 {% G
R/W/C
1 z. o$ Q0 m1 e* Q6 @
Description$ Y6 z$ g. D! A  ^
Reset Value
8 R/ q/ W( j7 s& b5 `嵌入式开发联盟
TCSR0- 嵌入式底层驱动开发技术学习网站. _% d4 n' P5 h
0xFFF8.1000本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. d% g$ I- K  K2 W5 P, C
R/W0 o' j% U: F0 u6 X& I& o+ a) E
Timer Control and Status Register 0- 嵌入式底层驱动开发技术学习网站+ A1 c6 w' w9 x6 y
0x0000.0005+ E+ T: l) x6 O0 E6 H
TCSR1
8 N, ~( G$ E5 B& R  Y) i. F- 嵌入式底层驱动开发技术学习网站
0xFFF8.1004
% Z1 o+ h- v. s4 z$ z; o1 G嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
R/W
0 F) |% O) h8 G$ ^, e  S% T3 a嵌入式开发联盟
Timer Control and Status Register 1
- T( w* [. m+ l" E9 F4 Z嵌入式开发联盟
0x0000.0005  E3 w) H& A# Y4 ?& U3 N
TICR0
( h; F+ i& W3 j: y本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.1008嵌入式开发联盟1 @! c1 ~% C. E  N5 _
R/W
& g) Z; ^/ a) L3 u( x5 jmcuos.com
Timer Initial Control Register 0嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% ^+ S# c- I5 `: x3 q& k( B
0x0000.0000
* Q- o& v) _; g6 g% \- 嵌入式底层驱动开发技术学习网站
TICR1
7 q$ o4 B& j- f1 C嵌入式开发联盟
0xFFF8.100C嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 Q" r6 \. U1 s, }$ v
R/W- 嵌入式底层驱动开发技术学习网站4 f$ |9 Z, h. U6 Y/ g
Timer Initial Control Register 1
. y6 n( C$ |! A& @嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0000
* v. y, s. R: o- E. s- 嵌入式底层驱动开发技术学习网站
TDR0- 嵌入式底层驱动开发技术学习网站" o* K/ {7 o5 e: V
0xFFF8.1010
; U4 q0 e) E; W% i1 f+ z2 h' n- 嵌入式底层驱动开发技术学习网站
R
& k" ^* @. j( D' D/ J  P- nmcuos.com
Timer Data Register 0
/ P. t# O# |" A3 M! m; a  Bmcuos.com
0x0000.0000
1 e5 e8 q* n% ~, f' ?5 p
TDR1
( J' l, [* u  F嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0xFFF8.1014嵌入式开发联盟) A- C6 u! D0 W# H
Rmcuos.com( n; {) a  W+ l
Timer Data Register 1
# ~2 g8 x5 Z  K1 }; |3 S0 ^嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0000
9 d; X6 {' C/ F8 e本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
TISR
" B6 x7 Z  x% q- M+ p* B3 g# e嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0xFFF8.1018
9 F  O. P& j, B% I' m- 嵌入式底层驱动开发技术学习网站
R/W
. [( Q7 \4 I+ ~! L6 {本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
Timer Interrupt Status Register嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 K6 X- T- ]4 @$ |
0x0000.0000
. C- h) |& {0 i, q7 s# V7 r- S
WTCR嵌入式开发联盟# C2 r9 T7 ^$ u$ Q2 ?
0xFFF8.101C本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- B4 _9 M. F% C% x- g4 ]
R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习# v/ J/ D2 \' O
Watchdog Timer Control Register
/ K2 x) u. L# Q  H- o7 o: D5 }* m+ K
0x0000.0000
* [; E: q- o9 N# Q0 E$ H- Xmcuos.com


9 u# u& t( j& D嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 - 嵌入式底层驱动开发技术学习网站3 A# D" [" Z8 Z" e3 B& W& x. _% Q6 q0 w
嵌入式开发联盟. |6 r$ D- g5 E0 e

. ^+ {( `+ e! L6 ^- 嵌入式底层驱动开发技术学习网站
6 P5 W: f9 W" C/ H/ N- 嵌入式底层驱动开发技术学习网站1.2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。6 ~+ A+ r8 P) I/ V* p* j
程序设计指南
1.2.1.
2 F" }' A) P. |8 F. L$ q嵌入式开发联盟
普通定时器中断频率

6 l9 h! l( U6 g$ A- A! S! `嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习定时器中断的频率取决于以下等式:
7 ~0 s& E* h' F9 O- \- w3 e嵌入式开发联盟Freq. = Crystal clock / ((pre-scaler+1) * counter))- 嵌入式底层驱动开发技术学习网站/ s: n; c0 {  B" S
嵌入式开发联盟2 P% w, \- @" P5 m  V% g2 g* Z
对于W90P710,晶振时钟输出是15 MHz。根据这个等式,用户可以决定分频器和计数器的值来得到想要的中断频率。8 F, Y4 Z5 Z1 V' E% W6 H( M- O
定时器参考设置值:
. |' b: x6 B: n7 g本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
Frequency (1/sec)- 嵌入式底层驱动开发技术学习网站2 X, \2 T  t7 h! {
[Pre-Scalar]嵌入式开发联盟# l, z2 {4 g! k& x7 @4 O, o! O
[Counter]mcuos.com7 R2 c9 W/ U; l0 s8 ]9 I1 Q
18
6 P# a" `- p1 o8 p8 u! Y1 mmcuos.com
0嵌入式开发联盟: @2 V5 C# E3 y  M
0xCB735
* J$ Z% W$ Z7 }* b/ q$ @2 R
40
2 H3 N5 E, y8 g* J; [# n嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 x' Z( h8 ]  g. ?  d7 B
0x5B8D8
9 I9 b4 |4 L2 H( H5 p) f; d- 嵌入式底层驱动开发技术学习网站
100
# U8 T( o2 F, B* }' n嵌入式开发联盟
0
/ ^8 v8 O/ G  v9 u& ^; C8 \  ?嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x249F0
' ]# k* D2 b: ]% e3 t嵌入式开发联盟
8 U* R. ?  K( ~
6 ^- O1 t3 ~" X+ e3 m2 ~- o- g" j% k
1.2.2.
' }. q! I: J- M& M# R
普通定时器初始化

* l% I9 G2 H' u* G- i% G6 A* t$ X+ C$ }嵌入式开发联盟在使能计数器中断前,驱动应该设置操作模式、分频器和计数器。定时器支持一次性模式、周期模式和翻转模式给用户来执行计数计划。
( ~; M, A! w: ~# _1 i5 H/ w嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
  • 在一次性模式下,中断信号一旦被产生将不会再次产生除非定时器以后被重新使能。
  • 在周期模式下,中断信号被周期性地产生。
  • 在翻转模式下,中断信号在每个50%周期由低到高或由高到低转换时被产生。

3 w+ _& f% f) M8 T3 o! ^1.1.1.
9 E: {, r* F  N- ^+ Y. o- 嵌入式底层驱动开发技术学习网站
普通定时器中断服务流程
- 嵌入式底层驱动开发技术学习网站0 P! O5 Y7 ]0 Z1 L
一个公用的定时器中断服务流程很简单。它包括软件计数器并清空计时器中断状态。本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。0 L, ~: E: K. D" e' a" v% O
mcuos.com. V3 \& V/ m* W4 I% X$ ]
普通定时器中断服务流程
; ^$ Z0 [, M0 ^" {  c* [
! |9 C8 ]  k2 J. ]8 n) Q) O- 嵌入式底层驱动开发技术学习网站
2 i9 b* g& f, B) Vmcuos.com1.1.1.- 嵌入式底层驱动开发技术学习网站* c( n- G# u) o8 B) I8 n( a+ n* A
看门狗定时器控制

  o, V- \) K& E+ p: Qmcuos.com寄存器WTCR被用来控制看门狗定时器。WTR位应该在启动看门狗定时器之前就被设置。它确保看门狗定时器从一个已知的状态重启。嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1 R; [5 U1 {( J5 y3 P; r
看门狗定时器重启时间(使用15MHz晶振)
/ o* G# `# M. {& H- 嵌入式底层驱动开发技术学习网站
WTIS[5:4]
# a, w$ Z" _: Q2 r( I) o' Z- 嵌入式底层驱动开发技术学习网站
Interrupt Time-out7 L9 J0 h  w5 |8 L
Reset Time-out- 嵌入式底层驱动开发技术学习网站# h# L/ ]* V7 N6 I
Actual time WTCLK = 1- 嵌入式底层驱动开发技术学习网站. w6 D* P6 S# n+ D* {" `! ^
Actual time WTCLK = 0嵌入式开发联盟; x  J; Q9 F! H# D
00
# f6 V' y! j' E+ K) V) Y7 w嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
214 clocks- 嵌入式底层驱动开发技术学习网站2 W2 o, `4 B; E, _6 s+ z
214 + 1024 clocks
* D' v3 {1 P* I: b: w5 \mcuos.com
0.28 secmcuos.com; T3 `3 O0 v1 K& t7 T6 U
1.1 msecmcuos.com# i# c1 m  H! n) a% h+ a, k7 X: U
01
: g- X3 q$ w$ }! [/ W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
216 clocks
+ Z5 D9 f, x( h- [: w
216 + 1024 clocks
3 m0 c  _* {4 Q7 o; k6 f- H/ F( V6 u嵌入式开发联盟
1.12 secmcuos.com+ l+ w( |* P. I3 o( ^2 e$ v: p0 N3 r- r
4.3 msec- 嵌入式底层驱动开发技术学习网站) q# c' H. r- \5 M1 s: E# E
10- 嵌入式底层驱动开发技术学习网站+ N, o) s6 i# R' r# }3 n; N
218 clocks
* X! N9 E$ T: q" n* e; I; V- 嵌入式底层驱动开发技术学习网站
218 + 1024 clocks
/ M# S) a, H, G2 P: r嵌入式开发联盟
4.47 sec
- K& t6 b) ^2 C6 _: ]2 G- C4 ?嵌入式开发联盟
17 msec
7 c9 l, z0 N. g7 ymcuos.com
11- 嵌入式底层驱动开发技术学习网站1 i  f* L7 x  w" L
220 clocks
4 @( E& W: u5 ?" ?7 e本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
220 + 1024 clocks
0 O& G! o; X$ B2 ?( S9 dmcuos.com
17.9 sec+ R. z5 u7 u! E% O
70 msec
  T/ p# Y$ J3 }9 q3 m嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

6 v) A& _6 p$ X' n嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.1.2.mcuos.com7 Z8 {, `/ h, r
定时器控制的示例

; i8 @4 T0 |" A: S8 U/ `! J0 ?mcuos.com1.1.2.1.7 R$ Z0 D+ e/ L, o+ J; x5 p3 ^8 R
设置普通定时器频率
频率:100/每秒(外部时钟15MHz
6 n. B: i  L  Z' }嵌入式开发联盟 本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。% ?/ A9 x: o2 m' M7 S
命令:
. h: g/ t, L, }: Q2 _3 _$ ^嵌入式开发联盟1.
2 R5 O' Z  ^  I2 {% T, ?/ e3 P0 s- 嵌入式底层驱动开发技术学习网站
0到寄存器TCSR
: Z1 E9 Y* w" w. k来禁用定时器。

+ V' Q/ x" ~" J  L3 g  K- 嵌入式底层驱动开发技术学习网站2.
# S2 z, Z; w) R0 y$ p+ A嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x249F0到寄存器TICRmcuos.com5 F* C# c! `" W
来设置定时器初始化计数。

7 E7 c* }2 c; k! C* e5 j" v- f嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3.
" t" @3 K; @* W* }, |0 ]mcuos.com
0x01TCSR[28:27]来选择周期模式。

% M: Q) F7 W/ k2 W3 n$ {2 o! z- 嵌入式底层驱动开发技术学习网站4.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习# m# A! _  L( U/ Z
1Write 1 TCSR[30]TCSR[29]
+ |: Y( ^4 o9 ]$ s3 l5 imcuos.com来启动定时器计数器和定时器中断。

$ F% C1 C- z7 R. I+ i- ^  hmcuos.com5.1 X7 A* j$ `$ L" ]5 ?# w& M2 V4 ?
当定时器产生时,检查寄存器TISR- 嵌入式底层驱动开发技术学习网站* `$ W2 `( s' j! x
并写1来清空特定的定时器中断标记。

" g6 E; V& g& G! Z* x; V- 嵌入式底层驱动开发技术学习网站
' q& y/ G) c/ U) |* Z- 嵌入式底层驱动开发技术学习网站嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4 A4 a6 A3 M5 s; c! T, \/ v
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3 D, {& S8 A% e# g( C$ Y/ |
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ Z# H1 k2 j" U& d' H; m
1.1.2.2.2 H) {; |  F- ]  B, E6 @2 z3 c0 T
执行看门狗定时器重启功能

; K  F2 m# {% imcuos.com mcuos.com2 ?. ]. J- ^( h+ E
重启间隔:0.28
- \8 Y. U/ y5 l) |& z本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1 [1 o, n8 r- m. ^6 d
命令:
. r& o( g0 z2 Y8 x9 A1 h- 嵌入式底层驱动开发技术学习网站1.
. p+ a  ]$ X! l8 \" H# D2 M本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
1WTCR[0]
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习) j5 x0 V# @8 r; R
2.
" J3 V% D- j; F8 kmcuos.com
0x4C3到寄存器WTCRmcuos.com" G( {! F- g% l- `
嵌入式开发联盟) h; R5 j, U  {9 G7 N
3.嵌入式开发联盟7 g. k6 |4 Q8 Z3 F2 j8 X
当看门狗定时器中断发生时,写1WTCR[3]WTCR[0]来清空看门狗定时器中断标记并重启看门狗定时器。
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习- A6 N6 j& {/ c% x: O

2 ]* r2 ?+ O. n2 C! _' P& x - 嵌入式底层驱动开发技术学习网站# M2 l) P; f5 |8 }
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

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