C8051F38x 全速 USB 闪存 MCU 产品系列

C8051F380/1/2/3/4/5/6/7/C
全速 USB 闪存 MCU 产品系列
修订版 1.4 模拟外设
- 10- 位 ADC ( 仅 F380/1/2/3)
• 转换速率可达 500 ksps
• 内建模拟多路器,单端或差分输入
• VREF 可在外部引脚、内部 VREF 或 VDD 中选择
• 内建温度传感器
• 外部转换启动输入
- 两个比较器
- 内部电压基准 ( 仅 F380/1/2/3 )
- 掉电检测器和上电复位电路
USB 控制器
- 符合 USB 规范 2.0 版
- 全速 (12 Mbps) 或低速 (1.5 Mbps) 操作
- 集成时钟恢复电路;全速或低速均无需外部晶体
- 支持 8 个灵活端点
- 1 kB USB 缓存
- 集成收发器;无需外部电阻
在片调试
- 片内调试电路提供全速、非侵入式的在系统调试 (不需
-
仿真器)
支持断点、单步、观察 / 修改存储器和寄存器
比使用仿真芯片、目标仿真头和仿真插座的仿真系统有更
优越的性能
电源电压输入 : 2.7 to 5.25 V
- 使用片内电压调整器时,支持的电压范围为 2.7~5.25V
高速 8051 微控制器内核
- 流水线指令结构;70%的指令的执行时间为一个或两个系
统时钟周期
- 速度高达 48 MIPS
- 扩展的中断系统
存储器
- 4352 或 2304 字节 RAM
- 64 或 32 kB Flash; 可在系统编程,扇区大小为 512 字节
数字外设
- 40/25 个端口 I/O; 均耐 5 V 电压,大灌电流
- 硬件增强型 SPI™, 两个 I2C/SMBus™, 和两个增强型
UART 串口
- 6 个通用 16- 位计数器 / 定时器
- 16- 位可编程计数器阵列 (PCA),有 5 个捕捉比较模块
- 外部存储器接口 (EMIF)
时钟源
- 内部振荡器 : ±0.25% 的精度 (时钟恢复被使能时)。支
持所有 USB 和 UART 工作方式
- 外部振荡器 : 晶体 , RC, C, 或外部时钟 (1 或 2 引脚方式 )
- 低频 (80 kHz) 内部振荡器
- 可在运行中切换时钟源
封装
- 48- 脚 TQFP (C8051F380/2/4/6)
- 32- 脚 LQFP (C8051F381/3/5/7)
- 5x5 mm 32- 脚 QFN (C8051F381/3/5/7)
温度范围 : –40 to +85 °C
10-bit
500 ksps
ADC
温度
传感器
+
-
+
-
VREG
VREF
UART0
UART1
SPI
SMBus0
SMBus1
PCA
6个定时器
端口 0
交叉开关
A
M
U
X
数字 I/O
仅限48脚
外部存储器接口
模拟外设
端口 1
端口 2
端口 3
端口 4
仅C 805 1F38 0/1/2/3
精准内部振荡器
USB 控制器 / 收发器
高速控制器核
修订版 1.4 10/13
64/32 kB
ISP FLASH
8051 CPU
48 MIPS
4/2 kB RAM
中断系统
调试电路
POR WDT
Copyright © 2013 by Silicon Laboratories
C8051F380/1/2/3/4/5/6/7/C
C8051F380/1/2/3/4/5/6/7/C
2
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
篇目
1. 系统概述..................................................................................................................... 16
2. C8051F34x 兼容性 .................................................................................................... 20
2.1. 硬件不兼容性 ..................................................................................................... 21
3. 引脚和封装定义.......................................................................................................... 22
4. 典型连接图 ................................................................................................................. 34
4.1. 电源 ................................................................................................................... 34
4.2. USB ................................................................................................................... 36
4.3. 参考电压 (VREF) ............................................................................................... 36
5. 电气特性..................................................................................................................... 37
5.1. 极限参数 ............................................................................................................ 37
5.2. 总体电气特性 ..................................................................................................... 38
6. 10 位 ADC (ADC0 的,只有 C8051F380/1/2/3)..................................................... 46
6.1. 输出码格式......................................................................................................... 47
6.2. 温度传感器......................................................................................................... 48
6.3. 工作方式 ............................................................................................................ 50
6.3.1. 启动转换.................................................................................................... 50
6.3.2. 跟踪方式.................................................................................................... 51
6.3.3. 建立时间要求............................................................................................. 52
6.4. 可编程窗口检测器.............................................................................................. 56
6.4.1. 窗口检测器示例 ......................................................................................... 58
6.5. ADC0 模拟多路选择器 (仅 C8051F380/1/2/3)............................................... 59
7. 电压基准..................................................................................................................... 62
8. 比较器 0 和比较器 1 ................................................................................................... 64
8.1. 比较器多路选择器.............................................................................................. 71
9. 稳压器 (REG0 和 REG1)............................................................................................ 74
9.1. 稳压器 (REG0)................................................................................................... 74
9.1.1. 稳压器方式选择 ......................................................................................... 74
9.1.2. VBUS 检测 ................................................................................................ 74
9.2. 稳压器 (REG1)................................................................................................... 74
10. 电源管理................................................................................................................... 76
10.1. 空闲方式 .......................................................................................................... 76
10.2. 停止方式 .......................................................................................................... 77
10.3. 挂起方式 .......................................................................................................... 77
11. CIP-51 微控制器....................................................................................................... 79
11.1. 指令集 .............................................................................................................. 80
11.1.1. 指令和 CPU 时序 ..................................................................................... 80
11.2. CIP-51 寄存器说明........................................................................................... 85
12. 指令预取引擎 ........................................................................................................... 88
13. 存储器组织 ............................................................................................................... 89
13.1. 程序存储器....................................................................................................... 91
13.2. 数据存储器....................................................................................................... 91
13.3. 通用寄存器....................................................................................................... 92
13.4. 位寻址空间....................................................................................................... 92
13.5. 堆栈 ................................................................................................................. 92
??? 1.4
3
C8051F380/1/2/3/4/5/6/7/C
14. 外部数据存储器接口和片内 XRAM .......................................................................... 93
14.1. 访问 XRAM ...................................................................................................... 93
14.1.1. 16 位 MOVX 示例 .................................................................................... 93
14.1.2. 8 位 MOVX 示例 ...................................................................................... 93
14.2. 访问 USB FIFO 空间........................................................................................ 94
14.3. 配置外部存储器接口 ........................................................................................ 95
14.4. 端口配置 .......................................................................................................... 95
14.5. 复用和非复用选择............................................................................................ 98
14.5.1. 复用方式配置........................................................................................... 98
14.5.2. 非复用方式配置 ....................................................................................... 98
14.6. 存储器模式选择 ............................................................................................. 100
14.6.1. 只用内部 XRAM .................................................................................... 100
14.6.2. 无块选择的分割模式.............................................................................. 100
14.6.3. 带块选择的分割模式.............................................................................. 101
14.6.4. 只用外部存储器 ..................................................................................... 101
14.7. EMIF 时序...................................................................................................... 102
14.7.1. 非复用方式 ............................................................................................ 104
14.7.1.1. 16 位 MOVX:EMI0CF[4:2] = 101, 110,或 111 ........................ 104
14.7.1.2. 无块选择的 8 位 MOVX:EMI0CF[4:2] = 101 或 111.................... 105
14.7.1.3. 带块选择的 8 位 MOVX:EMI0CF[4:2] = 110 ............................... 106
14.7.2. 复用方式................................................................................................ 107
14.7.2.1. 16 位 MOVX:EMI0CF[4:2] = 001, 010,或 011 ....................... 107
14.7.2.2. 无块选择的 8 位 MOVX:EMI0CF[4:2] = 001 或 011 ................... 108
14.7.2.3. 带块选择的 8 位 MOVX:EMI0CF[4:2] = 010............................... 109
15. 特殊功能寄存器....................................................................................................... 111
15.1. SFR 分页 ........................................................................................................ 111
16. 中断系统..................................................................................................................118
16.1. MCU 中断源和中断向量..................................................................................119
16.1.1. 中断优先级 .............................................................................................119
16.1.2. 中断延迟.................................................................................................119
16.2. 中断寄存器说明 ..............................................................................................119
16.3. INT0 和 INT1 外部中断源............................................................................. 127
17. 复位源 .................................................................................................................... 129
17.1. 上电复位 ........................................................................................................ 130
17.2. 掉电复位 / VDD 监视器.................................................................................. 131
17.3. 外部复位 ........................................................................................................ 132
17.4. 时钟丢失检测器复位 ...................................................................................... 132
17.5. 比较器 0 复位................................................................................................. 132
17.6. PCA 看门狗定时器复位 ................................................................................. 133
17.7. FLASH 错误复位............................................................................................ 133
17.8. 软件复位 ........................................................................................................ 133
17.9. USB 复位 ....................................................................................................... 133
18. Flash 存储器.......................................................................................................... 135
18.1. FLASH 存储器编程 ........................................................................................ 135
18.1.1. FLASH 锁定和关键码功能..................................................................... 135
4
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
18.1.2. FLASH 擦除 .......................................................................................... 135
18.1.3. FLASH 写 .............................................................................................. 136
18.2. 非易失性数据存储.......................................................................................... 137
18.3. 安全选项 ........................................................................................................ 137
19. 时钟源 .................................................................................................................... 142
19.1. 系统时钟选择 ................................................................................................. 143
19.2. USB 时钟选择................................................................................................ 143
19.3. 可编程内部高频 (H-F) 振荡器 ........................................................................ 145
19.3.1. 内部振荡器挂起方式.............................................................................. 145
19.4. 时钟乘法器..................................................................................................... 147
19.5. 可编程内部低频 (L-F) 振荡器......................................................................... 148
19.5.1. 内部 L-F 振荡器标定.............................................................................. 148
19.6. 外部振荡器驱动电路 ...................................................................................... 149
19.6.1. 外部晶体方式......................................................................................... 149
19.6.2. 外部 RC 方式......................................................................................... 151
19.6.3. 外部电容方式......................................................................................... 151
20. 端口输入 / 输出....................................................................................................... 153
20.1. 优先权交叉开关译码器................................................................................... 154
20.2. 端口 I/O 初始化.............................................................................................. 158
20.3. 通用端口 I/O .................................................................................................. 161
21. 通用串行总线控制器 (USB0).................................................................................. 172
21.1. 端点地址 ........................................................................................................ 172
21.2. USB 收发器 ................................................................................................... 173
21.3. USB 寄存器访问 ............................................................................................ 175
21.4. USB 时钟配置................................................................................................ 179
21.5. FIFO 管理 ...................................................................................................... 181
21.5.1. FIFO 分割方式....................................................................................... 181
21.5.2. FIFO 双缓冲 .......................................................................................... 182
21.5.3. FIFO 访问.............................................................................................. 182
21.6. 功能地址 ........................................................................................................ 183
21.7. 功能配置和控制 ............................................................................................. 183
21.8. 中断 ............................................................................................................... 186
21.9. 串行接口引擎 ................................................................................................. 193
21.10. 端口 0 .......................................................................................................... 193
21.10.1. 端点 0 SETUP 事务 ............................................................................. 193
21.10.2. 端点 0 IN 事务 ..................................................................................... 193
21.10.3. 端点 0 OUT 事务 ................................................................................. 194
21.11. 端点 1-3 配置 ............................................................................................... 196
21.12. 端点 1~3 输入 (IN) 控制 ............................................................................... 197
21.12.1. 端点 1~3 输入 (IN) 中断或批量方式..................................................... 197
21.12.2. 端点 1~3 输入 (IN) 等时方式................................................................ 198
21.13. 端点 1~3 输出 (OUT) 控制 ........................................................................... 201
21.13.1. 端点 1~3 输出 (OUT) 中断或批量方式................................................. 201
21.13.2. 端点 1~3 输出 (OUT) 等时方式............................................................ 201
22. SMBus0 和 SMBus1 (I2C 兼容 )........................................................................... 205
??? 1.4
5
C8051F380/1/2/3/4/5/6/7/C
22.1. 支持文档 ........................................................................................................ 206
22.2. SMBus 配置................................................................................................... 206
22.3. SMBus 操作................................................................................................... 206
22.3.1. 发送器与接收器 ..................................................................................... 207
22.3.2. 总线仲裁................................................................................................ 207
22.3.3. 时钟低电平扩展 ..................................................................................... 207
22.3.4. SCL 低电平超时 .................................................................................... 207
22.3.5. SCL 高电平 (SMBus 空闲 ) 超时 ........................................................... 208
22.4. SMBus 的使用 ............................................................................................... 208
22.4.1. SMBus 配置寄存器................................................................................ 208
22.4.2. SMBus 定时控制寄存器 ........................................................................ 210
22.4.3. SMBus 控制寄存器 SMBnCN................................................................ 214
22.4.3.1. 软件 ACK 产生 .............................................................................. 214
22.4.3.2. 硬件 ACK 产生 .............................................................................. 214
22.4.4. 硬件从地址识别 ..................................................................................... 217
22.4.5. 数据寄存器 ............................................................................................ 221
22.5. SMBus 传输方式............................................................................................ 223
22.5.1. 写操作 (主方式)................................................................................. 223
22.5.2. 读操作 (主方式)................................................................................. 224
22.5.3. 写操作 (从方式)................................................................................. 225
22.5.4. 读操作 (从方式)................................................................................. 226
22.6. SMBus 状态译码............................................................................................ 226
23. UART0 ................................................................................................................... 232
23.1. 增强的波特率发生器 ...................................................................................... 233
23.2. 工作方式 ........................................................................................................ 234
23.2.1. 8 位 UART ............................................................................................. 234
23.2.2. 9 位 UART ............................................................................................. 235
23.3. 多机通信 ........................................................................................................ 236
24. UART1 ................................................................................................................... 240
24.1. 波特率发生器 ................................................................................................. 241
24.2. 数据格式 ........................................................................................................ 242
24.3. 配置和操作..................................................................................................... 243
24.3.1. 数据发送................................................................................................ 243
24.3.2. 数据接收................................................................................................ 243
24.3.3. 多机通信................................................................................................ 244
25. 增强型串行外设接口 (SPI0) ................................................................................... 250
25.1. 信号说明 ........................................................................................................ 251
25.1.1. 主出从入 (MOSI) ................................................................................... 251
25.1.2. 主入从出 (MISO) ................................................................................... 251
25.1.3. 串行时钟 (SCK) ..................................................................................... 251
25.1.4. 从选择 (NSS)......................................................................................... 251
25.2. SPI0 主方式操作............................................................................................ 251
25.3. SPI 从方式操作.............................................................................................. 253
25.4. SPI 中断源 ..................................................................................................... 254
25.5. 串行时钟相位和极性 ...................................................................................... 254
6
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
25.6. SPI 特殊功能寄存器....................................................................................... 256
26. 定时器 .................................................................................................................... 263
26.1. 定时器 0 和定时器 1....................................................................................... 266
26.1.1. 方式 0 — 13 位计数器 / 定时器.............................................................. 266
26.1.2. 方式 1 — 16 位计数器 / 定时器.............................................................. 267
26.1.3. 方式 2 — 自动重装载的 8 位计数器 / 定时器 ......................................... 267
26.1.4. 方式 3 — 两个 8 位计数器 / 定时器 (仅限定时器 0)........................... 268
26.2. 定时器 2......................................................................................................... 274
26.2.1. 16 位自动重装载方式 ............................................................................ 274
26.2.2. 8 位自动重装载定时器........................................................................... 275
26.2.3. 定时器 2 捕捉方式:USB 帧起始捕捉或 LFO 下降沿捕捉方式.............. 275
26.3. 定时器 3......................................................................................................... 281
26.3.1. 16 位自动重装载方式 ............................................................................ 281
26.3.2. 8 位自动重装载定时器........................................................................... 282
26.3.3. 定时器 3 捕捉方式:USB 帧起始或 LFO 下降沿 ................................... 282
26.4. 定时器 4......................................................................................................... 288
26.4.1. 16 位自动重装载方式 ............................................................................ 288
26.4.2. 8 位自动重装载定时器........................................................................... 289
26.5. 定时器 5......................................................................................................... 293
26.5.1. 16 位自动重装载方式 ............................................................................ 293
26.5.2. 8 位自动重装载定时器........................................................................... 294
27. 可编程计数器阵列 .................................................................................................. 298
27.1. PCA 计数器 / 定时器...................................................................................... 299
27.2. PCA0 中断源 ................................................................................................. 300
27.3. 捕捉 / 比较模块 .............................................................................................. 301
27.3.1. 边沿触发的捕捉方式.............................................................................. 302
27.3.2. 软件定时器 (比较)方式...................................................................... 303
27.3.3. 高速输出方式......................................................................................... 304
27.3.4. 频率输出方式......................................................................................... 305
27.3.5. 8 位脉宽调制器方式 .............................................................................. 306
27.3.6. 16 位脉宽调制器方式 ............................................................................ 307
27.4. 看门狗定时器方式.......................................................................................... 308
27.4.1. 看门狗定时器操作 ................................................................................. 308
27.4.2. 看门狗定时器的使用.............................................................................. 309
27.5. PCA0 寄存器说明 ...........................................................................................311
28. C2 接口 .................................................................................................................. 316
28.1. C2 接口寄存器 ............................................................................................... 316
28.2. C2 引脚共享................................................................................................... 319
文档更改列表 ........................................................................................... 320
联系信息................................................................................................... 321
??? 1.4
7
C8051F380/1/2/3/4/5/6/7/C
8
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
图目录
图
图
图
图
图
图
图
图
图
图
图
图
图
图
1.1. 8051F380/2/4/6 原理图框 ............................................................................ 18
1.2. C8051F381/3/5/7 原理图框 ......................................................................... 19
3.1. TQFP-48 引脚图 ( 顶视图 ) .......................................................................... 25
3.2. TQFP-48 封装图 .......................................................................................... 26
3.3. 推荐的 TQFP-48 PCB 焊盘图 ...................................................................... 27
3.4. LQFP-32 引脚图 ( 顶视图 ) .......................................................................... 28
3.5. LQFP-32 封装图 .......................................................................................... 29
3.6. 推荐的 LQFP-32 PCB 焊盘图 ...................................................................... 30
3.7. QFN-32 引脚图 ( 顶视图 ) ............................................................................ 31
3.8. QFN-32 封装图 ............................................................................................ 32
3.9. 推荐的 QFN-32 PCB 焊盘图 ........................................................................ 33
4.1. 有使用稳压器但无 USB 的连接图 ................................................................ 34
4.2. 未使用稳压器和无 USB 的连接图 ................................................................ 34
4.3. 有使用稳压器且连接 USB 的连接图
(总线供电) ....................................................................................................... 35
图 4.4. 有使用稳压器且连接 USB 的连接图
(自供电) ........................................................................................................ 35
图 4.5. USB 引脚连接图 ......................................................................................... 36
图 4.6. 内部参考电压连接图 ................................................................................... 36
图 6.1. ADC0 功能框图 ........................................................................................... 46
图 6.2. 典型的温度传感器传递函数 ......................................................................... 48
图 6.3. 1 点校准温度传感器错误 ............................................................................. 49
图 6.4. 10 位 ADC 跟踪和转换时序示例 .................................................................. 51
图 6.5. ADC0 等效输入电路 .................................................................................... 52
图 6.6. ADC 窗口比较示例 (右对齐单端方式数据) .............................................. 58
图 6.7. ADC 窗口比较示例 (左对齐单端方式数据) .............................................. 58
图 7.1. 电压基准功能框图 ....................................................................................... 62
图 8.1. 比较器 0 功能框图 ....................................................................................... 64
图 8.2. 比较器 1 功能框图 ....................................................................................... 65
图 8.3. 比较器回差电压曲线 .................................................................................... 66
图 8.4. 比较器输入多路器原理框图 ......................................................................... 71
图 11.1. CIP-51 原理框图 ........................................................................................ 79
图 13.1. 64 kB 器件 (C8051F380/1/4/5) 存储器组织图 ........................................... 89
图 13.2. 32 kB 器件 (C8051F382/3/6/7) 存储器组织图 ........................................... 90
图 13.3. 16 kB 器件 (C8051F38C) 存储器组织图 .................................................... 91
图 14.1. USB FIFO 空间和 XRAM 存储器映射 (USBFAE=‘1’) ................................ 94
图 14.2. 复用方式配置示例 ..................................................................................... 98
图 14.3. 非复用方式配置示例 .................................................................................. 99
图 14.4. EMIF 工作模式 ........................................................................................ 100
图 14.5. 非复用 16 位 MOVX 时序 ........................................................................ 104
图 14.6. 无块选择的非复用 8 位 MOVX 时序 ........................................................ 105
图 14.7. 带块选择的非复用 8 位 MOVX 时序 ........................................................ 106
图 14.8. 复用方式 16 位 MOVX 时序 ..................................................................... 107
??? 1.4
8
C8051F380/1/2/3/4/5/6/7/C
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
9
14.9. 无块选择的复用方式 8 位 MOVX 时序 ..................................................... 108
14.10. 带块选择的复用方式 8 位 MOVX 时序 ................................................... 109
17.1. 复位源框图 .............................................................................................. 129
17.2. 上电复位和 VDD 监视器复位时序 ........................................................... 130
18.1. FLASH 程序存储器组织和安全字节 ........................................................ 137
19.1. 时钟源框图 .............................................................................................. 142
19.2. 外部晶体示例 ........................................................................................... 150
20.1. 端口 I/O 功能框图 (端口 0- 端口 3) ...................................................... 153
20.2. 端口 I/O 单元框图 .................................................................................... 154
20.3. 外设在端口 I/O 引脚上的可用性 .............................................................. 155
20.4. 没有引脚被跳过的交叉开关优先权译码器配置示例 ................................. 156
20.5. 三个引脚被跳过的交叉开关优先权译码器配置示例 ................................. 157
21.1. USB0 原理框图 ....................................................................................... 172
21.2. USB0 寄存器访问示意图 ......................................................................... 175
21.3. USB FIFO 分配 ....................................................................................... 181
22.1. SMBus 原理框图 ..................................................................................... 205
22.2. 典型的 SMBus 配置 ................................................................................. 206
22.3. SMBus 数据传输 ..................................................................................... 207
22.4. 典型的 SMBus SCL 波形 ......................................................................... 209
22.5. 典型的主器件写操作 ................................................................................ 223
22.6. 典型的主器件读操作 ................................................................................ 224
22.7. 典型的从器件写操作 ................................................................................ 225
22.8. 典型的从器件读操作 ................................................................................ 226
23.1. UART0 原理框图 ..................................................................................... 232
23.2. UART0 波特率逻辑 ................................................................................. 233
23.3. UART 连接图 ........................................................................................... 234
23.4. 位 UART 时序图 ...................................................................................... 234
23.5. 9 位 UART 时序图 ................................................................................... 235
23.6. UART 多机方式连接图 ............................................................................ 236
24.1. UART1 原理框图 ..................................................................................... 240
24.2. 没有奇偶位或额外位的 UART1 时序 ....................................................... 242
24.3. 有奇偶位时的 UART1 时序 ...................................................................... 242
24.4. 有额外位时的 UART1 时序 ...................................................................... 242
24.5. 典型 UART 连接图 ................................................................................... 243
24.6. UART 多机方式连接图 ............................................................................ 244
25.1. SPI 原理框图 ........................................................................................... 250
25.2. 多主方式连接图 ....................................................................................... 252
25.3. 3 线单主方式和 3 线单从方式连接图 ....................................................... 252
25.4. 4 线主方式和 4 线从方式连接图 .............................................................. 253
25.5. 主方式数据 / 时钟时序 ............................................................................. 255
25.6. 主方式数据 / 时钟时序 (CKPHA = 0) ....................................................... 255
25.7. 从方式数据 / 时钟时序 (CKPHA = 1) ....................................................... 256
25.8. SPI 主方式时序 (CKPHA = 0) ................................................................. 260
25.9. SPI 主方式时序 (CKPHA = 1) .................................................................. 260
25.10. SPI 从方式时序 (CKPHA = 0) ................................................................ 261
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
25.11. SPI 从方式时序 (CKPHA = 1) ................................................................ 261
26.1. T0 方式 0 原理框图 .................................................................................. 267
26.2. T0 方式 2 原理框图 .................................................................................. 268
26.3. T0 方式 3 原理框图 .................................................................................. 269
26.4. 定时器 2 的 16 位方式原理框图 ............................................................... 274
26.5. 定时器 2 的 8 位方式原理图 ..................................................................... 275
26.6. 定时器 2 捕捉方式 (T2SPLIT = 0) ........................................................... 276
26.7. 定时器 2 捕捉方式 (T2SPLIT = 0) ........................................................... 277
26.8. 定时器 3 的 16 位方式原理框图 ............................................................... 281
26.9. 定时器 3 的 8 位方式原理框图 ................................................................. 282
26.10. 定时器 3 捕捉方式 (T3SPLIT = 0) .......................................................... 283
26.11. 定时器 3 捕捉方式 (T3SPLIT = 0) .......................................................... 284
26.12. 定时器 4 的 16 位方式原理框图 ............................................................. 288
26.13. 定时器 4 的 8 位方式原理框图 ............................................................... 289
26.14. 定时器 5 的 16 位方式原理框图 ............................................................. 293
26.15. 定时器 5 的 8 位方式原理框图 ............................................................... 294
27.1. PCA 原理框图 ......................................................................................... 298
27.2. PCA 计数器 / 定时器原理框图 ................................................................. 299
27.3. PCA 中断原理框图 .................................................................................. 300
27.4. PCA 捕捉方式原理框图 ........................................................................... 302
27.5. PCA 软件定时器方式原理框图 ................................................................ 303
27.6. PCA 高速输出方式原理框图 .................................................................... 304
27.7. PCA 频率输出方式原理框图 .................................................................... 305
27.8. PCA 的 8 位 PWM 方式原理框图 ............................................................. 306
27.9. PCA 的 16 位 PWM 方式原理框图 ........................................................... 307
27.10. PCA 模块 4 的看门狗定时器方式 .......................................................... 308
28.1. 典型的 C2 引脚共享 ................................................................................. 319
??? 1.4
10
C8051F380/1/2/3/4/5/6/7/C
11
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表一览
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
表
1.1. 产品选择指南 ............................................................................................... 17
2.1. C8051F38x 替换型号 .................................................................................. 20
3.1. C8051F380/1/2/3/4/5/6/7/C 引脚定义 ......................................................... 22
3.2. TQFP-48 封装尺寸 ...................................................................................... 26
3.3. TQFP-48 PCB 焊盘布局尺寸 ...................................................................... 27
3.4. LQFP-32 封装尺寸 ...................................................................................... 29
3.5. LQFP-32 PCB 焊盘布局尺寸 ....................................................................... 30
3.6. QFN-32 封装尺寸 ........................................................................................ 32
3.7. QFN-32 PCB 焊盘布局尺寸 ........................................................................ 33
5.1. 极限参数 ...................................................................................................... 37
5.2. 总体电气特性 ............................................................................................... 38
5.3. 端口 I/O 直流电气特性 ................................................................................. 39
5.4. 复位电气特性 ............................................................................................... 39
5.5. I 内部稳压器电气特性 .................................................................................. 40
5.6. Flash 电气特性 ............................................................................................ 40
5.7. 内部高频振荡器电气特性 ............................................................................. 41
5.8. 内部低频振荡器电气特性 ............................................................................. 41
5.9. 外部振荡器电气特性 .................................................................................... 41
5.10. ADC0 电气特性 ......................................................................................... 42
5.11. 温度传感器电气特性 .................................................................................. 43
5.12. 电压基准电气特性 ..................................................................................... 43
5.13. 比较器电气特性 ......................................................................................... 44
5.14. USB 收发器电气特性 ................................................................................. 45
11.1. CIP-51 指令集一览表 ................................................................................. 81
14.1. 外部存储器接口的 AC 参数 ......................................................................110
15.1. 特殊功能寄存器 (SFR) 存储器映象 ..........................................................112
15.2. 特殊功能寄存器 ........................................................................................113
16.1. 中断一览表 .............................................................................................. 120
21.1. 端点地址 .................................................................................................. 173
21.2. USB0 控制器寄存器 ................................................................................ 178
21.3. FIFO 配置 ................................................................................................ 182
22.1. SMBus 时钟源选择 .................................................................................. 209
22.2. 最小 SDA 建立和保持时间 ...................................................................... 210
22.3. 影响 SMBnCN 的硬件变化原 ................................................................... 217
22.4. 硬件地址识别示例 (EHACK = 1) ............................................................. 218
22.5. 硬件 ACK 产生禁止时的 SMBus 状态译码 (EHACK = 0) ........................ 227
22.6. 硬件 ACK 产生被使能时的 SMBus 状态译码 (EHACK = 1) ..................... 229
23.1. 对应标准波特率的定时器设置 (使用内部振荡器) ................................. 238
24.1. 对应标准波特率的波特率发生器设置 (使用内部振荡器) ...................... 241
25.1. SPI 从方式时序参数 ................................................................................ 262
27.1. PCA 时基输入选项 .................................................................................. 299
27.2. PCA 捕捉 / 比较模块的 PCA0CPM 寄存器位设置 ................................... 301
27.3. 看门狗定时器超时间隔 1 ......................................................................... 310
??? 1.4
11
C8051F380/1/2/3/4/5/6/7/C
12
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
寄存器列表
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
SFR 定义
6.1. ADC0CF:ADC0 配置寄存器 ............................................................... 53
6.2. ADC0H:ADC0 数据字高字节 .............................................................. 54
6.3. ADC0L:ADC0 数据字低字节 .............................................................. 54
6.4. ADC0CN:ADC0 控制寄存器 ............................................................... 55
6.5. ADC0GTH:ADC0 下限 (大于)数据字高字节 .................................. 56
6.6. ADC0GTL:ADC0 下限 (大于)数据字低字节 ................................... 56
6.7. ADC0LTH:ADC0 上限 (小于)数据字高字节 ................................... 57
6.8. ADC0LTL:ADC0 上限 (小于)数据字低字节 .................................... 57
6.9. AMX0P:AMUX0 正输入通道选择寄存器 ............................................. 60
6.10. AMX0N:AMUX0 负输入通道选择寄存器 .......................................... 61
7.1. REF0CN:电压基准控制寄存器 ........................................................... 63
8.1. CPT0CN:比较器 0 控制寄存器 ........................................................... 67
8.2. CPT0MD:比较器 0 方式选择寄存器 .................................................... 68
8.3. CPT1CN:比较器 1 控制寄存器 ........................................................... 69
8.4. CPT1MD:比较器 1 方式选择寄存器 .................................................... 70
8.5. CPT0MX:比较器 0 MUX 选择寄存器 .................................................. 72
8.6. CPT1MX:比较器 1 MUX 寄存器 ......................................................... 73
9.1. REG01CN:稳压器控制寄存器 ............................................................ 75
10.1. PCON:电源管理控制寄存器 ............................................................. 78
11.1. DPL:数据指针低字节 ........................................................................ 85
11.2. DPH:数据指针高字节 ....................................................................... 85
11.3. SP:堆栈指针 ..................................................................................... 86
11.4. ACC:累加器 ...................................................................................... 86
11.5. B:B 寄存器 ........................................................................................ 86
11.6. PSW:程序状态字 .............................................................................. 87
12.1. PFE0CN:预取引擎控制寄存器 .......................................................... 88
14.1. EMI0CN:外部存储器接口控制寄存器 ............................................... 96
14.2. EMI0CF:外部存储器接口配置寄存器 ................................................ 97
14.3. EMI0TC:外部存储器时序控制寄存器 .............................................. 103
15.1. SFRPAGE:SFR 页寄存器 .............................................................. 111
16.1. IE:中断允许寄存器 .......................................................................... 121
16.2. IP:中断优先级寄存器 ...................................................................... 122
16.3. EIE1:扩展中断允许 1 ...................................................................... 123
16.4. EIP1:扩展中断优先级 1 .................................................................. 124
16.5. EIE2:扩展中断允许 2 ...................................................................... 125
16.6. EIP2:扩展中断优先级 2 .................................................................. 126
16.7. IT01CF:INT0/INT1 配置寄存器 O ................................................... 128
17.1. VDM0CN:VDD 监视器控制寄存器 .................................................. 132
17.2. RSTSRC:复位源寄存器 .................................................................. 134
18.1. PSCTL:程序存储读写控制 .............................................................. 139
18.2. FLKEY:FLASH 锁定和关键码寄存器 .............................................. 140
18.3. FLSCL:定时寄存器 ......................................................................... 141
19.1. CLKSEL:时钟选择寄存器 ............................................................... 144
??? 1.4
12
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 19.2. OSCICL:内部高频振荡器校准寄存器 .............................................. 145
SFR 定义 19.3. OSCICN:内部高频振荡器控制寄存器 ............................................. 146
SFR 定义 19.4. CLKMUL:时钟乘法器控制寄存器 .................................................... 147
SFR 定义 19.5. OSCLCN:内部低频振荡器控制寄存器 ............................................ 148
SFR 定义 19.6. OSCXCN:外部振荡器控制寄存器 ................................................... 152
SFR 定义 20.1. XBR0:端口 I/O 交叉开关寄存器 0 ................................................... 159
SFR 定义 20.2. XBR1:端口 I/O 交叉开关寄存器 1 ................................................... 160
SFR 定义 20.3. XBR2:端口 I/O 交叉开关寄存器 2 ................................................... 161
SFR 定义 20.4. P0:端口 0 寄存器 ............................................................................ 162
SFR 定义 20.5. P0MDIN:端口 0 输入方式寄存器 .................................................... 162
SFR 定义 20.6. P0MDOUT:端口 0 输出方式寄存器 ................................................ 163
SFR 定义 20.7. P0SKIP:端口 0 跳过寄存器 ............................................................ 163
SFR 定义 20.8. P1:端口 1 寄存器 ............................................................................ 164
SFR 定义 20.9. P1MDIN:端口 1 输入方式寄存器 .................................................... 164
SFR 定义 20.10. P1MDOUT:端口 1 输出方式寄存器 .............................................. 165
SFR 定义 20.11. P1SKIP:端口 1 跳过寄存器 ........................................................... 165
SFR 定义 20.12. P2:端口 2 寄存器 .......................................................................... 166
SFR 定义 20.13. P2MDIN:端口 2 输入方式寄存器 .................................................. 166
SFR 定义 20.14. P2MDOUT:端口 2 输出方式寄存器 .............................................. 167
SFR 定义 20.15. P2SKIP:端口 2 跳过寄存器 .......................................................... 167
SFR 定义 20.16. P3:端口 3 寄存器 .......................................................................... 168
SFR 定义 20.17. P3MDIN:端口 3 输入方式寄存器 .................................................. 168
SFR 定义 20.18. P3MDOUT:端口 3 输出方式寄存器 .............................................. 169
SFR 定义 20.19. P3SKIP:端口 3 跳过寄存器 .......................................................... 169
SFR 定义 20.20. P4:端口 4 寄存器 .......................................................................... 170
SFR 定义 20.21. P4MDIN:端口 4 输入方式寄存器 .................................................. 170
SFR 定义 20.22. P4MDOUT:端口 4 输出方式寄存器 .............................................. 171
SFR 定义 21.1. USB0XCN:USB0 收发器控制寄存器 .............................................. 174
SFR 定义 21.2. USB0ADR:USB0 间接地址寄存器 .................................................. 176
SFR 定义 21.3. USB0DAT:USB0 数据寄存器 ......................................................... 177
USB SFR 定义 21.4. INDEX:USB0 端点索引寄存器 ............................................... 179
USB SFR 定义 21.5. CLKREC:时钟恢复控制寄存器 ............................................... 180
USB SFR 定义 21.6. FIFOn:USB0 端点 FIFO 访问寄存器 ...................................... 182
USB SFR 定义 21.7. FADDR:USB0 功能地址寄存器 .............................................. 183
USB SFR 定义 21.8. POWER:USB0 电源控制寄存器 ............................................. 185
USB SFR 定义 21.9. FRAMEL:USB0 帧号低字节 ................................................... 186
USB SFR 定义 21.10. FRAMEH:USB0 帧号高字节 ................................................ 186
USB SFR 定义 21.11. IN1INT:USB0 输入端点中断寄存器 ...................................... 187
USB SFR 定义 21.12. OUT1INT:USB0 输出端点中断寄存器 .................................. 188
USB SFR 定义 21.13. CMINT:USB0 公共中断寄存器 ............................................. 189
USB SFR 定义 21.14. IN1IE:USB0 输入端点中断允许寄存器 ................................. 190
USB SFR 定义 21.15. OUTIE:USB0 输出端点中断允许寄存器 ............................... 191
USB SFR 定义 21.16. CMIE:USB0 公共中断允许寄存器 ........................................ 192
USB SFR 定义 21.17. E0CSR:USB0 端点 0 控制寄存器 ......................................... 195
USB SFR 定义 21.18. E0CNT:USB0 端点 0 数据计数寄存器 .................................. 196
13
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.19. EENABLE:USB0 端点使能寄存器 ........................................ 197
USB SFR 定义 21.20. EINCSRL:USB0 IN 端点控制寄存器低字节 ......................... 199
USB SFR 定义 21.21. EINCSRH:USB0 IN 端点控制寄存器高字节 ......................... 200
USB SFR 定义 21.22. EOUTCSRL:USB0 OUT 端点控制寄存器低字节 ................. 202
USB SFR 定义 21.23. EOUTCSRH:USB0 OUT 端点控制寄存器高字节 ................. 203
USB SFR 定义 21.24. EOUTCNTL:USB0 OUT 端点计数器寄存器低字节 .............. 203
USB SFR 定义 21.25. EOUTCNTH:USB0 OUT 端点计数器寄存器高字节 ............. 204
SFR 定义 22.1. SMB0CF:SMBus 时钟 / 配置寄存器 ............................................... 211
SFR 定义 22.2. SMB1CF:SMBus 时钟 / 配置寄存器 ............................................... 212
SFR 定义 22.3. SMBTC:SMBus 定时控制寄存器 ................................................... 213
SFR 定义 22.4. SMB0CN:SMBus 控制寄存器 ........................................................ 215
SFR 定义 22.5. SMB1CN:SMBus 控制寄存器 ......................................................... 216
SFR 定义 22.6. SMB0ADR:SMBus0 从地址寄存器 ................................................. 218
SFR 定义 22.7. SMB0ADM:SMBus0 从地址掩码寄存器 ......................................... 219
SFR 定义 22.8. SMB1ADR:SMBus1 从地址寄存器 ................................................. 219
SFR 定义 22.9. SMB1ADM:SMBus1 从地址掩码寄存器 ......................................... 220
SFR 定义 22.10. SMB0DAT:SMBus 数据寄存器 ..................................................... 221
SFR 定义 22.11. SMB1DAT:SMBus 数据寄存器 ..................................................... 222
SFR 定义 23.1. SCON0: UART0 控制寄存器 ........................................................... 237
SFR 定义 23.2. SBUF0:UART0 数据缓冲器 ............................................................ 238
SFR 定义 24.1. SCON1: UART1 控制寄存器 ........................................................... 245
SFR 定义 24.2. SMODE1:UART1 方式寄存器 ........................................................ 246
SFR 定义 24.3. SBUF1:UART1 数据缓冲器 ............................................................ 247
SFR 定义 24.4. SBCON1:UART1 波特率发生器控制寄存器 ................................... 248
SFR 定义 24.5. SBRLH1:UART1 波特率发生器高字节 ........................................... 248
SFR 定义 24.6. SBRLL1:UART1 波特率发生器低字节 ............................................ 249
SFR 定义 25.1. SPI0CFG:SPI0 配置寄存器 ............................................................ 257
SFR 定义 25.2. SPI0CN:SPI0 控制寄存器 .............................................................. 258
SFR 定义 25.3. SPI0CKR:SPI0 时钟速率寄存器 ..................................................... 259
SFR 定义 25.4. SPI0DAT:SPI0 数据寄存器 ............................................................. 259
SFR 定义 26.1. CKCON:时钟控制寄存器 ................................................................ 264
SFR 定义 26.2. CKCON1:时钟控制寄存器 1 ........................................................... 265
SFR 定义 26.3. TCON:定时器控制寄存器 ............................................................... 270
SFR 定义 26.4. TMOD:定时器方式寄存器 ............................................................... 271
SFR 定义 26.5. TL0:定时器 0 低字节 ....................................................................... 272
SFR 定义 26.6. TL1:定时器 1 低字节 ....................................................................... 272
SFR 定义 26.7. TH0:定时器 0 高字节 ...................................................................... 273
SFR 定义 26.8. TH1:定时器 1 高字节 ...................................................................... 273
SFR 定义 26.9. TMR2N:定时器 2 控制寄存器 ......................................................... 278
SFR 定义 26.10. TMR2RLL:定时器 2 重载寄存器低字节 ........................................ 279
SFR 定义 26.11. TMR2RLH:定时器 2 重载寄存器高字节 ........................................ 279
SFR 定义 26.12. TMR2L:定时器 2 低字节 ............................................................... 279
SFR 定义 26.13. TMR2H:定时器 2 高字节 .............................................................. 280
SFR 定义 26.14. TMR3CN:定时器 3 控制寄存器 ..................................................... 285
SFR 定义 26.15. TMR3RLL:定时器 3 重载寄存器低字节 ........................................ 286
??? 1.4
14
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.16. TMR3RLH:定时器 3 重载寄存器高字节 ........................................ 286
SFR 定义 26.17. TMR3L:定时器 3 低字节 ............................................................... 286
SFR 定义 26.18. 定时器 3 高字节 .............................................................................. 287
SFR 定义 26.19. TMR4CN:定时器 4 控制寄存器 ..................................................... 290
SFR 定义 26.20. TMR4RLL:定时器 4 重载寄存器低字节 ........................................ 291
SFR 定义 26.21. TMR4RLH:定时器 4 重载寄存器高字节 ........................................ 291
SFR 定义 26.22. TMR4L:定时器 4 低字节 ............................................................... 291
SFR 定义 26.23. TMR4H:定时器 4 高字节 .............................................................. 292
SFR 定义 26.24. TMR5N:定时器 5 控制寄存器 ....................................................... 295
SFR 定义 26.25. TMR4RLL:定时器 5 重载寄存器低字节 ........................................ 296
SFR 定义 26.26. TMR5RLH:定时器 5 重载寄存器高字节 ........................................ 296
SFR 定义 26.27. TMR5L:定时器 5 低字节 ............................................................... 296
SFR 定义 26.28. TMR5H:定时器 5 高字节 .............................................................. 297
SFR 定义 27.1. PCA0CN:PCA 控制寄存器 ............................................................. 311
SFR 定义 27.2. PCA0MD:PCA 方式寄存器 ............................................................. 312
SFR 定义 27.3. PCA0CPMn:PCA 捕捉 / 比较方式寄存器 ....................................... 313
SFR 定义 27.4. PCA0L:PCA 计数器 / 定时器低字节 ............................................... 314
SFR 定义 27.5. PCA0H:PCA 计数器 / 定时器高字节 ............................................... 314
SFR 定义 27.6. PCA0CPLn:PCA 捕捉模块低字节 .................................................. 315
SFR 定义 27.7. PCA0CPHn:PCA 捕捉模块高字节 .................................................. 315
C2 寄存器定义 28.1. C2ADD:C2 地址寄存器 .......................................................... 316
C2 寄存器定义 28.2. DEVICEID:C2 器件 ID 寄存器 ................................................ 317
C2 寄存器定义 28.3. REVID:C2 版本 ID 寄存器 ...................................................... 317
C2 寄存器定义 28.4. FPCTL:C2 Flash 编程控制寄存器 .......................................... 318
C2 寄存器定义 28.5. FPDAT:C2 Flash 编程数据寄存器 .......................................... 318
15
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
1. 系统概述
C8051F380/1/2/3/4/5/6/7/C 器件是完全集成的混合信号片上系统型 MCU。下面列出了一些主要特性,有关
某一产品的具体特性参见表 1.1。

高速、流水线结构的 8051 兼容的微控制器内核 (可达 48 MIPS)

全速、非侵入式的在系统调试接口 (片内)
通用串行总线 (USB) 功能控制器,有 8 个灵活的端点管道,集成收发器和 1 kB FIFO RAM



电源稳压器
真正 10 位 500 ksps 的差分 / 单端 ADC,带模拟多路器

片内电压基准和和温度传感器
片内电压比较器 ( 两个 )

精确校准的 48 MHz 内部振荡器


内部低频振荡器,提供附加的节电能力
多达 64 kB 的片内 FLASH 存储器

多达 4352 字节片内 RAM (256 + 4 kB)

48 脚封装具有外部存储器接口 (EMIF)

硬件实现的两个 I2C/SMBus, 两个 UART 和增强型 SPIrit 串行接口

6 个通用 16 位定时器

具有 5 个捕捉 / 比较模块和看门狗定时器功能的可编程计数器 / 定时器阵列 (PCA)

片内上电复位、 VDD 监视器和时钟丢失检测器

多达 40 个端口 I/O ( 容许 5 V 输入 )

具有片内上电复位、 VDD 监视器、电压调整器、看门狗定时器和时钟振荡器的 C8051F380/1/2/3/4/5/6/7/C
器件是真正能独立工作的片上系统解决方案。 FLASH 存储器具有在系统重新编程能力,可须知于非易失性
数据存储,并允许现场更新 8051 固件。用户软件对所有外设具有完全的控制,可以关断任何一个或所有外
设以节省功耗。
片内 Silicon Labs 二线 (C2) 开发接口允许使用安装在最终应用系统上的产品 MCU 进行非侵入式 (不占用
片内资源)、全速、在系统调试。调试逻辑支持观察和修改存储器和寄存器,支持断点、单步、运行和停机
命令。在使用 C2 进行高度时,所有的模拟和数字外设都可全功能运行。两个 C2 接口引脚可以与用户功能
共享,使在系统编程和高度功能不占用封装引脚。
每种器伯都可在工业温度范围 (–40 to +85 °C) 片用 2.7–5.25 V 的电压工作。电源电压大于 3.6V 时,必须使
用内部稳压器。对于 USB 通信,电源电压最小值为 3.0V。端口 I/O 和 RST 引脚都容许 5V 的输入信号电
压。 C8051F380/1/2/3/4/5/6/7/C 具有 48 脚 TQFP、 32- 脚 LQFP 和 32 脚 QFN 封装。特性和封装选择见
第 17 页中 “ 表 1.1 产品选择指南 ”。
??? 1.4
16
C8051F380/1/2/3/4/5/6/7/C
器件型号
MIPS (峰值)
Flash 存储器 (字节)
RAM
校准的内部振荡器
低频振荡器
USB (带 1k 端点 RAM)
电源电压调整器
SMBus/I2C
增强型 SPI
UARTs
定时器 (16 位)
可编程计数器阵列
可数字端口 I/O
外部存储器接口 (EMIF)
10- 位 500ksps ADC
温度传感器
电压基准
模拟比较器
封装
表 1.1. 产品选择指南
C8051F380-GQ
48
64k
4352
P
P
P
P
2
P
2
6
P
40
P
P
P
P
2
TQFP48
C8051F381-GQ
48
64k
4352
P
P
P
P
2
P
2
6
P
25
— P
P
P
2
LQFP32
C8051F381-GM
48
64k
4352
P
P
P
P
2
P
2
6
P
25
— P
P
P
2
QFN32
C8051F382-GQ
48
32k
2304
P
P
P
P
2
P
2
6
P
40
P
P
P
P
2
TQFP48
C8051F383-GQ
48
32k
2304
P
P
P
P
2
P
2
6
P
25
— P
P
P
2
LQFP32
C8051F383-GM
48
32k
2304
P
P
P
P
2
P
2
6
P
25
— P
P
P
2
QFN32
C8051F384-GQ
48
64k
4352
P
P
P
P
2
P
2
6
P
40
P
— — — 2
TQFP48
C8051F385-GQ
48
64k
4352
P
P
P
P
2
P
2
6
P
25
— — — — 2
LQFP32
C8051F385-GM
48
64k
4352
P
P
P
P
2
P
2
6
P
25
— — — — 2
QFN32
C8051F386-GQ
48
32k
2304
P
P
P
P
2
P
2
6
P
40
P
— — — 2
TQFP48
C8051F387-GQ
48
32k
2304
P
P
P
P
2
P
2
6
P
25
— — — — 2
LQFP32
C8051F387-GM
48
32k
2304
P
P
P
P
2
P
2
6
P
25
— — — — 2
QFN32
17
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
端口 I/O 配置
C2D
调试 / 编程硬件
数字外设
C2CK/RST
复位
上电复位
VDD
V REG
UART1
定时器 0, 1,
2, 3, 4, 5
64/32 KB ISP FLASH
程序存储器
电源
监视器
端口 0
驱动器
UART0
CIP-51 8051
控制器核
优先权
交叉开关
译码器
PCA/WDT
电源
网络
稳压器
端口 1
驱动器
SMBus0
256 字节 RAM
SPI
交叉开关控制
GND
系统时钟
XTAL1
XTAL2
SFR
总线
外部存储器接口
外部振荡器
P1
控制
P4
数据
时钟
恢复电路
低频
振荡器
USB 外设
D+
VBUS
端口 3
驱动器
P3. 0
P3. 1
P3. 2
P3. 3
P3. 4
P3. 5
P3. 6
P3. 7
端口 4
驱动器
P4. 0
P4. 1
P4. 2
P4. 3
P4. 4
P4. 5
P4. 6
P4. 7
P2 / P3
地址
内部振荡器
D-
端口 2
驱动器
P2. 0
P2. 1
P2. 2
P2. 3
P2. 4
P2. 5
P2. 6
P2. 7
SMBus1
4/2 KB XRAM
全速 / 低速
收发器
模拟外设
CP0
VREF
VDD
VR EF
+
+
-
2 个比较器
控制器
1 KB RAM
CP1
P0. 0
P0. 1
P0. 2
P0. 3
P0. 4
P0. 5
P0. 6/XTAL1
P0. 7/XTAL2
P1. 0
P1. 1
P1. 2
P1. 3
P1. 4/CNVSTR
P1. 5/VREF
P1. 6
P1. 7
1 0位
5 00 ksp s
AD C
A
M
U
X
VD D
AIN0 - AIN19
温度
传感器
图 1.1. 8051F380/2/4/6 原理图框
??? 1.4
18
C8051F380/1/2/3/4/5/6/7/C
端口 I/O 配置
C 2D
调试 / 编程硬件
数字外设
C2CK/RST
复位
上电复位
VDD
VRE
G
UART1
定时器 0, 1,
2, 3, 4, 5
64/32 KB ISP FLASH
程序存储器
电源
监视器
端口 0
驱动器
UART0
CIP-51 8051
控制器核
优先权
交叉开关
译码器
PCA/WDT
电源
网络
稳压器
256 字节 RAM
SMBus0
SMBus1
4/2 KB XRAM
端口 2
驱动器
SPI
GND
系统时钟
XTAL1
XTAL2
端口 1
驱动器
SFR
Bus
交叉开关控制
端口 3
驱动器
内部振荡器
低频
振荡器
模拟外设
C P0
VREF
USB 外设
D+
DVBUS
VD D
VREF
1 KB RAM
C P1
1 0位
5 00 k sp s
A DC
A
M
U
X
图 1.2. C8051F381/3/5/7 原理图框
19
+
+
-
2 个比较器
控制器
全速 / 低速
收发器
??? 1.4
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
P3.0/C2D
外部振荡器
时钟
恢复电路
P0.0
P0.1
P0.2/XTAL1
P0.3/XTAL2
P0.4
P0.5
P0.6/CNVS TR
P0.7/VREF
VDD
温度
传感器
AIN0 - AIN2 0
C8051F380/1/2/3/4/5/6/7/C
2. C8051F34x 兼容性
C8051F38x 系列是为替换 C8051F34x 系列而设计的,引脚和代码与 C8051F34x 兼容,但具有一些增强特
性。在大多数应用中, C8051F38x 器件可直接替换 C8051F34x 器件。表 2.1 列出了替换 C8051F34x 器件
的推荐型号。在将现有的 C8051F34x 设计升级到 C8051F38x 时,参见 “2.1. 硬件不兼容性 ” ,以确定是否
有需要改变之处。
表 2.1. C8051F38x 替换型号
C8051F34x 型号
C8051F38x 型号
C8051F340-GQ
C8051F380-GQ
C8051F341-GQ
C8051F382-GQ
C8051F342-GQ
C8051F381-GQ
C8051F342-GM
C8051F381-GM
C8051F343-GQ
C8051F383-GQ
C8051F343-GM
C8051F383-GM
C8051F344-GQ
C8051F380-GQ
C8051F345-GQ
C8051F382-GQ
C8051F346-GQ
C8051F381-GQ
C8051F346-GM
C8051F381-GM
C8051F347-GQ
C8051F383-GQ
C8051F347-GM
C8051F383-GM
C8051F348-GQ
C8051F386-GQ
C8051F349-GQ
C8051F387-GQ
C8051F349-GM
C8051F387-GM
C8051F34A-GQ
C8051F381-GQ
C8051F34A-GM
C8051F381-GM
C8051F34B-GQ
C8051F383-GQ
C8051F34B-GM
C8051F383-GM
C8051F34C-GQ
C8051F384-GQ
C8051F34D-GQ
C8051F385-GQ
??? 1.4
20
C8051F380/1/2/3/4/5/6/7/C
2.1. 硬件不兼容性
由于 C8051F38x 系列包含一些 C8051F34x 系列所没有的新特性,在进行设计移植时应考虑这些新特性所
带来的差异。

时钟乘法器:C8051F38x 不包含 C8051F34x 系列器件中的 4x 时钟乘法器。这一变化只影响那些使用外
部振荡源且需时钟乘法器的系统。

外部振荡器 C 和 RC 方式:C8051F38x 外部振荡器的 C 和 RC 方式有二分频环节,以提高抗噪声干扰能
力。 C8051F34x 系列器件中没有该环节,因此用 C 和 RC 方式产生时钟时需做相应改变。

生产工艺:C8051F38x 所采用的工艺与 C8051F34 不同。因此,很多电气性能参数会有细微的差异。大
多数系统不受这些差异的影响,但对设计吕用到的任何功能块的电气特性进行仔细检查是非常重要的,
这样可以确保与现有硬件兼容。
21
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
3. 引脚和封装定义
表 3.1. C8051F380/1/2/3/4/5/6/7/C 引脚定义
引脚名称
引脚号
引脚类型
说明
48- 脚 32- 脚
VDD
10
6
GND
7
3
RST/
13
9
C2CK
电源输入
电源输出
2.7–3.6 V 电源电压输入
3.3 V 稳压器输出。
地。
数字 I/O
器件复位。内部上电复位或 VDD 监视器的漏极开路输
出。一个外部源可以通过将该引脚驱动为低电平 (至
少 µs)来启动一次系统复位。
数字 I/O
C2 调试接口的时钟信号。
C2D
14
—
数字 I/O
C2 调试接口的双向数据信号
P3.0 /
—
10
数字 I/O
端口 3.0。端口 3 的详细描述见第 20 章。
数字 I/O
C2 调试接口的双向数据信号。
C2D
REGIN
11
7
电源输入
5V 稳压器输入。该引脚是片内稳压器的输入。
VBUS
12
8
数字输入
VBUS 检测输入。该引脚应被连接到 USB 网络的
VBUD 信号。该引脚上出现 5V 信号表示与 USB 网络
连接。
D+
8
4
数字 I/O
USB 的 D+.
D-
9
5
数字 I/O
USB 的 D–.
P0.0
6
2
数字 I/O 或
模拟输入
端口 0.0。端口 0 的详细描述见第 20 章。
P0.1
5
1
数字 I/O 或
模拟输入
端口 0.1
P0.2
4
32
数字 I/O 或
模拟输入
端口 0.2
P0.3
3
31
数字 I/O 或
模拟输入
端口 0.3
P0.4
2
30
数字 I/O 或
模拟输入
端口 0.4
P0.5
1
29
数字 I/O 或
模拟输入
端口 0.5
P0.6
48
28
数字 I/O 或
模拟输入
端口 0.6
??? 1.4
22
C8051F380/1/2/3/4/5/6/7/C
表 3.1. C8051F380/1/2/3/4/5/6/7/C 引脚定义
引脚名称
引脚号
引脚类型
说明
48- 脚 32- 脚
P0.7
47
27
数字 I/O 或
模拟输入
端口 0.7
P1.0
46
26
数字 I/O 或
模拟输入
端口 1.0。端口 1 的详细描述见第 20 章。
P1.1
45
25
数字 I/O 或
模拟输入
端口 1.1
P1.2
44
24
数字 I/O 或
模拟输入
端口 1.2
P1.3
43
23
数字 I/O 或
模拟输入
端口 1.3
P1.4
42
22
数字 I/O 或
模拟输入
端口 1.4
P1.5
41
21
数字 I/O 或
模拟输入
端口 1.5
P1.6
40
20
数字 I/O 或
模拟输入
端口 1.6
P1.7
39
19
数字 I/O 或
模拟输入
端口 1.7
P2.0
38
18
数字 I/O 或
模拟输入
端口 2.0。端口 2 的详细描述见第 20 章。
P2.1
37
17
数字 I/O 或
模拟输入
端口 2.1
P2.2
36
16
数字 I/O 或
模拟输入
端口 2.2
P2.3
35
15
数字 I/O 或
模拟输入
端口 2.3
P2.4
34
14
数字 I/O 或
模拟输入
端口 2.4
P2.5
33
13
数字 I/O 或
模拟输入
端口 2.5
P2.6
32
12
数字 I/O 或
模拟输入
端口 2.6
P2.7
31
11
数字 I/O 或
模拟输入
端口 2.7
23
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表 3.1. C8051F380/1/2/3/4/5/6/7/C 引脚定义
引脚名称
引脚号
引脚类型
说明
48- 脚 32- 脚
P3.0
30
—
数字 I/O 或
模拟输入
端口 3.0。端口 3 的详细描述见第 20 章。
P3.1
29
—
数字 I/O 或
模拟输入
端口 3.1
P3.2
28
—
数字 I/O 或
模拟输入
端口 3.2
P3.3
27
—
数字 I/O 或
模拟输入
端口 3.3
P3.4
26
—
数字 I/O 或
模拟输入
端口 3.4
P3.5
25
—
数字 I/O 或
模拟输入
端口 3.5
P3.6
24
—
数字 I/O 或
模拟输入
端口 3.6
P3.7
23
—
数字 I/O 或
模拟输入
端口 3.7
P4.0
22
—
数字 I/O 或
模拟输入
端口 4.0。端口 4 的详细描述见第 20 章。
P4.1
21
—
数字 I/O 或
模拟输入
端口 4.1
P4.2
20
—
数字 I/O 或
模拟输入
端口 4.2
P4.3
19
—
数字 I/O 或
模拟输入
端口 4.3
P4.4
18
—
数字 I/O 或
模拟输入
端口 4.4
P4.5
17
—
数字 I/O 或
模拟输入
端口 4.5
P4.6
16
—
数字 I/O 或
模拟输入
端口 4.6
P4.7
15
—
数字 I/O 或
模拟输入
端口 4.7
??? 1.4
24
P0.6
P0.7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0
P2.1
47
46
45
44
43
42
41
40
39
38
37
48
C8051F380/1/2/3/4/5/6/7/C
P0.5
1
36
P2.2
P0.4
2
35
P2.3
P0.3
3
34
P2.4
P0.2
4
33
P2.5
P0.1
5
32
P2.6
P0.0
6
31
P2.7
GND
7
30
P3.0
D+
8
29
P3.1
D-
9
28
P3.2
VDD
10
27
P3.3
REGIN
11
26
P3.4
VBUS
12
25
P3.5
19
20
21
22
23
24
P4.2
P4.1
P4.0
P3.7
P3.6
17
P4.5
P4.3
16
P4.6
18
15
P4.7
P4.4
14
C2D
/RST / C2CK
13
C8051F380/2/4/6-GQ
顶视图
图 3.1. TQFP-48 引脚图 ( 顶视图 )
25
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
图 3.2. TQFP-48 封装图
表 3.2. TQFP-48 封装尺寸
尺寸
A
A1
A2
b
c
D
D1
e
注:
1.
2.
3.
4.
最小值
—
0.05
0.95
0.17
0.09
典型值
—
—
1.00
0.22
—
9.00 BSC
7.00 BSC
0.50 BSC
最小值
1.20
0.15
1.05
0.27
0.20
尺寸
E
E1
L
aaa
bbb
ccc
ddd
q
最小值
0.45
0°
典型值
9.00 BSC
7.00 BSC
0.60
0.20
0.20
0.08
0.08
3.5°
最小值
0.75
7°
除特别注意外,所有尺寸均以毫米 (mm)为单位。
尺寸和公差依照 ANSI Y14.5M-1994。
该封装外形符合 JEDEC MS-026,变体 ABC。
建议采用 JEDEC/IPC J-STD-020 对小型元件规定的回流焊温度曲线。
??? 1.4
26
C8051F380/1/2/3/4/5/6/7/C
图 3.3. 推荐的 TQFP-48 PCB 焊盘图
表 3.3. TQFP-48 PCB 焊盘布局尺寸
尺寸
C1
C2
E
X1
Y1
最小值
8.30
8.30
最大值
8.40
8.40
0.50 BSC
0.20
1.40
0.30
1.50
注:
通用
1. 除非特别注明,所有尺寸均以毫米 (mm) 为单位。
2. 本焊盘图设计基于 IPC-7351 指南。
阻焊层设计:
3. 所有金属焊盘均定义为非阻焊 (NSMD)。阻焊层与金属焊盘之间的间距 (焊
盘的四周)至少为 60 µm。
模版设计
4. 应使用激光切割的电抛光的梯形壁不锈钢模板,以确保良好的焊膏释放。
5. 模板厚度为 0.125 mm (5 密尔 )。
6. 所有外围引脚的模板开孔与焊盘尺寸的比例应为 1:1。
卡组装
7. 建议使用免清洗的 3 型焊膏。
8. 建议采用 JEDEC/IPC J-STD-020 对小型元件规定的回流焊温度曲线。
27
??? 1.4
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
P1.0
P1.1
31
30
29
28
27
26
25
32
C8051F380/1/2/3/4/5/6/7/C
P0.1
1
24
P1.2
P0.0
2
23
P1.3
GND
3
22
P1.4
D+
4
21
P1.5
D-
5
20
P1.6
VDD
6
19
P1.7
REGIN
7
18
P2.0
VBUS
8
17
P2.1
14
15
16
P2.4
P2.3
P2.2
12
P2.6
13
11
P2.7
P2.5
10
P3.0 / C2D
/RST / C2CK
9
C8051F381/3/5/7-GQ
顶视图
图 3.4. LQFP-32 引脚图 ( 顶视图 )
??? 1.4
28
C8051F380/1/2/3/4/5/6/7/C
图 3.5. LQFP-32 封装图
表 3.4. LQFP-32 封装尺寸
尺寸
A
A1
A2
b
c
D
D1
e
注:
1.
2.
3.
4.
29
最小值
—
0.05
1.35
0.30
0.09
典型值
—
—
1.40
0.37
—
9.00 BSC
7.00 BSC
0.80 BSC
最大值
1.60
0.15
1.45
0.45
0.20
尺寸
E
E1
L
aaa
bbb
ccc
ddd
q
除特别注明外,所有尺寸均以毫米 (mm)为单位。
尺寸和公差依照 ANSI Y14.5M-1994。
该封装外形符合 JEDEC MS-026, 变体 BBA。
建议采用 JEDEC/IPC J-STD-020 对小型元件规定的回流焊温度曲线。
??? 1.4
最小值
0.45
0°
典型值
9.00 BSC
7.00 BSC
0.60
0.20
0.20
0.10
0.20
3.5°
最大值
0.75
7°
C8051F380/1/2/3/4/5/6/7/C
图 3.6. 推荐的 LQFP-32 PCB 焊盘图
表 3.5. LQFP-32 PCB 焊盘布局尺寸
尺寸
C1
C2
E
X1
Y1
最小值
8.40
8.40
最大值
8.50
8.50
0.80 BSC
0.40
1.25
0.50
1.35
注:
通用
1. 除非特别注明,所有尺寸均以毫米 (mm) 为单位。
2. 本焊盘图设计基于 IPC-7351 指南。
阻焊层设计:
3. 所有金属焊盘均定义为非阻焊 (NSMD)。阻焊层与金属焊盘之间的间距 (焊
盘的四周)至少为 60 µm。
模版设计
4. 应使用激光切割的电抛光的梯形壁不锈钢模板,以确保良好的焊膏释放。
5. 模板厚度为 0.125 mm (5 密尔 )。
6. 所有外围引脚的模板开孔与焊盘尺寸的比例应为 1:1。
卡组装
7. 建议使用免清洗的 3 型焊膏。
8. 建议采用 JEDEC/IPC J-STD-020 对小型元件规定的回流焊温度曲线。
??? 1.4
30
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
P1.0
P1.1
31
30
29
28
27
26
25
32
C8051F380/1/2/3/4/5/6/7/C
P0.1
1
24
P1.2
P0.0
2
23
P1.3
GND
3
22
P1.4
D+
4
21
P1.5
D–
5
20
P1.6
VDD
6
19
P1.7
REGIN
7
18
P2.0
17
P2.1
C8051F381/3/5/7-GM
顶视图
GND (optional)
10
11
12
13
14
15
16
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
RST / C2CK
P3.0 / C2D
8
9
VBUS
图 3.7. QFN-32 引脚图 ( 顶视图 )
31
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
图 3.8. QFN-32 封装图
表 3.6. QFN-32 封装尺寸
尺寸
A
A1
b
D
D2
e
E
最小值
0.80
0.00
0.18
3.20
典型值
0.85
0.02
0.25
5.00 BSC
3.30
0.50 BSC
5.00 BSC
最大值
0.90
0.05
0.30
3.40
尺寸
E2
L
aaa
bbb
ddd
eee
最小值
3.20
0.35
—
—
—
—
典型值
3.30
0.40
—
—
—
—
最大值
3.40
0.45
0.10
0.10
0.05
0.08
注:
1. 除特别注明外,所有尺寸均以毫米 (mm) 为单位。
2. 尺寸和公差依照 ANSI Y14.5M-1994。
3. 该封装外形符合 JEDEC MS-220, 变体 VHHD。但定制特性 D2、 E2 和 L 除外,它们的公差由供
应商指定。
4. 建议采用 JEDEC/IPC J-STD-020 对小型元件规定的回流焊温度曲线。
??? 1.4
32
C8051F380/1/2/3/4/5/6/7/C
图 3.9. 推荐的 QFN-32 PCB 焊盘图
表 3.7. QFN-32 PCB 焊盘布局尺寸
尺寸
C1
C2
E
X1
最小值
最大值
4.80
4.90
4.80
4.90
0.50 BSC
0.20
0.30
尺寸
X2
Y1
Y2
最小值
3.20
0.75
3.20
最大值
3.40
0.85
3.40
注:
通用
1. 除非特别注明,所有尺寸均以毫米 (mm) 为单位。
2. 本焊盘图设计基于 IPC-7351 指南。
阻焊层设计:
3. 所有金属焊盘均定义为非阻焊 (NSMD)。阻焊层与金属焊盘之间的间距 (焊盘的四周)至少
为 60 µm。
模版设计
4. 应使用激光切割的电抛光的梯形壁不锈钢模板,以确保良好的焊膏释放。
5. 模板厚度为 0.125 mm (5 密尔)。
6. 所有外围引脚的模板开孔与焊盘尺寸的比例应为 1:1。
卡组装
7. 建议使用免清洗的 3 型焊膏。
8. 建议采用 JEDEC/IPC J-STD-020 对小型元件规定的回流焊温度曲线。
33
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
4. 典型连接图
本节提供 C8051F38x 设备的典型连接图
4.1. 电源
图 4.1 显示在有使用内部稳压器但未使用 USB 时, C8051F38x 设备电源引脚的典型连接图。
C8051F38x 设备
3.6-5.25 V(输入)
稳压器
REGIN
3.3 V(输出)
1 µF 及 0.1 µF
旁路各个电源引脚所必
需的电容器,尽可能靠
近引脚放置。
VDD
VBUS
GND
图 4.1. 有使用稳压器但无 USB 的连接图
图 4.2 显示在未使用内部稳压器和无 USB 时, C8051F38x 设备电源引脚的典型连接图。
C8051F38x 设备
2.7-3.6 V(输入)
稳压器
REGIN
1 µF 及 0.1 µF
旁路各个电源引脚所必
需的电容器,尽可能靠
近引脚放置。
VDD
VBUS
GND
图 4.2. 未使用稳压器和无 USB 的连接图
图 4.3 显示在有使用内部稳压器且连接 USB( 总线供电 ) 时,C8051F38x 设备电源引脚的典型连接图。VBUS
信号用来检测何时 USB 连接至主机设备,且用 100 Ω 的限流电阻器显示。建议该限流电阻器用于会遇到静
??? 1.4
34
C8051F380/1/2/3/4/5/6/7/C
电泄放 (ESD)、闩锁效应且极有机会与无相同接地电位的系统共享信号的系统。这对大多数应用来说,并非
必要部件。
ӻᔰ䇤θ䶔ᗻ䴶
USB 5 Vδ䗉‫ޛ‬ε
C8051F38x 䇴༽
100 ȍ
VBUS
3.3 Vδ䗉࠰ε
1 μF ਀ 0.1 μF
᯷䐥਺Ѡ⭫Ⓠᕋ㝐ᡶᗻ
䴶Ⲻ⭫ᇯಞθታਥ㜳䶖
䘇ᕋ㝐᭴㖤Ⱦ
どুಞ
REGIN
VDD
GND
图 4.3. 有使用稳压器且连接 USB 的连接图
(总线供电)
图 4.4 显示在有使用内部稳压器且连接 USB 时,C8051F38x 设备电源引脚的典型连接图(自供电)。VBUS
信号用来检测何时 USB 连接至主机设备,且用 100 Ω 的限流电阻器显示。建议该限流电阻器用于会遇到静
电泄放 (ESD)、闩锁效应且极有机会与无相同接地电位的系统共享信号的系统。这对大多数应用来说,并非
必要部件。
ӻѰᔰ䇤θ䶔ᗻ䴶
USB 5 VδỶ⎁ε
3.6-5.25 Vδ䗉‫ޛ‬ε
1 μF ਀ 0.1 μF
᯷䐥਺Ѡ⭫Ⓠᕋ㝐ᡶᗻ
䴶Ⲻ⭫ᇯಞθታਥ㜳䶖
䘇ᕋ㝐᭴㖤Ⱦ
C8051F38x 䇴༽
100 ȍ
VBUS
3.3 Vδ䗉࠰ε
REGIN
VDD
GND
图 4.4. 有使用稳压器且连接 USB 的连接图
(自供电)
35
??? 1.4
どুಞ
C8051F380/1/2/3/4/5/6/7/C
4.2. USB
图 4.5 显示 C8051F38x 设备的 USB 引脚典型连接图,包括 VBUS 检测引脚上的 100 Ω 限流电阻器和 USB
引脚上的 ESD 保护二极管。建议该限流电阻器用于会遇到静电泄放 (ESD)、闩锁效应且极有机会与无相同
接地电位的系统共享信号的系统。这对大多数应用来说,并非必要部件。
ӻѰᔰ䇤θ䶔ᗻ䴶
USB 䘔᧛ಞ
C8051F38x 䇴༽
100 ȍ
VBUS
VBUS
D+
USB
D+
D-
D-
‫ؗ‬ਭ GND
SP0503BAHT
ᡌੂㅿ USB ESD
ؓᣚӂᶷ㇗
GND
图 4.5. USB 引脚连接图
4.3. 参考电压 (VREF)
图 4.6 显示在使用内部参考电压时,C8051F38x 设备的参考电压 (VREF) 引脚典型连接图。当使用外部参考
电压时,查阅适当设备的数据表,以获得连接建议。
C8051F38x 设备
2.42 V(输出)
参考电压
4.7 µF 及 0.1 µF
旁路各个电源引脚所必需
的电容器,尽可能靠近引
脚放置。
VREF
GND
图 4.6. 内部参考电压连接图
??? 1.4
36
C8051F380/1/2/3/4/5/6/7/C
37
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
5. 电气特性
5.1. 极限参数
表 5.1. 极限参数
参数
条件
结温 (通电情况下)
储存温度
RST、 VBUS 或有关 GND 任何端
口 I/O 引脚上的电压
VDD 相对 GND 的电压
VDD > 2.2 V
VDD < 2.2 V
稳压器 1 正常方式
稳压器 1 旁路方式
通过 VDD 或 GND 的最大总电流
RST 或任何端口引脚的最大输出
灌电流
最小值
典型值
最大值
单位
–55
–65
–0.3
–0.3
–0.3
–0.3
—
—
—
—
—
—
—
—
—
—
125
150
5.8
VDD+ 3.6
4.2
1.98
500
100
°C
°C
V
V
V
V
mA
mA
注意 : 超过这些列出的 “ 极限参数 ” 可能导致器件永久性损坏。这只是负荷等级,并不表示器件在上述或高于规格操
作列表所指的任何其它条件下的功能操作。长时间的最大允许值或超过最大允许值的条件下工作可能影响器件
的可靠性。
??? 1.4
37
C8051F380/1/2/3/4/5/6/7/C
5.2. 总体电气特性
表 5.2. 总体电气特性
–40 to +85 °C, 25 MHz 系统时钟 (除非特别说明)。
参数
数字电源电压
测量条件
最小值 典型值 最大值
单位
VRST1
—
0
–40
3.3
1.5
—
—
3.6
—
48
+85
V
V
MHz
°C
—
—
—
—
12
7
0.45
280
14
8
0.85
—
mA
mA
mA
µA
—
—
—
—
—
6.5
3.5
0.35
220
1
8
5
—
—
—
mA
mA
mA
µA
µA
振荡器不运行 (停止或挂起方式),
REG0 和 REG1 均处于低功耗方式,
VDD = 3.3 V.
—
100
—
µA
振荡器不运行 (停机或挂起方式),
REG0 关断,VDD = 3.3 V.
USB 时钟 = 48 MHz, VDD = 3.3 V
—
150
—
µA
—
8
—
mA
1
RAM 数据保持电源电压
SYSCLK (系统时钟) 2
额定工作温度范围
数字电源电流 —CPU 活动 (正常方式,从 FLASH 中取指令)
IDD3
SYSCLK = 48 MHz, VDD = 3.3 V
SYSCLK = 24 MHz, VDD = 3.3 V
SYSCLK = 1 MHz, VDD = 3.3 V
SYSCLK = 80 kHz, VDD = 3.3 V
数字电源电流 —CPU 不活动 (空闲方式,从 FLASH 中取指令)
空闲 IDD3
数字电源电流 (停止、挂起
或判断方式)
USB 模块数字电源电流
(USB 处于活动状态 4)
注:
1.
2.
3.
4.
38
SYSCLK = 48 MHz, VDD = 3.3 V
SYSCLK = 24 MHz, VDD = 3.3 V
SYSCLK = 1 MHz, VDD = 3.3 V
SYSCLK = 80 kHz, VDD = 3.3 V
振荡器不运行 (停机方式),
内部稳压器关断, VDD = 3.3 V
USB 需要最小 3.0 V 的电源电压。
为能使用高度功能, SYSCLK 至少应为 32 kHz。
包括 REG0 和 REG1 正常方式的偏置电流。不包括内部振荡器、 USB 或其它模拟外设的电流。
当 USB 上拉被使能时, D+ 或 D- 上拉另有 220uA 的电流。
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表 5.3. 端口 I/O 直流电气特性
VDD = 2.7 to 3.6 V, –40 to +85 °C (除非特别注明)。
参数
测量条件
最小值
典型值
最大值
单位
输出高电平
IOH = –3 mA,端口 I/O 为推挽方式
IOH = –10 µA,端口 I/O 为推挽方式
IOH = –10 mA,端口 I/O 为推挽方式
VDD – 0.7
VDD – 0.1
—
—
—
VDD – 0.8
—
—
—
V
输出低电平
IOL = 8.5 mA
IOL = 10 µA
IOL = 25 mA
—
—
—
—
—
1.0
0.6
0.1
—
V
输入高电平
2.0
—
—
V
输入低电平
—
—
0.8
V
—
—
—
15
±1
50
µA
输入漏电流
弱上拉禁止
弱上拉使能 On, VIN = 0 V
表 5.4. 复位电气特性
–40 to +85 °C (除非特别注明)。
参数
测量条件
最小值
典型
值
最大值
单位
IOL = 8.5 mA,
VDD = 2.7 V to 3.6 V
—
—
0.6
V
RST 输入高电平
0.7 x VDD
—
—
V
RST 输入低电平
—
—
0.3 x VDD
V
—
15
40
µA
2.60
2.65
2.70
V
RST 输出低电平
RST 输入上拉电流
RST = 0.0 V
VDD 监视器门限 (VRST)
时钟丢失检测器超时
从最后一个系统时钟上升沿到
复位启动
80
580
800
µs
复位时间延迟
从任何复位源解除到开始执行
位于 0x0000 地址的代码之间
的延时
—
—
250
µs
产生系统复位的最小 RST 低电
平时间
15
—
—
µs
VDD 监视器启动时间
—
—
100
µs
VDD 监视器电源电流
—
15
50
µA
??? 1.4
39
C8051F380/1/2/3/4/5/6/7/C
表 5.5. I 内部稳压器电气特性
–40 to +85 °C (除非特别注明)。
参数
测量条件
最小值 典型值 最大值
单位
稳压器 (REG0)
输入电压范围 1
输出电压 (VDD)
2
输出电流 = 1 to 100 mA
2.7
—
5.25
V
3.0
3.3
3.6
V
输出电流 2
—
—
100
mA
电压降落 (VDO)3
—
1
—
mV/mA
1.8
—
3.6
V
稳压器 REG1
输入电压范围
注:
1. 额定稳压输入范围。当使用外部稳压器时,应接 VDD。
2. 输出电流为总调整电流,包括 C8051F380/1/2/3/4/5/6/7/C 所需要的任何电流。
3. 最小输入电压为 2.70 V 和 VDD + VDO (最大负载)中之最大者。
表 5.6. Flash 电气特性
参数
Flash 大小
条件
最小值
典型值
最大值
单位
C8051F380/1/4/5*
C8051F382/3/6/7
65536*
32768
10k
10
10
—
—
字节
字节
100k
15
15
—
22.5
20
擦/写
ms
擦写寿命
擦除时间
写入时间
25 MHz 系统时钟
25 MHz 系统时钟
注:
1. 位于地址 0xFC00-0xFFFF 的 1024 字节不能用于程序存储。
2. 在 “ 季度质量和可靠性报告 ” 中发布了 “ 数据保留信息 ”。
40
??? 1.4
µs
C8051F380/1/2/3/4/5/6/7/C
表 5.7. 内部高频振荡器电气特性
VDD = 2.7 to 3.6 V ; TA = –40 to +85 °C (除非特别注明);使用出厂校准设置。
参数
测量条件
最小值
典型值
最大值
单位
IFCN = 11b
47.3
48
48.7
MHz
25 °C, VDD = 3.0 V,
OSCICN.7 = 1,
OCSICN.5 = 0
—
900
—
µA
电源敏感度
恒度
—
110
—
ppm/V
温度敏感度
恒压
—
25
—
ppm/°C
振荡器频率
振荡器供电电流
(自 VDD)
表 5.8. 内部低频振荡器电气特性
VDD = 2.7 to 3.6 V ; TA = –40 to +85 °C (除非特别注明);使用出厂标准设置。
参数
测量条件
最小值
典型值
最大值
单位
OSCLD = 11b
75
80
85
kHz
25 °C, VDD = 3.0 V,
OSCLCN.7 = 1
—
4
—
µA
电源敏感度
恒度
—
0.05
—
%/V
温度敏感度
恒压
—
65
—
ppm/°C
最小值
典型值
最大值
单位
0.02
—
30
MHz
0
—
48
MHz
振荡器频率
振荡器供电民流
(自 VDD)
表 5.9. 外部振荡器电气特性
VDD = 2.7 to 3.6 V ; TA = –40 to +85 °C (除非特别注明)。
参数
测量条件
外部晶体频率
外部 CMOS 振荡器频率
??? 1.4
41
C8051F380/1/2/3/4/5/6/7/C
表 5.10. ADC0 电气特性
VDD = 3.0 V, VREF = 2.40 V (REFSL=0), PGA 增益 = 1, –40 to +85 °C (除非特别注明)
参数
测量条件
最小值
典型值
最大值
单位
直流精度
分辨率
位
10
积分非线性
—
±0.5
±1
LSB
—
±0.5
±1
LSB
偏移误差
–2
0
2
LSB
满度误差
–5
–2
0
LSB
偏移温度系数
—
0.005
—
LSB/°C
55
58
—
dB
—
–73
—
dB
—
78
—
dB
—
—
8.33
MHz
13
11
—
—
—
—
时钟
时钟
300
—
—
ns
—
—
500
ksps
单端 (AIN+ – GND)
0
—
VREF
V
差分 (AIN+ – AIN–)
–VREF
—
VREF
V
单端或差分
0
—
VDD
V
采样电容
—
30
—
pF
输入多路器阻抗
—
5
—
kW
—
750
1000
µA
—
1
—
mV/V
微分非线性
保证单调
动态性能 (10 kHz 正弦波单端输入 , 满度值之 1 dB, 500 ksps)
信号与噪声加失直比
总谐波失真
到 5 次谐波
无失真动态范围
转换速率
SAR 转换时钟
转换时间 (SAR 时钟数)
10 位方式
8 位方式
跟踪 / 保持捕获时间
转换速率
模拟输入
ADC 输入电压范围
相对 GND 的绝对引脚电压
电源指标
电源电流 (VDD 给 ADC0 供电)
工作方式, 500 ksps
电源抑制比
注意 : 表示偏离平均真一个标准差。
42
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表 5.11. 温度传感器电气特性
VDD = 3.0 V, –40 to +85 °C (除非特别注明)。
参数
测量条件
最小值
典型值
最大值
单位
线性度
—
± 0.5
—
°C
增益
—
2.87
—
mV/°C
增益误差 *
—
±120
—
µV/°C
偏移
温度 = 0 °C
—
764
—
mV
偏移误差 *
温度 = 0 °C
—
±15
—
mV
注意 : 代表偏离平均值一个标准差。
表 5.12. 电压基准电气特性
VDD = 3.0 V ; –40 to +85 °C (除非特别注明)
参数
测量条件
最小值 典型值 最大值
单位
内部基准 (REFBE = 1)
输出电压
环境温度 25 °C
2.38
2.42
2.46
V
VREF 短路电流
—
—
8
mA
VREF 温度系数
—
35
—
ppm/°C
负载 = 0 to 200 µA 到 GND
—
1.5
—
ppm/µA
VREF 启动时间 1
4.7 µF 钽电容, 0.1 µF 陶瓷旁路电容
—
3
—
ms
VREF 启动时间 2
0.1 µF 陶瓷旁路电容
—
100
—
µs
—
140
—
ppm/V
1
—
VDD
V
—
9
—
µA
—
75
—
µA
负载调整
电源抑制比
外部基准 (REFBE = 0)
输入电压范围
输入电流
采样频率 = 500 ksps ; VREF = 3.0 V
电源指标
电源电流
??? 1.4
43
C8051F380/1/2/3/4/5/6/7/C
表 5.13. 比较器电气特性
VDD = 3.0 V, –40 to +85 °C (除非特别注明 )
参数
响应时间:
方式 0, Vcm* = 1.5 V
响应时间:
方式 1, Vcm* = 1.5 V
响应时间:
方式 2, Vcm* = 1.5 V
响应时间:
方式 3, Vcm* = 1.5 V
测量条件
最小值
典型值
最大值
单位
CP0+ – CP0– = 100 mV
—
100
—
ns
CP0+ – CP0– = –100 mV
—
250
—
ns
CP0+ – CP0– = 100 mV
—
175
—
ns
CP0+ – CP0– = –100 mV
—
500
—
ns
CP0+ – CP0– = 100 mV
—
320
—
ns
CP0+ – CP0– = –100 mV
—
1100
—
ns
CP0+ – CP0– = 100 mV
—
1050
—
ns
CP0+ – CP0– = –100 mV
—
5200
—
ns
—
1.5
4
mV/V
共模抑制比
正向回差电低 1
CP0HYP1–0 = 00
—
0
1
mV
正向回差电低 2
CP0HYP1–0 = 01
2
5
10
mV
正向回差电低 3
CP0HYP1–0 = 10
7
10
20
mV
正向回差电低 4
CP0HYP1–0 = 11
15
20
30
mV
负向回差电低 1
CP0HYN1–0 = 00
—
0
1
mV
负向回差电低 2
CP0HYN1–0 = 01
2
5
10
mV
负向回差电低 3
CP0HYN1–0 = 10
7
10
20
mV
负向回差电低 4
CP0HYN1–0 = 11
15
20
30
mV
–0.25
—
VDD + 0.25
V
输入电容
—
4
—
pF
输入偏置电流
—
0.001
—
nA
输入偏移电压
–5
—
+5
mV
电源抑制比
—
0.1
—
mV/V
上电时间
—
10
—
µs
方式 0
—
20
—
µA
方式 1
—
10
—
µA
方式 2
—
4
—
µA
方式 3
—
1
—
µA
反相或同相输入电压范围
电源
供电电流 (DC)
注意 : Vcm 是 CP0+ 和 CP0– 上的共模电压。
44
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表 5.14. USB 收发器电气特性
VDD = 3.0 V to 3.6 V, –40 to +85 °C (除非特别说明)
参数
测量条件
最小值
典型值
最大值
单位
输出高电平 (VOH)
2.8
—
—
V
输出低电平 (VOL)
—
—
0.8
V
VBUS 检测输入低电平
—
—
1.0
V
VBUS 检测输入高电平
3.0
—
—
V
输出交叉点 (VCRS)
1.3
—
2.0
V
发送器
输出阻抗 (ZDRV)
驱动高电平
驱动低电平
—
—
38
38
—
—
W
上拉电阻 (RPU)
全速 (D+ 上拉)
低速 (D– 上拉)
1.425
1.5
1.575
kW
输出上升时间 (TR)
低速
全速
75
4
—
—
300
20
ns
输出下降时间 (TF)
低速
全速
75
4
—
—
300
20
ns
| (D+) – (D–) |
0.2
—
—
V
0.8
—
2.5
V
—
<1.0
—
µA
接收器
差分输入敏感度 (VDI)
差分输入共模范围 (VCM)
输入漏电流 (IL)
上拉电阻禁止
注意 : 时序图和符号定义请参见 USB 规范。
??? 1.4
45
C8051F380/1/2/3/4/5/6/7/C
46
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
6. 10 位 ADC (ADC0 的,只有 C8051F380/1/2/3)
C8051F380/1/2/3 中的 ADC0 是一个 500 ksps, 10 位的逐次逼近寄存器型 (SAR) ADC,ADC 中集成了跟踪
保持电路、和可编程窗口检测器。该 ADC 可完全由软件通过特殊功能寄存器为配置。通过使用第 59 页
6.5. 节 “ADC0 模拟多路选择器 (仅 C8051F380/1/2/3) ” 中描述的模拟多路器, ADC 可以配置为测量各种
不同的信号。ADC 的电压基准选择见第 62 页 7. 节 “ 电压基准 ” 。只有当 ADC 控制寄存器 (ADC0CN) 中的
ADC0EN 位被置 1 时, ADC0 子系统才被使能。当 AD0EN 位为 0 时, ADC0 子系统处于低功耗关。
正输入
(AIN+)
AMUX
温度
传感器
10 位
SAR
AIN+
ADC
AIN-
端口I/O
引脚*
101
110
111
负输入
(AIN-)
AMUX
AD0BUSY (W)
定时器0溢出
定时器2溢出
定时器1溢出
C NVSTR 输入
定时器3溢出
定时器4溢出
定时器5溢出
SYSCL K
REF
VREF
启动转换
VD D
ADC0H
VDD
000
001
010
011
1 00
ADC0L
AM X0P 5
AM X0P 4
AM X0P 3
AM X0P 2
AM X0P 1
AM X0P 0
端口I/O
引脚*
AD0C M0
ADC0CN
AD0 EN
AD0 TM
A D0INT
AD0 BUSY
AD0WIN T
AD0C M2
AD0C M1
AMX0P
AD0 WINT
* 32 脚 封装 有21 个输 入选 择
48 脚封 装有32 个 输入 选择
AMX0N
AD0SC0
AD0LJST
AD0SC4
AD0SC3
AD0SC2
AD0SC1
AMX0N 5
AMX0N 4
AMX0N 3
AMX0N 2
AMX0N 1
AMX0N 0
GND
ADC0CF
32
ADC0LTH ADC0LTL
窗口
比较
逻辑
ADC0GTH ADC0GTL
图 6.1. ADC0 功能框图
??? 1.4
46
C8051F380/1/2/3/4/5/6/7/C
6.1. 输出码格式
单端和差分方式的转换码格式是不同的。每次转换结束后,寄存器 ADC0H 和 ADC0L 中保存 ADC 输出转换
码的高字节和低字节。转换数据在寄存器对 ADC0H ∶ ADC0L 中的储存方式可以是左对齐或右对齐,由
AD0LJST 位 (ADC0CN.0) 的设置决定。当工作在单端方式时,转换码以 10 位无符号整数形式表示。输入
测量范围为 0~VREF×1023/1024。下面的表给出了右对齐和左对齐数据的代码示例。 ADC0H 和 ADC0L 寄
存器中未使用的位被清 0。 .
输入电压
( 单端 )
右对齐的 ADC0H:ADC0L
(AD0LJST = 0)
左对齐的 ADC0H:ADC0L
(AD0LJST = 1)
VREF x 1023/1024
VREF x 512/1024
VREF x 256/1024
0
0x03FF
0x0200
0x0100
0x0000
0xFFC0
0x8000
0x4000
0x0000
ADC 工作在差分方式时,转换码以 10 位有符号 2 的补码表示。输入测量范围为 –VREF~VREF x 511/512。
下面的表给出了右对齐和左对齐数据的代码示例。对于右对齐数据, ADC0H 中未使用的高位是数据字的符
号扩展。对于左对齐数据, ADC0L 中未使用的低位被清 0。
输入电压
( 差分 )
右对齐的 ADC0H:ADC0L
(AD0LJST = 0)
左对齐的 ADC0H:ADC0L
(AD0LJST = 1)
VREF x 511/512
VREF x 256/512
0
–VREF x 256/512
–VREF
0x01FF
0x0100
0x0000
0xFF00
0xFE00
0x7FC0
0x4000
0x0000
0xC000
0x8000
47
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
6.2. 温度传感器
典型的温度传感器传递函数如图 6.2 所示。输出电压 (VTEMP) 是正 ADC 输入时,温度传感器选择位在寄存
器 AMX0P AMX0P5-0。
(mV)
1200
1100
1000
900
V TEMP = Slope*(TEMP C) + Offset mV
800
700
-50
0
50
100
(Celsius)
图 6.2. 典型的温度传感器传递函数
未校准的温度传感器的输出是非常合适的线性和相对温度测量(见第 42 页上 “ 表 5.10 ADC0 电气特性 ” 表
4.10, “ADC0 的电气特性 ” 的线性规格)。为绝对温度的测量,增益和 / 或偏移校准建议。 1 点校准通常包
括以下步骤:
步骤
步骤
步骤
步骤
1.
2.
3.
4.
控制 / 测量环境温度 (此温度必须已知 )。
电力设备,并允许自加热几秒钟的延迟。
执行作为正输入和负输入选择地选择温度传感 , ADC 转换。
计算偏移和 / 或增益特性,并在随后的温度传感器测量使用的非易失性内存中存储这些值。
图 6.3 显示了典型的温度传感器错误假设 1 点校准在 25°C。请注意,影响 ADC 测量的参数,在特定的电压
参考价值,也将影响温度测量。
??? 1.4
48
C8051F380/1/2/3/4/5/6/7/C
图 6.3. 1 点校准温度传感器错误
49
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
6.3. 工作方式
ADC0 的最高转换速度为 500 ksps。 ADC0 的转换时钟由系统时钟分频得到,时钟分频系数由 ADC0CF 寄
存器的 AD0SC 位决定。
6.3.1. 启动转换
有 8 种 ADC 转换启动方式,由寄存器 ADC0CN 中的 ADC0 转换启动方式位 (AD0CM2–0) 的状态决定采用
哪一种方式。转换触发源有:
1.
2.
3.
4.
5.
6.
7.
8.
写 1 到寄存器 ADC0CN 的 AD0BUSY 位;
定时器 0 溢出 ( 即定时的连续转换 ) ;
定时器 2 溢出;
定时器 1 溢出;
CNVSTR 输入信号的上升沿;
定时器 3 溢出;
定时器 4 溢出;
定时器 5 溢出;
向 AD0BUSY 写 1 的方式提供了用软件按需要控制 ADC0 转换的能力。AD0BUSY 位在转换期间被置 1,转
换结束后被清 0。 AD0BUSY 位的下降沿触发中断 (当被允许时)并置位 ADC0 中断标志 (AD0INT)。当
ADC0 位为逻辑 1 时, ADC0 数据寄存器 ADC0H:ADC0L 中的转换结果有效。注意:当转换源是定时器 2、
3、4 或定时器 5 溢出时,如果定时器工作在 8 位方式,使用定时器的低字节溢出;如果定时器工作在 16 位
方式,则使用定时器的高字节溢出。有关定时器配置方面的信息见第 263 页 26. 节 “ 定时器 ” 。
有关 CNVSTR 的重要注意事项:CNVSTR 输入引脚还是端口 I/O 引脚。当使用 CNVSTR 输入作为 ADC0
转换启动源时,对应的引脚应被数字交叉开关跳过。有关端口 I/O 配置的详细信息,见第 153 页 20. 节 “ 端
口输入 / 输出 ” 。
??? 1.4
50
C8051F380/1/2/3/4/5/6/7/C
6.3.2. 跟踪方式
寄存器 ADC0CN 中的 AD0TM 位控制 ADC0 的跟踪和保持方式。在缺少状态,除转换期间外 ADC0 输入被
连续跟踪。当 AD0TM 位为逻辑 1 时, ADC0 工作在低功耗跟踪和保持方式。在该方式,每次转换之前都有
3 个 SAR 时钟的跟踪时间 ( 在转换启动信号之后 )。 在 CNVSTR 的上升沿开始转换。跟踪和转换时序详见
图 6.4。当器件工作在低功耗待机或休眠方式时,跟踪也可以被禁止 (关断) 。低功耗跟踪和保持方式在
AMUX 的设置频繁改变时非常有用。因为 ADC 有建立时间要求(见第 52 页 6.3.3. 节 “ 建立时间要求 ” )。
A. 使用外部触发源的ADC0时序
CNV STR
( AD0 CM[2 :0]=10 0)
1
2
3
4
5
6
7
8
9
10
11
SAR 时钟
AD0TM=1
AD0TM=0
低 功耗
或 转换
跟踪
跟踪 或转换
转换
低功 耗方式
转换
跟踪
B. 使用内部触发源的ADC0时序
向AD0B US Y写1,
定时器 0、 定时器2、
定时器1、定 时器3溢出
(AD0C M[2:0]=000,001,
010,011,101)
1
2
3
4
5
6
7
8
9
10 11 12 13 14
S AR 时钟
AD0TM=1
低功耗
或转换
跟踪
1
2
3
转换
4
5
6
7
8
9
低功耗方 式
10 11
S AR 时钟
AD0TM=0
跟踪或转 换
转换
图 6.4. 10 位 ADC 跟踪和转换时序示例
51
??? 1.4
跟踪
C8051F380/1/2/3/4/5/6/7/C
6.3.3. 建立时间要求
在每次转换之前需要一个最小的跟踪时间,以保证精确转换。该跟踪时间由 AMUX0 的电阻、 ADC0 采样电
容、任何外部源阻抗以及所有要求的转换精度决定。注意:在低功耗跟踪方式,每次转换开始时需要用三个
SAR 时钟跟踪。对于大多数应用来说,三个 SAR 时钟可以满足最小跟踪时间要求。(外部源阻抗较大时,
所需要的建立时间增加。)
图 6.5 给出了等效的 ADC0 输入电路。对于一个给定的建立精度 (SA),所需要的 ADC0 建立时间可以用方
程 6.1 估算。表 5.10 给出了 ADC0 的最小建立时间要求以及多路器的阻抗和采样电容值。
 2n 
t = ln  --------  R
C
TOTAL SAMPLE
 SA
方程 6.1. ADC0 建立时间要求
其中:
SA 是建立精度,用一个 LSB 的分数表示 (例如,建立数度 0.25 对应 1/4 LSB);
t 为所需要的建立时间,以秒为单位;
RTOTAL 为 AMUX0 电阻与外部信号源电阻之和;
n 为 ADC 的分辨率,用比特表示 (10)。
差分方式
单端方式
MUX选择
MUX选择
Px .x
Px .x
RMUX
R MUX
C SAMPLE
CSAMPL E
RCInput = RMUX * CSAMPLE
RCInput = RMUX * C SAMPL E
C SAMPLE
Px .x
RMUX
MUX选择
图 6.5. ADC0 等效输入电路
??? 1.4
52
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 6.1. ADC0CF:ADC0 配置寄存器
位
7
6
5
4
3
2
1
0
名称
AD0SC[4:0]
AD0LJST
保留
类型
R/W
R/W
R/W
复位
1
1
1
1
1
0
0
0
SFR 地址 = 0xBC ; SFR 页 = 所有页
位
7:3
名称
功能
AD0SC[4:0] ADC0 SAR 转换时钟周期位
SAR 转换时钟来源于系统时钟,由下面的方程给出,其中 AD0SC 表示 AD0SC4[4:0]
中保存的 5 位数值。对于 SAR 转换时钟的要求在 ADC 规格表中给出。
SYSCLK
AD0SC = ------------------------ – 1
CLK SAR
注意 : 如果储存器电源控制器被使能 (MPCE = '1'), 则 AD0SC 至少应被设置为 "00001",以保
证 ADC 正确工作。
2
AD0LJST
ADC0 左对齐选择
0:ADC0H:ADC0L 寄存器中的数据为右对齐。
1:ADC0H:ADC0L 寄存器中的数据为左对齐。
注意 : AD0LJST 位仅对 0 位方式有效 (AD08BE = 0)。
1:0
53
保留
必须写 00b.
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 6.2. ADC0H:ADC0 数据字高字节
位
7
6
5
4
3
名称
ADC0H[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xBE ; SFR 页 = 所有页
位
名称
7:0 ADC0H[7:0] ADC0 数据字高位 .
功能
AD0LJST = 0 时:位 7–2 为 10 位 ADC0 数据位 1 的符号扩展位,位 1–0 为 10 位
ADC0 数据的高 2 位。
AD0LJST = 1 时:位 7–0 是 10 位 ADC0 数据的高 8 位。
SFR 定义 6.3. ADC0L:ADC0 数据字低字节
位
7
6
5
4
3
名称
ADC0L[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xBD ; SFR 页 = 所有页
位
7:0
名称
ADC0L[7:0] ADC0 数据字低位。
功能
AD0LJST = 0 时:位 7-0 是 10 位 ADC0 数据的低 8 位。
AD0LJST = 1 时:位 7-6 是 10 位 ADC0 数据的低 2 位,位 5-0 的读出值为
000000b。
??? 1.4
54
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 6.4. ADC0CN:ADC0 控制寄存器
位
7
6
5
名称
AD0EN
AD0TM
AD0INT
类型
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
4
3
2
1
AD0BUSY AD0WINT
0
AD0CM[2:0]
R/W
0
0
0
SFR 地址 = 0xE8 ; SFR 页 = 所有页;可位寻址
位
名称
7
AD0EN
功能
ADC0 使能位。
0:ADC0 禁止。ADC0 处于低功耗掉电状态。
1:ADC0 使能。ADC0 处于活动状态,可以进行数据转换。
6
AD0TM
ADC0 使能位。
0:正常跟踪方式:当 ADC0 被使能时,除了转换期间之外一直处于跟踪方式。在发
生由 AD0CM[2:0] 定义的转换启动事件后立即开始转换。
1:延迟跟踪方式:当 ADC0 被使能时,除了转换期间外输入被跟踪。转换启动信号
会启动三个 SAR 时钟的额外跟踪时间,然后开始转换。注意:但使用 CNVSTR 时
(AD0CM[2:0] = 100),没有跟踪延迟。
5
AD0INT
ADC0 转换结束中断标志。
0:自最后一次将该位清 0 后, ADC0 还没有完成一次数据转换。
1:ADC0 完成了一次数据转换。
4
AD0BUSY
ADC0 忙位。
读:
写:
0:ADC0 当前不在进行数据转换。 0:无作用。
1:ADC0 正在进行转换。
1:若 AD0CM[2:0] = 000b
则启动 ADC0 转换。
3
AD0WINT
ADC0 窗口比较中断标志。
0:自该标志最后一次被清 0 以来未发生 ADC0 窗口比较数据匹配。
1:发生了 ADC0 窗口比较数据匹配。
2:0 AD0CM[2:0] ADC0 转换启动方式选择
000:ADC0 的转换启动源为向 AD0BUSY 写 1。
001:ADC0 的转换启动源为定时器 0 溢出。
010:ADC0 的转换启动源为定时器 2 溢出。
011:ADC0 的转换启动源为定时器 1 溢出。
100:ADC0 的转换启动源为外部 CNVSTR 信号的上升沿。
101:ADC0 的转换启动源为定时器 3 溢出。
110:ADC0 的转换启动源为定时器 4 溢出。
111:ADC0 的转换启动源为定时器 5 溢出。
55
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
6.4. 可编程窗口检测器
ADC 可编程窗口检测器不停地将 ADC0 输出与用户编程的极限值进行比较,并在检测到期望条件时通知系
统控制器。这在一个中断驱动的系统中尤其有效,既可以节省代码空间和 CPU 带宽,又能提供快速响应时
间。窗口检测器中断标志 (AD0WINT 中的 ADC0CN) 也可被用于查询方式。 ADC0 下限 (大于)寄存器
(ADC0GTH, ADC0GTL) 和 ADC0 上限 (小于)寄存器 (ADC0LTH, ADC0LTL) 中保持比较值。窗口检测器
标志既可以在测量数据位于用户编程的极限值以内时有效,也可以在测量数据位于用户编程的极限值以外时
有效,这取决于 ADC0GT 和 ADC0LT 寄存器的编程值。
SFR 定义 6.5. ADC0GTH:ADC0 下限 (大于)数据字高字节
位
7
6
5
4
3
名称
ADC0GTH[7:0]
类型
R/W
复位
1
1
1
1
1
2
1
0
1
1
1
2
1
0
1
1
1
SFR 地址 = 0xC4 ; SFR 页 = 所有页
位
名称
功能
7:0 ADC0GTH[7:0] ADC0 下限数据字高字节。
16 位上限窗口比较寄存器的高字节。
SFR 定义 6.6. ADC0GTL:ADC0 下限 (大于)数据字低字节
位
7
6
5
4
3
名称
ADC0GTL[7:0]
类型
R/W
复位
1
1
1
1
1
SFR 地址 = 0xC3 ; SFR 页 = 所有页
位
7:0
名称
功能
ADC0GTL[7:0] ADC0 下限数据字低字节
16 位下限窗口比较寄存器的低字节。
??? 1.4
56
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 6.7. ADC0LTH:ADC0 上限 (小于)数据字高字节
位
7
6
5
4
3
名称
ADC0LTH[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xC6 ; SFR 页 = 所有页
位
7:0
名称
功能
ADC0LTH[7:0] ADC0 上限数据字高字节。
16 位上限窗口比较寄存器的高字节。
SFR 定义 6.8. ADC0LTL:ADC0 上限 (小于)数据字低字节
位
7
6
5
4
3
名称
ADC0LTL[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xC5 ; SFR 页 = 所有页
位
7:0
名称
功能
ADC0LTL[7:0] ADC0 上限数据字低字节。
16 位上限窗口比较寄存器的低字节。
57
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
6.4.1. 窗口检测器示例
图 6.6 给出了单端方式下数据右对齐窗口比较的两个例子。左边的例子所使用的极限值为:ADC0LTH:
ADC0LTL = 0x0080 (128d) 和 ADC0GTH:ADC0GTL = 0x0040 (64d) ;右边的例子所使用的极限值为:
VREF x (1023/1024) (相对于 GND),转换码是 10 位无符号整数。在左边的例子中,如果 ADC0 转换结
果数据字位于由 ADC0GTH:ADC0GTL 和 ADC0LTH:ADC0LTL 定义的范围之内 (即 0x0040 < ADC0H:
ADC0L < 0x0080),则会产生一个 AD0WINT 中断。在右边的例子中,如果 ADC0 转换结果数据字位于由
ADC0GT 和 ADC0LT 定义的范围之外(即 ADC0H:ADC0L < 0x0040 或 ADC0H:ADC0L > 0x0080),则会
产生一个 AD0WINT 中断。图 6.7 给出了使用相同比较值的单端方式下数据左对齐窗口比较的例子。
ADC0H:A DC0L
ADC0H:A DC0L
输入电压
(A IN - GN D)
V REF x (1023/1024)
输入电压
(AIN - GN D)
0x03FF
V REF x (1023/1024)
0x03FF
A D0WINT
不受影响
A D0WINT=1
0x 0081
VREF x (128/1024)
0x 0080
0x007F
0x00 81
AD C0LTH:ADC0LTL
VREF x (128/1024)
0x00 80
0x007F
AD C0G TH:ADC0GTL
A D0WINT
不受影响
A D0WINT=1
VREF x (64/1024)
0x 0041
0x 0040
AD C0G TH:ADC0GTL
VREF x (64 /1024)
0x003F
0x00 41
0x00 40
AD C0LTH:ADC0LTL
0x003F
A D0WINT=1
A D0WINT
不受影响
0x 0000
0
0x00 00
0
图 6.6. ADC 窗口比较示例 (右对齐单端方式数据)
ADC0H:A DC0L
ADC0H:A DC0L
输入电压
(A IN - GN D)
V REF x (1023/1024)
输入电压
(AIN - GN D)
V REF x (1023/1024)
0xFFC0
0xFFC0
A D0WINT
不受影响
A D0WINT=1
0x 2040
VREF x (128/1024)
0x 2000
0x1FC0
0x20 40
AD C0LTH:ADC0LTL
VREF x (128/1024)
0x20 00
0x1FC0
AD C0G TH:ADC0GTL
A D0WINT=1
VREF x (64/1024)
0x 1040
0x 1000
AD C0G TH:ADC0GTL
VREF x (64 /1024)
0x0FC0
0x10 40
0x10 00
AD C0LTH:ADC0LTL
0x0FC0
A D0WINT=1
A D0WINT
不受影响
0
A D0WINT
不受影响
0x 0000
0
0x00 00
图 6.7. ADC 窗口比较示例 (左对齐单端方式数据)
??? 1.4
58
C8051F380/1/2/3/4/5/6/7/C
59
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
6.5. ADC0 模拟多路选择器 (仅 C8051F380/1/2/3)
模拟多路选择器 (AMUX0) 选择去 ADC 的正输入和负输入,正输入 (AIN+) 可被连接到端口引脚、片内温度
传感器输出或正电源 (VDD)。负输入 (AIN-) 可被连接到商品引脚、VREF 或 GND。当 GDN 被选择为负输入
时,ADC0 工作在单端方式;在所有其它时间,ADC0 工作在分差方式。ADC0 的输入通道由寄存器 AMX0P
和 AMX0N 选择 (见 SFR 定义 6.9 和 SFR 定义 6.10)。
有关 ADC0 输入配置的重要注意事项:被选择为 ADC0 输入的引脚应被配置为模拟输入,并且应被数字交叉
开关跳过。要将一个端口引脚配置为模拟输入,应将 PnMDIN 寄存器中的对应位清 0。为强制交叉开关跳过 一
个端口引脚,应将 PnSKIP 寄存器中的对应位置 1。有关商品 I/O 配置的详细信息见第 153 页 20. 节 “ 端口输
入 / 输出 ” 。
??? 1.4
59
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 6.9. AMX0P:AMUX0 正输入通道选择寄存器
位
7
6
5
4
3
2
1
0
0
0
AMX0P[5:0]
名称
类型
R
R
复位
0
0
R/W
0
0
0
0
SFR 地址 = 0xBB ; SFR 页 = 所有页
位
7:6
名称
功能
未使用
读 = 00b ;写 = 忽略。
5:0 AMX0P[5:0] AMUX0 正输入选择。
AMX0P
000000:
000001:
000010:
000011:
000100:
000101:
000110:
000111:
001000:
001001:
001010:
001011:
001100:
001101:
001110:
001111:
010000:
010001:
60
32 脚封装
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
P3.0
P0.0
48 脚封装
P2.0
P2.1
P2.2
P2.3
P2.5
P2.6
P3.0
P3.1
P3.4
P3.5
P3.7
P4.0
P4.3
P4.4
P4.5
P4.6
保留
P0.3
??? 1.4
AMX0P
010010:
010011:
010100:
010101:
010110:
010111:
011000:
011001:
011010:
011011:
011100:
011101:
011110:
011111:
100000:
100001:
100010:
100011 111111:
32 脚封装
P0.1
P0.4
P0.5
保留
保留
保留
保留
保留
保留
保留
保留
保留
温度传感器
VDD
保留
保留
保留
保留
48 脚封装
P0.4
P1.1
P1.2
P1.0
P1.3
P1.6
P1.7
P2.4
P2.7
P3.2
P3.3
P3.6
温度传感器
VDD
P4.1
P4.2
P4.7
保留
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 6.10. AMX0N:AMUX0 负输入通道选择寄存器
位
7
6
5
4
3
2
1
0
0
0
AMX0N[5:0]
名称
类型
R
R
复位
0
0
R/W
0
0
0
0
SFR 地址 = 0xBA ; SFR 页 = 所有页
位
7:6
名称
功能
未使用
读 = 00b ;写 = 忽略。
5:0 AMX0N[5:0] AMUX0 负输入选择。
AMX0N
000000:
000001:
000010:
000011:
000100:
000101:
000110:
000111:
001000:
001001:
001010:
001011:
001100:
001101:
32 脚封装
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
48 脚封装
P2.0
P2.1
P2.2
P2.3
P2.5
P2.6
P3.0
P3.1
P3.4
P3.5
P3.7
P4.0
P4.3
P4.4
AMX0N
010010:
010011:
010100:
010101:
010110:
010111:
011000:
011001:
011010:
011011:
011100:
011101:
011110:
011111:
001110:
001111:
010000:
010001:
P2.6
P2.7
P3.0
P0.0
P4.5
P4.6
100000:
100001:
100010:
100011 111111:
保留
P0.3
??? 1.4
32 脚封装
P0.1
P0.4
P0.5
保留
保留
保留
保留
保留
保留
保留
保留
保留
VREF
GND
(单端测量)
保留
保留
保留
保留
48 脚封装
P0.4
P1.1
P1.2
P1.0
P1.3
P1.6
P1.7
P2.4
P2.7
P3.2
P3.3
P3.6
VREF
GND
(单端测量)
P4.1
P4.2
P4.7
保留
61
C8051F380/1/2/3/4/5/6/7/C
62
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
7. 电压基准
ADC 的电压基准多路器可以被配置为使用一个外部连接的电压基准、连接到 VREF 引脚的内部电压基准发
生器、未经稳压的电源电压 VDD 或稳压后的 1.8V 内部电源(见图 7.1)。基准控制寄存器(REF0CN,SFR
定义 7.1)中的 REFSL 位用于选择 ADC 的基准源。使用外部或内部基准时,REFSL 位应被设置为 0,以选
择 VREF 引脚;使用 VDD 作为基准源时, REFSL 应被置 1。要用内部稳压器取代 VDD,则可将 REGOVR
位置 1。
REF0CN 中的 BIASE 位使能内部偏压发生器,片内很多模拟外设要使用该偏压发生器。当这些外设中的任
何一个被使能时,偏压发生器被自动使能,不需手动使能。也可以通过向 REF0CN 中的 BIASE 位写 1 来使
能偏压发生器。表 5.12 给出了电压基准电路的电气特性。
C8051F380/1/2/3 器件还包含一个片内基准电路,该电路由一个温度稳定性好的 1.2V 带隙电压基准发生器
和一个可选择增益的输出缓冲放大器组成。使用寄存器 REF0CN 中的 REFBGS 位可将缓冲放大器配置为 1x
或 2x 增益。在 1x 增益设置,输出标称电压为 1.2V ;在 2x 增益设置,输出标称电压为 2.4V。通过将寄存
器 REF0CN 中的 REFBE 位置 1,可将片内电压基准驱动到 VREF 引脚。VREF 引脚对地的最大负载必须小
于 200 µA。建议在 VREF 引脚与地之间接 0.1 µF 和 4.7 µF 的旁路电容,至少需要一个 0.1 µF 的电容。如
果不使用片内基准,应将 REFBE 位清 0。表 5.12 给出了片内电压基准的电气特性。
有关 VREF 引脚的重要注意事项:当使用外部电压基准或片内基准电路时,VREF 引脚应被配置为模拟方式
并被数字交叉开关跳过。有关 VREF 引脚的位置以及如何将其配置为模拟方式和使交叉开关跳过该引脚,参
见第 153 页 20. 节 “ 端口输入 / 输出 ” 。
REGOVR
REF SL
T EM PE
BIASE
REFBE
REFBGS
REF0C N
EN
去AD C、内部振荡
器、电 压基准、 温
度传感 器
偏置发生 器
IOSC EN
EN
VD D
温度传感 器
去 模拟MU X
外 部电压
基 准电路
R1
VREF
1 x/2x
1.2V 电压基准
EN
R EFBE
R EFBGS
GN D
0
0
4.7 F
+
0.1 F
建议的旁 路电容
VD D
VR EF
(去 ADC)
1
内部稳 压器
1
R EGOVR
图 7.1. 电压基准功能框图
??? 1.4
62
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 7.1. REF0CN:电压基准控制寄存器
位
7
名称
REFBGS
类型
R/W
R
复位
0
0
6
5
4
3
2
1
0
REGOVR
REFSL
TEMPE
BIASE
REFBE
R
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
SFR 地址 = 0xD1 ; SFR 页 = 所有页
位
7
名称
功能
REFBGS 基准缓冲器增益选择。
该位选择片内电压基准缓冲器的增益为 1x 或 2x。
0:2x 增益。
1:1x 增益。
6:5
4
未使用 读 = 00b ;写 = 忽略。
REGOVR 稳压器基准替代。
该位 “ 超越 ”REFSL 位,允许使用内部稳压器作为基准源。
0:电压基准源由 REFSL 位选择。
1:内部稳压器作为电压基准。
3
REFSL
电压基准选择。
该位选择 ADC0 的电压基准。
0:VREF 引脚用作电压基准。
1:VDD 用作电压基准。
2
TEMPE
温度传感器使能。
0:内部温度传感器禁止。
1:内部温度传感器使能。
1
BIASE
内部模拟偏压发生器使能。
0:内部偏压发生器禁止。
1:内部偏压发生器使能。
0
REFBE
内部电压基准缓冲器使能。
0:内部基准缓冲器禁止。
1:内部基准缓冲器使能。内部电压基准被驱动到 VREF 引脚。
63
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
8. 比较器 0 和比较器 1
C8051F380/1/2/3/4/5/6/7/C 器件内部有两个可编程电压比较器,比较图 0 (见图 8.1) 和比较器 1 (见
图 8.2)。两个比较器除了具有以下几点不同之处,其操作完全相同:(1) 输入选择不同,详见第 71 页 8.1. 节
“ 比较器多路选择器 ” ; (2) 比较器 0 可用作复位源。
比较器的响应时间和回差电压都是可编程的。每个比较器有一个模拟输入多路器和两个可以通过交叉开关接
到外部引脚的输出:一个同步 “ 锁存 ” 输出 (CP0 或 CP1) 和一个异步 “ 直接 ” 输出 (CP0A 或 CP1A)。即使
在系统时间停止时,异步输出信号仍然可用,这就允许比较器在器件处于停机 (STOP) 方式时工作并产生输
出。当被分配了端口引脚时,比较器的输出可以被配置为漏极开路或推挽方式(见第 158 页 20.2. 节 “ 端口
I/O 初始化 ” )。比较器 0 可用作复位源 (见第 132 页 17.5. 节 “ 比较器 0 复位 ” )。
比较器的输入由比较器输入多路器选择,详见第 71 页 8.1. 节 “ 比较器多路选择器 ” 。
CPT 0CN
CP0EN
CP0OUT
CP0RIF
CP0FIF
CP0HYP1
CP0HYP0
CP0HY N1
CP0HY N0
V DD
CP0 +
比较器
输入MUX
+
CP0 -
CP0
D SET Q
-
CLR
D
Q
SET
CLR
Q
Q
交叉开关
(同步电路)
CP0A
GND
CPT 0MD
CP0RIE
CP 0FIE
CP0MD
CP0MD
64
复位
表决树
0
图 8.1. 比较器 0 功能框图
修订版 1.4
CP0EN
EA
C8051F380/1/2/3/4/5/6/7/C
CPT 1CN
CP1EN
CP1OUT
CP1RIF
CP1FIF
CP1HYP1
CP1HYP0
CP1HY N1
CP1HY N0
V DD
CP1 +
比较器
输入MUX
+
CP1 -
CP1
D SET Q
-
CLR
D
Q
SET
CLR
Q
Q
交叉开关
(同步电路)
CP1A
GND
CPT 1MD
CP1RIE
CP 1FIE
CP1MD1
CP1MD0
0
CP1RIF
CP1FIF
CP1EN
EA
1
0
0
0
1
1
CP 1 中断
1
图 8.2. 比较器 1 功能框图
比较器的输出可以被软件查询,可以作为中断源和 / 或被连到端口引脚。当被连到端口引脚时,比较器的输
出可以是与系统时钟同步的或者是不同步的。即使在停止方式 (系统时钟停止),异步输出信号仍然可用。
当被禁止时,比较器输出 (如果已通过交叉开关分配了端口 I/O 引脚)的缺省值为逻辑低电平,比较器的电
源被断开。有关通过交叉开关配置比较器输出的详细信息见第 154 页 20.1. 节 “ 优先权交叉开关译码器 ” 。
比较器的输入可以承受 –0.25 V 到 (VDD) + 0.25 V 的外部驱动电压而不至损坏或发生工作错误。比较器的详
细电气特性见第 37 页 5. 节 “ 电气特性 ” 。
可以通过对寄存器 CPTnMD (见 SFR 定义 8.2 和 SFR 定义 8.4)编程来设置比较器的响应时间。选择较长
的响应时间可以减小比较器的电源电流。
修订版 1.4
65
C8051F380/1/2/3/4/5/6/7/C
VIN +
VIN -
CPn+
+
CPn
_
C Pn -
OUT
电路 配置
正向回差电压
(用C P0H YP位编程)
VIN -
负向回差电压
(用CP0 HYN位编程)
输入
VIN +
VOH
输出
VOL
负向回差禁止
正向回差禁止
最大负向回差电压
最大正向回差电压
图 8.3. 比较器回差电压曲线
比较器有可软件编辑的回差电压。使用比较器控制寄存器 CPTnCN (n = 0 或 1) 既可以对回差电压值编程,
也可以对该回差电压围绕门限电压的正向和负向回差对称度编程。
比较器回差电压由比较器控制寄存器 CPTnCN ( 见 SFR 定义 8.1)中的位 3-0 的设置决定。负向回差电压由
CPnHYN 位的设置决定。可以设置 20mV、 10mV 或 5 mV 的负向回差电压值,也可以禁止负向回差电压。
类似地,正向回差电压由 CPnHYP 位的设置决定。
在比较器输出的上升沿和下降沿都可以产生中断(关于中断使能和优先级控制,见第 119 页 16.1. 节 “MCU
中断源和中断向量 ” )。比较器的下降沿发生时,CPnFIF 标志被置 1 ;比较器的上升沿发生时,CPnRIF 标
志被置 1。这些位一旦被置 1,将一直保持 1 状态直到被软件清 0。通过将 CPnRIE 置 1 来使能比较器上升
沿中断,通过将 CPnFIE 置 1 来使能比较器下降下沿中断。
可以在任意时刻通过读取 CPnOUT 位得到比较器的输出状态。通过针 CPnEN 位置 1 来使能比较器,通过
将该位清 0 来禁止比较器。
注意:在对比器上电或改变比较器的回差电压或响应时间控制位时,可能会检测到假上升沿或下降沿。因
此,建议在比较器被使能或方式位改变后经过一段延时后将上升沿和下降沿标志显式清 0.
66
修订版 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 8.1. CPT0CN:比较器 0 控制寄存器
位
7
6
5
4
名称
CP0EN
CP0OUT
CP0RIF
CP0FIF
CP0HYP[1:0]
CP0HYN[1:0]
类型
R/W
R
R/W
R/W
R/W
R/W
复位
0
0
0
0
3
0
2
0
1
0
0
0
SFR 地址 = 0x9B ; SFR 页 = 所有页
位
名称
7
CP0EN
功能
比较器 0 使能位。
0:比较器 0 禁止。
1:比较器 0 使能。
6
CP0OUT
比较器 0 输出状态标志。
0:电压值 CP0+ < CP0–.
1:电压值 CP0+ > CP0–.
5
CP0RIF
比较器 0 上升沿标志,必须用软件清 0。
0:自该标志最后一次被清 0 后,未检测到比较器 0 上升沿。
1:检测到比较器 0 上升沿。
4
CP0FIF
比较器 0 下降沿标志,必须用软件清 0.
0:自该标志最后一次被 0 后,未检测到比较器 0 下降沿。
1:检测到比较器 0 下降沿。
3:2 CP0HYP[1:0] 比较器 0 正向回差电压控制位。
00:正向回差电压禁止。
01:正向回差电压 = 5 mV.
10:正向回差电压 = 10 mV.
11:正向回差电压 = 20 mV.
1:0 CP0HYN[1:0] 比较器 0 负向回差电压控制位。
00:负向回差电压禁止。
01:负正向回差电压 = 5 mV.
10:负正向回差电压 = 10 mV.
11:负正向回差电压 = 20 mV.
修订版 1.4
67
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 8.2. CPT0MD:比较器 0 方式选择寄存器
位
7
6
名称
5
4
CP0RIE
CP0FIE
3
2
R
R
R/W
R/W
R
R
复位
0
0
0
0
0
0
SFR 地址 = 0x9D ; SFR 页 = 所有页
5
名称
未使用
CP0RIE
功能
读 = 00b,写 = 忽略
比较器 0 上升沿中断使能。
0:比较器 0 上升沿中断禁止。
1:比较器 0 上升沿中断允许。
4
CP0FIE
比较器 0 下降沿中断使能。
0:比较器 0 上下降中断禁止。
1:比较器 0 上下降中断允许。
3:2
1:0
读 = 00b,写 = 忽略。
未使用
CP0MD[1:0] 比较器 0 方式选择。
这两位影响比较器 0 的响应时间和功耗
00:方式 0 (最快响应时间,最高功耗)。
01:方式 1。
10:方式 2。
11:方式 3 (最慢响应时间,最低功耗)。
68
修订版 1.4
0
CP0MD[1:0]
类型
位
7:6
1
R/W
1
0
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 8.3. CPT1CN:比较器 1 控制寄存器
位
7
6
5
4
名称
CP1EN
CP1OUT
CP1RIF
CP1FIF
CP1HYP[1:0]
CP1HYN[1:0]
类型
R/W
R
R/W
R/W
R/W
R/W
复位
0
0
0
0
3
0
2
0
1
0
0
0
SFR 地址 = 0x9A ; SFR 页 = 所有页
位
名称
7
CP1EN
功能
比较器 1 使能位。
0:比较器 1 禁止。
1:比较器 1 使能。
6
CP1OUT
比较器 1 输出状态标志。
0:电压值 CP1+ < CP1–.
1:电压值 CP1+ > CP1–.
5
CP1RIF
比较器 1 上升沿标志,必须用软件清 0。
0:自该标志最后一次被清 0 后,未检测到比较器 1 上升沿。
1:检测到比较器 1 上升沿。
4
CP1FIF
比较器 1 下降沿标志,必须用软件清 0。
0:自该标志最后一次被清 0 后,未检测到比较器 1 下降沿。
1:检测到比较器 1 下降沿。
3:2 CP1HYP[1:0] 比较器 1 正向回差电压控制位。
00:正向回差电压禁止。
01:正向回差电压 = 5 mV.
10:正向回差电压 = 10 mV.
11:正向回差电压 = 20 mV.
1:0 CP1HYN[1:0] 比较器 1 负向回差电压控制位。
00:负向回差电压禁止。
01:负向回差电压 = 5 mV.
10:负向回差电压 = 10 mV.
11:负向回差电压 = 20 mV.
修订版 1.4
69
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 8.4. CPT1MD:比较器 1 方式选择寄存器
位
7
6
名称
5
4
CP1RIE
CP1FIE
3
2
R
R
R/W
R/W
R
R
复位
0
0
0
0
0
0
SFR 地址 = 0x9C ; SFR 页 = 所有页
5
名称
未使用
CP1RIE
功能
读 = 00b,写 = 忽略。
比较器 1 上升沿中断使能。
0:比较器 1 上升沿中断禁止
1:比较器 1 上升沿中断允许
4
CP1FIE
比较器 1 下降沿中断使能。
0:比较器 1 下降沿中断禁止
1:比较器 1 下降沿中断允许
3:2
1:0
读 = 00b,写 = 忽略。
未使用
CP1MD[1:0] 比较器 1 方式选择位。
这两位影响比较器 1 的响应时间和功耗。
00:方式 0 ( 最快响应时间,最高功耗)。
01:方式 1
10:方式 2
11:方式 3 ( 最慢响应时间,最低功耗 )。
70
修订版 1.4
0
CP1MD[1:0]
类型
位
7:6
1
R/W
1
0
C8051F380/1/2/3/4/5/6/7/C
8.1. 比较器多路选择器
C8051F380/1/2/3/4/5/6/7/C 器件内部包含了一个模拟输入多路选择器,将端口 I/O 引脚连接到比较器输入。
比较器的输入用 CPTnMX 寄存器(见 SFR 定义 8.5 和 SFR 定义 8.6)选择。CMXnP2–CMXnP0 位选择比
较器的正输入, CMXnN2–CMXnN0 位选择比较器的负输入。
有关比较器输入配置的重要注意事项:被选择为比较器输入的端口引脚应在相应的端口配置寄存器中被配置
为模拟输入并被数字交叉开关跳过。有关端口配置的详细信息见第 161 页 20.3. 节 “ 通用端口 I/O” 。
VDD
CP0 +
CP0 -
VDD
CP1 +
+
CP1 -
-
-
CMX1N2
CMX1N1
CMX1N0
CPT0MX
CMX1P2
CMX1P1
CMX1P0
GND
CMX0P2
CMX0P1
CMX0P0
CMX0N2
CMX0N1
CMX0N0
GND
+
CPT1MX
图 8.4. 比较器输入多路器原理框图
??? 1.4
71
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 8.5. CPT0MX:比较器 0 MUX 选择寄存器
位
7
6
5
4
3
2
CMX0N[2:0]
名称
类型
R
复位
0
R
0
0
0
R/W
0
SFR 地址 = 0x9F ; SFR 页 = 所有页
位
7
6:4
名称
功能
未使用
读 = 0b ;写 = 忽略。
CMX0N[2:0] 比较器 0 负输入 MUX 选择。
选择
000:
001:
010:
011:
100:
101-111:
3
2:0
未使用
72
32 脚封装
P1.1
P1.5
P2.1
P2.5
P0.1
48 脚封装
P2.1
P2.6
P3.5
P4.4
P0.4
保留
保留
读 = 0b ;写 = 忽略。
CMX0P[2:0] 比较器 0 正输入 MUX 选择。
选择
000:
001:
010:
011:
100:
101-111:
0
CMX0P[2:0]
R/W
0
1
32 脚封装
P1.0
P1.4
P2.0
P2.4
P0.0
48 脚封装
P2.0
P2.5
P3.4
P4.3
P0.3
保留
保留
??? 1.4
0
0
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 8.6. CPT1MX:比较器 1 MUX 寄存器
位
7
6
5
4
3
2
CMX1N[2:0]
名称
类型
R
复位
0
R
0
0
CMX1P[2:0]
R/W
0
1
0
0
R/W
0
0
0
SFR 地址 = 0x9E ; SFR 页 = 所有页
位
7
6:4
名称
功能
未使用
读 = 0b ;写 = 忽略。
CMX1N[2:0] 比较器 1 负输入 MUX 选择。
选择
000:
001:
010:
011:
100:
101-111:
3
2:0
32 脚封装
P1.3
P1.7
P2.3
保留
P0.5
48 脚封装
P2.3
P3.1
P4.0
P4.6
P1.2
保留
保留
读 = 0b ;写 = 忽略
未使用
CMX1P[2:0] 比较器 1 正输入 MUX 选择。
选择
000:
001:
010:
011:
100:
101-111:
32 脚封装
P1.2
P1.6
P2.2
保留
P0.4
48 脚封装
P2.2
P3.0
P3.7
P4.5
P1.1
保留
保留
??? 1.4
73
C8051F380/1/2/3/4/5/6/7/C
74
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
9. 稳压器 (REG0 和 REG1)
C8051F380/1/2/3/4/5/6/7 器件包含两个内部稳压器:一个将加在 REGIN 引脚的电压稳压到 3.3V (REG0),
另一个从 1.8 ~ 3.6V 的 VDD 电源稳压出内核电源 1.8V (REG1)。当被使能时,REG0 输出连到 VDD 引脚,
可为外部器件提供电源。可以用软件通过寄存器 REG01CN (SFR 定义 9.1)中的 REG0DIS 位使能 / 禁止
REG0。 REG1 有两种内建节电方式,可以在低功耗应用中帮助减小电流消耗。这些方式通过 REG01CN 寄
存器控制。片内稳压器的电气特性见第 40 页上的表 5.5。
注意:当在 USB 网络中使用 C8051F380/1/2/3/4/5/6/7 器件时,VBUS 信号必须被连到 VBUS 引脚。VBUS
信号只应在器件工作于总线供电方式时被连接到 REGIN 引脚。REG0 的配置选项示于 “4. 典型连接图 ” 图 4.1
~ 图 4.4 中。
9.1. 稳压器 (REG0)
请见 “4. 典型连接图 ” ,用于使用 REG0 稳压器的典型连接图。
9.1.1. 稳压器方式选择
REG0 提供低功耗工作方式,在器件处于挂起方式时使用。在低功耗方式, REG0 输出电压保持正常,但
REG0 的动态性能(响应时间)降低。表 5.5 给出了正常方式和低功耗方式下的电源电流。REG0 方式选择
由寄存器 REG01CN 中的 REG0MD 位控制。
9.1.2. VBUS 检测
当使用 USB 功能控制器时(见第 172 页 21. 节 “ 通用串行总线控制器 (USB0)” ), VBUS 信号应被连接到
VBUS 引脚。 VBSTAT 位 (寄存器 REG01CN)指示 VBUS 信号的当前逻辑电平。在 VBUS 信号的上升沿
或下降沿会产生 VBUS 中断(如果被允许)。 VBUS 中断是边沿敏感的,没有相应的中断请求标志。 VBUS
输入信号参数见表 5.5。
注意:在 USB 被选择为复位源的情况下,当 VBUS 引脚上出现上升沿或下降沿时,会产生系统复位。有关
选择 USB 作为复位源的详细信息,见第 129 页 17. 节 “ 复位源 ” 。
9.2. 稳压器 (REG1)
在缺省条件下,当器件进入停止 (STOP) 方式时内部 REG1 稳压器会保持使能状态。这就允许任何被使能的
复位源产生器件复位并使器件脱离 STOP 方式。为了进一步节省功耗,可以在器件进入 STOP 方式时用
STOPCF 位关断稳压器和器件的内部电源网络。当 STOPCF 位被置 1 时,只有 /RST 引脚和完整的上电过
程擦才能产生器件复位。
REG1 还提供低功耗工作方式,在器件处于挂起方式时使用。在正常工作期间或 REG0 稳压器被禁止时,不
应使用低功耗方式。表 5.5给出了正常方式和低功耗方式下的电源电流。REG1方式选择由寄存器REG01CN
中的 REG1MD 位控制。
注意:在将 REG1 置于低功耗方式之后,至少需经过 12 个时钟周期才能将内部高频振荡器挂起 (OSCICN.5
= 1)。
??? 1.4
74
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 9.1. REG01CN:稳压器控制寄存器
位
7
6
5
4
3
2
1
0
名称
REG0DIS
VBSTAT
保留
REG0MD
STOPCF
保留
REG1MD
保留
类型
R/W
R
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xC9 ; SFR 页 = 所有页
位
7
名称
功能
REG0DIS 稳压器 REG0 禁止。
该位使能或禁止 REG0 稳压器。
0:稳压器使能。
1:稳压器禁止。
6
VBSTAT
VBUS 信号状态。
该位指示器件是否接入一个 USB 网络。
0:当前无 VBUS 信号 (器件未连接到 USB 网络)。
1:当前有 VBUS 信号 (器件连接到 USB 网络)。
5
4
必须写 0b。
保留
REG0MD 稳压器 REG0 方式选择。
该位选择稳压器 REG0 的工作方式。当 REG0MD 被置 1 时, REG0 稳压器工作在低功
耗 (挂起)方式。
0:REG0 稳压器工作在正常方式。
1:REG0 稳压器工作在低功耗方式。
3
STOPCF STOP 方式配置 (REG1)。
该位配置稳压器 REG1 在器件进入 STOP 方式时的行为。
0:REG1 稳压器在 STOP 方式仍然保持使能状态。任何被使能的复位源都能产生器件
复位。
1:REG1 稳压器在 STOP 方式下被关断。只有 /RST 引脚或重新上电才能使器件复位。
2
1
未使用 必须写 0b。
REG1MD 稳压器 REG1 方式选择。
该位选择稳压器 REG0 的工作方式。当 REG1MD 被置 1 时, REG1 稳压器工作在低功
耗方式。
0:REG1 稳压器工作在正常方式。
1:REG1 稳压器工作在低功耗方式。
如果稳压器 REG0 被禁止,则该位不应被置 1。
0
75
保留
必须写 0b。
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
10. 电源管理
C8051F380/1/2/3/4/5/6/7/C 器件有 3 种软件可编程的电源管理方式:空闲、停止和挂起。空闲方式和停止
方式是标准 8051 体系结构的一部分,而挂起方式是由高速振荡器外设实现的一种增强节电方式。
在空闲方式, CPU 停止工作,而外设和时钟处于活动状态。在停止方式, CPU 停止工作,所有中断和定时
器(时钟丢失检测器除外)都不工作,内部振荡器停止(模拟外设保持其所选状态,外部振荡器不受影响)。
从内部振荡器停止运行的角度看,挂起方式类似于停止方式,但器件可以通过 USB 收发器唤醒。如果需要,
CPU 在挂起方式可不停止运行,而用另一个振荡器运行。在空闲方式,因为时钟是运行的,所有功耗取决
于系统时钟频率和进入空闲方式之前处于活动状态和外设数量。停止方式和挂起方式消耗最少的功率,因为
器件的绝大部分电路都因没有时钟而停止运行。SFR 定义 10.1 描述用于控制 C8051F380/1/2/3/4/5/6/7/C 器
件停止和空闲电源管理方式的电源控制寄存器 (PCON)。挂起方式由 OSCICN 寄存器(SFR 定义 19.3)中
的 SUSPEND。
虽然 C8051F380/1/2/3/4/5/6/7/C 器件具有空闲、停止和挂起方式,但根据需要使能 / 禁止每个外设可以进
一步控制器件功耗。生个模拟外设在不使用时都可以被禁止,从而被置于低功耗方式。数字外设如定时器或
串行总线在不使用时消耗很小的功率。关闭振荡器可使功耗显示著降低,但以减少功能为代价。
10.1. 空闲方式
将空闲方式选择位 (PCON.0) 置 1 使硬件停止 CPU 运行并进入空闲方式,在执行完对该位置 1 的指令后
MCU 立即进入空闲方式。所有内部寄存器和存储器都保持原来的数据不变。所有模拟和数字外设在空闲方
式期间都可以保持活动状态。
有被 允许的 中断发 生或有 效复位 将结束 空闲方 式。当有 一个被 允许的 中断发 生时,空 闲方式 选择位
(PCON.0) 被清 0,CPU 将恢复工作。该中断将得到服务,中断返回 (RETI) 后将开始执行设置空闲方式选择
位的那条指令的下一条指令。如果空闲方式因一个内部或外部复位而结束,则 CIP-51 进行正常的复位过程
并从地址 0x0000 开始执行程序。
注意:如果在写 IDLE 位的指令之后是一条单字节指令,并且在将 IDLE 位置 1 的指令的执行阶段发生了中
断,则将来再发生中断时 CPU 可能不会被唤醒。因此,将 IDLE 位置 1 的指令的后面应跟随一条具有 2 或
多字节操作码的指令。例如:
// 用 ‘C’ 语言:
PCON |= 0x01;
PCON = PCON;
; 用汇编语言:
ORL PCON, #01h
MOV PCON, PCON
// 将 IDLE 位置 1
// ... 跟随一条 3 字节操作码的虚指令
; 将 IDLE 位置 1
; ... 跟随一条 3 字节操作码的虚指令
如果被使能,看门狗定时器 (WDT) 将产生一个内部看门狗复位,从而结束空闲方式。这一功能可以保护系
统不会因为对 PCON 寄存器的意外写入而导致永久性停机。如果不需要这种功能,可以在进入空闲方式之
前用软件禁止 WDT (如果 WDT 被初始化为允许该操作)。这将进一步节省功耗,允许系统一直保持在空
闲状态,等待一个外部激励唤醒系统。有关使用和配置 WDT 的详细信息,见第 133 页 17.6. 节 “PCA 看门
狗定时器复位 ” 。
??? 1.4
76
C8051F380/1/2/3/4/5/6/7/C
10.2. 停止方式
将停止方式选择位 (PCON.1) 置 1 使控制器进入停止方式,在执行完对该位置 1 的指令后 MCU 立即进入停
止方式。在停止方式,内部振荡器、CPU 和所有数字外设都停止工作,但外部振荡器电路的状态不受影响。
在进入停止方式之前,每个模拟外设(包括外部振荡器电路)都可以被单独关断。只有内部或外部复位能结
束停止方式。复位时,器件进行正常的复位过程并从地址 0x0000 开始执行程序。
如果被使能,时钟丢失检测器 (MCD) 将产生一个内部复位,从而结束停止方式。如果想要使 CPU 处于停止
方式的时间大于 MCD 超时时间,则应禁止时钟丢失检测器。
在停止方式,在缺少状态下内部稳压器仍然保持使能状态,但也可以将内部稳压器关断以节省功耗。要在停
止方式关断稳压器,应在置位 STOP 位 (见 SFR 定义 9.1)之前将寄存器 REG01CN 中的 STOPCF 位置
1. 如果使用 STOPCF 位将稳压器关断,则只有 RST 引脚或一次上电过程能将器件复位。
10.3. 挂起方式
将 SUSPEND 位 (OSCICN.5) 置 1 使硬件停止高频内部振荡器运行,在执行完对该位置 1 的指令后 MCU 立
即进入挂起方式。所有内部寄存器和存储器都保持原来的数据不变。在挂起方式, CPU 不停止运行,所有
仍可使用高频内部振荡器以外的另一个振荡器执行程序。
USB 数据引脚上的恢复信号或器件复位事件可结束挂起方式。当挂起方式结束时,如果振荡器源是内部高
频振荡器,则器件从置位 SUSPEND 那条指令的下一条指令恢复执行。如果唤醒事件被配置为产生中断,则
该中断在器件唤醒时立即得到服务。如果挂起方式由外部或内部复位结束,则 CIP-51 执行正睥复位过程,
从 0x0000 地址开始执行程序。
77
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 10.1. PCON:电源管理控制寄存器
位
7
6
5
4
3
2
1
0
名称
GF[5:0]
STOP
IDLE
类型
R/W
R/W
R/W
0
0
复位
0
0
0
0
0
0
SFR 地址 = 0x87 ; SFR 页 = 所有页
位
名称
7:2
GF[5:0]
功 能
通用标志 5–0
这些位是受软件控制的通用标志。
1
STOP
停机方式选择
将该位置 1 使 CIP-51 进入停止方式。该位的读出值总是为 0。
1:CPU 进入停止方式 (内部振荡器停止)
0
IDLE
IDLE:空闲方式选择
将该位置 1 使 CIP-51 进入空闲方式。该位的读出值总是为 0。
1:CPU 进入空闲方式。(关闭供给 CPU 的时钟信号,但定时器、中断、串口和模拟
外设仍保持活动状态。)
??? 1.4
78
C8051F380/1/2/3/4/5/6/7/C
79
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
11. CIP-51 微控制器
MCU 系统控制器的内核是 CIP-51 微控制器。 CIP-51 与 MCS-51™ 指令集完全兼容,可以使用标准 803x/
805x 的汇编和编译器进行软件开发。该系列 MCU 的外设是标准 8051 的所有外设的超集。 CIP-51 还包含
片内调试硬件 (详见第 28 章),与模拟和数字子系统直接接口,在一个集成电路内提供了完全的数据采集
或控制系统解决方案。
CIP-51 微控制器内核除了具有标准 8051 的系统结构和外设以外,另有增加的定制外设和功能,大大增强了
它的处理能力 (见图 11.1 的原理框图)。 CIP-51 具有下列特性:

与 MCS-51 指令集完全兼容


峰值速度为 48 MIPS ( 48 MHz 时钟)


0-48 MHz 时钟频率


扩展的中断处理系统

复位输入
电源管理方式
片内调试逻辑
程序和数据存储器安全
性能
CIP-51 采用流水线结构 8051,与标准的 8051 结构相比指令执行速度有很大提高。在一个标准的 8501 中,
除 MUL 和 DIV 以外所有指令都需要 12 或 24 个系统时钟周期,并且通常最大系统时钟频率为 12 MHz。 而
对于 CIP-51 内核,70% 的指令的执行时间为 1 或 2 个系统时钟周期,没有执行时间超过 8 个系统时钟周期
的指令。
D8
D8
累加 器 ACC
堆 栈指 针 SP
T MP 2
P SW
D8
D8
ALU
S RA M
地址
寄存器
SRA M
(256 X 8)
D8
TM P1
D8
数据总 线
B 寄存 器
D8
D8
D8
数 据总线
数 据总线
SF R 地 址
缓 冲 器
D8
D8
数据 指针
D8
S FR
总线
接口
SF R 控 制
S F R 写数 据
S F R 读数 据
P C 增 量器
存 储器地 址
D8
数据 总线
程 序计 数器
程序 地址 寄存器
存 储器控 制
A16
存储器
接 口
存储 器写数 据
存储 器读数 据
流 水线
复位
D8
控制
逻辑
系统中 断
时钟
中断 接口
D8
停机
空闲
电源 控制
寄 存 器
仿真中 断
D8
图 11.1. CIP-51 原理框图
CIP-51 工作在量大系统时钟频率 48 MHz 时,它的峰值速度达到 48 MIPS。CIP-51 共有 11 条指令。下表列
出了各种指令执行时间所对应的指令条数。
??? 1.4
79
C8051F380/1/2/3/4/5/6/7/C
执行周期数
1
2
2/4
3
3/5
4
5
4/6
6
8
指令数
26
50
5
10
6
5
2
2
2
1
编程和调试支持
对 Flash 程度存储器的在系统编程和与片内调试支持逻辑的通信是通过 Silicon Labs 2 线开发接口 (C2) 实现
的。
片内调试逻辑支持全速的在系统调试,允许设置硬件断点,支持开始、停止和单步执行 (包括中断服务程
序)命令,支持检查程序调用堆栈及读 / 写寄存器和存储器。这种片内调试方式完全是非侵入式的,不需要
占用 RAM、推栈、定时器或其它片内资源。有关 C2 接口的详细信息见第 316 页 28. 节 “C2 接口 ” 。
CIP-51 有 Silicon Labs 和第三方供应商的开发工具支持。 Silicon Labs 提供一个集成开发环境 (IDE),包括
编辑器、调试器和编辑器。 IDE 的调试器和编辑器与 CIP-51 之间的 C2 接口连接,提供快速和有效的在系
统编程和调试。也有第三方的宏汇编器和 C 编译器可用。
11.1. 指令集
CIP-51 系统控制器的指令集与标准 MCS-51™ 指令集完全兼容,可以使用标准 8051 的开发工具开发 CIP51 的软件。所有的 CIP-51 指令在二进制码 MCS-51™ 产品完全相同,包括操作码、寻址方式和对 PSW 标
志的影响,但是指令时序与标准 8051 不同。
11.1.1. 指令和 CPU 时序
在很多 8051 实现方案中,机器周期和时钟周期是不同的,机器周期的长度在 2 到 12 个时钟周期之间。但
是 CIP-51 只基于时钟周期,所有指令时序都以时钟周期计算。
由于 CIP-51 采用了流水线结构,大多数指令执行所需的时钟周期数与指令的字节数一致。条件转移指令在
不发生转移时的执行周期数比发生转换时少 1 个。表 11.1 给出了所有 CIP-51 指令一览表,包括每条指令的
助记符、字节数和时钟周期数。
80
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表 11.1. CIP-51 指令集一览表
助记符
功能说明
字节数
时钟周期
数
算术操作类指令
ADD A, Rn
ADD A, direct
ADD A, @Ri
ADD A, #data
ADDC A, Rn
ADDC A, direct
ADDC A, @Ri
ADDC A, #data
SUBB A, Rn
SUBB A, direct
SUBB A, @Ri
SUBB A, #data
INC A
INC Rn
INC direct
INC @Ri
DEC A
DEC Rn
DEC direct
DEC @Ri
INC DPTR
MUL AB
DIV AB
DA A
寄存器加到累加器
直接寻址字节加到累加器
间址 RAM 内容加到累加器
立即数加到累加器
寄存器加到累加器 (带进位)
直接寻址字节加到累加器 (带进位)
间址 RAM 加到累加器 (带进位)
立即数加到累加器 (带进位)
累加器减去寄存器 (带借位)
累加器减去直接寻址字节 (带借位)
累加器减去间址 RAM (带借位)
累加器减去立即数 (带借位)
累加器加 1
寄存器加 1
直接寻址字节加 1
间址 RAM 加 1
累加器减 1
寄存器减 1
直接寻址字节减 1
间址 RAM 减 1
数据指针加 1
累加器与寄存器 B 相乘
累加器除以寄存器 B
累加器十进制调整
1
2
1
2
1
2
1
2
1
2
1
2
1
1
2
1
1
1
2
1
1
1
1
1
1
2
2
2
1
2
2
2
1
2
2
2
1
1
2
2
1
1
2
2
1
4
8
1
逻辑操作类指令
ANL A, Rn
ANL A, direct
ANL A, @Ri
ANL A, #data
ANL direct, A
ANL direct, #data
ORL A, Rn
ORL A, direct
ORL A, @Ri
ORL A, #data
ORL direct, A
ORL direct, #data
XRL A, Rn
XRL A, direct
XRL A, @Ri
XRL A, #data
XRL direct, A
寄存器 “ 与 ” 到累加器
直接寻址字节 “ 与 ” 到累加器
间址 RAM“ 与 ” 到累加器
立即数 “ 与 ” 到累加器
累加器 “ 与 ” 到直接寻址字节
立即数 “ 与 ” 到直接寻址字节
寄存器 “ 或 ” 到累加器
直接寻址字节 “ 或 ” 到累加器
间址 RAM“ 或 ” 到累加器
立即数 “ 或 ” 到累加器
累加器 “ 或 ” 到直接寻址字节
立即数 “ 或 ” 到直接寻址字节
寄存器 “ 异或 ” 到累加器
直接寻址字节 “ 异或 ” 到累加器
间址 RAM“ 异或 ” 到累加器
立即数 “ 异或 ” 到累加器
累加器 “ 异或 ” 到直接寻址字节
1
2
1
2
2
3
1
2
1
2
2
3
1
2
1
2
2
1
2
2
2
2
3
1
2
2
2
2
3
1
2
2
2
2
??? 1.4
81
C8051F380/1/2/3/4/5/6/7/C
表 11.1. CIP-51 指令集一览表 (Continued)
助记符
功能说明
XRL direct, #data
CLR A
CPL A
RL A
RLC A
RR A
RRC A
SWAP A
立即数 “ 异或 ” 到直接寻址字节
累加数清零
累加器求反
累加器循环左移
带进位的累加器循环左移
累加器循环右器
带进位的累加器循环右移
累加器内高低半字节交换
3
1
1
1
1
1
1
1
时钟周期
数
3
1
1
1
1
1
1
1
数据传送类指令
MOV A, Rn
MOV A, direct
MOV A, @Ri
MOV A, #data
MOV Rn, A
MOV Rn, direct
MOV Rn, #data
MOV direct, A
MOV direct, Rn
MOV direct, direct
MOV direct, @Ri
MOV direct, #data
MOV @Ri, A
MOV @Ri, direct
MOV @Ri, #data
MOV DPTR, #data16
MOVC A, @A+DPTR
MOVC A, @A+PC
MOVX A, @Ri
MOVX @Ri, A
MOVX A, @DPTR
MOVX @DPTR, A
PUSH direct
POP direct
XCH A, Rn
XCH A, direct
XCH A, @Ri
XCHD A, @Ri
寄存器传送到累加器
直接寻址字节传送到累加器
间址 RAM 传送到累加器
立即数传送到累加器
累加器传送到寄存器
直接寻址字节传送到寄存器
立即数传送到寄存器
累加器传送到直接寻址字节
寄存器传送到直接寻址字节
直接寻址字节传送到直接寻址字节
间址 RAM 传送到直接寻址字节
立即数传送到直接寻址字节
累加器传送到间址 RAM
直接寻址字节传送到间址 RAM
立即数传送到间址 RAM
16 位常数装入 DPTR
相对于 DPTR 的代码字节传送到累加器
相对于 PC 的代码字节传送到累加器
外部 RAM (8 位地址)传送到累加器
累加器传到外部 RAM (8 位地址)
外部 RAM (16 位地址)传送到累加器
累加器传到外部 RAM (16 位地址)
直接寻址字节压入栈顶
栈顶数据弹出到直接寻址字节
寄存器和累加器交换
直接寻址字节与累加器交换
间接 RAM 与累加器交换
间址 RAM 和累加器交换低半字节
1
2
1
2
1
2
2
2
2
3
2
3
1
2
2
3
1
1
1
1
1
1
2
2
1
2
1
1
1
2
2
2
1
2
2
2
2
3
2
3
2
2
2
3
3
3
3
3
3
3
2
2
1
2
2
2
位操作类指令
CLR C
CLR bit
SETB C
SETB bit
CPL C
CPL bit
清进位位
清直接寻址位
进位位置 1
直接寻址位置位
进位位取反
直接寻址位取反
1
2
1
2
1
2
1
2
1
2
1
2
82
??? 1.4
字节数
C8051F380/1/2/3/4/5/6/7/C
表 11.1. CIP-51 指令集一览表 (Continued)
助记符
ANL C, bit
ANL C, /bit
ORL C, bit
ORL C, /bit
MOV C, bit
MOV bit, C
功能说明
直接寻址位 “ 与 ” 到进位位
直接寻址位的反码 “ 与 ” 到进位位
直接寻址位 “ 或 ” 到进位位
直接寻址位的反码 “ 或 ” 到进位位
直接寻址位传送到进位位
进位位传送到直接寻址位
字节数
2
2
2
2
2
2
时钟周期
数
2
2
2
2
2
2
程序流控制类指令
所列时间为 PFE 使能和 FLRT = 0 的情况。如果 FLRT = 1,则转换需额外加一个周期。
JC rel
2
若进位位为 1 则跳转
JNC rel
2
若进位位为零则跳转
JB bit, rel
3
若直接寻址位为 1 则跳转
JNB bit, rel
3
若直接寻址位为 0 则跳转
JBC bit, rel
3
若直接寻址位 1 则跳转,并清除该位
ACALL addr11
2
绝对调用子程序
LCALL addr16
3
长调用子程序
RET
1
从子程序返回
RETI
1
从中断返回
AJMP addr11
2
绝对跳转
LJMP addr16
3
长跳转
SJMP rel
2
短跳转 (相对地址)
JMP @A+DPTR
1
相对 DPTR 的间接跳转
JZ rel
2
累加器为 0 则跳转
JNZ rel
2
累加器为非 0 则跳转
CJNE A, direct, rel
3
比较直接寻址字节与累加器,不相等则跳转
CJNE A, #data, rel
3
比较立即数与累加器,不相等则跳转
CJNE Rn, #data, rel
3
比较立即数与寄存器,不相等则跳转
CJNE @Ri, #data, rel
3
比较立即数与间接寻址 RAM,不相等则跳转
DJNZ Rn, rel
2
寄存器减 1,不为零则跳转
DJNZ direct, rel
3
直接寻址字节减 1,不为零则跳转
NOP
1
空操作
??? 1.4
2/4
2/4
3/5
3/5
3/5
4
5
6
6
4
5
4
4
2/4
2/4
4/6
3/5
3/5
4/6
2/4
3/5
1
83
C8051F380/1/2/3/4/5/6/7/C
寄存器、操作数和寻址方式说明 :
Rn - 当前选择的寄存器区的寄存器 R0–R7。
@Ri - 通过寄存器 R0 或 R1 间接寻址的数据 RAM。
rel - 相对于下一条指令第一个字节的 8 位有符号 (2 的补码)偏移量。 SJMP 和所有条件转移指令使
用。
direct - 8 位内部数据存储器地址。可以是直接访问数据 RAM 地址 (0x00–0x7F) 或一个 SFR 地址
(0x80–0xFF)。
#data - 8 位常数
#data16 - 16 位常数
bit - 数据 RAM 或 SFR 中的直接寻址位
addr11 - ACALL 和 AJMP 使用的 11 位目的地址。目的地址必须与下一条指令第一个字节处于同一个
2K 字节的程序存储器页。
addr16 - LCALL 和 LJMP 使用的 16 位目的地址。目的地址可以是 64KB 程序存储器空间内的任何位
置。
有一个未使用的操作码 (0xA5),它执行与 NOP 指令相同的功能。
所有助记符归 Intel Corporation 1980 版权所有。
84
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
11.2. CIP-51 寄存器说明
下面对与 CIP-51 系统控制器操作有关的 SFR 进行说明。保留位应被设置为 SFR 定义中指定的值。将来的
产品版本可能会使用这些位实现新功能,在这种情况下各位的复位值将是 SFR 定义中的指定值,以选择缺
少状态。有关其它 STR 的详细说明见本数据表中与它们对应的系统功能相关的章节。
SFR 定义 11.1. DPL:数据指针低字节
位
7
6
5
4
名称
DPL[7:0]
类型
R/W
复位
0
0
0
0
3
2
1
0
0
0
0
0
SFR 地址 = 0x82 ; SFR 页 = 所有页
位
名称
7:0
DPL[7:0]
功能
数据指针低字节。
DPL 为 16 位数据指针 DPTR 的低字节。 DPTR 用于访问间接寻址的 FLASH 存储器
和 XRAM。
SFR 定义 11.2. DPH:数据指针高字节
位
7
6
5
4
名称
DPH[7:0]
类型
R/W
复位
0
0
0
0
3
2
1
0
0
0
0
0
SFR 地址 = 0x83 ; SFR 页 = 所有页
位
名称
7:0
DPH[7:0]
功能
数据指针高字节。
DPH 为 16 位数据指针 DPTR 的高字节。 DPTR 用于访问间接寻址的 FLASH 存储器
和 XRAM。
??? 1.4
85
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 11.3. SP:堆栈指针
位
7
6
5
4
名称
SP[7:0]
类型
R/W
复位
0
0
0
0
3
2
1
0
0
1
1
1
SFR 地址 = 0x81 ; SFR 页 = 所有页
位
名称
功能
7:0
SP[7:0]
堆栈指针。
堆栈指针保持栈顶位置。在每次执行 PUSH 操作前,堆栈指针加 1。 SP 寄存器复位
后的默认值为 0x07。
SFR 定义 11.4. ACC:累加器
位
7
6
5
4
名称
ACC[7:0]
类型
R/W
复位
0
0
0
0
3
2
1
0
0
0
0
0
3
2
1
0
0
0
0
0
SFR 地址 = 0xE0 ; SFR 页 = 所有页;可位寻址
位
名称
7:0
ACC[7:0]
功能
累加器。
该寄存器为算术操作用的累加器。
SFR 定义 11.5. B:B 寄存器
位
7
6
5
4
名称
B[7:0]
类型
R/W
复位
0
0
0
0
SFR 地址 = 0xF0 ; SFR 页 = 所有页;可位寻址
位
名称
7:0
B[7:0]
功能
B 寄存器。
该寄存器为某些算术操作的第二累加器。
86
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 11.6. PSW:程序状态字
位
7
6
5
名称
CY
AC
F0
类型
R/W
R/W
R/W
复位
0
0
0
4
3
2
1
0
RS[1:0]
OV
F1
PARITY
R/W
R/W
R/W
R
0
0
0
0
0
SFR 地址 = 0xD0 ; SFR 页 = 所有页;可位寻址
位
名称
功能
7
CY
进位标志。
当最后一次算术操作产生进位 (加法)或借位 (减法)时,该位置 1。其它算术操作
将其清 0。
6
AC
辅助进位标志。
当最后一次算术操作向高半字节有进位 (加法)或借位 (减法)时,该位置 1。其它
算术操作将其清 0。
5
F0
用户标志 0。
这是一个可位寻址、受软件控制的通用标志位。
4:3
RS[1:0]
寄存器区选择。
该两位选择访问寄存器时所使用的寄存器区。
00:0 区,地址为 0x00-0x07。
01:1 区,地址为 0x08-0x0F。
10:2 区,地址为 0x10-0x17。
11:3 区,地址为 0x18-0x1F。
2
OV
溢出标志。
该位的下列情况下被置 1:
ADD,
ADDC 或 SUBB 指令引起符号位变化溢出。
指令引出溢出 ( 结果大于 255)。
DIV 指令的除数为 0。
MUL
ADD、ADDC、 SUBB、MUL 和 DIV 指令的所有其它情况使该位清 0。
1
F1
用户标志 1。
这是一个可位寻址、受软件控制的通用标志位。
0
PARITY
奇偶标志。
累加器中 8 个位的和为奇数时该位被置 1,为偶数时被清 0。
??? 1.4
87
C8051F380/1/2/3/4/5/6/7/C
88
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
12. 指令预取引擎
C8051F380/1/2/3/4/5/6/7/C 系统器件包含一个 2 字节指令预取引擎。由于 FLASH 存储器的访问时间是 40ns,
而最短指令执行时间约为 20ns,所以需要有预取引擎才能使程序全速执行。预取引擎每次从 FLASH 存储器
读取 2 个指令字节,送给 CIP-51 处理器核执行。当运行线性代码时 (程序没有任何转移),预取引擎使程
序能全速执行。当程序发生转移时处理器可能停止一到两个时钟周期,等待下一组代码字节从 FLASH 存储
器读出。 FLRT 位 (FLSCL.4)决定从 FLASH 中读一组代码字节 (两字节)所用的时钟周期数。当系统时
钟为 25MHz 或更低时, FLRT 位应被清 0,使预取引擎的每次读操作只用一个时钟周期。当系统时钟为
25MHz (最大 48MHz)时, FLRT 位应被置 1,使预取引擎的每次读操作使用两个时钟周期。
注意: 为了节约用电,当设备处于暂停模式时,可以禁用预取引擎。
SFR 定义 12.1. PFE0CN:预取引擎控制寄存器
位
7
6
5
4
3
2
1
PFEN
名称
0
FLBWE
类型
R
R
R/W
R
R
R
R
R/W
复位
0
0
1
0
0
0
0
0
SFR 地址 = 0xAF ; SFR 页 = 所有页
位
名称
7:6
未使用
PFEN
5
功 能
读 = 00b,写 = 忽略。
预取使能位。
该位使能预取引擎。
0:禁止预取引擎。
1:使能预取引擎。
4:1
0
未使用
FLBWE
读 = 0000b. 写 = 忽略。
Flash 块写使能位。
该位允许软件对 FLASH 存储器执行块写操作。
0:软件 FLASH 写操作的每个字节都被单独写入。
1:FLASH 字节按 2 字节为一组写入。
??? 1.4
88
C8051F380/1/2/3/4/5/6/7/C
89
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
13. 存储器组织
CIP-51 系统控制器的存储器组织与标准 8051 类似。有两个独立的存储器空间:程序存储器和数据存储器。
程序和数据存储器共享同一个地址空间,但用不同的指令类型访问。 C8041F380/1/2/3/4/5/6/7 器件的存储
器组织如图 13.1 和图 13.2 所示。
数据存储器 (RAM)
内部数据地址空间
程序/数据存储器(FLASH)
0xFFFF
0xFC00
保留
0xFBFF
0xFF
高 128 RAM
(只能间接寻址 )
特殊功能寄存器
(只能直接寻址)
0x80
0x7F
(直接和间接寻址 )
FLASH
0x30
0x2F
(在系统可编程,
扇区尺寸为512字节)
0x20
0x1F
0x00
位寻址空间
低128 RAM
(直接和间接寻址)
通用寄存器
外部数据地址空间
0x0000
0xFFFF
片外 XRAM
(仅限具有 EMIF的器件)
0x1000
0x0FFF
XRAM - 4096 字节
(用MOVX指令访问 )
USB FIFO
1024 字节
0x07FF
0x0400
0x0000
图 13.1. 64 kB 器件 (C8051F380/1/4/5) 存储器组织图
??? 1.4
89
C8051F380/1/2/3/4/5/6/7/C
数据存储器 (RAM)
内部数据地址空间
程序/数据存储器(FLASH)
0xFF
0x7FFF
高 128 RAM
(只能间接寻址 )
FLASH
0x80
0x7F
(在系统可编程,
扇区尺寸为512字节)
(直接和间接寻址 )
0x30
0x2F
0x0000
特殊功能寄存器
(只能直接寻址)
0x20
0x1F
0x00
位寻址空间
低128 RAM
(直接和间接寻址)
通用寄存器
外部数据地址空间
0xFFFF
片外 XRAM
(仅限具有 EMIF的器件)
0x0800
0x07FF
XRAM - 2048 字节
USB FIFO
1024 字节
(用MOVX指令访问 )
0x0000
图 13.2. 32 kB 器件 (C8051F382/3/6/7) 存储器组织图
90
??? 1.4
0x07FF
0x0400
C8051F380/1/2/3/4/5/6/7/C
数据存储器 (RAM)
内部数据地址空间
程序/数据存储器(FLASH)
0xFF
0x7FFF
特殊功能寄存器
(只能直接寻址)
0x80
0x7F
FLASH
(在系统可编程,
扇区尺寸为512字节)
(直接和间接寻址)
0x30
0x2F
0x0000
高 128 RAM
(只能间接寻址)
0x20
0x1F
0x00
位寻址空间
低128 RAM
(直接和间接寻址)
通用寄存器
外部数据地址空间
0xFFFF
片外 XRAM
(仅限具有 EMIF的器件)
0x0800
0x07FF
XRAM - 2048 字节
(用MOVX指令访问)
USB FIFO
1024 字节
0x07FF
0x0400
0x0000
图 13.3. 16 kB 器件 (C8051F38C) 存储器组织图
13.1. 程序存储器
CIP-51 有 64KB 的程序存储器空间。 C8051F380/1/2/3/4/5/6/7/C 采用 64 kB、 32 kB 或 16 kB 的程序内存
空间作为系统内可再编程的闪存。注意:在 C8051F380/1/4/5 (64 kB 器件 ) 中,0xFBFF 以上的地址被保留。
程序存储器通常被认为是只读的。但是 CIP-51 可以通过置 1 程序存储写允许位 (PSCTL.0) 允许用 MOVX 指
令对程序存储器写入。这一特性为 CIP-51 提供了更新程序代码和将程序存储器空间用于非易失性数据存储
的机制。更详细的信息见第 135 页 18. 节 “Flash 存储器 ” 。
13.2. 数据存储器
CIP-51 包含 256 字节的内部 RAM,映射到 8051 的数据存储器空间 0x00~0xFF。数据存储器中的低 128 字
节用于通用寄存器和临时存储器。可以用直接或间接寻址方式访问数据存储器的低 128 字节。从 128 字节
用于通用寄存器和临时存储器。可以用直接或间接寻址方式访问数据存储器的低 128 字节。从 0x00 到 0x1F
为 4 个通用寄存器区,每个区有 8 个 8 位寄存器。接下来的 16 字节,从地址 0x20 到 0x2F, 既可以按字节
寻址又可以作为 128 个位地址用直接寻址方式访问。
??? 1.4
91
C8051F380/1/2/3/4/5/6/7/C
数据存储器中的高 128 字节只能用间接寻址访问。该存储区与特殊功能寄存器 (SFR)占据相同的地址空
间,但物理上与 SFR 空间是分开的。当寻址高于 0x7F 的地址时,指令所用的寻址方式决定了 CPU 是访问
数据存储器的高 128 字节还是访问 SFR。使用直接寻址方式的指令将访问 SFR 空间,间接寻址高于 0x7F
地址的指令将访问数据存储器的高 128 字节。图 13.1 给出了 CIP-51 数据存储器组织的示意图。
13.3. 通用寄存器
数据存储器的低 32 字节,从地址 0x00 到 0x1F,可以作为 4 个通用寄存器区访问。每个区有 8 个 8 位寄存
器,称为 R0-R7。在某一时刻只能选择一个寄存器区。程序状态字中的 RS0 (PSW.3) 和 RS1 (PSW.4) 位用
于选择当前的寄存器区 (见 SFR 定义 11.6 中 PSW 的说明)。这允许在进入子程序或中断服务程序时进行
快速现场切换。间接寻址方式使用 R0 和 R1 作为间址寄存器。
13.4. 位寻址空间
除了直接访问按字节组织的数据存储器我,从 0x20 到 0x2F 的 16 个数据存储器单元还可以作为 128 个独立
寻址位访问。每个位有一个位地址,从 0x00 到 0x7F。位于地址 0x20 的数据字节的位 0 具有位地址 0x00,
位于 0x20 的数据字节的位 7 具有位地址 0x07。位于 0x2F 的数据字节的位 7 具有位地址 0x7F。由所用指
令的类型来区分是位寻址还是字节寻址。
MCS-51™ 汇编语言允许用 XX.B 的形式替代位地址, XX 为字节地址,B 为寻址位在字节中的位置。例如,
指令:
MOV
C, 22h.3
uqf 0x13 中的布尔值 (字节地址 0x22 中的位 3)传送到进位标志。
13.5. 堆栈
程序的堆栈可以位于 256 字节数据存储器中的任何位置。堆栈区域由堆栈指针 (SP) SFR 指定。SP 指向最后
使用的位置。下一个压入堆栈的数据将被存放在 SP+1,然后 SP 加 1。复位后堆栈指针被初始化为地址 0x07,
因此第一个被压入堆栈的数据将被存放在地址 0x08,这也是寄存器区 1 的第一个寄存器 (R0)。如果使用不止
一个寄存器区, SP 应被初始化为数据存储器中不用于数据存储的位置。堆栈深度最大可达 256 字节。
92
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
14. 外部数据存储器接口和片内 XRAM
器件 内部有 4 kB (C8051F380/1/4/5) 或 2 kB (C8051F382/3/6/7) 映射 到外部 数据存 储器空 间的 RAM
(XRAM)。 1 kB 的 USB FIFO 也可以被映射到 XRAM 地址空间,作为额外的通用数据存储器使用。另外,
C8051F380/2/4/6 器件还有可用于访问连接到 GPIO 端口的片外存储器和存储器映射器件的外部存储器接口
(EMIF)。外部存储器空间可以用外部传送指令 (MOVX) 和数据指针 (DPTR) 访问,或者通过使用 R0 或 R1
用间接寻址方式访问。如果 MOVX 指令使用一个 8 位地址操作数 (例如 @R1),则 16 位地址的高字节由
外部存储器接口控制寄存器 (EMI0CN,见 SFR 定义 14.1)提供。注意:MOVX 指令还用于写 FLASH 存
储器,详见第 135 页 18. 节 “Flash 存储器 ” 。缺省情况下 MOVX 指令访问 XRAM。
14.1. 访问 XRAM
XRAM 存储器空间用 MOVX 指令访问。 MOVX 指令有两种形式,这两种形式都使用间接寻址方式。第一种
方法使用数据指针 DPTR,该 16 位寄存器中含有待读或写的 XRAM 单元的实际地址。第二种方法使用 R0
或 R1,与 EMI0CN 寄存器一起形成实际 XRAM 地址。下面举例说明这两种方法。
14.1.1. 16 位 MOVX 示例
16 位形式的 MOVX 指令访问由 DPTR 寄存器的内容所指向的存储器单元。下面的指令将地址 0x1234 的内
容读入累加器 A:
MOV
MOVX
DPTR, #1234h
A, @DPTR
;将待读单元的 16 位地址 (0x1234) 装入 DPTR
;将地址 0x1234 的内容装入累加器 A
上面的例子使用 16 位立即数 MOV 指令设置 DPTR 的内容。还可以通过访问特殊功能寄存器 DPH(DPTR 的
高 8 位)和 (DPTR 的低 8 位 ) 来改变 DPTR 的内容。
14.1.2. 8 位 MOVX 示例
8 位形式的 MOVX 指令使用特殊功能寄存器 EMI0CN 的内容给出待访地址的高 8 位,由 R0 或 R1 的内容给
出待访问地址的低 8 位。下面的指令将地址 0x1234 的内容读入累加器 A:
MOV
MOV
MOVX
EMI0CN, #12h
R0, #34h
a, @R0
;将地址的高字节装入 EMI0CN
;将地址的低字节装入 R0 ( 或 R1)
;将地址 0x1234 的内容装入累加器 A
??? 1.4
93
C8051F380/1/2/3/4/5/6/7/C
14.2. 访问 USB FIFO 空间
C8051F380/1/2/3/4/5/6/7/C 内容包含 1KB 的 RAM 作为 USB FIFO 空间。图 14.1 给出了 FIFO 空间和用户
XRAM的扩展示意图。FIFO空间一般通过USB FIFO寄存器访问。有关访问FIFO空间的详细信息见第 181 页
21.5. 节 “FIFO 管理 ” 。不应使用 MOVX 指令装载或修改位于 FIFO 空间的 USB 数据。
如果需要, FIFO 空间中未使用的区域可被用作通用 XRAM。 FIFO 存储块工作在 USB 时钟域,因此在访问
FIFO 空间时,USB 时钟必须处于活动状态。注意:在访问 USB FIFO 空间时,MOVX 指令所需要的 SYSCLK
周期数增加。
若要用 MOVX 指令直接访问 FIFO RAM,则必须满足下述条件:1) 寄存器 EMI0CF 中的 USBFAE 位必须被
置 1 ; 2) USB 时钟必须大于或等于 SYSCLK 的 2 倍 (USBCLK > 2 x SYSCLK)。当该位被置 1 时, USB
FIFO 被映射到 XRAM 空间的 0x0400-0x07FF。在 USBFAE 位被置 1 时,位于相同地址的一般 RAM (片
内或片外)不能被访问。
注意:在访问 FIFO 空间时, USB 时钟必须处于活动状态。
0xFFFF
片内 /片外 XRAM
0x0800
0x07FF
0x07C0
0x07B F
0x0740
0 x07 3F
端点0
(64 字节)
端点1
(1 28字节)
端点2
(2 56字节)
US B FIFO 空间
0x0640
0 x06 3F
(US B时 钟域)
端点3
(5 12字节)
0x0440
0 x04 3F
0x0400
0x03FF
未使用
(64 字节)
片内 /片外 XRAM
0x0000
图 14.1. USB FIFO 空间和 XRAM 存储器映射 (USBFAE=‘1’)
94
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
14.3. 配置外部存储器接口
配置外部存储器接口的过程包括下面 5 个步骤 :
1. 配置相应端口引脚的输出方式为推挽或漏极开路 (最常用的推挽方式),并在交叉开关中跳过这些引
脚。
2. 配置对应 EMIF 引脚的端口锁存器为休眠态 (通常将它们设置为逻辑 1)。
3. 选择复用方式或非复用方式。
4. 选择存储器模式 (只用片内存储器、不带块选择的分割方式、带块选择的分割方式或只用片外存储器)
5. 设置与片外存储器或外设接口的时序。
下面将对上述 5 个步骤作出详细说明。端口选择、复用方式选择和存储器模式位都位于 EMI0CF 寄存器中,
见 SFR 定义 14.5。
14.4. 端口配置
访问片外存储器时,外部存储器接口位于端口 4、 3、 2 和 1。使用 EMIF 时,应使用 P1SKIP 寄存器将交叉
开关配置为跳过控制线 P1.7 (WR)、P1.6 (RD) 和 P1.3 (ALE,如果选择复用方式 )。有关配置交叉开关的详
细信息,见第 153 页 图 20.1. 节 “ 端口 I/O 功能框图 (端口 0- 端口 3) ” 。
外部存储器接口只在执行片外 MOVX 指令期间使用相关的端口引脚。一旦 MOVX 指令执行完毕,端口锁存
器或交叉开关重新恢复对端口引脚的控制。有关交叉开关及端口操作和控制的详细信息见第 153 页 20. 节 “
端口输入 / 输出 ” 。端口锁存器应被显式配置为使外部存储器接口引脚处于休眠状态,通常将它们设置为逻
辑 1。
在执行 MOVX 指令期间,外部存储器接口将禁止所有作为输入的那些端口引脚的驱动器 (例如,读操作期
间的 Data[7:0])。端口引脚的输出方式(无论引脚被配置为漏极开路或是推挽方式)不受外部存储器接口操
作的影响,始终受 PnMDOUT 寄存器的控制。在大多数情况下,所有 EMIF 引脚的输出方式都应被配置为推
挽方式。
??? 1.4
95
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 14.1. EMI0CN:外部存储器接口控制寄存器
位
7
6
5
4
3
名称
PGSEL[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xAA ; SFR 页 = 所有页
位
名称
7:0
PGSEL[7:0]
功能
XRAM 页选择位。
当使用 8 位的 MOVX 命令时, XRAM 页选择拉提供 16 位外部数据存储器地址的高
字节,实际上是选择一个 256 字节的 RAM 页。
0x00:0x0000 to 0x00FF
0x01:0x0100 to 0x01FF
...
0xFE:0xFE00 to 0xFEFF
0xFF:0xFF00 to 0xFFFF
96
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 14.2. EMI0CF:外部存储器接口配置寄存器
位
7
6
5
USBFAE
名称
4
3
2
1
0
EMD2
EMD[1:0]
EALE[1:0]
R/W
R/W
类型
R
R/W
R
R/W
复位
0
0
0
0
0
0
1
1
SFR 地址 = 0x85 ; SFR 页 = 所有页
位
7
6
名称
未使用
USBFAE
功能
读 = 0b ;写 = 忽略。
USB FIFO 访问使能。
0:不能用 MOVX 指令访问 USB FIFO RAM。
1:可以用 MOVX 指令访问 USB FIFO RAM。 1k 的 USB RAM 被映射到 XRAM 空
间的 0x0400-0x07FF。在用 MOVX 指令访问该区域时, USB 时钟必须处于活动状
态,并且必须大于或等用于 SYSCLK 的 2 倍 (USBCLK > 2 x SYSCLK) 。
5
4
未使用
EMD2
读 = 0b ;读 = 忽略。
EMIF 复用方式选择位。
0:EMIF 工作地址 / 数据复用方式。
1:EMIF 工作在非复用方式 (独立的地址和数据引脚)。
3:2
EMD[1:0]
EMIF 工作模式选择位。
这两位控制外部存储器接口的工作模式。
00:只用内部存储器。 MOVX 只寻址片内 XRAM。所有有效地址都指向片内存储
器空间。
01:不带块选择的分割方式。寻址低于片内 XRAM 边界的地址时访问片存储器,
寻址高于片内 XRAM 边界的地址时访问片外存储器。 8 位片外 MOVX 操作使用地
址高端口锁存器的当前内容作为地址的高字节。注意:为了能访问片外存储器空
间, EMI0CN 必须被设置成一个不属于片内地址空间的页地址。
10:带块选择的分割方式。寻址低于片内 XRAM 边界的地址时访问片内存储器,
寻址高于片内 XRAM 边界的地址时访问片外存储器。 8 位片外 MOVX 操作使用
EMI0CN 的内容作为地址的高字节。
11:只用外部存储器。MOVX 只寻址片外 XRAM。片内 XRAM 对 CPU 为不可见。
1:0
EALE[1:0]
ALE 脉冲宽度选择位 ( 只有 EMD2 = 0 时有效 )。
00:ALE 高和 ALE 低脉冲宽度 = 1 个 SYSCLK 周期。
01:ALE 高和 ALE 低脉冲宽度 = 2 个 SYSCLK 周期。
10:ALE 高和 ALE 低脉冲宽度 = 3 个 SYSCLK 周期。
11:ALE 高和 ALE 低脉冲宽度 = 4 个 SYSCLK 周期。
??? 1.4
97
C8051F380/1/2/3/4/5/6/7/C
14.5. 复用和非复用选择
外部存储器接口可以工作在复用方式或非复用方式,由 EMD2 位 (EMI0CF.4) 的状态决定。
14.5.1. 复用方式配置
在复用方式,数据总线和地址总线的低 8 位共享相同的端口引脚:AD[7:0]。在该方式下,要用一个外部锁
存器 (74HC373 或相同功能的逻辑门 ) 保持 RAM 地址的低 8 位。外部锁存器由 ALE ( 地址锁存使能 ) 信号
控制, ALE 信号由外部存储器接口逻辑驱动。图 14.2 给出了复用方式配置的一个例子。
在复用方式,可以根据 ALE 信号的状态将外部 MOVX 操作分成两个阶段。在第一阶段, ALE 为高电平,地
址总线的低 8 位出现在 AD[7:0]。在该阶段,地址锁存器的 ‘Q’ 输出直接反映 ‘D’ 输入的状态。ALE 由高变低
时标志第二阶段开始,地址锁存器的输出保持不变,即与锁存器的输入无关。在第二阶段后期,当 RD 或
WR 有效时,数据总线控制 AD[7:0] 端口的状态。
更详细的信息见第 107 页 14.7.2. 节 “ 复用方式 ” 。
A[15:8]
地址总线
A[15:8 ]
74HC373
E
M
I
F
G
ALE
AD[7 :0]
地址/数据总线
D
Q
A[7:0]
V DD
64K X 8
SRAM
(可选)
8
I/O[7:0]
CE
WE
OE
/WR
/RD
图 14.2. 复用方式配置示例
14.5.2. 非复用方式配置
在非复用方式,数据总线和地址总线是分开的。图 14.3 给出了非复用方式配置的一个例子。关于非复用方
式操作的更详细的信息见第 104 页 14.7.1. 节 “ 非复用方式 ” 。
98
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
E
M
I
F
A[15:0]
地址总线
A[15:0]
V DD
(可选)
8
D[7:0]
数据总线
64K X 8
SRAM
I/O[7:0]
CE
WE
OE
/WR
/RD
图 14.3. 非复用方式配置示例
??? 1.4
99
C8051F380/1/2/3/4/5/6/7/C
14.6. 存储器模式选择
可以用 EMI0CF 寄存器(SFR 定义 14.5)中的 EMIF 模式选择位将外部数据存储器空间配置为图 14.4 所示
的四种工作模式之一。下面简要介绍这些模式。有关不同模式的更详细信息见第 102 页 14.7. 节 “EMIF 时序
”。
E MI0CF[3:2] = 00
EM I0CF[3:2] = 01
0xFFF F
EM I0CF[3:2] = 10
0xFF FF
E MI0CF[3:2] = 11
0xF FFF
0xF FFF
片 内 XR AM
片 内 XR AM
片外 存储器
(不带 块选择 )
片外 存储器
( 带块选 择)
片 内 XR AM
片外 存储器
片 内 XR AM
片 内 XR AM
片内 X RA M
片内 X RA M
片 内 XR AM
0x0000
0x0000
0x0000
0x0000
图 14.4. EMIF 工作模式
14.6.1. 只用内部 XRAM
当 EMI0CF.[3:2] 被设置为 00,所有 MOVX 指令都将访问器件内部的 XRAM 空间。存储器寻址的地址大于
实际地址空间时将以 2K 或 4K(取决于器件内部 XRAM 的大小)为边界回绕。例如:地址 0x1000 和 0x2000
都指向片内 XRAM 空间的 0x0000 地址。


8 位 MOVX 操作使用特殊功能寄存器 EMI0CN 的内容作为有效地址的高字节,由 R0 或 R1 给出有效地址
的低字节。
16 位 MOVX 操作使用 16 位寄存器 DPTR 的内容作为有效地址。
14.6.2. 无块选择的分割模式
当 EMI0CF.[3:2] 被设置为 01 时, XRAM 存储器空间被分割成两个区域,照片内空间和片外空间。

有效地址低于内部 XRAM 尺寸边界时将访问片内 XRAM 空间。

有效地址高于内部 XRAM 尺寸边界时将访问片内 XRAM 空间。

8 位 MOVX 操作使用特殊功能寄存器 EMI0CN 的内容确定是访问片内还是片外存储器。然而对于 “ 无块选
择 ” 模式,在访问片外存储器期间一个 8 位 MOVX 操作不驱动地址总线的高 8 位 A[15:8]。这就允许用
户通过直接设置商品的状态来按自己的意愿操作高位地址。下面将要描述的 “ 带块选择的分割模式 ” 则
与此相反。地址总线的低 8 位 A[7:0] 被驱动,由 R0 和 R1。

16 位 MOVX 操作使用 DPTR 的内容确定是访问片内还是片外存储器。与 8 位 MOVX 操作不同的是,在访
问片外存储器时,地址总线 A[15:0] 的全部 16 位都被驱动。
100
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
14.6.3. 带块选择的分割模式
当 EMI0CF.[3:2] 被设置为 10 时, XRAM 存储器空间被分割成两个区域,即片内空间和片外空间。

有效地址低于内部 XRAM 尺寸边界时将访问片内 XRAM 空间。

有效地址高于内部 XRAM 尺寸边界时将访问片外空间。

8位 MOVX操作使用特殊功能寄存器EMI0CN 的内容确定是访问片内还是片外存储器,地址总线的高8位
A[15:8] 由 EMI0CN 给出,而地址总线的低 8 位 A[7:0] 由 R0 或 R1 给出。在 “ 块选择 ” 模式,地址总线
A[15:0] 的全部 16 位都被驱动。

16 位 MOVX 操作使用 DPTR 的内容确定是访问片还是片外存储器,在访问片外存储器时,地址总线
A[15:0] 的全部 16 位都被驱动。
14.6.4. 只用外部存储器
当 EMI0CF[3:2] 被设置为 11 时,所有 MOVX 指令都将访问器件外部 XRAM 空间。片内 XRAM 对 CPU 为
不可见。该方式在访问从 0x0000 开始到内部 XRAM 尺寸边界之间的片外存储器时有用。

8 位 MOVX 操作忽略 EMI0CN 的内容。高地址位 A[15:8] 不被驱动(与 “ 不带块选择的分割模式 ” 中描述的访
问片外存储器的行为相同)。这就允许用户通过直接设置商品的状态来按自己的意愿操作高位地址。有
效地址的低 8 位 A[7:0] 由 R0 或 R1 给出。

16 位 MOVX 操作使用 DPTR 的内容确定有效地址 A[15:0]。在访问片外存储器时,地址总线 A[15:0] 的全部
16 位都被驱动。
??? 1.4
101
C8051F380/1/2/3/4/5/6/7/C
14.7. EMIF 时序
外部存储器接口的时序参数是可编程的,这就允许连接具有不同建立时间和保持时间要求的器件。地址建立
时间、地址保持时间、RD 和 WR 选通脉冲的宽度以及利用方式下 ALE 脉冲的宽度都可以通过 EMI0TC(见
SFR 定义 13.3)和 EMI0CF[1:0] 编程,编程单位为 SYSCLK 周期。
片外 MOVX 指令的时序可以通过将 EMI0TC 寄存器中定义的时序参数加上 4 个 SYSCLK 周期来计算。在非
复用方式,一次片外 XRAM 操作的最小执行时间为 5 个 SYSCLK 周期(用于 RD 或 WR 脉冲的 1 个 SYSCLK+
4 个 SYSCLK)。对于复用方式,地址锁存使能信号至少需要 2 个附加的 SYSCLK 周期。因此,在复用方
式,一次片外 XRAM 操作的最小执行时间为 7 个 SYSCLK 周期 (用于 ALE 的 2 个 SYSCLK+ 用于 RD 或
WR + 4 个 SYSCLK)。在器件复位后,可编程建立和保持时间的缺省值为最大延迟设置。
表 13.1 列出了外部存储器接口的 AC 参数,图 13.5~ 图 13.10 给出了对应不同外部存储器接口模式和 MOVX
操作的时序图。
102
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 14.3. EMI0TC:外部存储器时序控制寄存器
位
7
6
5
4
3
2
1
0
名称
EAS[1:0]
EWR[3:0]
EAH[1:0]
类型
R/W
R/W
R/W
复位
1
1
1
1
1
1
1
1
SFR 地址 = 0x84 ; SFR 页 = 所有页
位
名称
7:6
EAS[1:0]
功能
EMIF 地址建立时间位。
00:地址建立时间 = 0 个 SYSCLK 周期。
01:地址建立时间 = 1 个 SYSCLK 周期。
10:地址建立时间 = 2 个 SYSCLK 周期。
11:地址建立时间 = 3 个 SYSCLK 周期。
5:2
EWR[3:0]
EMIF WR 和 RD 脉冲宽度控制位。
0000:WR 和 RD 脉冲宽度 = 1 个 SYSCLK 周期。
0001:WR 和 RD 脉冲宽度 = 2 个 SYSCLK 周期。
0010:WR 和 RD 脉冲宽度 = 3 个 SYSCLK 周期。
0011:WR 和 RD 脉冲宽度 = 4 个 SYSCLK 周期。
0100:WR 和 RD 脉冲宽度 = 5 个 SYSCLK 周期。
0101:WR 和 RD 脉冲宽度 = 6 个 SYSCLK 周期。
0110:WR 和 RD 脉冲宽度 = 7 个 SYSCLK 周期。
0111:WR 和 RD 脉冲宽度 = 8 个 SYSCLK 周期。
1000:WR 和 RD 脉冲宽度 = 9 个 SYSCLK 周期。
1001:WR 和 RD 脉冲宽度 = 10 个 SYSCLK 周期。
1010:WR 和 RD 脉冲宽度 = 11 个 SYSCLK 周期。
1011:WR 和 RD 脉冲宽度 = 12 个 SYSCLK 周期。
1100:WR 和 RD 脉冲宽度 = 13 个 SYSCLK 周期。
1101:WR 和 RD 脉冲宽度 = 14 个 SYSCLK 周期。
1110:WR 和 RD 脉冲宽度 = 15 个 SYSCLK 周期。
1111:WR 和 RD 脉冲宽度 = 16 个 SYSCLK 周期。
1:0
EAH[1:0]
EMIF 地址保持时间位。
00:地址保持时间 = 0 个 SYSCLK 周期。
01:地址保持时间 = 1 个 SYSCLK 周期。
10:地址保持时间 = 2 个 SYSCLK 周期。
11:地址保持时间 = 3 个 SYSCLK 周期。
??? 1.4
103
C8051F380/1/2/3/4/5/6/7/C
14.7.1. 非复用方式
14.7.1.1. 16 位 MOVX:EMI0CF[4:2] = 101, 110,或 111
非复用 16位写
A DDR[15:8]
P2
来自DP H的EMIF高8 位地址
P2
A DDR[7:0]
P3
来自 DPL的E MIF低8位地址
P3
DATA [7:0]
P4
E MIF写数据
P4
T
T
WDS
T
ACS
WDH
T
T
ACW
ACH
/WR
P1.7
P1.7
/RD
P1.6
P1.6
非复用 16位读
A DDR[15:8]
P2
来自DP H的EMIF高8 位地址
P2
A DDR[7:0]
P3
来自 DPL的E MIF低8位地址
P3
DATA [7:0]
P4
T
RDS
T
ACS
T
T
ACW
RDH
T
ACH
/RD
P1.6
P1.6
/WR
P1.7
P1.7
图 14.5. 非复用 16 位 MOVX 时序
104
P4
EMIF读数据
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
14.7.1.2. 无块选择的 8 位 MOVX:EMI0CF[4:2] = 101 或 111
不带块选择的非复用 8 位写
A DDR[15:8]
P2
A DDR[7:0]
P3
来自 R0或R1的 EMIF低8位地址
P3
DATA [7:0]
P4
E MIF写数据
P4
T
T
WDS
T
ACS
WDH
T
T
ACW
ACH
/WR
P1.7
P1.7
/RD
P1.6
P1.6
不带块选择的非复用 8 位读
A DDR[15:8]
P2
A DDR[7:0]
P3
来自 R0或R1的 EMIF低8位地址
P3
DATA [7:0]
P4
EMIF读数据
P4
T
RDS
T
ACS
T
ACW
T
RDH
T
ACH
/RD
P1.6
P1.6
/WR
P1.7
P1.7
图 14.6. 无块选择的非复用 8 位 MOVX 时序
??? 1.4
105
C8051F380/1/2/3/4/5/6/7/C
14.7.1.3. 带块选择的 8 位 MOVX:EMI0CF[4:2] = 110
带块选择的非复用 8位写
ADDR[15 :8]
P2
来自EMI0 CN的高 8位EMIF地址
P2
ADDR[7:0]
P3
来自 R0或R1 的低8位EMIF地址
P3
DATA[7:0]
P5
EMIF写数据
P4
T
T
WDS
T
WDH
T
ACS
T
ACW
ACH
/WR
P1.7
P 1.7
/RD
P1.6
P 1.6
带块选择的非复用 8位读
ADDR[15 :8]
P2
来自EMI0 CN的高 8位EMIF地址
P2
ADDR[7:0]
P3
来自 R0或R1 的低8位EMIF地址
P3
DATA[7:0]
P4
EMIF读数据
P4
T
RDS
T
T
ACS
ACW
T
RDH
T
ACH
/RD
P1.6
P 1.6
/WR
P1.7
P 1.7
图 14.7. 带块选择的非复用 8 位 MOVX 时序
106
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
14.7.2. 复用方式
14.7.2.1. 16 位 MOVX:EMI0CF[4:2] = 001, 010,或 011
复用方式16 位写
ADDR[15:8]
P3
AD[7:0]
P4
来自DPH的EMIF高8位地址
来自 DPL的EMIF低8位地址
T
ALEH
A LE
P3
EMIF写数据
P4
T
ALEL
P1.3
P1.3
T
T
WDS
T
ACS
WDH
T
T
ACW
ACH
/WR
P1.7
P1.7
/RD
P1.6
P1.6
复用方式16 位读
ADDR[15:8]
P3
AD[7:0]
P4
来自DPH的EMIF高8位地址
来自 DPL的EMIF低8位地址
T
ALEH
A LE
P3
EMI F读数据
T
T
ALEL
RDS
P4
T
RDH
P1.3
P1.3
T
ACS
T
ACW
T
ACH
/RD
P1.6
P1.6
/WR
P1.7
P1.7
图 14.8. 复用方式 16 位 MOVX 时序
??? 1.4
107
C8051F380/1/2/3/4/5/6/7/C
14.7.2.2. 无块选择的 8 位 MOVX:EMI0CF[4:2] = 001 或 011
无块选择的复用方式 8位写
ADDR[15:8]
AD[7:0]
P3
P4
来自R0或R1的EMIF低8位地址
T
ALEH
ALE
EMIF写数据
P4
T
ALEL
P1.3
P1.3
T
T
WDS
T
ACS
WDH
T
T
ACW
AC H
/WR
P1.7
P1.7
/RD
P1.6
P1.6
无块选择的复用方式 8位读
ADDR[15:8]
AD[7:0]
P3
P4
来自R0或R1的EMIF低8位地址
T
ALEH
ALE
EMI F读数据
T
ALEL
T
RDS
T
RDH
P1.3
P1.3
T
ACS
T
ACW
T
AC H
/RD
P1.6
P1.6
/WR
P1.7
P1.7
图 14.9. 无块选择的复用方式 8 位 MOVX 时序
108
P4
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
14.7.2.3. 带块选择的 8 位 MOVX:EMI0CF[4:2] = 010
带块选择的复用方式 8位写
ADDR[15:8]
P3
AD[7:0]
P4
来自EMI0CN的EMIF 高8位地址
来自R0或R1的EMIF低8位地址
T
ALEH
A LE
P3
EMIF写数据
P4
T
ALEL
P1.3
P1.3
T
T
WDS
T
ACS
WDH
T
T
ACW
ACH
/WR
P1.7
P1.7
/RD
P1.6
P1.6
带块选择的复用方式 8位读
ADDR[15:8]
P3
AD[7:0]
P4
来自EMI0CN的EMIF 高8位地址
来自R0或R1的EMIF低8位地址
T
ALEH
A LE
P3
EMI F读数据
T
T
ALEL
RDS
P4
T
RDH
P1.3
P1.3
T
ACS
T
ACW
T
ACH
/RD
P1.6
P1.6
/WR
P1.7
P1.7
图 14.10. 带块选择的复用方式 8 位 MOVX 时序
??? 1.4
109
C8051F380/1/2/3/4/5/6/7/C
表 14.1. 外部存储器接口的 AC 参数
参数
说明
最小值 *
最大值 *
单位
TACS
地址 / 控制信号建立时间
0
3 x TSYSCLK
ns
TACW
地址 / 控制信号脉冲宽度
1 x TSYSCLK
16 x TSYSCLK
ns
TACH
地址 / 控制信号保持时间
0
3 x TSYSCLK
ns
TALEH
地址锁存使能信号高电平时间
1 x TSYSCLK
4 x TSYSCLK
ns
TALEL
地址锁存使能信号低电平时间
1 x TSYSCLK
4 x TSYSCLK
ns
TWDS
写数据建立时间
1 x TSYSCLK
19 x TSYSCLK
ns
TWDH
写数据保持时间
0
3 x TSYSCLK
ns
TRDS
读数据建立时间
20
ns
TRDH
读数据保持时间
0
ns
注意 : TSYSCLK 等于系统时钟 (SYSCLK) 的第一个周期。
110
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
15. 特殊功能寄存器
从 0x80 到 0xFF 的 直接 寻址数 据存储 器空间 为特殊 功能寄 存器
(SFR)。
SFR 提供对
C8051F380/1/2/3/4/5/6/7/C 的资源和外设的控制及 CIP-51 与这些资源和外设之间的数据交换。CIP-51 控制
器核不仅具有标准 8051 中的全部 SFR,还增加了一些用于配置和访问 C8051F380/1/2/3/4/5/6/7/C 专有子
系统 的 SFR。这 就允许 在保证 与 MCS-51™ 指令集 兼容的 前提下 增加新 的功能。表 15.1 列出了
C8051F380/1/2/3/4/5/6/7/C 器件中实现的全部 SFR。
任何时刻用直接寻址方式访问从 0x80 到 0xFF 的存储器空间,都将访问特殊功能寄存器 (SFR)。地址以 0x0
或 0x8 结尾的 SFR (例如 P0, TCON, SCON0, IE, 等)既可以按字节寻址,所有其它 SFR 只能按字节寻
址。SFR 空间中未使用的地址保留炎将来使用,访问这些地址会产生不确定的结果,应予避免。有关表 15.2
中列出的每个寄存器的详细说明请参见本数据表的相关部分。
15.1. SFR 分页
CIP-51 实现了 SFR 分页机制,允许器件将很多 SFR 映射到 0x80 - 0xFF 这个存储器地址空间。 SFR 存储
0xFF
的每个 存储器 地址可 以访问 最多 256 个 SFR。
器空 间有 256 页。这样 一来, 0x80
C8051F380/1/2/3/4/5/6/7/C 器件使用两个 SFR 页:0x0 和 0xF。大多数 SFR 在这两个页都可用。使用页选
择寄存器 SFRPAGE 来选择 SFR 页。读和写 SFR 的步骤如下:
1. 用 SFRPAGE 寄存器选择正确的 SFR 页。
2. 使用直接寻址方式读或写特殊功能寄存器 (MOV 指令)。
注意:当在一个中断服务程序 (ISR) 中读或写那些不是在所有页都可用的 SFR 时,建议在进入 ISR 时保存
SFRPAGE 寄存器的状态,在中断返回前恢复 SFRPAGE 寄存器的状态。
SFR 定义 15.1. SFRPAGE:SFR 页寄存器
位
7
6
5
4
3
名称
SFRPAGE[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xBF ; SFR 页 = 所有页
位
名称
7:0
SFRPAGE[7:0]
功能
SFR 页选择位。
指明 C8051 核读或修改特殊功能寄存器时使用的 SFR 页。
写:设置 SFR 页。
读:返回 C8051 核正在使用的 SFR 页。
??? 1.4
111
C8051F380/1/2/3/4/5/6/7/C
页
地址
表 15.1. 特殊功能寄存器 (SFR) 存储器映象
F8
F0
E8
E0
0
F
D8
D0
0
F
0
C0
F
0
B8
F
B0
A8
A0
98
0
90
F
88
80
C8
0(8)
1(9)
2(A)
3(B)
4(C)
6(E)
7(F)
SPI0CN PCA0L
PCA0H PCA0CPL0 PCA0CPH0 PCA0CPL4 PCA0CPH4 VDM0CN
B
P0MDIN
P1MDIN
P2MDIN
P3MDIN
P4MDIN
EIP1
EIP2
ADC0CN PCA0CPL1 PCA0CPH1 PCA0CPL2 PCA0CPH2 PCA0CPL3 PCA0CPH3 RSTSRC
IT01CF
ACC
XBR0
XBR1
XBR2
SMOD1
EIE1
EIE2
CKCON1
PCA0CN PCA0MD PCA0CPM0 PCA0CPM1 PCA0CPM2 PCA0CPM3 PCA0CPM4 P3SKIP
PSW
REF0CN
SCON1
SBUF1
P0SKIP
P1SKIP
P2SKIP USB0XCN
TMR2CN
TMR2RLL TMR2RLH
TMR2L
TMR2H SMB0ADM SMB0ADR
REG01CN
TMR5CN
TMR5RLL TMR5RLH
TMR5L
TMR5H SMB1ADM SMB1ADR
SMB0CN SMB0CF SMB0DAT
ADC0GTL ADC0GTH ADC0LTL ADC0LTH
P4
SMB1CN SMB1CF SMB1DAT
CLKMUL
ADC0CF
IP
AMX0N
AMX0P
ADC0L
ADC0H SFRPAGE
SMBTC
P3
OSCXCN OSCICN
OSCICL
SBRLL1
SBRLH1
FLSCL
FLKEY
IE
CLKSEL
EMI0CN
SBCON1
P4MDOUT PFE0CN
P2
SPI0CFG SPI0CKR SPI0DAT P0MDOUT P1MDOUT P2MDOUT P3MDOUT
SCON0
SBUF0
CPT1CN
CPT0CN
CPT1MD
CPT0MD
CPT1MX CPT0MX
TMR3CN TMR3RLL TMR3RLH
TMR3L
TMR3H
P1
USB0ADR USB0DAT
TMR4CN TMR4RLL TMR4RLH
TMR4L
TMR4H
TCON
TMOD
TL0
TL1
TH0
TH1
CKCON
PSCTL
P0
SP
DPL
DPH
EMI0TC
EMI0CF
OSCLCN
PCON
0(8)
1(9)
2(A)
3(B)
4(C)
5(D)
6(E)
7(F)
注:
1. 地址以 0x0 或 0x8 结尾的 SFR 是可位寻址的,可以用来操作指令访问。
2. 除特别注明者外, SFR 的 0 页和 F 页都可用。
112
5(D)
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表 15.2. 特殊功能寄存器
SFR 以字母顺序排列,所有未定义的 SFR 位置保留。
寄存器
地址
页
0xE0
所有页
累加器
ACC
说明
页码
86
ADC0CF
0xBC
所有页
ADC0 配置寄存器
53
ADC0CN
0xE8
所有页
ADC0 控制寄存器
55
ADC0GTH
0xC4
所有页
ADC0 下限 (大于)比较字高字节
56
ADC0GTL
0xC3
所有页
ADC0 下限 (大于)比较字低字节
56
ADC0H
0xBE
所有页
ADC0 数据字高字节
54
ADC0L
0xBD
所有页
ADC0 数据字低字节
54
ADC0LTH
0xC6
所有页
ADC0 下限 (大于)比较字
57
ADC0LTL
0xC5
所有页
ADC0 下限 (大于)比较字
57
AMX0N
0xBA
所有页
AMUX0 负通道选择寄存器
61
AMX0P
0xBB
所有页
AMUX0 正通道选择寄存器
61
B
0xF0
所有页
B 寄存器
86
CKCON
0x8E
所有页
时钟控制寄存器
264
CKCON1
0xE4
F
时钟控制寄存器 1
265
CLKMUL
0xB9
0
时钟乘法寄存器
147
CLKSEL
0xA9
所有页
时钟控制寄存器
144
CPT0CN
0x9B
所有页
比较器 0 控制寄存器
67
CPT0MD
0x9D
所有页
比较器 0 方式选择寄存器
68
CPT0MX
0x9F
所有页
比较器 0 MUX 选择寄存器
72
CPT1CN
0x9A
所有页
比较器 1 控制寄存器
69
CPT1MD
0x9C
所有页
比较器 1 方式选择寄存器
70
CPT1MX
0x9E
所有页
比较器 1 MUX 选择寄存器
73
DPH
0x83
所有页
数据指针高字节
85
DPL
0x82
所有页
数据指针低字节
85
EIE1
0xE6
所有页
扩展中断允许寄存器 1
123
EIE2
0xE7
所有页
扩展中断允许寄存器 2
125
EIP1
0xF6
所有页
扩展中断优先级寄存器 1
124
EIP2
0xF7
所有页
扩展中断优先级寄存器 2
126
EMI0CF
0x85
所有页
外部存储器接口配置寄存器
97
EMI0CN
0xAA
所有页
外部存储器接口控制寄存器
96
EMI0TC
0x84
所有页
外部存储器接口时序控制寄存器
103
FLKEY
0xB7
所有页
Flash 锁定和关键码寄存器
140
FLSCL
0xB6
所有页
Flash 存储器时序预分频器
141
??? 1.4
113
C8051F380/1/2/3/4/5/6/7/C
表 15.2. 特殊功能寄存器 (Continued)
SFR 以字母顺序排列,所有未定义的 SFR 位置保留。
寄存器
地址
页
0xA8
所有页
中断允许寄存器
IE
IP
0xB8
所有页
IT01CF
0xE4
OSCICL
说明
页码
121
中断优先级寄存器
122
0
INT0/INT1 配置寄存器
128
0xB3
所有页
内部振荡器校准寄存器
145
OSCICN
0xB2
所有页
内部低振荡器控制寄存器
146
OSCLCN
0x86
所有页
内部低频振荡器控制寄存器
148
OSCXCN
0xB1
所有页
外部振荡器控制寄存器
152
P0
0x80
所有页
端口 0 锁存器
162
P0MDIN
0xF1
所有页
端口 0 输入方式配置寄存器
162
P0MDOUT
0xA4
所有页
端口 0 输出方式配置寄存器
163
P0SKIP
0xD4
所有页
端口 0 跳过寄存器
163
P1
0x90
所有页
端口 1 锁存器
164
P1MDIN
0xF2
所有页
端口 1 输入方式配置寄存器
164
P1MDOUT
0xA5
所有页
端口 1 输出方式配置寄存器
165
P1SKIP
0xD5
所有页
端口 1 跳过寄存器
165
P2
0xA0
所有页
端口 2 锁存器
166
P2MDIN
0xF3
所有页
端口 2 输入方式配置寄存器
166
P2MDOUT
0xA6
所有页
端口 2 输出方式配置寄存器
167
P2SKIP
0xD6
所有页
端口 2 跳过锁存器
167
P3
0xB0
所有页
端口 3 锁存器
168
P3MDIN
0xF4
所有页
端口 3 输入方式配置寄存器
168
P3MDOUT
0xA7
所有页
端口 3 输出方式配置寄存器
169
P3SKIP
0xDF
所有页
端口 3 跳过锁存器
169
P4
0xC7
所有页
端口 4 锁存器
170
P4MDIN
0xF5
所有页
端口 4 输入方式配置寄存器
170
P4MDOUT
0xAE
所有页
端口 4 输出方式配置寄存器
171
PCA0CN
0xD8
所有页
PCA 控制寄存器
311
PCA0CPH0
0xFC
所有页
PCA 捕捉模块 0 高字节
315
PCA0CPH1
0xEA
所有页
PCA 捕捉模块 1 高字节
315
PCA0CPH2
0xEC
所有页
PCA 捕捉模块 2 高字节
315
PCA0CPH3
0xEE
所有页
PCA 捕捉模块 3 高字节
315
PCA0CPH4
0xFE
所有页
PCA 捕捉模块 4 高字节
315
PCA0CPL0
0xFB
所有页
PCA 捕捉模块 0 低字节
315
PCA0CPL1
0xE9
所有页
PCA 捕捉模块 1 低字节
315
114
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表 15.2. 特殊功能寄存器 (Continued)
SFR 以字母顺序排列,所有未定义的 SFR 位置保留。
寄存器
地址
页
0xEB
所有页
PCA 捕捉模块 2 低字节
PCA0CPL2
说明
页码
315
PCA0CPL3
0xED
所有页
PCA 捕捉模块 3 低字节
315
PCA0CPL4
0xFD
所有页
PCA 捕捉模块 4 低字节
315
PCA0CPM0
0xDA
所有页
PCA 模块 0 方式寄存器
313
PCA0CPM1
0xDB
所有页
PCA 模块 1 方式寄存器
313
PCA0CPM2
0xDC
所有页
PCA 模块 2 方式寄存器
313
PCA0CPM3
0xDD
所有页
PCA 模块 3 方式寄存器
313
PCA0CPM4
0xDE
所有页
PCA 模块 4 方式寄存器
313
PCA0H
0xFA
所有页
PCA 计数器高字节
314
PCA0L
0xF9
所有页
PCA 计数器低字节
314
PCA0MD
0xD9
所有页
PCA 方式寄存器
312
PCON
0x87
所有页
电源控制寄存器
78
PFE0CN
0xAF
所有页
预取引擎控制寄存器
88
PSCTL
0x8F
所有页
程序存储读 / 写控制寄存器
139
PSW
0xD0
所有页
程序状态字
87
REF0CN
0xD1
所有页
电压基准控制寄存器
63
REG01CN
0xC9
所有页
稳夺器控制寄存器
75
RSTSRC
0xEF
所有页
复位源配置 / 状态寄存器
134
SBCON1
0xAC
所有页
UART1 波特率发生器控制寄存器
248
SBRLH1
0xB5
所有页
UART1 波特率发生器高字节
248
SBRLL1
0xB4
所有页
UART1 波特率发生器低字节
249
SBUF0
0x99
所有页
UART0 数据缓冲器
238
SBUF1
0xD3
所有页
UART1 数据缓冲器
247
SCON0
0x98
所有页
UART0 控制寄存器
237
SCON1
0xD2
所有页
UART1 控制寄存器
245
SFRPAGE
0xBF
所有页
SFR 页选择寄存器
111
SMB0ADM
0xCE
0
SMBus0 地址掩码寄存器
219
SMB0ADR
0xCF
0
SMBus0 地址寄存器
218
SMB0CF
0xC1
0
SMBus0 配置寄存器
211
SMB0CN
0xC0
0
SMBus0 控制寄存器
215
SMB0DAT
0xC2
0
SMBus0 数据寄存器
221
SMB1ADM
0xCE
F
SMBus1 地址掩码寄存器
220
SMB1ADR
0xCF
F
SMBus1 地址寄存器
219
SMB1CF
0xC1
F
SMBus1 配置寄存器
211
??? 1.4
115
C8051F380/1/2/3/4/5/6/7/C
表 15.2. 特殊功能寄存器 (Continued)
SFR 以字母顺序排列,所有未定义的 SFR 位置保留。
寄存器
地址
页
0xC0
F
SMBus1 控制寄存器
SMB1CN
说明
页码
216
SMB1DAT
0xC2
F
SMBus1 数据寄存器
222
SMBTC
0xB9
F
SMBus0/1 时间控制寄存器
213
SMOD1
0xE5
所有页
UART1 方式寄存器
246
SP
0x81
所有页
堆栈指针
86
SPI0CFG
0xA1
所有页
SPI 配置寄存器
257
SPI0CKR
0xA2
所有页
SPI 时钟频率控制寄存器
259
SPI0CN
0xF8
所有页
SPI 控制寄存器
258
SPI0DAT
0xA3
所有页
SPI 数据寄存器
259
TCON
0x88
所有页
计数器 / 定时器控制寄存器
270
TH0
0x8C
所有页
计数器 / 定时器 0 高字节
273
TH1
0x8D
所有页
计数器 / 定时器 1 高字节
273
TL0
0x8A
所有页
计数器 / 定时器 0 低字节
272
TL1
0x8B
所有页
计数器 / 定时器 1 低字节
272
TMOD
0x89
所有页
计数器 / 定时器方式寄存器
271
TMR2CN
0xC8
0
计数器 / 定时器 2 控制寄存器
278
TMR2H
0xCD
0
计数器 / 定时器 2 高字节
280
TMR2L
0xCC
0
计数器 / 定时器 2 低字节
279
TMR2RLH
0xCB
0
计数器 / 定时器 2 重载值高字节
279
TMR2RLL
0xCA
0
计数器 / 定时器 2 重载值低字节
279
TMR3CN
0x91
0
计数器 / 定时器 3 控制寄存器
285
TMR3H
0x95
0
计数器 / 定时器 3 高字节
287
TMR3L
0x94
0
计数器 / 定时器 3 低字节
286
TMR3RLH
0x93
0
计数器 / 定时器 3 重载值高字节
286
TMR3RLL
0x92
0
计数器 / 定时器 3 重载值高字节
286
TMR4CN
0x91
F
计数器 / 定时器 4 控制寄存器
290
TMR4H
0x95
F
计数器 / 定时器 4 高字节
292
TMR4L
0x94
F
计数器 / 定时器 4 低字节
291
TMR4RLH
0x93
F
计数器 / 定时器 4 重载值高字节
286
TMR4RLL
0x92
F
计数器 / 定时器 4 重载值低字节
286
TMR5CN
0xC8
F
计数器 / 定时器 5 控制寄存器
295
TMR5H
0xCD
F
计数器 / 定时器 5 高字节
297
TMR5L
0xCC
F
计数器 / 定时器 5 低字节
296
TMR5RLH
0xCB
F
计数器 / 定时器 5 重载值高字节
296
116
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表 15.2. 特殊功能寄存器 (Continued)
SFR 以字母顺序排列,所有未定义的 SFR 位置保留。
寄存器
地址
页
说明
0xCA
F
计数器 / 定时器 5 重载值低字节
TMR5RLL
页码
296
USB0ADR
0x96
所有页
USB0 间接地址寄存器
176
USB0DAT
0x97
所有页
USB0 数据寄存器
177
USB0XCN
0xD7
所有页
USB0 收发器控制寄存器
174
VDM0CN
0xFF
所有页
VDD 监视器控制寄存器
132
XBR0
0xE1
所有页
端口 I/O 交叉开关控制 0
159
XBR1
0xE2
所有页
端口 I/O 交叉开关控制 1
160
XBR2
0xE3
所有页
端口 I/O 交叉开关控制 2
161
??? 1.4
117
C8051F380/1/2/3/4/5/6/7/C
118
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
16. 中断系统
C8051F380/1/2/3/4/5/6/7/C 包含一个扩展的中断系统,支持多个中断源,每个中断源有两个优先级。中断
源在片内外设与外部输入引脚之间的分配随随器件的不同而变化。每个中断源在一个 SFR 中有一个或多个
中断标志。当一个外设或外部源满足有效的中断条件时,相应的中断标志被置为逻辑 1。
如果中断源的中断被使能,则当中断标志置 1 时会产生中断请求。一旦当前指令执行结束, CPU 立即产生
一个 LCALL 到预定地址,开始执行中断服务程序 (ISR)。每个 ISR 必须以 RETI 指令结束,使程序回到中断
前执行的那条指令的下一条指令。如果中断未被允许,中断标志将被硬件忽略,程序继续正常执行。(中断
标志置 1 与否不受中断允许 / 禁止状态的影响。)
通过使用位于某个 SFR (IE, EIE1 或 EIE2) 中的相关中断使能位,可以单独使能或禁止每个中断源。但是必
须通过将 EA 位 (IE.7) 置 1 来总体使能中断,以保证每个单独的中断允许位有效。不管每个中断允许位的设
置如何,清除 EA 位将禁止所有中断。
注意:将某个清 0 以禁止一个中断的任何指令之后都应紧跟一条有 2 或 3 个操作码字节的指令。以 EA (总
体中断允许位)为例:
// 用 'C' 语言 :
EA = 0; // 清 EA 位
EA = 0; // 这是一条 2 字节操作码的虚指令
; 用汇编语言 :
CLR EA ; 清 EA 位
CLR EA ; 这是一条 2 字节操作码的虚指令
例如,如果在 "CLR EA" 操作码 (或任何将某位清 0 以禁止一个中断的指令)的执行阶段产生了中断请求,
而该指令之后是一条单周期指令,则可能发生中断。然而,在中断服务程序内读中断使能位会返回 0 值。当
位清除操作码后面是一条多周期指令时,则不会发生中断。
某些中断标志在 CPU 进入 ISR 时被硬件自动清除,但大多数中断标志不是由硬件清除的,必须从 ISR 返回
前用软件清除。如果一个中断标志在 CPU 执行完中断返回(RETI)指令后仍然保持置 1 状态,则会立即产
生一个新的中断请求, CPU 将在执行完下一条指令后再次进入该 ISR。
??? 1.4
118
C8051F380/1/2/3/4/5/6/7/C
16.1. MCU 中断源和中断向量
C8051F380/1/2/3/4/5/6/7/C 支持多个中断源。软件可以通过将一个中断标志设置为逻辑 1 来模拟中断。如
果中断标志被允许,系统将产生一个中断请求,CPU 将转身与该中断标志对应的 ISR 地址。表 16.1 列出了
MCU 中断源、中断向量地址、优先顺序和控制位。关于某个外设的有效中断条件和中断标志位行为方面的
详细信息,请见与特定外设相关的章节。
16.1.1. 中断优先级
每个中断源都可以被独立地编程为两个优先级中的一个:低优先级或高优先级。一个低优先级的中断服务程
序可以被高优先级的中断所中断,但高优先级的中断不能被中断。每个中断在一个 SFR (IP, EIP1 或 EIP2)
中都有一个中断优先级设置位,用于配置其优先级,缺少值为低优先级。如果两个中断同时被识别,则具有
高优先级的中断先得到服务。如果这两个中断的优先级相同,则由表 16.1 给出的固定优先顺序决定哪一个
中断先得到服务。
16.1.2. 中断延迟
中断响应时间取决于中断发生时 CPU 的状态。中断系统在每个系统时钟周期对中断请求标志采样并对优先
级译码。最快的响应时间为 6 个系统时钟周期:一个周期用于检测中断, 5 个周期用于完成对 ISR 的长调用
(LCALL)。如果中断标志有效时 CPU 正在执行 RETI 指令,则需要再执行一条指令才能进入中断服务程序。
因此,最长的中断响应时间(没有其它中断正被服务或新中断具有较高优先级)发生在 CPU 正在执行 RETI
指令,而下一条指令是 DIV 的情况。在这种情况下,响应时间为 20 个系统时钟周期:1 个时钟周期检测中
断,6 个时钟周期执行 RETI,8 个时钟周期完成 DIV 指令,5 个时钟周期执行对 ISR 的长调用 (LCALL)。如
果 CPU 正在执行一个具有相同或更高优先级的中断的 ISR,则新中断要等到当前 ISR 执行完 (包括 RETI
和下一条指令 )才能得到服务。
注意:在 FLASH 写操作和用 MOVX 指令访问 USB FIFO 期间 CPU 暂停执行程序。如此时发生中断,则中
断服务延迟会增加。这种情况下的中断延迟由标准中断服务过程 (如上所述)和 CPU 暂停时间决定。
16.2. 中断寄存器说明
下面介绍用于允许中断源和设置中断优先级的特殊功能寄存器。关于外设的有效中断条件和中断标志行为方
面的详细信息,请见与特定片内外设相关的章节。
119
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
硬件清除
中断源
位寻址
表 16.1. 中断一览表
中断
向量
优先级
中断标志
中断允许
复位
外部中断 0 (INT0)
定时器 0 溢出
外部中断 1 (INT1)
定时器 1 溢出
UART0
0x0000
0x0003
0x000B
0x0013
0x001B
0x0023
最高
0
1
2
3
4
定时器 2 溢出
0x002B
5
SPI0
0x0033
6
SMB0
0x003B
7
无
IE0 (TCON.1)
TF0 (TCON.5)
IE1 (TCON.3)
TF1 (TCON.7)
RI0 (SCON0.0)
TI0 (SCON0.1)
TF2H (TMR2CN.7)
TF2L (TMR2CN.6)
SPIF (SPI0CN.7)
WCOL (SPI0CN.6)
MODF (SPI0CN.5)
RXOVRN (SPI0CN.4)
SI (SMB0CN.0)
USB0
0x0043
8
ADC0 窗口比较
0x004B
9
ADC0 转换结束
0x0053
10
可编程计数器阵列
0x005B
11
比较器 0
0x0063
12
比较器 1
0x006B
13
定时器 3 溢出
0x0073
14
VBUS 电平
0x007B
15
UART1
0x0083
16
N/A
Y
Y
Y
Y
Y
N/A
Y
Y
Y
Y
N
始终允许
EX0 (IE.0)
ET0 (IE.1)
EX1 (IE.2)
ET1 (IE.3)
ES0 (IE.4)
Y
N
Y
N
ESPI0
(IE.6)
PSPI0
(IP.6)
Y
N
特殊
N
N
AD0WINT
(ADC0CN.3)
AD0INT (ADC0CN.5)
Y
N
Y
N
CF (PCA0CN.7)
CCFn (PCA0CN.n)
CP0FIF (CPT0CN.4)
CP0RIF (CPT0CN.5)
CP1FIF (CPT1CN.4)
CP1RIF (CPT1CN.5)
TF3H (TMR3CN.7)
TF3L (TMR3CN.6)
N/A
Y
N
N
N
N
N
N
N
N/A
N/A
N
N
N/A
Y
N/A
N
N
N
Y
N
ESMB0
(EIE1.0)
EUSB0
(EIE1.1)
EWADC0
(EIE1.2)
EADC0
(EIE1.3)
EPCA0
(EIE1.4)
ECP0
(EIE1.5)
ECP1
(EIE1.6)
ET3
(EIE1.7)
EVBUS
(EIE2.0)
ES1
(EIE2.1)
N/A
ESMB1
(EIE2.3)
ET4
(EIE2.4)
ET5
(EIE2.5)
PSMB0
(EIP1.0)
PUSB0
(EIP1.1)
PWADC0
(EIP1.2)
PADC0
(EIP1.3)
PPCA0
(EIP1.4)
PCP0
(EIP1.5)
PCP1
(EIP1.6)
PT3
(EIP1.7)
PVBUS
(EIP2.0)
PS1
(EIP2.1)
N/A
PSMB1
(EIP2.3)
PT4
(E!P2.4)
PT5
(E!P2.5)
保留
SMB1
0x008B
0x0093
17
18
定时器 4 溢出
0x009B
19
定时器 5 溢出
0x00A3
20
RI1 (SCON1.0)
TI1 (SCON1.1)
N/A
SI (SMB1CN.0)
TF4H (TMR4CN.7)
TF4L (TMR4CN.6)
TF5H (TMR5CN.7)
TF5L (TMR5CN.6)
??? 1.4
优先级
控 制
总是最高
PX0 (IP.0)
PT0 (IP.1)
PX1 (IP.2)
PT1 (IP.3)
PS0 (IP.4)
ET2 (IE.5) PT2 (IP.5)
120
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 16.1. IE:中断允许寄存器
位
7
6
5
4
3
2
1
0
名称
EA
ESPI0
ET2
ES0
ET1
EX1
ET0
EX0
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xA8 ; SFR 页 = 所有页;可位寻址
位
名称
7
EA
6
ESPI0
功 能
使能所有中断。
该位总体允许 / 禁止所有中断。它超越所有的单独中断屏蔽设置。
0:禁止所有中断源。
1:开发中断。每个中断由其对应的中断屏蔽设置决定。
使能串行外设接口 (SPI0)中断。
该位设置 SPI0 的中断屏蔽。
0:禁止所有 SPI0 中断。
1:允许由 SPI0 产生的中断请求。
5
ET2
使能定时器 2 中断
该位设置定时器 2 的中断屏蔽。
0:禁止定时器 2 中断。
1:允许由 TF2L 或 TF2H 标志产生的中断请求。
4
ES0
使能 UART0 中断。
该位设置 UART0 的中断屏蔽。
0:禁止 UART0 中断。
1:允许 UART0 中断。
3
ET1
使能定时器 1 中断。
该位设置定时器 1 的中断屏蔽。
0:禁止定时器 1 中断。
1:允许由 TF1 标志产生的中断请求。
2
EX1
使能外部中断 1。
该位设置外部中断 1 的中断屏蔽。
0:禁止外部中断 1。
1:允许由 INT1 输入产生的中断请求。
1
ET0
使能定时器 0 中断。
该位设置定时器 0 的中断屏蔽。
0:禁止定时器 0 中断。
1:允许由 TF0 标志产生的中断请求。
0
EX0
使能外部中断 0.
该位设置外部中断 0 的中断屏蔽。
0:禁止外部中断 0。
1:允许由 INT0 输入产生的中断请求。
121
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 16.2. IP:中断优先级寄存器
位
7
名称
6
5
4
3
2
1
0
PSPI0
PT2
PS0
PT1
PX1
PT0
PX0
类型
R
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
1
0
0
0
0
0
0
0
SFR 地址 = 0xB8 ; SFR 页 = 所有页;可位寻址
位
名称
7
未使用
PSPI0
6
功 能
读 = 1b, 写 = 忽略。
串行外设接口 (SPI0) 中断优先级控制。
该位设置外部中断 SPI0 的中断优先级。
0:SPI0 中断为低优先级。
1:SPI0 中断为高优先级。
5
PT2
定时器 2 中断优先级控制。
该位设置定时器 2 中断的优先级。
0:定时器 2 中断为低优先级。
1:定时器 2 中断为高优先级。
4
PS0
UART0 中断优先级控制。
该位设置 UART0 中断的优先级。
0:UART0 中断为低优先级。
1:UART0 中断为高优先级。
3
PT1
定时器 1 中断优先级控制。
该位设置定时器 1 中断的优先级。
0:定时器 1 中断为低优先级。
1:定时器 1 中断为高优先级。
2
PX1
外部中断 1 优先级控制。
该位设置外部中断 1 的中断优先级。
0:外部中断 1 为低优先级。
1:外部中断 1 为高优先级。 .
1
PT0
定时器 0 中断优先级控制。
该位位置定时器 0 中断的优先级。
0:定时器 0 中断为低优先级。
1:定时器 0 中断为高优先级。
0
PX0
外部中断 0 优先级控制。
该位设置外部中断 0 的中断优先级。
0:外部中断 0 为低优先级。
1:外部中断 0 为高优先级。
??? 1.4
122
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 16.3. EIE1:扩展中断允许 1
位
7
6
5
4
3
2
1
0
名称
ET3
ECP1
ECP0
EPCA0
EADC0
EWADC0
EUSB0
ESMB0
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xE6 ; SFR 页 = 所有页
位
名称
7
ET3
功 能
使能定时器 3 中断。
该位设置定时器 3 的中断屏蔽。
0:禁止定时器 3 中断。
1:允许由 TF3L 或 TF3H 标志产生的中断请求。
6
ECP1
使能比较器 1 (CP1)中断。
该位设置 CP1 的中断屏蔽。
0:禁止 CP1 中断。
1:允许 CP1RIF 或 CP1FIF 标志产生的中断请求。
5
ECP0
使能比较器 0(CP0)中断。
该位设置 CP0 的中断屏蔽。
0:禁止 CP0 中断。
1:允许 CP0RIF 或 CP0FIF 标志产生的中断请求。
4
EPCA0
使能可编程计数器阵列 (PCA0)中断。
该位设置 PCA0 的中断屏蔽。
0:禁止所有 PCA0 中断。
1:允许 PCA0 的中断请求。
3
EADC0
使能 ADC0 转换结束中断。
该位设置 ADC0 转换结束中断屏蔽。
0:禁止 ADC0 转换结束中断。
1:允许 AD0INT 标志的中断请求。
2
EWADC0 使能 ADC0 窗口比较中断。
该位设置 ADC0 窗口比较器的中断屏蔽。
0:禁止 ADC0 窗口比较中断。
1:允许 ADC0 窗口比较标志 (AD0WINT) 的中断请求。
1
EUSB0
使能 USB (USB0) 中断。
该位设置 USB0 的中断屏蔽。
0:禁止所有 USB0 中断。
1:允许由 USB0 产生的中断请求。
0
ESMB0
使能 SMBus0 中断。
该位设置 SMB0 的中断屏蔽。
0:禁止所有 SMB0 中断。
1:允许由 SMB0 产生的中断请求。
123
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 16.4. EIP1:扩展中断优先级 1
位
7
6
5
4
3
2
1
0
名称
PT3
PCP1
PCP0
PPCA0
PADC0
PWADC0
PUSB0
PSMB0
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xF6 ; SFR 页 = 所有页
位
名称
7
PT3
功 能
定时器 3 中断优先级控制。
该位设置定时器 3 中断的优先级。
0:定时器 3 中断为低优先级。
1:定时器 3 中断为高优先级。
6
PCP1
比较器 1 (CP1) 中断优先级控制。
该位设置 CP1 中断的优先级。
0:CP1 中断为低优先级。
1:CP1 中断为高优先级。
5
PCP0
比较器 0 (CP0) 中断优先级控制。
该位设置 CP0 中断的优先级。
0:CP0 中断为低优先级。
1:CP0 中断为高优先级。
4
PPCA0
可编程计数器阵列 (PCA0)中断优先级控制。
该位设置 PCA0 中断的优先级。
0:PCA0 中断为低优先级。
1:PCA0 可断为高优先级。
3
PADC0
ADC0 转换结束中断优先级控制。
该位设置 ADC0 转换结束中断的优先级。
0:ADC0 转换结束中断为低优先级。
1:ADC0 转换结束中断为高优先级。
2
PWADC0 ADC0 窗口比较器中断优先级控制。
该位设置 ADC0 窗口比较器中断的优先级。
0:ADC0 窗口比较器中断为低优先级。
1:ADC0 窗口比较器中断为高优先级。
1
PUSB0
USB (USB0) 中断优先级控制。
该位设置 USB0 中断的优先级。
0:USB0 中断为低优先级。
1:USB0 中断为高优先级。
0
PSMB0
SMBus0 中断优先级控制。
该位设置 SMB0 中断的优先级。
0:SMB0 中断为低优先级。
1:SMB0 中断为高优先级。
??? 1.4
124
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 16.5. EIE2:扩展中断允许 2
位
7
6
名称
5
4
3
ET5
ET4
ESMB1
2
1
0
ES1
EVBUS
类型
R
R
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xE7 ; SFR 页 = 所有页
位
名称
7:6
未使用
ET5
5
功 能
读 = 00b, 写 = 忽略。
使能定时器 5 中断。
该位设置定时器 5 的中断屏蔽。
0:禁止定时器 5 中断。
1:允许由 TF5L 或 TF5H 标志产生的中断请求。
4
ET4
使能定时器 4 中断。
该位设置定时器 4 的中断屏蔽。
0:禁止定时器 4 中断。
1:允许由 TF4L 或 TF4H 标志产生的中断请求。
3
ESMB1
使能 SMBus1 中断。
该位设置 SMB1 的中断屏蔽。
0:禁止所有 SMB1 中断。
1:允许由 SMB1 产生的中断请求。
1
保留
ES1
0
EVBUS
2
必须写 0b.
使能 UART1 中断。
该位设置 UART1 的中断屏蔽。
0:禁止 UART1 中断。
1:允许 UART1 中断。
使能 VBUS 电平中断。
该位设置 VBUS 的中断屏蔽。
0:禁止所有 VBUS 中断。
1:允许 VBUS 电平检测电路产生的中断请求。
125
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 16.6. EIP2:扩展中断优先级 2
位
7
6
名称
5
4
3
PT5
PT4
PSMB1
2
1
0
PS1
PVBUS
类型
R
R
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xF7 ; SFR 页 = 所有页
位
名称
:6
未使用
PT5
5
功 能
读 = 00b, 写 = 忽略。
定时器 5 中断优先级控制。
该位设置定时器 5 中断的优先级。
0:定时器 5 中断为低优先级。
1:定时器 5 中断为高优先级。
4
PT4
定时器 4 中断优先级控制。
该位设置定时器 4 中断的优先级。
0:定时器 4 中断为低优先级。
1:定时器 4 中断为高优先级。
3
PSMB1
SMBus1 中断优先级控制。
该位设置 SMB1 中断的优先级。
0:SMB1 断为低优先级。
1:SMB1 断为高优先级。
2
1
保留
PS1
必须写 0b。
UART1 中断优先级控制。
该位设置 UART1 中断的优先级。
0:UART1 断为低优先级。
1:UART1 断为高优先级。
0
PVBUS
VBUS 电平中断优先级控制。
该位设置 VBUS 中断的优先级。
0:VBUS 断为低优先级。
1:VBUS 断为高优先级。
??? 1.4
126
C8051F380/1/2/3/4/5/6/7/C
16.3. INT0 和 INT1 外部中断源
两个外部中断源 INT0 和 INT1 可被配置为低电平有效或高电平有效,边沿触发或电平触发。IT01CF 寄存器
中的IN0PL (INT0 极性) 和 IN1PL (INT1 极性) 位用于选择高电平有效还是低电平有效;TCON(见第 266 页
26.1. 节 “ 定时器 0 和定时器 1” )中的 IT0 和 IT1 用于选择电平或边沿触发。下表列出了可能的配置。
IT0
IN0PL
1
1
0
0
0
1
0
1
INT0 中断
低电平有效,边沿触发
高电平有效,边沿触发
低电平有效,电平触发
高电平有效,电平触发
IT1
IN1PL
1
1
0
0
0
1
0
1
INT1 中断
低电平有效,边沿触发
高电平有效,边沿触发
低电平有效,电平触发
高电平有效,电平触发
INT0 和 INT1 所使用的端口引脚在 IT01CF 寄存器中定义 (见 SFR 定义 16.7)。注意,INT0 和 INT0 端口
引脚分配与交叉开关的设置无关。INT0 和 INT1 监视分配给它们的端口引脚,不影响被交叉开关分配了相同
引脚的外设。如果要将一个端口引脚只分配给 INT0 和 / 或 INT1,则应配置交叉开关使其跳过所选择的引
脚。这可以通过设置寄存器 PnSKIP 中的相应位来实现(有关配置交叉开关的详细信息见第 154 页 20.1. 节
“ 优先权交叉开关译码器 ” )。
IE0 (TCON.1) 和 IE1 (TCON.3) 分别为外部中断 INT0 和 INT1 的中断标志。如果 INT0 或 INT1 外部中断被
配置为边沿触发, CPU 在转向 ISR 时会用硬件自动清除相应的中断标志。当被配置为电平触发时,在输入
有效期间 (根据极性控制位 IN0PL 或 IN1PL 的定义)中断标志将保持在逻辑 1 状态;在输入无效期间该标
志保持逻辑 0 状态。电平触发的外部中断源必须一直保持输入有效直到中断请求被识到,在 ISR 执行结束之
前必须使该中断请求无效,否则将产生另一次中断请求。
127
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 16.7. IT01CF:INT0/INT1 配置寄存器 O
位
7
名称
IN1PL
IN1SL[2:0]
IN0PL
IN0SL[2:0]
类型
R/W
R/W
R/W
R/W
复位
0
6
0
5
0
4
3
0
0
2
0
1
0
0
1
SFR 地址 = 0xE4 ; SFR 页 = 0
位
名称
7
IN1PL
功 能
INT1 极性。
0:INT1 输入为低电平有效。
1:INT1 输入为高电平有效。
6:4
IN1SL[2:0] INT1 端口引脚选择位。
这些位用于选择分配给 INT1 的端口引脚。注意,该引脚分配与交驻开关无关; INT1
将监视分配给它的端口引脚,但不影响被交叉开关分配了相同引脚的外设。如果将交
叉开关配置为跳过所选择的引脚,则端口引脚将不会被分配给外设。
000:选择 P0.0
001:选择 P0.1
010:选择 P0.2
011:选择 P0.3
100:选择 P0.4
101:选择 P0.5
110:选择 P0.6
111:选择 P0.7
3
IN0PL
INT0 极性。
0:INT0 输入为低电平有效。
1:INT0 输入为高电平有效。
2:0
IN0SL[2:0] INT0 端口引脚选择位。
这些位用于选择分配给 INT0 的端口引脚。注意,该引脚分配与交驻开关无关; INT0
将监视分配给它的端口引脚,但不影响被交叉开关分配了相同引脚的外设。如果将交
叉开关配置为跳过所选择的引脚,则端口引脚将不会被分配给外设。
000:选择 P0.0
001:选择 P0.1
010:选择 P0.2
011:选择 P0.3
100:选择 P0.4
101:选择 P0.5
110:选择 P0.6
111:选择 P0.7
??? 1.4
128
C8051F380/1/2/3/4/5/6/7/C
129
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
17. 复位源
复位电路允许很容易地将控制器置于一个预定的缺省状态。在进入复位状态时,将发生以下过程:

CIP-51 停止程序执行

特殊功能寄存器 (SFR) 被初始化为所定义的复位值

外部端口引脚被置于一个已知状态
中断和定时器被禁止。

所有的 SFR 都被初始化为预定值,SFR 中各位的复位值在 SFR 的详细说明中定义。在复位期间内部数据存
储器的内容不发生改变,复位前存储的数据保持不变。但由于堆栈指针 SFR 被复位,堆栈实际上已丢失,
尽管堆栈中的数据未发生变化。
端口 I/O 锁在器的复位值为 0xFF (全部为逻辑 1),处于漏极开路方式。在复位期间和复位之后弱上拉被使
能。对于 VDD 监视器和上电复位,RST 引脚被驱动为低电平,直到器件退出复位状态。
在退出复位状态时,程序计数器 (PC) 被复位,MCU 使用内部振荡器作为默认的系统时钟。看门狗定时器被
使能,使用系统时钟的 12 分频作为其时钟源。程序从地址 0x0000 开始执行。
VDD
上电复 位
电源
监视器
Px.x
+
-
比较 器 0
0
使能
RST
(线或)
+
-
Px.x
C0RSEF
时钟
丢失
检测器
(单 稳)
EN
复位
逻辑
PCA
WDT
(软件复 位)
SWRSF
非法
FLA SH
操作
内 部振荡器
XTAL1
XTAL2
外 部振荡器
驱动电 路
M CD
使能
WDT
使能
EN
内部低 频
振荡器
系 统时钟
CIP-51
微控制器核
系 统复位
时钟选择
扩 展中断系统
图 17.1. 复位源框图
??? 1.4
129
C8051F380/1/2/3/4/5/6/7/C
17.1. 上电复位
在上电期间,器件保持在复位状态, RST 引脚被驱动到低电平,直到 VDD 上升到超过 VRST 电平并稳定。
从复位开始到退出复位状态要经过一个上电简称位延时 (TPORDelay) ;该处时随着 VDD 上升时间的增大而
减小(VDD 上升时间被定义为 VDD 从 0V 上升到 VRST 的时间)。图 17.2 给出了上电和 VDD 监视器事件的
时序。最大 VDD 上升时间为 1ms ;更长的上升时间可能导致器件在 VDD 达到 VRST 电平之前退出复位状
态。上升时间小于 1ms 时,上电复位延时 (VPORDelay) 通常小于 0.3ms。
在从上电或 VDD 监视器复位状态退出时,PORSF 标志 (RSTSRC.1) 被硬件置为逻辑 1。当 PORSF 标志被
置 1 时,RSTSRC 寄存器中的所有其它复位标志都是不确定的 (PORSF 被任何其它复位源清 0)。由于所
有的复位都导致程序从同一个地址 (0x0000) 开始执行,软件可以通过读 PORSF 标志来确定是否为上电产
生的复位。在一次上电复位后,内部数据存储器中的内容应被认为是不确定的。在上电复位后, VDD 监视器
VDD
VRST
VD
D
电源电压
被使能。
t
逻辑高电平
逻辑低电平
RST
TPORD el ay
VDD监视器
复位
上电复位
图 17.2. 上电复位和 VDD 监视器复位时序
130
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
17.2. 掉电复位 / VDD 监视器
当发生掉电或因电源波动导致 VDD 降到 VRST 以下时,电源监视器将 RST 引脚驱动为低电平并使 CIP-51
保持复位状态(见图 17.2)。当 VDD 又回到高于 VRST 的电平时,CIP-51 将退出复位状态。注意,尽管内
部数据存储器的内容可能没有因掉电复位而发生改变,但无法确定 VDD 是否降到了数据保持所要求的最低
电平以下。如果 PORSF 标志的读出值为 1,则内部 RAM 的数据可能不再有效。在上电复位后 VDD 监视器
被使能,它的状态 (使能 / 禁止)不受任何其它复位源的影响。例如,如果 VDD 监视器被程序禁止,执行
一次软件复位后 VDD 今天朋友可靠地仍然为禁止状态。
注意:如果要从禁止状态启用 VDD 监视器,则在选择 VDD 监视器作为复位源之前,必须先使能 VDD 监视
器。在 VDD 监视器被使能或稳定之前选其为复位源可能导致系统复位。在有些应用中,这种复位是不希望
发生的。如果在应用中不希望发生这种复位,则应在使能 VDD 监视器和将其选择为复位源之间应引入延时。
从禁止状态使能 VDD 监视器和将其配置为复位源的步骤如下:
1. 使能 VDD 监视器 (VDMEN 中的 VDM0CN 位 = 1) ;
2. 如果需要,等待 VDD 监视器稳定 (见表 5.4 的 VDD 监视器启动时间);
3. 选择 VDD 监视器作为复位源 (RSTSRC 中的 PORSF 位 =1)。
图 17.2 给出了 VDD 监视器的时序。注意:VDD 监视器复位不会产生上电复位延迟。表 5.4 给出了 VDD 监视
器的电气特性。
??? 1.4
131
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 17.1. VDM0CN:VDD 监视器控制寄存器
位
7
6
名称
VDMEN
VDDSTAT
类型
R/W
复位
可变
5
4
3
2
1
0
R
R
R
R
R
R
R
可变
可变
可变
可变
可变
可变
可变
SFR 地址 = 0xFF ; SFR 页 = 所有页
位
名称
7
VDMEN
功能
VDD 监视器使能。
该位控制 VDD 监视器电源的通断。 VDD 监视器在被选择为复位源 (在寄存器
RSTSRC 中,见 SFR 定义 17.2)之前不能产生系统复位。在 VDD 监视器稳定之前
选其为复位源可能产生系统复位。在不希望产生这种复位的系统中,在使能 VDD 监
视器和选其为复位源之间应引入延时。 VDD 监视器的最小启动时间见表 5.4。
0:禁止 VDD 监视器。
1:使能 VDD 监视器。
6
VDDSTAT
VDD 状态。
该位指示当前电源状态 (VDD 监视器输出)。
0:VDD 等于或低于 VDD 监视器阈值。
1:VDD 高于 VDD 监视器阈值。
5:0
未使用
读 = 000000b ;写 = 忽略。
17.3. 外部复位
外部 RST 引脚提供了使用外部电路强制 MCU 进入复位状态的手段。在 RST 引脚上加一个低电平有效信号
将导致 MCU 进入复位状态。为防止强噪声引起复位,可能有必要对 RST 引脚提供一个外部上拉和 / 或去耦
电容。 RST 引脚的电气特性见表 5.4。从外部复位状态退出后, PINRSF 标志 (RSTSRC.0) 被置 1。
17.4. 时钟丢失检测器复位
时钟丢失检测器 (MCD) 是由系统时钟触发的单稳态电路。如果系统时钟保持高或低电平的时间大于 MCD 超
时时间,则会产生复位。在发生 MCD 复位后,MCDRST 标志 (RSTSRC.2) 的读出值为 1,表示本次复位源
为 MCD ;否则该位读出值为 0. 向 MCDRSF 位写 1 将使能时钟丢失检测器;写 0 将禁止时钟丢失检测器。
RST 引脚的状态不受该复位的影响。
17.5. 比较器 0 复位
向 C0RSEF 标志 (RSTSRC.5) 写 1 可以将比较器 0 配置为复位源。应在写 C0RSEF 之前使能比较器 0 并等
待输出稳定,以防止通电瞬间在输出端产生抖动,从而导致不希望的复位。比较器 0 复位为低电平有效:如
果同相端输入电压 (CP0+) 小于反相端输入电压 (CP0-) ,则产生系统复位。在发生比较器 0 复位后,
C0RSEF 标志 (RSTSRC.5) 的读出值为 1,表示本次复位源为比较器 0 ;否则该位读出值为 0。 RST 引脚
的状态不受该复位的影响。
132
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
17.6. PCA 看门狗定时器复位
可编程计数器阵列 (PCA) 的可编程看门狗定时器 (WDT) 功能可用于在系统出现错误的情况下防止软件运行
失控。可以通过软件使能或禁止 PCA 的 WDT 功能(见第 308 页 27.4. 节 “ 看门狗定时器方式 ” )。在每次
复位后, WDT 被使能并使用 SYSCLK / 12 作为计数时钟。如果因系统出错使用户软件不能更新 WDT,则
WDT 将产生一次复位, WDTRSF 位 (RSTSRC.5) 被置 1。 RST 引脚的状态不受该复位的影响。
17.7. FLASH 错误复位
如果 Flash 读、写或擦除操作的地址为非法地址,将发生系统复位。下述的任何一种情况都会导致 FLASH
操作错误复位:

编程硬件试图写或探险的 FLASH 地址超出了用户代码空间的极限地址。

固件的 FLASH 读地址超出了用户代码空间,即 MOVC 操作的地址大于用户代码空间的极限地址。


程序读地址超出了用户代码空间。这种情况发生在用户代码试图转移到大于用户代码空间的极限地址
时。
当 FLASH 读、写或擦除被安全设置禁止时。

当在 VDD 监视器未被使能时进行 FLASH 写或探险操作。
在发生 FLASH 错误复位后, FERROR 位 (RSTSRC.6) 被置 1。 RST 引脚的状态不受该复位的影响。
17.8. 软件复位
软件可以通过向 SWRSF 位 (RSTSRC.4) 写 1 强制产生一次系统复位。在发生软件强制复位后,SWRSF 位
的读出值为 1。 RST 引脚的状态不受该复位的影响。
17.9. USB 复位
向寄存器 RSTSRC 中的 USBRSF 位写 1 将选择 USB0 为复位源。在 USB0 被选择为复位源的情况下,下
面的任何事件都会导致系统复位。
1. 在 USB 网络上检测到 RESET 命令。 USB 功能控制器 (USB0)必须被使能为检测 RESET 命令。有
关 USB 功能控制器的详细信息见第 172 页节 21.“ 通用串行总线控制器 (USB0)”。
2. VBUS 引脚上的下降沿或上升沿。
发生 USB 复位后, USBRSF 位的读出值为 1。RST 引脚的状态不受该复位的影响。
??? 1.4
133
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 17.2. RSTSRC:复位源寄存器
位
7
6
5
4
3
2
1
0
名称
USBRSF
FERROR
C0RSEF
SWRSF
WDTRSF
MCDRSF
PORSF
PINRSF
类型
R/W
R
R/W
R/W
R
R/W
R/W
R
复位
可变
可变
可变
可变
可变
可变
可变
可变
SFR 地址 = 0xEF ; SFR 页 = 所有页
位
名称
描述
写
读
7
USBRSF USB 复位标志。
写 1 使能 USB 为复位源。 如果最后一次复位是由
USB 引起的,则置 1。
6
FERROR Flash 错误复位标志。
N/A
如果最后一次复位是由
FLASH 读 / 写 / 擦除错误
引起的,则置 1。
5
C0RSEF 比较器 0 复位使能和标志。
写 1 使能比较器 0 为复位
源
如果最后一次复位是由比
较器 0 引起的,则置 1。
4
SWRSF
写 1 强制产生一次系统复
位。
如果最后一次复位是由写
SWRSF 位引起的,则置
1。
如果最后一次复位是由
WDT 超时引起的,则置
1。
软件强制复位和标志。
3
WDTRSF 看门狗定时器复位标志
N/A
2
MCDRSF 时钟丢失检测器使能和标志
写 1 使能时钟丢失检测器 如果最后一次复位是由时
为复位源。 MCD 在检测到 钟丢失检测器超时引起的,
时钟丢失条件时触发复位。 则置 1。
1
PORSF
上电 / VDD 监视器复位标志和 , 写 1 使能 VDD 监视器为复
位源。
VDD 监视器复位使能
在 VDD 监视器被使能和稳
定之前向该位写 1 可能导
致系统复位。
0
PINRSF
硬件引脚复位标志
N/A
注意 : 不要对该寄存器使用读 - 修改 - 写操作。
134
??? 1.4
任何时刻发生上电复位或
VDD 监视器复位,则该位
置 1。
该位被置 1 时,所有其它
RSTSRC 标志都是不确定
的。
如果最后一次复位是由
RST 引脚引起的,则置 1。
C8051F380/1/2/3/4/5/6/7/C
18. Flash 存储器
C8051F38x 内部有可再编程的 FLASH 存储器,用于程序代码和非易失性数据存储。可以通过 C2 接口或由
软件使用 MOVX 指令对 FLASH 存储器进行在系统编程。一个 FLASH 位一旦被清 0,必须经过擦除才能再
回到 1 状态。在进行重新编程之前,一般要将数据字节擦除 (置为 OxFF)。为了保证操作正确,写和擦除
操作由硬件自动定时,不需要进行数据查询来判断写 / 擦除操作何时结束。在 FLASH 写 / 擦除操作期间,程
序暂停执行。
18.1. FLASH 存储器编程
对 FLASH 存储器编程的最简单的方法是使用由 Silicon Labs 公司或第三方供应商提供的编程工具,通过 C2
接口编程,这是对未被初始化过的器件的唯一编程方法。有关对 FLASH 程序存储器编程的 C2 命令的详细
信息见第 316 页 28. 节 “C2 接口 ” 。
为了保证 FLASH 内容的正确性,强烈建议在用软件对 FLASH 存储器进行写和 / 或擦除操作的系统中使能
VDD 监视器。还有一点至关重要,就是器件使用大于 25 MHz 的时钟时,应保证寄存器 FLSCL 中的 FLRT
位被置 1。
18.1.1. FLASH 锁定和关键码功能
从用户软件写和擦除 FLASH 受 FLASH 锁定和关键码功能和保护。在进行 FLASH 操作之前,必须按顺序向
FLASH 锁定和关键码寄存器 (FLKEY) 写入正确的关键码。关键码为:0xA5, 0xF1。写关键码的时间并不
重要,但必须按顺序写。如果写关键码的顺序不对或写入了错误的关键码,FLASH 写和擦除操作将被禁止,
直到下一次系统复位。如果在正确定入关键码之前进行了 FLASH 写或擦除操作,FLASH 写和擦除也将被禁
止。每次 FLASH 写和擦除操作之后,FLASH 锁定功能复位;在进行下一次 FLASH 写或擦除操作之前,必
须重新写关键码。 SFR 定义 18.2 给出了 FLKEY 寄存器的详细说明。
18.1.2. FLASH 擦除
可以用软件使用 MOVX 指令对 FLASH 存储器编程,像一般的操作数一样为 MOVX 指令提供待编程的地址
和数据字节。在使用 MOVX 指令对 FLASH 存储器写入之前,必须先允许 FLASH 写操作。允许 FLASH 写
操作的过程是:1) 按顺序向 FLASH 锁定寄存器 (FLKEY)写入 FLASH 关键码; 2) 将程序存储写允许位
PSWE (PSCTL.0) 设置为逻辑 1 (这将使 MOVX 操作指向目标 FLASH 存储器)。 PSWE 位将保持置位状
态,直到被软件清除。
写 FLASH 存储器可以清 0 数据位,但不能使数据位置 1,只有擦除操作能将 FLASH 中的数据位置 1。所以
在写入冷的值之前,必须先擦除待编程的地址。 FLASH 存储器是以 512 字节的扇区为单位组织的,一次擦
除操作将擦除整个扇区 (将扇区内的所有字节置为 0xFF)。擦除一个 512 字节扇区 (页)的步骤如下:
1. 禁止中断 (建议这样做)。
2. 向 FLKEY 写第一个关键码:0xA5。
3. 向 FLKEY 写第二个关键码:0xF1。
4. 置 ‘1’PSEE 位 ( 寄存器 PSCTL),以允许 FLASH 扇区擦除。
5. 置 ‘1’PSWE 位 (寄存器 PSCTL),以允许 FLASH 写入。
6. 用 MOVX 指令向待擦除页内的任何一个地址写入一个数据字节。
7. 清除 PSWE 位 ( 寄存器 PSCTL)。
8. 清除 PSEE 位 ( 寄存器 PSCTI)。
??? 1.4
135
C8051F380/1/2/3/4/5/6/7/C
18.1.3. FLASH 写
FLASH 存储器可以一次写一个字节,也可以一次写两个字节 (一组)。寄存器 PFE0CN (SFR 定义 12.1)
中的 FLBWE 控制在一次 FLASH 写操作写入一个字节或一个两字节的块。当 FLBWE 被清 0 时,每次 FLASH
写操作写入一个字节;当 FLBWE 被置 1 时,每次 FLASH 写操作写入两个字节 (块写)。块写时间与单字
节的时间相同,在向 FLASH 存储器写入大量数据时可以节省时间。
在单字节写 FLASH 期间,字节数据是分别写入的,每个 MOVX 写指令执行一次 FLASH 写操作。单字节写
FLASH 人建议步骤如下 :
1. 禁止中断 (建议这样做)。
2. 清除 FLBWE 位 (寄存器 PEE0CN),以选择单字节写方式。
3. 置 ‘1’PSWE 位 ( 寄存器 PSCTL)。
4. 清除 PSEE 位 ( 寄存器 PSCTL)。
5. 写第一个关键码:0xA5。
6. 写第二个关键码:0xF1.
7. 用 MOVX 指令向扇区内的目标地址写入一个数据字节。
8. 清除 PSWE 位。
9. 重新使能中断。
重复步骤 5-7,直到写完每个字节。
对于 FLASH 块写,只在每个块的最后一个字节被写入 (用 MOVX 写指令)后才执行 FLASH 写过程。一个
FLASH 写入块为两字节 ,从偶地址到奇地址。写操作必须按顺序进行 (即先写以 0b 结尾的地址,后写以
1b 结尾的地址)。 FLASH 写过程发生在对以 1b 结尾的地址进行的 MOVX 写操作之后。如果块中的某个字
节不需要被更新,则应向该字节写 0xFF。 FLASH 块写的建议步骤如下:
1.
2.
3.
4.
5.
6.
7.
8.
禁止中断 (建议这样做)。
置 ‘1’FLBWE 位 ( 寄存器 PFE0CN),以选择块写方式。
置 ‘1’PSCTL 中的 PSWE 位。
清除 PSCTL 中的 PSWE 位。
第一个关键码:0xA5。
第二个关键码:0xF1。
用 MOVX 指令向块中的偶地址 (以 0b 结尾)写入第一个数据字节。
写第一个关键码:0xA5。
9. 写第二个关键码:0xF1。
10.用 MOVX 指令向块中的奇地址 (以 1b 结尾)写入第二个数据字节。
11. 清除 PSWE 位。
12.重新允许中断。
重复步骤 5–10,直到写完每个块。
136
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
18.2. 非易失性数据存储
FLASH 存储器除了用于存储程序代码之外还可以用于非易失性数据存储。这就允许在程序运行时计算和存
储类似标定系数这样的数据。数据写入时用 MOVX 指令,读出时用 MOVC 指令。注意:MOVX 读指令总是
指向 XRAM。
尽管 FLASH 存储器可以每次写一个字节,但必须首先擦除整个扇区。为了修改一个多字节数据集中的某一
个字节,整个数据集必须被保存到一个临时存储区。接下来将扇区擦除,更新数据集,最后将数据集写回到
原扇区。
18.3. 安全选项
CIP-51 提供了安全选项以保护 FLASH 存储器不会被软件意外修改,以及防止产权程序保修期矣常数被读
取。程序存储器写允许 (PSCTL 寄存器的 PSWE)和程序存储器擦除允许 (PSCTL 寄存器中的 PSEE)
位保护 FLASH 存储器不会被软件意外修改。在用软件修改 FLASH 存储器的内容之前, PSWE 必须被显式
置 1 ;在用软件擦除 FLASH 存储器之前,PSWE 位和 PSEE 位都必须被置 1. 此外,CIP-51 还提供了可以
防止通过 C2 接口读取或修改产权程序代码和常数这一安全功能。
保存在 FLASH 用户空间的最后一个字节中的安全锁定字节保护 FLASH 存储器,使其不能被非保护代码或
通过 C2 接口访问 (读、写或擦除)。 FLASH 安全机制允许用户从 0 页 (地址 0x0000~0x01FF)开始锁定
n 个 512 字节的 FLASH 页,其中 n 是安全锁定字节的反码。注意:当任何一个其它 FLASH 页被锁定时,
包含 FLASH 安全锁定字节的页也被锁定。见下面的例子。
安全锁定字节:
反码:
被锁定的 FLASH 页:
被锁定的地址:
11111101b
00000010b
3 (2 + 锁定字节页 )
前两个 FLASH 页:0x0000 to 0x03FF
FLASH 锁定字节页:(0xFA00 to 0xFBFF for 64k 器件; 0x7E00 to 0x7FFF
for 32k 器件 )
C8 05 1 F3 80 /2/4 /6
保留 区
0xF C00
锁定 字节
0xF BF F
0xF BF E
0xF A00
当有 任何一 个其 他
FLA SH页被锁 定时 ,
该页 被锁定
C8 05 1 F38 1 /3 /5 /7
锁定 字节
F LA SH 存 储器
按5 12字节 页组 织
0x7FFF
0x7FFE
未锁 定的 FLA SH 页
0x7E00
未锁定 的 FL A SH 页
由F LA SH安全 锁定 字节
决定的 访问限 制地址
0x0000
0x0000
图 18.1. FLASH 程序存储器组织和安全字节
FLASH 安全级别取决于对 FLASH 访问的方式。有 3 种可被限制的访问方式:经 C2 调试接口的读、写和擦
除,在非锁定页执行的用户固件,在锁定页执行的用户固件。
??? 1.4
137
C8051F380/1/2/3/4/5/6/7/C
经 C2 调试接口访问 FLASH:
1. 任何未锁定的页均可被读、写或擦除。
2. 被锁定的页不能被读、写或擦除。
3. 包含锁定字节的页在未被锁定时可以被读、写或擦除。
4. 读锁定字节的内容总是被允许。
5. 不允许追加锁定页 (将锁定字节中的 0 改写为 1)需要使用 C2 器件擦除命令,这将擦除所有页,包括
含有锁定字节的页和锁定字节本身。
6. 对 FLASH 页解除锁定 (将锁定字节中的 0 改写为 1)需要使用 C2 器件擦除命令,这将擦除所有页,
包括含有锁定字节的页和锁定字节本身。
7. 保留区不能被读、写或擦除。
在未锁定页执行的用户固件访问 FLASH:
1.
2.
3.
4.
5.
6.
7.
除包含锁定字节的页之外,任何未被锁定的页均可被读、写或擦除。
被锁定的页不能被读、写或擦除。
包含锁定字节的页不能被擦除,在未被锁定时可以被读或写。
读锁定字节的内容总是被允许。
不允许追加锁定页 (将锁定字节中的 1 改写为 0);
不能对 FLASH 页解除锁定 (将锁定字节中的 0 改写为 1)。
保留区不能被读、写或擦除。访问保留区或任何被锁定页的操作将导致 FLASH 错误型器件复位。
在被锁定页执行的用户固件访问 FLASH:
1.
2.
3.
4.
5.
6.
除包含锁定字节的页之外,任何未被锁定的页均可被读、写或擦除。
除包含锁定字节的页之外,任何未被锁定的页均可被读、写或擦除。
包含锁定字节的页不能被擦除,只能被读或写。
读锁定字节的内容总是被允许。
不允许追加锁定页 (将锁定字节中的 1 改写为 0);
不能对 FLASH 页解除锁定 (将锁定字节中的 0 改写为 1)。
7. 保留区不能被读、写或擦除。访问保留区或任何被锁定页的操作将导致 FLASH 错误型器件复位。
138
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 18.1. PSCTL:程序存储读写控制
位
7
6
5
4
3
2
名称
1
0
PSEE
PSWE
类型
R
R
R
R
R
R
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 =0x8F ; SFR 页 = 所有页
位
名称
7:2
1
保留
PSEE
0
PSWE
功能
必须写 000000b。
程序存储擦除允许。
将该位置 1 后允许擦除 FLASH 程序存储器中的一个页 (前提是 PSWE 位也被置 1)。
如果该位置 1 并且 FLASH 写操作被使能 (PSWE 为逻辑 1),用 MOVX 指令进行一次
写操作将擦除包含 MOVX 指令寻址的那个 FLASH 页。写入的数据字节可以是任意值。
0:禁止擦除 FLASH 程序存储器。
1:允许擦除 FLASH 程序存储器。
程序存储写允许。
将该位置 1 后允许用 MOVX 写指令向 FLASH 程序存储器写一个字节。在写数据之前必
须先将待写地址擦除。
0:禁止擦除 FLASH 程序存储器。
1:允许写 FLASH 程序存储器; MOVX 写指令寻址 FLASH 存储器。
??? 1.4
139
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 18.2. FLKEY:FLASH 锁定和关键码寄存器
位
7
6
5
4
3
名称
FLKEY[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xB7 ; SFR 页 = 所有页
位
名称
功能
7:0 FLKEY[7:0] FLASH 锁定和关键码寄存器。
写:
该寄存器为 FLASH 擦除和写操作提供锁定的和关键码功能。通过向该寄存器按顺序
写入关键码 0xA5 和 0xF1 来使能 FLASH 写和擦除。在执行完一次写或擦除操作后,
后续的 FLASH 写或擦除操作被自动禁止。如果写 FLKEY 操作不正确或在写或擦除操
作被禁止时试图写或擦除 FLASH,则 FLASH 将被永久性锁定 (不能写或擦除),直
到下一次器件复位。如果应用固件从不写 FLASH,可以用软件向 FLKEY 与入一个非
0xA5 的值,以有意锁定 FLASH。
读:
位 1-0 指示当前的 FLASH 锁定状态
00:FLASH 写 / 擦除被锁定。
01:第一个关键码已被写入 (0xA5)。
10:FLASH 处于解锁状态 ( 允许写 / 擦除 )。
11:FLASH 写 / 擦除操作被禁止,直到下一次复位。
140
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 18.3. FLSCL:定时寄存器
位
7
名称
FOSE
保留
FLRT
保留
类型
R/W
R/W
R/W
R/W
复位
1
6
5
0
4
0
3
0
0
2
0
1
0
0
0
SFR 地址 = 0xB6 ; SFR 页 = 所有页
位
名称
7
FOSE
6:5
4
3:0
保留
FLRT
保留
功能
FLASH 单稳态定时器使能。
该位用于使能 FLASH 读操作单稳态定时器。当 FLASH 单稳态定时器被禁止时,
FLASH 读出读大器在整个 FLASH 读周期内被使能。当系统时钟频率低于 10MHz 时,
禁止 FLASH 单稳态定时器去增加系统功耗。
0:禁止 FLASH 单稳态定时器。
1:使能 FLASH 单稳态定时器。
必须写 00b.
FLASH 读时间。
该位应被编程为所允许的最小值 (根据系统时钟速度)
0:SYSCLK <= 25 MHz.
1:SYSCLK <= 48 MHz.
必须写 0000b。
??? 1.4
141
C8051F380/1/2/3/4/5/6/7/C
142
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
19. 时钟源
C8051F380/1/2/3/4/5/6/7/C 有一个可编程内高频振荡器、一个可编程内部低频振荡器和一个外部振荡器驱
动电路。可以用 OSCICN 和 OSCICL 寄存器来使能 / 禁止和标定内部高频振荡器,如图 19.1 所示。内部低
频振荡器用 OSCLCN 寄存器来使能 / 禁止和标定。定统时钟 (SYSCLK) 可以来自外部振荡器电路或任何一
个内部振荡器。两个内部振荡器都提供可选择的后调整功能。 USB 时钟 (USBCLK) 可以来自内部振荡器或
外部器电路
选项 2
VDD
选项 3
XT AL2
CLKSL2
CLKSL1
CLKSL0
CLKSEL
USBCLK2
USBCLK1
USBCLK0
IFCN 1
IFCN 0
OSCLCN
OSCLEN
OSC LRD Y
OSCLF3
OSCLF2
OSCLF1
OSCLF0
OSCLD1
OSCLD0
OSCICN
IOSCEN
IFRDY
SUSPEND
OSCICL
OSCLEN OSCLF OSCLD
可编程内部
48 MHz时钟
EN
2
2
XTAL2
1, 2, 4, 8
(12 MHz)
(24 MHz)
OSCLEN
OSCLF
(48 MHz)
EN
SYSCLK
80 kHz
低频振荡器
1, 2, 4, 8
选项 1
OSCLD
XTAL1
输入
电路
10M
OSC
XTAL2
内部 H FO
MU LSEL1
MU LSEL0
MULEN
MU LIN T
MULRDY
内部 HFO / 8
XFCN2
XFCN1
XFCN0
EXOSC
USBCLK
EXOSC / 2
EXOSC / 3
OSCXCN
CLKMUL
EXOSC / 4
内部 LFO
USBCLK2-0
XTAL2
XOSCMD2
XOSCMD1
XOSCMD0
选项 4
图 19.1. 时钟源框图
??? 1.4
142
C8051F380/1/2/3/4/5/6/7/C
19.1. 系统时钟选择
用 CLKSL 寄存器中的 CLKSEL[2:0] 位选择用哪一个振荡器作为系统时钟源。当选择外部振荡器作为系统时
钟时, CLKSL[2:0] 必须被设置为 001b。当选择内部振荡器作为系统时钟时,外部振荡器仍然可以给外设
(定时器、 PCA)提供时钟。系统时钟可以在内部振荡器和外部振荡器之间自由切换,只要所选择的振荡器
被使能并稳定运行。
内部高频和低频振荡器仅需很短的启动时间,可以在写用于使能振荡器的寄存器后立即选其为系统时钟。外
部 RC 和 C 方式一般也不需要启动时间。
19.2. USB 时钟选择
寄存器 USBCL 中的 CLKSELK[2:0] 位选择用作 USB 时钟的振荡源。 USB 时钟可以来自内部振荡器、内部
高频振荡器分频或外部振荡器分频。注意:当 USB0 工作在全速方式时,USB 时钟必须是 48MHz ;当 USB0
工作在低速方式时, USB 时钟必须是 6MHz。 USB 的时钟选择见 SFR 定义 19.1。
下面给出了全速和低速方式下 USB 时钟配置的几个例子:
USB 全速 (48 MHz)
内部振荡器
时钟信号
USB 时钟
内部振荡器
输入源选择
内部振荡器 *
不分频
外部振荡器
寄存器位设置
USBCLK = 000b
IFCN = 11b
时钟信号
USB 时钟
外部振荡器
输入源选择
外部振荡器 *
CMOS 振荡器方式
48 MHz 振荡器
寄存器位设置
USBCLK = 010b
XOSCMD = 010b
注意 : 对于该配置,时钟恢复电路必须被使能。
USB 低速 (6 MHz)
内部振荡器
143
时钟信号
USB 时钟
内部振荡器
输入源选择
内部振荡器 / 8
不分频
外部振荡器
寄存器位设置
USBCLK = 001b
IFCN = 11b
时钟信号
USB 时钟
外部振荡器
输入源选择
外部振荡器 / 4
CMOS 振荡器方式
24 MHz 振荡器
晶体振荡器方式
24 MHz 振荡器
寄存器位设置
USBCLK = 101b
XOSCMD = 010b
??? 1.4
XOSCMD = 110b
XFCN = 111b
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 19.1. CLKSEL:时钟选择寄存器
位
7
6
名称
类型
R
Reset
0
5
4
3
2
1
USBCLK[2:0]
OUTCLK
CLKSL[2:0]
R/W
R/W
R/W
0
0
0
0
0
0
0
0
SFR 地址 = 0xA9 ; SFR 页 = 所有页
位
名称
功能
7
未使用
读 = 0b ;写 = 忽略。
6:4 USBCLK[2:0] USB 时钟源选择位。
000:USBCLK 源自内部高频振荡器。
001:USBCLK 源自内部高频振荡器 / 8。
010:USBCLK 源自外部振荡器。
011:USBCLK 源自外部振荡器 /2。
100:USBCLK 源自外部振荡器 /3。
101:USBCLK 源自外部振荡器 /4。
110:USBCLK 源自内部低频振荡器。
111:保留。
3
OUTCLK
交叉开关时钟输出选择位。
如果 SYSCLK 信号在交叉开关中被使能,该位在 SYSCLK 或与端口 I/O 引脚同步后
的 SYSCLK 之间选择输出。
0:选择 SYSCLK 作为交叉开关 SYSCLK 信号输出。
1:选择与端口 I/O 同步后的 SYSCLK 作为交叉开关 SYSCLK 信号输出。
2:0
CLKSL[2:0]
系统时钟源选择位。
000:SYSCLK 源自内部高频振荡器,根据寄存器 OSCICN 中的 IFCN 位选择分频
系数。
001:SYSCLK 源自外部振荡器。
010:SYSCLK 源自内部振荡器 / 2。
011:SYSCLK 源自内部振荡器。
100:SYSCLK 源自内部低频振荡器,根据寄存器 OSCLD 中的 OSCLCN 位选择分
频系数。
101-111:保留。
??? 1.4
144
C8051F380/1/2/3/4/5/6/7/C
145
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
19.3. 可编程内部高频 (H-F) 振荡器
C8051F380/1/2/3/4/5/6/7/C 器件包含一个可编程内部高频振荡器,该振荡器在系统复位后被默认为系统时
钟。该振荡器的周期可以通过 OSCICL 寄存器 (见 SFR 定义 19.2)编程。
在 C8051F380/1/2/3/4/5/6/7/C 器件中, OSCICL 寄存器已经过工厂校准,对应 48 MHz 的基频。注意:系
统时钟可以从可编程内部振荡器经过 4 分频后再分频得到,分频系数由寄存器 OSCICN 中的 IFCN 位设定,
可为 1、 2、 4 或 8。复位后的缺少分频系数为 8,对应 1.5MHz 的系统时钟。
19.3.1. 内部振荡器挂起方式
向寄存器 OSCICN 中的 SUSPEND 位写 1 可以将内部高频振荡器置于挂起方式。如果系统时钟源自该内部
振荡器,则 外设或 CIP-51 的输入时钟将停止,直到检测到一个非空闲 USB 事件或 VBUS 输入信号出现上
升沿或下降下沿。注意:USB 收发器在其被禁止时仍能检测到 USB 事件。
当有振荡器唤醒事件发生时,内部振荡器、CIP-51 和受影响的外设恢复正常工作。CPU 从写 SUSPEND 位
的下一条指令恢复执行。
注:在挂起方式,可以关断预取引擎以节省功耗。此外,两个稳压器 (REG0 和 REG1) 在挂起方式都有低功
耗方式,可以进一步节省功耗。
SFR 定义 19.2. OSCICL:内部高频振荡器校准寄存器
位
7
6
5
4
3
2
1
0
可变
可变
可变
OSCICL[6:0]
名称
类型
R
复位
0
R/W
可变
可变
可变
可变
SFR 在址 = 0xB3 ; SFR 页 = 所有页
位
7
6:0
名称
功 能
读 = 0 ; 写 = 忽略。
未使用
OSCICL[6:0] 内部振荡器校准位。
这些位决定内部高频振荡器的周期。当被设置为 0000000b 时, H-F 振荡器工作在最
高频率;当被设置为 1111111b 时, H-F 振荡器工作在最低频率。该寄存器的内容已
经过工厂校准,对应 48 MHz 的内部振荡器频率。固件只能在 H-F 振荡器被禁止时
(IOSCEN = 0) 改变 OSCICL 的值。
??? 1.4
145
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 19.3. OSCICN:内部高频振荡器控制寄存器
位
7
6
5
名称
IOSCEN
IFRDY
SUSPEND
类型
R/W
R
R/W
R
R
R
复位
1
1
0
0
0
0
4
3
2
1
0
IFCN[1:0]
R/W
0
0
SFR 地址 = 0xB2 ; SFR 页 = 所有页
位
名称
7
IOSCEN
功 能
内部高频振荡器使能位。
0:内部高频振荡器禁止。
1:内部高频振荡器使能。
内部高频振荡器频率准备好标志。
0:内部高频振荡器未运行在编程频率。
1:内部高频振荡器按编程频率运行。
6
IFRDY
5
SUSPEND
内部高频振荡器挂起使能位。
该位置 1 将内部振荡器置于扶起方式。当有挂起方式唤醒事件发生时,内部振荡器恢
复工作。
4:2
未使用
IFCN[1:0]
读 = 000b ; 写 = 忽略。
1:0
146
内部高频振荡器分频控制位。
内部高频振荡器经过一个 4 分频电路后再由 IFCN 位设置分频。
00:SYSCLK 为内部高频振荡器 /8 (1.5 MHz)。
01:SYSCLK 为内部高频振荡器 /4 (3 MHz)。
10:SYSCLK 为内部高频振荡器 /2 (6 MHz)。
11:SYSCLK 为内部高频振荡器输出 /1 (12 MHz)。
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
19.4. 时钟乘法器
C8051F380/1/2/3/4/5/6/7/C 器件包含一个 48 MHz 高频振荡器,取代了 12 MHz 振荡器和 4x 时钟乘法器,
因此 USB0 模块可直接用内部高频振荡器运行。为了与 C8051F34x 和 C8051F32x 器件兼容,CLKMUL 寄
存器 (SFR 定义 19.4)的行为表现就像时钟乘法器仍然存在并工作。
SFR 定义 19.4. CLKMUL:时钟乘法器控制寄存器
位
7
6
5
名称
MULEN
MULINIT
MULRDY
类型
R
R
R
R
R
R
复位
1
1
1
0
0
0
4
3
2
1
0
MULSEL[1:0]
R
0
0
SFR 地址 = 0xB9 ; SFR 页 = 0
位
名称
7
MULEN
6
MULINIT
5
MULRDY
4:2
1:0
功 能
时钟乘法器使能位。
该位的读出值总是为 1。
时钟乘法器初始化位。
该位的读出值总是为 1。
时钟乘法器准备好位。
该位的读出值总是为 1。
读 = 000b ;写 = 忽略。
未使用
MULSEL[1:0] 时钟乘法器输入选择位。
这两位的读出值总是为 00。
??? 1.4
147
C8051F380/1/2/3/4/5/6/7/C
148
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
19.5. 可编程内部低频 (L-F) 振荡器
C8051F380/1/2/3/4/5/6/7/C 器件包含一个可编程低频内部振荡器,该振荡器的标称频率为 80 kHz。该低频
率振荡器电路包含一个分频器,分频数由寄存器 OSCLCN 中的 OSCLD 位设定,可为 1、 2、 4 或 8 (见
SFR 定义 19.5)。此外,还有 OSCLF[3:0] 位可用于调节该振荡器的输出频率。
19.5.1. 内部 L-F 振荡器标定
定时器 2 和定时器 3 具有捕捉功能,当驱动它们的时基已知时,可以用该功能获取内部 L-F 振荡器的频率。
当定时器 2 或定时器 3 被配置为 L-F 振荡器捕捉方式时,低频振荡器输出的下降沿 (定时器 2)或上升沿
(定时器 3)将导致相应定时器发生捕捉事件。当捕捉事件发生时,定时器的当前计数值 (TMRnH:TMRnL)
将复制到定时器的重载寄存器 (TMRnRLH:TMRnRLL) 中。根据两次相邻定时器捕捉值的差值,可以计算低
频振荡器的周期。然后可以调整 OSCLF 位以产生期望的振荡器频率。
SFR 定义 19.5. OSCLCN:内部低频振荡器控制寄存器
位
7
6
名称
OSCLEN
OSCLRDY
OSCLF[3:0]
OSCLD[1:0]
类型
R/W
R
R.W
R/W
复位
0
0
5
Varies
4
3
Varies
Varies
2
Varies
1
0
0
0
SFR 地址 = 0x86 ; SFR 页 = 所有页
位
名称
7
OSCLEN
6
OSCLRDY
5:2
功能
内部低频振荡器使能位。
0:内部低频振荡器禁止。
1:内部低频振荡器使能。
内部低频振荡器频率准备好标志。
0:内部低频振荡器频率未稳定。
1:内部低频振荡器频率已稳定。
注:OSCLRDY 仅在发生器件复位和 OSCLD[1:0] 位改变时被清 0。
OSCLF[3:0] 内部低频振荡器频率控制位。
这些位是内部低频振荡器的频率微调控制位。当被设置为 000b 时, L-F 振荡器工作
在最高频率;当被设置为 1111b 时, L-F 振荡器工作在最低频率。固件只能在 L-F 振
荡器被禁止时 (OSCLEN = 0) 改变 OSCLF 位的值。
1:0
OSCLD[1:0] 内部低频振荡器分频选择位。
00:选择 8 分频。
01:选择 4 分频。
10:选择 2 分频。
11:选择 1 分频。
??? 1.4
148
C8051F380/1/2/3/4/5/6/7/C
149
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
19.6. 外部振荡器驱动电路
外部振荡器电路可以驱动外部晶体、陶瓷谐振器、电容或 RC 网络。也可以使用一个外部 CMOS 时钟提供
时钟输入。图 19.1 给出了 4 种外部振荡器选项的原理框图。使用 OSCXCN 寄存器 ( 见 SFR 定义 19.6) 来
使能和配置外部振荡器。
有关外部振荡器使用的重要注意事项:当使用外部振荡器电路时,必须对所用端口引脚进行配置。当外部振
荡器驱动电路被配置为晶体 / 谐振器方式时,端口引脚 P0.2 和 P0.3 分别被用作 XTAL1 和 XTAL2。当外部
振荡器驱动电路被配置为电容、 RC 或 CMOS 时钟方式时,端口引脚 P0.3 被用作 XTAL2。端口 I/O 交叉开
关应被配置为跳过被振荡器电路占用的引脚。有关配置交叉开关的详细说明,见第 154 页 20.1. 节 “ 优先权
交叉开关译码器 ” 。当在晶体 / 陶瓷谐振器电容或 RC 方式使用外部振荡器电路时,应将所用的端口引脚 配
置为模拟输入。在 CMOS 时钟方式,应将所用的端口引脚配置为数字输入。有关端口输入方式选择的详细
信息见第 158 页 20.2. 节 “ 端口 I/O 初始化 ” 。
外部振荡器输出可以被选择作为系统时钟或用于给一些数字外设 (如定时器、 PCA 等)提供时钟。有关每
个数字外设的详细信息,见本手册的相关章节。有关振荡器的详细技术指标见第 37 页节 5.“ 电气特性 ”。
19.6.1. 外部晶体方式
如果外部振荡器使用晶体或陶瓷谐振器,则必须在 XTAL1 和 XTAL2 引脚跨接一个外部晶体 / 谐振器和一个
10MW 的电阻,如图 19.1 中的选项 1 所示。应在 XTAL1 和 XTAL2 引脚加合适的负载电容。XTAL1 和 XTAL2
引脚都应被配置为模拟 I/O,其数字输出驱动器被禁止。
外部晶体配置电路中的电容提供晶体正确振荡所需要的负载。从晶体来看,这两个电容是 “ 串联 ” 的,但与
XTAL1 和 XTAL2 引脚的寄生电容是 “ 并联 ” 的。
注:建议的负载电容取决于晶体的振荡频率和生产厂商。计算负载电容值时请参考晶体的数据手册。
确定两个负载电容值的公式如下:
CA  CB
C L = ----------------------- + C S
CA + CB
其中 :
CA 和 CB 是连接到晶体的电容。
CS 是 PCB 的总寄生电容。
对于典型的布局布线,即晶体与电容引脚尽可能靠近的情况,每个引脚的寄生电容为 2-5 pF。如果 CA 和 CB
相同 (C),则上面的公式变为
C
C L = ---- + C S
2
例如,使用 32 kHz 的音叉晶体,建议的负载电容为 12.5pF,应采用图 19.1 中的配置选项 1。如果每个 XTAL
引脚的寄生电容值为 3pF(总电容位 6pF),则 13 pF 的负载电容跨接在昌体两端的等效电容为 12.5pF,如
图 19.2 所示。
??? 1.4
149
C8051F380/1/2/3/4/5/6/7/C
13 pF
XTAL1
10 M
32 kHz
XTAL2
13 pF
图 19.2. 外部晶体示例
有关外部晶体的重要注意事项:晶体振荡器电路对 PCB 布局布线非常敏感。晶体应尽可能地放置在靠近器
件的 XTAL 引脚,布线应尽可能地短并用地平面屏蔽,以防止其它引线引入噪声或干扰。
当使用外部晶体时,必须用软件将外部振荡器驱动电路配置为晶体振荡器方式或晶体振荡器 2 分频方式。
2 分频电路保证从外部振荡器获取的时钟具有 50% 的占空比。还必须根据晶体频率确定外部振荡器频率控
制值 (XFCN) ( 见 SFR 定义 19.6)。
在晶体振荡器第一次被使能时,外部振荡器有效检测电路允许软件确定外部系统时钟何时有效和运行。在晶
体振荡器稳定之前就切换到外部晶体振荡器可能产生不可预料的后果。建议的晶体启动步骤如下:
1.
2.
3.
4.
5.
6.
配置 XTAL1 和 XTAL2 为模拟 I/O。
通过向端口锁存器写的对应位写 1 来禁止 XTAL1 和 XTAL2 和数字输出驱动器。
配置并使能外部振荡器。
等待至少 1ms。
查询 XTLVLD > 1。
将系统时钟切换到外部振荡器。
150
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
19.6.2. 外部 RC 方式
如果使用外部 RC 网络作为 MCU 的外部振荡源,则电路应被配置为图 19.1 中的先期,即 RC 方式。电容值
不应大于 100pF ;但当电容值很小时, PCB 的寄生电容将在总电容中占支配地位。为了确定 OSCXCN 寄
存器中所需要的外部振荡器频率控制值 (XFCN) ,首先根据下面的方程 19.1 选择能产生所要求的振荡频率
的 PC 网络值。 其中:f= 振荡频率(以 MHz 为单位),C = 电容值(以 pF 为单位),R = 上拉电阻值(以
kW 为单位)。
3
f = 1.23  10 §  R  C 
方程 19.1. RC 方式振荡器频率
例如,如果所期望的频率是 100 kHz,,选 R = 246 kW 和 C = 50 pF:
f = 1.23( 103 ) / RC = 1.23 ( 103 ) / [ 246 x 50 ] = 0.1 MHz = 100 kHz
查 SFR 定义 19.6 中的表,得到所需要的 XFCN 设置值为 010b。
19.6.3. 外部电容方式
如果使用一个电容作为 MCU, 的外部振荡器,则电路应被配置为图 19.1 中的选项 3,即 C 方式。电容不应
大于 100 pF ;但当电容值很小时, PCB 的寄生电容将在总电容中占支配地址。要确定 OSCXCN 寄存器中
所需用的外部振荡器频率控制值(XFCN),首先根据下面的方程 19.2 选择要使用的电容并确定正当频率。
其中:f = 振荡频率(以 MHz, 为单位),C = 电容值(以 pF 为单位),VDD = MCU 电源电压(以 V 为单位)。.
f =  KF    C  V DD 
方程 19.2. C 方式振荡器频率
例如:假设 VDD = 3.0 V and f = 150 kHz:
f = KF / (C x VDD)
0.150 MHz = KF / (C x 3.0)
由于 所需要 的频率 大约为 150 kHz,从 is desired, select the K Factor from the table in SFR 定 义 19.6
(OSCXCN) as KF = 22:
0.150 MHz = 22 / (C x 3.0)
C x 3.0 = 22 / 0.150 MHz
C = 146.6 / 3.0 pF = 48.8 pF
因此,本例中要用的 XFCN 值为 011b, C 为 50 pF。
??? 1.4
151
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 19.6. OSCXCN:外部振荡器控制寄存器
位
7
名称
XCLKVLD
XOSCMD[2:0]
类型
R
R/W
复位
0
6
5
0
0
4
3
2
1
0
XFCN[2:0]
R
0
R/W
0
0
0
0
SFR 地址 = 0xB1 ; SFR 页 = 所有页
位
名称
7
XCLKVLD
6:4
3
2:0
152
功能
外部振荡器有效标志。
提供外部振荡器状态,除了外部 CMOS 时钟方式和外部 CMOS 时钟 2 分频方式
外,在所有的时间对所有的工作方式都有效。在外部 CMOS 时钟方式和外部
CMOS 时钟 2 分频方式, XCLKVLD 总是返回 0 值。
0:外部晶体振荡器未用或未稳定。
1:外部晶体振荡器稳定运行。
XOSCMD[2:0] 外部振荡器方式选择位。
00x:外部振荡器电路禁止。
010:外部 CMOS 时钟方式。
011:外部 CMOS 时钟方式二分频。
100:RC 振荡器方式二分频。
101:电容振荡器方式二分频。
110:晶体振荡器方式。
111:晶体振荡器方式二分频。
未使用
XFCN[2:0]
读 = 0 ;写 = 忽略。
外部振荡器频率控制位。
根据所期望的 RC 方式频率设置。
根据所期望的 C 方式 K 因子设置。
XFCN
晶体方式
RC 方式
电容方式
000
f 20 kHz
f 25 kHz
K 因子 = 0.87
001
20 kHz f 58 kHz
25 kHz f 50 kHz
K 因子 = 2.6
010
58 kHz f 155 kHz
50 kHz f 100 kHz
K 因子 = 7.7
011
155 kHz f 415 kHz
100 kHz f 200 kHz
K 因子 = 22
100
415 kHz f 1.1 MHz
200 kHz f 400 kHz
K 因子 = 65
101
1.1 MHz f 3.1 MHz
400 kHz f 800 kHz
K 因子 = 180
110
3.1 MHz f 8.2 MHz
800 kHz f 1.6 MHz
K 因子 = 664
111
8.2 MHz f 25 MHz
1.6 MHz f 3.2 MHz
K 因子 = 1590
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
20. 端口输入 / 输出
数字和模拟资源可以通过 40 个 I/O 引脚 (C8051F380/2/4/6) 或 25 个 I/O 引脚 (C8051F381/3/5/7) 使用。端
口引脚组织如图 20.1 所示。每个端口引脚都可以被定义为通用 I/O (GPIO)或模拟输入。端口引脚 P0.0~P3.7
可以被分配给内部数字资源,如图 20.3 所示。设计者完全控制数字功能的引脚分配,只受物理 I/O 引脚数
的限制。这种资源分配的灵活性是通过使用优先权交叉开关译码器实现的。注意,不论交叉开关的设置如
何,端口 I/O 引脚的状态总是可以被读到相应的端口锁存器。
交叉开关根据优先权译码表 (图 20.3 和图 20.4)为所选择的内部数字资源分配 I/O 引脚。寄存器 XBR0、
XBR1 和 XBR2 (见 SFR 定义 20.1、 SFR 定义 20.2 和 SFR 定义 20.3)用于选择内部数字功能。
所有端口 I/O 都耐 5V 电压 (参见图 20.2 的端口 I/O 单元电路)。端口 I/O 单元可以被配置为漏极开路或推
挽方式 ( 在端口输出方式寄存器 PnMDOUT 中设置, n = 0,1,2,3,4)。
XBR0, XBR1, XBR2,
PnSKIP 寄 存器
PnMD OU T,
PnMD IN 寄存器
优先权
译码器
最高
优先级
2
U ART0
4
SPI
8
(内部 数字信 号)
SMBu s0
C P0
输出
2
C P1
输出
2
数字
交叉开关
8
P0
I/O
单元
P0.0
P1
I/O
单元
P1.0
P2
I/O
单元
P2.0
P3
I/O
单元
P3.0
SYSC LK
8
6
PC A
2
T 0, T 1
2
UAR T1
最低
优先级
2
SMBus1
8
2
P0.7
P1.7
P2.7
P3.7 *
8
P0
(P0. 0-P0.7)
P1
(P1. 0-P1.7)
P2
(P2. 0-P2.7)
(端口 锁存器 )
8
8
注:P3.1-P3.7只存在于48脚的
器件中
8
P3
(P3.0-P3.7*)
图 20.1. 端口 I/O 功能框图 (端口 0- 端口 3)
??? 1.4
153
C8051F380/1/2/3/4/5/6/7/C
弱上 拉
推挽
V DD
端口 输出使能
VD D
(WE AK)
端口
引脚
端口 输出
GN D
模拟选 择
模拟 输入
端口输入
图 20.2. 端口 I/O 单元框图
20.1. 优先权交叉开关译码器
优先权交叉开关译码器(图 20.3)为每个 I/O 功能分配优先权,从优先权最高的 UART0 开始。当一个数字
资源被选择时,尚未分配的端口引脚中的最低位被分配给该资源 (UART0 总是使用引脚 4 和 5)。如果一
个端口引脚已经被分配,则交叉开关在为下一个被选择的资源分配引脚时将跳过该引脚。此外,交叉开关还
将跳过PnSKIP寄存器中被置1的那些位所对应的引脚。PnSKIP寄存器允许软件跳过那些被用作模拟输入、
特定功能或 GPIO 的引脚。
如果一个端口引脚被一个外设使用而不经过交叉开关,则该引脚在 PnSKIP 寄存器中的对应位应被置 1. 这
种情况适用于 VREF 信号、外部振荡器引脚 (XTAL1, XTAL2),ADC 的外部转换启动信号 (CNVSTR)、EMIF
控制信号和任何被选择为 ADC 或比较器输入的引脚。PnSKIP 寄存器也可以用于跳过被用作 GPIO 的引脚。
交叉开关跳过那些所选择的引脚 (如同这些引脚也经被交叉开关分配) ,移向下一个未被分配的引脚。
图 20.3 示出可供每个外设使用的所有可能引脚;图 20.4 示出了没有引脚被跳过的交叉开关配置;图 20.5
给出了一个 P0.2、 P0.3 和 P1.0 被逃过情况下的交叉开关配置。
寄存器 XBR0、 XBR1 和 XBR2 用于为数字 I/O 资源分配物理 I/O 端口引脚。注意:当任何一个 SMBus 被
选择时,交叉开关将为其分配两个引脚 (SDA 和 SCL)。当任何一个 UART 被选择时,交叉开关也为其分配
两个引脚 (TX 和 RX)。UART0 的引脚分配是固定的 (这是出于引导装载的目的):UART 的 TX0 总是被分
配到 P0.4 ; UART 的 RX0 总是被分配到 P0.5。在优先功能被分配之后,标准端口 I/O 是连续的。
注意:SPI 可以工作在三线或四线方式,取决于 SPI0CN 寄存器中 NSSMD1-NSSMD0 位的状态。根据 SPI
方式不同, NSS 信号可以连到端口引脚,也可以不连到端口引脚。
154
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
XTAL1
XTAL2
48脚封装
的特殊
功能信号
在32脚封装中不可用
ALE
CNVSTR
VREF
RD
WR
32脚封装
的特殊
功能信号
CNVSTR
VREF
端口
P0
P1
P2
P3
引脚号 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
XTAL1
XTAL2
TX0
RX0
SCK
MISO
MOSI
NSS*
SDA
SCL
CP0
CP0A
CP1
CP1A
SYSCLK
CEX0
CEX1
CEX2
CEX3
CEX4
ECI
T0
T1
TX1
RX1
SDA1
SCL1
引脚跳 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
过设置
P0SKIP
P1SKIP
P2SKIP
P3SKIP
交叉开关按本图从上到下的优先级顺序为外设分配引脚。
这些方块代表可被分配给外设的端口引脚。
特殊功能信号不由交叉开关分配引脚,当这些信号被使能时,交叉开关应被配置为跳过对应的端口引脚。
可被“跳过”的引脚,通过将 PnSKIP中的对应位置1来实现。
* NSS只在4线SPI方式有引出脚。
图 20.3. 外设在端口 I/O 引脚上的可用性
??? 1.4
155
C8051F380/1/2/3/4/5/6/7/C
TX0
RX0
WR
RD
VREF
CNVSTR
VREF
在32脚封装中不可用
ALE
CNVSTR
XTAL2
48脚封装
的特殊
功能信号
XTAL1
32脚封装
的特殊
功能信号
XTAL2
端口
P0
P1
P2
P3
引脚号 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
XTAL1
TX0 和 RX0 被固定分配在这两个引脚
SCK
MISO
MOSI
NSS*
SDA
SCL
CP0
CP0A
其它外设的引脚分配基于引脚的可用性,
按优先顺序分配
CP1
CP1A
SYSCLK
CEX0
CEX1
CEX2
CEX3
CEX4
ECI
T0
T1
TX1
RX1
SDA1
SCL1
引脚跳 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
过设置
P0SKIP
P1SKIP
P2SKIP
P3SKIP
本例展示XBR0 = 0x07 和 XBR1 = 0x43时的交叉开关配置。
这些方块代表被分配给外设的端口引脚。
图 20.4. 没有引脚被跳过的交叉开关优先权译码器配置示例
156
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
RD
WR
VREF
CNVSTR
VREF
在32脚封装中不可用
ALE
CNVSTR
XTAL2
48脚封装
的特殊
功能信号
XTAL1
XTAL2
32脚封装
的特殊
功能信号
XTAL1
端口
P0
P1
P2
P3
引脚号 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
TX0
RX0
SCK
MISO
MOSI
NSS*
如果一个引脚被跳过,则该引脚不能被交叉开关分配,交叉开
关会移向下一个可用于分配的引脚
SDA
SCL
SYSCLK
CEX0
CEX1
P1.0 被跳过
CP1
CP1A
P0.3 被跳过
CP0
CP0A
P0.2 被跳过
CEX2
CEX3
CEX4
ECI
T0
T1
TX1
RX1
SDA1
SCL1
引脚跳 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
过设置
P0SKIP
P1SKIP
P2SKIP
P3SKIP
本例展示XBR0 = 0x07 和 XBR1 = 0x43时的交叉开关配置。
这些方块代表被分配给外设的端口引脚。
图 20.5. 三个引脚被跳过的交叉开关优先权译码器配置示例
??? 1.4
157
C8051F380/1/2/3/4/5/6/7/C
20.2. 端口 I/O 初始化
端口 I/O 初始化包括以下步骤:
1. 用端口输入方式寄存器 (PnMDIN) 选择所有端口引脚的输入方式 (模拟或数字)。
2. 用端口输出方式寄存器 (PnMDOUT) 选择所有端口引脚的输出方式 (漏极开路或推挽)。
3. 用端口跳过寄存器 (PnSKIP) 选择应被 I/O 交叉开关跳过的那些引脚。
4. 将引脚分配给要使用的外设 (XBR0、 XBR1、 XBR2)。
5. 使能交叉开关 (XBARE = 1)。
让你有端口引脚都必须被配置为模拟或数字输入。被用作比较器或 ADC 输入的任何引脚都应被配置为模拟
输入。当一个引脚被配置为模拟输入时,其弱上拉、数字驱动器和数字接收器都被禁止,这可以节省功耗并
减小模拟输入的噪声。被配置为数字输入的引脚仍然可以被模拟外设使用,但不建议这样做。要将一个端口
引脚配置为数字输入,向 PnMDOUT 寄存器中的对应位写 0,并向对应的端口锁存器 (寄存器 Pn)写 1。
此外,应将交叉开关配置为跳过所有被用作模拟输入的引脚 (通过将 PnSKIP 寄存器中的对应位置 1 来实
现)。端口输入方式在 PnMDIN 寄存器中设置,其中 1 表示数字输入, 0 表示模拟输入。复位后所有引脚的
缺省设置都是数字输入。
I/O 引脚的输出驱动器特性由端口输出方式寄存器 PnMDOUT 决定,每个端口输出驱动器都可被配置为漏极
开路或推挽方式。即使对那些 XBRn 中被选择的数字资源,也需要进行这种选择,而不是自动的。唯一的例
外是 SMBus 引脚 (SDA, SCL, SDA1, SCL1),不管 PnMDOUT 的设置如何,这两个引脚总是被配置为漏极
开路。当 XBR1 寄存器中的 WEAKPUD 位为 0 时,输出方式为漏极开路的所有端口 I/O 的弱上拉都被使能。
WEAKPUD 不影响被配置为推挽方式的端口 I/O。当漏极开路输出被驱动为逻辑 0 时,弱上拉被自动关断
(禁止)以避免不必要的功率消耗。
寄存器 XBR0 和 XBR1 必须被装入正确的值以选择所需要的数字 I/O 功能。XBR1 中的 XBARE 位被置 1 将
使能交叉开关。不管 XBRn 寄存器的设置如何,在交叉开关被使能之前,外部引脚保持标准端口 I/O 方式
(输入方式)。对于给定的 XBRn 设置,可以使用优先权译码表确定 I/O 引脚分配;另一种方法是使用 Silicon
Labs IDE 软件的配置向导功能来确定基于 XBRn 寄存器设置的端口 I/O 引脚分配。
注意:为使端口 P0, P1, P2 和 P3 工作在标准端口 I/O 输出方式,交叉开关必须被使能。当交叉开关被禁
止时,端口输出驱动器被禁止。端口 4 总是作为标准 GPIO 使用。
158
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.1. XBR0:端口 I/O 交叉开关寄存器 0
位
7
6
5
4
3
2
1
0
名称
CP1AE
CP1E
CP0AE
CP0E
SYSCKE
SMB0E
SPI0E
URT0E
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xE1 ; SFR 页 = 所有页
位
名称
7
CP1AE
功能
比较器 1 异步输出使能。
0:异步 CP1 输出不连到端口引脚。
1:异步 CP1 输出连到端口引脚。
6
CP1E
比较器 1 输出使能。
0:CP1 输出不连到端口引脚。
1:CP1 输出连到端口引脚。
5
CP0AE
比较器 0 异步输出使能。
0:异步 CP0 输出不连到端口引脚。
1:异步 CP0 输出连到端口引脚。
4
CP0E
比较器 0 输出使能。
0:CP0 输出不连到端口引脚。
1:CP0 输出连到端口引脚。
3
SYSCKE SYSCLK 输出使能。
0:SYSCLK 输出不连到端口引脚。
1:SYSCLK 输出连到端口引脚。
2
SMB0E
SMBus I/O 使能。
0:SMBus I/O 不连到端口引脚。
1:SMBus I/O 连到端口引脚。
1
SPI0E
SPI I/O 使能。
0:SPI I/O 不连到端口引脚。
1:SPI I/O 连到端口引脚。注意 :SPI 可以被分配 3 或 4 个 GPIO 引脚。端口引脚。
0
URT0E
UART I/O 使能。
0:UART I/O 不连到端口引脚。
1:UART 的 TX0 和 RX0 连到端口引脚 P0.4 和 P0.5。
??? 1.4
159
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.2. XBR1:端口 I/O 交叉开关寄存器 1
位
7
6
5
4
3
名称
WEAKPUD
XBARE
T1E
T0E
ECIE
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
2
名称
7
WEAKPUD
功能
端口 I/O 弱上拉禁止。
0:弱上拉使能 (被配置为模拟方式的端口除外)。
1:弱上拉禁止。
6
XBARE
5
T1E
交叉开关使能。
0:交叉开关禁止。
1:交叉开关使能。
定时器 1 使能。
0:定时器 1 不连到端口引脚。
1:定时器 1 连到端口引脚。
4
T0E
定时器 0 使能。
0:定时器 0 不连到端口引脚。
1:定时器 0 连到端口引脚。
3
ECIE
PCA0 外部计数输入 (ECI) 使能。
0:ECI 不连到端口引脚。
1:ECI 连到端口引脚。
2:0 PCA0ME[2:0] PCA 模块 I/O 使能。
000:所有的 PCA I/O 都不连到端口引脚。
001:CEX0 连到端口引脚。
010:CEX0, CEX1 连到端口引脚。
011:CEX0, CEX1, CEX2 连到端口引脚。
100:CEX0, CEX1, CEX2, CEX3 连到端口引脚。
101:CEX0, CEX1, CEX2, CEX3 连到端口引脚。
11x:保留。
160
??? 1.4
0
PCA0ME[2:0]
SFR 地址 = 0xE2 ; SFR 页 = 所有页
位
1
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.3. XBR2:端口 I/O 交叉开关寄存器 2
位
7
6
5
4
3
2
名称
1
0
SMB1E
URT1E
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xE3 ; SFR 页 = 所有页
位
名称
7:2
保留
SMB1E
1
功能
必须写 000000b。
SMBus1 I/O 使能。
0:SMBus1 I/O 不连到端口引脚。
1:SMBus1 I/O 连到端口引脚。
0
URT1E
UART1 I/ 使能。
0:UART1 I/O 不连到端口引脚。
1:UART1 的 TX1 和 RX1 连到端口引脚。
20.3. 通用端口 I/O
未被交叉开关分配的端口引脚和未被模拟外设使用的端口引脚都可以作为通用 I/O 使用。通过对应的端口数
据寄存器访问端口 P3-0,这些寄存器既可以按位寻址也可以按字节寻址。端口 P4 ( 仅 C8051F380/2/4/6) 使
用的 SFR 只能按字节寻址。向端口写入时,数据被锁存到端口数据寄存器中,以保持引脚上的输出数据值
不变。读端口数据寄存器将总是返回端口输入引脚的逻辑状态,而与 XBRn 的设置值无关 (即使在引脚被
交叉开关分配给其它信号时,端口寄存器总是读其对应的端口 I/O 引脚)。例外情况是执行读 - 修改 - 写指令
期间。对端口 SFR 执行的读 - 修改 - 写指令为:ANL,ORL,XRL,JBC,CPL,INC,DEC,DJNZ 和对
端口 SFR 中的某一位执行的 MOV,CLR ,SETB。这些指令读端口寄存器(而不是引脚)的值,修改后再
写回端口 SFR。
??? 1.4
161
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.4. P0:端口 0 寄存器
位
7
6
5
4
名称
P0[7:0]
类型
R/W
复位
1
1
1
1
3
2
1
0
1
1
1
1
SFR 地址 = 0x80 ; SFR 页 = 所有页;可位寻址
位
名称
7:0
P0[7:0]
描述
写
读
0:设置输出锁存器为逻辑
低电平。
在端口单元被配置为数字 I/O
1: 设置输出锁存器为逻辑
时,设置端口锁在器逻辑值
高电平。
或读端口引脚的逻辑状态。
端口 0 数据。
0:P0.n 端口引脚为逻辑低
电平。
1:P0.n 端口引脚为逻辑高
电平。
SFR 定义 20.5. P0MDIN:端口 0 输入方式寄存器
位
7
6
5
4
3
名称
P0MDIN[7:0]
类型
R/W
复位
1
1
1
1
1
2
1
0
1
1
1
SFR 地址 = 0xF1 ; SFR 页 = 所有页
位
名称
7:0
P0MDIN[7:0]
功能
P0.7–P0.0 的模拟配置位 ( 分别对应 )。
当端口引脚被配置为模拟方式时,其弱上拉、数字驱动器和数字接收器都被禁止。
0:对应的 P0.n 引脚被配置为模拟方式。
1:对应的 P0.n 引脚不配置为模拟方式。
162
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.6. P0MDOUT:端口 0 输出方式寄存器
位
7
6
5
4
3
名称
P0MDOUT[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xA4 ; SFR 页 = 所有页
位
功能
名称
7:0 P0MDOUT[7:0] P0.7–P0.0 的输出方式配置位 ( 分别对应 )。
如果 P0MDIN 寄存器中的对应位为逻辑 0,则这些位被忽略。
0:对应的 P0.n 输出为漏极开路。
1:对应的 P0.n 输出为推挽方式。
SFR 定义 20.7. P0SKIP:端口 0 跳过寄存器
位
7
6
5
4
3
名称
P0SKIP[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xD4 ; SFR 页 = 所有页
位
名称
7:0
P0SKIP[7:0]
功能
端口 0 交叉开关跳过使能位。
这些位选择被交叉开关译码器跳过的端口 0 引脚。用作模拟功能、特殊功能或
GPIO 的端口引脚应被交叉开关跳过。
0:对应的 P0.n 不被交叉开关跳过。
1:对应的 P0.n 被交叉开关跳过。
??? 1.4
163
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.8. P1:端口 1 寄存器
位
7
6
5
4
名称
P1[7:0]
类型
R/W
复位
1
1
1
1
3
2
1
0
1
1
1
1
SFR 地址 = 0x90 ; SFR 页 = 所有页;可位寻址
位
名称
7:0
P1[7:0]
描述
写
读
0:设置输出锁存器为逻辑
低电平。
在端口单元被配置为数字 I/O
1:设置输出锁存器为逻辑
时,设置端口锁存器逻辑值
高电平。
或读端口引脚的逻辑状态。
端口 1 数据。
0:P1.n 端口引脚为逻辑低
电平。
1:P1.n 端口引脚为逻辑高
电平。
SFR 定义 20.9. P1MDIN:端口 1 输入方式寄存器
位
7
6
5
4
3
名称
P1MDIN[7:0]
类型
R/W
复位
1*
1
1
1
1
2
1
0
1
1
1
SFR 地址 = 0xF2 ; SFR 页 = 所有页
位
名称
7:0
P1MDIN[7:0]
功能
P1.7–P1.0 的模拟配置位 ( 分别对应 )。
当端口引脚被配置为模拟方式时,其弱上拉、数字驱动器和数字接收器都被禁止。
0:对应的 P1.n 引脚被配置为模拟方式。
1:对应的 P1.n 引脚不配置为模拟方式。
164
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.10. P1MDOUT:端口 1 输出方式寄存器
位
7
6
5
4
3
名称
P1MDOUT[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xA5 ; SFR 页 = 所有页
位
功能
名称
7:0 P1MDOUT[7:0] P1.7–P1.0 的输出方式配置为 ( 分别对应 )。
如果 P1MDIN 寄存器中的对应位为逻辑 0,则这些位被忽略。
0:对应的 P1.n 输出为漏极开路。
1:对应的 P1.n 输出为推挽方式。
SFR 定义 20.11. P1SKIP:端口 1 跳过寄存器
位
7
6
5
4
3
名称
P1SKIP[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xD5 ; SFR 页 = 所有页
位
名称
7:0
P1SKIP[7:0]
功能
端口 1 交叉开关跳过使能位。
这些位选择被交叉开关译码器跳过的端口 1 引脚。用作模拟功能、特殊功能或
GPIO 的端口引脚应被交叉开关跳过。
0:对应的 P1.n 不被交叉开关跳过。
1:对应的 P1.n 被交叉开关跳过。
??? 1.4
165
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.12. P2:端口 2 寄存器
位
7
6
5
4
名称
P2[7:0]
类型
R/W
复位
1
1
1
1
3
2
1
0
1
1
1
1
SFR 地址 = 0xA0 ; SFR 页 = 所有页;可位寻址
位
名称
7:0
P2[7:0]
描述
写
读
0:设置输出锁存器为逻辑
低电平。
在端口单元被配置为数字 I/O
1:设置输出锁存器为逻辑
时,设置端口锁存器逻辑值
高电平。
或读端口引脚的逻辑状态。
端口 2 数据。
0:P2.n 端口引脚为逻辑低
电平。
1:P2.n 端口引脚为逻辑高
电平。
SFR 定义 20.13. P2MDIN:端口 2 输入方式寄存器
位
7
6
5
4
3
名称
P2MDIN[7:0]
类型
R/W
复位
1
1
1
1
1
2
1
0
1
1
1
SFR 地址 = 0xF3 ; SFR 页 = 所有页
位
名称
7:0
P2MDIN[7:0]
功能
P2.7–P2.0 的模拟配置位 ( 分别对应 )。
当端口引脚被配置为模拟方式时,其弱上拉、数字驱动器和数字接收器都被禁止。
0:对应的 P2.n 引脚被配置为模拟方式。
1:对应的 P2.n 引脚不配置为模拟方式。
166
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.14. P2MDOUT:端口 2 输出方式寄存器
位
7
6
5
4
3
名称
P2MDOUT[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xA6 ; SFR 页 = 所有页
位
功能
名称
7:0 P2MDOUT[7:0] P2.7–P2.0 的输出方式配置为 ( 分别对应 )。
如果 P2MDIN 寄存器中的对应位为逻辑 0,则这些位被忽略。
0:对应的 P2.n 输出为漏极开路。
1:对应的 P2.n 输出为推挽方式。
SFR 定义 20.15. P2SKIP:端口 2 跳过寄存器
位
7
6
5
4
3
名称
P2SKIP[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xD6 ; SFR 页 = 所有页
位
名称
7:0
P2SKIP[3:0]
功能
端口 2 交叉开关跳过使能位。
这些位选择被交叉开关译码器跳过的端口 2 引脚。用作模拟功能、特殊功能或
GPIO 的端口引脚应被交叉开关跳过。
0:对应的 P2.n 不被交叉开关跳过。
1:对应的 P2.n 被交叉开关跳过。
??? 1.4
167
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.16. P3:端口 3 寄存器
位
7
6
5
4
名称
P3[7:0]
类型
R/W
复位
1
1
1
1
3
2
1
0
1
1
1
1
SFR 地址 = 0xB0 ; SFR 页 = 所有页;可位寻址
位
名称
7:0
P3[7:0]
描述
写
读
0:设置输出锁存器为逻辑
低电平。
在端口单元被配置为数字 I/O
1:设置输出锁存器为逻辑
时,设置端口锁存器逻辑值
高电平。
或读端口引脚的逻辑状态。
端口 3 数据。
0:P3.n 端口引脚为逻辑低
电平。
1:P3.n 端口引脚为逻辑高
电平。
SFR 定义 20.17. P3MDIN:端口 3 输入方式寄存器
位
7
6
5
4
3
名称
P3MDIN[7:0]
类型
R/W
复位
1
1
1
1
1
2
1
0
1
1
1
SFR 地址 = 0xF4 ; SFR 页 = 所有页
位
名称
7:0
P3MDIN[7:0]
功能
P3.7–P3.0 的模拟配置位 ( 分别对应 )。
当端口引脚被配置为模拟方式时,其弱上拉、数字驱动器和数字接收器都被禁止。
0:对应的 P3.n 引脚被配置为模拟方式。
1:对应的 P3.n 引脚不配置为模拟方式。
168
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.18. P3MDOUT:端口 3 输出方式寄存器
位
7
6
5
4
3
名称
P3MDOUT[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xA7 ; SFR 页 = 所有页
位
功能
名称
7:0 P3MDOUT[7:0] P3.7–P3.0 的输出方式配置为 ( 分别对应 )。
如果 P3MDIN 寄存器中的对应位为逻辑 0,则这些位被忽略。
0:对应的 P3.n 输出为漏极开路。
1:对应的 P3.n 输出为推挽方式。
SFR 定义 20.19. P3SKIP:端口 3 跳过寄存器
位
7
6
5
4
3
名称
P3SKIP[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xDF ; SFR 页 = 所有页
位
名称
7:0
P3SKIP[3:0]
功能
端口 3 交叉开关跳过使能位。
这些位选择被交叉开关译码器跳过的端口 3 引脚。用作模拟功能、特殊功能或
GPIO 的端口引脚应被交叉开关跳过。
0:对应的 P3.n 不被交叉开关跳过。
1:对应的 P3.n 被交叉开关跳过。
??? 1.4
169
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.20. P4:端口 4 寄存器
位
7
6
5
4
名称
P4[7:0]
类型
R/W
复位
1
1
1
1
3
2
1
0
1
1
1
1
SFR 地址 = 0xC7 ; SFR 页 = 所有页
位
名称
7:0
P4[7:0]
描述
写
读
0:设置输出锁存器为逻辑
低电平。
在端口单元被配置为数字 I/O
1:设置输出锁存器为逻辑
时,设置端口锁存器逻辑值
高电平。
或读端口引脚的逻辑状态。
端口 4 数据。
0:P4.n 端口引脚为逻辑低
电平。
1:P4.n 端口引脚为逻辑高
电平。
SFR 定义 20.21. P4MDIN:端口 4 输入方式寄存器
位
7
6
5
4
3
名称
P4MDIN[7:0]
类型
R/W
复位
1
1
1
1
1
2
1
0
1
1
1
SFR 地址 = 0xF5 ; SFR 页 = 所有页
位
名称
7:0
P4MDIN[7:0]
功能
P4.7–P4.0 的模拟配置位 ( 分别对应 )。
当端口引脚被配置为模拟方式时,其弱上拉、数字驱动器和数字接收器都被禁止。
0:对应的 P4.n 引脚被配置为模拟方式。
1:对应的 P4.n 引脚不配置为模拟方式。
170
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 20.22. P4MDOUT:端口 4 输出方式寄存器
位
7
6
5
4
3
名称
P4MDOUT[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xAE ; SFR 页 = 所有页
位
功能
名称
7:0 P4MDOUT[7:0] P4.7–P4.0 的输出方式配置为 ( 分别对应 )。
如果 P4MDIN 寄存器中的对应位为逻辑 0,则这些位被忽略。
0:对应的 P4.n 输出为漏极开路。
1:对应的 P4.n 输出为推挽方式。
??? 1.4
171
C8051F380/1/2/3/4/5/6/7/C
172
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
21. 通用串行总线控制器 (USB0)
C8051F380/1/2/3/4/5/6/7/C 器件集成了一个完整的全速 / 低速 USB 功能控制器,用于实现 USB 外部设备。
USB 功能控制器 (USB0) 由串行接口引擎 (SIE)、 USB 收发器 (包括匹配电阻和可配置上拉电阻)、 1KB
FIFO 存储器和时钟恢复电路(支持无晶体操作)组成,不需要外部元件。USB 功能控制器和收发器符合通
用串行总线规范 2.0 版。
收发器
串行接口引擎(SIE)
端点0
VDD
IN/OUT
D+
数据
传输
控制
D-
USB控制、
状态和
中断寄存器
端点1
端点2
CIP-51 核
端点3
OUT
IN
IN
OUT
IN
OUT
USB FIFO
(1KB RAM)
图 21.1. USB0 原理框图
注意:本文档假设读者熟悉 USB 协议。本文档所使用的术语和缩略语在 USB 规范中定义。我们希望您能在
进一步阅读之前重温 USB 规范的最新版本。
注:
C8051F380/1/2/3/4/5/6/7/C 不能被用作 USB 主设备。
21.1. 端点地址
共有 8 个端点管道。控制端点(端点 0)总是作为双向 IN/OUT 端点。其它端点被作为 3 对 IN/OUT 端点管道。
??? 1.4
172
C8051F380/1/2/3/4/5/6/7/C
表 21.1. 端点地址
端点
相应的管道
端点 0
端点 0 输入 (IN)
端点 0 输出 (OUT)
端点 1 输入 (IN)
端点 1 输出 (OUT)
端点 2 输入 (IN)
端点 2 输出 (OUT)
端点 3 输入 (IN)
端点 3 输出 (OUT)
端点 1
端点 2
端点 3
USB 协议地址
0x00
0x00
0x81
0x01
0x82
0x02
0x83
0x03
21.2. USB 收发器
用 USB0XCN 寄存器 (见 SFR 定义 21.1)配置 USB 收发器。配置内容包括收发器使能 / 禁止、上拉电阻
使能 / 禁止及器件速度选择 (全速或低速)。当位 SPEED = 1 时, USB0 工作在全速 USB 方式,片内上拉
电阻 (如果被使能)出现在 D+ 引脚。当位 SPEED = 0 时, USB0 工作在低速 USB 方式,片内上拉电阻
(如果被使能)出现在 D- 引脚。寄存器 USB0XCN 的位 4~0 用于收发器测试(见 SFR 定义 21.1 的说明)。
上拉电阻只在有 VBUS 信号时被使能 (有关 VBUS 检测的详细信息见第 74 页 9.1.2. 节 “VBUS 检测 ” )。
注意:USB 时钟应在收发器被使能之前就处于活动状态。
173
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 21.1. USB0XCN:USB0 收发器控制寄存器
位
7
6
5
名称
PREN
PHYEN
SPEED
类型
R/W
R/W
R/W
复位
0
0
0
4
3
2
1
0
PHYTST[1:0]
DFREC
Dp
Dn
R/W
R
R
R
0
0
0
0
0
SFR 地址 = 0xD7 ; SFR 页 = 所有页
位
名称
7
PREN
功能
内部上拉电阻使能。
上拉电阻的位置 (D+ 或 D-)由 SPEED 位决定。
0:禁止内部上拉电阻 (器件实际上脱离 USB 网络)。
1:当 VBUS 有信号时使能内部上拉电阻 (器件与 USB 网络连接)。
6
PHYEN
物理层使能。
0:禁止 USB0 物理层收发器 (挂起)。
1:使能 USB0 物理层收发器 (正常)。
5
SPEED
USB0 速度选择。
该位选择 USB0 的速度。
0:USB0 工作在低速方式。内部上拉电阻 (如果被使能)出现在 D- 线。
1:USB0 工作在全速方式。内部上拉电阻 (如果被使能)出现在 D+ 线。
4:3 PHYTST[1:0] 物理层测试位。
这两位用于测试 USB0 收发器。
00:方式 0:正常 (非测试方式)(D+ = X, D- = X)
01:方式 1:强加差分 1 (D+ = 1, D- = 0)
10:方式 2:强加差分 0 (D+ = 0, D- = 1)
11:方式 3:强加单端 0 (D+ = 0, D- = 0)
2
DFREC
1
Dp
差分接收器位。
该位的状态指示出现在 D+ 和 D- 引脚的当前差分值 (当 PHYEN = 1 时)。
0:差分 0 信号出现在总线上。
1:差分 1 信号出现在总线上。
D+ 信号状态。
该位指示 D+ 引脚的当前逻辑电平。
0:D+ 信号当前为逻辑 0。
1:D+ 信号当前为逻辑 1。
0
Dn
D- 信号状态。
该位指示 D- 引脚的当前逻辑电平。
0:D- 信号当前为逻辑 0。
1:D- 信号当前为逻辑 1。
??? 1.4
174
C8051F380/1/2/3/4/5/6/7/C
21.3. USB 寄存器访问
表 21.2 中列出的 USB0 控制器寄存器是通过两个特殊功能寄存器来访问的,这两个特殊功能寄存器是:
USB0 地址寄存器 (USB0ADR) 和 USB0 数据寄存器 (USB0DAT)。USB0ADR 寄存器选择读 / 写 USB0DAT
寄存器时的目标 USB 寄存器。见图 21.2。
对端点控制 / 状态寄存器的访问是通过先写 USB 寄存器 INDEX (用目标端点号)实现的。目标端点号被写
入INDEX寄存器后,就可以访问与目标端点对应的控制/状态寄存器。表 21.2 列出了端点控制/状态寄存器。
注意:访问 USB 寄存器时, USB 时钟必须是活动的。
USB 控制 器
8051
SFR
中 断寄存 器
FIFO
访问
公 用寄存 器
USB0DAT
INDEX寄存器
端点0
控制/状态 寄存器
端点1
控制/状态 寄存器
端点2
控制/状态 寄存器
USB0ADR
端点3
控制/状态 寄存器
图 21.2. USB0 寄存器访问示意图
175
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 21.2. USB0ADR:USB0 间接地址寄存器
位
7
6
名称
BUSY
AUTORD
USBADDR[5:0]
类型
R/W
R/W
R/W
复位
0
0
5
0
4
3
0
0
2
0
1
0
0
0
SFR 地址 = 0x96 ; SFR 页 = 所有页
位
名称
7
BUSY
6
AUTORD
描述
写
0:无作用。
1:启动 USB0 间接寄存
该位在间接 USB0 寄存器 器读操作,目标地址由
访问期间使用。
USBADDR 位给出。
USB0 寄存器读忙标志。
读
0:USB0DAT 寄存器数据有
效。
1:USB0 正在访问间接寄
存器; USB0DAT 寄存器
数据无效。
USB0 寄存器自动读标志位。
该位用于 FIFO 块读。
0:每次 USB0 间接寄存器读操作都必须手动写 BUSY 位。
1:当软件读 USB0DAT 时,下一个间接寄存器读操作将被自动启动 (USBADDR
位不变)。
5:0 USBADDR[5:0] USB0 间接寄存器地址。
这些位保持用于间接访问 USB0 寄存器的 6 位地址。表 21.2 列出了 USB0 寄存器
和它们的间接地址。读和写 USB0DAT 将访问由 USBADDR 位指向的目标寄存
器。
??? 1.4
176
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 21.3. USB0DAT:USB0 数据寄存器
位
7
6
5
4
3
名称
USB0DAT[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0x97 ; SFR 页 = 所有页
位
7:0
名称
描述
USB0DAT[7:0] USB0 数据位。
该 SFR 用于间接读和写
USB0 寄存器。
177
写
读
间接写步骤:
1. 查询 BUSY 位
(USB0ADR.7) => 0。
2. 将目标 USB0 寄存器地
址装入到寄存器
USB0ADR 中的
USBADDR 位。
3. 向 USB0DAT 写数据。
4. 重复上述步骤 (当写同
一个 USB0 寄存器时,步
骤 2 可以被跳过)。
间接读步骤:
1. 查询 BUSY 位
(USB0ADR.7) => 0。
2. 将目标 USB0 寄存器地
址装入到寄存器
USB0ADR 中的
USBADDR 位。
3. 向寄存器 USB0ADR 中
的 BUSY 位写 1 (步骤 2
和步骤 3 可以在同一个写
操作完成)。
4. 查询 BUSY 位
(USB0ADR.7) => 0。
5. 从 USB0DAT 读数据。
6. 重复从步骤 2 开始的步
骤 (当读同一个 USB0 寄
存器时,步骤 2 可以被跳
过;当 AUTORD 位
(USB0ADR.6) 为逻辑 1
时,步骤 3 可以被跳过)。
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表 21.2. USB0 控制器寄存器
USB 寄存器名称
USB 寄存器地址
IN1INT
OUT1INT
CMINT
IN1IE
OUT1IE
CMIE
0x02
0x04
0x06
0x07
0x09
0x0B
FADDR
POWER
FRAMEL
FRAMEH
INDEX
CLKREC
EENABLE
FIFOn
0x00
0x01
0x0C
0x0D
0x0E
0x0F
0x1E
0x20-0x23
E0CSR
EINCSRL
EINCSRH
EOUTCSRL
EOUTCSRH
E0CNT
EOUTCNTL
EOUTCNTH
0x11
0x12
0x14
0x15
0x16
0x17
说 明
中断寄存器
端点 0 和端点 1-3 输入 (IN)中断标志
端点 1-3 输出 (OUT)中断标志
公共 USB 中断标志
端点 0 和端点 1-3 输入 (IN)中断使能
端点 1-3 输出 (OUT)中断使能
公共 USB 中断使能
公共寄存器
功能地址
电源管理
帧号低字节
帧号高字节
端点索引选择
时钟恢复控制
端点使能
端点 0 ~ 3 FIFO
索引寄存器
端点 0 控制 / 状态
端点输入 (IN)控制 / 状态低字节
端点输入 (IN)控制 / 状态高字节
端点输出 (OUT)控制 / 状态低字节
端点输出 (OUT)控制 / 状态高字节
端点 0 FIFO 中的接收字节数
端点输出 (OUT)包计数低字节
端点输出 (OUT)包计数高字节
??? 1.4
页码
182
188
189
190
191
192
183
185
186
186
179
180
197
182
195
199
200
202
203
196
203
204
178
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.4. INDEX:USB0 端点索引寄存器
位
7
6
5
4
3
2
1
0
EPSEL[3:0]
名称
类型
R
R
R
R
复位
0
0
0
0
R/W
0
0
0
0
USB 寄存器地址 = 0x0E
位
名称
7:4
未使用
EPSEL[3:0]
3:0
功 能
读 = 0000b ;写 = 忽略。
端点选择位。
当访问索引的 USB0 寄存器时,这些位选择目标端点。
0000: 端点 0
0001: 端点 1
0010: 端点 2
0011: 端点 3
0100-1111: 保留。 .
21.4. USB 时钟配置
USB0 具有全速和低速 USB 通信功能。通信速度通过特殊功能寄存器 USB0XCN 中的 SPEED 位选择。当
USB0 工作在低速方式时, USB0 时钟必须为 6 MHz ;当 USB0 工作在高速方式时, USB0 时钟必须为
48 MHz。时钟选择见第 142 页 19. 节 “ 时钟源 ” 。USB0 时钟通过特殊功能寄存器 CLKSEL 选择(见 SFR
定义 19.1)。
时钟恢复电路用输入 USB 数据流调节内部振荡器,这使内部振荡器能满足 USB 时钟的精度要求。时钟恢复
功能应在下面的配置中使用。 :
通信速度
USB 时钟
全速
低速
内部振荡器
内部振荡器 /8
当 USB0 工作在低速方式并使用时钟恢复功能时,软件必须向 CRLOW 写 1 以使能低速时钟恢复功能。在
低速方式一般不需要使用时钟恢复功能。
当 USB 网络上有强噪声时,可以使用单步方式帮助时钟恢复电路锁定。在一般的 USB 环境中不需要 (或
不建议)使用该方式。
179
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.5. CLKREC:时钟恢复控制寄存器
位
7
6
5
名称
CRE
CRSSEN
CRLOW
类型
R/W
R/W
R/W
复位
0
0
0
4
3
2
1
0
1
1
R/W
0
1
1
USB 寄存器地址 = 0x0F
位
7
6
5
4:0
名称
功 能
时钟恢复使能位。
该位使能 / 禁止 USB 时钟恢复功能。
0:禁止时钟恢复。
1:使能时钟恢复。
CRSSEN 时钟恢复单步。
该位在时钟恢复期间强制采用 “ 单步 ” 方式进行振荡器校准。
0:正常校准方式。
1:单步方式。
CRLOW 低速时钟恢复方式。
如果在 USB0 工作于低速方式时使用时钟恢复功能,则该位必须被置 1。
0:全速方式。
1:低速方式。
保留
必须写 01111b。
CRE
??? 1.4
180
C8051F380/1/2/3/4/5/6/7/C
21.5. FIFO 管理
1024 字节的片内 XRAM 被用作 USB0 的 FIFO 空间。该 FIFO 空间在端点 0 ~ 3 之间的分配如图 21.3 所示。
分配给端点 1 ~ 3 的 FIFO 空间可以被配置为输入 (IN)、输出 (OUT) 或两者兼有 (分割方式:一半空间给输
入,一半空间给输出)。
0x07FF
端点0
(64字节 )
0x07C0
0x07BF
0x0740
0x073F
端点 1
(128字节 )
端点 2
(256字节 )
可配置 为
IN、 OUT或 IN/OUT(分割方式)
0x0640
0x063F
端点 3
(512字节 )
0x0440
0x043F
未使用
(64 字节 )
0x0400
USB 时 钟域
系统 时钟域
0x03FF
用 户 XRAM
(1024 字节 )
0x0000
图 21.3. USB FIFO 分配
21.5.1. FIFO 分割方式
端点 1 ~ 3 的 FIFO 空间可以被分割成两半,高半部分 FIFO 空间由输入端点使用,低半部分 FIFO 空间由输
出端点使用。例如,端点 3 被配置为分割方式,则高 256 字节 (0x0540 – 0x063F) 为端点 3 输入 (IN) 使用,
低 256 字节 (0x0440 – 0x053F) 为端点 3 输出 (OUT) 使用。
如果一个端点的 FIFO 不被配置为分割方式,则端点输入 / 输出 (IN/OUT) 对的 FIFO 被组合成一个单独的输
入 (IN) 或输出 (OUT)FIFO。在这种情况下,端点输入 / 输出对在某一时刻只能有一个方向被使用。端点方向
(输入 / 输出)由相应端点的 EINCSRH 寄存器中的 DIRSEL 位决定 (见 SFR 定义 21.3)。
181
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
21.5.2. FIFO 双缓冲
端点 1 ~ 3 的 FIFO 空间可以被配置为双缓冲模式。在该模式,最大数据包的字节数为 FIFO 空间的一半,
FIFO 中可以同时有两个数据包。该模式只适用于端点 1 ~ 3。当一个端点被配置为分割方式时,输入 (IN) 端
点和 / 或输出 (OUT) 端点都可以被配置为双缓冲模式。当分割方式未被使能时,整个端点 FIFO 可以被设置
为双缓冲模式。表 21.3 列出了每种 FIFO 配置下的最大数据包的长度。
表 21.3. FIFO 配置
端点号
分割方式使能?
0
N/A
N
Y
N
Y
N
Y
1
2
3
最大输出数据包长度
(双缓冲禁止 / 使能)
最大输入数据包长度
(双缓冲禁止 / 使能)
64
128 / 64
64 / 32
64 / 32
256 / 128
128 / 64
128 / 64
512 / 256
256 / 128
256 / 128
21.5.3. FIFO 访问
对每个端点 FIFO 的访问是通过对应的 FIFOn 寄存器来实现的。对一个端点 FIFOn 寄存器的读操作从该端
点的 FIFO 中卸载一个字节;对一个端点 FIFOn 寄存器的写操作将一个字节加载到该端点的 FIFO。当一个
端点 FIFO 被配置为分割方式时,对端点 FIFOn 寄存器的读操作从输出端点 FIFO 中卸载一个字节,对端点
FIFOn 寄存器的写操作将一个字节装入输入端点 FIFO。
USB SFR 定义 21.6. FIFOn:USB0 端点 FIFO 访问寄存器
位
7
6
5
4
3
名称
FIFODATA[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
USB 寄存器地址 = 0x20-0x23
位
7:0
功 能
名称
FIFODATA[7:0] 端点 FIFO 访问位。
使用 USB 地址 0x20 ~ 0x23 访问 4 对端点 FIFO。
0x20:端点 0
0x21:端点 1
0x22:端点 2
0x23:端点 3
对 FIFO 地址的写操作将数据加载到相应端点的 IN FIFO。
对 FIFO 地址的读操作将数据从相应端点的 OUT FIFO 中卸载。
??? 1.4
182
C8051F380/1/2/3/4/5/6/7/C
21.6. 功能地址
FADDR 寄存器中保存有当前的 USB0 功能地址。USB0 接收到的 SET_ADDRESS 命令中有 7 位功能地址,
软件应在接收到该命令时将主机分配的 7 位功能地址写入 FADDR 寄存器。只有在当前传输结束后(一般是
在 SET_ADDRESS 命令传输的状态段),写入 FADDR 的新地址才生效(生效之前 USB0 不响应新地址)。
当软件向 FADDR 寄存器写入新地址时, UPDATE 位 (FADDR.7)被硬件置 1。当新地址生效后,硬件将
UPDATE 位清 0。
USB SFR 定义 21.7. FADDR:USB0 功能地址寄存器
位
7
名称
UPDATE
FADDR[6:0]
类型
R
R/W
复位
0
6
0
5
0
4
0
3
0
2
1
0
0
0
0
USB 寄存器地址 = 0x00
位
功 能
名称
功能地址更新位。
当软件写 FADDR 寄存器时被硬件置 1。当新地址生效后,硬件将该位清 0。
0:最后写入 FADDR 的地址已经生效。
1:最后写入 FADDR 的地址尚未生效。
6:0 FADDR[6:0] 功能地址位。
保持 USB0 的 7 位功能地址。当端点 0 收到 SET_ADDRESS 标准设备请求时,软件
应写该地址。设备请求完成后新地址生效。
7
UPDATE
21.7. 功能配置和控制
USB 寄存器 POWER(见 USB 寄存器定义 21.8)用于在设备级配置和控制 USB0(使能 / 禁止,复位 / 挂
起 / 恢复等)。
USB 复位:当检测到总线上的复位信号时,USBRST 位 (POWER.3) 被硬件置 1。检测到复位信号时会发生
以下过程:
1. USB0 地址被复位 (FADDR = 0x00)。
2. 端点 FIFO 被清空。
3. 控制 / 状态寄存器被复位为 0x00 (E0CSR、 EINCSRL、 EINCSRH、 EOUTCSRL、 EOUTCSRH)。
4. USB 寄存器 INDEX 被复位为 0x00。
5. 所有 USB 中断 (挂起中断除外)都被使能,对应的中断标志被清 0。
6. 产生 USB 复位中断 (如果被使能)。
向 USBRST 位写 1 将产生异步 USB0 复位。在发生异步复位后,所有 USB 寄存器复位到它们的缺省值。
挂起方式:在挂起检测被使能的情况下 (SUSEN = 1),当总线上检测到挂起信号时, USB0 进入挂起方式,
并产生中断 (如果中断被使能,即 SUSINTE = 1)。挂起中断服务程序 (ISR) 应执行与应用相关的配置任
务,如禁止相应的外设和 / 或配置时钟源为低功耗方式。有关内部振荡器配置 (包括内部振荡器的挂起方式
功能)的详细信息见第 145 页 19.3. 节 “ 可编程内部高频 (H-F) 振荡器 ” 。
183
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
当有下面任何一种情况发生时,USB0 退出挂起方式:1) 检测到或产生恢复信号,2) 检测到复位信号,3) 发
生设备或 USB 复位。如果 USB0 被挂起,则在发生上述事件时内部振荡器退出挂起方式。
恢复信号:当总线上检测到恢复信号时, USB0 退出挂起方式,并产生恢复中断 (如果中断被使能,即
RESINTE = 1)。软件可以通过向 RESUME 位 (POWER.2) 写 1 来强制产生远程唤醒。当强制产生远程唤
醒时,软件应在远程唤醒被启动 (RESUME = 1) 后 10 ~ 15ms 向 RESUME 位写 0,以结束恢复信号。
ISO 更新:当软件向 ISOUP 位 (POWER.7) 写 1 后, ISO 更新功能被使能。在 ISO 更新功能被使能时,写
入到一个 ISO IN 端点的新数据包要等到收到一个新的帧起始 (SOF) 信号后才被发送。如果 ISO 输入端点在
收到 SOF 之前收到一个 IN 令牌, USB0 将发送一个长度为零的数据包。当 ISOUP = 1 时,所有 ISO 端点
的 ISO 更新功能都被使能。
USB 使能:在上电复位(POR)后 USB0 被禁止。通过清除 USBINH 位 (POWER.4) 来使能 USB0。USBINH
一旦被写入 0,则只能在发生下列事件之一时被置 1:1) 上电复位 (POR),2) 向 USBRST 位 (POWER.3) 位
写 1 导致的异步 USB0 复位。
软件应在使能 USB0 之前执行所有的 USB0 配置。建议的配置步骤如下:
1.
2.
3.
4.
5.
选择并使能 USB 时钟源。
通过向 USBRST 位写 1 来复位 USB0。
配置并使能 USB 收发器。
执行任何 USB0 功能配置 (中断、挂起检测)。
通过向 USBINH 位写 0 来使能 USB0。
??? 1.4
184
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.8. POWER:USB0 电源控制寄存器
位
7
名称
ISOUD
类型
R/W
R/W
复位
0
0
6
5
4
3
2
1
0
USBINH
USBRST
RESUME
SUSMD
SUSEN
R/W
R/W
R/W
R/W
R
R/W
0
0
0
0
0
0
USB 寄存器地址 = 0x01
位
名称
7
ISOUD
功 能
ISO 更新位。
该位影响所有 IN 等时端点。
0:当软件向 INPRDY 写 1 时, USB0 在收到下一个 IN 令牌后发送数据包。
1:当软件向 INPRDY 写 1 时, USB0 等待 SOF 令牌,然后发送数据包。如果在 SOF 令
牌之前收到 IN 令牌,则 USB0 将发送长度为 0 的数据包。
6:5
4
未使用 读 = 00b。写 = 忽略。
USBINH USB0 禁止位。
该位在发生上电复位 (POR) 或异步 USB0 复位后被置 1。软件应在完成所有 USB0 和收
发器的初始化后将该位清 0。软件不能将该位置 1。
0:使能 USB。
1:禁止 USB。所有 USB 通信都被忽略。
读:
0:总线上未检测到复位信号。
1:总线上检测到复位信号。
写:
向该位写 1 强制产生异步 USB0
复位。
3
USBRST 复位检测。
2
RESUME 强制恢复。
在挂起方式 (SUSMD = 1) 向该位写 1 将强制 USB0 在总线上产生恢复信号 (一个远程唤
醒事件)。软件应在 10 ~ 15ms 后向 RESUME 位写 0,以结束恢复信号。软件向
RESUME 位写 0 后将产生中断,并且硬件将 SUSMD 清 0。
1
SUSMD 挂起方式。
当 USB0 进入挂起方式时,该位被硬件置 1。当软件向 RESUME 位写 0 (后面跟随一次
远程唤醒)或在检测到总线上的恢复信号后读 CMINT 寄存器时硬件将该位清 0。
0:USB0 不处于挂起模式。
1:USB0 处于挂起模式。
0
SUSEN
挂起检测使能。
0:禁止挂起检测。 USB0 将忽略总线上的挂起信号。
1:使能挂起检测。如果检测到总线上的挂起信号,则 USB0 进入挂起方式。
185
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.9. FRAMEL:USB0 帧号低字节
位
7
6
5
4
3
名称
FRMEL[7:0]
类型
R
0
复位
0
0
0
0
2
1
0
0
0
0
2
1
0
USB 寄存器地址 = 0x0C
位
功能
名称
7:0 FRMEL[7:0] 帧号低字节位。
该寄存器包含最后接收帧号的位 7-0。
USB SFR 定义 21.10. FRAMEH:USB0 帧号高字节
位
7
6
5
4
3
FRMEH[2:0]
名称
类型
R
R
R
R
R
复位
0
0
0
0
0
R
0
0
0
USB 寄存器地址 = 0x0D
位
功能
名称
未使用
读 = 00000b。写 = 忽略。
2:0 FRMEH[2:0] 帧号高字节位。
该寄存器包含最后接收帧号的位 10-8。
7:3
21.8. 中断
USB0 的中断标志(只读)位于 USB 寄存器定义 21.11~ USB 寄存器定义 21.13 所示的 USB 寄存器中。相
应的中断使能位位于 USB 寄存器定义 21.14 ~ USB 寄存器定义 21.16 所示的 USB 寄存器中。当这些 USB
中断标志中的任何一个被置 1 时,就会产生 USB0 中断。USB0 中断通过特殊功能寄存器 EIE1 来使能(见
第 118 页 16. 节 “ 中断系统 ” )。
注意:读一个中断标志寄存器将使该寄存器中的所有标志位清 0。
??? 1.4
186
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.11. IN1INT:USB0 输入端点中断寄存器
位
7
6
5
4
名称
3
2
1
0
IN3
IN2
IN1
EP0
类型
R
R
R
R
R
R
R
R
复位
0
0
0
0
0
0
0
0
USB 寄存器 = 0x02
位
名称
7:4
未使用
IN3
3
功 能
读 = 0000b。写 = 忽略。
IN 端点 3 中断标志。
该位在软件读 IN1INT 寄存器后被清 0。
0:IN 端点 3 中断无效。
1:IN 端点 3 中断有效。
2
IN2
IN 端点 2 中断标志。
该位在软件读 IN1INT 寄存器后被清 0。
0:IN 端点 2 中断无效。
1:IN 端点 2 中断有效。
1
IN1
IN 端点 1 中断标志。
该位在软件读 IN1INT 寄存器后被清 0。
0:IN 端点 1 中断无效。
1:IN 端点 1 中断有效。
0
EP0
端点 0 中断标志。
该位在软件读 IN1INT 寄存器后被清 0。
0:端点 0 中断无效。
1:端点 0 中断有效。
187
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.12. OUT1INT:USB0 输出端点中断寄存器
位
7
6
5
4
名称
3
2
1
OUT3
OUT2
OUT1
0
类型
R
R
R
R
R
R
R
R
复位
0
0
0
0
0
0
0
0
USB 寄存器地址 = 0x04
位
名称
7:4
未使用
OUT3
3
功能
读 = 0000b。写 = 忽略。
OUT 端点 3 中断标志。
该位在软件读 OUT1INT 寄存器后被清 0。
0:OUT 端点 3 中断无效。
1:OUT 端点 3 中断有效。
2
OUT2
OUT 端点 2 中断标志。
该位在软件读 OUT1INT 寄存器后被清 0。
0:OUT 端点 2 中断无效。
1:OUT 端点 2 中断有效。
1
OUT1
OUT 端点 1 中断标志。
该位在软件读 OUT1INT 寄存器后被清 0。
0:OUT 端点 1 中断无效。
1:OUT 端点 1 中断有效。
0
未使用
读 = 0b。写 = 忽略。
??? 1.4
188
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.13. CMINT:USB0 公共中断寄存器
位
7
6
5
4
名称
3
2
1
0
SOF
RSTINT
RSUINT
SUSINT
类型
R
R
R
R
R
R
R
R
复位
0
0
0
0
0
0
0
0
USB 寄存器地址 = 0x06
位
名称
7:4
未使用
SOF
3
功能
读 = 0000b。写 = 忽略。
帧起始中断标志。
该位在收到 SOF 令牌时被硬件置 1。该中断事件由硬件综合产生:当硬件期望收到一
个 SOF 事件时,就会产生中断,即使实际的 SOF 信号丢失或损坏。
该位在软件读 CMINT 寄存器后被清 0。
0:帧起始中断无效。
1:帧起始中断有效。
2
RSTINT
复位中断标志。
当总线上检测到复位信号时该位被硬件置 1。
该位在软件读 CMINT 寄存器后被清 0。
0:复位中断无效。
1:复位中断有效。
1
RSUINT
恢复中断标志。
在 USB0 处于挂起方式期间,当总线上检测到恢复信号时该位被硬件置 1。
该位在软件读 CMINT 寄存器后被清 0。
0:恢复中断无效。
1:恢复中断有效。
0
189
SUSINT
挂起中断标志。
在挂起检测被使能的情况下 (寄存器 POWER 中的 SUSEN 位),当总线上检测到挂
起信号时该位被硬件置 1。
该位在软件读 CMINT 寄存器后被清 0。
0:挂起中断无效。
1:挂起中断有效。
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.14. IN1IE:USB0 输入端点中断允许寄存器
位
7
6
5
4
名称
3
2
1
0
IN3E
IN2E
IN1E
EP0E
类型
R
R
R
R
R/W
R/W
R/W
R/W
复位
0
0
0
0
1
1
1
1
USB 寄存器地址 = 0x07
位
名称
7:4
未使用
IN3E
3
功能
读 = 0000b。写 = 忽略。
IN 端点 3 中断使能。
0:禁止 IN 端点 3 中断。
1:允许 IN 端点 3 中断。
2
IN2E
IN 端点 2 中断使能。
0:禁止 IN 端点 2 中断。
1:允许 IN 端点 2 中断。
1
IN1E
IN 端点 1 中断使能。
0:禁止 IN 端点 1 中断。
1:允许 IN 端点 1 中断。
0
EP0E
端点 0 中断使能。
0:禁止端点 0 中断。
1:允许端点 0 中断。
??? 1.4
190
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.15. OUTIE:USB0 输出端点中断允许寄存器
位
7
6
5
4
名称
3
2
1
OUT3E
OUT2E
OUT1E
0
类型
R
R
R
R
R/W
R/W
R/W
R
复位
0
0
0
0
1
1
1
0
USB 寄存器地址 = 0x09
位
名称
7:4
未使用
OUT3E
3
功 能
读 = 0000b。写 = 忽略。
OUT 端点 3 中断使能。
0:禁止 OUT 端点 3 中断。
1:允许 OUT 端点 3 中断。
2
OUT2E
OUT 端点 2 中断使能。
0:禁止 OUT 端点 2 中断。
1:允许 OUT 端点 2 中断。
1
OUT1E
OUT 端点 1 中断使能。
0:禁止 OUT 端点 1 中断。
1:允许 OUT 端点 1 中断。
0
191
未使用
读 = 0b。写 = 忽略。
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.16. CMIE:USB0 公共中断允许寄存器
位
7
6
5
4
名称
3
2
1
0
SOFE
RSTINTE
RSUINTE
SUSINTE
类型
R
R
R
R
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
1
1
0
USB 寄存器地址 = 0x0B
位
名称
7:4
未使用
SOFE
3
功能
读 = 0000b。写 = 忽略。
帧起始中断使能。
0:禁止帧起始中断。
1:允许帧起始中断。
2
RSTINTE
1
RSUINTE
0
SUSINTE
复位中断使能。
0:禁止复位中断。
1:允许复位中断。
恢复中断标志。
0:禁止恢复中断。
1:允许恢复中断。
起中断标志。
0:禁止挂起中断。
1:允许挂起中断。
??? 1.4
192
C8051F380/1/2/3/4/5/6/7/C
21.9. 串行接口引擎
串行接口引擎 (SIE) 执行所有低层 USB 协议,在数据被成功发送或接收后中断处理器。当接收数据时,SIE
在接收完一个完整的数据包后中断处理器;相应的握手信号由 SIE 自动产生。当发送数据时,SIE 在发送完
一个完整的数据包并且收到正确的握手信号后中断处理器。
当收到损坏 / 错误的数据包时, SIE 不中断处理器。
21.10. 端口 0
通过 USB 寄存器 E0CSR (见 USB 寄存器定义 21.18)管理端点 0。访问 E0CSR 寄存器时, INDEX 寄存
器必须被装入 0x00 值。
当发生下列情况时产生端点 0 中断:
1. 当收到一个数据包 (OUT 或 SETUP)并将其装入端点 0 的 FIFO 时。 OPRDY 位 (E0CSR.0) 被硬件
置 1。
2. 当一个 IN 数据包从端点 0 的 FIFO 成功卸载并发送到主机时。 INPRDY 位被硬件清 0。
3. 一次 IN 事务结束 (该中断在 IN 事务的状态阶段产生)。
4. 在控制传输因违反协议而结束后,硬件将 STSTL 位 (E0CSR.2) 置 1。
5. 因控制传输在固件置 ‘1’DATAEND 位 (E0CSR.3) 之前结束,导致硬件将 SUEND 位 (E0CSR.4) 置 1。
E0CNT 寄存器 (见 USB 寄存器定义 21.11)保持端点 0 FIFO 中的接收数据字节数。
硬件将自动检测协议错误并发送 STALL 条件作为应答。固件可以强制产生一个 STALL 条件以放弃当前的传
输。当产生 STALL 条件时, STSTL 位被置 1 并产生中断。下述情况会导致硬件产生 STALL 条件。
1.
2.
3.
4.
当 DATAEND 位被置 1 后,主机在 OUT 数据阶段发送一个 OUT 令牌。
当 DATAEND 位被置 1 后,主机在 IN 数据阶段发送一个 IN 令牌。
主机发送一个超过端点 0 最大数据包大小的数据包。
主机在一次 IN 事务的状态段发送一个非零长度的 DATA1 数据包。
固件将 SDSTL 位 (E0CSR.5) 置 1。
21.10.1. 端点 0 SETUP 事务
所有控制传输都必须从一个 SETUP 包开始。SETUP 包与 OUT 包类似,包含一个由主机发送的 8 字节数据
域。包含一个非 8 字节命令域的任何 SETUP 包都会被 USB0 自动丢弃。当 SETUP 包的数据被装入到端点
0 FIFO 时会产生端点 0 中断。软件应从端点 0 FIFO 卸载命令,对命令译码,执行所要求的任务,并将
SOPRDY 位置 1 以指示执行完 OUT 包服务。
21.10.2. 端点 0 IN 事务
当 USB0 收到一个要求发送数据到主机的 SETUP 请求时,主机会发送一个或多个 IN 请求。对于第一个 IN
事务,固件应将一个 IN 数据包装入到端点 0 FIFO 并将 INPRDY 位 (E0CSR.1) 置 1。 IN 数据包被成功发送
后会产生中断。注意:如果在固件将一个数据包装入到端点 0 FIFO 之前收到 IN 请求,则不会产生中断。如
果所请求的数据超过了端点 0 最大数据包的大小(已报告给主机),则数据应被分成多个包;除最后一个数
据包外,每个包应为最大数据包长度。如果所请求的数据是端点 0 最大数据包长度的整数倍,则最后一个数
据包应为零长度包,指示传输结束。固件在将一次传输的最后一个数据包装入端点 0 FIFO 之后,应将
DATAEND 位置 1。
对于特定的控制传输,在收到第一个 IN 令牌后,端点 0 处于发送方式。在该方式,主机应向端点 0 只发送
IN 令牌。在端点 0 处于发送方式时,如果收到一个 SETUP 或 OUT 令牌,则 SUEND 位 (E0CSR.4) 被置 1。
193
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
在发生下列任一事件之前,端点 0 将一直保持在发送方式:
1. USB0 接收一个端点 0 SETUP 或 OUT 令牌。
2. 固件发送一个小于端点 0 最大数据包长度的数据包。
3. 固件发送一个零长度的数据包。
当执行上述的 (2) 和 (3) 时,固件应将 DATAEND 位 (E0CSR.3) 置 1。
如果在 IN FIFO 中没有准备好的数据包 (INPRDY = 0),则 SIE 会发送一个 NAK 作为对 IN 令牌的应答。
21.10.3. 端点 0 OUT 事务
当 USB0 收到一个要求主机发送数据到 USB0 的 SETUP 请求时,主机会发送一个或多个 OUT 请求。当
USB0 成功接收到一个 OUT 数据包时,硬件将 OPRDY 位 (E0CSR.0) 置 1 并产生端点 0 中断。在发生该中
断后,固件应将 OUT 数据包从端点 0 FIFO 卸载并将 SOPRDY 位 (E0CSR.6) 置 1。
如果所请求的数据超过了端点 0 最大数据包长度,则数据将被分成多个包。如果所请求的数据是端点 0 最大
数据包长度的整数倍 (已报告给主机),则主机发送的最后一个数据包应为零长度包,以指示传输结束。
对于特定的控制传输,在收到第一个 OUT 令牌后,端点 0 处于接收方式。在该方式,主机应向端点 0 只发
送 OUT 令牌。在端点 0 处于接收方式时,如果收到一个 SETUP 或 IN 令牌,则 SUEND 位 (E0CSR.4) 被置 1。
在发生下列任一事件之前,端点 0 将一直保持在接收方式:
1. SIE 接收一个 SETUP 或 IN 令牌。
2. 主机发送一个小于端点 0 最大数据包长度的数据包。
3. 主机发送一个零长度的数据包。
当接收到所期望数量的数据时,固件应将 DATAEND 位 (E0CSR.3) 置 1。如果主机在固件将 DATAEND 位
置 1 之后发送一个 OUT 包,则 SIE 将发送一个 STALL 条件。在 STALL 条件被发送后,STSTL 位 (E0CSR.2)
被置 1 并产生端点 0 中断。
??? 1.4
194
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.17. E0CSR:USB0 端点 0 控制寄存器
位
7
6
5
4
3
2
1
0
名称
SSUEND
SOPRDY
SDSTL
SUEND
DATAEND
STSTL
INPRDY
OPRDY
类型
R/W
R/W
R/W
R
R/W
R/W
R/W
R
复位
0
0
0
0
0
0
0
0
USB 寄存器地址 = 0x11
位
7
6
5
4
3
名称
描述
写
读
写:软件应在处理完
SETUP
结束
读:该位的读出值总是
SSUEND SETUP 结束服务位。
事件 (SUEND) 后将该位置 1。软件 为 0。
向 SSUEND 写 1 后,硬件将
SUEND 位清 0
写:软件应在处理完接收到的端点 读:该位的读出值总是
SOPRDY OPRDY 服务位。
0 数据包后将该位置 1。软件向
为 0。
SOPRDY 写 1 后,硬件将 OPRDY
位清 0。
SDSTL 发送 STALL 位。
软件可以通过向该位写 1 来结束当前的数据传输 (因为错误条件、不希望的传输请求
等)。当 STALL 信号被发送后,硬件将该位清 0。
SUEND SETUP 结束标志位。
当一次控制传输在软件向 DATAEND 位写 1 之前结束时,硬件将该只读位置 1。软件向
SSUEND 写 1 后,硬件将该位清 0。
DATAEND 数据结束位。
软件应在下列情况向该位写 1:
1. 当发送最后一个数据包后固件向 INPRDY 写 1 时。
2. 当发送一个零长度数据包后固件向 INPRDY 写 1 时。
3. 当接收完最后一个数据包后固件向 SOPRDY 写 1 时。
该位被硬件自动清 0。
2
STSTL
STALL 已发送位。
发送 STALL 握手信号后,硬件将该位置 1。该位必须用软件清 0。
1
INPRDY
输入 (IN) 数据包准备好位。
软件应在将一个要发送的数据包装入端点 0 FIFO 后向该位写 1。在发生下列条件之一时
硬件将该位清 0 并产生中断。
1. 数据包已发送。
2. 数据包被一个进入的 SETUP 包覆盖。
3. 数据包被一个进入的 OUT 包覆盖。
0
OPRDY
输出 (OUT) 数据包准备好位。
当收到一个数据包时,硬件将该只读位置 1 并产生中断。软件向 SOPRDY 位写 1 时该
位被清 0。
195
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.18. E0CNT:USB0 端点 0 数据计数寄存器
位
7
6
5
4
3
2
1
0
0
0
0
E0CNT[6:0]
名称
类型
R
复位
0
R
0
0
0
0
USB 寄存器地址 = 0x16
位
功能
名称
未使用
读 = 0b。写 = 忽略。
6:0 E0CNT[6:0] 端点 0 数据计数。
7
该 7 位值指示端点 0 FIFO 中接收的数据字节数。该值只在 OPRDY 位为 1 期间有效。
21.11. 端点 1-3 配置
对端点 1~3 的配置和控制是通过它们各自的一组控制 / 状态寄存器来实现的,这些寄存器是:IN 寄存器
EINCSRL、EINCSRH 和 OUT 寄存器 EOUTCSRL、EOUTCSRH。在某一时刻只能有一组端点控制 / 状态
寄存器被映射到 USB 寄存器地址空间,由 INDEX 寄存器定义 (见 USB 寄存器定义 21.4)。
如第 21.5.1 章所述,端点 1~3 可以被配置为 IN、OUT 或 IN/OUT (分割方式)。由寄存器 EINCSRH 中的
SPLIT 位选择端点方式 (分割方式 / 正常方式)。
当 SPLIT = 1 时,相应的端点 FIFO 被分割成两部分, IN 和 OUT 管道都可用。
当 SPLIT = 0 时,相应的端点功能只能为 IN 或 OUT 中的一个,端点方向由寄存器 EINCSRH 中的 DIRSEL
位选择。
通过写 ENABLE 寄存器中的相应位,可以单个禁止端点 1~3。当一个端点被禁止时,它不能响应总线通信
或冻结总线。缺省状态下所有端点都被使能。
??? 1.4
196
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.19. EENABLE:USB0 端点使能寄存器
位
7
6
5
4
名称
3
2
1
EEN3
EEN2
EEN1
0
类型
R
R
R
R
R/W
R/W
R/W
R/W
复位
1
1
1
1
1
1
1
1
USB 寄存器地址 = 0x1E
位
名称
7:4
未使用
EEN3
3
功能
读 = 1111b。写 = 忽略。
端点 3 使能。
该位使能 / 禁止端点 3。
0:禁止端点 3 (不在 USB 网络上出现 NACK、 ACK 或 STALL)。
1:使能端点 3 (正常)。
2
EEN2
端点 2 使能。
该位使能 / 禁止端点 2。
0:禁止端点 2 (不在 USB 网络上出现 NACK、 ACK 或 STALL)。
1:使能端点 2 (正常)。
1
EEN1
端点 1 使能。
该位使能 / 禁止端点 1。
0:禁止端点 1 (不在 USB 网络上出现 NACK、 ACK 或 STALL)。
1:使能端点 1 (正常)。
0
保留
必须写 1b。
21.12. 端点 1~3 输入 (IN) 控制
对端点 1~3 输入 (IN) 的管理是通过 USB 寄存器 EINCSRL 和 EINCSRH 来实现的。所有 IN 端点都可以被用
于中断、批量或等时传输。通过向寄存器 EINCSRH 中的 ISO 位写 1 来使能等时 (ISO) 方式。硬件对批量和
中断传输的控制与此完全相同。
在发生下述条件之一时,会产生端点 1~3 输入 (IN) 中断:
1. 一个 IN 数据包被成功传送到主机。
2. 目标 FIFO 未空,而软件向 FLUSH 位 (EINCSRL.3) 写 1。
3. 硬件产生一个 STALL 条件。
21.12.1. 端点 1~3 输入 (IN) 中断或批量方式
当 ISO 位 (EINCSRH.6) = 0 时,目标端点工作在批量或中断方式。一旦一个端点被配置为批量 / 中断 IN 方
式 (通常在端点 0 的 SET_INTERFACE 命令之后),固件应将一个 IN 数据包装入端点的 IN FIFO 并将
INPRDY 位(EINCSRL.0)位置 1。在收到一个 IN 令牌后,硬件将发送数据,清除 INPRDY 位,并产生中断。
在没有向端点 FIFO 写任何数据的情况下向 INPRDY 写 1 会导致在收到下一个 IN 令牌时发送一个零长度的
数据包。
197
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
可以通过向 SDSTL 位 (EINCSRL.4) 写 1 来停止批量或中断管道。当 SDSTL = 1 时,硬件对所有的 IN 请求
都以 STALL 条件回应。每当硬件产生一个 STALL 条件时,会产生一个中断,且 STSTL 位 (EINCSRL.5) 被
置 1。 STSTL 位必须用固件清 0。
当端点 FIFO 中有一个打开的数据包时隙 (slot) 时,硬件自动将 INPRDY 位清 0。注意:如果目标端点被使
能为双缓冲模式,则固件可能在同一时间向 IN FIFO 装入两个数据包。在这种情况下,在固件将第一个数据
包装入 FIFO 并将 INPRDY 位置 1 后,硬件会立即清 ‘0’INPRDY 位。在这种情况下没有中断产生,只在数
据包已被发送时产生中断。
当固件向 FCDT 位 (EINCSRH.3) 写 1 时,每个 IN 数据包的数据切换 (toggle) 会不停地进行,与从主机接收
到的握手信号无关。该特性一般在中断端点中使用,为等时端点提供速率反馈通信。当 FCDT= 0 时,数据
切换 (toggle) 位只在主机发送了 ACK (对一个 IN 数据包应答)后被切换。
21.12.2. 端点 1~3 输入 (IN) 等时方式
当 ISO 位 (EINCSRH.6)被置 1 时,目标端点工作在等时 (ISO) 方式。一旦一个端点被配置为 ISO 输入
(IN) 方式,主机将在每帧都发送一个 IN 令牌(数据请求);数据在每帧中的位置可以不同。因此建议将 ISO
IN 端点使能为双缓冲方式。
当端点 FIFO 中有一个打开的数据包时隙 (slot) 时,硬件自动将 INPRDY 位 (EINCSRL.0) 清 0。注意:如果
目标端点被使能为双缓冲模式,则固件可能在同一时间向 IN FIFO 装入两个数据包。在这种情况下,在固件
将第一个数据包装入 FIFO 并将 INPRDY 位置 1 后,硬件会立即清 ‘0’INPRDY 位。在这种情况下没有中断
产生,只在数据包已被发送时产生中断。
如果在 USB0 从主机接收到一个 IN 令牌时,在端点 FIFO 中没有已准备好的数据包,则 USB0 会发送一个
零长度的数据包并将 UNDRUN 位 (EINCSRL.2) 置 1。
ISO 更新功能(见第 21.7 章)在开始一个双缓冲的 ISO IN 端点时可能有用。如果在固件向端点 FIFO 写第
一个数据包时主机已经建立了 ISO IN 管道 (已经开始发送 IN 令牌),则在固件向 FIFO 写完第二个 (双缓
冲)数据包之前,下一个 IN 令牌可能到达,第一个数据包已经发送。ISO 更新功能保证写到端点 FIFO 中的
任何数据包不在当前帧发送,只在接收到 SOF 信号后发送该数据包。
??? 1.4
198
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.20. EINCSRL:USB0 IN 端点控制寄存器低字节
位
7
名称
6
5
4
3
2
1
0
CLRDT
STSTL
SDSTL
FLUSH
UNDRUN
FIFONE
INPRDY
类型
R
W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
USB 寄存器地址 = 0x11
位
7
名称
描述
读 = 0b,写 = 忽略。
6
未使用
CLRDT
5
STSTL
STALL 已发送位。
清除数据切换位。
写
读
写:软件向该位置 1 将 IN 端 读:该位的读出值总是为 0。
点的数据切换位清 0。
当 STALL 握手信号被发送后,硬件将该位置 1。 FIFO 被清空, INPRDY 位被清 0。该标
志必须用软件清 0。
4
SDSTL
发送 STALL 位。
软件应向该位写 1 以产生 STALL 信号作为对一个 IN 令牌的应答。软件应向该位写 0 以
结束 STALL 信号。该位对 ISO 方式没有影响。
3
FLUSH
FIFO 清空位。
向该位写 1 将从 IN 端点 FIFO 中清除待发送的下一个数据包。 FIFO 指针被复位,
INPRDY 位被清 0。如果 FIFO 中包含多个数据包,软件必须对每个数据包向 FLUSH 写
1。当 FIFO 清空完成后,硬件将 FLUSH 位清 0。
2
1
UNDRUN 数据欠载位。
该位的功能取决于 IN 端点的方式:
ISO:在 INPRDY = 0 并且收到一个 IN 令牌后发送了一个零长度数据包时,该位被置 1。
中断 / 批量:在对 IN 令牌回应时返回 NAK,则该位被置 1。
该位必须用软件清 0。
FIFONE FIFO 非空。
0:IN 端点 FIFO 为空。
1:IN 端点 FIFO 包含一个或多个数据包。
0
INPRDY IN 数据包准备好。
软件应在将一个数据包装入 IN 端点 FIFO 后向该位写 1。在发生下列条件之一时硬件将该
位清 0。
1. 数据包已发送。
2. 双缓冲被使能 (DBIEN = 1) 且有一个打开的 FIFO 数据包时隙。
3. 如果端点处于等时方式 (ISO = 1) 并且 ISOUD = 1,在收到下一个 SOF 之前 INPRDY
的读出值为 0。
注:
199
当硬件因发送数据包而将 INPRDY 清 0 时会产生中断 (如果被允许)。
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.21. EINCSRH:USB0 IN 端点控制寄存器高字节
位
7
6
5
名称
DBIEN
ISO
DIRSEL
类型
R/W
R/W
R/W
复位
0
0
0
4
3
2
1
0
FCDT
SPLIT
R
R/W
R/W
R
R
0
0
0
0
0
USB 寄存器地址 = 0x12
功能
位
名称
7
DBIEN
6
ISO
5
DIRSEL
4
读 = 0b,写 = 忽略。
3
未使用
FCDT
2
SPLIT
FIFO 分割使能。
IN 端点双缓冲使能。
0:禁止所选 IN 端点的双缓冲功能。
1:使能所选 IN 端点的双缓冲功能。
等时传输使能。
该位使能 / 禁止在当前端点进行等时传输
0:端点被配置为批量 / 中断传输。
1:端点被配置为等时传输。
端点方向选择。
该位只在所选 FIFO 为不分割方式 (SPLIT = 0) 时有效。
0:选择端点方向为 OUT。
1:选择端点方向为 IN。
强制数据切换位。
0:端点数据切换只在发送完一个数据包后收到 ACK 时切换。
1:端点数据切换在每发送完一个数据包后被强制切换,不管是否收到 ACK。
当 SPLIT = 1 时,所选端点的 FIFO 被分割。所选 FIFO 的高半部分为 IN 端点使用,所
选 FIFO 的低半部分为 OUT 端点使用。
1:0
未使用
读 = 00b,写 = 忽略。
??? 1.4
200
C8051F380/1/2/3/4/5/6/7/C
21.13. 端点 1~3 输出 (OUT) 控制
对端点 1~3 输出 (OUT) 的管理是通过 USB 寄存器 EOUTCSRL 和 EOUTCSRH 来实现的。所有 OUT 端点
都可以用于中断、批量或等时传输。通过向寄存器 EOUTCSRH 中的 ISO 位写 1 来使能等时 (ISO) 方式。硬
件对批量和中断传输的控制与此完全相同。
在发生下述条件之一时,会产生端点 1~3 输出 (OUT) 中断:
1. 硬件将 OPRDY 位 (EOUTCSRL.0) 置 1。
2. 硬件产生一个 STALL 条件。
21.13.1. 端点 1~3 输出 (OUT) 中断或批量方式
当 ISO 位 (EOUTCSRH.6)= 0 时,目标端点工作在批量或中断方式。一旦一个端点被配置为批量 / 中断输出
(OUT) 方式(通常在端点 0 的 SET_INTERFACE 命令之后),硬件将 OPRDY 位 (EOUTCSRL.0) 位置 1 并
在收到一个 OUT 令牌和数据包后产生中断。当前 OUT 数据包(已准备好从 FIFO 卸载的数据包)中的字节
数由寄存器 EOUTCNTH 和 EOUTCNTL 给出。响应该中断时,固件应将数据包从 OUT FIFO 中卸载并将
OPRDY 位清 0。
可以通过向 SDSTL 位 (EOUTCSRL.5) 写 1 来停止批量或中断管道。当 SDSTL = 1 时,硬件对所有的 OUT
请求都以STALL条件回应。每当硬件产生一个STALL条件时,会产生一个中断,且STSTL位(EOUTCSRL.6)
被置 1。 STSTL 位必须用固件清 0。
当 OUT FIFO 中有一个准备好的数据包时,硬件自动将 OPRDY 位置 1。注意:如果目标端点被使能为双缓
冲模式,则 OUT FIFO 中可能同时有两个数据包准备好。在这种情况下,在固件将第一个数据包卸载并将
OPRDY 位清 0 后,硬件会立即将 OPRDY 位置 1。在这种情况下会产生第二个中断。
21.13.2. 端点 1~3 输出 (OUT) 等时方式
当 ISO 位 (EOUTCSRH.6) 被置 1 时,目标端点工作在等时 (ISO) 方式。一旦一个端点被配置为 ISO OUT 方
式,主机将每帧发送一个数据包;但数据包在每帧中的位置可以不同。因此建议将 ISO OUT 端点使能为双
缓冲方式。
每次收到一个数据包时,硬件将接收到的数据包装入端点 FIFO,将 OPRDY 位 (EOUTCSRL.0) 置 1,并产
生中断 (如果被允许)。固件一般用该中断将数据包从端点 FIFO 卸载,并将 OPRDY 位清 0。
如果在端点 FIFO 没有空间的情况下收到一个数据包,则会产生中断,并且 OVRUN 位 (EOUTCSRL.2) 被
置 1。如果 USB0 接收到一个有 CRC 错误的 ISO 数据包,则该数据包被装入端点 FIFO, OPRDY 被置 1,
产生中断 (如果被允许),并且 DATAERR 位 (EOUTCSRL.3) 被置 1。软件应在每次将数据包从 ISO OUT
端点 FIFO 卸载后检查 DATAERR 位。
201
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.22. EOUTCSRL:USB0 OUT 端点控制寄存器低字节
位
7
6
5
4
3
2
1
0
名称
CLRDT
STSTL
SDSTL
FLUSH
DATERR
OVRUN
FIFOFUL
OPRDY
类型
W
R/W
R/W
R/W
R
R/W
R
R/W
复位
0
0
0
0
0
0
0
0
USB 寄存器地址 = 0x14
位
名称
描述
7
CLRDT
清除数据切换位。
6
STSTL
STALL 已发送位。
写
写:软件向该位置 1 将 OUT
端点的数据切换位清 0。
读
读:该位的读出值总是为 0。
当 STALL 握手信号被发送后,硬件将该位置 1。该标志必须用软件清 0。
5
SDSTL
发送 STALL 位。
软件应向该位写 1 以产生 STALL 握手信号。软件应向该位写 0 以结束 STALL 信号。该
位对 ISO 方式没有影响。
4
FLUSH
FIFO 清空位。
向该位写 1 将从 OUT 端点 FIFO 中清除下一个数据包。FIFO 指针被复位,OPRDY 位被
清 0。如果 FIFO 中包含多个数据包,软件必须对每个数据包向 FLUSH 写 1。当 FIFO
清空完成后,硬件将 FLUSH 位清 0。
注:
注:如果当前包的数据已被从 FIFO 中读出,则不应用 FLUSH 位清空该包。而是应当手动
读取整个包。
3
DATERR 数据错误位。
在 ISO 方式,如果接收到的数据包有 CRC 或位填充错误,该位被硬件置 1。当软件清除
OPRDY 时,该位被清 0。该位只在 ISO 方式有效。
2
OVRUN 数据溢出位。
当一个输入数据包不能被装入到 OUT 端点 FIFO 时,该位被硬件置 1。该位只在 ISO 方
式有效。该位必须用软件清 0。
0:无数据溢出。
1:自该标志最后一次被清除以来,因 FIFO 已满导致数据包丢失。
1
FIFOFUL OUT FIFO 满。
该位指示 OUT FIFO 的内容。如果端点被使能为双缓冲模式 (DBIEN = 1),当 FIFO 中有
两个数据包时 FIFO 已满。如果 DBIEN = 0,当 FIFO 中有一个数据包时 FIFO 已满。
0:OUT 端点 FIFO 未满。
1:OUT 端点 FIFO 已满。
0
OPRDY
输出 (OUT) 数据包准备好。
当有数据包可用时硬件将该位置 1 并产生中断。软件应在将每个数据包从 OUT 端点
FIFO 卸载后将该位清 0。
??? 1.4
202
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.23. EOUTCSRH:USB0 OUT 端点控制寄存器高字节
位
7
6
名称
DBOEN
ISO
类型
R/W
复位
0
5
4
3
2
1
0
R/W
R
R
R
R
R
R
0
0
0
0
0
0
0
USB 寄存器地址 = 0x15
位
名称
7
DBOEN
功 能
双缓冲使能。
0:禁止所选 OUT 端点的双缓冲功能。
1:使能所选 OUT 端点的双缓冲功能。
6
ISO
5:0
未使用
等时传输使能。
该位使能 / 禁止在当前端点进行等时传输
0:端点被配置为批量 / 中断传输。
1:端点被配置为等时传输。
读 = 000000b,写 = 忽略。
USB SFR 定义 21.24. EOUTCNTL:USB0 OUT 端点计数器寄存器低字节
位
7
6
5
4
名称
EOCL[7:0]
类型
R
复位
0
0
0
0
3
2
1
0
0
0
0
0
USB 寄存器地址 = 0x16
位
功能
名称
7:0 EOCL[7:0] OUT 端点计数器低字节。
EOCL 保持在当前 OUT 端点 FIFO 中的最后一个接收数据包之 10 位数据字节数的低 8
位。该数值只在 OPRDY = 1 时有效。
203
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
USB SFR 定义 21.25. EOUTCNTH:USB0 OUT 端点计数器寄存器高字节
位
7
6
5
4
3
2
1
0
EOCH[1:0]
名称
类型
R
R
R
R
R
R
R
R
复位
0
0
0
0
0
0
0
0
USB 寄存器地址 = 0x17
位
名称
功能
未使用
读 = 000000b。写 = 忽略。
1:0 EOCH[1:0] OUT 端点计数器高字节。
EOCH 保持在当前 OUT 端点 FIFO 中的最后一个接收数据包之 10 位数据字节数的高 2
位。该数值只在 OPRDY = 1 时有效。
7:2
??? 1.4
204
C8051F380/1/2/3/4/5/6/7/C
205
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
22. SMBus0 和 SMBus1 (I2C 兼容 )
SMBus I/O 接口是一个二线的双向串行总线。 SMBus 完全符合系统管理总线规范 1.1 版,并与 I2C 串行总
线兼容。 C8051F380/1/2/3/4/5/6/7/C 器件包含两个 SMBus 接口:SMBus0 和 SMBus1。
系统控制器对接口的读出操作都是以字节为单位的,由 SMBus 接口自动控制数据的串行传输。在作为主或从
器件时,数据传输的最大速率可达系统时钟频率的二十分之一 (这可能比 SMBus 接口自动控制数据的串行
传输。在作为主或从器件时,数据传输的最大速率可达系统时钟频率的二十分之一 (这可能比 SMBus 的规
定速度要快,取决于所使用的系统时钟)。可以采用延长低电平时间的方法协调同一总线上不同速度的器件。
SMBus 可以工作在主和 / 或从方式,可以在一个多主总线工作。 SMBus 提供了 SDA (串行数据)控制、
SCL (串行时钟)产生和同步、仲裁逻辑以及起始 / 停止的控制和产生电路。 SMBus 外设可以完全由软件
驱动 (即软件接受 / 拒绝从地址和产生 ACK),或者被使能为由硬件识别从地址和自动产生 ACK 以减小软
件开销。SMBus0 外设的原理框图和相关的 SFR 示于图 22.1。除了用于时钟源的定时器以及实现 SCL 低电
平超时功能所用的定时器不同外, SMBus1 与 SMBus0 完全相同。更详细的信息见具体的 SFR 定义。
SMB0CN
MT S S A A A S
A X T T C R C I
SMA O K B K
T O
R L
E D
QO
R E
S
T
SMB0CF
E I B E S S S
N N U XMMM
S H S T B B B
M Y H T F C
B
OO T S
L E E 1
D
SMBUS 控制逻辑
总线仲裁
SCL 同步
SCL 产生 (主方式)
SDA 控制
硬件从地址识别
硬件ACK产生
IRQ 产生
中断请求
S
M
B
C
S
0
00
T0 溢出
01
10
T1 溢出 (SMBus0) , T5 溢出 (SMBus1)
TMR2H 溢出
11
TMR2L 溢出
SCL
控制
数据通路
控制
S
L
V
5
S
L
V
4
S
L
V
3
S
L
V
2
S
L
V
1
SMB0ADR
SG
L C
V
0
S S S
L L L
V V V
MMM
6 5 4
S S S S
L L L L
V V V V
MMMM
3 2 1 0
N
交
叉
开
关
SDA
控制
SMB0DAT
7 6 5 4 3 2 1 0
S
L
V
6
SCL
滤波器
端口 I/O
SDA
滤波器
E
H
A
C
K
SMB0ADM
N
图 22.1. SMBus 原理框图
??? 1.4
205
C8051F380/1/2/3/4/5/6/7/C
22.1. 支持文档
假设读者熟悉或有条件阅读下列支持文档:
1. I2C 总线及其使用 (包含规范),飞利浦半导体。
2. I2C 总线规范 —2.0 版,飞利浦半导体。
3. 系统管理总线规范 —1.1 版, SBS 实施者论坛 (SBS implementers forum)。
22.2. SMBus 配置
图 22.2 给出了一个典型的 SMBus 配置。SMBus 规范允许的隐性状态电压可以在 3.0V 和 5.0V 之间,总线
上不同器件的工作电压可以不同。 SCL (串行时钟)和 SDA (串行数据)线是双向的,必须通过一个上拉
电阻或等效电路将它们连到正电源电压。连接在总线上的每个器件的 SCL 和 SDA 都必须是漏极开路或集电
极开路输出,因此当总线空闲时,这两条线都被拉到高电平 (隐性状态)。总线上的最大器件数只受所需上
升和下降时间的限制,上升和下降时间分别不能超过 300ns 和 1000ns。
VDD = 5V
VDD = 3V
VDD = 5V
VDD = 3V
主器件
从器件1
从器件2
SDA
SCL
图 22.2. 典型的 SMBus 配置
22.3. SMBus 操作
有两种可能的数据传输类型:从主发送器到所寻址的从接收器 (写)和从被寻址的从发送器到主接收器
(读)。这两种数据传输都由主器件启动,主器件还在 SCL 上提供串行时钟。 SMBus 接口可以工作在主方
式或从方式,同一总线上可以有多个主器件。如果两个或多个主器件同时启动数据传输,仲裁机制将保证有
一个主器件会赢得总线。注意:没有必要在一个系统中指定某个器件作为主器件;任何一个发送起始条件
(START) 和从器件地址的器件就成为该次数据传输的主器件。
一次典型的 SMBus 数据传输包括一个起始条件 (START)、一个地址字节(位 7-1:7 位从地址;位 0:R/W
方向位)、一个或多个字节的数据和一个停止条件 (STOP)。每个接收的字节 (由一个主器件或从器件)都
必须用 SCL 高电平期间的 SDA 低电平 (见图 22.3)来确认 (ACK)。如果接收器件不确认,则发送器件将
读到一个 “ 非确认 ”(NACK),这用 SCL 高电平期间的 SDA 高电平表示。
方向位 (R/W) 占据地址字节的最低位。方向位被设置为逻辑 1 表示这是一个 “ 读 ”(READ) 操作,方向位为逻
辑 0 表示这是一个 “ 写 ”(WRITE) 操作。
206
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
所有的数据传输都由主器件启动,可以有一个或多个被寻址的从器件作为目标。主器件产生一个起始条件,
然后发送从地址和方向位。如果本次数据传输事务是一个从主器件到从器件的写操作,则主器件每发送一个
数据字节后等待来自从器件的确认。如果是一个读操作,则由从器件发送数据并在每个字节结束后等待主器
件的确认。在数据传输结束时,主器件产生一个停止条件,结束本次数据传输事务并释放总线。图 22.3 示
出了一次典型的 SMBus 数据传输事务过程。
SCL
SD A
SLA 6
START
SLA 5-0
从地址 + R/W
R/W
D7
AC K
D 6 -0
数 据字节
N AC K
STOP
图 22.3. SMBus 数据传输
22.3.1. 发送器与接收器
在 SMBus 通信接口中,发送器是指正在总线上发送一个地址或数据字节到其它器件的器件,而接收器是指
总线上的另一器件正在向它发送一个地址或数据字节。发送器在传输地址或数据字节期间控制 SDA 线。在
发送器每发送完一个地址或数据信息字节之后,接收器在本次传送的 ACK 阶段发送一个 ACK 或 NACK 位,
在此期间接收器控制 SDA 线。
22.3.2. 总线仲裁
一个主器件只能在总线空闲时启动一次传输。在一个停止条件之后或 SCL 和 SDA 保持高电平已经超过了规
定时间 (见第 208 页 22.3.5. 节 “SCL 高电平 (SMBus 空闲 ) 超时 ” 时,总线是空闲的。在两个或多个器件
试图同时开始传送的情况下,使用仲裁机制迫使一个主器件放弃总线。这些主器件继续发送起始条件,直到
其中一个主器件发送高电平而其它主器件发送低电平。由于总线是漏极开路的,因此被拉为低电平。试图发
送高电平的主器件将检测到 SDA 上的低电平而退出竞争。赢得总线的主器件继续其数据传输过程;而未赢
得总线的器件成为从器件,如果被寻址,则在剩下的传输过程中接收数据。该仲裁机制是非破坏性的:总会
有一个器件赢得总线,不会发生数据丢失。
22.3.3. 时钟低电平扩展
SMBus 提供一种与 I2C 类似的时钟同步机制,允许不同速度的器件共存于同一个总线上。为了使低速从器
件能与高速主器件通信,在传输期间采取低电平扩展。从器件可以临时保持 SCL 线为低电平以扩展时钟低
电平时间,这实际上相当于降低了串行时钟频率。
22.3.4. SCL 低电平超时
如果 SCL 线被总线上的从器件保持为低电平,则不能再进行通信,并且主器件也不能通过强制 SCL 变为高
电平来纠正这种错误情况。为了解决这一问题, SMBus 协议规定:参加一次数据传输的器件必须检查时钟
低电平时间,若超过 25ms 则认为是 “ 超时 ”。检测到超时条件的器件必须在 10ms 以内对通信复位。
对于 SMBus0 接口,定时器 3 用于实现 SCL 低电平超时;对于 SMBus1 接口,定时器 4 用于实现 SCL 低
电平超时。当 SMBnCF 中的 SMBnTOE 位被置 1 时, SCL 低电平超时功能被使能。相应的定时器在 SCL
为高电平时被强制重装载,在 SCL 为低电平时开始计数。如果相关定时器被使能并且溢出周期被配置为
25ms(且 SMBnTOE 被置 1),则可在发生 SCL 低电平超时事件时用相应的定时器中断服务程序对 SMBus
复位 (禁止后重新使能)。
??? 1.4
207
C8051F380/1/2/3/4/5/6/7/C
22.3.5. SCL 高电平 (SMBus 空闲 ) 超时
SMBus 规范规定:如果一个器件保持 SCL 和 SDA 线为高电平的时间超过 50 µs,则认为总线处于空闲状态。
当 SMBnCF 中的 SMBnFTE 位被置 1 时,如果 SCL 和 SDA 保持高电平的时间超过 10 个 SMBus 时钟周期
(由配置为 SMBus 时钟源的定时器定义),总线将被视为空闲。如果一个 SMBus 器件正等待产生一个主起始
条件,则该起始条件将在总线空闲超时之后立即产生。总线空闲超时检测需要一个时钟源,即使对从器件方式
也不例外。
22.4. SMBus 的使用
SMBus 既可以工作在主方式,也可以工作在从方式。SMBus 接口提供串行传输的时序和移位控制;更高层
的协议由用户软件实现。 SMBus 接口提供下述与应用无关的特性:

面向字节的串行数据传输;
SCL 时钟信号产生 (仅限主方式)及 SDA 数据同步;

超时 / 总线错误识别 (按照配置寄存器 SMBnCF 中的定义);

START/STOP 定时、检测和产生;

总线仲裁;
中断产生;
状态信息;
可选的硬件从地址识别和地址 / 数据的自动确认。




每次数据字节或从地址传输都产生 SMBus 中断。当硬件确认被禁止时,中断产生的时刻取决于硬件正在作
为数据发送者还是作为接收者。当作为发送者时 (即发送地址 / 数据,接收 ACK),中断产生在 ACK 周期
之后,以使软件能读取收到 ACK 的值;当接收数据时 (即接收地址 / 数据,发送 ACK),中断产生在 ACK
周期之前,使软件能确定要发出的 ACK 值。如果硬件确认被使能,这些中断总是产生在 ACK 周期之后。有
关传输时序的详细信息见第 22.5 章。
主器件产生起始条件时也会产生中断,指示数据传输开始;从器件在检测到停止条件时产生中断,指示数据
传输结束。软件应通过读 SMBnCN(SMBus 控制寄存器)来确定 SMBus 中断的原因。SMBnCN 寄存器的
说明见第 22.4.3 章。表 22.5 给出了快速 SMBnCN 译码参考
22.4.1. SMBus 配置寄存器
SMBus 配置寄存器 (SMBnCF) 用于使能 SMBus 主和 / 或从方式,选择 SMBus 时钟源和设置 SMBus 定时
和超时选项。当 ENSMB 位被置 1 时, SMBus 的所有主和从事件都被使能。可以通过将 INH 位置 1 来禁止
从事件。在从事件被禁止的情况下, SMBus 接口仍然监视 SCL 和 SDA 引脚;但在接收到地址时会发出
NACK (非确认)信号,并且不会产生任何从中断。当 INH 被置 1 时,在下一个起始条件 (START) 后所有
的从事件都将被禁止 (当前传输过程的中断将继续)。
208
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表 22.1. SMBus 时钟源选择
SMBus0 时钟源
SMBus1 时钟源
定时器 0 溢出
定时器 1 溢出
定时器 2 高字节溢出
定时器 2 低字节溢出
定时器 0 溢出
定时器 5 溢出
定时器 2 高字节溢出
定时器 2 低字节溢出
SMBnCS1 SMBnCS0
0
0
1
1
0
1
0
1
SMBCS1-0 位选择 SMBus 时钟源,时钟源只在主方式或空闲超时检测被使能时使用。当 SMBus 接口工作
在主方式时,所选时钟源的溢出周期决定 SCL 低电平和高电平的最小时间,该最小时间由方程 22.1 给出。
SMBus 可以与其它外设共享该时钟源,前提是时钟源定时器一直保持运行状态。例如,定时器 1 溢出可以
同时用于产生 SMBus0 和 SMBus1 时钟频率。有关定时器配置见第 263 页 26. 节 “ 定时器 ” 。
1
T HighMin = T LowMin = -----------------------------------------------------------------f ClockSourceOverflow
方程 22.1. 最小 SCL 高和低电平时间
所选择的时钟源应被配置为能产生由方程 22.1 所定义的最小 SCL 高电平和低电平时间。当接口工作在主方
式时 (并且 SCL 不被总线上的任何其它器件驱动或扩展),典型的 SMBus 位速率可由方程 22.2 估算:
f ClockSourceOverflow
BitRate = -----------------------------------------------------------------3
方程 22.2. 典型 SMBus 位速率
图 22.4 给出了由方程 22.2 定义的典型 SCL 波形。注意,THIGH 通常为 TLOW 的两倍。实际的 SCL 输出
波形可能会因总线上有其它器件而发生改变 (SCL 可能被低速从器件扩展低电平,或被其它参与竞争的主
器件驱动为低电平)。当工作在主方式时,位速率绝不会超过由方程 22.1 定义的极限值。
定时器源
溢出
SCL
TL o w
SCL高电平 超时
THig h
图 22.4. 典型的 SMBus SCL 波形
??? 1.4
209
C8051F380/1/2/3/4/5/6/7/C
设置 EXTHOLD 位为逻辑 1 将扩展 SDA 线的最小建立时间和保持时间。最小 SDA 建立时间定义了在 SCL
上升沿到来之前 SDA 的最小稳定时间。最小 SDA 保持时间定义了在 SCL 下降沿过去之后当前 SDA 值继续
保持稳定的最小时间。 SMBus 规定的最小建立和保持时间分别为 250ns 和 300ns。必要时应将 EXTHOLD
位置 1,以保证最小建立和保持时间符合 SMBus 规范。表 22.2 列出了对应两种 EXTHOLD 设置情况的最小
建立和保持时间。当 SYSCLK 大于 10MHz 时,通常需要扩展建立和保持时间。
表 22.2. 最小 SDA 建立和保持时间
最小 SDA 建立时间
EXTHOLD
最小 SDA 保持时间
Tlow – 4 个系统时钟
注:
0
或
3 个系统时钟
1
1 个系统时钟 + 软件延时 *
3 个系统时钟
12 个系统时钟
发送 ACK 位和所有数据传输中 MSB 的建立时间。当使用软件确认时,软件延时发
生在写 SMB0DAT 或 ACK 到 SI 被清除之间。注意,如果写 ACK 和清除 SI 发生在
同一个写操作,则软件延时为 0。
在 SMBnTOE 位被置 1 的情况下,定时器 3 (SMBus0) 和定时器 5 (SMBus1) 应被配置为在 25ms 后溢出,
以检测 SCL 低电平超时(见第 207 页 22.3.4. 节 “SCL 低电平超时 ” )。SMBus 接口在 SCL 为高电平时强
制重装载相应的定时器,并允许定时器在 SCL 为低电平时开始计数。应使用定时器中断服务程序对 SMBus
通信复位,这可通过先禁止然后再重新使能 SMBus 接口来实现。
通过将 SMBnFTE 位置 1 来使能 SMBus 空闲超时检测。当该位被置 1 时,如果 SCL 和 SDA 保持高电平的
时间超过 10 个 SMBus 时钟周期,总线将被视为空闲 (见图 22.4)。
22.4.2. SMBus 定时控制寄存器
SMBus 定时控制寄存器 (SMBTC) 用于在某些情况下限制对起始条件的检测。在 SDA 和 SCL 线存在严重的
阻抗或电容不匹配的一些系统中,在地址或数据传送期间有可能发生 SCL 下降沿出现在 SDA 之后的情况。
这种事件可能导致检测到总线上的假起始条件。这类事件在一个标准的 SMBus 或 I2C 系统中是不希望发生
的。在大多数系统中,不应调整该参数,建议保持其缺省值。
缺省情况下,如果在 SDA 的下降沿之后 (即一个 SYSCLK 或更多)检测到 SCL 下降沿,则器件会认为检
测到一个起始条件。 SMBTC 寄存器用于增加 SDA 和 SCL 下降沿之间所需要的保持时间,以避免器件识别
出起始条件。可以增加 2、 4 或 8 个 SYSCLK 以防止在这类总线条件的系统中检测到假起始条件。
210
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 22.1. SMB0CF:SMBus 时钟 / 配置寄存器
位
7
6
5
名称
ENSMB0
INH0
BUSY0
类型
R/W
R/W
R
R/W
R/W
R/W
复位
0
0
0
0
0
0
4
3
2
EXTHOLD0 SMB0TOE SMB0FTE
1
0
SMB0CS[1:0]
R/W
0
0
SFR 地址 = 0xC1 ; SFR 页 = 0
位
名称
7
ENSMB0
6
5
4
INH0
功能
SMBus0 使能。
该位被置 1 时使能 SMBus0 接口。当被使能时,接口一直监视 SDA0 和 SCL0 引
脚。
SMBus0 从禁止。
BUSY0
当该位被设置为逻辑 1 时, SMBus0 接口在有从事件发生时不产生中断。这实际上
相当于将 SMBus0 从器件移出总线。主方式中断不受影响。
SMBus0 忙标志。
EXTHOLD0
当正在进行一次传输时,该位由硬件置 1。当检测到停止条件或空闲超时时,该位被
清 0。
SMBus0 建立和保持时间扩展使能。
该位控制 SDA0 的建立和保持时间 (根据表 22.2)。
0:禁止 SDA0 建立和保持时间扩展。
3
2
SMB0TOE
1:允许 SDA0 建立和保持时间扩展。
SMBus0 SCL 超时检测使能。
SMB0FTE
该位使能 SCL 低电平超时检测。当被置 1 时, SMBus0 接口在 SCL0 为高电平时强
制重装载定时器 3,并允许定时器 3 在 SCL0 变为低电平时开始计数。如果定时器 3
被配置为分割方式,则当 SCL0 为高电平时,只有定时器 3 的高字节被重装载。应
将定时器 3 编程为 25ms 后产生中断,并使用定时器 3 中断服务程序对 SMBus0 通
信复位。
SMBus0 空闲超时检测使能。
当该位被置 1 时,如果 SCL0 和 SDA0 保持高电平的时间超过 10 个 SMBus 时钟周
期,总线将被视为空闲。
1:0 SMB0CS[1:0] SMBus0 时钟源选择。
这两位选择用于产生 SMBus0 的时钟源,该时钟源用于产生 SMBus0 位速率。应根
据方程 22.1 配置所选时钟源。
00:定时器 0 溢出。
01:定时器 1 溢出。
10:定时器 2 高字节溢出。
11:定时器 2 低字节溢出。
??? 1.4
211
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 22.2. SMB1CF:SMBus 时钟 / 配置寄存器
位
7
6
5
名称
ENSMB1
INH1
BUSY1
类型
R/W
R/W
R
R/W
R/W
R/W
复位
0
0
0
0
0
0
4
3
2
EXTHOLD1 SMB1TOE SMB1FTE
1
0
SMB1CS[1:0]
R/W
0
0
SFR 地址 = 0xC1 ; SFR 页 = F
位
名称
7
ENSMB1
功能
SMBus1 使能。
该位被置 1 时使能 SMBus1 接口。当被使能时,接口一直监视 SDA1 和 SCL1 引
脚。
6
INH1
SMBus1 从禁止。
当该位被设置为逻辑 1 时, SMBus1 接口在有从事件发生时不产生中断。这实际上
相当于将 SMBus1 从器件移出总线。主方式中断不受影响。
5
BUSY1
SMBus1 忙标志。
当正在进行一次传输时,该位由硬件置 1。当检测到停止条件或空闲超时时,该位被
清 0。
4
EXTHOLD1
SMBus1 建立和保持时间扩展使能。
该位控制 SDA1 的建立和保持时间 (根据表 22.2)。
0:禁止 SDA1 建立和保持时间扩展。
1:允许 SDA1 建立和保持时间扩展。
3
SMB1TOE
SMBus1 SCL 超时检测使能。
该位使能 SCL 低电平超时检测。当被置 1 时, SMBus1 接口在 SCL1 为高电平时强
制重装载定时器 4,并允许定时器 4 在 SCL1 变为低电平时开始计数。如果定时器 4
被配置为分割方式,则当 SCL1 为高电平时,只有定时器 4 的高字节被重装载。应
将定时器 4 编程为 25ms 后产生中断,并使用定时器 4 中断服务程序对 SMBus1 通
信复位。
2
SMB1FTE
SMBus1 空闲超时检测使能。
当该位被置 1 时,如果 SCL1 和 SDA1 保持高电平的时间超过 10 个 SMBus 时钟周
期,总线将被视为空闲。
1:0 SMB1CS[1:0] SMBus1 时钟源选择。
这两位选择用于产生 SMBus1 的时钟源,该时钟源用于产生 SMBus1 位速率。应根
据方程 22.1 配置所选时钟源。
00:定时器 0 溢出。
01:定时器 5 溢出。
10:定时器 2 高字节溢出。
11:定时器 2 低字节溢出。
212
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 22.3. SMBTC:SMBus 定时控制寄存器
位
7
6
5
4
3
名称
类型
R
R
R
R
复位
0
0
0
0
2
1
0
SMB1SDD[1:0]
SMB0SDD[1:0]
R/W
R/W
0
0
0
0
SFR 地址 = 0xB9 ; SFR 页 = F
位
7:4
3:2
名称
功能
未使用
读 = 0000b ;写 = 忽略。
SMB1SDD[1:0] SMBus1 起始条件检测窗口。
这两位用于增加在起始条件检测时所需要的 SDA1 和 SCL1 下降沿之间的保持时间。
00:不需额外的保持时间 (0 ~ 1 SYSCLK)。
01:增加保持时间窗口到 2 ~ 3 SYSCLK。
10:增加保持时间窗口到 4 ~ 5 SYSCLK。
11:增加保持时间窗口到 8 ~ 9 SYSCLK。
1:0
SMB0SDD[1:0] SMBus0 起始条件检测窗口。
这两位用于增加在起始条件检测时所需要的 SDA0 和 SCL0 下降沿之间的保持时间。
00:不需额外的保持时间 (0 ~ 1 SYSCLK)。
01:增加保持时间窗口到 2 ~ 3 SYSCLK。
10:增加保持时间窗口到 4 ~ 5 SYSCLK。
11:增加保持时间窗口到 8 ~ 9 SYSCLK。
??? 1.4
213
C8051F380/1/2/3/4/5/6/7/C
22.4.3. SMBus 控制寄存器 SMBnCN
SMBus 控制寄存器 SMBnCN 用于控制 SMBus 接口和提供状态信息(见 SFR 定义 22.4)。SMBnCN 中的
高 4 位 (MASTER、 TXMODE、 STA 和 STO)组成一个状态向量,可利用该状态向量转移到中断服务程
序。MASTER 指示在当前传送期间器件工作在主方式还是从方式。TXMODE 指示对于当前字节器件是在发
送数据还是接收数据。
STA 和 STO 指示自上次 SMBus 中断以来检测到或产生了一个起始 (START) 和 / 或停止条件 (STOP)。当
SMBus 工作在主方式时, STA 和 STO 还用于产生起始和停止条件。当总线变成空闲时 (在起始条件产生
后, STA 未被硬件清 0),向 STA 写 1 将使 SMBus 接口进入主方式并产生一个起始条件。在主方式,向
STO 写 1 将使 SMBus 接口产生一个停止条件,并在下一个 ACK 周期后结束当前的数据传输。如果 STA 和
STO 都被置 1 (在主方式),则产生一个停止条件后再产生一个起始条件。
ARBLOST 位指示 SMBus 接口是否在一次总线竞争中失败。当接口正在发送时 (主或从方式),可能会出
现这种情况。当工作在从方式时,出现这种情况表示发生了总线错误条件。在每次 SI 被清 0 后,ARBLOST
也被硬件清 0。
在每次传输的开始和结束、每个字节帧之后或竞争失败时, SI 位 (SMBus 中断标志)被硬件置 1,详见
表 22.3。
有关 SI 位的重要注意事项:当 SI 标志被置 1 时, SMBus 接口被冻结; SCL 线被保持为低电平,总线状态
被冻结,直到 SI 被软件清 0 为止。
22.4.3.1. 软件 ACK 产生
当寄存器 SMBnADM 中的 EHACK 位被清 0 时,器件的固件必须检查接收的从地址,并对该从地址和接收
的数据字节发 ACK 或 NACK。当 SMBus 接口作为接收器时,写 ACK 位定义要发出的 ACK 值;当作为发
送器时,读 ACK 位将返回最后一个 ACK 周期的接收值。 ACKRQ 在每接收到一个字节后置 1,表示需要写
待发出的 ACK 值。当 ACKRQ 置 1 时,软件应在清除 SI 之前向 ACK 位写入要发出的 ACK 值。如果在清除
SI 之前软件未写 ACK 位,接口电路将产生一个 NACK。在向 ACK 位写入后, SDA 线将立即出现所定义的
ACK 值;但 SCL 将保持低电平,直到 SI 被清 0。如果接收的从地址未被确认,则以后的从事件将被忽略,
直到检测到下一个起始条件。
22.4.3.2. 硬件 ACK 产生
当寄存器 SMBnADM 中的 EHACK 位被置 1 时,自动从地址识别和 ACK 产生被使能。有关自动从地址识别的
更详细的信息见第 22.4.4 章。作为接收器时, ACK 位的当前值会在输入数据字节的 ACK 周期被自动发送;
当作为发送器时,读 ACK 位将返回最后一个 ACK 周期的接收值。当硬件 ACK 产生被使能时,不使用 ACKRQ
位。如果接收的从地址被硬件否认 (NACK),则以后的从事件将被忽略,直到检测到下一个起始条件,并且
不产生中断。
表 22.3 列出了影响 SMBnCN 寄存器中各个位的硬件变化源。有关使用 SMBnCN 寄存器进行 SMBus 的状
态译码的详细信息见表 22.5。
214
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 22.4. SMB0CN:SMBus 控制寄存器
位
名称
7
6
MASTER0 TXMODE0
5
4
3
STA0
STO0
2
ACKRQ0 ARBLOST0
1
0
ACK0
SI0
类型
R
R
R/W
R/W
R
R
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xC0 ; SFR 页 = 0 ;可位寻址
位
7
6
名称
描述
读
写
MASTER0 SMBus0 主 / 从标志。该只读 0:SMBus0 工作 在从方 N/A
位指示 SMBus0 是否工作在主 式。
方式。
1:SMBus0 工作在主方
式。
TXMODE0 SMBus0 发送方式标志。该只 0:SMBus0 工作在接收器 N/A
读位指示 SMBus0 是否工作在 方式。
发送器方式。
5
STA0
SMBus0 起始标志。
4
STO0
SMBus0 停止标志。
1:SMBus0 工作在发送
器方式。
0:未检测到起始条件或重 0:不产生起始条件。
复起始条件。
1:当配置为主方式时,发
1:检测到起始条件或重
送起始条件或重复起始条
复起始条件。
件。
0:未检测到停止条件。
0:不发送停止条件。
1:检测到停止条件 (在 1:当配置为主方式时,导
从方式)或挂起 (在主方 致发送一个停止条件 (在
式)。
下一个 ACK 周期之后)。
3
2
1
0
ACKRQ0
0:无 ACK 请求。
由硬件清 0。
N/A
1:有 ACK 请求。
0:无仲裁错误。
N/A
SMBus0 确认。
1:竞争失败。
0:收到 NACK。
0:发送 NACK。
SMBus0 中断标志。
1:收到 ACK。
0:无中断请求。
MBus0 确认请求。
ARBLOST0 SMBus0 竞争失败标志。
ACK0
SI0
当出现表 15.3 列出的条件时
该位被硬件置 1。 SI0 必须用
软件清 0。当 SI0 被置 1 时,
SCL0 被保持低电平,
SMBus0 被冻结。
1:有中断请求。
1:发送 ACK。
0:清除中断并启动下一个
状态机事件。
1:强制中断。
??? 1.4
215
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 22.5. SMB1CN:SMBus 控制寄存器
位
名称
7
6
MASTER1 TXMODE1
5
4
STA1
STO1
3
2
ACKRQ1 ARBLOST1
1
0
ACK1
SI1
类型
R
R
R/W
R/W
R
R
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xC0 ; SFR 页 = F ;可位寻址
位
7
6
名称
描述
读
写
MASTER1 SMBus1 主 / 从标志。该只读 0:SMBus1 工作在 从方 N/A
位指示 SMBus1 是否工作在主 式。
方式。
1:SMBus1 工作在主方
式。
TXMODE1 SMBus1 发送方式标志。该只 0:SMBus1 工作在接收器 N/A
读位指示 SMBus1 是否工作在 方式。
发送器方式。
5
STA1
SMBus1 起始标志。
4
STO1
SMBus1 停止标志。
1:SMBus1 工作在发送
器方式。
0:未检测到起始条件或重 0:不产生起始条件。
复起始条件。
1:当配置为主方式时,发
1:检测到起始条件或重
送起始条件或重复起始条
复起始条件。
件。
0:未检测到停止条件。
0:不发送停止条件。
1:检测到停止条件 (在 1:当配置为主方式时,导
从方式)或挂起 (在主方 致发送一个停止条件 (在
式)。
下一个 ACK 周期之后)。
3
2
1
0
ACKRQ1
0:无 ACK 请求。
由硬件清 0。
N/A
1:有 ACK 请求。
0:无仲裁错误。
N/A
SMBus1 确认。
1:竞争失败。
0:收到 NACK。
0:发送 NACK。
SMBus1 中断标志。
1:收到 ACK。
0:无中断请求。
MBus1 确认请求。
ARBLOST1 SMBus1 竞争失败标志。
ACK1
SI1
当出现表 15.3 列出的条件时
该位被硬件置 1。 SI1 必须用
软件清 0。当 SI1 被置 1 时,
SCL1 被保持低电平,
SMBus1 被冻结。
216
1:有中断请求。
1:发送 ACK。
0:清除中断并启动下一个
状态机事件。
1:强制中断。
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表 22.3. 影响 SMBnCN 的硬件变化原
位
MASTERn
在下述情况被硬件置 1:

STAn


STOn



ARBLOSTn


ACKn




SIn

产生了停止条件。
竞争失败。
检测到起始条件。
竞争失败。
在一个 SMBus 帧开始之前未写
SMBnDAT。
必须用软件清 0。
产生了一个挂起的停止条件。

每个 ACK 周期之后。

每次 SIn 被清 0 时。

输入的 ACK 值为高 (非确认)。
必须用软件清 0。

产生了起始条件。
在一个 SMBus 帧开始之前写了 SMBnDAT。




ACKRQn
产生了起始条件。


TXMODEn
在下述情况被硬件置 0:
在起始条件后接收到一个地址字节。
在作为从器件被寻址时检测到一个停止条
件。
因检测到停止条件而导致竞争失败。
接收到一个字节并需要一个 ACK 响应值。
(仅在硬件 ACK 未被使能时)。
当 STAn 为低时,主器件检测到一个重复起始
条件 (不希望的重复起始条件)。
在试图产生一个停止条件或重复起始条件时
检测到 SCLn 为低电平。
在试图发送 1 时检测到 SDAn 为低电平(ACK
位除外)。
输入的 ACK 值为低 (确认)。
产生了一个起始条件。
竞争失败。
发送了一个字节并收到一个 ACK/NACK

收到一个字节。
在起始条件或重复起始条件之后接收到一个
从地址 +R/W。

收到一个停止条件。



22.4.4. 硬件从地址识别
SMBus 硬件具有自动识别进入的从地址和发送 ACK 的能力,无需软件干预。通过将寄存器 SMBnADM 中
的 EHACK 位置 1 来使能自动从地址识别。这将同时使能硬件自动从地址识别和自动产生接收字节的 ACK
(主或从方式)。有关硬件自动产生 ACK 的详细信息见第 22.4.3.2 章。
用于定义要被硬件识别的地址的寄存器是 SMBus 从地址寄存器和 SMBus 从地址掩码寄存器。用这两个寄
存器可以指定单个地址或一个地址范围 (包括全局呼叫地址 0x00)。这两个寄存器的高 7 位用于定义要被
确认的地址。从地址掩码 SLVM[6:0] 中为 1 的位使能接收的从地址与硬件从地址 SLV[6:0] 中对应位的比较。
从地址掩码中某一位为 0 表示该位在比较时被忽略。在这种情况下,不管进入的从地址的对应位是 1 还是
0,该地址都是可接受的。另外,当寄存器 SMBnADR 中的 GCn 位被置 1 时,硬件会识别全局呼叫地址
(0x00)。表 22.4 列出了一些示例参数设置和在这些条件下能被硬件识别的从地址。
??? 1.4
217
C8051F380/1/2/3/4/5/6/7/C
表 22.4. 硬件地址识别示例 (EHACK = 1)
硬件从地址
SLVn[6:0]
0x34
0x34
0x34
0x34
0x70
从地址掩码
SLVMn[6:0]
0x7F
0x7F
0x7E
0x7E
0x73
GCn 位 被硬件识别的从地址
0
1
0
1
0
0x34
0x34, 0x00 (General Call)
0x34, 0x35
0x34, 0x35, 0x00 (General Call)
0x70, 0x74, 0x78, 0x7C
SFR 定义 22.6. SMB0ADR:SMBus0 从地址寄存器
位
7
6
5
4
3
2
1
0
名称
SLV0[6:0]
GC0
类型
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xCF ; SFR 页 = 0
位
名称
7:1
SLV0[6:0]
功能
SMBus 硬件从地址。
定义用于自动硬件确认的 SMBus0 从地址。只有 SLVM0[6:0] 中的对应位为 1 的那
些地址位与接收的地址比较。这样就允许多个地址被识别。
0
GC0
全局呼叫地址使能。
当硬件地址识别被使能时 (EHACK = 1),该位决定硬件是否也识别全局呼叫地址
(0x00)。
0:全局呼叫地址被忽略。
1:全局呼叫地址被识别。
218
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 22.7. SMB0ADM:SMBus0 从地址掩码寄存器
位
7
6
5
4
3
2
1
0
名称
SLVM0[6:0]
EHACK0
类型
R/W
R/W
复位
1
1
1
1
1
1
1
0
SFR 地址 = 0xCE ; SFR 页 = 0
位
名称
7:1
SLVM0[6:0]
功能
SMBus0 从地址掩码
定义寄存器 SMB0ADR 中哪些位与接收的地址字节比较,哪些位被忽略。
SLVM0[6:0] 中任何被置 1 的位使能与 SLV0[6:0] 中对应位的比较。值为 0 的那些
位被忽略 (这些位在接收的地址中可以是 0,也可以是 1)。
0
EHACK0
硬件确认使能。
使能硬件对从地址和所接收的数据字节的确认。
0:固件必须手动确认所有进入的地址和数据字节。
1:自动从地址识别和硬件确认被使能。
SFR 定义 22.8. SMB1ADR:SMBus1 从地址寄存器
位
7
6
5
4
3
2
1
0
名称
SLV1[6:0]
GC1
类型
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xCF ; SFR 页 = F
位
名称
7:1
SLV1[6:0]
功能
SMBus1 硬件从地址。
定义用于自动硬件确认的 SMBus1 从地址。只有 SLVM1[6:0] 中的对应位为 1 的那
些地址位与接收的地址比较。这样就允许多个地址被识别。
0
GC1
全局呼叫地址使能。
当硬件地址识别被使能时 (EHACK = 1),该位决定硬件是否也识别全局呼叫地址
(0x00)。
0:全局呼叫地址被忽略。
1:全局呼叫地址被识别。
??? 1.4
219
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 22.9. SMB1ADM:SMBus1 从地址掩码寄存器
位
7
6
5
4
3
2
1
0
名称
SLVM1[6:0]
EHACK1
类型
R/W
R/W
复位
1
1
1
1
1
1
1
0
SFR 地址 = 0xCE ; SFR 页 = F
位
名称
7:1
SLVM1[6:0]
功能
SMBus1 从地址掩码。
定义寄存器 SMB1ADR 中哪些位与接收的地址字节比较,哪些位被忽略。
SLVM1[6:0] 中任何被置 1 的位使能与 SLV1[6:0] 中对应位的比较。值为 0 的那些
位被忽略 (这些位在接收的地址中可以是 0,也可以是 1)。
0
EHACK1
硬件确认使能。
使能硬件对从地址和所接收的数据字节的确认。
0:固件必须手动确认所有进入的地址和数据字节。
1:自动从地址识别和硬件确认被使能。
220
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
22.4.5. 数据寄存器
SMBus 数据寄存器 SMBnDAT 保存要发送或刚接收的串行数据字节。在 SIn 标志被置 1 时,软件可以安全
地读 / 写数据寄存器。当 SMBus 被使能但 SIn 标志被清为逻辑 0 时软件不应访问 SMBnDAT 寄存器,因为
接口可能正在对该寄存器中的数据字节进行移入或移出操作。
SMBnDAT 中的数据总是先移出 MSB。在收到一个字节后,接收数据的第一位位于 SMBnDAT 的 MSB。在
数据被移出的同时,总线上的数据被移入,所以 SMBnDAT 中总是保存最后出现在总线上的数据字节。在竞
争失败后,从主发送器变为从接收器时 SMBnDAT 中的数据或地址保持不变。
SFR 定义 22.10. SMB0DAT:SMBus 数据寄存器
位
7
6
5
4
3
名称
SMB0DAT[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xC2 ; SFR 页 = 0
位
名称
功能
7:0 SMB0DAT[7:0] SMBus0 数据。
SMB0DAT 寄存器保存要发送到 SMBus0 串行接口上的一个数据字节,或刚从
SMBus0 串行接口接收到的一个字节。一旦 SI0 串行中断标志被置 1, CPU 即可读
或写该寄存器。只要 SI0 串行中断标志位 (SMB0CN.0) 为逻辑 1,该寄存器内的串
行数据就是稳定的。当 SI0 标志位不为 1 时,系统可能正在移入 / 移出数据,此时
CPU 不应访问该寄存器。
??? 1.4
221
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 22.11. SMB1DAT:SMBus 数据寄存器
位
7
6
5
4
3
名称
SMB1DAT[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xC2 ; SFR 页 = F
位
名称
功能
7:0 SMB1DAT[7:0] SMBus1 数据。
SMB1DAT 寄存器保存要发送到 SMBus1 串行接口上的一个数据字节,或刚从
SMBus1 串行接口接收到的一个字节。一旦 SI1 串行中断标志被置 1, CPU 即可读
或写该寄存器。只要 SI1 串行中断标志位 (SMB1CN.0) 为逻辑 1,该寄存器内的串
行数据就是稳定的。当 SI1 标志位不为 1 时,系统可能正在移入 / 移出数据,此时
CPU 不应访问该寄存器。
222
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
22.5. SMBus 传输方式
SMBus 接口可以被配置为工作在主方式和 / 或从方式。在任一时刻,它将工作在下述 4 种方式之一:主发
送器、主接收器、从发送器或从接收器。 SMBus 接口在产生起始条件时进入主方式,并保持在该方式直到
产生一个停止条件或在总线竞争中失败。 SMBus 在每个字节帧结束后都产生中断。在作为接收器工作时,
ACK 中断的位置取决于硬件 ACK 产生是否被使能。作为接收器时,在硬件 ACK 产生被禁止的情况下,ACK
中断发生在 ACK 之前;在硬件 ACK 产生被使能的情况下,ACK 中断发生在 ACK 之后。作为发送器时中断
发生在 ACK 之后,与硬件 ACK 产生是否被使能无关。
22.5.1. 写操作 (主方式)
在一次写过程期间, SMBus 主器件向从器件写数据。这次传送中的主器件在地址字节和所有数据字节期间
都将作为发送器。 SMBus 接口首先产生一个起始条件,然后发送含有目标从器件地址和数据方向位的第一
个字节。在这种情况下,数据方向位 (R/W) 应为逻辑 0 (WRITE),表示这是一个写操作。主器件接着发送一
个或多个字节的串行数据。在每发送一个字节后,从器件产生一个确认位。当 STO 位被置 1 并产生一个停
止条件后,本次传送结束。注意,如果在发生主发送器中断后没有向 SMBnDAT 写入数据,则接口将切换到
主接收器方式。图 22.5 给出了典型的主器件写过程,只给出了发送两个字节的传输时序,尽管可以发送任
意多个字节。注意,在该方式下,所有的 “ 数据字节传输结束 ” 中断都发生在 ACK 周期之后,与硬件 ACK
产生是否被使能无关。
硬件 ACK被使 能时(EHACK = 1)产生 的中断
S
SLA
W
A
数据 字节
A
数据字节
A
P
硬件 ACK被禁 止时(EHACK = 0)产生 的中断
S = START
P = STOP
A = ACK
W = WRIT E
SLA = 从地 址
SMBus 接口接 收
SMBus 接口发 送
图 22.5. 典型的主器件写操作
??? 1.4
223
C8051F380/1/2/3/4/5/6/7/C
22.5.2. 读操作 (主方式)
在一次读操作期间, SMBus 主器件从一个从器件读数据。这次传送中的主器件在地址字节期间为发送器,
在所有的数据字节期间都将作为接收器。 SMBus 接口首先产生一个起始条件,然后发送含有目标从器件地
址和数据方向位的第一个字节。在这种情况下,数据方向位 (R/W) 应为逻辑 1(READ),表示这是一个读操
作。然后, SMBus 接口接收 SDA 线上来自从器件的串行数据,并输出 SMBus 串行时钟。从器件发送一个
或多个字节的串行数据。
如果硬件 ACK 产生被禁止,则每接收到一个字节后 ACKRQ 位被置 1 并产生中断。此时软件必须写 ACK 位
以确认 (ACK) 或否认 (NACK) 所接收的字节。
在硬件 ACK 产生被使能的情况下, SMBus 硬件会自动产生 ACK/NACK,并产生中断。注意:当硬件 ACK
产生被使能时,软件应在接收字节前写正确的 ACK 或 NACK 值。
向 ACK 位写 1 产生一个 ACK,写 0 产生一个 NACK。软件应在最后一次数据传送时向 ACK 位写 0,以发
送 NACK。接口电路将在对 STO 位置 1 并产生一个停止条件后退出主接收器方式。在主接收器方式,如果
执行了 SMBnDAT 写操作,接口将切换到主发送器方式。图 22.6 给出了典型的主方式读过程,只给出了接
收两个字节的传输时序,尽管可以接收任意多个字节。注意,在该方式下, “ 数据字节传输结束 ” 中断可发
生在过程中的不同位置,取决于硬件 ACK 产生是否被使能。当硬件 ACK 产生被禁止时,中断发生在 ACK
之前;当硬件 ACK 产生被使能时,中断发生在 ACK 之后。
硬件 ACK被使 能时(EHACK = 1)产生 的中断
S
SLA
R
A
数据 字节
A
数据字节
硬件 ACK被禁 止时(EHACK = 0)产生 的中断
S = START
P = STOP
A = ACK
N = NACK
R = READ
SLA = 从地 址
SMBus 接口接 收
SMBus 接口发 送
图 22.6. 典型的主器件读操作
224
??? 1.4
N
P
C8051F380/1/2/3/4/5/6/7/C
22.5.3. 写操作 (从方式)
在一次写操作期间, SMBus 主器件向从器件写数据。这次传送中的从器件在地址字节期间为接收器,在所
有的数据字节期间也作为接收器。在从事件被允许的情况下 (INH = 0),当接收到一个起始条件 (START) 和
一个含有从地址和数据方向位 (此处应为 WRITE)的字节时, SMBus 接口进入从接收器方式。如果硬件
ACK 产生被禁止,在进入从接收器方式时将产生中断,并且 ACKRQ 被置 1。软件必须用一个 ACK 对接收
到的从地址确认,或用一个 NACK 忽略接收到的从地址。如果硬件 ACK 产生被使能,硬件会对一个匹配的
从地址产生 ACK,该地址要与由 SMB0ADR 和 SMB0ADM 设置的判别条件匹配。中断发生在 ACK 周期之后。
如果接收到的从地址被忽略 (由硬件或软件),从事件中断将被禁止,直到检测到下一个起始条件。如果收
到的从地址被确认,将接收 0 个或多个字节的数据。
如果硬件 ACK 产生被禁止,则每接收到一个字节后 ACKRQ 位被置 1 并产生中断。此时软件必须写 ACK 位
以确认 (ACK) 或否认 (NACK) 所接收的字节。
在硬件 ACK 产生被使能的情况下, SMBus 硬件会自动产生 ACK/NACK,并产生中断。注意:当硬件 ACK
产生被使能时,软件应在接收字节前设置正确的 ACK 或 NACK 值。
在收到一个停止条件后, SMBus 接口退出从接收器方式。注意,如果在从接收器方式对 SMBnDAT 进行写
操作,接口将切换到从发送器方式。图 22.7 给出了典型的从方式写过程,只给出了接收两个字节的传输时
序,尽管可以接收任意多个字节。注意,在该方式下, “ 数据字节传输结束 ” 中断可发生在该过程中的不同
位置,取决于硬件 ACK 产生是否被使能。当硬件 ACK 产生被禁止时,中断发生在 ACK 之前;当硬件 ACK
产生被使能时,中断发生在 ACK 之后。
硬 件ACK被 使能时(EHACK = 1)产生的 中断
S
SLA
W
A
数据字节
A
数据字 节
A
P
硬 件ACK被 禁止时(EHACK = 0)产生的 中断
S = START
P = STOP
A = ACK
W = WRITE
SLA = 从 地址
SMBus 接口接收
SMBus 接口发送
图 22.7. 典型的从器件写操作
??? 1.4
225
C8051F380/1/2/3/4/5/6/7/C
22.5.4. 读操作 (从方式)
在一次读操作期间, SMBus 主器件从一个从器件读数据。这次传送中的从器件在地址字节期间为接收器,
在所有的数据字节期间都将作为发送器。在从事件被允许的情况下 (INH = 0),当接收到一个起始条件
(START) 和一个含有从地址和数据方向位 (此处应为 READ)的字节时, SMBus 接口进入从接收器方式
(接收从地址)。如果硬件 ACK 产生被禁止,在进入从接收器方式时将产生中断,并且 ACKRQ 被置 1。软
件必须用一个 ACK 对接收到的从地址确认,或用一个 NACK 忽略接收到的从地址。如果硬件 ACK 产生被
使能,硬件会对一个匹配的从地址产生 ACK,该地址要与由 SMB0ADR 和 SMB0ADM 设置的判别条件匹
配。中断发生在 ACK 周期之后。
如果接收到的从地址被忽略 (由硬件或软件),从事件中断将被禁止,直到检测到下一个起始条件。如果收
到的从地址被确认,将发送 0 个或多个字节的数据。如果收到的从地址被确认,软件应向 SMBnDAT 写入待
发送的数据。 SMBus 接口进入从发送器方式,并发送一个或多个字节的数据。在每发送一个字节后,主器
件发送一个确认位。如果确认位为 ACK,应向 SMBnDAT 写入下一个数据字节;如果确认位为 NACK,在
SI 被清除前不应再写 SMBnDAT (注:在从发送器方式,如果在收到 NACK 后写 SMBnDAT,将会导致一
个错误条件)。在收到停止条件后,SMBus 接口退出从发送器方式。注意,如果在一个从发送器中断发生之
后没有对 SMBnDAT 进行写操作,接口将切换到从接收器方式。图 22.8 给出了典型的从方式读过程,只给
出了发送两个字节的传输时序,尽管可以发送任意多个字节。注意,在该方式下 “ 数据字节传输结束 ” 中断
发生在 ACK 周期之后,与硬件 ACK 产生是否被使能无关。
硬件ACK被使能时(EHACK = 1)产生的中断
S
SLA
R
A
数据字节
A
数据字节
N
P
硬件ACK被禁止时(EHACK = 0)产生的中断
S = START
P = STOP
N = NACK
R = READ
SLA = 从地址
SMBus 接口接收
SMBus 接口发送
图 22.8. 典型的从器件读操作
22.6. SMBus 状态译码
用 SMBnCN 寄存器可以很容易地对 SMBus 的当前状态译码。响应一个 SMBus 事件要采取的合适动作取决
于硬件从地址识别和 ACK 产生是被使能还是被禁止。表 22.5 中描述了硬件从地址识别和 ACK 产生被禁止
时的典型动作。表 22.6 中描述了硬件从地址识别和 ACK 产生被使能时的典型动作。在这两个表中,状态向
量指的是 SMB0CN 中的高 4 位:MASTER、 TXMODE、 STA 和 STO。表中只列出了典型的响应选项。只
要符合 SMBus 规范,特定应用过程是允许的。表中被突出显示的响应选项是硬件允许的,但不符合 SMBus
规范。
226
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
ARBLOST
0 X 起始条件已产生。
0
0
STA
STO
0
0 X
1100
主数据或地址字节已发送;
置位 STA 以重新启动数据传输。 1
0 X
1110
收到 NACK。
放弃发送。
0
1 X
—
主数据或地址字节已发送;
将下一数据字节装入
SMBnDAT。
0
0 X
1100
用停止条件结束数据传输。
0
1 X
—
用停止条件结束数据传输并开始
另一次传输。
1
1 X
—
发送重复起始条件。
1
0 X
1110
切换到主接收器方式 (清除 SI, 0
不向 SMBnDAT 写新数据)。
0 X
1000
确认接收字节;读 SMBnDAT。
0
0
1
1000
发 NACK,表示这是最后一个字
节,发停止条件。
0
1
0
—
发 NACK,表示这是最后一个字
节,接着发停止条件,再发起始
条件。
1
1
0
1110
发 ACK 后再发重复起始条件。
1
0
1
1110
1
0
0
1110
0
0
1
1100
发 NACK 并切换到主发送器方式 0
(在清除 SI 之前与
SMBnDAT)。
0
0
1100
收到 ACK。
1100
0
主接收器
0
1000
1
0
1
典型响应选项
状态向量
ACKRQ
0
ACK
状态向量
方式
主发送器
1110
SMbus 的当前状态
ACK
写入值
读取值
下一个期望的
表 22.5. 硬件 ACK 产生禁止时的 SMBus 状态译码 (EHACK = 0)
将从地址 +R/W 装入到
SMBnDAT。
发 NACK,表示这是最后一个字
0 X 收到主数据字节;请求 ACK。 节,接着发重复起始条件。
发 ACK 并切换到主发送器方式
(在清除 SI 之前写
SMBnDAT)。
??? 1.4
227
C8051F380/1/2/3/4/5/6/7/C
ACK
0 从字节已发送;收到 NACK。 不需任何操作 (等待停止条
件)。
0
0
1 从字节已发送;收到 ACK。
0
STO
0
0 X
0001
将下一个要发送的数据字节装入
到 SMBnDAT。
0
0 X
0100
1 X 从字节已发送;检测到错误。 不需任何操作 (等待主器件结束
传输)。
0
0 X
0001
0
0 X
—
如果写,对接收到的地址进行确
认。
0
0
1
0000
如果读,向 SMBnDAT 装入数据
字节;对接收到的地址进行确
认。
0
0
1
0100
否认接收到的地址。
0
0
0
—
如果写,对接收到的地址进行确
认。
0
0
1
0000
如果读,向 SMBnDAT 装入数据 0
字节;对接收到的地址进行确
认。
0
1
0100
否认接收到的地址。
0
0
0
—
重新安排失败的传输;否认接收
到的地址。
1
0
0
1110
从发送期间检测到非法停止条
0 X X 件或总线错误。
清 STO。
1
0 X 接收到从地址 +R/W ;请求
ACK。
作为主器件竞争失败;
0010
收到从地址 +R/W ;
从接收器
请求 ACK。
1
228
1 X
0
0 X 作为从发送器或从接收器被寻 清 STO。
址时,检测到停止条件。
0
0 X
—
1
1 X 试图发送停止条件时竞争失
败。
不需任何操作 (传输完成 / 放
弃)。
0
0
0
—
0
0
1
0000
0 X 接收到从字节;请求 ACK。
确认接收的字节;读
SMBnDAT。
否认接收到的字节。
0
0
0
—
0001
0000
状态向量
ARBLOST
0
典型响应选项
STA
0101
ACKRQ
状态向量
方式
从发送器
0100
0
SMbus 的当前状态
ACK
写入值
读取值
下一个期望的
表 22.5. 硬件 ACK 产生禁止时的 SMBus 状态译码 (EHACK = 0) (Continued)
1
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
ARBLOST
STA
STO
0
放弃失败的传输。
1 X 试图发送重复起始条件时竞争
失败。
重新安排失败的传输。
0
0 X
—
1
0 X
1110
0001
0
放弃失败的传输。
1 X 由于检测到停止条件而竞争失
败。
重新安排失败的传输
0
0 X
—
1
0 X
1110
0000
1
放弃失败的传输。
1 X 试图作为主器件发送数据字节
时竞争失败。
重新安排失败的传输。
0
0
0
—
1
0
0
1110
SMbus 的当前状态
典型响应选项
ACK
ACKRQ
0010
ACK
状态向量
方式
总线错误条件
状态向量
写入值
读取值
下一个期望的
表 22.5. 硬件 ACK 产生禁止时的 SMBus 状态译码 (EHACK = 0) (Continued)
ARBLOST
0 X 主起始条件已产生。
0
0
收到 NACK。
主发送器
主数据或地址字节已发送;
收到 ACK。
1100
0
0
1
STO
主数据或地址字节已发送;
STA
0
典型响应选项
状态向量
ACKRQ
0
ACK
状态向量
方式
1110
SMbus 的当前状态
ACK
写入值
读取值
下一个期望的
表 22.6. 硬件 ACK 产生被使能时的 SMBus 状态译码 (EHACK = 1)
0
0 X
1100
置位 STA 以重新启动数据传输。 1
0
放弃发送。
0 X
1110
1 X
—
将下一数据字节装入
SMBnDAT。
0
0 X
1100
用停止条件结束数据传输。
0
1 X
—
用停止条件结束数据传输并启动
另一次传输。
1
1 X
—
发送重复起始条件。
1
0 X
1110
0
1000
将从地址 +R/W 装入
SMBnDAT。
切换到主接收器方式 (清除 SI, 0
不向 SMBnDAT 写新数据)。为
初始数据字节置位 ACK。
??? 1.4
1
229
C8051F380/1/2/3/4/5/6/7/C
已发送 ACK。
ACK
收到主数据字节;
STO
典型响应选项
STA
ACK
ARBLOST
ACKRQ
状态向量
方式
SMbus 的当前状态
状态向量
写入值
读取值
下一个期望的
表 22.6. 硬件 ACK 产生被使能时的 SMBus 状态译码 (EHACK = 1) (Continued)
设置 ACK,准备接收下一数据字 0
节;
0
1
1000
读 SMBnDAT。
主接收器
0
从发送器
1
1000
0
0100
0101
230
0
0
0
0
0
0
0
0
1
0
1 X
0 X X
设置 NACK,指示下一数据字节
是最后一个数据字节;读
SMBnDAT。
0
0
0
1000
启动一个重复起始条件
1
0
0
1110
0 X
1100
收到主数据字节;
切换到主发送器方式 (在清除 SI 0
之前写 SMBnDAT)。
读 SMBnDAT,发送停止条件。 0
已发送 NACK (最后一个字
节)。
读 SMBnDAT,发送停止条件后
再发起始条件。
启动重复起始条件。
1
0
—
1
1
0
1110
1
0
0
1110
0 X
1100
0 X
0001
0 X
0100
0 X
0001
0 X
—
切换到主发送器方式 (在清除 SI 0
之前写 SMBnDAT)。
0
不需任何操作 (等待停止条
从字节已发送;收到 NACK。
件)。
将下一个要发送的数据字节装入 0
从字节已发送;收到 ACK。
到 SMBnDAT。
不需任何操作 (等待主器件结束 0
从字节已发送;检测到错误。
传输)。
0
从发送期间检测到非法停止条
清 STO。
件或总线错误。
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
0 X ACK 已发送。
作为主器件竞争失败;
0010
收到从地址 +R/W ;
从接收器
0
ACK 已发送。
如果写,设置第一个数据字节的
ACK。
0
0
1
0000
如果读,向 SMBnDAT 装入数据
字节。
0
0 X
0100
如果写,设置第一个数据字节的
ACK。
0
0
1
0000
如果读,向 SMBnDAT 装入数据
字节。
0
0 X
0100
重新安排失败的传输。
1
0 X
1110
0
0 X 作为从发送器或从接收器被寻 清 STO。
址时,检测到停止条件。
0
0 X
—
0
1 X 试图发送停止条件时竞争失
败。
不需任何操作 (传输完成 / 放
弃)。
0
0
0
—
为下一数据字节设置 ACK ;
0
0
1
0000
0
0
0
0000
0001
0000
1 X
ACK
0
STO
接收到从地址 +R/W ;
典型响应选项
STA
ACK
ARBLOST
ACKRQ
状态向量
方式
SMbus 的当前状态
状态向量
写入值
读取值
下一个期望的
表 22.6. 硬件 ACK 产生被使能时的 SMBus 状态译码 (EHACK = 1) (Continued)
0
0 X 接收到从字节。
读 SMBnDAT。
为下一数据字节设置 NACK ;
总线错误条件
读 SMBnDAT。
0010
0
放弃失败的传输。
1 X 试图发送重复起始条件时竞争
失败。
重新安排失败的传输。
0
0 X
—
1
0 X
1110
0001
0
放弃失败的传输。
1 X 由于检测到停止条件而竞争失
败。
重新安排失败的传输。
0
0 X
—
1
0 X
1110
0000
0
放弃失败的传输。
1 X 试图作为主器件发送数据字节
时竞争失败。
重新安排失败的传输。
0
0 X
—
1
0 X
1110
??? 1.4
231
C8051F380/1/2/3/4/5/6/7/C
232
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
23. UART0
UART0 是一个异步、全双工串口,它提供标准 8051 UART 的方式 1 和方式 3。增强的波特率支持允许使用
宽范围的时钟源来产生标准波特率 (详见第 233 页 23.1. 节 “ 增强的波特率发生器 ” )。接收数据缓冲机制
允许 UART0 在软件尚未读取前一个数据字节的情况下开始接收第二个输入数据字节。
UART0 有两个相关的特殊功能寄存器:串行控制寄存器 (SCON0) 和串行数据缓冲器 (SBUF0)。用同一个
SBUF0 地址可以访问发送寄存器和接收寄存器。写 SBUF0 时总是访问发送寄存器;读 SBUF0 时总是访问
接收寄存器,不可能从发送寄存器中读数据。
如果 UART0 中断被允许,则每次发送完成 (SCON0 中的 TI0 位被置 1)或接收到一个数据字节 (SCON0
中的 RI0 位被置 1)时将产生中断。当 CPU 转向中断服务程序时硬件不清除 UART0 中断标志。中断标志必
须用软件清除,这就允许软件判断 UART0 中断的原因 (发送完成或接收完成)。
SFR 总线
写SBUF
TB 8
SBUF
(发送移位)
SE T
D
Q
TX
CLR
交叉开关
零检测器
停止 位
移位
开始
数据
发送控制
发送时 钟
发送
Tx I RQ
SCON
TI
串行 口
中断
MC E
REN
TB8
RB8
TI
RI
SMODE
U ART 波特率
发生器
端口I /O
RI
Rx IRQ
接收时 钟
接收控制
开始
装载
移位
0 x1F F
RB8
SBUF
输入移位寄存器
(9 位)
装载SBUF
SBU F
(接收锁存器)
读
SBUF
SFR 总线
RX
交叉开关
图 23.1. UART0 原理框图
??? 1.4
232
C8051F380/1/2/3/4/5/6/7/C
23.1. 增强的波特率发生器
UART0 波特率由定时器 1 工作在 8 位自动重装载方式产生。发送 (TX) 时钟由 TL1 产生;接收 (RX) 时钟由
TL1 的副本(图 23.2 中的 RX 定时器)产生,该寄存器不能被用户访问。TX 和 RX 定时器的溢出信号经过
二分频后用于产生 TX 和 RX 波特率。当定时器 1 被使能时, RX 定时器运行并使用与定时器 1 相同的重载
值 (TH1)。在检测到 RX 引脚上的起始条件时 RX 定时器被强制重载,这就允许在检测到起始位时立即开始
接收过程,而与 TX 定时器的状态无关。
定时器1
TL1
UART
溢出
2
发送时钟
溢出
2
接收时钟
TH1
检测到
起始位
RX定 时器
图 23.2. UART0 波特率逻辑
定时器 1 应被配置为方式 2,即 8 位自动重装载方式(见第 267 页 26.1.3. 节 “ 方式 2 — 自动重装载的 8 位
计数器 / 定时器 ” )。定时器 1 的重载值应设置为使其溢出频率为所期望的 UART 波特率频率的两倍。注意,
定时器 1 的时钟可以在 6 个时钟源中选择:SYSCLK、 SYSCLK/4、 SYSCLK/12、 SYSCLK/48、外部振荡
器时钟 /8 和外部输入 T1。对于任何给定的定时器 1 时钟源,UART0 的波特率由方程 23.1-A 和方程 23.1-B
决定:
A)
B)
1
UARTB??? = ---  T1 ???
2
T1 CLK
T1??? = -------------------------256 – TH1
方程 23.1. UART0 波特率
其中 T1CLK 是定时器 1 的时钟频率, TH1 是定时器 1 的高字节 (重载值)。定时器 1 时钟频率的选择见
第 263 页 26. 节 “ 定时器 ” 。表 23.1 给出了典型波特率和系统时钟频率的对照表。注意,当外部振荡器驱
动定时器 1 时,内部振荡器仍可产生系统时钟。
233
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
23.2. 工作方式
UART0 提供标准的异步、全双工通信,其工作方式 (8 位或 9 位)通过 S0MODE 位 (SCON0.7) 来选择。
典型的 UART 连接方式如图 23.3 所示。
TX
RS- 232
R S- 232
电平转换器
RX
C8051Fxxx
或
TX
TX
RX
RX
MCU
C805 1Fxxx
图 23.3. UART 连接图
23.2.1. 8 位 UART
在 8 位 UART 方式,每个数据字节共使用 10 位:一个起始位、 8 个数据位 (LSB 在先)和一个停止位。数
据从 TX0 引脚发送(LSB 在先),在 RX0 引脚接收。在接收时,8 个数据位存入 SBUF0,停止位进入 RB80
(SCON0.2)。
当软件向 SBUF0 寄存器写入一个数据字节时开始数据发送。在发送结束时 (停止位开始)发送中断标志
TI0 (SCON0.1) 被置 1。在接收允许位 REN0 (SCON0.4) 被置 1 后,数据接收可以在任何时刻开始。收到停
止位后,如果满足下述条件则数据字节将被装入到接收寄存器 SBUF0:RI0 必须为逻辑 0 ;如果 MCE0 为
逻辑 1,则停止位必须为 1。在发生接收数据溢出的情况下,先接收到的 8 位数据被锁存到 SBUF0,而后面
的溢出数据被丢弃。
如果这些条件满足,则 8 位数据被存入 SBUF0,停止位被存入 RB80, RI0 标志被置 1。如果这些条件不满
足,则不装载 SBUF0 和 RB80,RI0 标志也不会被置 1。如果中断被允许,在 TI0 或 RI0 置 1 时将产生中断。
MARK
起始位
D0
D1
D2
D3
D4
SPACE
D5
D6
D7
停止位
位时间
位采样
图 23.4. 位 UART 时序图
??? 1.4
234
C8051F380/1/2/3/4/5/6/7/C
23.2.2. 9 位 UART
在 9 位 UART 方式,每个数据字节共使用 11 位:一个起始位、 8 个数据位 (LSB 在先)、一个可编程的第
9 位和一个停止位。第 9 发送数据位由 TB80 (SCON0.3) 中的值决定,由用户软件赋值。它可以被赋值为
PSW 中的奇偶位 P(用于错误检测),或用于多处理器通信。在接收时,第 9 数据位进入 RB80 (SCON0.2),
停止位被忽略。
当执行一条向 SBUF0 寄存器写一个数据字节的指令时开始数据发送。在发送结束时 (停止位开始)发送中
断标志 TI0 被置 1。在接收允许位 REN0 (SCON0.4) 被置 1 后,数据接收可以在任何时刻开始。收到停止位
后如果满足下述条件则数据字节将被装入到接收寄存器 SBUF0:1) RI0 必须为逻辑 0 ; 2) 如果 MCE0 为
逻辑 1,则第 9 位必须为逻辑 1 (当 MCE0 为逻辑 0 时,第 9 位数据的状态并不重要)。如果这些条件满
足,则 8 位数据被存入 SBUF0,第 9 位被存入 RB80, RI0 标志被置 1。如果这些条件不满足,则不装载
SBUF0 和 RB80, RI0 标志也不会被置 1。如果中断被允许,在 TI0 或 RI0 置位时将产生 UART0 中断。
MARK
起始位
D0
D1
D2
D3
D4
D5
SPACE
位时间
位采样
图 23.5. 9 位 UART 时序图
235
??? 1.4
D6
D7
D8
停止位
C8051F380/1/2/3/4/5/6/7/C
23.3. 多机通信
9 位 UART 方式通过使用第 9 数据位可以支持一个主处理器与一个或多个从处理器之间的多机通信。当主机
要发送数据给一个或多个从机时,它先发送一个用于选择目标的地址字节。地址字节与数据字节的区别是:
地址字节的第 9 位为逻辑 1 ;数据字节的第 9 位总是设置为逻辑 0。
如果从机的 MCE0 位 (SCON0.5) 被置 1,则只有当 UART 接收到的第 9 位为逻辑 1 (RB80 = 1) 并收到有效
的停止位后 UART 才会产生中断,意味着接收到一个地址字节。在 UART 的中断处理程序中,软件将接收
到的地址与从机自身的 8 位地址进行比较。如果地址匹配,从机将清除它的 MCE0 位以允许后面接收数据
字节时产生中断。未被寻址的从机仍保持其 MCE0 位为 1,在收到后续的数据字节时不产生中断,从而忽略
收到的数据。一旦接收完整个消息,被寻址的从机将它的 MCE0 位重新置 1 以忽略所有的数据传输,直到
它收到下一个地址字节。
可以将多个地址分配给一个从机,或将一个地址分配给多个从机从而允许同时向多个从机 “ 广播 ” 发送。主
机可以被配置为接收所有的传输数据,或通过实现某种协议使主 / 从角色能临时变换以允许原来的主机和从
机之间进行半双工通信。
主器件
从器件
从器件
从器件
V+
RX
TX
RX
TX
RX
TX
RX
TX
图 23.6. UART 多机方式连接图
??? 1.4
236
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 23.1. SCON0:UART0 控制寄存器
位
7
6
5
4
3
2
1
0
名称
S0MODE
-
MCE0
REN0
TB80
RB80
TI0
RI0
类型
R/W
R
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
1
0
0
0
0
0
0
SFR 寺址 = 0x98 ; SFR 页 = 所有页;可位寻址
位
7
名称
功能
S0MODE UART0 工作方式。
该位选择 UART0 的工作方式。
0:波特率可编程的 8 位 UART。
1:波特率可编程的 9 位 UART。
6
5
未使用
MCE0
读 = 1b ;写 = 忽略。
多处理器通信使能。
该位的功能取决于 UART0 工作方式。
方式 0 (8 位 UART):检查有效停止位。
0:停止位的逻辑电平被忽略。
1:只有当停止位为逻辑 1 时 RI0 被激活。
方式 1 (9 位 UART):多处理器通信使能。
0:第 9 位的逻辑电平被忽略。
1:只有当第 9 位为逻辑 1 时 RI0 才被置 1 并产生中断。
4
REN0
接收允许。
该位使能 / 禁止 UART 接收器。
0:UART0 接收禁止。
1:UART0 接收允许。
3
TB80
第 9 发送位。
该位的逻辑电平被赋值给 9 位 UART 方式的第 9 发送位 (方式 1)。在 8 位 UART 方
式 (方式 0)中未使用。
2
RB80
第 9 接收位。
在方式 0, RB80 被赋值为停止位的值。在方式 1,该位被赋值为第 9 数据位的值。
1
TI0
发送中断标志。
当 UART0 发送完一个字节数据后该位被硬件置 1 (在 8 位 UART 方式时,是在发送第
8 位后;在 9 位 UART 方式时,是在停止位开始)。当 UART0 中断被允许时,置 1 该
位将导致 CPU 转到 UART0 中断服务程序。该位必须用软件清 0。
0
RI0
接收中断标志。
当 UART0 接收到一个字节数据时该位被硬件置 1 (在采样停止位时)。当 UART0 中
断被允许时,置 1 该位将会使 CPU 转到 UART0 中断服务程序。该位必须用软件清 0。
237
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 23.2. SBUF0:UART0 数据缓冲器
位
7
6
5
4
3
名称
SBUF0[7:0]
类型
R/W
0
复位
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0x99 ; SFR 页 = 所有页
位
7:0
名称
功能
SBUF0[7:0] UART0 数据缓冲器位 7-0 (MSB-LSB)。
该 SFR 访问两个寄存器:发送移位寄存器和接收锁存寄存器。当数据被写到 SBUF0
时,它进入发送移位寄存器等待串行发送。向 SBUF0 写入一个字节即启动发送过程。
读 SBUF0 时返回接收锁存器的内容。
SYSCLK = 48 MHz
SYSCLK = 24 MHz
SYSCLK = 12 MHz
表 23.1. 对应标准波特率的定时器设置 (使用内部振荡器)
目标
波特率
(bps)
实际
波特率
(bps)
波特率
误差
振荡器
分频系数
定时器
时钟源
SCA1-SCA0
(分频选择)
T1M
定时器 1
重载值
(hex)
230400
115200
57600
28800
14400
9600
2400
1200
230400
115200
57600
28800
14400
9600
2400
1200
230400
115200
57600
28800
14400
9600
2400
230769
115385
57692
28846
14423
9615
2404
1202
230769
115385
57692
28846
14423
9615
2404
1202
230769
115385
57692
28846
14388
9615
2404
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0.08%
0.16%
0.16%
52
104
208
416
832
1248
4992
9984
104
208
416
832
1664
2496
9984
19968
208
416
832
1664
3336
4992
19968
SYSCLK
SYSCLK
SYSCLK
SYSCLK
SYSCLK / 4
SYSCLK / 4
SYSCLK / 12
SYSCLK / 48
SYSCLK
SYSCLK
SYSCLK
SYSCLK / 4
SYSCLK / 4
SYSCLK / 12
SYSCLK / 48
SYSCLK / 48
SYSCLK
SYSCLK
SYSCLK / 4
SYSCLK / 4
SYSCLK / 12
SYSCLK / 12
SYSCLK / 48
XX
XX
XX
XX
01
01
00
10
XX
XX
XX
01
01
00
10
10
XX
XX
01
01
00
00
10
1
1
1
1
0
0
0
0
1
1
1
0
0
0
0
0
1
1
0
0
0
0
0
0xE6
0xCC
0x98
0x30
0x98
0x64
0x30
0x98
0xCC
0x98
0x30
0x98
0x30
0x98
0x98
0x30
0x98
0x30
0x98
0x30
0x75
0x30
0x30
??? 1.4
238
C8051F380/1/2/3/4/5/6/7/C
表 23.1. 对应标准波特率的定时器设置 (使用内部振荡器)
目标
波特率
(bps)
注:
239
实际
波特率
(bps)
波特率
误差
振荡器
分频系数
SCA1-SCA0 和 T1M 位定义定时器时钟源。 X = 无关。
??? 1.4
定时器
时钟源
SCA1-SCA0
(分频选择)
T1M
定时器 1
重载值
(hex)
C8051F380/1/2/3/4/5/6/7/C
24. UART1
UART1 是一个异步、全双工串口,它提供多种数据格式选择。 UART1 包含一个由 16 位定时器和可编程预
分频器构成的专用波特率发生器,能产生很宽范围的波特率 (详见第 241 页 24.1. 节 “ 波特率发生器 ” )。
接收数据 FIFO 允许 UART1 接收多达 3 个字节而不会发生数据丢失或溢出。
UART1 有六个相关的特殊功能寄存器。三个用于波特率发生器 (SBCON1、 SBRLH1 和 SBRLL1),两个
用于数据格式、控制和状态功能 (SCON1 和 SMOD1) ,一个用于发送和接收数据 (SBUF1)。用同一个
SBUF1 地址可以访问发送寄存器和接收 FIFO。写 SBUF1 时总是访问发送保持寄存器;读 SBUF1 时总是
访问接收 FIFO 的第一个字节,不可能从发送保持寄存器中读数据。
如果 UART1 中断被允许,则每次发送完成 (SCON1 中的 TI1 位被置 1)或接收到数据字节 (SCON1 中
的 RI1 位被置 1)时将产生中断。当 CPU 转向中断服务程序时硬件不清除 UART1 中断标志。中断标志必须
用软件清除,这就允许软件判断 UART1 中断的原因 (发送完成或接收完成)。注意:如果接收 FIFO 中还
有数据字节,则 RI1 位不能被软件清 0。
数据格式控制
波特率发生器
定时器 (16位)
EN
发送逻辑
TX1
预分频器
(1, 4, 12, 48)
MC E1
S 1PT1
S 1PT0
P E1
S 1D L1
S 1D L0
XB E1
SB L1
SMOD 1
溢出
发送保持
寄存器
写SB UF1
S BU F1
SB CON 1
控制/状态
S CON 1
OV R1
PE R R1
TH R E1
R E N1
TBX1
R BX1
TI1
RI1
SB1 RU N
SYS CL K
SBR L L1
SB1P S1
SB1P S0
SBR LH 1
读SB UF1
接收FIFO
(3字节)
接收逻辑
RX1
U AR T1 中断
图 24.1. UART1 原理框图
??? 1.4
240
C8051F380/1/2/3/4/5/6/7/C
24.1. 波特率发生器
UART1 波特率由一个专用的 16 位定时器产生。该定时器使用控制器内核时钟 (SYSCLK) 工作,并有一个预
分频器,可选择 1、4、12 或 48 分频。定时器和预分频器选项的组合允许在多种不同的 SYSCLK 频率下都
可以有很宽的波特率选择范围。
用三个寄存器(SBCON1、SBRLH1 和 SBRLL1)来配置波特率发生器。UART1 波特率发生器控制寄存器
(SBCON1,SFR 定义 24.4)使能或禁止波特率发生器,并为定时器选择预分频值。使用 UART1 时,波特
率发生器必须被使能。寄存器 SBRLH1 和 SBRLL1 包含该专用定时器的 16 位重载值。定时器从重载值开始
向上计数,每个时钟加 1。定时器发生溢出(从 0xFFFF 到 0x0000)时立即被重新装载。对于可靠的 UART
操作,建议不要将 UART 波特率配置为大于 SYSCLK/16。 UART1 的波特率由方程 24.1 决定:
1
SYSCLK
1
??? = ------------------------------------------------------------------------------  ---  --------- 65536 – (SBRLH1:SBRLL1)  2 ????
方程 24.1. UART1 波特率
表 24.1 给出了典型波特率与系统时钟频率的对照表。
SYSCLK = 48 MHz
SYSCLK = 24 MHz
SYSCLK = 12 MHz
表 24.1. 对应标准波特率的波特率发生器设置 (使用内部振荡器)
241
目标波特率
(bps)
230400
115200
57600
28800
14400
9600
2400
1200
230400
115200
57600
28800
14400
9600
2400
1200
230400
115200
57600
28800
14400
9600
2400
1200
实际波特率
(bps)
230769
115385
57692
28846
14388
9600
2400
1200
230769
115385
57692
28777
14406
9600
2400
1200
230769
115385
57554
28812
14397
9600
2400
1200
波特率
误差
0.16%
0.16%
0.16%
0.16%
0.08%
0.0%
0.0%
0.0%
0.16%
0.16%
0.16%
0.08%
0.04%
0.0%
0.0%
0.0%
0.16%
0.16%
0.08%
0.04%
0.02%
0.0%
0.0%
0.0%
振荡器
分频系数
52
104
208
416
834
1250
5000
10000
104
208
416
834
1666
2500
10000
20000
208
416
834
1666
3334
5000
20000
40000
??? 1.4
SB1PS[1:0]
(预分频位)
11
11
11
11
11
11
11
11
11
11
11
11
11
11
11
11
11
11
11
11
11
11
11
11
SBRLH1:SBRLL1
中的重载值
0xFFE6
0xFFCC
0xFF98
0xFF30
0xFE5F
0xFD8F
0xF63C
0xEC78
0xFFCC
0xFF98
0xFF30
0xFE5F
0xFCBF
0xFB1E
0xEC78
0xD8F0
0xFF98
0xFF30
0xFE5F
0xFCBF
0xF97D
0xF63C
0xD8F0
0xB1E0
C8051F380/1/2/3/4/5/6/7/C
24.2. 数据格式
UART1 提供多种数据格式选项。数据传输以起始位 (逻辑低电平)开始,其后是数据位 (LSB 在先),数
据位之后是奇偶位或额外位 (如果选择),最后是一个或两个停止位 (逻辑高电平)。数据长度在 5 ~ 8 位
之间。可以在数据位后添加一个奇偶位,硬件可以自动产生和检测奇偶位 (偶、奇、传号或空号)。可以选
择短 (一个位时间)或长 (1.5 或 2 个位时间)停止位。 UART1 具有多处理器通信工作方式。所有数据格
式选项都通过 SMOD1 寄存器配置,见 SFR 定义 24.2。图 24.2 给出了没有奇偶位或额外位的 UART1 数据
传输时序。图 24.3 给出了使能校验位 (PE1 = 1) 的 UART1 数据传输时序。图 24.4 给出了使能额外位 (XBE
= 1) 的 UART1 数据传输时序。注意:额外位功能在奇偶位被使能时不可用,只有在数据长度为 6、 7 或 8
位时才能使用第二停止位。
MARK
起始位
D0
D1
D N-2
DN- 1
停止位1
SPAC E
停 止位2
位时间
可选
N位 ; N = 5, 6, 7, or 8
(6 ,7 ,8
位数据 )
图 24.2. 没有奇偶位或额外位的 UART1 时序
MARK
起始位
D0
D1
DN-2
D N- 1
奇偶位
SPAC E
停止位1
停 止位2
位时间
可选
(6 ,7 ,8
N位; N = 5, 6, 7, or 8
位数据)
图 24.3. 有奇偶位时的 UART1 时序
MARK
起始位
D0
D1
DN-2
D N- 1
SPAC E
额外位
停止位1
停 止位2
位时间
可选
N位; N = 5, 6, 7, or 8
(6 ,7 ,8
位数据)
图 24.4. 有额外位时的 UART1 时序
??? 1.4
242
C8051F380/1/2/3/4/5/6/7/C
24.3. 配置和操作
UART1 提供标准的异步、全双工通信。它可以工作在点对点串行方式,也可以作为多处理器串行接口的一
个节点。当工作在点对点方式,即串行总线上只有两个器件时, SMOD1 中的 MCE1 位应被清 0。当作为多
处理器通信总线上的一个器件工作时, SMOD1 中的 MCE1 位和 XBE1 位应被置 1。在上述两种工作方式,
数据都是从 TX1 引脚发送,在 RX1 引脚接收。使用交叉开关和端口 I/O 寄存器配置 TX1 和 RX1 引脚,详
见第 153 页 20. 节 “ 端口输入 / 输出 ” 。
在典型的 UART 通信中,一个器件的发送 (TX) 输出被连接到另一器件的接收 (RX) 输入,可以直接连接,也
可以通过总线收发器,如图 24.5 所示。
PC机
串行口
TX
RS-232
RS-232
电平转换器
RX
C8051Fxxx
或
TX
TX
RX
RX
MCU
C8 051Fxxx
图 24.5. 典型 UART 连接图
24.3.1. 数据发送
数据发送是双缓冲的,当软件向 SBUF1 寄存器写入一个字节时开始数据发送。写 SBUF1 时将数据保存在
发送保持寄存器,同时发送保持寄存器空标志 (THRE1) 被清 0。如果 UART 移位寄存器为空 (即没有数据
在发送),则数据将被置入移位寄存器,且 THRE1 被置 1。如果数据发送正在进行,则数据将保存在发送
保持寄存器中,直到当前的发送过程结束。在发送结束时 (停止位开始)发送中断标志 TI1 (SCON1.1) 被
置 1。如果中断被使能,则在 TI1 置位时会产生中断。
如果额外位功能被使能 (XBE1 = 1),且奇偶位功能被禁止 (PE1 = 0),则 TBX1 (SCON1.3) 位将被发送(在
额外位的位置)。当奇偶位功能被使能 (PE1 = 1) 时,硬件会根据所选择的奇偶位类型(用 S1PT[1:0] 选择)
产生奇偶位,并将其加到数据域之后。注意:当奇偶位被使能时,额外位功能不可用。
24.3.2. 数据接收
在接收允许位 REN1 (SCON1.4) 被置 1 后,数据接收可以在任何时刻开始。收到停止位后,如果满足下述
条件则数据字节将被装入到接收 FIFO:接收 FIFO (3 字节深度)必须未满;停止位必须为逻辑 1。在接收
FIFO 已满的情况下,接收的字节被丢弃,并会产生接收 FIFO 溢出错误 (寄存器 SCON1 中的 OVR1 被置
1)。如果停止位为逻辑 0,则接收数据不会被保存到接收 FIFO 中。如果接收条件满足,则数据被保存到接
收 FIFO 中,且 RI1 标志被置 1。注意:当 MCE1 = 1 时,只有在额外位也等于 1 时 RI1 才会被置 1。可以
通过读 SBUF1 寄存器从接收 FIFO 中读取数据。SBUF1 寄存器中保存的是 FIFO 中最老的数据。在 SBUF1
被读取后,FIFO 中的下一个字节被装入到 SBUF1 中,FIFO 中空出的位置可以接收一个新字节。如果中断
被使能,则在 RI1 置位时会产生中断。只有当 FIFO 中不再有信息时,RI1 才能由软件清 0。清空 FIFO 内容
的建议步骤如下:
1. 将 RI1 清 0 ;
2. 读 SBUF1 ;
3. 检查 RI1,如果 RI1 被置 1 则重复步骤 1。
243
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
如果额外位功能被使能 (XBE1 = 1),且奇偶位功能被禁止 (PE1 = 0),则 FIFO 中最老字节的额外位可以从
RBX1 位 (SCON1.2) 读出。如果额外位功能未被使能,则 RBX1 代表 FIFO 中最老字节的停止位。如果奇偶
位功能被使能 (PE1 = 1),硬件会在接收数据时根据所选择的奇偶位类型 (用 S1PT[1:0] 选择)检查接收到
的奇偶位。如果接收到的字节具有奇偶错误,则 PERR1 标志被置 1。该标志必须用软件清 0。注意:当奇
偶位被使能时,额外位功能不可用。
24.3.3. 多机通信
UART1 通过使用额外位可以支持一个主处理器与一个或多个从处理器之间的多机通信。当主机要发送数据
给一个或多个从机时,它先发送一个用于选择目标的地址字节。地址字节与数据字节的区别是:地址字节的
额外位为逻辑 1 ;数据字节的的额外位总是设置为逻辑 0。
如果从机的 MCE1 位 (SMOD1.7) 被置 1,则 UART 被配置为只有当接收到的额外位为逻辑 1 (RBX1 = 1) 并
收到有效的停止位后 UART 才会产生中断,表示收到一个地址字节。在 UART 的中断处理程序中,软件将
接收到的地址与从机自身的地址进行比较。如果地址匹配,从机将清除它的 MCE1 位以允许后面接收数据字
节时产生中断。未被寻址的从机仍保持其 MCE1 位为 1,在收到后续的数据字节时不产生中断,从而忽略收
到的数据。一旦接收完整个消息,被寻址的从机将它的 MCE1 位重新置 1,以忽略所有的数据传输,直到它
收到下一个地址字节。
可以将多个地址分配给一个从机,或将一个地址分配给多个从机,从而允许同时向多个从机 “ 广播 ” 发送。
主机可以被配置为接收所有的传输数据,或通过实现某种协议使主 / 从角色能临时变换以允许原来的主机和
从机之间进行半双工通信。
主器件
从器件
从器件
从器件
V+
RX
TX
RX
TX
RX
TX
RX
TX
图 24.6. UART 多机方式连接图
??? 1.4
244
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 24.1. SCON1:UART1 控制寄存器
位
7
6
5
4
3
2
1
0
名称
OVR1
PERR1
THRE1
REN1
TBX1
RBX1
TI1
RI1
类型
R/W
R/W
R
R/W
R/W
R/W
R/W
R/W
复位
0
0
1
0
0
0
0
0
SFR 地址 = 0xD2 ; SFR 页 = 所有页
位
名称
7
OVR1
功 能
接收 FIFO 溢出标志。
该位用于指示接收 FIFO 溢出状态,在接收字符因 FIFO 已满而被丢弃时被置 1。该位必
须用软件清 0。
0:未发生接收 FIFO 溢出。
1:发生了接收 FIFO 溢出。
6
PERR1
奇偶错误标志。
当奇偶位被使能时,该位用于指示是否发生了奇偶错误。当 FIFO 中的最老字节的奇偶
位与所选择的奇偶类型不匹配时,该位被置 1。该位必须用软件清 0。
0:未发生奇偶错误。
1:发生了奇偶错误。
5
THRE1
发送保持寄存器空标志。
0:发送保持寄存器不空 — 不能写 SBUF1。
0:发送保持寄存器为空 — 可以写 SBUF1。
4
REN1
接收允许。
该位使能 / 禁止 UART 接收器。当被禁止时,仍可从接收 FIFO 中读取字节。
0:UART1 接收禁止。
1:UART1 接收允许。
3
TBX1
额外发送位。
当 XBE = 1 时,该位的逻辑电平被赋值给额外发送位。当奇偶位功能被使能时,该位未
使用。
2
RBX1
额外接收位。
当 XBE = 1 时, RBX1 被赋予额外位的值。当 XBE1 被清 0 时, RBX1 被赋予第一个停
止位的值。当奇偶位功能被使能时,该位无效。
1
TI1
发送中断标志。
在数据被发送之后、停止位开始时该位被硬件置 1。当 UART1 中断被允许时,置 1 该
位将导致 CPU 转到 UART1 中断服务程序。该位必须用软件手动清 0。
0
RI1
接收中断标志。
当 UART1 接收到一个字节数据时该位被硬件置 1 (在采样停止位时)。当 UART1 中
断被允许时,置 1 该位将会使 CPU 转到 UART1 中断服务程序。该位必须用软件手动
清 0。注意:只要 UART 接收 FIFO 中仍有数据,则 RI1 将保持置 1 状态。在最后一个
字节被从 FIFO 移到 SBUF1 后, RI1 可以被清 0。
245
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 24.2. SMODE1:UART1 方式寄存器
位
7
名称
MCE1
S1PT[1:0]
PE1
类型
R/W
R/W
R/W
复位
0
6
5
0
0
4
3
0
2
1
0
S1DL[1:0]
XBE1
SBL1
R/W
R/W
R/W
0
0
1
1
SFR 地址 = 0xE5 ; SFR 页 = 所有页
位
名称
7
MCE1
功能
多处理器通信使能。
0:RI 在停止位为 1 时置位。
1:RI 在停止位和额外位均为 1 时置位 (必须用 XBE1 使能额外位)。
注意:当硬件奇偶位功能被使能时,该位不可用。
6:5
S1PT[1:0] 奇偶位类型。
00:奇。
01:偶。
10:传号。
11:空号。
4
PE1
奇偶位使能。
该位使能 / 禁止硬件奇偶位产生和检查。当奇偶位功能被使能时,奇偶位类型由
S1PT1~0 位选择。
0:硬件奇偶位禁止。
1:硬件奇偶位使能。
3:2
S1DL[1:0] 数据长度。
00:5 位数据
01:6 位数据
10:7 位数据
11:8 位数据
1
XBE1
额外位使能。
当被使能时, TBX1 的值被加到数据域之后。
0:额外位禁止。
1:额外位使能。
0
SBL1
停止位长度。
0:短 — 停止位有效时间为一个位时间 (所有数据域长度)。
1:长 — 停止位有效时间为两个位时间 (数据长度 = 6、 7 或 8 位)或 1.5 个位时间
(数据长度 = 5 位)。
??? 1.4
246
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 24.3. SBUF1:UART1 数据缓冲器
位
7
6
5
4
3
名称
SBUF1[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xD3 ; SFR 页 = 所有页
位
7:0
名称
描述
SBUF1[7:0] UART1 数据缓冲器位。
该 SFR 用于从 UART 发送数
据和从 UART1 接收 FIFO 接
收数据。
247
写
向 SBUF1 写入一个字节
即启动发送过程。当数据
被写入 SBUF1 时,它首
先进入发送保持寄存器等
待串行发送。当发送移位
寄存器可用时,数据被传
送到移位寄存器,此时可
再次向 SBUF1 写数据。
??? 1.4
读
读 SBUF1 时从接收 FIFO
中提取数据。读 SBUF1
时,返回 FIFO 中最老的
字节,该字节被从 FIFO
中清除。 FIFO 中最多可以
保持 3 个字节。如果 FIFO
中还有数据字节可读,则
RI1 位将保持在逻辑 1 状
态,不能被软件清 0。
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 24.4. SBCON1:UART1 波特率发生器控制寄存器
位
7
6
5
4
3
2
SB1RUN
名称
1
0
SB1PS[1:0]
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xAC ; SFR 页 = 所有页
位
名称
7
保留
SB1RUN
6
功 能
读 = 0b ;必须写 0b。
波特率发生器使能。
0:波特率发生器禁止。 UART1 不能工作。
1:波特率发生器使能。
保留
读 = 0000b ;必须写 0000b。
1:0 SB1PS[1:0] 波特率预分频选择。
5:2
00:预分频 = 12
01:预分频 = 4
10:预分频 = 48
11:预分频 = 1
SFR 定义 24.5. SBRLH1:UART1 波特率发生器高字节
位
7
6
5
4
3
名称
SBRLH1[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xB5 ; SFR 页 = 所有页
位
功能
名称
7:0 SBRLH1[7:0] UART1 波特率发生器重载值高位。
UART1 波特率发生器重载值的高字节。
??? 1.4
248
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 24.6. SBRLL1:UART1 波特率发生器低字节
位
7
6
5
4
3
名称
SBRLL1[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xB4 ; SFR 页 = 所有页
位
功能
名称
7:0 SBRLL1[7:0] UART1 波特率发生器重载值低位。
UART1 波特率发生器重载值的低字节。
249
??? 1.4
2
1
0
0
0
0
C8051F380/1/2/3/4/5/6/7/C
25. 增强型串行外设接口 (SPI0)
增强型串行外设接口 (SPI0) 提供访问灵活的全双工同步串行总线的能力。SPI0 可以作为主器件或从器件工
作,可以使用 3 线或 4 线方式,并可在同一 SPI 总线上支持多个主器件和从器件。从选择信号 (NSS) 可被
配置为输入,以选择工作在从方式的 SPI0,或在多主环境中禁止主方式操作,以避免两个以上主器件试图
同时进行数据传输时发生 SPI 总线冲突。 NSS 可以被配置为片选输出 (在主方式),或在 3 线操作时被禁
止。在主方式,可以用其它通用端口 I/O 引脚选择多个从器件。
SFR 总线
SYSCLK
SPI0CFG
SPIBSY
MSTEN
CKPHA
CKPOL
SLVSEL
NSSIN
SRMT
RXBMT
SPI0CN
SPIF
WCOL
MODF
RXOVRN
NSSMD1
NSSMD0
TXBMT
SPIEN
SPI0CKR
SCR7
SCR6
SCR5
SCR4
SCR3
SCR2
SCR1
SCR0
时 钟分频逻辑
SP I 控制逻辑
SPI IRQ
数 据通路
控 制
引脚 接口
控 制
MOSI
Tx 数据
SPI0DAT
SCK
发 送数据缓 冲器
移位寄存器
7 6 5 4 3 2 1 0
Rx 数据
引脚
控制
逻辑
MISO
接 收数据缓 冲器
写
SPI 0DAT
交
叉
开
关
端口I/O
NSS
读
SPI 0DA T
SFR 总线
图 25.1. SPI 原理框图
??? 1.4
250
C8051F380/1/2/3/4/5/6/7/C
25.1. 信号说明
下面介绍 SPI0 所使用的 4 个信号 (MOSI、 MISO、 SCK、 NSS)。
25.1.1. 主出从入 (MOSI)
主出从入 (MOSI) 信号是主器件的输出和从器件的输入,用于从主器件到从器件的串行数据传输。当 SPI0 作
为主器件时,该信号是输出;当 SPI0 作为从器件时,该信号是输入。数据传输时最高位在先。当被配置为
主器件时, MOSI 由移位寄存器的 MSB 驱动。
25.1.2. 主入从出 (MISO)
主入从出 (MISO) 信号是从器件的输出和主器件的输入,用于由从器件到主器件的串行数据传输。当 SPI0
作为主器件时,该信号是输入;当 SPI0 作为从器件时,该信号是输出。数据传输时最高位在先。当 SPI 被
禁止或工作在 4 线从方式而未被选中时,MISO 引脚被置于高阻态。当作为从器件工作在 3 线方式时,MISO
总是由移位寄存器的 MSB 驱动。
25.1.3. 串行时钟 (SCK)
串行时钟 (SCK) 信号是主器件的输出和从器件的输入,用于同步主器件和从器件之间在 MOSI 和 MISO 线
上的串行数据传输。当 SPI0 作为主器件时产生该信号。在 4 线从方式,当从器件未被选中时 (NSS=1),SCK
信号被忽略。
25.1.4. 从选择 (NSS)
从选择 (NSS) 信号的功能取决于 SPI0CN 寄存器中 NSSMD1 和 NSSMD0 位的设置。有 3 种可选择的方式:
1. NSSMD[1:0] = 00:3 线主方式或从方式:SPI0 工作在 3 线方式, NSS 被禁止。当作为从器件工作在 3
线方式时, SPI0 总是被选择。由于没有选择信号, SPI0 工作在 3 线方式时必须是总线唯一的从器件。
这种情况用于一个主器件和一个从器件之间点对点通信。
2. NSSMD[1:0] = 01:4 线从方式或多主方式:SPI0 工作在 4 线方式, NSS 被使能为输入。当作为从器件
时, NSS 选择 SPI0 器件。当作为主器件时, NSS 信号的负跳变禁止 SPI0 的主器件功能,以便可以在
同一个 SPI 总线上使用多个主器件。
3. NSSMD[1:0] = 1x:4 线主方式:SPI0 工作在 4 线方式, NSS 被使能为输出。 NSSMD0 的设置值决定
NSS 引脚的输出逻辑电平。这种配置只能在 SPI0 作为主器件时使用。
图 25.2 、图 25.3 和图 25.4 给出了不同工作方式下的典型连接图。注意:NSSMD 位的设置影响器件的引
脚分配。当工作在 3 线主或从方式时, NSS 不被交叉开关分配引脚。在所有其它方式, NSS 被映射到器件
引脚。有关通用端口 I/O 和交叉开关的信息见第 153 页节 20.“ 端口输入 / 输出 ”。
25.2. SPI0 主方式操作
SPI 总线上的所有数据传输都由 SPI 主器件启动。通过置 1 主允许标志 (MSTEN, SPI0CFG.6)将 SPI0
设置为主方式。当处于主方式时,向 SPI0 数据寄存器 (SPI0DAT) 写入一个数据字节时是写发送缓冲器。如
果 SPI 移位寄存器为空,发送缓冲器中的数据字节被传送到移位寄存器,数据传输开始。 SPI0 主器件立即
在 MOSI 线上串行移出数据,同时在 SCK 上提供串行时钟。在传输结束后 SPIF (SPI0CN.7) 标志被置为逻
辑 1。如果中断被允许,在 SPIF 标志置位时将产生中断请求。在全双工操作中,当 SPI 主器件在 MOSI 线
向从器件发送数据时,被寻址的 SPI 从器件可以同时在 MISO 线上向主器件发送其移位寄存器中的内容。因
此,SPIF 标志既作为发送完成标志又作为接收数据就绪标志。从从器件接收的数据字节以 MSB 在先的形式
传送到主器件的移位寄存器。当一个数据字节被完全移入移位寄存器时,便被传送到接收缓冲器,处理器通
过读 SPI0DAT 来读该缓冲器。
当被配置为主器件时,SPI0 可以工作在下面的三种方式之一:多主方式、3 线单主方式或 4 线单主方式。当
NSSMD1 (SPI0CN.3) =0 且 NSSMD0 (SPI0CN.2) =1 时,是默认的多主方式。在该方式,NSS 是器件的输
入,用于 禁止主 SPI0,以允许另 一主器件 访问总线。在 该方式,当 NSS 被拉为低 电平时, MSTEN
251
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
(SPI0CN.6) 和 SPIEN (SPI0CN.0) 位被清 0,以禁止 SPI 主器件,且方式错误标志 (MODF, SPI0CN.5)
被置 1。如果中断被允许,将产生方式错误中断。在这种情况下,必须用软件重新使能 SPI0。在多主系统
中,当器件不作为系统主器件使用时,一般被默认为从器件。在多主方式,可以用通用 I/O 引脚对从器件单
独寻址 (如果需要)。图 25.2 给出了两个主器件在多主方式下的连接图。
当 NSSMD1 (SPI0CN.3) = 0 且 NSSMD0 (SPI0CN.2) = 0 时,SPI0 工作在 3 线单主方式。在该方式,NSS
未使用,也不被交叉开关映射到外部端口引脚。在该方式,应使用通用 I/O 引脚选择要寻址的任何从器件。
图 25.3 给出了一个 3 线主方式主器件和一个从器件的连接图。
当 NSSMD1 (SPI0CN.3) = 1 时, SPI0 工作在 4 线单主方式。在该方式, NSS 被配置为输出引脚,可被用
作从选择信号去选中一个 SPI 器件。在该方式, NSS 的输出值由 NSSMD0 (SPI0CN.2) 控制 (用软件)。
可以用通用 I/O 引脚寻址另外的从器件。图 25.4 给出了一个 4 线主方式主器件和两个从器件的连接图。
主器件 1
N SS
GPIO
M ISO
M ISO
M OSI
M OSI
SC K
SC K
GPIO
N SS
主器件 2
图 25.2. 多主方式连接图
主器件
从器件
M ISO
M ISO
M OSI
M OSI
SC K
SC K
图 25.3. 3 线单主方式和 3 线单从方式连接图
??? 1.4
252
C8051F380/1/2/3/4/5/6/7/C
主器件
GPIO
M ISO
M ISO
M OSI
M OSI
SC K
SC K
N SS
N SS
M ISO
M OSI
从器件
从器件
SC K
N SS
图 25.4. 4 线主方式和 4 线从方式连接图
25.3. SPI 从方式操作
当 SPI0 被使能而未被配置为主器件时,它将作为 SPI 从器件工作。作为从器件,由主器件控制串行时钟
(SCK) 信号,从 MOSI 引脚移入数据,从 MISO 引脚移出数据。 SPI0 逻辑中的位计数器对 SCK 边沿计数。
当8位数据经过移位寄存器后,SPIF标志被置为逻辑1,接收到的字节被复制到接收缓冲器。通过读SPI0DAT
来读取接收缓冲器中的数据。从器件不能启动数据传送。通过写 SPI0DAT 将要发送给主器件的数据预装到
移位寄存器。写往 SPI0DAT 的数据是双缓冲的,首先被放在发送缓冲器。如果移位寄存器为空,发送缓冲
器中的数据会立即被传送到移位寄存器。当移位寄存器中已经有数据时,SPI 将在下一次(或当前)SPI 传
输的最后一个 SCK 边沿过去后再将发送缓冲器的内容装入移位寄存器。
当被配置为从器件时,SPI0 可以工作 4 线或 3 线方式。当 NSSMD1 (SPI0CN.3) = 0 且 NSSMD0 (SPI0CN.2)
= 1 时,是默认的 4 线从方式。在 4 线方式,NSS 信号被分配到一个端口引脚并被配置为数字输入。当 NSS
为逻辑 0 时, SPI0 被使能;当 NSS 为逻辑 1 时, SPI0 被禁止。在 NSS 的下降沿,位计数器被复位。注
意,对于每次字节传输,在第一个有效 SCK 边沿到来之前, NSS 信号必须被驱动到低电平至少两个系统时
钟周期。图 25.4 给出了两个 4 线方式从器件和一个主器件的连接图。
当 NSSMD1 (SPI0CN.3) = 0 且 NSSMD0 (SPI0CN.2) = 0 时,SPI0 工作在 3 线从方式。在该方式,NSS 未
使用,也不被交叉开关映射到外部端口引脚。由于在 3 线从方式无法唯一地寻址从器件,所以 SPI0 必须是
总线上唯一的从器件。需要注意的是,在 3 线从方式,没有外部手段对位计数器复位以判断是否收到一个完
整的字节。只能通过用 SPIEN 位禁止并重新使能 SPI0 来复位位计数器。图 25.3 给出了一个 3 线从器件和
一个主器件的连接图。
253
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
25.4. SPI 中断源
如果 SPI0 中断被允许,在下述 4 个标志位被置 1 时将产生中断。
注意:这 4 个标志位都必须用软件清 0。

在每次字节传输结束时, SPI 中断标志 SPIF (SPI0CN.7) 被置 1。该标志适用于所有 SPI0 方式。

如果在发送缓冲器中的数据尚未被传送到 SPI 移位寄存器时写 SPI0DAT,写冲突标志 WCOL (SPI0CN.6)
被置 1。发生这种情况时,写 SPI0DAT 的操作被忽略,不会对发送缓冲器写入。该标志适用于所有
SPI0 方式。

当 SPI0 被配置为工作于多主方式的主器件而 NSS 被拉为低电平时,方式错误标志 MODF (SPI0CN.5) 被
置 1。当发生方式错误时, SPI0CN 中的 MSTEN 和 SPI0EN 位被清 0,以禁止 SPI0 并允许另一个主器
件访问总线。
当 SPI0 被配置为从器件并且一次传输结束,而接收缓冲器中还保持着上一次传输的数据未被读取时,接
收溢出标志 RXOVRN (SPI0CN.4) 被置 1。新接收的字节将不被传送到接收缓冲器,允许前面接收的字
节被读取。引起溢出的数据字节丢失。

25.5. 串行时钟相位和极性
使用 SPI0 配置寄存器 (SPI0CFG) 中的时钟控制位可以在串行时钟相位和极性的 4 种组合中选择其一。
CKPHA 位 (SPI0CFG.5) 选择两种时钟相位(锁存数据所用的边沿)中的一种。 CKPOL 位 (SPI0CFG.4) 在
高电平有效和低电平有效的时钟之间选择。主器件和从器件必须被配置为使用相同的时钟相位和极性。在改
变时钟相位和极性期间应禁止 SPI0 (通过清除 SPI0EN 位, SPI0CN.0)。主方式下时钟和数据线的时序关
系示于图 25.5。从方式下时钟和数据的时序关系示于图 25.6 和图 25.7。注意:当 Silicon Labs 的两个
C8051F 器件通信时,不论 SPI0 工作在主方式还是从方式, CKPHA 都应被清 0。
SFR 定义 25.3 所示的 SPI0 时钟速率寄存器 (SPI0CKR) 控制主方式的串行时钟频率。当工作于从方式时该
寄存器被忽略。当 SPI 被配置为主器件时,最大数据传输率(位 / 秒)是系统时钟频率的二分之一或 12.5MHz
(取较低者)。当 SPI 被配置为从器件时,全双工操作的最大数据传输率 (位 / 秒)是系统时钟频率的十分
之一,前提是主器件与从器件的系统时钟同步发出 SCK、 NSS (在 4 线从方式)和串行输入数据。如果主
器件发出的 SCK、 NSS 及串行输入数据不同步,则最大数据传输率 (位 / 秒)必须小于系统时钟频率的十
分之一。在主器件只发送数据到从器件而不需要接收从器件发出的数据 (即半双工操作)这一特殊情况下,
SPI 从器件接收数据时的最大数据传输率 (位 / 秒)是系统时钟频率的四分之一,这是在假设由主器件发出
SCK、 NSS 和串行输入数据与从器件的系统时钟同步的情况下。
??? 1.4
254
C8051F380/1/2/3/4/5/6/7/C
SCK
(CKPOL=0, CKPHA=0)
SCK
(CKPOL=0, CKPHA=1)
SCK
(CKPOL=1, CKPHA=0)
SCK
(CKPOL=1, CKPHA=1)
MISO/MOSI
MSB
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
NSS(在多主方式必须
保持高电平)
图 25.5. 主方式数据 / 时钟时序
SCK
(CKPOL=0, CKPHA=0)
SCK
(CKPOL=0, CKPHA=1)
SCK
(CKPOL=1, CKPHA=0)
SCK
(CKPOL=1, CKPHA=1)
MISO/MOSI
MSB
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
NSS( 在多主方式必须
保持高电平)
图 25.6. 主方式数据 / 时钟时序 (CKPHA = 0)
255
??? 1.4
Bit 1
Bit 0
C8051F380/1/2/3/4/5/6/7/C
SCK
(CKPOL=0, CKPHA=0)
SCK
(CKPOL=1, CKPHA=0)
MOSI
MISO
MSB
MSB
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
NSS(4线方式)
图 25.7. 从方式数据 / 时钟时序 (CKPHA = 1)
25.6. SPI 特殊功能寄存器
对 SPI0 的访问和控制是通过系统控制器中的 4 个特殊功能寄存器实现的:控制寄存器 SPI0CN、数据寄存
器 SPI0DAT、配置寄存器 SPI0CFG 和时钟频率寄存器 SPI0CKR。下面的 SFR 定义将介绍这些与 SPI0 总
线操作有关的特殊功能寄存器。
??? 1.4
256
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 25.1. SPI0CFG:SPI0 配置寄存器
位
7
6
5
4
3
2
1
0
名称
SPIBSY
MSTEN
CKPHA
CKPOL
SLVSEL
NSSIN
SRMT
RXBMT
类型
R
R/W
R/W
R/W
R
R
R
R
复位
0
0
0
0
0
1
1
1
SFR 发址 = 0xA1 ; SFR 页 = 所有页
位
名称
7
SPIBSY
功 能
SPI 忙标志。
当一次 SPI 传输正在进行时 (主或从方式),该位被置为逻辑 1。
6
MSTEN
主方式使能。
0:禁止主方式,工作在从方式。
1:使能主方式,工作在主方式。
5
CKPHA
SPI0 时钟相位。
该位控制 SPI 时钟的相位。
0:数据以 SCK 周期的第一个边沿为中心 *。
1:数据以 SCK 周期的第二个边沿为中心 *。
4
CKPOL
SPI0 时钟极性。
该位控制 SPI 时钟的极性。
0:SCK 在空闲状态时处于低电平。
1:SCK 在空闲状态时处于高电平。
3
SLVSEL
2
NSSIN
从选择标志。
当 NSS 引脚为低电平时该位被置 1,指示 SPI0 是被选中的从器件。当 NSS 引脚
为高电平时 (未被选中为从器件)该位被清 0。该位不指示 NSS 引脚的即时值,
而是该引脚输入的去噪版本。
NSS 引脚即时输入。
该位指示读该寄存器时 NSS 端口引脚的即时值。该信号未被去噪。
1
SRMT
移位寄存器空标志 (仅在从方式有效)
当所有数据都被移入 / 移出移位寄存器并且没有新数据可以从发送缓冲器读出或向
接收缓冲器写入时,该位被置 1。当数据字节被从发送缓冲器传送到移位寄存器或
SCK 发生变化时,该位被清 0。在主方式时 SRMT = 1。
0
RXBMT
接收缓冲器空标志 (仅在从方式有效)。
当接收缓冲器被读取并且没有新数据时,该位被置为逻辑 1。如果在接收缓冲器中
还有新数据未被读取,则该位又被清 0。在主方式时, RXBMT = 1。
注:
257
在从方式, MOSI 上的数据是在每个数据位的中间被采样。在主方式, MISO 上的数据是在每个数据位结束前
一个 SYSCLK 被采样,为从器件提供最大的建立时间。时序参数见表 25.1。
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 25.2. SPI0CN:SPI0 控制寄存器
位
7
6
5
4
名称
SPIF
WCOL
MODF
RXOVRN
类型
R/W
R/W
R/W
R/W
复位
0
0
0
0
3
2
1
0
NSSMD[1:0]
TXBMT
SPIEN
R/W
R
R/W
1
0
0
1
SFR 地址 = 0xF8 ; SFR 页 = 所有页;可位寻址
位
名称
7
SPIF
功 能
SPI0 断标志。
该位在一次数据传送结束后被硬件置为逻辑 1。如果 SPI 中断被使能,则会产生中
断。该位不能被硬件自动清 0,必须用软件清 0。
6
WCOL
写冲突标志。
如果在 TXBMT 为 0 时试图写 SPI0DAT,该位被硬件置为逻辑 1。当这种情况发生
时,写 SPI0DAT 操作被忽略,不会写发送缓冲器。如果 SPI 中断被使能,则会产
生中断。该位不能被硬件自动清 0,必须用软件清 0。
5
MODF
方式错误标志。
当检测到主方式冲突 (NSS 为低电平, MSTEN = 1, NSSMD[1:0] = 01)时,该
位被硬件置为逻辑 1。如果 SPI 中断被使能,则会产生中断。该位不能被硬件自动
清 0,必须用软件清 0。
4
RXOVRN
接收溢出标志 (仅在从方式有效)。
当前传输的最后一位已经移入 SPI0 移位寄存器,而接收缓冲器中仍保存着前一次
传输未被读取的数据时,该位由硬件置为逻辑 1。如果 SPI 中断被使能,则会产生
中断。该位不会被硬件自动清 0,必须用软件清 0。
3:2
NSSMD[1:0]
1
TXBMT
发送缓冲器空标志。
当新数据被写入发送缓冲器时,该位被清 0。当发送缓冲器中的数据被传送到 SPI
移位寄存器时,该位被置 1,表示可以安全地向发送缓冲器写新字节。
0
SPIEN
SPI0 使能。
从选择方式。
选择 NSS 工作方式 (见第 25.2 章和第 25.3 章):
00:3 线从方式或 3 线主方式。 NSS 信号不连到端口引脚。
01:4 线从方式或多主方式 (默认值)。 NSS 是器件的输入。
1x:4 线单主方式。 NSS 信号被分配一个输出引脚并输出 NSSMD0 的值。
0:禁止 SPI0。
1:使能 SPI0。
??? 1.4
258
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 25.3. SPI0CKR:SPI0 时钟速率寄存器
位
7
6
5
4
名称
SCR[7:0]
类型
R/W
复位
0
0
0
0
3
2
1
0
0
0
0
0
SFR 地址 = 0xA2 ; SFR 页 = 所有页
位
名称
7:0
SCR[7:0]
功 能
SPI0 时钟频率。
当 SPI0 模块被配置为工作于主方式时,这些位决定 SCK 输出的频率。 SCK 时钟
频率是从系统时钟分频得到的,由下面的方程给出,其中:SYSCLK 是系统时钟频
率, SPI0CKR 是 SPI0CKR 寄存器中的 8 位值。 .
SYSCLK
f SCK = ------------------------------------------------------------2   SPI0CKR[7:0] + 1 
0 <= SPI0CKR <= 255
例如:如果 SYSCLK = 2 MHz ,SPI0CKR = 0x04,则
2000000
f SCK = --------------------------2  4 + 1
f SCK = 200kHz
SFR 定义 25.4. SPI0DAT:SPI0 数据寄存器
位
7
6
5
4
3
名称
SPI0DAT[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xA3 ; SFR 页 = 所有页
位
7:0
名称
功 能
SPI0DAT[7:0] SPI0 发送和接收数据。
SPI0DAT 寄存器用于发送和接收 SPI0 数据。在主方式下,向 SPI0DAT 写入数据
时,数据被放到发送缓冲器并启动发送。读 SPI0DAT 返回接收缓冲器的内容。
259
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SCK*
T
T
MCKH
MCK L
T
T
MIS
MIH
M ISO
MOSI
* 这是对应 CKPOL = 0时的 SCK 波形。对于 CKPOL = 1,SCK波形的极性反向。
图 25.8. SPI 主方式时序 (CKPHA = 0)
SCK*
T
T
MCKH
MCK L
T
T
MIS
MIH
MISO
MOSI
* 这是对应 CKPOL = 0时的 SCK 波形。对于 CKPOL = 1,SCK波形的极性反向。
图 25.9. SPI 主方式时序 (CKPHA = 1)
??? 1.4
260
C8051F380/1/2/3/4/5/6/7/C
NSS
T
T
SE
T
CKL
SD
SCK*
T
CKH
T
T
SIS
SIH
MOSI
T
SOH
TSE Z
TS DZ
MISO
* 这是对应 CKPOL = 0时的 SCK 波形。对于 CKPOL = 1,SCK波形的极性反向。
图 25.10. SPI 从方式时序 (CKPHA = 0)
NSS
T
T
SE
T
C KL
SD
SCK*
T
C KH
T
SIS
T
SIH
MOSI
TSEZ
T SOH
TSLH
MISO
* 这是对应 CKPOL = 0时的 SCK 波形。对于 CKPOL = 1,SCK波形的极性反向。
图 25.11. SPI 从方式时序 (CKPHA = 1)
261
??? 1.4
TSDZ
C8051F380/1/2/3/4/5/6/7/C
表 25.1. SPI 从方式时序参数
参数
说明
最小值
最大值
单位
主方式时序 (见图 25.8 和图 25.9)
TMCKH
SCK 高电平时间
1 x TSYSCLK
—
ns
TMCKL
SCK 低电平时间
1 x TSYSCLK
—
ns
TMIS
MISO 有效到 SCK 移位边沿
1 x TSYSCLK + 20
—
ns
TMIH
SCK 移位边沿到 MISO 发生改变
0
—
ns
从方式时序 * (见图 25.10 和图 25.11)
TSE
NSS 下降沿到第一个 SCK 边沿
2 x TSYSCLK
—
ns
TSD
最后一个 SCK 边沿到 NSS 上升沿
2 x TSYSCLK
—
ns
TSEZ
NSS 下降沿到 MISO 有效
—
4 x TSYSCLK
ns
TSDZ
NSS 上升沿到 MISO 变为高阻态
—
4 x TSYSCLK
ns
TCKH
SCK 高电平时间
5 x TSYSCLK
—
ns
TCKL
SCK 低电平时间
5 x TSYSCLK
—
ns
TSIS
MOSI 有效到 SCK 采样边沿
2 x TSYSCLK
—
ns
TSIH
SCK 采样边沿到 MOSI 发生改变
2 x TSYSCLK
—
ns
TSOH
SCK 移位边沿到 MISO 发生改变
—
4 x TSYSCLK
ns
TSLH
最后一个 SCK 边沿到 MISO 发生改变 (只限于
CKPHA = 1)
6 x TSYSCLK
8 x TSYSCLK
ns
注:
TSYSCLK 为器件系统时钟 (SYSCLK)的一个周期。
??? 1.4
262
C8051F380/1/2/3/4/5/6/7/C
263
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
26. 定时器
每个 MCU 内部都有 6 个计数器 / 定时器:其中两个 16 位计数器 / 定时器与标准 8051 中的计数器 / 定时器
兼容,另外 4 个是 16 位自动重装载定时器,可用于 SMBus 或作为通用定时器使用。这些定时器可以用于
测量时间间隔,对外部事件计数或产生周期性的中断请求。定时器 0 和定时器 1 几乎完全相同,有四种工作
方式。定时器 2、 3、 4 和 5 均可作为一个 16 位或两个 8 位自动重装载定时器。
定时器 0 和定时器 1 工作方式
定时器 2、 3、 4 和 5 工作方式
13 位计数器 / 定时器
16 位计数器 / 定时器
8 位自动重装载的计数器 / 定时器
两个 8 位计数器 / 定时器 (仅限定时器 0)
16 位自动重装载定时器
两个 8 位自动重装载定时器
定时器 0 和定时器 1 有 5 个可选择的时钟源,由定时器方式选择位 (T1M-T0M) 和时钟分频位 (SCA1-SCA0)
决定。时钟分频位定义一个预分频时钟,作为定时器 0 和 / 或定时器 1 的时钟源 (见 SFR 定义 26.1)。
定时器 0 和定时器 1 可以被配置为使用预分频时钟或系统时钟。定时器 2、3、4 和 5 可以使用系统时钟、系
统时钟 /12 或外部振荡器时钟源 /8 输出作为时钟源。
定时器 0 和定时器 1 还可以工作在计数器方式。当作为计数器使用时,在为定时器所选择的输入引脚 (T0 或
T1) 上出现负跳变时计数器 / 定时器寄存器的值加 1。对事件计数的最大频率可达到系统时钟频率的四分之
一。输入信号不需要是周期性的,但在一个给定电平上的保持时间至少应为两个完整的系统时钟周期,以保
证该电平能够被正确采样。
??? 1.4
263
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.1. CKCON:时钟控制寄存器
位
7
6
5
4
3
2
名称
T3MH
T3ML
T2MH
T2ML
T1M
T0M
SCA[1:0]
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
复位
SFR 地址 = 0x8E ; SFR 页 = 所有页
位
名称
7
T3MH
1
0
0
0
功 能
定时器 3 高字节时钟选择。
该位选择供给定时器 3 高字节的时钟 (仅限分割 8 位定时器方式)。
0:定时器 3 高字节使用 TMR3CN 中的 T3XCLK 位定义的时钟。
1:定时器 3 高字节使用系统时钟。
6
T3ML
定时器 3 低字节时钟选择。
该位选择供给定时器 3 的时钟。选择供给低 8 位定时器的时钟(分割 8 位定时器方式)。
0:定时器 3 低字节使用 TMR3CN 中的 T3XCLK 位定义的时钟。
1:定时器 3 低字节使用系统时钟。
5
T2MH
定时器 2 高字节时钟选择。
该位选择供给定时器 2 高字节的时钟 (仅限分割 8 位定时器方式)。
0:定时器 2 高字节使用 TMR2CN 中的 T2XCLK 位定义的时钟。
1:定时器 2 高字节使用系统时钟。
4
T2ML
定时器 2 低字节时钟选择。
该位选择供给定时器 2 的时钟。如果定时器 2 被配置为分割 8 位定时器方式,选择供给
低 8 位定时器的时钟。
0:定时器 2 低字节使用 TMR2CN 中的 T2XCLK 位定义的时钟。
1:定时器 2 低字节使用系统时钟。
3
T1
定时器 1 时钟选择。
该位选择定时器 1 的时钟源。当 C/T1 被设置为逻辑 1 时, T1M 被忽略。
0:定时器 1 使用由分频位 (SCA[1:0]) 定义的时钟。
1:定时器 1 使用系统时钟。
2
T0
定时器 0 时钟选择。
该位选择定时器 0 的时钟源。当 C/T0 被设置为逻辑 1 时, T0M 被忽略。
0:定时器 0 使用由分频位 (SCA[1:0]) 定义的时钟。
1:定时器 0 使用系统时钟。
1:0
SCA[1:0] 定时器 0/1 预分频位。
这两位控制定时器 0/1 时钟预分频。
00:系统时钟 /12
01:系统时钟 /4
10:系统时钟 /48
11:外部时钟 /8 (与系统时钟同步)
264
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.2. CKCON1:时钟控制寄存器 1
位
7
6
5
4
名称
3
2
1
0
T5MH
T5ML
T4MH
T4ML
类型
R
R
R
R
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xE4 ; SFR 页 = F
位
名称
7:4
未使用
T5MH
3
功 能
读 = 0000b ;写 = 忽略。
定时器 5 高字节时钟选择。
该位选择定时器 5 高字节的时钟源 (仅限分割 8 位定时器方式)。
0:定时器 5 高字节使用由 TMR5CN 中的 T5XCLK 位定义的时钟。
1:定时器 5 高字节使用系统时钟。
2
T5ML
定时器 5 低字节时钟选择。
该位选择定时器 5 的时钟源。在分割 8 位定时器方式选择低 8 位定时器的时钟源。
0:定时器 5 低字节使用由 TMR5CN 中的 T5XCLK 位定义的时钟。
1:定时器 5 低字节使用系统时钟。
1
T4MH
定时器 4 高字节时钟选择。
该位选择定时器 4 高字节的时钟源 (仅限分割 8 位定时器方式)。
0:定时器 4 高字节使用由 TMR4CN 中的 T4XCLK 位定义的时钟。
1:定时器 4 高字节使用系统时钟。
0
T4ML
定时器 4 低字节时钟选择。
该位选择定时器 4 的时钟源。在分割 8 位定时器方式选择低 8 位定时器的时钟源。
0:定时器 4 低字节使用由 TMR4CN 中的 T4XCLK 位定义的时钟。
1:定时器 4 低字节使用系统时钟。
??? 1.4
265
C8051F380/1/2/3/4/5/6/7/C
266
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
26.1. 定时器 0 和定时器 1
每个计数器 / 定时器都是一个 16 位的寄存器,在被访问时分为两个字节:一个低字节 (TL0 或 TL1)和一
个高字节(TH0 或 TH1)。计数器 / 定时器控制寄存器 (TCON) 用于使能定时器 0 和定时器 1 以及指示它们
的状态。通过将 IE 寄存器中的 ET0 位置 1 来允许定时器 0 中断,通过将 ET1 位置 1 来允许定时器 1 中断。
这两个计数器 / 定时器都有四种工作方式,通过设置计数器 / 定时器方式寄存器 (TMOD) 中的方式选择位
T1M1-T0M0 来选择工作方式,每个定时器都可以被独立配置。下面对每种工作方式进行详细说明。
26.1.1. 方式 0 — 13 位计数器 / 定时器
在方式 0,定时器 0 和定时器 1 被作为 13 位的计数器 / 定时器使用。下面介绍对定时器 0 的配置和操作。由
于这两个定时器在工作上完全相同,所以定时器 1 的配置过程与定时器 0 一样。
TH0 寄存器保持 13 位计数器 / 定时器的高 8 位,TL0 在 TL0.4-TL0.0 位置保持低 5 位。TL0 的高 3 位 (TL0.7TL0.5) 是不确定的,在读计数值时应屏蔽掉或忽略这 3 位。作为 13 位定时器寄存器,计到 0x1FFF (全 1)
后再计一次将发生溢出,使计数值回到 0x0000,此时定时器溢出标志 TF0 (TCON.5) 被置 1 并产生中断(如
果定时器 0 中断被允许)。
C/T0 位 (TMOD.2) 选择计数器 / 定时器的时钟源。当 C/T0 被设置为逻辑 1 时,在所选定时器 0 输入引脚
(T0) 上出现的负跳变使定时器寄存器加 1 (有关选择和配置外部 I/O 引脚的详细信息见第 154 页 20.1. 节 “
优先权交叉开关译码器 ” )。清除 C/T0 位将选择由 T0M 位 (CKCON.3) 定义的时钟作为定时器的输入。当
T0M 被置 1 时,定时器 0 的时钟为系统时钟;当 T0M 位被清 0 时,定时器 0 的时钟源由 CKCON(见 SFR
定义 26.1)中的时钟分频位定义。
当 GATE0 (TMOD.3) 为逻辑 0 或输入信号 /INT0 有效时(有效电平由 IT01CF 寄存器中的 IN0PL 位定义),
将 TR0 位 (TCON.4) 置 1 允许定时器 0 工作。将 GATE0 置 1 允许定时器受外部输入信号 /INT0 的控制,便
于脉冲宽度测量。
TR0
GATE0
INT0
计数器 / 定时器
0
1
1
1
X
0
1
1
X
X
0
1
禁止
使能
禁止
使能
注意 : 注:X= 忽略。
注意,置位 TR0 并不强制定时器 0 复位。应在定时器被使能前将定时器寄存器装入所期望的初值。
与上述的 TL0 和 TH0 一样, TL1 和 TH1 构成定时器 1 的 13 位寄存器。定时器 1 的配置和控制方法与定时
器 0 一样,使用 TCON 和 TMOD 中的对应位。输入信号 /INT1 为定时器 1 所用,其极性由 IT01CF 寄存器
中的 IN1PL 位定义。
??? 1.4
266
C8051F380/1/2/3/4/5/6/7/C
CKC ON
T TT T TT SS
3 3 2 2 1 0 CC
M M MM M M A A
H LHL
1 0
预分 频时钟
0
SYSC LK
1
TM OD
G
A
T
E
1
C T
/ 1
TM
1 1
T
1
M
0
G
A
T
E
0
C T
/ 0
TM
0 1
IT01C F
T
0
M
0
I
N
1
P
L
I
N
1
S
L
2
I I
NN
1 1
SS
L L
1 0
I
N
0
P
L
I
N
0
S
L
2
I I
NN
0 0
SS
L L
1 0
0
1
TC LK
T R0
T L0
(5 位 )
GATE 0
交叉开关
I N0PL
/IN T0
T H0
(8 位 )
TC ON
T0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
中断
XO R
图 26.1. T0 方式 0 原理框图
26.1.2. 方式 1 — 16 位计数器 / 定时器
方式 1 的操作与方式 0 完全一样,所不同的是计数器 / 定时器使用全部 16 位。用与方式 0 相同的方法使能
和配置工作在方式 1 的计数器 / 定时器。
26.1.3. 方式 2 — 自动重装载的 8 位计数器 / 定时器
方式 2 将定时器 0 和定时器 1 配置为具有自动重新装入计数初值能力的 8 位计数器 / 定时器。TL0 保持计数
值,而 TH0 保持重载值。当 TL0 中的计数值发生溢出(从全 1 到 0x00)时,定时器溢出标志 TF0 (TCON.5)
被置 1,TH0 中的重载值被重新装入到 TL0。如果定时器 0 中断被允许,在 TF0 被置 1 时将产生中断。TH0
中的重载值保持不变。为了保证第一次计数正确,必须在使能定时器之前将 TL0 初始化为所希望的计数初
值。当工作于方式 2 时,定时器 1 的操作与定时器 0 完全相同。
在方式 2,定时器 1 和定时器 0 的使能和配置方法与方式 0 相同。当 GATE0 (TMOD.3) 为逻辑 0 或输入信
号 /INT0 有效时(有效电平由 IT01CF 寄存器中的 IN0PL 位定义,有关外部输入信号 /INT0 和 /INT1 的详细
说明见 SFR 定义 16.7),置位 TR0 (TCON.4) 位将使能定时器 0。
267
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
CKCON
TTTTTTSS
3 3 2 2 1 0CC
MMMMMM A A
H LH L
1 0
预分频时钟
TMOD
G
A
T
E
1
C T T
/ 1 1
TM M
1 1 0
G
A
T
E
0
C
/
T
0
IT01CF
T
0
M
1
T
0
M
0
I
N
1
P
L
I
N
1
S
L
2
I
N
1
S
L
1
I
N
1
S
L
0
I
N
0
P
L
I
N
0
S
L
2
I
N
0
S
L
1
I
N
0
S
L
0
0
0
1
SYSCLK
1
T0
TL0
(8 位)
TCON
TCL K
TR0
交叉开关
GATE0
TH0
(8 位)
/INT0
IN0PL
TF 1
TR1
TF 0
TR0
IE1
IT1
IE0
IT0
中断
重 装载
XOR
图 26.2. T0 方式 2 原理框图
26.1.4. 方式 3 — 两个 8 位计数器 / 定时器 (仅限定时器 0)
在方式 3 时,定时器 0 被配置为两个独立的 8 位定时器 / 计数器,计数值分别在 TL0 和 TH0 中。在 TL0 中
的计数器 / 定时器使用 TCON 和 TMOD 中定时器 0 的控制 / 状态位:TR0、 C/T0、 GATE0 和 TF0。 TL0 既
可以使用系统时钟也可以使用一个外部输入信号作为时基。TH0 寄存器只能作为定时器使用,由系统时钟或
预分频时钟提供时基。 TH0 使用定时器 1 的运行控制位 TR1,在发生溢出时将定时器 1 的溢出标志位 TF1
置 1,所以它控制定时器 1 的中断。
定时器 1 在方式 3 时停止运行。在定时器 0 工作于方式 3 时,定时器 1 可以工作在方式 0、 1 或 2,但不能
用外部信号作为时钟,也不能设置 TF1 标志和产生中断。但是定时器 1 溢出可以用于为其它外设产生波特
率或溢出条件。当定时器 0 工作在方式 3 时,定时器 1 的运行控制由其方式设置决定。为了在定时器 0 工作
于方式 3 时使用定时器 1,应将定时器 1 的工作方式设置为 0、1 或 2。如果要禁止定时器 1,将其配置为方
式 3 即可。
??? 1.4
268
C8051F380/1/2/3/4/5/6/7/C
CKC ON
T T T T T T SS
3 3 2 21 0CC
M MM M MM A A
HLH L
10
预分 频时钟
T MOD
G
A
T
E
1
C T T
/ 1 1
T MM
1 1 0
GC
A /
T T
E 0
0
TT
0 0
MM
1 0
0
T R1
TH0
(8 位)
TC ON
1
SYSC LK
0
1
T0
TL 0
(8 位)
TR 0
交叉 开关
/IN T0
GATE0
IN 0PL
XOR
图 26.3. T0 方式 3 原理框图
269
??? 1.4
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
中断
中断
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.3. TCON:定时器控制寄存器
位
7
6
5
4
3
2
1
0
名称
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0x88 ; SFR 页 = 所有页;可位寻址
位
名称
7
TF1
功能
定时器 1 溢出标志。
当定时器 1 溢出时由硬件置 1。该位可以用软件清 0,但当 CPU 转向定时器 1 中断
服务程序时该位被自动清 0。
6
TR1
定时器 1 运行控制。
通过将该位置 1 来使能定时器 1。
5
TF0
定时器 0 溢出标志。
当定时器 0 溢出时由硬件置 1。该位可以用软件清 0,但当 CPU 转向定时器 0 中断
服务程序时该位被自动清 0。
4
TR0
定时器 0 运行控制。
通过将该位置 1 来使能定时器 0。
3
IE1
外部中断 1 标志。
当检测到一个由 IT1 定义的边沿 / 电平时,该标志由硬件置 1。该位可以用软件清 0,
但在边沿触发方式下当 CPU 转向外部中断 1 的中断服务程序时被自动清 0。
2
IT1
中断 1 类型选择。
该位选择 /INT1 中断是边沿触发还是电平触发。可以用 IT01CF 寄存器中的 IN1PL 位
将 /INT1 配置为低电平有效或高电平有效 (见 SFR 定义 16.7)。
0:/INT1 为电平触发。
1:/INT1 为边沿触发。
1
IE0
外部中断 0 标志。
当检测到一个由 IT0 定义的边沿 / 电平时,该标志由硬件置 1。该位可以用软件清 0,
但在边沿触发方式下当 CPU 转向外部中断 0 的中断服务程序时被自动清 0。
0
IT0
中断 0 类型选择。
该位选择 /INT0 中断是边沿触发还是电平触发。可以用 IT01CF 寄存器中的 IN0PL 位
将 /INT0 配置为低电平有效或高电平有效 (见 SFR 定义 16.7)。
0:/INT0 为电平触发。
1:/INT0 为边沿触发。
??? 1.4
270
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.4. TMOD:定时器方式寄存器
位
7
6
名称
GATE1
C/T1
类型
R/W
R/W
复位
0
0
5
4
3
2
T1M[1:0]
GATE0
C/T0
T0M[1:0]
R/W
R/W
R/W
R/W
0
0
0
0
1
0
0
0
SFR 地址 = 0x89 ; SFR 页 = 所有页
位
名称
7
GATE1
功能
定时器 1 门控位。
0:当 TR1=1 时定时器 1 工作,与 /INT1 的逻辑电平无关。
1:只有当 TR1=1 并且 /INT1 有效时定时器 1 才被使能 (有效电平由 IT01CF 寄存器
中的 IN1PL 位定义,见 SFR 定义 16.7)。
6
C/T1
计数器 / 定时器 1 功能选择。
0:定时器功能:定时器 1 由 CKCON 寄存器中的 T1M 位定义的时钟加 1。
1:计数器功能:定时器 1 由外部输入引脚 (T1)的负跳变加 1。
5:4
T1M[1:0]
定时器 1 方式选择。
这些位选择定时器 1 的工作方式。
00:方式 0:13 位计数器 / 定时器
01:方式 1:16 位计数器 / 定时器
10:方式 2:自动重装载的 8 位计数器 / 定时器
11:方式 3:定时器 1 停止运行
3
GATE0
定时器 0 门控位。
0:当 TR0=1 时定时器 0 工作,与 /INT0 的逻辑电平无关。
1:只有当 TR0=1 并且 /INT0 有效时定时器 0 才被使能 (有效电平由 IT01CF 寄存器
中的 IN0PL 位定义,见 SFR 定义 16.7)。
2
C/T0
计数器 / 定时器 0 功能选择。
0:定时器功能:定时器 0 由 CKCON 寄存器中的 T0M 位定义的时钟加 1。
1:计数器功能:定时器 0 由外部输入引脚 (T0)的负跳变加 1。
1:0
T0M[1:0]
定时器 0 方式选择。
这些位选择定时器 0 的工作方式。
00:方式 0:13 位计数器 / 定时器
01:方式 1:16 位计数器 / 定时器
10:方式 2:自动重装载的 8 位计数器 / 定时器
11:方式 3:两个 8 位计数器 / 定时器
271
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.5. TL0:定时器 0 低字节
位
7
6
5
4
名称
TL0[7:0]
类型
R/W
复位
0
0
0
0
3
2
1
0
0
0
0
0
3
2
1
0
0
0
0
0
SFR 地址 = 0x8A ; SFR 页 = 所有页
位
名称
7:0
TL0[7:0]
功能
定时器 0 低字节。
TL0 寄存器是 16 位定时器 0 的低字节。
SFR 定义 26.6. TL1:定时器 1 低字节
位
7
6
5
4
名称
TL1[7:0]
类型
R/W
复位
0
0
0
0
SFR 地址 = 0x8B ; SFR 页 = 所有页
位
名称
7:0
TL1[7:0]
功能
定时器 1 低字节。
TL1 寄存器是 16 位定时器 1 的低字节。
??? 1.4
272
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.7. TH0:定时器 0 高字节
位
7
6
5
4
名称
TH0[7:0]
类型
R/W
复位
0
0
0
0
3
2
1
0
0
0
0
0
3
2
1
0
0
0
0
0
SFR 地址 = 0x8C ; SFR 页 = 所有页
位
名称
7:0
TH0[7:0]
功能
定时器 0 高字节。
TH0 寄存器是 16 位定时器 0 的高字节。
SFR 定义 26.8. TH1:定时器 1 高字节
位
7
6
5
4
名称
TH1[7:0]
类型
R/W
复位
0
0
0
0
SFR 地址 = 0x8D ; SFR 页 = 所有页
位
名称
7:0
TH1[7:0]
功能
定时器 1 高字节。
TH1 寄存器是 16 位定时器 1 的高字节。
273
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
26.2. 定时器 2
定时器 2 是一个 16 位的定时器,由两个 8 位 SFR 组成:TMR2L (低字节)和 TMR2H (高字节)。定时
器 2 可以工作在 16 位自动重装载方式、(分割) 8 位自二甲双胍重载方式、 USB 帧起始 (SOF) 捕捉方式或
低频振荡器 (LFO) 下降沿捕捉方式。定时器 2 的工作方式由 T2SPLIT 位 (TMR2CN.3), T2CE 位 (TMR2CN.4)
和 T2CSS 位 (TMR2CN.1) 定义。
定时器 2 的时钟源可以是系统时钟、系统时钟 /12 或外部振荡源时钟 /8. 在使用实用时钟 (RTC) 功能时,外
部时钟方式是理想的选择,此时用内部振荡器驱动系统时钟,而定时器 2 (和 / 或 PCA)的时钟由一个精确
的外部振荡器提供。注意,外部振荡源时钟 /8 与系统时钟同步。
26.2.1. 16 位自动重装载方式
当 T2SPLIT (TMR2CN.3) 为 0 时,定时器 2 工作在自动重装载的 16 位定时器方式(见图 26.4)。定时器 2
可以使用 SYSCLK, SYSCLK /12 或外部振荡器时钟 /8 作为其时钟源。当 16 位定时器寄存器发生溢出 (从
0xFFF 到 0x0000)时,定时器 2 重载寄存器 (TMR2RLH 和 TMR2RLL) 中的 16 位计数初值被自动装入到
定时器 2 寄存器,并将定时器 2 高字节溢出标志 TF2H (TMR2CN.7) 置 1。如果定时器 2 中断被允许(如果
IE.5 被置 1),则每次定时器 2 溢出都将产生中断。如果 定时器 2 中断被允许并且 TF2LEN 位 (TMR2CN.5)
被置 1,则每次低 8 位 (TMR2L) 溢出时 (从 0xFF 到 0x00)将产生中断。
C K C ON
T T T T TT S S
3 3 2 2 10 CC
T2 X C LK M M M M M M A A
H LH L
1 0
S YS C LK / 1 2
去A DC、
S MB us
去S MB us
0
T L2 溢 出
0
S YS C LK
1
T CLK
TM R 2L
TM R2 H
TM R 2C N
TR2
外部 时钟 / 8
1
TF2H
TF2 L
TF2 LEN
T2C E
T2SPLIT
TR2
T2C SS
T2 XCLK
中断
TMR 2 RL L TMR 2 RL H
重 装载
图 26.4. 定时器 2 的 16 位方式原理框图
??? 1.4
274
C8051F380/1/2/3/4/5/6/7/C
26.2.2. 8 位自动重装载定时器
当 T2SPLIT 位被置 1 时,定时器 2 工作在双 8 位定时器方式 (TMR2H 和 TMR2L)。这两个 8 位定时器都
工作在自动重装载方式,如图 26.5 所示。TMR2RLL 保持 TMR2L 的重载值,而 TMR2RLH 保持 TMR2H 的
重载值。 TMR2CN 中的 TR2 是 TMR2H 的运行控制位。当定时器 2 被配置为 8 位方式时, TMR2L 总是处
于运行状态。
每个 8 位定时器都可以被配置为使用 SYSCLK、SYSCLK/12 或外部振荡器时钟 /8 作为其时钟源。定时器 2
时钟选择位(CKCON 中的 T2MH 和 T2ML)选择 SYSCLK 或由定时器 2 外部时钟选择位(TMR2CN 中的
T2XCLK)定义的时钟源。时钟源的选择情况如下所示。
T2MH
T2XCLK
0
0
1
0
1
X
TMR2H 时钟源
SYSCLK / 12
外部时钟 / 8
SYSCLK
T2ML
T2XCLK
0
0
1
0
1
X
TMR2L Clock Source
SYSCLK / 12
外部时钟 / 8
SYSCLK
当 TMR2H 发生溢出时 (从 0xFF 到 0x00), TF2H 被置 1 ;当 TMR2L 发生溢出时 (从 0xFF 到 0x00),
TF2L 被置 1。如果定时器 2 中断被允许,则每次 TMR2H 溢出时都将产生中断。如果定时器 2 中断被允许
并且 TF2LEN 位 (TMR2CN.5) 被置 1,则每当 TMR2L 和 TMR2H 中的任何一个发生溢出时将产生中断。在
TF2LEN 位被置 1 的情况下,软件必须检查 TF2H 和 TF2L 标志,以确定中断的来源。 TF2H 和 TF2L 标志
不能被硬件自动清除,必须用软件手动清除。
CK C ON
T TT T T T S S
3 32 2 1 0 CC
MMMMMMA A
HLHL
1 0
T2 XC LK
S YS CL K / 12
0
外 部时钟 / 8
1
TMR 2 R LH
重装载
去 SM Bu s
0
TC L K
TR2
TM R2 H
TM R 2R L L
重装载
S YSC L K
TM R2 CN
1
TF2H
TF2 L
TF2 LEN
T2C E
T2SPL IT
TR2
T2C SS
T2 XCL K
中断
1
TC L K
TMR 2 L
去A D C、
SM Bu s
0
图 26.5. 定时器 2 的 8 位方式原理图
26.2.3. 定时器 2 捕捉方式:USB 帧起始捕捉或 LFO 下降沿捕捉方式
当 T2CE = 1 时,定时器 2 工作在两种特殊捕捉方式之一。捕捉事件可以是 USB 帧起始 (SOF) 捕捉或低频
振荡器 (LFO) 下降沿捕捉,用 T2CSS 位选择。 USB SOF 捕捉方式可用于根据已知的 USB 主 SOF 时钟来
校准系统时钟或外部振荡器。LFO 下降沿捕捉方式可用于根据内部高频振荡器或外部时钟源校准内部低频振
荡器。当 T2SPLIT = 0 时,定时器 2 向上计数,并在计数值从 0xFFFF 变为 0x0000 时溢出。每次收到捕捉
事件时,定时器 2 寄存器 (TMR2H:TMR2L) 的内容被锁存到定时器 2 重装载寄存器 (TMR2RLH:TMR2RLL)
中,并产生定时器 2 中断 (如果被使能)。
275
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
TMR2CN
TT TT TT TT
FF F2 2R22
2 2 2 CS 2 C X
H L L EP S C
E L SL
N I
K
T
SYSC LK / 12
CKCON
TT TT TTSS
33 22 10CC
M MM MM MA A
HLHL
10
去SMBus
0
TL2 溢出
0
TR2
外部时钟 / 8
SYSCLK
T CLK
1
TMR2L
TMR2H
去ADC、
SMBus
1
USB 帧起始 (SOF )
0
捕捉
低频振荡器下 降沿
TMR2RLL TMR2R LH
1
T2CSS
使能
中断
图 26.6. 定时器 2 捕捉方式 (T2SPLIT = 0)
当 T2SPLIT = 1 时,定时器 2 寄存器 (TMR2H 和 TMR2L)分成两个 8 位计数器。每个计数器都独立地向
上计数并在计数值从 0xFF 变为 0x00 时溢出。每次收到捕捉事件时,定时器 2 寄存器被锁存到定时器 2 重
装载寄存器 (TMR2RLH 和 TMR2RLL)中,并产生定时器 2 中断 (如果被使能)。
??? 1.4
276
C8051F380/1/2/3/4/5/6/7/C
TMR2CN
TT
FF
2 2
HL
T
F
2
L
E
N
TTTT T
2 2 R2 2
CS2 C X
EP S C
L S L
I
K
T
SYSCLK / 12
0
外部时钟/ 8
1
CKCON
TT
3 3
MM
HL
TT TT
2 2 1 0
MMMM
HL
SS
CC
AA
1 0
TMR2RLH
使能
捕捉
0
TCLK
T R2
T MR2H
去SMBus
1
TMR2R LL
捕捉
SYSCLK
1
TCLK
TMR2L
去 ADC,
SMBus
0
USB 帧起始 (SOF)
0
低频振荡器下降沿
1
T2CSS
图 26.7. 定时器 2 捕捉方式 (T2SPLIT = 0)
277
??? 1.4
中断
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.9. TMR2N:定时器 2 控制寄存器
位
7
6
5
4
3
2
1
0
名称
TF2H
TF2L
TF2LEN
TF2CEN
T2SPLIT
TR2
T2CSS
T2XCLK
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xC8 ; SFR 页 = 0 ;可位寻址
位
名称
7
TF2H
功能
定时器 2 高字节溢出标志。
当定时器 2 高字节发生溢出时 (从 0xFF 到 0x00)由硬件置 1。在 16 位方式,当定
时器 2 发生从 0xFFFF 到 0x0000 的溢出时由硬件置 1。当定时器 2 中断被允许时,
该位置 1 将导致 CPU 转向定时器 2 的中断服务程序。该位不能由硬件自动清 0,必
须用软件清 0。
6
TF2L
定时器 2 低字节溢出标志。
当定时器 2 低字节发生溢出时 (从 0xFF 到 0x00)由硬件置 1。当定时器 2 中断被
允许并且 TF2LEN 位被设置为逻辑 1 时,该位置 1 将产生中断。 TF2L 在低字节溢出
时置 1,与定时器 2 的工作方式无关。该位不能由硬件自动清 0,必须用软件清 0。
5
TF2LEN
定时器 2 低字节中断允许。
该位置 1 将允许定时器 2 低字节中断。如果定时器 2 中断也被允许,则当定时器 2 低
字节发生溢出时将产生中断。当定时器 2 工作在 16 位方式时,该位应被清 0。
4
TF2CEN
定时器 2 低频振荡器捕捉使能。
该位被置 1 时使能定时器 2 低频振荡器捕捉方式。如果 TF2CEN 被置 1 且定时器 2
中断被使能,则在低频振荡器是输出的下降沿会产生中断,且 TMR2H:TMR2L 中的
当前 16 位定时器值被复制到 TMR2RLH:TMR2RLL 中。
3
T2SPLIT
定时器 2 分割方式 (双 8 位)使能。
当该位被置 1 时,定时器 2 工作在双 8 位自动重装载定时器方式。否则,定时器 2 工
作在 16 位自动重装载方式。
2
TR2
定时器 2 运行控制。
通过将该位置 1 来使能定时器 2。在 8 位方式,该位仅使能 / 禁止 TMR2H, TMR2L
在分割方式总是被使能。
1
T2CSS
定时器 2 捕捉源选择。
当 T2CE 被置 1 时,该位选择捕捉事件源。
0:捕捉源为 USB SOF 事件。
1:捕捉源为低频振荡器下降沿。
0
T2XCLK
定时器 2 外部时钟选择。
该位选择定时器 2 的外部时钟源。但仍可用定时器 2 时钟选择位 (CKCON 寄存器中
的 T2MH 和 T2ML)在外部时钟和系统时钟之间作出选择。
0:定时器 2 时钟为系统时钟 /12。
1:定时器 2 时钟为外部时钟 /8 (与系统时钟同步)。
??? 1.4
278
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.10. TMR2RLL:定时器 2 重载寄存器低字节
位
7
6
5
4
3
名称
TMR2RLL[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xCA ; SFR 页 = 0
位
7:0
名称
功能
TMR2RLL[7:0] 定时器 2 重载寄存器的低字节。
TMR2RLL 保持定时器 2 重载值的低字节。
SFR 定义 26.11. TMR2RLH:定时器 2 重载寄存器高字节
位
7
6
5
4
3
名称
TMR2RLH[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xCB ; SFR 页 = 0
位
名称
功能
7:0 TMR2RLH[7:0] 定时器 2 重载寄存器的高字节。
TMR2RLH 保持定时器 2 重载值的高字节。
SFR 定义 26.12. TMR2L:定时器 2 低字节
位
7
6
5
4
3
名称
TMR2L[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xCC ; SFR 页 = 0
位
7:0
名称
功能
TMR2L[7:0] 定时器 2 低字节。
在 16 位方式, TMR2L 寄存器保持 16 位定时器 2 的低字节。在 8 位方式, TMR2L 中
保持 8 位低字节定时器值。
279
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.13. TMR2H:定时器 2 高字节
位
7
6
5
4
3
名称
TMR2H[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xCD ; SFR 页 = 0
位
7:0
名称
功能
TMR2H[7:0] 定时器 2 高字节。
在 16 位方式, TMR2H 寄存器保持 16 位定时器 2 的高字节。在 8 位方式, TMR2H
中保持 8 位高字节定时器值。
??? 1.4
280
C8051F380/1/2/3/4/5/6/7/C
281
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
26.3. 定时器 3
定时器 3 是一个 16 位定时器,由两个 8 位的 SFR 组成:TMR3L (低字节)和 TMR3H (高字节)。定时
器 3 可以工作在 16 位自动重装载方式、(分割) 8 位自动重装载方式 (两个 8 位定时器)、 USB 帧起始
(SOF) 捕捉方式或低频振荡器 (LFO) 上升沿捕捉方式。T3SPLIT 位 (TMR3CN.3)、T3CE 位 (TMR3CN.4) 和
T3CSS 位 (TMR3CN.1) 定义定时器 3 的工作方式。
定时器 3 的时钟源可以是系统时钟、系统时钟 /12 或外部振荡源时钟 /8。在使用实时时钟 (RTC) 功能时,外
部时钟方式是理想的选择,此时用内部振荡器驱动系统时钟,而定时器 3 (和 / 或 PCA)的时钟由一个精确
的外部振荡器提供。注意,外部振荡源时钟 /8 与系统时钟同步。
26.3.1. 16 位自动重装载方式
当 T3SPLIT 位 (TMR3CN.3) 为 0 时,定时器 3 工作在自动重装载的 16 位定时器方式 (见图 26.8)。定时
器 3 可以使用 SYSCLK、 SYSCLK/12 或外部振荡器时钟 /8 作为其时钟源。当 16 位定时器寄存器发生溢出
(从 0xFFFF 到 0x0000)时,定时器 3 重载寄存器 (TMR3RLH 和 TMR3RLL)中的 16 位计数初值被自动
装入到定时器 3 寄存器,并将定时器 3 高字节溢出标志 TF3H (TMR3CN.7) 置 1。如果定时器 3 中断被允许
(如果 EIE1.7 被置 1),则每次定时器 3 溢出都将产生中断。如果定时器 3 中断被允许并且 TF3LEN 位
(TMR3CN.5) 被置 1,则每次低 8 位 (TMR3L) 溢出时 (从 0xFF 到 0x00)将产生中断。
T3 XC L K
S YS C LK / 12
C KC ON
T T T T T TS S
3 3 2 2 1 0CC
M M M M MM A A
HL HL
1 0
去 A DC
0
0
S YSC L K
1
TCLK
TMR 3L
TMR3 H
TMR 3 CN
T R3
外部 时钟 / 8
1
TF3H
TF3 L
TF3 LEN
T3C E
T3SPL IT
TR3
T3C SS
T3XCL K
中断
TM R 3R LL TM R 3R LH
重装 载
图 26.8. 定时器 3 的 16 位方式原理框图
??? 1.4
281
C8051F380/1/2/3/4/5/6/7/C
26.3.2. 8 位自动重装载定时器
当 T3SPLIT 位 (TMR3CN.3) 为 1 且 T3CE = 0 时,定时器 3 工作在双 8 位定时器方式(TMR3H 和 TMR3L)。
两个 8 位定时器 TMR3H 和 TMR3L 都工作在自动重装载方式 (见图 26.9)。 TMR3RLL 保持 TMR3L 的重
载值,而 TMR3RLH 保持 TMR3H 的重载值。 TMR3CN 中的 TR3 是 TMR3H 的运行控制位。当定时器 3 被
配置为 8 位方式时, TMR3L 总是处于运行状态。
每个 8 位定时器都可以被配置为使用 SYSCLK、SYSCLK/12 或外部振荡器时钟 /8 作为其时钟源。定时器 3
时钟选择位(CKCON 中的 T3MH 和 T3ML)选择 SYSCLK 或由定时器 3 外部时钟选择位(TMR3CN 中的
T3XCLK)定义的时钟源。时钟源的选择情况如下所示。
T3MH
0
0
1
T3XCLK
0
1
X
TMR3H 时钟源
SYSCLK / 12
外部时钟 / 8
SYSCLK
T3ML
0
0
1
T3XCLK
0
1
X
TMR3L 时钟源
SYSCLK / 12
外部时钟 / 8
SYSCLK
当 TMR3H 发生溢出时 (从 0xFF 到 0x00), TF3H 被置 1 ;当 TMR3L 发生溢出时 (从 0xFF 到 0x00),
TF3L 被置 1。如果定时器 3 中断被允许,则每次 TMR3H 溢出时都将产生中断。如果定时器 3 中断被允许
并且 TF3LEN 位 (TMR3CN.5) 被置 1,则每当 TMR3L 或 TMR3H 发生溢出时都将产生中断。在 TF3LEN 位
被使能的情况下,软件必须检查 TF3H 和 TF3L 标志,以确定中断的来源。 TF3H 和 TF3L 标志不能被硬件
自动清除,必须通过软件清除。
ltu
C K C ON
TT T T T T S S
33 2 2 1 0 CC
MMMMMMA A
HL H L
1 0
T3 XC L K
S YS C LK / 12
TMR 3 R LH
重装载
0
去 AD C
0
外 部时钟 / 8
1
TC L K
TR 3
TM R 3H
TM R 3 RL L
重装载
S YSC L K
TMR3 C N
1
TF3H
TF3 L
TF3LEN
T3C E
T3 SPL IT
TR3
T3C SS
T3XCL K
中断
1
TC L K
TMR 3 L
0
图 26.9. 定时器 3 的 8 位方式原理框图
26.3.3. 定时器 3 捕捉方式:USB 帧起始或 LFO 下降沿
当 T3CE = 1 时,定时器 3 工作在两种特殊捕捉方式之一。捕捉事件可以是 USB 帧起始 (SOF) 捕捉或低频
振荡器 (LFO) 下降沿捕捉,用 T3CSS 位选择。 USB SOF 捕捉方式可用于根据已知的 USB 主 SOF 时钟来
校准系统时钟或外部振荡器。LFO 下降沿捕捉方式可用于根据内部高频振荡器或外部时钟源校准内部低频振
荡器。当 T3SPLIT = 0 时,定时器 3 向上计数,并在计数值从 0xFFFF 变为 0x0000 时溢出。每次收到捕捉
事件时,定时器 3 寄存器 (TMR3H:TMR3L) 的内容被锁存到定时器 3 重装载寄存器 (TMR3RLH:TMR3RLL)
中,并产生定时器 3 中断 (如果被使能)。
282
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
TMR3CN
T
F
3
H
T
F
3
L
TT
F3
3C
LE
E
N
SYSCLK / 12
TT TT
3 R 3 3
S3 CX
P SC
L S L
I
K
T
CKCON
T
3
M
H
TT TTTSS
3 2 2 1 0 CC
MMMM MA A
L H L
1 0
0
0
外部时钟 / 8
SYSCLK
T R3
TCLK
1
TMR3L
TMR3H
去 ADC
1
USB 帧起始 (SOF)
0
捕捉
低频振荡器下降沿
TMR3RLL TMR3RLH
1
T3CSS
使能
中断
图 26.10. 定时器 3 捕捉方式 (T3SPLIT = 0)
当 T3SPLIT = 1 时,定时器 3 寄存器 (TMR3H 和 TMR3L)分成两个 8 位计数器。每个计数器都独立地向
上计数并在计数值从 0xFF 变为 0x00 时溢出。每次收到捕捉事件时,定时器 3 寄存器被锁存到定时器 3 重
装载寄存器 (TMR3RLH 和 TMR3RLL)中,并产生定时器 3 中断 (如果被使能)。
??? 1.4
283
C8051F380/1/2/3/4/5/6/7/C
TMR3CN
TT
FF
3 3
HL
T
F
3
L
E
N
SYSCLK / 12
TTTT T
3 3 R3 3
CS3 C X
EP S C
L S L
I
K
T
CKC ON
TT TTTT SS
3 3 2 2 1 0 CC
MMMM MM A A
HL HL
1 0
TMR3RLH
使能
捕捉
0
0
外部时钟 / 8
1
TCLK
T R3
T MR3H
To ADC
1
TMR3R LL
捕捉
SYSCLK
1
TCLK
TMR3L
0
U SB 帧起始 (SOF )
0
低频振荡器下降沿
1
T3CSS
图 26.11. 定时器 3 捕捉方式 (T3SPLIT = 0)
284
??? 1.4
中断
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.14. TMR3CN:定时器 3 控制寄存器
位
7
6
5
4
3
2
1
0
名称
TF3H
TF3L
TF3LEN
TF3CEN
T3SPLIT
TR3
T3CSS
T3XCLK
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0x91 ; SFR 页 = 0
位
名称
7
TF3H
功能
定时器 3 高字节溢出标志。
当定时器 3 高字节发生溢出时 (从 0xFF 到 0x00)由硬件置 1。在 16 位方式,当定
时器 3 发生从 0xFFFF 到 0x0000 的溢出时由硬件置 1。当定时器 3 中断被允许时,
该位置 1 将导致 CPU 转向定时器 3 的中断服务程序。该位不能由硬件自动清 0,必
须用软件清 0。
6
TF3L
定时器 3 低字节溢出标志。
当定时器 3 低字节发生溢出时 (从 0xFF 到 0x00)由硬件置 1。当定时器 3 中断被
允许并且 TF3LEN 位被设置为逻辑 1 时,该位置 1 将产生中断。 TF3L 在低字节溢出
时置 1,与定时器 3 的工作方式无关。该位不能由硬件自动清 0,必须用软件清 0。
5
TF3LEN
定时器 3 低字节中断允许。
该位置 1 将允许定时器 3 低字节中断。如果定时器 3 中断也被允许,则当定时器 3
低字节发生溢出时将产生中断。当定时器 3 工作在 16 位方式时,该位应被清 0。
4
TF3CEN
定时器 3 低频振荡器捕捉使能。
该位被置 1 时使能定时器 3 低频振荡器捕捉方式。如果 TF3CEN 被置 1 且定时器 3
中断被使能,则在低频振荡器输出的下降沿会产生中断,且 TMR3H:TMR3L 中的当
前 16 位定时器值被复制到 TMR3RLH:TMR3RLL 中。
3
T3SPLIT
定时器 3 分割方式 (双 8 位)使能。
当该位被置 1 时,定时器 3 工作在双 8 位自动重装载定时器方式。否则,定时器 3
工作在 16 位自动重装载方式。
2
TR3
定时器 3 运行控制。
通过将该位置 1 来使能定时器 3。在 8 位方式,该位仅使能 / 禁止 TMR3H, TMR3L
在分割方式总是被使能。
1
T3CSS
定时器 3 捕捉源选择。
当 T3CE 被置 1 时,该位选择捕捉事件源。
0:捕捉源为 USB SOF 事件。
1:捕捉源为低频振荡器下降沿。
0
T3XCLK
定时器 3 外部时钟选择。
该位选择定时器 3 的外部时钟源。但仍可用定时器 3 时钟选择位(寄存器 CKCON 中
的 T3MH 和 T3ML)在外部时钟和系统时钟之间作出选择。
0:定时器 3 时钟为系统时钟 /12。
1:定时器 3 时钟为外部时钟 /8 (与系统时钟同步)。
??? 1.4
285
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.15. TMR3RLL:定时器 3 重载寄存器低字节
位
7
6
5
4
3
名称
TMR3RLL[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0x92 ; SFR 页 = 0
位
7:0
名称
功能
TMR3RLL[7:0] 定时器 3 重载寄存器的低字节。
TMR3RLL 保持定时器 3 重载值的低字节。
SFR 定义 26.16. TMR3RLH:定时器 3 重载寄存器高字节
位
7
6
5
4
3
名称
TMR3RLH[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0x93 ; SFR 页 = 0
位
名称
功能
7:0 TMR3RLH[7:0] 定时器 3 重载寄存器的高字节。
TMR3RLH 保持定时器 3 重载值的高字节。
SFR 定义 26.17. TMR3L:定时器 3 低字节
位
7
6
5
4
3
名称
TMR3L[7:0]
复位
R/W
0
0
0
0
0
SFR 地址 = 0x94 ; SFR 页 = 0
位
名称
7:0
TMR3L[7:0]
功能
定时器 3 低字节。
在 16 位方式, TMR3L 寄存器保持 16 位定时器 3 的低字节。在 8 位方式, TMR3L
中保持 8 位低字节定时器的值。
286
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.18. 定时器 3 高字节
位
7
6
5
4
3
名称
TMR3H[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0x95 ; SFR 页 = 0
位
名称
7:0
TMR3H[7:0]
功能
定时器 3 高字节。
在 16 位方式, TMR3H 寄存器保持 16 位定时器 3 的高字节。在 8 位方式,
TMR3H 中保持 8 位高字节定时器的值。
??? 1.4
287
C8051F380/1/2/3/4/5/6/7/C
288
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
26.4. 定时器 4
定时器 4 是一个 16 位定时器,由两个 8 位的 SFR 组成:TMR4L (低字节)和 TMR4H (高字节)。定时
器 4 可以工作在 16 位自动重装载方式或 (分割) 8 位自动重装载方式 (两个 8 位定时器)。 T4SPLIT 位
(TMR4CN.3) 定义定时器 4 的工作方式。
定时器 4 的时钟源可以是系统时钟、系统时钟 /12 或外部振荡源 /8。注意,外部振荡源 /8 与系统时钟同步。
26.4.1. 16 位自动重装载方式
当 T4SPLIT 位 (TMR4CN.3) 为 0 时,定时器 4 工作在自动重装载的 16 位定时器方式(见图 26.12)。定时
器 4 可以使用 SYSCLK、 SYSCLK/12 或外部振荡器时钟 /8 作为其时钟源。当 16 位定时器寄存器向上计数
并发生溢出 (从 0xFFFF 到 0x0000)时,定时器 4 重载寄存器 (TMR4RLH 和 TMR4RLL)中的 16 位计
数初值被自动装入到定时器 4 寄存器,并将定时器 4 高字节溢出标志 TF4H (TMR4CN.7) 置 1。如果定时器
4 中断被允许 (如果 EIE1.7 被置 1),则每次定时器 4 溢出都将产生中断。如果定时器 4 中断被允许并且
TF4LEN 位 (TMR4CN.5) 被置 1,则每次低 8 位 (TMR4L) 溢出时 (从 0xFF 到 0x00)将产生中断。
C KC ON1
TT TT
5 5 4 4
MMMM
HL H L
T4XCLK
SYSCLK / 12
去 ADC
0
0
SYSCLK
TR4
1
TCLK
TMR4 L
TMR4 H
TMR4CN
外部时钟 / 8
1
TMR4RLL TMR4RLH
TF4 H
TF4L
TF4 L EN
T4 CE
T4S PLIT
TR 4
T4C SS
T4 XC LK
中断
重装载
图 26.12. 定时器 4 的 16 位方式原理框图
??? 1.4
288
C8051F380/1/2/3/4/5/6/7/C
26.4.2. 8 位自动重装载定时器
当 T4SPLIT 位 (TMR4CN.3) 为 1 且 T4CE = 0 时,定时器 4 工作在双 8 位定时器方式(TMR4H 和 TMR4L)。
两个 8 位定时器 TMR4H 和 TMR4L 都工作在自动重装载方式(见图 26.13)。TMR4RLL 保持 TMR4L 的重
载值,而 TMR4RLH 保持 TMR4H 的重载值。 TMR4CN 中的 TR4 是 TMR4H 的运行控制位。当定时器 4 被
配置为 8 位方式时, TMR4L 总是处于运行状态。
每个 8 位定时器都可以被配置为使用 SYSCLK、SYSCLK/12 或外部振荡器时钟 /8 作为其时钟源。定时器 4
时钟选择位 (CKCON1 中的 T4MH 和 T4ML)选择 SYSCLK 或由定时器 4 外部时钟选择位 (TMR4CN 中
的 T4XCLK)定义的时钟源。时钟源的选择情况如下所示。 :
T4MH
T4XCLK
0
0
1
0
1
X
TMR4H 时钟源
SYSCLK/12
外部时钟 /8
SYSCLK
T4ML
T4XCLK
0
0
1
0
1
X
TMR4L 时钟源
SYSCLK/12
E 外部时钟 /8
SYSCLK
当 TMR4H 发生溢出时 (从 0xFF 到 0x00), TF4H 被置 1 ;当 TMR4L 发生溢出时 (从 0xFF 到 0x00),
TF4L 被置 1。如果定时器 4 中断被允许,则每次 TMR4H 溢出时都将产生中断。如果定时器 4 中断被允许
并且 TF4LEN 位 (TMR4CN.5)被置 1,则每当 TMR4L 或 TMR4H 发生溢出时都将产生中断。在 TF4LEN
位被使能的情况下,软件必须检查 TF4H 和 TF4L 标志,以确定中断的来源。 TF4H 和 TF4L 标志不能被硬
件自动清除,必须通过软件清除。
C K C ON1
TTTT
5 5 4 4
M MM M
HLH L
T4 X CL K
SY SC LK / 1 2
TM R 4R L H
重装 载
0
去 AD C
0
外部时 钟 / 8
1
TC LK
TR 4
TMR 4H
TMR 4 R LL
重装 载
S YSC L K
1
TC LK
TM R4 L
0
图 26.13. 定时器 4 的 8 位方式原理框图
289
??? 1.4
TM R4 C N
1
TF4 H
TF4L
TF4L EN
T4CE
T4 SPLIT
TR 4
T4CSS
T4XC LK
中断
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.19. TMR4CN:定时器 4 控制寄存器
位
7
6
5
名称
TF4H
TF4L
TF4LEN
类型
R/W
R/W
R/W
复位
0
0
0
4
3
2
1
0
T4SPLIT
TR4
R
R/W
R/W
R
R/W
0
0
0
0
0
T4XCLK
SFR 地址 = 0x91 ; SFR 页 = F
位
名称
7
TF4H
功能
定时器 4 高字节溢出标志。
当定时器 4 高字节发生溢出时 (从 0xFF 到 0x00)由硬件置 1。在 16 位方式,当定
时器 4 发生从 0xFFFF 到 0x0000 的溢出时由硬件置 1。当定时器 4 中断被允许时,
该位置 1 将导致 CPU 转向定时器 4 的中断服务程序。该位不能由硬件自动清 0,必
须用软件清 0。
6
TF4L
定时器 4 低字节溢出标志。
当定时器 4 低字节发生溢出时 (从 0xFF 到 0x00)由硬件置 1。当定时器 4 中断被
允许并且 TF4LEN 位被设置为逻辑 1 时,该位置 1 将产生中断。 TF4L 在低字节溢出
时置 1,与定时器 4 的工作方式无关。该位不能由硬件自动清 0,必须用软件清 0。
5
TF4LEN
定时器 4 低字节中断允许。
该位置 1 将允许定时器 4 低字节中断。如果定时器 4 中断也被允许,则当定时器 4
低字节发生溢出时将产生中断。当定时器 4 工作在 16 位方式时,该位应被清 0。
4
3
未使用
T4SPLIT
读 = 0b ;写 = 忽略。
定时器 4 分割方式 (双 8 位)使能。
当该位被置 1 时,定时器 4 工作在双 8 位自动重装载定时器方式。
0:定时器 4 工作在 16 位自动重装载方式。
1:定时器 4 工作在双 8 位自动重装载方式。
2
TR4
定时器 4 运行控制。
通过将该位置 1 来使能定时器 4。在 8 位方式,该位仅使能 / 禁止 TMR4H, TMR4L
在分割方式总是被使能。
1
0
未使用
T4XCLK
读 = 0b ;写 = 忽略。
定时器 4 外部时钟选择。
该位选择定时器 4 的外部时钟源。但仍可用定时器 4 时钟选择位 (CKCON1 中的
T4MH 和 T4ML)在外部时钟和系统时钟之间作出选择。
0:定时器 4 时钟为系统时钟 /12。
1:定时器 4 时钟为外部时钟 /8 (与系统时钟同步)。
??? 1.4
290
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.20. TMR4RLL:定时器 4 重载寄存器低字节
位
7
6
5
4
3
名称
TMR4RLL[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0x92 ; SFR 页 = F
位
7:0
名称
功能
TMR4RLL[7:0] 定时器 4 重载寄存器的低字节。
TMR4RLL 保持定时器 4 重载值的低字节。
SFR 定义 26.21. TMR4RLH:定时器 4 重载寄存器高字节
位
7
6
5
4
3
名称
TMR4RLH[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0x93 ; SFR 页 = F
位
名称
功能
7:0 TMR4RLH[7:0] 定时器 4 重载寄存器的高字节。
TMR4RLH 保持定时器 4 重载值的高字节。
SFR 定义 26.22. TMR4L:定时器 4 低字节
位
7
6
5
4
3
名称
TMR4L[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0x94 ; SFR 页 = F
位
名称
7:0
TMR4L[7:0]
功能
定时器 4 低字节。
在 16 位方式, TMR4L 寄存器保持 16 位定时器 4 的低字节。在 8 位方式, TMR4L
中保持 8 位低字节定时器的值。
291
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.23. TMR4H:定时器 4 高字节
位
7
6
5
4
3
名称
TMR4H[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0x95 ; SFR 页 = F
位
名称
7:0
TMR4H[7:0]
功能
定时器 4 高字节。
在 16 位方式, TMR4H 寄存器保持 16 位定时器 4 的高字节。在 8 位方式,
TMR4H 中保持 8 位高字节定时器的值。
??? 1.4
292
C8051F380/1/2/3/4/5/6/7/C
293
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
26.5. 定时器 5
定时器 5 是一个 16 位定时器,由两个 8 位的 SFR 组成:TMR5L (低字节)和 TMR5H (高字节)。定时
器 5 可以工作在 16 位自动重装载方式或 8 位自动重装载方式(两个 8 位定时器)。T5SPLIT 位 (TMR5CN.3)
定义定时器 5 的工作方式。
定时器 5 的时钟源可以是系统时钟、系统时钟 /12 或外部振荡源 /8。注意,外部振荡源 /8 与系统时钟同步。
26.5.1. 16 位自动重装载方式
当 T5SPLIT 位 (TMR5CN.3) 为 0 时,定时器 5 工作在自动重装载的 16 位定时器方式(见图 26.14)。定时
器 5 可以使用 SYSCLK、 SYSCLK/12 或外部振荡器时钟 /8 作为其时钟源。当 16 位定时器寄存器向上计数
并发生溢出 (从 0xFFFF 到 0x0000)时,定时器 5 重载寄存器 (TMR5RLH 和 TMR5RLL)中的 16 位计
数初值被自动装入到定时器 5 寄存器,并将定时器 5 高字节溢出标志 TF5H (TMR5CN.7) 置 1。如果定时器
5 中断被允许 (如果 EIE1.7 被置 1),则每次定时器 5 溢出都将产生中断。如果定时器 5 中断被允许并且
TF5LEN 位 (TMR5CN.5) 被置 1,则每次低 8 位 (TMR5L) 溢出时 (从 0xFF 到 0x00)将产生中断。
C KC ON1
TT T T
55 4 4
MMMM
HL HL
T5 XC LK
SY SC L K / 1 2
0
外部 时钟 / 8
1
去 A DC
0
T CLK
TMR5 L
TMR 5 H
TM R 5C N
SY SC LK
TR5
1
TF5H
TF5 L
TF5 LEN
T5C E
T5SPL IT
TR5
T5C SS
T5 XCL K
中断
TMR 5 R LL TM R5 R LH
重装载
图 26.14. 定时器 5 的 16 位方式原理框图
??? 1.4
293
C8051F380/1/2/3/4/5/6/7/C
26.5.2. 8 位自动重装载定时器
当 T5SPLIT 位 (TMR5CN.3) 为 1 且 T5CE = 0 时,定时器 5 工作在双 8 位定时器方式(TMR5H 和 TMR5L)。
两个 8 位定时器 TMR5H 和 TMR5L 都工作在自动重装载方式(见图 26.15)。TMR5RLL 保持 TMR5L 的重
载值,而 TMR5RLH 保持 TMR5H 的重载值。 TMR5CN 中的 TR5 是 TMR5H 的运行控制位。当定时器 5 被
配置为 8 位方式时, TMR5L 总是处于运行状态。
每个 8 位定时器都可以被配置为使用 SYSCLK、SYSCLK/12 或外部振荡器时钟 /8 作为其时钟源。定时器 5
时钟选择位 (CKCON1 中的 T5MH 和 T5ML)选择 SYSCLK 或由定时器 5 外部时钟选择位 (TMR5CN 中
的 T5XCLK)定义的时钟源。时钟源的选择情况如下所示。 :
T5MH
T5XCLK
0
0
1
0
1
X
TMR5H 时钟源
SYSCLK/12
外部时钟 /8
SYSCLK
T5ML
T5XCLK
0
0
1
0
1
X
TMR5L 时钟源
SYSCLK/12
外部时钟 /8
SYSCLK
当 TMR5H 发生溢出时 (从 0xFF 到 0x00), TF5H 被置 1 ;当 TMR5L 发生溢出时 (从 0xFF 到 0x00),
TF5L 被置 1。如果定时器 5 中断被允许,则每次 TMR5H 溢出时都将产生中断。如果定时器 5 中断被允许
并且 TF5LEN 位 (TMR5CN.5) 被置 1,则每当 TMR5L 或 TMR5H 发生溢出时都将产生中断。在 TF5LEN 位
被使能的情况下,软件必须检查 TF5H 和 TF5L 标志,以确定中断的来源。 TF5H 和 TF5L 标志不能被硬件
自动清除,必须通过软件清除。
C K CON 1
TTTT
5 5 4 4
MMMM
H LH L
T5 X CL K
SY SC LK / 1 2
TM R 5R L H
重装 载
0
去 AD C
0
外 部时钟 / 8
1
TC LK
TR 5
TMR 5H
TMR 5 R LL
重装 载
S YSC L K
1
TC LK
TM R5 L
0
图 26.15. 定时器 5 的 8 位方式原理框图
294
??? 1.4
TM R5 C N
1
TF5 H
TF5L
TF5L EN
T5CE
T5 SPLIT
TR 5
T5CSS
T5XC LK
中断
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.24. TMR5N:定时器 5 控制寄存器
位
7
6
5
名称
TF5H
TF5L
TF5LEN
类型
R/W
R/W
R/W
复位
0
0
0
4
3
2
1
0
T5SPLIT
TR5
R
R/W
R/W
R
R/W
0
0
0
0
0
T5XCLK
SFR 地址 = 0xC8 ; SFR 页 = F ;可位寻址
位
名称
7
TF5H
功能
定时器 5 高字节溢出标志。
当定时器 5 高字节发生溢出时 (从 0xFF 到 0x00)由硬件置 1。在 16 位方式,当定
时器 5 发生从 0xFFFF 到 0x0000 的溢出时由硬件置 1。当定时器 5 中断被允许时,
该位置 1 将导致 CPU 转向定时器 5 的中断服务程序。该位不能由硬件自动清 0,必
须用软件清 0。
6
TF5L
定时器 5 低字节溢出标志。
当定时器 5 低字节发生溢出时 (从 0xFF 到 0x00)由硬件置 1。当定时器 5 中断被
允许并且 TF5LEN 位被设置为逻辑 1 时,该位置 1 将产生中断。 TF5L 在低字节溢出
时置 1,与定时器 5 的工作方式无关。该位不能由硬件自动清 0,必须用软件清 0。
5
TF5LEN
定时器 5 低字节中断允许。
该位置 1 将允许定时器 5 低字节中断。如果定时器 5 中断也被允许,则当定时器 5
低字节发生溢出时将产生中断。当定时器 5 工作在 16 位方式时,该位应被清 0。
4
3
未使用
T5SPLIT
读 = 0b ;写 = 忽略。
定时器 5 分割方式 (双 8 位)使能。
当该位被置 1 时,定时器 5 工作在双 8 位自动重装载定时器方式。
0:定时器 5 工作在 16 位自动重装载方式。
1:定时器 5 工作在双 8 位自动重装载方式。
2
TR5
定时器 5 运行控制。
通过将该位置 1 来使能定时器 5。在 8 位方式,该位仅使能 / 禁止 TMR5H, TMR5L
在分割方式总是被使能。
1
0
未使用
T5XCLK
读 = 0b ;写 = 忽略。
定时器 5 外部时钟选择。
该位选择定时器 5 的外部时钟源。但仍可用定时器 5 时钟选择位 (寄存器 CKCON1 中
的 T5MH 和 T5ML)在外部时钟和系统时钟之间作出选择。
0:定时器 5 时钟为系统时钟 /12。
1:定时器 5 时钟为外部时钟 /8 (与系统时钟同步)。
??? 1.4
295
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.25. TMR4RLL:定时器 5 重载寄存器低字节
位
7
6
5
4
3
名称
TMR5RLL[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xCA ; SFR 页 = F
位
7:0
名称
功能
TMR5RLL[7:0] 定时器 5 重载寄存器的低字节。
TMR5RLL 保持定时器 5 重载值的低字节。
SFR 定义 26.26. TMR5RLH:定时器 5 重载寄存器高字节
位
7
6
5
4
3
名称
TMR5RLH[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xCB ; SFR 页 = F
位
名称
功能
7:0 TMR5RLH[7:0] 定时器 5 重载寄存器的高字节。
TMR5RLH 保持定时器 5 重载值的高字节。
SFR 定义 26.27. TMR5L:定时器 5 低字节
位
7
6
5
4
3
名称
TMR5L[7:0]
类型
R/W
复位
0
0
0
0
0
SFR 地址 = 0xCC ; SFR 页 = F
位
名称
7:0
TMR5L[7:0]
功能
定时器 5 低字节。
在 16 位方式, TMR5L 寄存器保持 16 位定时器 5 的低字节。在 8 位方式, TMR5L
中保持 8 位低字节定时器的值。
296
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 26.28. TMR5H:定时器 5 高字节
位
7
6
5
4
3
名称
TMR5H[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
SFR 地址 = 0xCD ; SFR 页 = F
位
名称
7:0
TMR5H[7:0]
功能
定时器 5 高字节。
在 16 位方式, TMR5H 寄存器保持 16 位定时器 5 的高字节。在 8 位方式,
TMR5H 中保持 8 位高字节定时器的值。
??? 1.4
297
C8051F380/1/2/3/4/5/6/7/C
298
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
27. 可编程计数器阵列
可编程计数器阵列 (PCA0) 提供增强的定时器功能,与标准 8051 的计数器 / 定时器相比,它需要较少的 CPU
干预。 PCA 由一个专用的 16 位计数器 / 定时器和 5 个 16 位捕捉 / 比较模块组成。每个捕捉 / 比较模块有其
自己的 I/O 线 (CEXn),这些 I/O 线在被允许通过交叉开关连到端口 I/O。计数器 / 定时器由一个可编程的时基
信号驱动,时其信号可以在 6 个时钟源中选择:系统时钟、系统时钟 /4、系统时钟 /12、外部振荡器时钟 /8、
定时器 0 溢出或 ECI 输入引脚上的外部时钟信号。每个捕捉 / 比较模块都可被独立配置,有 6 种工作方式:
边沿触发捕捉、软件定时器、高速输出、频率输出、8 位 PWM 和 16 位 PWM(每种方式的描述见第 301 页
27.3. 节 “ 捕捉 / 比较模块 ” )。在使用实时时钟 (RTC) 功能时,外部振荡器提供。对 PCA 的配置和控制是
通过系统控制器的特殊功能寄存器来实现的。 PCA 的原理框图示于 图 27.1。
重要注意事项:PCA 的模块 4 可被用作看门狗定时器 (WDT),在系统复位后女柔 被使能为该方式。在看门
狗方式被使能时,对某些 PCA 寄存器的访问受到限制。详见第 27.4 章。
SY SCLK/12
SY SCLK/4
定时 器0溢出
E CI
SY SCLK
PCA
时钟
选择
电路
16位 计数 器/定 时器
外部 时钟 /8
捕捉 /比较
模块 0
捕捉/ 比较
模块 1
捕 捉/比 较
模块 2
捕捉 /比较
模块 3
捕捉/ 比较
模块 4 /WDT
C EX4
C EX3
C EX2
C EX1
C EX0
ECI
交叉开关
端口 I/O
图 27.1. PCA 原理框图
??? 1.4
298
C8051F380/1/2/3/4/5/6/7/C
27.1. PCA 计数器 / 定时器
16- 位的 PCA 计数器 / 定时器由两个 8 位的 SFR 组成:PCA0L 和 PCA0H。 PCA0H 是 16 位计数器 / 定时
器的高字节 (MSB), 而 PCA0L 是低字节 (LSB)。在读 PCAOL 时,PCA0H 的值被自动锁存到 “ 快照寄存器
”,随后读 PCA0H 时将访问这个 “ 快照寄存器 ” 而不是 PCA0H 本身。先读 PCA0L 寄存器可以保证正确读
取整个 16 位 PCA0 计数器的值。 读 PCA0H 或 PCA0L 不影响计数器工作。 PCA0MD 寄存器中的 CPS2–
CPS0 位用于选择 PCA 计数器 / 定时器的时基,如表 27.1 所示。
当计数器 / 定时器溢出时 (从 0xFFFF 到 0x0000), PCA0MD 中的计数器溢出标志 (CF) 被置为逻辑 1 并
产生一个中断请求 (如果 CF 中断被允许)。将 PCA0MD 中 ECF 位设置为逻辑 1 即可允许 CF 标志产生中
断请求。当 CPU 转向中断服务程序时, CF 位不能被硬件自动清除,必须用软件清除。清除 PCA0MD 寄存
器中的 CIDL 位将允许 PCA 在 CPU 处于空闲方式时继续正常工作。
表 27.1. PCA 时基输入选项
CPS2
0
0
0
0
1
1
1
注:
CPS1
0
0
1
1
0
0
1
时间基准
系统时钟 /12
系统时钟 /4
定时器 0 溢出
ECI 下降沿 (最大速率 = 系统时钟频率 /4)
系统时钟
外部振荡器 /8*
保留
CPS0
0
1
0
1
0
1
x
外部振荡器 /8 与系统时钟同步。
IDLE
PCA 0MD
CW
I D
D T
L E
W
D
L
C
K
C
P
S
2
C
P
S
1
C E
P C
S F
0
PCA 0CN
CC
F R
C
C
F
4
C
C
F
3
C
C
F
2
C
C
F
1
C
C
F
0
去 SFR 总线
读PCA0L
快照
寄存器
SYSCLK/12
SYSCLK/4
定时器 0 溢出
ECI
SYSCLK
外部时钟/8
000
001
010
0
011
1
PCA0H
PCA0L
去 PCA 中断系统
CF
100
101
去 P CA 模块
图 27.2. PCA 计数器 / 定时器原理框图
299
溢出
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
27.2. PCA0 中断源
图 27.3 给出了 PCA 中断树的原理框图。有 6 个独立的事件标志可用于产生 PCA0 中断。它们是:主
pcauto.com.cn 计数器溢出标志 (CF),该标志在 16 位 PCA0 计数器溢出时置 1,以及每个 PCA 通道的独立
标志位 (CCF0, CCF1, CCF2, CCF3 和 CCF4),这些标志根据对应模块的工作方式被置 1。当触发条
件发生时,这些事件标志被置 1. 通过使用相应的中断允许位 (ECF 对应 CF, ECCFn 对应每个 CCFn)来
选择要产生 PCA0 中断的每个标志。要想使任何一个独立的中断源能被处理器识别,必须先总体允许 PCA0
中断。
n =0~ 4
PCA 0CP Mn
P E C CM T P E
W C A AA O W C
M OP P TGM C
1 MP N n n n F
6 nn n
n
n
CC
F R
PC A0C N
CCCC
CCCC
FF F F
43 2 1
C
C
F
0
P CA 0M D
C WW C C C E
I DD PP PC
D TL SS S F
L EC 2 1 0
K
0
PCA 计数器/
定时器溢出
1
ECCF0
EPCA0
0
PCA 模块 0
(CCF 0)
1
ECCF1
EA
0
0
1
1
中断
优先级
译码器
0
PCA 模块 1
(CCF 1)
1
ECCF2
0
PCA 模块 2
(CCF 2)
1
ECCF3
0
PCA 模块 3
(CCF 3)
1
ECCF4
PCA 模块 4
(CCF 4)
0
1
图 27.3. PCA 中断原理框图
??? 1.4
300
C8051F380/1/2/3/4/5/6/7/C
27.3. 捕捉 / 比较模块
每个模块都可被配置为独立工作,有 6 种工作方式:边沿触发捕捉、软件定时器、高速输出、频率输出、
8 位脉宽调制器和 16 位脉宽调制器。每个模块在 CIP-51 系统控制器中都有属于自己的特殊功能寄存器
(SFR),这些寄存器用于配置模块的工作方式和与模块交换数据。表 27.2 概述了模块工作在不同方式时、
PCA0CPMn 寄存器各位的设置情况。置 ‘1’PCA0CPMn 寄存器中的 ECCFn 位将允许模块的 CCFn 中断。
表 27.2. PCA 捕捉 / 比较模块的 PCA0CPM 寄存器位设置
工作方式
PCA0CPMn
位号 7
X
X
X
X
X
X
0
1
用 CEXn 的正沿触发捕捉
用 CEXn 的负沿触发捕捉
用 CEXn 的任一边沿触发捕捉
软件定时器
高速输出
频率输出
8 位脉冲宽度调制器
16 位脉冲宽度调制器
6 5 4 3 2 1 0
X 1 0 0 0 0 A
X 0 1 0 0 0 A
X 1 1 0 0 0 A
B 0 0 1 0 0 A
B 0 0 1 1 0 A
B 0 0 0 1 1 A
B 0 0 C 0 1 A
B 0 0 C 0 1 A
注:
1. X = 任意值 (对每个单独的模块而言,该位为 1 或为 0 没有功能差别)。
2. A = 使能该模块的中断 (CCFn 被置 1 时触发 PCA 中断)。
3. B = 当被设置为 0 时,数字比较器不工作。对于高速和频率输出方式,相关引脚的电平不发生切换。在任何一
种 PWM 方式,将产生 0% 的占空比 (输出 =0)。
4. C = 被置 1 时,一个匹配事件会导致相关通道的 CCFn 标志被置 1。
301
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
27.3.1. 边沿触发的捕捉方式
在该方式, CEXn 引脚上出现的有效电平跳变导致 PCA 捕捉 PCA 计数器 / 定时器的值并将其装入到对应模
块的 16 位捕捉 / 比较寄存器 (PCA0CPLn 和 PCA0CPHn)。 PCA0CPMn 寄存器中的 CAPPn 和 CAPNn
位用于选择触发捕捉的电平变化类型:低电平到高电平 (正沿)、高电平到低电平 (负沿)或任何变化 (正
沿或负沿)。当捕捉发生时,PCA0CN 可的捕捉 / 比较标志 (CCFn) 被置为逻辑 1. 如果该模块的 CCFn 中断
被允许,将产生一个中断请求。当 CPU 转向中断服务程序时, CCFn 位不位被硬件自动清除,必须用软件
清 0. 如果 CAPPn 和 CAPNn 位都被置为逻辑 1,则可以通过直接读 CEXn 对应端口引脚的状态来确定本次
捕捉是由上升沿触发还是由下降沿触发。
PCA 中断
PCA0CPMn
PCA0CN
P E
WC
MC
nF
n
ECC
CAA
O P P
MPN
n n n
MT
AO
TG
n n
0
0 0 0 x
C C
F R
0
端口 I/O
交叉开关
CEX n
C
C
F
4
C
C
F
3
C
C
F
2
C
C
F
1
(去 CCFn)
P
W
M
1
6
n
x
1
C
C
F
0
PCA0CPLn
PCA0CPH n
捕捉
0
1
PCA
时基
PCA 0L
PCA0H
图 27.4. PCA 捕捉方式原理框图
注:
CEXn 输入信号必须在高电平或低电平期间至少保持两个系统时钟周期,以保证能够被硬件识别。
??? 1.4
302
C8051F380/1/2/3/4/5/6/7/C
27.3.2. 软件定时器 (比较)方式
在软件定时器方式, PCA 将计数器 / 定时器的值与模块的 16 位捕捉 / 比较寄存器 (PCA0CPHn 和
PCA0CPLn)进行比较。当发生匹配时, PCA0CN 中的捕捉 / 比较标志 (CCFn) 被置为逻辑 1。如果该模块
的 CCFn 中断被允许,将产生一个中断请求。当 CPU 转向中断服务程序时,CCFn 位不能被硬件自动清除,
必须用软件清 0。置位 PCA0CPMn 寄存器中的 ECOMn 和 MATn 位将使能软件定时器方式。
关于捕捉 / 比较寄存器的重要注意事项: 当向 PCA0 的捕捉 / 比较寄存器写入一个 16 位数值时,应先写低
字节。向 PCA0CPLn 的定入操作将 ECOMn 位清 0 ;向 PCA0CPHn 写入时将 ECOMn 位置 1。
写 PCA 0CPLn
0
ENB
复位
写 PCA0CPHn
PCA 中断
ENB
1
PCA0CPMn
P E C C MT P E
W C AAAOWC
MOP PT GMC
1 MP N n n n F
6 n n n
n
n
x 0 0 0 0 x
PCA0CN
PCA0CPLn
使能
PCA0CPHn
16位比较器
PCA 时基
PCA0L
PCA0H
图 27.5. PCA 软件定时器方式原理框图
303
??? 1.4
CC
F R
匹配
C
C
F
4
0
1
CC
CC
F F
3 2
C
C
F
1
C
C
F
0
C8051F380/1/2/3/4/5/6/7/C
27.3.3. 高速输出方式
在高速输出方式,每当 PCA 计数器与模块的 16 位捕捉 / 比较寄存器(PCA0CPHn 和 PCA0CPLn)发生匹
配时,模块的 CEXn 引脚上的逻辑电平将发生切换。当发生匹配时, PCA0CN 中的捕捉 / 比较标志 (CCFn)
被置为逻辑 1。如果该模块的 CCFn 中断被允许,将产生一个中断请求。当 CPU 转向中断服务程序时,CCFn
位不能被硬件自动清除,必须用软件清 0。置位 PCA0CPMn 寄存器中的 TOGn、 MATn 和 ECOMn 位将使
能高速输出方式。如果 ECOMn 被清 0,则模块的 CEXn 引脚将保持其状态,在下一个匹配事件到来时不会
发生电平切换。
关于捕捉 / 比较寄存器的重要注意事项: 当向 PCA0 的捕捉 / 比较寄存器写入一个 16 位数值时,应先写低
字节。向 PCA0CPLn 的写入操作将 ECOMn 位清 0 ;向 PCA0CPHn 写入时将 ECOMn 位置 1。
写 PCA0CPLn
0
E NB
复位
PCA 0CPMn
写 PCA0CPHn
P E CCMT P
W CAA AOW
M O P P TG M
1 M PN n n n
6 n n n
n
x
0 0
0
E NB
1
E
C
C
F
n
x
PCA 中断
PCA0CN
PCA 0CPLn
使能
C C
F R
PCA0CPH n
16 位比较器
匹配
C
C
F
4
C
C
F
3
C
C
F
0
0
TO G n
0
1
PCA0L
C
C
F
1
1
电平切换
PCA 时基
C
C
F
2
CEX n
交叉开关
端口 I/O
PCA0H
图 27.6. PCA 高速输出方式原理框图
??? 1.4
304
C8051F380/1/2/3/4/5/6/7/C
27.3.4. 频率输出方式
频率输出方式在模块的相关 CEXn 引脚产生可编程频率的方波。捕捉 / 比较模块的高字节保持输出电平改变
前要计的 PCA 时钟数。所产生的方波的频率由方程 27.1 定义:
F
PCA
F CEXn = ------------------------------------------2  PCA0CPHn
注: 对于该方程, PCA0CPHn 判断对话框看到中的值为 0x00 时,相当于 256。
方程 27.1. 方波输出频率
其中:FPCA 就由 PCA 方式寄存器 PCA0MD 中的 CPS2–0 位选择的 PCA 时钟的频率。捕捉 / 比较模块的
低字节与 PCA 计数器的低字节比较;两者匹配时,CEXn 的电平发生翻转,高字节中的低移值与 PCA0CPLn
中的匹配值相加。通过将 PCA0CPMn 寄存器中 ECOMn、TOGn 和 PWMn 位置 1 来使能频率输出方式。注
意:在该方式, MATn 一般应被设置为 0。如果 MATn 被设置为 1,则当 16 位 PCA0 计数器与通道的 16 位
捕捉比较寄存器相等时,该通道的 CCFn 标志被置 1。
写 P CA0CPLn
0
ENB
复位
写 P CA0CP Hn
ENB
1
PC A0C PMn
P E C CM T P E
W C A A A OW C
MO P P T G M C
1 MP N n n n F
6 n nn
n
n
x
0 0 0
P CA0 C PLn
8位 加法器
翻转
x
使能
PCA 时基
8位 比较器
匹配
P CA0 L
图 27.7. PCA 频率输出方式原理框图
305
PC A0 C PH n
加 法器
使能
??? 1.4
TOGn
0 CEXn
1
交叉开关
端口 I/O
C8051F380/1/2/3/4/5/6/7/C
27.3.5. 8 位脉宽调制器方式
在 8 位 PWM 方式,PWM 输出信号的占空比用模块的 pca0cpln 捕捉 / 比较寄存器来改变。当 PCA 计数器 /
定时器的低字节 (PCA0L) PCA0CPLn 中的值相等时,CEXn 引脚上的输出被置 1 ;当 PCA0L 举出时,CEXn
输出被复位 (见图 27.8)。当计数器 / 定时器的低字节 (PCA0L) 溢出时 (从 0xFF 到 0x00), PCA0CPLn
被自动重装到模块的捕捉/比较高字节(PCA0CPHn),不需软件干预。通过将PCA0CPMn寄存器中的ECOMn
和 PWMn 位置 1 来使能 8 位脉冲宽度调制器方式。如果 MATn 被置 1,则每当发生一次 8 位比较器匹配时
(上升沿),相应模块的 CCFn 标志被置 1。 8 位 PWM 方式的占空比由方程 27.2 给出。
关于捕捉 / 比较寄存器的重要注意事项: 当向 PCA0 的捕捉 / 比较寄存器写入一个 16 位数值时,应先写低
字节。向 PCA0CPLn 写入时将 ECOMn 位清 0 ;向 PCA0CPHn 写入时将 ECOMn 位置 1。
 256 – PCA0CPHn 
??? = ------------------------------------------------------256
方程 27.2. 16 位 PWM 占空比
由方程 27.2 可知,最大占空比为 100% (PCA0CPHn = 0),最小占空比为 0.39% (PCA0CPHn = 0xFF)。可
以通过将 ECOMn 位清 0 来产生 0% 的占空比。
写 PCA0CPL n
0
P CA 0 CPH n
ENB
复位
写 PC A0C PHn
ENB
1
PC A0 CP Mn
P E C CM T P E
W C A A A OW C
MO P P T G MC
1 MPNn n n F
6 n n n
n
n
0
0 0 x 0
PC A 0CP Ln
x
允许
匹配
8 位比较 器
S
R
PCA 时 基
PC A0L
SET
CLR
Q
CEXn
交叉 开关
端口 I/O
Q
溢出
图 27.8. PCA 的 8 位 PWM 方式原理框图
??? 1.4
306
C8051F380/1/2/3/4/5/6/7/C
27.3.6. 16 位脉宽调制器方式
PCA 模块还可以工作在 16 位 PWM 方式。在该方式下,16 位捕捉 / 比较模块定义 PWM 信号低电平时间的
PCA 计数器与模块的内容一致时, CEXn 的输出被置为高电平;当 16 位计数器溢出时, CEXn 输出被置为
低电平。为了输出一个占空比可变的波形,新值的写入应与 PCA 的 CCFn 匹配中断同步。通过将 PCA0CPMn
寄存器中的 ECOMn、PWMn 和 PWM16n 位置 1 来使能 16 位 PWM 方式。为了得到可变的占空比,应允许
匹配中断 (ECCFn = 1 并且 MATn = 1),以帮助对捕捉 / 的写操作同步。如果 MATn 被置 1,则每当发生一
次 16 位比较器匹配时 (上升沿),模块的 CCFn 标志被置 1。 PCA0CN 的 CF 标志可用于检测溢出 (下降
沿)。 16 位 PWM 方式的占空比由方程 27.3 给出。
关于捕捉 / 比较寄存器的重要注意事项: 当向 PCA0 的捕捉 / 比较寄存器写入一个 16 位数值时,应先写低
字节。向 PCA0CPLn 写入时将 ECOMn 位清 0 ;向 PCA0CPHn 写入时将 ECOMn 位置 1。
 65536 – PCA0CPn 
??? = --------------------------------------------------------65536
方程 27.3. 16 位 PWM 占空比
由方程 27.3 可知,最大占空比为 100% (PCA0CPn = 0),最小占空比为 0.0015% (PCA0CPn = 0xFFFF)。
可以通过将 ECOMn 位清 0 来产生 0% 的占空比。
写PCA0CPLn
0
ENB
复位
写 PCA0CPHn
ENB
1
P
W
M
1
6
n
1
PC A0 C PM n
E C C MT P E
C AAAOWC
OP PT GM C
MP N n n n F
n n n
n
0 0 x 0
PCA 0 CPH n
PC A0 C PL n
x
允许
匹配
1 6 位比 较器
S
R
PCA 时基
PC A0 H
PC A0 L
S ET
CLR
Q
Q
溢出
图 27.9. PCA 的 16 位 PWM 方式原理框图
307
??? 1.4
C EXn
交叉 开关
端 口 I/O
C8051F380/1/2/3/4/5/6/7/C
27.4. 看门狗定时器方式
通过 PCA 的模块 4 可以实现可编程看门狗定时器 (WDT) 功能。如果两次对 WDT 更新寄存器 (PCA0CPH4)
的写操作相隔的时间超过规定的极限,WDT 将产生一次复位。可以根据需要用软件配置和使能 / 禁止 WDT。
当 PCA0MD 寄存器中的 WDTE 位被置 1 时,模块 4 被作为看门狗定时器 (WDT) 使用。模块 4 高字节与
PCA 计数器的高字节比较;模块 4 低字节保持执行 WDT 更新时要使用的偏移值。看门狗定时器在系统复位
后被使能。在看门狗定时器被使能时,对某些 PCA 寄存器的写操作受到限制。WDT 会在程序开始执行后很
短时间就产生复位。为了避免这种复位, WDT 应被显式禁止 (如果需要在系统中使用,可以重新配置和使
能 WDT)。
27.4.1. 看门狗定时器操作
当 WDT 被使能时:

PCA 计数器被强制运行。

不允许写 PCA0L 和 PCA0H。

PCA 时钟源选择位 (CPS2–CPS0) 被冻结。

PCA 空闲控制位 (CIDL) 被冻结。

模块 4 被强制进行软件定时器方式。

对模块 4 方式寄存器 (PCA0CPM4) 的写操作被禁止。
当 WDT 被使能时,写 CR 位并不改变 PCA 计数器的状态;计数器将一直保持运行状态,直到 WDT 被禁
止。如果 WDT 被使能,但用户软件没有使能 PCA 计数器,则读 PCA 运行控制 (CR) 位时将返回 0。如果
在 WDT 被使能时 PCA0CPH4 与 PCA0H 发生匹配,则会产生系统复位。为了防止 WDT 复位,需要通过向
PCA0CPH4 写入任意值为更新 WDT。在写 PCA0CPH4 时,PCA0H 的值加上 PCA0CPL4 中保存的偏移值
后被装入到 PCA0CPH4 ( 见图 27.10)。
PC A0MD
CW
I D
D T
LE
W
D
L
C
K
C
P
S
2
C
P
S
1
C E
P C
S F
0
PCA0C PH4
使能
PC A0CPL 4
写 PCA0CPH4
8 位加法 器
8 位比较器
匹配
PC A0H
复位
PCA0 L 溢出
加法器
使能
图 27.10. PCA 模块 4 的看门狗定时器方式
保存在 PCA0CPH4 中的 8 位偏移值与 16 位 PCA 计数器的高字节进行比较,该偏移值是复位前 PCA0L 的
溢出次数。 PCA0L 的第一次溢出周期取决于进行更新操作时 PCA0L 的值,最长可达 256 个 PCA 时钟。总
??? 1.4
308
C8051F380/1/2/3/4/5/6/7/C
偏移值 (PCA 时钟数)由方程 27.4 给出,其中 PCA0L 是执行更新操作时 PCA0L 寄存器的值。 .
??? =  256  PCA0CPL4  +  256 – PCA0L 
方程 27.4. 看门狗定时器偏移值 (PCA 时钟数)
当 PCA0L 发生溢出并且 PCA0CPH4 和 PCA0H 匹配时,WDT 将产生一次复位。在 WDT 被使能的情况下,
软件可以通过向 CCF4 标志 (PCA0CN.4) 写 1 来强制产生 WDT 复位。
27.4.2. 看门狗定时器的使用
配置 WDT 的步骤如下:
1. 通过向 WDTE 位写 0 来禁止 WDT。
2. 选择所希望的 PCA 时钟源 (用 CPS2–CPS0 位 )。
3. 向 PCA0CPL4 装入所希望的 WDT 更新偏移值。
4. 配置 PCA 的空闲方式位 (如果希望在 CPU 处于空闲方式时 WDT 停止工作,则应将 CIDL 位置 1)。
5. 通过向 WDTE 位写 1 来使能 WDT。
6. 通过写 PCA0CPH4 来复位 WDT 定时器。
在 WDT 被使能时,不能改变 PCA 时钟源和空闲方式的设置值。通过向 PCA0MD 寄存器的 WDTE 或 WDLCK
位写 1 来使能 WDT。当 WDLCK 被置 1 时,在发生下一次系统复位之前将不能禁止 WDT。如果 WDCLK 未
被置 1,清除 WDTE 位将禁止 WDT。
WDT 在任何系统复位之后都被使能。 PCA0 计数器的默认时钟为系统时钟的十二分频 (SYSCLK/12) 。
PCA0L 和 PCA0CPL4 的默认值均为 0x00。根据方程 27.4,这些值将产生 256 个 PCA 时钟周期或 3072 个
系统时钟周期的 WDT 超时间隔。表 27.3 列出了对应某些典型系统时钟频率的超时间隔示例。
309
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
表 27.3. 看门狗定时器超时间隔 1
系统时钟 (Hz)
PCA0CPL4
超时间隔 (ms)
48,000,000
255
16.4
48,000,000
128
8.3
48,000,000
32
2.1
12,000,000
255
65.5
12,000,000
128
33.0
12,000,000
32
8.4
1,500,0002
255
524.3
1,500,0002
128
264.2
1,500,0002
32
67.6
32,768
255
24,000
32,768
128
12,094
32,768
32
3,094
注:
1. 假设 PCA 使用 SYSCLK/12 作为时钟源,更新时 PCA0L 的值为 0x00。
2. 内部 SYSCLK 复位频率 = 内部振荡器频率 /8。
??? 1.4
310
C8051F380/1/2/3/4/5/6/7/C
27.5. PCA0 寄存器说明
下面对与 PCA 工作有关的特殊功能寄存器进行详细说明。
SFR 定义 27.1. PCA0CN:PCA 控制寄存器
位
7
6
名称
CF
CR
类型
R/W
R/W
复位
0
0
5
4
3
2
1
0
CCF4
CCF3
CCF2
CCF1
CCF0
R
R/W
R/W
R/W
R/W
R/W
0
0
0
0
0
0
SFR 地址 = 0xD8 ; SFR 页 = 所有页;可位寻址
位
名称
7
CF
功能
PCA 计数器 / 定时器溢出标志。
当 PCA 计数器 / 定时器从 0xFFFF 到 0x0000 溢出时由硬件置 1。在计数器、定时器溢
出 (CF) 中断被允许时,该位置 1 将导致 CPU 转身 PCA 中断服务程序。该位不能由硬
件自动清 0,必须用软件清 0。
6
CR
PCA 计数器 / 定时器运行控制。
该位使能 / 禁止 PCA 计数器 / 定时器。
0:禁止 PCA 计数器 / 定时器。
1:使能 PCA 计数器 / 定时器。
5
2
未使用
CCF4
读 = 0b,写 = 忽略。
PCA 模块 4 捕捉 / 比较标志。
当发生一次匹配或捕捉时,该位由硬件置 1。当 CCF4 中断被允许时,该位置 1 将导致
CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0。
1
CCF3
PCA 模块 3 捕捉 / 比较标志。
当发生一次匹配或捕捉时,该位由硬件置 1。当 CCF3 中断被允许时,该位置 1 将导致
CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0。
2
CCF2
PCA 模块 2 捕捉 / 比较标志。
当发生一次匹配或捕捉时,该位由硬件置 1。当 CCF2 中断被允许时,该位置 1 将导致
CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0。
1
CCF1
PCA 模块 1 捕捉 / 比较标志。
当发生一次匹配或捕捉时,该位由硬件置 1。当 CCF1 中断被允许时,该位置 1 将导致
CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0。
0
CCF0
PCA 模块 0 捕捉 / 比较标志。
当发生一次匹配或捕捉时,该位由硬件置 1。当 CCF0 中断被允许时,该位置 1 将导致
CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0。
311
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 27.2. PCA0MD:PCA 方式寄存器
位
7
6
5
名称
CIDL
WDTE
WDLCK
类型
R/W
R/W
R/W
R
复位
0
1
0
0
4
3
2
1
0
CPS[2:0]
ECF
R/W
R/W
0
0
0
0
SFR 地址 = 0xD9 ; SFR 页 = 所有页
位
名称
7
CIDL
功能
PCA 计数器 / 定时器空闲控制。
设置 PCA 空闲方式下 CPU 的行为。
0:当系统控制器处于空闲方式时, PCA 继续正常工作。
1:当系统控制器处于空闲方式时, PCA 停止工作。
看门狗定时器使能。
如果该位被置 1, PCA 模块 4 被用作看门狗定时器。
0:看门狗定时器被禁止。
1:PCA 模块 4 被用作看门狗定时器。
6
WDTE
5
WDLCK
4
未使用 读 = 0b,写 = 忽略。
CPS[2:0] PCA 计数器 / 定时器时钟选择。
3:1
看门狗定时器锁定。
该位对看门狗定时器使能位锁定 / 解锁。 WDLCK 被置 1 时,在发生下一次系统复位之
前将不能禁止 WDT。
0:看门狗定时器使能位未锁定。
1:看门狗定时器使能位被锁定。
这些位选择 PCA 计数器的时钟源。
000:系统时钟 /12
001:系统时钟 /4
010:定时器 0 溢出
011:ECI 下降沿 (最大速率 = 系统时钟频率 /4)
100:系统时钟
101:外部时钟 /8 (与系统时钟同步)
11x:保留。
0
ECF
PCA 计数器 / 定时器溢出中断允许。
该位是 PCA 计数器 / 定时器溢出 (CF) 中断的屏蔽位。
0:禁止 CF 中断。
1:当 CF (PCA0CN.7) 被置 1 时,允许 PCA 计数器 / 定时器溢出中断请求。
注:
当 WDTE 位被置 1 时,不能改变 PCA0MD 寄存器的其它位。若要改变 PCA0MD 的内容,必须先禁止看门狗
定时器。
??? 1.4
312
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 27.3. PCA0CPMn:PCA 捕捉 / 比较方式寄存器
位
7
6
5
4
3
2
1
0
名称
PWM16n
ECOMn
CAPPn
CAPNn
MATn
TOGn
PWMn
ECCFn
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址:0xDA (n = 0), 0xDB (n = 1), 0xDC (n = 2), 0xDD (n = 3), 0xDE (n = 4)
SFR 页:所有页 (n = 0),所有页 (n = 1),所有页 (n = 2),所有页 (n = 3),所有页 (n = 4)
位
7
名称
功能
PWM16n 16 位脉冲宽度调制使能。
当脉冲宽度调制方式被使能时,该位选择 16 位方式。
0:选择 8 位 PWM。
1:选择 16 位 PWM。
6
ECOMn
比较器功能使能。
该位置 1 时使能 PCA 模块 n 的比较器功能。
5
CAPPn
正沿捕捉功能使能。
该位置 1 时使能 PCA 模块 n 的正边沿捕捉。
4
CAPNn
负沿捕捉功能使能。
该位置 1 时使能 PCA 模块 n 的负边沿捕捉。
3
MATn
匹配功能使能。
该位置 1 时使能 PCA 模块 n 的匹配功能。如果被使能,当 PCA 计数器与一个模块的捕
捉 / 比较寄存器匹配时, PCA0MD 寄存器中的 CCFn 位被置为逻辑 1。
2
TOGn
电平切换功能使能。
该位置 1 时使能 PCA 模块 n 的电平切换功能。如果被使能,当 PCA 计数器与一个模块
的捕捉 / 比较寄存器匹配时, CEXn 引脚的逻辑电平发生切换。如果 PWMn 位也被置
1,模块将工作在频率输出方式。
1
PWMn
脉宽调制方式使能。
该位置 1 时使能 PCA 模块 n 的 PWM 功能。如果被使能,当 CEXn 引脚输出脉冲宽度
调制信号。 PWM16n 为 0 时使用 8 位 PWM 方式; PWM16n 为 1 时使用 16 位方式。
如果 TOGn 位也被置 1,则模块工作在频率输出方式。
0
ECCFn
捕捉 / 比较标志中断允许。
该位置捕捉 / 比较标志 (CCFn) 的中断屏蔽。
0:禁止 CCFn 中断。
1:允许 CCFn 位被置 1 时捕捉 / 比较标志的中断请求。
注:
313
当 WDTE 位被置 1 时,不能修改 PCA0CPM4 寄存器,模块 4 工作在看门狗定时器方式。若要改变
PCA0CPM4 寄存器的内容或模块 4 的功能,必须先禁止看门狗定时器。
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 27.4. PCA0L:PCA 计数器 / 定时器低字节
位
7
6
5
4
3
2
1
0
PCA0[7:0]
名称
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xF9 ; SFR 页 = 所有页
位
7:0
名称
功能
PCA0[7:0] PCA 计数器 / 定时器的低字节。
PCA0L 寄存器保存 16 位 PCA 计数器 / 定时器的低字节 (LSB)
注:
当 WDTE 位被置 1 时,不能用软件修改 PCA0L 寄存器。若要改变 PCA0L 寄存器的内容,必须先禁止看门狗
定时器。
SFR 定义 27.5. PCA0H:PCA 计数器 / 定时器高字节
位
7
6
5
4
3
2
1
0
PCA0[15:8]
名称
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址 = 0xFA ; SFR 页 = 所有页
位
7:0
名称
功能
PCA0[15:8] PCA 计数器 / 定时器的高字节。
PCA0H 寄存器保存 16 位 PCA 计数器 / 定时器的高字节 (MSB)。读该寄存器时读的是
“ 快照 ” 寄存器的内容,是在读 PCA0L 的内容时被锁存的 (见第 27.1 章)。
注:
当 WDTE 位被置 1 时,不能用软件修改 PCA0H 寄存器。若要改变 PCA0H 寄存器的内容,必须先禁止看门
狗定时器。
??? 1.4
314
C8051F380/1/2/3/4/5/6/7/C
SFR 定义 27.6. PCA0CPLn:PCA 捕捉模块低字节
位
7
6
5
4
3
2
1
0
PCA0CPn[7:0]
名称
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址:0xFB (n = 0), 0xE9 (n = 1), 0xEB (n = 2), 0xED (n = 3), 0xFD (n = 4)
SFR 页:所有页 (n = 0),所有页 (n = 1),所有页 (n = 2),所有页 (n = 3),所有页 (n = 4)
位
7:0
名称
功能
PCA0CPn[7:0] PCA 捕捉模块低字节。
PCA0CPLn 寄存器保存 16 位捕捉模块 n 的低字节 (LSB)。
注:
写该寄存器时将模块的 ECOMn 位清 0。
SFR 定义 27.7. PCA0CPHn:PCA 捕捉模块高字节
位
7
6
5
4
3
2
1
0
PCA0CPn[15:8]
名称
类型
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位
0
0
0
0
0
0
0
0
SFR 地址:0xFC (n = 0), 0xEA (n = 1), 0xEC (n = 2), 0xEE (n = 3), 0xFE (n = 4)
SFR 页:所有页 (n = 0),所有页 (n = 1),所有页 (n = 2),所有页 (n = 3),所有页 (n = 4)
位
名称
功能
7:0 PCA0CPn[15:8] PCA 捕捉模块高字节。
PCA0CPHn 寄存器保存 16 位捕捉模块 n 的高字节 (MSB)。
注:
315
写该寄存器时将模块的 ECOMn 位置 1。
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
28. C2 接口
C8051F380/1/2/3/4/5/6/7/C 器件内部有一个 Silicon Labs 2 线 (C2) 调试接口,支持 FLASH 编程和使用安装
在最终应用系统中的器件进行在系统调试。C2 接口使用一个时钟信号 (C2CK) 和一个双向的的 C2 数据信号
(C2D) 在器件和宿主机之间传送信息。有关 C2 协议的详细信息见 C2 接口规范。
28.1. C2 接口寄存器
下面对通过 C2 接口进行 FLASH 编程所必须的 C2 寄存器进行说明。对所有 C2 寄存器的访问都要通过 C2
接口实现 (详见 C2 接口规范)。
C2 寄存器定义 28.1. C2ADD:C2 地址寄存器
位
7
6
5
4
3
名称
C2ADD[7:0]
类型
R/W
复位
位
0
0
0
0
名称
0
2
1
0
0
0
0
功能
7:0 C2ADD[7:0] C2 地址 .
C2ADD 寄存器通过 C2 接口访问,它选择 C2 数据读和数据写命令的目标数据寄存
器。
地址
0x00
0x01
0x02
0xAD
说明
选择器件 ID 寄存器 (数据读指令)。
选择版本 ID 寄存器 (数据读指令)。
选择 C2 Flash 编程控制寄存器 (数据读 / 写指令)
选择 C2 Flash 编程数据寄存器 (数据读 / 写指令)
??? 1.4
316
C8051F380/1/2/3/4/5/6/7/C
C2 寄存器定义 28.2. DEVICEID:C2 器件 ID 寄存器
位
7
6
5
4
3
名称
DEVICEID[7:0]
类型
R/W
复位
0
0
1
0
1
2
1
0
0
0
0
C2 地址:0x00
位
7:0
名称
功能
DEVICEID[7:0] 器件 ID.
该只读寄存器返回 8 位的器件 ID:0x28 (C8051F380/1/2/3/4/5/6/7/C).
C2 寄存器定义 28.3. REVID:C2 版本 ID 寄存器
位
7
6
5
4
3
名称
REVID[7:0]
类型
R/W
复位
可变
可变
可变
可变
可变
2
1
0
可变
可变
可变
C2 地址:0x01
位
7:0
名称
功能
REVID[7:0] 版本 ID.
该只读寄存器返回 8 位的版本 ID。例如:0x00 = 版本 A.
317
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
C2 寄存器定义 28.4. FPCTL:C2 Flash 编程控制寄存器
位
7
6
5
4
3
名称
FPCTL[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
C2 地址:0x02
位
7:0
名称
功能
FPCTL[7:0] C2 Flash 编程控制寄存器
该寄存器用于使能通过 C2 接口对 FLASH 编程。为了使能 C2 Flash 编程,必须按顺
序写代码:0x02, 0x01。注意:一旦 C2 Flash 编程被使能,必须进行一次复位才能使
系统恢复正常工作。
C2 寄存器定义 28.5. FPDAT:C2 Flash 编程数据寄存器
位
7
6
5
4
3
名称
FPDAT[7:0]
类型
R/W
复位
0
0
0
0
0
2
1
0
0
0
0
C2 地址:0xAD
位
7:0
名称
功能
FPDAT[7:0] C2 Flash 编程数据寄存器
该寄存器用于在 C2 Flash 访问期间传递 Flash 编程命令、地址和数据。下面列出了有
效的编程命令。
代码
0x06
0x07
0x08
0x03
命令
Flash 块读
Flash 块写
Flash 页擦除
器件擦除
??? 1.4
318
C8051F380/1/2/3/4/5/6/7/C
28.2. C2 引脚共享
C2 协议允许用户功能,可在系统调试和闪存编程的 C2 引脚共享。这是可能的,因为 C2 通信设备处于停止
状态,所有片上外设和用户软件陷入僵局时,通常执行。在此停止状态, C2 接口可以安全地 “ 借用 ”C2CK
(RST) 和 C2D 引脚。在大多数应用中,需要外部电阻隔离 C2 接口的流量,从用户应用程序。一个典型的隔
离配置如图 28.1 所示。
C8051Fxxx
RST (a)
C2CK
Input (b)
C2D
Output (c)
C2 Interface Master
图 28.1. 典型的 C2 引脚共享
在图 28.1 中的配置假设如下:
1. 用户输入 (b) 不能改变,而目标设备停止状态。
2. 目标设备上的 RST 引脚用作只能输入。
取决于具体的应用,可能需要额外的电阻。
319
??? 1.4
C8051F380/1/2/3/4/5/6/7/C
文档更改列表
修订版 0.2 至修订版 1.0

使用最新数据更新了电气特性表:表 4.2、表 4.4、表 4.5、表 4.7、表 4.8、表 4.10、表 4.11 和
表 4.12。

将 SFR 定义 8.1 中的位 REG01CN.5 更改为保留,并在 16.9 和 18.3.1 部分中更新了相应的说明。

更新了图 18.1。振荡器选项。

更改了 SFR 定义 21.2 中的 SFR 页。

更新了 SRF 定义 18.6 中对电容器 XOSCMD 和 RC 模式的说明。
修订版 1.0 至修订版 1.1

更新了封面上的图,以反映定时器的正确数量是 6 个而不是 4 个。

更新了见第 26 页上 “ 表 3.2 TQFP-48 封装尺寸 ” 具体如下所述:
将最右边的列名从最小值更正为最大值
添加了尺寸
A、 A1、 A2、 b、 c、 L 和 q 的最大值

使用正确的 QFN-32 封装图和尺寸更新了 Figure 3.8 和表 3.6。

使用 ADC0 电源电流新的最大值更新了见第 42 页上 “ 表 5.10 ADC0 电气特性 ” 。
这解决了 2012 年 5 月 18 日勘误表中的一个问题。

添加了关于温度传感器的第 6.2 章 。

删除了 “6. 10 位 ADC (ADC0 的,只有 C8051F380/1/2/3) ” 中可编程增益的参考。

更新了见第 112 页上 “ 表 15.1 特殊功能寄存器 (SFR) 存储器映象 ” 以填补 0xC8 行所缺失的行信息。

更新了见第 120 页上 “ 表 16.1 中断一览表 ”。 TMR4CN 寄存器不可位寻址。

更新了 SFR 定义 19.1 (CLKSEL) 中 CLKSL 位的 000b 值以包括四因子。
修订版 1.1 至修订版 1.2

更新的比较器输入补偿电压规格在第 44 页的表 5.13 内。
修订版 1.2 至修订版 1.3

添加 VBUS 至见第 37 页上 “ 表 5.1 极限参数 ”。

添加 “4. 典型连接图 ” 一章。

被删除的图 8.1、图 8.2、图 8.3 和图 8.4。这些图由以下的引用所代替 “4. 典型连接图 ” 一章。
修订版 1.3 至修订版 1.4

添加了新设备 C8051F38C。

更新了 “ 闪存耐久性 ” 的最低规格、 “ 闪存擦除周期时间 ” 的最高规格,并
为第 40 页的表 5.6 添加了一条注释。

更新了图 22.1,使其可显示 SMBus0 和 SMBus1 的正常时钟源。
??? 1.4
320
Simplicity Studio
One-click access to MCU and
wireless tools, documentation,
software, source code libraries &
more. Available for Windows,
Mac and Linux!
IoT Portfolio
www.silabs.com/IoT
SW/HW
Quality
Support and Community
www.silabs.com/simplicity
www.silabs.com/quality
community.silabs.com
Disclaimer
Silicon Laboratories intends to provide customers with the latest, accurate, and in-depth documentation of all peripherals and modules available for system and software implementers
using or intending to use the Silicon Laboratories products. Characterization data, available modules and peripherals, memory sizes and memory addresses refer to each specific
device, and "Typical" parameters provided can and do vary in different applications. Application examples described herein are for illustrative purposes only. Silicon Laboratories
reserves the right to make changes without further notice and limitation to product information, specifications, and descriptions herein, and does not give warranties as to the accuracy
or completeness of the included information. Silicon Laboratories shall have no liability for the consequences of use of the information supplied herein. This document does not imply
or express copyright licenses granted hereunder to design or fabricate any integrated circuits. The products must not be used within any Life Support System without the specific
written consent of Silicon Laboratories. A "Life Support System" is any product or system intended to support or sustain life and/or health, which, if it fails, can be reasonably expected
to result in significant personal injury or death. Silicon Laboratories products are generally not intended for military applications. Silicon Laboratories products shall under no
circumstances be used in weapons of mass destruction including (but not limited to) nuclear, biological or chemical weapons, or missiles capable of delivering such weapons.
Trademark Information
Silicon Laboratories Inc., Silicon Laboratories, Silicon Labs, SiLabs and the Silicon Labs logo, CMEMS®, EFM, EFM32, EFR, Energy Micro, Energy Micro logo and combinations
thereof, "the world’s most energy friendly microcontrollers", Ember®, EZLink®, EZMac®, EZRadio®, EZRadioPRO®, DSPLL®, ISOmodem ®, Precision32®, ProSLIC®, SiPHY®,
USBXpress® and others are trademarks or registered trademarks of Silicon Laboratories Inc. ARM, CORTEX, Cortex-M3 and THUMB are trademarks or registered trademarks of
ARM Holdings. Keil is a registered trademark of ARM Limited. All other products or brand names mentioned herein are trademarks of their respective holders.
Silicon Laboratories Inc.
400 West Cesar Chavez
Austin, TX 78701
USA
http://www.silabs.com