Megawin MA82G5Dxx 8051-Based MCU 数据手册说明书

Megawin MA82G5Dxx 8051-Based MCU 数据手册说明书


2024年7月3日发(作者:)

15.2.4. 定时器2模式3(捕捉带自动清零)

定时器2模式3与定时器2模式2的功能相似。有一点不同的就是T2EXES、EXF2置位,不但定时器2会被捕捉

而且TL2和TH2也会被清零。

定时器2模式3如图 15–15所示。

图 15–15. 定时器2模式3结构(捕捉带自动清零TL2和TH2)

T2SPL = 0, CP/RL2 = 1, T2MS0 = 1, T2MS1 = 0

00H

Reload

00H

Reload

SYSCLK/12

T2 Pin

SYSCLK

INT0ET

(S0BRG Overflow) S0TOF

(Timer0 Overflow) T0OF

AC0ES

KBIET

{T2CKS, T2X12, C/T2}

T2EX Pin

RXD0

P6.0/XTAL2

INT2ET

ILRCO

AC0OUT

KBIET

TWI0_SCL

CP2S[2:0]

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

T2OF

(T2 overflow)

T2SCT

16-bit Up

Counter

TL2

(8 Bits)

Capture

TH2

(8 Bits)

Overflow

TF2

TF2IG

TR2

RCAP2L

EXEN2

RCAP2H

Timer 2

Interrupt

EXF2

T2EXES

T2EXH

T2CON

T2MOD

T2MOD1

TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL2

1

T2SPL

0

TL2CSTF2IGTL2IST2CKST2MS1

0

CP2S2CP2S1

TL2X12T2EXHT2X12TR2LTR2LCT2OET2MS0

1

CP2S0

T2EXI

100

MA82G5Dxx Data Sheet MEGAWIN

15.2.5. 分割定时器2模式0 (自动重载和外部中断)

本模式中T2SPLIT置位,定时器2 变为两个8位定时器(TH2和TL2)。两个8位定时器都是向上计数如图 15–

16所示。TH2保存RCAP2H的重载值和保持16位模式一样的8个时钟输入选择。8位定时器功能跟16位模式的

定时器2模式0相似。TL2保存4个时钟输入选择的RCAP2L重载值。T2CON的位TR2控制着TH2的运行。

T2MOD的位TR2L控制着TL2的运行。当TR2LC置位时TH2溢出会停止TR2L的运行。

分割模式有3个中断标志EXF2、TF2和TF2L。EXF2与16位模式一样的功能用来侦测T2EXI引脚的跳变。

TF2IG控制TF2在TH2从0xFF到0x00溢出时是否置位。TL2从0xFF到0x00溢出时TF2L置位,TL2IE使能中

断。EXF2、TF2和TF2L中断标志硬件不会清零且必须软件清零。

顺便说,16位模式中的定时器2溢出事件(T2OF)将被分割模式中的TL2溢出事件(TL2OF)取代。

如果T2MOD1的位TL2IS=0,位T2CON.5~4是RCLK和TCLK的功能。如果TL2IS=1,位T2CON.5~4是TF2L

和TL2IE的功能。

图 15–16. 分割定时器2模式0结构(自动重载和外部中断)

T2SPL = 1, CP/RL2 = 0, T2MS0 = 0, T2MS1 = 0

SYSCLK/12

T2 Pin

SYSCLK

(TL2 Overflow) T2LOF

(Timer0 Overflow) T0OF

AC0ES

KBIET

{T2CKS, T2X12, C/T2}

T2EX Pin

RXD0

P6.0/XTAL2

INT2ET

ILRCO

AC0OUT

KBIET

TWI0_SCL

CP2S[2:0]

SYSCLK/12

SYSCLK

(S0BRG Overflow) S0TOF

INT0ET

{TL2CS, TL2X12}

TF2LTL2IE

TCLK

(0,0)

(0,1)

(1,0)

(1,1)

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

T2SCT

8-bit Up Counter

TH2

(8 Bits)

Overflow

TF2

Reload

TF2IG

TR2

RCAP2H

EXEN2

EXF2

Timer 2

Interrupt

T2EXH

T2EXI

TR2LC

Clear TR2L

TL2SCT

8-bit Up Counter

T2EXES

TL2

(8 Bits)

Overflow

TF2L

TL2IE

TR2L

If TL2IS=1

EXEN2TR2C/T2CP/RL2

0

Reload

T2CON

T2MOD

T2MOD1

TF2EXF2RCLK

RCAP2L

TL2 Overflow (TL2OF)

0. T2OF == TL2OF

1. to T2CKO

2. to Peripheral Clock

3. to UART0 RX Clock

4. to UART0 TX Clock

T2SPL

1

TL2CS

TL2X12T2EXHT2X12TR2LTR2LCT2OET2MS0

0

TF2IGTL2IST2CKST2MS1

0

CP2S2CP2S1CP2S0

MEGAWIN MA82G5Dxx Data Sheet

101

15.2.6. 分割定时器2模式1 (自动重载和外部中断)

本模式中T2SPLIT置位,定时器2 变为两个8位定时器如图 15–17所示。跟定时器2模式1相似的功能且保持与

分割定时器2模式0一样的中断方式。

图 15–17. 分割定时器2模式1结构(自动重载和外部中断)

T2SPL = 1, CP/RL2 = 0, T2MS0 = 1, T2MS1 = 0

SYSCLK/12

T2 Pin

SYSCLK

(TL2 Overflow) T2LOF

(S0BRG Overflow) S0TOF

(Timer0 Overflow) T0OF

AC0ES

KBIET

{T2CKS, T2X12, C/T2}

T2EX Pin

RXD0

P6.0/XTAL2

INT2ET

ILRCO

AC0OUT

KBIET

TWI0_SCL

CP2S[2:0]

SYSCLK/12

SYSCLK

(S0BRG Overflow) S0TOF

INT0ET

{TL2CS, TL2X12}

TF2LTL2IE

TCLK

If TL2IS=1

EXEN2TR2C/T2CP/RL2

0

(0,0)

(0,1)

(1,0)

(1,1)

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

T2SCT

8-bit Up Counter

TH2

(8 Bits)

Overflow

TF2

Reload

TF2IG

TR2

RCAP2H

EXEN2

EXF2

Timer 2

Interrupt

T2EXH

T2EXI

TR2LC

Clear TR2L

TL2SCT

8-bit Up Counter

T2EXES

TL2

(8 Bits)

Overflow

TF2L

TR2L

TL2IE

Reload

T2CON

T2MOD

T2MOD1

TF2EXF2RCLK

RCAP2L

TL2 Overflow (TL2OF)

0. T2OF == TL2OF

1. to T2CKO

2. to Peripheral Clock

3. to UART0 RX Clock

4. to UART0 TX Clock

T2SPL

1

TL2CS

TL2X12T2EXHT2X12TR2LTR2LCT2OET2MS0

1

TF2IGTL2IST2CKST2MS1

0

CP2S2CP2S1CP2S0

102

MA82G5Dxx Data Sheet MEGAWIN

15.2.7. 分割定时器2模式2 (捕捉)

本模式中T2SPLIT置位,定时器2 变为两个8位定时器如图 15–18所示。跟定时器2模式2相似的功能且保持与

分割定时器2模式0一样的中断方式。

图 15–18. 分割定时器2模式2结构(捕捉)

T2SPL = 1, CP/RL2 = 1, T2MS0 = 0, T2MS1 = 0

00H

Reload

SYSCLK/12

T2 Pin

SYSCLK

(TL2 Overflow) T2LOF

(S0BRG Overflow) S0TOF

(Timer0 Overflow) T0OF

AC0ES

KBIET

{T2CKS, T2X12, C/T2}

T2EX Pin

RXD0

P6.0/XTAL2

INT2ET

ILRCO

AC0OUT

KBIET

TWI0_SCL

CP2S[2:0]

SYSCLK/12

SYSCLK

(S0BRG Overflow) S0TOF

INT0ET

{TL2CS, TL2X12}

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

T2SCT

8-bit Up Counter

TH2

(8 Bits)

Capture

Overflow

TF2

TF2IG

TR2

RCAP2H

EXEN2

EXF2

Timer 2

Interrupt

T2EXH

T2EXI

TR2LC

(0,0)

(0,1)

(1,0)

(1,1)

T2EXES

Clear TR2L

TL2SCT

8-bit Up Counter

TL2

(8 Bits)

Overflow

TF2L

TR2L

TL2IE

Reload

TF2LTL2IE

TCLK

If TL2IS=1

EXEN2TR2C/T2CP/RL2

1

T2CON

T2MOD

T2MOD1

TF2EXF2RCLK

RCAP2L

TL2 Overflow (TL2OF)

0. T2OF == TL2OF

1. to T2CKO

2. to Peripheral Clock

3. to UART0 RX Clock

4. to UART0 TX Clock

T2SPL

1

TL2CS

TL2X12T2EXHT2X12TR2LTR2LCT2OET2MS0

0

TF2IGTL2IST2CKST2MS1

0

CP2S2CP2S1CP2S0

MEGAWIN MA82G5Dxx Data Sheet

103

15.2.8. 分割定时器2模式3 (捕捉带自动清零)

本模式中T2SPLIT置位,定时器2 变为两个8位定时器如图 15–19所示。跟定时器2模式3相似的功能且保持与

分割定时器2模式0一样的中断方式。

图 15–19. 分割定时器2模式3 结构(捕捉带自动清零TH2)

T2SPL = 1, CP/RL2 = 1, T2MS0 = 1, T2MS1 = 0

00H

ReloadReload

SYSCLK/12

T2 Pin

SYSCLK

(TL2 Overflow) T2LOF

(S0BRG Overflow) S0TOF

(Timer0 Overflow) T0OF

AC0ES

KBIET

{T2CKS, T2X12, C/T2}

T2EX Pin

RXD0

P6.0/XTAL2

INT2ET

ILRCO

AC0OUT

KBIET

TWI0_SCL

CP2S[2:0]

SYSCLK/12

SYSCLK

(S0BRG Overflow) S0TOF

INT0ET

{TL2CS, TL2X12}

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

T2SCT

TH2

(8 Bits)

Capture

Overflow

TF2

8-bit

Up Counter

TF2IG

TR2

RCAP2H

EXEN2

EXF2

Timer 2

Interrupt

T2EXH

T2EXI

TR2LC

(0,0)

(0,1)

(1,0)

(1,1)

T2EXES

Clear TR2L

TL2SCT

8-bit Up Counter

TL2

(8 Bits)

Overflow

TF2L

TR2L

TL2IE

Reload

TF2LTL2IE

TCLK

If TL2IS=1

EXEN2TR2C/T2CP/RL2

1

T2CON

T2MOD

T2MOD1

TF2EXF2RCLK

RCAP2L

TL2 Overflow (TL2OF)

0. T2OF == TL2OF

1. to T2CKO

2. to Peripheral Clock

3. to UART0 RX Clock

4. to UART0 TX Clock

T2SPL

1

TL2CS

TL2X12T2EXHT2X12TR2LTR2LCT2OET2MS0

1

TF2IGTL2IST2CKST2MS1

0

CP2S2CP2S1CP2S0

104

MA82G5Dxx Data Sheet MEGAWIN

15.2.9. 分割定时器2模式4 (8位PWM模式)

本模式,定时器2是一个8位的PWM模式如图 15–20所示。TH2和RCAP2H相结合为一个8位的自动重载计数

器。这二个寄存器的软件配置决定PWM周期。TL2是PWM比较寄存器用来生成PWM波形。RCAP2L是PWM

缓冲寄存器且在此寄存器中软件更新PWM数据。每次TH2溢出事件置位TF2且RCAP2L值载入到TL2。PWM

信号输出到T2CKO功能引脚且输出的开关由T2MOD寄存器的位T2OE决定。

图 15–20. 分割定时器2模式4结构(8位PWM模式)

T2SPL = 1, CP/RL2 = 0, T2MS0 = 0, T2MS1 = 1

SYSCLK/12

T2 Pin

SYSCLK

INT0ET

(S0BRG Overflow) S0TOF

(Timer0 Overflow) T0OF

AC0ES

KBIET

{T2CKS, T2X12, C/T2}

T2EX Pin

RXD0

P6.0/XTAL2

INT2ET

ILRCO

AC0OUT

KBIET

TWI0_SCL

CP2S[2:0]

If TL2IS=1

EXEN2TR2C/T2CP/RL2

0

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

T2SCT

RCAP2H

Reload

8-bit

Up Counter

TF2IG

Overflow

TR2

TH2

(8 Bits)

TF2

T2 Overflow (T2OF)

0. T2OF

1. to T2CKO

2. to Peripheral Clock

3. to UART0 RX Clock

4. to UART0 TX Clock

EXEN2

8-Bit

Comparator

T2OR

Match

S

R

Q

PWMH

PWML

0

1

T2CKO

Q

TL2

(8 Bits)

T2EXH

T2EXI

Reload

TR2LCT2OE

TF2L

Timer 2

Interrupt

TL2IE

TF2LTL2IE

TCLK

RCAP2L

T2CON

T2MOD

T2MOD1

TF2EXF2RCLK

T2SPL

1

TL2CS

TL2X12T2EXHT2X12TR2LTR2LCT2OET2MS0

0

EXF2

TF2IGTL2IST2CKST2MS1

1

CP2S2CP2S1CP2S0

T2EXES

MEGAWIN MA82G5Dxx Data Sheet

105

15.2.10. 波特率发生器模式(BRG)

如果定时器2工作在模式0,T2CON寄存器的RCLK和TCLK位允许串行口发送和接收波特率源可选择定时器1

或定时器2。当TCLK=0时,定时器1作为串行口传送波特率发生器。当TCLK=1,定时器2作为串行口传送波特

率发生器。RCLK对串行口接收波特率有相同的功能。有了这两位,串行口可以有不同的接收和发送波特率,一个

通过定时器1来产生,另一个通过定时器2来产生。

图 15–21所示定时器2在波特率发生器模式UART引擎产生RX和TX时钟(见图 17–6.)。波特率发生器模式像

自动加载模式,翻转时将把寄存器RCAP2H和RCAP2L的值加载到定时器2的寄存器,RCAP2H和RCAP2L的

值由软件预置。

定时器2作为波特率发生器只有在T2CON寄存器的位RCLK=1和/或TCLK=1时有效。注意TH2翻转不会置位

TF2,也不会产生中断。因而,当定进器2在波特率发生器模式时定时器中断不需要禁止。如果EXEN2(T2外部中

断使能位)置位,T2EX(8个定时器2触发输入中的一个)的负跳变将置位EXF2(T2外部标志位),但是不会引起从

(RCAP2H,RCAP2L)到(TH2,TL2的)重载。因此,当定时器2作为波特率发生器时,如果需要的话,T2EX也可

以作为传统的外部中断。T2EXH的功能与EXEN2一样,只是T2EXH使能T2EXI引脚的正跳变侦测。

当定时器2在波特率发生器模式时,不能试着去读或写TH2和TL2。作为一个波特率发生器,定时器2在1/2的

系统时钟频率或从T2引脚的异步时增1;在这些条件下,读或写操作将会不正确。寄存器RCAP2可以读,但是

不可以写,因为写和重载重叠并引起写和/或加载错误。在访问定时器2或RCAP2寄存器之前定时器必须关闭(清

零TR2)。

注意:

当定时器

2

用作波特率发生器时,参考章节

“17.7.4

模式1和3

波特率模式

1

3

获取波特率设定值。

如果定时器2在分割模式0,TL2和RCAP2L相结合为一个8位的波特率发生器如图 15–22所示。TL2溢出置位

TF2L,TL2IE使能中断。TH2和RCAP2H充当一个具有定时器2中断能力的自动重载定时器/计数器。

106

MA82G5Dxx Data Sheet MEGAWIN

图 15–21. 定时器2波特率发生器模式

T2SPL = 0, CP/RL2 = 0, T2MS0 = 0, T2MS1 = 0

2

Timer 1 Overflow

SYSCLK/2

T2 Pin

SYSCLK

INT0ET

(S0BRG Overflow) S0TOF

(Timer0 Overflow) T0OF

AC0ES

KBIET

{T2CKS, T2X12, C/T2}

T2EX Pin

RXD0

P6.0/XTAL2

INT2ET

ILRCO

AC0OUT

KBIET

TWI0_SCL

CP2S[2:0]

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

TF2LTL2IE

TCLK

0/1

T2X12TR2LTR2LCT2OE

If TL2IS=1

EXEN2TR2C/T2CP/RL2

0

T2MS0

0

TF2IGTL2IST2CKST2MS1

0

CP2S2CP2S1CP2S0

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

0

0

1

1

RX Clock to S0

SMOD1

T2SCT

16-bit Up Counter

RCLK

0

TL2

(8 Bits)

TH2

(8 Bits)

Overflow

1

TX Clock to S0

Reload

TCLK

Timer 2 Overflow (T2OF)

1. to T2CKO

2. to Peripheral Clock

TR2

RCAP2L

EXEN2

RCAP2H

TF2IG

TF2

Timer 2

Interrupt

EXF2

T2EXES

T2EXH

T2EXI

T2CON

T2MOD

T2MOD1

TF2EXF2RCLK

0/1

T2SPL

0

TL2CS

TL2X12T2EXH

MEGAWIN MA82G5Dxx Data Sheet

107

图 15–22. 分割定时器2波特率发生器模式

T2SPL = 1, CP/RL2 = 0, T2MS0 = 0, T2MS1 = 0

SYSCLK/12

T2 Pin

SYSCLK

(TL2 Overflow) T2LOF

(S0BRG Overflow) S0TOF

(Timer0 Overflow) T0OF

AC0ES

KBIET

{T2CKS, T2X12, C/T2}

T2EX Pin

RXD0

P6.0/XTAL2

INT2ET

ILRCO

AC0OUT

KBIET

TWI0_SCL

CP2S[2:0]

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

T2SCT

8-bit Up Counter

TH2

(8 Bits)

Overflow

TF2

Reload

TF2IG

TR2

RCAP2H

EXEN2

EXF2

Timer 2

Interrupt

T2EXES

T2EXH

T2EXI

Timer 1 Overflow

SMOD1

2

0

1

TF2L

TL2IE

TL2 Overflow (TL2OF)

0. T2OF == TL2OF

1. to T2CKO

2. to Peripheral Clock

0

Overflow

1

SYSCLK/12

SYSCLK

(S0BRG Overflow) S0TOF

INT0ET

{TL2CS, TL2X12}

(0,0)

(0,1)

(1,0)

(1,1)

TL2SCT

8-bit Up Counter

TL2

(8 Bits)

RX Clock to S0

TR2L

If TL2IS=1

EXEN2TR2C/T2CP/RL2

0

TR2LTR2LC

0

TF2IGTL2IST2CKST2MS1

0

CP2S2CP2S1

T2OET2MS0

0

CP2S0

Reload

RCLK

0

TF2LTL2IE

TCLK

0/1

T2X12

T2CON

T2MOD

T2MOD1

TF2EXF2RCLK

0/1

RCAP2L

TCLK

1

TX Clock to S0

T2SPL

1

TL2CS

TL2X12T2EXH

TL2 for UART0 Baud Rate Generator & T2OF

108

MA82G5Dxx Data Sheet MEGAWIN

15.2.11. 定时器2可编程时钟输出

定时器2有一个时钟输出模式(当模式0并且T2OE=1)。在这个模式,定时器2运行为一个占空比为50%的可编程

时钟输出。 产生的时钟从P1.0输出。输入时钟使16位定时器(TH2, TL2)加一。定时器从载入值到溢出重复计

数。一旦溢出,(RCAP2H, RCAP2L))的值被载入到(TH2, TL2)同时计数。图 15–23给出了定时器2时钟输出频率

计算公式。图 15–24展示了定时器2的时钟输出结构。

图 15–23. 定时器2时钟输出频率计算公式

T2 Clock-out Frequency =

T2 Clock Frequency

2 x (65536 – (RCAP2H, RCAP2L))

注意:

(1)

定时器

2

溢出标志

TF2,

在定时器

2

溢出时置位可产生中断。但是

TF2

中断会被

T2MOD1

寄存器的位

TF2IG

住。

(2)

SYSCLK=12MHz

SYSCLK/12

作为定时器2时钟源

,

定时器

2

可编程输出频率范围从

45.7Hz

3MHz

(3)

SYSCLK=12MHz

SYSCLK

作为定时器2时钟源

,

定时器

2

可编程输出频率范围从

91.5Hz

6MHz

图 15–24. 定时器2时钟输出模式

Port Latch

Q

Timer 2

in Mode 0 or

BRG

T2OF

Toggle

T2OR

DQ

0

1

T2CKO

T2OE

定时器2时钟输出模式如何编程

•选择定时器2时钟源。

•从公式计算出16位自动加载值并输入到RCAP2H和RCAP2L寄存器。

•在TH2和TL2寄存器输入一个跟自动加载值相同的初始值。

• T2MOD寄存器的T2OE置位。

• T2CON寄存器的TR2置位启动定时器2。

在时钟输出模式,定时器2翻转产生中断。这和用作波特率发生器时不同。可同时使用定时器2作为一个波特率发

生器和时钟发生器。注意,波特率和时钟输出都由定时器2的溢出速率来决定且不产生中断。

MEGAWIN MA82G5Dxx Data Sheet

109

如果定时器2在分割模式,时钟输出功能由TL2溢出产生且输出时钟频率为TL2溢出率的二分之一。当TL2溢出

时RCAP2L是TL2重载值。TL2有4种时钟源选择。在使能分割定时器2时钟输出功能之前,软件必须结束TL2

时钟源配置。图 15–25给出了TL2时钟输出频率公式。图 15–26展示了分割定时器2的时钟结构。

图 15–25. 分割定时器2时钟输出公式

Split T2 Clock-out Frequency =

TL2 Clock Frequency

2 x (256 – RCAP2L)

注意:

(1) TL2

溢出标志

TF2L,

TL2

溢出时置位产生中断。但是

TF2L

中断由

T2CON

寄存器的位

TL2IE

使能。

(2)

SYSCLK=12MHz

SYSCLK/12

作为

TL2

时钟源

, TL2

可编程输出频率范围从

1.95KHz

500KHz

(3)

SYSCLK=12MHz

SYSCLK

作为

TL2

时钟源

, TL2

可编程输出频率范围从

23.44KHz

6MHz

图 15–26. 分割定时器2时钟输出模式

Port Latch

Q

Split Timer 2

in Mode 0 or

BRG

TL2OF

Toggle

T2OR

DQ

0

1

T2CKO

T2OE

分割定时器2时钟输出模式如何编程

•选择TL2时钟源。

•从公式计算出8位自动加载值并输入到RCAP2L寄存器。

•在TL2寄存器输入一个跟自动加载值相同的初始值。

• T2MOD寄存器的T2OE置位。

• T2MOD寄存器的TR2L置位启动定时器2。

在时钟输出模式,TL2翻转产生中断。这和TL2用作波特率发生器时相似。可同时使用TL2作为一个波特率发生

器和时钟发生器。注意,在分割定时器2模式下波特率和时钟输出都由TL2的溢出速率来决定。TF2L中断由

T2CON寄存器的TL2IE位使能。

110

MA82G5Dxx Data Sheet MEGAWIN

15.2.12. 定时器2寄存器

T2CON

:定时器

2

控制寄存器

SFR 页 = 仅0页

SFR 地址 = 0xC8

7 6 5

RCLK/

TF2 EXF2

TF2L

R/W R/W R/W

4

TCLK/

TL2IE

R/W

复位值= 0000-0000

3 2

EXEN2

R/W

1

C/T2

R/W

0

CP/RL2

R/W

TR2

R/W

Bit 7:TF2定,定时器2溢出标志。

0:TF2必须软件清零。

1:定时器2溢出TF2置位。当RCLK=1或TCLK=1时,TF2不会被置位。

Bit 6:EXF2,定时器2外部标志。

0:EXF2必须软件清零。

