返回列表 发帖

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

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

1.1.
9 C+ Q8 ^0 S$ p& y( A
概述
W90P710计时器模块包括2个信道,TIMER0TIMER1,允许用户容易地实现一个计数计划。每个信道有独立的时钟资源。输入时钟被一个8bit分频器分频并且随后被一个24bit减计数器引用。当计数器减数到0时,如果中断启动了的话定时器将声明一个中断请求。一个普通的软件计数器计划是用来设置一个软件计数器,并在每一个中断发生时加1给它。
" ?+ I# \: o# ]. F4 S
5 Y, g$ h. u! c% Q* S' Q嵌入式开发联盟一个普通的定时器控制器有以下几个特征:
* b8 n4 s# y/ w1 Z6 Bl
$ x( K7 @( M0 ?# \' ^
AMBA APB接口兼容
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习0 h% p7 x$ q4 a. d2 z( o( S
l1 o( X% [9 D' P1 i+ X
兩个带一个8bit分频计数器/24bit减计数器和一个中断申请的信道

  m, C' C  ]1 f嵌入式开发联盟l嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! @8 D. k5 e' V) ?/ Y% \! O9 S- i
对每个信道的独立时钟资源
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。/ |* [( Z: k. D6 }) I8 d
lmcuos.com6 C7 L# O, ]. z  Q% G4 p0 ?4 C
最大不中断时间 = (1 / 25 MHz) * (256) * (2^24), if TCLK = 25 MHz
2 E+ l( M# V; x% ^* b  w

  E5 S% ]6 }6 h8 ~# u1 F( S定时器模式也包括一个看门狗定时器。如果系统出问题时,它支持系统重启。这是保护系统免受无限长时间的挂死。看门狗定时器是一个带可编程超时间隔的自由运行的计数器。当特定的时间间隔超时时,它声明一个中断来通知软件去重启计数器。如果在512WDT时钟内计数器没有被重启,看门狗定时器将产生一个系统重启信号来重启整个系统。通常,如果看门狗定时器使能的话,程序会执行一个任务来周期性地重启计数器。嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! i/ O  m, L) M" c  u

  S& @8 q8 d- ?/ Y0 ]; u6 V本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

! r% }3 P# P7 X1 r, nmcuos.com- 嵌入式底层驱动开发技术学习网站; i- D& l3 @. J  |& M7 t7 T
嵌入式开发联盟7 F2 X/ [- }" |5 C+ {" E

) m8 u8 L3 E$ h本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.1.6 x6 t  V0 d" ~, ]7 v  F2 u
寄存器映射表
R : 只读, W : 只写, R/W : 可读可写
$ A0 v# ]9 y8 L  {& i7 u4 L. j

Register- 嵌入式底层驱动开发技术学习网站; R0 t" ~/ M. T- a* q
Address- 嵌入式底层驱动开发技术学习网站- T$ G' S  A: s5 l1 N
R/W/C
0 {+ t" q" G3 ^- Q/ cmcuos.com
Description
& \/ X9 I( ]/ V: N8 s嵌入式开发联盟
Reset Value
/ t0 D! @+ J) v/ P, {8 q- l( s# Smcuos.com
TCSR0
8 [- F( d; G2 [9 x$ \- 嵌入式底层驱动开发技术学习网站
0xFFF8.1000
9 ~( r3 l! m% \. K, p嵌入式开发联盟
R/Wmcuos.com2 g7 W  f. x# M
Timer Control and Status Register 0
* V3 e% U) i* z0 a8 B
0x0000.0005
( I" q% Z* J9 `  }! ~* z
TCSR1
2 l, R- w7 X3 F& _, K% O嵌入式开发联盟
0xFFF8.1004# e/ W% B, K; V, E2 l2 m1 R/ s/ o
R/W嵌入式开发联盟+ F8 ?9 m- Q" {! t/ b2 T7 u
Timer Control and Status Register 1本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- |, A- p( e2 z
0x0000.0005
) T. |6 J- N4 p, c- ]$ H  x1 O嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
TICR0嵌入式开发联盟+ g3 R: F1 Q/ H7 k" t" x/ Z
0xFFF8.1008
; F* z6 q9 _3 X) _6 \; A) N本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
R/W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 L9 G5 L3 m6 Q6 z$ K3 `' J0 R+ Z
Timer Initial Control Register 0嵌入式开发联盟2 {, `7 u  L4 N& R" T, ~
0x0000.0000% R/ s! L6 u# Z# X# s' B" k
TICR1
9 I2 {- I9 L0 g  V' X本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.100C嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习/ s- i# o+ U4 D( `; a3 X
R/W- 嵌入式底层驱动开发技术学习网站$ F+ w2 |9 Y8 W; j
Timer Initial Control Register 1
, f6 J1 O; }! k0 ]# N- 嵌入式底层驱动开发技术学习网站
0x0000.0000- 嵌入式底层驱动开发技术学习网站8 u9 ]9 J' e/ Z% M0 S
TDR0本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 b1 F1 Z0 E, A
0xFFF8.1010
  F1 }2 l! z! y9 x2 v) M; z
R
6 l6 h! s* b# [( K& N
Timer Data Register 0mcuos.com* C& ^/ a0 B! p7 b
0x0000.0000
3 r$ M0 ?6 {* M+ N( \, G. I) U
TDR1
* l" ?$ Q' X+ y9 ]' u: W嵌入式开发联盟
0xFFF8.1014嵌入式开发联盟, \% H/ \' q: [3 Z
R
$ p/ M5 E+ ]8 v4 l0 z  ?mcuos.com
Timer Data Register 1嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习/ n, H! ^$ |: V: Z; {7 c+ Q8 }
0x0000.0000
. R; k% ]7 z! [, T# H) h0 d嵌入式开发联盟
TISR8 H& R2 E/ r) v, E- d0 `
0xFFF8.1018
+ U% W7 _9 ?) x7 Z
R/W
6 N2 ^0 j7 Y  C, U7 B( ^$ r' wmcuos.com
Timer Interrupt Status Register本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; K0 U' G+ e: V" h$ ^- W  n
0x0000.0000本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。5 m: n* ^2 K: @; `3 {( t+ H1 K/ Y
WTCR
9 g8 o+ ^+ Z! }# O: W- d) ?嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0xFFF8.101C" ^' S/ T: b! S- x
R/W
' J8 f) g2 v% \; L嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
Watchdog Timer Control Register
8 H! p) T. ~: M$ \2 ?mcuos.com
0x0000.0000- 嵌入式底层驱动开发技术学习网站1 M# J# j7 U1 C* I% d0 X% I

  J( b# P' m( \" x& g$ a. {8 d
- 嵌入式底层驱动开发技术学习网站( w5 i1 D- `- v! X
- 嵌入式底层驱动开发技术学习网站9 c5 T2 [6 Y  ]& [- g) q: q

" A7 l8 N* U% ]- H6 E3 j2 l嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 9 c  z  q; @! b" v4 H1 c
1.2.
3 b7 H2 j# Z4 ]; U9 C' k  ]% umcuos.com
程序设计指南
1.2.1.% j# ^- o' d  ^0 p3 r- o& t
普通定时器中断频率
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 J$ p% q) r/ _/ ?! _, P- m$ p& u
定时器中断的频率取决于以下等式:
) W8 D* w' R$ |$ J$ K( lmcuos.comFreq. = Crystal clock / ((pre-scaler+1) * counter))- 嵌入式底层驱动开发技术学习网站0 L) m- G/ p# Z2 P+ p4 K

" K' v$ X' a5 {9 s7 a- [- 嵌入式底层驱动开发技术学习网站对于W90P710,晶振时钟输出是15 MHz。根据这个等式,用户可以决定分频器和计数器的值来得到想要的中断频率。
* @  }, c. j& }" f% ^嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习定时器参考设置值:
/ R5 x* {$ ^; _, d& K- 嵌入式底层驱动开发技术学习网站
Frequency (1/sec)
+ l0 Q( l( r5 F2 u* G8 P$ H
[Pre-Scalar]
* S- ^5 g, R4 n. a. O1 s/ ]8 emcuos.com
[Counter]
) C2 t( N$ z( o/ l6 \3 p' ]嵌入式开发联盟
18嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习6 ]; A. j% M8 R! @! U; N
0
* w8 r. v9 U7 ?. b: ymcuos.com
0xCB735
! B: {& D; f2 Z5 C" N本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
40mcuos.com5 `! G9 e1 Z0 s% r
0
, R% q$ G( v9 P, l, O4 ~mcuos.com
0x5B8D8" l9 z4 n" v2 n+ Q" Y8 B
1000 q% @  _( I" m; a! J
0
- g& a! u" \& c6 A本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x249F0
- B( X8 g6 `0 u3 W% E本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

6 d7 J: A1 w, n3 L" P4 m5 Q mcuos.com: x# V5 D/ U2 ^% x# `6 |5 I
1.2.2.
- r0 V9 E/ {4 _  g
普通定时器初始化
mcuos.com5 c/ E4 E9 h% n( ]0 L& E
在使能计数器中断前,驱动应该设置操作模式、分频器和计数器。定时器支持一次性模式、周期模式和翻转模式给用户来执行计数计划。mcuos.com) j# T. m! j- m6 [8 n
  • 在一次性模式下,中断信号一旦被产生将不会再次产生除非定时器以后被重新使能。
  • 在周期模式下,中断信号被周期性地产生。
  • 在翻转模式下,中断信号在每个50%周期由低到高或由高到低转换时被产生。

9 T; {3 X. p1 wmcuos.com1.1.1.
/ p, M+ X3 D4 ]; C% O. v嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
普通定时器中断服务流程

0 V7 @: r6 g' D1 V本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。一个公用的定时器中断服务流程很简单。它包括软件计数器并清空计时器中断状态。
2 B+ Z3 l7 x. d% E* r; j 嵌入式开发联盟, i4 v, l: z! `: |% U7 ~% q" |
普通定时器中断服务流程嵌入式开发联盟$ f: E3 j+ S: C
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习# T2 Z$ ^% _2 H: i! B
) [& r% l) z% [$ r" |
1.1.1.& n4 k! J2 C: ?$ h: k" \
看门狗定时器控制
) y9 e; c* q7 P/ P8 ]0 X
寄存器WTCR被用来控制看门狗定时器。WTR位应该在启动看门狗定时器之前就被设置。它确保看门狗定时器从一个已知的状态重启。嵌入式开发联盟7 }: T* R6 A0 _% e8 v. V8 z
看门狗定时器重启时间(使用15MHz晶振)
! ?5 r3 R  b; o( P! P) X( F, j5 S嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
WTIS[5:4]
& n% ^! O' n$ c; H) @+ y嵌入式开发联盟
Interrupt Time-out
6 j3 y% v% z/ \
Reset Time-out- 嵌入式底层驱动开发技术学习网站6 q2 [$ c0 ~0 R& D0 c
Actual time WTCLK = 1mcuos.com9 g. S$ Q! f' j; [( A! |
Actual time WTCLK = 0嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习7 w7 @( E/ T  i% L/ _0 a& N
00
6 k$ F/ f1 Z* V" }- 嵌入式底层驱动开发技术学习网站
214 clocks
  D+ M5 s& |- f' S嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
214 + 1024 clocksmcuos.com% w1 q& M3 v  n- J
0.28 sec
2 n( B1 D* b. H8 D- x$ b4 ^/ d嵌入式开发联盟
1.1 msec
" ~! M" P0 `$ M) l2 i$ xmcuos.com
01
! W. r) p( x( x( ?" w- 嵌入式底层驱动开发技术学习网站
216 clocks嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习, E2 W. L' Z7 @% t- w1 j! u
216 + 1024 clocks
* g' V% f* q1 ?嵌入式开发联盟
1.12 sec嵌入式开发联盟) A5 @- H* |( f6 Z: S
4.3 msec- 嵌入式底层驱动开发技术学习网站2 U4 |8 g! {; j% l5 Z
10嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习* q3 g2 w0 Y2 [! C+ a8 {6 I' A2 h
218 clocks嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习( z' l7 w4 A$ g$ I: L: h- A  |0 t  S
218 + 1024 clocks本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- I5 T, e  p8 ^6 z# a: d+ r0 {
4.47 sec
/ @1 S# W, ~; S5 i& d+ E本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
17 msec本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。" L( `1 ^4 E* S2 B
11
' ?4 V5 P& c4 R本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
220 clocks- 嵌入式底层驱动开发技术学习网站( ?8 J7 F- y4 q$ z8 J' P
220 + 1024 clocks
4 \: e  e+ `. k7 T) g- 嵌入式底层驱动开发技术学习网站
17.9 sec
- O/ n2 w7 D2 W" P1 ?/ \本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
70 msec
1 c2 p8 u+ k, U* r嵌入式开发联盟
mcuos.com* x1 x& y' s/ f( z
1.1.2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, N/ I8 O# B/ ?
定时器控制的示例
0 ^  K* Q- f; g
1.1.2.1.
, n, W6 M1 Q- v& c5 H; amcuos.com
设置普通定时器频率
频率:100/每秒(外部时钟15MHz
; U' A! Y7 |5 a1 ~mcuos.com
2 e- @3 U. j4 t7 ?8 R) v嵌入式开发联盟命令:本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. q9 d4 j& \( P* {8 c/ a
1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 m- |. E" G, f9 \( h" x# w. w2 Z
0到寄存器TCSR
% J# n. q. r9 V' g本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。来禁用定时器。
嵌入式开发联盟3 l) B5 o. q, _) S  m2 s( e  Y" f5 m
2.
  P( G3 I4 y4 u嵌入式开发联盟
0x249F0到寄存器TICRmcuos.com; z0 p% j: t/ `. e! q. |  N
来设置定时器初始化计数。
嵌入式开发联盟) i# p7 L" w' F  M9 r; q, ^$ P
3.
: H0 H. d! _3 vmcuos.com
0x01TCSR[28:27]来选择周期模式。
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 U& C9 J, Z) a; U7 K# G
4.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习) h8 G- j- f3 g9 T+ n+ {* d6 O
1Write 1 TCSR[30]TCSR[29]
0 |3 I2 c& w, X% _, D, I0 qmcuos.com来启动定时器计数器和定时器中断。

0 S; n2 |1 N* vmcuos.com5.mcuos.com9 C% B. m0 H8 J: Z- k
当定时器产生时,检查寄存器TISR
2 A( }( G$ O+ k1 p% Jmcuos.com并写1来清空特定的定时器中断标记。

. q  f+ C" E3 }! r  L9 n本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。 嵌入式开发联盟9 N! K( T8 H1 \, Z
mcuos.com; w8 c) v& X8 v4 S' y

1 q& O- Y, c) q( H6 a本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。 嵌入式开发联盟8 [. p& ?2 [/ G0 o8 }& k
1.1.2.2.- 嵌入式底层驱动开发技术学习网站* _2 z8 O0 e$ D
执行看门狗定时器重启功能

: u; a. Y2 \$ s0 ^( H2 n* Emcuos.com 本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。  u( Z9 v4 H) W* j
重启间隔:0.28
  h% Q+ J3 j. v* Z/ R  M% I$ x嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 5 ~. _, v) J) h' S4 Y, J! ^
命令:嵌入式开发联盟8 N7 c; \! N7 w: N
1.
; Z  P* m$ S/ v本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
1WTCR[0]
嵌入式开发联盟2 X" S  H7 h2 [2 e# x* n7 u6 Q
2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。/ H/ C$ G9 f/ _0 V
0x4C3到寄存器WTCR
' R+ D, t! u$ n& T/ zmcuos.com

; ?7 T$ |' N; N& C- 嵌入式底层驱动开发技术学习网站3.嵌入式开发联盟- S. i5 i$ J1 ~& J: l
当看门狗定时器中断发生时,写1WTCR[3]WTCR[0]来清空看门狗定时器中断标记并重启看门狗定时器。

9 ^$ P7 u; [/ @  G! _5 G嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 `  T! S# g; m7 t4 r: r  P
mcuos.com: B& z' H; n; ?2 K$ A/ {2 q1 D2 d) f; _
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

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