SH79F1615
集成ADC和PWM的增强型8051微控制器
1. 特性
基于8051指令流水线结构的8位单片机
Flash ROM:16K字节
RAM:1.5K字节
内建单输入模拟比较器CMP1
类EEPROM:2048字节
内建多输入模拟施密特比较器CMP2
工作电压:
fOSC = 400k - 27MHz,VDD = 2.4V - 5.5V
内建1个模拟放大器OP1
增强型UART
高频振荡器(代码选项三选一):
- 陶瓷谐振器:400k - 16MHz
- 晶体谐振器:400k - 16MHz
- 内部RC高频振荡器:27MHz
一路8bit无死区PWM3输出
10+1通道12位1M sps高速模数转换器(ADC),
自动触发ADC功能,16通道转换结果缓冲功能
蜂鸣音发生器
内建的低电压复位功能(代码选项)
- LVR电压1:4.1V
- LVR电压2:2.8V
CPU机器周期:
- 1振荡周期
低频振荡器:内部RC低频振荡器:128KHz
30个CMOS双向I/O管脚
I/O内建上拉电阻
P2口可增强灌电流能力(代码选项可选增强或标准)
看门狗定时器(WDT)
P0/P3口可增强拉电流能力(代码选项可选增强或标准)
内建振荡器预热计数器
4个16位定时器/计数器T0/T1/T2/T3
三个16位带死区控制PWM通道,6路输出,并且具有故
障检测功能
低功耗工作模式:
- 空闲模式
- 掉电模式
中断源:
- 定时器0/1/2/3
- 外部中断0 - 1
- 外部中断4:8输入
- ADC
- EUART
- PWM周期和占空比中断
- 模拟比较器1/2
Flash型
40位可读MCU识别码
工作环境温度-40 ~ +105℃
封装:
- LQFP32
- QFN32
2. 概述
SH79F1615是一种高速高效率8051兼容单片机。在同样振荡频率下,较之传统的8051芯片具有运行更快速,性能更优越的
特性。
SH79F1615保留了标准8051芯片的大部分特性,包括内置256字节RAM和2个16位定时器/计数器。此外,SH79F1615还集
成了1280字节外部扩展RAM,以及存储程序的16K字节flash,此外还集成2K类EEPROM,用于在系统掉电后保存数据。
SH79F1615还集成了两个多输入模拟比较器,一路放大器,12位集成数字比较功能的高速ADC,以及6输出带死区时间控
制的电机控制PWM模块,非常适合于直流无刷电机/永磁同步电机控制。
此外,SH79F1615集成了看门狗定时器,上电复位和低电压复位等功能,提供了2种低功耗省电模式。
1
V2.1
SH79F1615
3. 方框图
VDD
Reset circuit
Power
RST
Pipelined 8051 architecture
Watch Dog
16K Bytes
Flash ROM
Port 0
Configuration/IO
P0.0 - P0.7
Internal 256 Bytes
External 1280 Bytes
Data RAM
Port 1
Configuration/IO
P1.0 - P1.7
Timer 0 (16bit)
Timer 1 (16bit)
Timer 2 (16bit)
Timer 3 (16bit)
Port 2
Configuration/IO
P2.0 - P2.7
Port 3
Configuration/IO
P3.0 - P3.5
External Interrupt
2 Analog
COMPARATOR
16-bit PWM module
3 channel
6 output
1 Op Amplifier
EUART
12-bit ADC
8bit PWM
Internal
Oscillator
XTAL1
Jtag ports
(for debug)
Oscillator
XTAL2
BUZZER
2
SH79F1615
4. 引脚配置
21
P3.2/INT41/TXD
P2.1/PWM1
22
P3.1/INT40/RXD
P2.2/PWM2
23
P2.0/PWM0
P2.3/PWM01
24
P3.0/PWM3
P2.4/PWM11
32脚LQFP封装
20
19
18
17
PWM21/P2.5
25
16
FLT/T0/P2.6
26
15
P3.4/INT43/XTAL2
T1/P2.7
27
14
P3.5/INT44/XTAL1
13
GND
31
C2P1/AN1/INT46/P0.3
32
2
3
C1N/P0.1
C2P0/AN0/INT45/P0.2
1
4
5
6
7
12
VDD
11
P1.7
10
P1.6/AN10
9
P1.5/RST/TCK
8
TDI/BUZ/P1.4
C2P2/AN2/INT47/P0.4
TMS/AN9/INT1/P1.3
30
TDO/AN8/INT0/P1.2
VREF/AN3/P0.5
SH79F1615P
C1P/OP1P/P1.1
29
OP1N/P1.0
28
OP1OUT/P0.0
AN5/P0.7
C2N/AN4/P0.6
P3.3/INT42
P2.4/PWM11
P2.3/PWM01
P2.2/PWM2
P2.1/PWM1
P2.0/PWM0
P3.0/PWM3
P3.1/INT40/RXD
P3.2/INT41/TXD
32脚QFN封装
24
23
22
21
20
19
18
17
PWM21/P2.5
25
16
FLT/T0/P2.6
26
15
P3.4/INT43/XTAL2
T1/P2.7
27
14
P3.5/INT44/XTAL1
13
GND
P3.3/INT42
AN5/P0.7
28
C2N/AN4/P0.6
29
12
VDD
VREF/AN3/P0.5
30
11
P1.7
C2P2/AN2/INT47/P0.4
31
10
P1.6/AN10
C2P1/AN1/INT46/P0.3
32
9
P1.5/RST/TCK
5
6
7
8
TMS/AN9/INT1/P1.3
TDI/BUZ/P1.4
C1N/P0.1
OP1OUT/P0.0
4
TDO/AN8/INT0/P1.2
3
C1P/OP1P/P1.1
2
OP1N/P1.0
1
C2P0/AN0/INT45/P0.2
SH79F1615Q
注意:
引脚命名中,写在最外侧的引脚功能具有最高优先级,最内侧的引脚功能具有最低优先级(参见引脚配置图)。当一个引
脚被高优先级的功能占用时,即使低优先级功能被允许,也不能作为低优先级功能的引脚。只有当软件禁止引脚的高优先级功
能,相应引脚才能被释放作为低优先级端口使用。
但也有同优先级情况,比如P0.2 - P0.4,它们可以同时用作AD输入通道和比较器同相输入端,具体端口共用请参考7.6.4“端
口共用”章节。
3
SH79F1615
引脚功能
引脚编号
引脚命名
默认功能
1
C2P0/AN0/INT45/P0.2
P0.2
2
C1N/P0.1
P0.1
3
OP1OUT/P0.0
P0.0
4
OP1N/P1.0
P1.0
5
C1P/OP1P/P1.1
P1.1
6
TDO/AN8/INT0/P1.2
P1.2
7
TMS/AN9/INT1/P1.3
P1.3
8
TDI/BUZ/P1.4
P1.4
9
_________
_________
TCK/RST /P1.5
RST
10
AN10/P1.6
P1.6
11
P1.7
P1.7
12
VDD
----
13
GND
----
14
XTAL1/INT44/P3.5
P3.5
15
XTAL2/INT43/P3.4
P3.4
16
INT42/P3.3
P3.3
17
TXD/INT41/P3.2
P3.2
18
RXD/INT40/P3.1
P3.1
19
PWM3/P3.0
P3.0
20
PWM0/P2.0
P2.0
21
PWM1/P2.1
P2.1
22
PWM2/P2.2
P2.2
23
PWM01/P2.3
P2.3
24
PWM11/P2.4
P2.4
25
PWM21/P2.5
P2.5
26
P2.6/T0/FLT
P2.6
27
T1/P2.7
P2.7
28
AN5/P0.7
P0.7
29
C2N/AN4/P0.6
P0.6
30
VREF/AN3/P0.5
P0.5
31
C2P2/AN2/INT47/P0.4
P0.4
32
C2P1/AN1/INT46/P0.3
P0.3
4
SH79F1615
5. 引脚描述
引脚编号
类型
说明
P0.0 - P0.7
I/O
8位双向I/O端口
P1.0 - P1.7
I/O
8位双向I/O端口
P2.0 - P2.7
I/O
8位双向I/O端口
P3.0 - P3.5
I/O
6位双向I/O端口
T0
I/O
定时器0外部输入/比较功能输出
T1
I/O
定时器1外部输入/比较功能输出
PWM01,11,21
O
16BIT PWM互补输出
PWM0,1,2
O
16BIT PWM输出
PWM3
O
8BIT PWM独立输出
FLT
I
16BIT PWM模块故障输入信号
AN0 - ANx
I
ADC输入通道
VREF
I
ADC参考电压输入
INT0,1
I
外部中断输入
INT40 - INT47
I/O
I/O端口
定时器
PWM
模数转换器
中断,复位,时钟,电源
外部中断4输入源
RST
I
该引脚上保持10µs以上的低电平,CPU将复位。由于有内建30kΩ上拉电阻连接到VDD,
所以仅接一个外部电容即可实现上电复位。
注意:在使用JTAG功能(仿真或工具烧写)时,外接电容不能大于0.01µF,否则就
应将外接电容断开。
XTAL1
I
谐振器输入
XTAL2
O
谐振器输出
GND
P
接地
VDD
P
电源(2.4 - 5.5V)
RXD
I/O
串口数据输入
TXD
O
串口数据输出
BUZ
O
蜂鸣器输出
————
EUART
蜂鸣器
5
SH79F1615
续上表
内部模拟比較器
C1N
I
比较器1反相输入端(比较器1同相输入端和放大器1同相输入端OPP共用)
C2N
I
比较器2反相输入端
C2P0 - 2
I
比较器2同相多路输入端
I
放大器1同相输入端
内部模拟放大器
OP1P
O1PN
I
放大器1反相输入端
OP1OUT
O
放大器1输出端
TDO
O
调试接口:测试数据输出
TMS
I
调试接口:测试模式选择
TDI
I
调试接口:测试数据输入
TCK
I
调试接口:测试时钟输入
编程器接口
注意:
当P1.2-1.5作为调试接口时,P1.2-1.5的原有功能被禁止
6
SH79F1615
6. SFR映像
SH79F1615内置256字节的直接寻址寄存器,包括通用数据存储器和特殊功能寄存器(SFR),SH79F1615的SFR有以下
几种:
CPU内核寄存器:
ACC,B,PSW,SP,DPL,DPH
CPU内核增强寄存器:
AUXC,DPL1,DPH1,INSCON,XPAGE
电源时钟控制寄存器:
PCON,SUSLO
Flash寄存器:
IB_OFFSET,IB_DATA,IB_CON1,IB_CON2,IB_CON3,IB_CON4,IB_CON5
数据页面控制寄存器:
XPAGE
看门狗定时器寄存器:
RSTSTAT
系统时钟控制寄存器:
CLKCON
中断寄存器:
IEN0,IEN1,IENC,IPH0,IPL0,IPH1,IPL1,EXF1
I/O端口寄存器:
P0,P1,P2,P3,P0CR,P1CR,P2CR,P3CR, P0PCR,P1PCR,P2PCR,P3PCR
定时器寄存器:
TCON , TMOD , TH0 , TH1 , TL0 , TL1 , T2CON , T2MOD , TH2 , TL2 , RCAP2L ,
RCAP2H,TCON1,T3CON,TL3,TH3
EUART寄存器:
SCON,SBUF,SADEN,SADDR,PCON,SBRTL,SBRTH,BFINE
ADC寄存器:
ADCON1 , ADCON2 , ADT , SEQCON , ADCH1 , ADCH2 , SEQCHX , ADDXL ,
ADDXH,ADDGTL,ADDGTH,ADDLTL,ADDLTH,ADCMPCON
PWM3寄存器:
PWM3CON,PWM3P,PWM3D
OP&CMP寄存器:
CMP1CON,CMP2CON0,CMP2CON1,CMP2CON2
MCM寄存器:
PWMCON1 , PWMCON2 , PTCON , PWMOE , PMANUALCON1 , PMANUALCON2 ,
FLTCON , PWMINTEN , PWMINTF , PWMRLDEN , PWMPL , PWMPH , PWM0DL ,
PWM0DH , PWM1DL , PWM1DH , PWM2DL , PWM2DH , PWM01DL/PWMDTOL ,
PWM01DH/PWMDTOH , PWM11DL/PWMDT1L , PWM11DH/PWMDT1H , PWM21DL ,
PWM21DH
BUZZER寄存器:
BUZCON
7
SH79F1615
Table 6.1 C51核SFRs
符号
地址
名称
POR/WDT/LVR
/PIN复位值
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ACC
E0H
累加器
00000000
ACC.7
ACC.6
ACC.5
ACC.4
ACC.3
ACC.2
ACC.1
ACC.0
B
F0H
B寄存器
00000000
B.7
B.6
B.5
B.4
B.3
B.2
B.1
B.0
AUXC
F1H
C寄存器
00000000
C.7
C.6
C.5
C.4
C.3
C.2
C.1
C.0
PSW
D0H
程序状态字
00000000
CY
AC
F0
RS1
RS0
OV
F1
P
SP
81H
堆栈指针
00000111
SP.7
SP.6
SP.5
SP.4
SP.3
SP.2
SP.1
SP.0
DPL
82H
数据指针低位字节
00000000
DPL0.7
DPL0.6
DPL0.5
DPL0.4
DPL0.3
DPL0.2
DPL0.1
DPL0.0
DPH
83H
数据指针高位字节
00000000
DPH0.7
DPH0.6
DPH0.5
DPH0.4
DPH0.3
DPH0.2
DPH0.1
DPH0.0
DPL1
84H
数据指针1低位字节
00000000
DPL1.7
DPL1.6
DPL1.5
DPL1.4
DPL1.3
DPL1.2
DPL1.1
DPL1.0
DPH1
85H
数据指针1高位字节
00000000
DPH1.7
DPH1.6
DPH1.5
DPH1.4
DPH1.3
DPH1.2
DPH1.1
DPH1.0
INSCON
86H
数据指针选择
----00-0
-
-
-
-
DIV
MUL
-
DPS
POR/WDT/LVR
/PIN复位值
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
Table 6.2 电源时钟控制SFRs
符号
地址
名称
PCON
87H
电源控制
00000000
SMOD
SSTAT
IT41
IT40
GF1
GF0
PD
IDL
SUSLO
8EH
电源控制保护字
00000000
SUSLO.7
SUSLO.6
SUSLO.5
SUSLO.4
SUSLO.3
SUSLO.2
SUSLO.1
SUSLO.0
8
SH79F1615
Table 6.3 Flash控制SFRs
符号
地址
名称
POR/WDT/LVR
/PIN复位值
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
IB_OFF
SET
FBH
可编程flash低位字节偏移
00000000
IB_OFF
SET.7
IB_OFF
SET.6
IB_OFF
SET.5
IB_OFF
SET.4
IB_OFF
SET.3
IB_OFF
SET.2
IB_OFF
SET.1
IB_OFF
SET.0
IB_DATA
FCH
可编程flash数据寄存器
00000000
IB_DATA.7
IB_DATA.6
IB_DATA.5
IB_DATA.4
IB_DATA.3
IB_DATA.2
IB_DATA.1
IB_DATA.0
IB_CON1
F2H
flash控制寄存器1
00000000
IB_CON1.7 IB_CON1.6 IB_CON1.5 IB_CON1.4 IB_CON1.3 IB_CON1.2 IB_CON1.1 IB_CON1.0
IB_CON2
F3H
flash控制寄存器2
----0000
-
-
-
-
IB_CON2.3 IB_CON2.2 IB_CON2.1 IB_CON2.0
IB_CON3
F4H
flash控制寄存器3
----0000
-
-
-
-
IB_CON3.3 IB_CON3.2 IB_CON3.1 IB_CON3.0
IB_CON4
F5H
flash控制寄存器4
----0000
-
-
-
-
IB_CON4.3 IB_CON4.2 IB_CON4.1 IB_CON4.0
IB_CON5
F6H
flash控制寄存器5
----0000
-
-
-
-
IB_CON5.3 IB_CON5.2 IB_CON5.1 IB_CON5.0
XPAGE
F7H
FLASHCON A7H
flash页寄存器
00000000
XPAGE.7
XPAGE.6
XPAGE.5
XPAGE.4
XPAGE.3
XPAGE.2
XPAGE.1
XPAGE.0
访问控制寄存器
-------0
-
-
-
-
-
-
-
FAC
Table 6.4 WDT SFR
符号
地址
名称
POR/WDT/LVR
/PIN复位值
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
RSTSTAT
B1H
看门狗定时器控制寄存器
*-***000
WDOF
-
PORF
LVRF
CLRF
WDT.2
WDT.1
WDT.0
注意:*表示不同情况的复位决定RSTSTAT寄存器中的复位值,详见WDT章节
Table 6.5 时钟控制SFR
符号
地址
名称
POR/WDT/LVR
/PIN复位值
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
CLKCON
B2H
系统时钟选择
-11000--
-
CLKS1
CLKS0
SCMIF
OSCXON
FS
-
-
9
SH79F1615
Table 6.6 中断 SFRs
符号
地址
名称
POR/WDT/LVR
/PIN复位值
IEN0
A8H
中断允许控制0
00000000
EA
EADC
ET2
ES
ET1
IEN1
A9H
中断允许控制1
0000000-
ESCM
EPWM3
EMCM
ET3
EX4
IENC
BAH
外部中断4通道允许控制
00000000
EXS47
EXS46
EXS45
EXS44
EXS43
IPH0
B4H
中断优先权控制高位0
-0000000
-
PADCH
PT2H
PSH
PT1H
IPL0
B8H
中断优先权控制低位0
-0000000
-
PADCL
PT2L
PSL
IPH1
B5H
中断优先权控制高位1
0000000-
PSCMH
PPWMH
PMCMH
IPL1
B9H
中断优先权控制低位1
0000000-
PSCML
PPWML
PMCML
EXF1
D8H
外部中断寄存器1
00000000
IF47
IF46
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
EX1
ET0
EX0
ECMP2
ECMP1
-
EXS42
EXS41
EXS40
PX1H
PT0H
PX0H
PT1L
PX1L
PT0L
PX0L
PT3H
PX4H
PCMP2H
PCMP1H
-
PT3L
PX4L
PCMP2L
PCMP1L
-
IF45
IF44
IF43
IF42
IF41
IF40
Table 6.7 端口 SFRs
符号
地址
名称
POR/WDT/LVR
/PIN复位值
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
P0
80H
8位端口0
00000000
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
P1
90H
8位端口1
00000000
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P2
A0H
8位端口2
00000000
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P3
B0H
8位端口3
--000000
-
-
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
P0CR
E1H
端口0输入/输出方向控制
00000000
P0CR.7
P0CR.6
P0CR.5
P0CR.4
P0CR.3
P0CR.2
P0CR.1
P0CR.0
P1CR
E2H
端口1输入/输出方向控制
00000000
P1CR.7
P1CR.6
P1CR.5
P1CR.4
P1CR.3
P1CR.2
P1CR.1
P1CR.0
P2CR
E3H
端口2输入/输出方向控制
00000000
P2CR.7
P2CR.6
P2CR.5
P2CR.4
P2CR.3
P2CR.2
P2CR.1
P2CR.0
P3CR
E4H
端口3输入/输出方向控制
--000000
-
-
P3CR.5
P3CR.4
P3CR.3
P3CR.2
P3CR.1
P3CR.0
P0PCR
E9H
端口0内部上拉允许
00000000
P0PCR.7
P0PCR.6
P0PCR.5
P0PCR.4
P0PCR.3
P0PCR.2
P0PCR.1
P0PCR.0
P1PCR
EAH
端口1内部上拉允许
00000000
P1PCR.7
P1PCR.6
P1PCR.5
P1PCR.4
P1PCR.3
P1PCR.2
P1PCR.1
P1PCR.0
P2PCR
EBH
端口2内部上拉允许
00000000
P2PCR.7
P2PCR.6
P2PCR.5
P2PCR.4
P2PCR.3
P2PCR.2
P2PCR.1
P2PCR.0
P3PCR
ECH
端口3内部上拉允许
--000000
-
-
P3PCR.5
P3PCR.4
P3PCR.3
P3PCR.2
P3PCR.1
P3PCR.0
10
SH79F1615
Table 6.8 定时器 SFRs
符号
地址
名称
POR/WDT/LVR
/PIN复位值
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
TCON
88H
定时器/计数器0和1控制寄存器
00000000
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
——
——
TMOD
89H
定时器/计数器0和1模式寄存器
00000000
GATE1
C/T1
M11
M10
GATE0
C/T0
M01
M00
TL0
8AH
定时器/计数器0低位字节
00000000
TL0.7
TL0.6
TL0.5
TL0.4
TL0.3
TL0.2
TL0.1
TL0.0
TH0
8CH
定时器/计数器0高位字节
00000000
TH0.7
TH0.6
TH0.5
TH0.4
TH0.3
TH0.2
TH0.1
TH0.0
TL1
8BH
定时器/计数器1低位字节
00000000
TL1.7
TL1.6
TL1.5
TL1.4
TL1.3
TL1.2
TL1.1
TL1.0
TH1
8DH
定时器/计数器1高位字节
00000000
TH1.7
TH1.6
TH1.5
TH1.4
TH1.3
TH1.2
TH1.1
TH1.0
T2CON
C8H
定时器/计数器2控制寄存器
000-0000
TF2
-
TRG
-
-
TR2
-
-
T2MOD
C9H
定时器/计数器2模式寄存器
0-----00
TCLKP2
-
-
-
-
-
-
-
RCAP2L
CAH 定时器/计数器2重载/截获低位字节
00000000
RCAP2L.7
RCAP2L.6
RCAP2L.5
RCAP2L.4
RCAP2L.3
RCAP2L.2
RCAP2L.1
RCAP2L.0
RCAP2H
CBH 定时器/计数器2重载/截获高位字节
00000000
RCAP2H.7
RCAP2H.6
RCAP2H.5
RCAP2H.4
RCAP2H.3
RCAP2H.2
RCAP2H.1
RCAP2H.0
TL2
CCH
定时器/计数器2低位字节
00000000
TL2.7
TL2.6
TL2.5
TL2.4
TL2.3
TL2.2
TL2.1
TL2.0
TH2
CDH
定时器/计数器2高位字节
00000000
TH2.7
TH2.6
TH2.5
TH2.4
TH2.3
TH2.2
TH2.1
TH2.0
TCON1
CEH
定时器0/1比较功能允许
-00-0000
-
TCLK_S1
TCLK_S0
-
TCLK_P1
TCLK_P0
TC1
TC0
T3CON
ACH
定时器/计数器3控制寄存器
0-00-000
TF3
-
T3PS.1
T3PS.0
-
TR3
T3CLKS.1
T3CLKS.0
TL3
AAH
定时器/计数器3低位字节
00000000
TL3.7
TL3.6
TL3.5
TL3.4
TL3.3
TL3.2
TL3.1
TL3.0
TH3
ABH
定时器/计数器3高位字节
00000000
TH3.7
TH3.6
TH3.5
TH3.4
TH3.3
TH3.2
TH3.1
TH3.0
POR/WDT/LVR
/PIN复位值
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
Table 6.9 EUART SFRs
符号
地址
名称
SCON
98H
串行控制
00000000
SM0/FE
SBUF
99H
串行数据缓冲器
00000000
SBUF.7
SADEN
9BH
从属地址掩码
00000000
SADEN.7
SADEN.6
SADEN.5
SADEN.4
SADEN.3
SADEN.2
SADEN.1
SADEN.0
SADDR
9AH
从属地址
00000000
SADDR.7
SADDR.6
SADDR.5
SADDR.4
SADDR.3
SADDR.2
SADDR.1
SADDR.0
SM1/RXOV SM2/TXCOL
SBUF.6
SBUF.5
REN
TB8
RB8
TI
RI
SBUF.4
SBUF.3
SBUF.2
SBUF.1
SBUF.0
PCON
87H
电源和串行控制
00—0000
SMOD
SSTAT
IT41
IT40
GF1
GF0
PD
IDL
SBRTL
FDH
波特率发生器寄存器
00000000
SBRT.7
SBRT.6
SBRT.5
SBRT.4
SBRT.3
SBRT.2
SBRT.1
SBRT.0
SBRTH
FEH
波特率发生器寄存器
00000000
SBRTEN
SBRT.14
SBRT.13
SBRT.12
SBRT.11
SBRT.10
SBRT.9
SBRT.8
11
SH79F1615
Table 6.10 ADC SFRs
符号
地址
名称
POR/WDT/LVR
/PIN复位值
第7位
第6位
第5位
第4位
第3位
ADCON1
93H
ADC控制寄存器1
00000000
ADON
ADCIF
SC
REFC
ADCIE
ADCON2
92H
ADC控制寄存器2
00000000
GRP3
GRP2
GRP1
GRP0
MODE
ADT
94H
ADC时钟控制寄存器
00000000
TADC3
TADC2
TADC1
TADC0
TS3
TS2
TS1
TS0
SEQCON
A6H
映射控制寄存器
0--00000
ALR
-
-
REGSEL
REG3
REG2
REG1
REG0
ADCH1
95H
ADC通道配置寄存器1
00000000
-
-
CH5
CH4
CH3
CH2
CH1
CH0
第2位
第1位
第0位
-----------------
PWMTRGEN TIMTRGEN GO/ D ON E
TGAP2
TGAP1
TGAP0
ADCH2
A5H
ADC通道配置寄存器2
0000---0
-
CH10
CH9
CH8
-
-
-
BGCHOP
SEQCHx
96H
通道寄存器
----0000
-
-
-
-
SEQx3
SEQx2
SEQx1
SEQx0
ADDxL
96H
ADC结果寄存器低位
00000000
A7
A6
A5
A4
A3
A2
A1
A0
ADDxH
97H
ADC结果寄存器高位
00000000
A15
A14
A13
A12
A11
A10
A9
A8
ADDGTL
9EH
ADC上限比较寄存器低位
00000000
GT7
GT6
GT5
GT4
GT3
GT2
GT1
GT0
ADDGTH
9FH
ADC上限比较寄存器高位
00000000
GT15
GT14
GT13
GT12
GT11
GT10
GT9
GT8
ADDLTL
9CH
ADC下限比较寄存器低位
----0000
LT7
LT6
LT5
LT4
LT3
LT2
LT1
LT0
ADDLTH
9DH
ADC下限比较寄存器高位
00000000
LT15
LT14
LT13
LT12
LT11
LT10
LT9
LT8
比较寄存器
00000000
ADLIE
ADGIE
ADLIF
ADGIF
CSEL3
CSEL2
CSEL1
CSEL0
ADCMPCON 91H
12
SH79F1615
Table 6.11 PWM3 SFRs
符号
地址
PWM3CON ADH
名称
POR/WDT/LVR
/PIN复位值
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM3控制寄存器
00000000
PWM3EN
PWM3S
PWM3CK1
PWM3CK0
FLT3EN
PWM3IE
PWM3IF
PWM3OE
PWM3P
AEH
PWM3周期寄存器
00000000
PWM3P.7
PWM3P.6
PWM3P.5
PWM3P.4
PWM3P.3
PWM3P.2
PWM3P.1
PWM3P.0
PWM3D
AFH
PWM3占空比寄存器
00000000
PWM3D.7
PWM3D.6
PWM3D.5
PWM3D.4
PWM3D.3
PWM3D.2
PWM3D.1
PWM3D.0
Table 6.12 OP & CMP SFRs
符号
地址
名称
POR/WDT/LVR
/PIN复位值
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
CMP1CON
B3H
放大器 比较器1控制寄存器
0000-000
CMP1EN
C1NCHS
C1OUT
C1IF
-
C1PCHS
C1DEB1
C1DEB0
CMP2CON0 BBH
放大器 比较器2控制寄存器0
00000000
CMP2EN
C2NCHS
C2PCHS1
C2PCHS0
C2SMT1
C2SMT0
C2OUT
C2IF
CMP2CON1 BCH
放大器 比较器2控制寄存器1
00000000
TRGPOL
BGEN
AMP1EN
-
C2IFS1
C2IFS0
CMP2CON2 8FH
放大器 比较器2控制寄存器2
00000000
C2FT1EN
C2FT1S2
C2FT1S1
C2FT1S0
C2FT2EN
C2FT2S2
C2FT2S1
C2FT2S0
PWMTRGS1 PWMTRGS0
Table 6.13 BUZZER SFR
符号
地址
名称
POR/WDT/LVR
/PIN复位值
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
BUZCON
BDH
蜂鸣器输出控制
----0000
-
-
-
BCA3
BCA2
BCA1
BCA0
BZEN
13
SH79F1615
Table 6.14 MCM SFRs
名称
POR/WDT/LVR
/PIN复位值
第7位
PWMCON1 D9H
PWM模块控制寄存器1
0-000000
PWMCON2 BFH
PWM模块控制寄存器2
-0000-00
符号
地址
第6位
第5位
第4位
第3位
第2位
第1位
第0位
POUTMOD
-
PWM21S
PWM11S
PWM01S
PWM2S
PWM1S
PWM0S
-
ZETIM
PEAD
ZEAD
PDLDEN
-
DT1
DT0
PTCON
CFH
PWM时基控制寄存器
--000000
-
-
PTMOD1
PTMOD0
PTCLK1
PTCLK0
POSTPS1
POSTPS0
PWMOE
EFH
PWM输出使能寄存器
0-000000
PWMEN
-
PWM21OE
PWM11OE
PWM01OE
PWM2OE
PWM1OE
PWM0OE
B6H
PWM手动输出寄存器1
--000000
-
-
PMANUAL21 PMANUAL11 PMANUAL01 PMANUAL2 PMANUAL1 PMANUAL0
B7H
PWM手动输出寄存器2
--000000
-
-
POUT21
POUT11
POUT01
POUT2
POUT1
POUT0
D1H
PWM故障检测保护寄存器
00000000
FLT1EN
FLT1SEL
FLT2EN
FLT2S
FLT2DEB1
FLT2DEB0
FLTM
FLTSTAT
PMANUAL
CON1
PMANUAL
CON2
FLTCON
PWMINTEN BEH
PWMINTF
E8H
PWMRLDEN E7H
PWMPL
DAH
PWM中断使能寄存器
00000000
PWMPIE
PWMZIE
PTDD2IE
PTUD2IE
PTDD1IE
PTUD1IE
PTDD0IE
PTUD0IE
PWM中断标志寄存器
00000000
PWMPIF
PWMZIF
PTDD2IF
PTUD2IF
PTDD1IF
PTUD1IF
PTDD0IF
PTUD0IF
PWM定时器锁定寄存器
00000000
RLDEN.7
RLDEN.6
RLDEN.5
RLDEN.4
RLDEN.3
RLDEN.2
RLDEN.1
RLDEN.0
PWM周期寄存器低位
00000000
PP.7
PP.6
PP.5
PP.4
PP.3
PP.2
PP.1
PP.0
PWMPH
DBH
PWM周期寄存器高位
00000000
PP.15
PP.14
PP.13
PP.12
PP.11
PP.10
PP.9
PP.8
PWM0DL
DCH
PWM0占空比控制寄存器低位
00000000
PD0.7
PD0.6
PD0.5
PD0.4
PD0.3
PD0.2
PD0.1
PD0.0
PWM0DH
DDH
PWM0占空比控制寄存器高位
00000000
PD0.15
PD0.14
PD0.13
PD0.12
PD0.11
PD0.10
PD0.9
PD0.8
PWM1DL
DEH
PWM1占空比控制寄存器低位
00000000
PD1.7
PD1.6
PD1.5
PD1.4
PD1.3
PD1.2
PD1.1
PD1.0
PWM1DH
DFH
PWM1占空比控制寄存器高位
00000000
PD1.15
PD1.14
PD1.13
PD1.12
PD1.11
PD1.10
PD1.9
PD1.8
PWM2DL
D2H
PWM2占空比控制寄存器低位
00000000
PD2.7
PD2.6
PD2.5
PD2.4
PD2.3
PD2.2
PD2.1
PD2.0
PWM2DH
D3H
PWM2占空比控制寄存器高位
00000000
PD2.15
PD2.14
PD2.13
PD2.12
PD2.11
PD2.10
PD2.9
PD2.8
PD01.6
/DT0.6
PD01.5
/DT0.5
PD01.4
/DT0.4
PD01.3
/DT0.3
PD01.11
/DT0.11
PD11.3
/DT1.3
PD11.11
/DT1.11
PD01.2
/DT0.2
PD01.10
/DT0.10
PD11.2
/DT1.2
PD11.10
/DT1.10
PD01.1
/DT0.1
PD01.9
/DT0.9
PD11.1
/DT1.1
PD11.9
/DT1.9
PD01.0
/DT0.0
PD01.8
/DT0.8
PD11.0
/DT1.0
PD11.8
/DT1.8
PWM01DL
/PWMDTOL
PWM01DH
/PWMDTOH
PWM11DL
/PWMDT1L
PWM11DH
/PWMDT1H
D4H
PWM死区控制寄存器0低位
00000000
PD01.7
/DT0.7
D5H
PWM死区控制寄存器0高位
----0000
PD01.15/-
PD01.14/-
PD01.13/-
PD01.12/-
D6H
PWM死区控制寄存器1低位
00000000
PD11.7
/DT1.7
PD11.6
/DT1.6
PD11.5
/DT1.5
PD11.4
/DT1.4
D7H
PWM死区控制寄存器1高位
----0000
PD11.15/-
PD11.14/-
PD11.13/-
PD11.12/-
PWM21DL
F9H
PWM21占空比控制寄存器低位
00000000
PD21.7
PD21.6
PD21.5
PD21.4
PD21.3
PD21.2
PD21.1
PD21.0
PWM21DH
FAH
PWM21占空比控制寄存器高位
00000000
PD21.15
PD21.14
PD21.13
PD21.12
PD21.11
PD21.10
PD21.9
PD21.8
注意:- :保留位。
14
SH79F1615
SFR映像图
可按位寻址
不可按位寻址
0/8
1/9
2/A
F8H
P5
PWM21DL
F0H
B
AUXC
IB_CON1
E8H
PWMINTF
P0PCR
E0H
ACC
D8H
3/B
4/C
5/D
6/E
IB_DATA
SBRTL
SBRTH
IB_CON2
IB_CON3
IB_CON4
IB_CON5
P1PCR
P2PCR
P3PCR
P0CR
P1CR
P2CR
P3CR
EXF1
PWMCON1
PWMPL
PWMPH
PWM0DL
D0H
PSW
FLTCON
PWM2DL
PWM2DH
C8H
T2CON
T2MOD
RCAP2L
RCAP2H
PWM21DH IB_OFFSET
7/F
FFH
XPAGE
F7H
PWMOE
EFH
PWMRLDEN E7H
PWM0DH
PWM1DL
PWM1DH
PWMDT0L/ PWMDT0H/ PWMDT1L/ PWMDT1H/
PWM01DL PWM01DH PWM11DL PWM11DH
TL2
TH2
TCON1
PTCON
C0H
DFH
D7H
CFH
C7H
B8H
IPL0
IPL1
IENC
B0H
P3
RSTSTAT
CLKCON
CMP1CON
IPH0
IPH1
PMANUAL
CON1
PMANUAL
CON2
B7H
A8H
IEN0
IEN1
TL3
TH3
T3CON
PWM3CON
PWM3P
PWM3D
AFH
A0H
P2
BFINE
ADCH2
SEQCON
FLASHCON
A7H
98H
SCON
SADEN
ADDLTL
ADDLTH
ADDGTL
ADDGTH
9FH
90H
P1
ADCON1
ADT
ADCH1
ADDxL/
SEQCHx
ADDxH
97H
88H
TCON
TMOD
TL0
TL1
TH0
TH1
SUSLO
80H
P0
SP
DPL
DPH
DPL1
DPH1
INSCON
PCON
0/8
1/9
2/A
3/B
4/C
5/D
6/E
7/F
SBUF
SADDR
ADCMPCON ADCON2
CMP2CON0 CMP2CON1
注意:未使用的SFR地址禁止读写。
15
BUZCON
PWMINTEN PWMCON2
BFH
CMP2CON2 8FH
87H
SH79F1615
7. 标准功能
7.1 CPU
7.1.1 内核特殊功能寄存器
特性
CPU内核寄存器:ACC,B,PSW,SP,DPL,DPH
累加器
累加器ACC是一个常用的专用寄存器,指令系统中采用A作为累加器的助记符。
B寄存器
在乘除法指令中,会用到B寄存器。在其它指令中,B寄存器可作为暂存器来使用。
栈指针(SP)
栈指针SP是一个8位专用寄存器,在执行PUSH、各种子程序调用、中断响应等指令时,SP先加1,再将数据压栈;执行POP、
RET、RETI等指令时,数据退出堆栈后SP再减1。堆栈栈顶可以是片上内部RAM(00H-FFH)的任意地址,系统复位后,SP
初始化为07H,使得堆栈事实上由08H地址开始。
程序状态字(PSW)寄存器
程序状态字(PSW)寄存器包含了程序状态信息。
Table 7.1 PSW寄存器
D0H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PSW
C
AC
F0
RS1
RS0
OV
F1
P
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
说明
7
C
6
AC
辅助进位标志位
0:算数逻辑运算中,没有辅助进位或借位发生
1:算数逻辑运算中,有辅助进位或借位发生
5
F0
F0标志位
用户自定义标志位
进位标志位
0:算术或逻辑运算中,没有进位或借位发生
1:算术或逻辑运算中,有进位或借位发生
R0-R7寄存器页选择位
00:页0(映射到00H-07H)
01:页1(映射到08H-0FH)
10:页2(映射到10H-17H)
11:页3(映射到18H-1FH)
4-3
RS[1:0]
2
OV
溢出标志位
0:没有溢出发生
1:有溢出发生
1
F1
F1标志位
用户自定义标志位
0
P
奇偶校验位
0:累加器A中值为1的位数为偶数
1:累加器A中值为1的位数为奇数
数据指针(DPTR)
数据指针DPTR是一个16位专用寄存器,其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。它们既可以作为一个
16位寄存器DPTR来处理,也可以作为2个独立的8位寄存器DPH和DPL来处理。
16
SH79F1615
7.1.2 CPU增强内核特殊功能寄存器
扩展的'MUL'和'DIV'指令:16位*8位,16位/8位
双数据指针
CPU增强内核寄存器:AUXC,DPL1,DPH1,INSCON
SH79F1615 cpu核扩展了'MUL'和'DIV'的指令,使用一个新寄存器-AUXC寄存器保存运算数据的高8位,以实现16位运算。
在16位乘除法指令中,会用到AUXC寄存器。在其它指令中,AUXC寄存器可作为暂存器来使用。
CPU在复位后进入标准模式,'MUL'和'DIV'的指令操作和标准8051指令操作一致。当INSCON寄存器的相应位置1后,'MUL'
和'DIV'指令的16位操作功能被打开。
操作
MUL
DIV
结果
B
高位字节
AUXC
---
INSCON.2 = 0;8位模式
(A)*(B)
A
低位字节
INSCON.2 = 1;16位模式
(AUXC A)*(B)
低位字节
中位字节
高位字节
INSCON.3 = 0;8位模式
(A)/(B)
商低位字节
余数
---
INSCON.3 = 1;16位模式
(AUXC A)/(B)
商低位字节
余数
商高位字节
双数据指针
使用双数据指针能加速数据存储移动。标准数据指针被命名为DPTR而新型数据指针命名为DPTR1。
数据指针DPTR1与DPTR类似,是一个16位专用寄存器,其高位字节寄存器用DPH1表示,低位字节寄存器用DPL1表示。
它们既可以作为一个16位寄存器DPTR1来处理,也可以作为2个独立的8位寄存器DPH1和DPL1来处理。
通过对INSCON寄存器中的DPS位置1或清0选择两个数据指针中的一个。所有读取或操作DPTR的相关指令将会选择最近一
次选择的数据指针。
寄存器
Table 7.2 数据指针选择寄存器
86H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
INSCON
-
-
-
-
DIV
MUL
-
DPS
读/写
-
-
-
-
读/写
读/写
-
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
-
-
0
0
-
0
位编号
位符号
说明
3
DIV
16位/8位除法选择位
0:8位除法
1:16位除法
2
MUL
16位/8位乘法选择位
0:8位乘法
1:16位乘法
0
DPS
数据指针选择位
0:数据指针
1:数据指针1
17
SH79F1615
7.2 RAM
为了提高系统数据变量的处理能力,支持高级语言,SH79F1615提供了额外的RAM空间。
SH79F1615除内部RAM 256字节外,还扩展了外部1280字节的RAM,分为以下四个独立的空间:
低位128字节的RAM(地址从00H到7FH)可直接或间接寻址。
高位128字节的RAM(地址从80H到FFH)只能间接寻址。
特殊功能寄存器(SFR,地址从80H到FFH)只能直接寻址。
外部RAM可通过MOVX指令间接访问。
高位128字节的RAM占用的地址空间和SFR相同,但在物理上与SFR的空间是分离的。当一个指令访问高于地址7FH的内部
位置时,CPU可以根据访问的指令类型来区分是访问高位128字节数据RAM还是访问SFR。
注意:未使用的SFR地址禁止读写。
4FFh
0FFh
0FFh
Upper
128 bytes
Internal
Ram
indirect
accesses
Extenal
RAM
80h
80h
7Fh
00
Special
Function
Register
direct accesses
Lower
128 bytes
Internal
Ram
direct or indirect
accesses
00
RAM地址
SH79F1615支持传统的访问外部RAM方法。可以使用MOVXA,@Ri或MOVX@Ri,A;来访问外部低256字节RAM;使用
MOVX A,@DPTR或MOVX@DPTR,A来访问外部1280字节RAM。
用户也能用XPAGE寄存器来访问外部RAM,仅用MOVX A,@Ri或MOVX@Ri,A指令即可。用户能用XPAGE来表示高于
256字节的RAM地址。
在Flash SSP模式下,XPAGE也能用作分段选择器(详见SSP章节)。
Table 7.3 数据存储页寄存器(XPAGE)
F7H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
XPAGE
XPAGE.7
XPAGE.6
XPAGE.5
XPAGE.4
XPAGE.3
XPAGE.2
XPAGE.1
XPAGE.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
XPAGE[7:0]
说明
RAM页选择控制位
18
SH79F1615
7.3 Flash程序存储器
7.3.1 特性
Flash 存储器包括 16 X 1KByte,总共 16KB
集成类 EEPROM 存储器 8 X 256B,总共 2KB
在工作电压范围内都能进行编程和擦除操作
支持 4 种代码保护模式
在线编程(ICP)操作支持写入、读取和擦除操作
支持整体/扇区擦除和编程
编程/擦除次数: 程序区:至少10,000次
类 EEPROM 区:至少 100,000 次
数据保存年限:至少 10 年
低功耗
0FFFFH
Reserved
3FFFH
Program Rom
(16K)
07FFH
0000H
EEPROM Like Data
2048 bytes
0000H
0000H
Information Block
1FFFH
SH79F1615
SH79F1615为存储程序代码内置16K可编程Flash程序存储区(Program Memory Block),支持在线编程(ICP)模式和扇
区自编程(SSP)模式对Flash存储器操作。每个扇区1024字节。
SH79F1615还内置2048字节的类EEPROM存储区用于存放用户数据。每个扇区256字节,总共8个扇区。
Flash操作定义:
在线编程(ICP)模式:通过Flash编程器对Flash存储器进行擦、读、写操作。
扇区自编程(SSP)模式:用户程序代码在Flash代码区中运行,对Flash存储器(包括Flash代码区和类EEPROM区)进行
擦、读、写操作,但无法擦除代码自身所在的扇区。
Flash存储器支持以下操作:
(1) 代码保护控制模式编程
SH79F1615的代码保护功能为用户代码提供了高性能的安全措施。共提供4种保护模式。
代码保护模式0:对烧写器加密,允许/禁止任何编程器的写入/读取操作(不包括整体擦除),以4K(4个扇区)为单位,可
以分开保护。
代码保护模式1:对MOVC指令加密,允许/禁止在其他扇区中通过MOVC指令进行读取操作,或通过SSP模式进行擦除/写
入操作,以4K(4个扇区)为单位,可以分开保护。
代码保护模式2:SSP功能允许/禁止控制,选中后,芯片对code区域的SSP操作(擦除或者写入,不包括读取)是禁止的,
但是不会禁止芯片对类EEPROM的操作。
代码保护模式 3:客户密码保护,可由客户自设密码,密码由 6 字节组成。如果将此功能开启,表示在烧写器或仿真器工具
对芯片做任何操作(读出,写入,擦除或者仿真)之前先输入这个密码,如果这个密码正确,则芯片允许烧写器或仿真器工具
进行相应的操作,反之则报错,无法执行相应操作。
用户必须使用下列方式才能完成代码保护控制模式的设定:
Flash编程器在ICP模式设置相应的保护位,以进入所需的保护模式,SSP模式不支持代码保护控制模式编程。
19
SH79F1615
(2) 整体擦除
无论代码保护控制模式的状态如何,整体擦除操作都将会擦除所有程序,代码选项,代码保护位,但是不会擦除类EEPROM
存储区。
用户必须使用下列方式才能完成整体擦除:
Flash编程器在ICP模式发出整体擦除指令,进行整体擦除。
SSP模式不支持整体擦除。
(3) 扇区擦除
扇区擦除操作将会擦除所选扇区中内容。用户程式(SSP)和Flash编程器都能执行该操作。
若需用户程式执行该操作,必须禁止所选扇区的代码保护控制模式1和保护模式2。
若需编程器执行该操作,必须禁止所选扇区的代码保护控制模式0,如果保护模式3使能,必须输入正确密码。
用户必须使用下列2种方式之一才能完成扇区擦除:
1. Flash编程器在ICP模式发出扇区擦除指令,进行扇区擦除。
2. 通过SSP功能发出扇区擦除指令,进行扇区擦除(详见在扇区自编程章节)。
(4) 类EEPROM存储区擦除
类EEPROM存储区擦除操作将会擦除类EEPROM存储区中的内容。用户程式(SSP)和Flash编程器都能执行该操作。
用户必须使用下列2种方式之一才能完成类EEPROM存储区擦除:
1. Flash编程器在ICP模式发出类EEPROM存储区擦除指令,进行类EEPROM存储区擦除。
2. 通过SSP功能发出类EEPROM存储区擦除指令,进行类EEPROM存储区擦除(详见在扇区自编程章节)。
(5) 写/读代码
读/写代码操作可以将代码从Flash存储器中读出或写入。用户程式(SSP)和编程器都能执行该操作。
若需用户程式执行读代码操作,必须禁止所选扇区的代码保护控制模式1。但不管保护位如何设置,用户程序都能读程式自
身所在扇区(1K为单位)。
若需用户程式执行写代码操作,必须禁止所选扇区的代码保护控制模式1和代码保护模式2。
注:若只使能扇区的代码保护控制模式1,用户程序不能写其它扇区,但能写程式自身所在扇区(1K为单位),
若需编程器执行该操作,必须禁止所选扇区的代码保护控制模式0。
用户必须使用下列2种方式之一才能完成写/读代码:
1. Flash编程器在ICP模式发出写/读代码指令,进行写/读代码。
2. 通过SSP功能发出写代码指令,进行写代码操作;通过MOVC指令执行读代码操作。
(6) 写/读类EEPROM存储区
读/写类EEPROM存储区操作可以将数据从类EEPROM存储区中读出或写入。用户程式(SSP)和Flash编程器都能执行该
操作。
用户必须使用下列2方式之一才能完成写/读类EEPROM存储区:
1. Flash编程器在ICP模式发出写/读类EEPROM存储区指令,进行写/读类EEPROM存储区。
2. 过SSP功能发出写类EEPROM存储区指令,进行写类EEPROM操作;通过MOVC指令执行读类EEPROM操作。
Flash存储器操作汇总
操作
ICP
SSP
代码保护
支持
支持
扇区擦除
支持(无安全位)
支持(无安全位)
整体擦除
支持
不支持
类EEPROM擦除
支持
支持
写/读代码
支持(无安全位)
支持(无安全位)
读/写类EEPROM
支持
支持
代码保护
支持
不支持
20
SH79F1615
7.3.2 ICP模式下的Flash操作
ICP模式为通过Flash编程器对MCU进行编程,可以在MCU焊在用户板上以后编程。ICP模式下,用户系统必须关机后Flash
编程器才能通过ICP编程接口刷新Flash存储器。ICP编程接口包括6个引脚(VDD,GND,TCK,TDI,TMS,TDO)。
编程器使用4个JTAG引脚(TDO,TDI,TCK,TMS)进入编程模式。只有将特定波形输入4个引脚后,CPU才能进入编程
模式。如需详细说明请参考Flash编程器用户指南。
在ICP模式中,通过6线接口编程器能完成所有Flash操作。因为编程信号非常敏感,用户需要用5个跳线将编程引脚(VDD,
TDO,TDI,TCK,TMS)从应用电路中分离出来,如下图所示。
Flash
Programmer
MCU
VDD
TMS
TCK
TDI
TDO
GND
To Application
Circuit
Jumper
当采用ICP模式进行操作时,建议按照如下步骤进行操作:
1. 在开始编程前断开跳线(jumper),从应用电路中分离编程引脚;
2. 将芯片编程引脚连接至 Flash 编程器编程接口,开始编程;
3. 编程结束后断开 Flash 编程器接口,连接跳线恢复应用电路。
如果不加跳线,需保证电源线上的电容负载不超过100uF,4根信号线上的电容负载不超过0.01uf,电阻负载不小于1K阻值。
21
SH79F1615
7.4 SSP
7.4.1 寄存器
擦除/编程用扇区选择和编程用地址偏移量寄存器
此寄存器用来选择待擦除或者待编程扇区的区号,配合IB_OFFSET寄存器来表示待编程字节在扇区内的地址偏移量。
对于程序存储区,一个扇区为1024字节,寄存器定义如下:
Table 7.4 编程用地址选择寄存器
F7H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
XPAGE
XPAGE.7
XPAGE.6
XPAGE.5
XPAGE.4
XPAGE.3
XPAGE.2
XPAGE.1
XPAGE.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
说明
7-2
XPAGE[7:2]
被编程的存储单元扇区号,000000代表扇区0,以此类推
1-0
XPAGE[1:0]
被编程的存储单元高2位地址
Table 7.5 编程用地址偏移寄存器
FBH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
IB_OFFSET
IB_OFF
SET.7
IB_OFF
SET.6
IB_OFF
SET.5
IB_OFF
SET.4
IB_OFF
SET.3
IB_OFF
SET.2
IB_OFF
SET.1
IB_OFF
SET.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
7-0
位符号
说明
IB_OFFSET[7:0] 被编程的存储单元低8位地址
XPAGE[1:0]和IB_OFFSET[7:0]共10位,可以表示1个程序存储扇区内全部1024个字节的偏移量。
类 EEPROM 扇区,一个扇区为 256 字节,共 8 个扇区,寄存器定义如下:
Table 7.6 擦除/编程用扇区选择寄存器
F7H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
XPAGE
XPAGE.7
XPAGE.6
XPAGE.5
XPAGE.4
XPAGE.3
XPAGE.2
XPAGE.1
XPAGE.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-3
XPAGE[7:3]
在擦除/编程扇区时无意义
XPAGE[2:0]
被擦除/编程的扇区选择位
000:扇区0
001:扇区1
…
111: 扇区7
2-0
说明
类EEPROM块区的访问可通过指令“MOVC A,@A+DPTR”或“MOVC A,@A+PC”实现。
注意:需要将FLASHCON寄存器中的FAC位置1。
22
SH79F1615
Table 7.7 编程用地址偏移寄存器
FBH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
IB_OFFSET
IB_OFF
SET.7
IB_OFF
SET.6
IB_OFF
SET.5
IB_OFF
SET.4
IB_OFF
SET.3
IB_OFF
SET.2
IB_OFF
SET.1
IB_OFF
SET.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
第2位
第1位
第0位
位编号
7-0
位符号
说明
IB_OFFSET[7:0] 被编程的存储单元低8位地址
IB_OFFSET[7:0]共8位,可以表示1个块区内全部256个字节的偏移量。
Table 7.8 编程用数据寄存器
第7位
FCH
第6位
第5位
第4位
第3位
IB_DATA.7 IB_DATA.6 IB_DATA.5 IB_DATA.4 IB_DATA.3 IB_DATA.2 IB_DATA.1 IB_DATA.0
IB_DATA
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
第2位
第1位
第0位
位编号
位符号
7-0
IB_DATA[7:0]
说明
待编程数据
Table 7.9 SSP型选择寄存器
第7位
F2H
第6位
第5位
第4位
第3位
IB_CON1.7 IB_CON1.6 IB_CON1.5 IB_CON1.4 IB_CON1.3 IB_CON1.2 IB_CON1.1 IB_CON1.0
IB_CON1
读/写
-
-
-
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
-
0
0
0
0
0
第2位
第1位
第0位
位编号
7-0
位符号
IB_CON1[7:0]
说明
SSP操作选择
0xE6:扇区擦除
0x6E:存储单元编程
Table 7.10 SSP流程控制寄存器1
F3H
第7位
第6位
第5位
第4位
IB_CON2
-
-
-
-
读/写
-
-
-
-
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
-
-
0
0
0
0
位编号
位符号
3-0
IB_CON2[3:0]
第3位
IB_CON2.3 IB_CON2.2 IB_CON2.1 IB_CON2.0
说明
必须为05H,否则Flash编程将会终止
23
SH79F1615
Table 7.11 SSP流程控制寄存器2
第7位
F4H
第6位
第5位
第4位
第3位
第2位
第1位
第0位
IB_CON3
-
-
-
-
读/写
-
-
-
-
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
-
-
0
0
0
0
第2位
第1位
第0位
位编号
位符号
3-0
IB_CON3[3:0]
IB_CON3.3 IB_CON3.2 IB_CON3.1 IB_CON3.0
说明
必须为0AH,否则Flash编程将会终止
Table 7.12 SSP流程控制寄存器3
F5H
第7位
第6位
第5位
第4位
IB_CON4
-
-
-
-
读/写
-
-
-
-
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
-
-
0
0
0
0
第2位
第1位
第0位
位编号
位符号
3-0
IB_CON4[3:0]
第3位
IB_CON4.3 IB_CON4.2 IB_CON4.1 IB_CON4.0
说明
必须为09H,否则Flash编程将会终止
Table 7.13 SSP流程控制寄存器4
第7位
F6H
第6位
第5位
第4位
第3位
IB_CON5
-
-
-
-
读/写
-
-
-
-
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
-
-
0
0
0
0
位编号
位符号
3-0
IB_CON5[3:0]
IB_CON5.3 IB_CON5.2 IB_CON5.1 IB_CON5.0
说明
必须为06H,否则Flash编程将会终止
24
SH79F1615
7.4.2 Flash控制流程图
Set IB_OFFSET
Set XPAGE
Set IB_DATA
Set IB_CON1
S0
IB_CON2[3:0]≠5H
IB_CON2≠5H
Set IB_CON2[3:0]=5H
S1
IB_CON3≠AH
IB_CON2≠5H
Set IB_CON3=AH
ELSE
S2
IB_CON3≠AH
Set IB_CON4=9H
Reset
IB_CON1-5
IB_CON4≠9H
S3
Set IB_CON5=6H
S4
Sector Erase
IB_CON1=E6H
&IB_CON2[3:0]=5H
&IB_CON3=AH
&IB_CON4=9H
&IB_CON5=6H
IB_CON1=6EH
&IB_CON2[3:0]=5H
&IB_CON3=AH
&IB_CON4=9H
&IB_CON5=6H
Programming
25
SH79F1615
7.4.3 SSP编程注意事项
为确保顺利完成SSP编程,用户软件必须按以下步骤设置:
(1) 用于代码/数据编程:
1. 关闭中断;
2. 根据地址设置XPAGE,IB_OFFSET;
3. 按编程需要,设置IB_DATA;
4. 按照顺序设置IB_CON1 - 5;
5. 添加4个NOP指令;
6. 开始编程,CPU将进入IDLE模式;编程完成后自动退出IDLE模式;
7. 如需继续写入数据,跳转至第2步;
8. XPAGE寄存器清0;恢复中断设置。
(2) 用于扇区擦除:
1. 关闭中断;
2. 按相应的扇区设置XPAGE;
3. 按照顺序设置IB_CON1 - 5;
4. 添加4个NOP指令;
5. 开始擦除,CPU将进入IDLE模式;擦除完成后自动退出IDLE模式;
6. 如需继续擦除数据,跳转至第2步;
7. XPAGE寄存器清0;恢复中断设置。
(3) 读取:
使用“MOVC A,@A+DPTR”或者“MOVC A,@A+PC”。
7.4.4 可读识别码
SH79F1615每颗芯片出厂后都固化有一个40位的可读识别码,它的值为0 - 0xffffffffff的随机值,它是无法擦除的(存放在地
址信息存储区0x127b - 127f),可以由程序或编程工具读出。
程序读出示例:
Unsigned char Temp1,Temp2,Temp3,Temp4,Temp5;
FLASHCON = 0x01;
Temp1 = CBYTE[0x127b];
Temp2 = CBYTE[0x127c];
Temp3 = CBYTE[0x127d];
Temp4 = CBYTE[0x127e];
Temp5 = CBYTE[0x127f];
FLASHCON = 0x00;
FLASHCON寄存器的描述如下:
Table 7.14 Flash访问控制寄存器
A7H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
FLASHCON
-
-
-
-
-
-
-
FAC
读/写
-
-
-
-
-
-
-
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
-
-
-
-
-
0
位编号
位符号
0
FAC
说明
访问控制
0:MOVC指令或者SSP功能访问主程序区域
1:MOVC指令或者SSP功能访问类EEPROM区域
26
SH79F1615
7.5 系统时钟和振荡器
7.5.1 特性
高低频双振荡器系统
支持3种高频振荡器类型:晶体谐振器、陶瓷谐振器和内部27M RC振荡器
内建128k低频RC振荡器
内建系统时钟分频器
7.5.2 时钟定义
SH79F1615几个内部时钟定义如下:
OSCCLK:低频时钟源,SH79F1615低频时钟源为内部的128K低频振荡器时钟。fOSC定义为OSCCLK的频率。tOSC定义为
OSCCLK的周期。
OSCXCLK:高频时钟源,可从3个可选高频振荡器类型中(晶体谐振器,陶瓷谐振器以及内部27MHz高频RC振荡器)选
中的那个振荡器的时钟。fOSCX定义为OSCXCLK的频率。tOSCX定义为OSCXCLK的周期。
OSCSCLK:系统时钟频率分频器的输入时钟。这个时钟可能为OSCCLK或者OSCXCLK。fOSCS定义为OSCSCLK的频率。
tOSCS定义为OSCSCLK的周期。
SYSCLK:系统时钟,系统频率分频器的输出时钟。这个时钟为CPU指令周期的时钟。fSYS定义为SYSCLK的频率。tSYS定
义为SYSCLK的周期。
概述
SH79F1615采用双振荡器系统架构,高频振荡器支持3种振荡器类型:晶体谐振器(400kHz-16MHz),陶瓷谐振器
(400kHz-16MHz)和内部RC振荡器(27MHz),振荡器类型的选择由代码选项OP_OSC决定(详见代码选项章节)。低频振
荡器采用内置的128KRC振荡器。由振荡器产生的基本时钟脉冲提供系统时钟支持CPU及片上外围设备。
Table 7.15 系统时钟控制寄存器
B2H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
CLKCON
-
CLKS1
CLKS0
SCMIF
OSCXON
FS
-
-
读/写
-
读/写
读/写
只读
读/写
读/写
-
-
复位值
(POR/WDT/LVR/PIN)
-
1
1
0
0
0
-
-
位编号
6-5
位符号
CLKS[1:0]
说明
系统时钟预分频器
00:fSYS = fOSC
01:fSYS = fOSC/2
10:fSYS = fOSC/4
11:fSYS = fOSC/12
注意:系统复位后此寄存器默认为11,即初始化默认系统时钟12分频
4
3
2
SCMIF
OSCXON
FS
系统时钟监控标志位
0:表示系统时钟正常运行
1:表示系统时钟故障,硬件自动切换到内部2M RC振荡器
高频时钟源开关控制位
0:关闭高频系统时钟源
1:开启高频系统时钟源
只有代码选项选择为双振荡器模式时,此控制位才有效
系统时钟切换控制位
0:系统时钟选择从低频时钟源分频,即OSCSCLK = OSCCLK
1:系统时钟选择从高频时钟源分频,即OSCSCLK = OSCXCLK
只有代码选项选择为双振荡器模式时,此控制位才有效
27
SH79F1615
注意:
1. 当 OSCXCLK 作为 OSCSCLK 时(也就是说 FS = 1),OSCXON 不能软件清0
2. 当 OSCSCLK 从128K 切换到 OSCXCLK 时,假如当时 OSCXCLK 为关闭状态,则必须按以下步骤依次设置:
a.设置 OSCXON = 1,打开 OSCXCLK
b.至少等待振荡器预热时间(详见振荡器预热章节)
c.设置 FS = 1,选择 OSCXCLK 作为 OSCSCLK
3. 当 OSCSCLK 从 OSCXCLK 切回到128K 时,则必须按以下步骤依次设置:
a. FS 位清 0,选择128K 作为 OSCSCLK
b.添加1个 NOP 指令
c. OSCXON 位清0(降低功耗)
7.5.3 系统时钟监控(SCM)
为了增强系统的可靠性,SH79f1615含有一个系统时钟监控(SCM)模块。在系统选择高频时钟时(不管是单时钟模式还
是双时钟模式),如果系统时钟出现故障(例如:高频振荡器停振等),内建SCM模块会将OSCCLK自动切换到内部2M振荡器,
同时系统时钟监控标志位(SCMIF)被置1。如果EA和ESCM位均为1,SCM模块将会产生中断。如果高频振荡器恢复工作,SCM
会将OSCCLK自动切换回高频振荡器,然后SCMIF位自动清0。
注意:
SCMIF为只读位,只能由硬件清0或者置1。
如果SCMIF清0,SCM将系统时钟自动切换到系统时钟出故障前的状态。
双时钟模式下,如果FS = 0,系统工作在128K低频振荡器,则系统时钟监控功能不可用。
7.5.4 振荡器类型
(1) 陶瓷谐振器:400kHz - 16MHz
C1
XTAL1
Ceramic
XTAL2
C2
(2) 晶体谐振器:400k - 16MHz
C1
XTAL1
Crystal
XTAL2
C2
(3) 内部RC振荡器:27MHz(不需要外部电路)
XTAL1
XTAL2
28
SH79F1615
7.5.5 谐振器负载电容选择
陶瓷谐振器
频率
C1
C2
455kHz
47 - 100pF
47 - 100pF
11.0592MHz
8 - 15pF
8 - 15pF
* 表示已经内建负载电容。
注意:
1. 表中负载电容仅供参考!
2. 以上电容值可通过谐振器基本的起振和运行测试,并非最优值。
3. 请注意印制板上的杂散电容,用户应在超过应用电压和温度的条件下测试谐振器的性能。
在应用陶瓷谐振器/晶体谐振器之前,用户需向谐振器生产厂要求相关应用参数以获得最佳性能。
请登陆http://www.sinowealth.com以取得更多的推荐谐振器生产厂。
29
SH79F1615
7.6 I/O端口
7.6.1 特性
30个双向I/O端口
I/O端口可与其他功能共用
SH79F1615提供30个可编程双向I/O端口。端口数据在寄存器Px中。端口控制寄存器(PxCRy)控制端口是作为输入或者
输出。当端口作为输入时,每个I/O端口带有由PxPCRy控制的内部上拉电阻(x = 0-3,y = 0-7)。
SH79F1615的有些I/O引脚能与选择功能共享。当所有功能都允许时,在CPU中存在优先权以避免功能冲突。(详见端口共
享章节)。
7.6.2 寄存器
Table 7.16 端口控制寄存器
E1H - E6H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
P0CR (E1H)
P0CR.7
P0CR.6
P0CR.5
P0CR.4
P0CR.3
P0CR.2
P0CR.1
P0CR.0
P1CR (E2H)
P1CR.7
P1CR.6
P1CR.5
P1CR.4
P1CR.3
P1CR.2
P1CR.1
P1CR.0
P2CR (E3H)
P2CR.7
P2CR.6
P2CR.5
P2CR.4
P2CR.3
P2CR.2
P2CR.1
P2CR.0
P3CR (E4H)
-
-
P3CR.5
P3CR.4
P3CR.3
P3CR.2
P3CR.1
P3CR.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
PxCR.y
x = 0-3, y = 0-7
说明
端口输入/输出控制
0:输入模式
1:输出模式
Table 7.17 端口上拉电阻控制寄存器
E9H- EEH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
P0PCR (E9H)
P0PCR.7
P0PCR.6
P0PCR.5
P0PCR.4
P0PCR.3
P0PCR.2
P0PCR.1
P0PCR.0
P1PCR (EAH)
P1PCR.7
P1PCR.6
P1PCR.5
P1PCR.4
P1PCR.3
P1PCR.2
P1PCR.1
P1PCR.0
P2PCR (EBH)
P2PCR.7
P2PCR.6
P2PCR.5
P2PCR.4
P2PCR.3
P2PCR.2
P2PCR.1
P2PCR.0
P3PCR (ECH)
-
-
P3PCR.5
P3PCR.4
P3PCR.3
P3PCR.2
P3PCR.1
P3PCR.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
PxPCR.y
x = 0-3, y = 0-7
说明
输入端口内部上拉电阻控制
0:内部上拉电阻关闭
1:内部上拉电阻开启
30
SH79F1615
Table 7.18 端口数据寄存器
80H - F8H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
P0 (80H)
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
P1 (90H)
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P2 (A0H)
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P3 (B0H)
-
-
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
Px.y
x = 0-3, y = 0-7
说明
端口数据寄存器
7.6.3 端口模块图
SFEN
PxPCRy
Output Mode
VDD
Input Mode
VDD
0 = ON
1 = OFF
(Pull-up)
PxCRy
I/O Pad
Write
Data Bus
Data
Register
Read Port Data Register
Read
Read Data Register/Pad Selection
0: From Pad
1: From data register
0 = OFF
1 = ON
Second
Function
Read Port Pad
注意:
1. 输入端口读操作直接读引脚电平。
2. 输出端口读操作的输入源有两种,一种是从端口数据寄存器读取,另一种是直接读引脚电平。用读取指令来区分: 读-改写指令是读寄存器,而其它指令读引脚电平。
3. 不管端口是否共用为其他功能,对端口写操作都是针对端口数据寄存器。
31
SH79F1615
7.6.4 端口共用
30个双向I/O端口也能共享作为第二或第三种特殊功能。共享优先级按照外部最高内部最低的规则:
在引脚配置图中引脚最外边标注功能享有最高优先级,最里边标注功能享有最低优先级。这意味着一个引脚已经使用较高
优先级功能(如果被允许的话),就不能用作较低优先级功能,即使较低优先级功能被允许。只有较高优先级功能由硬件或软
件关闭后,相应的引脚才能用作较低优先级功能。上拉电阻也由相同规则控制。
当允许端口复用为其它功能时,用户可以修改PxCR﹑PxPCR(x = 0 - 3),但在复用的其它功能被禁止前,这些操作不会
影响端口状态。
当允许端口复用为其它功能时,任何写入端口操作只会影响到数据寄存器;而对于读操作,如果I/O复用为中断功能,则返
回引脚电平,而复用为其它功能时,返回端口寄存器的值。
PORT0:
- OP1OUT(P0.0):OP1输出
- C1N-C2N(P0.1,P0.6):比较器1,2输入负端
- AN0-AN5(P0.2 - P0.7):ADC 输入通道
- C2P0-C2P2(P0.2 - P0.4):比较器2的三个同相输入端
- INT45-INT47(P0.2 - P0.4):外部中断4的三个输入端
- VREF(P0.5):ADC 基准电压输入
Table 7.19 PORT0共用列表
引脚编号
3
2
1, 32, 31
30
29
28
优先级
功能
1
OP1OUT
2
P0.0
允许位
CMP2CON1寄存器的AMP1EN位置1
CMP2CON1寄存器的AMP1EN清0
1
C1N
CMP1CON寄存器的CMP1EN位置1,且C1NCHS = 0时
2
P0.1
不满足上述情况
1
C2P0-C2P2/
AN0-AN2
ADCH1寄存器的CH0,CH1,CH2位置1作C2P0-C2P2或AN0-AN2的模拟端口
注:比较器功能与ADC功能可以同时实现
2
INT45-INT47
不满足优先级1的情况下,IEN1寄存器的EX4置1,IENC寄存器EXS45 - EXS47置1,
且IO为输入。此时I/O口的输入功能仍然有效。
3
P0.2-P0.4
1
VREF
ADCON1寄存器的REFC位置1
2
AN3
ADCON1寄存器的REFC清位0且ADCH1寄存器的CH3位置1
3
P0.5
ADCON1寄存器的相应位REFC清0,ADCH1寄存器的CH3位清0
1
C2N/
AN4
ADCH1寄存器的CH4 = 1作C2N或AN4的模拟端口
注:比较器功能与ADC功能可以同时实现
2
P0.6
ADCH1寄存器的CH4位清0
1
AN5
ADCH1寄存器的CH5位置1
2
P0.7
ADCH1寄存器的CH5位清0
不满足优先级1的情况下都作I/O口
32
SH79F1615
PORT1:
- OP1N(P1.0):OP1输入负端
- OP1P(P1.1):OP1输入正端
-C1P(P1.1):比较器1输入正端
- TDO,TMS,TDI,TCK(P1.2 - P1.5):JTAG 接口
- AN8-AN10(P1.2,P1.3,P1.6):ADC 模拟输入口
- INT0,INT1(P1.2,P1.3):外部中断0,1
- BUZ(P1.4):BUZZER 输出
- RST(P1.5):PIN 复位输入
Table 7.20 PORT1共用列表
引脚编号
4
5
6
7
8
9
10
优先级
功能
允许位
1
OP1N
CMP2CON1寄存器的AMP1EN位置1
2
P1.0
CMP2CON1寄存器的AMP1EN位清0
1
C1P/OP1P
CMP1CON寄存器的CMP1EN位置1且C1PCHS清0或CMP2CON1寄存器的
AMP1EN位置1。
注:比较器功能与放大器功能可同时实现(CMP1EN=1&C1PCHS=0且AMP1EN=1)
2
P1.1
CMP1CON寄存器的CMP1EN位清0,CMP1CON寄存器的AMP1EN位清0
1
TDO
进入仿真模式
2
AN8
非仿真模式下,ADCH2寄存器的CH8位置1
3
INT0
非仿真模式下,ADCH2寄存器的CH8位清0,IEN0寄存器的EA位和EX0位置1,
且IO为输入作中断口功能INT0或T0的GATE=1时,作T0定时计数器控制输入端
INT0。此时外中断功能仍然有效。
4
P1.2
不满足优先级1、2的情况下始终作为I/O。
1
TMS
进入仿真模式
2
AN9
非仿真模式下,ADCH2寄存器的CH9位置1
3
INT1
非仿真模式下,ADCH2寄存器的CH9位清0,IEN0寄存器的EA位和EX1位置1,
且IO为输入,作中断口功能INT1或T1的GATE=1时,作T1定时计数器控制输入端
INT1。此时外中断功能仍然有效。
4
P1.3
不满足优先级1、2的情况下始终作为I/O。
1
TDI
进入仿真模式
2
BUZ
非仿真模式下,BUZCON寄存器的BZEN位置1
3
P1.4
非仿真模式下,BUZCON寄存器的BZEN位清0
1
TCK
进入仿真模式
2
_________
非仿真模式下,代码选项选择OP_RST作为reset pin
3
RST
P1.5
非仿真模式下,代码选项选择OP_RST作为IO
1
AN10
ADCH2寄存器的CH10位置1
2
P1.6
ADCH2寄存器的CH10位清0
33
SH79F1615
PORT2:
- PWMn(n = 0.1.2),PWMn1(n = 0.1.2)(P2.0-P2.5):PWM输出
- T0,T1(P2.6,P2.7):定时器0,1输入或比较功能输出
- FLT(P2.6):故障检测输入
Table 7.21 PORT2共用列表
引脚编号
优先级
功能
1
PWMn
PWMn1
(n = 0.1.2)
PWMOE寄存器的PWMnOE(n = 0.1.2),PWMn1OE(n = 0.1.2)位置1
2
P2.0-P2.5
PWMOE寄存器的PWMnOE(n = 0.1.2),PWMn1OE(n = 0.1.2)位清0
1
FLT
2
T0
FLTCON寄存器的FLT2EN位清0,
———
TCON寄存器的TR0位置1,且TMOD寄存器的C/T0 位或TCON1寄存器的TC0位
其中一个置1
3
P2.6
FLTCON寄存器的FLT2EN位清0,
———
TCON寄存器的TR0位清0,或TMOD寄存器的C/T0 位和TCON1寄存器的TC0位
都为0
1
T1
TCON寄存器的TR1位置1,且TMOD寄存器的C/T1 位或TCON1寄存器的TC1位
其中一个置1
2
P2.7
TCON寄存器的TR1位清0,或TMOD寄存器的C/T1 位和TCON1寄存器的TC1位
都为0
20-25
26
允许位
PWM0/1/2模块的FLTCON寄存器的FLT2EN位置1
———
27
———
34
SH79F1615
PORT3:
- PWM3(P3.0):PWM3的输出
- RXD(P3.1):EUART的输入
- TXD(P3.2):EUART的输出
- INT40,41,42,43,44(P3.1- P3.5):外部中断4的5个输入
- XTAL1,XTAL2(P3.4,P3.5):振荡器输入输出
Table 7.22 PORT3共用列表
引脚编号
19
18
17
16
15, 14
优先级
功能
1
PWM3
PWM3寄存器PWM3CON的PWM3OE位置1
2
P3.0
PWM3寄存器PWM3CON的PWM3OE位清0
1
RXD
SCON寄存器的REN位置1(自动上拉)
2
INT40
3
P3.1
SCON寄存器的REN位清0,始终作为I/O
1
TXD
对SBUF寄存器写操作
2
INT41
3
P3.2
1
INT42
2
P3.3
1
XTAL1, XTAL2
2
INT43, INT44
3
P3.4, P3.5
允许位
SCON寄存器的REN位清0,IEN0的EA置1,IEN1寄存器的EX4置1,
IENC寄存器EXS40置1,且IO为输入
UART非传输过程中,IEN0的EA置1,IEN1寄存器的EX4置1,
IENC寄存器EXS41置1,且IO为输入
对SBUF寄存器无操作,始终作为I/O
IEN0的EA置1,IEN1寄存器的EX4置1,IENC寄存器EXS42置1,且IO为输入
不满足上述情况
代码选项OP_OSC选为晶振或陶振
代码选项OP_OSC选为内部RC且IEN0的EA置1,IEN1寄存器的EX4置1。
IENC寄存器EXS43,EXS44置1,且IO为输入
代码选项OP_OSC选为内部RC
35
SH79F1615
7.7 定时器
7.7.1 特性
SH79F1615有4个定时器(定时器0,1,2,3)
定时器0兼容标准的8051
定时器1兼容标准的8051
定时器2有递增递减计数和可编程输出功能,兼有硬件自动单次触发功能
定时器3是16位自动重载定时器,且可以工作在掉电模式
7.7.2 定时器0和定时器1
每个定时器的两个数据寄存器(THx & TLx(x = 0,1))可作为一个16位寄存器来访问。它们由寄存器TCON和TMOD控
制。IEN0寄存器的ET0和ET1位置1能允许定时器0和定时器1中断。(详见中断章节)
定时器x的方式(x = 0,1)
通过计数器/定时器方式寄存器(TMOD)的方式选择位Mx1-Mx0,选择定时器工作方式。
方式0:13位计数器/定时器
在方式0中,定时器x为13位计数器/定时器。THx寄存器存放13位计数器/定时器的高8位,TLx存放低5位(TLx.4-TLx.0)。
TLx的高三位(TLx.7-TLx.5)是不确定的,在读取时应该被忽略。当13位定时器寄存器递增,溢出时,系统置起定时器溢出标
———
志TFx。如果定时器x中断被允许,将会产生一个中断。C/ Tx 位选择计数器/定时器的时钟源。
———
———
如果C/ Tx = 1,定时器x输入引脚(Tx)的电平从高到低跳变,使定时器x数据寄存器加1。如果C/ Tx = 0,选择系统时钟为
定时器x的时钟源。
————
————
当GATEx = 0或GATEx = 1且输入信号INTx有效时,TRx置1打开定时器。GATEx置1允许定时器由外部输入信号INTx控制,
————
便于测量INTx的正脉冲宽度。TRx位置1不强行复位定时器,这意味着如果TRx置1,定时器寄存器将从上次TRx清0时的值开始
计数。所以在允许定时器之前,应该设定定时器寄存器的初始值。
当作为定时器应用时,可配置寄存器TCON1中的TCLKSx(x = 0,1)位选择系统时钟或低频128kHz的8分频作为定时器x
(x = 0,1)的时钟源。
可配置寄存器TCON1中的TCLKPx(x = 0,1)位选择系统时钟或系统时钟的1/12作为定时器x(x = 0,1)的时钟源。
当作为定时器应用时,可配置寄存器TCON1中的TC0/1位使定时器0/1溢出时T0/T1脚自动翻转。如果TC0/1被置1,T0/T1
引脚自动设置为输出。
System Clock
1/12
128kHz
RC Clock
Overflow
TCLKPx
=0
TCLKSx
/8
TLx
(5bits)
C/Tx
=1
Tx
0:Switch Off
1:Switch On
GATEx
+
INTx
THx
(8bits)
TFx
Interrupt
Request
Overflow
Flag
Tx
C/Tx=0 and TCx=1
&
TRx
The Block Diagram of mode0 of Timerx ( x=0,1 )
36
SH79F1615
方式1:16位计数器/定时器
除了使用16位定时器/计数器之外,方式1的运行与方式0一致。打开和配置计数器/定时器也如同方式0。
System Clock
1/12
128kHz
RC Clock
Overflow
TCLKPx
=0
TCLKSx
/8
TLx
(8bits)
C/Tx
=1
Tx
THx
(8bits)
TFx
Overflow
Flag
0:Switch Off
1:Switch On
GATEx
+
INTx
Interrupt
Request
Tx
C/Tx=0 and TCx=1
&
TRx
The Block Diagram of mode0 of Timerx ( x=0,1 )
方式2:8位自动重载计数器/定时器
方式2中,定时器x是8位自动重载计数器/定时器。TLx存放计数值,THx存放重载值。当在TLx中的计数器溢出至0x00时,
置起定时器溢出标志TFx,寄存器THx的值被重载入寄存器TLx中。如果定时器中断使能,当TFx置1时将产生一个中断。而在THx
中的重载值不会改变。在允许定时器正确计数开始之前,TLx必须初始化为所需的值。
除了自动重载功能外,方式2中的计数器/定时器的使能和配置与方式1和0是一致的。
当作为定时器应用时,可配置寄存器TCON1中的TCLKSx(x = 0,1)位选择系统时钟或128kHz的8分频作为定时器x(x =
0,1)的时钟源。
可配置寄存器TCON1中的TCLKPx(x = 0,1)位选择系统时钟或系统时钟的1/12作为定时器x(x = 0,1)的时钟源。
当作为定时器应用时,可配置寄存器TCON1中的TC0/1位使定时器0/1溢出时T0/T1脚自动翻转。如果TC0/1被置1,T0/T1
引脚自动设置为输出。
TH0
(8bits)
System Clock
1/12
Reload
128kHz
RC Clock
TCLKPx
TCLKSx
/8
=0
C/Tx
TL0
(8bits)
=1
Tx
0:Switch Off
1:Switch On
GATEx
INTx
+
overflow
TFx
Interrupt
Request
Overflow
Flag
Tx
C/Tx=0 and TCx=1
&
The Block Diagram of mode2 of Timerx (x=0,1)
TRx
37
SH79F1615
方式3:两个8位计数器/定时器(只限于定时器0)
在方式3中,定时器0用作两个独立的8位计数器/定时器,分别由TL0和TH0控制。TL0使用定时器0的控制(在TCON中)和
———
状态(在TMOD中)位:TR0,C/T0 ,GATE0和TF0。TL0能用系统时钟或128kHz的8分频或外部输入信号作为时钟源。
TH0只能用作定时器功能,时钟源来自系统时钟。TH0由定时器1的控制位TR1控制使能,溢出时定时器1溢出标志TF1置1,
控制定时器1中断。
定时器0工作在方式3时,定时器1可以工作在方式0、1或2,但是不能置1 TF1标志和产生中断。TH1和TL1只能用作定时器
功能,时钟源来自系统时钟,GATE1位无效。T1输入脚的上拉电阻也无效。定时器1由方式控制使能与否,因为TR1被定时器0
占用。定时器1在方式0、1或2时使能,在方式3时被关闭。
当作为定时器应用时,可配置寄存器TCON1中的TCLKSx(x = 0,1)位选择系统时钟或128kHz的8分频作为定时器x(x =
0,1)的时钟源。
可配置寄存器TCON1中的TCLKPx(x = 0,1)位选择系统时钟或系统时钟的1/12作为定时器x(x = 0,1)的时钟源。
当作为定时器应用时,可配置寄存器TCON1中的TC0/1位使定时器0/1溢出时T0/T1脚自动翻转。如果TC0/1被置1,T0/T1
引脚自动设置为输出。
System Clock
1/12
128kHz
RC Clock
=0
TCLKP0
/8
TL0
(8bits)
TCLKS0 C/T0
=1
T0
Overflow
TF0
Overflow
Flag
0:Switch Off
1:Switch On
GATE0
Interrupt
Request
+
INT0
T0
C/T0=0 and TC0=1
&
TR0
System Clock
TH0
(8bits)
1/12
128kHz
RC Clock
TCLKP0
TCLKS0
/8
0:Switch Off
1:Switch On
TR1
Overflow
TF1
Interrupt
Request
Overflow
Flag
The Block Diagram of mode3 of Timer0
注意:此时定时器 1 溢出率不作为波特率发生器,此功能仅作屏蔽,SH79F1615 芯片的可变波特率仅由寄存器 SBRTL/H
设置。
38
SH79F1615
寄存器
Table 7.23 定时器/计数器x控制寄存器(x = 0,1)
88H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
TCON
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
第1位
第0位
位编号
位符号
说明
7,5
TFx
x = 0,1
定时器x溢出标志位
0:定时器x无溢出,可由软件清0
1:定时器x溢出,由硬件置1;若由软件置1将会引起定时器中断
6,4
TRx
x = 0,1
定时器x启动,停止控制位
0:停止定时器x
1:启动定时器x
3,1
IEx
x = 0,1
外部中断x请求标志位
2,0
Itx
x = 0,1
外部中断x触发方式选择位
Table 7.24 定时器/计数器x方式寄存器(x = 0,1)
第7位
89H
第6位
———
第5位
第4位
第3位
第2位
———
TMOD
GATE1
M10
GATE0
M00
读/写
读/写
读/写
C/T0
读/写
M01
读/写
C/T1
读/写
M11
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7,3
GATEx
x = 0,1
6,2
C/Tx
x = 0,1
定时器/计数器方式选择位
0:定时器方式
1:计数器方式
Mx[1:0]
x = 0,1
定时器x定时器方式选择位
00:方式0,13位向上计数计数器/定时器,忽略TLx的第7-5位
01:方式1,16位向上计数计数器/定时器
10:方式2,8位自动重载向上计数计数器/定时器
11:方式3(只用于定时器0),两个8位向上计数定时器
———
5-4
1-0
说明
定时器x门控位
0:TRx置1,定时器x即被允许
————
1:只有INTx在高电平期间TRx置1,定时器x才被允许
39
SH79F1615
Table 7.25 定时器/计数器x数据寄存器1(x = 0,1)
第7位
8AH-8DH
第6位
第5位
第4位
第3位
第2位
第1位
第0位
TL0 (8AH)
TL0.7
TL0.6
TL0.5
TL0.4
TL0.3
TL0.2
TL0.1
TL0.0
TH0 (8CH)
TH0.7
TH0.6
TH0.5
TH0.4
TH0.3
TH0.2
TH0.1
TH0.0
TL1 (8BH)
TL1.7
TL1.6
TL1.5
TL1.4
TL1.3
TL1.2
TL1.1
TL1.0
TH1 (8DH)
TH1.7
TH1.6
TH1.5
TH1.4
TH1.3
TH1.2
TH1.1
TH1.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
7-0
位符号
说明
TLx.y,THx.y
定时器x低及高字节计数器
x = 0-1,y = 0-7
Table 7.26 定时器/计数器x控制寄存器1(x = 0,1)
CEH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
TCON1
-
TCLK_S1
TCLK_S0
-
TCLKP1
TCLKP0
TC1
TC0
读/写
-
读/写
读/写
-
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
0
0
-
0
0
0
0
位编号
位符号
说明
6-5
TCLK_Sx
x = 0,1
定时器x时钟源控制位
0:系统时钟作为定时器x的时钟源
1:选择128kHz RC时钟的8分频作为定时器x的时钟源
3-2
TCLKPx
x = 0,1
定时器x时钟源预分频控制位
0:选择系统时钟的1/12作为定时器x的时钟源
1:选择系统时钟作为定时器x的时钟源
1-0
TCx
x = 0,1
比较输出功能允许位
0:禁止定时器x比较输出功能
1:允许定时器x比较输出功能
40
SH79F1615
7.7.3 定时器2
两个数据寄存器(TH2和TL2)串联后可作为一个16位寄存器来访问,由寄存器T2CON和T2MOD控制。设置IEN0寄存器中
的ET2位能允许定时器2中断。(详见中断章节)
定时器2方式
定时器2有4种工作方式:自动重载方式、单次触发。通过设置寄存器T2CON和T2MOD选择这些方式。
定时器2方式选择
TR2
TRG
方式
1
0
1
16位自动重载定时器
1
1
2
单次触发模式
方式1:16位自动重载定时器
在16位自动重载方式下,定時器2为递增计数。定时器2递增到0FFFFH,在溢出后置起TF2位,同时定时器自动将用户软件
写好的寄存器RCAP2H和RCAP2L的16位值装入TH2和TL2寄存器。
System
Clock
1/12
Increment Mode
TCLKP2
TL2
TH2
Overflow
Flag
0:Switch Off
1:Switch On
TR2
Interrupt
Request
TF2
RCAP2L
RCAP2H
The Block Diagram of Auto Relode Mode (Mode 1)of Timer2
方式2:单次触发模式
TRG = 1,进入此模式。在此模式下,TR2 = 1会引起Timer2自动重载并启动Timer2,将寄存器RCAP2H和RCAP2L的16位
值装入TH2和TL2寄存器,然后开始计数,当计数溢出时,置位TF2,同时触发ADC模块并自动清0 TR2停止Timer2计数。
在此模式下,TR2可以由软件置1也可以硬件置1。硬件置1通过MCPWM模块实现,将PWMCON2寄存器的ZETIM置1,则
MCPWM模块会送出硬件触发信号给Timer2(详见MCPWM模块),硬件置起TR2。
System
clock
1/12
TCLKP 2
Interrupt
Request
TL2
TH2
TF2
Overflow Flag
MCPWM
Period
match
+
S
ADC Block Trig signal
D
R
TR2
0:Switch Off
1:Switch On
RCAP2L
RCAP2H
Clear TR2
The Block Diagram of outo Trig Mode ( Mode 2 ) of Timer2
注意:
当在软件启动Timer2时,又有MCPWM硬件触发信号进来,定时器会停止先前的计数并重载数据,进行新的计数;相反,
由MCPWM硬件信号触发启动Timer2时,软件再置位TR2会当成是无效操作,不会再重载定时器。
41
SH79F1615
寄存器
Table 7.27 定时器2重载/捕获和数据寄存器
第7位
CAH-CDH
第6位
第5位
第4位
第3位
第2位
第1位
第0位
RCAP2L
RCAP2L.7 RCAP2L.6 RCAP2L.5 RCAP2L.4 RCAP2L.3 RCAP2L.2 RCAP2L.1 RCAP2L.0
RCAP2H
RCAP2H.7 RCAP2H.6 RCAP2H.5 RCAP2H.4 RCAP2H.3 RCAP2H.2 RCAP2H.1 RCAP2H.0
TL2
TL2.7
TL2.6
TL2.5
TL2.4
TL2.3
TL2.2
TL2.1
TL2.0
TH2
TH2.7
TH2.6
TH2.5
TH2.4
TH2.3
TH2.2
TH2.1
TH2.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
第2位
第1位
第0位
位编号
7-0
位符号
RCAP2L.x
RCAP2H.x
TL2.x
7-0
说明
定时器2重载/捕获数据低位高位,x = 0 - 7
定时器2低位/高位计数器,x = 0 - 7
TH2.x
Table 7.28 定时器2控制寄存器
第7位
C8H
第6位
第5位
第4位
第3位
T2CON
TF2
-
TRG
-
-
TR2
-
-
读/写
读/写
-
读/写
-
-
读/写
-
-
复位值
(POR/WDT/LVR/PIN)
0
-
0
-
-
0
-
-
位编号
位符号
说明
7
TF2
定时器2溢出标志位
0:无溢出(必须由软件清0)
1:溢出,由硬件设1
5
TRG
单次触发控制位
0:关闭单次触发功能
1:开启单次触发功能
2
TR2
定时器2开始/停止控制位
0:停止定时器2
1:开始定时器2
Table 7.29 定时器2方式控制寄存器
C9H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
T2MOD
TCLKP2
-
-
-
-
-
-
-
读/写
读/写
-
-
-
-
-
-
-
复位值
(POR/WDT/LVR/PIN)
0
-
-
-
-
-
-
-
位编号
位符号
7
TCLKP2
说明
分频选择控制位
0:选择系统时钟的1/12作为定时器2的时钟源
1:系统时钟作为定时器2的时钟源
42
SH79F1615
7.7.4 定时器3
定时器3是16位自动重载定时器,通过两个数据寄存器TH3和TL3访问,由T3CON寄存器控制。IEN1寄存器的ET3位置1允
许定时器3中断(详见中断章节)。
定时器3只有一个工作方式:16位自动重载计数器/定时器,可以设置预分频比,并可以工作在CPU掉电模式。
定时器3有一个16位计数器/定时器寄存器(TH3,TL3)。当TH3和TL3被写时,用作定时器重载寄存器,当被读时,被用做
计数寄存器。TR3位置1使定时器3开始递增计数。定时器在0xFFFF到0x0000溢出并置TF3位为1。溢出同时,定时器重载寄存
器的16位数据被重新载入计数寄存器中,TH3写操作也导致重载寄存器的数据重新载入计数寄存器。
由于对TL3和TH3的读写操作需要2条指令才能完成。为保证精确计数,对TL3和TH3寄存器组的读写操作都以对TH3寄存器
的读写操作作为基准。也就是说,写TL3寄存器不会立即生效,而是暂存在一个缓冲寄存器中,只有对TH3寄存器的写操作才会
使TL3和TH3寄存器同时生效。
因此,TH3和TL3读写操作遵循以下顺序:
写操作:先低位后高位
读操作:先高位后低位
注意:虽然TH3和TL3寄存器地址相连,而且TL3地址在前,但由于上述限制,因此在C语言编程时,不能将此2个寄存器定
义为SFR16。
System Clock
T3PS[1:0]
128kHzRC
10
Interrupt
Request
Increment Mode
00
Prescaler
1,8,64,256
16-bit Counter
TF3
Overflow
Flag
T3CLKS[1:0]
TR3
0:Switch Off
1:Switch On
TL3
TH3
The Block Diagram of Timer3
定时器3可以工作在掉电模式。
但如果T3CLKS[1:0]为00,定时器3不能工作在掉电模式下。当T3CLKS[1:0]为10时(必须工作在双时钟源的高频模式,
customer option中选择)定时器3可以工作在普通模式或掉电模式。
注意:
在读或写TH3和TL3时,如果时钟源不是系统时钟,要确保TR3 = 0。
43
SH79F1615
寄存器
Table 7.30 定时器3控制寄存器
ACH
第7位
第6位
第5位
第4位
第3位
第2位
T3CON
TF3
-
T3PS.1
T3PS.0
-
TR3
读/写
读/写
-
读/写
读/写
-
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
-
0
0
-
0
0
0
位编号
位符号
7
第0位
说明
定时器3溢出标志位
0:无溢出(硬件清0)
1:溢出(硬件置1)
TF3
5-4
T3PS[1:0]
2
TR3
1-0
第1位
T3CLKS.1 T3CLKS.0
定时器3预分频比选择位
00:1/1
01:1/8
10:1/64
11:1/256
定时器3允许控制位
0:关闭定时器3
1:打开定时器3
T3CLKS[1:0]
定时器3时钟源选择位
00:系统时钟,T3端口作为I/O口
01:T3端口输入外部时钟,自动上拉
10:内部128KHz RC振荡器
11:保留
Table 7.31 定时器3重载/计数数据寄存器
AAH - ABH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
TL3 (AAH)
TL3.7
TL3.6
TL3.5
TL3.4
TL3.3
TL3.2
TL3.1
TL3.0
TH3 (ABH)
TH3.7
TH3.6
TH3.5
TH3.4
TH3.3
TH3.2
TH3.1
TH3.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
7-0
位符号
TL3.x
TH3.x
说明
定时器3低位高位计数器,x = 0 - 7
44
SH79F1615
7.8 8bit脉冲宽度调制模块(PWM3)
7.8.1 特性
8位分辨率PWM模块,提供预分频功能
提供每个PWM周期溢出中断
输出极性可选择,带输出独立允许位,允许位为0时可做通用定时器使用
SH79F1615内建1个8位PWM模块。PWM模块可以产生周期和占空比分别可以调整的脉宽调制波形。寄存器PWM3CON用
于控制PWM模块的时钟源,寄存器PWMP用于设置PWM模块的周期,寄存器PWMD用于设置PWM模块的占空比。
7.8.2 寄存器
Table 7.32 PWM3控制寄存器
ADH
第7位
第6位
PWM3CON
PWM3EN
PWM3S
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
位编号
位符号
7
PWM3EN
6
PWM3S
5-4
PWM3CK[1:0]
第5位
第4位
第3位
第2位
第1位
第0位
FLT3EN
PWM3IE
PWM3IF
PWM3OE
读/写
读/写
读/写
读/写
读/写
0
0
0
0
0
PWM3CK1 PWM3CK0
说明
PWM3模块控制位
0:关闭PWM3模块
1:打开PWM3模块
PWM3输出模式
0:高电平有效,PWM3占空比有效期间输出高电平,其余时间输出低电平
1:低电平有效,PWM3占空比有效期间输出低电平,其余时间输出高电平
PWM3时钟选择位
00:系统时钟/1
01:系统时钟/8
10:系统时钟/64
11:系统时钟/256
3
FLT3EN
PWM3故障检测使能位
0:故障检测功能禁止
1:故障检测功能允许,比较器1的输出信号作为PWM3的故障检测输入信号,
如果检测到比较器1的输出变高,将立即关闭PWM输出,当比较器输出变低
后,不会立即恢复输出,需要与PWM3周期溢出信号同步,然后PWM3才会
恢复输出
2
PWM3IE
PWM3中断允许位(只有当IEN1中的EPWM3位也为1时,功能才有效)
0:禁止PWM3周期溢出中断
1:允许PWM3周期溢出中断
1
PWM3IF
PWM3中断标志位
0:PWM3周期计数器没有溢出
1:PWM3周期计数器溢出,由硬件置1
0
PWM3OE
PWM3输出控制位
0:PWM3输出禁止,用作I/O功能
注:如果此位为0而PWM3EN = 1,则整个PWM3模块仍然正常运行,只是波形
输出被禁止,PWM3模块可以做一个定时器来使用。
1:PWM3输出允许
注:如果此位设为1而PWM3EN位为0,则PWM3输出非选电平(选为高电平有
效则出低电平,低电平有效则出高电平)
45
SH79F1615
Table 7.33 PWM3周期控制寄存器
AEH
第7位
第6位
第5位
第4位
第3位
第2位
PWM3P
PWM3P.7
PWM3P.6
PWM3P.5
PWM3P.4
PWM3P.3
PWM3P.2
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
第1位
第0位
位编号
位符号
7-0
PWM3P.7-0
第1位
第0位
PWM3P.1 PWM3P.0
说明
PWM3输出周期 = PWM3P * PWM时钟
当PWM3P = 00H时,如果PWM3S = 0,PWM3引脚输出低
当PWM3P = 00H时,如果 PWM3S = 1,PWM3引脚输出高
Table 7.34 PWM3占空比控制寄存器
第7位
AFH
第6位
第5位
第4位
第3位
第2位
PWM3D.7 PWM3D.6 PWM3D.5 PWM3D.4 PWM3D.3 PWM3D.2 PWM3D.1 PWM3D.0
PWM3D
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
7-0
位符号
PWM3D.7-0
说明
PWM3占空比控制,控制PWM波形占空比的输出时间
特殊情况:
1. 当PWM3P ≤ PWM3D时
如果PWM3S = 0,则PWM3引脚输出高电平
如果PWM3S = 1,则PWM3引脚输出低电平
2. 当PWM3D = 00H时
如果PWM3S = 0,则PWM3引脚输出低电平
如果PWM3S = 1,则PWM3引脚输出高电平
注意事项:
1. PWM3EN位控制PWM3模块打开。
2. PWM3OE位能选择P3.0端口是作为I/O端口还是PWM3输出端口。
3. 在IEN1寄存器中的EPWM3位能允许/禁止PWM3中断。
4. 如果 PWM3EN 置 1,PWM3 模块打开,但 PWM3OE = 0,PWM3 输出关闭,此时 PWM3 模块可以用作一个 8bit timer,
此时如果中断控制寄存器 IEN1 的 EPWM3 位置 1,PWM3 中断照样发生。
46
SH79F1615
02
01
03
04
05
7D
7E
7F
80
EF
F0
01
02
03
04
PWM3 clock tPWM
PWM3 output
(PWM3S=0)
PWM3 output
(PWM3S=1)
PWM3P = F0H
PWM3D = 7FH
PWM3 output duty cycle = 7FH x t PWM
PWM3 output period cycle = F0H x t PWM
PWM3 输出范例
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 01 02 03 04 05 06 07 08
PWM3 clock tPWM
Write PWM3P = 0DH
Write PWM3D = 07H
PWM3 output
(PWM3S=0)
Duty cycle
= 06H X tPWM
Duty cycle
= 06H X tPWM
Period cycle = 0FH X tPWM
Period cycle = 0DH X tPWM
PWM3 输出周期或者占空比改变范例
47
Duty cycle
= 07H X tPWM
SH79F1615
7.9 中断
7.9.1 特性
14个中断源
4层中断优先级
SH79F1615有14个中断源:3个外部中断(INT0,INT1和INT4,INT4共8个中断源INT40-47共享一个向量地址),4个定
时器中断(定时器0 - 3),1个EUART中断,系统时钟监控中断, ADC中断和PWM3中断,电机控制PWM模块中断和2个模拟
比较器中断。SH79F1615中断采用4级优先级结构,为处理14个中断源提供了极大的灵活性。
另外,SH79F1615为INT4提供了4种外部中断触发方式,可以通过寄存器选择。
7.9.2 中断允许控制
任何一个中断源均可通过对寄存器IEN0和IEN1中相应的位置位或清零,实现单独允许或禁止此中断功能。IEN0寄存器中还
包含了一个全局使能位EA,它可以禁止所有的中断。如果要打开某个中断源,必须将EA控制位和IEN0/1中相应的控制位都设置
为1。在复位后,所有中断允许位被清0,所有中断被禁止。
Table 7.35 初级中断允许寄存器
A8H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
IEN0
EA
EADC
ET2
ES
ET1
EX1
ET0
EX0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
说明
7
EA
所有中断允许位
0:禁止所有中断
1:允许所有中断
6
EADC
ADC中断允许位
0:禁止ADC中断
1:允许ADC中断
5
ET2
定时器2溢出中断允许位
0:禁止定时器2溢出中断
1:允许定时器2溢出中断
4
ES
EUART中断允许位
0:禁止EUART中断
1:允许EUART中断
3
ET1
定时器1溢出中断允许位
0:禁止定时器1溢出中断
1:允许定时器1溢出中断
2
EX1
外部中断1允许位
0:禁止外部中断1
1:允许外部中断1
1
ET0
定时器0溢出中断允许位
0:禁止定时器0溢出中断
1:允许定时器0溢出中断
0
EX0
外部中断0允许位
0:禁止外部中断0
1:允许外部中断0
48
SH79F1615
Table 7.36 中断允许寄存器1
A9H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
IEN1
ESCM
EPWM3
EMCM
ET3
EX4
ECMP2
ECMP1
-
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
-
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
-
位编号
位符号
说明
7
ESCM
6
EPWM3
5
EMCM
4
ET3
定时器3溢出中断允许位
0:禁止定时器3溢出中断
1:允许定时器3溢出中断
3
EX4
外部中断4允许位
0:禁止外部中断4
1:允许外部中断4
2
ECMP2
模拟比较器2中断允许位
0:禁止模拟比较器2中断
1:允许模拟比较器2中断
1
ECMP1
模拟比较器1中断允许位
0:禁止模拟比较器1中断
1:允许模拟比较器1中断
SCM中断允许位
0:禁止SCM中断
1:允许SCM中断
PWM3中断允许位
0:禁止PWM3中断
1:允许PWM3中断
电机控制模块MCM(Motor Control Module)2中断允许位
0:禁止电机控制模块所有中断
1:允许电机控制模块中断(和PWM0/1/2中断独立允许控制位配合)
注意:
1. 打开外部中断0/1/4时,相应的端口必须设置为输入状态。
2. 若要打开PWM定时器中断,EPWM位和PWM中断控制寄存器中的PWMxIE(x = 0,1,2)和PWMPIE相应中断允许位
必须同时置1。
3. 若要打开外部中断4,EX4和IENC中的EXS4x(x = 0 - 7)相应位必须同时置1。
Table 7.37 中断通道允许寄存器
BAH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
IENC
EXS47
EXS46
EXS45
EXS44
EXS43
EXS42
EXS41
EXS40
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
EXS4x
x=0-7
说明
外部中断4通道选择位(x = 0 - 7)
0:禁止外部中断4x
1:允许外部中断4x
49
SH79F1615
7.9.3 中断标志
每个中断源都有自己的中断标志,当产生中断时,硬件会置起相应的标志位,在中断汇总表中会列出中断标志位。
外部中断INT0/1产生外部中断INTx(x = 0,1)时,如果中断为边沿触发,CPU在响应中断后,标志IEx(x = 0,1)被硬
件清零;如果中断是电平触发,外部中断源直接控制中断标志,如果是高电平,此标志位保持为1,否则清0。
外部中断INT4产生中断时,EXF1寄存器中的IF4x(x = 0 - 7)标志位置位,INT4共8个中断源共享一个中断向量地址,标
志位需要用户软件清除。但是如果INT4为电平触发时,标志位不能被用户软件清除,只受INT4中断源引脚所接信号电平直接控
制。
注意尽管外部中断被禁止,但是中断标志位仍然受外部中断源输入状态变化而改变,除非该输入引脚配置为其它功能。
定时器0/1中断,当定时器中断产生,中断标志位产生,当进入中断服务程序后中断标志位由硬件清除。
定时器2中断,T2CON寄存器的TF2或EXF2标志位置1时,产生定时器2中断,CPU在响应中断后,标志不能被硬件自动清
0。事实上,中断服务程序必须决定是由TF2或是EXF2产生中断,因此标志必须由软件清0。
定时器3中断,定时器3的计数器溢出时,T3CON寄存器的TF3中断标志位置1,产生定时器3中断请求,CPU在响应中断后,
TF3标志被硬件自动清0。
串行通讯中断,SCON寄存器的标志RI或TI置1时,产生EUART中断,CPU在响应中断后,标志不会被硬件自动清0。事实
上,中断服务程序必须判断是收中断还是发中断,标志必须由软件清零。
系统时钟监控中断,SCM寄存器的SCMIF标志位置1时,产生SCM中断,标志由硬件清0。
ADC中断,ADCON寄存器的ADCIF标志位置1时,产生ADC中断。在每次转换中,如果转换结果小于比较值时,ADCIF标
志位为0;如果转换结果大于等于比较值时,上限比较标志位ADGIF标志位置1,同理,还有下限比较标志位。因此ADC模块有3
个中断标志位,分别有各自独立的中断允许位,中断标志必须由软件清0。
电机控制模块MCM中断,当PWMxIF0-2置起,中断产生,中断标志位由软件清零(PWM中断标志请参考PWM电机模块部
分)。
PWM3中断,PWM3是一个独立的8bit PWM模块,独占一个中断矢量入口地址,此标志位在中断响应时由硬件清0。
Table 7.38 外部中断标志寄存器
88H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
TCON
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
说明
3,1
IEx
(x = 0,1)
外部中断x请求标志
0:无中断挂起
1:中断挂起
2,0
ITx
(x = 0,1)
外部中断x触发方式
0:低电平触发
1:下降沿触发
50
SH79F1615
Table 7.39 外部中断4设置寄存器
87H
第7位
第6位
第5位
第4位
第3位
第2位
PCON
SMOD
SSTAT
IT41
IT40
GF1
GF0
PD
IDL
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7
SMOD
UART波特率加倍器
6
SSTAT
UART SCON[7:5]功能选择
5-4
IT4 [1:0]
外部中断4触发模式位
00:低电平触发
01:下降沿触发
10:上升沿触发
11:双沿触发
IT4[1:0]控制外部中断4各中断源采用同一触发方式
3-2
GF[1:0]
用于软件的通用标志位
1
PD
掉电模式控制位
0
IDL
空闲模式控制位
第1位
第0位
说明
Table 7.40 外部中断4标志寄存器
D8H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
EXF1
IF47
IF46
IF45
IF44
IF43
IF42
IF41
IF40
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
IF4x
(x = 0 - 7)
说明
外部中断4请求标志,IF4x须被软件清0
0:无中断请求
1:有中断请求
51
SH79F1615
7.9.4 中断向量
当一个中断产生时,程序计数器内容被压栈,相应的中断向量地址被载入程序计数器。中断向量的地址在中断摘要表中详
细列出。
7.9.5 中断优先级
每个中断源都可被单独设置为4个中断优先级之一,分别通过清0或置1 IPL0,IPH0,IPL1,IPH1中相应位来实现。但OVL
不可屏蔽中断无需IPH/IPL控制,在所有中断源中享有最高优先级(除复位外)。中断优先级服务程序描述如下:
响应一个中断服务程序时,可响应更高优先级的中断,但不能响应同优先级或低优先级的另一个中断。
响应最高级中断服务程序时,不响应其它任何中断。如果不同中断优先级的中断源同时申请中断时,响应较高优先级的中
断申请。
如果同优先级的中断源在指令周期开始时同时申请中断,那么内部查询序列确定中断请求响应顺序。
中断优先级
优先位
中断优先级
IPHx
IPLx
0
0
等级0(最低优先级)
0
1
等级1
1
0
等级2
1
1
等级3(最高优先级)
Table 7.41 中断优先级控制寄存器
B8H,B4H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
IPL0
-
PADCL
PT2L
PSL
PT1L
PX1L
PT0L
PX0L
IPH0
-
PADCH
PT2H
PSH
PT1H
PX1H
PT0H
PX0H
读/写
-
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
0
0
0
0
0
0
0
B9H,B5H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
IPL1
PSCML
PPWML
PMCML
PT3L
PX4L
PCMP2L
PCMP1L
-
IPH1
PSCMH
PPWMH
PMCMH
PT3H
PX4H
PCMP2H
PCMP1H
-
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
-
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
-
位编号
位符号
-
PxxxL/H
说明
相应中断源xxx优先级选择
52
SH79F1615
7.9.6 中断处理
中断标志在每个机器周期都会被采样获取。所有中断都在时钟的上升沿被采样。如果一个标志被置起,那么CPU捕获到后
中断系统调用一个长转移指令(LCALL)调用其中断服务程序,但由硬件产生的LCALL会被下列任何条件阻止:
同级或更高级的优先级中断在运行中。
当前的周期不是执行中指令的最后一个周期。换言之,正在执行的指令完成前,任何中断请求都得不到响应。
正在执行的是一条RETI或者访问专用寄存器IEN0\1或是IPL\H的指令。换言之,在RETI或者读写IEN0\1或是IPL\H之后,不
会马上响应中断请求,而至少在执行一条其它指令之后才会响应。
注意:因为更改优先级通常需要2条指令,在此期间,建议关闭相应的中断以避免在修改优先级过程中产生中断。如果当模
块状态改变而中断标志不再有效时,将不会响应此中断。每一个轮询周期只查询有效的中断请求。
轮询周期/LCALL次序如下图所示:
C1
C2
Interrupt
Polled
C3
C3~Cn
Interrupt
Signal
Generated
Interrupt
Pending
Cn~Cn+7
Long Call to
Interrupt Vector Service
Cn+8
Interrupt
service
Interrupt
Latched
中断响应时间
由硬件产生的LCALL把程序计数器中的内容压入堆栈(但不保存PSW),然后将相应中断源的向量地址(参照中断向量表)
存入程序计数器。
中断服务程序从指定地址开始,到RETI指令结束。RETI指令通知处理器中断服务程序结束,然后把堆栈顶部两字节弹出,
重载入程序计数器中,执行完中断服务程序后程序回到原来停止的地方。RET指令也可以返回到原来地址继续执行,但是中断
优先级控制系统仍然认为一个同一优先级的中断被响应,这种情况下,当同一优先级或低优先级中断将不会被响应。
7.9.7 中断响应时间
如果检测出一个中断,这个中断的请求标志位就会在被检测后的每个机器周期被置起。内部电路会保持这个值直到下一个
机器周期,CPU会在第三个机器周期产生中断。如果响应有效,条件允许,在下一个指令执行的时候硬件LCALL指令将调用请
求中断的服务程序,否则中断被挂起。LCALL指令调用程序需要7个机器周期。因而,从外部中断请求到开始执行中断程序中的
第一条指令至少需要3+7个完整的机器周期。
当请求因前述的的三个情况受阻时,中断响应时间会加长。如果同级或更高优先级的中断正在执行,额外的等待时间取决
于正执行的中断服务程序的长度。
如果正在执行的指令还没有进行到最后一个周期,假如正在执行RETI指令,则完成正在执行的RETI指令,需要8个周期,
加上为完成下一条指令所需的最长时间20个机器周期(如果该指令是16位操作数的DIV,MUL指令),若系统中只有一个中断
源,再加上LCALL调用指令7个机器周期,则最长的响应时间是2+8+20+7个机器周期。
所以,中断响应时间一般大于10个机器周期小于37个机器周期。
53
SH79F1615
7.9.8 外部中断输入
SH79F1615有3个外部中断输入。外部中断0-1分别有一个独立的中断源,外部中断4有8个中断源共用一个中断矢量地址。
外部中断0/1可以通过设置TCON寄存器的IT1,IT0位来选择是电平触发或是边沿触发。当ITx = 0(x = 0,1)时,外部中断INTx
(x = 0,1)引脚为低电平触发;当ITx(x = 0,1)= 1,外部中断INTx(x = 0,1)为沿触发,在这个模式中,如果采样到一
个系统时钟周期内INTx(x = 0,1)引脚上采样为高电平而下个系统时钟周期采样为低电平,TCON寄存器的中断请求标志位置
1,发出一个中断请求。由于外部中断引脚每个机器周期采样一次,输入高或低电平应当保持至少1个机器周期以确保能够被正
确采样到。
如果外部中断为下降沿触发,外部中断源应当将中断脚至少保持1个机器周期高电平,然后至少保持1个机器周期低电平。
这样就确保了边沿能够被检测到以使IEx置1。当调用中断服务程序后,CPU自动将IEx清0。
如果外部中断为低电平触发,外部中断源必须一直保持请求有效,直到产生所请求的中断为止,此过程需要2个系统时钟周
期。如果中断服务完成后而外部中断仍旧维持,则会产生下一次中断。当中断为电平触发时不必清除中断标志IEx(x = 0,1),
因为中断只与输入口电平有关。
外部中断4除了具有更多的中断触发方式外,与外部中断0,1操作类似。
当SH79F1615进入空闲或是掉电模式,中断会唤醒处理器继续工作,详见电源管理章节。
注意:外部中断0-1的中断标志位在执行中断服务程序时被自动硬件清0,但外部中断4标志位IF40-47必须要软件清0。
>1 machine Cycle
High-Level Threshold
Low-Level Threshold
>1 machine Cycle
Low-Level Threshold
>1 machine Cycle
外部中断探测
7.9.9 中断汇总
中断源
向量地址
允许位
标志位
轮询优先级
Reset
0000H
-
-
0(最高级)
中断号(c 语言)
INT0
0003H
EX0
IE0
1
0
Timer0
000BH
ET0
TF0
2
1
INT1
0013H
EX1
IE1
3
2
Timer1
001BH
ET1
TF1
4
3
EUART
0023H
ES
RI+TI
5
4
Timer2
002BH
ET2
TF2
6
5
ADC
0033H
EADC
ADCIF/ADGIF/ADLIF
7
6
CMP1
0043H
ECMP1
C1IF
8
8
CMP2
004BH
ECMP2
C2IF
9
9
INT4
0053H
EX4+IENC
IF4X
10
10
Timer3
005BH
ET3
TF3
11
11
MCM
0063H
EMCM+PWMP/0/1/2IE
PWMP/0/1/2IF
12
12
PWM3
006BH
EPWM3+PWM3IE
PWM3IF
13
13
SCM
0073H
ESCM
SCMIF
14
14
54
SH79F1615
8. 增强功能
8.1 电机控制模块MCM(Motor Control Module)PWM0/1/2
8.1.1 特性
重要寄存器受保护寄存器PWMRLDEN控制
16位时基计数器
三种时基计数模式:边沿对齐计数、中心对齐计数和单次计数模式
两种波形输出模式:互补模式与独立模式
提供PWM周期匹配、归零匹配和占空比比较匹配中断
3路互补PWM输出或6路独立PWM输出,输出极性可选择
提供故障检测功能可紧急关闭PWM输出
提供寄存器重载使能位以保证寄存器重载同步
4档预分频/后分频功能
可切换手动控制PWM输出
可选择自动触发Timer或ADC转换
SH79F1615内建一个16位电机控制PWM模块。PWM模块由时基模块(PWM Time Base Block)、波形发生模块(Wave
Generator)、死区&极性控制模块(Dead&Polarity Logic)、故障检测(Fault Detect Logic)以及输出控制模块(Output Control
Logic)组成,如图8-1-1所示。
时基模块中通过一个16位计数器(PWM Counter)对PWM时钟(PWM Clock)计数,用该计数器的值与周期寄存器和0比
较以产生周期匹配信号与归零信号、与占空比寄存器比较以产生占空比匹配信号,结合波形发生模块产生原始的六路PWM信号
Px_O/Px1_O,该原始PWM信号经过死区&极性控制模块后产生带死区和极性的PWM信号Px_D/Px1_D,最后的输出控制模块
和故障检测模块决定是否将Px_D/Px1_D信号输出至PWM引脚PWMx/PWMx1上。
System Clock
PTCON[PTCLK]
Pre-Counter
Logic
BUFFER
x=0,1,2
PWMP
BUFFER
PTCON[PTMOD]
FLTCON
Output of
Comparator
PWM0/01 Wave
Generator
PWMCON2[PMODx]
PWM0D/PWM01D
PWM Counter
Fault Detect
Logic
PWMCON1[PWMx/x1S]
BUFFER
16
Period
Compare
Fault_Signal
P0_D
P0_O
Duty
Compare
Duty
Compare
BUFFER
FLT
PWM0/01 Dead
&Polarity Logic
P01_O
PWM0
P01_D
PWM01
PWMP
P1_D
P1_O
Gated&Scaled Reload Signal
PWM1/11 Wave
Generator
PWM1/11 Dead
&Polarity Logic
P11_O
P11_D
Output
Control
Logic
Period Match
Zero Match
P2_D
P2_O
Post
Counter
Scaled
Period Match
Scaled
Zero Match
PWM2/21 Wave
Generator
6
PWM2/21 Dead
&Polarity Logic
P21_O
PWM21
Duty Match
Interrupt
Control
PWMINT1/2/3
PTCON[POSTPS]
ADC Triger
Logic
PWMOE
PMANUALCON1/2
PWMDT0&1
图8-1-1 PWM模块简图
55
PWMCON2[OSYNC]
ADC Trigger Signal
TIM Triger
Logic
PWM11
PWM2
P21_D
BUFFER
PWM Time
Base Block
PWM1
Timer Trigger Signal
SH79F1615
8.1.2 寄存器
MCM模块所使用寄存器如下:
功能
PWM计数器时钟
(时基)设置
PWM控制寄存器
PWM输出控制
名称
PTCON
PWMCON1
设置PWM波形的输出极性及输出模式(互补/独立)
PWMCON2
PWM触发事件的使能以及死区方式选择
PWMOE
设置PWM引脚输出PWM模块产生的信号或者作为普通IO口
PMANUALCON1
设置PWM模块输出PWM波形或直接输出PMANUALCON2中定义的电平
PMANUALCON2
定义PWM模块直接输出的电平
PWMDT0L
PWM死区控制
PWMDT0H
PWMDT1L
PWMDT1H
故障检测保护
PWM中断
寄存器重载使能控制
PWM周期寄存器
设置PWM原始波形上升沿触发死区时间(注1)
设置PWM原始波形下降沿触发死区时间(注1)
FLTCON
设置故障保护功能
PWMINTEN
PWM中断使能位控制
PWMINTF
PWM中断标志位
PWMRLDEN
禁止/使能占空比寄存器/周期寄存器/PWM时基预分频的重载
PWMPL
PWMPH
PWM0DL
PWM0DH
PWM01DL
PWM01DH
PWM1DL
PWM占空比寄存器
寄存器描述
设置PWM时基的预分频、PWM模块中控制信号的后分频以及PWM计数器
的运行模式
PWM1DH
PWM11DL
PWM11DH
PWM2DL
PWM2DH
PWM21DL
PWM21DH
16位周期寄存器
16位占空比寄存器,用于产生通道0的原始PWM波形
16位占空比寄存器,只在独立模式下用到,用于产生独立模式下通道01
(注1)
的原始PWM波形
16位占空比寄存器用于产生通道1的原始PWM波形
16位占空比寄存器,只在独立模式下用到,用于产生独立模式下通道11
(注1)
的原始PWM波形
16位占空比寄存器用于产生通道2的原始PWM波形
16位占空比寄存器,只在独立模式下用到,用于产生独立模式下通道21
的原始PWM波形
注 1 : 由 于 独 立 模 式 下 不 需 要 死 区 , 因 此 PWM01DL/PWM01DH 和 PWMDT0L/PWMDT0H 共 用 寄 存 器 地 址 ,
PWM11DL/PWM11DH和PWMDT1L/PWMDT1H共用寄存器地址。
56
SH79F1615
Table 8.1 PWM时基控制寄存器
CFH
第7位
第6位
第5位
第4位
第3位
第2位
PTCON
-
-
PTMOD1
PTMOD0
PTCLK1
PTCLK0
读/写
-
-
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
0
0
0
0
0
0
位编号
5-4
3-2
1-0
位符号
第1位
第0位
POSTPS1 POSTPS0
说明
PTMOD[1:0]
PWM0/1/2时基模块中PWM计数器工作模式选择位段
00:边沿对齐计数模式,在此模式下,时基计数器只会发生归零匹配
01:中心对齐计数模式,在此模式下,时基计数器会发生归零匹配和周期匹配
1x:单次计数模式,在此模式下,时基计数器只会发生归零匹配
PTCLK[1:0]
PWM时基预分频系数选择位段
00:PWM计数器时钟 = 系统时钟/1
01:PWM计数器时钟 = 系统时钟/2
10:PWM计数器时钟 = 系统时钟/4
11:PWM计数器时钟 = 系统时钟/8
POSTPS[1:0]
后分频系数选择位段
00:无后分频功能
01:中断、重载信号与事件触发信号将2分频
10:中断、重载信号与事件触发信号将4分频
11:中断、重载信号与事件触发信号将8分频
Table 8.2 PWM周期寄存器低位
第7位
DAH
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWMPL
PP.7
PP.6
PP.5
PP.4
PP.3
PP.2
PP.1
PP.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
PP.7 - PP.0
说明
PWM周期控制寄存器低8位
Table 8.3 PWM周期寄存器高位
DBH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWMPH
PP.15
PP.14
PP.13
PP.12
PP.11
PP.10
PP.9
PP.8
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
PP.15 - PP.8
说明
PWM周期控制寄存器高8位
57
SH79F1615
Table 8.4 PWM模块控制寄存器1
D9H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWMCON1
POUTMOD
-
PWM21S
PWM11S
PWM01S
PWM2S
PWM1S
PWM0S
读/写
读/写
-
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
-
0
0
0
0
0
0
位编号
位符号
说明
7
POUTMOD
5
PWM21S
PWM21输出有效电平(Active Polar)选择位
0:PWM21占空比期间输出低电平,其余时间输出高电平
1:PWM21占空比期间输出高电平,其余时间输出低电平
4
PWM11S
PWM11输出有效电平(Active Polar)选择位
0:PWM11占空比期间输出低电平,其余时间输出高电平
1:PWM11占空比期间输出高电平,其余时间输出低电平
3
PWM01S
PWM01输出有效电平(Active Polar)选择位
0:PWM01占空比期间输出低电平,其余时间输出高电平
1:PWM01占空比期间输出高电平,其余时间输出低电平
2
PWM2S
PWM2输出有效电平(Active Polar)选择位
0:PWM2占空比期间输出高电平,其余时间输出低电平
1:PWM2占空比期间输出低电平,其余时间输出高电平
1
PWM1S
PWM1输出有效电平(Active Polar)选择位
0:PWM1占空比期间输出高电平,其余时间输出低电平
1:PWM1占空比期间输出低电平,其余时间输出高电平
0
PWM0S
PWM0输出有效电平(Active Polar)选择位
0:PWM0占空比期间输出高电平,其余时间输出低电平
1:PWM0占空比期间输出低电平,其余时间输出高电平
PWM0/1/2输出模式(独立/互补)控制位
0:整个模块配置为3通道互补输出
1:整个模块配置为6路独立输出
58
SH79F1615
Table 8.5 PWM模块控制寄存器2
BFH
第7位
第6位
第5位
第4位
第3位
PWMCON2
-
ZETIM
PEAD
ZEAD
PDLDEN
-
DT1
DT0
读/写
-
读/写
读/写
读/写
读/写
-
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
0
0
0
0
-
0
0
位编号
6
5
4
3
1-0
位符号
第2位
第1位
说明
ZETIM
PWM时基计数器启动Timer2使能位
0:PWM模块不会触发启动Timer2
1:中心对齐模式下,PWM时基计数器周期匹配时启动Timer2
边沿对齐或单次模式下,PWM时基计数器归零时刻启动Timer2
(Timer2工作在单次触发模式下,上述设置才有效)
PEAD
PWM时基计数器与周期寄存器匹配时刻启动AD转换使能位
(只在中心对齐模式下有效)
0:PWM模块周期匹配时刻不会触发启动AD
1:PWM时基计数器与周期寄存器匹配时刻启动AD
(ADC的ADON和PWMTRGEN位置1的情况下)
ZEAD
PWM时基计数器归0时刻启动AD转换使能位
0:PWM模块归0时刻不会触发启动AD
1:PWM时基计数器归0时刻启动AD
(ADC的ADON和PWMTRGEN位置1的情况下)
PDLDEN
DT[1:0]
第0位
PWM计数器周期匹配时重载占空比死区寄存器使能位(只在中心对齐模式下有效)
0:周期匹配时刻不允许重载占空比寄存器和死区寄存器
以及死区方式选择位段DT[1:0]
1:周期匹配时刻允许重载占空比寄存器和死区寄存器
以及死区方式选择位段DT[1:0]
注:1. 无论寄存器如何设置,周期匹配时不会重载PWM周期寄存器
2. 归0匹配时会自动重载周期寄存器、占空比寄存器、死区寄存器以及死区方式
选择位段DT[1:0],此重载动作不受任何寄存器控制
死区寄存器方式选择位段①
00:PWM0/1/2的前死区由PWMDT0设置;
PWM0/1/2的后死区由PWMDT1设置
01:PWM1/2的前死区和后死区都由寄存器PWMDT0设置;
PWM0的前死区和后死区都由寄存器PWMDT1设置
10:PWM0/2的前死区和后死区都由寄存器PWMDT0设置;
PWM1的前死区和后死区都由寄存器PWMDT1设置
11:PWM0/1的前死区和后死区都由寄存器PWMDT0设置;
PWM2的前死区和后死区都由寄存器PWMDT1设置
注①:DT[1:0]只在互补模式下有效,因为在独立模式下无死区。PWM0/1/2的前死区只会影响PWM0、PWM1、PWM2的
输出波形;PWM0/1/2的后死区只会影响PWM01、PWM11、PWM21的输出波形,具体参见死区章节。
59
SH79F1615
Table 8.6 PWM0占空比控制寄存器低位
DCH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM0DL
PD0.7
PD0.6
PD0.5
PD0.4
PD0.3
PD0.2
PD0.1
PD0.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
PD0.7-PD0.0
说明
PWM0占空比寄存器低8位
Table 8.7 PWM0占空比控制寄存器高位
DDH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM0DH
PD0.15
PD0.14
PD0.13
PD0.12
PD0.11
PD0.10
PD0.9
PD0.8
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
PD0.15-PD0.8
说明
PWM0占空比寄存器高8位
Table 8.8 PWM1占空比控制寄存器低位
DEH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM1DL
PD1.7
PD1.6
PD1.5
PD1.4
PD1.3
PD1.2
PD1.1
PD1.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
PD1.7-PD1.0
说明
PWM1占空比寄存器低8位
Table 8.9 PWM1占空比控制寄存器高位
DFH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM1DH
PD1.15
PD1.14
PD1.13
PD1.12
PD1.11
PD1.10
PD1.9
PD1.8
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
PD1.15-PD1.8
说明
PWM1占空比寄存器高8位
Table 8.10 PWM2占空比控制寄存器低位
D2H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM2DL
PD2.7
PD2.6
PD2.5
PD2.4
PD2.3
PD2.2
PD2.1
PD2.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
PD2.7-PD2.0
说明
PWM2占空比寄存器低8位
60
SH79F1615
Table 8.11 PWM2占空比控制寄存器高位
D3H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM2DH
PD2.15
PD2.14
PD2.13
PD2.12
PD2.11
PD2.10
PD2.9
PD2.8
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
PD2.15-PD2.8
说明
PWM2占空比寄存器高8位
Table 8.12 PWM01占空比控制寄存器低位
D4H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM01DL
PD01.7
PD01.6
PD01.5
PD01.4
PD01.3
PD01.2
PD01.1
PD01.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
7-0
位符号
说明
PD01.7-PD01.0 PWM01占空比寄存器低8位
Table 8.13 PWM01占空比控制寄存器高位
D5H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM01DH
PD01.15
PD01.14
PD01.13
PD01.12
PD01.11
PD01.10
PD01.9
PD01.8
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
7-0
位符号
说明
PD01.15-PD01.8 PWM01占空比寄存器高8位
Table 8.14 PWM11占空比控制寄存器低位
D6H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM11DL
PD11.7
PD11.6
PD11.5
PD11.4
PD11.3
PD11.2
PD11.1
PD11.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
7-0
位符号
说明
PD11.7-PD11.0 PWM11占空比寄存器低8位
Table 8.15 PWM11占空比控制寄存器高位
D7H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM11DH
PD11.15
PD11.14
PD11.13
PD11.12
PD11.11
PD11.10
PD11.9
PD11.8
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
7-0
位符号
说明
PD11.15-PD11.8 PWM11占空比寄存器高8位
61
SH79F1615
Table 8.16 PWM21占空比控制寄存器低位
F9H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM21DL
PD21.7
PD21.6
PD21.5
PD21.4
PD21.3
PD21.2
PD21.1
PD21.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
7-0
位符号
说明
PD21.7- PD21.0 PWM21占空比寄存器低8位
Table 8.17 PWM21占空比控制寄存器高位
FAH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWM21DH
PD21.15
PD21.14
PD21.13
PD21.12
PD21.11
PD21.10
PD21.9
PD21.8
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
7-0
位符号
说明
PD21.15-PD21.8 PWM21占空比寄存器高8位
Table 8.18 PWM输出使能寄存器
EFH
第7位
第6位
PWMOE
PWMEN
-
读/写
读/写
-
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
-
0
0
0
位编号
第5位
第4位
第3位
第2位
第1位
第0位
PWM1OE
PWM0OE
读/写
读/写
读/写
0
0
0
PWM21OE PWM11OE PWM01OE PWM2OE
位符号
说明
MCM时基使能控制位(注:PWM0/1/2共用一个时基)
0:关闭MCM(PWM0/1/2)时基
1:打开MCM(PWM0/1/2)时基
7
PWMEN
5
PWM21OE
PWM21输出使能位
0:PWM21引脚作为普通I/O口
1:PWM21引脚作为PWM输出口,输出PWM波形或POUT21定义的电平
4
PWM11OE
PWM11输出使能位
0:PWM11引脚作为普通I/O口
1:PWM11引脚作为PWM输出口,输出PWM波形或POUT11定义的电平
3
PWM01OE
PWM01输出使能位
0:PWM01引脚作为普通I/O口
1:PWM01引脚作为PWM输出口,输出PWM波形或POUT01定义的电平
2
PWM2OE
PWM2输出使能位
0:PWM2引脚作为普通I/O口
1:PWM2引脚作为PWM输出口,输出PWM波形或POUT2定义的电平
1
PWM1OE
PWM1输出使能位
0:PWM1引脚作为普通I/O口
1:PWM1引脚作为PWM输出口,输出PWM波形或POUT1定义的电平
0
PWM0OE
PWM0输出使能位
0:PWM0引脚作为普通I/O口
1:PWM0引脚作为PWM输出口,输出PWM波形或POUT0定义的电平
62
SH79F1615
Table 8.19 PWM0/1/2手动输出设置寄存器1
第7位
B6H
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PMANUAL PMANUAL PMANUAL PMANUAL PMANUAL PMANUAL
11
01
2
1
0
21
PMANUALCON1
-
-
读/写
-
-
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
0
0
0
0
0
0
位编号
位符号
说明
2-0
PMANUALx
x = 0-2
PWMx口输出控制位(只有当PWMxOE = 1时有效,修改立即生效)
0:PWMx口输出PWM波形
1:PWMx口输出由PMANUALCON2寄存器中的POUTx位控制
5-3
PMANUALx1
x = 0-2
PWMx1口输出控制位(只有当PWMx1OE = 1时有效,修改立即生效)
0:PWMx1口输出PWM波形
1:PWMx1口输出由PMANUALCON2寄存器中的POUTx1位控制
Table 8.20 PWM0/1/2手动输出设置寄存器2
B7H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PMANUALCON2
-
-
POUT21
POUT11
POUT01
POUT2
POUT1
POUT0
读/写
-
-
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
0
0
0
0
0
0
位编号
位符号
说明
5-3
POUTx1
x = 0-2
PMANUALx1 = 1时,决定PWMx1口的输出电平(修改立即生效)
0:输出0
1:输出1
2-0
POUTx
x = 0-2
PMANUALx = 1时,决定PWMx口的输出电平(修改立即生效)
0:输出0
1:输出1
注意:必须先写PMANUALCON2寄存器,后写PMANUALCON1寄存器。
63
SH79F1615
Table 8.21 PWM0/1/2故障检测保护寄存器
D1H
第7位
第6位
第5位
第4位
第3位
第2位
FLTCON
FLT1EN
FLT1SEL
FLT2EN
FLT2S
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
FLT2DEB1 FLT2DEB0
第1位
第0位
FLTM
FLTSTAT
读/写
读/写
0
0
位编号
位符号
7
FLT1EN
故障检测1功能控制位(注1)
0:故障检测1功能禁止
1:故障检测1功能打开,输入源可以选择比较器1或比较器2
6
FLT1SEL
故障检测1输入源选择控制位
0:比较器1滤波后的输出作为PWM故障检测1输入源,高电平有效
1:比较器2滤波后的输出作为PWM故障检测1输入源,高电平有效
5
FLT2EN
故障检测2功能控制位(注1)
0:故障检测2功能禁止
1:故障检测2功能打开,输入源为FLT引脚
4
FLT2S
3-2
FLT2DEB[1:0]
说明
故障检测2有效电平选择位
0:故障检测2 FLT输入高电平有效
1:故障检测2 FLT输入低电平有效
故障检测2输入滤波参数选择
00:无滤波
01:滤波时间常数为1us
10:滤波时间常数为4us
11:滤波时间常数为16us
注:上述滤波常数时间不是精确值,仅供参考
1
0
FLTM
FLTSTAT
检测功能模式选择
0:锁存模式,当检测到故障输入有效,FLTSTAT 被硬件置1,PWM将立即停止
输出,当故障输入变为无效时状态保持不变,只有当FLTSTAT被软件清零后,
PWM波形才会在PWM时基计数器归0时刻恢复输出。(当故障输入一直有效
时FLTSTAT无法被软件清除)
1:逐次模式,PWM输出直接由故障检测输入端来控制,如果故障输入有效,
FLTSTAT被硬件置1,立即关闭PWM输出。如果故障输入变为无效,FLTSTAT
自动清0,PWM0/1/2波形将在PWM时基计数器归0时刻自动恢复输出
故障检测标志位
0:PWM0/1/2模块处于正常输出状态
1:出现过流,PWM0/1/2模块处于停止输出状态,如果在锁存模式,
可软件清0,恢复PWM输出
注1:故障检测输入1和2可同时打开,任一信号有效都会关闭PWM0/1/2模块输出。
64
SH79F1615
Table 8.22 PWM中断使能控制寄存器
BEH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWMINTEN
PWMPIE
PWMZIE
PTDD2IE
PTUD2IE
PTDD1IE
PTUD1IE
PTDD0IE
PTUD0IE
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
说明
7
PWMPIE
PWM时基周期匹配中断允许位(只在中心对齐模式下有效)
0:禁止PWM时基周期匹配中断
1:允许PWM时基周期匹配中断
6
PWMZIE
PWM时基归零中断允许位
0:禁止PWM时基归零中断
1:允许PWM时基归零中断
5
PTDD2IE
PWM时基计数器减计数时与占空比寄存器PWM2DL/H匹配时中断使能位
(只在中心对齐模式下有效)
0:禁止PWM计数器减计数时与PWM2DL/H匹配时触发中断
1:允许PWM计数器减计数时与PWM2DL/H匹配时触发中断
4
PTUD2IE
PWM时基计数器增计数时与占空比寄存器PWM2DL/H匹配时中断使能位
0:禁止PWM计数器增计数时与PWM2DL/H匹配时触发中断
1:允许PWM计数器增计数时与PWM2DL/H匹配时触发中断
3
PTDD1IE
PWM时基计数器减计数时与占空比寄存器PWM1DL/H匹配时中断使能位
(只在中心对齐模式下有效)
0:禁止PWM计数器减计数时与PWM1DL/H匹配时触发中断
1:允许PWM计数器减计数时与PWM1DL/H匹配时触发中断
2
PTUD1IE
PWM时基计数器增计数时与占空比寄存器PWM1DL/H匹配时中断使能位
0:禁止PWM计数器增计数时与PWM1DL/H匹配时触发中断
1:允许PWM计数器增计数时与PWM1DL/H匹配时触发中断
1
PTDD0IE
PWM时基计数器减计数时与占空比寄存器PWM0DL/H匹配时中断使能位
(只在中心对齐模式下有效)
0:禁止PWM计数器减计数时与PWM0DL/H匹配时触发中断
1:允许PWM计数器减计数时与PWM0DL/H匹配时触发中断
0
PTUD0IE
PWM时基计数器增计数时与占空比寄存器PWM0DL/H匹配时中断使能位
0:禁止PWM计数器增计数时与PWM0DL/H匹配时触发中断
1:允许PWM计数器增计数时与PWM0DL/H匹配时触发中断
65
SH79F1615
Table 8.23 PWM中断标志寄存器
E8H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWMINTF
PWMPIF
PWMZIF
PTDD2IF
PTUD2IF
PTDD1IF
PTUD1IF
PTDD0IF
PTUD0IF
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7
PWMPIF
6
PWMZIF
说明
PWM时基周期匹配中断标志位(只在中心对齐模式下有效)
0:无PWM周期匹配中断
1:发生PWM周期匹配中断
PWM时基归零中断标志位
0:无PWM时基归零中断
1:发生PWM时基归零中断
5
PTDD2IF
PWM时基计数器减计数时与占空比寄存器PWM2DL/H匹配时中断标志位
(只在中心对齐模式下有效)
0:未发生中断或发生过但被PTUD2IF信号清0.
1:发生中断
4
PTUD2IF
PWM时基计数器增计数时与占空比寄存器PWM2DL/H匹配时中断标志位
0:未发生中断或发生过但被PTDD2IF信号清0.
1:发生中断
3
PTDD1IF
PWM时基计数器减计数时与占空比寄存器PWM1DL/H匹配时中断标志位
(只在中心对齐模式下有效)
0:未发生中断或发生过但被PTUD1IF信号清0.
1:发生中断
2
PTUD1IF
PWM时基计数器增计数时与占空比寄存器PWM1DL/H匹配时中断标志位
0:未发生中断或发生过但被PTDD1IF信号清0.
1:发生中断
1
PTDD0IF
PWM时基计数器减计数时与占空比寄存器PWM0DL/H匹配时中断标志位
(只在中心对齐模式下有效)
0:未发生中断或发生过但被PTUD0IF信号清0.
1:发生中断
0
PTUD0IF
PWM时基计数器增计数时与占空比寄存器PWM0DL/H匹配时中断标志位
0:未发生中断或发生过但被PTDD0IF信号清0.
1:发生中断
注意:
1. 即使PWM中断允许位为0,中断标志位也会置1,但中断不会响应。
2. PTDDxIF置1时,硬件会自动将PTUDxIF清零;同样,PTUDxIF置1时,硬件会自动将PTDDxIF清零;因此通过判断这两
个标志位可以判断目前PWM波形处在有效状态还是无效状态。
Table 8.24 PWM死区控制寄存器0的低位
D4H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWMDT0L
DT0.7
DT0.6
DT0.5
DT0.4
DT0.3
DT0.2
DT0.1
DT0.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
DT0.7-DT0.0
说明
PWM死区0控制寄存器低位
66
SH79F1615
Table 8.25 PWM死区控制寄存器0的高位
D5H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWMDT0H
-
-
-
-
DT0.11
DT0.10
DT0.9
DT0.8
读/写
-
-
-
-
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
-
-
0
0
0
0
位编号
位符号
3-0
DT0.11-DT0.8
说明
PWM死区0控制寄存器高位
Table 8.26 PWM死区控制寄存器1的低位
D6H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWMDT1L
DT1.7
DT1.6
DT1.5
DT1.4
DT1.3
DT1.2
DT1.1
DT1.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
DT1.7-DT1.0
说明
PWM死区1控制寄存器低位
Table 8.27 PWM死区控制寄存器1的高位
D7H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWMDT1H
-
-
-
-
DT1.11
DT1.10
DT1.9
DT1.8
读/写
-
-
-
-
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
-
-
0
0
0
0
位编号
位符号
3-0
DT1.11-DT1.8
说明
PWM死区1控制寄存器高位
Table 8.28 PWM定时器锁定寄存器
E7H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PWMRLDEN
RLDEN.7
RLDEN.6
RLDEN.5
RLDEN.4
RLDEN.3
RLDEN.2
RLDEN.1
RLDEN.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
说明
寄存器修改和重载控制寄存器
0x55:允许软件对模块寄存器的修改
0xAA:允许模块带缓冲的寄存器的重载
注:
7-0
RLDEN.7-0
1. PWM 模 块 的 寄 存 器 , 除 了 中 断 标 志 寄 存 器 PWMINTF 和 手 动 控 制 寄 存 器
PMANUALCON2外,其它寄存器的修改有限制条件,只有当PWMRLDEN = 0x55
时才允许软件修改,否则修改无效
2. PWM模块中有一些寄存器带有缓冲寄存器,包括占空比寄存器、周期寄存器和
PWM时钟预分频寄存器位段PTCLK[1:0]、死区寄存器、以及死区模式选择位段
DT[1:0]。这些寄存器在软件修改后不会立即生效,只有在归零或周期溢出时硬件
重载,才会真正生效。是否允许这些寄存器重载同样受控制,只有当PWMRLDEN
= 0xAA时才允许重载
67
SH79F1615
8.1.3 PWM0/1/2时基模块(PWM Time Base Block)
PWM模块中的时基模块(Time Base Block)主要由一个16位的计数器结合一个预分频器和一个后分频器组成。如图8-1-1
所示,波形发生器(Wave Generator)用时基模块中16位计数器的值与占空比寄存器比较并结合死区/极性逻辑(Dead&Polarity
Logic)和输出控制逻辑(Output Control)最终产生PWM波形。图8-1-2给出了时基模块的逻辑简图。
PTMOD1/0
PWMEN
PWM Time Base Block
Clock Control
PWM Clock
System
Clock
Zero Match
Zero Detection
Reset Signal
Pre-Counter
1:1,1:2,1:4,1:8
16-Bit PWM Counter
BUFFER
Comparator
PTCON[PTCLK]
BUFFER
Dir Signal
PWM Counter
Control
Period Match
POSTPS
Post-Counter
1:1,1:2,1:4,1:8
PWMP
Scaled
Zero Match
Gated Reload
Scaled
Period Match
PWMRLDEN==0xAA
Scaled Zero Match
Scaled Period Match
Duty Resgiters Reload Signal
PWMCON2[PDLDEN]
图8-1-2 PWM时基逻辑简图
PWM工作时钟
PWM时钟(PWM Clock)由系统时钟(System Clock)分频而来,通过预分频器(Pre-Counter)由寄存器PTCON中的位
段[PTCLK1:PTCLK0]决定PWM模块时钟是系统时钟的1/1、1/2、1/4或1/8分频。
通过软件置位/清零PWMOE寄存器中的PWMEN位可以使能/禁止PWM时基模块。PWMEN位从0置1时,PWM计数器(PWM
Counter)开始对PWM时钟从0开始向上计数。PWMEN位清0时,预分频计数器和PWM计数器都将清0。
注意:任何器件复位都将导致PWM时钟预分频计数器和PWM计数器清零。
68
SH79F1615
PWM时基工作方式
PWM时基中16位的PWM计数器有3种工作方式,由PTCON寄存器中的[PMOD1:PMOD0]位段确定。
边沿对齐计数模式
设置PTCON中PMOD位段为00,时基模块中的PWM计数器将工作在边沿对齐计数模式下。此模式下,软件令PWMEN位置
1,PWM计数器将从0开始向上计数,直到与PWM周期寄存器PWMPL/H匹配,然后PWM计数器复位为0并继续向上计数,如此
往复。PWM计数器复位为0的时刻即归零时刻(Zero Match)。软件令PWMEN位清0,PWM Counter将停止计数并在下一个系
统时钟边沿复位为0并停止计数。如设置PWMPL/H = 5,则PWM计数器在此模式下的工作如图8-1-3所示。
4
PWMP = 5
3
3
2
2
1
PWM
Counter
Tsys
4
2
1
0
1
0
0
0
PWM Clock
PWMEN
Zero Match
PWMP represents PWMPH:PWMPL
Zero Match
图8-1-3 边沿对齐计数模式
中心对齐计数模式
设置PTCON中PMOD位段为01,时基模块中的PWM计数器将工作在中心对齐计数模式下。此模式下,软件令PWMEN位置
1,PWM计数器将从0开始向上计数,直到与PWM周期寄存器PWMPL/H匹配,然后PWM计数器开始向下计数直至归0,如此往
复。PWM计数器向下计数至零的时刻即归零时刻(Zero Match),PWM计数器与周期寄存器匹配时刻为周期匹配时刻(Period
Match)。软件令PWMEN位清0,PWM Counter将停止计数并在下一个系统时钟边沿复位为0并停止计数。如设置PWMPL/H =
5,则PWM计数器在此模式下的工作如图8-1-4所示。
Tsys
5
5
4
PWMP=5
3
4
4
3
2
1
0
3
2
2
1
PWM
Counter
3
1
0
0
PWM Clock
PWMEN
PWMP represents PWMPH:PWMPL
Peirod
Match
Zero Match
图8-1-4 中心对齐计数模式
69
4
Period
Match
SH79F1615
单次计数模式
设置PTCON中PMOD位段为10或11,时基模块中的PWM计数器将工作在单次计数模式下。此模式下,软件令PWMEN位
置1,PWM计数器将从0开始向上计数,直到与PWM周期寄存器PWMPL/H匹配时,PWM计数器复位为0,同时PWMEN位将由
硬件清0,PWM输出高阻状态。PWM计数器复位为0的时刻即归零时刻(Zero Match)。
PWM计数器向上计数过程中若软件令PWMEN位清0,则PWM Counter将在下一个系统时钟边沿复位为0并停止计数。如设
置PWMPL/H = 5,则PWM计数器在此模式下的工作如图8-1-5所示。
Tsys
4
PWMP = 5
3
2
2
1
PWM
Counter
1
0
0
PWM Clock
PWMEN
PWMP represents PWMPH:PWMPL
Zero Match
图8-1-5 单次计数模式
70
0
SH79F1615
后分频
当不需要每个周期更新PWM的占空比时,后分频将非常有用。如图8-1-2所示,PWM计数器运行时产生的周期匹配信号
(Period Match)和归零信号(Zero Match)经过后分频计数器(Post-Counter),可以实现1/1、1/2、1/4和1/8分频。通过寄
存器PTCON中的POSTPS位段可以选择以上四档后分频。令POSTPS = 0则禁止后分频,周期匹配信号和归零信号不会被分频。
首先,分频后的周期匹配信号(Scaled Period Match)和归零信号(Scaled Zero Match)结合PWMRLDEN寄存器值用于
控制周期寄存器PWMPL/H、预分频系数PTCON[PTCLK1:PTCLK0]以及占空比寄存器的重载。
其次,分频后的周期匹配信号(Scaled Period Match)和归零信号(Scaled Zero Match)可用于产生归零中断和周期匹配
中断,如图8-1-1所示。详见“时基中断”章节。
最后,分频后的周期匹配信号(Scaled Period Match)和归零信号(Scaled Zero Match)可用于触发ADC,Timer2。但在
中心对齐模式下触发timer2,只能用分频后的周期匹配信号触发;中心对其模式触发ADC,可以选择在分频后的周期匹配信号触
发,或分频后的归零信号触发,也可以同时选择两者。而在边沿对齐模式下,只能用分频后的归零信号触发。
但是,后分频只对周期匹配信号和归零信号有效,对占空比匹配时刻无效,比如,允许占空比中断和归零信号中断的情况
下,设置后分频为8分频时,归零信号进中断会在8个PWM周期后才进一次中断,而占空比匹配信号则任然会在每个PWM周期
触发中断。
时基中断
时基中断包括分频后的周期匹配信号所触发的周期中断和分频后的归零信号所触发的归零中断。分频后的周期匹配信号发
生时将令寄存器PWMINTF中的PWMPIF位置1,此时若PWMINTEN中的PWMPIE位为1则将触发周期中断;分频后的归零信号
发生时将令寄存器PWMINTF中的PWMZIF位置1,此时若PWMINTEN中的PWMZIE位为1则将触发归零中断。PWMPIF位和
PWMZIF位需由软件写0清除。
PTCON中POSTPS段等于0时,PWM计数器的周期匹配信号和归零信号不会被分频,故周期匹配信号每次发生时都将令
PWMPIF位置1,归零信号每次发生时都将令PWMZIF位置1。
PWM周期寄存器与预分频系数的自动重载
周期寄存器PWMPL和PWMPH都有一个缓存寄存器(BUFFER),用户能够读写PWMPL/H但不能操作其缓存寄存器,如
图8-1-2所示。PWM时基计数器运行时实际上是与周期寄存器的BUFFER进行比较以产生周期匹配信号。
PTCON寄存器中的PTCLK位段也有一个缓存寄存器(BUFFER),用户能够读写PTCLK位段但不能操作其缓存寄存器,
如图8-1-2所示。系统时钟实际上是利用预分频系数位段PTCLK的BUFFER进行分频以产生PWM时钟(PWM Clock)。
由于存在缓冲寄存器,因此对周期寄存器和分频比寄存器位的读写有特殊规定:
当PWMRLDEN寄存器的值设为0x55时,才允许对这些寄存器进行修改,然后只有当PWMRLDEN寄存器中的值设为0xAA
时,分频后的归零信号发生时才会将PWMPL和PWMPH寄存器和PTCLK位段锁存至对应的缓存寄存器(BUFFER)中,这样可
以避免寄存器修改过程中发生重载,也避免寄存器修改立即生效可能会出现毛刺。因此对上述寄存器的修改,必须要有对
PWMRLDEN寄存器的配合操作才能完成。
71
SH79F1615
8.1.4 PWM0/1/2波形发生模块
PWM波形发生模块指图8-1-1中的Wave Generator模块。波形发生模块使用PWM时基模块中PWM计数器的值与6个16位占
空比值进行比较,从而产生原始的6路PWM波形:P0_O、P01_O、P1_O、P11_O、P2_O和P21_O。该原始6路PWM波形信
号经过死区&极性逻辑和输出控制逻辑最终反映在6个PWM输出引脚上,如图8-1-1所示。
波形发生器的逻辑简图如图8-1-6所示。
PWMxD
PWMx/PWMx1
Wave Generator
PWMINTF[PTUDxIF]
x = 0~2
PWMINTF[PTDDxIF]
BUFFER
16 Bits data from
PWM Counter
Duty
Compare
Px_O
Duty
Compare
Px1_O
16
0
1
BUFFER
Duty Registers
Reload Signal
PWMCON2[PMODx]
PWMx1D
图8-1-6 波形发生器逻辑简图
PWM0/1/2输出模式
PWM模块中包含有3个波形发生模块,对应于3对PWM输出:PWM0/PWM01、PWM1/PWM11和PWM2/PWM21,如图8-1-1
所示。对于每对PWM输出可以分别配置为互补模式或独立模式。
互补输出模式
令PWMCON1寄存器中POUTMOD位为0,PWMx/PWMx1工作在互补状态,16位PWM计数器与占空比寄存器PWMxDL/H
比较以产生Px_O和Px1_O波形,因此PWMx和PWMx1引脚上最终输出的PWM波形使用的是同一占空比寄存器PWMxDL/H。在
互 补 输 出 模 式 下 , 可 由 寄 存 器 PWMCON1 设 置 PWMx/PWMx1 引 脚 上 输 出 波 形 的 极 性 、 并 可 由 寄 存 器 PWMDT0L/H 和
PWMDT1L/H设置死区(详见8.1.5节“PWM死区与极性控制模块”)。(x = 0 - 2)
独立输出模式
令PWMCON1寄存器中POUTMOD位为1,PWMx/PWMx1工作在独立状态,16位PWM计数器与占空比寄存器PWMxDL/H
比较以产生Px_O波形,16位PWM计数器与占空比寄存器PWMx1DL/H的值比较以产生Px1_O波形,因此PWMx和PWMx1引脚
上最终输出的PWM波形使用的是不同的占空比寄存器PWMxDL/H与PWMx1DL/H。在独立输出模式下,可由寄存器PWMCON1
设置PWMx/PWMx1引脚上输出波形的极性、但是寄存器PWMDT0L/H和PWMDT1L/H将无效,即独立输出模式下PWM的输出
无死区(详见8.1.5节“PWM死区与极性控制模块”)。(x = 0 - 2)
72
SH79F1615
边沿对齐计数模式下的PWM0/1/2原始波形
令PTCON中PTMOD = 00,将PWM时基设置为边沿对齐计数模式。在互补输出模式下,PWM原始输出波形Px_O和Px1_O
如图8-1-7所示。PWMEN置1后,Px_O和Px1_O波形变高,PWM计数器与占空比寄存器PWMxDL/H匹配后Px_O和Px1_O波形
将变低直至PWM计数器归零,如此往复。
4
PWMP = 5
Tsys
4
3
3
PWMxD = 4
2
PWMx1D = 2
2
1
PWM
Counter
2
1
0
1
0
0
0
PWM Clock
PWMEN
None-Duty Zone
Px_O/Px1_O
Duty Zone
PTUDxIF = 1
PTDDxIF= 0
PTUDxIF = 1
PTDDxIF= 0
PWMP represents PWMPH:PWMPL
PWMxD represents PWMxDH:PWMxDL
PWMx1D represents PWMx1DH:PWMx1DL
图8-1-7 边沿对齐计数、互补输出模式下的PWM原始波形
在独立输出模式下,PWM原始输出波形Px_O和Px1_O如图8-1-8所示。PWMEN置1后,Px_O和Px1_O波形变高,PWM计
数器与占空比寄存器PWMxDL/H匹配后Px_O波形将变低直至PWM计数器归零;PWM计数器与占空比寄存器PWMx1DL/H匹配
后Px1_O波形将变低直至PWM计数器归零,如此往复。
Tsys
4
4
PWMP = 5
3
3
PWMxD = 4
2
2
PWMx1D = 2
1
1
PWM
Counter
2
1
0
0
0
PWM Clock
PWMEN
Px_O
Duty Zone
None-Duty
Zone
Px1_O
PTUDxIF = 1
PTDDxIF= 0
PTUDxIF = 1
PTDDxIF= 0
PWMP represents PWMPH:PWMPL
PWMxD represents PWMxDH:PWMxDL
PWMx1D represents PWMx1DH:PWMx1DL
图8-1-8 边沿对齐计数、独立输出模式下的PWM原始波形
73
0
SH79F1615
中心对齐计数模式下的PWM0/1/2原始波形
Tsys
5
5
4
PWMP=5
PWMxD = 4
4
3
2
2
3
2
1
1
PWM
Counter
4
4
3
3
1
0
0
0
PWM Clock
PWMEN
Px_O/Px1_O
None-Duty Zone
None-Duty Zone
Duty Zone
PTUDxIF = 0
PTDDxIF = 1
PTUDxIF = 1
PTDDxIF = 0
PTUDxIF = 1
PTDDxIF = 0
PWMP represents PWMPH:PWMPL
PWMxD represents PWMxDH:PWMxDL
PTUDxIF = 0
PTDDxIF = 1
图8-1-9 中心对齐计数、互补输出模式下的PWM原始波形
令PTCON中PTMOD = 01,将PWM时基设置为中心对齐计数模式。
在互补输出模式下,PWM原始输出波形Px_O和Px1_O如图8-1-9所示。PWMEN置1后,Px_O和Px1_O波形保持为高,PWM
计数器增计数时与PWMxDL/H匹配后Px_O和Px1_O波形将变低直至PWM计数器减计数时再次与PWMxDL/H匹配,如此往复。
Tsys
5
5
4
PWMP=5
PWMxD = 4
4
4
PWMx1D = 2
2
2
3
2
1
1
1
PWM
Counter
4
3
3
3
0
0
0
PWM Clock
PWMEN
Px_O
None-Duty Zone
Duty Zone
Px1_O
PTUDxIF = 1
PTDDxIF = 0
PTUDxIF = 0
PTDDxIF = 1
PTUDxIF = 1
PTDDxIF = 0
PTUDxIF = 0
PTDDxIF = 1
PWMP represents PWMPH:PWMPL
PWMxD represents PWMxDH:PWMxDL
PWMx1D represents PWMx1DH:PWMx1DL
图8-1-10 中心对齐计数、独立输出模式下的PWM原始波形
独立输出模式下,PWM原始输出波形Px_O和Px1_O如图8-1-10所示。PWMEN置1后,Px_O和Px1_O波形变高,PWM计
数器增计数时与PWMxDL/H匹配后Px_O波形将变低直至PWM计数器减计数时再次与PWMxDL/H匹配;PWM计数器增计数时与
PWMx1DL/H匹配后Px1_O波形将变低直至PWM计数器减计数时再次与PWMx1DL/H匹配,如此往复。
74
SH79F1615
单次计数模式下的PWM0/1/2原始波形
令PTCON中PTMOD = 10或11,将PWM时基设置为单次计数模式。在互补输出模式下,PWM原始输出波形Px_O和Px1_O
如图8-1-11所示。PWMEN置1后,Px_O和Px1_O波形变高,PWM计数器增计数时与PWMxDL/H匹配后Px_O和Px1_O波形将
变低。
Tsys
4
PWMP = 5
3
PWMxD = 4
2
PWMx1D = 2
2
1
PWM
Counter
1
0
0
0
PWM Clock
PWMEN
None-Duty
Zone
Px_O/Px1_O
Duty Zone
PTUDxIF = 1
PTDDxIF= 0
PWMP represents PWMPH:PWMPL
PWMxD represents PWMxDH:PWMxDL
PWMx1D represents PWMx1DH:PWMx1DL
图8-1-11 单次计数、互补输出模式下的PWM原始波形
在独立输出模式下,PWMEN置1后,Px_O和Px1_O波形变高,PWM计数器增计数时与PWMxDL/H匹配后Px_O波形将变
低;PWM计数器增计数时与PWMx1DL/H匹配后Px1_O波形将变低。
占空比寄存器的自动重载
如图8-1-6所示,6个占空比寄存器都带有对应的缓存寄存器(BUFFER),16位的PWM计数器实际上是与BUFFER比较从而
控制PWM原始波形的变化。用户能够读写6个占空比寄存器,却不能操作其对应的缓存寄存器。结合图8-1-2和图8-1-6可以看出。
由于存在缓冲寄存器,和周期寄存器一样,对占空比寄存器的读写有特殊规定:
当PWMRLDEN寄存器的值设为0x55时,才允许对占空比寄存器进行修改,然后只有当PWMRLDEN寄存器中中的值设为
0xAA时,分频后的归零信号发生时才会将占空比寄存器锁存至对应的缓存寄存器(BUFFER)中,这样可以避免寄存器修改过
程中发生重载,也避免寄存器修改立即生效可能会出现毛刺。因此对上述寄存器的修改,必须要有对PWMRLDEN寄存器的配合
操作才能完成。
另外,在中心对齐模式下,和周期寄存器不同,占空比寄存器除了可以用归零信号重载外,还可以用周期匹配信号重载,
如果将PWMCON2中PDLDEN位为1,则分频后的周期匹配信号也会将硬件自动将6个占空比寄存器锁存至对应的缓存寄存器中
(称之为重载)。
因此在边沿计数模式和单次计数模式下,由于时基模块只有归零匹配信号,故PWM计数器每次复位为0时都将发生一次占
空比寄存器的重载;中心对齐计数模式下,时基模块能产生归零匹配以及周期匹配信号,故PWM计数器每次复位为0以及与周
期寄存器匹配时都可以重载占空比寄存器。
占空比中断
PWM0/1/2时基计数器向上计数时,不论在何种模式,当计数值与占空比寄存器PWMxDL/H匹配时能够令PWMINTF寄存器
中PTUDxIF位置1,同时令PTDDxIF位清0,此时若PWMINTEN寄存器中的PTUDxIE位为1,则能够触发占空比中断,如图8-1-7/
图8-1-9所示。在中心对齐计数模式中,PWM时基计数器向下计数时,当计数值与PWMxDL/H匹配时能够令PWMINTF寄存器中
PTDDxIF位置1,同时令PTUDxIF位清0,此时若PWMINTEN寄存器中的PTDDxIE位为1,则能够触发占空比中断,如图8-1-9
所示。
注意:不论互补输出模式还是独立输出模式,占空比中断只是在 PWM 计数器与 PWMxDL/H 相关的比较时产生,与
PWMx1DL/H相关比较匹配时不会改变占空比中断标志。
75
SH79F1615
8.1.5 PWM死区与极性控制模块
如图8-1-1所示,波形发生器(Wave Generator)产生的PWM原始波形Px_O/Px1_O经过死区与极性控制模块(Dead&Polarity
Logic)产生最终的PWM波形Px_D/Px1_D。带有死区与极性的PWM信号Px_D/Px1_D由输出控制模块(Output Control Logic)
和故障检测模块(Fault Detect Logic)决定是否由引脚PWMx/PWMx1送出,(x = 0 - 2)。
当寄存器PWNCON2中的DT[1:0] = 00时死区与极性控制模块的逻辑简图如图8-1-12所示。
PWMDT0
PWMx/x1Dead & Polarity Logic
BUFFER
PWMCON1[PWMxS]
1
Px_O
Rising
Edge
Delay
1
Px_D
0
0
PWMCON1[POUTMOD]
Px1_O
Falling
Edge
Delay
0
1
1
Px1_D
0
PWMCON1[PWMxS]
BUFFER
PWMDT1
图8-1-12 死区与极性控制逻辑简图
PWM死区的实现
如图8-1-12所示,死区逻辑通过将PWM原始信号Px_O的上升和Px1_O的下降沿延迟一段时间而实现。PWMCON1寄存器
中POUTMOD位为1时,PWM原始信号Px_O/Px1_O不会经过死区逻辑,即PWMx/PWMx1引脚输出为独立模式时,无死区;
PWMCON1寄存器中POUTMOD位为0时,PWM原始信号Px_O/Px1_O将经过死区逻辑,即PWMx/PWMx1引脚为互补模式时,
将引入死区。死区时间由寄存器PWMDT0/1决定:
上升沿延迟时间(Rising Edge Delay)= PWMDT0 * TPWM CLOCK
下降沿延迟时间(Falling Edge Delay)= PWMDT1 * TPWM CLOCK
注意:只在PWMCON2中的DT[1:0] = 00的情况如此,其他情况请参照PWMCON2寄存器部分的描述。
在不同的极性设置下,插入死区后的PWM波形也将不同,详见“不同极性设置下带死区的PWM波”章节。
注意:PWMDT0 = 0时,原始PWM波形Px_O的上升沿不会触发延时;PWMDT1 = 0时,原始PWM波形Px1_O的下降沿也
不会触发延时。
PWM极性设置
为了有效说明PWM引脚上波形的极性,将一个PWM周期划分为“占空比时区(Duty Zone)”与“非占空比时区(None-Duty
Zone)”,各种时基计数模式下,占空比时区和非占空比时区的划分如图8-1-7 - 图8-1-11所示。由寄存器PWMCON1中的位
PWMxS/PWMx1S来决定占空比时区期间Px_D和Px1_D的电平。
PWMxS控制Px_D的极性。PWMxS = 0时,Px_D的占空比时区期间为高电平,非占空比时区期间为低电平;PWMxS = 1
时,Px_D的占空比时区期间为低电平,非占空比时区期间为高电平。
PWMx1S控制Px1_D的极性。PWMx1S = 0时,Px1_D的占空比时区期间为低电平,非占空比时区期间为高电平;PWMx1S
= 1时,Px1_D的占空比时区期间为高电平,非占空比时区期间为低电平。
结合图8-1-7 - 图8-1-11所示的PWM原始波形Px_O/Px1_O和图8-1-12可以清晰的反映死区与极性的实现。
76
SH79F1615
PWM死区和死区方式选择位段的自动重载
PWM死区也和占空比、周期一样,有自己的缓冲寄存器(BUFFER),自动重载功能类似于占空比的自动重载,可以在周
期匹配和归零信号发生时重载。对死区寄存器的修改也必须PWMRLDEN寄存器的值设为0x55时,然后只有当PWMRLDEN寄存
器中的值设为0xAA时,重载生效。
死区的方式选择位段DT[1:0]同样也有缓冲寄存器(BUFFER),自动重载功能类似于占空比的自动重载,可以在周期匹配
和归零信号发生时重载。对死区寄存器的修改也必须PWMRLDEN寄存器的值设为0x55时,然后只有当PWMRLDEN寄存器中的
值设为0xAA时,重载生效。
不同极性设置下带死区的PWM波形
图8-1-13给出了一对在DT[1:0] = 00时的PWM输出Px_D/Px1_D设置为互补输出模式,所有的极性组合下带有死区的波形。
One PWM Period
None-Duty
Zone
Duty Zone
None-Duty
Zone
Px_O
Px1_O
Px_O with Rising
Edge Delayed
DR
Px1_O with Falling
Edge Delayed
DF
CASE1:Default
Px_D,PWMxS=0
Px1_D,PWMx1S=0
CASE2
Px_D,PWMxS=0
Px1_D,PWMx1S=1
CASE3
Px_D,PWMxS=1
Px1_D,PWMx1S=0
CASE4
Px_D,PWMxS=1
Px1_D,PWMx1S=1
图8-1-13 不同极性设置下的死区波形
注:图中的DR表示前死区,DF表示后死区。上图是DT[1:0] = 00时的情况,DT[1:0]为其他值时的情况,可参考PWMCON2
寄存器部分的说明,这里就不再多阐述。
77
SH79F1615
PWM0/1/2输出控制与故障检测
PWM输出控制与故障检测模块(Output Control Logic & Fault Detect Logic)用于决定最终的PWM波形Px_D是否在PWMx
引脚上输出、Px1_D是否在PWMx1引脚上输出。输出控制与故障检测模块的逻辑简图如图8-1-14所示。
Fault Detect logic
Output of
Comparator1
FLTCON[FLT1EN]
FLTCON[FLT1SEL]
0
0
Output of
Comparator2
FLTCON[FLTM]
0
1
1
Fault
Dealing
logic
FLTCON[FLT2EN]
0
FLT PIN
FLTCON[FLTSTAT]
0
1
Fault_Signal
PTCON[PWMEN]
PWMOE[PWMyOE]
High Impedance
PMANUALCON2[POUTy]
Py_D
1
1
0
0
I/O
Output Control logic
PMANUALCON1[PMANUALy]
x stands for 0,1,2
y stands for 0 or 01 when x=0
y stands for 1 or 11 when x=1
y stands for 2 or 21 when x=2
图8-1-14 输出控制与故障检测逻辑简图
78
1
0
PWMy
SH79F1615
8.1.6 故障检测模块
PWM模块中有一个故障检测模块(Fault Detection logic),当FLTCON寄存器中FLT1EN位或FLT2EN位为1时,使能该模
块功能,若FLT1EN和FLT2EN都为0,则禁止该模块功能。PWM故障检测主要目的是:当故障发生时(比如过流)可以切断PWM
的输出,进入无效驱动状态(输出高阻态),进而达到保护外部功率器件的目的,由于它是由硬件控制,因此响应速度非常快。
故障检测模块的逻辑简图如图8-1-14所示,结合输出控制模块(Output Control Logic)能够实现前述的保护功能。
故障信号输入源的选择
可以选择比较器(1/2)的输出或FLT引脚输入作为故障检测输入信号,如图8-1-14所示。无论故障信号来自比较器1/2输出
或FLT,高电平为有效故障信号,即比较器输出由低变高时将自动切断PWM的输出。
如图8-1-14所示,若FLT1EN = 1,则比较器1或2的输出会作为故障检测输入信号。一旦比较器的输出变高,并保持滤波时
间(下节介绍),则六路PWM引脚PWMx/PWMx1立即输出高阻态(x = 0 - 2)。同理,若FLT2EN = 1,则FLT引脚输入作为
故障检测输入信号,一旦FLT引脚输入变高(FLT2S = 0时),并保持滤波时间,则六路PWM引脚PWMx/PWMx1立即输出高阻
态(x = 0 - 2)。如果FLT2EN = 0,则禁止FLT引脚的故障检测功能,FLT引脚作为普通IO使用(但比较器的故障检测功能不受
影响)。
当使用PWM模块来控制图8-1-15所示的逆变桥,六个管子为高电平驱动的功率管:设置PWMxS/PWMx1S = 0(x = 0 - 2),
则PWM0/1/2的输出在占空比时区期间为高电平,PWM01/11/21的输出在占空比时区期间为低电平(见“PWM极性的设置”章节),
设置PWMCON1寄存器中POUTMOD位为0,,即PWM0与PWM01互补输出、PWM1与PWM11互补输出、PWM2与PWM21互
补输出。使能故障检测后,若发生故障,则六路PWM立即输出高阻态。
PWM0
+
PWM1
PWM2
PWM11
PWM21
VDC
PWM01
图8-1-15 PWM控制逆变桥示例图
79
SH79F1615
FLT引脚上的信号与比较器输出信号的滤波
当 FLT2EN = 1 时 , FLT 引 脚 的 输 入 信 号 会 作 为 故 障 检 测 输 入 信 号 使 用 , 此 时 可 以 通 过 设 置 寄 存 器 FLTCON 中 的
FLT2DEB[1:0]位段来调整对此信号的滤波时间。FLT2DEB[1:0] = 0时,无滤波作用。当FLT2S = 1时,故障检测输入信号的电
平由低变高时立即触发保护;FLT2DEB[1:0] = 1 - 3时,可以将滤波时间设置为1us、4us、16us共3档,故障检测输入信号由低
变高时,高电平需要至少保持FLT2DEB[1:0]定义的时间长度,故障检测模块才认为故障检测输入信号的电平变高了,从而触发
保护;故障检测输入信号的电平由高变低时,低电平需要至少保持FLT2DEB[1:0]定义的时间长度,故障检测模块才认为FLT引
脚上的有效故障电平消失了,六路PWM的输出根据保护模式(下节介绍)动作。当FLT2S = 0时,FLT故障检测信号变为低电
平有效,情况与FLT2S = 1时相反。根据功率管的特性,恰当的设置滤波时间可以滤除故障检测输入信号上的噪声。
FLT1EN = 1时,可选比较器1、2的输出信号作为故障检测输入信号使用,当比较器输出由0变1时触发保护,此时比较器1、
2的输出滤波时间和算法分别在寄存器CMP1CON和CMP2CON2中设置。(详见运算放大器和比较器模块章节)
保护模式
有两种故障检测模式:锁存模式与逐次模式。
(1) 锁存模式
设置FLTCON寄存器中FLTM位为0将使能锁存模式。当故障检测模块探测到有效故障信号,六路PWM引脚PWMx/PWMx1
立即切换为高阻态。
若有效故障信号没有消失,六路PWM引脚PWMx/PWMx1将保持输出高阻态(x = 0 - 2),软件无法清除FLTSTAT标志位,
六路PWM引脚无法恢复正常输出。
当有效故障信号消失后,六路PWM引脚PWMx/PWMx1(x = 0 - 2)亦不会恢复正常输出,只有软件将FLTSTAT位清0后,
PWMx/PWMx1才会在FLTSTAT被清零之后的最近一次PWM计数器归0或与周期寄存器PWMPL/H的值匹配时恢复正常输出(边
沿对齐模式中,在PWM计数器归0时恢复输出;中心对齐模式中,在PWM计数器与周期寄存器PWMPL/H匹配或归0时恢复输出)。
(2) 逐次模式
设置FLTCON寄存器中FLTM位为1将使能逐次模式。在逐次模式下,PWMx/PWMx1引脚是否输出PWM波形直接由比较器
滤波后的输出信号控制。FLTSTAT位也都由滤波之后的故障信号直接控制,若滤波之后的故障信号为高,则FLTSTAT位为1;
若滤波之后的故障信号为低,则FLTSTAT位为0。
当故障检测模块探测到有效故障信号,六路PWM引脚PWMx/PWMx1立即输出高阻态(x = 0 - 2),FLTSTAT位亦会被硬
件置1。
若有效故障信号没有消失,六路PWM引脚PWMx/PWMx1将保持输出高阻态(x = 0 - 2),软件无法使得六路PWM引脚恢
复正常输出。
当有效故障信号消失后,六路PWM引脚PWMx/PWMx1(x = 0 - 2)会在有效故障信号消失后的最近一次PWM计数器归0
或与周期寄存器PWMPL/H的值匹配时自动恢复正常输出,FLTSTAT位也将归0。
80
SH79F1615
8.1.7 PWM输出控制模块
PWM输出引脚与IO功能复用
PWM引脚PWMx/PWMx1与IO功能复用(x = 0 - 2),由寄存器PWMOE控制。令PWMOE中的PWMxOE位为1,可以将PWMx
引脚设置为PWM输出功能,反之为IO功能;令PWMOE中的PWMx1OE位为1,可以将PWMx1引脚设置为PWM输出功能,反之
为IO功能。具体如图8-1-14所示。
手动控制PWM输出
当PWMxOE/PWMx1OE位为1,且PWMEN位为1时,若PMANUALCON1寄存器中的PMANUALx/PMANUALx1位为1,则
PWMx/PWMx1 引 脚 将 输 出 PMANUALCON2 寄 存 器 中 POUTx/POUTx1 位 的 值 ; 若 PMANUALCON1 寄 存 器 中 的
PMANUALx/PMANUALx1位为0,则PWMx/PWMx1引脚将输出PWM波形Px_D/Px1_D。此功能和PORT口的输出功能类似,唯
一的区别是,在手动控制PWM输出模式下,其输出会受到PWM故障检测输入信号控制,而在I/O输出模式下,不受该信号控制。
具体如图8-1-14所示。
更改PMANUALCON1和PMANUALCON2寄存器时,PWMx/PWMx1引脚输出的改变与系统时钟同步,输出状态改变立即生
效。
注意:无论PMANUALx/PMANUALx1是否为1,当寄存器PWMOE中的PWMxOE/PWMx1OE为0时,PWMx/PWMx1引脚都
将成为普通IO口。
时基停止时PWM引脚的输出
PTCON中PWMEN位为0时,时基模块将停止工作,同时若PWMOE中PWMxOE/PWMx1OE位为1,则PWMx/PWMx1引脚
将输出高阻态。具体如图8-1-14所示。
8.1.8 事件触发功能
PWM时基模块产生的分频后的归零信号(Scaled Zero Match)和分频后的周期匹配信号(Scaled Period Match)可以用
来触发启动ADC或者Timer2。
PWM计数器触发Timer2
若寄存器PWMCON2中的ZETIM位为1且Timer2工作在自动触发模式(TRG = 1),如果是中心对齐模式,则分频后的周期
匹配信号可以自动启动Timer2,如果是边沿对齐模式或单次模式,则是分频后的归零信号启动Timer2;若ZETIM = 0,则PWM
模块不会自动启动Timer2。见图8-1-1。
PWM0/1/2计数器触发ADC
若寄存器PWMCON2中的ZEAD = 1,则分频后的归零信号可以自动触发一次ADC序列的转换(如果ADC模块中的ADCON1
寄存器的ADON位和PWMTRGEN位被允许,将会启动一次序列转换);若ZEAD = 0,则归零信号不会自动触发ADC序列。若
寄存器PWMCON2中的PEAD = 1,则分频后的周期匹配信号可以自动触发一次ADC序列的转换(如果ADC模块中的ADCON1
寄存器的ADON位和PWMTRGEN位被允许,将会启动一次序列转换);若PEAD = 0,则周期匹配信号不会自动触发ADC序列。
PWM模块的中断总汇
PWM模块的中断包括时基模块产生的PWM计数器归零中断、PWM计数器值与周期寄存器匹配产生的周期中断(详见“时基
中断”章节)以及PWM计数器值与占空比寄存器PWMxDL/H(x = 0 - 2)匹配时产生的占空比中断(详见“占空比中断”章节)。
这些中断共享一个位于0063H地址的中断向量。
81
SH79F1615
8.1.9 注意事项
边沿对齐计数模式中占空比寄存器值为0或周期值
边沿对齐计数模式中,若占空比寄存器为0或周期值,则根据不同的极性设置,PWMx/PWMx1应输出占空比为0%或100%
的波形。令PWMOE = 0xBF、PWMDT0L/H = 0、PWMDT1L/H = 0在边沿对齐时基计数、互补输出模式下,不同占空比值的PWM
引脚输出的波形、中断标志触发位置、事件触发位置、寄存器重载位置如图8-1-16 - 图8-1-18所示。
注意:PWM时基Enable时刻,虽然时基计数器为0,但不会产生归零(zero match)信号,因此不会置PWMZIF标志,也
不会产生事件触发信号,而寄存器重载信号在PWMEN = 0时是立即发生的。
4
PWMP = 5
4
3
PWMOE = 0x3F
2
3
2
1
PWM
Counter
4
3
2
1
0
1
0
0
PWM Clock
PWMEN
PWMx(PWMxS=0)
High
Impedance
PWMxD = 3
PWMx1(PWMx1S=0)
PWMx(PWMxS=1)
None-Duty
Zone
PWMxD
PWMxD
PWMxD
PWMxD
PWMxD
PWMxD
PWMZIF = 1
Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/
1&PTCLK1/0
Triger Timer&ADC
PWMZIF = 1
Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/
1&PTCLK1/0
Triger Timer&ADC
High
Impedance
High
Impedance
PWMxD = 3
PWMx1(PWMx1S=1)
Duty Zone
High
Impedance
PWMxD represents PWMxDH:PWMxDL
PWMP represents PWMPH:PWMPL
x = 0~2
PTUDxIF = 1
PTDDxIF = 0
PTUDxIF = 1
PTDDxIF = 0
图8-1-16 边沿对齐计数、互补输出模式
82
PWMZIF = 1
Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/
1&PTCLK1/0
Triger Timer&ADC
PTUDxIF = 1
PTDDxIF = 0
SH79F1615
4
4
PWMP = 5
PWMOE = 0x3F
3
2
2
2
1
1
1
PWM
Counter
4
3
3
0
0
0
PWM Clock
PWMEN
PWMx(PWMxS=0)
High
Impedance
PWMxD = 0
PWMx1(PWMx1S=0)
None-Duty Zone
PWMx outputs 0
None-Duty Zone
PWMx1 outputs 1
High
Impedance
PWMZIF = 1
PWMZIF = 1
Reload PWMP&
Reload PWMP&
PWMx/x1D
PWMx/x1D
&DT[1:0]&PWMDT0/ &DT[1:0]&PWMDT0/
1&PTCLK1/0
1&PTCLK1/0
Triger Timer&ADC
Triger Timer&ADC
PWMZIF = 1
Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/
1&PTCLK1/0
Triger Timer&ADC
PWMxD represents PWMxDH:PWMxDL
PWMP represents PWMPH:PWMPL
x = 0~2
图8-1-17 边沿对齐计数、互补输出模式,占空比 = 0
4
PWMP = 5
4
3
PWMOE = 0x3F
2
3
2
1
PWM
Counter
4
3
2
1
0
1
0
0
PWM Clock
PWMEN
PWMx(PWMxS=0)
High
Impedance
PWMxD = PWMP
PWMx1(PWMx1S=0)
Duty Zone
PWMx outputs 1
Duty Zone
High
Impedance
PWMx1 outputs 0
PWMZIF = 1
Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/
1&PTCLK1/0
Triger Timer&ADC
PWMZIF = 1
Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/
1&PTCLK1/0
Triger Timer&ADC
PWMZIF = 1
Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/
1&PTCLK1/0
Triger Timer&ADC
PWMxD represents PWMxDH:PWMxDL
PWMP represents PWMPH:PWMPL
x = 0~2
图8-1-18 边沿对齐计数、互补输出模式,占空比 = 周期寄存器
83
SH79F1615
中心对齐计数模式中占空比寄存器值为0或周期值
中心对齐计数模式中,若占空比寄存器为0或周期值,则根据不同的极性设置,PWMx/PWMx1应输出占空比为0%或100%
的波形。令PWMOE = 0xBF、PWMDT0L/H = 0、PWMDT1L/H = 0在边沿对齐时基计数、互补输出模式下,不同占空比值的PWM
引脚输出的波形、中断标志触发位置、事件触发位置、寄存器重载位置如图8-1-19 - 图8-1-21所示。
特别注意:在中心对齐计数模式中,当占空比寄存器为0或周期值时,占空比比较匹配中断标志不会置起。
5
5
4
4
PWMP=5
3
3
PWMOE = 0x3F
3
3
2
2
2
1
1
PWM
Counter
4
4
2
1
1
0
0
PWM Clock
PWMEN
PWMx(PWMxS=0)
High
Impedance
PWMxD = 2
None-Duty Zone
PWMxD PWMxD
PWMxD
PWMx1(PWMx1S=0)
High
Impedance
PWMx(PWMxS=1)
High
Impedance
None-Duty Zone
Duty Zone
PWMxD
PWMxD = 2
PWMx1(PWMx1S=1)
High
Impedance
PWMPIF=1
if(PDLDEN==1)
{Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/1}
&PTCLK1/0
Triger Timer&ADC
PWMxD represents PWMxDH:PWMxDL
PWMP represents PWMPH:PWMPL
x = 0~2
PTUDxIF = 1
PTDDxIF = 0
PWMPIF=1
if(PDLDEN==1)
{Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/1}
&PTCLK1/0
Triger Timer&ADC
PWMZIF = 1
Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT
0/1&PTCLK1/0
Triger Timer&ADC
PTUDxIF = 0
PTDDxIF = 1
PTUDxIF = 1
PTDDxIF = 0
PTUDxIF = 0
PTDDxIF = 1
PWMZIF = 1
Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMD
T0/1&PTCLK1/0
Triger Timer&ADC
图8-1-19 中心对齐计数、互补输出模式
5
5
4
PWMP=5
4
4
PWMOE = 0x3F
2
2
3
2
2
1
1
1
PWM
Counter
4
3
3
3
1
0
0
PWM Clock
PWMEN
PWMx(PWMxS=0)
High
Impedance
PWMxD = 0
PWMx1(PWMx1S=0)
Duty Zone, PWMx outputs 0
Duty Zone, PWMx1 outputs 1
High
Impedance
PWMxD represents PWMxDH:PWMxDL
PWMP represents PWMPH:PWMPL
x = 0~2
PWMPIF=1
if(PDLDEN==1)
{Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/1}
&PTCLK1/0
Triger Timer&ADC
PWMZIF = 1
Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/
1&PTCLK1/0
Triger Timer&ADC
PWMPIF=1
if(PDLDEN==1)
{Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/1}
&PTCLK1/0
Triger Timer&ADC
图8-1-20 中心对齐计数、互补输出模式、占空比 = 0
84
PWMZIF = 1
Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/
1&PTCLK1/0
Triger Timer&ADC
SH79F1615
5
4
PWMP=5
5
4
4
3
PWMOE = 0x3F
3
2
2
1
PWM
Counter
4
3
2
1
0
1
3
2
1
0
PWM Clock
PWMEN
PWMx(PWMxS=0)
High
Impedance
Duty Zone, PWMx outputs 1
High
Impedance
Duty Zone, PWMx1 outputs 0
PWMxD = PWMP
PWMx1(PWMx1S=0)
PWMxD represents PWMxDH:PWMxDL
PWMP represents PWMPH:PWMPL
x = 0~2
PWMPIF=1
if(PDLDEN==1)
{Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/1}
&PTCLK1/0
Triger Timer&ADC
PWMPIF=1
PWMZIF = 1
if(PDLDEN==1)
Reload PWMP&
{Reload
PWMP&
PWMx/x1D
PWMx/x1D
&DT[1:0]&PWMDT0/
&DT[1:0]&PWMDT0/1}
1&PTCLK1/0
&PTCLK1/0
Triger Timer&ADC
Triger Timer&ADC
PWMZIF = 1
Reload PWMP&
PWMx/x1D
&DT[1:0]&PWMDT0/
1&PTCLK1/0
Triger Timer&ADC
图8-1-21 中心对齐计数、互补输出模式、占空比 = 周期
周期寄存器值为0
不管时基计数器在何种模式,若周期寄存器为0,则根据不同的极性设置,PWMx/PWMx1应输出占空比为0%的波形。此时,
所有中断标志都不会产生,也不会产生事件触发信号,但重载信号会产生。
仿真状态的PWM输出
SH79F1615支持在线仿真,在仿真状态运行和正常状态运行没有区别,如果在仿真状态停止运行或单步运行,PWM输出会
切换为高阻态,保证不会误触发外部功率管。
进人IDLE模式,PWM0/1/2的波形输出状态
进入IDLE模式后,PWM输出口不受影响,比如PWM0口原先输出1K的方波,进入IDLE模式后会继续输出1K的方波,但是
如果设置了PWM0/1/2中断,会唤醒IDLE模式,继续执行IDLE后面的程序。
进人STOP模式,PWM0/1/2的波形输出状态
进入STOP模式后,PWM输出口会输出高阻状态,即使设置了PWM0/1/2中断,也不能唤醒掉电模式,掉电模式必须通过其
他方式唤醒,具体参考电源管理章节。
85
SH79F1615
8.1.10 代码示例
以下是输出PWM波形的一个简单示例程序:
#include "SH79f1615.h"/*代码选项选取单时钟源内部27MHZRC*/
void Pwm_Isr(void) interrupt 12 using 1
{
PWMINTF = 0;
PWMRLDEN = 0x55; //每次中断将PWM0占空比加1.
PWM0D16++;
PWMRLDEN = 0xAA;
}
void System_Initial()
{
CLKCON=0x00;
EA=1;
IEN1=0x20;
}
void Pwm_Initial()
{
PWMRLDEN=0x55;
//允许修改PWM受保护寄存器
PWMOE=0x3f;
//将6个I/O口设置为PWM输出口
PTCON=0x00;
//PWM输出为边沿对齐模式,且无分频
PWMCON1=0x00;
//PWM输出互补模式(PWM0与PWM01波形互补)
PWMP16=6000;
//PWM的周期设为6000sysclock
PWM0D16=0;
//PWM0占空比设置为0sysclock
PWM1D16=1000;
//PWM1占空比设置为1000sysclock
PWM2D16=3000;
//PWM2占空比设置为3000sysclock
PWMINTEN=0x40;
//PWM归零中断允许
PWMOE|=0x80;
//打开PWM总时基
PWMRLDEN=0xaa;
//将PWM带缓存的寄存器值载入(周期,占空比,死区等)
}
void main()
{
System_Initial();
Pwm_Initial();
while(1);
}
86
SH79F1615
8.2 运算放大器和比较器模块
8.2.1 特性
集成 1 个通用运算放大器,放大器的输入输出端都开放,放大器输出可直接作为 ADC 转换模块的输入或者做比较器的
同相输入端
比较器 2 为多输入比较器,并集成 PWM0/1/2 同步比较功能
比较器输出结果滤波后可以用作 PWM 故障检测输入信号
比较器 1/2 反相输入端参考信号可以从外部输入,也可以采用内部 1.20V 电源基准
比较器 2 内置施密特窗口和数字滤波电路,输出可触发不同类型中断
8.2.2 寄存器
Table 8.29 比较器1控制寄存器
B3H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
CMP1CON
CMP1EN
C1NCHS
C1OUT
C1IF
-
C1PCHS
C1DEB1
C1DEB0
读/写
读/写
读/写
读
读/写
-
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
-
0
0
0
位编号
位符号
7
CMP1EN
比较器1使能控制位
0:比较器1关闭
1:比较器1开启
6
C1NCHS
比较器1反相输入端选择位
0:选择C1N作为比较器1反相输入端
1:选择VBG内部1.20V基准源作为比较器1反相输入端
注:需提前100us将1.20V基准源打开,即将寄存器[CMP2CON1:BGEN]位置1,
详情参见CMP2CON1寄存器描述
5
C1OUT
4
C1IF
2
C1PCHS
1-0
C1DEB[1:0]
说明
比较器1输出状态标志位(表示经过滤波器以后的状态,只读)
0:比较器1输出低
1:比较器1输出高
比较器1输出上升沿中断标志位(经过滤波器以后)
0:比较器1输出无上升沿,没有产生中断
1:比较器1输出产生上升沿,发生中断请求
比较器1同相输入端选择位
0:选择C1P作为比较器1同相输入端
1:选择OP1OUT作为比较器1的同相输入端
比较器1输出信号滤波时间
00:无滤波
01:滤波时间常数为1us
10:滤波时间常数为4us
11:滤波时间常数为16us
注:上述滤波常数时间不是精确值,仅供参考
87
SH79F1615
Table 8.30 比较器2控制寄存器0
BBH
第7位
第6位
第5位
第4位
CMP2CON0
CMP2EN
C2NCHS
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
C2PCHS1 C2PCHS0
第3位
第2位
第1位
第0位
C2SMT1
C2SMT0
C2OUT
C2IF
读/写
读/写
读
读/写
0
0
0
0
位编号
位符号
7
CMP2EN
比较器2使能控制位
0:比较器2关闭
1:比较器2开启
C2NCHS
比较器2反相输入端选择位
0:选择C2N作为比较器2反相输入端
1:选择VBG内部1.20V基准源作为比较器2反相输入端
注:需提前100us将1.20V基准源打开,即将寄存器[CMP2CON1:BGEN]位置1,
详情参见CMP2CON1寄存器描述
6
5-4
C2PCHS[1:0]
3-2
C2SMT[1:0]
1
C2OUT
0
C2IF
说明
比较器2同相输入端选择位
00:选择C2P0作为比较器2同相输入端
01:选择C2P1作为比较器2同相输入端
10:选择C2P2作为比较器2同相输入端
11:保留
比较器2施密特电压选择位
00:没有施密特窗口特性
01:施密特窗口为5mv
10:施密特窗口为10mv
11:施密特窗口为20mv
比较器2输出状态标志位(表示经过滤波器以后的状态,只读)
0:比较器2输出低
1:比较器2输出高
比较器2中断标志位
0:比较器2没有产生中断请求标志
1:比较器2产生中断请求标志
注意:因为模拟比较器2有3个同相输入端外部端口,实际应用时,任意时刻只有一个输入端被选中,但另外2个输入端外接
的是模拟电平。此时需要将3个模拟输入端都配置为模拟输入口状态,否则会漏电;因为比较器2的同相输入端C2P0-2、负向输
入端C2N是和ADC的输入通道AN0-AN2、AN4是共享的,因此这四个端口配置为模拟通道或I/O必須并且只能在ADC模块中的寄
存器ADCH1配置,分别受CH0-CH2、CH4控制。
88
SH79F1615
Table 8.31 ADC通道配置寄存器1
第7位
95H
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADCH1
-
-
-
CH4
-
CH2
CH1
CH0
读/写
-
-
-
读/写
-
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
-
0
-
0
0
0
位编号
位符号
4,2-0
CH4,CH[2:0]
说明
通道配置
1:Pxy配置为模拟输入口(ADC输入或比较器2同相输入)
0:Pxy作为I/O口
注:此控制位只是用来配置相应PORT口是否做模擬口用,具体选中那一个输入
做比较,由寄存器C2PCHS[1:0]控制
Table 8.32 放大器 & 比较器2控制寄存器1
第7位
BCH
第6位
第5位
PWMTRGS1 PWMTRGS0 TRGPOL
CMP2CON1
第4位
第3位
第2位
第1位
第0位
BGEN
AMP1EN
-
C2IFS1
C2IFS0
读/写
读/写
读/写
读/写
读/写
读/写
-
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
-
0
0
位编号
7-6
5
4
位符号
说明
比较器2同步比较控制位
00:连续比较模式,无同步比较功能
01:和PWM0输出同步
PWMTRGS[1:0]
10:和PWM1输出同步
11:和PWM2输出同步
TRGPOL
BGEN
同步比较功能控制位
0:仅在PWM输出有效期间比较
1:仅在PWM输出无效期间比较
基准源(1.20V)功能控制位
0:关闭1.20V基准源VBG
1:开启1.20V基准源VBG
注:基准源开启需要建立时间,最长不超过100us,因此当需要用到1.20V基准源
时,需要提前100us将此标志位置1
3
1-0
AMP1EN
C2IFS[1:0]
运算放大器1使能控制位
0:运算放大器1关闭
1:运算放大器1开启
运算放大器开启时,相应的输入输出引脚I/O功能关闭,而做为模拟引脚使用
比较器2中断模式选择位
00:不触发中断标志
01:下降沿触发,比较器2输出由高变低时触发中断标志
10:上升沿触发,比较器2输出由低变高时触发中断标志
11:双沿触发,比较器2输出由高变低时和由低变高时都触发中断标志
89
SH79F1615
Table 8.33 比较器2控制寄存器2
8FH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
CMP2CON2
C2FT1EN
C2FT1S2
C2FT1S1
C2FT1S0
C2FT2EN
C2FT2S2
C2FT2S1
C2FT2S0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
7
位符号
C2FT1EN
说明
比较器2滤波器1使能位
0:比较器2滤波器1关闭
1:比较器2滤波器1开启
滤波器1算法说明:用系统时钟采样滤波器输入
采用数字积分,如果采样结果为高电平,计数器加1,否则计数器减1;计数器结果超出
C2FT1S[2:0]设定的常数,则滤波器输出1,否则输出0
注:1.计数器上限设置为常数的2倍,下限为0,超出上下限,不执行加减动作
2. 滤波计数器初值设定:若比较器2中断设为上升沿触发,计数器初始值为0;若设为下
降沿触发,则滤波计数器初值设为滤波常数x2。若设为双沿触发或不触发,则滤波计
数器初值设为滤波常数
3. 滤波器输出稳定需要一个建立时间,大致为滤波常数设置的时间,如滤波常数设置
为256,则在256个系统时钟后,滤波器输出稳定,在这之前,滤波器输出不确定,中
断标志C2IF可能会被误置1,因此,刚打开滤波器时,需要在滤波器输出稳定后软件
清除此中断标志位
6-4
3
C2FT1S[2:0]
C2FT2EN
比较器2滤波器1参数设置
000:滤波器常数为8
001:滤波器常数为16
010:滤波器常数为32
011:滤波器常数为64
100:滤波器常数为128
101:滤波器常数为256
110:滤波器常数为512
111:滤波器常数为1024
比较器2滤波器2使能位
0:比较器2滤波器2关闭
1:比较器2滤波器2开启
滤波器2算法说明:用系统时钟采样滤波器输入
当滤波器2当前输出为0时,若输入采样为1,计数器加1;若输入采样为0,则将计数器清0;
当计数器超过C2FT2S[2:0]设定的滤波常数时,滤波器输出翻转为1,同时计数器清0
同理,当滤波器2当前输出为1时,若输入采样为0,计数器加1,若输入采样为1,则将计数器
清0,当计数器超过C2FT2S[2:0]设定的滤波常数时,滤波器输出翻转为0,同时计数器清0
注:1. 计数器初始值为0
2. 滤波器输出稳定需要一个建立时间,大致为滤波常数设置的时间,如滤波常数设置为
256,则在256个系统时钟后,滤波器输出稳定,在这之前,滤波器输出不确定,中断标
志C2IF可能会被误置1,因此,刚打开滤波器时,需要在滤波器输出稳定后软件清除此
中断标志位
2-0
C2FT2S[2:0]
比较器2滤波器2参数设置
000:滤波器常数为2
001:滤波器常数为4
010:滤波器常数为8
011:滤波器常数为16
100:滤波器常数为32
101:滤波器常数为64
110:滤波器常数为128
111:滤波器常数为256
注:1. 滤波器1和滤波器2可单独有效,也可同时有效,同时有效时比较器2输出先经过滤波器1滤波,再经过滤波器2滤波。
2. 滤波器1/2打开前,需先设置好比较器2中断模式控制位C2IFS[1:0]。
90
SH79F1615
8.2.3 比较器用法
SH79F1615内置2个比较器,比较器1和比较器2,比较器1的输出可以作为PWM3模块的故障输入检测信号,自动迅速关闭
PWM3输出,从而实现快速保护,也可以用在某些电压/电流闭环中。比较器2内置有可编程的施密特窗口,同时集成滤波常数可
编程的数字滤波电路,同时提供中断功能,比较适合用作需要精确比较的应用场合,比如直流无刷电机的反电动势过零点检测。
比较器2集成同步比较功能,可以和PWM0/PWM1/PWM2输出同步,如果TRGPOL设为0,那么只有当MCPWM输出为有效
电平期间,比较器2的输出结果才被采样,给到后级滤波电路,在MCPWM输出无效期间,不采样比较器输出,此时比较器2的
输出会保持,同时滤波器也停止计数,当MCPWM输出再次有效时,恢复对比较器2的采样和滤波计数。参见下图(PWMTRGS[1:0]
= 01,TRGPOL = 0)。比较器2的滤波是先经过滤波器1再经过滤波器2,如果只想用其中的一种滤波,可以将另一种屏蔽,也
可以将两种都屏蔽。
PWM0
C2N
C2P0
orginal output
output after synchrous
output after synchrous & filter
t1
t2
t3
t1+t2 = Filter Constant
t4
t3+t4 = Filter Constant
比较器2同步比较示意图,(C2PCHS[1:0] = 0,PWMTRGS[1:0] = 01,TRGPOL = 0)
上图中的orginal out信号线为比较器2不滤波也不和PWM0信号同步时的C2OUT;
上图中的output after synchrous信号线为比较器2不滤波但是和PWM0信号同步时的C2OUT;
上图中的output after synchrous & filter信号线为先和PWM0同步再经滤波后的C2OUT。
91
SH79F1615
比较器1和2的输出波形的产生流程具体可参考下图:
C1PCHS
VDD
C1P
MUX
CMP1EN
OP1OUT
C1DEB[1:0]
C1OUT
+
C1N
PWM 0/1/2Fault
Debounce
MUX
-
BANDGAP
Reference=1.20V
PWM 3 Fault
C1IF
C1NCHS
CMP1
多通道输入模拟比较器1
C2PCHS[1:0]
PWM0/1/2
VDD
C2P0
C2P1
MU
MU
X
X
MU
MUX
X
PWMTRGS[1:0]
CMP2EN
C2P2
+
1
-
0
C2FT2S[2:0]
C2IFS[1:0]
Filter1
Filter2
EDGE
Detect
C2IF
C2N
MUX
C2FT1S[2:0]
BANDGAP
Reference=1.20V
C2OUT
C2SMT[1:0]
C2FT1EN
C2NCHS
CMP2
多通道输入模拟比较器2
92
C2FT2EN
SH79F1615
比较器2可以通过设置寄存器C2SMT[1:0]设置施密特比较器窗口(迟滞比较器),如下图所示:
Schmit-Triger window
C2N
INTPUT
Schmit-Triger window
C2P
VOH
OUTPUT
VOL
C2SMT[1:0] = 0
C2SMT[1:0] != 0
93
C2SMT[1:0] = 0
C2SMT[1:0] != 0
SH79F1615
8.3 增强型通用异步收发器(EUART)
8.3.1 特性
自带波特率发生器的EUART
波特率发生器就是一个15位向上计数器
增强功能包括帧出错检测及自动地址识别
EUART有四种工作方式
8.3.2 工作方式
EUART有4种工作方式。在通信之前用户必须先初始化SCON,选择方式和波特率。
在所有四种方式中,任何将SBUF作为目标寄存器的写操作都会启动发送。在方式0中由条件RI = 0和REN = 1初始化接收。
这会在TXD引脚上产生一个时钟信号,然后在RXD引脚上移8位数据。在其它方式中由输入的起始位初始化接收(如果RI = 0和
REN = 1)。外部发送器通信以发送起始位开始。
EUART工作方式列表
SM0
SM1
方式
类型
波特率
帧长度
起始位
停止位
第9位
0
0
0
同步
fSYS/(4或12)
8位
无
无
无
0
1
1
异步
自带波特率发生器的溢出率/16
10位
1
1
无
1
0
2
异步
fSYS/(32或64)
11位
1
1
0,1
1
1
3
异步
自带波特率发生器的溢出率/16
11位
1
1
0,1
方式0:同步,半双工通讯
方式0支持与外部设备的同步通信。在RXD引脚上收发串行数据,TXD引脚发送移位时钟。SH79F1615提供TXD引脚上的
移位时钟,因此这种方式是串行通信的半双工方式。在这个方式中,每帧收发8位,低位先接收或发送。
通过置SM2位(SCON.5)为0或1,波特率固定为系统时钟的1/12或1/4。当SM2位等于0时,串行端口以系统时钟的1/12
运行。当SM2位等于1时,串行端口以系统时钟的1/4运行。与标准8051唯一不同的是,SH79F1615在方式0中有2种波特率可选。
功能块框图如下图所示。数据通过RXD引脚移入和移出串行端口,移位时钟由TXD引脚输出。
Transmit Shift Register
Internal
Data Bus
System Clock
PARIN
Write to
SBUF
SOUT
RXD
LOAD
CLOCK
÷ 12
÷4
TX START
TX SHIFT
TX CLOCK
0
SM2
TI
SERIAL
CONTROLLER
1
Serial Port Interrupt
RI
RX CLOCK
SHIFT
CLOCK
TXD
LOAD SBUF
RI
RX START
REN
RX SHIFT
Read SBUF
CLOCK
PAROUT
RXD
SIN
Receive Shift Register
94
SBUF
SBUF
SH79F1615
任何将SBUF作为目标寄存器的写操作都会启动发送。下一个系统时钟TX控制块开始发送。数据转换发生在移位时钟的下
降沿,移位寄存器的内容逐次从左往右移位,空位置0。当移位寄存器中的所有8位都发送后,TX控制模块停止发送操作,然后
在下一个系统时钟的上升沿将TI置位(SCON.1)。
Write to SBUF
RxD
D0
D1
D2
D3
D5
D4
D6
D7
TxD
TI
Send Timing of Mode 0
REN(SCON.4)置1和RI(SCON.0)清0初始化接收。下一个系统时钟启动接收,在移位时钟的上升沿锁存数据,接收转
换寄存器的内容逐次向左移位。当所有8位数据都移到移位寄存器中后,RX控制块停止接收,在下一个系统时钟的上升沿RI置
位,直到被软件清零才允许下一次接收。
RxD
D0
D1
D2
D4
D3
D5
D6
D7
TxD
RI
Receive Timing of Mode 0
方式1:8位EUART,可变波特率,异步全双工
方式1提供10位全双工异步通信,10位由一个起始位(逻辑0),8个数据位(低位为第一位)和一个停止位(逻辑1)组成。
在接收时,这8个数据位存储在SBUF中而停止位储存在RB8(SCON.2)中。方式1中的波特率固定为自带波特率发生器溢出率
的1/16。功能块框图如下图所示:
Transmit Shift Register
STOP
Internal
PARIN
Data Bus
Baud rate
Generator
START
Write to SBUF
SOUT
TXD
LOAD
overflow
From 7FFF to 0000
÷ 16
CLOCK
TX START
TX SHIFT
TX CLOCK
TI
SERIAL
CONTROLLER
÷16
Serial Port Interrupt
RI
RX CLOCK
LOAD SBUF
SAMPLE
1-TO-0
RX START
Read SBUF
RX SHIFT
DETECTOR
CLOCK
PAROUT
RXD
BIT
SIN
DETECTOR
D8
Receive Shift Register
95
SBUF
RB8
Internal
Data Bus
SH79F1615
任何将SBUF作为目标寄存器的写操作都会启动发送,实际上发送是从16分频计数器中的下一次跳变之后的系统时钟开始
的,因此位时间与16分频计数器是同步的,与对SBUF的写操作不同步。起始位首先在TXD引脚上移出,然后是8位数据位。在
发送移位寄存器中的所有8位数据都发送完后,停止位在TXD引脚上移出,在停止位发出的同时TI标志置位。
Write to SBUF
TxD
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
Shift CLK
TI
Send Timing of Mode 1
只有REN置位时才允许接收。当RXD引脚检测到下降沿时串行口开始接收串行数据。为此,CPU对RXD不断采样,采样速
率为波特率的16倍。当检测下降沿时,16分频计数器立即复位,这有助于16分频计数器与RXD引脚上的串行数据位同步。16分
频计数器把每一位的时间分为16个状态,在第7、8、9状态时,位检测器对RXD端的电平进行采样。为抑制噪声,在这3个状态
采样中至少有2次采样值一致数据才被接收。如果所接收的第一位不是0,说明这位不是一帧数据的起始位,该位被忽略,接收
电路被复位,等待RXD引脚上另一个下降沿的到来。若起始位有效,则移入移位寄存器,并接着移入其它位到移位寄存器。8个
数据位和1个停止位移入之后,移位寄存器的内容被分别装入SBUF和RB8中,RI置位,但必须满足下列条件:
1. RI = 0
2. SM2 = 0或者接收的停止位 = 1
如果这些条件被满足,那么停止位装入RB8,8个数据位装入SBUF,RI被置位。否则接收的帧会丢失。这时,接收器将重
新去探测RXD端是否另一个下降沿。用户必须用软件清零RI,然后才能再次接收。
RxD
Start
D0
D1
D2
D3
D4
D5
Bit Sample
Shift CLK
RI
Receive Timing of Mode 1
96
D6
D7
Stop
SH79F1615
方式2:9位EUART,固定波特率,异步全双工
这个方式使用异步全双工通信中的11位。一帧由一个起始位(逻辑0),8个数据位(低位为第一位),一个可编程的第9
数据位和一个停止位(逻辑1)组成。方式2支持多机通信和硬件地址识别(详见多机通讯章节)。在数据传送时,第9数据位(SCON
中的TB8)可以写0或1,例如,可写入PSW中的奇偶位P,或用作多机通信中的数据/地址标志位。当接收到数据时,第9数据位
移入RB8而停止位不保存。PCON中的SMOD位选择波特率为系统工作频率的1/32或1/64。功能块框图如下所示:
Transmit Shift Register
System Clock
TB8
D8
STOP
÷
Internal
Data Bus
PARIN
2
START
Write to SBUF
TXD
SOUT
LOAD
CLOCK
SMOD
0
1
TX START
÷ 32
TX SHIFT
TX CLOCK
TI
SERIAL
CONTROLLER
÷ 32
Serial Port Interrupt
RI
RX CLOCK
LOAD SBUF
SAMPLE
1-TO-0
DETECTOR
Read SBUF
RX SHIFT
RX START
CLOCK
SBUF
PAROUT
BIT
DETECTOR
RXD
SIN
Internal
Data Bus
RB8
D8
Receive Shift Register
任何将SBUF作为目标寄存器的写操作都会启动发送,同时也将TB8载入到发送移位寄存器的第9位中。实际上发送是从16
分频计数器中的下一次跳变之后的系统时钟开始的,因此位时间与16分频计数器是同步的,与对SBUF的写操作不同步。起始位
首先在TXD引脚上移出,然后是9位数据。在发送转换寄存器中的所有9位数据都发送完后,停止位在TXD引脚上移出,在停止
位开始发送时TI标志置位。
Write to SBUF
TxD
Start
D0
D1
D2
D3
D4
D5
Shift CLK
TI
Send Timing of Mode 2
97
D6
D7
D8
Stop
SH79F1615
只有REN置位时才允许接收。当RXD引脚检测到下降沿时串行口开始接收串行数据。为此,CPU对RXD不断采样,采样速
率为波特率的16倍。当检测下降沿时,16分频计数器立即复位。这有助于16分频计数器与RXD引脚上的串行数据位同步。16分
频计数器把每一位的时间分为16个状态,在第7、8、9状态时,位检测器对RXD端的电平进行采样。为抑制噪声,在这3个状态
采样中至少有2次采样值一致数据才被接收。如果所接收的第一位不是0,说明这位不是一帧数据的起始位,该位被忽略,接收
电路被复位,等待RXD引脚上另一个下降沿的到来。若起始位有效,则移入移位寄存器,并接着移入其它位到移位寄存器。9个
数据位和1个停止位移入之后,移位寄存器的内容被分别装入SBUF和RB8中,RI置位,但必须满足下列条件:
1. RI = 0
2. SM2 = 0或者接收的第9位 = 1,且接收的字节符合约定从机地址
如果这些条件被满足,那么第9位移入RB8,8位数据移入SBUF,RI被置位。否则接收的数据帧会丢失。
在停止位的当中,接收器回到寻找RXD引脚上的另一个下降沿。用户必须用软件清除RI,然后才能再次接收。
RxD
Start
D0
D1
D2
D3
D4
D5
D6
D7
D8
Stop
Bit Sample
Shift CLK
RI
Receive Timing of Mode 2
方式3:9位EUART,可变波特率,异步全双工
方式3使用方式2的传输协议以及方式1的波特率产生方式。
Transmit Shift Register
STOP
TB8
D8
Internal
Data Bus
Baud rate
Generator
PARIN
SOUT
TXD
START
Write to SBUF
LOAD
overflow
CLOCK
From 7FFF to 0000
÷ 16
TX START
TX SHIFT
TX CLOCK
TI
SERIAL
CONTROLLER
÷ 16
Serial Port Interrupt
RI
RX CLOCK
LOAD SBUF
SAMPLE
1-TO-0
DETECTOR
RX START
Read SBUF
RX SHIFT
CLOCK
PAROUT
RXD
BIT
DETECTOR
SIN
D8
Receive Shift Register
98
SBUF
RB8
Internal
Data Bus
SH79F1615
8.3.3 可微调波特率
EUART自带一个波特率发生器,它实质上就是一个15位递增计数器。
Overflow
`
15-bit timer
To EUART
Fsys
From 7FFFH to 0000H
SBRTEN=1
SBRTH[14:8],SBRTL7:0]
Baudrate Generator for EUART
由图得到,波特率发生器的溢出率为
SBRToverflowrate =
Fsys
, SBRT = [ SBRTH , SBRTL]
32768 − SBRT
因此,EUART在各模式下的波特率计算公式如下。
在方式0中,波特率可编程为系统时钟的1/12或1/4,由SM2位决定。当SM2为0时,串行端口在系统时钟的1/12下运行。当
SM2为1时,串行端口在系统时钟的1/4下运行。
在方式1和方式3中,波特率可微调,精度为一个系统时钟,公式如下:
BaudRate =
Fsys
16 × (32768 - SBRT ) + BFINE
例如:Fsys = 8MHz,需要得到115200Hz的波特率,SBRT和SFINE值计算方法如下:
8000000/16/115200 = 4.34
SBRT = 32768 - 4 = 32764
由BaudRate计算公式:115200 = 8000000/(16 X 4 + BFINE)
得到:BFINE = 5.4 ≈ 5
此微调方式计算出的实际波特率为115942,误差为0.64%;以往方式计算出的波特率误差为8.5%。
在方式2中,波特率固定为系统时钟的1/32或1/64,由SMOD位(PCON.7)中决定。当SMOD位为0时,EUART以系统时
钟的1/64运行。当SMOD位为1时,EUART以系统时钟的1/32运行。
BaudRate = 2 SMOD × (
f SYS
)
64
99
SH79F1615
8.3.4 多机通讯
软件地址识别
方式2和方式3具有适用于多机通讯功能。在这两个方式下,接收的是9位数据,第9位移入RB8中,之后是停止位。可以这
样设定EUART:当接收到停止位,且RB8 = 1时,串行口中断有效(请求标志RI置位)。此时置位SCON寄存器的SM2,EUART
工作在多机通讯模式。
在多机通讯系统中,按如下所述来使用这一功能。当主机要发送一数据块给几个从机中的一个时,先发送一地址字节,以
寻址目标从机。地址字节与数据字节可用第9数据位来区别,地址字节的第9位为1,数据字节的第9位为0。
如果从机SM2为1,则不会响应数据字节中断。地址字节可以使所有从机产生中断,每一个从机都检查所接收到的地址字节,
以判别本机是不是目标从机。被寻到的从机对SM2位执行清零操作,并准备接收即将到来的数据字节。当接收完毕时,从机再
一次将SM2置位。没有被寻址的从机,则保持SM2位为1,不响应数据字节。
注意:在方式0中,SM2用来2倍频波特率。在方式1中,SM2用来检测停止位是否有效,如果SM2 = 1,接收中断不会响应
直到接收到一个有效的停止位。
自动(硬件)地址识别
在方式2和方式3中,SM2置位,EUART运行状态如下:接收到停止位,RB8的第9位为1(地址字节),且接收到的数据字
节符合EUART的从机地址,EUART产生一个中断。从机将SM2清零,接收后续数据字节。
第9位为1表明该字节是地址而非数据。当主机要发送一组数据给几个从机中的一个时,必须先发送目标从机地址。所有从
机等待接收地址字节,为了确保仅在接收地址字节时产生中断,SM2位必须置位。自动地址识别的特点是只有地址匹配的从机
才能产生中断,硬件完成地址比较。
中断产生后,地址匹配的从机清零SM2,继续接收数据字节。地址不匹配的从机不受影响,将继续等待接收和它匹配的地
址字节。全部信息接收完毕后,地址匹配的从机应该再次把SM2置位,忽略所有传送的非地址字节,直到接收到下一个地址字
节。
使用自动地址识别功能时,主机可以通过调用给定的从机地址选择与一个或多个从机通信。主机使用广播地址可以寻址所
有从机。有两个特殊功能寄存器,从机地址(SADDR)和地址屏蔽(SADEN)。从机地址是一个8位的字节,存于SADDR寄
存器中。SADEN用于定义SADDR各位的有效与否,如果SADEN中某一位为0,则SADDR中相应位被忽略,如果SADEN中某一
位置位,则SADDR中相应位将用于产生约定地址。这可以使用户在不改变SADDR寄存器中的从机地址的情况下灵活地寻址多
个从机。
从机1
从机2
SADDR
10100100
10100111
SADEN(为0的位被忽略)
11111010
11111001
约定地址
10100x0x
10100xx1
广播地址(SADDR或SADEN)
1111111x
11111111
从机1和从机2的约定地址最低位是不同的。从机1忽略了最低位,而从机2的最低位是1。因此只与从机1通讯时,主机必须
发送最低位为0的地址(10100000)。类似地,从机1的第1位为0,从机2的第1位被忽略。因此,只与从机2通讯时,主机必须
发送第1位为1的地址(10100011)。如果主机需要同时与两从机通讯,则第0位为1,第1位为0,第2位被两从机都忽略,两个
不同的地址用于选定两个从机(1010 0001和1010 0101)。
主机可以通过广播地址与所有从机同时通讯。这个地址等于SADDR和SADEN的位或,结果中的0表示该位被忽略。多数情
况下,广播地址为0xFFh,该地址可被所有从机应答。
系统复位后,SADDR和SADEN两个寄存器初始化为0,这两个结果设定了约定地址和广播地址为XXXXXXXX(所有位都被
忽略)。这有效地去除了多从机通讯的特性,禁止了自动寻址方式。这样的EUART将对任何地址都产生应答,兼容了不支持自
动地址识别的8051控制器。用户可以按照上面提到的方法实现软件地址识别的多机通讯。
100
SH79F1615
8.3.5 帧出错检测
当寄存器PCON中的SSTAT位为逻辑1时,帧出错检测功能才有效。3个错误标志位被置位后,只能通过软件清零,尽管后
续接收的帧没有任何错误也不会自动清零。
注意:SSTAT位必须为逻辑1是访问状态位(FE,RXOVR和TXCOL),SSTAT位为逻辑0时是访问方式选择位(SM0,
SM1和SM2)。
发送冲突
如果在一个发送正在进行时,用户软件写数据到SBUF寄存器时,发送冲突位(SCON寄存器中的TXCOL位)置位。如果发
生了冲突,新数据会被忽略,不能被写入发送缓冲器。
接收溢出
如果在接收缓冲器中的数据未被读取之前,RI清零,又有新的数据存入接收缓冲器,那么接收溢出位(SCON寄存器中的
RXOV位)置位。如果发生了接收溢出,接收缓冲器中原来的数据将丢失。
帧出错
如果检测到一个无效(低)停止位,那么帧出错位(寄存器SCON中的FE)置位。
注意:在发送之前TXD,引脚必须被设置为输出高电平。
8.3.6 寄存器
Table 8.34 电源控制寄存器
87H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PCON
SMOD
SSTAT
IT41
IT40
GF1
GF0
PD
IDL
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
说明
7
SMOD
波特率加倍器
0:在方式2中,波特率为系统时钟的1/64
1:在方式2中,波特率为系统时钟的1/32
6
SSTAT
SCON[7:5]功能选择
0:SCON[7:5]工作方式作为SM0,SM1,SM2
1:SCON[7:5]工作方式作为FE,RXOV,TXCOL
5-4
IT4[1:0]
外部中断4模式设置位
3-2
GF[1:0]
用于软件的通用标志位
1
PD
掉电模式控制位
0
IDL
空闲模式控制位
Table 8.35 EUART数据缓冲器寄存器
99H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
SBUF
SBUF.7
SBUF.6
SBUF.5
SBUF.4
SBUF.3
SBUF.2
SBUF.1
SBUF.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
7-0
位符号
SBUF[7:0]
说明
这个寄存器寻址两个寄存器:一个移位寄存器和一个接收锁存寄存器
SBUF的写入将发送字节到移位寄存器中,然后开始传输
SBUF的读取返回接收锁存器中的内容
101
SH79F1615
Table 8.36 EUART控制及状态寄存器
98H
第7位
SCON
SM0/FE
REN
TB8
RB8
TI
RI
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
第6位
第5位
第4位
SM1/RXOV SM2/TXCOL
位符号
7-6
SM[0:1]
7
FE
6
RXOV
第3位
第2位
第1位
说明
EUART串行方式控制位,SSTAT = 0
00:方式0,同步方式,固定波特率
01:方式1,8位异步方式,可变波特率
10:方式2,9位异步方式,固定波特率
11:方式3,9位异步方式,可变波特率
EUART帧出错标志位,当FE位被读时,SSTAT位必须被置位
0:无帧出错,由软件清零
1:帧出错,由硬件置位
EUART接收溢出标志位,当RXOV位被读时,SSTAT位必须被置位
0:无接收溢出,由软件清零
1:接收溢出,由硬件置位
EUART多处理机通讯允许位(第9位“1”校验器),SSTAT = 0
0:在方式0下,波特率是系统时钟的1/12
在方式1下,禁止停止位确认检验,任何停止位都会置位RI
在方式2和3下,任何字节都会置位RI
1:在方式0下,波特率是系统时钟的1/4
在方式1下,允许停止位确认检验,只有有效的停止位(1)才能置位RI
在方式2和3下,只有地址字节(第9位 = 1)才能置位RI
5
SM2
5
TXCOL
4
REN
EUART接收器允许位
0:接收禁止
1:接收允许
3
TB8
在EUART的方式2和3下发送的第9位,由软件置位或清零
2
RB8
在EUART的方式1,2和3下接收的第9位
在方式0下,不使用RB8
在方式1下,如果接收中断发生,停止位移入RB8
在方式2和3下,接收第9位
1
TI
EUART的传送中断标志位
0:由软件清零
1:由硬件置位
0
RI
EUART的接收中断标志位
0:由软件清零
1:由硬件置位
EUART发送冲突标志位,当TXCOL位被读时,SSTAT位必须被置位
0:无发送冲突,由软件清零
1:发送冲突,由硬件置位
102
第0位
SH79F1615
Table 8.37 EUART从机地址及地址屏蔽寄存器
9AH-9BH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
SADDR (9AH)
SADDR.7
SADDR.6
SADDR.5
SADDR.4
SADDR.3
SADDR.2
SADDR.1
SADDR.0
SADEN (9BH)
SADEN.7
SADEN.6
SADEN.5
SADEN.4
SADEN.3
SADEN.2
SADEN.1
SADEN.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
说明
7-0
SADDR[7:0]
寄存器SADDR定义了EUART的从机地址
7-0
SADEN[7:0]
寄存器SADEN是一个位屏蔽寄存器,决定SADDR的哪些位被检验
0:SADDR中的相应位被忽略
1:SADDR中的相应位对照接收到的地址被检验
Table 8.38 EUART波特率发生器寄存器
FDH-FEH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
SBRTH (FEH)
SBRTEN
SBRT.14
SBRT.13
SBRT.12
SBRT.11
SBRT.10
SBRT.9
SBRT.8
SBRTL (FDH)
SBRT.7
SBRT.6
SBRT.5
SBRT.4
SBRT.3
SBRT.2
SBRT.1
SBRT.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7
SBRTEN
6-0
7-0
SBRT[14:0]
说明
EUART波特率发生器使能控制位
0:关闭(默认)
1:打开
EUART波特率发生器计数器高7位和低8位寄存器
Table 8.39 EUART波特率发生器微调寄存器
A4H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
BFINE
-
-
-
-
BFINE.3
BFINE.2
BFINE.1
BFINE.0
读/写
-
-
-
-
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
-
-
0
0
0
0
位编号
位符号
3-0
BFINE[3:0]
说明
EUART波特率发生器微调数据寄存器
103
SH79F1615
8.4 模/数转换模块(ADC)
8.4.1 特性
12位分辨率/10位分辨率可选
参考电压可选外接VREF或VDD
最多11路模拟输入
启动一次ADC可以自动完成多通道转换(序列),而且每个通道都可以配置为多路模拟输入中的任意一路
序列可配置为单通道或多通道,一个序列最多可包含16个通道,转换结果保存在16个结果寄存器中
存在两种工作模式:序列转换模式和连续转换模式
序列转换时相邻通道转换之间的时间间隔可由软件设定
可由PWM或Timer2的溢出信号自动触发AD转换
单通道转换速率最高可达1MSPS
序列转换模式和连续转换模式都带比较功能
SH79F1615包含一个单端型、12位逐次逼近型模数转换器(ADC,Analog-to-Digit Converter),模块图如图8-4-1所示。
ADC基准电压在芯片复位后默认使用VDD,用户也可以选择外部VREF端口的输入作为基准电压。
该模块中有11路模拟输入通道(CH0 - CH5,CH8 - CH10,OP1OUT,VBG),都可以编入序列中自动进行转换。结果储
存在对应的结果寄存器ADDxH,ADDxL(x = 0 - 15)中,每转换一次序列,结果寄存器的值更新一次,并作一次比较。结果寄
存器和模拟输入通道之间的映射关系可以随意编程,从而组成一个转换序列,而且可以将某一模拟输入通道在序列中重复编程,
从而在结果寄存器中获得此模拟输入通道连续多次转换的结果。
当启动连续转换功能时,序列自动循环启动转换,结果寄存器也不断更新,并将每次的更新值与极限值作比较。
对于单个通道,转换速率最高可达1MSPS,可由寄存器设置ADC时钟速率以及采样时间。序列中相邻通道之间的时间间隔
亦可通过寄存器设置(TGAP[2:0])。
104
SH79F1615
8.4.2 ADC模块图
Software Trigger Event Trigger
sequence mode
SEQCH0
+
State
pointer GRP[3:0]
SEQCHn
+
ADDLTL/H
ADDGTL/H
+
SEQCH15
12
12
Compare
Logic
12
4
SOC
EOC
MUX
MUX
...
Mode Arbiter
4
ADD0L/H ... ADD15L/H
4
CH0
SOC
EOC
CH5
CH8
12-Bits 12
ADC
MUX
CH10
OP1OUT
VBG
MUX
12
0
CH3/VREF
1
AVDD
4
ADC_Clk
1
0
ADCON1[REFC]
Refc
ADD0L/H
Time Gap
Logic
Pre-Counter for
ADC clock,4-bit
SOC Stands for Start of Convertion
System Clock
EOC Stands for End of Convertion
n = ADCH2[GRP]
ADGIF
ADLIF
ADT[TADC]
图8-4-1 ADC模块图
105
REG
MUX
ADDnL/H
ADD15L/H
SH79F1615
8.4.3 ADC寄存器
ADC模块所使用寄存器如下:
功能
名称
寄存器描述
ADT
设置ADC时钟与采样时间、ADC精度模式选择
ADCON1
AD模块使能、启动、参考电压的选择、及序列转换完成中断标志、事件
触发设置、转换完成中断允许、连续转换功能使能位
ADCON2
序列通道总数设置、相邻通道之间时间间隔设置
映像控制及部分AD通道
配置
SEQCON
通道映像控制
AD通道配置1
ADCH1
设置AD通道引脚为AD通道功能或I/O功能
AD通道配置2
ADCH2
设置AD通道引脚为AD通道功能或I/O功能
通道和转换顺序设置
SEQCHx
指定序列中的通道以及转换顺序,x = 0 - 15
ADDxL
SEQCHx中指定通道转换值的低位,x = 0 - 15
ADDxH
SEQCHx中指定通道转换值的高位,x = 0 - 15
ADDGTL
上限比较寄存器的低位
ADDGTH
上限比较寄存器的高位
ADDLTL
下限比较寄存器的低位
ADDLTH
下限比较寄存器的高位
ADCMPCON
设置比较中断以及用于比较的结果寄存器
ADC时钟设置
ADC控制
ADC结果寄存器
上限比较寄存器
下限比较寄存器
比较控制寄存器
106
SH79F1615
Table 8.40 ADC时钟控制寄存器
94H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADT
TADC3
TADC2
TADC1
TADC0
TS3
TS2
TS1
TS0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-4
TADC [3:0]
3-0
TS [3:0]
说明
ADC时钟周期选择
0000:ADC时钟周期tAD = 1 tSYS
0001:ADC时钟周期tAD = 2 tSYS
0010:ADC时钟周期tAD = 3 tSYS
0011:ADC时钟周期tAD = 4 tSYS
0100:ADC时钟周期tAD = 6 tSYS
0101:ADC时钟周期tAD = 8 tSYS
0110:ADC时钟周期tAD = 12 tSYS
0111:ADC时钟周期tAD = 16 tSYS
1000:ADC时钟周期tAD = 24 tSYS
1001:ADC时钟周期tAD = 32 tSYS
1010:ADC时钟周期tAD = 48 tSYS
1011:ADC时钟周期tAD = 64 tSYS
1100:ADC时钟周期tAD = 96 tSYS
1101:ADC时钟周期tAD = 128 tSYS
1110:ADC时钟周期tAD = 192 tSYS
1111:ADC时钟周期tAD = 1.5 tSYS
采样时间选择
2 tAD ≤ 采样时间 = (TS [3:0]+1) * tAD ≤ 15 tAD
注意:
1. 即使TS[3:0] = 0000,最小采样时间为2tAD;即使TS[3:0] = 1111,最大采样时间为15tAD;
2. 在设置TS[3:0]前,请估算连接到ADC输入引脚的串联电阻;
3. 选择2 * tAD为采样时间时,请确保连接到ADC输入引脚的串联电阻小于10kΩ;
4. 12bit模式下一个通道的总共转换时间 = 14tAD + 采样时间;10bit模式下一个通道的总共转换时间 = 12tAD + 采样时间;
5. ADC工作在10BIT模式下,可以提高ADC的转换效率,在10BIT模式下一个通道的转换时间比12BIT模式下能节省2个tAD。
107
SH79F1615
Table 8.41 ADC控制寄存器1
第7位
93H
第6位
第5位
第4位
第3位
第2位
第1位
第0位
TIM
TRGEN
GO/DONE
ADCON1
ADON
ADCIF
SC
REFC
ADCIE
PWM
TRGEN
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
—---—-----—
位编号
位符号
说明
7
ADON
ADC允许位
0:禁止ADC模块
1:允许ADC模块
6
ADCIF
序列转换完成中断标志位
0:无序列转换完成标志,软件清0
1:由硬件置1表示已完成序列转换(在连续转换时,每次序列转换完成都会置1)
连续转换控制位
—---—-----—
0:连续转换功能禁止,将GO/DONE置1启动一次序列转换并自动将制定结果进
行比较
5
SC
4
REFC
基准电压选位
0:选择VDD为基准电压
1:选择外部VREF端口输入为基准电压
3
ADCIE
序列转换完成中断允许位
0:禁止ADC转换中断,但是ADCIF标志不受影响
1:允许ADC转换中断
2
PWMTRGEN
1
TIMTRGEN
0
—---—-----—
GO/DONE
—---—-----—
1:连续转换功能打开,将GO/DONE置1后,完成一次序列转换后自动启动下一
次序列转换。两次序列转换的间隔时间也受TGAP[2:0]控制,并且自动将转换
结果进行比较,参见ADC比较章节
PWM0/1/2模块溢出信号启动序列转换控制位
0:不允许此功能
1:允许PWM0/1/2模块的触发信号启动一次AD转换序列
TIMER2溢出信号启动序列转换控制位
0:不允许此功能
1:允许Timer2溢出信号会启动一次AD转换序列
序列转换启动控制/状态标志位
0:未进行序列转换/连续转换或已完成
1:SC = 0时,置1开始序列转换,在转换过程中保持为1,转换完成后硬件自动
清0(若转换期间清0此位会立即终止序列转换。)
SC = 1时,置1开始连续转换,则该位不会由硬件清0,可以由软件清0立即终
止转换
注意:当选择外部VREF端口作为基准电压时(REFC = 1),P0.5作为VREF输入引脚而非AN3输入口。
108
SH79F1615
Table 8.42 ADC控制寄存器2
92H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADCON2
GRP3
GRP2
GRP1
GRP0
MODE
TGAP2
TGAP1
TGAP0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-4
GRP[3:0]
3
MODE
2-0
TGAP[2:0]
说明
ADC序列的通道数量设置位
0:待转换序列的通道总数为1,所选的通道寄存器为SEQCH0
1:待转换序列的通道总数为2,所选的通道寄存器为SEQCH0 - SEQCH1
2:待转换序列的通道总数为3,所选的通道寄存器为SEQCH0 - SEQCH2
3:待转换序列的通道总数为4,所选的通道寄存器为SEQCH0 - SEQCH3
4:待转换序列的通道总数为5,所选的通道寄存器为SEQCH0 - SEQCH4
5:待转换序列的通道总数为6,所选的通道寄存器为SEQCH0 - EQCH5
6:待转换序列的通道总数为7,所选的通道寄存器为SEQCH0 - SEQCH6
7:待转换序列的通道总数为8,所选的通道寄存器为SEQCH0 - SEQCH7
8:待转换序列的通道总数为9,所选的通道寄存器为SEQCH0 - SEQCH8
9:待转换序列的通道总数为10,所选的通道寄存器为SEQCH0 - SEQCH9
10:待转换序列的通道总数为11,所选的通道寄存器为SEQCH0 - SEQCH10
11:待转换序列的通道总数为12,所选的通道寄存器为SEQCH0 - SEQCH11
12:待转换序列的通道总数为13,所选的通道寄存器为SEQCH0 - SEQCH12
13:待转换序列的通道总数为14,所选的通道寄存器为SEQCH0 - SEQCH13
14:待转换序列的通道总数为15,所选的通道寄存器为SEQCH0 - SEQCH14
15:待转换序列的通道总数为16,所选的通道寄存器为SEQCH0 - SEQCH15
ADC转换模式选择
0:12BIT 模式
1:10BIT 模式
序列中时相邻通道之间时间间隔设置位段
TGAP[2:0]位段定义了在一次序列转换中,一个通道转换完毕到下一个通道开始采样
之间的时间间隔,同时在连续转换模式中,一次序列转换完成到启动下一次序列的
等待时间也受此寄存器控制
000:无等待时间
001:2ADC时钟周期
010:4ADC时钟周期
011:8ADC时钟周期
100:16ADC时钟周期
101:32ADC时钟周期
110:64ADC时钟周期
111:128ADC时钟周期
109
SH79F1615
Table 8.43 映射控制寄存器
A6H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
SEQCON
ALR
-
-
REGSEL
REG3
REG2
REG1
REG0
读/写
读/写
-
-
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
-
-
0
0
0
0
0
位编号
7
位符号
ALR
说明
ADC结果左右对齐选择位
0:结果寄存器ADDxL/H(x = 0 - 15)中存储的12-bit结果按照左对齐存放,高8位存放在
ADDxH中,低4位存放在ADDxL中的高4位
1:结果寄存器ADDxL/H(x = 0 - 15)中存储的12-bit结果按照右对齐存放,高4位存放在
ADDxH的低4位中,低8位存放在ADDxL中
—---—-----—
—---—-----—
注意:此标志位只能在GO/DONE为0时修改,GO/DONE为1(也即ADC在转换中或连续转
换功能开启)时,此标志位无法修改
4
3-0
REGSEL
ADC结果寄存器与通道寄存器映射切换控制位
0:直接寻址区中96H地址和97H地址作为ADC结果寄存器使用,软件读写该地址即操作寄
存器ADDxL/H(x = 0 - 15)
1:直接寻址区中96H地址作为通道寄存器使用,软件读写该地址即操作寄存器SEQCHx(x
= 0 - 15)
REG[3:0]
结果寄存器/通道寄存器选择位
当REGSEL = 0时:
0:直接寻址区中96H和97H地址映射为ADD0L和ADD0H
1:直接寻址区中96H和97H地址映射为ADD1L和ADD1H
2:直接寻址区中96H和97H地址映射为ADD2L和ADD2H
3:直接寻址区中96H和97H地址映射为ADD3L和ADD3H
4:直接寻址区中96H和97H地址映射为ADD4L和ADD4H
5:直接寻址区中96H和97H地址映射为ADD5L和ADD5H
6:直接寻址区中96H和97H地址映射为ADD6L和ADD6H
7:直接寻址区中96H和97H地址映射为ADD7L和ADD7H
8:直接寻址区中96H和97H地址映射为ADD8L和ADD8H
9:直接寻址区中96H和97H地址映射为ADD9L和ADD9H
10:直接寻址区中96H和97H地址映射为ADD10L和ADD10H
11:直接寻址区中96H和97H地址映射为ADD11L和ADD11H
12:直接寻址区中96H和97H地址映射为ADD12L和ADD12H
13:直接寻址区中96H和97H地址映射为ADD13L和ADD13H
14:直接寻址区中96H和97H地址映射为ADD14L和ADD14H
15:直接寻址区中96H和97H地址映射为ADD15L和ADD15H
当REGSEL = 1时:
0:直接寻址区中96H地址映射为SEQCH0
1:直接寻址区中96H地址映射为SEQCH1
2:直接寻址区中96H地址映射为SEQCH2
3:直接寻址区中96H地址映射为SEQCH3
4:直接寻址区中96H地址映射为SEQCH4
5:直接寻址区中96H地址映射为SEQCH5
6:直接寻址区中96H地址映射为SEQCH6
7:直接寻址区中96H地址映射为SEQCH7
8:直接寻址区中96H地址映射为SEQCH8
9:直接寻址区中96H地址映射为SEQCH9
10:直接寻址区中96H地址映射为SEQCH10
11:直接寻址区中96H地址映射为SEQCH11
12:直接寻址区中96H地址映射为SEQCH12
13:直接寻址区中96H地址映射为SEQCH13
14:直接寻址区中96H地址映射为SEQCH14
15:直接寻址区中96H地址映射为SEQCH15
110
SH79F1615
Table 8.44 ADC通道配置寄存器1
第7位
95H
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADCH1
-
-
CH5
CH4
CH3
CH2
CH1
CH0
读/写
-
-
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
0
0
0
0
0
0
位编号
7-0
位符号
CH[7:0]
说明
通道配置
1:P0x(x = 2 - 7)配置为模拟输入口
(ADC输入或比较器2同相输入)
0:P0x(x = 2 - 7)作为I/O口
Table 8.45 ADC通道配置寄存器2
A5H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADCH2
-
CH10
CH9
CH8
-
-
-
BGCHOP
读/写
-
读/写
读/写
读/写
-
-
-
读/写
复位值
(POR/WDT/LVR/PIN)
-
0
0
0
-
-
-
0
位编号
位符号
说明
7-4
CH[11:8]
通道配置
1:P1x(x = 2 - 3,6)配置为模拟输入口
0:P1x(x = 2 - 3,6)作为I/O口
0
BGCHOP
基准源CHOP功能开关
0:基准源VBG CHOP功能关闭
1:基准源VBG CHOP功能开启
注意:
VBG为内部基准源,电平为1.20V,误差+/-20mV。
VBG的开关控制位BGEN在运放和比较器模块的CMP2CON1寄存器中设置,如下表所示。
当AD通路选取VBG为待转换值时,由于VBG驱动能力有限,需要加一级CHOP开关才能精确转换,即AD转换VBG时,需要同
时打开VBG和BGCHOP。
VBG主要是查看外部VDD稳定否,VBG为内部基准电源,即使芯片供电VDD有抖动,VBG电压也很稳定,所以当ADC选取VDD
作为参考源VREF转换VBG时,用抖动的VDD参考源去采样稳定的VBG,得到的转换值也是抖动,由此可以判断此时的VDD供电不稳
定。
下面是利用VBG电压倒推出目前VREF电压的公式:(VBG = 1.20V;DVBG为VBG的AD出码值)
VREF = 1.20V*4096/DVBG;
如果选择VREF为VDD,则可推算出当前的VDD电压。由于VBG精度±1.67%,所以得出的VDD精度也是±1.67%。
111
SH79F1615
Table 8.46 放大器 & 比较器2控制寄存器1
第7位
BCH
第6位
第5位
第4位
第3位
第2位
第1位
第0位
CMP2CON1
-
-
-
BGEN
-
-
-
-
读/写
-
-
-
读/写
-
-
-
-
复位值
(POR/WDT/LVR/PIN)
-
-
-
0
-
-
-
-
位编号
位符号
4
说明
基准源(1.20V)功能控制位
0:关闭1.20V基准源VBG
1:开启1.20V基准源VBG
BGEN
注意:基准源开启需要建立时间,最长不超过100us,因此当需要用到1.20V基准
源时,需要提前100us将此标志位置1
Table 8.47 通道寄存器x(x = 0 - 15)
96H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
SEQCHx
-
-
-
-
SEQx3
SEQx2
SEQx1
SEQx0
读/写
-
-
-
-
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
-
-
-
-
0
0
0
0
位编号
3-0
位符号
SEQx[3:0]
说明
通道选择位段
0000:通道0(CH0)
0001:通道1(CH1)
0010:通道2(CH2)
0011:通道3(CH3)
0100:通道4(CH4)
0101:通道5(CH5)
1000:通道8(CH8)
1001:通道9(CH9)
1010:通道10(CH10)
1100:通道选择OP1OUT
1110:VBG
(其它值则无效)
注意:若转换通道选中 VBG ,需提前 100us 将 1.20V 基准源打开,即将寄存器
[CMP2CON1:BGEN]位置1,详情参见CMP2CON1寄存器描述
若转换OPOUT,也需要提前打开OP功能,OP需要一定的建立时间(约100us)
才能输出稳定的结果。
注意:SEQCH0 - SEQCH15都映像在同一个地址96H上。令SEQCON寄存器中REGSEL位等于1,同时改变SEQCON寄存
器中的位段REG[3:0]的值,可以由软件读写SEQCH0 - SEQCH15。如令REGSEL = 1,REG[3:0] = 3,则读写直接寻址区中96H
地址即读写寄存器SEQCH3。
112
SH79F1615
Table 8.48 ADC结果寄存器x(x = 0 - 15)
左对齐模式:
96H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADDxL
A3
A2
A1
A0
-
-
-
-
读/写
只读
只读
只读
只读
-
-
-
-
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
-
-
-
-
97H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADDxH
A11
A10
A9
A8
A7
A6
A5
A4
读/写
只读
只读
只读
只读
只读
只读
只读
只读
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
96H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADDxL
A7
A6
A5
A4
A3
A2
A1
A0
读/写
只读
只读
只读
只读
只读
只读
只读
只读
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
97H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADDxH
-
-
-
-
A11
A10
A9
A8
读/写
-
-
-
-
只读
只读
只读
只读
复位值
(POR/WDT/LVR/PIN)
-
-
-
-
0
0
0
0
右对齐模式:
位编号
7-0,7-4/
3-0,7-0
位符号
A11-A0
说明
左对齐方式(ALR = 0)
一个通道转换完毕后,数据立即更新并存放在ADDxL/H(x = 0 - 15)中
高8位存放在ADDxH中,低4位存放在ADDxL的高4位,序列转换一次所有结果寄
存器也都更新了一次
右对齐方式(ALR = 1)
一个通道转换完毕后,数据立即更新并存放在ADDxL/H(x = 0 - 15)中
高4位存放在ADDxH的低4位,低8位存放在ADDxL中,序列转换一次所有结果寄
存器也都更新了一次
注意:
ADD0L - ADD15L都映像在同一个地址96H上;ADD0H - ADD15H也都映像在同一个地址97H上,并且都为只读寄存器。令
SEQCON寄存器中REGSEL位等于0,同时改变SEQCON寄存器中的位段REG[3:0]的值,可以由软件读ADD0L/H - ADD15L/H。
如令 REGSEL = 0, REG[3:0] = 5,则读直接寻址区中 96H 地址即对读寄存器 ADD5L,读直接寻址区中97H地址即读寄存器
ADD5H。
在10BIT模式下,结果的存储也是按上表的方式存储,但有效位为A11 - A2,而A1 - A0自动填充为0,这样做主要是考虑ADC
的转换速率的提高,10bit模式下一个通道转换时间比12BIT模式下节省2个ADC时间周期。
113
SH79F1615
Table 8.49 比较控制寄存器
91H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADCMPCON
ADLIE
ADGIE
ADLIF
ADGIF
CSEL3
CSEL2
CSEL1
CSEL0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7
ADLIE
下限比较中断使能位
0:禁止下限比较中断
1:使能下限比较中断
6
ADGIE
上限比较中断使能位
0:禁止上限比较中断
1:使能上限比较中断
ADLIF
下限比较中断标志位
0:无下限中断发生,CSEL位段所指定结果寄存器中的最近一次更新值大于
ADDLTH/L中的值
1:发生下限中断,CSEL位段所指定结果寄存器中的最近一次更新值小于等于
ADDLTH/L中的值
该标志置起后需由软件清0
ADGIF
上限比较中断标志位
0:无上限中断发生,CSEL位段所指定结果寄存器中的最近一次更新值小于
ADDGTH/L中的值
1:发生上限中断,CSEL位段所指定结果寄存器中的最近一次更新值大于等于
ADDGTH/L中的值
该标志置起后需由软件清0
5
4
3-0
CSEL[3:0]
说明
用于比较的结果寄存器选择位段
0:选择ADD0L/H中的值与ADDGTL/H、ADDLTL/H比较
1:选择ADD1L/H中的值与ADDGTL/H、ADDLTL/H比较
2:选择ADD2L/H中的值与ADDGTL/H、ADDLTL/H比较
3:选择ADD3L/H中的值与ADDGTL/H、ADDLTL/H比较
4:选择ADD4L/H中的值与ADDGTL/H、ADDLTL/H比较
5:选择ADD5L/H中的值与ADDGTL/H、ADDLTL/H比较
6:选择ADD6L/H中的值与ADDGTL/H、ADDLTL/H比较
7:选择ADD7L/H中的值与ADDGTL/H、ADDLTL/H比较
8:选择ADD8L/H中的值与ADDGTL/H、ADDLTL/H比较
9:选择ADD9L/H中的值与ADDGTL/H、ADDLTL/H比较
10:选择ADD10L/H中的值与ADDGTL/H、ADDLTL/H比较
11:选择ADD11L/H中的值与ADDGTL/H、ADDLTL/H比较
12:选择ADD12L/H中的值与ADDGTL/H、ADDLTL/H比较
13:选择ADD13L/H中的值与ADDGTL/H、ADDLTL/H比较
14:选择ADD14L/H中的值与ADDGTL/H、ADDLTL/H比较
15:选择ADD15L/H中的值与ADDGTL/H、ADDLTL/H比较
114
SH79F1615
Table 8.50 ADC上限比较寄存器
第7位
9EH
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADDGTL
GT7
GT6
GT5
GT4
GT3
GT2
GT1
GT0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
9FH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADDGTH
GT15
GT14
GT13
GT12
GT11
GT10
GT9
GT8
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
7-0
GT15 - GT0
说明
当一次序列转换完成时,ADCMPCON寄存器中CSEL位段指定结果寄存器的值立刻
与ADDGTL/H中的值比较,若大于等于ADDGTL/H中的值则令ADCMPCON中的
ADGIF位置1,ADGIF位将保持为1直到软件将其清除
Table 8.51 ADC下限比较寄存器
9CH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADDLTL
LT7
LT6
LT5
LT4
LT3
LT2
LT1
LT0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
9DH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
ADDLTH
LT15
LT14
LT13
LT12
LT11
LT10
LT9
LT8
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
7-0
LT15- LT0
说明
当一次序列转换完成时,ADCMPCON寄存器中CSEL位段指定结果寄存器的值立刻
与ADDLTL/H中的值比较,若小于等于ADDLTL/H中的值则令ADCMPCON中的
ADLIF位置1,ADLIF位将保持为1直到软件将其清除
115
SH79F1615
8.4.4 序列转换工作模式
SC = 0,ADC配置为序列转换模式,一次转换一个序列。序列由单个通道或多个通道组成,对序列进行转换即对序列中的
通道进行逐个转换。在硬件上,使得多个信号在同一时间点上转换得以实现(2通道间最短采样间隔1us,可近似看作同时)。
转换的结果储存在对应的结果寄存器中,序列转换完成的同时,把指定的某个结果寄存器的值与ADDGTL/H和ADDLTL/H
的值比较,并以标志指示比较的结果。
序列转换中通道的选择设置
一个序列可包含单个或多个通道,将待转换的通道号分别存放在通道寄存器SEQCHx中(x = 0 - 15),寄存器SEQCHx有
16组,所以序列转换时,一次最多可转换16路通道。而每次转换的通道数量由寄存器ADCH2中的GRP[3:0]的值决定。例:GRP[3:0]
= 0,即单通道转换,将SEQCH0中存放的通道进行转换;GRP[3:0] = 3,则序列中有4路通道,将SEQCH0到SEQCH3中存放
的通道依次转换。
通道寄存器SEQCHx(x = 0 - 15)中存放的即是待转换的通道号。例:有3路通道需要转换,按优先级排序为OP1OUT,
CH2,CH9,则设置为GRP[3:0] = 2,SEQCH0 = 12,SEQCH1 = 2,SEQCH2 = 9,将依次转换。(注意:需要转换的通道必
须配置为AD通道功能。SEQCHx中也可设置相同的通道号,比如将SEQCHx中的值全设置为CH3,结果寄存器中储存的将是不
同时间段的CH3的转换值。)
寄存器SEQCHx(x = 0 - 15)与ADDxL共享一个地址96H,访问时需要由SEQCON寄存器中的REGSEL位和REG[3:0]位区
分,REGSEL = 1时,读写直接寻址寄存器96H即访问通道转换寄存器SEQCHx,而REG[3:0]的值确定x的值。这里REG[3:0] = 0
即访问SEQCH0寄存器,依次类推,可设置SEQCH0 - SEQCH15中的通道号。
序列转换模式ADC结果寄存器
序列转换的结果依次储存在结果寄存器ADDxL/H(x = 0 - 15)中,结果寄存器为只读寄存器。由寄存器SEQCON中的ALR
位决定转换结果的存储方式,ALR = 0(默认)时结果按左对齐存储在ADDxL/H中,ALR = 1时结果按右对齐存储在ADDxL/H中,
如图8-4-2。一个序列转换完毕,结果寄存器ADDxL/H中的值也更新了一次。由于ADDxL和SEQCHX(通道寄存器)共享一个地
址96H,需要由SEQCON寄存器中的REGSEL位和REG[3:0]位区分。REGSEL = 0时,读直接寻址区的97H,96H即访问结果寄
存器ADDxL/H,而REG[3:0]的值确定x的值。比如REG[3:0] = 0,访问直接寻址区97H,96H即访问ADD0L/H。以上节中的3路
通道转换为例,按优先级排序为OP1OUT,CH2,CH9,结果依次储存在ADDxL/H(x = 0 - 2),如图8-4-3。(注意:如果想转
换上述的3个通道,而GRP[3:0] = 1,则最后一个SEQCH2中的通道9则不转换,读取ADD2L/H的值是无效值;相反如果设置了
GRP[3:0] = 3,则多转换了一路通道,第4路通道是SEQCH3中的值对应的通道。)
MSB
LSB
ADDHx(97H)
A11
A10
A9
A8
ADDLx(96H)
A3
A2
A1
A0
A7
A6
A5
A4
ALR=0
MSB
ADDHx(97H)
ADDLx(96H)
A7
LSB
A6
A5
A4
ALR=1
图8-4-2
116
A11
A10
A9
A8
A3
A2
A1
A0
SH79F1615
GRP[3:0]=2
Result
OP1OUT
SEQCH0 =12
CH2
SEQCH1= 2
CH9
SEQCH2 = 9
sequencer
CHx
SEQCH3 = x
CHx
SEQCH14 = x
ADD0L/H
ADD1L/H
ADD2L/H
ADD3L/H
ADD14L/H
CHx
SEQCH15 = x
ADD15L/H
图8-4-3
序列转换时通道之间时间间隔(Gap Time)的设置
序列转换时,从上一个通道转换完毕时刻到下一个通道开始采样时刻之间的时间可以通过寄存器ADCON2中的TGAP位段来
设置。当TGAP[2:0] = 0时,一个通道转换完毕后立即开始下一个通道的采样,之间没有等待时间。
序列转换模式的启动和停止
序列转换模式的启动可以分为软件启动和硬件启动。
软件启动,通过将ADCON1中的ADON位置1,这样可以使能ADC模块的时钟ADC_CLK,同时令ADON位置1可以令ADC
—---—-----—
—---—-----—
模块中的模拟电路上电。当ADCON1寄存器中的GO/DONE位置1,则启动序列转换。当一次序列转换完成,由硬件将GO/DONE
—---—-----—
—---—-----—
清0,同时进行比较(在8.4.6节中详细阐述)。当读取GO/DONE为1时,则标志转换进行未完成。如果在转换过程中清0 GO/DONE
位,则终止转换。
硬件启动有2种方式,TIMER2的溢出触发启动一次序列转换和PWM0/1/2模块触发信号启动一次序列转换。具体通过设置
ADCON1寄存器中的PWMTRGEN位和TIMETRGEN位以及PWM0/1/2模块的相关寄存器。
硬件触发信号优先于软件触发信号。当软件已经处于序列转换中时,硬件触发会终止先前的序列转换而重新启动一次序列
转换,转换值将会覆盖先前的结果。另外如果在连续转换期间,有硬件触发信号过来,会清0SC位终止连续转换,并重新触发
一次序列转换。建议在使用硬件触发功能时,将SC清0。
PWM0/1/2模块的触发序列转换过程中,又进来一次TIMER2的触发信号,则序列将会终止先前的转换重新启动一次,转换
值将覆盖先前的结果;反之TIMER2触发序列的转换过程中,又进来一次PWM0/1/2的触发信号,则也会终止先前的转换,重新
启动一次序列,转换值覆盖先前的结果。
—---—-----—
注意:在序列转换过程中,即GO/DONE为1时,对除了ADCON1、ADCMPCON、SEQCON、ADDGTL/H、ADDLTL/H以
外的所有ADC寄存器的写入都将视为无效操作。
序列转换完成中断
序列转换完毕后,ADCON1中的ADCIF位将由硬件置起,此时若ADCON1中ADCIE位为1,同时IEN0寄存器中的EADC和
EA位为1,则将触发序列转换完成中断,ADCIF位只能由软件清除。
比较中断
序列转换完的同时,会将指定结果寄存器的值去比较,若超限,也可以产生一个比较中断,因为比较和序列转换完成是同
时发生的,所以中断的产生也是同时,并且共用一个中断入口。(在8.4.6节中详细阐述)
117
SH79F1615
8.4.5 连续转换工作模式
SC = 1选择连续转换工作模式,序列循环转换,转换完一个序列便进行此序列的下一次转换。连续转换的一些寄存器设置
可参考“序列转换工作模式”,和序列转换不同的是该模式将循环转换序列,一个序列转换完成到下个序列开始转换的时间也是由
TGAP[2:0]控制的。每次序列转换完成的同时,把指定的某个结果寄存器的值与ADDGTL/H和ADDLTL/H的值比较,并以标志指
示比较的结果。
连续转换模式的转换结果,也会时时更新,会在每个通道转换完成后第一时间更新入对应的结果寄存器。
连续转换功能的启动和停止
—---—-----—
连续转换功能只有通过软件启动,在SC = 1时,通过置位GO/DONE来启动,通过软件清0 SC位来终止。当清0SC位时,
—---—-----—
—---—-----—
AD转换将在当前序列转换结束时停止,并且GO/DONE自动清0,同时进行比较;而手动清GO/DONE会立刻终止转换。
启动连续转换功能后,ADCIF会在每次序列转换完成时置起,比较功能也会在每次序列转换完成时进行。如果发生指定的
结果寄存器值超限,会置位相应的标志位ADGIF、ADLIF,如果相应的中断允许位开启,则会产生中断。
—---—-----—
注意:在连续转换过程中,即GO/DONE为1时,对除了ADCON1、SEQCON、ADCMPCON、ADDGTL/H、ADDLTL/H以
外的所有ADC寄存器的写入都将视为无效操作。
序列转换完成中断
每次序列转换完毕后,ADCON1中的ADCIF位都会置起,此时若ADCON1中ADCIE位为1,同时IEN0寄存器中的EADC和
EA位为1,则将触发序列转换完成中断,此时ADCIF位必须在中断程序中由软件清除。
比较中断
每次序列转换完成时,都会将指定结果寄存器的值去作比较,如果超限,也可以产生一个比较中断。因为比较和序列转换
完成是同时发生的,所以中断的产生也是同时,并且共用一个中断入口。(在8.4.6节中详细阐述)
8.4.6 比较功能
比较用结果寄存器的指定
由寄存器ADCMPCON中的CSEL位段来指定被比较的结果寄存器,若CSEL = n,则结果寄存器ADDnL/H将与ADDGTL/H
和ADDLTL/H的值比较。以图8-4-3的配置为例,若设置CSEL = 2,每次序列转换完成的同时将ADD2L/H的值与ADDGTL/H和
ADDLTL/H的值比较。
需要注意的是,若指定一个序列转换不使用的结果寄存器,则不会发生任何比较动作。如上例中令CSEL = 3,转换后未使
用结果寄存器ADD3L/H,故没有任何比较动作发生,标志位ADGIF和ADLIF的值不会发生变化。
注意:在写入比较值ADDGTL/H和ADDTL/H时,应注意结果寄存器的存储方式是左对齐还是右对齐,数据写入格式应和结
果寄存器的存储格式一致,如果是在10BIT模式下比较,则写入的值只比较A11 - A2前10位,剩下2位不作比较。ADDGTL/H和
ADDTL/H写入值有即时生效性,比较时会采用ADDGTL/H和ADDTL/H最近一次的更新值。
比较过程
设CSEL = n,ADDGTL/H = Max,ADDLTL/H = Min,当序列转换完成时,立即将指定结果寄存器ADDnL/H的值与Max和
Min比较。若ADDnL/H >= Max,则ADCMPCON寄存器中ADGIF位将置1,若ADGIE位为1,则可以触发一个比较中断(与序列
转换完成共享一个中断向量),ADGIF位将保持为1直到软件将其清除;若ADDnL/H VLVR或VDD < VLVR,但持续时间 < TLVR时不会产生系统复位。
通过代码选项,可以选择LVR功能的打开与关闭。
在交流电或大容量电池应用中,接通大负载后容易导致MCU供电暂时低于定义的工作电压。低电压复位可以应用于此,保
护系统在低于设定电压下产生有效复位。
123
SH79F1615
8.7 看门狗定时器(WDT),程式超范围溢出(OVL)复位及其它复位状态
8.7.1 特性
程式超范围溢出后硬件自动检测,并产生 OVL 复位
看门狗可以工作在掉电模式下
看门狗溢出频率可选
程序超范围溢出复位
SH79F1615为进一步增强CPU运行可靠性,内建程式超范围溢出检测电路,一旦检测到程式计数器的值超出ROM最大值,
或者发现指令操作码(不检测操作数)为8051指令集中不存在的A5H,便认为程式跑飞,产生CPU复位信号,同时将WDOF标
志位置1。为应用这个特性,用户应该将未使用的Flash ROM用0xA5填满。
看门狗
看门狗定时器是一个递减计数器,独立内建RC振荡器作为其时钟源,因此可以通过代码选项选择在掉电模式下仍持续运行。
当定时器溢出时,将芯片复位。通过代码选项可以打开或关闭该功能。
WDT控制位(第2 - 0位)用来选择不同的溢出时间。定时器溢出后,WDT溢出标志(WDOF)将由硬件自动置1。通过读
写RSTSTAT寄存器,看门狗定时器在溢出前重新开始计数。
其它一些复位标志列举如下:
124
SH79F1615
8.7.2 寄存器
Table 8.53 复位状态寄存器
B1H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
RSTSTAT
WDOF
-
PORF
LVRF
CLRF
WDT.2
WDT.1
WDT.0
读/写
读/写
-
读/写
读/写
读/写
读/写
读/写
读/写
复位值 (POR)
0
-
1
0
0
0
0
0
复位值 (WDT)
1
-
u
u
u
0
0
0
复位值 (LVR)
u
-
u
1
u
0
0
0
复位值 (PIN)
u
-
u
u
1
0
0
0
位编号
7
5
4
3
2-0
位符号
说明
WDOF
看门狗溢出或程式超范围溢出标志位
看门狗溢出时由硬件置1,可由软件或上电复位清0
0:未发生WDT溢出或程式超范围溢出
1:发生WDT溢出或程式超范围溢出
PORF
上电复位标志位
上电复位后硬件置1,只能由软件清0
0:没有发生上电复位
1:发生过上电复位
LVRF
低压复位标志位
低压复位后置1,可由软件或上电复位清0
0:没有发生低压复位
1:发生过低压复位
CLRF
Reset引脚复位标志位
引脚复位后置1,由软件或上电复位清0
0:没有发生引脚复位
1:发生过引脚复位
WDT[2:0]
WDT溢出周期控制位
000:溢出周期最小值 = 4096ms(此档特殊,溢出产生的是上电复位标志PORF)
001:溢出周期最小值 = 1024ms
010:溢出周期最小值 = 256ms
011:溢出周期最小值 = 128ms
100:溢出周期最小值 = 64ms
101:溢出周期最小值 = 16ms
110:溢出周期最小值 = 4ms
111:溢出周期最小值 = 1ms
注意:应用中如果看门狗打开,程式清看门狗的最大间隔时间不能大于以上所列
最小值
125
SH79F1615
8.8 电源管理
8.8.1 特性
空闲模式和掉电模式两种省电模式
发生中断和复位可退出空闲(Idle)、掉电(Power-Down)模式
为减少功耗,SH79F1615提供两种低功耗省电模式:空闲模式和掉电模式,这两种模式都由PCON和SUSLO寄存器控制。
8.8.2 空闲模式
空闲模式能够降低系统功耗,在此模式下,程序中止运行,CPU时钟停止,但外部设备时钟继续运行。空闲模式下,CPU
在确定的状态下停止,并在进入空闲模式前所有CPU的状态都被保存,如PC,PSW,SFR,RAM等。
两条连续指令:先设置SUSLO寄存器为55H,随即将PCON寄存器中的IDL位置1,使SH79F1615进入空闲模式。如果按顺
序要求的连续指令不被满足,CPU在下一个机器周期清除SUSLO寄存器或IDL位,CPU也不会进入空闲模式。
IDL位置1是CPU进入空闲模式之前执行的最后一条指令。
两种方式可以退出空闲模式:
(1) 产生一个中断。立即恢复CPU时钟,硬件清除SUSLO寄存器和PCON寄存器的IDL位。然后执行中断服务程序,随后跳
转到进入空闲模式指令之后的指令。
(2) 复位信号产生后(复位引脚上出现低电平,WDT复位,LVR复位)。在预热定时结束之后,CPU恢复时钟,SUSLO寄
存器和在PCON寄存器中的IDL位被硬件清除,最后SH79F1615复位。然后程序从地址位0000H开始执行。RAM保持不变而SFR
的值根据不同功能模块改变。
8.8.3 掉电模式
掉电模式可以使SH79F1615进入功耗非常低的状态。掉电模式将停止CPU和外围设备的所有时钟信号(掉电模式会自动关闭
内部ADC模块供电,但不会关闭OP和CMP模块供电,如需切断相应模块供电,须软件手动关闭该模块)。如果WDT使能,WDT
模块将继续工作。在进入掉电模式前所有CPU的状态都被保存,如PC,PSW,SFR,RAM等。
两条连续指令:先设置SUSLO寄存器为55H,随即将PCON寄存器中的PD位置1,使SH79F1615进入掉电模式。如果按顺
序要求的连续指令不被满足,CPU在下一个机器周期清除SUSLO寄存器或的IDL位,CPU也不会进入掉电模式。
PD位置1是CPU进入掉电模式之前执行的最后一条指令。
注意:如果同时设置IDL位和PD位,SH79F1615进入掉电模式。退出掉电模式后,CPU也不会进入空闲模式,从掉电模式
退出后硬件会清除IDL及PD位。
有两种方式可以退出掉电模式:
(1) 有效外部中断(如INT0,INT1,INT4)和一定情况下的Timer3中断(详见定时器3章节)能使SH79F1615退出掉电模
式。在中断发生后振荡器启动,CPU时钟和外部设备时钟立即恢复,SUSLO寄存器和PCON寄存器中的PD位会被硬件清除,然
后程序运行中断服务程序。在完成中断服务程序之后,跳转到进入掉电模式之后的指令继续运行。
(2) 复位信号(复位引脚上出现低电平,WDT复位如果被允许,LVR复位如果被允许)。在预热计时之后会恢复CPU时钟,
SUSLO寄存器和PCON寄存器中的PD位会被硬件清除,最后SH79F1615会被复位。然后程序会从0000H地址位开始运行。RAM
将保持不变,而根据不同功能模块SFR的值可能改变。
注意:如要进入这两种低功耗模式,必须在置位PCON中的IDL/PD位后增加3个空操作指令。
126
SH79F1615
8.8.4 寄存器
Table 8.54 电源控制寄存器
87H
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
PCON
SMOD
SSTAT
IT41
IT40
GF1
GF0
PD
IDL
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
说明
7
SMOD
UART波特率加倍器
6
SSTAT
SCON[7:5]功能选择位
5-4
IT4[1:0]
外部中断4模式选择控制位
3-2
GF[1:0]
用于软件的通用标志
1
PD
掉电模式控制位
0:当一个中断或复位产生时由硬件清0
1:由软件置1激活掉电模式
0
IDL
空闲模式控制位
0:当一个中断或复位产生时由硬件清0
1:由软件置1激活空闲模式
Table 8.55 省电模式控制寄存器
8EH
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
SUSLO
SUSLO.7
SUSLO.6
SUSLO.5
SUSLO.4
SUSLO.3
SUSLO.2
SUSLO.1
SUSLO.0
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
读/写
复位值
(POR/WDT/LVR/PIN)
0
0
0
0
0
0
0
0
位编号
位符号
7-0
SUSLO[7:0]
说明
此寄存器用来控制CPU进入省电模式(空闲或掉电)。只有像下面的连续指令才能使
CPU进入省电模式,否则在下个周期中SUSLO,IDL或PD位将被硬件清0
程序举例:
IDLE_MODE:
MOV
ORL
NOP
NOP
NOP
SUSLO,#55H
PCON,#01H
POWERDOWN_MODE:
MOV
SUSLO,#55H
ORL
PCON,#02H
NOP
NOP
NOP
127
SH79F1615
8.9 预热计数器
8.9.1 特性
内建电源预热计数器消除电源的上电的不稳定状态
内建振荡器预热计数器消除振荡器起振时的不稳定状态
SH79F1615内建有电源上电预热计数器,主要是用来消除上电电压建立时的不稳定态,同时完成内部一些初始化序列,如
读取内部客户代码选项等。
SH79F1615还内建振荡器预热计数器,它能消除振荡器在下列情况下起振时的不稳定状态:上电复位,引脚复位,从低功
耗模式中唤醒,看门狗复位和LVR复位。
上电后,SH79F1615会先经过电源上电预热计数过程,等待溢出后再进行振荡器的预热计数过程过程,溢出后开始运行程
式。
电源上电预热计数时间
上电复位/
按键复位/低压复位
WDT复位
(不在掉电情况下)
WDT复位
(从掉电情况唤醒)
从掉电情况下唤醒
(只是中断唤醒)
电源上电
预热计数时间
振荡器上电
预热计数
电源上电
预热计数时间
振荡器上电
预热计数
电源上电
预热计数时间
振荡器上电
预热计数
电源上电
预热计数时间
振荡器上电
预热计数
11ms
有
≈1ms
无
≈1ms
有
≈800us
有
振荡器上电预热计数时间
Option:
OP_WMT
00
01
10
11
217 X Tosc
214 X Tosc
211 X Tosc
28 X Tosc
振荡器类型
陶振/晶振
27 X Tosc
内部RC
128
SH79F1615
8.10 代码选项
OP_LVREN:
0:禁止低电压复位功能(默认)
1:允许低电压复位功能
OP_LVRLE:
0:低电压复位设定电压为4.1V(默认)
1:低电压复位设定电压为2.8V
OP_RST:
0:引脚P1.5用作复位引脚(默认)
1:引脚P1.5用作I/O口
OP_WDT:
0:允许WDT功能
1:禁止WDT功能(默认)
OP_WDTPD:
0:禁止掉电模式下WDT功能(默认)
1:允许掉电模式下WDT功能
OP_WMT:(除了RC)
00:振荡器采用最长预热计数时间(默认)
01:振荡器采用比较长预热计数时间
10:振荡器采用比较短预热计数时间
11:振荡器采用最短预热计数时间
OP_SCM:
0:在预热期间禁止时钟单元检测功能(默认)
1:在预热期间允许时钟单元检测功能
OP_OSC:
0000:单振荡器模式,选中内部27MHz RC振荡器(默认)
0011:双振荡器模式,内部128KHz RC振荡器作为振荡器1,27MHz 内部RC作为振荡器2
0110:双振荡器模式,内部128KHz RC振荡器作为振荡器1,400k-16MHz晶体/陶瓷谐振器作为振荡器2
1110:单振荡器模式,选中400k-16MHz晶体/陶瓷谐振器
P2 N buffer enlarge Sink current:
0:P2口灌电流能力增强功能关闭(默认)
1:P2口灌电流能力增强功能开启
P3/P0 P buffer enlarge Driving current:
0:P3/P0口拉电流能力增强功能关闭(默认)
1:P3/P0口拉电流能力增强功能开启
OP_CRMC:
0:振荡源为晶振时选取(默认)
1:振荡源为陶振时选取
OP_OSCDRV:
11:400k-16MHz晶体/陶瓷谐振器的驱动能力选择最高档(默认)
10:400k-16MHz晶体/陶瓷谐振器的驱动能力选择较高档
01:400k-16MHz晶体/陶瓷谐振器的驱动能力选择较低档
00:400k-16MHz晶体/陶瓷谐振器的驱动能力选择最低档
129
SH79F1615
9. 指令集
算术操作指令
指令
功能描述
代码
字节
周期
ADD A,Rn
累加器加寄存器
0x28-0x2F
1
1
ADD A,direct
累加器加直接寻址字节
0x25
2
2
ADD A,@Ri
累加器加内部RAM
0x26-0x27
1
2
ADD A,#data
累加器加立即数
0x24
2
2
ADDC A,Rn
累加器加寄存器和进位位
0x38-0x3F
1
1
ADDC A,direct
累加器加直接寻址字节和进位位
0x35
2
2
ADDC A,@Ri
累加器加内部RAM和进位位
0x36-0x37
1
2
ADDC A,#data
累加器加立即数和进位位
0x34
2
2
SUBB A,Rn
累加器减寄存器和借位位
0x98-0x9F
1
1
SUBB A,direct
累加器减直接寻址字节和借位位
0x95
2
2
SUBB A,@Ri
累加器减内部RAM和借位位
0x96-0x97
1
2
SUBB A,#data
累加器减立即数和借位位
0x94
2
2
INC A
累加器加1
0x04
1
1
INC Rn
寄存器加1
0x08-0x0F
1
2
INC direct
直接寻址字节加1
0x05
2
3
INC @Ri
内部RAM加1
0x06-0x07
1
3
DEC A
累加器减1
0x14
1
1
DEC Rn
寄存器减1
0x18-0x1F
1
2
DEC direct
直接寻址字节减1
0x15
2
3
DEC @Ri
内部RAM减1
0x16-0x17
1
3
数据指针加1
0xA3
1
累加器乘寄存器B
0xA4
1
累加器除以寄存器B
0x84
1
4
11
20
11
20
十进制调整
0xD4
1
INC DPTR
MUL AB
DIV AB
DA A
8X8
16 X 8
8/8
16 / 8
130
1
SH79F1615
逻辑操作指令
指令
功能描述
代码
字节
周期
累加器与寄存器
0x58-0x5F
1
1
ANL A,direct
累加器与直接寻址字节
0x55
2
2
ANL A,@Ri
累加器与内部RAM
0x56-0x57
1
2
ANL A,#data
累加器与立即数
0x54
2
2
ANL direct,A
直接寻址字节与累加器
0x52
2
3
ANL direct,#data
直接寻址字节与立即数
0x53
3
3
ORL A,Rn
累加器或寄存器
0x48-0x4F
1
1
ORL A,direct
累加器或直接寻址字节
0x45
2
2
ORL A,@Ri
累加器或内部RAM
0x46-0x47
1
2
ORL A,#data
累加器或立即数
0x44
2
2
ORL direct,A
直接寻址字节或累加器
0x42
2
3
ORL direct,#data
直接寻址字节或立即数
0x43
3
3
XRL A,Rn
累加器异或寄存器
0x68-0x6F
1
1
XRL A,direct
累加器异或直接寻址字节
0x65
2
2
XRL A,@Ri
累加器异或内部RAM
0x66-0x67
1
2
XRL A,#data
累加器异或立即数
0x64
2
2
XRL direct,A
直接寻址字节异或累加器
0x62
2
3
XRL direct,#data
直接寻址字节异或立即数
0x63
3
3
CLR A
累加器清零
0xE4
1
1
CPL A
累加器取反
0xF4
1
1
RL A
累加器左环移位
0x23
1
1
RLC A
累加器连进位标志左环移位
0x33
1
1
RR A
累加器右环移位
0x03
1
1
RRC A
累加器连进位标志右环移位
0x13
1
1
SWAP A
累加器高4位与低4位交换
0xC4
1
4
ANL A,Rn
131
SH79F1615
数据传送指令
指令
功能描述
代码
字节
周期
MOV A,Rn
寄存器送累加器
0xE8-0xEf
1
1
MOV A,direct
直接寻址字节送累加器
0xE5
2
2
MOV A,@Ri
内部RAM送累加器
0xE6-0xE7
1
2
MOV A,#data
立即数送累加器
0x74
2
2
MOV Rn,A
累加器送寄存器
0xF8-0xFF
1
2
MOV Rn,direct
直接寻址字节送寄存器
0xA8-0xAF
2
3
MOV Rn,#data
立即数送寄存器
0x78-0x7F
2
2
MOV direct,A
累加器送直接寻址字节
0xF5
2
2
MOV direct,Rn
寄存器送直接寻址字节
0x88-0x8F
2
2
MOV direct1,direct2
直接寻址字节送直接寻址字节
0x85
3
3
MOV direct,@Ri
内部RAM送直接寻址字节
0x86-0x87
2
3
MOV direct,#data
立即数送直接寻址字节
0x75
3
3
MOV @Ri,A
累加器送内部RAM
0xF6-0xF7
1
2
MOV @Ri,direct
直接寻址字节送内部RAM
0xA6-0xA7
2
3
MOV @Ri,#data
立即数送内部RAM
0x76-0x77
2
2
MOV DPTR,#data16
16位立即数送数据指针
0x90
3
3
MOVC A,@A+DPTR
程序代码送累加器(相对数据指针)
0x93
1
7
MOVC A,@A+PC
程序代码送累加器(相对程序计数器)
0x83
1
8
MOVX A,@Ri
外部RAM送累加器(8位地址)
0xE2-0xE3
1
5
MOVX A,@DPTR
外部RAM送累加器(16位地址)
0xE0
1
6
MOVX @Ri,A
累加器送外部RAM(8位地址)
0xF2-F3
1
4
MOVX @DPTR,A
累加器送外部RAM(16位地址)
0xF0
1
5
PUSH direct
直接寻址字节压入栈顶
0xC0
2
5
POP direct
栈顶弹至直接寻址字节
0xD0
2
4
XCH A,Rn
累加器与寄存器交换
0xC8-0xCF
1
3
XCH A,direct
累加器与直接寻址字节交换
0xC5
2
4
XCH A,@Ri
累加器与内部RAM交换
0xC6-0xC7
1
4
XCHD A,@Ri
累加器低4位与内部RAM低4位交换
0xD6-0xD7
1
4
132
SH79F1615
控制程序转移指令
指令
功能描述
代码
字节
周期
ACALL addr11
2KB内绝对调用
0x11-0xF1
2
7
LCALL addr16
64KB内长调用
0x12
3
7
RET
子程序返回
0x22
1
8
RETI
中断返回
0x32
1
8
AJMP addr11
2KB内绝对转移
0x01-0xE1
2
4
LJMP addr16
64KB内长转移
0x02
3
5
SJMP rel
相对短转移
0x80
2
4
JMP @A+DPTR
相对长转移
0x73
1
6
累加器为零转移
0x60
2
3
5
累加器为非零转移
0x70
2
3
5
C置位转移
0x40
2
2
4
C清零转移
0x50
2
2
4
直接寻址位置位转移
0x20
3
4
6
直接寻址位清零转移
0x30
3
4
6
直接寻址位置位转移并清该位
0x10
3
4
6
累加器与直接寻址字节不等转移
0xB5
3
4
6
累加器与立即数不等转移
0xB4
3
4
6
寄存器与立即数不等转移
0xB8-0xBf
3
4
6
内部RAM与立即数不等转移
0xB6-0xB7
3
4
6
寄存器减1不为零转移
0xD8-0xDf
2
3
5
直接寻址字节减1不为零转移
0xD5
3
4
6
空操作
0
1
1
JZ rel
(不发生转移)
(发生转移)
JNZ rel
(不发生转移)
(发生转移)
JC rel
(不发生转移)
(发生转移)
JNC rel
(不发生转移)
(发生转移)
JB bit,rel
(不发生转移)
(发生转移)
JNB bit,rel
(不发生转移)
(发生转移)
JBC bit,rel
(不发生转移)
(发生转移)
CJNE A,direct,rel (不发生转移)
(发生转移)
CJNE A,#data,rel (不发生转移)
(发生转移)
CJNE Rn,#data,rel (不发生转移)
(发生转移)
CJNE @Ri,#data,rel (不发生转移)
(发生转移)
DJNZ Rn,rel (不发生转移)
(发生转移)
DJNZ direct,rel (不发生转移)
(发生转移)
NOP
133
SH79F1615
位操作指令
指令
CLR C
功能描述
代码
字节
周期
C清零
0xC3
1
1
CLR bit
直接寻址位清零
0xC2
2
3
SETB C
C置位
0xD3
1
1
SETB bit
直接寻址位置位
0xD2
2
3
CPL C
C取反
0xB3
1
1
CPL bit
直接寻址位取反
0xB2
2
3
ANL C,bit
C逻辑与直接寻址位
0x82
2
2
ANL C,/bit
C逻辑与直接寻址位的反
0xB0
2
2
ORL C,bit
C逻辑或直接寻址位
0x72
2
2
ORL C,/bit
C逻辑或直接寻址位的反
0xA0
2
2
MOV C,bit
直接寻址位送C
0xA2
2
2
MOV bit,C
C送直接寻址位
0x92
2
3
134
SH79F1615
10. 电气特性
极限参数*
*注释
直流供电电压. . . . . . . . . . . . . . . . . . . . . . . . -0.3V to +6.0V
输入/输出电压. . . . . . . . . . . . . . . . .GND-0.3V to VDD+0.3V
工作环境温度. . . . . . . . . . . . . . . . . . . . . . . -40°C to +105°C
存储温度 . . . . . . . . . .. . . . . . . . . . . . . . . . .-55°C to +125°C
FLASH存储器写/擦除操作. . . . . . . . . . . . . . . . 0°C to +85°C
如 果 器 件 的 工 作 条 件 超 过 左 列“ 极 限 参 数 ” 的 范 围 ,将
造 成 器 件 永 久 性 破 坏 。只 有 当 器 件 工 作 在 说 明 书 所 规 定
的 范 围 内 时 功 能 才 能 得 到 保 障 。器 件 在 极 限 参 数 列 举 的
条件下工作将会影响到器件工作的可靠性。
直流电气特性(VDD = 2.4 - 5.5V,GND = 0V,TA = +25°C,除非另有说明)
参数
工作电压
符号
VDD
IOP1
最小值 典型值∗ 最大值
2.4
-
5.0
8
5.5
单位
V
15
ISB1
-
-
40
5
80
10
400k ≤ fOSC ≤ 27MHz
mA
fOSC = 27MHz,VDD = 5.0V
所有输出引脚无负载(所有数字输入引脚不浮动);
CPU打开(执行NOP指令);WDT打开;
所有功能模块关闭
µA
fOSC = 128kHz,VDD = 5.0V
所有输出引脚无负载(所有数字输入引脚不浮动);
CPU打开(执行NOP指令);WDT打开;
所有功能模块关闭
mA
fOSC = 27MHz,VDD = 5.0V
所有输出引脚无负载(所有数字输入引脚不浮动);
CPU停止工作(IDLE);WDT关;
LVR打开,关闭其它所有功能
工作电流
IOP2
条件
待机电流 (空闲模式)
ISB2
-
20
40
µA
fOSC = 128KHz,VDD = 5.0V
所有输出引脚无负载(所有数字输入引脚不浮动);
CPU停止工作(IDLE);WDT关;
LVR打开,关闭其它所有功能
待机电流 (掉电模式)
ISB3
-
15
30
µA
Osc off,VDD = 5.0V
所有输出引脚无负载;CPU停止(掉电模式);
WDT关闭;LVR关闭;关闭其它所有功能
LVR电流
ILVR1
-
1
-
µA
LVR打开,LVR电平 = 4.1V/2.8V
WDT电流
IWDT
-
1
3
µA
所有输出引脚无负载;看门狗打开VDD = 5.0V
输入低电压1
VIL1
GND
-
0.3 X VDD
V
I/O端口
输入高电压1
VIH1 0.7 X VDD
-
VDD
V
I/O端口
输入低电压2
VIL2
-
0.2 X VDD
V
输入高电压2
输入漏电流
上拉电阻
GND
VIH2 0.8 X VDD
-
VDD
V
——-------——
RST ,T0,T1,T2,T3,INT0/1/4,RXD
——-------——
RST ,T0,T1,T2,T3,INT0/1/4,RXD
IIL
-1
-
1
µA
输入口,VIN = VDD或者GND
RPH1
-
30
-
kΩ
VDD = 5.0V,VIN = GND
135
SH79F1615
续上表
输出高电压
VOH1 VDD - 0.7
-
-
V
I/O端口,IOH = -10mA,
VDD = 5.0V除P3,P0端口以外
输出高电压
VOH2 VDD - 0.7
-
-
V
I/O端口,IOH = -20mA,
VDD = 5.0V,P3,P0端口(Note 4)
输出低电压1
VOL1
-
-
GND + 0.6
V
I/O端口,IOL = 15mA,
VDD = 5.0V,除P2端口以外
输出低电压2
VOL2
-
-
GND + 1.5
V
I/O端口,IOL = 120mA,
VDD = 5.0V,P2端口(Note 4)
电压基准源精度
VBG
1.18
1.20
1.22
V
TA = -40 ~ +85°C(Note 3)
注意:
1. “∗”表示典型值下的数据是在5.0V,25°C下测得的,除非另有说明。
2. 流过VDD的最大电流值须小于150mA。流过GND的最大电流值须小于200mA。
3. 设计保证,实际测试时未包含温度.
4. 驱动口能力加大受代码选项控制。
高速转换模式下10BIT模/数转换器电气特性1(1LSB = VDD/1024)
转换速率为1M sps。(VDD = 2.7 - 5.5V,GND = 0V,TA = +25°C,除非另有说明)
符号
最小值
典型值
最大值
单位
工作电压范围
参数
VAD
2.7
5.0
5.5
V
精度
NR
-
10
-
bit
A/D输入电压
VAIN
GND
-
VREF
V
A/D输入电阻
RAIN
2
-
-
MΩ
外部模拟参考电压
VREF
2.5
-
VDD
V
模拟输入电压源推荐阻抗
ZAIN
-
-
10
kΩ
A/D转换电流
IAD
-
1.5
3
mA
ADC模块工作,VDD = 5.0V
微分非线性误差
DLE
-
-
±1
LSB
VDD = 5.0V,VREF = 5.0V,ADC CLK ≤ 27MHz
积分非线性误差
ILE
-
-
±2
LSB
VDD = 5.0V,VREF = 5.0V,ADC CLK ≤ 27MHz
满刻度误差
EF
-
-
±3
LSB
VDD = 5.0V,VREF = 5.0V,ADC CLK ≤ 27MHz
偏移量误差
EZ
-
-
±3
LSB
VDD = 5.0V,VREF = 5.0V,ADC CLK ≤ 27MHz
总绝对误差
EAD
-
-
±3
LSB
VDD = 5.0V,VREF = 5.0V,ADC CLK ≤ 27MHz
ADC时钟周期
tAD
0.03
-
80
µs
ADC采样时间
tSAMP
0.35
0.5
-
µs
总转换时间
TCON
14
-
27
tAD
136
条件
VREF = 5.0V
VIN = 5.0V
SH79F1615
低速转换模式下12BIT模/数转换器电气特性2(1LSB = VDD/4096)
转换速率为100K sps。(VDD = 2.7 - 5.5V,GND = 0V,TA = +25°C,除非另有说明)
符号
最小值
典型值
最大值
单位
工作电压范围
参数
VAD
2.7
5.0
5.5
V
条件
精度
NR
-
12
-
bit
A/D输入电压
VAIN
GND
-
VREF
V
A/D输入电阻
RAIN
2
-
-
MΩ
外部模拟参考电压
VREF
2.5
-
VDD
V
模拟电压源推荐阻抗
ZAIN
-
-
5
kΩ
A/D转换电流
IAD
-
1.5
3
mA
ADC模块工作,VDD = 5.0V
微分非线性误差
DLE
-
-
±1
LSB
VDD = 5.0V,VREF = 5.0V,ADC CLK ≤ 2.7MHz
积分非线性误差
ILE
-
-
±2
LSB
VDD = 5.0V,VREF = 5.0V,ADC CLK ≤ 2.7MHz
满刻度误差
EF
-
-
±8
LSB
VDD = 5.0V,VREF = 5.0V,ADC CLK ≤ 2.7MHz
偏移量误差
EZ
-
-
±8
LSB
VDD = 5.0V,VREF = 5.0V,ADC CLK ≤ 2.7MHz
总绝对误差
EAD
-
-
±8
LSB
VDD = 5.0V,VREF = 5.0V,ADC CLK ≤ 2.7MHz
ADC时钟周期
tAD
0.3
-
80
µs
ADC采样时间
tSAMP
2
4
-
µs
总转换时间
TCON
16
-
29
tAD
VREF = 5.0V
VIN = 5.0V
比较器1电气特性(VDD = 2.7 - 5.5V,GND = 0V,TA = +25°C,除非另有说明)
参数
符号
最小值
典型值
最大值
单位
条件
输入失调电压
VIO
-
2
3
mV
输入共模电压范围
VICM
0
-
VDD - 1.2
V
小信号响应时间
TRS1
-
1
2
µs
VDD = 5V,C1P = 1.25V,C1N = 1.20V
大信号响应时间
TRS2
-
0.3
0.5
µs
VDD = 5V,C1P = 3V,C1N = 1V
比较器2电气特性(VDD = 2.7 - 5.5V,GND = 0V,TA = +25°C,除非另有说明)
符号
最小值
典型值
最大值
单位
输入失调电压
参数
VIO
-
2
3
mV
输入共模电压范围
VICM
0
-
VDD - 1.2
V
小信号响应时间
TRS1
-
1
2
µs
VDD = 5V,C2P = 1.25V,C2N = 1.20V
大信号响应时间
TRS2
-
0.3
0.5
µs
VDD = 5V,C2P = 3V,C2N = 1V
比较器施密特窗口1
VSMT1
-
0
-
mv
VDD = 5V,C2SMT[1:0] = 00
比较器施密特窗口2
VSMT2
-
5
8
mv
VDD = 5V,C2SMT[1:0] = 01
比较器施密特窗口3
VSMT3
-
10
16
mv
VDD = 5V,C2SMT[1:0] = 10
比较器施密特窗口4
VSMT4
-
20
30
mv
VDD = 5V,C2SMT[1:0] = 11
137
条件
SH79F1615
放大器1电气特性(VDD = 2.7 - 5.5V,GND = 0V,TA = +25°C,除非另有说明)
参数
符号
最小值
典型值
最大值
单位
输入失调电压
VIO
-
2
3
mV
输入共模电压
VICM
0
-
VDD - 1.2
V
-
0.015%
-
SR
5
-
-
V/us
输出电压范围
VOUR
0.1
-
VDD - 0.5
V
电压抑制比
SVR
-
65
-
dB
直流特性
共模抑制比
CMRR
-
80
-
dB
直流特性
IO
30
-
-
mA
VDD = 5V,VOUT =1.0V (灌电流) or 4V (拉电流)
BW
2
8
-
MHz
电压跟随器模式
温度系数
转换速率
输出能力
(灌电流和拉电流能力)
增益带宽
条件
TA = 25°C
VOUT = 2.5V,温度变每化1°C,输出电压的变化率
电压跟随器模式
交流电气特性(VDD = 2.4 - 5.5V,GND = 0V,TA = +25°C,除非另有说明)
参数
符号
最小值
复位脉冲宽度
tRESET
典型值
最大值
单位
复位引脚上拉电阻
RRPH
10
-
-
µs
低电平有效
-
30
-
kΩ
VDD = 5.0V,VIN = GND
| ∆ F|/
F
-
0.5
±1
%
内部RC振荡器频率精度:(1024个周期求平均值)
|FRC - 27MHz|/27MHz X 100%
(VDD = 2.4 - 5.5V,TA = 25°C)
| ∆ F|/
F
-
-
±3
%
内部RC振荡器频率精度:(1024个周期求平均值)
|FRC - 27MHz|/27MHz X 100%
(VDD = 2.4 - 5.5V,TA = -40°C至+105°C)
频率稳定性 (RC)
条件
低电压复位电气特性(VDD = 2.4 - 5.5V,GND = 0V,TA = +25°C,除非另有说明)
参数
符号
最小值
典型值
最大值
单位
LVR电压1
VLVR1
4.0
4.1
4.2
V
LVR1使能
LVR电压2
VLVR2
2.7
2.8
2.9
V
LVR2使能
辅助LVR
VLVR
2.2
2.3
2.4
V
内部辅助LVR(始终有效)
VSMTLV
-
50
-
mv
TLVR
-
30
-
µs
LVR电压检测迟滞窗口
LVR低电压复位宽度
138
条件
SH79F1615
11. 订购信息
产品编号
封装
SH79F1615P/032PR
LQFP32
SH79F1615Q/032QA
QFN32
139
SH79F1615
12. 封装信息
LQFP32 Outline Dimensions
unit: inches/mm
HD
D
25
24
8
17
E
1
HE
32
e
b 16
See Detail F
Symbol
A
θ
L
L1
A1
A2
c
9
DETAIL F
Dimensions in inches
Dimensions in mm
MIN
MAX
MIN
MAX
A
0.057
0.065
1.45
1.65
A1
0.000
0.008
0.01
0.21
A2
0.051
0.059
1.30
1.50
D
0.268
0.281
6.80
7.15
E
0.268
0.281
6.80
7.15
HD
0.346
0.362
8.80
9.20
HE
0.346
0.362
8.80
9.20
b
0.010
0.017
0.25
0.44
e
0.031 TYP
0.8 TYP
c
0.005 TYP
0.127 TYP
L
0.016
0.031
0.40
0.78
L1
0.035
0.043
0.90
1.10
θ
0°
10°
0°
10°
140
SH79F1615
QFN32L (4 X 4) 外形尺寸
单位: 英寸/毫米
e
D
L1
k
E
E1
D1
b
Top View
A1
Bottom View
A2
A
Side View
Dimensions in inches
Dimensions in mm
Symbol
MIN
MAX
MIN
MAX
A
0.028
0.031
0.700
0.900
A1
0.000
0.002
0.000
0.050
0.008REF
A2
0.203REF
D
0.154
0.160
3.924
4.076
E
0.154
0.160
3.924
4.076
D1
0.098
0.106
2.500
2.700
E1
0.098
0.106
2.500
2.700
k
0.008
---
0.200
---
b
0.006
0.010
0.150
e
L1
0.016TYP
0.013
0.250
0.400TYP
0.019
141
0.324
0.476
SH79F1615
13. 规格更改记录
版本
记录
日期
2.1
删除了24pin封装,增加了32pinQFN封装
2017年9月
2.0
更新封裝信息并新增了24 pin封裝
2015年7月
1.0
初始版本
2013年12月
142
SH79F1615
目录
特性 ................................................................................................................................................................................. 1
概述 ................................................................................................................................................................................. 1
方框图.............................................................................................................................................................................. 2
引脚配置 .......................................................................................................................................................................... 3
引脚描述 .......................................................................................................................................................................... 5
SFR映像 .......................................................................................................................................................................... 7
标准功能 ........................................................................................................................................................................ 16
7.1 CPU .................................................................................................................................................................................................... 16
7.1.1 内核特殊功能寄存器 ................................................................................................................................................................. 16
7.1.2 CPU增强内核特殊功能寄存器.................................................................................................................................................. 17
7.2 RAM ................................................................................................................................................................................................... 18
7.3 FLASH程序存储器 .............................................................................................................................................................................. 19
7.3.1 特性 ............................................................................................................................................................................................. 19
7.3.2 ICP模式下的Flash操作 .............................................................................................................................................................. 21
7.4 SSP ..................................................................................................................................................................................................... 22
7.4.1 寄存器 ......................................................................................................................................................................................... 22
7.4.2 Flash控制流程图 ........................................................................................................................................................................ 25
7.4.3 SSP编程注意事项 ....................................................................................................................................................................... 26
7.4.4 可读识别码 ................................................................................................................................................................................. 26
7.5 系统时钟和振荡器 ............................................................................................................................................................................ 27
7.5.1 特性 ............................................................................................................................................................................................. 27
7.5.2 时钟定义 ..................................................................................................................................................................................... 27
7.5.3 系统时钟监控(SCM) ............................................................................................................................................................. 28
7.5.4 振荡器类型 ................................................................................................................................................................................. 28
7.5.5 谐振器负载电容选择 ................................................................................................................................................................. 29
7.6 I/O端口 ............................................................................................................................................................................................... 30
7.6.1 特性 ............................................................................................................................................................................................. 30
7.6.2 寄存器 ......................................................................................................................................................................................... 30
7.6.3 端口模块图 ................................................................................................................................................................................. 31
7.6.4 端口共用 ..................................................................................................................................................................................... 32
7.7 定时器 ................................................................................................................................................................................................ 36
7.7.1 特性 ............................................................................................................................................................................................. 36
7.7.2 定时器0和定时器1 ..................................................................................................................................................................... 36
7.7.3 定时器2 ....................................................................................................................................................................................... 41
7.7.4 定时器3 ....................................................................................................................................................................................... 43
7.8 8BIT脉冲宽度调制模块(PWM3) .................................................................................................................................................. 45
7.8.1 特性 ............................................................................................................................................................................................. 45
7.8.2 寄存器 ......................................................................................................................................................................................... 45
7.9 中断 .................................................................................................................................................................................................... 48
7.9.1 特性 ............................................................................................................................................................................................. 48
7.9.2 中断允许控制 ............................................................................................................................................................................. 48
7.9.3 中断标志 ..................................................................................................................................................................................... 50
7.9.4 中断向量 ..................................................................................................................................................................................... 52
7.9.5 中断优先级 ................................................................................................................................................................................. 52
7.9.6 中断处理 ..................................................................................................................................................................................... 53
7.9.7 中断响应时间 ............................................................................................................................................................................. 53
7.9.8 外部中断输入 ............................................................................................................................................................................. 54
7.9.9 中断汇总 ..................................................................................................................................................................................... 54
8.
增强功能 ........................................................................................................................................................................ 55
8.1 电机控制模块MCM(MOTOR CONTROL MODULE)PWM0/1/2 ....................................................................................................... 55
8.1.1 特性 ............................................................................................................................................................................................. 55
8.1.2 寄存器 ......................................................................................................................................................................................... 56
8.1.3 PWM0/1/2时基模块(PWM Time Base Block) ....................................................................................................................... 68
1.
2.
3.
4.
5.
6.
7.
143
SH79F1615
8.1.4 PWM0/1/2波形发生模块 ............................................................................................................................................................ 72
8.1.5 PWM死区与极性控制模块 ........................................................................................................................................................ 76
8.1.6 故障检测模块 ............................................................................................................................................................................. 79
8.1.7 PWM输出控制模块 .................................................................................................................................................................... 81
8.1.8 事件触发功能 ............................................................................................................................................................................. 81
8.1.9 注意事项 ..................................................................................................................................................................................... 82
8.1.10 代码示例 ................................................................................................................................................................................... 86
8.2 运算放大器和比较器模块................................................................................................................................................................. 87
8.2.1 特性 ............................................................................................................................................................................................. 87
8.2.2 寄存器 ......................................................................................................................................................................................... 87
8.2.3 比较器用法 ................................................................................................................................................................................. 91
8.3 增强型通用异步收发器(EUART) ............................................................................................................................................... 94
8.3.1 特性 ............................................................................................................................................................................................. 94
8.3.2 工作方式 ..................................................................................................................................................................................... 94
8.3.3 可微调波特率 ............................................................................................................................................................................. 99
8.3.4 多机通讯 ................................................................................................................................................................................... 100
8.3.5 帧出错检测 ............................................................................................................................................................................... 101
8.3.6 寄存器 ....................................................................................................................................................................................... 101
8.4 模/数转换模块(ADC) ................................................................................................................................................................. 104
8.4.1 特性 ........................................................................................................................................................................................... 104
8.4.2 ADC模块图 ............................................................................................................................................................................... 105
8.4.3 ADC寄存器 ............................................................................................................................................................................... 106
8.4.4 序列转换工作模式 ................................................................................................................................................................... 116
8.4.5 连续转换工作模式 ................................................................................................................................................................... 118
8.4.6 比较功能 ................................................................................................................................................................................... 118
8.4.7 ADC转换时间设置 ................................................................................................................................................................... 119
8.4.8 ADC模块参考电压的设置 ....................................................................................................................................................... 119
8.4.9 ADC通道与IO口功能设置 ....................................................................................................................................................... 119
8.4.10 ADC结果寄存器/通道寄存器之间的映射关系 ..................................................................................................................... 119
8.4.11 AD转换时对传感器输出阻抗的要求 .................................................................................................................................... 120
8.4.12 注意事项 ................................................................................................................................................................................. 120
8.4.13 程序示例 ................................................................................................................................................................................. 121
8.5 蜂鸣音发生器 .................................................................................................................................................................................. 122
8.5.1 特性 ........................................................................................................................................................................................... 122
8.5.2 寄存器 ....................................................................................................................................................................................... 122
8.6 电压复位 (LVR) ............................................................................................................................................................................... 123
8.6.1 特性 ........................................................................................................................................................................................... 123
8.7 看门狗定时器(WDT),程式超范围溢出(OVL)复位及其它复位状态 .............................................................................. 124
8.7.1 特性 ........................................................................................................................................................................................... 124
8.7.2 寄存器 ....................................................................................................................................................................................... 125
8.8 电源管理 .......................................................................................................................................................................................... 126
8.8.1 特性 ........................................................................................................................................................................................... 126
8.8.2 空闲模式 ................................................................................................................................................................................... 126
8.8.3 掉电模式 ................................................................................................................................................................................... 126
8.8.4 寄存器 ....................................................................................................................................................................................... 127
8.9 预热计数器 ...................................................................................................................................................................................... 128
8.9.1 特性 ........................................................................................................................................................................................... 128
8.10 代码选项 ........................................................................................................................................................................................ 129
9.
指令集.......................................................................................................................................................................... 130
10.
电气特性 ...................................................................................................................................................................... 135
11.
订购信息 ...................................................................................................................................................................... 139
12.
封装信息 ...................................................................................................................................................................... 140
13.
规格更改记录 ............................................................................................................................................................... 142
144
很抱歉,暂时无法提供与“SH79F1615P”相匹配的价格&库存,您可以联系我们找货
免费人工找货