1:当EXEN2=1且在T2EX上有负跳变导致重载或捕获,或者T2EXH=1并且在T2EX上有一个正跳变,将置位定时

器外部标志。当定时器2中断使能时,EXF2=1时将引起CPU进入定时器2中断向量程序。

TL2IS (T2MOD1.5)必须清零而使能位RCLK的访问。

Bit 5:RCLK,接收时钟控制位

0:定时器1溢出用于接收时钟。

1:定时器2溢出用于串行口模式1和3的接收时钟。

TL2IS (T2MOD1.5)必须清零而使能位TF2L的访问。

Bit 5:TF2L,在定时器2分割模式中TL2溢出标志。

0:TF2L必须软件清零。

1:在定时器2分割模式中TL2溢出TF2L置位。

TL2IS (T2MOD1.5)必须清零而使能位TCLK的访问。

Bit 4:TCLK,发送时钟控制位。

0:定时器1溢出用于发送时钟。

1:定时器2溢出用于串行口模式1和3的发送时钟。

TL2IS (T2MOD1.5) 必须清零而使能位TL2IE的访问。

Bit 4:TL2IE,TF2L中断使能。

0:禁止TF2L中断。

1:使能共享定时器2中断入口的TF2L中断。

Bit 3:EXEN2,定时器2外部使能位在T2EX引脚的负跳变。

0:定时器2忽略T2EX引脚的负跳变事件。

1:如果定时器2没有用作串行口时钟,在T2EX的负跳变时捕获或加载并作为结果。如果定时器2配置为串行口0的

时钟,T2EX保持外部信号侦测并产生 EXF2 标志响应中断。

Bit 2:TR2,定时器2运行控制位。如果在定时器2分割模式中,仅控制TH2。

0:定时器2停止运行。

1:定时器2开启运行。

Bit 1:C/T2,定时器或计数器输入源选择位。和T2X12与T2CKS一起决定定时器2的输入来源。如下定义:

T2CKS, T2X12, C/T2

定时器 2时钟源 分割模式下TH2 时钟选择

0 0 0 SYSCLK/12 SYSCLK/12

0 0 1

T2引脚 T2引脚

0 1 0 SYSCLK SYSCLK

0 1 1 INT0ET TL2OF

1 0 0 -- --

MEGAWIN MA82G5Dxx Data Sheet

111

1 0 1

1 1 0

1 1 1

T0OF

AC0ES

KBIET

T0OF

AC0ES

KBIET

Bit 0:CP/RL2,定时器2模式控制位。参考T2MOD.T2MS0 的功能定义描述。

T2MOD

:定时器2模式寄存器

SFR 页 = 仅0页

SFR 地址 = 0xC9 复位值= 0000-0000

7 6 5 4 3 2 1

T2SPL TL2X12 T2EXH T2X12 TR2L TR2LC T2OE

R/W R/W R/W R/W R/W R/W R/W

0

T2MS0

R/W

Bit 7:T2SPL,定时器2分割模式控制。

0:禁止定时器2的分割模式。

1:使能定时器2的分割模式。

Bit 6:TL2X12,定时器2分割模式下TL2时钟控制位。

TL2CS, TL2X12

TL2 时钟选择

0 0 SYSCLK/12

0 1 SYSCLK

1 0 S0TOF

1 1 INT0ET

Bit 5:T2EXH,定时器2外部T2EX 引脚的正跳变使能标志。

0:定时器2忽略T2EX引脚的正跳变事件。

1:如果定时器2没有用作串行口0时钟,在T2EX的正跳变时捕获或加载并作为结果。如果定时器2配置为串行口0

的时钟,T2EX保持外部信号侦测并产生 EXF2 旗标响应中断。

Bit 4:T2X12,定时器2时钟源选择。参考C/T2的功能定义描述。

Bit 3:TR2L,在定时器2分割模式中,TL2 运行控制位。

0:停止TL2。

1:使能TL2。

Bit 2:TR2LC,TR2L清除控制位。

0:禁止硬件事件清零TR2L。

1:使能TH2溢出(定时器2在模式0/1)或者捕获输入(定时器2在模式2/3)时自动清零TR2L。

Bit 1:T2OE,定时器2时钟输出使能位。

0:禁止定时器2时钟输出。

1:使能定时器2时钟输出。

Bit 0:T2MS0,定时器2模式选择位0。

T2SPL, T2MS1, CP/RL2, T2MS0

定时器2模式选择

0 0 0 0

模式0:自动重载和外部中断

0 0 0 1

模式1:自动重载带外部中断

0 0 1 0

模式2:捕捉模式

0 0 1 1

模式3:定时器2捕捉带自动清零

1 0 0 0

分割模式0

1 0 0 1

分割模式1

1 0 1 0

分割模式2

1 0 1 1

分割模式3

1 1 0 0

8位PWM模式

其它 保留

112

MA82G5Dxx Data Sheet MEGAWIN

T2MOD1

:定时器

2

模式寄存器

1

SFR 页 = 仅1页

SFR 地址 = 0x93

7 6 5

TL2CS TF2IG TL2IS

R/W R/W R/W

复位值= 0000-0000

4 3 2

T2CK2 T2MS1 CP2S2

R/W R/W R/W

1

CP2S1

R/W

0

CP2S0

R/W

Bit 7:TL2CS,在定时器2分割模式下的TL2 时钟选择选择。参考2X12的功能描述。

Bit 6:TF2IG,TF2中断忽略。

0:使能TF2中断。默认是使能的。

1:禁止TF2中断。

Bit 5:TL2IS,TF2L和TL2IE访问控制。

0:使能RCLK和TCLK的访问功能在位T2CON.5~4。

1:使能TF2L和TL2IE的访问功能在位T2CON.5~4。

Bit 4:T2CKS,定时器2时钟输入选择。参考C/T2的功能描述。

Bit 3:T2MS1,定时器2模式选择位1。参考T2MOD. T2MS0的功能描述。

Bit 2~0:CP2S.2~0,此3位定义定时器2的捕捉源选择。

CP2S.2~0

定时器2捕捉源选择

0 0 0

T2EX 引脚

0 0 1 RXD0

0 1 0 P6.0/XTAL2

0 1 1 INT2ET

1 0 0 ILRCO

1 0 1 AC0OUT

1 1 0 KBIET

1 1 1 TWI0_SCL

TL2

:定时器

2

低字节寄存器

SFR 页 = 仅0页

SFR 地址 = 0xCC 复位值= 0000-0000

7 6 5 4 3 2 1 0

TL2.7 TL2.6 TL2.5 TL2.4 TL2.3 TL2.2 TL2.1 TL2.0

R/W R/W R/W R/W R/W R/W R/W R/W

TH2

:定时器

2

高字节寄存器

SFR 页 = 仅0页

SFR 地址 = 0xCD

7 6 5

TH2.7 TH2.6 TH2.5

R/W R/W R/W

复位值= 0000-0000

4 3 2

TH2.4 TH2.3 TH2.2

R/W R/W R/W

1

TH2.1

R/W

0

TH2.0

R/W

RCAP2L

:定时器

2

捕捉低字节寄存器

SFR 页 = 仅0页

SFR 地址 = 0xCA 复位值= 0000-0000

7 6 5 4 3 2 1 0

RCAP2L.7 RCAP2L.6 RCAP2L.5 RCAP2L.4 RCAP2L.3 RCAP2L.2 RCAP2L.1 RCAP2L.1

MEGAWIN MA82G5Dxx Data Sheet

113

R/W R/W R/W R/W R/W R/W R/W R/W

RCAP2H

:定时器

2

捕捉高字节寄存器

SFR 页 = 仅0页

SFR 地址 = 0xCB POR+复位值= 0000-0000

7 6 5 4 3 2 1 0

RCAP2H.7 RCAP2H.6 RCAP2H.5 RCAP2H.4 RCAP2H.3 RCAP2H.2 RCAP2H.1 RCAP2H.0

R/W R/W R/W R/W R/W R/W R/W R/W

AUXR4:

辅助寄存器

4

SFR 页 = 仅1页

SFR 地址 = 0xA4

7 6

T2PS1 T2PS0

R/W R/W

5

T1PS1

R/W

POR+复位值= 0000-0x00

4 3 2

T1PS0 SPIPS0 --

R/W R/W W

1

AC0OE

R/W

0

AC0FLT1

R/W

Bit 7~6:T2PS1~0,定时器2端口引脚选择[1:0]。

T2PS1~0 T2/T2CKO T2EX

00 P1.0 P1.1

01 P3.0 P3.1

10 P4.0 P4.1

11 P4.5 P4.4

114

MA82G5Dxx Data Sheet MEGAWIN

15.3. 定时器全局控制

MEGAWIN MA82G5Dxx Data Sheet

115

16. 可编程计数器阵列(PCA0)

MA82G5DXX带有一个可编程计数器阵列(PCA0),该功能与标准定时/计数器相比以更少的CPU占用提供了更多

的定时能力。它的优点包括减少了软件复杂度并提高了精度。

16.1. PCA概述

PCA由一个专用定时/计数器作为一个6组比较/捕获模块的时间基础,图 16–1 显示了PCA的功能方框图。需要注

意的是PCA定时器和模块都是16位的。如果一个外部事件同一个模块关联,那么该功能就和相应的端口引脚共

享。若某模块没有使用端口引脚,这个引脚还可以用作标准I/O。

模块0~5中的任一组都可以编程为如下任意模式:

-上升和/或下降沿捕获

-软件定时器(比较)

-高速输出(比较输出)

-脉宽调制(PWM)输出

-脉宽调制匹配的比较输出(COPM)

所有这些模式将在后面的章节进行详细讨论。这里,让我们先看看如何设置PCA定时器和模块。

图 16–1. PCA方框图

16 Bits Each

Module 0CEX0 Port Pin

Module 1CEX1 Port Pin

16 Bits

overflow

PCA0 Timer/Counter

Module 2CEX2 Port Pin

Module 3

reload

Module 4

16 bits Reload

Resigter

Module 5

CEX3 Port Pin

CEX4 Port Pin

CEX5 Port Pin

116

MA82G5Dxx Data Sheet MEGAWIN

16.2. PCA定时器/计数器

PCA的定时器/计数器由一个可以自动重载的16位定时器由寄存器CH和CL(计数值的高低字节)及CHRL和

CLRL(重载寄存器的高低字节)组成,如图 16–2所示。每次{CH+CL}溢出时CHRL和CLRL的值将会重载到CH

和CL.,这样就可以改变PCA的周期,用于可变PWM分辨率,例如7位或9位PWM。

{CH + CL}是所有模块的共有时间基础,它的时钟输入可以从以下来源选择:

- 1/12 系统时钟频率

- 1/2 系统时钟频率

-定时器0溢出,允许一些低频时钟源输入到定时器

-外部时钟输入,ECI引脚的负跳变

- CKMIX16,参考章节“錯誤! 找不到參照來源。 錯誤! 找不到參照來源。”

- 直接从系统时钟

- SIBRG溢出,S1TOF

- MCKDO,参考章节“錯誤! 找不到參照來源。 錯誤! 找不到參照來源。”。

特殊功能寄存器 CMOD 包含了计数脉冲选择位 (CPS2,CPS1 和 CPS0) 来指定PCA定时器时钟源。这个寄存器也

包括了ECF位来使能计数器{CH+CL}溢出中断。并且计数器溢出切换C0COR,当C0CKOE使能将输出到端口引

脚。此外,用户可以在空闲模式下设置计数器待机位(CIDL),来关闭PCA定时器。这样可以进一步降低空闲模

式下的功耗。

图 16–2. PCA定时器/计数器

SYSCLK/12

SYSCLK/2

(Timer0 Overflow) T0OF

(PCA0 External Input) ECI

CKMIX16

SYSCLK

(S0BRG Overflow) S0TOF

MCKDO

(0,0,0)

(0,0,1)

(0,1,0)

(0,1,1)

(1,0,0)

(1,0,1)

(1,1,0)

(1,1,1)

Port Latch

To PCA0 Module 0~5

16-bits Up Counter

Q

CH

8 bits

Enable

CL

8 bits

overflow

Toggle

C0OR

DQ

0

1

C0CKO

reload

C0CKOE

CF

Enable

CPS[2:0] Indexed

CHRLCLRL

PCA0 Interrupt

IDLE

CIDLBME4BME2BME0CPS2CPS1CPS0ECF

CMOD

CFCRCCF5CCF4CCF3CCF2CCF1CCF0

CCON

CMOD

PCA

计数器模式寄存器

SFR 页 = 仅0页

SFR 地址 = 0xD9

7 6 5

CIDL BME4 BME2

R/W R/W R/W

复位值= 0000-0000

4 3 2

BME0 CPS2 CPS1

R/W R/W R/W

1

CPS0

R/W

0

ECF

R/W

Bit 7:CIDL,PCA计数器空闲模式控制。

0:PCA计数器在空闲模式下继续运行。

1:空闲模式下关闭PCA计数器。

Bit 6:BME4,PCA模块4/5缓冲模式使能。仅在捕捉模式,PWM模式或COPM模式下的PCA模块4和5有

效。

0:PCA 模块4/5禁止缓冲模式。

MEGAWIN MA82G5Dxx Data Sheet

117

1:PCA 模块4/5使能缓冲模式。

Bit 5:BME2,PCA模块2/3缓冲模式使能。仅在捕捉模式,PWM模式或COPM模式下的PCA模块2和3有

效。

0:PCA 模块2/3禁止缓冲模式。

1:PCA 模块2/3 使能缓冲模式。

Bit 4:BME0,PCA模块0/1缓冲模式使能。仅在捕捉模式,PWM模式或COPM模式下的PCA模块0和1有

效。

0:PCA 模块0/1禁止缓冲模式。

1:PCA 模块0/1使能缓冲模式。

Bit 3~1:CPS2~0,PCA计数器时钟源选择位。

CPS2 CPS1 CPS0

PCA 时钟源

0 0 0

内部时钟,(system clock)/12

0 0 1

内部时钟,(system clock)/2

0 1 0

定时器0溢出

0 1 1

来自ECI引脚的外部时钟

1 0 0

CKMIX16输出

1 0 1

内部时钟,(system clock)/1

1 1 0

保留.

1 1 1

MCK分频器输出,MCKDO

Bit 0:ECF,使能PCA计数器溢出中断。

0:当CF位(CCON寄存器中)置位时禁止中断。

1:当CF位(CCON寄存器中)置位时使能中断。

如下所示的CCON寄存器包含PCA运行控制位和PCA定时器与每个模块的标志。要运行PCA,CR为(CCON.6)

必须软件置位。要关闭PCA,可以清除该位。PCA计数器溢出时,CF (CCON.7)置位,并且若CMOD寄存器的

ECF置位,还会产生一个中断。CF位只能软件清零。CCF0到CCF5是模块0到模块5的各自中断标志位,当发生一

个匹配或捕获事件时,硬件置位,这些位也必须软件清零。PCA中断系统如图 16–3所示。

CCON

PCA

计数器控制寄存器

SFR 页 = 仅0页

SFR 地址 = 0xD8 复位值= 0000-0000

7 6 5 4 3 2 1 0

CF CR CCF5 CCF4 CCF3 CCF2 CCF1 CCF0

R/W R/W R/W R/W R/W R/W R/W R/W

Bit 7:CF,PCA计数器溢出标志

0:只能软件清零。

1:计数器溢出时硬件置位。CF标志在CMOD寄存器的ECF置位时会产生一个中断。CF可以硬件或软件置位。

Bit 6:CR,PCA计数器运行控制位。

0:软件清零关闭PCA计数器。

1:软件清零开启PCA计数器。

Bit 5:CCF5,PCA模块5中断标志。

0:只能软件清零。

1:当发生一个匹配或捕获事件时,硬件置位。

Bit 4:CCF4,PCA模块4中断标志。

0:只能软件清零。

1:当发生一个匹配或捕获事件时,硬件置位。

118 MA82G5Dxx Data Sheet MEGAWIN

Bit 3:CCF3,PCA模块3中断标志。

0:只能软件清零。

1:当发生一个匹配或捕获事件时,硬件置位。

Bit 2:CCF2,PCA模块2中断标志。

0:只能软件清零。

1:当发生一个匹配或捕获事件时,硬件置位。

Bit 1:CCF1,PCA模块1中断标志。

0:只能软件清零。

1:当发生一个匹配或捕获事件时,硬件置位。

Bit 0:CCF0,PCA模块0中断标志。

0:只能软件清零。

1:当发生一个匹配或捕获事件时,硬件置位。

图 16–3. PCA中断系统

CFCRCCF5CCF4CCF3CCF2CCF1CCF0

CCON

PCA0 Timer/Counter

Module 0

Module 1

Module 2

Module 3

Module 4

Module 5

CCAPMn.0 (n=0~5)

ECCF0~ECCF5

To Interrupt

Priority Processing

MEGAWIN MA82G5Dxx Data Sheet

119

CH

PCA

基准时钟高字节

SFR 页 = 仅0页

SFR 地址 = 0xF9

7 6 5

CH.7 CH.6 CH.5

R/W R/W R/W

复位值= 0000-0000

4 3 2

CH.4 CH.3 CH.2

R/W R/W R/W

1

CH.1

R/W

0

CH.0

R/W

CL

PCA

基准时钟低字节

SFR 页 = 仅0页

SFR 地址 = 0xE9

7 6 5

CL.7 CL.6 CL.5

R/W R/W R/W

复位值= 0000-0000

4 3 2

CL.4 CL.3 CL.2

R/W R/W R/W

1

CL.1

R/W

0

CL.0

R/W

CHRL

PCA CH

重载寄存器

SFR 页 = 仅0页

SFR 地址 = 0xCF

7 6 5

CHRL.7 CHRL.6 CHRL.5

R/W R/W R/W

复位值= 0000-0000

4 3 2

CHRL.4 CHRL.3 CHRL.2

R/W R/W R/W

1

CHRL.1

R/W

0

CHRL.0

R/W

Bit 7~0:CHRL,CH的重载值。

CLRL

PCA CL

重载寄存器

SFR 页 = 仅0页

SFR 地址 = 0xCE

7 6 5

CLRL.7 CLRL.6 CLRL.5

R/W R/W R/W

复位值= 0000-0000

4 3 2

CLRL.4 CLRL.3 CLRL.2

R/W R/W R/W

1

CLRL.1

R/W

0

CLRL.0

R/W

Bit 7~0:CLRL,CL的重载值。

120

MA82G5Dxx Data Sheet MEGAWIN

16.3. 比较/捕捉模块

比较/捕获模块0~5中的每一组都有一个模式寄存器,叫做CCAPMn(n = 0,1,2,3,4或5),用来选择其工

作模式。ECCFn位控制当模块中断标志置位时每个模块的中断使能。

CCAPMn

PCA

模块比较/捕捉寄存器,

n=0~5

SFR 页 = 仅0页

SFR 地址 = 0xDA~0xDF 复位值= x000-0000

7 6 5 4 3 2 1 0

-- ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn

W R/W R/W R/W R/W R/W R/W R/W

Bit 7:保留位。当CCAPMn被写入时,这位必须软件写“0”。

Bit 6:ECOMn,比较器使能。

0:禁止数字比较器功能。

1:使能数字比较器功能。

Bit 5:CAPPn,正跳变捕捉使能。

0:禁止PCA捕捉功能在CEXn引脚上正跳变侦测。

1:使能PCA捕捉功能在CEXn引脚上正跳变侦测。

Bit 4:CAPNn,负跳变捕捉使能。

0:禁止PCA捕捉功能在CEXn引脚上负跳变侦测。

1:使能PCA捕捉功能在CEXn引脚上负跳变侦测。

Bit 3:MATn,匹配控制。

0:禁止数字比较器匹配事件去置位CCFn。

1:PCA计数器同相应模块的比较/捕获寄存器匹配时CCON寄存器的CCFn置位。

Bit 2:TOGn,切换控制。

0:禁止数字比较器匹配事件去切换CEXn。

1:PCA计数器同相应模块的比较/捕获寄存器匹配时使CEXn引脚切换。

Bit 1:PWMn,PWM控制。

0:禁止PCA模块中的PWM模式。

1:使能PWM功能并使CEXn引脚用作脉宽调制输出。

Bit 0:ECCFn,使能CCFn中断。

0:禁止CCON寄存器中的比较/捕获标志位CCFn产生中断。

1:使能CCON寄存器中的比较/捕获标志位CCFn产生中断。

注意:

CAPNn (CCAPMn.4)

位和

CAPPn (CCAPMn.5)

位决定了捕捉输入的信号脉冲沿,若这两位同时设置,则正

负跳变都会发生捕获。

每个模块都有一对8位比较/捕获寄存器(CCAPnH, CCAPnL)。这些寄存器用来存储一个捕捉事件发生的时间或者

一个比较时间产生的时间。当模块用于PWM模式时,除这两个寄存器之外,一个扩展寄存器PCAPWMn 用来扩

展输出占空比的范围,扩展的范围从0%到100%,步距是1/256。关于 10/12/16 bit PWM…

MEGAWIN MA82G5Dxx Data Sheet

121

CCAPnH

PCA

模块

n

捕捉高寄存器

n=0~5

SFR 页 = 仅0页

SFR 地址 = 0xFA~0xFF 复位值= 0000-0000

7 6 5 4 3 2 1 0

CCAPnH.7 CCAPnH.6 CCAPnH.5 CCAPnH.4 CCAPnH.3 CCAPnH.2 CCAPnH.1 CCAPnH.0

R/W R/W R/W R/W R/W R/W R/W R/W

CCAPnL

PCA

模块

n

捕捉低寄存器

n=0~5

SFR 页 = 仅0页

SFR 地址 = 0xEA~0xEF 复位值= 0000-0000

7 6 5 4 3 2 1 0

CCAPnL.7 CCAPnL.6 CCAPnL.5 CCAPnL.4 CCAPnL.3 CCAPnL.2 CCAPnL.1 CCAPnL.0

R/W R/W R/W R/W R/W R/W R/W R/W

PCAPWMn

PWM

模式辅助寄存器,

n=0~5

SFR 页 = 仅0页

SFR 地址 = 0xF2~0xF7

7 6 5 4

PnRS1 PnRS0 -- --

R/W R/W W W

复位值= 00xx-x000

3 2

-- PnINV

W R/W

1

ECAPnH

R/W

0

ECAPnL

R/W

Bit 7~6:PnRS1~0,PWMn分别率设置位1~0。

00:8位PWMn,当[CH, CL]计数从XXXX-XXXX-1111-1111到XXXX-XXXX-0000-0000时溢出激活。

01:10位PWMn,当[CH, CL]计数从XXXX-XX11-1111-1111到XXXX-XX00-0000-0000时溢出激活。

10:12位PWMn,当[CH, CL]计数从XXXX-1111-1111-111到XXXX-0000-0000-0000时溢出激活。

11:16位PWMn,当[CH, CL]计数从1111-1111-1111-1111到0000-0000-0000-0000时溢出激活。

Bit 5~3:保留位。当PCAPWMn被写入时,这些位必须软件写“0”。

Bit 2:PnINV,比较/PWM输出(C0PnOR)在CEXn引脚上反转。

0:比较/PWM输出(C0PnOR)不反转。

1:比较/PWM输出(C0PnOR)反转。

Bit 1:ECAPnH,扩展第9位(MSB),联合CCAPnH 形成9位寄存器用于PWM模式。

Bit 0:ECAPnL,扩展第9位(MSB),联合CCAPnL形成9位寄存器用于PWM模式。

122

MA82G5Dxx Data Sheet MEGAWIN

16.4. PCA操作模式

表 16–1展示了不同PCA功能对应的CCAPMn寄存器设置。

表 16–1. PCA模块模式

ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn

0

X

X

X

1

1

1

1

0

1

0

1

0

0

0

0

0

0

1

1

0

0

0

0

0

0

0

0

1

1

0

0

0

0

0

0

0

1

0

1

0

0

0

0

0

0

1

1

0

X

X

X

X

X

X

X

无操作

CEXn 引脚正跳变触发16位捕捉

