返回列表 发帖

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

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

1.1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习( ~8 `( }7 J# V  J) V# c+ G
概述
W90P710计时器模块包括2个信道,TIMER0TIMER1,允许用户容易地实现一个计数计划。每个信道有独立的时钟资源。输入时钟被一个8bit分频器分频并且随后被一个24bit减计数器引用。当计数器减数到0时,如果中断启动了的话定时器将声明一个中断请求。一个普通的软件计数器计划是用来设置一个软件计数器,并在每一个中断发生时加1给它。
/ Q3 q7 C- k- q; i嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习5 @; ?: @( ^$ T. h7 {( }" k  J
一个普通的定时器控制器有以下几个特征:
' \3 e" j% k5 Z7 b% q嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习l
/ T- L5 w9 n7 a4 t  w本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
AMBA APB接口兼容
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。) j- m) X& U0 R; H  m
l$ D- |0 g* l& m' o' _8 M
兩个带一个8bit分频计数器/24bit减计数器和一个中断申请的信道

( P* m3 G: t2 w* j  l: f9 Q& C, g嵌入式开发联盟l嵌入式开发联盟: q* ~1 L6 ^% @* [+ s
对每个信道的独立时钟资源

. J0 L$ x5 s8 b嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习l嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习" D- R/ h1 l3 w+ \6 }" Y
最大不中断时间 = (1 / 25 MHz) * (256) * (2^24), if TCLK = 25 MHz

: D! X1 Y6 l7 w本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
% r# M; p4 h/ Y- 嵌入式底层驱动开发技术学习网站定时器模式也包括一个看门狗定时器。如果系统出问题时,它支持系统重启。这是保护系统免受无限长时间的挂死。看门狗定时器是一个带可编程超时间隔的自由运行的计数器。当特定的时间间隔超时时,它声明一个中断来通知软件去重启计数器。如果在512WDT时钟内计数器没有被重启,看门狗定时器将产生一个系统重启信号来重启整个系统。通常,如果看门狗定时器使能的话,程序会执行一个任务来周期性地重启计数器。嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习. K6 ?8 r$ U) X. G3 h! q
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。. [" \  x+ l% C2 V! v4 ^
$ v' @$ f  o4 V
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习) q6 s' f) N2 d; g0 G$ R
- 嵌入式底层驱动开发技术学习网站/ M0 [/ r8 a  C6 b5 s
嵌入式开发联盟) o" j2 @5 \- G- q% c* d
1.1.mcuos.com+ U/ ~) j2 O& C" m9 U7 i
寄存器映射表
R : 只读, W : 只写, R/W : 可读可写
8 r, J6 d$ m& f3 `8 v2 K本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。

Register本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。; u  _$ z/ b8 ?; K& o8 l& y
Address- 嵌入式底层驱动开发技术学习网站4 W& e3 R+ j" U, V/ W" @! Y
R/W/C
% F5 j# P3 R3 G  }2 t: N本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
Description8 y# s- H1 H! b/ Z: E! c2 g% D6 c
Reset Value嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1 p: z( t/ M1 E( X" Z! M" ]2 L
TCSR0嵌入式开发联盟% j) w9 `' a, t8 s$ ]
0xFFF8.1000- 嵌入式底层驱动开发技术学习网站* J" f; g5 y& s# B  V/ P
R/W
8 M8 g  \9 W1 j( l7 o嵌入式开发联盟
Timer Control and Status Register 0
- e6 G) z" Y* K: o1 l本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0005
$ i% E% V" |& K1 b: Q- 嵌入式底层驱动开发技术学习网站
TCSR1
5 Y) `& T/ D: v* h  ?2 O本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.1004- 嵌入式底层驱动开发技术学习网站1 c! l7 j) C; i1 S2 p# {
R/W
, x3 b0 f8 F( h7 Q3 R嵌入式开发联盟
Timer Control and Status Register 1
# S" u/ z3 |1 T" s( X. a- 嵌入式底层驱动开发技术学习网站
0x0000.0005- 嵌入式底层驱动开发技术学习网站4 J$ O: F$ e( O" ~4 n$ l
TICR0
/ J/ S5 J. J; ?# w8 S# j# Y, j2 i本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0xFFF8.1008mcuos.com0 J4 x7 E5 Q! h" C8 B8 Y& P: \7 [
R/W
$ P8 B# z+ j, C本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
Timer Initial Control Register 0
1 k/ p1 F( _. N1 O- ]& u
0x0000.0000mcuos.com3 e  T" E# ~$ C
TICR1
3 e; G1 z7 L. A* y1 u- 嵌入式底层驱动开发技术学习网站
0xFFF8.100C本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。5 w! I" d) J% X* k
R/Wmcuos.com% e0 i6 I" \% z; r
Timer Initial Control Register 1
; D  z( C! L' D9 T; c" `4 A本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0000
8 t4 \. d9 Y* A9 w3 _2 ~mcuos.com
TDR0$ H4 S3 v) D2 }# X8 s
0xFFF8.1010
; ^, n' g8 {4 D7 z6 z; q# @
R
3 H, G% @: i7 c6 b9 y0 {
Timer Data Register 0
9 Q) o) \3 m" k' ~0 S嵌入式开发联盟
0x0000.0000
3 H/ L6 d) s; K! F
TDR1
! w% B4 S! Z9 ^' i$ S
0xFFF8.1014嵌入式开发联盟- B6 w( F% t! u8 G# r
R嵌入式开发联盟) ?' N2 ~1 f2 f+ t; ~% ?
Timer Data Register 1
; z1 u) I- Z; x, Y9 Y0 N. w嵌入式开发联盟
0x0000.0000mcuos.com. ?3 i, o$ L+ l+ Y5 f+ J' E
TISR
9 o+ q3 p+ F+ Q3 p4 w
0xFFF8.1018mcuos.com2 ?" V5 |3 ^# x
R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& M! o7 C2 R( L+ S7 V
Timer Interrupt Status Register
$ |8 d8 m+ I6 e* Z" P. `本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0000本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。( g  H; q, y3 V* ^% k3 g
WTCR" ^7 V6 s  c# a4 x9 ~, h
0xFFF8.101C嵌入式开发联盟1 [! T' p3 U* P& o* i
R/W
; {1 G- d! @: ]# k- zmcuos.com
Watchdog Timer Control Register
; f4 k% H: ?7 d嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0x0000.0000本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。/ i( B% M" O: Y9 y# z, L& ?


; w0 j) v$ Q8 K+ D) ^- E2 V0 j) Smcuos.com 嵌入式开发联盟" U1 J4 w8 i/ _; G' b/ r* X
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习- ?4 x9 w* s; P9 Q, G* }4 A2 W
mcuos.com7 B+ q* {9 Z3 {+ T- \2 A# u
mcuos.com& d" v. K$ O! @  D* @+ S  T. j" d
1.2.嵌入式开发联盟5 Z' H0 O9 `% [# z; b* ~
程序设计指南
1.2.1.嵌入式开发联盟0 ?( F  _7 c4 A
普通定时器中断频率
- 嵌入式底层驱动开发技术学习网站2 m5 C! S+ z6 f- K0 X- a7 A1 H* q
定时器中断的频率取决于以下等式:本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 N* W9 g2 D* ]
Freq. = Crystal clock / ((pre-scaler+1) * counter))
0 a, Z/ ~! y0 ?  {5 F8 H5 T2 v' S' @嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
# M. U# b. X; S5 T" p6 f1 r对于W90P710,晶振时钟输出是15 MHz。根据这个等式,用户可以决定分频器和计数器的值来得到想要的中断频率。mcuos.com" t/ x- C  `9 w' J9 }: c( K; i- R
定时器参考设置值:
4 L( q2 y; V; J: @嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
Frequency (1/sec)
# i% ~. \5 c" |# w  O" I嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
[Pre-Scalar]mcuos.com# U: E7 j4 p" t5 K! }: z
[Counter]
! M! m& q0 A8 u. N& Hmcuos.com
18
% T) n+ ~* N: [  M) z; ~7 h嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
0本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。$ ?8 N- \3 }. O) h6 s+ a' p
0xCB735- 嵌入式底层驱动开发技术学习网站6 M8 l$ G( m+ }2 H
40- 嵌入式底层驱动开发技术学习网站4 B9 U2 `1 t3 x
0
. k8 J; ]! @% I4 K! n" J! C* {- 嵌入式底层驱动开发技术学习网站
0x5B8D8
& l$ f6 u. G# N2 X嵌入式开发联盟
100
% D* f) K: p! k1 _2 f" y. V' `4 E( jmcuos.com
0mcuos.com6 c+ J9 _/ T$ m' ?7 Z& Z1 r  b
0x249F0
9 o0 s& A( c5 B% j/ Omcuos.com

) q, A  ~9 K, Y( P. w1 W5 T" s2 U嵌入式开发联盟
7 d7 x! r' F$ _" M) H% O; T- 嵌入式底层驱动开发技术学习网站1.2.2.mcuos.com) z: X$ Q) i3 S4 \- ~9 S
普通定时器初始化

. N& ~$ S4 L' b& M本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。在使能计数器中断前,驱动应该设置操作模式、分频器和计数器。定时器支持一次性模式、周期模式和翻转模式给用户来执行计数计划。
' f# c: y: V$ G1 }  s  w- l本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
  • 在一次性模式下,中断信号一旦被产生将不会再次产生除非定时器以后被重新使能。
  • 在周期模式下,中断信号被周期性地产生。
  • 在翻转模式下,中断信号在每个50%周期由低到高或由高到低转换时被产生。
mcuos.com7 [. E+ C- p* B% @
1.1.1.mcuos.com# o. G$ t: m- S. t/ N
普通定时器中断服务流程
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 e# a' A* m5 o; K& @
一个公用的定时器中断服务流程很简单。它包括软件计数器并清空计时器中断状态。
9 G. Z/ Q9 D, W* V+ g! d. d
5 j& o; p+ a) Smcuos.com普通定时器中断服务流程嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习+ `3 b( _$ n2 j+ |! ?

: j7 ^. t: `' K# A1 h* j: V嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习嵌入式开发联盟2 I. S6 ^1 B0 Q
1.1.1.
7 i* o* L" a. k8 a  |6 z/ y! b嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
看门狗定时器控制

/ V# j% K! i4 u# B) W本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。寄存器WTCR被用来控制看门狗定时器。WTR位应该在启动看门狗定时器之前就被设置。它确保看门狗定时器从一个已知的状态重启。嵌入式开发联盟) C3 e# T. ^! v& j- x4 |
看门狗定时器重启时间(使用15MHz晶振)
0 w  K1 T( P: v5 R9 w  A" t; z; L- 嵌入式底层驱动开发技术学习网站
WTIS[5:4]
4 d# q" q7 ~- S1 `# j" q# e嵌入式开发联盟
Interrupt Time-out- 嵌入式底层驱动开发技术学习网站5 M, w: B# f. E* C% I
Reset Time-out本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。4 ~- E% i7 ]& ?2 K5 X% [& r1 ]1 F
Actual time WTCLK = 1嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习2 j! B, z2 z2 ~/ s. C( ]& G
Actual time WTCLK = 0
4 g/ v& Y$ G' h: fmcuos.com
00
, d1 o. s" o! M1 k, T嵌入式开发联盟
214 clocks本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- ~' |3 i. Q& E$ W2 G
214 + 1024 clocks嵌入式开发联盟% F/ `# F- C% q- r4 n3 {7 \
0.28 sec
- e4 W6 l: d3 n5 a* k本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
1.1 msec本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 `2 c0 f$ K  u  ?' q8 _" K& @9 D
01
8 A  w/ W0 j0 G8 {) ]6 ?$ V& G嵌入式开发联盟
216 clocks嵌入式开发联盟* g- A( J/ c3 ]# p& K
216 + 1024 clocks
# [' [7 {7 R& F% I嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
1.12 sec8 s: z: v$ r$ r$ m
4.3 msec
1 Y' `0 }2 I3 J& X! _嵌入式开发联盟
10嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4 j2 v7 j% ]6 F3 T- }: {6 j+ S; F6 d
218 clocks本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 |! a, ?7 m5 L' e
218 + 1024 clocks
0 Y3 y. P$ M# }4 n& tmcuos.com
4.47 sec
) b. i+ {9 l9 x8 ]) C' w- 嵌入式底层驱动开发技术学习网站
17 msec
2 g$ e: W/ x9 |; X+ F( O/ B嵌入式开发联盟
11
2 \/ E: M, u2 S0 j/ P! E3 {嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
220 clocks
" e- L, P7 {8 e. b; S2 p  @mcuos.com
220 + 1024 clocks
, c: o8 M2 ]; o- 嵌入式底层驱动开发技术学习网站
17.9 sec
* j# H7 h6 f4 w# Y* s2 H% S3 [
70 msecmcuos.com) e2 m& I7 `+ R5 M- |" b

, B. S$ p3 P7 Z# J4 v& U/ c  X本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.1.2.8 U; O: J  z" h* y  H. k
定时器控制的示例
嵌入式开发联盟1 I* Z. C- O6 d9 \# A( @7 n
1.1.2.1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习- [2 a9 `- H6 F' J& m% F; X4 k( E
设置普通定时器频率
频率:100/每秒(外部时钟15MHz本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。& w" O, y: n' ]4 y

! ]% w$ i' u; l. S. b, n- 嵌入式底层驱动开发技术学习网站命令:
) \$ O& T" w2 l嵌入式开发联盟1.
( ~8 c5 {: o# b. F( J* ?7 h/ P; z- 嵌入式底层驱动开发技术学习网站
0到寄存器TCSR
6 s2 a0 s0 ]& n7 f( cmcuos.com来禁用定时器。
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。# B9 B, C7 H7 b
2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。0 j& m$ ~0 R+ @- O+ u: h, u4 S
0x249F0到寄存器TICR
$ D3 r! O! N+ y2 M" t来设置定时器初始化计数。
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习0 D7 k0 Z8 h4 Y/ s, x/ @: J
3.
% i8 e: j+ F8 y- O+ E嵌入式开发联盟
0x01TCSR[28:27]来选择周期模式。

. b  _% B3 B, @6 x" a4 Y# p6 ^嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习4.- 嵌入式底层驱动开发技术学习网站9 U2 l7 n& F9 P
1Write 1 TCSR[30]TCSR[29]本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 L( V* a0 Y) S& Q6 j
来启动定时器计数器和定时器中断。

6 Y: @! D* E/ i& C* z! u" P/ k, Q6 I嵌入式开发联盟5.5 k5 C$ x2 V! s+ }0 u! Q
当定时器产生时,检查寄存器TISR
) D' f# l  n" D嵌入式开发联盟并写1来清空特定的定时器中断标记。

0 ]# ^' u& b5 \嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 " @9 _7 |* h0 u+ \

