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条)