CEXn 引脚负跳变触发16位捕捉

CEXn 引脚正负跳变触发16位捕捉

16位软件定时器(比较)

16位高速输出(HSO)

脉宽调制器 (PWM)

PWM 配对的比较输出 (COPM)

模块功能

MEGAWIN MA82G5Dxx Data Sheet

123

16.4.1. 捕捉模式

要让某一PCA模块工作在捕获模式, CAPN和CAPP任何一位或两位必须置位。外部CEX输入会在每次跳变时采

样。当有效跳变发生时,PCA硬件会将PCA计数器寄存器值(CH和CL)载入到模块的捕捉寄存器(CCAPnH和

CCAPnL)。若模块的CCFn和ECCFn标志同时置位,会产生一个中断。

通道4的捕捉输入由软件在CEX4端口引脚和AC0输出的AC0OUT之间选择。同样,通道2输入可以交替选择到

ILRCO时钟源。

图 16–4. PCA捕捉模式

CFCRCCF5CCF4CCF3CCF2CCF1CCF0

CCON

PCA Interrupt

(To CCFn)

CCAPnHCCAPnL

Capture

CEXn

n = 0 ~ 5

CHCL

PCA Timer/Counter

overflow

reload

CCAPMn

n = 0 ~ 5

--

0

ECOMn

CAPPn

0/1

CAPNn

0/1

MATn

0

TOGn

0

PWMn

0

ECCFn

0/10

CAPPn or CAPNn =1

CHRLCLRL

CEX4 Port Pin

AC0OUT

(from AC0 module)

0

1

CEX4 capture

input

CEX2 Port Pin

ILRCO clock

C0IC2S0

(AUXR5.6)

0

1

CEX2 capture

input

C0IC4S0

(AUXR5.7)

124

MA82G5Dxx Data Sheet MEGAWIN

16.4.2. 缓冲捕捉模式

为了捕捉窄的输入信号,缓冲捕捉模式是必要的。如果使能,将把奇数模块捕捉数据寄存器(CCAPnH,

CCAPnL,n= 1,3,5)送到偶数模块捕捉数据寄存器(通道0,2,4)。这不影响模块0/2/4的捕捉操作。BME0使

能通道0/1的缓冲操作。BME2和BME4控制模块2/3和模块4/5。

图 16–5. PCA缓冲捕捉模式(BMEn=1, n= 0, 2, 4)

PCA Interrupt

CCON

CFCRCCF5CCF4CCF3CCF2CCF1CCF0

CCAPnHCCAPnLn = 1, 3, 5

(To CCFn)

CCAPnH

CEXn

n = 0, 2, 4

Capture

CCAPnLn = 0, 2, 4

PCA Timer/Counter

CCAPMn

n = 0, 2, 4

--

0

ECOMn

CAPPn

1

CAPNn

1

MATn

0

TOGn

0

PWMn

0

ECCFn

0/1

CHCL

overflow

reload

0

CAPPn or CAPNn =1

CMOD

CIDLBME4

0/1

BME2

0/1

BME0

0/1

CPS2CPS1CPS0ECF

1. Module 0 and module 1 are paired if BME0 is set.

2. Module 2 and module 3 are paired if BME2 is set.

3. Module 4 and module 5 are paired if BME4 is set.

CHRLCLRL

图 16–6. PCA缓冲捕捉模式波形

CEXn input

n = 0, 2, 4

{CH,CL}

{CCAPnH,CCAPnL}

n = 0, 2, 4

n - 1

m

n

Transfer

n + 1

n

Transfer

{CCAPnH,CCAPnL}

n = 1, 3, 5 (buffer)

m

CCFn

CCFn Cleared

Before Capture

n = 0, 2, 4

Software clear

Transfer

Software clear

CCFn

n = 1, 3, 5

CCFn

CCFn un-Cleared

Before Capture

n = 0, 2, 4

Transfer

Software clear

CCFn

n = 1, 3, 5

Software clear

MEGAWIN MA82G5Dxx Data Sheet

125

16.4.3. 16位软件定时器模式(比较模式)

PCA模块可以通过设置CCAPMn寄存器的ECOM位和MAT位来作为一个软件定时器使用。PCA定时器与模块的捕

获寄存器值进行比较,若相等且当CCFn和ECCFn位同时设置时会产生一个中断信号。

图 16–7. PCA软件定时器模式

Write to

CCAPnL

Write to

CCAPnH

10

CFCRCCF5CCF4CCF3CCF2CCF1CCF0

CCON

Reset

CCAPnHCCAPnL

PCA Interrupt

(To CCFn)

Enable

16-Bit Comparator

Match

PCA Timer/Counter

CHCL

overflow

reload

CHRLCLRL

1

--

0

ECOMn

CAPPn

0

CAPNn

0

MATn

1

TOGn

0

PWMn

0

ECCFn

0/1

CCAPMn, n = 0 ~ 5

126

MA82G5Dxx Data Sheet MEGAWIN

16.4.4. 高速输出模式(比较输出模式)

这种模式下,每当PCA计数器与模块捕获寄存器值相等时,CEX的输出就翻转一次。为激活这种模式,CCAPMn

寄存器的TOG、MAT 和 ECOM 位必须都置为1。

图 16–8. PCA高速输出模式

Write to

CCAPnL

Write to

CCAPnH

10

CFCRCCF5CCF4CCF3CCF2CCF1CCF0

CCON

Reset

CCAPnHCCAPnL

PCA Interrupt

ECCFn

Port I/O

PCA Timer/Counter

CHCL

overflow

Toggle

reload

Q

(To CCFn)

Enable

16-Bit Comparator

Match

C0PnOR

DQ

PWMnH

PWMnL

0

1

0

1

CEXn

(PWMn)

n = 0 ~ 5

CHRLCLRL

1

--

0

ECOMn

CAPPn

0

CAPNn

0

MATn

1

TOGn

1

PWMn

0

ECCFn

0/1

CCAPMn,

n= 0 ~ 5

PnRS1

0

PnRS0

0

------PnINVECAPnHECAPnL

PCAPWMn,

n = 0 ~ 5

MEGAWIN MA82G5Dxx Data Sheet

127

16.4.5. 缓冲8位PWM模式

所有PCA模块都可用作PWM输出。输出频率取决于PCA定时器的时钟源。所有的模块都有相同的输出频率,因为

它们共享PCA定时器。

占空比取决于模块捕获寄存器CCAPnL 与扩展的第9位ECAPnL的值。当9位数据{0,[CL]}值小于{ ECAPnL,

[CCAPnL] }组成的9位数据时,输出低电平,相等或大于时输出高电平。

当CL从0xFF到0x00溢出时,{ ECAPnL, [CCAPnL] } 的值使用{ ECAPnH,[CCAPnH] }的值重载,这样可以允许无

异常的情况下更新PWM。模块的CCAPMn寄存器PWMn和 ECOMn位必须置位以使能PWM模式。

使用9位比较,输出的占空比可以真正实现从0%到100%可调。占空比计算公式如下:

占空比

= 1 – { ECAPnH, [CCAPnH] } / 256.

这里, [CCAPnH] 是CCAPnH 寄存器的8位值, ECAPnH ( PCAPWMn 寄存器的第1位) 是1位值。所以,

{ ECAPnH, [CCAPnH] } 组成了9位比较器用的9位值。

例如,

a. 若ECAPnH=0且CCAPnH=0x00 (即9位值, 0x000), 占空比为100%。

b. 若ECAPnH=0且CCAPnH=0x40 (即9位值, 0x040), 占空比为75%。

c. 若ECAPnH=0且CCAPnH=0xC0 (即9位值, 0x0C0), 占空比为25%。

d. 若ECAPnH=1且CCAPnH=0x00 (即9位值, 0x100), 占空比为0%。

图 16–9. PCA缓冲8位PWM模式

Buffered 8-bit PWM: PnRS[1:0] = 00

0

--

1

ECOMn

0

CAPPn

0

CAPNn

0

MATn

0

TOGn

1

PWMn

0/1

ECCFn

CCAPMn,

n= 0 ~ 5

CFCRCCF5CCF4CCF3CCF2CCF1CCF0

CCON

9 Bits

ECAPnHCCAPnH

reload

C0PLK

(To CCFn)

PCA Interrupt

9th Bit

9 Bits

ECCFn

Port I/O

Q

ECAPnLCCAPnL

C0PnOR

Enable

9-Bit Comparator

9 Bits

match

S

R

Q

PWMnH

PWMnL

0

1

0

1

Q

CEXn

(PWMn)

n = 0 ~ 5

PCA Timer/Counter

(Fixed 0)CL

overflow

reload

PnRS1PnRS0

0

------PnINV

PWMn

PCAPWMn,

n = 0 ~ 5

ECAPnHECAPnL

CLRL

0

128

MA82G5Dxx Data Sheet MEGAWIN

16.4.6. 无缓冲10/12/16位PWM模式

PCA提供可变的PWM模式以增强控制能力。有额外的10/12/16位PWM被分配给每一路及每一路PWM有不同

的分辨率操作能力。

图 16–10. PCA无缓冲10/12/16位PWM模式

Un-buffered 10/12/16-bit PWM: PnRS[1:0] = 01/10/11

0

--

1

ECOMn

0

CAPPn

0

CAPNn

0

MATn

0

TOGn

1

PWMn

0/1

ECCFn

CCAPMn,

n= 0 ~ 5

CFCRCCF5CCF4CCF3CCF2CCF1CCF0

CCON

ECAPnH

reload

11/13/17th Bit

11/13/17 Bits

C0PLK

(To CCFn)

PCA Interrupt

ECCFn

Port I/O

Q

ECAPnLCCAPnHCCAPnL

C0PnOR

Enable

11/13/17-Bit Comparator

match

S

R

Q

PWMnH

PWMnL

0

1

0

1

Q

CEXn

(PWMn)

n = 0 ~ 5

17 Bits

PCA Timer/Counter1b '0'

11/13/17th Bit

CHCL

overflow

PWMn

reload

CHRLCLRL

PnRS1

0/1

PnRS0

0/1

------PnINVECAPnHECAPnL

PCAPWMn,

n = 0 ~ 5

MEGAWIN MA82G5Dxx Data Sheet

129

16.4.7. 缓冲10/12/16位PWM模式

图 16–11. PCA缓冲10/12/16位PWM模式

Buffered 10/12/16-bit PWM: BM0/BM2/BM4 = 1, PnRS[1:0] = 01/10/11

0

--

1

ECOMn

0

CAPPn

0

CAPNn

0

MATn

0

TOGn

1

PWMn

0/1

ECCFn

CCAPMn,

n= 0 to 5

CFCRCCF5CCF4CCF3CCF2CCF1CCF0

CCON

11/13/17th Bit

ECAPnLCCAPnHCCAPnLn= 1, 3, 5

C0PLK

(To CCFn)

n = 0, 2, 4

PCA Interrupt

reload

ECCFn

11/13/17 Bits

Port I/O

n= 0, 2, 4

C0PnOR

Q

ECAPnLCCAPnHCCAPnL

Enable

11/13/17-Bit Comparator

match

S

R

Q

PWMnH

PWMnL

0

1

PnINV

n= 0, 2, 4

0

1

Q

CEXn

(PWMn)

n = 0, 2, 4

17 Bits

PCA Timer/Counter1b '0'

11/13/17th Bit

CHCL

overflow

PWMn

n= 0, 2, 4

Port I/O

0

0

1

reload

CHRLCLRL

PnINV

n= 1, 3, 5

1

CEXn

(PWMn)

n = 1, 3, 5

PnRS1

0/1

PnRS0

0/1

------PnINVECAPnHECAPnL

PCAPWMn,

n = 0 ~ 5

CMOD

PWMn

n= 1, 3, 5

CIDLBME4

0/1

BME2

0/1

BME0

0/1

CPS2CPS1CPS0ECF

1. Module 0 and module 1 are paired if BME0 is set.

2. Module 2 and module 3 are paired if BME2 is set.

3. Module 4 and module 5 are paired if BME4 is set.

130

MA82G5Dxx Data Sheet MEGAWIN

16.4.8. COPM模式

图 16–12. PCA COPM模式

Un-buffered COPM: PnRS[1:0] = 00/01/10/11

CFCRCCF5CCF4CCF3CCF2CCF1CCF0

CCON

0

--

1

ECOMn

0

CAPPn

0

CAPNn

0

MATn

1

TOGn

1

PWMn

0/1

ECCFn

CCAPMn, n= 0 ~ 5

(To CCFn)

PCA Interrupt

ECCFn

Port I/O

Q

Enable

PCA Module n (n=0~5)

PWM Comparator

match

Toggle

C0PnOR

DQ

PWMnH

PWMnL

0

1

PWMn

0

1

CEXn

(PWMn)

n = 0 ~ 5

PnRS1

0/1

PnRS0

0/1

------PnINVECAPnHECAPnL

PCAPWMn,

n = 0 ~ 5

MEGAWIN MA82G5Dxx Data Sheet

131

16.4.9. 缓冲COPM 模式

图 16–13. PCA缓冲COPM模式

Buffered COPM: PnRS[1:0] = 00/01/10/11, BME0/BME2/BME4 = 1

CFCRCCF5CCF4CCF3CCF2CCF1CCF0

CCON

0

--

1

ECOMn

0

CAPPn

0

CAPNn

0

MATn

1

TOGn

1

PWMn

0/1

ECCFn

CCAPMn, n= 0/2/4

(To CCF0/2/4)

(To CCF1/3/5)

PCA Interrupt

ECCFn

Port I/O

Q

C0PnOR

Enable

PCA Module n (n=0/2/4)

PWM Comparator

match

S

R

Q

PWMnH

PWMnL

0

1

PnINV

n= 0, 2, 4

0

1

Q

CEXn

(PWMn)

n = 0, 2, 4

PCA Module n (n=1/3/5)

PWM Comparator

match

PWMn

n= 0, 2, 4

Port I/O

0

1

0

1

PnRS1

0/1

PnRS0

0/1

------PnINVECAPnHECAPnL

PCAPWMn,

n = 0 ~ 5

CMOD

PnINV

n= 1, 3, 5

CIDLBME4

0/1

BME2

0/1

BME0

0/1

CPS2CPS1CPS0ECF

CEXn

(PWMn)

n = 1, 3, 5

1. Module 0 and module 1 are paired if BME0 is set.

2. Module 2 and module 3 are paired if BME2 is set.

3. Module 4 and module 5 are paired if BME4 is set.

PWMn

n= 1, 3, 5

132

MA82G5Dxx Data Sheet MEGAWIN

16.4.10. PCA模块输出控制

图 16–14. PCA模块输出控制

Port I/O

Q

PWMnH

PWMnL

PnINV

PWMn

POEn

0

1

PWMnO

0

1

CEXn(PWMn),

n= 1,3,4,5

Port I/O

Q

0

1

PWMn

POEnA

PWMnA

n = 0, 2

Port I/O

Q

PWMnH

PWMnL

PnINV

0

1

PWMnO

PWMn

POEn

0

1

CEXn(PWMn),

n= 0,2

Port I/O

Q

0

1

PWMn

POEnB

PWMnB

n = 0, 2

MEGAWIN MA82G5Dxx Data Sheet

133

PAOE: PWM

额外输出使能寄存器

SFR 页 = 0~F

SFR 地址 = 0xF1

7 6 5

POE3 POE2B POE2A

R/W R/W R/W

复位值= 1001-1001

4 3 2

POE2 POE1 POE0B

R/W R/W R/W

1

POE0A

R/W

0

POE0

R/W

Bit 7:POE3,PCA0 PWM3主通道(PWM3O)输出控制。

0:禁止PWM3O在端口引脚输出。

1:使能PWM3O在端口引脚输出。默认是使能。

rd

Bit 6:POE2B,PCA0 PWM2 3通道(PWM2B)输出控制。

0:禁止PWM2B在端口引脚输出。默认是禁止。

1:使能PWM2B在端口引脚输出。

nd

Bit 5:POE2A,PCA0 PWM2 2通道(PWM2A)输出控制。

0:禁止PWM2A在端口引脚输出。默认是禁止。

1:使能PWM2A在端口引脚输出。

Bit 4:POE2,PCA0 PWM2主通道(PWM2O)输出控制。

0:禁止PWM2O在端口引脚输出。

1:使能PWM2O在端口引脚输出。默认是使能。

Bit 3:POE1,PCA0 PWM1主通道(PWM1O)输出控制。

0:禁止PWM1O在端口引脚输出。

1:使能PWM1O在端口引脚输出。默认是使能。

rd

Bit 2:POE0B,PCA0 PWM0 3通道(PWM0B)输出控制。

0:禁止PWM0B在端口引脚输出。默认是禁止。

1:使能PWM0B在端口引脚输出。

nd

Bit 1:POE0A,PCA0 PWM0 2通道(PWM0A)输出控制。

0:禁止PWM0A在端口引脚输出。默认是禁止。

1:使能PWM0A在端口引脚输出。

Bit 0:POE0,PCA0 PWM0主通道(PWM0O)输出控制。

0:禁止PWM0O在端口引脚输出。

1:使能PWM0O在端口引脚输出。默认是使能。

AUXR7:

辅助寄存器

7

SFR 页 = 仅4页

SFR 地址 = 0xA4 复位值= 1100-xxxx

7 6 5 4 3 2

POE5 POE4 C0CKOE SPI0M0 -- --

R/W R/W R/W R/W W W

1

--

W

0

--

W

Bit 7:POE5,PCA0 PWM5主通道(PWM5O)输出控制。

0:禁止PWM5O在端口引脚输出。

1:使能PWM5O在端口引脚输出。默认是使能。

Bit 6:POE4,PCA0 PWM4主通道(PWM4O)输出控制。

0:禁止PWM4O在端口引脚输出。

1:使能PWM4O在端口引脚输出。默认是使能。

Bit 5:C0CKOE,PCA0时钟输出使能。

134

MA82G5Dxx Data Sheet MEGAWIN

0:禁止PCA0时钟输出。

1:使能PCA0基本定时器溢出率二分之一的时钟输出。

AUXR5:

辅助寄存器

5

SFR 页 = 仅2页

SFR 地址 = 0xA4 复位值= 0000-0000

7 6 5 4 3 2

C0IC4S0 C0IC2S0 C0PPS1 C0PPS0 C0PS1 C0PS0

R/W R/W R/W R/W R/W R/W

1

ECIPS0

R/W

0

C0COPS

R/W

Bit 7:C0IC4S0,PCA0输入通道4输入端口引脚选择。

C0IC4S0

CEX4输入

0

CEX4端口引脚

1 AC0OUT

Bit 6:C0IC2S0,PCA0输入通道2输入端口引脚选择。

C0IC2S0

CEX2输入

0

CEX2端口引脚

1 ILRCO

Bit 5:C0PPS1,{PWM2A, PWM2B}端口引脚选择0。

C0PPS1 PWM2A PWM2B

0 P4.0 P4.1

1 P3.4 P3.5

Bit 4:C0PPS0,{ PWM0A, PWM0B }端口引脚选择0。

C0PPS0 PWM0A PWM0B

0 P2.0 P2.1

1 P6.0 P6.1

Bit 3:C0PS1,PCA0端口引脚选择1。

C0PS1 CEX3 CEX5

0 P3.4 P3.5

1 P2.0 P2.1

Bit 2:C0PS0,PCA0端口引脚选择0。

C0PS0 CEX0 CEX2

0 P2.2 P2.4

1 P3.0 P3.1

Bit 1:ECIPS0,PCA0 ECI端口引脚选择0。

ECIPS0 ECI

0 P1.3

1 P1.6

Bit 0:C0COPS,PCA0时钟(C0CKO)端口引脚选择。

C0COPS C0CKO

0 P4.7

1 P3.3

CEX4

P2.6

P3.3

MEGAWIN MA82G5Dxx Data Sheet

135

17. 串行口0 (UART0)

MA82G5DXX支持一个全双工的串行口,意思是可以同时发送和接收数据。它有一个接收缓冲,意味着在前一个

接收到的字节没有从寄存器读出前,就可以开始接收第二个字节。但是,如果第一个字节在第二个字节接收完成前

仍然没有被读出,则其中的一个字节将会丢失。串行口的接收和发送寄存器都通过特殊寄存器S0BUF来访问。写

到 S0BUF加载到传送寄存器,当从 S0BUF读时是一个物理上独立分离的接收寄存器。

串行口可以工作在5种模式:模式 0 提供同步通讯,同时模式 1、2 和模式 3 提供异步通讯。异步通讯作为一个全

双工的通用异步收发器(UART),可以同时发送和接收,并使用不同的波特率。UART0的模式4支持SPI主机工

作,速率设置跟模式0一样。

模式 0:8位数据(低位先出)通过 RXD0传送和接收。TXD0总是作为输出移位时钟。波特率可通过S0CFG寄存器

的URM0X3位选择为系统时钟频率的1/12或1/4。MA82G5DXX串行口模式0的时钟极性也可以软件选择。在串

行数据移入或移出之前它由P3.1的状态决定。图 17–4和图 17–5所示模式0的时钟极性波形。

模式 1:10 位通过TXD0 传送或通过 RXD0 接收,数据帧包括一个起始位(0),8 个数据位(低位优先),和一个停

止位(1)(如图 17–1所示)。在接收时,停止位进入到专用寄存器(S0CON)的RB80。波特率是可变的。

图 17–1. 模式1数据帧

Mode 1

StartD0

D1D2

8-bit data

D3

D4D5D6D7

Stop

模式 2:11 位通过TXD0 传送或通过RXD0 接收,数据帧包括一个起始位(0),8 个数据位(低位优先),一个可编

程的第九个数据位和一个停止位(1) (如图 17–2所示)。在传送时,第 9 个数据位(TB80 在 S0CON 寄存器)可以

分配为0或者1。例如,奇偶检验位(P,在PSW 寄存器)可以移到TB80 中。在接收时,第九个数据位到S0CON

寄存器中的RB80,同时忽略停止位。波特率可以配置为1/32或1/64 的系统时钟频率。

图 17–2.模式2, 3数据帧

Mode 2, 3

StartD0

D1D2D3

9-bit data

D4D5D6

D7D8

Stop

Mode 3:除了波特率是可变之外,模式3与模式2一样。

在四种模式中,使用S0BUF作为一个目的寄存器,可以通过任何指令发起传输。在模式0,当 RI0=0且REN0=1 时

启动接收。在其它模式,在 REN0=1 时,收到起始位时启动接收。

除了标准操作外,UART0还能具有侦察丢失停止位的帧错误和自动地址识别的功能。

136

MA82G5Dxx Data Sheet MEGAWIN

17.1. 串行口 0模式0

串行数据通过RXD0读入和输出,TXD0输出移位时钟。接收和发送 8 位数据:8 个数据位(低位优先)。波特率可通

过S0CFG寄存器中的URM0X3选择为系统时钟的 1/12或1/4。

图 17–3

显示了串口模式 0 的简化功能框图。

使用S0BUF作为一个目的寄存器可通过任何指令来启动传输。“写到S0BUF ”信号触发UART0引擎开始发送。

S0BUF里面的数据在TXD0(P3.1)脚的每一个上升沿移出到RXD0(P3.0)脚。八个上升沿移位时钟过后,硬

件置TI0为1标志发送完成且中断向量可以由BTI和UTIE切换到系统标志中断。模式0发送时序见图 17–4。

当 REN0=1 和 RI0=0 时接收启动。在下一个指令周期,RX0 控制单元写 11111110 到接收移位寄存器,且在下一

个时钟阶段激活接收。

接收使能移位时钟选择输出功能TXD0(P3.1)引脚。当接收激活时,在移位时钟的下降沿采样RXD0(P3.0)脚

并移到寄存中。八个下降沿移位时钟过后,硬件置RI0为1标志接收完成。模式0接收时序见图 17–5。

图 17–3.串行口0模式0

SYSCLK

80C51 Internal BUS

12

“0”“1”

URM0X3

TX Clock

RX Clock

RXBUF

UART engine

RXSTART

RI0

RI0

