CH547 手册 1
8 位增强型 USB 单片机 CH547、CH546
手册
版本:1F
http://wch.cn
1、概述
CH547 芯片是一款兼容 MCS51 指令集的增强型 E 8051 内核单片机,其 79%的指令是单字节单周期
指令,平均指令速度比标准 MCS51 快 8~ 15 倍。
CH547 内置 64K 程序存储器 Flash-ROM 和 256 字节内部 iRAM 以及 2K 字节片内 xRAM,xRAM 支持
DMA 直接内存存取。
CH547 内置了 12 位 A DC 模数转换、电容式触摸按键检测模块、 TS 温度传感器、内置时钟、3 组
定时器和 1 路信号捕捉、4 路 PWM 、4 组异步串口、SPI 等功能模块,支持全速和低速 USB-Device
设备模式。
CH546 是 CH547 的简化版, 程序存储器 ROM 仅 32KB ,异步串口仅提供 UART0 ,ADC 和触摸按键检
测仅提供 8 路,PWM 仅提供 2 路 ,其它与 CH547 相同,可 直接参考 CH547 手册和资料。
型号
CH547 60KB+3KB
CH546 32KB+3KB
(Code/EEPROM Data)
Pins: GND VDD V33 P00~P07 P10~P17 P20~P27 P30~P37 P40~P46 P50/1/4/5/7
程序 ROM
引导 ROM
下面为 CH547 的内部 框图, 仅供参考。
Flash-ROM 64KB
Power-on
Reset
Watch-dog
Reset
Internal
Oscillator
LDO VolReg 5V->3.3V
xRAM
非易失
iRAM
EEPROM
1024
+256
E8051 Core
1KB 全 /低速 支持 3组 1 路
iRAM 256B
xRAM 1KB
1T
USB-48M
PLL
USB 设备
Timer0
Timer1
8-bit
Port0
TS 温度
传感器
Internal Address & Data & DMA Bus
ADC
CMP
定时
Timer2
Cap2
8-bit
Port1
信号
捕捉
PWM0
~PWM3
8-bit
Port2
8 位
PWM
4 路 4 组
2 路 1 组
UART0
UART1
8-bit
Port3
异步
串口
UART2
UART3
OSC
SPI
主从
1 组
SPI0
7-bit
Port4
12 位
ADC
12 路 12 通道
8 路 8 通道
M/S
USB
Dev
电容触
摸按键
Temper
-Sense
5-bit
Port5
2、特点
CH547 手册 2
l Core:增强型 E 8051 内核,兼容 MCS51 指令集,其 79% 的指令是单字节单周期指令,平均指令
速度比标准 MCS51 快 8 ~15 倍,特有 XRAM 数据 快速 复制 指令,双 DPTR 指针 。
l ROM:64KB 非易失存储器 Flash-ROM ,支持 10K 次擦写,可 以全部用于 程序存储 空间;或者可
以分为 60KB 程 序存储区 和 1KB 数据 存储区 EEPROM 以及 3KB 引 导代码 BootLoader/ISP 程序区 。
l EEPROM:数据存储区 EEPROM 共 1K 字节, 分为 16 个独立 块,支持单字节 读 、单字节 写 、块写
(1~ 64 字节 )、块擦除 (64 字节 )操作, 在典型 环境下一 般支持 1 00K 次擦写(非担保)。
l OTP:一次性可编 程数据 存储区 O TP 共 32 字节,支持双 字读(4 字节)、单字节写 。
l RAM: 256 字节内部 iRAM,可 以用于 快速数据暂 存以及堆栈; 1KB 片内 xRAM,可 以 用于大量数
据暂存以及 DMA 直接内存存取。
l USB:内嵌 U SB 设备控制器和 USB 收发器,支持 USB 2.0 全速 12Mbps 或者低速 1.5Mbps 。支持
最大 64 字节数 据包,内置 FIFO, 支持 DMA 。
l Timer: 3 组定时器, T0/T1/T2 为标准 MCS51 定时器。
l Capture:定时器 T2 支持 1 路信号捕捉。
l PWM: 4 路 PWM 输出,支持标准 8 位数据或者快速 6 位数据 。
l UART: 4 组异步串口, UART0 为标准 MCS51 串口; UART1/2/3 自带通讯波特率设置 寄存器。
l SPI:SPI 控制器支持 Master/Slave 主从模式,内置 FIFO,时钟频率最高可接 近系统主频 Fsys
的一半 ,支持串行 数据输入输出 单工复用。
l ADC: 12 通道 12 位 A/D 模数转换器,支持多种 组合 的电压 比较 。
l Touch-Key:支持 12 通道电容触摸按键检测,每个 ADC 通道都 支持触摸按键检测。
l TS:内置简 单的温度传感器。
l GPIO:支持最多 44 个 GPIO 引脚 (含 XI 和 RST 以及 USB 引脚 ),支持 MCS51 兼容的准双向 模式,
新增高 阻输入、 推挽输出、 开漏输出模式,其 中一个引 脚支持 12V 高 压开漏输出。
l Interrupt:支持 16 组 中断 信号 源 , 包括 与 标准 MCS51 兼容的 6 组中断 (INT0 、 T0 、INT1、 T1 、
UART0、T2),以及扩展 的 10 组中断 (SPI0、INT3、USB、ADC/UART2、UART1、PWMX/UART3、GPIO、
WDOG),其中 GPIO 中断可以 从 7 个引脚 中选择。
l Watch-Dog: 8 位可预设 看门狗定时器 WDOG,支持定时 中断。
l Reset:支持 5 种复 位信号源 ,内置上 电复 位和多级可 调 的电源 低压 检测复 位模块,支持软件
复位和看门狗溢出复 位,可选 引脚外 部 输入复位。
l Clock:内置 24MHz 时钟源 , 可 以 通过 复用 GPIO 引脚支持外 部晶体 ,内置 PLL 用于产生 U SB 时
钟和所需频率的系统主频 Fsys 。
l Power:内置 5V 到 3 .3V 的低压差电压调整 器,用于 USB 等模块,支持 5V 或 3.3V 甚至 6V 或 2. 8V
电源 电压 。
l Sleep:支持低功耗睡眠 ,支持 USB、 UART0、 UART1、 SPI0、比较 器以及部分 GPIO 外部 唤醒。
l 芯片内置唯 一 ID 号,支持 ID 号和校验 。
3 、封装
封装形式
LQFP-48 7*7mm 0.5mm 19.7mil 标准 LQFP48 脚贴片
QFN28_4X4
SOP-16 3.9mm 150mil 1.27mm 50mil 标准的 16 脚贴片 CH547G
LQFP-48 7*7mm 0.5mm 19.7mil 标准 LQFP48 脚贴片
SOP-16 3.9mm 150mil 1.27mm 50mil 标准的 16 脚贴片 CH546G
塑体宽 度 引 脚 间 距 封装说明 订货 型号
CH547L
4*4mm 0.4mm 15.7mil 四边无引 线 28 脚 CH547F
CH546L
CH547 手册 3
37
P0.3/TXD_/AIN11
38
P0.2/RXD_/AIN10
39
P0.1/AIN9
40
P0.0/AIN8
41
VDD
42
V33
43
P1.0/T2/AIN0
44
P1.1/T2EX/CAP2/AIN1
45
P1.2/AIN2
46
P1.3/AIN3
47
P1.4/SCS/AIN4
48
P1.5/MOSI/PWM0_
P1.5/AIN5
37
P0.3/TXD_
38
P0.2/RXD_
39
P0.1
40
P0.0
41
VDD
42
V33
43
P1.0/T2/AIN0
44
P1.1/T2EX/CAP2/AIN1
45
P1.2/AIN2
46
P1.3/AIN3
47
P1.4/SCS/AIN4
48
P1.5/MOSI/PWM0_/AIN5
29
30
32
36
P5.1/DP31P5.0/DM
P0.7/TXD333P0.6/RXD334P0.5/TXD235P0.4/RXD2
P5.4/ALE/CKO
CH547L
P1.6/AIN6
P1.6/MISO/RXD1_1P1.7/SCK/TXD1_/AIN72P5.7/RST3P3.0/RXD4P4.46P3.1/TXD7P3.2/INT08P3.3/INT19P3.4/T010P3.5/T111P3.6
P4.5
5
28
29
30
32
36
P0.733P0.634P0.535P0.4
P5.1/DP31P5.0/DM
P5.5/HVOD
P5.4/ALE/CKO
CH546L
P1.6/MISO/AIN61P1.7/SCK/AIN72P5.7/RST3P3.0/RXD4P4.46P3.1/TXD7P3.2/INT08P3.3/INT19P3.4/T010P3.5/T111P3.6
P4.5
5
25
26
16
15
18
21
P2.6/RXD127P2.7/TXD128P5.5/HVOD
P2.4/PWM1/T2_
P2.5/PWM0/T2EX_/CAP2_
12
25
26
P2.627P2.7
P2.4/PWM1/T2_
P2.5/PWM0/T2EX_/CAP2_
12
P2.3/PWM2
P2.2/PWM3/INT0_
GND/VSS
P4.6/XI
P3.7/INT3
P2.2/INT0_
GND/VSS
P4.6/XI
P3.7/INT3
P2.1
P2.0
P4.0
P4.1
P4.2
P4.3
P2.3
P2.1
P2.0
P4.0
P4.1
P4.2
P4.3
24
23
22
22
21
20
19
18
17
XO
16
15
14
13
24
23
22
21
20
19
18
17
XO
16
15
14
13
P0.4/RXD2
23
VDD
24
V33
25
P1.0/T2/AIN0
26
P1.1/T2EX/CAP2/AIN1
27
P1.4/SCS/AIN4
28
P1.5/MOSI/PWM0_
P1.5/AIN5
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
P1.6/AIN6
GND/VSS
0
P1.1/T2EX/CAP2/AIN1
P1.4/SCS/AIN4
P1.5/MOSI/PWM0_/AIN5
P1.6/MISO/RXD1_/AIN6
P1.7/SCK/TXD1_/AIN7
P5.7/RST
P3.0/RXD
P3.1/TXD
P1.1/T2EX/CAP2/AIN1
P1.4/SCS/AIN4
P1.5/MOSI/PWM0_/AIN5
P1.6/MISO/AIN6
P1.7/SCK/AIN7
P5.7/RST
P3.0/RXD
P3.1/TXD
P5.1/DP17P5.0/DM
P5.5/HVOD
P0.7/TXD319P0.6/RXD320P0.5/TXD2
CH547F
P1.6/MISO/RXD1_1P1.7/SCK/TXD1_/AIN72P5.7/RST3P3.0/RXD4P3.1/TXD5P3.2/INT06P3.3/INT1
7
CH547G
CH546G
P2.7/TXD1
P2.4/PWM1/T2_
P2.2/PWM3/INT0_
P2.4/PWM1/T2_
P2.2/PWM3/INT0_
P2.4/PWM1/T2_
P2.2/INT0_
P2.6/RXD1
P4.6/XI
P3.5/T1
P3.4/T0
V33
VDD
GND/VSS
P5.0/DM
P5.1/DP
P3.4/T0
V33
VDD
GND/VSS
P5.0/DM
P5.1/DP
P3.4/T0
14
13
12
11
XO
10
9
8
16
15
14
13
12
11
10
9
16
15
14
13
12
11
10
9
4 、引脚
引脚号
SOP16 QFN28 LQFP48
15 23 41 VDD VCC
16 24 42 V33 V3
14 0 18 GND VSS 公共接 地端。
- - 40 P0.0 AIN8
- - 39 P0.1 AIN9
引 脚
名称
其 它 功能 名称
(左侧功能最 优先 )
其 它 功能 描 述
I/O 电源输入 以及内部 USB 电 源调整器的 外部电 源
输入 ,需要外接 0.1uF 电 源退耦 电容。
内部 USB 电源调整器输出 和内部 USB 电源输入 ,
当电 源电 压小于 3.6V 时 连接 VDD 输入外 部电 源,
当电 源电 压大于 3.6V 时外接 0.1uF 电 源退耦电容
AIN8~ AIN11:4 通道 ADC 模拟 信号/触摸按键输入 。
RXD_、 TXD_: RXD、 TXD 引脚映射。
CH547 手册 4
- - 38 P0.2 RXD_/AIN10 RXD2、TXD2:UART2 串行 数据输入 、串 行 数 据输出。
- - 37 P0.3 TXD_/AIN11
RXD3、TXD3:UART3 串行 数据输入 、串 行 数 据输出。
- 22 36 P0.4 RXD2
- 21 35 P0.5 TXD2
- 20 34 P0.6 RXD3
- 19 33 P0.7 TXD3
- 25 43 P1.0 T2/AIN0
1 26 44 P1.1 T2EX/CAP2/AIN1
- - 45 P1.2 AIN2
- - 46 P1.3 AIN3
2 27 47 P1.4 SCS/AIN4
3 28 48 P1.5 MOSI/PWM0_/AIN5
4 1 1 P1.6 MISO/RXD1_/AIN6
5 2 2 P1.7 SCK/TXD1_/AIN7
AIN0~ AIN7:8 通道 ADC 模拟 信号 /触摸按键输入 。
T2:定时/计 数器 2 的外 部计 数输入/ 时钟输出 。
T2EX:定时 /计数器 2 重载/ 捕捉输入 。
CAP2:定时 /计数器 2 的捕捉 输入。
SCS、 MOSI、 MISO、 SCK: SPI0 接口, SCS 是片选
输入,MOSI 是 主机 输出/ 从机 输入, MISO 是 主机
输入/ 从机 输出,SCK 是串行 时钟。
PWM0_、RXD1_、TXD1_:PWM0/RXD1/TXD1 引 脚映射。
- - 21 P2.0
- - 22 P2.1
10 12 23 P2.2 PWM3/INT0_
- - 24 P2.3 PWM2
PWM0~ PWM3: 4 通道 PWM 输出。
INT0_: INT0 引 脚映射。
T2_: T2 引 脚映射。
11 13 25 P2.4 PWM1/T2_
- - 26 P2.5 PWM0/T2EX_/CAP2_
T2EX_/CAP2_: T2EX/CAP2 引 脚映射。
RXD1、TXD1:UART1 串行 数据输入 、串 行 数 据输出。
- 14 27 P2.6 RXD1
- 15 28 P2.7 TXD1
7 4 4 P3.0 RXD
8 5 7 P3.1 TXD
- 6 8 P3.2 INT0
- 7 9 P3.3 INT1
9 8 10 P3.4 T0
- 9 11 P3.5 T1
RXD、 TXD: UART0 串行 数 据输入、串 行数 据输出。
INT0、 INT1:外 部中断 0、 外部 中断 1 输入。
T0、 T1:定时器 0、定时器 1 外 部输入 。
INT3:外 部中断 3。
- - 12 P3.6
- - 13 P3.7 INT3
- - 20 P4.0
- - 19 P4.1
- - 15 P4.2
- - 14 P4.3
XI、 XO:外 部晶体振荡输入 端、 反相输出端 。
- - 6 P4.4
- - 5 P4.5
- 10 16 P4.6 XI
- 11 17 XO
13 18 32 P5.0 DM/UDM
12 17 31 P5.1 DP/UDP
- - 30 P5.4 ALE/CKO
- 16 29 P5.5 HVOD
DM、 DP: USB 设备的 D-、 D+信号端 。
电 阻已 全内置, 建议外 部 不再 串 联 电 阻。
ALE/CKO:伪地 址锁存 信号 输出或者时钟 输出。
HVOD:支持 12V 高电压 的开漏 输出。
6 3 3 P5.7 RST 外部复 位输入 ,内置下拉 电阻 。
CH547 手册 5
5、特殊 功能寄 存器 SFR
本手册 中在对寄 存器 进行描 述时 可能使 用 了 下 列缩写 :
缩写 词 描述
RO 表示访问类型: 只读
WO 表示访问类型: 只写, 读取的 值无 效
RW 表示访问类型:可读可写
H 以其结束表示 16 进制数
B 以其结束表示 2 进制数
5.1 SFR 简介和地 址 分布
CH547 用特殊功能寄 存器 S FR 和 xSFR 控制、管理设 备以及设置工 作模式。
SFR 占用内部数据 存储 空间的 80h-FFh 地 址范围, 只能通过 直接地 址方式的指令 访问。其中地
址 为 x0h 或 x8h 的寄 存器是 可 以按位寻址 的, 这样就能避免访问某 个 具 体的位时而 修改 其他 位的值 ;
其它地址 为非 8 倍数的寄 存器只 能按字节访问 。
部分 SFR 仅在安 全模式下才 能写入 数据 ,而在非 安 全模式下 是只读 状态 ,例如: GLOBAL_CFG 、
CLOCK_CFG 、WAKE_CTRL 、POWER_CFG 。
部分 SFR 具 有 一个或者多 个别名, 例如: SPI0_CK_SE/SPI0_S_PRE 、ROM_ADDR_L/ROM_DATA_LL 、
ROM_ADDR_H/ROM_DATA_LH 、ROM_DATA_HL/ROM_DAT_BUF 、ROM_DATA_HH/ROM_BUF_MOD 。
部分地址对应于多 个 独立 的 SFR ,例如: SAFE_MOD/CHIP_ID、ROM_CTRL/ROM_STATUS 。
CH547 包含 8051 标准 SFR 所有的 寄 存器,同时又增 加了其 他设备 控 制寄 存器。具体 SFR 见下 表 。
表 5.1 特殊功能 寄 存器 表
SFR
0xF8
0xF0
0xE8
0xE0
0xD8
0xD0
0xC8
0xC0
0xB8
0xB0
0xA8
0xA0
0x98
0x90
0x88
0x80
0、 8 1、 9 2、 A 3、 B 4、 C 5、 D 6、 E 7、 F
SPI0_STAT SPI0_DATA SPI0_CTRL
B TKEY_CTRL ADC_CTRL ADC_CFG ADC_DAT_L ADC_DAT_H ADC_CHAN ADC_PIN
IE_EX IP_EX UEP4_1_MOD UEP2_3_MOD UEP0_DMA_L UEP0_DMA_H UEP1_DMA_L UEP1_DMA_H
ACC USB_INT_EN USB_CTRL USB_DEV_AD UEP2_DMA_L UEP2_DMA_H UEP3_DMA_L UEP3_DMA_H
USB_INT_FG USB_INT_ST USB_MIS_ST USB_RX_LEN UEP0_CTRL UEP0_T_LEN UEP4_CTRL UEP4_T_LEN
PSW UDEV_CTRL UEP1_CTRL UEP1_T_LEN UEP2_CTRL UEP2_T_LEN UEP3_CTRL UEP3_T_LEN
T2CON T2MOD RCAP2L RCAP2H TL2 TH2
P4 P4_MOD_OC P4_DIR_PU P0_MOD_OC P0_DIR_PU
IP CLOCK_CFG POWER_CFG
P3 GLOBAL_CFG GPIO_IE INTX SCON2 SBUF2 SBAUD2 SIF2
IE WAKE_CTRL PIN_FUNC P5 SCON3 SBUF3 SBAUD3 SIF3
P2
SCON SBUF PWM_DATA2 PWM_DATA1 PWM_DATA0 PWM_CTRL PWM_CK_SE PWM_CTRL2
P1 USB_C_CTRL P1_MOD_OC P1_DIR_PU P2_MOD_OC P2_DIR_PU P3_MOD_OC P3_DIR_PU
TCON TMOD TL0 TL1 TH0 TH1
P0 SP DPL DPH
SAFE_MOD
CHIP_ID
XBUS_AUX PWM_DATA3
SPI0_CK_SE
SPI0_S_PRE
SCON1 SBUF1 SBAUD1 SIF1
SPI0_SETUP
ROM_ADDR_L
ROM_DATA_LL
RESET_KEEP WDOG_COUNT
ROM_DATA_HL
ROM_DAT_BUF
ROM_ADDR_H
ROM_DATA_LH
ROM_CTRL
ROM_STATUS
ROM_DATA_HH
ROM_BUF_MOD
PCON
CH547 手册 6
备 注 : (1)、 红色文本代 表 可以 按位 寻址;
(2)、以下 是颜色框 对应说明
寄存器地址
SPI0 相关 寄存器
ADC 相关 寄存器
USB 相关 寄存器
定时 /计数器 2 相关 寄 存器
端口设置相关 寄 存器
PWMX 相关 寄存器
UART1/2/3 相关 寄 存器
定时/计 数器 0 和 1 相关 寄存器
Flash-ROM 相关 寄存器
5.2 SFR 分类和 复位值
表 5.2 SFR 和 xSFR 描述和复 位 值
功能分类 名称 地 址
B F0h B 寄存器 0000 0000b
ACC E0h 累加器 0000 0000b
PSW D0h 程序状态寄 存器 0000 0000b
GLOBAL_CFG B1h
系统设置
相关 寄存器
时钟、睡眠
及电源控制
相 关 寄 存器
中断 控制
相关 寄存器
CHIP_ID A1h
SAFE_MOD A1h 安全模式控制寄 存器( 只写) 0000 0000b
DPH 83h 数据地址 指针高 8 位 0000 0000b
DPL 82h 数据地址 指针 低 8 位 0000 0000b
DPTR 82h DPL 和 DPH 组成 16 位 SFR 0000h
SP 81h 堆栈指 针 0000 0111b
WDOG_COUNT FFh 看门狗计数寄 存器 0000 0000b
RESET_KEEP FEh 复位 保持 寄存器(上 电 复位状态下) 0000 0000b
POWER_CFG BAh 电源管理配 置寄 存器 0000 0xxxb
CLOCK_CFG B9h 系统时钟配 置寄 存器 1000 0011b
WAKE_CTRL A9h 睡眠唤醒控制寄存器 0000 0000b
PCON 87h 电源控制寄 存器(上 电复 位状态下) 0001 0000b
IP_EX E9h 扩展中断优先级控制寄存器 0000 0000b
IE_EX E8h 扩展中断使能寄 存器 0000 0000b
GPIO_IE C7h GPIO 中断使能寄 存器 0000 0000b
IP B8h 中断优先级控制寄存器 0000 0000b
INTX B3h 扩展外部 中断控制寄存器 0000 0000b
IE A8h 中断使能寄 存器 0000 0000b
描 述 复 位 值
全局配 置寄 存器(CH547 引导 程序状态下) 0110 0000b
全局配 置寄 存器(CH547 应用 程序状态下) 0100 0000b
全局配 置寄 存器(CH546 引导 程序状态下) 0010 0000b
全局配 置寄 存器(CH546 应用 程序状态下) 0000 0000b
CH547 芯片 ID 识别码 (只读 ) 0100 0111b
CH546 芯片 ID 识别码 (只读 ) 0100 0110b
CH547 手册 7
ROM_DATA_HH 8Fh flash-ROM 数据寄存器 高 字的高 字节 (只读 ) xxxx xxxxb
ROM_DATA_HL 8Eh flash-ROM 数据寄存器 高 字的低字节 (只读 ) xxxx xxxxb
ROM_DATA_HI 8Eh ROM_DATA_HL 和 ROM_DATA_HH 组成 16 位 SFR xxxxh
ROM_BUF_MOD 8Fh flash-ROM 擦写操作的缓冲区模式 寄 存器 xxxx xxxxb
ROM_DAT_BUF 8Eh flash-ROM 擦写操作的数 据缓冲 寄存器 xxxx xxxxb
ROM_STATUS 86h flash-ROM 状态寄存器(只读 ) 0000 0000b
Flash-ROM
相关 寄存器
ROM_CTRL 86h flash-ROM 控制寄存器(只 写) 0000 0000b
ROM_ADDR_H 85h flash-ROM 地址寄存器高 字节 xxxx xxxxb
ROM_ADDR_L 84h flash-ROM 地址寄存器低字节 xxxx xxxxb
ROM_ADDR 84h ROM_ADDR_L 和 ROM_ADDR_H 组成 16 位 SFR xxxxh
ROM_DATA_LH 85h flash-ROM 数据寄存 器低字的高 字节 (只读 ) xxxx xxxxb
ROM_DATA_LL 84h flash-ROM 数据寄存 器低字的低字节 (只读 ) xxxx xxxxb
ROM_DATA_LO 84h ROM_DATA_LL 和 ROM_DATA_LH 组成 16 位 SFR xxxxh
XBUS_AUX A2h 外部总 线辅助设置寄 存器 0000 0000b
PIN_FUNC AAh 引脚功能选择寄 存器 0000 0000b
P0_DIR_PU C5h P0 端口方 向控制和上拉使 能 寄存器 1111 1111b
P0_MOD_OC C4h P0 端口输出模式 寄 存器 1111 1111b
P4_DIR_PU C3h P4 端口方 向控制和上拉使 能 寄存器 1111 1111b
P4_MOD_OC C2h P4 端口输出模式 寄 存器 1111 1111b
P3_DIR_PU 97h P3 端口方 向控制和上拉使 能 寄存器 1111 1111b
P3_MOD_OC 96h P3 端口输出模式 寄 存器 1111 1111b
端 口设置
相关 寄存器
P2_DIR_PU 95h P2 端口方 向控制和上拉使 能 寄存器 1111 1111b
P2_MOD_OC 94h P2 端口输出模式 寄 存器 1111 1111b
P1_DIR_PU 93h P1 端口方 向控制和上拉使 能 寄存器 1111 1111b
P1_MOD_OC 92h P1 端口输出模式 寄 存器 1111 1111b
P5 ABh P5 端口输入输出寄 存器 0010 0000b
P4 C0h P4 端口输入输出寄 存器 1111 1111b
P3 B0h P3 端口输入输出寄 存器 1111 1111b
P2 A0h P2 端口输入输出寄 存器 1111 1111b
P1 90h P1 端口输入输出寄 存器 1111 1111b
P0 80h P0 端口输入输出寄 存器 1111 1111b
TH1 8Dh Timer1 计数高 字节 xxxx xxxxb
TH0 8Ch Timer0 计数高 字节 xxxx xxxxb
定时 /计 数器
TL1 8Bh Timer1 计 数低字节 xxxx xxxxb
0 和 1
相关 寄存器
TL0 8Ah Timer0 计 数低字节 xxxx xxxxb
TMOD 89h Timer0/1 方式寄 存器 0000 0000b
TCON 88h Timer0/1 控制寄存器 0000 0000b
UART0
相关 寄存器
SBUF 99h UART0 数据寄存器 xxxx xxxxb
SCON 98h UART0 控制寄存器 0000 0000b
TH2 CDh Timer2 计 数器高 字节 0000 0000b
定时 /计 数器
2 相关 寄存器
TL2 CCh Timer2 计 数器低字节 0000 0000b
T2COUNT CCh TL2 和 TH2 组成 16 位 SFR 0000h
RCAP2H CBh 计数 重载/捕捉 2 数据寄 存器高 字节 0000 0000b
CH547 手册 8
RCAP2L CAh 计数 重载/捕捉 2 数据寄 存器低字节 0000 0000b
RCAP2 CAh RCAP2L 和 RCAP2H 组成 16 位 SFR 0000h
T2MOD C9h Timer2 方式寄 存器 0000 0000b
T2CON C8h Timer2 控制寄存器 0000 0000b
PWM_DATA3 A3h PWM3 数据寄存器 xxxx xxxxb
PWM_CTRL2 9Fh PWM 扩展控制寄存器 0000 0000b
PWM_CK_SE 9Eh PWM 时钟分频 设置寄 存器 0000 0000b
PWMX
相关 寄存器
PWM_CTRL 9Dh PWM 控制寄存器 0000 0010b
PWM_DATA0 9Ch PWM0 数据寄存器 xxxx xxxxb
PWM_DATA1 9Bh PWM1 数据寄存器 xxxx xxxxb
PWM_DATA2 9Ah PWM2 数据寄存器 xxxx xxxxb
SPI0_SETUP FCh SPI0 设置寄 存器 0000 0000b
SPI0_S_PRE FBh SPI0 从机模式预 置数据寄 存器 0010 0000b
SPI0
相关 寄存器
SPI0_CK_SE FBh SPI0 时钟分频 设置寄 存器 0010 0000b
SPI0_CTRL FAh SPI0 控制寄存器 0000 0010b
SPI0_DATA F9h SPI0 数据收发寄存器 xxxx xxxxb
SPI0_STAT F8h SPI0 状态寄存器 0000 1000b
SIF1 BFh UART1 中断状态寄存器 0000 0000b
UART1
相关 寄存器
SBAUD1 BEh UART1 波特率设置 寄存器 xxxx xxxxb
SBUF1 BDh UART1 数据寄存器 xxxx xxxxb
SCON1 BCh UART1 控制寄存器 0100 0000b
SIF2 B7h UART2 中断状态寄存器 0000 0000b
UART2
相关 寄存器
SBAUD2 B6h UART2 波特率设置 寄存器 xxxx xxxxb
SBUF2 B5h UART2 数据寄存器 xxxx xxxxb
SCON2 B4h UART2 控制寄存器 0000 0000b
SIF3 AFh UART3 中断状态寄存器 0000 0000b
UART3
相关 寄存器
SBAUD3 AEh UART3 波特率设置 寄存器 xxxx xxxxb
SBUF3 ADh UART3 数据寄存器 xxxx xxxxb
SCON3 ACh UART3 控制寄存器 0000 0000b
ADC_PIN F7h ADC 引脚数字输 入控制寄存器 0000 0000b
ADC_CHAN F6h ADC 模拟 信号通道选择 寄 存器 0000 0000b
ADC_DAT_H F5h ADC 结果数据 的高 字节( 只读) 0000 xxxxb
ADC/TKEY
相关 寄存器
ADC_DAT_L F4h ADC 结果数据 的低字节( 只读) xxxx xxxxb
ADC_DAT F4h ADC_DAT_L 和 ADC_DAT_H 组成 16 位 SFR 0xxxh
ADC_CFG F3h ADC 配置寄 存器 0000 0000b
ADC_CTRL F2h ADC 控制和 状态寄存器 x000 000xb
TKEY_CTRL F1h 触摸按键充 电脉冲宽 度控制寄 存器(只写 ) 0000 0000b
UEP1_DMA_H EFh 端点 1 缓冲 区起始地 址高 字节 0000 0xxxb
UEP1_DMA_L EEh 端点 1 缓冲 区起始地 址低字节 xxxx xxxxb
USB
相关 寄存器
UEP1_DMA EEh UEP1_DMA_L 和 UEP1_DMA_H 组成 16 位 SFR 0xxxh
UEP0_DMA_H EDh 端点 0 和 4 缓冲 区起始地 址高字节 0000 0xxxb
UEP0_DMA_L ECh 端点 0 和 4 缓冲 区起始地 址 低字节 xxxx xxxxb
UEP0_DMA ECh UEP0_DMA_L 和 UEP0_DMA_H 组成 16 位 SFR 0xxxh
CH547 手册 9
UEP2_3_MOD EBh 端点 2、 3 模式 控制寄存器 0000 0000b
UEP4_1_MOD EAh 端点 1、 4 模式 控制寄存器 0000 0000b
UEP3_DMA_H E7h 端点 3 缓冲 区起始地 址高 字节 0000 0xxxb
UEP3_DMA_L E6h 端点 3 缓冲 区起始地 址低字节 xxxx xxxxb
UEP3_DMA E6h UEP3_DMA_L 和 UEP3_DMA_H 组成 16 位 SFR 0xxxh
UEP2_DMA_H E5h 端点 2 缓冲 区起始地 址高 字节 0000 0xxxb
UEP2_DMA_L E4h 端点 2 缓冲 区起始地 址低字节 xxxx xxxxb
UEP2_DMA E4h UEP2_DMA_L 和 UEP2_DMA_H 组成 16 位 SFR 0xxxh
USB_DEV_AD E3h USB 设备地址寄 存器 0000 0000b
USB_CTRL E2h USB 控制寄存器 0000 0110b
USB_INT_EN E1h USB 中断使能寄 存器 0000 0000b
UEP4_T_LEN DFh 端点 4 发送长度寄 存器 0xxx xxxxb
UEP4_CTRL DEh 端点 4 控制寄存器 0000 0000b
UEP0_T_LEN DDh 端点 0 发送长度寄 存器 0xxx xxxxb
UEP0_CTRL DCh 端点 0 控制寄存器 0000 0000b
USB_RX_LEN DBh USB 接收长 度寄 存器 (只读 ) 0xxx xxxxb
USB_MIS_ST DAh USB 杂项状态寄 存器 (只读 ) xx10 1000b
USB_INT_ST D9h USB 中断状态寄 存器 (只读 ) 00xx xxxxb
USB_INT_FG D8h USB 中断标志寄 存器 0010 0000b
UEP3_T_LEN D7h 端点 3 发送长度寄 存器 0xxx xxxxb
UEP3_CTRL D6h 端点 3 控制寄存器 0000 0000b
UEP2_T_LEN D5h 端点 2 发送长度寄 存器 0000 0000b
UEP2_CTRL D4h 端点 2 控制寄存器 0000 0000b
UEP1_T_LEN D3h 端点 1 发送长度寄 存器 0xxx xxxxb
UEP1_CTRL D2h 端点 1 控制寄存器 0000 0000b
UDEV_CTRL D1h USB 设备端 口控制寄存器 00xx 0000b
5.3 通用 8051 寄存器
表 5.3.1 通用 8051 寄存器 列表
名称 地 址
B F0h B 寄存器 00h
A、 ACC E0h 累加器 00h
PSW D0h 程序状态寄 存器 00h
全局配 置寄 存器(CH547 引导 程序状态下) 60h
全局配置寄 存器(CH547 应用程序 状态下 ) 40h
GLOBAL_CFG B1h
全局配置寄 存器(CH546 引导 程序状态下 ) 20h
全局配置寄 存器(CH546 应用程序 状态下 ) 00h
CH547 芯片 ID 识别码 (只读 ) 47h
CHIP_ID A1h
CH546 芯片 ID 识别码 (只读 ) 46h
SAFE_MOD A1h 安全模式控制寄 存器( 只写) 00h
PCON 87h 电源控制寄 存器(上 电复 位状态下) 10h
DPH 83h 数据地址 指针高 8 位 00h
DPL 82h 数据地址 指针 低 8 位 00h
描 述 复 位 值
CH547 手册 10
DPTR 82h DPL 和 DPH 组成 16 位 SFR 0000h
SP 81h 堆栈指 针 07h
B 寄存器 (B):
位 名称 访问
[7:0]
B RW 算术运算寄 存器,主要 用于 乘法和除 法运算,可 按位 寻址 00h
描 述 复 位 值
A 累加器(A、A CC):
位 名称 访问
描述 复 位值
[7:0] A/ACC RW 算术运算累加器,可 按位 寻址 00h
程序状态寄 存器(PSW):
位 名称 访问
描 述 复 位 值
进位标志位:执行 算术 运算和 逻辑运算指令时, 用于 记录最高 位的
CY RW
进 位或者借位 ; 进 行 8 位 加法运算 时,最高 位 进 位, 则 该位置位,
否则 清零;进 行 8 位 减法运算时, 若借位, 则 该位置位, 否则 清零;
逻辑 指令可使该 位置位 或 清零
6
AC RW
5
F0 RW 可按位寻址 的 通用标志 位 0:使用者可自己定 义,可软件 清零 或置位
4
RS1 RW 寄存器组选择 位高 位 0
3
RS0 RW 寄存器组选择 位低位 0
2
OV RW
1
F1 RW 可按位寻址 的 通用标志 位 1:使用者可自己定 义,可软件 清零 或置位
0
P RO
辅助进 位标志 位:记 录加 减 法运算 时,低 4 位 向高 4 位 有 进 位或 借
位,AC 置 位,否则 清零
溢 出标志 位: 加减 法运算 时, 运算结果超过 8 位 二 进 制数,则 OV 置
1,标志溢出 ,否则 清 0
奇偶 标志 位: 记录指令执 行后 累加 器 A 中 1 的 奇偶性,奇数个 1 则 P
置位,偶 数个 1 则 P 清零
0
0
0
0
0
0
处 理器的状态保 存 在 状态 寄存器 PSW 中 , PSW 支持按位 寻址 。 状态 字中包 括 进 位标 志 位,用于
BCD 码处理的 辅助进位标 志位,奇偶标志 位,溢出标志 位,还有用于工 作寄存器组选择的 RS0 和 RS1。
工 作寄存器组所在 的 区域都 可 以 通过 直接 或者间 接方式 进 行 访问。
表 5.3.2 RS1 和 RS0 工 作寄存器组选择 表
RS1 RS0 工 作寄存器组
0 0 0 组 (00h-07h)
0 1
1 0
1 1
1 组 (08h-0Fh)
2 组 (10h-17h)
3 组 (18h-1Fh)
表 5.3.3 影响标志 位的 操作(X 表示标 志 位 与操作 结果 有关 )
操作 CY OV AC 操作 CY OV AC
ADD X X X SETB C 1
ADDC X X X CLR C 0
SUBB X X X CPL C X
MUL 0 X MOV C, bit
DIV 0 X ANL C, bit
X
X
CH547 手册 11
DA A X ANL C,/bit
RRC A X ORL C, bit
RLC A X ORL C,/bit
CJNE X
数据地址 指针(DPTR) :
位 名称 访问
[7:0]
[7:0]
DPL 和 DPH 组成 16 位数据 指针 DPTR,用于访问 xSFR、xBUS、xRAM 数据 存储器或者 程序存储器,
实际 DPTR 对应 DPTR0 和 DPTR1 两 组 物 理上的 16 位数据指 针, 由 XBUS_AUX 中 的 DPS 动 态选择。
堆栈指 针(SP):
位 名称 访问
[7:0]
堆栈具体功能: 保护断 点和 保护现场,按先入后 出的原则进行管理 。 入栈时 SP 指 针自动加 1,
保存数 据或断 点信息 ;出栈时取 SP 指针指向 数据单元 ,SP 指针自动减 1。SP 在复位后 的初值 是 07h,
相应的默认 堆栈存储 从 08h 开始。
DPL RW 数据 指针 低字节 00h
DPH RW 数据 指针高 字节 00h
SP RW 堆栈指 针, 主要 用于程序调 用和中断调用 以及数据进 出栈 07h
描述 复 位值
描述 复 位值
X
X
X
5.4 特有寄存器
全局配 置寄 存器(GLOBAL_CFG) ,仅在安 全模式下可写:
位 名称 访问
[7:6]
[7:6]
5 bBOOT_LOAD
4 bSW_RESET RW 软件复位 控制位:置 1 导致 软件复位,硬件自 动清零 0
3 bCODE_WE RW
2 bDATA_WE RW
1 保留 RO 0
0 bWDOG_EN RW
芯片 ID 识别码 (CHIP_ID) :
保留 RO 对 于 CH547,是固 定值 01 01b
保留 RO 对 于 CH546,是固 定值 00 00b
Boot loader 状态位,用于区分 I SP 引导程序状态 或者 应
用程序状态 :电源上 电时置 1 ,软件复 位时清 0 。
RO
对 于有 ISP 引导程序的芯片,该位为 1 说明从未 软件 复位
过,通常 是 上电后运行 的 ISP 引导程序状态 ;该位 为 0
说明已经 软件复位 过,通常 是应用 程序状态
Flash-ROM 写允许位:
该位为 0 则 写保护;为 1 则 Flash-ROM 可写可擦
Flash-ROM 的 DataFlash 区域写允许位:
该位为 0 则 写保 护;为 1 则 DataFlash 区 域可写可擦
看门狗 复位使 能位: 该位为 0 看门狗只 用作 定时器 ;该位
为 1 允许计时 溢出时 产生看门狗 复位
描 述 复 位 值
1
0
0
0
位 名称 访问
[7:0]
[7:0]
CHIP_ID RO 对于 CH547,是固 定值 47h, 用于识别芯片 47h
CHIP_ID RO 对于 CH546,是固 定值 46h, 用于识别芯片 46h
描 述 复 位 值
CH547 手册 12
安 全模式控制寄 存器 (SAFE_MOD) :
位 名称 访问
[7:0] SAFE_MOD
部 分 SFR 仅在 安 全模式 下才 能 写入 数 据 , 而在非 安 全模式下总 是 只读 状态 。进入 安 全模式步骤 :
(1)、向该寄 存器写入 55h;
(2)、接着向 该寄 存器写入 AAh;
(3)、此后约 13 到 23 个系统主频周期都处 于安全模式下 ,该有效 期内可 以改写 一个或多 个安 全类
SFR 或普 通 SFR
(4)、超出上 述有效 期后自动终止安全模式
(5)、或者再向该 寄 存器写任意值可以 提 前终止安全模式
WO 用于进 入或者终止安 全模式 00h
描 述 复 位 值
6、存储器结构
6.1 存储器空间
CH547 寻址空间分为程序存储 空间、内部数 据存储 空间、外部数据 存储空间 、只读和 OTP 空间。
图 6.1 存储器结构 图
Internal Data Address Space
FFH
80H
7FH
00H
External Data Address Space
Upper 128 bytes internal RAM
(indirect addressing by @R0/R1)
Lower 128 bytes internal RAM
(direct or indirect addressing)
SFR
(Direct addressing)
OTP data
Read Only information
Program Address Space
03FH
020H
01FH
000H
FFFFH
0400H
03FFH
0000H
Reserved area @xdata
1KB on-chip expanded xRAM @xdata
(indirect addressing by MOVX)
Configuration information
ROM_CFG_ADDR
Boot Loader Code Flash
BOOT_LOAD_ADDR
Data Flash or Code Flash
DATA_FLASH_ADDR
Application Code Flash
FFFFH
FFFEH
FFFDH
F400H
F3FFH
F000H
EFFFH
0000H
6.2 程序存储空间
程序存储 空间共 64KB,如图 6.1 所示,已全部用于 flash-ROM , 包括 保 存指令代码的 Code Flash
区域、 保存 非易失数 据的 Data Flash 区域、以及配 置信息 Configuration Information 区域。
Data Flash(EEPROM)地址范围 为 F000h 到 F3FFH,支持单字节读 (8 位 )、单字节写(8 位)、块
写(1~ 64 字节 )、块 擦除(64 字节 )操作,芯片掉 电后 数 据保持不变 ,也 可用作 Code Flash。
CH547 手册 13
Code Flash 包括低 地址 区域的应 用程序代码 和高地址 区域 的引导 程序代码 ,也可 将这 两 块区域
以及 Data Flash 合并用于保 存单一 应用 程序 代码 。
对于 CH546, Code Flash 的应用 程序代 码区域 仅 32KB。
配置信息 Configuration Information 共 16 位数据 ,由编 程器根据需要 设定,参考 表 6.1。
表 6.2 flash-ROM 配置信息描 述
位 地址
15 Code_Protect
14 No_Boot_Load
13 En_Long_Reset
12 En_P5.7_RESET 使能 P5.7 作为手工 复位 输入引脚: 0-禁止; 1-使能 RST 1
11 保留 0
10 保留 0
9 Must_1 (由编 程器根据需要 自 动 设定为 1) 1
8 Must_0 (由编 程器根据需要 自 动 设定为 0) 0
[7:3]
[2:0]
位 名称 说明 建议值
flash-ROM 中的代码 和数据保护 模式:
0-允许读出; 1-禁止编程器 读出,程序保密
使 能 BootLoader 引导代码启动 模式:
0-从 0000h 地址的 应用程序 启动 ;
1-从 F400h 地址的引导程序 启动
使 能上 电 复 位期 间 的 额外 延 时 复 位:
0-标准短复 位; 1-宽复位,额外 增加 44mS 复 位时间
All_0 (由编 程器根据需要 自 动 设定为 0 0000b) 00000b
LV_RST_VOL
(Vpot)
选择 电 源 低 压 检测复 位模块 LVR 的 门 限电 压 (误 差 4%):
000 或 001 选择 2.4V;010 选择 2.7V;011 选择 3.0V;100
选择 3.6V; 101 选择 4.0V ; 110 选择 4.3V ; 111 选择 4.6V
6.3 数据 存储空间
内部数据 存储空间共 256 字节,如图 6.1 所 示 ,已 全部用于 SFR 和 iRAM,其中 iRAM 用于堆栈
和快速数据暂 存,可细 分为工 作寄 存器 R0-R7 、位变量 bdata 、字节变量 data、idata 等。
外部数据 存储空间共 64KB,如图 6.1 所示,除 了部分用于 1KB 片内 扩充 xRAM, 剩余的 0400h
到 FFFFh 地址范围是保留 区域 。
只 读信息 和 OTP 数据各 32 字节,如图 6.1 所示, 需要 通 过专 用操作 实现存取。
6.4 flash-ROM 寄存器
表 6.4 flash-ROM 操作寄存器 列表
0/1
1
0
000b
名称 地 址 描 述 复 位 值
ROM_DATA_HH 8Fh flash-ROM 数据寄存器 高 字的高 字节 (只读 ) xxh
ROM_DATA_HL 8Eh flash-ROM 数据寄存器 高 字的低字节 (只读 ) xxh
ROM_DATA_HI 8Eh ROM_DATA_HL 和 ROM_DATA_HH 组成 16 位 SFR xxxxh
ROM_BUF_MOD 8Fh flash-ROM 擦写操作的缓冲区模式 寄 存器 xxh
ROM_DAT_BUF 8Eh flash-ROM 擦写操作的数 据缓冲 寄存器 xxh
ROM_STATUS 86h flash-ROM 状态寄存器(只读 ) 00h
ROM_CTRL 86h flash-ROM 控制寄存器(只 写) 00h
ROM_ADDR_H 85h flash-ROM 地址寄存器高 字节 xxh
ROM_ADDR_L 84h flash-ROM 地址寄存器低字节 xxh
ROM_ADDR 84h ROM_ADDR_L 和 ROM_ADDR_H 组成 16 位 SFR xxxxh
ROM_DATA_LH 85h flash-ROM 数据寄存 器低字的高 字节 (只读 ) xxh
CH547 手册 14
ROM_DATA_LL 84h flash-ROM 数据寄存 器低字的低字节 (只读 ) xxh
ROM_DATA_LO 84h ROM_DATA_LL 和 ROM_DATA_LH 组成 16 位 SFR xxxxh
flash-ROM 地址寄存器 (ROM_ADDR):
位 名称 访问
[7:0]
[7:0]
ROM_ADDR_H RW flash-ROM 地址高字节 xxh
ROM_ADDR_L RW flash-ROM 地址低字节 xxh
flash-ROM 数据寄存器 (ROM_DATA_HI、 ROM_DATA_LO):
位 名称 访问
[7:0]
[7:0]
[7:0]
[7:0]
ROM_DATA_HH RO flash-ROM 数据寄存器 高字 (16 位 )的高 字节 xxh
ROM_DATA_HL RO flash-ROM 数据寄存器 高字 (16 位 )的低字节 xxh
ROM_DATA_LH RO flash-ROM 数据寄存 器低字 (16 位 )的高 字节 xxh
ROM_DATA_LL RO flash-ROM 数据寄存 器低字 (16 位 )的低字节 xxh
flash-ROM 擦写操作的缓冲区模式 寄 存器 (ROM_BUF_MOD):
位 名称 访问
flash-ROM 擦写操作(擦除或编程 )的缓冲区 模式:
该 位为 0 选择数据 块 编 程 模式, 待 写数 据 存放于 由
DPTR 指向 的 xRAM 中,编程时 CH547 自动 从 xRAM 依
7 bROM_BUF_BYTE RW
次 取出 数据暂 存于 ROM_DAT_BUF 再写入 flash-ROM ,
支持 1 字节到 64 字 节数据长 度,实际长 度
=MASK_ROM_ADR_END-ROM_ADDR_L[5:0]+1 ;
为 1 选择单字节 编程 或者 64 字节块 擦除模式,待
写数 据直接存放 于 ROM_DAT_BUF 中
描述 复 位值
描述 复 位值
描述 复 位值
x
6 保留 RW 保留 x
在 flash-ROM 数 据 块 编 程模式 下 ,为 flash-ROM 块
[5:0]
MASK_ROM_ADDR RW
编程 操作的结束地 址 的低 6 位 (含该 地址 );
在 flash-ROM 单字节编程或者 64 字节块擦除模式
下, 为保留,建议 为 00h
flash-ROM 擦写操作的数据 缓冲 寄 存器 (ROM_DAT_BUF) :
位 名称 访问
[7:0]
ROM_DAT_BUF
RW flash-ROM 擦写操作的数 据缓冲 寄存器 xxh
描 述 复 位 值
flash-ROM 控制寄存器 (ROM_CTRL):
位 名称 访问
[7:0]
ROM_CTRL
WO flash-ROM 控制寄存器 00h
描 述 复 位 值
flash-ROM 状态寄存器 (ROM_STATUS):
位 名称 访问
描述 复 位值
7 保留 RO 保留 1
xxh
CH547 手册 15
6 bROM_ADDR_OK RO
[5:2]
1 bROM_CMD_ERR RO
0 保留 RO 保留 0
保 留 RO 保 留 0000b
flash-ROM 操作地址 有效状态位:
该 位为 0 表示 参 数 无效;为 1 表示 地 址有 效
flash-ROM 操作命令 错误状态位:
该 位为 0 表示 命 令有效 ;为 1 表示 是 未知命 令或 超 时
6.5 flash-ROM 操作步骤
1、擦除 flash-ROM,将目 标块中 全部数据 位变为 0 :
(1)、使 能安 全模式, SAFE_MOD = 55h; SAFE_MOD = 0AAh;
(2)、设置全局配 置寄 存器 GLOBAL_CFG 开启写使能 (bCODE_WE 或 bDATA_WE 对应 code 或 data);
(3)、设置地址寄 存器 ROM_ADDR,写入 16 位目 标地址 ,实际仅高 10 位 有效 ;
(4)、设置擦写操作 的缓冲区 模式寄 存器 R OM_BUF_MOD 为 80h, 选择 64 字节块擦除 模式;
(5)、可选 ,设置擦写操作 的数据缓冲 寄 存器 R OM_DAT_BUF 为 00h;
(6)、设置操作控制寄 存器 ROM_CTRL 为 0A6h,执行 块擦除操作, 操作 期间 程序自动 暂停运 行;
(7)、操作完成 后 程序恢复运 行 ,此 时查询状态寄 存器 ROM_STATUS 可以查看 此 次操作状态 ;如果
要 擦除多 个 块,则循 环 (3)、 (4) 、 (5) 、 (6) 、 (7) 步骤 ,步 骤 (3) 、 (4) 、 (5) 顺序 可 对调;
(8)、再次 进入 安 全模式, SAFE_MOD = 55h; SAFE_MOD = 0AAh;
(9)、设置全局配 置寄 存器 GLOBAL_CFG 开启写保 护 (bCODE_WE=0, bDATA_WE=0)。
2、单字节写 f lash-ROM,将目 标字节中 部分 数据 位从 0 变为 1(无法将位数 据从 1 变为 0):
(1)、使 能安 全模式, SAFE_MOD = 55h; SAFE_MOD = 0AAh;
(2)、设置全局配 置寄 存器 GLOBAL_CFG 开启写使能 (bCODE_WE 或 bDATA_WE 对应 code 或 data);
(3)、设置地址寄 存器 ROM_ADDR,写入 16 位目 标地址;
(4)、设置擦写操作 的缓冲区 模式寄 存器 R OM_BUF_MOD 为 80h, 选择单字节编 程模式;
(5)、设置擦写操作 的数据缓冲 寄 存器 ROM_DAT_BUF 为要 写入的字节数 据;
(6)、设置操作控制寄 存器 ROM_CTRL 为 09Ah,执行写操作, 操作 期间 程序自动 暂停运 行;
(7)、操作完成 后 程序恢复运 行 ,此 时查询状态寄 存器 ROM_STATUS 可以查看 此 次操作状态 ;如果
要 写 多 个数 据 ,则循 环 (3)、 (4) 、 (5) 、 (6) 、 (7) 步骤 ,步 骤 (3) 、 (4) 、 (5) 顺序可对调 ;
(8)、再次 进入 安 全模式, SAFE_MOD = 55h; SAFE_MOD = 0AAh;
(9)、设置全局配 置寄 存器 GLOBAL_CFG 开启写保 护 (bCODE_WE=0, bDATA_WE=0)。
3、块写 f lash-ROM,将多个 目 标字节中 部分 数据 位从 0 变 为 1(无法将位数 据从 1 变 为 0):
(1)、使 能安 全模式, SAFE_MOD = 55h; SAFE_MOD = 0AAh;
(2)、设置全局配 置寄 存器 GLOBAL_CFG 开启写使能 (bCODE_WE 或 bDATA_WE 对应 code 或 data);
(3)、设置地址寄 存器 ROM_ADDR,写入 16 位起始目标地 址, 例如 1 357h;
(4)、设置擦写操作 的缓冲区 模式寄 存器 R OM_BUF_MOD 为结束目标地 址 (含 )的低 6 位,该结束地
址应 该大于或等 于 ROM_ADDR_L[5:0] 起始 目标地 址 ,选择数据 块 编 程模式, 例如结束 地 址为
1364h,则 ROM_BUF_MOD 应该设置为 24h( 64h&3Fh),计算出数 据块的字节数=0Dh ;
(5)、在 xRAM 中 分配一 个按 64 字节对齐 的缓冲区域,例如 0580h~ 05BFh,用起始目标地 址的低 6
位指定 在该缓冲 区 域中 的 偏移地址,得到 本 次 数 据 块 编 程 操作的 xRAM 缓冲区 起始 地 址 , 将
待写数 据块 从 该 xRAM 缓冲区 起始地 址开 始存 放, 并将该 xRAM 缓冲区 起始地 址置入 DPTR,
例如 DPTR=0580h+(57h&3Fh)=0597h,实际 本 次编程 操作 只 用到 0597h~ 05A4h 地址的 xRAM ;
(6)、设置操作控制寄 存器 ROM_CTRL 为 09Ah,执行写操作, 操作 期间 程序自动 暂停运 行;
(7)、操作完成 后 程序恢复运 行 ,此 时查询状态寄 存器 ROM_STATUS 可以查看 此 次操作状态 ;如果
0
0
CH547 手册 16
要 写 多 个数 据 ,则循 环 (3)、 (4) 、 (5) 、 (6) 、 (7) 步骤 ,步 骤 (3) 、 (4) 、 (5) 顺序可对调 ;
(8)、再次 进入 安 全模式, SAFE_MOD = 55h; SAFE_MOD = 0AAh;
(9)、设置全局配 置寄 存器 GLOBAL_CFG 开启写保 护 (bCODE_WE=0, bDATA_WE=0)。
4、读 flash-ROM:
直接 使用 MOVC 指令, 或通过 指 向 程序存储 空间 的指 针 , 读 取 目 标 地址 的 code 或 data 。
5、单字节写 O TP 数据区域, 将目标 字节中 部分 数据 位从 0 变为 1(无法将位数 据从 1 变为 0):
(1)、使 能安 全模式, SAFE_MOD = 55h; SAFE_MOD = 0AAh;
(2)、设置全局配 置寄 存器 GLOBAL_CFG 开启写使能 (bDATA_WE);
(3)、设置地址寄 存器 ROM_ADDR,写入目标地址 (20h~ 3Fh),实际仅 低 6 位中 的高 4 位有效 ;
(4)、设置擦写操作 的缓冲区 模式寄 存器 R OM_BUF_MOD 为 80h, 选择单字节编 程模式;
(5)、设置擦写操作 的数据缓冲 寄 存器 ROM_DAT_BUF 为要 写入的字节数 据;
(6)、设置操作控制寄 存器 ROM_CTRL 为 099h,执行写操作, 操作 期间 程序自动 暂停运 行;
(7)、操作完成 后 程序恢复运 行 ,此 时查询状态寄 存器 ROM_STATUS 可以查看 此 次操作状态 ;如果
要 写 多 个数 据 ,则循 环 (3)、 (4) 、 (5) 、 (6) 、 (7) 步骤 ,步 骤 (3) 、 (4) 、 (5) 顺序可对调 ;
(8)、再次 进入 安 全模式, SAFE_MOD = 55h; SAFE_MOD = 0AAh;
(9)、设置全局配 置寄 存器 GLOBAL_CFG 开启写保 护 (bCODE_WE=0, bDATA_WE=0)。
6、以 4 字节为 单位读 取 ReadOnly 只读信息 区域 或者 OTP 数 据区域:
(1)、设置地址寄 存器 R OM_ADDR,写入按 4 字节对齐 的目 标地址(00h~ 3Fh),实际仅低 6 位 有效 ;
(2)、设置操作控制寄 存器 ROM_CTRL 为 08Dh,执行读操作, 操作 期间 程序自动 暂停运 行;
(3)、操作完成 后 程序恢复运 行 ,此 时查询状态寄 存器 ROM_STATUS 可以查看 此 次操作状态 ;
(4)、从 flash-ROM 数据寄 存器 ROM_DATA_HI 和 ROM_DATA_LO 中 获得 4 字节数据 。
7、注意事 项:对 flash-ROM/EEPROM 进行擦写操作时,建议只在 -20℃~ 85℃环境 温度下 进行。如
果 在超 出 上述温度范围 时 进 行编 程擦写操作 ,虽然一 般 情况 下 是正常 的, 但 是 不排 除有 降低数据保
持能力 TDR 和降 低擦写次 数 NEPCE 甚至影响数据 准确性 的可 能性 。
6.6 在板 编 程和 ISP 下载
当配置信息 Code_Protect=0 时,CH547 芯片 flash-ROM 中的 代码和数 据可以由外 部的编 程器 通
过同步串 行接口读 写; 当配置信息 Code_Protect=1 时, flash-ROM 中的代码 和数据被 保护 ,无法读
出 ,但 是 可 以被 擦除 , 擦除 后重新上电则解 除代码保 护。
当 CH547 芯片被 预置了 BootLoader 引导程序后 , CH547 可以 支持 USB 或者 异步串口等 多种 ISP
下载方式 加 载应 用程序;但 在没 有引导程序的情况 下,CH547 只 能由外 部专 用编程器写 入引导程序
或者应 用程序。 为了支持 在板 编程,电路中需要预留 CH547 与编程器之 间的 4 根连接引 脚,最少 的
必 要连接引 脚 是 3 根 : P1.4、 P1.6 、 P1.7 。
表 6.6.1 与编程器之 间 的连 接 引 脚
引脚 GPIO 引脚描述
RST
SCS
SCK
MISO P1.6 编程状态 下 的数据输出引脚 (必要 )
P5.7 编程状态 下的 复位 控制引脚 (可选 ),高 电平允许进入编 程状态
P1.4 编程状态 下 的片选输入引 脚(必 要),默认高 电平,低电平有效
P1.7 编程状态 下 的时钟输入引脚 (必要 )
6.7 芯片唯 一 ID 号
CH547 手册 17
每 只单片机出厂 时 都具有 唯 一 ID 号, 即 芯片 身份 识别 号。该 ID 数据 及其 校验 和共 8 个 字节,
存储于只 读 信息区 域 的偏移地址为 10h 的区域中 ,具体操作请 参考 C 语言例 子 程序。
表 6.7.1 芯片 ID 地 址表
偏移 地址 ID 数据 描 述
10h、 11h
12h、 13h
14h、 15h
16h、 17h ID 首字、次 字、末 字数据 的 16 位累加和,用于 ID 校验
ID 号可 以配合下 载工具用于 对目 标程序进行 加密 ,一般 的应用 ,只需 使用到 ID 号前 32 位。
ID 首字数据 ,依次 是 ID 号的最 低字节、次 低字节
ID 次字数 据,依 次是 ID 号的次高字 节、高 字节
ID 末字数据 ,依次 是 48 位 ID 号的次最高字 节、最高 字节
6.8 温度传感器 TS 的校 准信息
温度传感器的 校 准信 息 位 于只读 信 息区 域 的 偏移地址为 0Ch 的区域中 。 具体 操作请 参考 C 语言
例子程序。
7、电源管理 、睡眠 及复 位
7.1 外部电 源输入
CH547 芯片内置 5V 到 3.3V 的低压差 电压调整 器 LDO,产生的 3.3V 电 源用于 USB 等模块。CH547
支持 外部 5V 或者 3.3V 甚至 2.8V 电源电 压输入 , 两种 电 源电 压 输入 模式 参考下表。
外部电源电压
3.3V 或 2.8V
包括小 于 3.6V
5V
包括 大于 3.6V
在电源上电 或者系统复位后 , CH547 默认处于运 行状态。 在性能满足要 求的前 提下,适当 降 低
系统主频可以降 低运 行时的功耗 。当 CH547 完 全不需要 运 行时,可以设置 PCON 中的 PD 进 入睡眠状
态 ,睡眠状态下可以 选择 通 过 USB 、 UART0、 UART1 、 SPI0 以 及部 分 GPIO 进 行外部 唤醒 。
VDD 引脚电 压: 外部电压 2 .8V~ 5V
输入 外部 3.3V 电 压到 I/O 及电 压 调整 器,
必须 对地接 不 小于 0.1uF 退耦 电容
输入外部 5V 电 压到 I/O 及电 压调整器,
必须 对地接 不 小于 0.1uF 退耦 电容
V33 引脚电 压:内部 USB 电压 3.3V
( 注:睡眠 时 V33 自 动短接到 VDD )
短接 VDD 输入作为 内部 USB 电源 ,
必须 对地接 不 小于 0.1uF 退耦 电容
内部电压调整器 3.3V 输出
及 3.3V 内部 USB 电源输入 ,
必须 对地接 不 小于 0.1uF 退耦 电容
7.2 电源 和睡眠控制寄 存器
表 7.2.1 电源和 睡眠控制寄 存器 列表
名称 地址
WDOG_COUNT FFh 看门狗计数寄 存器 00h
RESET_KEEP FEh 复位 保持 寄 存器 00h
POWER_CFG BAh 电源管理配置寄 存器 0xh
WAKE_CTRL A9h 睡眠唤醒控制寄存器 00h
PCON 87h 电源控制寄存器 10h
描述 复 位值
看门狗计数寄 存器 (WDOG_COUNT):
位 名称 访问
[7:0] WDOG_COUNT
看门狗当 前 计 数, 计 满 0FFh 转 向 00h 时 溢 出, 溢 出时 自
RW
动 设置中断标 志 bWDOG_IF_TO 为 1
描述 复 位值
00h
CH547 手册 18
复 位保 持寄 存器(RESET_KEEP) :
位 名称 访问
[7:0] RESET_KEEP
复位 保持 寄存器,数 值 可 以 被人 为修改,除了上 电 复位 可
RW
将 其清零 之外,其它 任 何复位都不 影响该 数值
电源管理配置寄 存器(POWER_CFG) ,仅在 安 全模式下可写:
位 名称 访问
选择睡眠 下 电模式:
7 bPWR_DN_MODE RW
该位为 0 选择下电/深 度 睡眠 模式,更省 电但唤醒 慢;
该位为 1 选择待机/正 常睡眠 模式,唤醒 快
选择 USB 上 拉电 阻 的 阻 值:
6 bUSB_PU_RES RW
该位为 0 选择 1 .5KΩ阻值 ,用于 V33 为 3.3V 的 情况;
该位为 1 选择 7KΩ 阻值, 用于 V33 为 5V 的 情况
5 bLV_RST_OFF RW
低 压复 位检测模块的 关闭控制 , 该 位 为 0 启 用 电 源电
压检测并在 低 压时 产生复 位信号;为 1 关闭低压检测
USB 电源调整器 LDO 的关闭控制(睡眠时 自动关闭 ):
4 bLDO_3V3_OFF RW
该 位为 0 则 由 VDD 电 源产生 3.3V 电压用于 USB 等模块;
为 1 则禁 用 LDO 并内部短 接 V33 到 VDD
内核电 压 模式:
3 bLDO_CORE_VOL RW
该位为 0 是正 常电压 模式;
该位为 1 是提升 电压 模式,性 能更好 ,支持更 高主频
选择 在下电/深 度 睡眠 模式 下 的数据保 持电 源 电 压 :
000 选择 2.0V; 001 选择 1.9V; 010 选择 1.8V;
011 选择 1.7V; 100 选择 1.6V; 101 选择 1.5V;
[2:0] MASK_ULLDO_VOL RW
110 选择 1.4V; 111 选择 1.3V。
上 述为相对参考 值 , 在 5V 供电 下 不用 调节 ;
如采用 3.3V 供电,建议先 读取,低 3 位减 去 2( 如原
值小于 2 则结果清 0),并在安 全模式下写回以选择相
对高两档的数据保 持电压
描 述 复 位 值
00h
描 述 复 位 值
0
0
0
0
0
xxxb
睡眠唤醒 控制寄存器(WAKE_CTRL) , 仅在 安 全模式下可写 :
位
名称 访问
描述 复 位值
bWAK_BY_USB RW USB 事件唤醒使 能, 该位为 0 禁止唤醒 0
6
bWAK_RXD1_LO RW
5
bWAK_P1_5_LO RW P1.5 低电平唤醒使 能,为 0 禁止唤醒 0
4
bWAK_P1_4_LO RW P1.4 低电平唤醒使 能,为 0 禁止唤醒 0
3
bWAK_P0_3_LO RW P0.3 低电平唤醒使 能,为 0 禁止唤醒 0
UART1 接收输入 低电平唤醒使 能,为 0 禁止唤醒 。
根 据 bUART1_PIN_X=0/1 选择 RXD1 或 RXD1_引 脚
0
2 bWAK_P57H_INT3L RW P5.7 高电平和 I NT3 低电平唤醒使 能,为 0 禁止唤醒 。 0
1 bWAK_INT0E_P33L RW
0
bWAK_RXD0_LO RW
INT0 边沿变化和 P3.3 低电平唤醒使 能,为 0 禁止唤醒。
其 中 INT0 根据 bINT0_PIN_X=0/1 选择 INT0 或 INT0_ 引脚
UART0 接收输入 低电平唤醒使 能,为 0 禁止唤醒 。
根 据 bUART0_PIN_X=0/1 选择 RXD0 或 RXD0_引 脚
0
0
电 压 比 较 器的 唤醒使 能 由 bCMP_EN 控制,当 bCMP_EN 为 1 时,如果比较 器 结果 反生变化 则 自动唤醒。
CH547 手册 19
电源控制寄存器(PCON) :
位
6
5
4
3
2
1
0
bRST_FLAG1 bRST_FLAG0
名称 访问
SMOD RW
保 留 RO 保 留 0
bRST_FLAG1 R0 芯片最近一 次复 位标志高 位 0
bRST_FLAG0 R0 芯片最近一 次复 位标志 低位 1
GF1 RW 通用标志 位 1:使用者可自己定 义, 可软件清零 或 置位 0
GF0 RW 通用标志 位 0:使用者可自己定 义, 可软件清零 或 置位 0
PD RW
保 留 RO 保 留 0
0 0 软件复位,来 源: bSW_RESET=1 并且 (bBOOT_LOAD=0 或 bWDOG_EN=1)
0 1
1 0
1 1
当 用定时器 1 产生 UART0 波特率 时, 选择 UART0 模式 1、
2、 3 的通讯波特率:0-慢 速模式 ;1-快 速模式
睡眠 模式使 能,置 1 后睡眠 , 唤醒后硬 件 自动清零。
强烈建议在 睡眠前关 闭 全局中断(EA=0)。
表 7.2.2 芯片最近 一 次复 位标 志 描述
电源上 电复 位或 低压 检测复 位,来源:VDD 引脚电压低 于 检测电平
看门狗复位,来源 : bWDOG_EN=1 并且 看门狗超时 溢出
外部引 脚手 工复位,来 源:En_P5.7_RESET=1 并且 P5.7 输入高 电平
描述 复 位值
0
0
复 位标志描 述
7.3 复位 控制
CH547 有 5 个复位源 :上 电 复位和电源 低压 检测复 位、外 部 复位、软件复位、 看门狗复 位,后
三 者 属 于 热 复位。
7.3.1 上电复 位和电 源低 压检测复 位
上 电复 位 POR 由 片内 上 电检测电路产生 , 并经由硬件自 动延 时 Tpor 以保 持 复 位 状态,延时结束
后 CH547 运行。
电 源 低 压 检测 复位 LVR 由 片内电 压 检测电路 产生 。 LVR 电路持 续监控 VDD 引脚 的电 源 电 压 ,低
于检测电平 Vpot 时 产生 低压 复位,并由硬件 自动延时 Tpor 以保持复位 状态 , 延时结束后 CH547 运
行。
只 有上电 复 位和电源 低 压 检测 复 位 才使 CH547 重新 加 载 配 置信息 以及 清零 RESET_KEEP ,其 它 热
复 位 不 影响。
7.3.2 外部复 位
外部复 位由 外加于 RST 引 脚的高 电平 产生。 当配置信息 En_P5.7_RESET 为 1,并且 RST 引 脚上
的高 电平持续 时间大于 Trst 时触发复 位过 程。当外加高 电平信号撤消后 ,硬件自 动延 时 Trdl 以保
持复 位状态 ,延 时结束后 CH547 从 0 地址 开始执行。
7.3.3 软件复位
CH547 支持内部软件复 位,以便不 需要外部干 预即可主动 复位 CPU 状态并重新运行 。设置全 局
配 置寄 存器 GLOBAL_CFG 中 的 bSW_RESET 为 1 , 即可软件复位,并且自 动延 时 Trdl 以保 持 复 位 状态 ,
延时结束 后 CH547 从 0 地址 开 始执行,bSW_RESET 位由硬件自 动 清零。
当 bSW_RESET 置 1 时,如果 bBOOT_LOAD=0 或者 bWDOG_EN=1 ,那么复位后 bRST_FLAG1/0 将指示
为软件 复位 ;当 bSW_RESET 置 1 时,如果 bBOOT_LOAD=1 并且 bWDOG_EN=0,那么 bRST_FLAG1/0 将不