* g2 Y) J, Q, C7 |3 _. smcuos.com0 G( r" A* S2 D* J4 `: u+ i

2 s$ U# c6 ~- |, N& h1 A8 @8 v- 嵌入式底层驱动开发技术学习网站1.1.2.2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。3 d8 m3 P1 y) g9 k
执行看门狗定时器重启功能

$ o2 q# H3 W! I( Z& e; fmcuos.com
, }% I! v/ I+ i. A# V嵌入式开发联盟重启间隔:0.28嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习' K* Q7 i  z& ?! t7 a2 D2 D, c
! E+ F- w% I+ ^- U4 D. b& F- E8 K
命令:
5 ?7 E  K$ i5 i$ D: x$ nmcuos.com1.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习+ }" C% D4 E7 ]6 |/ O. d9 C! v
1WTCR[0]
- 嵌入式底层驱动开发技术学习网站' z- V% ]( n3 G+ a- g2 i5 d
2.嵌入式开发联盟0 p' b. R2 L) l. y, r, v) x: n
0x4C3到寄存器WTCR
4 @  V1 b4 }0 C% m5 v0 I8 e! _

& e, E$ y8 \. W0 B1 E8 ]- 嵌入式底层驱动开发技术学习网站3.
, d& ?. a4 [$ Q1 j# [3 e
当看门狗定时器中断发生时,写1WTCR[3]WTCR[0]来清空看门狗定时器中断标记并重启看门狗定时器。

/ v" D* x, p. A3 I8 Imcuos.com
' x( P# v$ T' K& m2 u4 N5 {嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习 嵌入式开发联盟' `& [9 {% S' [" j9 [
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

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