TI0

BTI

Shift-clock

TXD0 Alternated

for output

Function

Serial Port 0 Interrupt

TXBUF

RXD0 Alternated

for Input/output

Function

4

Write

S0BUF

REN0

Read

S0BUF

80C51 Internal BUS

UTIE

ESF

System Flag Interrupt

MEGAWIN MA82G5Dxx Data Sheet

137

图 17–4. 模式0发送波形

Write to

S0BUF

TXD0

Software set/clear TXD0 assigned port pin to initial clock polarity, such as P3.1

TXD0

RXD0

TI0

RI0

D0

D1D2D3D4D5D6D7

图 17–5. 模式0接收波形

Write to

S0CON

TXD0

Set REN0, Clear RI0

Software set/clear TXD0 assigned port pin to initial clock polarity, such as P3.1

TXD0

RXD0

TI0

RI0

D0

D1D2D3D4D5D6D7

138

MA82G5Dxx Data Sheet MEGAWIN

17.2. 串行口0模式1

通过TXD0发送10位数据或通过RXD0接收10位数据:一个起始位(0),8 个数据位(低位先出),和一个停止位

(1)。在接收时,停止位进入S0CON的RB80,波特率由定时器 1 或定时器 2 的溢出速率来决定。模式1数据帧时

序如图 17–1所示并且模式1的简化功能框图如图 17–6所示。

使用S0BUF作为目的寄存器的任何指令来启动传输。“写到S0BUF”的信号请求UART0引擎开始发送,当收到

一个发送请求后,UART0将在TX时钟的上升沿开始发送。S0BUF中的数据从TXD0引脚串行输出,数据帧如

图 17–1所示及数据宽度根据TX时钟不同而不同。当8位数据发送完后,硬件将置位TI0表示发送结束,并且它

的中断向量可以由BTI和UTIE切换到系统标志中断。

当串行口0控制器在RCK采样时钟下检测到在RXD0有负跳变的起始位时接收开始。在RXD0引脚上的数据将被

串行口0的位侦测器采样。当收到停止位后,硬件置位RI0表示接收结束并把停止位加载到S0CON寄存器的

RB80。

图 17–6. 串行口模式1, 2, 3

Mode 2

clock source

SYSCLK/2

Mode 1, 3

clock source

Timer 2

Overflow

Timer 1

Overflow

Write

S0BUF

80C51 Internal BUS

2

“0”“1”

2

“0”“1”

SMOD1

SM00

SM10

TB80

SMOD2

“1”“0”

TCLK

1

0

TXBUF

TXD0

RXBUF

TX Clock

RXD0

16

UART engine

RI0

TI0

BTI

Serial Port 0

Interrupt

“1”“0”

RCLK

SM1

UTIE

1

0

System Flag

Interrupt

ESF

RB80

RCK

16

RX Clock

STOP-Bit

9th-Bit

0

1

SM10

Read

S0BUF

80C51 Internal BUS

SM00

MEGAWIN MA82G5Dxx Data Sheet

139

17.3. 串行口0 模式2和模式3

通过TXD0传送11位或通过RXD0接收11位:一个起始位(0),8 个数据位(低位在先),一个可编程的第9个数据

位和一个停止位(1)。在传送时,数据的第9位(TB80)可分配为0或1。在接收时,数据的第9位将进入到S0CON

的RB80。在模式2波特率可编程为1/16,1/32或1/64的系统时钟频率。模式3可以产生可以从定时器1或定时

器2产生可变的波特率。

模式2和3数据帧如图 17–2所示,模式2和模式3的串行口功能框图如图 17–5所示。接收部分和模式1相同。

与模式1传送部分不同的仅仅是传送移位寄存器的第9位。

写到S0BUF的信号请求UART0引擎加载TB8到发送移位寄存器的第9位并开始发送,当收到一个发送请求后,

UART0将在TX时钟的上升沿开始发送。S0BUF中的数据从TXD0引脚串行输出,数据帧如图 17–2所示及数据

宽度根据TX时钟不同而不同。当9位数据发送完后,硬件将置位TI0表示发送结束,并且它的中断向量可以由BTI

和UTIE切换到系统标志中断。

当串行口0控制器在RCK采样时钟下检测到在RXD0有负跳变的起始位时接收开始。在RXD0引脚上的数据将被

串行口0的位侦测器采样。当收数据接收完后,硬件置位RI0表示接收结束并把第9位加载到S0CON寄存器的

RB80。

在四种模式中,使用S0BUF作为一个目的寄存器,可以通过任何指令发起传输。在模式0,当 RI0=0且REN0=1

时启动接收。在其它模式,在 REN0=1 时,收到有负跳变的起始位时启动接收。

17.4. 帧错误侦测

开启帧错误检测功能后,UART0会在通讯中检测是否丢失停止位,如果丢失一个停止位,就设置S0CON寄存器的

FE标志位。FE标志位和SM00标志位共享SCON0.7,SMOD0标志位(PCON.6)决定S0CON.7究竟代表哪个标志,

如果SMOD0位(PCON0.6)置位则S0CON.7就是FE标志,SMOD0位清零则S0CON.7就是SM00标志。当

S0CON.7代表FE时,只能软件清零。参考图 17–7。

图 17–7. UART0帧错误侦测

9-bit data

StartD0

D1D2D3D4D5D6

D7D8

Stop

SET FE bit if STOP=0

SM00 to UART mode control

0

S0CON

SM00/

FE

SM10SM20REN0TB80

RB80TI0RI0

140

MA82G5Dxx Data Sheet MEGAWIN

17.5. 多处理器通讯

模式2和3在用作多处理器通讯时有特殊的规定如图 17–8所示。在这两种模式,接收9个数据位。第9个数据位

存入RB80,接着进来一个停止位。端口可以编程为:在RB80=1时,当收到停止位后,串口中断将激活。这种特

征通过设置SM20位(在S0CON寄存器中)来使能。这种方式用于多处理器系统如下:

当主处理器想传送一个数据块到多个从机中的某一个时,首先传送想要传送的目标地址标识符的地址。地址字节与

数据字节的区别在于,在地址字节中第9位为1,数据字节中为0。当SM20=1时,收到一个数据字节将不会产生

中断。然而一个地址字节将引发所有从机中断。因而所有的从机可以检测收到的字节是否是自己的地址。从机地址

将清除SM20位并准备好接收即将进来的所有数据。从机地址不匹配的将保持SM20置位,并继续他们的工作,忽

略进来的数据字节。

SM20在模式0和模式1没有影响,但是可以用来检测停止位的有效性。在接收模式1中,如果SM20=1,除非收

到一个有效的停止位否则接收中断不会被激活。

图 17–8. UART0多处理器通讯

VCC

Pull-up

R

Slave 3

RXTX

Slave 2

RXTX

Slave 1

RXTX

Master

RXTX

17.6. 自动地址识别

自动地址识别通过硬件比较可以让UART0识别串行码流中的地址部分,该功能免去了使用软件识别时需要大量代

码的麻烦。该功能通过设定S0CON的SM20位来开启。

在9位数据UART0模式下,即模式2和模式3,收到特定地址或广播地址时自动置位接收中断(RI0)标志,9位模

式的第9位信息为1表明接收的是一个地址而不是数据。自动地址识别功能请参考图 17–9。在8位模式,即模式

1下,如果SM20置位并且在8位地址与给定地址或广播地址核对一致后收到有效停止位则RI0置位。 模式0是

移位寄存器模式,SM20被忽略。

使用自动地址识别功能可以让一个主机选择性的同一个或多个从机进行通讯,所有从机可以使用广播地址接收信

息。两个特殊功能寄存器(SADDR和SADEN地址掩码寄存器)用来定义从机地址。

SADEN用来定义SADDR中的那些位是“无关紧要”的,SADEN掩码和SADDR寄存器进行逻辑与来定义供主机寻

址从机的“给定” 地址,该地址让多个从机进行排他性的识别。

下面的实例帮助理解这个方案的通用性:

从机0 从机1

SADDR = 1100 0000 SADDR = 1100 0000

SADEN = 1111 1101 SADEN = 1111 1110

Given = 1100 00X0 Given = 1100 000X

MEGAWIN MA82G5Dxx Data Sheet

141

上面的例子中SADDR是相同的值,而使用SADEN数据来区分两个从机。从机0要求第0位必须为0,并忽略第

1位的值;从机1要求第1位必须为0,并忽略第0位的值。从机0的唯一地址是1100 0010,而从机1的唯一地

址是1100 0001,地址1100 0000是可以同时寻找到从机0和从机1的。

下面一个更为复杂的系统可以寻址到从机1和从机2,而不会寻址到从机0:

从机0 从机1 从机2

SADDR = 1100 0000 SADDR = 1110 0000 SADDR = 1110 0000

SADEN = 1111 1001 SADEN = 1111 1010 SADEN = 1111 1100

Given = 1100 0XX0 Given = 1110 0X0X Given = 1110 00XX

上面的例子中,3个从机的低3位地址不一样,从机0要求第0位必须为0,1110 0110可以唯一寻址从机0;从

机1要求第1位必须为0,1110 0101可以唯一寻址从机1;从机2要求第2位必须为0,它的唯一地址是1110

0011。为了寻址到从机0和从机1而不会寻址到从机2,可以使用地址1110 0100,因为这个地址第2位是1。

每个从机的广播地址的创建都是通过SADDR和SADEN的逻辑或,0在结果中按不需关心处理。大部分情况下,体

现不需关心处理是所有为1,使用十六进制的FF作为广播地址。

复位后,SADDR(SFR地址0xA9)和SADEN(SFR地址0xB9)值均为0。这样可以接收所有地址的信息,也

就有效的禁用了自动地址识别模式,从而使该处理器运行于标准80C51的UART下。

图 17–9. 自动地址识别

9-bit data

StartD0

D1D2D3D4D5D6

D7D8

Stop

S0CON

SM00/

FE

SM10SM20REN0TB80RB80TI0RI0

Receive Address D0~D7

Comparator

Programmed Address

addr_match

注意:

(1)

收到匹配地址后

(addr_match=1),

SM20

以接收数据字节。

(2)

收完全部数据字节后

,

SM20

1

以等待下一个地址。

142

MA82G5Dxx Data Sheet MEGAWIN

17.7. 波特率设置

位T2X12 (T2MOD.4)、T1X12 (AUXR2.3)、URM0X3 (S0CFG.5)和SMOD2 (S0CFG.6)提供一个新的波特率选项设

置,如下所列。

17.7.1. 串行口0(S0)的波特率选择

UART0运行在模式1和模式3时,清零T2CON寄存器的位TCLK和RCLK软件可选择定时器1作为波特率发生

器。此刻,如果URTS(S0CFG.7)置位,定时器1的益处信号将被UART1的波特率发生器(S1BRG)取代。换句话

说,一旦RCLK=0、TCLK=0和URTS=1用户可采用S1BRG作为UART0模式1或模式3的波特率发生器。这

样,定时器1可以自由地做其它操作。当然UART1(模式1或模式3)也是这样运行,这两个串行口(UART)将有

同样的波特率。

图 17–10. UART0的额外波特率源

Timer 1 Overflow

S1BRG Overflow

(S1TOF)

0

1

2

0

1

0

1

UART0

Mode1 and Mode3

TX Clock

URTS

( S0CFG.7 )

SMOD1

( PCON0.7 )

TCLK

( T2CON.4 )

0

Timer 2 Overflow

RCLK

( T2CON.5 )

1

RX Clock

17.7.2. 模式0波特率

Mode 0 Baud Rate =

F

SYSCLK

n

; n=12, if URM0X3=0

; n=4, if URM0X3=1

注意:

如果

URM0X6=0

,波特率公式跟标准

8051

一样。

17.7.3. 模式2波特率

Mode 2 Baud Rate =

2

SMOD1

X 2

(SMOD2 X 2)

64

X F

SYSCLK

注意:

如果

SMOD2=0

,波特率公式跟标准

8051

一样。如果

SMOD2=1

,波特率设置有增强功能。表

17–1

定义了模

2

波特率发生器由

SMOD2

因数决定的波特率设置。

表 17–1. SMOD2在模式2中的应用标准

SMOD2 SMOD1

波特率

0

0

1

1

备注

标准功能

标准功能

增强型功能

增强型功能

0

1

0

1

缺省波特率

双倍波特率

双倍波特率X2

双倍波特率X4

推荐的最大接收误差

(%)

 3%

 3%

 2%

 1%

MEGAWIN MA82G5Dxx Data Sheet

143

17.7.4. 模式1和3波特率

17.7.4.1 使用定时器1作为波特率发生器

Mode 1, 3 Baud Rate =

2

SMOD1

X 2

(SMOD2 X 2)

32

2

SMOD1

X 2

(SMOD2 X 2)

32

X

F

SYSCLK

12 x (256 – TH1)

F

SYSCLK

1 x (256 – TH1)

; T1X12=0

or = X; T1X12=1

注意:

如果

SMOD2=0,T1X12=0,

波特率公式跟标准

8051

一样。如果

SMOD2=1

,波特率设置有增强功能。表

17–2

定义了定时器

1

波特率发生器由

SMOD2

因数决定的波特率设置。

表 17–2. SMOD2在模式1和3使用定时器1的应用标准

SMOD2 SMOD1

波特率 备注

0

0

1

1

0

1

0

1

缺省波特率

双倍波特率

双倍波特率X2

双倍波特率X4

标准功能

标准功能

增强型功能

增强型功能

推荐的最大接收误差

(%)

 3%

 3%

 2%

 1%

表 17–3 ~ 表 17–14列出了8位自动加载模式的定时器1中各种常用的波特率和怎样获得。

表 17–3. 在F

SYSCLK

=11.0592MHz时定时器1产生的常用波特率

TH1,重载值

Baud Rate

1200

2400

4800

9600

14400

19200

28800

38400

57600

115200

230400

T1X12=0 & SMOD2=0

SMOD1=0

232

244

250

253

254

--

255

--

--

--

--

SMOD1=1

208

232

244

250

252

253

254

--

255

--

--

Error

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

--

0.0%

--

--

T1X12=1 & SMOD2=0

SMOD1=0

--

112

184

220

232

238

244

247

250

253

--

SMOD1=1

--

--

112

184

208

220

232

238

244

250

253

Error

--

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

表 17–4. 在F

SYSCLK

=11.0592MHz时定时器1产生的常用波特率

TH1,重载值

Baud Rate

230.4K

460.8K

691.2K

921.6K

144

--

--

--

--

T1X12=0 & SMOD2=1

SMOD1=0 SMOD1=1

255

--

--

--

Error

0.0%

--

--

--

T1X12=1 & SMOD2=1

SMOD=0

250

253

254

--

SMOD=1

244

250

252

253

Error

0.0%

0.0%

0.0%

0.0%

MA82G5Dxx Data Sheet MEGAWIN

1.3824M

2.7648M

--

--

--

--

--

--

255

--

254

255

0.0%

0.0%

表 17–5. 在F

SYSCLK

=22.1184MHz时定时器1产生的常用波特率

TH1,重载值

Baud Rate

1200

2400

4800

9600

14400

19200

28800

38400

57600

115200

230400

460800

T1X12=0 & SMOD2=0

SMOD1=0

208

232

244

250

252

253

254

--

255

--

--

--

SMOD1=1

160

208

232

244

248

250

252

253

254

255

--

--

Error

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

--

--

T1X12=1 & SMOD2=0

SMOD1=0

--

--

112

184

208

220

232

238

244

250

253

--

SMOD1=1

--

--

--

112

160

184

208

220

232

244

250

253

Error

--

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

表 17–6. 在F

SYSCLK

=22.1184MHz时定时器1产生的常用波特率

TH1,重载值

Baud Rate

460.8K

691.2K

921.6K

1.3824M

1.8432M

2.7648M

5.5296M

--

--

--

--

--

--

T1X12=0 & SMOD2=1

SMOD1=0 SMOD1=1

255

--

--

--

--

--

Error

0.0%

--

--

--

--

--

T1X12=1 & SMOD2=1

SMOD=0

250

252

253

254

--

255

--

SMOD=1

244

248

250

252

253

254

255

Error

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

表 17–7. 在F

SYSCLK

=12.0MHz时定时器1产生的常用波特率

TH1,重载值

Baud Rate

1200

2400

4800

9600

14400

19200

28800

38400

57600

115200

T1X12=0 & SMOD2=0

SMOD=0

230

243

--

--

--

--

--

--

--

--

SMOD=1

204

230

243

--

--

--

--

--

--

--

Error

0.16%

0.16%

0.16%

--

--

--

--

--

--

--

T1X12=1 & SMOD2=0

SMOD=0

--

100

178

217

230

--

243

246

--

--

SMOD=1

--

--

100

178

204

217

230

236

243

--

Error

--

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

2.34%

0.16%

--

MEGAWIN MA82G5Dxx Data Sheet

145

表 17–8. 在F

SYSCLK

=12.0MHz时定时器1产生的常用波特率

TH1,重载值

Baud Rate

115.2K

230.4K

460.8K

--

--

--

T1X12=0 & SMOD2=1

SMOD1=0 SMOD1=1

--

--

--

Error

--

--

--

T1X12=1 & SMOD2=1

SMOD=0

243

--

--

SMOD=1

230

243

--

Error

0.16%

0.16%

--

表 17–9. 在F

SYSCLK

=24.0MHz时定时器1产生的常用波特率

TH1,重载值

Baud Rate

1200

2400

4800

9600

14400

19200

28800

38400

57600

115200

T1X12=0 & SMOD2=0

SMOD=0

204

230

243

--

--

--

--

--

--

--

SMOD=1

152

204

230

243

--

--

--

--

--

--

Error

0.16%

0.16%

0.16%

0.16%

--

--

--

--

--

--

T1X12=1 & SMOD2=0

SMOD=0

--

--

100

178

204

217

230

--

243

--

SMOD=1

--

--

--

100

152

178

204

217

230

243

Error

--

--

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

表 17–10. 在F

SYSCLK

=24.0MHz时定时器1产生的常用波特率

TH1,重载值

Baud Rate

230.4K

460.8K

691.2K

921.6K

--

--

--

--

T1X12=0 & SMOD2=1

SMOD1=0 SMOD1=1

--

--

--

--

Error

--

--

--

--

T1X12=1 & SMOD2=1

SMOD=0

243

--

--

--

SMOD=1

230

243

--

--

Error

0.16%

0.16%

--

--

表 17–11. 在F

SYSCLK

=29.4912MHz时定时器1产生的常用波特率

表 17–12. 在F

SYSCLK

=44.2368MHz时定时器1产生的常用波特率

表 17–13. 在F

SYSCLK

=32MHz时定时器1产生的常用波特率

表 17–14. 在F

SYSCLK

=48.0MHz时定时器1产生的常用波特率

146

MA82G5Dxx Data Sheet MEGAWIN

使用定时器2作为波特率发生器

当定时器2作波特率发生器时(T2CON 寄存器中的TCLK 或 RCLK 任一位为‘1’),波特率如下:

Mode 1, 3 Baud Rate =

2

SMOD2 X (SMOD1 + 1)

x F

SYSCLK

32 x (65536 – (RCAP2H, RCAP2L))

2

SMOD2 X (SMOD1 + 1)

x F

SYSCLK

16 x (65536 – (RCAP2H, RCAP2L))

; T2X12=0

or = ; T2X12=1

注意:

如果

SMOD2=0

,波特率公式跟标准

8051

一样。如果

SMOD2=1

,波特率设置有增强功能。表

17–15

定义了

定时器

2

波特率发生器由

SMOD2

因数决定的波特率设置。

表 17–15. SMOD2在模式1和3使用定时器2的应用标准

SMOD2 SMOD1

0

1

1

X

0

1

波特率

缺省波特率

双倍波特率

双倍波特率X2

备注

标准功能

增强型功能

增强型功能

推荐的最大接收误差

(%)

 3%

 3%

 2%

表 17–16 ~ 表 17–27列出了定时器2中各种常用的波特率和怎样获得。

表 17–16. 在F

SYSCLK

=11.0592MHz时定时器2产生的常用波特率

[RCAP2H, RCAP2L] ,重载值

Baud Rate

1200

2400

4800

9600

14400

19200

28800

38400

57600

115200

230400

T2X12=0 & SMOD2=0

SMOD1=0

65248

65392

65464

65500

65512

65518

65524

65527

65530

65533

--

SMOD1=1

65248

65392

65464

65500

65512

65518

65524

65527

65530

65533

--

Error

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

--

T2X12=1 & SMOD2=0

SMOD1=0

64960

65248

65392

65464

65488

65500

65512

65518

65524

65530

65533

SMOD1=1

64960

65248

65392

65464

65488

65500

65512

65518

65524

65530

65533

Error

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

表 17–17. 在F

SYSCLK

=11.0592MHz时定时器2产生的高波特率

[RCAP2H, RCAP2L] ,重载值

Baud Rate

230.4K

460.8K

691.2K

921.6K

1.3824M

T2X12=0 & SMOD2=1

SMOD1=0

65533

--

65535

--

--

SMOD1=1

65530

65533

65534

--

65535

Error

0.0%

0.0%

0.0%

--

0.0%

T2X12=1 & SMOD2=1

SMOD=0

65530

65533

65534

--

65535

SMOD=1

65524

65530

65532

65533

65534

Error

0.0%

0.0%

0.0%

0.0%

0.0%

MEGAWIN MA82G5Dxx Data Sheet

147

2.7648M -- -- -- -- 65535 0.0%

表 17–18. 在F

SYSCLK

=22.1184MHz时定时器2产生的常用波特率

[RCAP2H, RCAP2L] ,重载值

Baud Rate

1200

2400

4800

9600

14400

19200

28800

38400

57600

115200

230400

460800

T2X12=0 & SMOD2=0

SMOD1=0

64960

65248

65392

65464

65488

65500

65512

65518

65524

65530

65533

--

SMOD1=1

64960

65248

65392

65464

65488

65500

65512

65518

65524

65530

65533

--

Error

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

--

T2X12=1 & SMOD2=0

SMOD1=0

64384

64960

65248

65392

65440

65464

65488

65500

65512

65524

65530

65533

SMOD1=1

64384

64960

65248

65392

65440

65464

65488

65500

65512

65524

65530

65533

Error

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

表 17–19. 在F

SYSCLK

=22.1184MHz时定时器2产生的高波特率

[RCAP2H, RCAP2L] ,重载值

Baud Rate

460.8K

691.2K

921.6K

1.3824M

1.8432M

2.7648M

5.5296M

T2X12=0 & SMOD2=1

SMOD1=0

65533

65534

--

65535

--

--

--

SMOD1=1

65530

65532

65533

65534

--

65535

--

Error

0.0%

0.0%

0.0%

0.0%

--

0.0%

--

T2X12=1 & SMOD2=1

SMOD=0

65530

65532

65533

65534

--

65535

--

SMOD=1

65524

65528

65530

65532

65533

65534

65535

Error

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

0.0%

表 17–20. 在F

SYSCLK

=12.0MHz时定时器2产生的常用波特率

[RCAP2H, RCAP2L] ,重载值

Baud Rate

1200

2400

4800

9600

14400

19200

28800

38400

57600

115200

T2X12=0 & SMOD2=0

SMOD=0

65224

65380

65458

65497

65510

65516

65523

--

--

--

SMOD=1

65224

65380

65458

65497

65510

65516

65523

--

--

--

Error

0.16%

0.16%

0.16%

0.16%

0.16%

2.34%

0.16%

--

--

--

T2X12=1 & SMOD2=0

SMOD=0

64912

65224

65380

65458

65484

65497

65510

65516

65523

--

SMOD=1

64912

65224

65380

65458

65484

65497

65510

65516

65523

--

Error

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

2.34%

0.16%

--

表 17–21. 在F

SYSCLK

=12.0MHz时定时器2产生的高波特率

148

MA82G5Dxx Data Sheet MEGAWIN

[RCAP2H, RCAP2L] ,重载值

Baud Rate

115.2K

230.4K

460.8K

--

--

--

