返回列表 发帖

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

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

1.1.嵌入式开发联盟6 F- m2 d1 j& Q# I1 G8 C4 f* h
概述
W90P710计时器模块包括2个信道,TIMER0TIMER1,允许用户容易地实现一个计数计划。每个信道有独立的时钟资源。输入时钟被一个8bit分频器分频并且随后被一个24bit减计数器引用。当计数器减数到0时,如果中断启动了的话定时器将声明一个中断请求。一个普通的软件计数器计划是用来设置一个软件计数器,并在每一个中断发生时加1给它。mcuos.com  N1 w8 K3 a4 g
2 y6 J2 A: o+ W. v0 U5 k
一个普通的定时器控制器有以下几个特征:mcuos.com) @8 q1 i  @# p$ m6 {
l本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1 Y$ C% y5 F. f: L3 E, p! ?
AMBA APB接口兼容
- 嵌入式底层驱动开发技术学习网站$ j: |1 a) q6 |" l
l
" C+ r6 A" y0 \$ n6 @* l! G- Lmcuos.com
兩个带一个8bit分频计数器/24bit减计数器和一个中断申请的信道

5 C! f! R1 e) H; ?6 O; ^$ E- 嵌入式底层驱动开发技术学习网站l嵌入式开发联盟) [. P' _" B8 ?/ I9 o, n! H
对每个信道的独立时钟资源
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。) \; S4 L0 |; F
l
2 d; H% K. |7 Y) T/ r: L本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
最大不中断时间 = (1 / 25 MHz) * (256) * (2^24), if TCLK = 25 MHz
: Q) S- T7 K" G( F% y4 t3 u
( X# i+ ^/ p( s( A: W. `1 S# L9 r
定时器模式也包括一个看门狗定时器。如果系统出问题时,它支持系统重启。这是保护系统免受无限长时间的挂死。看门狗定时器是一个带可编程超时间隔的自由运行的计数器。当特定的时间间隔超时时,它声明一个中断来通知软件去重启计数器。如果在512WDT时钟内计数器没有被重启,看门狗定时器将产生一个系统重启信号来重启整个系统。通常,如果看门狗定时器使能的话,程序会执行一个任务来周期性地重启计数器。
8 D7 u* J( }5 n9 J( o" n- ~
* D/ f* g# k; b, D) P- 嵌入式底层驱动开发技术学习网站

' ?) E9 y- A0 i# x: r$ m) T7 i5 y; }+ s; Y
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。( a( i! y1 r( D1 t8 P" r4 k9 F
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 U/ e1 g% E! j8 T  [
1.1.
$ D, m" N% {1 ]9 X3 Emcuos.com
寄存器映射表
R : 只读, W : 只写, R/W : 可读可写
1 e) i. d% n9 L6 A% ~+ R& R8 |嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习

Register
# G% M* q- c; F3 c1 C$ a1 m# @- 嵌入式底层驱动开发技术学习网站
Addressmcuos.com4 [) ]( @* y" H7 w: @
R/W/C
9 ]4 C/ W/ h! s3 d
Description
2 V7 s$ c0 I6 B' P8 ^mcuos.com
Reset Valuemcuos.com6 i1 B6 q8 b9 O+ C
TCSR0* }! Y) t9 V: h# N: M, ^; y/ s
0xFFF8.1000- 嵌入式底层驱动开发技术学习网站) r7 ~0 f; w$ E, L* a
R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习. z' v5 E4 m# Z! K  s' G) N
Timer Control and Status Register 0mcuos.com% L3 `3 G; N0 P4 ~& |
0x0000.0005mcuos.com- B! I* Y8 q) R( h1 A
TCSR1嵌入式开发联盟% ?2 |. c9 Z3 z' k! p4 \# E' J; |( N
0xFFF8.1004
9 F* T* \0 I+ y' H/ m, h嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
R/W
7 P- ~; l- q7 i( I5 a, P- ^本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
Timer Control and Status Register 1
! |3 J/ C+ R3 L- d+ l$ g- 嵌入式底层驱动开发技术学习网站
0x0000.0005嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 j8 B& z- M9 h5 F7 ~
TICR0本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。2 k; N! P3 U7 N
0xFFF8.1008mcuos.com( e& V6 m' Z0 W# m. p8 E$ s4 j
R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 V& ]0 x- H/ L7 ^6 @# L6 K
Timer Initial Control Register 0
0 B5 C4 R; F+ W/ U; Q' ]) d/ M  b2 Ymcuos.com
0x0000.0000
+ R& r& n6 Z) M- k; M嵌入式开发联盟
TICR1
+ K2 \. n% U7 E( i; U; ?' R
0xFFF8.100C
6 a! M6 U+ ^$ o. O. e( I嵌入式开发联盟
R/W" l+ t8 M' [* S
Timer Initial Control Register 1
% J( N/ Z, K+ X& D0 ]mcuos.com
0x0000.0000嵌入式开发联盟1 i' o- H9 F% {# M; q, ?
TDR0
7 p' X0 V' S3 y* {3 @0 o6 Z  S本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.1010% W* V5 P* ]( \3 Q7 f+ F: D
R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. }( j' d5 Q- u1 }
Timer Data Register 0嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习7 \. W8 ?4 J! X- ^0 C
0x0000.0000本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。0 y: I; R* R# x  r0 M2 e
TDR1
  {, Y5 [7 L" @) m( \% A0 E1 N! E本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.1014
+ t- j) g$ ^- f5 {( N4 w% A& A
Rmcuos.com2 Z& y# S/ `5 ]- A2 i4 Z
Timer Data Register 1
2 [7 A# ?0 K! P9 h' \- B嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0000
8 i6 ^2 O9 ?% W1 t( C) C& r" @
TISR
+ p( ~0 G  Y) `. @4 A) f6 F6 E嵌入式开发联盟
0xFFF8.1018mcuos.com9 D3 a" N& v0 D  ^* u  Q+ E
R/W
1 w! d( r1 f3 S( Z嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
Timer Interrupt Status Register
9 N" \- z8 v7 m7 v本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0000
0 \/ q9 l; z& L
WTCR
; P) T* Z# V( d0 R% E7 X9 A6 s6 y- 嵌入式底层驱动开发技术学习网站
0xFFF8.101C- 嵌入式底层驱动开发技术学习网站& q4 `- u2 |8 C! L! f1 }3 ]
R/W- 嵌入式底层驱动开发技术学习网站/ \4 u* r, {1 w' B
Watchdog Timer Control Register
: n, ^+ o) {3 k$ l* k% z7 k. z$ P本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0000
# q, `, @/ i/ A6 R* M4 V

嵌入式开发联盟6 u6 I& J, u% e4 c1 c" N
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。! H; i; h" `. |  B6 A) Y
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 b5 u( \' F" R9 A7 W& F: E
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1 N' d# k" f! N( u

: e  {8 p; I+ e% `6 f' `4 ^( d% |1.2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。& Y0 D! K/ w. r( }# [" i2 }% r% B
程序设计指南
1.2.1.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 n/ D* R; x1 o. M
普通定时器中断频率
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 a; ~, I; p( F  N; F- t# A  z
定时器中断的频率取决于以下等式:- 嵌入式底层驱动开发技术学习网站; ?0 T) @  H6 |0 a  [; E
Freq. = Crystal clock / ((pre-scaler+1) * counter))
* _, O% V( R6 U1 M- K, ~# Y. s& W  t嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 - 嵌入式底层驱动开发技术学习网站( s& E5 ]6 g  |' `: |( p
对于W90P710,晶振时钟输出是15 MHz。根据这个等式,用户可以决定分频器和计数器的值来得到想要的中断频率。
0 l& V. p7 A5 L4 J" p5 Gmcuos.com定时器参考设置值:
% _! y9 R" {/ P" m% f) g嵌入式开发联盟
Frequency (1/sec)
2 o  x- s, @# K4 n- 嵌入式底层驱动开发技术学习网站
[Pre-Scalar]- 嵌入式底层驱动开发技术学习网站, d* V$ P% v- Y- T
[Counter]
7 v3 o& L$ s0 T8 e嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
18
2 x) y3 D. ?; U, O5 T6 d  |3 E8 _嵌入式开发联盟
07 p; W, F2 }; Q
0xCB735嵌入式开发联盟* ~& G9 ?8 ]* Z- z. V
40
$ C8 K' s4 G4 S( z( Zmcuos.com
0嵌入式开发联盟; E, ~- Z- U/ R2 o0 X5 l
0x5B8D8
7 Y* H0 p# d  Z嵌入式开发联盟
100嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 W. ~0 a3 S8 M0 p+ q. i
0
$ V1 N+ A% S) W2 V本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x249F0嵌入式开发联盟* O4 b5 ?3 Q, Q! h# w4 F

