返回列表 发帖

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

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

1.1.mcuos.com9 W4 x; H1 S! q+ V6 d
概述
W90P710计时器模块包括2个信道,TIMER0TIMER1,允许用户容易地实现一个计数计划。每个信道有独立的时钟资源。输入时钟被一个8bit分频器分频并且随后被一个24bit减计数器引用。当计数器减数到0时,如果中断启动了的话定时器将声明一个中断请求。一个普通的软件计数器计划是用来设置一个软件计数器,并在每一个中断发生时加1给它。嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习6 z$ \% h6 g/ B: ?3 p

$ ~: [" ?# G  H7 [1 A" s6 }& dmcuos.com一个普通的定时器控制器有以下几个特征:, d& M8 F2 c7 D- \$ ]/ {4 w
l
# z# g) ^& Y4 s( Q3 ?1 g本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
AMBA APB接口兼容

' L& }( `4 w& W& ]7 ~0 ~嵌入式开发联盟l嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习& e8 O- d$ w1 C( q0 ^, @# Y' x
兩个带一个8bit分频计数器/24bit减计数器和一个中断申请的信道

; I6 c9 C# z+ D( L; R6 C- 嵌入式底层驱动开发技术学习网站l- 嵌入式底层驱动开发技术学习网站$ _+ |# V% W8 u  Q" f0 b8 m
对每个信道的独立时钟资源

3 C) q  X) x: V嵌入式开发联盟l嵌入式开发联盟. j8 `, ^9 Q# ^
最大不中断时间 = (1 / 25 MHz) * (256) * (2^24), if TCLK = 25 MHz
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! p* j) D* O- M- g: W5 j
- 嵌入式底层驱动开发技术学习网站* i0 q- M* m4 J$ s; T& o
定时器模式也包括一个看门狗定时器。如果系统出问题时,它支持系统重启。这是保护系统免受无限长时间的挂死。看门狗定时器是一个带可编程超时间隔的自由运行的计数器。当特定的时间间隔超时时,它声明一个中断来通知软件去重启计数器。如果在512WDT时钟内计数器没有被重启,看门狗定时器将产生一个系统重启信号来重启整个系统。通常,如果看门狗定时器使能的话,程序会执行一个任务来周期性地重启计数器。- 嵌入式底层驱动开发技术学习网站+ W4 L! Z( w) d+ F. h. @4 D

) V' ~0 ]  X! o! f嵌入式开发联盟

' a+ b. C7 n: Y: S6 X; u. @7 n- 嵌入式底层驱动开发技术学习网站
0 Z: d" C) m/ A/ c/ q

8 ~1 j3 v: j2 l1 O  d  C" F. J% `mcuos.com - 嵌入式底层驱动开发技术学习网站1 ^( I  \/ d* c& p* k2 {
1.1.- 嵌入式底层驱动开发技术学习网站: s; J& {5 r5 T7 b9 p0 |9 |
寄存器映射表
R : 只读, W : 只写, R/W : 可读可写
4 R. H# ^' z2 s. _& ^: |+ D嵌入式开发联盟

Register本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- c4 o/ [3 Y) l& i8 ^  S# _8 ]. n
Address
, u$ s% X! F% W! |  `* K
R/W/C
- d# i& N$ v$ L& n% D, r' Umcuos.com
Description- 嵌入式底层驱动开发技术学习网站8 F! _0 T8 E/ G' v4 @4 p: b. F: Z
Reset Value
3 O6 V# G$ e7 v6 c6 L' y  q- 嵌入式底层驱动开发技术学习网站
TCSR0嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习- d" {' w4 C2 ?, i" L2 T$ {3 X- G
0xFFF8.1000
: p; O4 f  e; W* _* g- 嵌入式底层驱动开发技术学习网站
R/Wmcuos.com9 x6 W! \, K, Q5 ]5 O% H6 X) R
Timer Control and Status Register 0嵌入式开发联盟- v( K9 i- G* a, t3 f4 x& A4 A- j% ?
0x0000.0005
, @" H' @5 D1 ?- \. `3 umcuos.com
TCSR1
3 v  i4 Q% B$ y. J- y7 d' I9 T7 Y嵌入式开发联盟
0xFFF8.1004- 嵌入式底层驱动开发技术学习网站3 }) H8 f1 \! P: @8 s- H8 `  M, Q
R/W+ z" e# i! t+ C) w* \9 o  y
Timer Control and Status Register 1
) R0 }; C; D# k, C- ~- 嵌入式底层驱动开发技术学习网站
0x0000.0005
% c6 d& C# I& M3 q  m$ H1 q本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
TICR0- 嵌入式底层驱动开发技术学习网站$ _4 E& K3 @& E7 |* B8 E2 @  @7 E
0xFFF8.1008嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习" X7 M% Q. |# F! q
R/W
* ^# p* ?( N4 k7 a$ M' ^$ Q8 v! Kmcuos.com
Timer Initial Control Register 0嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习* h3 P6 a0 v. e. h# ?7 i% u" P
0x0000.0000嵌入式开发联盟- ^3 e$ D0 Y$ p* J+ Q
TICR1
. C8 x' d3 c1 r+ U1 N1 w嵌入式开发联盟
0xFFF8.100C
' |3 ^" b0 B, N8 A, S: U- 嵌入式底层驱动开发技术学习网站
R/W
6 ^) W( ~5 T# r0 o$ E7 x: S嵌入式开发联盟
Timer Initial Control Register 1
- U. w6 {/ H6 f* o* t2 ]/ b5 H
0x0000.0000嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习9 U0 w" I/ o' S  G7 @+ @, W: L
TDR07 O; s. W( M: N& n6 M8 q/ O' V: [+ j
0xFFF8.1010
0 Y8 t% r# U9 G8 O% Q% w4 L9 G
R
4 X% T" u/ w  B- 嵌入式底层驱动开发技术学习网站
Timer Data Register 05 S- Z  C/ K1 G8 J0 o
0x0000.0000- 嵌入式底层驱动开发技术学习网站: s& d" l$ ~6 w
TDR1
! L2 @# i1 p& q, V" q: c- 嵌入式底层驱动开发技术学习网站
0xFFF8.10141 x+ L9 e) k1 ?# l  W0 c8 n
R) K& k; v% Z/ r( {8 @
Timer Data Register 1
) T. O$ |9 B2 K  P% s本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0x0000.0000
1 ], Y7 ^& o9 ?( q8 \0 N% r( \
TISR本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。9 E* Y0 |+ P% c# W
0xFFF8.1018嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习! N2 O. u' H( }2 M+ o" Q( m
R/W
% ?: s  S, m# X/ ^* D- 嵌入式底层驱动开发技术学习网站
Timer Interrupt Status Register. y! Z( Z# M2 G# {# t. ^0 T
0x0000.0000嵌入式开发联盟) n! M" P7 L' |
WTCR嵌入式开发联盟$ o  Y6 L: `4 V# M8 M) L8 t
0xFFF8.101C嵌入式开发联盟' E) Q" {- X7 J
R/W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习% m, `/ _( z) B1 ?& g
Watchdog Timer Control Register
- ]/ o8 Z9 G& o! N9 E. F
0x0000.0000
+ {5 y: h  ~* \mcuos.com


: v9 n; P$ p  ~+ h2 n0 M! j- m- 嵌入式底层驱动开发技术学习网站 - 嵌入式底层驱动开发技术学习网站# a" O% ]4 O) p2 T

$ ]  O, p* T2 B( ^" Y嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
/ R8 S2 f3 W2 s) j嵌入式开发联盟
1 A! ~$ Q/ E  O8 N! r( h4 ~嵌入式开发联盟1.2.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习/ b* _0 P" Q" Z% I, i% b( I7 T- I) B
程序设计指南
1.2.1.
. a8 b. t7 @" S6 r  o嵌入式开发联盟
普通定时器中断频率
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ D  P4 b  A: N! T$ q
定时器中断的频率取决于以下等式:嵌入式开发联盟3 z/ p3 v6 E' D8 C5 U& U( _
Freq. = Crystal clock / ((pre-scaler+1) * counter))嵌入式开发联盟/ ~% t1 ?/ k2 q+ X
嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习3 K$ t( B: u3 D8 `0 f) ^
对于W90P710,晶振时钟输出是15 MHz。根据这个等式,用户可以决定分频器和计数器的值来得到想要的中断频率。
" y& R4 ~- F# p* P- 嵌入式底层驱动开发技术学习网站定时器参考设置值:
4 X6 w3 J; X$ U( F: N" P8 c( M2 i嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
Frequency (1/sec)本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ E7 j9 w/ C* K7 R4 e; o5 L$ l
[Pre-Scalar]- 嵌入式底层驱动开发技术学习网站1 H5 H- e9 ^( o: E9 {
[Counter]
# E9 [8 J% `# M4 Z) j嵌入式开发联盟
18
7 F; f' N" _) j! A2 p本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0
6 o( s8 k8 E" @) o; N& R: Y4 R! O2 H
0xCB735
% N) w  w6 I" a( F$ d4 t
40嵌入式开发联盟4 F$ J5 G# ~7 V/ S- d5 X! k0 W7 S% f
0嵌入式开发联盟9 L0 p: ~# s8 m( d9 G
0x5B8D8+ ]+ E+ S4 N& S! q; P
100
' }2 v/ j) M/ N7 d本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
0
/ C' `& ^  @2 g7 L- 嵌入式底层驱动开发技术学习网站
0x249F0嵌入式开发联盟" `' z' `+ [, ^6 W# {  r
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。, h/ l: j% W0 E  g

+ F; @: [0 `- q- ~8 P: f! k6 Q嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.2.2.嵌入式开发联盟5 }' s) d8 S! \% [1 [. r3 |* P
普通定时器初始化
- 嵌入式底层驱动开发技术学习网站' o  J7 e  U+ j! u
在使能计数器中断前,驱动应该设置操作模式、分频器和计数器。定时器支持一次性模式、周期模式和翻转模式给用户来执行计数计划。
1 n1 O& [# X0 z! T( r3 r- qmcuos.com
  • 在一次性模式下,中断信号一旦被产生将不会再次产生除非定时器以后被重新使能。
  • 在周期模式下,中断信号被周期性地产生。
  • 在翻转模式下,中断信号在每个50%周期由低到高或由高到低转换时被产生。
- 嵌入式底层驱动开发技术学习网站, K/ d/ ?5 ^9 K" |
1.1.1.mcuos.com2 Q; q; |* ^7 P9 G! e7 D
普通定时器中断服务流程

3 Q4 \3 M4 [* L: o嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习一个公用的定时器中断服务流程很简单。它包括软件计数器并清空计时器中断状态。mcuos.com) H- q) n; F! ^- F/ S6 U! }, ?0 e
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。! c1 E+ R/ c9 b% b1 K1 Z# a
普通定时器中断服务流程, |( Y- {3 H% v5 [& m6 L
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。" d2 c6 R! Y8 g( o* P

/ Q$ ~; p; U  H- J6 R1.1.1.
( j9 L6 o! A* ?# }# x% emcuos.com
看门狗定时器控制
8 h5 G+ l8 ?4 o) t2 [( F
寄存器WTCR被用来控制看门狗定时器。WTR位应该在启动看门狗定时器之前就被设置。它确保看门狗定时器从一个已知的状态重启。
8 }1 `! z/ }8 \5 W( g& d- 嵌入式底层驱动开发技术学习网站看门狗定时器重启时间(使用15MHz晶振)
: j/ d( w3 l: W嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
WTIS[5:4]嵌入式开发联盟3 p* N% {% H3 s) j5 t
Interrupt Time-outmcuos.com4 v& s; t4 y3 [8 T7 i
Reset Time-out
, ^) A+ o. D0 ?6 a5 b1 `7 u" S' {- 嵌入式底层驱动开发技术学习网站
Actual time WTCLK = 18 D. J5 V5 [, \* q$ V" f+ t
Actual time WTCLK = 0
; B- F/ e& U+ N0 p, F! X嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
00mcuos.com$ r. Y& Q2 T3 Y3 v0 B2 N2 K: x
214 clocks
6 P6 F) m0 g: n, _% L
214 + 1024 clocks
5 w9 w8 t/ M& I' Y, [- Y7 Y嵌入式开发联盟
0.28 sec本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。+ d* N+ u4 C+ ?8 X5 o$ M& f
1.1 msecmcuos.com1 l' G" X% X+ ]$ u6 Q
01
; ?% p  Z) H& d: V: O/ `  J嵌入式开发联盟
216 clocksmcuos.com) r' R; v; b& P
216 + 1024 clocks嵌入式开发联盟) D8 w; g$ y. V. }3 T
1.12 sec
: C8 O. A  p9 l2 W* J; U嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
4.3 msec嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习0 d2 Y! p! a% B  T8 F
10
+ n+ R& u8 _1 o& N! s8 v嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
218 clocks
, S/ y. p! M, V  W' d4 ]本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
218 + 1024 clocks
6 M% ~7 v  D0 |9 }- 嵌入式底层驱动开发技术学习网站
4.47 sec- 嵌入式底层驱动开发技术学习网站& C+ `0 N0 I4 h8 }8 `( Y; r2 w
17 msec
0 M& p: H, Q8 X( A4 O6 p3 d7 j1 ~嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
11
" O8 ?$ g+ `' r. f& G本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。
220 clocks嵌入式开发联盟) t% C; \& I1 {
220 + 1024 clocks本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。  {$ {1 k7 ?5 n: l& i  a9 q- Q4 Y- n5 @
17.9 sec
$ w3 h5 F; T/ Q3 N; R( U* u嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
70 msec
3 {# {9 b* i4 Y8 V" m' y, m嵌入式开发联盟

- t# A7 \* `. E% Q9 E* e嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习1.1.2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。% f, l1 [) k* B7 M$ G
定时器控制的示例
mcuos.com- a1 J0 N7 {- B5 Q1 x
1.1.2.1.
# z4 B# P8 G8 T: ~* E- 嵌入式底层驱动开发技术学习网站
设置普通定时器频率
频率:100/每秒(外部时钟15MHz+ I, @/ m0 x( f" v  {: l
嵌入式开发联盟: R9 ^& m6 ~/ n8 }6 u) y) J" H" s
命令:
  t6 T% F4 N+ z8 F3 ]' A1.
: j3 J2 |2 W: @' ]( G3 g, t- 嵌入式底层驱动开发技术学习网站
0到寄存器TCSR- 嵌入式底层驱动开发技术学习网站8 {& l# O" [/ r0 g
来禁用定时器。
嵌入式开发联盟4 ~8 M$ f. y4 m3 K& B
2.
! _4 u" \6 l- R* }% W  y0 o+ Ymcuos.com
0x249F0到寄存器TICR
4 S: K; Q, l) c  L1 ]( M5 F9 O8 h嵌入式开发联盟来设置定时器初始化计数。
嵌入式开发联盟0 \/ g# f) n3 ]- M9 A3 p# v
3.嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习( f# c* q8 ]  x8 G' i1 d
0x01TCSR[28:27]来选择周期模式。
mcuos.com  i; A4 C2 [1 h. X6 z8 M
4.
& {( h9 m. [8 O; umcuos.com
1Write 1 TCSR[30]TCSR[29]
; H3 e5 z- k  }( U! B1 T嵌入式开发联盟来启动定时器计数器和定时器中断。
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。$ W/ N  ]+ S$ V* l0 z6 Q6 Z7 j
5.嵌入式开发联盟0 z& V+ ~/ F7 @3 y3 O$ Q4 T
当定时器产生时,检查寄存器TISR, g# Y7 l" s# L; y4 [
并写1来清空特定的定时器中断标记。

+ i- i1 w/ L" c8 Y/ e0 x嵌入式开发联盟 本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。7 Z2 _# g' e, q  g) C

; q& `/ j& ?: N' O" K嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习
9 p0 e. n0 ^0 R* h5 `嵌入式开发联盟
. o- a* d1 a& A) g, J& p& x本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。1.1.2.2.本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。- R1 {% ^- f; g$ `3 N! v) `
执行看门狗定时器重启功能
嵌入式开发联盟2 S. U. x' r+ q8 w

) p2 W" _/ I0 n& Y( C, [/ F嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习重启间隔:0.28
+ \( n" K$ Y+ H5 [- 嵌入式底层驱动开发技术学习网站
& C( F! p  A; P+ Z5 {本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。命令:嵌入式开发联盟( v2 t* \3 t+ e5 }, ?
1.- 嵌入式底层驱动开发技术学习网站+ _  v- Z$ v; p. i
1WTCR[0]
本站提供嵌入式底层驱动开发详尽的学习资料,技术帖子,面向嵌入式开发行业初学者,提供有针对性的技术培训服务。0 f: e3 w1 f0 U. r9 X
2.: H( i0 C8 Y, \! f" z; Q
0x4C3到寄存器WTCR嵌入式, 嵌入式开发, Linux, arm, 驱动开发, 嵌入式学习, t7 Q/ L& v; d

4 ]0 ?$ ^( ?& ?, h! E+ E. `, K- 嵌入式底层驱动开发技术学习网站3.
9 r  Y8 X, m. Z# a( Mmcuos.com
当看门狗定时器中断发生时,写1WTCR[3]WTCR[0]来清空看门狗定时器中断标记并重启看门狗定时器。

2 Q) ?0 ~4 s( Y4 g- 嵌入式底层驱动开发技术学习网站. {3 K9 U5 ]$ x' n. |8 f+ i

& N$ f' F7 C3 S# v4 C- 嵌入式底层驱动开发技术学习网站
附件: 您需要登录才可以下载或查看附件。没有帐号?本站只开放邀请码注册,QQ:82475491,索要邀请码
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

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