T2X12=0 & SMOD2=1

SMOD1=0 SMOD1=1

65523

--

--

Error

0.16%

--

--

T2X12=1 & SMOD2=1

SMOD=0

65523

--

--

SMOD=1

65510

65523

--

Error

0.16%

0.16%

--

表 17–22. 在F

SYSCLK

=24.0MHz时定时器2产生的常用波特率

[RCAP2H, RCAP2L] ,重载值

Baud Rate

1200

2400

4800

9600

14400

19200

28800

38400

57600

115200

T2X12=0 & SMOD2=0

SMOD=0

64912

65224

65380

65458

65484

65497

65510

65516

65523

--

SMOD=1

64912

65224

65380

65458

65484

65497

65510

65516

65523

--

Error

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

2.34%

0.16%

--

T2X12=1 & SMOD2=0

SMOD=0

64288

64912

65224

65380

65432

65458

65484

65497

65510

65523

SMOD=1

64288

64912

65224

65380

65432

65458

65484

65497

65510

65523

Error

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

0.16%

表 17–23. 在F

SYSCLK

=24.0MHz时定时器2产生的高波特率

[RCAP2H, RCAP2L] ,重载值

Baud Rate

230.4K

460.8K

691.2K

921.6K

--

--

--

--

T2X12=0 & SMOD2=1

SMOD1=0 SMOD1=1

65523

--

--

--

Error

0.16%

--

--

--

T2X12=1 & SMOD2=1

SMOD=0

65523

--

--

--

SMOD=1

65510

65523

--

--

Error

0.16%

0.16%

--

--

表 17–24. 在F

SYSCLK

=29.4912MHz时定时器2产生的常用波特率

表 17–25. 在F

SYSCLK

=44.2368MHz时定时器2产生的常用波特率

表 17–26. 在F

SYSCLK

=32MHz时定时器2产生的常用波特率

表 17–27. 在F

SYSCLK

=48.0MHz时定时器2产生的常用波特率

MEGAWIN MA82G5Dxx Data Sheet

149

17.8. 串行口0模式 4 (SPI主机)

MA82G5DXX串口嵌入了一个额外的模式4支持SPI主机引擎。模式4由SM3、SM0和SM1选择。表 17–28展

示了MA82G5DXX的串行口模式定义。

表 17–28. 串行口0模式选择

SM30 SM00 SM10

模式 描述 波特率

0 0 0 0 SYSCLK/12 or SYSCLK/4

移位寄存器

0 0 1 1 8-bit UART

可变

0 1 0 2 9-bit UART SYSCLK/64, /32

0 1 1 3 9-bit UART

可变

1 0 0 4 SYSCLK/12 or SYSCLK/4

SPI 机

1 0 1 5

保留 保留

1 1 0 6

保留 保留

1 1 1 7

保留 保留

URM0X3 也可控制SPI 的传输速度。如果URM0X3 = 0,则SPI的时钟频率是SYSCLK/12。如果URM0X3 = 1, 则

SPI的时钟频率是SYSCLK/4。

MA82G5DXX的SPI主机使用TXD作为SPICLK, RXD作为 MOSI,以及S0MI作为MISO。而nSS由MCU软件

选择在其它端口引脚。图 17–11展示了SPI 连接。他支持多从机通讯架构见图 17–12。

图 17–11. 串行口0模式4,单主机和单从机结构(n = 0)

MCU Serial Port n

TXDnSPICLK

MOSI

MISO

nSS

Mode 4

(Master)

RXDn

SnMI

Port Pin

SPI

Slave

图 17–12. 串行口0模式4,单主机和多从机结构(n = 0)

MCU Serial Port n

TXDn

RXDn

SnMI

Port Pin 1

SPICLK

MOSI

MISO

nSS

Slave #1

Mode 4

(Master)

SPICLK

MOSI

MISO

Port Pin 2nSS

Slave #2

150

MA82G5Dxx Data Sheet MEGAWIN

SPI主机能满足笙泉MA82/84系列MCU(由CPOL、CPHA和DORD选择)的全功能SPI模块的传输。在

CPOL和CPHA条件下, MA82G5DXX很容易初始化SPI的时钟(TXD0, P3.1/P4.5)极性去适合他们使用 。表 17–

29展示了串行口模式4的4个SPI工作模式。

表 17–29. 串行口0模式4的SPI模式配置

SPI Mode CPOL CPHA

当TXD0 在P3.1引脚MA82G5DXX的配置

0 0 0

清除P3.1 to “0”

1 0 1

清除P3.1 to “0”

2 1 0

设置P3.1 to “1”

3 1 1

设置P3.1 to “1”

SPI系列传输的位序控制(DORD),MA82G5DXX提供了位序控制(S0CFG寄存器的位S0DOR)。S0DOR的默

认值是1且位序控制为低位在先(LSB)。S0DOR在所有的S0操作模式中都是起作用的。

由任何指令把S0BUF作为目的寄存器的使用初始化发送。“写到S0BUF”信号触发UART引擎开始发送。

S0BUF 的数据作为MOSI串行数据被移位到RXD0引脚。SPI移位时钟在TXD0引脚上作为SPICLK输出。8个

移位时钟上升沿之后,硬件生效TI0表示发送结束。同时S0MI引脚也被采样且移位到移位寄存器。然后,“读取

S0BUF”会获得SPI的移入数据。图 17–13 展示了模式0的发送波形。模式4中RI0不会生效。

图 17–13. 串行口0模式4发送波形(n = 0)

Write to SnBUF

TXDn

(SPICLK)

Software set/clear TXDn assigned port pin to initial clock polarity

RXDn

(MOSI)

SnMI

(MISO)

TIn

RIn

D0

D0

D1

D1

D2

D2

D3

D3

D4

D4

D5

D5

D6

D6

D7

D7

MEGAWIN MA82G5Dxx Data Sheet

151

17.9. 串行口0寄存器

串行口的四种操作模式除波特率的设定之外都与标准的8051相同。二个寄存器PCON0和S0CFG是与波特率的

设定有关。

S0CON

:串行口0控制寄存器

SFR 页 = 仅0页

SFR 地址 = 0x98 复位值= 0000-0000

7 6 5 4 3 2 1 0

SM00/FE SM10 SM20 REN0 TB80 RB80 TI0 RI0

R/W R/W R/W R/W R/W R/W R/W R/W

Bit 7:FE,帧错误位。SMOD0必须置位才能访问FE位。

0:FE位不会被有效的帧清零,它应当被软件清零。

1:当检测到一个无效的停止位时,该位被接收器置位。

Bit 7:串行口0模式位0, (SMOD0 必须 = 0 才能访问位SM00)。

Bit 6:串行口0模式位1。

SM30 SM00 SM10

模式 描述 波特率

0 0 0 0 SYSCLK/12 or SYSCLK/4

移位寄存器

0 0 1 1 8-bit UART

可变的

0 1 0 2 9-bit UART SYSCLK/64, /32, /16 or /8

0 1 1 3 9-bit UART

可变的

1 0 0 4 SYSCLK/12 or SYSCLK/4

SPI主机

1 0 1 5

保留 保留

1 1 0 6

保留 保留

1 1 1 7

保留 保留

Bit 5:串行口0模式位2。

0:禁止SM20功能。

1:在模式2和3时使能地址自动识别,如果SM20=1那么RI0将不能设置,除非接收到的第9位数据(RB80)为

1,指示是一个地址,并且接收到的字节是本机地址或者是一个广播地址;在模式1,如果SM20=1那么RI0将

不能被激活除非收到一个有效的停止位,并且接收到的字节是本机地址或者是一个广播地址;在模式0,SM20

可以为0。

Bit 4:REN0,使能串行接收。

0:软件清零将禁止接收。

1:软件置位使能接收。

Bit 3:TB80,在模式2和3时第9位数据被传送,根据需要通过软件置位或清零。

Bit 2:RB80,在模式2和3时收到的第9位数据。在模式1,如果SM20=0,RB80是收到数据的停止位。在模式

0,RB80没有使用。

Bit 1:TI0, 发送中断标志。

0:必须由软件清零。

1:在模式0时,在第8位个数据位时序后由硬件置位。其它模式中,在发送停止位之初由硬件置位。

Bit 0:RI0,接收中断标志。

0:必须由软件清零。

1:在模式0时,在第8位个数据位时序后由硬件置位。其它模式中(除留意SM20外),在接收停止位的中间时刻

由硬件置位。

152

MA82G5Dxx Data Sheet MEGAWIN

S0BUF

:串行口

0

缓冲寄存器

SFR 页 = 仅0页

SFR 地址 = 0x99

7 6 5

S0BUF.7 S0BUF.6 S0BUF.5

R/W R/W R/W

复位值= xxxx-xxxx

4 3 2

S0BUF.4 S0BUF.3 S0BUF.2

R/W R/W R/W

1

S0BUF.1

R/W

0

S0BUF.0

R/W

Bit 7~0:在发送和接收时作缓冲寄存器。

SADDR

:从机地址寄存器

SFR 页 = 0~F

SFR 地址 = 0xA9 复位值= 0000-0000

7 6 5 4 3 2 1 0

SADDR.7 SADDR.6 SADDR.5 SADDR.4 SADDR.3 SADDR.2 SADDR.1 SADDR.0

R/W R/W R/W R/W R/W R/W R/W R/W

SADEN

:从机地址屏蔽寄存器

SFR 页 = 0~F

SFR 地址 = 0xB9 复位值= 0000-0000

7 6 5 4 3 2 1 0

SADEN.7 SADEN.6 SADEN.5 SADEN.4 SADEN.3 SADEN.2 SADEN.1 SADEN.0

R/W R/W R/W R/W R/W R/W R/W R/W

SADDR和SADEN组合来形成自动地址识别的要求/广播地址。事实上,SADEN是SADDR的“屏蔽”寄存器。如

下所示。

SADDR = 1100 0000

SADEN = 1111 1101

Given = 1100 00x0 除要求的从机地址将被核对外,

位1作“不关心”处理

每个从机的广播地址为SADDR和SADEN进行逻辑“或”的结果。结果中为“0”被认为“不关心”。在系统复位后,

SADDR和SADEN都被初始化为0。这样生成了所有的“不关心”要求地址和所有的“不关心”广播地址。这样

禁止自动地址侦测特性。

PCON0

:电源控制寄存器

0

SFR 页 = 0~F

SFR 地址 = 0x87 POR = 0001-0000,复位值= 0000-0000

7 6 5 4 3 2 1 0

SMOD1 SMOD0 GF POF GF1 GF0 PD IDL

R/W R/W R/W R/W R/W R/W R/W R/W

Bit 7:SMOD1,双倍波特率控制位。

0:禁止UART双倍波特率。

1:使能UART双倍波特率(模式1, 2,或 3)。

Bit 6:SMOD0,帧错误选择。

0:S0CON.7作SM0功能。

1:S0CON.7作 FE 功能。注:当帧错误后不管SMOD0什么状态FE都将置位。

S0CFG

:串行口0配置寄存器

SFR 页 = 仅0页

SFR 地址 = 0x9C 复位值= x000-100x

7 6 5 4 3 2 1

0

MEGAWIN MA82G5Dxx Data Sheet

153

--

W

SMOD2

R/W

URM0X3

R/W

SM30

R/W

S0DOR

R/W

BTI

R/W

UTIE

R/W

--

W

Bit 7:保留位。当S0CFG被写入时,这位必须软件写“0”。

Bit 6:SMOD2,UART0额外双倍波特率选择。

0:禁止UART0额外双倍波特率。

1:使能UART0额外双倍波特率。

Bit 5:URM0X3,串行口模式0和模式4波特率选择。

0:清零选择SYSCLK/12作UART模式0和模式4波特率。

1:置位选择SYSCLK/4作UART模式0和模式4波特率。

Bit 4:SM30,串口模式控制位3。此位的功能与SM00 和SM10一起定义。

Bit 3:S0DOR,串行口0所有操作模式的数据位序控制。

0:数据字节高位在先(MSB)传送。

1:数据字节低位在先(LSB)传送。默认是S0DOR为“1”

Bit 2:BTI,在串口0中断阻止TI0。

0:保留TI0 作为一个串口0中断源。

1:阻止TI0 作为一个串口0中断源。

Bit 1:UTIE,在系统标志中断里使能S0 TI0

0:禁止在系统标志中断里中断向量共享给TI0。

1:设置TI0标志将与系统标志中断共享中断向量。

Bit 0:保留位。当S0CFG被写入时,这位必须软件写“0”。

154

MA82G5Dxx Data Sheet MEGAWIN

18. 串行外设接口(SPI)

MA82G5DXX提供了一个高速串行外设接口(SPI)。SPI接口是一种全双工、高速同步通讯总线,有两种操作模

式:主机模式和从机模式。在12MHz的系统时钟下主机模式支持高达3MHz速率。在SPI状态寄存器(SPSTAT)

里有三个标志传送完成标志(SPIF),写冲突标志(WCOL)和模式缺陷标志(MODF)。与传统的SPI相比较,一个经

过特别设计的发送保持寄存器(THR)显著改善了传输效率且THRF标志表明THR是满或空。SPI 工作下忙状态

由只读标志SPIBSY指示。

图 18–1. SPI方框图

SET THRF if THRF=0, or

SET WCOL if THRF=1

CLEAR THRF

CPU Write SPDAT

Transmit Holding

Register (THR)

Receive Holding

Register (RHR)

Auto-Load

Auto-Load

Output Shift

Register (OSR)

Input Shift

Register (ISR)

SPICLK

MISO

I/O

Control

MOSI

CPU Read SPDAT

SYSCLK

/4

/8

/16

/32

/64

/128

T0OF/6

SSIG

SPI Control

nSS

T0OF

SPENDORDMSTRCPOLCPHASPR1SPR0

SPCON

SPIFWCOLTHRF

SPIBS

Y

MODF----

SPR2

SPSTAT

SPI 接口有4个引脚:MISO、MOSI、SPICLK和 nSS。

• SPICLK、MOSI和MISO通常将两个或多个SPI设备连接在一起。数据从主机到从机使用MOSI 引脚 (主出/从

入) ,从从机到主机使用MISO 引脚 (主入/从出)。 SPICLK 信号在主机模式时输出,从机模式时输入。若SPI接口

禁用,即 SPEN (SPCTL.6) = 0,这些引脚可以作为普通I/O口使用。

• /SS是从机选择端。典型配置中,SPI主机可以使用其某个端口选择某一个SPI设备作为当前从机,一个SPI 从

机设备使用它的/SS引脚确定自己是否被选中。下面条件下/SS被忽略:

-若SPI系统被禁用,即 SPEN (SPCTL.6) = 0 (复位值)

-若SPI作为主机运行,即 MSTR (SPCTL.4) = 1, 且 P1.4 (nSS) 被配置成输出

-若/SS被设置成忽略,即 SSIG (SPCTL.7) = 1, 这个端口作为普通I/O使用

注意:引脚输出选项见

AUXR4

参考章节

錯誤

!

找不到參照來源。

錯誤

!

找不到參照來源。

注意,即使SPI被配置成主机运行(MSTR=1), 它仍然可以被nSS引脚的低电平拉成从机(若 SSIG=0),一旦发生

这种情况,SPIF 位(SPSTAT.7)置位并且SPEN会被清零。 (参考章节“錯誤! 找不到參照來源。 錯誤! 找不到參照

來源。”) 。

MEGAWIN MA82G5Dxx Data Sheet

155

18.1. 典型SPI 配置

18.1.1. 单主机和单从机

对于主机:任何端口,包括P1.4 (nSS),都可以用来控制从机的nSS片选引脚。

对于从机:SSIG 为 ‘0’,且nSS引脚决定该设备是否被选中。

图 18–2. SPI单主机和单从机结构

SPICLK

MOSI

SPICLK

MOSI

MISO

nSS

Master

MISO

Port Pin

Slave

18.1.2. 双设备,既是主机也是从机

两个彼此连接的设备,均可成为主机或从机。没有SPI操作时,都可以被通过设置MSTR=1、SSIG=0和P1.4

(nSS)双向口配置成主机。任何一方要发起传输,它可以配置P1.4位输出并强行拉低,使另一个设备发生“被改成

从机模式”事件。(参考“錯誤! 找不到參照來源。 錯誤! 找不到參照來源。”) 。

图 18–3. SPI双设备结构,既是主机也是从机

SPICLKSPICLK

MOSI

MISO

nSS

Master/

Slave

MOSI

MISO

nSS

Slave/

Master

18.1.3. 单主机和多从机

对于主机: 任何端口,包括P1.4 (nSS),都可以用来控制从机的/SS片选引脚。

对于所有从机:SSIG 为 ‘0’,nSS引脚决定该设备是否被选中。

图 18–4. SPI单主机和多从机结构

SPICLK

MOSI

MISO

Port Pin 1

SPICLK

MOSI

MISO

nSS

Slave #1

Master

SPICLK

MISO

MOSI

Port Pin 2nSS

Slave #2

156

MA82G5Dxx Data Sheet MEGAWIN

18.1.4. 菊花链连接(MCU为SPI 从机)

图 18–5. SPI菊花链连接结构

SPICLK

MOSI

MISO

Port Pin 1

SPICLK

MOSI

MISO

nSS

Slave #1

Master

SPICLK

MOSI

MISO

nSS

Slave #2

SPICLK

MOSI

MISO

nSS

Slave #3

MEGAWIN MA82G5Dxx Data Sheet

157

18.2. SPI配置

表 18–1不但列出了主机/从机模式的配置,而且列出了这些模式的用法和引脚状态。

表 18–1. SPI主机和从机选择

nSS

MSTR

(SPCTL.6) (SPCTL.7)

-pin

(SPCTL.4)

SPEN

0

1

1

SSIG

X

0

0

X

0

1

X

0

0

模式

禁止SPI

从机

(被选中)

MISO MOSI SPICLK

-引脚 -引脚 -引脚

输入

输出

高阻

输入

输入

输入

输入

输入

输入

注释

P1.4~P1.7 是通用端口引脚。

被选择为从机。

未被选中。

若nSS被拉低,MSTR被硬件自动

清‘0’,且SPEN清零,MODF置

位,模式被改为从机

MOSI和SPICLK在主机待机时被

置为高阻,以防止总线冲突。

MOSI和SPICLK在主机活动时被

上拉。

从机

(未被选中)

从机

1 0 0 1  0

(通过模式改

变)

输出 输入 输入

主机

1 0 1 1

(空闲)

高阻

输入

输出

输出

输入

输入

输出

高阻

主机

(激活)

输出

输入

输出

1

1

1

1

X

X

0

1

从机

主机

“X” 意味着“不关心”。

18.2.1. 一个从机的补充注意事项

当CPHA = 0时, SSIG必须为 0 且 nSS 引脚必须在每次串行字节传输前负跳变,传输结束恢复正常高电平。

注意 SPDAT寄存器不能在nSS引脚低电平时写入;CPHA = 0, SSIG=1的操作是未定义的。

当CPHA =1时, SSIG可以为0或1。若SSIG=0,nSS引脚可以在每次成功传输之间保持低电平(可以一直拉

低),这种格式有时非常适合单固定主从机配置应用。

18.2.2. 一个主机的补充注意事项

SPI通讯中,传输总是由主机发起 。若 SPI使能(SPEN=1)并作为主机运行,写入SPI数据寄存器(SPDAT) 数据即

可启动SPI时钟生成器和数据传输器。大约半个到1个SPI位时间后写入SPDAT的数据开始出现在MOSI线上。

在开始传输之前,主机通过拉低相应nSS引脚选择一个从机作为当前从机。写入SPDAT寄存器德数据从主机

MOSI引脚移出,同时从从机MISO移入主机MISO的数据也写入到主机的SPDAT寄存器中。

移出1字节后,SPI时钟发生器停止,置传输完成标志(SPIF),若SPI中断使能则生成一个中断。主机CPU和从

机CPU中的两个移位寄存器可以看成一个分开的16位环形移位寄存器,数据从主机移到从机同时数据也从从机移

到主机。这意味着,在一次传输过程中,主从机数据进行了交换。

18.2.3. 引脚的模式改变(打乱主机传送…)

158

MA82G5Dxx Data Sheet MEGAWIN

若 SPEN=1, SSIG=0, MSTR=1 且

/

SS 引脚=1, SPI使能在主机模式。这种情况下,其他主机可以将/SS引脚

拉低来选择该设备为从机并开始发送数据过来。为避免总线冲突,该SPI设备成为一个从机,MOSI 和SPICLK引

脚被强制为输入端口,MISO成为输出端口,SPSTAT中SPIF标志置位,若此时SPI中断使能,则还会产生一个

SPI中断。用户软件必须经常去检查MSTR位,若该位被从机选择清零而用户又想要继续保持该SPI主机模式,

用户必须再次设置MSTR位,否则,将处于从机模式。

18.2.4. 发送保持寄存器满标志

为了提高SPI 发送速度一个特殊设计保持寄存器(THR)可以减短CPU 数据移动字节与字节传送的延迟时间。THRF

置位表明THR 的数据是有效的并且等待发送。如果THR 是空的(THRF=0),软件写一个字节数据到SPDAT 数据

将存储在THR 并且THRF 置位。如果输出移位寄存器(OSR)是空的 ,硬件立刻将THR 数据移到OSR 并且THRF

清零。在SPI 主机模式,OSR 有效数据将触发SPI 发送。在SPI 从机模式,OSR 有效数据等待另一个SPI 主机

移出数据。如果THR 是非空(THRF=1),软件写一个字节数据到写冲突标志WCOL (SPSTAT.6)将置位。

18.2.5. 写冲突

MA82G5DX的SPI在发送方向和接收方向是双缓冲数据器。发送新数据在THR 空时才能写入到缓冲器THR。只

读标志THRF 表示THR 是空或非空。在THRF为”1”时数据寄存器被写入数据冲突标志WCOL (SPSTAT.6)将置

位。这种情况下,SPDAT 写入操作将被忽略。

主机或从机检测到写冲突时,主机异常是主机传输过程中有非空控制;从机是在主机初始化传输没有控制结束时出

现冲突 。

WCOL 软件写”1”清零。

18.2.6. SPI忙标志

18.2.7. SPI时钟率选择

SPI时钟率选择(主机模式)使用SPCON寄存器的SPR1 和SPR0 位及SPSTAT寄存器的SPR2来设置,如表

18–2所示。

表 18–2. SPI串行时钟率

SPR2 SPR1 SPR0

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

SPI时钟选择

SYSCLK/4

SYSCLK/8

SYSCLK/16

SYSCLK/32

SYSCLK/64

SYSCLK/128

保留

T0OF/6

SPI时钟率@

SYSCLK=12MHz

3 MHz

1.5 MHz

750 KHz

375 KHz

187.5 KHz

93.75 KHz

--

可变的

SPI时钟率@

SYSCLK=48MHz

12 MHz

6 MHz

3 MHz

1.5 MHz

750 KHz

375 KHz

--

可变的

注意:

1. SYSCLK

是系统时钟。

2. S0TOF

UART0

波特率发生器溢出。

3. T0OF

是定时器0溢出。

MEGAWIN MA82G5Dxx Data Sheet

159

18.3. 数据模式

时钟相位(CPHA) 位可以让用户设定数据采样和改变时的时钟沿。时钟极性位CPOL可以让用户设定时钟极性。下

面图例显示了不同时钟相位(CPHA)。

图 18–6. SPI在CPHA=0时从机传送格式

Clock Cycle

SPICLK (CPOL=0)

SPICLK (CPOL=1)

1st bit in

12345678

MOSI

Slave Intput

DORD=0

DORD=1

MSB

LSB

6

1

5

2

4

3

3

4

2

5

1

6

LSB

MSB

Not

defined

MISO

Slave Output

1st bit out

data sampled

nSS (if SSIG=0)

This edge is used by the slave to shift out the 1st bit

of each data byte while CPHA=0

图 18–7. SPI在CPHA=1时从机传送格式

Slave w/ CPHA=1

Clock Cycle

SPICLK (CPOL=0)