& y* n8 c% C( L: B  [* n/ P! C本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
, ^( M" ?- `) ^4 y- 嵌入式底层驱动开发技术学习网站1.2.2.
) _2 K/ ~! y& k: j6 u3 e0 O本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
普通定时器初始化

, g+ t1 {5 v7 j: V( c) Y2 f2 p# o9 G/ x在使能计数器中断前,驱动应该设置操作模式、分频器和计数器。定时器支持一次性模式、周期模式和翻转模式给用户来执行计数计划。
2 y4 o6 m! L8 J, z# K本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
  • 在一次性模式下,中断信号一旦被产生将不会再次产生除非定时器以后被重新使能。
  • 在周期模式下,中断信号被周期性地产生。
  • 在翻转模式下,中断信号在每个50%周期由低到高或由高到低转换时被产生。

% C! W. G" G3 G) W7 v; C本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.1.1.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。$ d1 i$ _5 C0 }
普通定时器中断服务流程

" T. c+ u, E- j& gmcuos.com一个公用的定时器中断服务流程很简单。它包括软件计数器并清空计时器中断状态。- 嵌入式底层驱动开发技术学习网站" ]% J9 a7 u* G3 V9 @1 D$ A

) P7 F5 E) a# c4 Zmcuos.com普通定时器中断服务流程
& `/ w0 w1 B; c; y1 O% Q本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。嵌入式开发联盟$ L1 ]/ t4 b9 w

3 u4 v, B* `/ k) l0 ~- N" X8 C7 Q1.1.1.- 嵌入式底层驱动开发技术学习网站) q) f" t7 g4 F. Y  p! k- A8 n
看门狗定时器控制
嵌入式开发联盟5 m% h. J4 M' _* `' N/ x1 Z
寄存器WTCR被用来控制看门狗定时器。WTR位应该在启动看门狗定时器之前就被设置。它确保看门狗定时器从一个已知的状态重启。嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% d$ `7 g5 B4 S" Y' l; a$ i
看门狗定时器重启时间(使用15MHz晶振)
& w, X2 i" C* k1 l" c2 g, ?- 嵌入式底层驱动开发技术学习网站
WTIS[5:4]
5 u! i1 o  g0 Z  }/ ]嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
Interrupt Time-out
* w# a, T( G# N本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
Reset Time-out1 D8 c, X, h) {5 Y# i  z8 X/ w
Actual time WTCLK = 1嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习8 g+ A% w' c& B( k
Actual time WTCLK = 0嵌入式开发联盟* e) S/ X& C6 u9 D+ T# V
00
' c5 y0 K4 P. X, _. _
214 clocksmcuos.com- P; u/ _2 u) h* B
214 + 1024 clocks: h* v; c5 S% H$ C; M3 S' m" Z
0.28 sec嵌入式开发联盟1 D- Z, `3 o% G) r! W% K8 Q! i
1.1 msec
0 e8 A1 U+ V# s: h# a; T6 ]2 _嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
01
3 a9 V6 W* i7 @* n& P本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
216 clocks- 嵌入式底层驱动开发技术学习网站' {3 D& y" w/ Y# H: T5 C3 _& W& F
216 + 1024 clocks
. @# O; d6 O' T( w  E  P" g- 嵌入式底层驱动开发技术学习网站
1.12 sec
, _' O* l- K5 N& ^3 ^* K
4.3 msec
9 V- x5 X4 Q) t- x! H7 l) B
10本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。) D, t( w9 k! }' \* I! Z/ V1 x
218 clocks- 嵌入式底层驱动开发技术学习网站+ C7 Q- Z2 j7 O7 Q7 [. j1 q8 M
218 + 1024 clocks本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1 v. i. z7 Z  K, O2 S' ~# c! I& u
4.47 sec嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习  M0 p: j/ }5 H
17 msec- 嵌入式底层驱动开发技术学习网站  \! n. Y4 b/ r$ W' h
11
' W' Q$ w5 i  l本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
220 clocks嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习$ }2 k2 R1 H, g" z0 H* v1 ~' f
220 + 1024 clocks嵌入式开发联盟2 c( M( I+ P% G) P
17.9 sec嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习" w. H* R. p, M+ f2 l" R% S
70 msec嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习# x/ D  y9 m: \
嵌入式开发联盟: s9 j9 \1 f6 L2 A- b
1.1.2.
- H0 r5 g! W- ?& u8 ^# `7 p
定时器控制的示例

6 F: q9 E# O# x3 X* u. y1.1.2.1.
$ n9 k# `1 b& D* H5 j, \嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
设置普通定时器频率
频率:100/每秒(外部时钟15MHz本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。0 C' D% m8 W; Q7 p

' {, q6 b+ O0 k# Z& u2 D  @- ]/ k0 Mmcuos.com命令:本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ ]: V, d, y% }
1.
  b& f  e: n4 @9 Y9 N8 z1 hmcuos.com
0到寄存器TCSR嵌入式开发联盟) Z, n1 c! B/ G2 k6 E" @0 k
来禁用定时器。
mcuos.com: }' m  l% M- k( Z2 B
2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- u% _( @( a) Y: }- ^" X8 K
0x249F0到寄存器TICR
3 R' x9 P' }2 e( ?9 b/ i- 嵌入式底层驱动开发技术学习网站来设置定时器初始化计数。
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% [# k5 f0 S: N+ p( \$ q
3.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% x" f4 u9 ]! g+ J1 b! C1 L. s0 x
0x01TCSR[28:27]来选择周期模式。
mcuos.com9 j) k- t; ?) x) i, ~) ^
4.
6 ~8 Y7 c: X; B9 }2 G7 }/ K本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
1Write 1 TCSR[30]TCSR[29]
# _/ Q5 q3 a! }$ {& }9 r0 D6 P. T来启动定时器计数器和定时器中断。
- 嵌入式底层驱动开发技术学习网站, j; N; a) @6 v0 O( a+ e5 a# K& n
5.
8 V4 P8 P# v* v9 p' u本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
当定时器产生时,检查寄存器TISR- 嵌入式底层驱动开发技术学习网站% \7 j7 F9 k+ z2 z6 s/ O  h
并写1来清空特定的定时器中断标记。
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! n4 {2 v% Z1 b* t2 s

7 t1 u0 Q4 a4 l5 Y' smcuos.com嵌入式开发联盟& H: t+ {6 I, o! o1 T

& _6 M; N3 O/ F! P" v# N+ v! J ' l+ _# ?4 ~2 h# q0 D* m
1.1.2.2.
; ]  C2 k6 Y4 C& j嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
执行看门狗定时器重启功能

& I9 F* B8 g8 A- a嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 mcuos.com! q8 R/ x' @% ?% ], p* z$ I5 a  i
重启间隔:0.28
* k$ ^" D/ |2 H, N. _mcuos.com
, h# m7 b8 p: G, s本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。命令:
. h3 j+ @8 ~% P/ j! _  g( p& G嵌入式开发联盟1.
8 }% g  ], U: x3 ~本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
1WTCR[0]

* u/ z( o$ _  t7 o, ?- r- 嵌入式底层驱动开发技术学习网站2.mcuos.com/ R& Z0 I$ Z- K6 m
0x4C3到寄存器WTCR
9 }/ F: M  K1 W  \" i. g8 }1 l+ V& P

- B& c+ b. p; p% c) ~  }, a0 E- 嵌入式底层驱动开发技术学习网站3.
/ J0 z9 v. i; I9 _mcuos.com
当看门狗定时器中断发生时,写1WTCR[3]WTCR[0]来清空看门狗定时器中断标记并重启看门狗定时器。
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。' h- C" _5 V+ I$ k0 S9 i6 g
/ p: {$ E6 C8 p+ F# K8 u
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习" {" M  ~# ^1 q8 g4 q
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

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