返回列表 发帖

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

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

1.1.
6 |/ X9 l3 R9 f0 _. Y5 m本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
概述
W90P710计时器模块包括2个信道,TIMER0TIMER1,允许用户容易地实现一个计数计划。每个信道有独立的时钟资源。输入时钟被一个8bit分频器分频并且随后被一个24bit减计数器引用。当计数器减数到0时,如果中断启动了的话定时器将声明一个中断请求。一个普通的软件计数器计划是用来设置一个软件计数器,并在每一个中断发生时加1给它。嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习( V3 M' ~+ j+ Y9 g" `) N. R3 i
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 F' n+ v3 l! {, o
一个普通的定时器控制器有以下几个特征:- 嵌入式底层驱动开发技术学习网站6 `$ s1 o1 h6 h+ O" V& v3 g
l
* M4 u6 o$ C0 V! v8 u! C嵌入式开发联盟
AMBA APB接口兼容
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 E# A2 Z/ l5 `, D  Y
l
$ Q$ D3 D! f9 ^8 p/ I; @嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
兩个带一个8bit分频计数器/24bit减计数器和一个中断申请的信道
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& C5 ]7 Y9 M7 f4 S1 B6 \& A7 O) {  E' C
l本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. o$ @" A. ^6 \2 u5 z- k
对每个信道的独立时钟资源

8 Q6 D% t- b4 B7 h2 r1 x' T嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习l$ z1 i1 r7 \' r% _/ M2 A% x
最大不中断时间 = (1 / 25 MHz) * (256) * (2^24), if TCLK = 25 MHz

& p+ |- n; D7 m9 O, v% ?" G嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 r. y  s. W, w' G
定时器模式也包括一个看门狗定时器。如果系统出问题时,它支持系统重启。这是保护系统免受无限长时间的挂死。看门狗定时器是一个带可编程超时间隔的自由运行的计数器。当特定的时间间隔超时时,它声明一个中断来通知软件去重启计数器。如果在512WDT时钟内计数器没有被重启,看门狗定时器将产生一个系统重启信号来重启整个系统。通常,如果看门狗定时器使能的话,程序会执行一个任务来周期性地重启计数器。
2 k7 o. d* I. V/ B6 z$ s% L本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 Y  O7 y/ R: s7 c

0 w7 Y( B4 A' l- 嵌入式底层驱动开发技术学习网站
6 [* i% k$ J" @* K  f' E/ }mcuos.com

+ \' Q( E% ^, r  _$ m
  y) \+ ], A* v5 u, @嵌入式开发联盟1.1.
, p$ {$ i4 Y. E6 \# xmcuos.com
寄存器映射表
R : 只读, W : 只写, R/W : 可读可写
' J: c: k! r0 v  U) \( y- 嵌入式底层驱动开发技术学习网站

Register
9 k! `) K7 @; v
Address
* J5 s8 C% {8 W9 `- 嵌入式底层驱动开发技术学习网站
R/W/C
) F2 P4 s" ~  L7 X嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
Description嵌入式开发联盟/ f- @* C6 I& S6 w
Reset Value
" ~; W: a0 P7 U. m3 M! J! i% R- 嵌入式底层驱动开发技术学习网站
TCSR0
2 K* g& j# s6 E" `" Y嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0xFFF8.1000) s: X! {5 X+ J: j1 o9 A
R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习0 t* O6 Z4 [, v/ ~; N
Timer Control and Status Register 0
! V1 @; h/ K9 t2 e/ c! ^- 嵌入式底层驱动开发技术学习网站
0x0000.0005本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。2 K* K0 A  [. ~4 S* N0 |2 H
TCSR1
4 {8 e) Q/ y+ j! S2 E! U
0xFFF8.1004- 嵌入式底层驱动开发技术学习网站  }8 j5 o0 j; b: y6 v
R/W- 嵌入式底层驱动开发技术学习网站" o5 m8 M/ \- s6 f
Timer Control and Status Register 1
$ ~8 s  h3 o' _4 C# p" D( U  ~  a嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0005嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习  c' l6 v4 U- k" p
TICR0' f" M. g+ {/ C$ ^# f# V' F
0xFFF8.1008mcuos.com1 D5 P( I# d$ y# t' n3 k' W: q
R/Wmcuos.com% w& M% u3 X. j
Timer Initial Control Register 0& a! {: E) k( @) D4 F
0x0000.0000
) t! J& l4 i: k1 t" W嵌入式开发联盟
TICR1
! j( D' P$ p  Q  Z5 E/ C本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.100Cmcuos.com6 f/ w/ P- h" y! E5 E1 b$ s" u+ Q' k
R/W
5 m( B0 C2 s; v6 S" P/ Z) S1 k
Timer Initial Control Register 1嵌入式开发联盟# Q, i. B* b# y2 C) {
0x0000.0000
' I* f" ], Z) E. a嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
TDR0嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% V4 ~- c5 a. G
0xFFF8.1010嵌入式开发联盟8 x0 V4 _, `' D
R1 Q) F' Y, i1 C) b
Timer Data Register 0
8 Q5 j$ z+ |5 U嵌入式开发联盟
0x0000.0000嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习# I6 L/ u, M- g- Q" y/ o- R9 V: z
TDR1mcuos.com. c. y3 C" S$ h( \
0xFFF8.1014本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3 J1 h2 A( x) [' T7 z; E# _7 i
R
* R, P5 L" t* B0 mmcuos.com
Timer Data Register 1
  M( [8 L) ?% {3 _% q' T  \* C4 m嵌入式开发联盟
0x0000.0000- 嵌入式底层驱动开发技术学习网站5 f$ _5 E  Q* L* {8 j. C* F. \3 ~
TISR& M6 t4 B7 @; }3 m
0xFFF8.1018- ~" E4 m# J3 ~+ \: R& {* T
R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! J* n1 g7 J! e: x1 U2 }
Timer Interrupt Status Register
0 M1 O0 J+ L4 @8 T嵌入式开发联盟
0x0000.0000
8 R% Y+ m* u% Dmcuos.com
WTCR嵌入式开发联盟0 }9 k# A" h& G: h
0xFFF8.101C嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习' c( s/ p" B: y5 q& g
R/W嵌入式开发联盟% D& p) ~2 R0 j
Watchdog Timer Control Register
4 C% y  A. w, B8 [本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0000
% d. d, P6 Q( q% W! \  G- 嵌入式底层驱动开发技术学习网站


: Q- ^9 @! [2 x7 g6 f/ }; c/ D- 嵌入式底层驱动开发技术学习网站 本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- _$ S- K- |/ h: |+ j/ ~+ K& j

# k/ G9 {5 L. }+ m& Q$ ]! p嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
# W+ S2 h* Y& {' q; k2 L  a $ j! D  ?, T: G! l5 a  A
1.2.- 嵌入式底层驱动开发技术学习网站5 t6 F- ^+ p7 w, {
程序设计指南
1.2.1.
, C% H) k4 L2 t$ w. i- r/ w嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
普通定时器中断频率

2 w" P/ V" J+ mmcuos.com定时器中断的频率取决于以下等式:
5 V; i$ M. }/ H, R# uFreq. = Crystal clock / ((pre-scaler+1) * counter))
% M9 p% o2 m9 W: ?9 ?$ u嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
/ K" j9 \0 Y) W7 U( n. ?对于W90P710,晶振时钟输出是15 MHz。根据这个等式,用户可以决定分频器和计数器的值来得到想要的中断频率。本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3 O  \9 D  h" q, Z+ i) I
定时器参考设置值:& ~" @: `' S( x% i/ j. H
Frequency (1/sec)嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1 b7 h* h7 |* g, j* F
[Pre-Scalar]
' ]' }$ J7 A' R* |( b1 o嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
[Counter]
- J. D0 C" W7 h* S2 K7 N: V嵌入式开发联盟
18
* n8 d8 U2 e5 L4 h嵌入式开发联盟
0& z! h  S" R. \0 O4 i& L7 R
0xCB735
6 T/ n7 ?$ _  c- C: F嵌入式开发联盟
40
( u  M: I6 P$ U7 F* b+ k
0/ b6 ?1 J) _+ {( V. l: i
0x5B8D8
. D, u8 r1 P7 }1 amcuos.com
100
, I! r9 b! N& o- ?/ D* r& ]7 o! w嵌入式开发联盟
0* o& [' I" u, K3 A% S- z, e
0x249F0
8 t$ w" ~+ l! A; R. }+ V4 K嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
- 嵌入式底层驱动开发技术学习网站& i/ X* t- U3 R( S9 }. r
8 Z( Y- D# v7 w
1.2.2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3 F6 }# v2 j+ v* s" X, O, U& Q
普通定时器初始化

9 z% y# {; S1 y, r1 y7 K5 bmcuos.com在使能计数器中断前,驱动应该设置操作模式、分频器和计数器。定时器支持一次性模式、周期模式和翻转模式给用户来执行计数计划。- 嵌入式底层驱动开发技术学习网站$ D+ S+ I6 y5 }5 ~2 b, T2 x  m
  • 在一次性模式下,中断信号一旦被产生将不会再次产生除非定时器以后被重新使能。
  • 在周期模式下,中断信号被周期性地产生。
  • 在翻转模式下,中断信号在每个50%周期由低到高或由高到低转换时被产生。

: i/ ]- `* \8 {- 嵌入式底层驱动开发技术学习网站1.1.1.
0 g$ F8 h. J8 ~' @3 K嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
普通定时器中断服务流程
mcuos.com7 e* M* L* v7 m& S) \  X; l8 F7 q+ d) D
一个公用的定时器中断服务流程很简单。它包括软件计数器并清空计时器中断状态。
3 I# R4 Q8 i# f" d2 g
! p8 o! y1 p; u3 V: I; s4 [- b: u本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。普通定时器中断服务流程
. V& n' G) {0 c9 u" [) h- 嵌入式底层驱动开发技术学习网站- 嵌入式底层驱动开发技术学习网站- Y  F- g! ^& H3 ]: e

3 a0 e: v. M" y4 u  C- 嵌入式底层驱动开发技术学习网站1.1.1.) W( ?8 D6 J0 F  Q& I. a
看门狗定时器控制

' J+ k0 A) r; V( U+ [( U" ]& f寄存器WTCR被用来控制看门狗定时器。WTR位应该在启动看门狗定时器之前就被设置。它确保看门狗定时器从一个已知的状态重启。6 T. V4 H/ L' U+ P& w9 N! S
看门狗定时器重启时间(使用15MHz晶振)嵌入式开发联盟, b4 j5 N. a$ ~$ p
WTIS[5:4]嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% n0 }# t4 |9 U3 T; m( V" G
Interrupt Time-out嵌入式开发联盟: R/ ?$ m0 |6 _
Reset Time-out嵌入式开发联盟8 N6 K! C  S  H$ H
Actual time WTCLK = 1
+ g! ~, K2 X7 Y, W! }4 L; I- 嵌入式底层驱动开发技术学习网站
Actual time WTCLK = 0- 嵌入式底层驱动开发技术学习网站; D; \" n$ m8 D5 `$ a7 o: W
00嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 B3 L8 Z4 ~) B  X8 ?
214 clocks
. v9 _+ m# [, k( {. L  K" \嵌入式开发联盟
214 + 1024 clocks
  C" k' r6 M6 o' I$ K4 A
0.28 sec嵌入式开发联盟3 D9 ?& N8 m3 v, C1 |2 q
1.1 msec
( E3 w$ k( E( M: P2 c4 Z
01& Q2 m  ^( d+ X, [
216 clocks本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。' ]% i: Q" Q7 `/ W/ ^
216 + 1024 clocks嵌入式开发联盟/ t5 ]2 g" @- c
1.12 sec
6 k. o( E! I! v- h嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
4.3 msec6 l( \6 u, ~5 n$ h3 {5 E
10
  W) v$ w4 V% W9 F+ Z# I
218 clocks
2 w( C7 q  O% O' ^, d+ @' \8 y
218 + 1024 clocks
, s. Q; ?$ o. l+ D; |- o4 q5 L本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
4.47 secmcuos.com/ N  l+ `# J2 Y5 s) [1 V8 S
17 msec
8 @. K/ v7 v% E5 H( M嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
11
  E. T1 N* r* c本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
220 clocks7 d& s% k& g# D( c. M
220 + 1024 clocks
2 R' G) \4 e2 O, I  j嵌入式开发联盟
17.9 sec7 B' o8 M$ B6 q$ B0 ^/ [
70 msec
  ~5 C0 Y5 A* |. K' x9 \9 X0 k6 t8 Amcuos.com

. e& b: Z" ~9 P7 n! A3 U嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.1.2.- 嵌入式底层驱动开发技术学习网站# R; x* u% {% V5 |& b' d* k
定时器控制的示例

: p" t. I5 y, Y& d. e本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.1.2.1.嵌入式开发联盟7 q0 q  o+ ?: f( W
设置普通定时器频率
频率:100/每秒(外部时钟15MHz
* v0 M2 m. g( T5 e$ v/ P' A; B嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! V* v7 Z. }9 L3 Z7 D  O7 _
命令:嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 q  _7 {! t  O1 k
1.
, p3 v& z+ D. ?6 |! r( M嵌入式开发联盟
0到寄存器TCSR
3 k/ L; m4 V+ T1 r- @* p. u- 嵌入式底层驱动开发技术学习网站来禁用定时器。
- 嵌入式底层驱动开发技术学习网站; n1 |* q* U5 U0 h
2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。8 z: x6 D% C7 ^# O
0x249F0到寄存器TICR
+ s/ g: k! v" l& E3 b9 \来设置定时器初始化计数。

( F/ E0 F5 W# N( z1 _2 v& c- 嵌入式底层驱动开发技术学习网站3.嵌入式开发联盟! [( F9 O# }. [! G
0x01TCSR[28:27]来选择周期模式。

# b/ h5 q0 P$ k  f9 Y0 o$ W- 嵌入式底层驱动开发技术学习网站4.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 ]7 ~, b# R% H8 i# g
1Write 1 TCSR[30]TCSR[29]7 ]4 v0 Z( A: D0 m  E
来启动定时器计数器和定时器中断。
嵌入式开发联盟0 _4 W8 A  {1 H$ A
5.
8 P" E/ e. J, L嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
当定时器产生时,检查寄存器TISR
* B# G# z6 }- v9 c  Z; ?+ k嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习并写1来清空特定的定时器中断标记。
- 嵌入式底层驱动开发技术学习网站! z0 ~: h. r3 i9 B4 P8 J

8 b1 Z- d/ L3 i7 cmcuos.com
8 [# h* i8 f/ V# ?7 Y/ u本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。嵌入式开发联盟5 I3 z' ~; O0 I7 B4 f
mcuos.com" z- X) t! t1 c" ~9 z
1.1.2.2.- 嵌入式底层驱动开发技术学习网站7 {' N5 \" c" D# ]5 d$ A! N
执行看门狗定时器重启功能
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, `/ J1 p: w2 `9 f2 n! q

* f4 C( }4 L: S3 o& D* P( i重启间隔:0.28
. @  K* ^/ M$ l: e  I5 D- 嵌入式底层驱动开发技术学习网站
4 D9 I; o! Y+ p9 X4 E" H( m7 f" c8 B命令:mcuos.com0 Z" E0 d' j- d+ m7 u  w$ q
1.
9 |3 x4 }, S4 g& r! d3 {: @1 X1 v+ ~嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
1WTCR[0]

5 v% c2 i) R$ M0 G2.
% k8 \2 \* w! w嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x4C3到寄存器WTCR
+ O3 w+ k, x1 i4 ^/ J& ?嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习# Y( o, F' `% i0 d: W4 G
3.
9 B. J% t; ^% J6 }8 g$ ^, |: Q嵌入式开发联盟
当看门狗定时器中断发生时,写1WTCR[3]WTCR[0]来清空看门狗定时器中断标记并重启看门狗定时器。
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。/ \: Q$ t+ f/ k) s5 @
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& z* ^! Y) X! k* p! }) h5 }& E
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 K9 p9 t; o/ j' n9 X
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

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