SPICLK (CPOL=1)

MOSI

Slave Intput

DORD=0

DORD=1

MSB

LSB

1st bit out

Not defineddata sampled

12345678

1st bit in

6

1

5

2

4

3

3

4

2

5

1

6

LSB

MSB

MISO

Slave Output

nSS (if SSIG=0)

160

MA82G5Dxx Data Sheet MEGAWIN

图 18–8. SPI在CPHA=0时主机传送格式

Clock Cycle

SPICLK (CPOL=0)

SPICLK (CPOL=1)

Enable SPI

12345678

1st bit out

MOSI

Master Output

DORD=0

DORD=1

MSB

LSB

6

1

5

2

4

3

3

4

2

5

1

6

LSB

MSB

MISO

Master Input

1st bit in

data sampled

nSS (if SSIG=0)

图 18–9. SPI在CPHA=1时主机传送格式

Clock Cycle

SPICLK (CPOL=0)

SPICLK (CPOL=1)

1st bit out

12345678

MOSI

Master Output

DORD=0

DORD=1

MSB

LSB

6

1

5

2

4

3

3

4

2

5

1

6

LSB

MSB

MISO

Master Input

1st bit in

data sampled

nSS (if SSIG=0)

MEGAWIN MA82G5Dxx Data Sheet

161

18.4. SPI寄存器

下面是SPI 操作的相关特殊功能寄存器:

SPCON

SPI

控制寄存器

SFR 页 = 0~F

SFR 地址 = 0x85 复位值= 0000-0100

7 6 5 4 3 2

SSIG SPEN DORD MSTR CPOL CPHA

R/W R/W R/W R/W R/W R/W

1

SPR1

R/W

0

SPR0

R/W

Bit 7:SSIG,忽略nSS。

0:nSS引脚决定该设备是主机还是从机。

1:MSTR位决定该设备是主机还是从机。

Bit 6:SPEN,SPI使能。

0:SPI接口禁用,所有SPI引脚可作为通用I/O口使用。

1:SPI使能。

Bit 5:DORD,SPI数据位序。

0:传送数据时高位在先(MSB)。

1:传送数据时低位在先(LSB)。

Bit 4:MSTR,主机/从机模式选择。

0:SPI从机模式。

1:SPI主机模式。

Bit 3:CPOL,SPI时钟极性选择。

0:SPICLK空闲是为低电平。SPICLK时钟脉冲前沿是上升沿,而后沿是下降沿。

1:SPICLK空闲是为高电平。SPICLK时钟脉冲前沿是下降沿,而后沿是上升沿。

Bit 2:CPHA,SPI时钟相位选择。

0:/SS引脚低电平 (SSIG=0)开始放数据并在SPICLK后沿改变数据。 数据在SPICLK的前沿采样。

1:SPICLK脉冲前沿放数据,后沿采样。

(注:如果SSIG=1,CPHA必须不为1,否则这个功能是没有定义的。)

Bit 1~0:SPR1-SPR0,SPI时钟率选择位0和1 (主机模式,与SPR2配合使用)

SPI时钟率@ SPI时钟率@

SPR2 SPR1 SPR0

SPI时钟选择

SYSCLK=12MHz SYSCLK=48MHz

0 0 0 SYSCLK/4 3 MHz 12 MHz

0 0 1 SYSCLK/8 1.5 MHz 6 MHz

0 1 0 SYSCLK/16 750 KHz 3 MHz

0 1 1 SYSCLK/32 375 KHz 1.5 MHz

1 0 0 SYSCLK/64 187.5 KHz 750 KHz

1 0 1 SYSCLK/128 93.75 KHz 375 KHz

1 1 0 -- --

保留

1 1 1 T0OF/6

可变的 可变的

注意:

1. SYSCLK

是系统时钟。

2. T0OF

是定时器

0

溢出。

162

MA82G5Dxx Data Sheet MEGAWIN

SPSTAT

SPI

状态寄存器

SFR 页 = 0~F

SFR 地址 = 0x84

7 6 5

SPIF WCOL THRF

R/W R/W R

复位值= 0000-xxx0

4 3 2

SPIBSY MODF --

R R/W W

1

--

W

0

SPR2

R/W

Bit 7:SPIF,SPI传输完成标志。

0:软件写“1” SPIF清零。

1:当一次串行传输完成时,SPIF位置位,同时若SPI中断允许,会产生一个中断。若nSS引脚在主机模式下被

拉低且SSIG=0,SPIF位也会置位以表明“模式改变”。

Bit 6:WCOL,SPI写冲突标志。

0:软件写“1” WCOL清零。

1:SPI 数据寄存器(SPDAT)在数据传输过程中被写入此位置位(见章节“錯誤! 找不到參照來源。 錯誤! 找不到參

照來源。”)。

Bit 5:THRF,发送保持寄存器(THR)非空标志。只读。

0:表明THR是“空的”。当THR为空时此位被硬件清零,这意味着THR中的数据已经被装入移位输出寄存器进行

发送,而现在用户可以向SPDAT写下一个要发送的数据。

1:表明THR是“非空”。当软件向SPDAT写数据时由硬件置位。

Bit 4:SPIBSY,SPI忙标志。只读。.

0:表示SPI 是空闲状态并且所有的移位寄存器是空的。

1:置位表示SPI 传输进行中(主机或从机)。

Bit 3:模式错误标志。当检测到主机模式冲突时(nSS 为低电平,MSTEN=1并且SSIG=0),硬件置该位为1。

如果中断使能,就会产生一个中断。该位不会由硬件自动清零,必须由软件写“1”清零。

Bit 1~0:保留位。当SPSTAT被写入时,这些位必须软件写“0”。

Bit 0:SPR2,SPI时钟率选择位2(与SPR1和SPR0相配合)

SPDAT

SPI

数据寄存器

SFR 页 = 0~F

SFR 地址 = 0x86 复位值= 0000-0000

7 6 5 4 3 2 1 0

(MSB) (LSB)

R/W R/W R/W R/W R/W R/W R/W R/W

SPDAT有两个物理缓冲器供发送和接收过程中各自独立写入和读取。

AUXR7:

辅助寄存器

7

SFR 页 = 仅4页

SFR 地址 = 0xA4 复位值= 1100-xxxx

7 6 5 4 3 2

POE5 POE4 C0CKOE SPI0M0 -- --

R/W R/W R/W R/W W W

1

--

W

0

--

W

Bit 4:SPI0M0,SPI0模式控制位0。控制SPI 的菊花链连接。

0:禁止这个模式控制。

1:使能这个模式控制。

MEGAWIN MA82G5Dxx Data Sheet

163

AUXR4:

辅助寄存器

4

SFR 页 = 仅1页

SFR 地址 = 0xA4

7 6

T2PS1 T2PS0

R/W R/W

5

T1PS1

R/W

复位值= 0000-0000

4 3 2

T1PS0 SPIPS0 --

R/W R/W W

1

AC0OE

R/W

0

AC0FLT1

R/W

Bit 3:SPIPS0,SPI端口选择位0。

SPIPS0 nSS

0 P1.4

1 P3.4

MOSI

P1.5

P3.5

MISO

P1.6

P4.1

SPICLK

P1.7

P4.0

164

MA82G5Dxx Data Sheet MEGAWIN

19. 双线串行接口(TWI0)

双线串行接口是一个双线双向总线。双线串行接口(TWI)很适合于典型的处理器应用。

TWI协议允许系统设计人员只用两根双向传输线来连接多达128个不同的设备,一根用于时钟(TWI0_SCL),一

根用于数据(TWI0_SDA)。双线串行接口(TWI)由TWI0_SDA(串行数据)、TWI0_SCL(串行时钟)控制产生

和同步,仲裁逻辑以及起始/停止(START/STOP)。唯一需要的外部硬件就是在TWI的每根传输线上添加一个上

拉电阻。所有连接到总线的设备都有各自的地址,而且TWI协议解决了总线仲裁的问题。

图 19–1. TWI总线互联框图

VDD

Device 0Device 1Device 2

………

Device n

TWI0_SDA

TWI0_SCL

TWI 总线可以操作在主机或从机也可以是多主机。CPU通过SICON(串行接口控制寄存器)、SISTA(串行接口

状态寄存器)、SIDAT(串行接口数据寄存器,用于发送和接收TWI数据)、SIADR(串行接口从机地址寄存

器)这四个特殊功能寄存器与TWI相连。TWI硬件通过两根数据线与串行总线相连:SDA(串行数据线)和SCL

(串行时钟线)。

图 19–2. TWI方框图

CPU Write SIDAT

Output Shift

Register

TWI0_SDA

Input Shift

Register

Slave Addr

Register

I/O

Control

TWI0_SCL

CPU Read SIDATTWI0 Control

CPU R/W SIADR

SYSCLK

/8

/16

/32

/64

/128

/256

T0OF/6

SICON

CR2ENSISTASTOSIAACR1CR0

T0OFSISTA

b7b6b5b4b3b2b1b0

MEGAWIN MA82G5Dxx Data Sheet

165

19.1. 操作模式

TWI 有4种操作模式: 1) 主机/发送模式, 2)主机/接收模式, 3)从机/发送模式4)从机/接收模式。SI软件清零之

后SICON寄存器的位STA, STO和AA决定TWI硬件下一个执行的是哪一个操作。当下一个操作完成,SISTA 寄

存器将更新一个新状态同时SI也会硬件置位。现在,中断服务程序会被调用(如果TWI中断使能),软件可以通

过新的状态区分需要调用哪一个子程序。

19.1.1. 主机发送模式

在主机发送模式,一定数量的字节数据可以发送到一个从机接收器。在进入主机发送模式前,SICON必须作如下

设置:

SICON

7 6 5 4 3 2 1 0

CR2 ENSI STA STO SI AA CR1 CR0

1 0 0 0 x

位速率 位速率

CR0、 CR1和CR2定义了串行位速率。ENSI必须设置为逻辑1来使能TWI。如果AA位复位,在其它设备成为总线

的主机时,TWI将不会应答它自身的从机地址或广播地址。也就是说,如果AA复位,TWI不能进入从机模式。

STA、STO与SI必须复位。

置位STA也许可以立即进入主机发送模式。TWI逻辑将检测串行总线并且在总线空闲时产生一个START信号。发送

完START信号后,串行中断标志(SI)将被置位,并且状态寄存器(SISTA)中的状态编码将为08H。这个状态编

码必须用于指示一个中断服务程序加载从机地址和数据方向位(SLA+W)到SIDAT。SICON的SI位必须清零,串

行传输才能继续进行。

当从机地址与方向位发送完,并且接收到一个应答位后,串行中断标志(SI)会再次被置位。SISTA可能为以下的

编码:在主机模式为18H,20H或38H,如果从机模式使能(AA=1),也可以为68H,78H或B0H。在这些状态编

码下对应的操作将在随后的工作流程图中详细叙述。在一个重复的START信号后(状态编码10H),TWI可以通过

向SIDAT写入SLA+R进入主机接收模式。

19.1.2. 主机接收模式

在主机接收模式,可以从从机发送器接收一定数量的字节数据。SICON也必须如主机发送模式一样初始化。开始信

号发送后,中断服务程序必须向SIDAT写入7位从机地址与数据方向位(SLA+R)。SICON的SI位必须清零,串行

传输才能继续进行。

在从机地址与数据方向位发送完并且接收到应答位后,串行中断标志(SI)重新置位。SISTA可能为以下的编码:

在主机模式为40H,48H或38H,如果从机模式使能(AA=1),也可以为68H,78H或B0H。这些状态编码下对应

的操作将在随后的工作流程图中详细叙述。在一个重复的START信号后(状态编码10H),TWI可以通过向SIDAT

写入SLA+W进入主机接收模式。

166

MA82G5Dxx Data Sheet MEGAWIN

19.1.3. 从机发送模式

在从机发送模式下,许多数据发送给主机接收。SIADR 和SICON 必须如下初始化从机发送模式:

SIADR

7 6 5 4 3 2 1 0

X X X X X X X GC

|<---------------------------------自己的从机地址---- ------------------------>|

高7位是响应被主机寻址的TWI 地址。如果LSB (GC)置位,TWI 将应答广播地址(00H);否则将忽略广播地址。

SICON

7 6 5 4 3 2 1 0

CR2 ENSI STA STO SI AA CR1 CR0

x 1 0 0 0 1 x x

在从机模式下CR0, CR1和CR2不影响TWI 。ENSI必须置位去使能TWI。AA 必须置位去使能TWI 应答自己的

从机地址或广播地址。STA, STO和SI必须清零。

当SIADR和SICON初始化之后,TWI会等待直到其从机地址被寻址并且数据方向为”1”(R),TWI将工作于从机发

送模式。在接收到自身的从机地址以及”R”位后,串行中断标志(SI)置位,并且可以从SISTA读出一个可用的状

态编码。这些状态编码可以用作指示一个中断服务程序,在这些状态编码下对应的操作将在随后的工作流程图详细

叙述。当TWI处于主机模式时,如果仲裁失败也可能进入从机发送模式(参考B0H状态)。

如果在一次传输的过程中AA位复位,TWI将发送完当前字节的数据后进入C0H或C8H状态。TWI会转换到未被

寻址从机模式,如果主机继续传输,TWI将会忽略主机接收器,因此主机总是接收到”1”。当AA复位时,TWI不会

回应其从机地址或广播地址,但是会继续监测串行总线。在任何时候可以通过置位AA恢复,这意味着AA位可用

于暂时从总线中隔离TWI。

19.1.4. 从机接收模式

在从机接收模式,会从主机发送器接收一定数量的字节数据。数据传送的初始化与从机发送模式一样。

SIADR与SICON初始化后,TWI会等待直到其从机地址被寻址并且数据方向为”0”(W),TWI将工作于从机接收模

式。在接收到其从机地址与”W”位后,串行中断标志(SI)置位,并且可以从SISTA读出一个可用的状态编码。这

些状态编码可以用作指示一个中断服务程序,在这些状态编码下对应的操作将在随后的工作流程图详细叙述。当

TWI处于主机模式时,如果仲裁失败可能进入从机接收模式(参考状态68H和78H)。

如果在一次传输的过程中AA位被复位,TWI会在接收到下一个字节后回复NACK(逻辑1)。当AA复位时,TWI不

会响应自身的从机地址或广播地址,但是会继续监测串行总线。在任何时候可以通过置位AA恢复,这意味着AA位

可用于暂时从总线中隔离TWI。

19.2. 混合状态

有两个SISTA编码没有与已经定义的TWI硬件状态对应,描述如下:

S1STA = F8H:

这个状态编码表明还没有相应的信息可用,因为串行中断标志(SI)还没有置位。这种情况发生在状态转换之间和

TWI未涉及串行传输时。

S1STA = 00H:

这个状态编码表明在一个TWI串行传输过程中发生总线错误。当一个START或STOP信号在一帧的非法位置发送

时,总线错误就会发生。例如:在传输一个字节地址、数据时,或者在应答位。总线错误也会在外界干扰扰乱内部

TWI信号时发生。当总线错误发生时,SI被置位,STO标志必须置位并且SI必须软件清零用来从总线错误中恢复。

MEGAWIN MA82G5Dxx Data Sheet

167

这会使TWI进入“未被寻址”的从机状态(已定义的状态)并且清除STO标志(SICON的其它位不受影响)。

TWI0_SDA与TWI0_SCL线将被释放(不会发送STOP信号)。

19.3. 使用TWI

TWI是面向字节并且基于中断的。中断会在所有总线事件后发生,例如接收到一字节数据或发送START信号。因

为TWI是基于中断的,应用软件可以自由的在一个TWI字节发送的过程中处理其它工作。注意,TWI0中断标志

位ETWI0(AUXIE.6)与EA位允许应用程序选择在SI标志出现时是否产生中断请求。当SI标志出现时,表明

TWI已经完成一个操作并且等待程序响应。此时状态寄存器SISTA保存的状态编码表明TWI总线的当前状态。用

户程序可以通过对STA,STO和AA位(在SICON中)进行适当的编程来决定接下来TWI总线将如何运行。

下面的操作流程图将指导用户通过“状态到状态”(state-by-state)的操作来使用TWI。首先,用户应该向SIADR

写入自身的从机地址(参考前面对SIADR的描述)。作为主机时,在初始SICON后,第一步为置位“STA”来向总

线产生一个START信号。作为从机时,在初始化SICON后,TWI等待直到被寻址。然后参考操作流程图对

SICON的STA,STO,SI,AA位进行适当的编程来进行后续动作。当SI清零后TWI硬件就会进行下一步动作,

因此推荐使用如下两个步骤:先对STA,STO与AA编程,然后清零SI位(可以使用“CLR SI”指令)来进行可靠

的操作。

下面的图指出如何阅读流程图。

Set STA to generate

a START

08H

A START has been

transmitted

The status code in SISTA, it is the current bus state.

The TWSI bus operation has just finished.

(STA,STO,SI,AA)=(0,0,0,X)

SLA+W will be transmitted;

ACK bit will be received.

Setting for the next bus operation. "X" means "don't care".

The expected next bus operation.

168

MA82G5Dxx Data Sheet MEGAWIN

(1) Master/Transmitter Mode

Set STA to generate

a START

From Slave Mode

C

08H

A START has been

transmitted

(STA,STO,SI,AA)=(0,0,0,X)

SLA+W will be transmitted;

ACK bit will be received.

B

18H

or

SLA+W will be transmitted;

ACK bit will be received.

From Master/Receiver

20H

SLA+W will be transmitted;

NOT ACK bit will be received.

(STA,STO,SI,AA)=(0,0,0,X)

Data byte will be transmitted;

ACK bit will be received.

(STA,STO,SI,AA)=(1,0,0,X)

A repeated START will be

transmitted.

(STA,STO,SI,AA)=(0,1,0,X)

A STOP will be transmitted;

STO flag will be reset.

(STA,STO,SI,AA)=(1,1,0,X)

A STOP followed by a

START will be transmitted;

STO flag will be reset.

28H

Data byte in SIDAT has

been transmitted; ACK has

been received.

or

10H

A repeated START has

been transmitted.

Send a STOP

Send a STOP

followed by a START

30H

Data byte in SIDAT has

been transmitted; NOT ACK

has been received.

38H

Arbitration lost in

SLA+W or Data bytes

(STA,STO,SI,AA)=(0,0,0,X)

SLA+R will be transmitted;

ACK will be received;

TWSI will be switched to

Master/Receiver mode

(STA,STO,SI,AA)=(0,0,0,X)

The bus will be released;

Not addressed Slave mode

will be entered.

(STA,STO,SI,AA)=(1,0,0,X)

A START will be transmitted

when the bus becomes free.

A

To Master/Receiver

Enter NAslave

Send a START

when bus becomes

free

MEGAWIN MA82G5Dxx Data Sheet

169

(2) Master/Receiver Mode

Set STA to generate

a START.

C

08H

A START has been

transmitted.

From Slave Mode

From Master/Transmitter

(STA,STO,SI,AA)=(0,0,0,X)

SLA+R will be transmitted;

ACK will be received.

A

48H

SLA+R has been transmitted;

NOT ACK has been received.

40H

SLA+R has been transmitted;

ACK has been received.

(STA,STO,SI,AA)=(0,0,0,0)

Data byte will be received;

NOT ACK will be returned.

(STA,STO,SI,AA)=(0,0,0,1)

Data byte will be received;

ACK will be returned.

58H

Data byte has been received;

NOT ACK has been returned.

50H

Data byte has been received;

ACK has been returned.

(STA,STO,SI,AA)=(1,1,0,X)

A STOP followed by a START will

be transmitted;

STO flag will be reset.

(STA,STO,SI,AA)=(0,1,0,X)

A STOP will be transmitted;

STO flag will be reset.

(STA,STO,SI,AA)=(1,0,0,X)

A repeated START will be transmitted.

Send a STOP

followed by a START

Send a STOP10H

A repeated START has been

transmitted.

38H

Arbitration lost in SLA+R

or NOT ACK bit.

(STA,STO,SI,AA)=(0,0,0,X)

SLA+W will be transmitted;

ACK will be received;

TWSI will be switched to MST/TRX mode.

(STA,STO,SI,AA)=(1,0,0,X)

A START will be transmitted

when the bus becomes free.

(STA,STO,SI,AA)=(0,0,0,X)

The bus will be released;

Not addressed SLV mode will be entered.

B

To Master/Transmitter

Send a START

when bus becomes free

Enter NAslave

170

MA82G5Dxx Data Sheet MEGAWIN

(3) Slave/Transmitter Mode

Set AA

A8H

Own SLA+R has been received;

ACK has been returned.

or

B0H

Arbitration lost in SLA+R/W as master;

Own SLA+R has been received;

ACK has been returned.

(STA,STO,SI,AA)=(0,0,0,0)

Last data byte will be transmitted;

ACK will be received.

(STA,STO,SI,AA)=(0,0,0,1)

Data byte will be transmitted;

ACK will be received.

C8H

Last data byte in SIDAT has been transmitted;

ACK has been received.

C0H

Data byte or Last data byte in SIDAT has been transmitted;

NOT ACK has been received.

B8H

Data byte in SIDAT has been transmitted;

ACK has been received.

(STA,STO,SI,AA)=(0,0,0,0)

Last data byte will be transmitted;

ACK will be received.

(STA,STO,SI,AA)=(0,0,0,1)

Data byte will be transmitted;

ACK will be received.

(STA,STO,SI,AA)=(1,0,0,1)

Switch to not addressed SLV mode;

Own SLA will be recognized;

A START will be transmitted when

the bus becomes free.

(STA,STO,SI,AA)=(1,0,0,0)

Switch to not addressed SLV mode;

No recognition of own SLA;

A START will be transmitted when

the bus becomes free.

(STA,STO,SI,AA)=(0,0,0,1)

Switch to not addressed SLV mode;

Own SLA will be recognized.

(STA,STO,SI,AA)=(0,0,0,0)

Switch to not addressed SLV mode;

No recognition of own SLA.

Send a START

when bus becomes free

`

Enter NAslave

C

To Master Mode

MEGAWIN MA82G5Dxx Data Sheet

171

(4) Slave/Receiver Mode

Set AA

60H

Own SLA+W has been received;

ACK has been returned.

or

68H

Arbitration lost in SLA+R/W as master;

Own SLA+W has been received;

ACK has been returned.

(STA,STO,SI,AA)=(0,0,0,0)

Data byte will be received;

NOT ACK will be returned.

(STA,STO,SI,AA)=(0,0,0,1)

Data byte will be received;

ACK will be returned.

88H

Data byte has been received;

NOT ACK has been returned.

80H

Data byte has been received;

ACK has been returned.

A0H

A STOP or repeated START has been

received while still addressed as SLV/REC.

(STA,STO,SI,AA)=(0,0,0,0)

Data will be received;

NOT ACK will be returned.

(STA,STO,SI,AA)=(0,0,0,1)

Data will be received;

ACK will be returned.

(STA,STO,SI,AA)=(1,0,0,1)

Switch to not addressed SLV mode;

Own SLA will be recognized;

A START will be transmitted when

the bus becomes free.

(STA,STO,SI,AA)=(1,0,0,0)

Switch to not addressed SLV mode;

No recognition of own SLA;

A START will be transmitted when

the bus becomes free.

(STA,STO,SI,AA)=(0,0,0,1)

Switch to not addressed SLV mode;

Own SLA will be recognized.

(STA,STO,SI,AA)=(0,0,0,0)

Switch to not addressed SLV mode;

No recognition of own SLA.

Send a START

when bus becomes free

`

Enter NAslave

C

To Master Mode

172

MA82G5Dxx Data Sheet MEGAWIN

(5) Slave/Receiver Mode (For General Call)

Set AA

70H

General Call address has been received;

ACK has been returned.

or

78H

Arbitration lost in SLA+R/W as master;

General Call address has been received;

ACK has been returned.

(STA,STO,SI,AA)=(0,0,0,0)

Data byte will be received;

NOT ACK will be returned.

(STA,STO,SI,AA)=(0,0,0,1)

Data byte will be received;

ACK will be returned.

98H

Previously addressed with General Call address;

Data byte has been received;

NOT ACK has been returned.

90H

Previously addressed with General Call address;

Data byte has been received;

ACK has been returned.

A0H

A STOP or repeated START has been

received while still addressed as SLV/REC.

(STA,STO,SI,AA)=(0,0,0,0)

Data will be received;

NOT ACK will be returned.

(STA,STO,SI,AA)=(0,0,0,1)

Data will be received;

ACK will be returned.

(STA,STO,SI,AA)=(1,0,0,1)

Switch to not addressed SLV mode;

Own SLA will be recognized;

A START will be transmitted when

the bus becomes free.

(STA,STO,SI,AA)=(1,0,0,0)

Switch to not addressed SLV mode;

No recognition of own SLA;

A START will be transmitted when

the bus becomes free.

(STA,STO,SI,AA)=(0,0,0,1)

Switch to not addressed SLV mode;

Own SLA will be recognized.

(STA,STO,SI,AA)=(0,0,0,0)

Switch to not addressed SLV mode;

No recognition of own SLA.

Send a START

when bus becomes free

`

Enter NAslave

C

To Master Mode

MEGAWIN MA82G5Dxx Data Sheet

173

19.4. TWI0寄存器

SIADR

TWI0

地址寄存器

SFR 页 = 0~F

SFR 地址 = 0xD1

7 6

A6 A5

R/W R/W

5

A4

R/W

4

A3

R/W

复位值= 0000-0000

3 2

A2 A1

R/W R/W

1

A0

R/W

0

GC

R/W

CPU可以直接对此寄存器进行读写。SIADR不受TWI0硬件的影响。当TWI0处于主机模式时此寄存器的值会被

忽略。当处于从机模式时,寄存的高七位必须被用于本机的从机地址,并且当最低位(GC)置位时,广播地址

(00H)会被识别,否则忽略。在START状态后,最高位与从TWI0总线上收到的首位相对应。

SIDAT

TWI0

数据寄存器

SFR 页 = 0~F

SFR 地址 = 0xD2 复位值= 0000-0000

7 6 5 4 3 2 1 0

D7 D6 D5 D4 D3 D2 D1 D0

R/W R/W R/W R/W R/W R/W R/W R/W

此寄存器保存着一字节将要发送或者刚接收到的数据。在没有进行移位工作时,CPU可以直接对此寄存器进行读

写。这种情况发生在TWI0正处于一个被定义的状态并且串行中断标志位(SI)置位。只要SI被置位,SIDAT中

的数据总是保持稳定的。在数据被移出时,总线上的数据同时移入,SIDAT总保存着总线上出现的最后一个字节数

据。因此在仲裁失败时,主机发送切换为从机接收的过程会在SIDAT中产生一个正确的数据。

SIDAT 与 ACK标志位组成一个9位的移位寄存器,可以在移入或移出一个8位的数据后,跟随一个应答位。ACK

标志由TWI0硬件控制,CPU访问不到。串行数据在TWI0_SCL的上升沿移入SIDAT寄存器。当一字节的数据完

全移入SIDAT后,SIDAT中的数据将是可以用的,并且控制逻辑会在第9个时钟周期返回一个应答位。串行数据

在TWI0_SCL的下降沿从SIDAT寄存器移出。

CPU向SIDAT写入数据后,SD7位将首先出现在SDA线上。9个时钟周期后,SIDAT中的8位数据将被发送完

成,并且通过应答位返回ACK标志。注意发送出去的8位数据会移回SIDAT。

SICON

TWI0

控制寄存器

SFR 页 = 0~F

SFR 地址 = 0xD4 复位值= 0000-0000

7 6 5 4 3 2 1 0

CR2 ENSI STA STO SI AA CR1 CR0

R/W R/W R/W R/W R/W R/W R/W R/W

CPU可以直接读写此寄存器。其中两个位会受TWI0硬件的影响:SI位会在串行中断请求时置位,STO位会在总

线出现STOP状态时清零。STO位也会在ENS1=0时清零。

Bit 7:CR2,TWI0时钟率选择位2 (与CR1和CR0一起使用)。

Bit 6:ENSI,TWI0硬件使能位。

ENSI为 "0"时,TWI0_SDA与TWI0_SCL输出为高阻态,TWI0_SDA与TWI0_SCL输入信号被忽略,TWI处于未

寻址从机状态,SICON的STO位被强制置为”0”,但不影响其它位。TWI0_SDA与TWI0_SCL可用作通用I/O引

脚。ENSI 为 "1"时,TWI0使能,TWI0_SDA和TWI0_SCL端口锁存器(比如P4.1和P4.0)必须设置为逻辑1并且

I/O模式必须配置成开漏模式以用于接下来的串行通讯。

Bit 5:STA,开始(START)标志。

174

MA82G5Dxx Data Sheet MEGAWIN

当STA位被置位进入主机模式时,TWI0硬件将检查串行总线的状态,若总线空闲将产生一个START信号。若总

线忙,TWI0将等待STOP信号出现并且在一个延迟后产生START信号。如果STA在TWI0已经是处于主机模式

并且一个或多个字节已被发送或接收的情况下置位,TWI0会发送一个重复的START信号。STA可以在任何时候

置位,也可以在TWI0是一个被寻址的从机时置位。当STA位复位时,无START或重复的START信号产生。

Bit 4:STO,停止(STOP)标志。

当TWI0处于主机模式时,置位STO会向串行总线发送一个STOP信号。当在总线上侦测到STOP信号时,TWI0

硬件清除STO标志。在从机模式时,置位STO标志可从总线错误状态恢复。在这种情况下不会向总线发送STOP

信号,但是TWI0硬件表现就像已经接收到一个STOP信号,并且转换到未被寻址的从机接收模式。STOP标志自

动被硬件清零。如果STA与STO位同时置位,若TWI0处于主机模式将产生一个STOP信号(当处于从机模式时

将产生一个内部的STOP信号,但不发送),接着发送一个START信号。

Bit 3:SI,串行中断标志。

当一个新的TWI0状态出现在SISTA寄存器时,SI标志会被硬件置位。如果TWI0中断允许,中断服务程序将会

运行。唯一不会使SI置位的状态是指出没有相关状态信息可以获得的F8H。当SI置位时,TWI0 _SCL线上的低

电平会延长,并且串行传输暂停。TWI0 _SCL线上的高电平不受串行中断SI标志影响。SI必须由软件写“0”清

零。SI标志复位时不会产生中断请求,TWI0 _SCL线上的时钟也不会延长。

Bit 2:AA,确认应答标志。

如果AA标志设为 “1”,一个应答ACK(TWI0_SDA低电平)将在TWI0_SCL的应答时钟周期内回复,当:

1)接收到本机的从机地址。

2) TWI0处于主机/接收模式时,接收到一字节的数据。

3) TWI0处于已被寻址的从机/接收模式时,接收到一字节的数据。

如果AA标志设为“0”,一个无应答NACK(TWI0_SDA)高电平)将在TWI0_SCL的应答时钟周期内回复,当:

1) TWI0处于主机/接收模式时,接收到一字节的数据

2) TWI0处于已被寻址的从机/接收模式时,接收到一字节的数据

Bit 7, 1~0:CR2、CR1和CR0,时钟率选择位

TWI0处于主机模式时,这三个位决定串行时钟频率。当TWI0处于从机模式时,时钟频率并不重要,因为TWI0

会自动同步任何主机的时钟频率,高达100 KHz。表 19–1给出不同的时钟速率设置:

表 19–1. TWI0串行时钟率

CR2

0

0

0

0

1

1

1

1

CR1

0

0

1

1

0

0

1

1

CR0

0

1

0

1

0

1

0

1

TWI0时钟选择

SYSCLK/8

SYSCLK/16

SYSCLK/32

SYSCLK/64

SYSCLK/128

SYSCLK/256

保留

T0OF/6

TWI0时钟率@

SYSCLK=12MHz

1.5 MHz

750 KHz

375 KHz

187.5 KHz

93.75 KHz

46.875 KHz

--

可变的

注意:

1. SYSCLK

是系统时钟。

2. T0OF

是定时器

0

溢出。

SISTA

TWI0

状态寄存器

SFR 页 = 0~F

SFR 地址 = 0xD3

7 6 5

SIS7 SIS6 SIS5

R

复位值= 1111-1000

4 3 2

SIS4 SIS3 SIS2

R R R

1

SIS1

R

0

SIS0

R R R

MEGAWIN MA82G5Dxx Data Sheet

175

SISTA 是一个8位的只读寄存器。低三位总是为0,高五位保存状态编码,可以组成多个可能的状态编码。当

SISTA为F8H时,没有串行中断请求。SISTA的其它值用于定义相应的TWI0状态。当进入这些状态的一种时,

会请求串行中断(SI=1)。在SI硬件置位时,一个有效的状态编码会存于SISTA中。

另外,状态00H表示总线错误。当一个START或STOP信号在不符合规定的位置发送时会产生总线错误,如一

个地址/数据的内部或者刚好在应答位上。

AUXR3:

辅助寄存器

3

SFR 页 = 仅0页

SFR 地址 = 0xA4 复位值= 0000-0000

7 6 5 4 3 2 1 0

T0PS1 T0PS0 BPOC1 BPOC0 S0PS0 TWIPS1 TWIPS0 T0XL

R/W R/W R/W R/W R/W R/W R/W R/W

Bit 2~1:TWIPS1~0, TWI0端口选择[1:0]。

TWIPS1~0 TWI0_SCL TWI0_SDA

00 P4.0 P4.1

01 P6.0 P6.1

10 P3.0 P3.1

11 P2.2 P2.4

176

MA82G5Dxx Data Sheet MEGAWIN

20. 串行接口侦测(SID/STWI)

串行接口侦测模块总是监控软件双线串行接口(STWI)的“Start”和“Stop”状态。STWI _SCL是串行时钟信号和STWI

_SDA是串行数据信号。如果任何匹配条件被侦测到,硬件设置STAF和STOF标志位。软件可以决定这两个标志

或设置SIDFIE (SFIE.7) 与系统标志共享中断向量。并且STWI _SCL位于nINT1将帮助 MCU 通过nINT1 中断来

判断串行数据。软件可以说使用这些资源来实施一个可变的TWI从机设备。

20.1. SID (STWI) 结构

图 20–1展示了STAF和STOF侦测的结构,中断结构和事件侦测波形。

图 20–1. 串行接口侦测结构

AUXR2.7

(EIE1.3)

ESF

STAF

STWI_SDA input

(S0MI)

Transition

Detection

STOF

AUXR2.6

SIDFIE

(SFIE.7)

SID Flags

Interrupt

SYSCLK

STWI_SCL input

(nINT1)

enable

STWI_SDA

STWI_SCL

Set STAF

Set STOF

MEGAWIN MA82G5Dxx Data Sheet

177

20.2. SID/STWI 寄存器

AUXR2:

辅助寄存器

2

SFR 页 = 0~F

SFR 地址 = 0xA3

7 6

STAF STOF

R/W R/W

5

--

W

4

--

W

复位值= 00xx-0000

3 2

T1X12 T0X12

W W

1

T1CKOE

W

0

T0CKOE

W

Bit 7:STAF,TWI2启动(Start)标志侦测。

0:软件写“0”清零。

1:硬件置位表明启动(START)条件出现在STWI总线上。

Bit 6:STOF,TWI2停止(Stop)标志侦测。

0:软件写“0”清零。

1:硬件置位表明停止(STOP)条件出现在STWI总线上。

SFIE

:系统标志中断使能寄存器

SFR 页 = 0~F

SFR 地址 = 0x8E RESET = 0110-x000

7 6 5 4 3 2

SIDFIE MCDRE MCDFIE RTCFIE -- BOF1IE

R/W R/W R/W R/W W R/W

1

BOF0IE

R/W

0

WDTFIE

R/W

Bit 7:SIDFIE,串行接口(STWI)侦测标志中断使能。

0:禁止SID标志(STAF或STOF)中断。

1:使能SID标志(STAF或STOF)中断。

178

MA82G5Dxx Data Sheet MEGAWIN

20.3. SID/STWI 范例代码

MEGAWIN MA82G5Dxx Data Sheet

179

21. 蜂鸣器

蜂鸣器功能输出信号产生声音在BEEP引脚。信号来自ILRCO的分频,频率范围大约在1, 2或4 kHz 。图 21–1

所示蜂鸣器发生器电路。但是ILRCO不是精确的时钟源。更详细的ILRCO 频率偏差范围请参考章节“31.5

ILRCO ”。

图 21–1. 蜂鸣器发生器

SFR P4.4

0

¸

32

ILRCO(32KHz)

1

2

3

BEEP

¸

16

¸

8

BPOC[1:0]

(AUXR3.5~4)

00: P4.4

01: ILRCO/32 (~= 1K)

10: ILRCO/16 (~= 2K)

11: ILRCO/8 (~= 4K)

21.1. 蜂鸣器寄存器

AUXR3:

辅助寄存器

3

SFR 页 = 仅0页

SFR 地址 = 0xA4

7 6

T0PS1 T0PS0

R/W R/W

5

BPOC1

R/W

复位值= 0000-0000

4 3 2

BPOC0 S0PS0 TWIPS1

R/W R/W R/W

1

TWIPS0

R/W

0

T0XL

R/W

Bit 5~4:BPOC1~0,蜂鸣器输出控制位。

BPOC[1:0]

P4.4功能 I/O模式

00 P4.4 By P4M0.4 & P4M1.4

01 ILRCO/32 By P4M0.4 & P4M1.4

10 ILRCO/16 By P4M0.4 & P4M1.4

11 ILRCO/8 By P4M0.4 & P4M1.4

蜂鸣器功能在P4.4,推荐设置P4.4工作在推挽输出模式。

180

MA82G5Dxx Data Sheet MEGAWIN

21.2. 蜂鸣器范例代码

MEGAWIN MA82G5Dxx Data Sheet

181

22. 键盘中断(KBI)

键盘中断功能主要用于当KBI.7~0等于或不等于某个值时产生一个中断,这个功能可以用作总线地址识别或键盘键

码识别。

有3个特殊功能寄存器与此功能相关。键盘中断掩码寄存器(KBMASK) 用来定义P2口哪些引脚可以产生中断。键

盘样式寄存器(KBPATN)用来定义与键盘输入值进行比较的值,比较匹配时硬件置键盘中断控制寄存器(KBCON)中

的键盘中断标志(KBIF) ,若EIE1中的EKBI中断允许且EA=1,则还会产生一个中断。键盘中断控制寄存器

(KBCON)中的PATN_SEL位用来定义比较是“相等”还是“不等”匹配。键盘输入可以分配给不同的端口引脚,详情请

参考章节“錯誤! 找不到參照來源。 錯誤! 找不到參照來源。”。

为了使用键盘中断作为“键盘”中断,用户需要设置 KBPATN=0xFF 和 PATN_SEL=0 (不相等),然后将任意按键连

接到KBMASK 寄存器定义的相应端口,按下时硬件就会置位中断标志KBIF,并当中断使能时产生中断。这个中断

可以将CPU从空闲模式或掉电模式下唤醒。这个功能在手持设备,电池供电系统等要求低功耗而且易用的设备上

特别有用。

182

MA82G5Dxx Data Sheet MEGAWIN

22.1. KBI结构

图 22–1. 键盘中断(KBI)结构

KBI0

KBPATN.0

equal.0

Comparator

0

not-equal.0

not-equal.0

not-equal.1

not-equal.2

not-equal.3

not-equal.4

not-equal.5

not-equal.6

not-equal.7

KBPATN Register

KBPATN[7:0]

KBMASK.0

KBMASK Register

KBMASK[7:0]

KBI1

KBPATN.1

equal.1

Comparator

1

not-equal.6

Sampling Type

Selection

Pattern Not Equal

KBMASK.1

0

1

3

clock

Filter

SYSCLK

SYSCLK x 3

SYSCLK/6 x 3

0

1

2

3

KBI2

KBI3

KBI4

KBI5

KBI6

KBI7

KBPATN.7

equal.7

KBMASK.x = 1,

to enable compare output

Pattern Equal

equal.0

equal.1

equal.2

equal.3

equal.4

equal.5

equal.6

equal.7

SYSCLK

KBCS[1:0]

(KBCON.7~6)

Comparator

7

not-equal.7

KBMASK.7

KBCS1KBCS0

KBCON Register

--------

PATN_

SEL

KBIF

KBIET, low active,

to internal logic

KBI

Interrupt

MEGAWIN MA82G5Dxx Data Sheet

183

22.2. KBI寄存器

下面是键盘中断(KBI)操作相关的特殊功能寄存器:

KBPATN

:键盘样式寄存器

SFR 页 = 0~F

SFR 地址 = 0xD5 复位值= 1111-1111

7 6 5 4 3 2 1 0

KBPATN.7 KBPATN.6 KBPATN.5 KBPATN.4 KBPATN.3 KBPATN.2 KBPATN.1 KBPATN.0

R/W R/W R/W R/W R/W R/W R/W R/W

Bit 7~0:KBPATN.7~0:键盘样式,复位值是0xFF。

KBCON

:键盘控制寄存器

SFR 页 = 0~F

SFR 地址 = 0xD6 复位值= XXXX-XX01

7 6 5 4 3 2

KBCS1 KBCS0 -- -- -- --

R/W R/W W W W W

1

PATN_SEL

R/W

0

KBIF

R/W

Bit 7~6:KBCS1~0,KBI滤波模式控制。

KBCS1~0

KBI输入滤波模式

00

禁止

01 SYSCLK x 3

10 SYSCLK/6 x 3

11

保留

Bit 7~2:保留位。当KBCON被写入时,这些位必须软件写“0”。

Bit 1:PATN_SEL,样式匹配极性选择。

0:键盘输入不等于KBPATN中用户定义的样式时产生中断。

1:键盘输入等于KBPATN中用户定义样式时产生中断。

Bit 0:KBIF,键盘中断标志。KBIF默认值是“1”。

0:必须由软件写入‘0’来清零。

1:键盘输入匹配用户定义的KBPATN、KBMASK和PATN_SEL设置条件时置位。

KBMASK

:键盘中断掩码寄存器

SFR 页 = 0~F

SFR 地址 = 0xD7 复位值= 0000-0000

7 6 5 4 3 2 1 0

KBMASK.7 KBMASK.6 KBMASK.5 KBMASK.4 KBMASK.3 KBMASK.2 KBMASK.1 KBMASK.0

R/W R/W R/W R/W R/W R/W R/W R/W

KBMASK.7:置位时,使能KBI7输入作为键盘中断源之一。

KBMASK.6:置位时,使能KBI6输入作为键盘中断源之一。

KBMASK.5:置位时,使能KBI5输入作为键盘中断源之一。

KBMASK.4:置位时,使能KBI4输入作为键盘中断源之一。

KBMASK.3:置位时,使能KBI3输入作为键盘中断源之一。

KBMASK.2:置位时,使能KBI2输入作为键盘中断源之一。

KBMASK.1:置位时,使能KBI1输入作为键盘中断源之一。

KBMASK.0:置位时,使能KBI0输入作为键盘中断源之一。

184

MA82G5Dxx Data Sheet MEGAWIN

AUXR6:

辅助寄存器

6

SFR 页 = 仅3页

SFR 地址 = 0xA4

7 6 5

KBI4PS1 KB4IPS0 KBI6PS0

R/W R/W R/W

复位值= 0000-0x00

4 3 2

KBI2PS0 KBI0PS0 --

R/W R/W W

1

S0MIPS

R/W

0

S0COPS

R/W

Bit 7~6:KBI4PS1~0,KBI4~5端口引脚选择[1:0]。

KBI4PS1~0 KBI4 KBI5

00 P1.4 P1.5

01 P3.4 P3.5

10 P6.0 P6.1

11 P2.0 P2.1

Bit 5:KBI6PS0,KBI6~7端口引脚选择0。

KBI6PS0 KBI6 KBI7

0 P1.6 P1.7

1 P3.0 P3.1

Bit 4:KBI2PS0,KBI2~3端口引脚选择0。

KBI2PS0 KBI2 KBI3

0 P1.2 P1.3

1 P2.2 P2.4

Bit 3:KBI0PS0,KBI0~1端口引脚选择0。

KBI0PS KBI0 KBI1

0 P1.0 P1.1

1 P4.0 P4.1

MEGAWIN MA82G5Dxx Data Sheet

185

23. 10位ADC

MA82G5DXX的ADC子系统由一个模拟多路器(AMUX)和一个1M sps、10位逐次逼近型模数转换器组成。多

路器(AMUX)可以通过特殊功能寄存器进行配置通道,如图 23–1。 ADC运行在单一节点模式,并且可以配置测量

端口1输入引脚的任何一个口或内部参照。仅当ADC控制寄存器(ADCON0) 的ADCEN位被置逻辑1的时候ADC

子系统被使能,ADCEN设置为逻辑0的话ADC子系统低功耗关闭。

23.1. ADC结构

图 23–1. ADC方框图

(P1.0) AIN0

(P1.1) AIN1

(P1.2) AIN2

(P1.3) AIN3

(P1.4) AIN4

(P1.5) AIN5

(P1.6) AIN6

(P1.7) AIN7

(IVR/1.4V) Int. VREF

(0,0,0,0)

(0,0,0,1)

(0,0,1,0)

(0,0,1,1)

(0,1,0,0)

(0,1,0,1)

(0,1,1,0)

(0,1,1,1)

(1,1,1,1)

AMUXVDD (=VREF+)

B9

B1

B8

B0

B7

--

B6

--

B5

--

B4

--

B3

--

B2

--

ADCDH

ADCDL

AIN

10-Bit

ADC

10

ADCFG1

Offset Adjustment

Load

SYSCLK

/1

/2

/4

/8

/16

/32

T2OF/2

ADC Clock

ADCEN--CHS3ADCIADCSCHS2CHS1CHS0

ADCON0

T2OF

or TL2OF

if T2SPL=1

ADCKS2ADCKS1ADCKS0ADRJ----ADTM1ADTM0

ADCFG0

SHT.7SHT.6SHT.5SHT.4SHT.3SHT.2SHT.1SHT.0

ADCFG2

ADCFG3

ADPS1ADPS0HA----------

186

MA82G5Dxx Data Sheet MEGAWIN

23.2. ADC操作

ADC 最大转换速度可以达到1M sps。 ADC转换时钟由ADCFG0寄存器的ADCKS2~0位决定是系统时钟分频或

者定时器 2 的溢出。ADC转换时钟不能超过24MHz。

转换完成后(ADCI为1), 转换结果从ADC结果寄存(ADCH,ADCL)中得到。作为单节点ADC,转换结果

是:

ADC Result =

V

IN

* 1024

VDD(or VREF+) Voltage

23.2.1. ADC输入通道

模拟多路器(AMUX)选择输入口给ADC,允许任何一个端口1引脚成为被测量的单节点模式和一个内部电压参照

(IVR,1.4V)。通过ADCON0寄存器的CHS3~0 位选择进入ADC测量的通道(见图 23–1)。对被选择的引脚测

量的是对地(GND)电压。

23.2.2. ADC内部电压参照

23.2.3. 开启一个转换

在使用ACD功能之前,用户应:

1) 置ADCEN 位启动ADC硬件。

2) 通过ADCKS2、ADCKS1和ADCKS0位配置ADC输入时钟

3) 通过位CHS3、CHS2、CHS1和CHS0选择模拟输入通道

4) 将所选引脚(与端口P1共享)配置成仅模拟输入模式

5) 通过ADRJ 位配置ADC转换结果输出形式

现在,用户就可以置位ADCS来启动AD转换了。转换时间取决于HA 、SHT[7:0]、ADCKS2、ADCKS1和

ADCKS0位。一旦转换结束,硬件自动清除ADCS位,设置中断标志ADCI,并将10位的转换结果按照ADRJ的

设置存入ADCH和ADCL。如果用户设置ADCS 并且选择ADC 的触发模式是定时器2溢出或全速运行,这样

ADC保持不断转换直到ADCEN清零或ADC配置成手动模式。

如上所述,中断标志ADCI,由硬件设置以表明一次转换完成。因此,有两种方法检测AD转换是否完成:(1)软件

检测ADCI中断标志;(2)设置EIE1寄存器EADC位和IE寄存器EA位使能ADC中断。这样,转换结束就会跳入

中断服务进程。无论(1) 或 (2), ADCI标志都必须在下次转换前用软件清零。

23.2.4. ADC转换率

用户可以根据输入的模拟信号频率选择合适的转换速度。ADC的最大输入时钟是24MHz并且操作在最少24个

ADC转换时钟的转换时间。用户可以通过ADCFG0寄存器的ADCKS2~0、SHT (ADCFG2.7~0)和HA

(ADCFG3.5)来配置转换速率。下面公式是一个ADC转换的时钟个数:

ADC Conversion Rate =

ADC Clock Freq.

(24 + X + Y*6)

; X = SHT, 0~255

; Y= HA, 0~1

例如,若Fosc =12MHz并且ADCKS = SYSCLK/2,SFT = 0,HA = 1,则输入的模拟信号频率应该不超过200K

Hz,这样可以保证转换精度。(转换速率= 12MHz/2/(24+0+6) = 200KHz) 。

MEGAWIN MA82G5Dxx Data Sheet

187

23.2.5. I/O端口引脚用于ADC功能

用作A/D转换的模拟输入引脚也可以保持其数字I/O输入输出功能。为了获得恰当的模拟性能,用作ADC的引脚

应当禁止其数字输出,将引脚设为仅输入模式。当ADCI7~0引脚作为模拟信号输入时并且数字信号输入不需要

时,软件可以设置相应的引脚仅为模拟输入以便降低数字输入缓冲器的功耗。模拟输入功能的端口配置描述在表

13–3. 和参考章节“錯誤! 找不到參照來源。 錯誤! 找不到參照來源。”。

23.2.6. 空闲和掉电模式

在空闲和掉电模式下,若ADC功能打开,它将消耗一部分的电流。因此,为了降低待机和掉电模式下的功耗,可

以在进入掉电和空闲模式前关闭ADC硬件 (ADCEN =0)。

在掉电模式下,ADC不工作。如果在空闲模式下软件触发 ADC 操作,ADC 将完成转换并置位 ADC 中断标志

ADCI。当ADC 中断使能 (EADC, EIE1.1)置位时,ADC中断将把 CPU 从空闲模式唤醒。

188

MA82G5Dxx Data Sheet MEGAWIN

23.3. ADC寄存器

ADCON0

ADC

控制寄存器

0

SFR 页 = 0~F

SFR 地址 = 0xC4

7 6 5

ADCEN -- CHS3

R/W W R/W

复位值= 0x00-0000

4 3 2

ADCI ADCS CHS2

R/W R/W R/W

1

CHS1

R/W

0

CHS0

R/W

Bit 7:ADCEN,ADC使能。

0:清零而关闭ADC模块。

1:开启ADC模块。在ADCS置位之前至少需要5us的ADC使能时间。

Bit 6:保留位。当ADCON0被写入时,这位必须软件写“0”。

Bit 5:CHS3,结合CH2~0选择ADC输入通道。

Bit 4:ADCI,ADC中断标志。

0:此标志必须软件清零。

1:一次A/D转换完成时此标志置位,若中断允许则还会产生一个中断。

Bit 3:ADCS,ADC转换启动。

0:ADCS不会被软件清零。

1:软件置此位启动一次A/D转换。转换完成,ADC硬件会自动清除ADCS并且ADCI置位。无论ADCS或ADCI

为”1”时将不会开始新的A/D转换。

Bit 2~0:CHS2 ~ CHS1, ADC模拟多路器输入通道选择位。

单节点模式:

CHS3~0

通道选择

0 0 0 0 AIN0 (P1.0)

0 0 0 1 AIN1 (P1.1)

0 0 1 0 AIN2 (P1.2)

0 0 1 1 AIN3 (P1.3)

0 1 0 0 AIN4 (P1.4)

0 1 0 1 AIN5 (P1.5)

0 1 1 0 AIN6 (P1.6)

0 1 1 1 AIN7 (P1.7)

1 1 1 1

内部VREF (IVR/1.4V)

其它 保留

ADCFG0

ADC

配置寄存器

0

SFR 页 = 仅0页

SFR 地址 = 0xC3 复位值= 0000-xx00

7 6 5 4 3 2 1 0

ADCKS2 ADCKS1 ADCKS0 ADRJ -- -- ADTM1 ADTM0

R/W R/W R/W R/W R/W R/W R/W R/W

Bit 7~5:ADC转换时钟选择位。

ADCKS[1:0]

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

ADC时钟选择

SYSCLK

SYSCLK/2

SYSCLK/4

SYSCLK/8

SYSCLK/16

MEGAWIN MA82G5Dxx Data Sheet

189

1 0 1

1 1 0

1 1 1

SYSCLK/32

保留

T2OF/2

注意:

1. SYSCLK

是系统时钟。

2. T2OF

是定时器2溢出。

Bit 4:ADRJ,ADC结果向右对齐选择。

0:高8位转换结果存在ADCH[7:0],低2位转换结果存在ADCL[7:6]。

1:高2位转换结果存在ADCH[1:0],低8位转换结果存在ADCL[7:0]。

如果ADRJ = 0

ADCDH

ADC

数据高字节寄存器

SFR 页 = 0~F

SFR 地址 = 0xC6 复位值= xxxx-xxxx

7 6 5 4 3 2

(B9) (B8) (B7) (B6) (B5) (B4)

R R R R R R

1

(B3)

R

0

(B2)

R

ADCL

ADC

数据低字节寄存器

SFR 页 = 0~F

SFR 地址 = 0xC5

7 6 5

(B1) (B0) --

R R R

4

--

R

复位值= xxxx-xxxx

3 2

-- --

R R

1

--

R

0

--

R

如果ADRJ = 1

ADCDH

7 6

-- --

R R

5

--

R

4

--

R

3

--

R

2

--

R

1

(B9)

R

0

(B8)

R

ADCDL

7

(B7)

R

6

(B6)

R

5

(B5)

R

4

(B4)

R

3

(B3)

R

2

(B2)

R

1

(B1)

R

0

(B0)

R

在单节点模式下,转换结果是10位的无符号整数。输入的测量值从”0”到VREF x 1023/1024。下表列举了向右对

齐和向左对齐数据。ADCDH和ADCDL寄存器没有用到的位都是”0”。

ADCDH:ADCDL ADCDH:ADCDL

输入电压

(ADRJ = 0) (ADRJ = 1)

(单节点模式)

VDD(or VREF+) x 1023/1024 0xFFC0 0x03FF

VDD(or VREF+) x 512/1024 0x8000 0x0200

VDD(or VREF+) x 256/1024 0x4000 0x0100

VDD(or VREF+) x 128/1024 0x2000 0x0080

0 0x0000 0x0000

Bit 3~2:保留位。当ADCFG0被写入时,这些位必须软件写“0”。

Bit 1~0:ADC触发模式选择。

ADTM[1:0]

ADC转换开启选择

0 0

ADCS置位

0 1

定时器0溢出

1 0

全速模式

1 1

保留

190

MA82G5Dxx Data Sheet MEGAWIN

ADCFG1

ADC

配置寄存器

1

SFR 页 = 仅1页

SFR 地址 = 0xC3

7 6 5

-- -- --

W W W

复位值= xxx0-0000

4 3 2

SIGN AOS.3 AOS.2

R/W R/W R/W

1

AOS.1

R/W

0

AOS.0

R/W

Bit 7~5:保留位。当ADCFG1被写入时,这些位必须软件写“0”。

Bit 4~0:SIGN和AOS.3~0。这个寄存器的值将校正保存在{ADCH, ADCL}上的ADC转换结果,用来消除偏移

量。软件通过设置可以动态收集ADC的偏移值,并且用这个值更新AD0ROC,用于ADC转换结

果的自动修正。软件也可以将这个值存入到MA82G5DXX的IAP区域,用它作为一个ADC偏移量校正的常规参

数。下表列举了ADC转换结果的AD0ROC校正值。

{Sign, AOS.[3:0]}

{ADCDH, ADCDL}值

0_1111

ADC转换结果+ 15

0_1110

ADC转换结果+ 14

…… ……

0_0010

ADC转换结果+ 2

0_0001

ADC转换结果+ 1

0_0000

ADC转换结果+ 0

1_1111

ADC转换结果– 1

1_1110

ADC转换结果– 2

…… ……

1_0001

ADC转换结果– 15

1_0000

ADC转换结果– 16

ADCFG2

ADC

配置寄存器

2

SFR 页 = 仅2页

SFR 地址 = 0xC3 复位值= 0000-0000

7 6 5 4 3 2 1 0

SHT.7 SHT.6 SHT.5 SHT.4 SHT.3 SHT.2 SHT.1 SHT.0

R/W R/W R/W R/W R/W R/W R/W R/W

Bit 7~0:SHT[7:0],扩展ADC 采样时间。SHT的值是0~255 ADC时钟。

ADCFG3

ADC

配置寄存器

3

SFR 页 = 仅3页

SFR 地址 = 0xC3 复位值= 010x-xxxx

7 6 5 4 3 2

ADPS1 ADPS0 HA -- -- --

R/W R/W R/W W W W

1

--

W

0

--

W

Bit 7~6:ADC节能模式选择位1~0。

ADPS[1:0]

ADC节能控制

0 0

高功耗,高速度

0 1

中高功耗,中高速度(默认)

1 0

中低功耗,中低速度

1 1

低功耗,低速度

Bit 5:HA,ADC转换的扩展6个ADC时钟。

MEGAWIN MA82G5Dxx Data Sheet

191

Bit 4~0:保留位。当ADCFG3被写入时,这些位必须软件写“0”。

PCON3

:电源控制寄存器

3

SFR 页 = 仅P页

SFR 地址 = 0x45 POR = 0000-0000

7 6 5 4 3 2

IVREN -- -- -- LDOC1 LDOC0

R/W W W W R/W R/W

1

FLDO

R/W

0

LDOL

R/W

Bit 7:IVREN,内部电压参照使能。

0:禁止片内IVR (1.4V)。

1:使能片内IVR (1.4V)。

192

MA82G5Dxx Data Sheet MEGAWIN

24. 模拟比较器0 (AC0)

24.1. AC0 结构

图 24–1. 模拟比较器0方框图

AC0PI0 (P1.0)

AC0PI1 (P2.0)

AC0PI2 (P2.1)

AC0PI3 (P1.2)

AC0PIS[1:0]

(0,0)

(0,1)

(1,0)

(1,1)

0

1

2

3

ACPI0

ACNI0

+

-

3

clock

Filter

Sampling Type

Selection

Analog Comparator 0 Structure

0

1

2

3

AC0M0

EAC0

(EIE1.7)

SYSCLK

SYSCLK x 3

SYSCLK/6 x 3

AC0OUT to internal logic

AC0OUT

AC0OUT to Port Pin

AC0NI (P1.1)

(IVR/1.4V) Int. VREF

NVRS[3:0]

0000

1111

SYSCLK

{AC0FLT1,AC0FLT}

(AUXR4.0, AC0MOD.2)

AC0F

AC0

Interrupt

AC0M1

AC0CON

AC0LPAC0PDXAC0OUTAC0FAC0ENAC0INVAC0M1AC0M0

AC0ES

AC0MOD

NVRS3NVRS2NVRS1NVRS0--AC0FLTAC0PIS1AC0PIS0

AUXR4

C1IC2S1C1IC2S0C1IC0S1C1IC0S0AC1OEAC1FLT1AC0OEAC0FLT1

Analog Comparator 0 behavior

when AC0INV =1 & {AC0FLT1, AC0FLT} = 00

AC0 Result

Sampling

Timing

Analog Comparator 0 behavior

when AC0INV= 0 & {AC0FLT, AC0FLT} = 01

AC0 Result

Sampling

Timing

AC0OUT

(AC0INV=1)

AC0OUT

(AC0INV=0)

AC0F

If AC0M0=1Clear by CPUIf AC0M1=1If AC0M0=1If AC0M1=1

AC0F

If AC0M1=1Clear by CPUIf AC0M0=1

MEGAWIN MA82G5Dxx Data Sheet

193

24.2. AC0寄存器

AC0CON

:模拟比较器0控制和状态寄存器

SFR 页 = 0~F

SFR 地址 = 0x9E 复位值= 00X0-0000

7 6 5 4 3 2

AC0LP AC0PDX AC0OUT AC0F AC0EN AC0INV

R/W R/W R R/W R/W R/W

1

AC0M1

R/W

0

AC0M0

R/W

Bit 7:AC0LP,模拟比较器0低功耗使能。

0:禁止AC0低功耗模式。

1:使能AC0低功耗模式。

Bit 6:AC0PDX,掉电模式下模拟比较器0控制。

0:模拟比较器0在掉电模式下关闭。

1:模拟比较器0在掉电模式下继续运行。

如果AC0EN、AC0PDX 和 EAC0 已经置位, 比较器仅能在电平输入(低电平或高电平)时把CPU从掉电模式中唤

醒。

Bit 5:AC0OUT,这是一个从比较器输出的只读位。

AC0INV = 0 AC0INV = 1

AC0 输入

ACPI0(+) > ACNI0(-) AC0OUT = 1 AC0OUT = 0

ACPI0(+) < ACNI0(-) AC0OUT = 0 AC0OUT = 1

Bit 4:AC0F,模拟比较器 0 中断标志位。

0:此标志必须软件清零。

1:当比较器输出满足AC0M[1:0]指定的条件并且AC0EN为1,此位置位。通过EIE1.7的置位/清零可以使能/禁止

这个中断。

Bit 3:AC0EN,模拟比较器 0 使能。

0:清零这位将强制比较器输出低,并且从设置ACF0阻止进一步的事件。

1:置位使能比较器。

Bit 2:AC0INV,模拟比较器0输出反相位。

0:AC0输出不反相。

1:AC0输出反相。

Bit 1~0:AC0M[1:0],模拟比较器 0 中断模式。

AC0M[1:0]

AC0中断模式

0 0

保留

0 1

比较器0侦测输出下降沿

1 0

比较器0侦测输出上升沿

1 1

比较器0侦测输出跳变

AC0MOD

:模拟比较器

0

模式寄存器

SFR 页 = 0~F

SFR 地址 = 0x9F 复位值= 0000-x000

7 6 5 4 3 2 1 0

NVRS3 NVRS2 NVRS1 NVRS0 -- AC0FLT AC0PIS1 AC0PIS0

W W W R/W W R/W R/W R/W

Bit 7~5:NVRS[3:0],模拟比较器0负端参考电压输入选择。这4个位决定了模拟比较器负端(V-)的输入源,如

下所示:

194

MA82G5Dxx Data Sheet MEGAWIN

NVRS[3:0]

0000

1111(1xxx)

(V-) 输入

AC0NI(P1.1)

内部VREF (1.4V)

Bit 2:AC0FLT,模拟比较器0输出滤波控制。和AC0FLT1 (AUXR4.0)一起选择AC0OUT的滤波模式。

AC0FLT1, AC0FLT

AC0OUT滤波模式

0 0

禁止

0 1 SYSCLK x 3

1 0 SYSCLK/6 x 3

1 1

保留

Bit 1~0:AC0PIS[1:0],模拟比较器0正端输入I/O口通道选择。这2个位决定了模拟比较器正端(V+)的输入

源,如下所示:

AC0PIS[1:0]

(V+) 输入选择

0 0 AC0PI0(P1.0)

0 1 AC0PI1(P2.0)

1 0 AC0PI2(P2.1)

1 1 AC0PI3(P6.0)

AUXR4:

辅助寄存器

4

SFR 页 = 仅1页

SFR 地址 = 0xA4 复位值= 0000-0x00

7 6 5 4 3 2 1 0

T2PS1 T2PS0 T1PS1 T1PS0 SPIPS0 -- AC0OE AC0FLT1

R/W R/W R/W R/W R/W W R/W R/W

Bit 1:AC0OE,AC0OUT输出在端口引脚的使能。

0:禁止AC0OUT输出到端口引脚。

1:使能AC0OUT输出到P6.1。

PCON3

:电源控制寄存器

3

SFR 页 = 仅P页

SFR 地址 = 0x45 POR = 0xxx-xxxx

7 6 5 4 3 2

IVREN -- -- -- -- --

R/W W W W W W

1

--

W

0

--

W

Bit 7:IVREN,内部电压参照使能。

0:禁止片内VREF (IVR/1.4V)。

1:使能片内VREF (IVR/1.4V)。

MEGAWIN MA82G5Dxx Data Sheet

195

25. 内部电压参照(IVR, 1.4V)

25.1. IVR (1.4V) 结构

图 25–1. IVR 图解

25.2. IVR 寄存器

PCON3

:电源控制寄存器3

SFR 页 =仅P页

SFR 地址 = 0x45

7 6

IVREN --

R/W W

5

--

W

4

--

W

POR = 0xxx-xxxxx

3 2

-- --

W W

1

--

W

0

--

W

Bit 7:IVREN,内部电压参照使能。

0:禁止片内VREF (IVR/1.4V)。

1:使能片内VREF (IVR/1.4V)。

196

MA82G5Dxx Data Sheet MEGAWIN

26. ISP和IAP

MA82G5DXX的Flash存储器分区位AP-存储器,IAP-存储器和ISP-存储器。AP-存储器用于存放用户的应用程

序。IAP用于存放非易失性应用数据,ISP-存储器用于储存在系统编程的引导程序。当MCU运行在ISP区域时,

MCU可以修改AP和IAP存储器用于程序更新。如果MCU运行在AP区域,软件仅能修改IAP存储器用于更新应

用数据。

26.1. MA82G5D16 Flash存储器配置

MA82G5D16总共有16K字节的Flash,图 26–1显示了MA82G5D16的Flash配置。ISP存储空间可以被禁止或

由硬件选项0.5KB步距配置最大7.5K字节。IAP存储空间大小由IAP低边界和高边界决定。IAP低边界由IAPLB

寄存器的值决定。IAP高边界与ISP的起始地址相关,ISP存储空间由硬件选项决定。IAPLB寄存器值由硬件选项

配置或AP软件编程设定。所有AP, IAP和ISP存储空间共享总16K字节的存储空间。

图 26–1. MA82G5D16 Flash存储器配置

Note:

(1) ISP Start Address:

0x2200 if ISP Size = 7.5KB

0x2400 if ISP Size = 7KB

………………………………

0x3000 if ISP Size = 4KB

………………………………

0x3C00 if ISP Size = 1KB

0x3E00 if ISP Size = 0.5KB

0x0000

Application Code

AP-memory

(2) IAP Size :

IAPLB = IAP Low Boundary (ROM High-Byte address)

IAP Start Address = {IAPLB, 00H}

IAP Size = ISP Start Address – IAP Start Address

IAP Low Boundary

Set LAPLB = Change IAP Size

(3) If ISP is enabled:

IAP High Boundary = ISP Start Address – 1

IAP Low Boundary = ISP Start Address – IAP Size

(4) If ISP is disabled:

IAP High Boundary = 0x3FFF

IAP Low Boundary = 0x3FFF – IAP Size + 1

Flash Memory

Total: 16KB

IAPLB = 0x36 (default)

IAP start 0x3600

IAP Data

IAP-memory

IAP High Boundary

ISP Start Address

ISP start 0x3A00 (default)

ISP Code

0x3FFF

ISP-memory

注意:

笙泉公司

MA82G5D16

的默认

flash

存储器配置是:

1.5K ISP

1.0K IAP

和加密。

1.5K ISP

区域是锲入有笙泉

专利的

COMBO ISP

代码通过一条线就能在线下载的

1-

线

ISP

协议及串口

(COM)ISP

协议。

1.0K IAP

大小可以

通过应用程序软件来重新配置。

MEGAWIN MA82G5Dxx Data Sheet

197

26.2. MA82G5D08 Flash存储器配置

MA82G5D08总共有8K字节的Flash,图 26–2显示了MA82G5D08的Flash配置。ISP存储空间可以被禁止或

由硬件选项0.5KB步距配置最大7.5K字节。IAP存储空间大小由IAP低边界和高边界决定。IAP低边界由IAPLB

寄存器的值决定。IAP高边界与ISP的起始地址相关,ISP存储空间由硬件选项决定。IAPLB寄存器值由硬件选项

配置或AP软件编程设定。所有AP, IAP和ISP存储空间共享总8K字节的存储空间。

图 26–2. MA82G5D08 Flash存储器配置

Note:

(1) ISP Start Address:

0x2200 if ISP Size = 7.5KB

0x2400 if ISP Size = 7KB

………………………………

0x3000 if ISP Size = 4KB

………………………………

0x3C00 if ISP Size = 1KB

0x3E00 if ISP Size = 0.5KB

0x0000

Application Code

AP-memory

(2) IAP Size :

IAPLB = IAP Low Boundary (ROM High-Byte address)

IAP Start Address = {IAPLB, 00H}

IAP Size = ISP Start Address – IAP Start Address

IAP Low Boundary

Set LAPLB = Change IAP Size

(3) If ISP is enabled:

IAP High Boundary = ISP Start Address – 1

IAP Low Boundary = ISP Start Address – IAP Size

(4) If ISP is disabled:

IAP High Boundary = 0x3FFF

IAP Low Boundary = 0x3FFF – IAP Size + 1

Flash Memory

Total: 16KB

IAPLB = 0x36 (default)

IAP start 0x3600

IAP Data

IAP-memory

IAP High Boundary

ISP Start Address

ISP start 0x3A00 (default)

ISP Code

0x3FFF

ISP-memory

注意:

笙泉公司

MA82G5D08

的默认

flash

存储器配置是:

1.5K ISP

1.0K IAP

和加密。

1.5K ISP

区域是锲入有笙泉

专利的

COMBO ISP

代码通过一条线就能在线下载的

1-

线

ISP

协议及串口

(COM)ISP

协议。

1.0K IAP

大小可以

通过应用程序软件来重新配置。

198

MA82G5Dxx Data Sheet MEGAWIN

26.3. MA82G5DXX Flash在ISP/IAP上的访问

MA82G5DXX给ISP和IAP应用提供三种flash访问模式:页擦除模式,字节编程模式及读取模式。MCU软件使

用这三种模式去更新Flash的数据和获取Flash的数据。本章展示了不同Flash模式的流程图和范例代码。

在执行ISP/IAP操作之前,用户需要在CKCON1寄存器的XCKS5~XCKS0填入正确值。(参考章节“錯誤! 找不到參

照來源。 錯誤! 找不到參照來源。”)

页擦除(每页512字节)

步骤1:在ISPCR 寄存器上设置MS[2:0]=[0,1,1]选择页擦除模式。

步骤2:填入页地址到IFADRH和IFADRL寄存器。

步骤3:顺序地在SCMD 寄存器写入0x46h 然后0xB9h 触发一个ISP处理。

字节编程

步骤1:在ISPCR 寄存器上设置MS[2:0]=[0,1,0]选择字节编程模式。

步骤2:填入字节地址到IFADRH和IFADRL寄存器。

步骤3:填入被编程数据到IFD寄存器。

步骤4:顺序地在SCMD 寄存器写入0x46h 然后0xB9h 触发一个ISP处理。

字节读取

步骤1:在ISPCR 寄存器上设置MS[2:0]=[0,0,1]选择字节读取模式。

步骤2:填入字节地址到IFADRH和IFADRL寄存器。

步骤3:顺序地在SCMD 寄存器写入0x46h 然后0xB9h 触发一个ISP处理。

步骤4:现在,Flash 数据在IFD 寄存器。

MA82G5DXX的页擦除,字节编程和读取的详细描述见下面章节:

MEGAWIN MA82G5Dxx Data Sheet

199


发布者:admin,转转请注明出处:http://www.yc00.com/news/1719988477a2759578.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信