XC83x系列用户手册

8位
XC83x
8 位单片微控制器
用户手册
V1.1 2010-09
Microcontrollers
Edition 2010-09
Published by
Infineon Technologies AG
81726 Munich, Germany
© 2010 Infineon Technologies AG
All Rights Reserved.
Legal Disclaimer
The information given in this document shall in no event be regarded as a guarantee of conditions or
characteristics. With respect to any examples or hints given herein, any typical values stated herein and/or any
information regarding the application of the device, Infineon Technologies hereby disclaims any and all warranties
and liabilities of any kind, including without limitation, warranties of non-infringement of intellectual property rights
of any third party.
Information
For further information on technology, delivery terms and conditions and prices, please contact the nearest
Infineon Technologies Office (www.infineon.com).
Warnings
Due to technical requirements, components may contain dangerous substances. For information on the types in
question, please contact the nearest Infineon Technologies Office.
Infineon Technologies components may be used in life-support devices or systems only with the express written
approval of Infineon Technologies, if a failure of such components can reasonably be expected to cause the failure
of that life-support device or system or to affect the safety or effectiveness of that device or system. Life support
devices or systems are intended to be implanted in the human body or to support and/or maintain and sustain
and/or protect human life. If they fail, it is reasonable to assume that the health of the user or other persons may
be endangered.
8位
XC83x
8 位单片微控制器
用户手册
V1.1 2010-09
Microcontrollers
XC83x
XC83x 用户手册
版本信息: V1.1 2010-09
先前的版本:V1.0
页
1-3
内容 (对上一版本的主要修正)
4-7
将保存域 STx 更名为 MOD_STx。
删除 XC83x 的引脚配置和封装信息,相关信息可在数据手册中查找。
5-3, 7-11
读取 Flash 时需插入等待状态的个数 (1/0 个)和 CPU 的时钟频率有关。
22-2,
22-43
删除两次转换之间的建立时间,相关信息可在数据手册中查找。
22-20
在寄存器 ADC_CRMR1 中添加位域 ENGT 的描述。
24-25,
24-26
在图 24-6 和 24-7 中添加 LPF 增益。
24-39
更新图 24-10。
期待您的指正
本文档如有不当,错误以及遗漏指出,敬请批评指正,以便我们不断改进文档的质量。
请将您的建议 (以及相关资料发送至:
[email protected]
用户手册
V1.1, 2010-09
XC83x
1
1.1
1.2
1.3
1.4
1.5
1.6
简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1 [1]
XC83x 特性总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2 [1]
引脚定义及功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-3 [1]
芯片 ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-11 [1]
命名规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-12 [1]
保留位、未定义位及未实现位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-12 [1]
缩写 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-13 [1]
2
2.1
2.2
2.3
2.3.1
2.3.2
2.3.3
2.3.4
2.3.5
2.3.6
2.3.7
2.3.8
2.4
2.4.1
2.4.2
2.5
XC800 内核 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XC800 内核功能模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CPU SFR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
堆栈指针 (SP, 81H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
数据指针 (DPTR, 82-3H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
累加器 (ACC, E0H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B 寄存器 (F0H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
程序状态字 (PSW, D0H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
扩展操作寄存器 (EO, A2H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
功率控制寄存器 (PCON, 87H) . . . . . . . . . . . . . . . . . . . . . . . . . . .
中断寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
内核外设 SFR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
定时器寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UART 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
指令时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3.1
3.2
3.2.1
3.2.2
3.3
3.4
3.4.1
3.4.1.1
3.4.2
3.4.2.1
3.4.3
3.4.4
3.4.5
3.4.5.1
3.4.5.2
3.4.5.3
3.4.5.4
3.4.5.5
存储器结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 [1]
程序存储器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2 [1]
数据存储器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2 [1]
内部数据存储器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 [1]
外部数据存储器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 [1]
存储器保护策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4 [1]
特殊功能寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4 [1]
映射地址扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4 [1]
系统控制寄存器 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6 [1]
分页地址扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-7 [1]
分页寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-9 [1]
位寻址 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-10 [1]
位保护方案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-11 [1]
XC83x 寄存器概览 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-13 [1]
CPU 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-13 [1]
MDU 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-14 [1]
CORDIC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16 [1]
系统控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16 [1]
端口寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-19 [1]
用户手册
1
2-1 [1]
2-1 [1]
2-1 [1]
2-3 [1]
2-3 [1]
2-3 [1]
2-3 [1]
2-3 [1]
2-3 [1]
2-5 [1]
2-6 [1]
2-6 [1]
2-7 [1]
2-7 [1]
2-7 [1]
2-8 [1]
V1.1, 2010-09
XC83x
3.4.5.6
3.4.5.7
3.4.5.8
3.4.5.9
3.4.5.10
3.4.5.11
3.4.5.12
3.4.5.13
ADC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LEDSCU 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RTC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
定时器 T2 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CCU6 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SSC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IIC 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OCDS 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3-21 [1]
3-25 [1]
3-26 [1]
3-28 [1]
3-28 [1]
3-33 [1]
3-33 [1]
3-34 [1]
4
4.1
4.2
4.3
4.4
4.5
4.5.1
4.6
4.7
4.7.1
4.7.1.1
4.7.1.2
4.7.2
4.7.2.1
4.7.2.2
4.7.3
4.7.4
闪存存储器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 [1]
Flash 存储器地址映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 [1]
Flash Bank 分区 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3 [1]
字线地址 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5 [1]
工作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-9 [1]
检错和纠错 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-9 [1]
Flash 出错地址寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-11 [1]
在系统编程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-12 [1]
在应用编程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-13 [1]
Flash 编程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-14 [1]
非后台 Flash 编程子程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-14 [1]
后台 Flash 编程子程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-14 [1]
Flash 擦除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-14 [1]
非后台 Flash 擦除子程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15 [1]
后台 Flash 擦除子程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15 [1]
中止后台 Flash 擦除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15 [1]
Flash 读模式状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-17 [1]
5
5.1
5.2
5.2.1
5.2.2
5.2.3
5.2.4
5.2.4.1
Boot 及系统启动 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
用户 ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Boot ROM 工作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
用户模式 (量产) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
用户模式 (诊断) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
引导程序加载模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OCDS 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
备选用户 BSL 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5-1 [1]
5-2 [1]
5-4 [1]
5-4 [1]
5-4 [1]
5-4 [1]
5-4 [1]
5-4 [1]
6
6.1
6.1.1
6.1.2
6.2
6.2.1
6.2.1.1
6.2.1.2
UART 引导程序加载 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
阶段 I:和主机自动串行同步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BG 和 PRE 的计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
阶段 II:串行通信协议和模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
串行通信协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
传送块结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
传送块类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6-1 [1]
6-1 [1]
6-2 [1]
6-3 [1]
6-4 [1]
6-4 [1]
6-4 [1]
6-4 [1]
用户手册
2
V1.1, 2010-09
XC83x
6.2.1.3
6.2.2
6.2.2.1
6.2.2.2
6.2.2.3
6.2.2.4
6.2.2.5
6.2.2.6
6.2.2.7
6.2.2.8
返回主机的回应码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-5 [1]
工作模式选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-7 [1]
接收报文头块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-7 [1]
模式 0:将用户程序写入 XRAM . . . . . . . . . . . . . . . . . . . . . . . . . . 6-7 [1]
模式 1:执行 XRAM 中的用户程序 . . . . . . . . . . . . . . . . . . . . . . . 6-9 [1]
模式 2:将用户程序写入 FLASH . . . . . . . . . . . . . . . . . . . . . . . . . 6-9 [1]
模式 3:执行 FLASH 中的用户程序 . . . . . . . . . . . . . . . . . . . . . 6-11 [1]
模式 4:擦除 Flash 扇区中的用户程序 . . . . . . . . . . . . . . . . . . . 6-11 [1]
模式 6:设置 4 字节 USER_ID . . . . . . . . . . . . . . . . . . . . . . . . . 6-12 [1]
模式 A:获取 4 字节信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-12 [1]
7
7.1
7.1.1
7.1.2
7.2
7.2.1
7.2.1.1
7.2.1.2
7.2.1.3
7.2.1.4
7.2.1.5
7.2.2
7.2.3
7.3
7.3.1
7.3.2
7.3.3
7.3.4
7.4
7.4.1
7.4.1.1
7.4.1.2
7.4.1.3
7.4.2
7.5
系统控制单元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1 [1]
带有嵌入式电压调节器的电源系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1 [1]
低压工作条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-3 [1]
EVR 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-4 [1]
复位控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6 [1]
复位类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6 [1]
上电复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6 [1]
看门狗定时器复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6 [1]
软复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-7 [1]
掉电唤醒复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-7 [1]
欠压复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-7 [1]
模块复位行为 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-7 [1]
复位控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-9 [1]
时钟系统及控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-11 [1]
振荡器看门狗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-12 [1]
时钟丢失检测及恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-12 [1]
32.768 kHz 振荡器时钟的启动控制 . . . . . . . . . . . . . . . . . . . . . . . . 7-13 [1]
CCU 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-14 [1]
功率管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-16 [1]
功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-17 [1]
空闲模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-17 [1]
掉电模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-17 [1]
外设时钟管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-21 [1]
功率管理寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-23 [1]
SCU 寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-25 [1]
8
8.1
8.2
8.2.1
8.2.2
8.2.3
8.2.4
看门狗定时器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
系统信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
复位的影响 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
中断事件及分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
模块挂起控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
用户手册
3
8-1 [1]
8-1 [1]
8-2 [1]
8-2 [1]
8-2 [1]
8-2 [1]
8-3 [1]
V1.1, 2010-09
XC83x
8.3
8.4
8.4.1
功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-4 [1]
寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-6 [1]
看门狗定时器寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-6 [1]
9
9.1
9.1.1
9.1.2
9.2
9.2.1
9.2.2
9.3
9.4
9.5
9.5.1
9.5.2
9.5.3
9.5.4
9.6
中断系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1 [1]
中断源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1 [1]
中断源和中断向量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-8 [1]
中断源和中断优先级 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-9 [1]
中断结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-10 [1]
中断结构 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-10 [1]
中断结构 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-11 [1]
中断处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-12 [1]
中断响应时间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-13 [1]
寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-15 [1]
中断节点使能寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-16 [1]
外部中断控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-19 [1]
中断标志寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-23 [1]
中断优先级寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-29 [1]
中断标志概览 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-31 [1]
10
10.1
10.1.1
10.2
10.2.1
10.2.2
10.2.3
10.2.4
10.2.5
10.3
10.3.1
10.3.2
10.3.3
10.3.4
10.3.5
10.3.6
10.4
10.4.1
10.4.1.1
10.4.1.2
10.4.1.3
10.4.2
10.4.3
10.5
调试系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
调试系统的组成部分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
产品信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
引脚配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
中断事件和中断节点分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
调试挂起控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
JTAG ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
调试系统的功能概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
识别调试事件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
激活监控程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
调试挂起控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
运行监控程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
返回用户程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
单步执行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
断点产生模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
产生硬件断点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
指令地址断点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IRAM 地址断点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
跟踪暂停地址的改变 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
处理外部暂停 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
处理软件断点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
不进入监控模式的断点响应方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
用户手册
4
10-1 [1]
10-1 [1]
10-1 [1]
10-1 [1]
10-2 [1]
10-2 [1]
10-2 [1]
10-2 [1]
10-4 [1]
10-4 [1]
10-4 [1]
10-5 [1]
10-6 [1]
10-6 [1]
10-6 [1]
10-6 [1]
10-7 [1]
10-7 [1]
10-7 [1]
10-8 [1]
10-8 [1]
10-9 [1]
10-9 [1]
10-9 [1]
V1.1, 2010-09
XC83x
10.5.1
10.6
10.6.1
10.6.2
10.6.3
10.7
10.8
10.8.1
10.8.2
10.8.3
触发 NMI 请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-9 [1]
NMI 请求及控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-10 [1]
来自 OCDS 的 NMI 请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-10 [1]
OCDS NMI 服务程序处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-10 [1]
OCDS 对 NMI 的控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-11 [1]
NMI 模式的优先级高于调试模 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-11 [1]
寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-11 [1]
控制和状态寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-13 [1]
硬件断点寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-14 [1]
监控工作寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-17 [1]
11
11.1
11.1.1
11.1.1.1
11.1.1.2
11.2
11.2.1
11.2.2
11.3
11.3.1
11.3.2
11.4
11.4.1
11.4.2
11.5
11.5.1
11.5.2
并行端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1 [1]
基本端口操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2 [1]
通用寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-7 [1]
寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-7 [1]
寄存器概览 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-8 [1]
P0 口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-16 [1]
功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-16 [1]
寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-22 [1]
P1 口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-26 [1]
功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-27 [1]
寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-30 [1]
P2 口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-35 [1]
功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-36 [1]
寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-39 [1]
P3 口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-41 [1]
功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-41 [1]
寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-43 [1]
12
12.1
12.2
12.2.1
12.2.2
12.3
12.3.1
12.3.2
12.3.3
12.3.4
12.3.5
12.3.6
12.3.7
12.4
12.5
乘法 / 除法单元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
系统信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
中断事件及分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
功能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
除法操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
归一化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
移位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
带有一次左移操作的乘法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
带有一次右移操作的除法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
忙碌标志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
检错 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
中断产生 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
寄存器说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
用户手册
5
12-1 [1]
12-1 [1]
12-2 [1]
12-2 [1]
12-3 [1]
12-3 [1]
12-4 [1]
12-4 [1]
12-5 [1]
12-5 [1]
12-5 [1]
12-5 [1]
12-6 [1]
12-6 [1]
12-7 [1]
V1.1, 2010-09
XC83x
12.5.1
12.5.2
12.5.3
操作数和结果寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-8 [1]
控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-10 [1]
状态寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-12 [1]
13
13.1
13.2
13.2.1
13.2.1.1
13.2.2
13.3
13.3.1
13.3.2
13.3.3
13.3.3.1
13.3.3.2
13.3.4
13.3.5
13.3.6
13.4
13.5
13.5.1
13.5.2
13.6
13.6.1
13.6.2
13.6.3
CORDIC 协处理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1 [1]
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1 [1]
系统信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-2 [1]
时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-2 [1]
外设管理控制寄存器 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-2 [1]
中断事件及分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-3 [1]
功能描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-4 [1]
CORDIC 协处理器的操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-4 [1]
结果数据归一化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-4 [1]
CORDIC 协处理器操作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-5 [1]
收敛域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-8 [1]
溢出考虑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-8 [1]
CORDIC 协处理器数据格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-9 [1]
CORDIC 协处理器精度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-9 [1]
CORDIC 协处理器性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-11 [1]
中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-11 [1]
CORDIC 协处理器硬件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-12 [1]
反正切和双曲反正切查找表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-12 [1]
线性函数的仿真查找表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-13 [1]
寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-14 [1]
控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-14 [1]
状态和数据控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-16 [1]
数据寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-17 [1]
14
14.1
14.2
14.2.1
14.2.2
14.2.3
14.3
14.4
14.4.1
14.4.2
14.4.3
14.4.4
14.5
14.5.1
定时器 T0 和 T1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
系统信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
中断事件和分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
定时器基本操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
定时器工作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
模式 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
模式 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
模式 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
模式 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
定时器 T0 和 T1 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
定时器 T2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1 [1]
用户手册
6
14-1 [1]
14-1 [1]
14-1 [1]
14-1 [1]
14-2 [1]
14-2 [1]
14-3 [1]
14-4 [1]
14-5 [1]
14-6 [1]
14-7 [1]
14-8 [1]
14-9 [1]
14-9 [1]
V1.1, 2010-09
XC83x
15.1
15.2
15.2.1
15.2.2
15.2.3
15.2.4
15.2.5
15.3
15.4
15.4.1
15.4.2
15.5
15.6
15.7
15.8
15.8.1
15.8.2
15.8.3
15.8.4
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1 [1]
系统信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1 [1]
引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1 [1]
时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-3 [1]
中断事件和分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-4 [1]
IP 互连 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-4 [1]
模块挂起控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-4 [1]
基本定时器操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-6 [1]
自动重载模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-6 [1]
禁止递增 / 递减计数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-6 [1]
使能递增 / 递减计数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-7 [1]
捕获模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-9 [1]
计数时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-10 [1]
外部中断功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-11 [1]
寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-12 [1]
模式寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-13 [1]
控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-14 [1]
定时器 T2 重载 / 捕获寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-16 [1]
定时器 T2 计数寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-17 [1]
16
16.1
16.2
16.2.1
16.2.2
16.2.3
16.3
16.4
16.5
16.5.1
16.5.2
16.5.3
16.5.4
16.6
16.7
16.7.1
16.7.2
实时时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1 [1]
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1 [1]
系统信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1 [1]
引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1 [1]
中断事件和分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1 [1]
模块挂起控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-2 [1]
振荡器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-2 [1]
基本定时器操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-2 [1]
实时时钟模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-2 [1]
模式 0:使用 32.768 kHz 晶振时钟的计时模式 . . . . . . . . . . . . . . . 16-3 [1]
模式 1:使用 75 kHz 振荡器时钟的周期性唤醒模式 . . . . . . . . . . . 16-4 [1]
模式 2:使用 1 Hz 外部时钟的计时模式 . . . . . . . . . . . . . . . . . . . . 16-5 [1]
模式 3:使用外部时钟的定时器模式 . . . . . . . . . . . . . . . . . . . . . . . 16-6 [1]
省电模式选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-7 [1]
寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-8 [1]
实时时钟寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-9 [1]
振荡器寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-21 [1]
17
17.1
17.2
17.2.1
17.2.2
17.2.3
UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
系统信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
中断事件和分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
用户手册
7
17-1 [1]
17-1 [1]
17-1 [1]
17-1 [1]
17-3 [1]
17-3 [1]
V1.1, 2010-09
XC83x
17.3
17.3.1
17.3.2
17.3.3
17.3.4
17.4
17.5
17.5.1
17.5.2
17.5.3
17.6
17.6.1
17.6.2
17.6.2.1
17.6.2.2
17.6.2.3
17.6.2.4
17.7
17.7.1
17.7.2
17.7.3
UART 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-3 [1]
模式 0, 8 位移位寄存器,波特率固定 . . . . . . . . . . . . . . . . . . . . . 17-4 [1]
模式 1, 8 位 UART,波特率可变 . . . . . . . . . . . . . . . . . . . . . . . . . 17-4 [1]
模式 2, 9 位 UART,波特率固定 . . . . . . . . . . . . . . . . . . . . . . . . . 17-6 [1]
模式 3, 9 位 UART,波特率可变 . . . . . . . . . . . . . . . . . . . . . . . . . 17-6 [1]
多处理器通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-8 [1]
波特率产生 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-9 [1]
固定时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-9 [1]
UART 波特率发生器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-9 [1]
定时器 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-12 [1]
UART 中的 LIN 支持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-13 [1]
LIN 协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-13 [1]
LIN 报文头发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-15 [1]
和主机自动同步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-15 [1]
分隔 / 同步域检测逻辑的初始化 . . . . . . . . . . . . . . . . . . . . . . . . 17-15 [1]
波特率范围选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-16 [1]
LIN 波特率检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-17 [1]
寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-19 [1]
UART 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-20 [1]
波特率产生控制和状态寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-21 [1]
波特率发生器定时器 / 重载寄存器 . . . . . . . . . . . . . . . . . . . . . . . . 17-24 [1]
18
18.1
18.2
18.2.1
18.2.1.1
18.2.2
18.2.3
18.3
18.4
18.5
18.6
18.7
18.8
18.8.1
18.8.2
18.8.3
18.8.4
18.9
18.9.1
18.9.2
18.9.3
IIC 总线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1 [1]
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1 [1]
系统信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1 [1]
引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1 [1]
输出引脚配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-2 [1]
时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-2 [1]
中断事件及其分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-3 [1]
状态码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-4 [1]
波特率产生 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-5 [1]
时钟同步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-6 [1]
总线仲裁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-6 [1]
软件复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-6 [1]
操作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-6 [1]
主机发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-6 [1]
主机接收 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-10 [1]
从机发送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-11 [1]
从机接收 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-12 [1]
寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-13 [1]
从机地址寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-14 [1]
数据寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-15 [1]
控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-16 [1]
用户手册
8
V1.1, 2010-09
XC83x
18.9.4
18.9.5
18.9.6
状态寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-17 [1]
波特率控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-19 [1]
软件复位寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-19 [1]
19
19.1
19.2
19.2.1
19.2.2
19.2.3
19.3
19.3.1
19.3.2
19.3.3
19.3.4
19.3.5
19.3.6
19.4
19.5
19.5.1
19.5.2
19.5.3
19.5.4
高速串行同步接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-1 [1]
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-1 [1]
系统信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-2 [1]
引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-2 [1]
时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-6 [1]
中断事件和分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-7 [1]
一般操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-8 [1]
工作模式选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-8 [1]
全双工工作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-9 [1]
半双工工作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-11 [1]
连续传送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-12 [1]
波特率产生 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-13 [1]
检错机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-14 [1]
中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-16 [1]
寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-17 [1]
配置寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-18 [1]
波特率定时器重载寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-22 [1]
发送缓存寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-22 [1]
接收缓存寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-23 [1]
20
20.1
20.2
20.2.1
20.2.2
20.2.3
20.2.4
20.2.5
20.3
20.4
20.4.1
20.5
20.5.1
20.6
20.7
20.8
20.9
20.10
20.11
20.11.1
LED 和触摸感应控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-1 [1]
概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-1 [1]
系统信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-2 [1]
引脚配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-2 [1]
时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-4 [1]
中断事件和中断节点分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-4 [1]
IP 互连 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-5 [1]
调试挂起控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-5 [1]
引脚上 LED 和触摸感应功能的时分复用控制 . . . . . . . . . . . . . . . . . . . 20-5 [1]
LED 驱动 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-8 [1]
LED 引脚分配和电流驱动能力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-9 [1]
触摸盘感应 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-10 [1]
手指感应 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-11 [1]
引脚上 LED 和触摸感应功能时分复用 . . . . . . . . . . . . . . . . . . . . . . . 20-13 [1]
功能使能和控制的注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-14 [1]
LEDTSCU 时序计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-15 [1]
LEDTSCU 引脚控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-17 [1]
中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-18 [1]
寄存器描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-19 [1]
全局控制和状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-20 [1]
用户手册
9
V1.1, 2010-09
XC83x
20.11.2
功能控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-23 [1]
21
21.1
21.1.1
21.1.2
21.1.3
21.2
21.2.1
21.2.2
21.2.3
21.2.4
21.2.5
21.3
21.3.1
21.3.2
21.3.2.1
21.3.2.2
21.3.2.3
21.3.3
21.3.3.1
21.3.3.2
21.3.3.3
21.3.4
21.3.4.1
21.3.4.2
21.3.4.3
21.3.5
21.3.6
21.3.7
21.3.8
21.3.8.1
21.3.8.2
21.3.8.3
21.3.8.4
21.3.8.5
21.3.9
21.3.9.1
21.3.9.2
21.3.9.3
21.4
21.4.1
21.4.2
捕获 / 比较单元 6 (CCU6) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-1 [1]
简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-1 [1]
特性概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-2 [1]
框图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-3 [1]
寄存器概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-4 [1]
系统信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-7 [1]
引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-7 [1]
时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-11 [1]
中断事件和分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-13 [1]
IP 互连 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-15 [1]
模块挂起控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-17 [1]
定时器 T12 模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-17 [1]
T12 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-19 [1]
T12 计数策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-21 [1]
时钟选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-21 [1]
边沿对齐 / 中心对齐模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-21 [1]
单次模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-24 [1]
T12 的比较模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-25 [1]
比较通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-25 [1]
通道状态位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-25 [1]
类磁滞控制模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-30 [1]
比较模式输出路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-31 [1]
死区时间产生 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-31 [1]
状态选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-33 [1]
输出调制和电平选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-34 [1]
T12 捕获模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-36 [1]
T12 映射寄存器传送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-40 [1]
定时器 T12 工作模式选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-41 [1]
T12 相关寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-42 [1]
T12 计数寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-42 [1]
周期寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-42 [1]
捕获 / 比较寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-44 [1]
捕获 / 比较映射寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-45 [1]
死区时间控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-47 [1]
捕获 / 比较控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-49 [1]
通道状态位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-49 [1]
T12 模式控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-53 [1]
定时器控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-55 [1]
定时器 T13 模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-63 [1]
T13 模块概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-63 [1]
T13 计数策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-66 [1]
用户手册
10
V1.1, 2010-09
XC83x
21.4.2.1
定时器 T13 计数操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-66 [1]
21.4.2.2
单次模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-67 [1]
21.4.2.3
与 T12 同步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-68 [1]
21.4.3
T13 比较模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-70 [1]
21.4.4
比较模式输出路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-72 [1]
21.4.5
T13 映射寄存器传送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-73 [1]
21.4.6
T13 相关寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-75 [1]
21.4.6.1
T13 计数寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-75 [1]
21.4.6.2
周期寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-77 [1]
21.4.6.3
比较寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-78 [1]
21.4.6.4
比较映射寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-78 [1]
21.5
强制中断处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-80 [1]
21.6
多通道模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-82 [1]
21.7
霍尔传感器模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-84 [1]
21.7.1
霍尔序列评估 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-85 [1]
21.7.2
霍尔序列比较逻辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-87 [1]
21.7.3
霍尔模式标志位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-88 [1]
21.7.4
实现无刷直流电机控制的霍尔模式 . . . . . . . . . . . . . . . . . . . . . . . . 21-90 [1]
21.8
调制控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-92 [1]
21.8.1
调制控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-92 [1]
21.8.2
强制中断控制寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-94 [1]
21.8.3
被动态电平寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-97 [1]
21.8.4
多通道模式寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-98 [1]
21.9
中断处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-103 [1]
21.9.1
中断结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-103 [1]
21.9.2
中断寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-105 [1]
21.9.2.1
中断状态寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-105 [1]
21.9.2.2
中断状态置位寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-108 [1]
21.9.2.3
状态复位寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-110 [1]
21.9.2.4
中断使能寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-112 [1]
21.9.2.5
中断节点指针寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-115 [1]
21.10
一般模块操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-117 [1]
输入选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-117 [1]
21.10.1
21.10.2
通用寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-118 [1]
21.10.2.1
端口输入寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-118 [1]
21.11
寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-121 [1]
22
22.1
22.1.1
22.1.2
22.1.3
22.1.4
用户手册
模数转换器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
系统信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
时钟配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
中断事件和分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IP 互连 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
22-1 [1]
22-3 [1]
22-3 [1]
22-3 [1]
22-4 [1]
22-4 [1]
V1.1, 2010-09
XC83x
22.2
22.3
22.4
22.5
22.5.1
22.6
22.6.1
22.6.2
22.6.3
22.7
22.7.1
22.7.2
22.8
22.8.1
22.8.2
22.8.3
22.8.4
22.8.5
22.8.6
22.8.7
22.9
22.9.1
22.10
22.10.1
22.10.2
22.11
22.12
简介和基本结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-7 [1]
电气模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-10 [1]
转换特性和误差定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-12 [1]
一般功能配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-13 [1]
一般时钟方案和控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-13 [1]
转换请求产生 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-16 [1]
通道扫描请求源处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-18 [1]
队列请求源处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-23 [1]
硬件触发选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-35 [1]
请求源仲裁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-36 [1]
仲裁器时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-37 [1]
请求源优先级和转换启动模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-38 [1]
模拟输入通道配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-41 [1]
参考选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-41 [1]
通道参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-44 [1]
极限检查 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-48 [1]
假名特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-50 [1]
超出范围比较器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-53 [1]
转换时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-57 [1]
通道事件和中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-59 [1]
转换结果处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-60 [1]
转换结果的保存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-60 [1]
等待 - 读取模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-75 [1]
结果事件和中断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-76 [1]
数据压缩和滤波 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-76 [1]
中断请求处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-79 [1]
寄存器映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-86 [1]
23
23.1
23.2
23.3
23.4
23.5
23.6
23.7
23.8
Boot ROM 用户子程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-1 [1]
Flash Bank 读模式状态子程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-2 [1]
获得 4 字节信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-3 [1]
特性设置子程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-3 [1]
UART 自动波特率子程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-5 [1]
UART BSL 子程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-6 [1]
Flash 编程子程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-7 [1]
Flash 擦除子程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-9 [1]
Flash 擦除中止子程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-12 [1]
24
24.1
24.1.1
24.1.2
24.1.3
24.1.4
ROM Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
定点 ROM Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
P 控制器程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PI 控制器程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PT1_24 控制器程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PT1_32 控制器程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
用户手册
12
24-1 [1]
24-2 [1]
24-2 [1]
24-3 [1]
24-5 [1]
24-6 [1]
V1.1, 2010-09
XC83x
24.1.5
Cartesian-Polar 坐标转换程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-7 [1]
24.1.6
Clarke 变换程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-8 [1]
24.1.7
向量旋转 (Park 变换)程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-10 [1]
24.1.8
向量逆旋转 (Park 逆变换)程序 . . . . . . . . . . . . . . . . . . . . . . . . 24-11 [1]
24.1.9
Sine/Cosine 程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-12 [1]
24.2
LED 和触摸感应控制器 ROM Library . . . . . . . . . . . . . . . . . . . . . . . . 24-14 [1]
24.2.1
SET_LDLINE_CMP 函数 (LED 和触摸感应) . . . . . . . . . . . . . . 24-15 [1]
24.2.1.1
SET_LDLINE_CMP 函数的输入 (仅使能 LED 功能) . . . . . . 24-17 [1]
24.2.1.2
SET_LDLINE_CMP 函数的输入 (仅使能触摸感应功能) . . . . 24-19 [1]
24.2.1.3
SET_LDLINE_CMP 函数的输入 (使能 LED 和触摸感应功能) 24-21 [1]
24.2.2
FINDTOUCHEDPAD 函数 (触摸感应) . . . . . . . . . . . . . . . . . . . 24-25 [1]
24.2.2.1
FINDTOUCHEDPAD 函数的输入 . . . . . . . . . . . . . . . . . . . . . . 24-27 [1]
24.2.2.2
FINDTOUCHEDPAD 函数的输出 . . . . . . . . . . . . . . . . . . . . . . 24-31 [1]
24.2.2.3
FINDTOUCHEDPAD 函数的 XRAM 参数 . . . . . . . . . . . . . . . . 24-34 [1]
24.2.2.4
函数的具体实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-36 [1]
24.2.3
中断时函数的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-44 [1]
24.3
EEPROM 模拟 ROM Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-46 [1]
24.3.1
特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-46 [1]
24.3.2
系统要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-46 [1]
24.3.3
概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-46 [1]
24.3.4
API 说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-47 [1]
24.3.4.1
常量定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-47 [1]
24.3.4.2
EEPROMInfo 数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-48 [1]
24.3.4.3
函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-48 [1]
24.3.4.4
API 使用示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-52 [1]
用户手册
13
V1.1, 2010-09
XC83x
简介
1
简介
XC83x 是高性能 8 位微控制器 XC800 家族的成员,其设计基于和工业标准 8051 处理器
兼容的 XC800 内核。XC83x 通过高度集成的片上模块,如片上振荡器和电压调节器(支
持 2.5V - 5.0V 的电源供电),为用户提升应用能力提高了巨大的空间。此外,XC83x 内
嵌 Flash (闪存)存储器,为系统开发和批量生产提供了很大的灵活性。 XC83x 的存储
器保护策略为用户知识产权 (IP)提供了读保护。
多闪存组(multi-bank)Flash 结构支持在应用编程(IAP),运行某 bank 中的用户程序
的同时可编程或擦除另一 bank 中的内容。通过 Boot ROM 中的引导加载程序(BSL)可
进行在系统编程 (ISP),通过外部主机 (如 PC)对嵌入式 Flash 方便的编程或擦除。
其它主要特性包括:捕获 / 比较单元 6 (CCU6),产生电机控制专用的脉宽调制信号;
10 位模数转换器 (ADC),内置带有差分输入通道的超出范围比较器,具有自动扫描和
结果累加 (用于抗混迭滤波或结果平均)等扩展功能;乘法 / 除法单元 (MDU),支持
XC800 内核用于需要大量数学运算的高级电机控制(如磁场定向控制); CORDIC(坐
标旋转数字计算机)协处理器,可快速计算三角函数、线性或双曲线函数以实现向量旋
转和转换; LED 和触摸感应控制器 (LEDTSCU),通过 LED 矩阵驱动 7 段显示器并同
时支持触摸感应功能;实时时钟 (RTC) ,支持低功耗应用下的周期性唤醒;片上调试
支持 (OCDS)单元,提供基于 XC800 系统进行软件开发与调试所需的基本功能。此
外,通过扩展的 UART 特性和 LIN 底层驱动部分使得大多数器件可支持本地互连网络
(LIN)的应用。XC83x 还为用户提供了不同的省电模式选择,以满足低功耗应用的需求
;其丰富的片上外设功能由特殊功能寄存器 (SFR)控制,采用智能分页机制 (优化中
断处理)来扩展 SFR 的地址范围。
XC83x 的功能单元如图 1-1 所示。
8/4KB Flash
IIC
片上调试支持
Boot ROM
8KB
UART
SSC
P0口
8位数字I/O
捕获/比较单元
16位
P1口
6位数字I/O
比较单元
16位
P2口
8位数字/模拟输入口
ADC
10位8通道
P3口
3位数字I/O
XC800 内核
XRAM
256 B
RAM
256 B
MDU
图 1-1
用户手册
系统架构 , V1.0
LED和触摸感应控制器
CORDIC
定时器T0
16位
定时器T1
16位
定时器T2
16位
实时时钟
看门狗
定时器
XC83x 功能单元
1-1
V1.1, 2010-09
XC83x
简介
1.1
XC83x 特性总结
XC83x 的主要特性总结如下:
· 高性能 XC800 内核
– 和标准 8051 内核兼容
– 2 个时钟的机器周期结构 (快速无等待内存访问)
– 双数据指针
· 片内存储器
– 8 KB Boot ROM,存放启动固件、 Flash 和用户程序及 ROM library
– 256B RAM ;外加 64 字节监控 RAM
– 256B XRAM
– 4/8 KB Flash, 用于存放程序代码和数据 (包括存储器保护策略)
· I/O 口 2.5 - 5.5V 供电;内核逻辑电路 2.5V 供电 (由嵌入式电压调节器产生)
· 上电复位产生
· IO 电压和内核电压压降检测
· 片内振荡器 (OSC)产生时钟
– 时钟丢失检测
· 省电模式
– 空闲模式
– 掉电模式,可通过实时时钟中断唤醒系统
– 每个外设均由时钟门控制
· 带有可编程窗界的看门狗定时器 (WDT),用于刷新及溢出前报警
· 三个通用 I/O 口
– 4 个大电流 I/O
– 2 个大灌电流 I/O
– 多达 25 个数字 I/O 引脚
– 多达 8 个数字 / 模拟输入引脚
· 用于磁场定向控制 (FOC)的 16 位向量计算单元
– 用于算术运算的乘法 / 除法单元 (MDU)
– 用于三角函数计算的 CORDIC 单元
· 支持定点控制和 EEPROM 模拟的软件库
· 8 通道、 10 位模数转换单元 (ADC)
– 最多支持 7 路差分输入通道
– 多达 8 路通道,超出范围比较器
· 三个 16 位定时器:定时器 T0、 T1 和 T2
· 带有 32.768 kHz 晶振引出脚的实时时钟
· 用于产生 PWM 信号的捕获 / 比较单元 (CCU6)
· 全双工串行接口 (UART)
· 同步串行通道 (SSC)
· IIC 串行接口
· LED 和触摸感应控制器 (LEDTSCU)
· 通过单引脚 DAP 接口 (SPD)支持片上调试
– 1 KB 监控 RAM (Boot ROM 的一部分)
用户手册
系统架构 , V1.0
1-2
V1.1, 2010-09
XC83x
简介
– 64 字节监控 RAM
XC83x 的框图如图 1-2 所示。
XC800 内核
256B RAM
+
64B 监控RAM
T0 & T1
UART
P0口
内部总线
P0.0 - P0.7
P1口
8 KB
Boot ROM 1)
P1.0 - P1.5
P2口
XC83x
P2.0 – P2.7
向量计算单元
VDDP
256B XRAM
VSSP
VSSC
4/8 KB
Flash
CORDIC
MDU
RTC
IIC
WDT
SSC
定时器T2
CCU6
ADC
48 MHz
片内 OSC
OCDS
75 KHz
片内 OSC
EVR
P3口
XTAL
时钟产生单元
P3.0 - P3.2
SCU
LED和触摸感应
控制器
1) 包含1KB监控ROM
图 1-2
1.2
XC83x 框图
引脚定义及功能
复位后所有引脚被配置为具有下列特性之一的输入引脚:
· 仅使能上拉器件 (PU)
· 仅使能下拉器件 (PD)
· 上拉 / 下拉器件均被禁止的高阻态 (Hi-Z)
XC83x 的引脚功能及缺省状态归纳见表 1-1。
用户手册
系统架构 , V1.0
1-3
V1.1, 2010-09
XC83x
简介
表 1-1
XC83x 的引脚定义和功能
符号
类型
P0
I/O
P0.0
P0.1
P0.2
用户手册
系统架构 , V1.0
复位状
态
高阻
高阻
高阻
引脚功能
P0 口
P0 口是通用双向 I/O 口。它还可用作 LEDTSCU、定
时器 T0、 T1 和 T2、 SSC、 CCU6、 IIC、 SPD 和
UART 的功能引脚。
T2_0
定时器 T2 输入
T13HR_1
CCU6 定时器 T13 硬件运行输入
MTSR_2
SSC 主机发送输出 / 从机接收输入
MRST_3
SSC 主机接收输入
T12HR_0
CCU6 定时器 T12 硬件运行输入
CCPOS0_0
CCU6 霍尔输入 0
TSIN0
触摸感应输入 0
LINE0
LED 行 0
COUT61_1
捕获 / 比较通道 1 输出
T0_0
定时器 T0 输入
CC61_1
捕获 / 比较通道 1 输入 / 输出
MTSR_3
SSC 从机接收输入
MRST_2
SSC 主机接收输入 / 从机发送输出
T13HR_0
CCU6 定时器 T13 硬件运行输入
CCPOS1_0
CCU6 霍尔输入 1
TSIN1
触摸感应输入 1
LINE1
LED 行 1
T1_0
定时器 T1 输入
CC62_1
捕获 / 比较通道 2 输入 / 输出
SCL_1
IIC 时钟线
CCPOS2_0
CCU6 霍尔输入 2
TSIN2
触摸感应输入 2
LINE2
LED 行 2
1-4
V1.1, 2010-09
XC83x
简介
表 1-1
符号
XC83x 的引脚定义和功能
类型
P0.3
P0.4
P0.5
用户手册
系统架构 , V1.0
复位状
态
引脚功能
高阻
CC60_1
下拉
高阻
捕获 / 比较通道 0 输入 / 输出
SDA_1
IIC 数据线
CTRAP_0
CCU6 强制中断输入
TSIN3
触摸感应输入 3
LINE3
LED 行 3
T2EX_1
定时器 T2 外部触发输入
SCK_0
SSC 时钟输入 / 输出
SCL_0
IIC 时钟线
CTRAP_1
CCU6 强制中断输入
EXINT1_0
外部中断输入 1
TSIN4
触摸感应输入 4
LINE4
LED 行 4
EXF2_0
定时器 T2 溢出标志
COL0_1
LED 列 0
COL3_2
LED 列 3
COLA_4
LED 列 A
RXD_0
UART 接收输入
MTSR_0
SSC 主机发送输出 / 从机接收输入
MRST_1
SSC 主机接收输入
EXINT0_0
外部中断输入 0
TSIN5
触摸感应输入 5
LINE5
LED 行 5
COUT62_1
捕获 / 比较通道 2 输出
TXD_4
UART 发送输出
COL1_1
LED 列 1
EXF2_3
定时器 T2 溢出标志
1-5
V1.1, 2010-09
XC83x
简介
表 1-1
符号
XC83x 的引脚定义和功能
类型
P0.6
P0.7
P1
复位状
态
引脚功能
上拉
SPD_1
高阻
I/O
P1.0
用户手册
系统架构 , V1.0
高阻
SPD 输入 / 输出
RXD_1
UART 接收输入
SDA_0
IIC 数据线
MTSR_1
SSC 从机接收输入
MRST_0
SSC 主机接收输入 / 从机发送输出
EXINT0_1
外部中断输入 0
T2EX_0
定时器 T2 外部触发输入
TSIN6
触摸感应输入 6
LINE6
LED 行 6
TXD_0
UART 发送输出
COL2_1
LED 列 2
COLA_2
LED 列 A
SCL_3
IIC 时钟线
TSIN7
触摸感应输入 7
LINE7
LED 行 7
TXD_5
UART 发送输出 /
2 线 UART BSL 发送输出
COUT63_0
捕获 / 比较通道 3 输出
COL3_1
LED 列 3
COLA_3
LED 列 A
P1
P1 口是通用双向 I/O 口。它还可用作 CCU6、
LEDTSCU、 SPD、 UART 和定时器 T2 的功能引脚。
SPD_2
SPD 输入 / 输出
RXD_2
UART 接收输入
T2EX_2
定时器 T2 外部触发输入
EXINT0_2
外部中断输入 0
COL0_0
LED 列 0
COUT60_0
捕获 / 比较通道 0 输出
TXD_1
UART 发送输出
1-6
V1.1, 2010-09
XC83x
简介
表 1-1
符号
XC83x 的引脚定义和功能
类型
P1.1
P1.2
引脚功能
高阻
CC60_0
捕获 / 比较通道 0 输入 / 输出
高阻
P1.3
高阻
P1.4
高阻
P1.5
P2
复位状
态
高阻
I
P2.0
用户手册
系统架构 , V1.0
高阻
COL1_0
LED 列 1
TXD_2
UART 发送输出
EXINT4
外部中断输入 4
COL2_0
LED 列 2
COUT61_0
捕获 / 比较通道 1 输出
COUT63_1
捕获 / 比较通道 3 输出
CC61_0
捕获 / 比较通道 1 输入 / 输出
COL3_0
LED 列 3
EXF2_2
定时器 T2 溢出标志
EXINT5
外部中断输入 5
COL4
LED 列 4
COUT62_0
捕获 / 比较通道 2 输出
COUT63_2
捕获 / 比较通道 3 输出
CC62_0
捕获 / 比较通道 2 输入 / 输出
COL5
LED 列 5
COLA_1
LED 列 A
P2 口
P2 口是通用单向输入口。它还可用作 ADC 和超出范围
比较器、 CCU6、定时器 T2、 SSC 和 UART 的输入引
脚。
CCPOS0_1
CCU6 霍尔输入 0
T12HR_2
CCU6 定时器 T12 硬件运行输入
T13HR_2
CCU6 定时器 T13 硬件运行输入
T2EX_3
定时器 T2 外部触发输入
T2_1
定时器 T2 输入
EXINT0_3
外部中断输入 0
AN0
模拟输入 0 /
超出范围比较器通道 0
1-7
V1.1, 2010-09
XC83x
简介
表 1-1
符号
XC83x 的引脚定义和功能
类型
P2.1
P2.2
P2.3
P2.4
P2.5
用户手册
系统架构 , V1.0
复位状
态
引脚功能
高阻
CCPOS1_1
CCU6 霍尔输入 1
高阻
高阻
高阻
高阻
RXD_5
UART 接收输入
MTSR_6
SSC 从机接收输入
T0_1
定时器 T0 输入
EXINT1_1
外部中断输入 1
AN1
模拟输入 1 /
超出范围比较器通道 1
CCPOS2_1
CCU6 霍尔输入 2
T12HR_3
CCU6 定时器 T12 硬件运行输入
T13HR_3
CCU6 定时器 T13 硬件运行输入
SCK_3
SSC 时钟输入 / 输出
T1_1
定时器 T1 输入
EXINT2_0
外部中断输入 2
AN2
模拟输入 2 /
超出范围比较器通道 2
CCPOS0_2
CCU6 霍尔输入 0
CTRAP_2
CCU6 强制中断输入
T2_2
定时器 T2 输入
EXINT3
外部中断输入 3
AN3
模拟输入 3 /
超出范围比较器通道 3
T12HR_5
CCU6 定时器 T12 硬件运行输入
T13HR_5
CCU6 定时器 T13 硬件运行输入
T2_3
定时器 T2 输入
AN4
模拟输入 4 /
超出范围比较器通道 4
T12HR_7
CCU6 定时器 T12 硬件运行输入
T13HR_7
CCU6 定时器 T13 硬件运行输入
AN5
模拟输入 5 /
超出范围比较器通道 5
1-8
V1.1, 2010-09
XC83x
简介
表 1-1
符号
XC83x 的引脚定义和功能
类型
P2.6
P2.7
P3
复位状
态
引脚功能
高阻
SCK_2
SSC 时钟输入 / 输出
EXINT6
外部中断输入 6
AN6
模拟输入 6 /
超出范围比较器通道 6
高阻
I/O
P3.0
P3.1
用户手册
系统架构 , V1.0
上拉
上拉
RXD_6
UART 接收输入
T2EX_6
定时器 T2 外部触发输入
MTSR_7
SSC 从机接收输入
EXINT0_4
外部中断输入 0
AN7
模拟输入 7 /
超出范围比较器通道 7
P3 口
P3 口是通用双向 I/O 口。它还可用作 IIC、
LEDTSCU、 UART、定时器 T2、 SSC、 SPD 和
32.768 kHz 晶振的功能引脚。
SCL_2
IIC 时钟线
SCK_1
SSC 时钟输入 / 输出
EXINT2_1
外部中断输入 2
COL6
LED 列 6
XTAL4
32.768 kHz 外部振荡器输出
RXD_4
UART 接收输入
RTCCLK
RTC 外部时钟输入
MTSR_4
SSC 主机发送输出 / 从机接收输入
MRST_4
SSC 主机接收输入
EXINT0_5
外部中断输入 0
COLA_0
LED 列 A
XTAL3
32.768 kHz 外部振荡器输入
EXF2_1
定时器 T2 溢出标志
1-9
V1.1, 2010-09
XC83x
简介
表 1-1
符号
XC83x 的引脚定义和功能
类型
P3.2
复位状
态
引脚功能
上拉
SPD_0
SPD 输入 / 输出
RXD_3
UART 接收输入 /
UART BSL 接收输入
SDA_2
IIC 数据线
MTSR_5
SSC 从机接收输入
MRST_5
SSC 主机接收输入 /
从机发送输出
EXINT0_6
外部中断输入 0
T2EX_7
定时器 T2 外部触发输入
TXD_3
UART 发送输出 /
1 线 UART BSL 发送输出
VDDP
–
–
I/O 口电源 (2.5 V - 5.5 V)
VDDC
–
–
内核电源监控 (2.5 V)
VSSP/
VSSC
–
–
I/O 口地 /
内核电源地
用户手册
系统架构 , V1.0
1-10
V1.1, 2010-09
XC83x
简介
1.3
芯片 ID
每种 XC83x 衍生器件都对应有唯一的芯片 ID,从而便于用户识别不同的器件。根据产品
类型、衍生器件类型及器件主要更新信息来分配芯片 ID。
可通过两种方式读取芯片 ID:
· 在应用子程序,见章节 23.2 ;
· 引导程序加载 (BSL)模式 A,见章节 6.2.2.8。
用户手册
系统架构 , V1.0
1-11
V1.1, 2010-09
XC83x
简介
1.4
命名规则
本手册使用下面的规则来命名 XC83x 的组成单元:
· XC83x 的功能单元用大写表示。例如:“SSC 可用于和移位寄存器通信”。
· 低电平有效的引脚,符号上方加横杠表示。例如:“复位输入引脚 RESET 用作硬件
复位”。
· 寄存器中的位域和位通常表示为 “寄存器名 . 位域”或 “寄存器名 . 位”。大多数寄
存器名包含模块名前缀,用下划线“_”和真正的寄存器名分开。例如“SSC_CON”
中 “SSC”是模块名前缀,“CON”才是真正的寄存器名。
· 变 量 出 现 在 大 小 写 混 用 中,用 来 表 示 一 组 处 理 单 元 或 寄 存 器。例 如,寄 存 器 名
“CC6xR”表示具有变量 x (x= 0, 1, 2)的多个 “CC6xR”寄存器。在首次使用寄
存器时给出变量边界 (例如 “x = 0 - 2”),并在必要时重复。
· 数制缺省为十进制。十六进制常数用下标 “H”表示 (如 C0H);二进制常数用下标
“B”表示 (如 11B)。
· 在命名寄存器位域、或者命名一组信号、一组引脚时,表示为 “名称 [A:B]”,它定
义了被命名组从 B 到 A 的范围。在命名单独的位、信号或引脚时,表示为 “名称
[C]”,同时给出变量 C 的范围 (例如 CFG[2:0] 和 TOS[0])。
· 单位缩写如下:
– MHz = 兆赫兹
– μs = 微秒
– kBaud, kbit = 每秒 1000 个字符 / 位
– MBaud, Mbit = 每秒 1,000,000 个字符 / 位
– Kbyte = 1024 字节内存
– Mbyte = 1,048,576 字节内存
通常,前缀 k 将单位扩大 1000 倍,前缀 K 将单位扩大 1024 倍。因此, Kbyte 将
数值扩大 1024 倍, kBaud 将数值扩大 1000 倍。前缀 M 将单位扩大 1,000,000 倍
或 1048576 倍,μ 将单位缩小 0.000001 倍。例如,1 Kbyte 是 1024 字节,1 Mbyte
是 1024 × 1024 字节, 1 kBaud/kbit 是每秒 1000 个字符 / 位, 1 MBaud/Mbit 是
每秒 1,000,000 个字符 / 位, 1 MHz 是 1,000,000 Hz。
· 数据格式定义如下:
– Byte = 8 位
1.5
保留位、未定义位及未实现位
定义寄存器位域时,使用下列规则来定义未定义位和未实现位。此外,位和位域读写类
型的缩写如 表 1-2 定义。
用户手册
系统架构 , V1.0
1-12
V1.1, 2010-09
XC83x
简介
表 1-2
位功能说明
位功能
说明
未实现位
寄存器位域为 “0”表示该位没有实现功能:
读取这些位域返回 0。
写入这些位域不起作用。
这些位域被保留。软件写入时,应该始终将这些位域设置为 0,
从而和后续产品保持兼容;设置为 1 可能导致不可预测的结果。
Undefined
位域中的一些位元组合起来标记为 “保留”,表示尚未定义
XC83x 在这种位组合下的行为。将寄存器设置为未定义的位组
合,可能导致不可预测的结果。这样的位组合被保留。软件写入
时,必须始终将其设置为位域描述表中提供的合法值。
rw
该位或位域可读写。
r
该位或位域只可读。
w
该位或位域只可写,读取时始终返回 0。
h
该位或位域可由硬件修改 (如状态位)。该特性可分别和 “rw”
或 “r”组合成 “rwh”和 “rh”。
1.6
缩写
表 1-3 列出本手册中使用的缩写。
表 1-3
缩写
缩写
说明
ADC
模数转换器
ALU
算术 / 逻辑单元
BSL
引导程序加载
CAN
控制器局域网络
CCU6
捕获 / 比较单元 6
CGU
时钟产生单元
CORDIC
坐标旋转数字计算机
CPU
中央处理单元
DAP
器件访问端口
DNL
差分非线性误差
ECC
纠错码
EVR
嵌入式电压调节器
用户手册
系统架构 , V1.0
1-13
V1.1, 2010-09
XC83x
简介
表 1-3
缩写
缩写
说明
FDR
分数分频器
FIFO
先进先出数据缓冲机制
GPIO
通用输入 / 输出
HCPADA
大电流双向端口类型 A
HCPADB
大电流双向端口类型 B
IAP
在应用编程
IIC
内部集成电路总线
I/O
输入 / 输出
INL
积分非线性误差
ISP
在系统编程
JTAG
联合测试行动组
LEDTSCU
LED 和触摸感应控制器单元
LIN
本地互连网络
LSBn
最低有效位:以数字格式表示的模拟数值的最小刻度,由 n 位转换精
度的最低有效位表示 (将测量范围等分为 2n 个区间)
MDU
乘 / 除单元
NMI
非可屏蔽中断
OCDS
片上调试支持
ORC
超出范围比较器
PC
程序计数器
POR
上电复位
PLL
锁相环
PSW
程序状态字
PWM
脉宽调制
RAM
随机存取存储器
ROM
只读存储器
RTC
实时时钟
SCU
系统控制单元
SFR
特殊功能寄存器
SPD
单引脚 DAP
SPI
串行外设接口
用户手册
系统架构 , V1.0
1-14
V1.1, 2010-09
XC83x
简介
表 1-3
缩写
缩写
说明
SSC
同步串行通道
TUE
总不可调整误差
UART
通用异步收发器
WDT
看门狗定时器
用户手册
系统架构 , V1.0
1-15
V1.1, 2010-09
XC83x
XC800 内核
2
XC800 内核
本章将对 XC800 内核予以说明。
2.1
概述
XC800 内核是一个完整的高性能 CPU 内核,其功能与 8051 向上兼容。标准 8051 内核
的机器周期由 12 个时钟周期组成,而 XC800 内核的机器周期由 2 个时钟组成。
XC800 内核指令集由 45% 的单字节、41% 的双字节和 14% 的三字节指令组成。每条指
令的执行时间为 1、2 或 4 个机器周期。在访问低速存储器时,可通过等待状态延长访问
时间 (一个等待状态持续一个机器周期,即相当于两个时钟周期)。
XC800 内核可支持的调试特性包括:基本的停止 / 开始,单步执行,断点支持以及对数
据存储器、程序存储器和特殊功能寄存器的读写操作。
特性
XC800 内核的主要特性如下:
·
·
·
·
·
·
·
·
·
·
·
·
2 个时钟的机器周期结构
外部数据空间上的片上 XRAM
内部数据空间上的 256B IRAM
高达 64 KB 代码空间 (未完全分配给已实现的存储器)
支持同步或异步程序和数据存储器
访问低速存储器支持等待状态插入
15 个中断源, 4 级优先级的中断控制器
双数据指针
省电模式
专用调试模式
2 个 16 位定时器 (T0 和 T1)
全双工串行接口 (UART)
2.2
XC800 内核功能模块
用户手册
XC800 内核 , V1.0.2
2-1
V1.1, 2010-09
XC83x
XC800 内核
图 2-1 所示为 XC800 内核的功能框图。XC800 内核主要由指令译码器、运算单元、程序
控制单元、访问控制单元和中断控制器组成。
指令译码器对每条指令进行译码,所产生的内部信号用于控制内核中的各个模块。这些
内部信号控制数据传送和 ALU 操作。
外部数据
存储器
程序
存储器
时钟
存储等待
Reset
外部中断 (IEN0, IEN1)
外部中断
非可屏蔽中断
内部数据
存储器
内核SFR
寄存器接口
外部SFR
16位寄存器
&
存储器接口
ALU
操作码&
立即数寄存器
乘法器/
除法器
操作码
译码器
定时器
T0 / T1
状态机
& 省电
UART
中断控制器
内核功能框图
图 2-1
XC800 内核功能框图
处理器的运算单元具有强大的数据处理能力,包括算术逻辑运算单元 (ALU)、 A 寄存
器、 B 寄存器和 PSW 寄存器。 来自一个或两个源地址的 8 位数据送至 ALU,在指令译
码器的控制下产生 8 位运算结果。ALU 用来完成算术运算和逻辑运算。算术运算包括加、
减、乘、除、加 1、减 1、 BCD 加法的十进制调整和比较。逻辑运算包括与 (AND)、
或 (OR)、异或、补码和循环移位 (右环移、左环移、或 4 位环移 (半字节交换))。
ALU 中还包含一个布尔单元,可执行置位、清零、补码、等于 1 跳转、等于 0 跳转、等
于 1 跳转并清零,送入 / 取自进位位的位操作。在任意可寻址位 (或该位补码)和进位
标志之间,可执行逻辑与 (AND)或者逻辑或 (OR)操作,结果送回进位标志中。
程序控制单元控制程序存储器中指令的执行顺序。 16 位程序计数器 (PC)中保存下一
条要执行的指令的地址。条件转移逻辑允许处理器响应内部和外部事件,引起程序执行
顺序的改变。
访问控制单元负责选择片上存储资源。中断控制单元负责处理由外设单元产生的中断请
求。
用户手册
XC800 内核 ,V1.0.2
2-2
V1.1, 2010-09
XC83x
XC800 内核
2.3
CPU SFR
XC800 内核寄存器占用内部数据存储空间的地址段 80H-FFH。
2.3.1
堆栈指针 (SP, 81H)
堆栈指针寄存器中存放堆栈指针。在执行 LCALL 和 ACALL 指令时,利用 SP 将 PC 的
当前值加载到内部数据存储器中;在执行 RET 和 RETI 指令时,从存储器中恢复 PC 的
值。还可以通过 PUSH 和 POP 指令在堆栈中保存或从堆栈中恢复数据。压入堆栈前 SP
先自动加 1,出栈后 SP 自动减 1,从而保证了堆栈指针始终指向压入堆栈的最后一个字
节,即栈顶。 SP 的复位值为 07H,所以第一个压入堆栈的数据存储在寄存器 bank 0 之
上的地址单元 08H 中。SP 的读写操作可由软件控制。编程人员必须确保堆栈的位置和大
小不会和其它应用数据重叠。
2.3.2
数据指针 (DPTR, 82-3H)
数据指针 (DPTR)存放在寄存器 DPL (数据指针低字节)和 DPH (数据指针高字节)
中,构成 16 位地址,用于外部数据存储器访问(MOVX A, @DPTR 和 MOVX @DPTR,
A)、程序字节转移(MOVC A, @A+DPTR),以及间接程序跳转(JMP @A+DPTR)。
数据指针支持两个真正的 16 位操作:载入立即数 (MOV DPTR, # data)和加 1 (INC
DPTR)操作。
2.3.3
累加器 (ACC, E0H)
大多数 ALU 操作中,该寄存器存放其中一个操作数。累加寄存器用 ACC 表示。和累加
器相关的指令,其助记符简化为符合 “A”。
2.3.4
B 寄存器 (F0H)
乘除法操作时 B 寄存器用来存放第二个操作数,在其它指令中用作暂存寄存器。
2.3.5
程序状态字 (PSW, D0H)
PSW 中存放着多个状态位,指示内核的当前状态。
PSW
程序状态字寄存器
RMAP: X, PAGE: X
(D0H)
复位值:00H
7
6
5
4
3
2
1
0
CY
AC
F0
RS1
RS0
OV
F1
P
rwh
rwh
rw
rw
rw
rwh
rw
rh
用户手册
XC800 内核 , V1.0.2
2-3
V1.1, 2010-09
XC83x
XC800 内核
符号
位
类型
描述
P
0
rh
奇偶校验标志
每条指令执行后由硬件置位 / 清零,指示累加器中
“1”的个数为奇数 / 偶数,如偶校验。
F1
1
rw
通用标志
OV
2
rwh
溢出标志
用于算术运算指令。
RS0,
RS1
3,
4
rw
寄存器组 (Register Bank)选择位
由这两位进行 Bank 选择。
00B 选择 Bank 0,数据地址 00H - 07H
01B 选择 Bank 1,数据地址 08H - 0FH
10B 选择 Bank 2,数据地址 10H - 17H
11B 选择 Bank 3,数据地址 18H - 1FH
F0
5
rw
通用标志
AC
6
rwh
辅助进位标志
用于执行 BCD 操作的指令。
CY
7
rwh
进位标志
用于算术运算指令。
用户手册
XC800 内核 ,V1.0.2
2-4
V1.1, 2010-09
XC83x
XC800 内核
2.3.6
扩展操作寄存器 (EO, A2H)
指令集中还包括一条指令 MOVC@(DPTR++), A ,可对由 RAM 实现的程序存储器进行
写操作。 CPU 初始化时,可用该指令将代码下载到程序存储器中,也可用该指令进行软
件更新。该指令将累加器中的内容复制到当前数据指针指向的程序存储器地址中,然后
数据指针加 1。
该指令的操作码为 A5H,和软件暂停指令 TRAP 的操作码相同 (见表 2-1)。扩展操作
(EO)寄存器中的位 TRAP_EN 用于选择操作码 A5H 所要执行的指令。当 TRAP_EN 为
0(缺省值)时,操作码 A5H 执行 MOVC 指令;当 TRAP_EN 为 1 时,操作码 A5H 执行
软件暂停指令 TRAP,该指令将 CPU 切换至调试模式执行断点处理。
寄存器 EO 还可用来选择当前的数据指针。
EO
扩展操作寄存器
RMAP: X, PAGE: X
7
6
(A2H)
5
复位值:00H
4
3
2
1
0
0
TRAP_EN
0
DPSEL2
DPSEL1
DPSEL0
r
rw
r
rw
rw
rw
符号
位
类型
DPSEL0,
DPSEL1,
DPSEL2
0,
1,
2
rw
数据指针选择
这些位用于选择当前的数据指针。
000B 选择 DPTR0
001B 选择 DPTR1
其它值:保留
TRAP_EN
4
rw
TRAP 使能位
0B
选择 MOVC @(DPTR++),A
1B
选择软件 TRAP 指令
0
[7:5]
r
保留
读操作返回 0,应写入 0。
用户手册
XC800 内核 , V1.0.2
描述
2-5
V1.1, 2010-09
XC83x
XC800 内核
2.3.7
功率控制寄存器 (PCON, 87H)
PCON 寄存器用于控制是否进入空闲模式以及 UART 模式 2 的波特率,另外还提供两个
通用标志位。
XC800 内核有两种省电模式:空闲模式和掉电模式。控制寄存器 PCON 可进入空闲模
式。空闲模式下,内核时钟关闭,但定时器、串口和中断控制器仍正常工作。在掉电模
式 1 下,整个 CPU 的时钟全部停止。
PCON
功率控制寄存器
RMAP: X, PAGE: X
7
6
(87H)
5
复位值:00H
4
3
2
1
0
SMOD
0
GF1
GF0
0
IDLE
rw
r
rw
rw
r
rw
符号
位
类型
描述
IDLE
0
rw
空闲模式使能位
0B
不进入空闲模式
进入空闲模式
1B
GF0
2
rw
通用标志位 0
GF1
3
rw
通用标志位 1
SMOD
7
rw
2 倍波特率使能位
该位控制 UART 模式 2 中的波特率产生。
0B
1 倍波特率
1B
2 倍波特率
0,
0
1,
[6:4]
r
保留
读操作返回 0,应写入 0。
2.3.8
中断寄存器
共有 1 个非可屏蔽和 14 个可屏蔽中断节点可用。
有关中断寄存器的详细说明,可参见中断一章的描述。
用户手册
XC800 内核 ,V1.0.2
2-6
V1.1, 2010-09
XC83x
XC800 内核
2.4
内核外设 SFR
2.4.1
定时器寄存器
内核有两个 16 位定时器 - 定时器 T0 和定时器 T1。
有关定时器寄存器的详细说明,请参见定时器 T0 和 T1 一章的描述。
2.4.2
UART 寄存器
UART 使用三个 SFR - PCON、 SCON 和 SBUF。
有关 UART 寄存器的详细说明,请参见章节 2.3.7 和 UART 一章的描述。
用户手册
XC800 内核 , V1.0.2
2-7
V1.1, 2010-09
XC83x
XC800 内核
2.5
指令时序
CPU 的机器周期由两个时钟周期组成,分别用拍 1(P1)和拍 2(P2)表示,对应 CPU
的两个不同状态。执行指令时,CPU 的状态由机器周期和状态编号(P1/P2)共同表示,
如:C2P1 表示第二个机器周期中的第一个时钟周期。可在机器周期的任一拍、或两拍访
问存储器;只能在 P2 结束时对 SFR 进行写操作。指令长度为 1、2 或 3 个字节,执行时
间为 1、 2 或 4 个机器周期。通常在当条指令的最后一个机器周期的 P2 结束时进行寄存
器内容的更新和下一个操作码的预取。
XC800 内核支持访问低速存储器,这通过插入等待周期来实现。 每个等待周期的时长为
一个机器周期,即两个时钟周期。例如:对于需要一个 / 两个等待状态的存储器而言,在
取操作数 / 操作码的每个字节时,访问时间延长一个机器周期。
图 2-2 给出由 CPU 状态和节拍表示的取指 / 执行时序。每条指令从 C1P1 开始执行,双
字节指令第二个字节的读取从 C1P1 开始。
图 2-2 (a) 给出两个单字节单周期 (1 × 机器周期)指令的时序图。第一个时序图表示下
一个操作码(C1P2)从无等待状态的存储器读取,指令在一个周期内完成;第二个时序
图表示操作码从 Flash 中读取,插入一个等待周期,相同的指令需要两个机器周期完成
(指令时间延长)。
图 2-2(b) 给出两个双字节单周期 (1 × 机器周期)指令的时序图。第一个时序图表示第
二个字节 (C1P1)和下一个操作码 (C1P2)从无等待状态的存储器中读取,指令在一
个周期内完成;第二个时序图表示每次读取 Flash 时插入一个等待周期 (共插入两个等
待周期),相同的指令需要三个机器周期完成 (指令时间延长)。
图 2-2 (c) 给出两个单字节双周期 (2 × 机器周期)指令的时序图。第一个时序图表示下
一个操作码(C2P2)从无等待状态的存储器中读取,指令在两个周期内完成;第二个时
序图表示操作码从需要 1/2 个等待周期的低速存储器中读取,插入一个等待周期,相同的
指令需要三个机器周期完成 (指令时间延长)。
注: 对于执行时间超过两个机器周期的指令,在访问需要 1/2 个等待周期的低速存储器
时,指令的执行周期不一定会延长。不过,需要保证每条指令的执行周期一致。可
参见表 2-1。
用户手册
XC800 内核 ,V1.0.2
2-8
V1.1, 2010-09
XC83x
XC800 内核
指令时序举例
fCCLK
读取下个操作码
(无等待)
C1P1
C1P2
下一条指令
读取下个操作码
(一个等待状态 )
C1P1
C1P2
等待
等待
下一条指令
(a) 单字节单周期指令 ,如 INC A
读取第二个字节
(无等待)
C1P1
读取下个操作码
(无等待)
C1P2
下一条指令
读取下个操作码
(一个等待状态 )
读取第二个字节
(一个等待状态 )
C1P1
等待
C1P2
等待
等待
等待
下一条指令
(b) 双字节单周期指令 , 如 ADD A, #data
读取下个操作码
(无等待)
C1P1
C1P2
C2P1
C2P2
下一条指令
读取下个操作码
(一个等待状态 )
C1P1
C1P2
C2P1
C2P2
等待
等待
下一条指令
(c) 单字节双周期指令 ,如 MOVX
图 2-2
CPU 指令时序
执行每条指令所需的时间包括:
· 译码 / 执行取回的操作码
· 读取操作数 (当指令长度超过一个字节时)
· 预取下条指令的首字节 (操作码)(CPU 流水线结构)
注: XC800 内核在执行当前指令的同时预取下一条指令的操作码。
表 2-1 列出 XC800 内核支持的所有指令。指令长度为 1、 2 或 3 个字节 (具体见 “字
节”一列)。每条指令的执行时间为 1、 2 或 4 个机器周期 (无等待状态)。表中给出执
行每条指令所需的机器周期数,共有两个值:第一个值对应从快速存储器(如 Boot ROM
和 XRAM)读取操作数和操作码的情况;第二个值对应从 (需要 1/2 个等待状态的)低
速存储器 (如 Flash)读取操作数和操作码 (以及有时访问数据),需要插入等待周期
的情况。一个机器周期包含两个 CCLK 时钟周期。
用户手册
XC800 内核 , V1.0.2
2-9
V1.1, 2010-09
XC83x
XC800 内核
表 2-1
指令一览表
助记符
十六进制
码
字节
机器周期
机器周期
(无等待状态) (1 个等待状态1))
算术运算
ADD A,Rn
28-2F
1
1
2
ADD A,dir
25
2
1
3
ADD A,@Ri
26-27
1
1
2
ADD A,#data
24
2
1
3
ADDC A,Rn
38-3F
1
1
2
ADDC A,dir
35
2
1
3
ADDC A,@Ri
36-37
1
1
2
ADDC A,#data
34
2
1
3
SUBB A,Rn
98-9F
1
1
2
SUBB A,dir
95
2
1
3
SUBB A,@Ri
96-97
1
1
2
SUBB A,#data
94
2
1
3
INC A
04
1
1
2
INC Rn
08-0F
1
1
2
INC dir
05
2
1
3
INC @Ri
06-07
1
1
2
DEC A
14
1
1
2
DEC Rn
18-1F
1
1
2
DEC dir
15
2
1
3
DEC @Ri
16-17
1
1
2
INC DPTR
A3
1
2
2
MUL AB
A4
1
4
4
DIV AB
84
1
4
4
DA A
D4
1
1
2
58-5F
1
1
2
逻辑运算
ANL A,Rn
ANL A,dir
55
2
1
3
ANL A,@Ri
56-57
1
1
2
用户手册
XC800 内核 ,V1.0.2
2-10
V1.1, 2010-09
XC83x
XC800 内核
表 2-1
指令一览表
助记符
十六进制
码
字节
机器周期
机器周期
(无等待状态) (1 个等待状态1))
ANL A,#data
54
2
1
3
ANL dir,A
52
2
1
3
ANL dir,#data
53
3
2
5
ORL A,Rn
48-4F
1
1
2
ORL A,dir
45
2
1
3
ORL A,@Ri
46-47
1
1
2
ORL A,#data
44
2
1
3
ORL dir,A
42
2
1
3
ORL dir,#data
43
3
2
5
XRL A,Rn
68-6F
1
1
2
XRL A,dir
65
2
1
3
XRL A,@Ri
66-67
1
1
2
XRL A,#data
64
2
1
3
XRL dir,A
62
2
1
3
XRL dir,#data
63
3
2
5
CLR A
E4
1
1
2
CPL A
F4
1
1
2
SWAP A
C4
1
1
2
RL A
23
1
1
2
RLC A
33
1
1
2
RR A
03
1
1
2
RRC A
13
1
1
2
MOV A,Rn
E8-EF
1
1
2
MOV A,dir
E5
2
1
3
MOV A,@Ri
E6-E7
1
1
2
MOV A,#data
74
2
1
3
数据传送
MOV Rn,A
F8-FF
1
1
2
MOV Rn,dir
A8-AF
2
2
4
MOV Rn,#data
78-7F
2
1
3
用户手册
XC800 内核 , V1.0.2
2-11
V1.1, 2010-09
XC83x
XC800 内核
表 2-1
指令一览表
助记符
十六进制
码
字节
机器周期
机器周期
(无等待状态) (1 个等待状态1))
MOV dir,A
F5
2
1
3
MOV dir,Rn
88-8F
2
2
4
MOV dir,dir
85
3
2
5
MOV dir,@Ri
86-87
2
2
4
MOV dir,#data
75
3
2
5
MOV @Ri,A
F6-F7
1
1
2
MOV @Ri,dir
A6-A7
2
2
4
MOV @Ri,#data
76-77
2
1
3
MOV DPTR,#data
90
3
2
5
MOVC A,@A+DPTR
93
1
2
3 or 42)
MOVC A,@A+PC
83
1
2
3 or 42)
MOVX A,@Ri
E2-E3
1
2
3
MOVX A,@DPTR
E0
1
2
3
MOVX @Ri,A
F2-F3
1
2
3
MOVX @DPTR,A
F0
1
2
3
PUSH dir
C0
2
2
4
POP dir
D0
2
2
4
XCH A,Rn
C8-CF
1
1
2
XCH A,dir
C5
2
1
3
XCH A,@Ri
C6-C7
1
1
2
XCHD A,@Ri
D6-D7
1
1
2
位操作
CLR C
C3
1
1
2
CLR bit
C2
2
1
3
SETB C
D3
1
1
2
SETB bit
D2
2
1
3
CPL C
B3
1
1
2
CPL bit
B2
2
1
3
ANL C,bit
82
2
2
4
ANL C,/bit
B0
2
2
4
用户手册
XC800 内核 ,V1.0.2
2-12
V1.1, 2010-09
XC83x
XC800 内核
表 2-1
指令一览表
助记符
十六进制
码
字节
机器周期
机器周期
(无等待状态) (1 个等待状态1))
ORL C,bit
72
2
2
ORL C,/bit
A0
2
2
4
MOV C,bit
A2
2
1
3
MOV bit,C
92
2
2
4
ACALL addr11
11->F1
2
2
4
LCALL addr16
12
3
2
5
RET
22
1
2
2 or 32)
RETI
32
1
2
2 or 32)
4
控制转移3)
AJMP addr 11
01->E1
2
2
4
LJMP addr 16
02
3
2
5
SJMP rel
80
2
2
4
JC rel
40
2
2
4
JNC rel
50
2
2
4
JB bit,rel
20
3
2
5
JNB bit,rel
30
3
2
5
JBC bit,rel
10
3
2
5
JMP @A+DPTR
73
1
2
2 or 32)
JZ rel
60
2
2
4
JNZ rel
70
2
2
4
CJNE A,dir,rel
B5
3
2
5
CJNE A,#d,rel
B4
3
2
5
CJNE Rn,#d,rel
B8-BF
3
2
5
CJNE @Ri,#d,rel
B6-B7
3
2
5
DJNZ Rn,rel
D8-DF
2
2
4
DJNZ dir,rel
D5
3
2
5
00
1
1
2
其它指令
NOP
附加指令
用户手册
XC800 内核 , V1.0.2
2-13
V1.1, 2010-09
XC83x
XC800 内核
表 2-1
指令一览表
助记符
十六进制
码
字节
机器周期
机器周期
(无等待状态) (1 个等待状态1))
MOVC @(DPTR++),A
A5
1
2
2 or 32)
TRAP
A5
1
1
–
1) 访问只需 1 个等待状态的低速存储器时,有些指令可能不需插入等待周期(通常操作码无需在下个周期进行读
取)。
2) 这和所访问的存储器的类型 (无等待状态、 1/2 个等待状态)有关。
3) 对于控制转移指令而言,跳转目标不同,指令的执行时间可能不同。
用户手册
XC800 内核 ,V1.0.2
2-14
V1.1, 2010-09
XC83x
存储器结构
3
存储器结构
XC83x 的 CPU 可寻址以下五个地址空间:
· 8 KB Boot ROM 程序存储器
· 256 B 内部 RAM 数据存储器
· 256 XRAM 存储器
(XRAM 可作为程序存储器或外部数据存储器进行读写)
· 128 B SFR 区
· 4 或 8 KB Flash 程序存储器
(8 KB 产品中包含一个 64 B 的用户 BSL Flash 扇区)
图 3-1 所示为 8 KB Flash 器件的存储器地址空间分配。
FFFF H
FFFF H
FF80H
用户BSL Flash 扇区
64 B2)
FF40H
FF00H
F100H
XRAM
256 B
F000H
XRAM
256 Bytes
F100H
F000H
E000H
Boot ROM
8 KB
C000H
B000H
Flash Bank 1
4 KB 1)
A000H
间接寻址
直接寻址
内部 RAM
特殊功能寄存器
FFH
2000H
Flash Bank 1
4 KB 1)
80H
1000H
7FH
Flash Bank 0
4 KB
40H
0000H
代码存储空间
0000H
外部数据存储空间
在调试模式下,该64字节地址段
由64字节监控RAM取代。
内部数据存储空间
1)
物理上的一个 4K Flash bank被映射到两个地址段 。Flash Bank 1只在 8 KB Flash产品中可用 。
2)
用户BSL Flash扇区只在 8 KB Flash产品中可用。
图 3-1
内部 RAM
00H
存储空间映射用户模式
8 KB Flash 器件的存储空间映射
用户手册
存储器结构 , V1.0
3-1
V1.1, 2010-09
XC83x
存储器结构
图 3-2 所示为 4 KB Flash 器件的存储器地址空间分配。
FFFF H
F100H
XRAM
256 B
F000H
FFFF H
XRAM
256 B
F100H
F000H
E000H
Boot ROM
8 KB
C000H
B000H
Flash Bank 0
4 KB 1)
A000H
间接寻址
直接寻址
内部 RAM
特殊功能寄存器
FFH
80H
1000H
7FH
Flash Bank 0
4 KB
40H
0000H
代码存储空间
1)
外部数据存储空间
在调试模式下,该64字节地址段由64字节
监控RAM取代。
00H
内部数据存储空间
物理上的一个 4K Flash bank被映射到两个地址段 。
图 3-2
3.1
0000H
内部 RAM
存储空间映射用户模式
4 KB Flash 器件的存储空间映射
程序存储器
理论上讲,程序存储区的大小为 64 KB。不过,只允许对已定义的程序存储区进行访问
(如存储空间映射图所示)。在 XC83x 中,定义的程序存储区由片上存储器占用。
3.2
数据存储器
数据存储空间由内部和外部数据存储空间组成。访问内部和外部数据空间时使用的指令
操作码不同。在 XC83x 中,片上 XRAM 位于外部数据空间,通过指令 MOVX 进行访问。
XC83x 不支持片外存储器访问。内部数据空间由内部 RAM (IRAM)和特殊功能寄存器
(SFR)占用,采用不同的寻址方式 (直接或间接寻址)访问。
用户手册
存储器结构 ,V1.0
3-2
V1.1, 2010-09
XC83x
存储器结构
3.2.1
内部数据存储器
内部数据存储器被划分为物理上分开的两个不同区域:256 字节 RAM 和 128 字节特殊功
能寄存器 (SFR)区。 RAM 的高 128 字节和 SFR 共用相同的地址段,通过不同的寻址
方式访问。RAM 的低 128 字节可通过直接寻址或寄存器间接寻址方式访问; RAM 的高
128 B 只能通过寄存器间接寻址方式访问; SFR 通过直接寻址方式访问。
RAM 地址段 20H 到 2FH 中的 16 个字节可位寻址;地址段 30H 到 7FH 可用作暂存寄存器
或堆栈。
3.2.2
外部数据存储器
256 字节 XRAM 被映射到外部数据存储区和程序存储区。可通过 MOVX 和 MOVC 指令
访问。
访问 XRAM 的 MOVX 指令使用 8 位或 16 位间接地址。 DPTR 寄存器用作 16 位寻址;
寄存器 R0 或 R1 用于构成 8 位地址。 8 位寻址时, XRAM 地址的高位字节由寄存器
XADDRH 定义。因此,向寄存器 XADDRH 中设置 XRAM 高位地址的写指令必须位于
MOVX 指令之前。
必须在访问 XADDRH 寄存器之前设置 SCU_PAGE.PAGE。
XADDRH
片上 XRAM 的高位地址
RMAP: 0, PAGE: 3
7
6
(F2H)
5
4
复位值:F0H
3
2
1
0
ADDRH
rw
符号
位
类型
描述
ADDRH
[7:0]
rw
片上 XRAM 的高位地址
在 XC83x 中,该值为 F0H。
用户手册
存储器结构 , V1.0
3-3
V1.1, 2010-09
XC83x
存储器结构
3.3
存储器保护策略
XC83x 中的存储器保护策略禁止所有外部访问,从而确保 Flash 中的关键数据和用户 IP
不被非法读取。
通过启动模式索引 / 列表 (BMI)实现存储器保护:一旦设置 BMI 进入用户模式,只要
该 BMI 不被用户程序擦除,则不允许进入其它启动模式。
因此,加载和执行外部程序的启动选择将被阻止,只允许执行从地址 0000H 开始的用户
程序。
3.4
特殊功能寄存器
特殊功能寄存器 (SFR)占据内部数据存储器的地址段 80H - FFH。除程序计数器之外,
所有的寄存器均位于该 SFR 区。这些 SFR 包括为 CPU 和片上外设提供接口的指针和寄
存器。由于内部数据存储区中只可存放 128 个 SFR,小于所需的寄存器总数,因此需要
采用地址扩展机制来增加可寻址 SFR 的数目。地址扩展机制包括:
· 映射
· 分页
3.4.1
映射地址扩展
在系统级通过映射进行地址扩展。SFR 区被扩展为两部分:标准(非映射)SFR 区和映
射 SFR 区。两个 SFR 区占据相同的地址段 80H 到 FFH,将可寻址 SFR 的数目扩展至
256 个。选择扩展地址区不由 CPU 指令直接控制,而是由位于地址单元 8FH 上的系统控
制寄存器 SYSCON0 中的位 RMAP 来控制。置位 SYSCON0 中的 RMAP,控制访问映
射 SFR 区;对 RMAP 清零,控制访问标准 SFR 区。 SFR 区选择如图 3-3 所示。
只要 RMAP 被置位,即可访问映射 SFR 区。该位不可由硬件自动清零。因此,在访问标
准 / 映射寄存器之前,必须由软件分别对 RMAP 清零 / 置位。
用户手册
存储器结构 ,V1.0
3-4
V1.1, 2010-09
XC83x
存储器结构
标准区 (RMAP = 0)
FF H
模块 1 SFR
SYSCON0.RMAP
模块 2 SFR
rw
…...
模块 n SFR
80 H
SFR 数据
(送至/来自 CPU)
映射区 (RMAP = 1)
FF H
模块(n+1) SFR
模块 (n+2) SFR
…...
模块 m SFR
80 H
内部数据
存储器地址
图 3-3
映射地址扩展
用户手册
存储器结构 , V1.0
3-5
V1.1, 2010-09
XC83x
存储器结构
3.4.1.1
系统控制寄存器 0
SYSCON0 寄存器用于 SFR 映射控制。
SYSCON0
系统控制寄存器 0
RMAP: X, PAGE: X
7
6
(8FH)
5
4
复位值:00H
3
2
0
0
RMAP
r
rw
符号
位
类型
描述
RMAP
0
rw
SFR 映射控制
0
访问非映射 (标准) SFR 区
1
访问映射 SFR 区
0
[7:1]
r
保留
读操作返回 0,应写入 0。
用户手册
存储器结构 ,V1.0
1
3-6
V1.1, 2010-09
XC83x
存储器结构
3.4.2
分页地址扩展
在模块级通过分页进一步进行地址扩展。映射地址扩展使 XC83x 的 SFR 数目达到 256
个,但即使这样, SFR 的数目仍小于片上外设所需的 SFR 总数。为了满足对 SFR 的需
求,某些外设采用内嵌局部地址扩展机制,增加可寻址 SFR 的数目。选择扩展地址区不
由 CPU 指令直接控制,而是由模块分页寄存器 MOD_PAGE 中的位域 PAGE 来控制。因
此,在访问和目标模块相关的 SFR 之前,必须先设置位域 PAGE。根据具体要求,每个
模块中可能包含的页数不同,每页上 SFR 的个数不同。除了要正确设置 RMAP 值来选择
SFR 区之外,用户还必须确保选择有效的 PAGE 指向所需 SFR。页选择如图 3-4 所示。
SFR 地址
(来自CPU)
页0
MOD_PAGE.PAGE
SFR0
rw
SFR1
…...
SFRx
页1
SFR0
SFR 数据
(送至/来自 CPU)
SFR1
…...
SFRy
…...
页q
SFR0
SFR1
…...
SFRz
模块
图 3-4
分页地址扩展
要访问位于 (不同于当前页的)其它页上的寄存器,必须退出当前页。这需要重新设置
分页寄存器的位域 PAGE,只有这样才能访问到所要的 SFR。
如果在访问分页寄存器和模块寄存器之间开始执行某个中断服务程序,且中断需要访问
位于另一页上的寄存器,则需要保存当前页设置,然后设置新页,最后恢复原先页设置。
用户手册
存储器结构 , V1.0
3-7
V1.1, 2010-09
XC83x
存储器结构
可以用保存域 MOD_STx(x = 0 - 3)来保存和恢复当前页的设置。所有支持该局部地址
扩展机制的外设各自均带有一组保存域。例如, ADC 的保存域为 ADC_STx。同时指出
应使用哪些保存域和新页值,用一次写操作即可完成:
· PAGE 中的内容在被新值覆盖之前保存在 MOD_STx 中
(在中断服务程序开始时保存当前页设置,并设置新页编号);或
· 用 MOD_STx 中的内容覆盖 PAGE 的内容,对写入 PAGE 的值不予理睬
(在中断服务程序结束时恢复中断发生之前的页设置)
MOD_ST3
MOD_ST2
MOD_ST1
MOD_ST0
STNR
分页寄存器
来自CPU的
更新数值
图 3-5
分页机制的页信息存储
通过这种分页机制,很多中断服务程序 (或其它程序)无需读出并保存上次使用的页信
息、即可改变页设置。仅用写操作使系统更加简单、高速。这种机制显著改善了小中断
服务程序的性能。
XC83x 的以下外设 / 寄存器支持局部地址扩展:
·
·
·
·
并行端口
模数转换器 (ADC)
捕获比较单元 6 (CCU6)
系统控制寄存器
用户手册
存储器结构 ,V1.0
3-8
V1.1, 2010-09
XC83x
存储器结构
3.4.2.1
分页寄存器
分页寄存器定义如下:
MOD_PAGE
模块 MOD 分页寄存器
7
6
复位值:00H
5
4
3
2
1
OP
STNR
0
PAGE
w
w
r
rw
0
符号
位
类型
描述
PAGE
[2:0]
rw
页信息
写入时,该值表示新页的值。
读出时,该值表示当前有效页的值。
STNR
[5:4]
w
保存编号
该编号指示在哪个保存位域上执行由 OP 确定的操
作。
若 OP = 10B,
PAGE 的内容在被新值覆盖之前保存在 MOD_STx
中。
若 OP = 11B,
PAGE 的内容被 MOD_STx 覆盖。写入 PAGE 的值
不予理睬。
00
01
10
11
OP
用户手册
存储器结构 , V1.0
[7:6]
w
选择 MOD_ST0
选择 MOD_ST1
选择 MOD_ST2
选择 MOD_ST3
操作
0X 手动保存页模式, STNR 的值被忽略,PAGE
被直接写入。
10
带有自动页保存的新页设置。当前写入 PAGE
中的内容被保存的同时,上次写入 PAGE 中的
内容被保存在 STNR 指定的位域 MOD_STx
中。
11
自动恢复页操作。对写入 PAGE 的内容不予理
睬, PAGE 的内容由 STNR 指定的位域
MOD_STx 中的值覆盖。
3-9
V1.1, 2010-09
XC83x
存储器结构
符号
位
类型
描述
0
3
r
保留
读操作返回 0,应写入 0。
3.4.3
位寻址
以格式 1XXXX000B (如: 80H, 88H, 90H, ..., F0H, F8H)为地址的 SFR 均为可位寻址寄
存器。
用户手册
存储器结构 ,V1.0
3-10
V1.1, 2010-09
XC83x
存储器结构
3.4.4
位保护方案
位保护方案通过 PASSWD 寄存器来防止某位由软件直接写入(即该位被保护)。当位域
MODE 为 11B,位域 PASS 中写入 10011B,将开放所有被保护位的访问权限;位域 PASS
中写入 10101B,会关闭所有被保护位的访问权限。在上述两种情况下,即使向 PASSWD
寄存器写入 98H 或 A8H,位域 MODE 的值不改变。向位域 PASS 写入 11000B 时,才能
改变位域 MODE 的值。例如,向寄存器 PASSWD 写 D0H 会禁止位保护方案。
请注意:如果未写入 “关闭访问权限”口令,权限最多开放 32 个 CCLK 时钟周期。如
果在 32 个 CCLK 时钟周期结束前再次写入 “开放访问权限”口令,将重新计数 32 个
CCLK 周期。被保护位包括:软件复位请求位 SWRQ ;看门狗定时器使能位 WDTEN ;
RTC 时钟计数寄存器 CNT0-5 和掉电使能位 PD。
·
·
·
·
RSTCON.SWRQ:软件复位请求位
PMCON0.PD:掉电使能位
WDTCON.WDTEN:WDT 使能位
RTC_CNTx (x = 0 - 5):RTC 时钟计数寄存器中的所有位
必须在访问 PASSWD 寄存器之前设置 SCU_PAGE.PAGE。
PASSWD
口令寄存器
RMAP: 0, PAGE: 1
7
复位值:07H
6
5
4
3
2
1
0
PASS
PROTECT
_S
MODE
wh
rh
rw
符号
位
类型
描述
MODE
[1:0]
rw
位保护方案控制位
00
保护方案禁止 - 允许直接访问被保护位。
11
保护方案使能 - 向位域 PASS 写入密码以开启
和关闭对被保护位的访问 (缺省值)。
其它:保护方案使能
这两位不能直接写入。要在 11B 和 00B 之间切换时,
必须将位域 PASS 设置为 11000B,只有这样
MODE[1:0] 的值才能被写入。
PROTECT_S
2
rh
位保护信号状态位
该位表明保护状态。
0
软件可以写入所有被保护位。
1
软件不能写入任何被保护位。
用户手册
存储器结构 , V1.0
3-11
V1.1, 2010-09
XC83x
存储器结构
符号
位
类型
描述
PASS
[7:3]
wh
口令位
位保护方案只能识别以下三个序列。
11000B使能设置位域 MODE。
10011B开放所有被保护位的写权限。
10101B关闭所有被保护位的写权限。
用户手册
存储器结构 ,V1.0
3-12
V1.1, 2010-09
XC83x
存储器结构
3.4.5
XC83x 寄存器概览
XC83x 中的 SFR 按功能单元分组。SFR 内容(位)总结见 章节 3.4.5.1 至章节 3.4.5.13。
注: 可位寻址 SFR 的地址以黑体标出。
3.4.5.1
CPU 寄存器
CPU SFR 可从标准存储器区和映射存储区访问 (RMAP = 0 或 1)。
表 3-1
地址
CPU 寄存器概览
寄存器名
位
7
6
5
4
3
2
1
0
DPL0
RMAP = 0 或 1
81H
82H
SP
堆栈指针寄存器
复位值 : 07H
SP
位域
rw
类型
DPL
复位值 : 00H
数据指针寄存器,低位字节
位域
DPL7
DPL6
DPL5
DPL4
DPL3
DPL2
DPL1
类型
rw
rw
rw
rw
rw
rw
rw
rw
83H
DPH
复位值 : 00H
数据指针寄存器,高位字节
位域
DPH7
DPH6
DPH5
DPH4
DPH3
DPH2
DPH1
DPH0
类型
rw
rw
rw
rw
rw
rw
rw
rw
87H
PCON
功率控制寄存器
位域
SMOD
GF1
GF0
0
IDLE
类型
rw
88H
TCON
复位值 : 00H
定时器控制寄存器
位域
TF1
类型
89H
TMOD
复位值 : 00H
定时器模式寄存器
位域
类型
rw
8AH
TL0
复位值 : 00H
定时器 T0 寄存器,低位字节
8BH
TL1
复位值 : 00H
定时器 T1 寄存器,低位字节
8CH
TH0
复位值 : 00H
定时器 T0 寄存器,高位字节
8DH
TH1
复位值 : 00H
定时器 T1 寄存器,高位字节
98H
SCON
复位值 : 00H
串行通道控制寄存器
99H
复位值 : 00H
SBUF
复位值 : 00H
串行数据缓存寄存器
A2H
EO
扩展操作寄存器
A8H
IEN0
复位值 : 00H
中断使能寄存器 0
复位值 : 00H
r
TR1
TF0
rwh
rw
rwh
GATE
1
T1S
T1M
TR0
rw
rw
rw
rw
rw
r
rw
IE1
IT1
IE0
IT0
rwh
rwh
rw
GATE
0
T0S
T0M
rw
rw
rw
rw
VAL
位域
类型
rwh
位域
VAL
类型
rwh
位域
VAL
类型
rwh
位域
VAL
rwh
类型
位域
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
类型
rw
rw
rw
rw
rw
rwh
rwh
rwh
0
DPSE
L2
DPSE
L1
DPSE
L0
VAL
位域
rwh
类型
0
位域
TRAP_
EN
rw
r
rw
rw
rw
位域
EA
0
r
ET2
ES
ET1
EX1
ET0
EX0
类型
rw
r
rw
rw
rw
rw
rw
rw
类型
用户手册
存储器结构 , V1.0
0
3-13
V1.1, 2010-09
XC83x
存储器结构
表 3-1
地址
CPU 寄存器概览 (cont’d)
寄存器名
位
7
6
5
4
3
2
1
0
PS
PT1
PX1
PT0
PX0
IP
复位值 : 00H
中断优先级寄存器
位域
类型
r
rw
rw
rw
rw
rw
rw
B9H
IPH
复位值 : 00H
中断优先级寄存器,高位字节
位域
0
PT2H
PSH
PT1H
PX1H
PT0H
PX0H
rw
rw
rw
rw
rw
rw
D0H
PSW
复位值 : 00H
程序状态字寄存器
位域
CY
AC
F0
RS1
RS0
OV
F1
P
类型
rwh
rwh
rw
rw
rw
rwh
rw
rh
ACC
累加寄存器
位域
ACC7
ACC6
ACC5
ACC4
ACC3
ACC2
ACC1
ACC0
类型
rw
rw
rw
rw
rw
rw
rw
rw
ECCIP
3
ECCIP
2
ECCIP
1
ECCIP
0
EXM
EX2
ESSC
EADC
E0H
复位值 : 00H
0
PT2
B8H
r
类型
E8H
IEN1
复位值 : 00H
中断使能寄存器 1
位域
类型
rw
rw
rw
rw
rw
rw
rw
rw
F0H
B
B 寄存器
位域
B7
B6
B5
B4
B3
B2
B1
B0
类型
rw
rw
rw
rw
rw
rw
rw
rw
F8H
IP1
复位值 : 00H
中断优先级寄存器 1
位域
PCCIP
3
PCCIP
2
PCCIP
1
PCCIP
0
PXM
PX2
PSSC
PADC
类型
rw
rw
rw
rw
rw
rw
rw
rw
F9H
IPH1
复位值 : 00H
中断优先级寄存器 1,高位字节
位域
PCCIP
3H
PCCIP
2H
PCCIP
1H
PCCIP
0H
PXMH
PX2H
PSSC
H
PADC
H
类型
rw
rw
rw
rw
rw
rw
rw
rw
4
3
2
1
0
3.4.5.2
复位值 : 00H
MDU 寄存器
MDU SFR 可从标准存储器区访问 (RMAP = 0 )。
表 3-2
地址
MDU 寄存器概览
寄存器名
位
7
6
5
RMAP = 0
B0H
MDUSTAT
复位值 : 00H
MDU 状态寄存器
位域
0
BSY
IERR
IRDY
类型
r
rh
rwh
rwh
B1H
MDUCON
复位值 : 00H
MDU 控制寄存器
位域
IE
IR
RSEL
STAR
T
OPCODE
类型
rw
rw
rw
rwh
rw
B2H
MD0
复位值 : 00H
MDU 数据寄存器 0
位域
类型
rw
B2H
MR0
复位值 : 00H
MDU 结果寄存器 0
位域
DATA
类型
rh
B3H
MD1
复位值 : 00H
MDU 数据寄存器 1
位域
DATA
类型
rw
B3H
MR1
复位值 : 00H
MDU 结果寄存器 1
位域
DATA
类型
rh
用户手册
存储器结构 ,V1.0
DATA
3-14
V1.1, 2010-09
XC83x
存储器结构
表 3-2
地址
MDU 寄存器概览 (cont’d)
寄存器名
位
7
6
5
4
3
B4H
MD2
复位值 : 00H
MDU 数据寄存器 2
位域
类型
rw
B4H
MR2
复位值 : 00H
MDU 结果寄存器 2
位域
DATA
类型
rh
B5H
MD3
复位值 : 00H
MDU 数据寄存器 3
位域
DATA
类型
rw
B5H
MR3
复位值 : 00H
MDU 结果寄存器 3
位域
DATA
类型
rh
B6H
MD4
复位值 : 00H
MDU 数据寄存器 4
位域
DATA
类型
rw
B6H
MR4
复位值 : 00H
MDU 结果寄存器 4
位域
DATA
类型
rh
B7H
MD5
复位值 : 00H
MDU 数据寄存器 5
位域
DATA
类型
rw
B7H
MR5
复位值 : 00H
MDU 结果寄存器 5
位域
DATA
类型
rh
用户手册
存储器结构 , V1.0
2
1
0
DATA
3-15
V1.1, 2010-09
XC83x
存储器结构
3.4.5.3
CORDIC 寄存器
CORDIC SFR 从标准存储器区访问 (RMAP = 0 )。
表 3-3
地址
CORDIC 寄存器概览
寄存器名
位
7
6
5
4
3
2
1
0
INT_E
N
EOC
ERRO
R
BSY
rwh
rh
RMAP = 1
BAH
BBH
BCH
BDH
BEH
BFH
CD_CORDXL
复位值:00H
CORDIC X 数据寄存器,
低位字节
DATAL
位域
类型
rw
CD_CORDXH
复位值:00H
CORDIC X 数据寄存器,
高位字节
位域
DATAH
类型
rw
CD_CORDYL
复位值:00H
CORDIC Y 数据寄存器,
低位字节
位域
DATAL
类型
rw
CD_CORDYH
复位值:00H
CORDIC Y 数据寄存器,
高位字节
位域
DATAH
类型
rw
CD_CORDZL
复位值:00H
CORDIC Z 数据寄存器,
低位字节
位域
DATAL
类型
rw
CD_CORDZH
复位值:00H
CORDIC Z 数据寄存器,
高位字节
位域
DATAH
类型
rw
A0H
CD_STATC
复位值:00H
CORDIC 状态和数据控制
寄存器
位域
KEEP
Z
KEEP
Y
类型
rw
rw
rw
rw
rw
A1H
CD_CON
复位值:00H
CORDIC 控制寄存器
位域
MPS
X_USI
GN
ST_M
ODE
ROTV
EC
MODE
ST
类型
rw
rw
rw
rw
rw
rwh
4
3
3.4.5.4
KEEP
X
DMAP
rh
系统控制寄存器
系统控制 SFR 从标准存储器区访问 (RMAP = 0 )。
表 3-4
地址
SCU 寄存器概览
寄存器名
位
7
6
5
2
1
0
RMAP = 0 或 1
8FH
SYSCON0
复位值 : 00H
系统控制寄存器 0
位域
0
RMAP
类型
r
rw
RMAP = 0
F1H
SCU_PAGE
复位值 : 00H
系统控制分页寄存器
位域
OP
STNR
0
PAGE
类型
w
w
r
rw
RMAP = 0, PAGE 0
用户手册
存储器结构 ,V1.0
3-16
V1.1, 2010-09
XC83x
存储器结构
表 3-4
地址
SCU 寄存器概览 (cont’d)
寄存器名
7
6
5
4
3
2
1
0
位域
NMI
XTAL
CLK
NMI
ECC
NMI
VDDP
NMI
VDDC
NMI
OCDS
NMI
FLASH
NMI
OSC
CLK
NMI
WDT
类型
rw
rw
rw
rw
rw
rw
rw
rw
位
EEH
NMICON
NMI 控制寄存器
复位值 : 00H
EFH
EXICON0
复位值 : F0H
外部中断控制寄存器 0
位域
EXINT3
类型
rw
F2H
IRCON0
复位值 : 00H
中断请求寄存器 0
位域
0
类型
r
F3H
IRCON1
复位值 : 00H
中断请求寄存器 1
位域
0
类型
r
F4H
EXICON1
复位值 : 3FH
外部中断控制寄存器 1
位域
F5H
IRCON2
复位值 : 00H
中断请求寄存器 2
位域
F6H
IRCON3
复位值 : 00H
中断请求寄存器 3
F7H
NMISR
NMI 状态寄存器
EXINT1
EXINT0
rw
rw
rw
EXINT
5
rwh
EXINT
4
EXINT
3
0
rwh
rwh
rwh
ADCS
R0
RIR
TIR
EIR
rwh
rwh
r
rwh
rwh
rwh
EXINT5
r
类型
EXINT
2
ADCS
R1
0
EXINT4
rw
0
rw
CCU6
SR1
0
CCU6
SR0
类型
r
rwh
r
rwh
位域
0
CCU6
SR3
0
CCU6
SR2
r
类型
复位值 : 00H
EXINT2
rwh
r
rwh
位域
FNMI
XTAL
CLK
FNMI
ECC
FNMI
VDDP
FNMI
VDDC
FNMI
OCDS
FNMI
FLASH
FNMI
OSC
CLK
FNMI
WDT
类型
rwh
rwh
rwh
rwh
rwh
rwh
rwh
rwh
VDDP
TH
VDDC
TH
VDDP
BOBP
VDDP
BOA
VDDP
PW
VDDC
PW
RMAP = 0, PAGE 1
EEH
SDCON
复位值 : 34H
电源检测控制寄存器
位域
0
EFH
PMCON1
复位值 : 00H
功率模式控制寄存器 1
位域
IIC_
DIS
LTS_
DIS
类型
rw
rw
F2H
PASSWD
口令寄存器
位域
F3H
PMCON0
复位值 : 01H
功率模式控制寄存器 0
位域
F4H
OSC_CON
OSC 控制寄存器
位域
0
INT
OSC_
ST
类型
r
rh
F5H
ID
ID 寄存器
r
类型
复位值 : 07H
用户手册
存储器结构 , V1.0
rw
rw
rw
rw
T2_
DIS
CCU_
DIS
SSC_
DIS
ADC_
DIS
rw
rw
rw
rw
rw
rw
PROT
ECT_S
wh
0
MODE
rh
WK
SEL
r
类型
复位值 : UUH
rh
MDU_
DIS
PASS
类型
复位值 : 30H
rh
CDC_
DIS
PD
MODE
rw
rw
PD
rw
XPD
XTAL
2L
XTAL
OWD
RST
75K
OSC
2L
rh
rh
rwh
rh
rwh
rw
48M
OSC
2L
RC
OWD
RST
rh
rwh
位域
PRODID
VERID
类型
r
r
3-17
EWS
V1.1, 2010-09
XC83x
存储器结构
表 3-4
地址
SCU 寄存器概览 (cont’d)
寄存器名
位
F6H
WDTCON
复位值 : 00H
看门狗定时器控制寄存器
F7H
RSTCON
复位控制寄存器
7
6
位域
4
3
2
1
0
WINB
EN
WDT
PR
0
WDT
EN
WDT
RS
0
r
rw
rh
r
rw
rwh
r
位域
SWRQ
0
SOFT
RS
WDT
RST
WKRS
类型
rwh
r
rwh
rwh
rwh
类型
复位值 : 00H
5
0
RMAP = 0, PAGE 3
EEH
MODPISEL3
复位值 : 00H
外设输入选择寄存器 3
F2H
XADDRH
复位值 : F0H
片上 XRAM 高位地址
F3H
MODPISEL
复位值 : 00H
外设输入选择寄存器
位域
IST13HR1
IST12HR1
CTRAPIS
类型
rw
rw
rw
ADDRH
位域
rw
类型
位域
CIS
SIS
类型
rw
rw
rw
EXINT0IS
URRIS
F4H
MODPISEL1
复位值 : 00H
外设输入选择寄存器 1
位域
EXINT
2IS
F5H
MODPISEL2
复位值 : 00H
外设输入选择寄存器 2
F6H
MODSUSP
复位值 : 01H
模块挂起控制寄存器
位域
F7H
MODIEN
复位值 : 07H
外设中断使能寄存器
EXINT
1IS
类型
rw
rw
位域
0
T0IS
类型
r
rw
0
r
MIS
rw
T1IS
rw
T2IS
rw
T2EXIS
rw
rw
LTS
SUSP
RTC
SUSP
T2SUS
P
rw
rw
rw
T13SU
SP
T12SU
SP
WDTS
USP
rw
rw
rw
位域
CCU6
SR3
EN
CCU6
SR2
EN
0
RIREN
TIREN
EIREN
类型
rw
rw
r
rw
rw
rw
类型
RMAP = 0, PAGE 4
F3H
WDTREL
复位值 : 00H
看门狗定时器重载寄存器
F4H
WDTWINB
复位值 : 00H
看门狗窗界计数寄存器
F5H
WDTL
复位值 : 00H
看门狗定时器寄存器,低位字节
F6H
WDTH
复位值 : 00H
看门狗定时器寄存器,高位字节
WDTREL
位域
类型
rw
位域
WDTWINB
类型
rw
位域
WDT
类型
rh
位域
WDT
类型
rh
RMAP = 0, PAGE 5
F2H
F3H
BCON
复位值 : 00H
波特率控制寄存器
位域
BGSEL
0
BRDIS
BRPRE
R
类型
rw
r
rw
rw
rw
BGL
复位值 : 00H
波特率定时器 / 重载寄存器,低
位字节
位域
BR_VALUE
FDSEL
类型
rwh
rw
用户手册
存储器结构 ,V1.0
3-18
V1.1, 2010-09
XC83x
存储器结构
表 3-4
地址
F4H
SCU 寄存器概览 (cont’d)
寄存器名
位
BGH
复位值 : 00H
波特率定时器 / 重载寄存器,高
位字节
7
6
5
4
3
位域
BR_VALUE
类型
rwh
F5H
LINST
LIN 状态寄存器
复位值 : 00H
位域
BGS
SYNE
N
ERRS
YN
类型
rw
rw
rwh
F6H
FEAL
复位值 : 00H
Flash 错误地址寄存器,低位字
节
位域
ECCERRADDR
类型
rh
FEAH
复位值 : 00H
Flash 错误地址寄存器,高位字
节
位域
ECCERRADDR
类型
rh
F7H
3.4.5.5
2
1
EOFS
YN
BRK
0
rwh
rwh
r
0
端口寄存器
端口 SFR 从标准存储器区访问 (RMAP = 0)。
表 3-5
地址
端口寄存器概览
寄存器名
位
7
6
5
4
3
2
1
0
RMAP = 0
8EH
PORT_PAGE
端口分页寄存器
复位值:00H
位域
OP
STNR
0
PAGE
类型
w
w
r
rw
RMAP = 0, PAGE 0
80H
位域
P7
P6
P5
P4
P3
P2
P1
类型
rw
rw
rw
rw
rw
rw
rw
rw
86H
P0_DATAIN
复位值 : UUH 位域
P0 口数据输入寄存器
类型
P7
P6
P5
P4
P3
P2
P1
P0
90H
P1_DATA
复位值 : 3FH
P1 口数据寄存器
位域
类型
r
rw
rw
rw
rw
rw
rw
91H
P1_DATAIN
复位值 : UUH
P1 口数据输入寄存器
位域
0
P5
P4
P3
P2
P1
P0
92H
P1_OCD
复位值 : 00H
P1 口过流检测寄存器
位域
类型
rw
rw
94H
P2_DATAIN
复位值 : UUH
P2 口数据输入寄存器
位域
P7
P6
类型
rh
rh
rh
C8H
P3_DATAOUT 复位值 : 07H
P3 口数据输出寄存器
位域
类型
r
rw
rw
rw
C9H
P3_DATAIN
复位值 : UUH
P3 口数据输入寄存器
位域
0
P2
P1
P0
类型
r
rw
rw
rw
P0_DATAOUT
复位值 : FFH
P0 口数据输出寄存器
rh
rh
0
r
类型
P3_O
CEN
P2_O
CEN
P0
rh
rh
rh
rh
rh
rh
P5
P4
P3
P2
P1
P0
rh
rh
rh
rh
rh
rh
P1_O
CEN
P0_O
CEN
P3_O
CF
P2_O
CF
P1_O
CF
P0_O
CF
rw
rw
rwh
rwh
rwh
rwh
P5
P4
P3
P2
P1
P0
rh
rh
rh
rh
rh
P2
P1
P0
0
RMAP = 0, PAGE 1
用户手册
存储器结构 , V1.0
3-19
V1.1, 2010-09
XC83x
存储器结构
表 3-5
端口寄存器概览 (cont’d)
位
7
6
5
4
3
2
1
0
P0_PUDSEL
复位值 : EFH
P0 口上拉 / 下拉选择寄存器
位域
P7
P6
P5
P4
P3
P2
P1
P0
类型
rw
rw
rw
rw
rw
rw
rw
rw
86H
P0_PUDEN
复位值 : C4H
P0 口上拉 / 下拉使能寄存器
位域
P7
P6
P5
P4
P3
P2
P1
P0
类型
rw
90H
P1_PUDSEL
复位值 : 3FH
P1 口上拉 / 下拉选择寄存器
位域
类型
r
rw
rw
rw
rw
rw
rw
91H
P1_PUDEN
复位值 : 00H
P1 口上拉 / 下拉使能寄存器
位域
0
P5
P4
P3
P2
P1
P0
类型
r
rw
rw
92H
P1_OCPED
复位值 : 00H
P1 口过流检测使能寄存器
位域
93H
P2_PUDSEL
复位值 : FFH
P2 口上拉 / 下拉选择寄存器
位域
类型
rw
rw
rw
rw
rw
rw
rw
rw
94H
P2_PUDEN
复位值 : 00H
P2 口上拉 / 下拉使能寄存器
位域
P7
P6
P5
P4
P3
P2
P1
P0
类型
rw
rw
rw
rw
rw
rw
rw
rw
C8H
P3_PUDSEL
复位值 : BFH
P3 口上拉 / 下拉选择寄存器
位域
P7
P6
P5
P4
P3
P2
P1
P0
类型
rw
rw
rw
rw
rw
rw
rw
rw
C9H
P3_PUDEN
复位值 :40H
P3 口上拉 / 下拉使能寄存器
位域
P7
P6
P5
P4
P3
P2
P1
P0
类型
rw
rw
rw
rw
rw
rw
rw
rw
P0_ALTSEL0
复位值 : 00H
P0 口复用功能选择寄存器 0
位域
0
P6
P5
P4
P3
P2
P1
P0
类型
r
rw
rw
rw
rw
rw
rw
rw
85H
P0_ALTSEL2
复位值 : 00H
P0 口复用功能选择寄存器 2
位域
0
P6
P5
P4
类型
r
rw
rw
rw
86H
P0_ALTSEL1
复位值 : 00H
P0 口复用功能选择寄存器 1
位域
0
P6
P5
P4
P3
P2
P1
P0
类型
r
rw
rw
rw
rw
rw
rw
rw
90H
P1_ALTSEL0
复位值 : 00H
P1 口复用功能选择寄存器 0
位域
P5
P4
P3
P2
P1
P0
类型
r
rw
rw
rw
rw
rw
rw
91H
P1_ALTSEL1
复位值 : 00H
P1 口复用功能选择寄存器 1
位域
0
P5
P4
P3
P2
P1
P0
类型
r
rw
rw
rw
C8H
P3_ALTSEL0
复位值 : 00H
P3 口复用功能选择寄存器 0
位域
类型
r
rw
rw
rw
C9H
P3_ALTSEL1
复位值 : 00H
P3 口复用功能选择寄存器 1
位域
0
P2
P1
P0
类型
r
rw
rw
rw
P0
地址
80H
寄存器名
rw
0
rw
rw
rw
rw
rw
rw
P5
P4
P3
P2
P1
P0
0
r
类型
P7
P6
P5
P4
rw
rw
rw
rw
P3
P2
P1
P0
rw
rw
rw
rw
P3
P2
P1
P0
RMAP = 0, PAGE 2
80H
0
0
r
0
rw
rw
rw
P2
P1
P0
RMAP = 0, PAGE 3
80H
90H
P0_OD
复位值 : FFH
P0 口漏级开路输出控制寄存器
位域
P7
P6
P5
P4
P3
P2
P1
类型
rw
rw
rw
rw
rw
rw
rw
rw
P1_OD
复位值 : 3FH
P1 口漏级开路输出控制寄存器
位域
0
P5
P4
P3
P2
P1
P0
类型
r
rw
rw
rw
rw
rw
rw
用户手册
存储器结构 ,V1.0
3-20
V1.1, 2010-09
XC83x
存储器结构
表 3-5
地址
端口寄存器概览 (cont’d)
寄存器名
位
7
6
5
4
3
2
1
0
P2
P1
P0
P1_SLEW
复位值 : 00H
P1 口翻转速度控制寄存器
位域
rw
rw
rw
rw
94H
P2_EN
P2 口使能寄存器
位域
P7
P6
P5
P4
P3
P2
P1
P0
类型
rw
rw
rw
rw
rw
C8H
P3_OD
复位值 : 07H
P3 口漏级开路输出控制寄存器
3.4.5.6
复位值 : 00H
0
P3
92H
r
类型
rw
rw
rw
位域
0
P2
P1
P0
类型
r
rw
rw
rw
2
1
0
ADC 寄存器
ADC SFR 从标准存储器区访问 (RMAP = 0)。
表 3-6
地址
ADC 寄存器概览
寄存器名
位
7
6
5
4
3
RMAP = 0
D1H
ADC_PAGE
ADC 分页寄存器
复位值 : 00H
位域
OP
STNR
0
PAGE
类型
w
w
r
rw
ORCIE
N
CLCIE
N
rw
rw
RMAP = 0, PAGE 0
CAH
ADC_GLOBCTR 复位值 : 30H
全局控制寄存器
位域
ANON
DW
CTC
CBH
ADC_GLOBSTR 复位值 : 00H
全局状态寄存器
类型
rw
rw
rw
CCH
ADC_PRAR
复位值 : 00H
优先级和仲裁寄存器
CDH
ADC_LCBR0
复位值 : 70H
边界检测寄存器 0
位域
CEH
ADC_INPCR0
复位值 : 00H
输入综合寄存器 0
位域
0
类型
r
0
位域
CHNR
r
0
r
0
BUSY
r
rh
rh
位域
ASEN
1
ASEN
0
0
ARBM
CSM1
PRIO1
CSM0
PRIO0
类型
rw
rw
r
rw
rw
rw
rw
rw
LORE
1
LORE
0
类型
rh
SAMP
LE
BOUND0
rw
类型
CFH
ADC_LCBR1
复位值 : B0H
边界检测寄存器 1
位域
D2H
ADC_LORE
复位值 : 00H
锁存超出范围事件寄存器
位域
D3H
ADC_ENORC
复位值 : 00H
使能超出范围比较器寄存器
STC
rw
BOUND1
rw
类型
LORE
7
LORE
6
LORE
5
LORE
4
LORE
3
LORE
2
类型
rwh
rwh
rwh
rwh
rwh
rwh
rwh
rwh
位域
ENOR
C7
ENOR
C6
ENOR
C5
ENOR
C4
ENOR
C3
ENOR
C2
ENOR
C1
ENOR
C0
类型
rw
rw
rw
rw
rw
rw
rw
rw
位域
BFEN
LCC
REFSEL
RESRSEL
类型
rw
rw
rw
rw
RMAP = 0, PAGE 1
CAH
ADC_CHCTR0
复位值 : 00H
通道控制寄存器 0
用户手册
存储器结构 , V1.0
3-21
V1.1, 2010-09
XC83x
存储器结构
表 3-6
地址
ADC 寄存器概览 (cont’d)
寄存器名
位
7
6
4
3
LCC
2
REFSEL
1
0
ADC_CHCTR1
复位值 : 00H
通道控制寄存器 1
位域
类型
rw
rw
rw
rw
CCH
ADC_CHCTR2
复位值 : 00H
通道控制寄存器 2
位域
BFEN
LCC
REFSEL
RESRSEL
类型
rw
rw
rw
rw
CDH
ADC_CHCTR3
复位值 : 00H
通道控制寄存器 3
位域
0
LCC
REFSEL
RESRSEL
类型
r
rw
rw
rw
CEH
ADC_CHCTR4
复位值 : 00H
通道控制寄存器 4
位域
0
LCC
REFSEL
RESRSEL
类型
r
rw
rw
rw
CFH
ADC_CHCTR4
复位值 : 00H
通道控制寄存器 5
位域
0
LCC
REFSEL
RESRSEL
类型
r
rw
rw
rw
D2H
ADC_CHCTR4
通道控制寄存 6
位域
0
LCC
REFSEL
RESRSEL
D3H
ADC_CHCTR4
复位值 : 00H
通道控制寄存器 7
复位值 : 00H
BFEN
5
CBH
RESRSEL
类型
r
rw
rw
rw
位域
0
LCC
REFSEL
RESRSEL
类型
r
rw
rw
rw
RMAP = 0, PAGE 2
CAH
ADC_RESR0L
复位值 : 00H
结果寄存器 0,低位字节
位域
RESULT
VF
DRC
CHNR
类型
rh
rh
rh
rh
CBH
ADC_RESR0H
复位值 : 00H
结果寄存器 0,高位字节
位域
CCH
ADC_RESR1L
复位值 : 00H
结果寄存器 1,低位字节
位域
RESULT
VF
DRC
CHNR
类型
rh
rh
rh
rh
CDH
ADC_RESR1H
复位值 : 00H
结果寄存器 1,高位字节
位域
CEH
ADC_RESR2L
复位值 : 00H
结果寄存器 2,低位字节
位域
RESULT
VF
DRC
CHNR
类型
rh
rh
rh
rh
CFH
ADC_RESR2H
复位值 : 00H
结果寄存器 2,高位字节
位域
D2H
ADC_RESR3L
复位值 : 00H
结果寄存器 3,低位字节
位域
RESULT
VF
DRC
CHNR
类型
rh
rh
rh
rh
ADC_RESR3H
复位值 : 00H
结果寄存器 3,高位字节
位域
RESULT
类型
rh
D3H
RESULT
rh
类型
RESULT
rh
类型
RESULT
rh
类型
RMAP = 0, PAGE 4
CAH
ADC_RCR0
复位值 : 00H
结果控制寄存器 0
CBH
ADC_RCR1
复位值 : 00H
结果控制寄存器 1
用户手册
存储器结构 ,V1.0
位域
VFCT
R
WFR
0
IEN
0
DLPF
0
DRCT
R
类型
rw
rw
r
rw
r
rw
r
rw
位域
VFCT
R
WFR
0
IEN
0
DLPF
0
DRCT
R
类型
rw
rw
r
rw
r
rw
r
rw
3-22
V1.1, 2010-09
XC83x
存储器结构
表 3-6
地址
ADC 寄存器概览 (cont’d)
寄存器名
位
CCH
ADC_RCR2
复位值 : 00H
结果控制寄存器 2
CDH
ADC_RCR3
复位值 : 00H
结果控制寄存器 3
CEH
ADC_VFCR
复位值 : 00H
有效标志清零寄存器
CFH
ADC_ALR0
假名寄存器 0
D2H
ADC_CNF
复位值 : 00H
配置超出范围比较器寄存器
D3H
复位值 : 00H
ADC_ETRCR
复位值 : 00H
外部触发控制寄存器
位域
7
6
5
4
3
2
1
0
VFCT
R
WFR
0
IEN
0
DLPF
0
DRCT
R
类型
rw
rw
r
rw
r
rw
r
rw
位域
VFCT
R
WFR
0
IEN
0
DLPF
0
DRCT
R
类型
rw
rw
r
rw
位域
0
类型
r
r
rw
r
rw
VFC3
VFC2
VFC1
VFC0
w
w
w
w
0
位域
ALIAS0
r
类型
rw
位域
CNF7
CNF6
CNF5
CNF4
CNF3
CNF2
CNF1
CNF0
类型
rw
rw
rw
rw
rw
rw
rw
rw
位域
0
ETRSEL1
ETRSEL0
类型
r
rw
rw
RMAP = 0, PAGE 5
CAH
ADC_CHINFR
复位值 : 00H
通道中断标志寄存器
CBH
ADC_CHINCR
复位值 : 00H
通道中断清零寄存器
CCH
ADC_CHINSR
复位值 : 00H
通道中断置位寄存器
CEH
ADC_EVINFR
复位值 : 00H
事件中断标志寄存器
CFH
ADC_EVINCR
复位值 : 00H
事件中断清零标志寄存器
D2H
ADC_EVINSR
复位值 : 00H
事件中断置位标志寄存器
位域
CHINF
7
CHINF
6
CHINF
5
CHINF
4
CHINF
3
CHINF
2
CHINF
1
CHINF
0
类型
rh
rh
rh
rh
rh
rh
rh
rh
位域
CHINC
7
CHINC
6
CHINC
5
CHINC
4
CHINC
3
CHINC
2
CHINC
1
CHINC
0
类型
w
w
w
w
w
w
w
w
位域
CHINS
7
CHINS
6
CHINS
5
CHINS
5
CHINS
3
CHINS
2
CHINS
1
CHINS
0
w
类型
w
w
w
w
位域
EVINF
7
EVINF
6
EVINF
5
EVINF
4
w
0
w
w
EVINF
1
EVINF
0
类型
rh
rh
rh
rh
r
rh
rh
位域
EVINC
7
EVINC
6
EVINC
5
EVINC
4
0
EVINC
1
EVINC
0
类型
w
w
w
w
r
w
w
位域
EVINS
7
EVINS
6
EVINS
5
EVINS
4
0
EVINS
1
EVINS
0
类型
w
w
w
w
r
w
w
ADC_CRCR1
复位值 : 00H
转换请求控制寄存器 1
位域
CH7
CH6
CH5
CH4
CH3
CH2
CH1
CH0
类型
rwh
rwh
rwh
rwh
rwh
rwh
rwh
rwh
CBH
ADC_CRPR1
复位值 : 00H
转换请求挂起寄存器 1
位域
CHP7
CHP6
CHP5
CHP4
CHP3
CHP2
CHP1
CHP0
类型
rwh
rwh
rwh
rwh
rwh
rwh
rwh
rwh
CCH
ADC_CRMR1
复位值 : 00H
转换请求模式寄存器 1
位域
0
LDEV
CLRP
ND
SCAN
ENSI
ENTR
0
ENGT
类型
r
w
w
rw
rw
rw
r
rw
RMAP = 0, PAGE 6
CAH
用户手册
存储器结构 , V1.0
3-23
V1.1, 2010-09
XC83x
存储器结构
表 3-6
地址
ADC 寄存器概览 (cont’d)
寄存器名
7
6
5
4
3
2
1
0
位域
CEV
TREV
FLUS
H
CLRV
0
ENTR
0
ENGT
类型
w
r
rw
r
位
CDH
ADC_QMR0
复位值 : 00H
队列模式寄存器 0
CEH
ADC_QSR0
复位值 : 20H
队列状态寄存器 0
CFH
ADC_Q0R0
队列 0 寄存器 0
类型
rh
D2H
ADC_QBUR0
复位值 : 00H
队列备份寄存器 0
位域
EXTR
类型
rh
D2H
ADC_QINR0
复位值 : 00H
队列输入寄存器 0
位域
EXTR
类型
w
w
r
类型
用户手册
存储器结构 ,V1.0
复位值 : 00H
位域
w
0
位域
EXTR
w
w
EMPT
Y
EV
0
rw
FILL
rh
rh
r
rh
RF
V
0
REQCHNR
rh
rh
rh
r
rh
ENSI
RF
V
0
REQCHNR
rh
rh
rh
ENSI
RF
0
REQCHNR
w
r
rh
ENSI
3-24
r
rh
V1.1, 2010-09
XC83x
存储器结构
3.4.5.7
LEDSCU 寄存器
LEDSCU SFR 从标准存储器区访问 (RMAP = 0)。
表 3-7
地址
LEDSCU 寄存器概览
寄存器名
7
6
位域
LD_EN
TS_EN
类型
rw
rw
位
5
4
3
2
1
0
RMAP = 0
97H
LTS_GLOBCTL0 复位值 : 00H
全局控制寄存器 0
D4H
LTS_COMPARE 复位值 : 00H
时间片比较映射寄存器
D5H
LTS_LDLINE
复位值 : 00H
LED 行值映射寄存器
D6H
LTS_LDTSCTL 复位值 : 00H
LED 和触摸感应控制寄存器
D7H
LTS_TSCTL
复位值 : 00H
触摸感应控制寄存器
D8H
LTS_GLOBCTL1 复位值 : 00H
全局控制寄存器 1
D9H
LTS_TSVAL
复位值 : 00H
触摸感应计数值寄存器
rw
SHD_CMP
位域
类型
rw
位域
SHD_LINE
rw
类型
NR_LEDCOL
位域
位域
COL
LEV
rw
类型
用户手册
存储器结构 , V1.0
CLK_PS
TS
CTR
OVL
TS
CTRR
NR_PADT
rw
TS
CTR
SAT
E
PULL
TSO
EXT
rw
PADT
SW
rw
PADT
类型
rw
rw
rw
rw
rw
rwh
位域
TSF
ITS
_EN
TFF
ITF
_EN
CLK
SEL
FNCOL
类型
rwh
rw
rwh
rw
rw
rh
位域
TSCTRVAL
类型
rwh
3-25
V1.1, 2010-09
XC83x
存储器结构
3.4.5.8
RTC 寄存器
RTC SFR 从标准存储器区访问 (RMAP = 0)。
表 3-8
地址
RTC 寄存器概览
寄存器名
位
7
6
5
4
3
2
1
0
RMAP = 0
95H
RTC_RTCON
复位值 : 00H
实时时钟控制寄存器
位域
SFRT
C
CRFT
C
ESRT
C
ECRT
C
RTCC
T
RTM
类型
rwh
rwh
rw
rw
rwh
rw
96H
RTC_RTCON1
复位值 : 02H
实时时钟控制寄存器 1
位域
E1H
RTC_CNT0
复位值 : 00H
时钟计数寄存器 0
模式 0
位域
0
MILLISECONDS
类型
r
rwh
E1H
E2H
E2H
E3H
E3H
E4H
E4H
E5H
E6H
E7H
E7H
E9H
0
rw
CNT_VAL
RTC_CNT0
复位值 : 00H
时钟计数寄存器 0
模式 1 和 3
位域
RTC_CNT1
复位值 : 00H
时钟计数寄存器 1
模式 0 和 2
位域
0
类型
r
rwh
类型
SECONDS
rwh
RTC_CNT1
复位值 : 00H
时钟计数寄存器 1
模式 1 和 3
位域
CNT_VAL
类型
rwh
RTC_CNT2
复位值 : 00H
时钟计数寄存器 2
模式 0 和 2
位域
0
类型
r
RTC_CNT2
复位值 : 00H
时钟计数寄存器 2
模式 1 和 3
位域
CNT_VAL
类型
rwh
RTC_CNT3
复位值 : 00H
时钟计数寄存器 3
模式 0 和 2
rw
RTYR
r
类型
RTCC
MINUTES
rwh
位域
0
HOURS
类型
r
rwh
CNT_VAL
RTC_CNT3
复位值 : 00H
时钟计数寄存器 3
模式 1 和 3
位域
类型
rwh
RTC_CNT4
复位值 : 00H
时钟计数寄存器 4
模式 0 和 2
位域
DAYS
类型
rwh
RTC_CNT5
复位值 : 00H
时钟计数寄存器 5
模式 0 和 2
位域
0
DAYS
类型
r
rw
RTC_RTCCR0
复位值 : 00H
实时时钟比较 / 捕获寄存器 0
模式 0
位域
0
类型
r
CC_MSECS
rwh
RTC_RTCCR0
复位值 : 00H
实时时钟比较 / 捕获寄存器 0
模式 1 和 3
位域
CC_VAL
类型
rwh
RTC_RTCCR1
复位值 : 00H
实时时钟比较 / 捕获寄存器 1
模式 0 和 2
位域
0
CC_SECONDS
类型
r
rwh
用户手册
存储器结构 ,V1.0
3-26
V1.1, 2010-09
XC83x
存储器结构
表 3-8
地址
E9H
EAH
EAH
EBH
EBH
ECH
EDH
RTC 寄存器概览 (cont’d)
寄存器名
RTC_RTCCR1
复位值 : 00H
实时时钟比较 / 捕获寄存器 1
模式 1 和 3
位
7
6
5
4
3
位域
CC_VAL
类型
rwh
2
1
0
RTC_RTCCR2
复位值 : 00H
实时时钟比较 / 捕获寄存器 2
模式 0 和 2
位域
0
类型
r
RTC_RTCCR2
复位值 : 00H
实时时钟比较 / 捕获寄存器 2
模式 1 和 3
位域
CC_VAL
类型
rwh
RTC_RTCCR3
复位值 : 00H
实时时钟比较 / 捕获寄存器 3
模式 0 和 2
位域
0
CC_HOURS
类型
r
rwh
RTC_RTCCR3
复位值 : 00H
实时时钟比较 / 捕获寄存器 3
模式 1 和 3
类型
rwh
RTC_RTCCR4
复位值 : 00H
实时时钟比较 / 捕获寄存器 4
模式 0 和 2
位域
CC_DAYS
类型
rwh
RTC_RTCCR5
复位值 : 00H
实时时钟比较 / 捕获寄存器 5
模式 0 和 2
位域
0
CC_D
AYS
类型
r
rw
用户手册
存储器结构 , V1.0
CC_MINUTES
rwh
CC_VAL
位域
3-27
V1.1, 2010-09
XC83x
存储器结构
3.4.5.9
定时器 T2 寄存器
定时器 T2 SFR 从标准存储器区访问 (RMAP = 0)。
表 3-9
地址
T2 寄存器概览
寄存器名
位
7
6
5
TF2
EXF2
4
3
2
1
0
EXEN
2
TR2
C_T2
CP_RL
2
rwh
rw
RMAP = 0
C0H
T2_T2CON
复位值 : 00H
定时器 T2 控制寄存器
位域
类型
rwh
rwh
C1H
T2_T2MOD
复位值 : 00H
定时器 T2 模式寄存器
位域
T2RE
GS
T2RH
EN
EDGE
SEL
PREN
类型
rw
rw
rw
rw
C2H
T2_RC2L
复位值 : 00H
定时器 T2 重载 / 捕获寄存器,
低位字节
位域
C3H
C4H
T2_RC2H
复位值 : 00H
定时器 T2 重载 / 捕获寄存器,
高位字节
T2_T2L
复位值 : 00H
定时器 T2 寄存器,低位字节
C5H
T2_T2H
复位值 : 00H
定时器 T2 寄存器,高位字节
C6H
T2_T2CON1
复位值 : 03H
定时器 T2 控制寄存器 1
0
r
rw
T2PRE
rw
rw
rw
DCEN
rw
rw
RC2
类型
rwh
位域
RC2
类型
rwh
位域
THL2
类型
rwh
位域
THL2
rwh
类型
位域
0
TF2EN
EXF2E
N
类型
r
rw
rw
1
0
3.4.5.10 CCU6 寄存器
CCU6 SFR 从标准存储器区访问 (RMAP = 0)。
表 3-10
地址
CCU6 寄存器概览
寄存器名
位
7
6
5
4
3
2
RMAP = 0
A3H
CCU6_PAGE
CCU6 分页寄存器
复位值 : 00H
位域
OP
STNR
0
PAGE
类型
w
w
r
rw
RMAP = 0, PAGE 0
9AH
9BH
9CH
CCU6_CC63SRL
复位值 : 00H
通道 CC63 捕获 / 比较 映射寄存器,
低位字节
CCU6_CC63SRH
复位值 : 00H
通道 CC63 捕获 / 比较 映射寄存器,
高位字节
CCU6_TCTR4L
复位值 : 00H
定时器控制寄存器 4,低位字节
用户手册
存储器结构 ,V1.0
CC63SL
位域
类型
rw
位域
CC63SH
rw
类型
位域
T12
STD
T12
STR
0
DT
RES
T12
RES
T12R
S
T12R
R
类型
w
w
r
w
w
w
w
3-28
V1.1, 2010-09
XC83x
存储器结构
表 3-10
地址
CCU6 寄存器概览 (cont’d)
寄存器名
7
6
T13
STD
T13
STR
0
类型
w
w
r
位域
STRM
CM
0
位
5
4
3
9DH
CCU6_TCTR4H
复位值 : 00H
定时器控制寄存器 4,高位字节
9EH
CCU6_MCMOUTSL 复位值 : 00H
多通道模式输出映射寄存器,低位字
节
类型
w
r
9FH
CCU6_MCMOUTSH 复位值 : 00H
多通道模式输出映射寄存器,高位字
节
位域
STRH
P
0
A4H
CCU6_ISRL 复位值 : 00H
捕获 / 比较中断状态复位寄存器,低
位字节
类型
w
w
A5H
CCU6_ISRH
复位值 : 00H
捕获 / 比较中断状态复位寄存器,高
位字节
位域
RSTR
RIDLE
类型
w
w
w
A6H
CCU6_CMPMODIFL 复位值 : 00H
比较状态修改寄存器,低位字节
位域
0
MCC6
3S
A7H
CCU6_CMPMODIFH 复位值 : 00H
比较状态修改寄存器,高位字节
FAH
CCU6_CC60SRL
复位值 : 00H
通道 CC60 捕获 / 比较 映射寄存器,
低位字节
FBH
CCU6_CC60SRH
复位值 : 00H
通道 CC60 捕获 / 比较 映射寄存器,
高位字节
CCU6_CC61SRL
复位值 : 00H
通道 CC61 捕获 / 比较 映射寄存器,
低位字节
类型
rwh
位域
CC61SH
FCH
FDH
FEH
FFH
CCU6_CC61SRH
复位值 : 00H
通道 CC61 捕获 / 比较 映射寄存器,
高位字节
位域
类型
w
r
位域
RT12
PM
RT12
OM
2
1
0
T13
RES
T13R
S
T13R
R
w
w
w
MCMPS
rw
CURHS
EXPHS
rw
RCC6
2F
rw
RCC6
2R
RCC6
1F
w
w
w
w
w
w
RWH
E
RCHE
0
RTRP
F
RT13
PM
RT13
CM
w
r
0
RCC6
1R
RCC6
0F
RCC6
0R
w
w
w
MCC6
2S
MCC6
1S
MCC6
0S
类型
r
w
r
w
w
w
位域
0
MCC6
3R
0
MCC6
2R
MCC6
1R
MCC6
0R
类型
r
w
r
w
w
w
CC60SL
位域
类型
rwh
位域
CC60SH
类型
rwh
位域
CC61SL
类型
rwh
CCU6_CC62SRL
复位值 : 00H
通道 CC62 捕获 / 比较 映射寄存器,
低位字节
位域
CC62SL
类型
rwh
CCU6_CC62SRH
复位值 : 00H
通道 CC62 捕获 / 比较 映射寄存器,
高位字节
位域
CC62SH
类型
rwh
位域
CC63VL
RMAP = 0, PAGE 1
9AH
9BH
9CH
CCU6_CC63RL
复位值 : 00H
通道 CC63 捕获 / 比较寄存器,低位
字节
CCU6_CC63RH
复位值 : 00H
通道 CC63 捕获 / 比较寄存器,高位
字节
CCU6_T12PRL
复位值 : 00H
定时器 T12 周期寄存器,低位字节
用户手册
存储器结构 , V1.0
类型
rh
位域
CC63VH
类型
rh
位域
T12PVL
类型
rwh
3-29
V1.1, 2010-09
XC83x
存储器结构
表 3-10
地址
9DH
CCU6 寄存器概览 (cont’d)
寄存器名
CCU6_T12PRH
复位值 : 00H
定时器 T12 周期寄存器,高位字节
位
7
6
5
4
3
2
1
0
T12PVH
位域
类型
rwh
位域
T13PVL
9EH
CCU6_T13PRL
复位值 : 00H
定时器 T13 周期寄存器,低位字节
9FH
CCU6_T13PRH
复位值 : 00H
定时器 T13 周期寄存器,高位字节
类型
rwh
A4H
CCU6_T12DTCL
复位值 : 00H
定时器 T12 死区时间 控制寄存器,
低位字节
位域
DTM
A5H
CCU6_T12DTCH
复位值 : 00H
定时器 T12 死区时间 控制寄存器,
高位字节
位域
0
DTR2
DTR1
DTR0
0
DTE2
DTE1
DTE0
类型
r
rh
rh
rh
r
rw
rw
rw
位域
CTM
CDIR
STE1
2
T12R
T12
PRE
类型
rw
类型
rwh
位域
T13PVH
rw
类型
A6H
CCU6_TCTR0L
复位值 : 00H
定时器控制寄存器 0,低位字节
A7H
CCU6_TCTR0H
复位值 : 00H
定时器控制寄存器 0,高位字节
FAH
CCU6_CC60RL
复位值 : 00H
通道 CC60 捕获 / 比较寄存器,低位
字节
位域
CC60VL
类型
rh
CCU6_CC60RH
复位值 : 00H
通道 CC60 捕获 / 比较寄存器,高位
字节
位域
CC60VH
类型
rh
FBH
FCH
FDH
FEH
FFH
rh
rh
rh
rw
rw
位域
0
STE1
3
T13R
T13
PRE
T13CLK
类型
r
rh
rh
rw
rw
CCU6_CC61RL
复位值 : 00H
通道 CC61 捕获 / 比较寄存器,低位
字节
位域
CC61VL
类型
rh
CCU6_CC61RH
复位值 : 00H
通道 CC61 捕获 / 比较寄存器,高位
字节
位域
CC61VH
类型
rh
CCU6_CC62RL
复位值 : 00H
通道 CC62 捕获 / 比较寄存器,低位
字节
位域
CC62VL
类型
rh
位域
CC62VH
类型
rh
CCU6_CC62RH
复位值 : 00H
通道 CC62 捕获 / 比较寄存器,高位
字节
T12CLK
RMAP = 0, PAGE 2
9AH
9BH
9CH
CCU6_T12MSELL
复位值 : 00H
T12 捕获 / 比较模式选择寄存器,低
位字节
位域
MSEL61
MSEL60
类型
rw
rw
CCU6_T12MSELH
复位值 : 00H
T12 捕获 / 比较模式选择寄存器,高
位字节
位域
DBYP
HSYNC
类型
rw
rw
位域
ENT1
2
PM
ENT1
2
OM
ENCC
62F
ENCC
62R
ENCC
61F
ENCC
61R
ENCC
60F
ENCC
60R
类型
rw
rw
rw
rw
rw
rw
rw
rw
CCU6_IENL
复位值 : 00H
捕获 / 比较中断使能寄存器,低位字
节
用户手册
存储器结构 ,V1.0
3-30
MSEL62
rw
V1.1, 2010-09
XC83x
存储器结构
表 3-10
地址
CCU6 寄存器概览 (cont’d)
寄存器名
7
6
5
4
3
2
1
0
位域
EN
STR
EN
IDLE
EN
WHE
EN
CHE
0
EN
TRPF
ENT1
3PM
ENT1
3CM
类型
rw
rw
rw
rw
r
rw
rw
rw
位
9DH
CCU6_IENH
复位值 : 00H
捕获 / 比较中断使能寄存器,高位字
节
9EH
CCU6_INPL
复位值 : 40H
捕获 / 比较中断节点指针寄存器,低
位字节
位域
INPCHE
类型
rw
rw
rw
rw
9FH
CCU6_INPH
复位值 : 39H
捕获 / 比较中断节点指针寄存器,高
位字节
位域
0
INPT13
INPT12
INPERR
类型
r
rw
rw
rw
类型
w
w
w
w
w
w
w
w
A5H
CCU6_ISSH
复位值 : 00H
捕获 / 比较中断状态置位寄存器,高
位字节
位域
SSTR
SIDLE
SWHE
SCHE
SWH
C
STRP
F
ST13
PM
ST13
CM
类型
w
w
w
w
w
w
w
w
A6H
CCU6_PSLR
被动态电平寄存器
复位值 : 00H
位域
PSL63
0
类型
rwh
A7H
CCU6_MCMCTR
复位值 : 00H
多通道模式控制寄存器
位域
0
SWSYN
0
类型
r
rw
r
rw
CCU6_TCTR2L
复位值 : 00H
定时器控制寄存器 2,低位字节
FBH
CCU6_TCTR2H
复位值 : 00H
定时器控制寄存器 2,高位字节
FCH
CCU6_MODCTRL
复位值 : 00H
调制控制寄存器,低位字节
FDH
CCU6_MODCTRH
复位值 : 00H
调制控制寄存器,高位字节
FEH
CCU6_TRPCTRL
复位值 : 00H
强制中断控制寄存器,低位字节
FFH
CCU6_TRPCTRH
复位值 : 00H
强制中断控制寄存器,高位字节
SCC6
2F
SCC6
2R
SCC6
1F
SCC6
1R
INPCC60
CCU6_ISSL
复位值 : 00H
捕获 / 比较中断状态置位寄存器,低
位字节
FAH
ST12
OM
INPCC61
A4H
位域
ST12
PM
INPCC62
SCC6
0F
SCC6
0R
PSL
r
rwh
SWSEL
位域
0
T13TED
T13TEC
T13
SSC
T12
SSC
类型
r
rw
rw
rw
rw
0
位域
T12RSEL
rw
rw
r
类型
位域
T13RSEL
MCM
EN
0
T12MODEN
类型
rw
r
rw
位域
ECT1
3O
0
T13MODEN
类型
rw
r
rw
0
位域
r
类型
TRPM
2
TRPM
1
TRPM
0
rw
rw
rw
位域
TRPP
EN
TRPE
N13
TRPEN
类型
rw
rw
rw
CCU6_MCMOUTL
复位值 : 00H
多通道模式输出寄存器,低位字节
位域
0
R
MCMP
类型
r
rh
CCU6_MCMOUTH
复位值 : 00H
多通道模式输出寄存器,高位字节
位域
0
CURH
类型
r
rh
RMAP = 0, PAGE 3
9AH
9BH
9CH
CCU6_ISL
复位值 : 00H
捕获 / 比较中断状态寄存器,低位字
节
用户手册
存储器结构 , V1.0
rh
EXPH
rh
位域
T12
PM
T12
OM
ICC62
F
ICC62
R
ICC61
F
ICC61
R
ICC60
F
ICC60
R
类型
rh
rh
rh
rh
rh
rh
rh
rh
3-31
V1.1, 2010-09
XC83x
存储器结构
表 3-10
地址
CCU6 寄存器概览 (cont’d)
寄存器名
7
6
5
4
3
2
1
0
位域
STR
IDLE
WHE
CHE
TRPS
TRPF
T13
PM
T13
CM
类型
rh
rh
rh
rh
rh
rh
rh
rh
位
9DH
CCU6_ISH
复位值 : 00H
捕获 / 比较中断状态寄存器,高位字
节
9EH
CCU6_PISEL0L
复位值 : 00H
端口输入选择寄存器 0,低位字节
位域
类型
rw
rw
rw
rw
9FH
CCU6_PISEL0H
复位值 : 00H
端口输入选择寄存器 0,高位字节
位域
IST12HR
ISPOS2
ISPOS1
ISPOS0
类型
rw
rw
rw
A4H
CCU6_PISEL2
复位值 : 00H
端口输入选择寄存器 2
位域
0
类型
r
FAH
CCU6_T12L
复位值 : 00H
定时器 T12 计数寄存器,低位字节
位域
FBH
CCU6_T12H
复位值 : 00H
定时器 T12 计数寄存器,高位字节
FCH
CCU6_T13L
复位值 : 00H
定时器 T13 计数寄存器,低位字节
FDH
CCU6_T13H
复位值 : 00H
定时器 T13 计数寄存器,高位字节
FEH
CCU6_CMPSTATL
复位值 : 00H
比较状态寄存器,低位字节
FFH
CCU6_CMPSTATH
复位值 : 00H
比较状态寄存器,高位字节
用户手册
存储器结构 ,V1.0
ISTRP
ISCC62
ISCC61
rw
IST13HR
rw
T12CVL
类型
rwh
位域
T12CVH
类型
rwh
位域
T13CVL
类型
rwh
位域
T13CVH
rwh
类型
位域
ISCC60
0
CC63
ST
CC
POS2
CC
POS1
CC
POS0
CC62
ST
CC61
ST
CC60
ST
类型
r
rh
rh
rh
rh
rh
rh
rh
位域
T13IM
COUT
63PS
COUT
62PS
CC62
PS
COUT
61PS
CC61
PS
COUT
60PS
CC60
PS
类型
rwh
rwh
rwh
rwh
rwh
rwh
rwh
rwh
3-32
V1.1, 2010-09
XC83x
存储器结构
3.4.5.11 SSC 寄存器
SSC SFR 从标准存储器区访问 (RMAP = 0)。
表 3-11
地址
SSC 寄存器概览
寄存器名
位
7
6
5
4
位域
LB
PO
PH
HB
类型
rw
rw
rw
rw
3
2
1
0
TEN
RMAP = 0
AAH
AAH
SSC_CONL
复位值 : 00H
控制寄存器,低位字节
编程模式
BM
rw
SSC_CONL
复位值 : 00H
控制寄存器,低位字节
工作模式
位域
0
类型
r
SSC_CONH
复位值 : 00H
控制寄存器,高位字节
编程模式
位域
EN
MS
0
AREN
BEN
PEN
REN
类型
rw
rw
r
rw
rw
rw
rw
rw
SSC_CONH
复位值 : 00H
控制寄存器,高位字节
工作模式
位域
EN
MS
0
BSY
BE
PE
RE
TE
类型
rw
rw
r
rh
rwh
rwh
rwh
rwh
SSC_TBL
复位值 : 00H
发送缓存寄存器,低位字节
位域
类型
rw
ADH
SSC_RBL
复位值 : 00H
接收缓存寄存器,低位字节
位域
RB_VALUE
AEH
SSC_BRL
复位值 : 00H
波特率定时器重载寄存器,低位
字节
2
1
0
ABH
ABH
ACH
AFH
SSC_BRH
复位值 : 00H
波特率定时器重载寄存器,高位
字节
BC
rh
TB_VALUE
类型
rh
位域
BR_VALUE
类型
rw
位域
BR_VALUE
类型
rw
3.4.5.12 IIC 寄存器
IIC SFR 从标准存储器区访问 (RMAP = 0)。
表 3-12
地址
IIC 寄存器概览
位
寄存器名
7
6
5
4
3
RMAP = 0
DAH
IIC_ADDR
从机地址寄存器
复位值 : 00H
DBH
IIC_DATA
数据字节寄存器
复位值 : 00H
DCH
IIC_CNTR
控制寄存器
复位值 : 00H
IIC_STAT
状态寄存器
复位值 : F8H
DDH
用户手册
存储器结构 , V1.0
位域
SLA
GCE
类型
rw
rw
DATA
位域
rw
类型
位域
IEN
ENAB
STA
STP
IFLG
AAK
类型
rw
rw
rwh
rwh
rwh
rw
0
r
位域
STAT
0
类型
rh
r
3-33
V1.1, 2010-09
XC83x
存储器结构
表 3-12
IIC 寄存器概览 (cont’d)
位
7
IIC_BRCR
复位值 : 00H
波特率控制寄存器
位域
0
BRP
类型
w
w
DEH
IIC_ADDRX
复位值 : 00H
扩展从机地址寄存器
位域
类型
rw
DFH
IIC_SRST
软件复位寄存器
位域
SRST
类型
w
地址
DDH
寄存器名
复位值 : UUH
6
5
4
3
2
1
0
PREDIV
w
SLAX
3.4.5.13 OCDS 寄存器
OCDS SFR 从映射存储区访问 (RMAP = 1)。
表 3-13
地址
OCDS 寄存器概览
寄存器名
位
7
6
5
4
3
2
1
0
STMO
DE
0
DSUS
P
MBCO
N
ALTDI
MMEP
MMOD
E
JENA
RMAP = 1
E9H
MMCR2
复位值 : 1UH
监控模式控制寄存器 2
F1H
MMCR
复位值 : 00H
监控模式控制寄存器
F2H
MMSR
复位值 : 00H
监控模式状态寄存器
位域
F3H
MMBPCR
断点控制寄存器
位域
F4H
MMICR
复位值 : 00H
监控模式中断控制寄存器
F5H
MMDR
复位值 : 00H
监控模式数据传送寄存器
接收
位域
MMRR
类型
rh
MMDR
复位值 : 00H
监控模式数据传送寄存器
发送
位域
MMTR
类型
w
F6H
HWBPSR
复位值 : 00H
硬件断点选择寄存器
位域
0
BPSEL
_P
BPSEL
类型
r
w
rw
F7H
HWBPDR
复位值 : 00H
硬件断点数据寄存器
位域
类型
rw
EBH
MMWR1
复位值 : 00H
监控工作寄存器 1
位域
MMWR1
类型
rw
位域
类型
rw
rw
rw
rwh
rw
rwh
rh
rh
位域
MEXIT
_P
MEXIT
MMNM
IE
MSTE
P
MRAM
S_P
MRAM
S
TRF
RRF
类型
w
rw
类型
F5H
用户手册
存储器结构 ,V1.0
复位值 : 00H
rwh
0
SWBC
rw
rw
w
rwh
rh
rh
EXBF
SWBF
HWB3
F
HWB2
F
HWB1
F
HWB0
F
rwh
rwh
rwh
rwh
rwh
rwh
HWB3C
HWB2C
rw
rw
HWB1
C
HWB0C
类型
rw
位域
DVEC
T
DRET
R
COMR
ST
MSTS
EL
FMIR
W
FNMIR
R
rw
NMIR
WE
rw
NMIR
RE
类型
rwh
rwh
rwh
rh
rwh
rwh
rw
rw
HWBPxx
3-34
V1.1, 2010-09
XC83x
存储器结构
表 3-13
地址
ECH
OCDS 寄存器概览 (cont’d)
寄存器名
MMWR2
复位值 : 00H
监控工作寄存器 2
用户手册
存储器结构 , V1.0
位
7
6
5
4
3
位域
MMWR2
类型
rw
3-35
2
1
0
V1.1, 2010-09
XC83x
闪存存储器
4
闪存存储器
XC83x 内嵌用户可编程的非易失性闪存 (Flash)存储器,能够快速、可靠的存储用户
代码和数据。 Flash 由嵌入式电压调节器 (EVR)提供的 2.5V 电压供电,不需要额外的
编程或擦除电压。 Flash 存储器的分区特性使每个扇区都可被独立擦除。
特性
·
·
·
·
·
·
·
·
·
·
通过 UART 进行在系统编程 (ISP)
在应用编程 (IAP)
纠错码 (ECC)可动态纠正一位错误
后台编程和擦除操作,使 CPU 负荷最小
支持擦除中止操作
最小编程宽度为 32 字节
最小擦除宽度为 1 个扇区
每次读取 1 个字节
1 或 3 × CCLK 周期的读取时间 (这取决于等待状态为 0 还是 1)1)
Flash 出厂时为擦除状态 (读返回全零)
1) CPU 工作在 24 MHz 时插入一个等待状态。 CPU 工作在 8 MHz 时无需插入等待状态。
用户手册
闪存存储器 , V1.0
4-1
V1.1, 2010-09
XC83x
闪存存储器
4.1
Flash 存储器地址映射
XC83x 提供两种不同大小 Flash 的器件,其程序存储器映射如图 4-1 所示。
FF80H
用户 BSL
Flash 扇区
64 B
FF40H
B000H
Flash Bank 0
4 KB
Flash Bank 1
4 KB
A000H
2000H
Flash Bank 1
4 KB
1000H
Flash Bank 0
4 KB
Flash Bank 0
4 KB
4 KB
8 KB
0000H
图 4-1
Flash 存储器映射
对于 8 KB 的 Flash 器件,有两个 4 KB 的 Flash bank (Bank 0 和 Bank 1)可用。Bank
0 被映射到程序存储区的地址段 0000H - 0FFFH ; Bank 1 被映射到程序存储区的两个地
址段 1000H - 1FFFH 和 A000H - AFFFH。这意味着,访问地址 1000H 和 A000H 将指向相
同的物理单元。
注: 在 8 KB 的 Flash 器件中,包含一个独立的 64 字节用户 BSL Flash 扇区,它由两
条字线组成,支持系统启动后进入备选 User BSL 模式。若不使用该特性,该扇区
还可用于存储代码或数据。
对于 4 KB 的 Flash 器件,只有一个 4 KB 的 Flash bank (Bank 0)可用,它被映射到
程序存储区的两个地址段 0000H - 0FFFH 和 A000H - AFFFH。
Flash bank的双重地址映射(8 KB Flash器件中的Bank 1和4 KB Flash器件中的Bank 0)
便于软件编程。通常而言,位于低位地址段(0000H - 0FFFH 和 1000H - 1FFFH)的 Flash
bank 应存储程序代码;位于高位地址段 (A000H - AFFFH)的 Flash bank 应存储数据。
用户手册
闪存存储器 ,V1.0
4-2
V1.1, 2010-09
XC83x
闪存存储器
4.2
Flash Bank 分区
XC83x Flash 器件包含一个或两个 4 KB 的 Flash bank,其分区如图 4-2 所示。每个 Flash
bank 可用于存储代码和数据。
扇区
扇区
扇区
扇区
9:
8:
7:
6:
128
128
128
128
B
B
B
B
扇区 5: 256 B
扇区 4: 256 B
扇区 3: 512 B
扇区 2: 512 B
扇区 1: 1 KB
扇区 0: 1 KB
1x Flash Bank
图 4-2
Flash Bank 分区
每个 4 KB Flash bank 的扇区划分:
·
·
·
·
两个 1 KB 扇区
两个 512B 扇区
两个 256B 扇区
四个 128B 扇区
每个 Flash bank 内部的扇区结构具备灵活的擦除能力。最小擦除宽度始终为一个完整的
扇区。各个扇区可被分别擦除、或者同时擦除。和标准电可擦除可编程ROM(EEPROM)
相反, Flash 存储器单元擦除后值全为 0。
Flash bank 被划分为更多的物理扇区,从而具有扩展的擦除和重新编程能力。每种扇区
的个数均为偶数,从而能够更加灵活、更好的适应于广泛的应用领域。
举例说明,用户可编程为每个扇区实现缓存机制。每组数据双份复制保存在大小相同、独
立的扇区中,以保证当真正的数据组被破坏或擦除时可使用备份数据。
用户还可实现 EEPROM 模拟,把 Flash bank 当作环形堆栈存储器使用。最新值的更新
始终设定在真正区域的顶部。当达到扇区顶部时,所有真正的数据 (代表 EEPROM 的
数据)被复制到下一个扇区的底部,上一个扇区被擦除。用这种多方复制的循环机制来
用户手册
闪存存储器 , V1.0
4-3
V1.1, 2010-09
XC83x
闪存存储器
模拟 EEPROM,大大提高了 Flash 存储器的耐受能力。为了加速数据查询, RAM 可存
放指向有效数据组的指针。
用户手册
闪存存储器 ,V1.0
4-4
V1.1, 2010-09
XC83x
闪存存储器
4.3
字线地址
0F60H
……
……………………………..
0F02H
0F01H
0F00H
……………………………..
0EE2H
0EE1H
0EE0H
……
……
……
0E9F H
……………………………..
0E82H
0E81H
0E80H
0E7F H
……………………………..
0E62H
0E61H
0E60H
……
……
……
……
……
0E1F H
……………………………..
0E02H
0E01H
0E00H
0DFFH
……………………………..
0DE2H
0DE1H
0DE0H
……..
……..
……..
0D1FH
……………………………..
0D02H
0D01H
0D00H
0CFFH
……………………………..
0CE2H
0CE1H
0CE0H
……..
……..
……..
0C1FH
……………………………..
0C02H
0C01H
0C00H
0BFFH
……………………………..
0BE2H
0BE1H
0BE0H
…...
…...
…...
0A3F H
……………………………..
0A22H
0A21H
0A20H
0A1F H
……………………………..
0A02H
0A01H
0A00H
09FFH
……………………………..
09E2H
09E1H
09E0H
…...
…...
…...
083FH
……………………………..
0822H
0821H
0820H
081FH
……………………………..
0802H
0801H
0800H
07FFH
……………………………..
07E2H
07E1H
07E0H
…...
…...
…...
045FH
……………………………..
0442H
0441H
0440H
043FH
……………………………..
0422H
0421H
0420H
041FH
……………………………..
0402H
0401H
0400H
03FFH
……………………………..
03E2H
03E1H
03E0H
…...
…...
…...
005FH
……………………………..
0042H
0041H
0040H
003FH
……………………………..
0022H
0021H
0020H
001FH
……………………………..
0002H
0001H
……..
……..
Flash Bank 0
……
……
……
……
0F1FH
0EFFH
扇区 8
WL 120 - 123
128字节
0F80H
0F61H
扇区 7
WL 116 - 119
128字节
0F81H
0F62H
扇区 6
WL 112 - 115
128字节
0F82H
……………………………..
扇区 5
WL 104 - 111
256字节
……
……………………………..
0F7FH
扇区 4
WL 96 - 103
256字节
……
0F9FH
…...
扇区 3
WL 80 - 95
512字节
0FE0H
…...
扇区 2
WL 64 - 79
512字节
字节 0
0FE1H
…...
扇区 1
WL 32 - 63
1 KB
字节 1
0FE2H
0FFFH
…...
扇区 0
WL 0 - 31
1 KB
字节 2
……………………………..
……
字节 31
扇区 9
WL 124 - 127
128字节
8 KB Flash 器件中的 Bank 0 和 Bank 1 的字线 (WL)地址如图 4-3 和图 4-4 所示; 4
KB Flash 器件中的 Bank 0 的字线地址如图 4-5 示。
0000H
WL地址
图 4-3
8KB Flash 器件 Bank 0 字线地址
用户手册
闪存存储器 , V1.0
4-5
V1.1, 2010-09
XC83x
闪存存储器
……………………………..
17E2H
17E1H
17E0H
145FH
……………………………..
1442H
1441H
1440H
143FH
……………………………..
1422H
1421H
1420H
141FH
……………………………..
1402H
1401H
13FFH
……………………………..
13E2H
13E1H
105FH
……………………………..
1042H
1041H
1040H
103FH
……………………………..
1022H
1021H
1020H
101FH
……………………………..
1002H
1001H
1000H
……………………………..
A822H
A821H
A820H
A81F H
……………………………..
A802H
A801H
A800H
A7FFH
……………………………..
A7E2H A7E1H A7E0H
A45F H
……………………………..
A442H
A441H
A440H
A43F H
……………………………..
A422H
A421H
A420H
1400H
A41F H
……………………………..
A402H
A401H
A400H
13E0H
A3FFH
……………………………..
A3E2H A3E1H A3E0H
A05F H
……………………………..
A042H
A041H
A040H
A03F H
……………………………..
A022H
A021H
A020H
A01F H
……………………………..
A002H
A001H
…...
…...
…...
…...
…...
…...
…...
…...
…...
…...
WL 地址
图 4-4
…...
…...
扇区 2
W L 64 - 79
512字 节
扇区 3
W L 80 - 95
512字 节
A83F H
…...
A9E2H A9E1H A9E0H
…...
……………………………..
…...
AA02H AA01H AA00H
A9FFH
…...
AA22H AA21H AA20H
……………………………..
…...
…...
…...
…...
……………………………..
AA1FH
…...
…...
…...
…...
AA3FH
…...
…...
…...
…...
ABE2H ABE1H ABE0H
…...
…...
…...
…...
AC02H AC01H AC00H
……………………………..
扇区 1
W L 32 - 63
1 KB
Flash Bank 1
……..
……..
……..
……..
……………………………..
ABFFH
扇区 9
WL 1 24 - 12 7
128字 节
扇区 8
WL 1 20 - 12 3
128字 节
扇区 7
WL 1 16 - 11 9
128字 节
扇区 6
WL 1 12 - 11 5
128字 节
17FFH
AC1FH
扇区 5
WL 1 04 - 11 1
256字 节
1800H
ACE2H ACE1H ACE0H
扇区 4
W L 96 - 103
256字 节
1820H
1801H
AD02H AD01H AD00H
……………………………..
扇区 3
W L 80 - 95
512字 节
1821H
1802H
……………………………..
ACFFH
扇区 2
W L 64 - 79
512字 节
1822H
……………………………..
AD1FH
扇区 1
W L 32 - 63
1 KB
……………………………..
181FH
Flash Bank 1 ( 备选地 址映射 )
183FH
扇区 5
WL 1 04 - 11 1
256字 节
19E0H
扇区 4
W L 96 - 103
256字 节
19E1H
ADE2H ADE1H ADE0H
……..
19E2H
AE02H AE01H AE00H
……………………………..
……..
……………………………..
……
19FFH
……
1A00H
……
1A20H
1A01H
……
1A21H
1A02H
……………………………..
……..
1A22H
……………………………..
AE1FH
ADFFH
……..
……………………………..
1A1FH
……
1A3FH
……
1BE2H 1BE1H 1BE0H
AE62H AE61H AE60H
……
1C02H 1C01H 1C00H
……………………………..
AE82H AE81H AE80H
……………………………..
……
……………………………..
1BFFH
……………………………..
AE7FH
……..
1C1FH
AE9FH
……..
1CE2H 1CE1H 1CE0H
AEE2H AEE1H AEE0H
……..
1D02H 1D01H 1D00H
……………………………..
AF02H AF01H AF00H
……………………………..
……..
……………………………..
1CFFH
……………………………..
……
1E00H
……..
1D1FH
……..
1DE2H 1DE1H 1DE0H
……..
1E02H
……………………………..
……..
……………………………..
1DFFH
AF1FH
AEFFH
……
……
……
……
……
1E1FH
AF62H AF61H AF60H
……
1E60H
AF82H AF81H AF80H
……………………………..
……
1E80H
1E61H
……………………………..
……
1E81H
1E62H
AF7FH
……
1E82H
……………………………..
1E01H
1F00H
……
……………………………..
1E7FH
……
1E9FH
……
1EE2H 1EE1H 1EE0H
……
1F02H
……………………………..
AF9FH
……
1F01H
……
……
……
……
……………………………..
AFE2H AFE1H AFE0H
……
……
1F1FH
1EFFH
……………………………..
扇区 0
WL 0 - 31
1 KB
1F60H
扇区 9
WL 1 24 - 12 7
128字 节
1F80H
1F61H
扇区 8
WL 1 20 - 12 3
128字 节
1F81H
1F62H
扇区 7
WL 1 16 - 11 9
128字 节
1F82H
……………………………..
字节 2 字节 1 字节 0
AFFFH
扇区 6
WL 1 12 - 11 5
128字 节
……………………………..
1F7FH
……
1F9FH
……
字节 31
1FE2H 1FE1H 1FE0H
……
字节 2 字节 1 字节 0
……………………………..
1FFFH
扇区 0
WL 0 - 31
1 KB
字节 31
A000H
WL 地址
8KB Flash 器件 Bank1 字线地址
用户手册
闪存存储器 ,V1.0
4-6
V1.1, 2010-09
XC83x
闪存存储器
……
……
ADE2H ADE1H ADE0H
0C1FH
……………………………..
0C02H 0C01H 0C00H
0BFFH
……………………………..
0BE2H 0BE1H 0BE0H
0A3F H
……………………………..
0A22H
0A21H
0A20H
0A1F H
……………………………..
0A02H
0A01H
0A00H
09FFH
……………………………..
09E2H
09E1H
09E0H
083FH
……………………………..
0822H
0821H
0820H
A83F H
……………………………..
A822H
A821H
A820H
081FH
……………………………..
0802H
0801H
0800H
A81F H
……………………………..
A802H
A801H
A800H
07FFH
……………………………..
07E2H
07E1H
07E0H
A7FFH
……………………………..
A7E2H A7E1H A7E0H
045FH
……………………………..
0442H
0441H
0440H
A45F H
……………………………..
A442H
A441H
A440H
043FH
……………………………..
0422H
0421H
0420H
A43F H
……………………………..
A422H
A421H
A420H
041FH
……………………………..
0402H
0401H
0400H
A41F H
……………………………..
A402H
A401H
A400H
03FFH
……………………………..
03E2H
03E1H
03E0H
A3FFH
……………………………..
A3E2H A3E1H A3E0H
005FH
……………………………..
0042H
0041H
0040H
A05F H
……………………………..
A042H
A041H
A040H
003FH
……………………………..
0022H
0021H
0020H
A03F H
……………………………..
A022H
A021H
A020H
001FH
……………………………..
0002H
0001H
0000H
A01F H
……………………………..
A002H
A001H
ACE2H ACE1H ACE0H
ABE2H ABE1H ABE0H
AA3FH
……………………………..
AA22H AA21H AA20H
AA1FH
……………………………..
AA02H AA01H AA00H
A9FFH
……………………………..
A9E2H A9E1H A9E0H
…...
…...
…...
…...
…...
…...
…...
…...
…...
…...
…...
扇区 1
WL 32 - 63
1 KB
…...
AC02H AC01H AC00H
……………………………..
…...
……………………………..
ABFFH
…...
AC1FH
…...
…...
…...
…...
…...
…...
…...
…...
…...
…...
…...
…...
…...
扇区 0
WL 0 - 31
1 KB
……..
……..
扇区 4
WL 96 - 103
256字 节
AD02H AD01H AD00H
……………………………..
……..
扇区 3
WL 80 - 95
512字 节
……………………………..
ACFFH
…...
…...
…...
…...
…...
扇区 2
WL 64 - 79
512字 节
AD1FH
……..
……..
……..
……..
……..
Flash Bank 0( 备选地 址映射 )
……..
……..
0CE2H 0CE1H 0CE0H
……..
0D02H 0D01H 0D00H
……………………………..
扇区 5
WL 1 04 - 11 1
256字 节
AE02H AE01H AE00H
……………………………..
扇区 9
WL 1 24 - 12 7
128字 节
扇区 8
WL 1 20 - 12 3
128字 节
扇区 7
WL 1 16 - 11 9
128字 节
……
……
……………………………..
扇区 6
WL 1 12 - 11 5
128字 节
……
……
AE1FH
ADFFH
……..
……………………………..
0CFFH
WL 地址
图 4-5
……
0D1FH
……..
0DE2H 0DE1H 0DE0H
……..
0E02H
……………………………..
……..
……………………………..
0DFFH
扇区 5
WL 1 04 - 11 1
256字 节
AE62H AE61H AE60H
扇区 4
WL 96 - 103
256字 节
AE82H AE81H AE80H
……………………………..
扇区 3
WL 80 - 95
512字 节
……………………………..
AE7FH
扇区 2
WL 64 - 79
512字 节
AE9FH
0E1F H
……..
Flash Bank 0
AEE2H AEE1H AEE0H
……
AF02H AF01H AF00H
……………………………..
……
……………………………..
……
……
……
……
……
0E00H
AF1FH
AEFFH
……
0E60H
AF62H AF61H AF60H
……
0E80H
0E61H
AF82H AF81H AF80H
……………………………..
……
0E81H
0E62H
……………………………..
……
0E82H
……………………………..
0E01H
0F00H
……
……………………………..
0E7F H
……
0E9F H
……
0EE2H 0EE1H 0EE0H
……
0F02H
……………………………..
AF7FH
……
0F01H
……
……
……
……
……………………………..
AF9FH
……
……
0F1FH
0EFFH
AFE2H AFE1H AFE0H
扇区 1
WL 32 - 63
1 KB
0F60H
……………………………..
扇区 0
WL 0 - 31
1 KB
0F80H
0F61H
扇区 9
WL 1 24 - 12 7
128字 节
0F81H
0F62H
扇区 8
WL 1 20 - 12 3
128字 节
0F82H
……………………………..
字节 2 字节 1 字节 0
AFFFH
扇区 7
WL 1 16 - 11 9
128字 节
……………………………..
0F7FH
……
0F9FH
……
字节 31
0FE2H 0FE1H 0FE0H
……
字节 2 字节 1 字节 0
……………………………..
0FFFH
扇区 6
WL 1 12 - 11 5
128字 节
字节 31
A000H
WL 地址
4KB Flash 器件 Bank0 字线地址
用户手册
闪存存储器 , V1.0
4-7
V1.1, 2010-09
XC83x
闪存存储器
对于 8 KB Flash 器件, WL 地址计算如下:
0000H + 20H × n, 0 ≤ n ≤ 127
Flash Bank 0
(4.1)
1000H/A000H + 20H × n, 0 ≤ n ≤ 127
Flash Bank 1
(4.2)
Flash Bank 0
(4.3)
对于 4 KB Flash 器件, WL 地址计算如下:
0000H/A000H + 20H × n, 0 ≤ n ≤ 127
Flash bank 每次只能编程一条字线,每条字线的最大 / 最小编程宽度为 32 个字节。编程
之前,用户必须首先用 "MOV" 指令将数据写入 IRAM,写入的字节个数等于编程宽度;
然后通过引导程序加载(BSL)程序(见章节 4.6)或 Flash 编程子程序(见章节 4.7.1)
将这些 IRAM 数据传送到 Flash bank 对应的写缓存中。一旦数据写入缓存,内嵌的编程
和擦除状态机使充电泵电压逐渐上升。一旦完成充电过程,写缓存中易失的数据内容被
存储到所选字线的非易失 Flash 单元中,根据图 4-3、图 4-4 和图 4-5 所示的字线地址选
择字线。数据填充 IRAM 是非常必要的 (字节个数等于编程宽度),否则上一次存储在
写缓存中的内容将被保留并被编程到字线上。
由于 Flash 单元能承受两个门干扰,同一条字线在擦除前可编程两次。这意味着如果需
要编程的数据字节的个数小于 32 字节 (最小编程宽度),用户可选择先编程这些数据字
节 (x ; x 可以是 1-31 之间的任意整数),之后再编程其余字节 (32-x)。不过,由于
Flash 的最小编程宽度始终为 32 个字节,因此在每个编程周期中未被编程的字节必须写
入全 0。
图 4-6 示例用 16 个数据字节对同一条字线编程两次。第一个编程周期,低 16 字节写入
有效数据,不含有效数据的高 16 字节写入全 0 ;第二个编程周期恰恰相反,高 16 字节
写入有效数据,已含有效数据的低 16 字节写入全 0。
16 字节
16 字节
0000 ….. 0000 H
32 字节 (1 WL)
0000 ….. 0000 H
第1次编程
0000 ….. 0000 H
1111 ….. 1111 H
0000 ….. 0000 H
1111 ….. 1111 H
第2次编程
1111 ….. 0000 H
0000 ….. 0000 H
1111 ….. 0000 H
1111 ….. 1111 H
注意:Flash存储单元能从0到1编程,
但不能从1到0编程。
Flash存储单元
图 4-6
32字节写缓存
Flash 编程
用户手册
闪存存储器 ,V1.0
4-8
V1.1, 2010-09
XC83x
闪存存储器
4.4
工作模式
每个 Flash bank 的工作模式如图 4-7 所示。
扇区擦除
读取准备就绪
调用Flash擦除子程序
或由BSL控制
编程
调用Flash编程子程序
或由BSL控制
掉电
系统掉电
图 4-7
Flash 工作模式
通常, Flash 的工作模式由 BSL 和 Flash 编程或擦除子程序控制 (见章节 4.7)。
Flash bank 在进入编程或扇区擦除模式之前必须处在读取准备就绪模式。该模式下,
Flash bank 的 32 字节写缓存可被写入,存储器单元的内容可由 CPU 读出。编程模式下,
32 字节写缓存中的数据被编程到目标字线的 Flash 存储单元中。
每个 Flash bank 的工作模式由专用的状态机控制,以保证不同模式之间的正确转移,这
就避免了 Flash 的内容被无意破坏、并且有合理的较低软件开销。状态机还确保了 Flash
bank 在编程或擦除过程中被封锁 (不可读取)。在任何时候,Flash bank 只能处于读取
准备就绪、编程或者扇区擦除模式。不过,在读取一个 Flash bank 中的内容的同时,可
对另一个 Flash bank 编程或擦除。
当用户设置 PMCON0.PD = 1 进入系统掉电模式,Flash bank 由硬件自动带入掉电状态。
系统从掉电状态唤醒后, Flash bank 进入读取准备就绪模式,允许 CPU 访问。
4.5
检错和纠错
CPU 送出的 8 位数据存储到 Flash 中之前,采用纠错码(ECC)编码。读取时,从 Flash
中取出数据并译码,实现动态检错和纠错。
纠错算法 (汉明码)能够:
· 检查并纠正所有的 1 位错误
· 检查所有的 2 位错误,但无法纠正
无法区分可纠正的 1 位错误 (结果有效)和不可纠正的 2 位错误 (结果无效),两种情
况均产生 ECC 非可屏蔽中断 (NMI)事件;寄存器 NMISR 中的位 FNMIECC 被置位;
若 NMICON.NMIECC 被使能,则触发一个 NMI 中断。 ECC 出错的 16 位 Flash 地址被
用户手册
闪存存储器 , V1.0
4-9
V1.1, 2010-09
XC83x
闪存存储器
保存在系统控制 SFR FEAL 和 FEAH 中,中断服务程序可访问这些寄存器,从而确定出
错的 Flash bank /Flash 扇区。
用户手册
闪存存储器 ,V1.0
4-10
V1.1, 2010-09
XC83x
闪存存储器
4.5.1
Flash 出错地址寄存器
FEAL 和 FEAH 寄存器中存放 ECC 出错的 16 位 Flash 地址。必须在访问这些寄存器之
前设置 SCU_PAGE.PAGE。
FEAL
Flash 出错地址寄存器,低位字节
RMAP: 0, PAGE: 5
7
6
5
(F6H)
4
复位值:00H
3
2
1
0
ECCERRADDR[7:0]
rh
符号
位
类型
描述
ECCERRADDR
[7:0]
rh
ECC 出错地址 [7:0]
FEAH
Flash 出错地址寄存器,高位字节
RMAP: 0, PAGE: 5
7
6
5
(F7H)
4
复位值:00H
3
2
1
0
ECCERRADDR[15:8]
rh
符号
位
类型
描述
ECCERRADDR
[7:0]
rh
ECC 出错地址 [15:8]
用户手册
闪存存储器 , V1.0
4-11
V1.1, 2010-09
XC83x
闪存存储器
4.6
在系统编程
基于 Boot ROM 的引导程序加载器 (BSL)支持 Flash 在系统编程 (ISP),可将用户程
序加载到应用板上的空白微控制器中;对以前已编程的微控制器,无需从应用板上卸
下、即可直接擦除并重新编程。该特性使嵌入式设计易于使用且功能多样。
微控制器的串行接口 (UART)支持 ISP,通过常用的 RS-232 串行电缆和 PC 主机相
连。上电复位或硬件复位后,若 BMI 和 BMI 值和设定值匹配,则选择进入相应的 BSL 模
式。 BSL 程序首先和串行通信端 (PC 主机)的传输速率 (波特率)自动同步。 BSL 和
主机之间的通信通过传送协议完成。主机按照规定的块结构向微控制器按块发送信息,
BSL 程序返回一个应答或出错字节以回应接收数据。用户可编程、擦除或执行 Flash bank
的内容。
可用的工作模式包括:
·
·
·
·
将用户程序从主机传送到 Flash 中
执行 Flash 中的用户程序
从相同或不同的 Flash bank 中擦除 Flash 扇区
所有 Flash 扇区全部擦除
用户手册
闪存存储器 ,V1.0
4-12
V1.1, 2010-09
XC83x
闪存存储器
4.7
在应用编程
在一些实际应用中,程序执行期间可能需要修改 Flash 的内容。系统支持在应用 (IAP)
编程,Flash 用户程序通过调用 Boot ROM 中的特殊子程序,可对 Flash 存储器进行编程
或擦除(参见图 4-8 和第 23 章)。在启动编程或者擦除操作之前,Flash 子程序将首先
执行一些检查并执行初始化序列。通过 "MOVC" 指令读取 Flash 的内容,检查编程或擦
除是否成功是非常必要的。其它特殊子程序包括:中止 Flash 擦除操作和检查 Flash bank
的读取准备就绪状态。
Boot ROM
特殊Flash
编程/擦除子程序
用户程序
0073H
Flash NMI
中断服务子程序
Flash NMI
RETI 中断返回指令
图 4-8
Flash 编程 / 擦除流程
用户手册
闪存存储器 , V1.0
4-13
V1.1, 2010-09
XC83x
闪存存储器
4.7.1
Flash 编程
每次调用 Flash 编程子程序,可将 32 字节的数据编程到:
· Flash bank 选中的字线 (WL)上
· 64 字节用户 BSL Flash 扇区中1)
调用该子程序前,用户必须确保 32 字节的字线内容按升序依次存放在 IRAM 中,由当前
寄存器 bank 中的 R5 指定存放的起始地址。此外,输入 DPTR 必须包含有效的 Flash WL
地址, SFR NMISR 中的所有 NMI 标志必须为 0。否则, PSW.CY 将被置位,不执行编
程操作。
Boot ROM 中提供了两种 Flash 编程子程序:
· 非后台 Flash 编程子程序 (见 章节 4.7.1.1)
· 后台 Flash 编程子程序 (见章节 4.7.1.2)
4.7.1.1
非后台 Flash 编程子程序
非后台 Flash 编程子程序在 Flash 编程结束之前不允许继续执行用户程序。
可使用该子程序对正在执行用户代码的 Flash bank 进行编程。不能同时编程和读取
Flash。还可使用该子程序对定义中断向量的 Flash bank 进行编程,因为在 Flash 编程期
间不能处理中断。
对于该子程序, SFR NMISR 中的 FNMIFLASH 标志自动清零,因此无须用户处理。
4.7.1.2
后台 Flash 编程子程序
后台 Flash 编程子程序允许用户程序从上次中止处继续向后执行,直至产生 Flash NMI 事
件。随后 FNMIFLASH 标志置位,若 SFR NMICON 中的控制位 NMIFLASH 使能该中断,
则产生 Flash NMI 送入 CPU,进入 Flash NMI 中断服务程序。此时,Flash bank 处于读
取准备就绪模式,即编程结束。
该子程序可用于以下两种情况:
· 正在执行用户代码的 Flash bank 和待编程的 Flash bank 是不同的 bank
· XRAM 调用该子程序
注: 应避免 Flash bank 1 调用该子程序来编程用户 BSL Flash 扇区 (反之亦然)的情
况,此时应使用非后台 Flash 编程子程序。
4.7.2
Flash 擦除
每次调用 Flash 擦除子程序,允许用户选择擦除:
· 一个扇区;或
· 64 字节用户 BSL Flash 扇区2)
1) 仅在 8KB Flash 器件中可用。
2) 仅在 8KB Flash 器件中可用。
用户手册
闪存存储器 ,V1.0
4-14
V1.1, 2010-09
XC83x
闪存存储器
· 相同或不同 Flash bank 中的多个扇区1)
调用该子程序前,用户必须确保当前寄存器 bank 中的 R4 - R7 已作相应设置。选择擦除
某扇区时,R4 - R7 中对应该扇区的控制位必须置 1。不被擦除的扇区对应的控制位置 0。
若不提供输入或输入无效, PSW.CY 将被置位,不执行擦除操作。
Boot ROM 中提供了两种 Flash 擦除子程序:
· 非后台 Flash 擦除子程序 (见章节 4.7.2.1)
· 后台 Flash 擦除子程序 (见章节 4.7.2.2)
4.7.2.1
非后台 Flash 擦除子程序
非后台 Flash 擦除子程序在 Flash 擦除结束之前不允许继续执行用户程序。
可使用该子程序对正在执行用户代码的 Flash bank 进行擦除。不能同时擦除和读取
Flash。还可使用该子程序对定义中断向量的 Flash bank 进行擦除,因为在 Flash 擦除期
间不能处理中断。
对于该子程序, SFR NMISR 中的 FNMIFLASH 标志自动清零,因此无须用户处理。
注: 由于 Flash 擦除操作结束后程序将返回用户代码,因此,用户切勿大意一并擦除了
自己的用户程序。
4.7.2.2
后台 Flash 擦除子程序
后台 Flash 擦除子程序允许用户程序从上次中止处继续向后执行,直至产生 Flash NMI 事
件。随后 FNMIFLASH 标志置位,若控制位 NMIFLASH 使能该中断,则产生 Flash NMI
送入 CPU,进入 Flash NMI 中断服务程序。此时, Flash bank 处于读取准备就绪模式,
即擦除结束。
该子程序可用于以下两种情况:
· 正在执行用户代码的 Flash bank 和待擦除的 Flash bank 是不同的 bank
· XRAM 调用该子程序
注: 应避免 Flash bank 1 调用该子程序来擦除用户 BSL Flash 扇区 (反之亦然)的情
况,此时应使用非后台 Flash 擦除子程序。
4.7.3
中止后台 Flash 擦除
一次完整的 Flash bank 的擦除操作大约需要 100 ms,在此期间,不能对该 Flash bank
执行读取和编程操作。 XC83x 扩展出后台 Flash 擦除中止功能:正在执行的擦除操作可
以被中止,从而使具有更高优先级的任务得以执行,例如从该 Flash bank 读取关键数据、
或将关键数据编程到该 Flash bank 中。因此,所选 Flash bank 扇区上的擦除操作可以被
中止,从而允许读取或编程其它扇区。为了尽量减少中止操作对 Flash 数据保持 / 可重复
擦写次数的影响,保证数据的可靠性,必须注意以下几点:
· 擦除操作启动之后,在 5 ms 之内不能中止擦除操作。
1) 可能包含用户 BSL Flash 扇区。
用户手册
闪存存储器 , V1.0
4-15
V1.1, 2010-09
XC83x
闪存存储器
· 每一个扇区上最多允许 2 次连续的中止擦除 (两次之间没有完整的擦除操作)。
· 在单次或者连续两次擦除操作被中止之后,由于相关扇区的数据被破坏,需要通过用
户程序进行完整的擦除操作 (大约 100 ms)。
· 从Flash可重复擦写次数1)的角度,一次擦除中止操作视作一次编程/擦除操作来计数。
· 在 Flash 的使用寿命内,每个 Flash 扇区的擦除中止操作最多为 2500 次。
擦除操作开始之后, 5 ms 内不能调用 Flash 擦除中止子程序,请用户务必严格遵守该要
求。否则,不能中止擦除操作。一旦该子程序执行完毕,用户可调用 Flash 读模式状态
子程序,检查中止擦除操作是否已结束。当所选的 Flash bank 已处于读模式,则表明中
止操除操作已完成。
1) Flash 的详细参数信息请参考 XC83x 数据手册。
用户手册
闪存存储器 ,V1.0
4-16
V1.1, 2010-09
XC83x
闪存存储器
4.7.4
Flash 读模式状态
除 Flash 编程和擦除子程序之外,还有一个子程序用于检查 Flash bank 是否已作好被读
取的准备。
调用该子程序之前,用户必须确保将输入 R7 配置为选中的 Flash bank。Flash 处于读取
准备就绪模式时,进位标志清零,否则该标志置位。若子程序的输入无效,进位标志也
置位。
执行中止后台 Flash 擦除子程序时,该子程序尤其有用:调用中止擦除子程序时,用户
可调用该子程序,检查是否已成功完成擦除操作、 Flash 是否已处于等待读取模式。
用户手册
闪存存储器 , V1.0
4-17
V1.1, 2010-09
XC83x
Boot 及系统启动
5
Boot 及系统启动
根据 Boot 模式索引 / 列表 (BMI)值进入不同的 boot 模式,如用户模式、引导程序加载
(BSL)模式和片上调试 (OCDS)模式。有关每种 boot 模式的详细描述,请参见章
节 5.2 。
可通过 BSL 模式 6 或用户程序 BR_PROG_USER_ID 编程设定 BMI/BMI 值。用户需要
设置 BMI 和 BMI 以进入不同的 boot 模式。UART BSL 模式为系统的缺省模式。引入 BMI
用以检查 BMI 值是否有效:当 BMI + BMI + 1 = 0 时 BMI 值有效。每种模式对应的 BMI
值归纳见表 5-1。
表 5-1
Boot 模式索引 / 列表
Boot 模式1)
BMI
BMI
00H
FFH
00H
00H
01H
FEH
用户模式 (量产)
10H
EFH
使用 SPD 引脚 SPD_0 的用户模式 (诊断)
50H
AFH
使用 SPD 引脚 SPD_1 的用户模式 (诊断)
52H
ADH
使用 SPD 引脚 SPD_2 的用户模式 (诊断)
54H
ABH
使用 SPD 引脚 SPD_0 的 OCDS 模式
60H
9FH
使用 SPD 引脚 SPD_1 的 OCDS 模式
62H
9DH
使用 SPD 引脚 SPD_2 的 OCDS 模式
64H
9BH
保留
其它
其它
UART BSL 模式
UART BSL 模式
2)
备选用户 BSL 模式3)
1) SPD:单引脚 DAP ;
2) 当 BMI 为 00、 BMI 为 00 或 FF 时,可进入 UART BSL 模式。
3) 直接跳转至 DFlash Bank 1 的地址单元 FF40H 处并执行代码。仅 8 KB Flash 产品支持该 boot 模式。
BMI 和 BMI 是用户 ID 寄存器 USER_ID 的一部分。 USER_ID 是 4 字节数据,其中存放
特定的用户信息,具体描述见章节 5.1。用户不但可通过编程 USER_ID 设置 BMI 值,还
可选择系统的工作频率 (8 MHz 或 24 MHz)。在执行用户程序之前选择 boot 模式。
若器件已工作在用户模式 (量产),可通过用户程序中的特定代码修改 BMI 值使其进入
另一种 boot 模式。只有满足设定的用户条件时,才能执行该代码。在该特定代码中,用
户可使用以下指令修改 BMI 值:
· LJMP 至用户程序 BR_UART_BSL,进入 BSL 模式 (使用 BSL 模式 6)
· LCALL 用户程序 BR_PROG_USER_ID,编程 USER_ID 进入其它 boot 模式
出于保护代码的目的,用户可在执行该代码之前擦除所有 Flash 内容。 有关这些用户程
序的详细说明,可参见 Boot ROM 用户程序一章的内容。
用户手册
5-1
V1.1, 2010-09
XC83x
Boot 及系统启动
注:
更新 BMI 之后将执行软复位。在软复位之前关闭电源可能会导致 BMI 更新出错。
系统无需其它复位操作即可使用新 BMI 值。
注: 建议用户在修改 BMI 的过程中禁用看门狗定时器 (WDT)。若在修改 BMI 的过程
中发生 WDT 复位,可能会导致 BMI 更新出错。除此之外,还必须保持供电稳定。
错误的 BMI 可使系统进入死锁状态。
注: 无意执行 BR_PROG_USER_ID 用户程序将影响 BMI。无效的 BMI 可能导致器件
无法正常启动。因此,必须设置一定的用户条件以防止无意跳转到该程序。
在 OCDS 模式和用户模式(诊断)下,将根据 BMI 和 BMI 的值使能单引脚 DAP(SPD)
的调试接口。
5.1
用户 ID
USER_ID 是 4 字节数据,其中存放特定的用户信息 (如启动选择 BMI)。用户可通过
BR_GET_4_BYTES_INFO 用 户 程 序 或 BSL 模 式 A 访 问 USER_ID。用户可通过
BR_FEATURE_SETTING 用户程序或 BSL 模式 6 设置 USER_ID 。有关 BSL 模式的详
细描述,请参见 UART 引导程序加载一章的内容。
USER_ID, 字节 0
7
6
5
4
3
2
1
0
BMI
符号
位
描述
BMI
[7:0]
Boot 模式索引 / 列表
选择进入不同的 boot 模式:用户模式、 UART BSL 模式和
OCDS 模式,详见表 5-1。
USER_ID, 字节 1
15
14
13
12
11
10
9
8
BMI
用户手册
5-2
V1.1, 2010-09
XC83x
Boot 及系统启动
符号
位
描述
BMI
[15:8]
BMI 值取反
BMI 值取反。通过 BMI 检查 BMI 是否有效。当 BMI + BMI +
1 = 0 时, BMI 有效。
USER_ID, 字节 2
23
22
21
20
19
18
17
16
27
26
25
24
0
符号
位
描述
0
[23:16]
保留
USER_ID, 字节 3
31
30
29
28
CLKMOD PERIPHER
E_SEL
ALS_EN
0
符号
位
描述
0
[29:24]
保留
PERIPHERALS_EN 30
外设使能位
0
禁用寄存器 PMCON1 中定义的所有外设
1
使能寄存器 PMCON1 中定义的所有外设
CLKMODE_SEL
时钟模式选择
0
8 MHz 工作模式 (Flash 读取无需等待)
1
24 MHz 工作模式 (Flash 读取需一个等待状态)
用户手册
31
5-3
V1.1, 2010-09
XC83x
Boot 及系统启动
5.2
Boot ROM 工作模式
复位后 CPU 开始工作,始终先执行程序存储器地址段 0000H - 1FFFH 中的 Boot ROM 代
码。 Boot ROM 启动进程将首先切换到地址段 C000H - DFFFH,随后从 C00XH 继续执行
其余的 Boot ROM 启动进程。本手册中给出的 XC83x 存储器结构是 Boot ROM 地址切换
之后的存储器结构图,在该结构下进入 Boot ROM 的不同工作模式。
5.2.1
用户模式 (量产)
若选择用户模式(量产),Boot ROM 将跳转到程序存储器的地址 0000H 处,执行 Flash
存储器中的用户程序。在该模式下,外部访问 Flash 时其内容受保护。这是 XC83x 的的
正常工作模式。
5.2.2
用户模式 (诊断)
若选择用户模式(诊断),Boot ROM 将跳转到程序存储器的地址 0000H 处,执行 Flash
存储器中的用户程序。和章节 5.2.1 所描述的用户模式 (量产)相似,区别在于:该模
式下,指定的 SPD 端口被自动配置为允许热插拔。
5.2.3
引导程序加载模式
若选择引导程序加载(BSL)模式,将执行 Boot ROM 中的引导加载程序,可以对 XRAM
和 Flash 存储器编程、擦除和执行。有关不同 BSL 工作模式的具体描述,请参见 UART
BSL 一章的内容。
5.2.4
OCDS 模式
若选择 OCDS 模式,将进入调试模式对程序进行调试。首先初始化 OCDS 硬件,随后跳
转到程序存储器的地址 0000H 处,执行 Flash 存储器中的用户代码,开始进行调试。
OCDS 模式下,内部数据存储器的最低 64 字节 (地址 00H- 3FH)可选择映射至 64 字节
的监控 RAM 或内部数据 RAM。
5.2.4.1
备选用户 BSL 模式
备选用户 BSL 模式允许用户执行自订制的 BSL 代码。首先必须将该代码写入 64 字节用
户 BSL Flash 扇区中 (位于程序存储器的地址段 FF40H - FF7FH)。
若选择备选用户 BSL 模式, Boot ROM 将跳转至程序存储器的地址单元 FF40H,执行用
户 BSL 代码。
注: 该模式仅在 8 KB Flash 产品中可用。
用户手册
5-4
V1.1, 2010-09
XC83x
UART 引导程序加载
6
UART 引导程序加载
XC83x 支持 UART 引导程序加载 (BSL)模式,可通过设置相应的 BMI 值进入该模式
(参见 Boot 及系统启动一章的描述) 。该模式的主要目的是:通过 UART 便捷的编程 /
擦除 Flash 和 XRAM。
UART BSL 模式 包含两个功能部分,由以下两个阶段来表示:
· 阶段 I :建立串行连接,并与串行通信联系方(主机)的传送速度(波特率)自动同步。
· 阶段 II: 和主机进行串行通信。主机控制串行通信,发送一个特殊的报文头信息选择
工作模式。可选择的工作模式有:
– 模式 0:将用户程序写入 XRAM
– 模式 1:执行 XRAM 中的用户程序
– 模式 2:将用户程序写入 FLASH1)
– 模式 3:执行 FLASH 中的用户程序
– 模式 4:擦除 Flash 扇区中的用户程序 1)
– 模式 6:设置 4 字节 USER_ID
– 模式 A:获取 4 字节信息
其它模式执行完毕之后,微控制器将返回阶段 II 并等待来自主机的下一条命令。模式 1、
模式 3 和 模式 6 除外。
阶段 II 选用的串行通讯方式与阶段 I 接收到的字节有关(在波特率 0x0055 之后),通过
该字节选择单引脚 (0xAA)或 双引脚 (0x55)UART。 UART 自动波特率检测程序 通
过 LIN 波特率检测特性来计算波特率。 UART BLS 模式的端口设置见表 6-1。
表 6-1
UART BSL 模式的端口设置
器件
XC83x
UART_INIT_ID
单 / 双引脚
使用的引脚
0xAA
单引脚
P3.2 用作 RXD
P3.2 用作 TXD
0x55
双引脚
P3.2 用作 RXD
P0.7 用作 TXD
该串行传送为异步模式,串行参数为 8N1(8 位数据、无奇偶校验、 1 位停止位)。由于
微控制器可在阶段 I 和主机自动同步,因此主机可在一定范围内灵活的改变波特率。
6.1
阶段 I:和主机自动串行同步
一旦进入 UART BSL 模式,按照以下步骤建立串行连接、并和串行通信联系方 (主机)
的传送速度 (波特率)进行自动同步:
· 步骤 1:初始化串行接口用于接收,初始化定时器用于波特率测量
· 步骤 2:等待主机发送的同步分隔域 (13 位低电平)和同步字节 (0x55)
1) 包括用户 BSL Flash 扇区,仅限于 XC83x-8K 器件。
用户手册
UART BSL 模式, V1.2
6-1
V1.1, 2010-09
XC83x
UART 引导程序加载
· 步骤 3:和主机波特率同步
· 步骤 4:读取 UART_INIT_ID (0xAA 或 0x55),确定该传送方式为单引脚还是双引
脚 UART 并初始化相应的引脚
· 步骤 5:向主机发送应答字节 (55H)
· 步骤 6:进入阶段 II
6.1.1
概述
可通过波特率检测特性检测主机波特率,由定时器T2来实现。必须执行以下初始化操作:
·
·
·
·
·
微控制器的串行端口设置为模式 1 (8 位 UART,波特率可变)
检测波特率范围选择 (BCON.BGSEL)定义为 00 (缺省值)
在引脚 T2EX 的下降沿捕获定时器 T2 数据寄存器的值
使能定时器 T2 的外部事件 (引脚 T2EX 发生下降沿跳变时,置位标志位 EXF2)
fT2=fPCLK / 4 (T2PRE=010)
UART BSL 的自动波特率检测包括:
· 同步分隔域 (13 个位时间,低电平)
· 同步字节 (55H)
· UART_INIT_ID
分隔域用于指示新的一帧开始,它必须至少保持 13 位显性值。在分隔域开始处检测到引
脚 T2EX 下降沿跳变时,置位定时器 T2 外部启动使能位 (T2MOD.T2RHEN)。当引脚
T2EX 再次发生下降沿跳变时,自动启动定时器 T2 工作。最后查询同步字节结束标志
(FDCON.EOFSYN) 。若该标志置位,定时器 T2 停止工作。 T2 重载 / 捕获寄存器
(RC2H/L)中存放 8 位的位时间。 随后,自动波特率检测程序计算实际波特率,设置
PRE 和 BG 并激活波特率发生器。以上操作完成之后,在发送应答字节之前 (0x55),
读取 UART_INIT_ID 以确定该传送方式为单引脚还是双引脚 UART。波特率检测的原理
如图 6-1 所示。
第一个负跳变,
置位T2RHEN
自动启动T2
负跳变触发的
T2的最后一次捕获值
同步字节(55H)
同步分隔
起始
位
停止
位
捕获值(8位)
图 6-1
置位EOFSYN,
T2停止工作
UART_INIT_ID
0x55(双引脚UART)
0xAA(单引脚UART)
自动波特率检测
用户手册
UART BSL 模式 ,V1.2
6-2
V1.1, 2010-09
XC83x
UART 引导程序加载
6.1.2
BG 和 PRE 的计算
建立自动波特率检测时,必须预先载入 BG 和 PRE 的值。由于共有两个未知值,因此需
要两个计算公式。首先,波特率(baud)和重载值(BG)的关系和片上外设频率(fPCLK)
有关:
(6.1)
f PCLK
baud = ------------------------------------------------------------------n
16 ⎛ PREx ⎛ BRVALUE + ------⎞ ⎞
⎝
⎝
32⎠ ⎠
其次,波特率 (baud)和定时器 T2 捕获值 (T2)的关系和 T2 的计数频率 (fT2)以及
接收位的个数 (Nb)有关:
(6.2)
f T2 × N b
baud = ---------------------T2
联合公式 (6.1) 和公式 (6.2), Nb = 8, fT2 = fPCLK / 4 (T2PRE=010) , PRE=1
(6.3)
f PCLK
---------------- × 8
f PCLK
4
------------------------------------------------------------------- = ------------------------T2
n
16 ⎛ PREx ⎛ BRVALUE + ------⎞ ⎞
⎝
⎠
⎝
⎠
32
简化公式 (6.3) 得到:
(6.4)
n-⎞ T2
⎛ BRVALUE + ----= -----⎝
32⎠ 32
捕获 8 位的位时间便于公式用汇编语言实现。除 32 的操作可简单的通过 5 位右移实现。
在先前的 Acropolis 家族产品中,移位操作会导致小数位损失,从而降低了波特率的准确
性。 因此,在 XC83x 中,实际的移位操作 (除法)不必由固件完成,将完全由硬件实
现。通过该方式可保留除法结果的小数位,从而提高了波特率检测的准确性。因此,将 8
位的位时间捕获到 R2CH 和 R2CL 中之后,直接将数值分别编程到 BGH 和 BGL 中。
设置 BG 和 PRE 之后,使能波特率发生器工作,随后的数据帧将采用该波特率。接收
UART_INIT_ID 确定传送方式是单引脚还是双引脚 UART 之后, UART BSL 程序向主机
发送一个应答字节 (55H)。若该字节接收正确,则可确保双方的串行接口以相同的波特
率工作。
用户手册
UART BSL 模式, V1.2
6-3
V1.1, 2010-09
XC83x
UART 引导程序加载
6.2
阶段 II:串行通信协议和模式
和主机成功同步之后,UART BSL 程序进入阶段 II。在该阶段,微控制器和主机通信,主
机选定期望的工作模式。通信协议的详细说明如下:
6.2.1
串行通信协议
主机和 UART BSL 程序之间的通信基于简单的传送协议来完成。主机向微控制器按块发
送信息。所有的传送块均遵守特定的块结构。 通信几乎是单向的,也就是说,主机负责
发送传送块, UART BSL 程序仅仅通过返回应答或错误字节对主机作出回应,微控制器
本身不发送任何传送块。
不过,也有例外情况 - 在某些模式,微控制器需要向主机发送应答或错误字节之外的其它
数据。
6.2.1.1
传送块结构
一个传送块由 3 部分组成:
块类型
(1 字节)
数据区
(X 字节)
校验和
(1字节)
· 块类型:传送块的类型,它决定如何解读数据区。已实现的块类型有:
– 00H 类型 “报文头”
– 01H 类型 “数据”
– 02H 类型 “传送结束”(EOT)
· 数据区:一组数据字节。模式 0 和 2 的数据区长度不能超过 96/97 字节,这取决于它
是数据块还是 EOT。
· 校验和:块类型和数据区的 XOR 校验和。
每次串行通信时,由主机决定传送块的数量以及相应的长度。出于安全的考虑,每个传
送块的最后一个字节是块类型和数据区的校验和。主机将块类型和数据区的所有字节进
行 XOR 产生校验和。 UART BSL 程序每次接收到一个传送块后,计算接收字节 (块类
型和数据区)的校验和并与接收到的校验和进行比较。
注: 若待写入 Flash 的字节长度小于 1WL,PC 主机必须用 00H 填充其余地址单元,传
送数据的长度为 32n 个字节 (n=1-3)。
6.2.1.2
传送块类型
共有三种传送块类型,这和块类型的取值有关。表 6-2 给出这些块类型的通用信息,详
细说明将在后面的相应章节中给出。
用户手册
UART BSL 模式 ,V1.2
6-4
V1.1, 2010-09
XC83x
UART 引导程序加载
表 6-2
传送块类型
传送块
传送块类型
说明
报文头块
00H
报文头块的长度固定为 8 个字节。该传送块的数据区中
包含着特殊信息,用于选择不同的工作模式。
数据块
01H
数据块的长度和报文头块中给出的特殊信息有关。该传
送块适用于工作模式 0 和 2,用于传送程序代码。 程序代
码放在数据块的数据区。
EOT 块
02H
EOT 块的长度和报文头块中给出的特殊信息有关。在工
作模式 0 和 2 中, EOT 块是数据传送的最后一个块。要
传送的最后的程序代码放在 EOT 块的数据区。
6.2.1.3
返回主机的回应码
微控制器应发送回应码,通知主机是否已成功接收块信息。若接收正确,发送应答码
(55H)。若接收失败,有两种错误的可能。一种是块类型错误,此时 UART BSL 将向主
机返回块类型错误码 (0FFH)。两种情况可导致块类型错误:一种情况是微控制器接收
的块类型和已实现的块类型不同;另一种情况是微控制器接收的传送块顺序有误。比如:
在工作模式 0 下,若接收到报文头块之后,紧接着接收到的不是数据块,而是另一个报
文头块,微控制器则把这种情况视为块类型错误。另一种错误是校验和错误。若校验和
比较失败, UART BSL 程序向主机返回校验和错误码 (0FEH),拒绝接收。出现这两种
错误时, UART BSL 程序将等待主机重新发送正确的块信息。
由于 XC83x 中没有 Flash 保护,因此不存在 Flash 保护错误。 UART BSL 不负责检查
XRAM/Flash 的地址是否有效,由用户来确保 Flash/XRAM 的 DPTR 有效。
微控制器返回主机的回应码类型归纳见表 6-3。
表 6-3
回应码类型
通信状态
返回主机的回应码
成功
55H
块类型错误
0FFH
校验和错误
0FEH
表 6-4 列出微控制器在接收到报文头块、数据块或 EOT 块之后可能返回的各种回应码。
用户手册
UART BSL 模式, V1.2
6-5
V1.1, 2010-09
XC83x
UART 引导程序加载
表 6-4
模式
不同块类型的回应码
EOT 块
报文头块
数据块
0
应答,块类型错误,校验和
错误
应答,块类型错误,校 应答,块类型错误,
验和错误
校验和错误
1
应答,块类型错误,校验和
错误
2
应答,块类型错误,校验和
错误
3
应答,块类型错误,校验和
错误
4
应答,块类型错误,校验和
错误
6
应答,块类型错误,校验和
错误
A
应答,块类型错误,校验和
错误
E
应答,块类型错误,校验和
错误
应答,块类型错误,校 应答,块类型错误,
验和错误
校验和错误
回应码的定义见表 6-5,表中列出导致回应码出错的各种原因,并给出相应的更正操作。
表 6-5
回应码
回应码的定义
值
说明
块类型 BSL
模式
应答
55H
报文
头
EOT
原因 / 含义
1, 3
发送回应码之后立刻执行所请
求操作。
6, A
所请求操作已成功执行完毕。
更正操作
0, 2, 4
所有其它类型 成功接收块信息。在模式 A
随后将发送 ID。做好接收下
一个信息块的准备。
块类型
错误
FFH
所有其它类型 块类型未定义或传送块顺序有 重新发送有效的块
误。
信息
校验和
错误
FEH
所有类型
用户手册
UART BSL 模式 ,V1.2
计算的校验和与接收的校验和 重新发送有效的块
不匹配。
信息
6-6
V1.1, 2010-09
XC83x
UART 引导程序加载
6.2.2
工作模式选择
当 UART BSL 程序进入阶段 II,它首先等待主机发送的一个 8 字节、包含工作模式选择
信息的报文头块。 UART BSL 程序根据该信息选择并激活期望的工作模式。若微控制器
接收到一个错误的报文头块, UART BSL 程序将向主机发送校验和错误或块类型错误
码,等待新的报文头块。在这种情况下,主机将重新发送报文头块或发布消息。
6.2.2.1
接收报文头块
每次进行数据通信时,报文头块始终是主机发送的第一个传送块。报文头块中包含工作
模式编号以及相关模式的特殊信息 (参见 “模式数据”)。其通用结构如下:
块类型
00H
(报文头块)
数据区
模式
(1字节)
模式数据
(5字节)
校验和
(1 字节)
说明:
· 00H:块类型,标明该信息块为报文头块
· 模式:工作模式。已实现的工作模式有:
– 00H ( 模式 0:将用户程序写入 XRAM)
– 01H ( 模式 1:执行 XRAM 中的用户程序 )
– 02H ( 模式 2:将用户程序写入 FLASH)
– 03H ( 模式 3:执行 FLASH 中的用户程序 )
– 04H ( 模式 4:擦除 Flash 扇区中的用户程序 )
– 06H ( 模式 6:设置 4 字节 USER_ID)
– 0AH ( 模式 A:获取 4 字节信息 )
· 模式数据:5 字节的特殊信息,激活相应工作模式的必备信息
· 校验和:报文头块的校验和
6.2.2.2
模式 0:将用户程序写入 XRAM
模式 0 用于主机向微控制器的 XRAM 传送用户程序。
报文头块的结构如下:
用户手册
UART BSL 模式, V1.2
6-7
V1.1, 2010-09
XC83x
UART 引导程序加载
报文头块
数据区
00H
00H
(报文头) (模式0)
起始地址
起始地址
高位
低位
(1字节) (1字节)
块长度
(1字节)
未使用
(2字节)
校验和
(1字节)
模式数据说明:
起始地址高位,低位:16 位起始地址,决定将接收到的程序复制到 XRAM 中的什么位置。
块长度:每次传送的数据块或 EOT 块的总长度。
未使用:2 字节,这些字节未使用,在模式 0 中被忽略。
注: 块长度是指报文头块之后的传送块 (数据块或 EOT 块)的总长度 (块类型、数据
区和校验和)。每次传送的数据块和 EOT 块的长度应该相同。
注: 数据块 (在报文头块之后,发送 1-255 个数据块,最后发送 1 个 EOT 块)的最大
长度为 96+2 = 98 个字节。
注: EOT 块 (在报文头块之后,每次只发送 1 个 EOT 块)的最大长度为 = 96 + 3 =
99 个字节。
微控制器在成功接收报文头块之后进入模式 0,主机向微控制器传送程序代码,即传送数
据块和 EOT 块,说明如下:
注: 不允许传送空数据块。
数据块
01H
(数据块)
(1字节)
程序代码
((块长度-2)个字节)
校验和
(1字节)
说明:
程序代码:程序代码的长度为 ( 块长度 -2) 个字节,块长度由前面的报文头决定。
用户手册
UART BSL 模式 ,V1.2
6-8
V1.1, 2010-09
XC83x
UART 引导程序加载
EOT 块
02H
最后的代码
(EOT块)
长度
(1字节) (1字节)
程序代码
未使用
校验和
(1字节)
说明:
最后的代码长度:该字节指示该 EOT 块中所含程序代码的长度。
程序代码:要发送给微控制器的最后的程序代码。
未使用:长度为 (块长度 -3- 最后的代码长度)。这些字节未使用,可设置为任意值。
6.2.2.3
模式 1:执行 XRAM 中的用户程序
模式 1 用于执行 XRAM 中起始地址为 0F'000H 的用户程序。报文头块的结构如下:
报文头块
数据区
00H
01H
(报文头块 ) (模式1)
校验和
(1字节)
未使用
模式数据说明:
未使用:未使用这 5 个字节,在模式 1 下被忽略。
对于工作模式 1,报文头块是主机发出的唯一传送块,无需进一步的串行通信。微控制器
随后将退出 UART BSL 模式,跳转至 XRAM 的地址单元 0F000H。
6.2.2.4
模式 2:将用户程序写入 FLASH
模式 2 用于主机向微控制器的 Flash 传送用户程序。
报文头块的结构如下:
报文头块
数据区
00H
02 H
(报文头) (模式2)
用户手册
UART BSL 模式, V1.2
起始地址
高位
(1字节)
起始地址
低位
(1字节)
6-9
块长度
(1字节)
未使用
(2字节)
校验和
(1字节)
V1.1, 2010-09
XC83x
UART 引导程序加载
模式数据说明:
起始地址高位,低位 :16 位起始地址,决定将接收到的程序复制到 Flash 中的什么位
置。该地址必须有效并和页地址对齐。
块长度:每次传送的数据块或 EOT 块的长度。每次主机可发送最小 1WL (32 字节)和
最大 3WL (96 字节)。若要发送数据块,最大块长度为 98 (=96+2)个字节;若只发
送 EOT 块,最大块长度为 99 (=96+3)个字节。
未使用:2 字节,这些字节未使用,在模式 2 中被忽略。
注: 若数据从非分页地址处开始,PC 主机将用 00H 填充前面的地址单元并提供该页地
址的起始地址。比如: 若数据从 0F82H 开始, PC 主机将用 00H 填充地址 0F80H
和 0F81H 并向微控制器提供起始地址 0F80H 。若数据仅有 8 个字节, PC 主机将
用 00H 填充剩余的地址单元,传送 32n 个数据字节。
注: 块长度是指报文头块之后的传送块 (数据块或 EOT 块)的总长度 (块类型、数据
区和校验和)。由于数据区长度是 32 字节的整数倍,因此,加上块类型和校验和
字节,块长度为 32n+2 个字节。
注: 可通过该模式编程用户 BSL Flash 扇区,这仅限于 XC83x-8K 器件。
微控制器在成功接收报文头块之后进入模式 2,主机向微控制器传送程序代码,即传送数
据块和 EOT 块,说明如下:
注: 不允许传送空数据块。
数据块
01H
(数据块)
(1字节)
程序代码
((块长度-2)个字节)
校验和
(1字节)
说明:
程序代码:程序代码的长度为 ( 块长度 -2) 个字节,块长度由前面的报文头决定。
EOT 块
最后的代码
02H
(EOT块)
长度
(1字节) (1字节)
程序代码
未使用
校验和
(1字节)
说明:
最后的代码长度:该字节指示该 EOT 块中所含程序代码的长度。
用户手册
UART BSL 模式 ,V1.2
6-10
V1.1, 2010-09
XC83x
UART 引导程序加载
注: 若发送的是数据块,该字节应为 0。若该字节不为 0,附加的不期望字节将被写入。
程序代码:要发送给微控制器的最后的程序代码。
未使用:长度为 (块长度 -3- 最后的代码长度)。这些字节应写入 0。
6.2.2.5
模式 3:执行 FLASH 中的用户程序
模式 3 用于执行 Flash 中起始地址为 0000H 的用户程序。报文头块的结构如下:
报文头块
数据区
00H
03H
(报文头块 )
(模式3)
校验和
(1字节)
未使用
模式数据说明:
未使用:未使用这 5 个字节,在模式 3 下被忽略。
对于工作模式 3,报文头块是主机发出的唯一传送块,无需进一步的串行通信。微控制器
随后将退出 UART BSL 模式,跳转至 Flash 的地址单元 0000H。
6.2.2.6
模式 4:擦除 Flash 扇区中的用户程序
模式 4 用于擦除 Flash Bank 01)和 Flash Bank 12)中的不同扇区。它还支持擦除用户 BSL
Flash 扇区 2)。
报文头块
数据区
00H
(报文头块)
04H
(模式4)
Flash_B0_
SectorL
(1字节)
Flash_B0_
SectorH
(1字节)
Flash_B1_
SectorL
(1字节)
Flash_B1_
SectorH
(1字节)
未使用
(1字节)
校验和
(1字节)
模式数据说明:
Flash_B0_SectorL :Flash Bank 0 的扇区 0-7 分别由该字节的位 0-7 代表。若某位为
1,则表示选中相应的扇区。比如:若该字节为 0x12,表明将删除 Flash Bank 0 的扇区
1 和 4。
1) 适用于 XC83x-4K 和 XC83x-8K 器件。
2) 仅限于 XC83x-8K 器件。
用户手册
UART BSL 模式, V1.2
6-11
V1.1, 2010-09
XC83x
UART 引导程序加载
Flash_B0_SectorH :Flash Bank 0 的扇区 8-9 分别由该字节的位 0-1 代表。若某位为
1,则表示选中相应的扇区。比如:若该字节为 0x01,表明将删除 Flash Bank 0 的扇区 8。
Flash_B1_SectorL :Flash Bank 1 的扇区 0-7 分别由该字节的位 0-7 代表。若某位为
1,则表示选中相应的扇区。比如:若该字节为 0x12,表明将删除 Flash Bank 1 的扇区
1 和 4。
Flash_B0_SectorH :Flash Bank 1 的扇区 8-9 分别由该字节的位 0-1 代表。若某位为
1,则表示选中相应的扇区。比如:若该字节为 0x05,表明将删除 Flash Bank 1 的扇区
8 和用户 BSL Flash 扇区。
注: 不需要 / 未选中的位应清零。
注: Flash_B1_SectorL 和 Flash_B1_SectorH 仅在 XC83x-8K 器件中才可用。对于其
它配置 , 这两个字节被忽略、不使用。
6.2.2.7
模式 6:设置 4 字节 USER_ID
模式 6 用于设置用户 ID,即 USER_ID (4 字节)。报文头块的结构如下:
报文头块
数据区
00H
06H
(报文头块) (模式6)
USER_ID_
3
(1字节)
USER_ID_
2
(1字节)
USER_ID_
1
(1字节)
USER_ID_
0
(1字节)
未使用
(1字节)
校验和
(1字节)
模式数据说明:
User_ID:这 4 个字节由用户定义,用于 BMI 和初始化设置。
未使用:未使用该字节,在模式 6 下被忽略。
设置 USER_ID 之后,向主机返回应答响应 (指示操作成功) ,将触发软件复位从而进
入设定的启动模式。
注: 需谨慎操作和执行该模式。应最后执行该模式:用户应首先写入 Flash 代码,然后
写入 XRAM 代码 (如有需要),最后设置 USER_ID。
注: 不提供擦除 USER_ID 的选项。若要擦除 USER_ID,只需向 4 字节 USER_ID 中
写入 0x00 即可。
6.2.2.8
模式 A:获取 4 字节信息
模式 A 用于获取 4 字节数据,该数据的内容由报文头块中的选择字节决定。报文头块的
结构如下:
用户手册
UART BSL 模式 ,V1.2
6-12
V1.1, 2010-09
XC83x
UART 引导程序加载
报文头块
数据区
00H
0A H
(报文头块) (模式A)
未使用
(4字节)
选择
(1字节)
校验和
(1字节)
模式数据说明:
选择:该字节决定将要发送给主机的 4 字节数据。 00H - 02H 为有效选择。
00H - 芯片 ID (MSB 字节 1... LSB 字节 4)
01H - USER_ID (MSB 字节 1... LSB 字节 4)
在模式 A 中,报文头块是主机发出的唯一传送块。如果成功接收报文头块,微控制器将
向主机返回应答字节,随后是 4 字节数据。如果接收到无效的选择字节,微控制器将返
回 4 字节 00H。USER_ID 是用户 ID,4 字节 USER_ID_INFO 的顺序为:USER_ID_4,
USER_ID_3, USER_ID_2 和 USER_ID_1。
用户手册
UART BSL 模式, V1.2
6-13
V1.1, 2010-09
XC83x
系统控制单元
7
系统控制单元
XC83x 的系统控制单元 (SCU)负责处理除调试之外的所有系统控制任务,和调试相关
的任务由 OCDS/Cerberus 控制。本章描述的所有系统功能均紧密相关,因此它们可集中
通过 SCU 方便的管理。 SCU 包含以下功能子模块:
·
·
·
·
嵌入式电压调节器 (EVR)(见 页 7-1 上的章节 7.1)
复位控制 (见 页 7-6 上的章节 7.2)
时钟系统和控制 (见 页 7-11 上的章节 7.3)
功率管理 (见 页 7-16 上的章节 7.4)
XC83x 提供了一系列在紧急条件下 (如欠压)确保系统性能的特性。
XC83x 时钟系统的核心是时钟产生单元(CGU),通过 48 MHz 振荡器产生主时钟频率。
从主时钟得到的相位同步时钟信号被分配到整个系统中。
7.1
带有嵌入式电压调节器的电源系统
内核、存储器和外设的供电电压由嵌入式电压调节器(EVR)来调节; EVR 内部的检测
电路可确保供电电压在规定的工作电压范围内。 EVR 的主电压调节器和低功率电压调节
器可被分别关闭,从而在不同的省电模式下降低功耗。
XC83x 微控制器需要两种不同电平的电源:
· 嵌入式电压调节器 (EVR)和端口需 2.5 V - 5.5 V 供电
· 内核、存储器、片内振荡器和外设需 2.5 V 供电
XC83x 的电源系统如图 7-1 所示。必须由外部电源引脚提供 2.5 V -5.5 V 的电源。由 EVR
产生 2.5 V 电源。内嵌 EVR 有助于降低整个芯片的功耗及应用板设计的复杂度。
用户手册
7-1
V1.1, 2010-09
XC83x
系统控制单元
CPU &
存储器
片上OSC
外设逻辑
V D D C (2.5V)
FLASH
ADC
GPIO端口
(P0-P2)
EVR
VD D P (2.5V-5.5V)
VSSP
图 7-1
XC83x 电源系统
EVR 特性:
·
·
·
·
·
·
输入电压 (VDDP):3.0 V - 5.5 V @ 全电压工作条件
在低负载的正常工作模式或掉电模式下,输入电压(VDDP)降至2.5 V@ 低压工作条件
输出电压 (VDDC):2.5 V +/- 7.5%
掉电模式下提供低功率电压调节器
VDDC 和 VDDP 预警检测
VDDC 欠压检测
EVR 由一个主电压调节器和一个低功率电压调节器组成。正常工作模式下,两个电压调
节器均被使能。掉电模式下,主电压调节器关闭,低功率电压调节器继续工作,以低功
耗为系统供电。
在全电压工作条件下, EVR 的输入电压范围是 3.0 V - 5.5V ;在低压工作条件下, EVR
的输入电压范围降至 2.5 V。在低压工作条件下,XC83x 只工作在带有有限负载的正常工
作模式或掉电模式。
EVR 包含 VDDC 和 VDDP 检测器。进行 VDDC 检测时有两个阈值电压:预警电压 (2.4 V)
和欠压复位电压(2.3 V)。当 VDDC 低于 2.4 V 时,VDDC NMI 标志位 NMISR.FNMIVDDC
置位,若允许产生 VDDC NMI 中断 (NMICON.NMIVDDC),则向 CPU 发送该 NMI 中断
请求。SDCON.VDDCPW 缺省设置禁用预警检测,在低压工作条件下,如此设置尤其必
要。若允许进行预警检测,该位必须置 1。若 VDDC 低于 2.3 V, 将会激活欠压复位,微
控制器进入复位状态。掉电模式下, VDDC 低于 1.5 V 时产生欠压复位。
用户手册
7-2
V1.1, 2010-09
XC83x
系统控制单元
进行 VDDP 检测时也有两个阈值电压:预警电压 (3.6 V)和欠压复位电压 (2.9 V)。当
VDDP 低于 3.6 V 时, VDDP NMI 标志位 NMISR.FNMIVDDP 置位,若允许产生 VDDP NMI
中断 (NMICON.NMIVDDP),则向 CPU 发送该 NMI 中断请求。若 VDDP 低于 2.9 V,
将会激活欠压复位,微控制器进入复位状态。正常工作模式下,特别是低压工作条件下,
可通过寄存器 SDCON 中的位 VDDPPW 和 VDDPBOA 禁用这两种阈值检测。掉电模式
下自动关闭这两种检测,不过,若 VDDPBOPD 置 1,VDDP 低于 3.6 V 时产生欠压复位。
VDDP 和 VDDC 除欠压阈值电平之外, VDDP 低于 2.4 V 时 EVR 进入复位模式。若通过位
VDDPBOA 和 VDDPBOPD 禁用正常工作模式或掉电模式下的 VDDP 欠压检测,可发生上
述情况。
7.1.1
低压工作条件
在 2.5 V < VDDP < 3.0 V 的低压工作条件下,工作电流必定低于一组值,这和 EVR 的驱
动能力有关,具体极限值可参见数据手册。根据 VDDP 的实际电压,电流消耗须低于规定
值。若条件不满足,则可能触发欠压复位。主要模块的电流消耗情况可参见数据手册。
注: XC83x 的全电压工作条件为 3 V < VDDP < 5.5 V。
用户手册
7-3
V1.1, 2010-09
XC83x
系统控制单元
7.1.2
EVR 寄存器
SDCON 用于使能或禁用各检测器。此外,该寄存器还给出 VDDP 和 VDDC 阈值电平的状
态。必须在访问该寄存器之前设置 SCU_PAGE.PAGE。
SDCON
电压检测控制寄存器
RMAP: 0, PAGE: 1
7
(EEH)
6
5
4
0
VDDPTH
VDDCTH
r
rh
rh
复位值:34H
3
2
1
0
VDDPBO
VDDPBOA VDDPPW VDDCPW
PD
rw
rw
符号
位
类型
描述
VDDCPW
0
rw
VDDC 预警检测使能
0
禁止 VDDC 预警检测。
1
使能 VDDC 预警检测。
rw
rw
注: 只有当该位被置 1 时,才能触发 VDDC 预警
标志和 NMI。
VDDPPW
1
rw
VDDP 预警检测使能
0
禁止 VDDP 预警检测。
1
使能 VDDP 预警检测。
注: 只有当该位被置 1 时,才能触发 VDDP 预警
标志和 NMI。
VDDPBOA
2
rw
使能正常工作模式下的 VDDP 欠压检测
0
禁止正常工作模式下的 VDDP 欠压检测。
1
使能正常工作模式下的 VDDP 欠压检测。
VDDPBOPD
3
rw
使能掉电模式下的 VDDP 欠压检测
0
禁止掉电模式下的 VDDP 欠压检测。
1
使能掉电模式下的 VDDP 欠压检测。
VDDCTH
4
rh
VDDC 阈值指示
0
低于 VDDC 预警阈值电平。
1
高于 VDDC 预警阈值电平。
VDDPTH
5
rh
注: 该位不受位 VDDCPW 的影响。
VDDP 阈值指示
0
低于 VDDP 预警阈值电平。
1
高于 VDDP 预警阈值电平。
注: 该位不受位 VDDPPW 的影响。
用户手册
7-4
V1.1, 2010-09
XC83x
系统控制单元
符号
位
类型
描述
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
用户手册
7-5
V1.1, 2010-09
XC83x
系统控制单元
7.2
复位控制
XC83x 有五种复位方式:上电复位、看门狗定时器复位、软复位、掉电唤醒复位和欠压
复位。
当 XC83x 首次上电、或输入电压低于阈值电压导致欠压时,系统复位之后,必须先达到
合适的电压阈值才能开始工作。 CPU 随后开始执行 Boot ROM 固件。
检测到系统出现故障时,看门狗定时器 (WDT)也能复位器件。
另一种需要检测的复位是器件掉电模式下的复位(唤醒复位)。上电复位后静态 RAM 的
内容未被定义;而掉电唤醒复位后,静态 RAM 的内容完好保留。
若使能和 VDDC 和 VDDP 的欠压检测, VDDC 电压跌至 2.3 V 以下或 VDDP 电压跌至 2.9 V
以下时触发欠压复位。
应用软件可根据需要触发软复位。
7.2.1
复位类型
7.2.1.1
上电复位
电源电压 VDDP 用于芯片上电。上电后首先复位 EVR 模块,包括:
1. 启动主电压调节器和低功率电压调节器
2. 当 VDDP 和 VDDC 达到 VDDP 和 VDDC 检测器的阈值电压时, EVR 复位变为无效
系统启动后,使用 48 MHz 的振荡器产生系统频率,器件以 8 MHz 频率工作。EVR 稳定
之后,一旦 48 MHz 的振荡器达到稳定,在释放系统的复位信号之前 Flash 必须进入读取
准备就绪模式。 用户模式下,可由 Boot ROM 中的启动固件将系统时钟切换到用户可选
的时钟模式 (8 MHz 或 24 MHz)。由引脚 P0.4 指示器件复位 (复位指示引脚)。
系统复位后,启动固件开始工作,它将对 USER_ID 中的信息,如 boot 模式(用户模式、
BSL 模式、OCDS 模式)和系统时钟频率进行译码。在进入选中的 boot 模式之前,启动
固件将根据译码值进行必要的设置。
注: VDDP 未上电时,任一 GPIO 引脚流入的电流决不能使 VDDP 的电压高于 0.3 - 0.5 V。
7.2.1.2
看门狗定时器复位
看门狗定时器复位是一种内部复位。看门狗定时器 (WDT)中的计数器必须被周期刷新
或清零。如果 WDT 没有被及时、正确刷新,它将向 CPU 发送 NMI 中断请求,在预先定
义的一个超时周期之后对系统复位。位 RSTCON.WDTRST 用来指示 WDT 的复位状态。
对于 WDT 复位而言,由于 EVR 和 48 MHz 振荡器已稳定工作,因此 WDT 复位比其它
类型复位所需的时间短。
用户手册
7-6
V1.1, 2010-09
XC83x
系统控制单元
7.2.1.3
软复位
软复位是一种内部复位,软件置位 RSTCON 寄存器中的软复位请求位 SWRQ 触发该复
位。应用软件可根据需要触发软复位。位 RSTCON.SOFTRS 用来指示软复位状态。
7.2.1.4
掉电唤醒复位
掉电模式下,低功率电压调节器仍然工作, XC83x 仍有供电。如果进入掉电状态的时间
恰当,所有重要的系统状态将由软件保留在 Flash 中。
如果 XC83x 处于掉电模式,有三种唤醒方式供选择:
· 由 RTC 唤醒事件唤醒 (和掉电模式的类型有关)
· 由 EXINT0 唤醒
· 由 RTC 时钟源出错唤醒
通过控制位 PMCON0.EWS 选择由 EXINT0 引脚唤醒系统。根据掉电模式的类型不同,
RTC 唤醒事件和 RTC 时钟出错也可用作唤醒源。掉电唤醒可以带复位或不带复位,这由
PMCON0.WKSEL 选择。位 RSTCON.WKRS 指示唤醒状态 (带复位或无复位)。
由于 EVR 只需较短的时间即可达到稳定,因此掉电唤醒复位比上电复位所需的时间短。
7.2.1.5
欠压复位
正常工作模式下,当内核电压跌至以下某电压时, EVR 中的 VDDC 检测器检测到欠压 :
· 阈值电压 VDDC_TH (约 2.3 V)或
· 若使能检测器工作,阈值电压 VDDP_TH (约 2.9 V)或
· 若禁止检测器工作,阈值电压 VDDP_TH (约 2.4 V)
欠压将引发器件复位。掉电模式下,由 EVR 中的 POR 监控 VDDC。当 VDDC 跌至 1.5 V
以下时发生复位。
一旦发生欠压复位,该复位过程和上电复位过程相同。
7.2.2
模块复位行为
表 7-1 给出不同复位类型对 XC83x 各功能单元的影响。符号 "■" 表示该功能被复位至相
应的缺省值。
表 7-1
复位对模块 / 器件功能的影响
模块 / 功能
上电复位
欠压复位
唤醒复位
软复位
WDT 复位
CPU
■
■
■
■
■
SCU
■
■
外设
■
■
■
指示位除外
■
■
指示位除外
■
■
指示位除外
■
调试系统
■
■
■
■
■
用户手册
7-7
V1.1, 2010-09
XC83x
系统控制单元
表 7-1
复位对模块 / 器件功能的影响
模块 / 功能
上电复位
欠压复位
唤醒复位
软复位
WDT 复位
端口控制
■
■
■
■
■
启动 FW
初始化
初始化
初始化
初始化
初始化
片内静态
RAM
Flash
受影响,
不可靠
■
受影响,
不可靠
■
不受影响,
可靠
■
不受影响,
可靠
■
不受影响,
可靠
■
EVR
■
■
■
■
■
时钟系统
■
■
■
■
■
用户手册
7-8
V1.1, 2010-09
XC83x
系统控制单元
7.2.3
复位控制寄存器
RSTCON 寄存器中存放唤醒事件、 WDT 复位和软复位的指示位。 发生这些事件时,
RSTCON 的相应复位值归纳见表 7-2。
RSTCON
复位控制寄存器
RMAP: 0, PAGE: 1
7
(F7H)
6
5
4
复位值:00H
3
2
1
0
SWRQ
0
SOFTRS
WDTRST
WKRS
rwh
r
rwh
rwh
rwh
符号
位
类型
描述
WKRS
0
rwh
唤醒指示位
0
未发生唤醒
1
已发生唤醒
该位只能由硬件置位,软件清零。
WDTRST
1
rwh
WDT 复位指示位
0
未发生 WDT 复位
1
已发生 WDT 复位
该位只能由硬件置位,软件清零。
SOFTRS
2
rwh
软复位指示位
0
未发生软复位
1
已发生软复位
该位只能由硬件置位,软件清零。
SWRQ
7
rwh
软复位请求
0
无操作
1
请求软复位
该位由硬件自动清零。
SWRQ 是受保护位。保护方案激活时,不能直接对
该位进行写操作。
0
[6:3]
r
保留
读取返回 0 ;应写入 0。
用户手册
7-9
V1.1, 2010-09
XC83x
系统控制单元
表 7-2
寄存器 RSTCON 的复位值
复位源
复位值
掉电唤醒复位
0000 0001B
WDT 复位
0000 0010B
软复位
0000 0100B
上电复位 / 欠压复位
0000 0000B
用户手册
7-10
V1.1, 2010-09
XC83x
系统控制单元
7.3
时钟系统及控制
XC83x 的时钟系统由 48 MHz 的振荡器和时钟控制单元 (CCU)组成,如图 7-2 所示。
由 48 MHz 的片内振荡器产生系统时钟 fSYS,fSYS 作为时钟控制单元 (CCU)的输入。
CCU 从系统时钟产生微控制器所需的所有时钟信号,包括:
· 正常工作模式下的时钟模式选择
· 时钟使能 / 禁止集中控制电路
SPCLK
/6
LEDTSCU
FPCLK
PCLK
1)
CLKMODE=1
48 MHz
OSC
fsys=
48MHz
/2
CLKMODE=0
1)
SSC, UART, T0, T1, T2,
2)
2)
IIC, WDT , RTC
SCLK
CCLK
/3
CCU6, CORDIC, MDU, ADC
CCLKn
内核
FLASH
接口
时钟控制单元 (CCU)
1)CLKMODE是 BROM用户程序的输入参数 ,用于选择内核频率
2)WDT和RTC模块中计数器的输入时钟频率请参见相应章节的内容
图 7-2
时钟系统框图
在正常工作模式下,不同模块的典型工作频率如下:
·
·
·
·
·
CPU 时钟 (CCLK, SCLK) = 24 MHz
Flash 接口时钟 (CCLKn) = 48 MHz
快速外设时钟 (FPCLK) = 48 MHz
低速外设时钟 (SPCLK) = 8 MHz
外设时钟 (PCLK) = 24 MHz (和 CPU 时钟相同)
以 FPCLK 频率工作的外设有 CCU6, CORDIC, MDU, ADC, LED 和触摸感应控制器。其
它外设以 PCLK 频率工作。正常工作模式下, PCLK= CCLK.
用户手册
7-11
V1.1, 2010-09
XC83x
系统控制单元
正常工作模式下, CPU 时钟 (CCLK, SCLk)和外设时钟 (PCLK)有两种频率选择:
8 MHz 和 24 MHz。通过 Boot ROM 中的用户程序 BR_CLKMODE_SETTING 切换时钟。
若用户程序的输入参数 CLKMODE 设置为 0,选择 8 MHz ;设置为 1,选择 24 MHz。
在修改 CPU 时钟和 PCLK 时钟的过程中,建议禁用所有中断以避免对 Flash 进行访问,
否则可能导致失败的 Flash 操作。若 CPU 工作在 24 MHz,读取 Flash 时需插入一个等
待状态; CPU 工作在 8 MHz 时,无需插入等待状态。
空闲模式下,只关闭 CPU 时钟 CCLK。掉电模式下, CCLK, SCLK, FPCLK, SPCLK,
CCLKn 和 PCLK 均关闭。
除 48 MHz 片内振荡器之外, XC83x 还内置一个 75 kHz 振荡器。当 48 MHz 时钟丢失
时,该 75 kHz 振荡器用作二级系统时钟,它还可用作 WDT 的输入时钟。
此外,XC83x 需要一个 32.768 kHz 的片外振荡器(经振荡器引出脚连接),从而通过实
时时钟模式 0 支持计时功能。
7.3.1
振荡器看门狗
XC83x 中有三种振荡器看门狗:48 MHz 振荡器看门狗 (48 MHz OWD)、 75 kHz 振荡
器看门狗 (75 kHz OWD)和 32.768 kHz 片外振荡器看门狗 (32.768 kHz OWD) 。
48 MHz OWD 监控 48 MHz 时钟源,低于 43 MHz (典型值)的输入频率被检测为 “振
荡器频率过低”。 75 kHz OWD 监控 75 kHz 时钟源,低于 35 kHz (典型值)被检测为
“频率过低”。置位 OSC_CON.RCOWDRST 可重新启动 48 MHz 和 75 kHz 振荡器检
测。 13 个 75 kHz 的时钟周期之后 (约 180 us),检测状态输出才有效。第三种振荡器
看门狗监控 32.768 kHz 的片外时钟源。
复位后缺省禁用 48 MHz 和 75 kHz OWD。在使能 OWD 之前,用户必须检查标志位
OSC_CON.INTOSC_ST 的状态。若标志位 INTOSC_ST 为 1, 75 kHz 振荡器应已稳定
工作。随后,可通过置位 OSC_CON.RCOWDRST 使能 OWD 功能。建议当 48MOSC2L
和 75KOSC2L 均为 0 时继续执行用户程序。 用户还可选择在等待 48MOSC2L 和
75KOSC2L 稳定之前执行其它操作。当 48MOSC2L 或 75KOSC2L 为 1 时,若控制位
NMICON.NMIOSCCLK 使能中断,则会产生振荡器时钟丢失 NMI。
当 32.768 kHz 振荡器的频率低于 16 kHz (典型值)时,相应的振荡器看门狗可检测到
时钟丢失。
7.3.2
时钟丢失检测及恢复
器件正常工作期间,48 MHz 振荡器看门狗检测到低于 43 MHz 的标称输入频率时,发生
时钟丢失。在这种情况下,若控制位 NMICON.NMIOSCCLK 使能中断,将产生 NMI 中
断。此时,振荡器状态标志 48MOSC2L 置 1,由 75 kHz 振荡器提供系统时钟,可使用
该振荡器频率执行紧急程序。
下次上电复位或成功执行时钟恢复之前, XC83x 始终保持时钟丢失状态。可通过置位
OSC_CON.RCOWDRST 重新启动检测以进行时钟恢复。检测到振荡器频率稳定且高于
43 MHz 之后,位 48MOSC2L 清零,系统时钟将自动切换到 48 MHz 的时钟源。
检测到 75 kHz 振荡器的时钟丢失时, 75 kHz 振荡器看门狗状态标志 75KOSC2L 置 1。
若控制位 NMICON.NMIOSCCLK 使能中断,将产生 NMI 中断。此时,将不会切换到 48
用户手册
7-12
V1.1, 2010-09
XC83x
系统控制单元
MHz 振荡器。不过,48 MHz 振荡器看门狗不起作用,不能监控该主时钟。可使用 48 MHz
时钟执行紧急程序。
注: 时钟丢失状态下以 75 kHz 作为系统频率时,可以读取 Flash。不过不允许编程和
擦除 Flash。
注: 48 MHz 或 75 kHz 振荡器发生时钟丢失时,通过 NMICON.NMIOSCCLK 使能时钟
丢失 NMI 中断。
当 32.768 kHz 振 荡 器 看 门 狗 检 测 到 低 于 16 kHz 的标称输入频率时,若控制位
NMICON.NMIXTALCLK 使能中断,将产生 NMI 中断,同时片外振荡器状态标志 XTAL2L
将置 1。此时,RTC 模块若工作在计时模式,则会导致时钟丢失。建议用户终止 RTC 操
作或为 RTC 选择其它时钟源 (因为计时模式将无法正常工作)。
7.3.3
32.768 kHz 振荡器时钟的启动控制
在 XC83x 中,使用 32.768 kHz 的片外时钟进行计时。必须执行以下步骤使能该时钟:
· OSC_CON.XPD 置 0 以使能 32.768 kHz 振荡器引出脚。
· 等待 2 s 至振荡稳定。
· 使能 32.768 kHz OWD 之前,确保 75 kHz 振荡器达到稳定(OSC_CON.INTOSC_ST
= 1)。
· OSC_CON.XTALOWDRST 置 1 以重新启动 32.768 kHz OWD。
· 当 XTAL2L 为 0 时,选择实时时钟模式 0 (计时模式)。
用户手册
7-13
V1.1, 2010-09
XC83x
系统控制单元
7.3.4
CCU 寄存器
复位 (任意类型)之后,时钟控制单元的所有寄存器复位到缺省值。
寄存器 OSC_CON 控制 48 MHz、 75 kHz 和 32.768 kHz 振荡器看门狗。
OSC_CON
OSC 控制寄存器
RMAP: 0, PAGE: 1
(F4H)
7
6
5
4
0
INTOSC
_ST
XPD
XTAL2L
r
rh
rw
rh
复位值:30H
3
2
XTALOWD 75KOSC
RST
2L
rwh
rh
1
0
48MOSC
2L
RCOWD
RST
rh
rwh
符号
位
类型
描述
RCOWDRST
0
rwh
48 MHz 和 75 kHz 振荡器看门狗复位
置位该位将重新启动振荡器检测。该位将自动复位
到 0,因此读取始终返回 0。
0
不起作用
1
重新启动 48 MHz 和 75 kHz 振荡器看门狗。
48MOSC2L 和 75KOSC2L 标志将保持最近
一次的值, 180 us 后才显示更新值。
48MOSC2L
1
rh
48 MHz 振荡器频率过低标志
振荡器看门狗监控 fSYS (等于 fOSC)。由片内
48 MHz 振荡器产生系统频率。
0
fSYS 高于阈值。
1
fSYS 低于阈值。
75KOSC2L
2
rh
75 kHz 振荡器频率过低标志
振荡器看门狗监控 75 kHz 振荡器频率。
0
75 kHz 振荡器频率高于阈值。
1
75 kHz 振荡器频率低于阈值。
XTALOWDRST
3
rwh
32.768 kHz 片外振荡器看门狗复位
置位该位将重新启动振荡器检测。该位将自动复位
到 0,因此读取始终返回 0。
0
不起作用
1
重新启动 32.768 kHz 振荡器看门狗。
XTAL2L 标志将保持最近一次的值, 250 us
后才显示更新值。
用户手册
7-14
V1.1, 2010-09
XC83x
系统控制单元
符号
位
类型
描述
XTAL2L
4
rh
32.768 kHz 片外振荡器频率过低标志
振荡器看门狗监控 32.768 kHz 片外振荡器频率。
0
片外振荡器频率高于阈值。
1
片外振荡器频率低于阈值。
XPD
5
rw
32.768 kHz 振荡器引出脚关闭控制
0
32.768 kHz 振荡器引出脚未关闭。
1
32.768 kHz 振荡器引出脚关闭。 GPIO 功能
可用。
INTOSC_ST
6
rh
片内振荡器稳定指示
0
48MHz 和 75 kHz 振荡器不稳定。
1
48MHz 和 75 kHz 振荡器稳定。
0
7
r
保留
读取返回 0 ;应写入 0。
注: OSC_CON 寄存器的复位值为 0011 0110B。复位后一个时钟周期,若两个振荡器
均工作,位 48MOSC2L 和 75KOSC2L 将清零,随后该寄存器的复位值为 0011
0000B。
用户手册
7-15
V1.1, 2010-09
XC83x
系统控制单元
7.4
功率管理
XC83x 通过以下方式实现了多种省电模式,从而可灵活的降低系统功耗:
·
·
·
·
终止 CPU 时钟
终止系统某个单元的时钟
降低部分外设单元的时钟频率
具有快速重启能力的全系统掉电
复位后,缺省进入正常工作模式(见图 7-3),系统以主频运行。在正常工作模式下,系
统可运行在 24 MHz 或 8 MHz。可由软件选择进入不同的省电模式,包括:
·
·
·
·
·
空闲模式
掉电模式 1
掉电模式 2
掉电模式 3
掉电模式 4
掉电模式1
EXINT0
引脚
设置
PDMODE=00B
EXINT0引脚/RTC唤醒事件
/RTC时钟丢失
掉电模式2
置位IDLE位
正常工作
模式
空闲
任意中断
设置PDMODE=01 B
设置PDMODE=10 B
掉电模式3
EXINT0引脚/RTC唤醒事件
EXINT0/
RTC唤醒事件
设置
PDMODE=11B
掉电模式4
图 7-3
省电模式之间的转换 (无复位)
在 XC83x 中,以 3.0 V - 5.5 V 正常 VDDP 电压为系统供电时,所有功能在正常工作模式
和空闲模式下均有效;供电电压降低时,用户需要的功能保持有效 (只要有效电流低于
极限值)。掉电模式下,当 VDDP 低至 2.5 V 时,章节 7.4.1.2 中描述的特定模块仍须继续
工作,但系统性能可能下降。
用户手册
7-16
V1.1, 2010-09
XC83x
系统控制单元
7.4.1
功能说明
7.4.1.1
空闲模式
空闲模式通过终止内核时钟来降低功耗。
空闲模式下,振荡器继续工作,但内核时钟关闭,内核停止工作。输入时钟未关闭的外
设仍继续工作。系统进入空闲模式前用户应关闭 WDT ;否则 WDT 在溢出时将产生内部
复位,从而打断空闲模式。空闲模式下, CPU 的状态被完整保存:堆栈指针、程序计数
器、程序状态字、累加器以及所有其它寄存器均保留进入空闲模式之前的数值;端口引
脚保持空闲模式被激活时的逻辑状态。
软件通过设置 PCON.IDLE = 1 请求进入空闲模式。
激活任意被使能的中断可使系统退出空闲模式,返回正常工作模式。 CPU 恢复运行,响
应中断。执行完 RETI 指令, CPU 将返回执行 IDLE 置 1 指令之后的下一条指令。
7.4.1.2
掉电模式
为了达到不同的省电等级, XC83x 支持四种掉电模式:掉电模式 1、 2、 3 和 4。通常,
在这两种模式下,48 MHz 振荡器和 Flash 存储器进入掉电状态,主电压调节器关闭,只
有低功率电压调节器继续工作。因此,微控制器的大部分功能被终止,但 Flash、片内
RAM、 XRAM 和 SFR 的内容被保留。
表 7-3 给出掉电模式下部分模块的行为。在掉电模式 2 下, RTC 以周期唤醒模式工作,
从而器件可在特定的时间段之后退出掉电模式,该功能在低功耗应用中十分有用。在低
压工作条件下 (主电压可低至 2.5 V),那些在掉电模式下运行的模块仍保持工作,不过
系统性能可能下降。其余模块在这两种掉电模式下均关闭。表 7-4 给出每种掉电模式的
唤醒源。 其中一种唤醒源是通过设置 EWS = 1、由 EXINT0 引脚接收外部唤醒信号。由
寄存器 EXICON0 中的位 EXINT0 选择触发唤醒信号的跳变沿。
注: EXICON0.EXINT0 = 11B 不能用于掉电唤醒。
表 7-3
掉电模式下的模块行为1)
模块
掉电模式 1
掉电模式 22)
掉电模式 32)
掉电模式 42)
RTC
N
Y
Y
Y
75 kHz OSC
N
Y
N
Y
32.768 kHz OSC N
PAD
Y
Y
N
75 KHz OWD
N
N
N
N
32.768 kHz OWD N
Y
N
N
1) N 代表掉电模式下模块关闭; Y 代表掉电模式下模块可工作。
2) 掉电模式下不支持 RTC 模式 2 和 3。一旦进入掉电模式, RTCCLK 引脚将被关闭。
用户手册
7-17
V1.1, 2010-09
XC83x
系统控制单元
表 7-4
可用的掉电唤醒源
模块
掉电模式 1
掉电模式 2
掉电模式 3
掉电模式 4
RTC 唤醒
不可用
可用
可用
可用
Clock 出错
EXINT01)
不可用
可用
不可用
不可用
可用
可用
可用
可用
1) 通过位 PMCON0.EWS 选择 EXINT0 唤醒源。
掉电模式 1
该模式下,所有外设模块、 CPU、由 32.768 kHz XTAL 引出脚或 75 kHz 振荡器提供输
入时钟的 RTC 均被关闭, 32.768 kHz 和 75 kHz 振荡器看门狗也被关闭。时钟关闭后,
不能由中断或实时时钟唤醒系统,只能通过设置位 EWS = 1、由 EXINT0 引脚上的外部
唤醒信号唤醒系统。系统进入掉电模式之前,必须选定唤醒源和唤醒类型。
进入掉电模式 1 的步骤如下:
· 设置 PMCON0.PDMODE = 00B 选择掉电模式 1。
· 设置 PMCON0.PD = 1 关闭包括 48 MHz 和 75 kHz 振荡器在内的所有模块。
位 PMCON0.PD 置 1 后必须插入两条 NOP 指令,从而可确保从掉电模式唤醒之后第一
个指令 (两条 NOP 指令之后)能够被正确执行。
掉电模式 2
该模式下,除表 7-3 列出的模块之外,其它所有模块均被关闭。RTC 以 32.768 kHz XTAL
引出脚提供的时钟工作在计时模式(RTC 模式 0),保持实时计数。此外,在该模式下,
可使能 75 kHz 和 32.768 kHz 振荡器看门狗(OWD)以监控片外振荡器的状态。可通过
RTC 唤醒事件唤醒系统退出掉电模式 2,还可通过设置位 PMCON0.EWS = 1、由 EXINT0
引脚上 的 外 部 唤 醒 信 号唤 醒 系 统。若
32.768 kHz
的片外振荡器时钟丢失,
OSC_CON.XTAL2L 标志置 1 时退出掉电模式 2。
进入掉电模式 2 的步骤如下:
· 设置 OSC_CON.XPD = 0 使能 32.768 kHz 振荡器 pad。
· 等待 2 s 至振荡器稳定。
· 使能 32.768 kHz OWD 之前,确保 75 kHz 振荡器达到稳定(OSC_CON.INTOSC_ST
= 1)。
· 设置 OSC_CON.XTALOWDRST=1 重新启动 32.768 kHz OWD。
· 当 XTAL2L 为 0 时,选择 RTC 模式 0 (计时模式)。
· 设置 RTCON.RTCC = 1 确保使能 RTC。
· 设置 WDTCON.WDTEN = 0 禁用 WDT 模块。
· 设置 PMCON0.PDMODE = 01B 选择掉电模式 2。
· 设置 PMCON0.PD = 1 进入掉电模式。
位 PMCON0.PD 置 1 后必须插入两条 NOP 指令,从而可确保从掉电模式唤醒之后第一
个指令 (两条 NOP 指令之后)能够被正确执行。
用户手册
7-18
V1.1, 2010-09
XC83x
系统控制单元
注: 在进入掉电模式之前,必须通过软件设置禁用 WDT 定时器。若掉电模式下 WDT
发生溢出,器件将无法唤醒。
掉电模式 3
掉电模式 3 和掉电模式 2 的区别在于:该模式下,32.768 kHz 振荡器看门狗和 75 kHz 振
荡器被关闭,无法监控片外振荡器的状态。若片外振荡器稳定,可通过 RTC 唤醒事件唤
醒系统退出掉电模式 3。唤醒时间必须长于进入掉电模式所需的时间。此外,还可通过设
置位 PMCON0.EWS = 1、由 EXINT0 引脚上的外部唤醒信号唤醒系统。
进入掉电模式 3 的步骤如下:
·
·
·
·
·
·
设置 OSC_CON.XPD = 0 使能 32.768 kHz 振荡器 pad。
等待 2 s 至振荡器稳定。
选择 RTC 模式 0 (计时模式)。
设置 RTCON.RTCC = 1 确保使能 RTC。
设置 PMCON0.PDMODE = 10B 选择掉电模式 3。
设置 PMCON0.PD = 1 进入掉电模式。
注: 以上步骤不包括使能 32.768 kHz OWD,可在工作模式下监控片外振荡器时使能该
OWD。进入掉电模式 3 时, OWD 和 75 kHz 振荡器将由硬件自动关闭。
位PMCON0.PD置1后必须插入两条NOP指令,从而可确保从掉电模式唤醒之后第一个指
令 (两条 NOP 指令之后)能够被正确执行。
掉电模式 4
该模式下,除表 7-3 列出的模块之外,其它所有模块均被关闭。RTC 以 75 kHz 的频率工
作在周期唤醒模式下,保持实时计数。不过,由于 75 kHz 振荡器看门狗关闭,因此无法
监控 75 kHz 振荡器的状态。可通过 RTC 唤醒事件唤醒系统退出掉电模式 4,还可通过
设置位 PMCON0.EWS = 1、由 EXINT0 引脚上的外部唤醒信号唤醒系统。
进入掉电模式 4 的步骤如下:
·
·
·
·
设置 RTCON.RTCC = 1 确保使能 RTC 工作。
设置 WDTCON.WDTEN = 0 禁用 WDT 模块。
设置 PMCON0.PDMODE = 11B 选择掉电模式 4。
设置 PMCON0.PD = 1 进入掉电模式。
位 PMCON0.PD 置 1 后必须插入两条 NOP 指令,从而可确保从掉电模式唤醒之后第一
个指令 (两条 NOP 指令之后)能够被正确执行。
在各种掉电模式下,端口引脚保持掉电模式被激活时的逻辑状态。对于数字端口而言,一
旦芯片进入掉电模式,所有未用作唤醒源的端口的输入 / 输出驱动器禁用,从而可降低漏
电流。用户若想在输出引脚上保持 “1”或 “0”电平,在进入掉电模式之前应使能上拉
/ 下拉器件。系统唤醒后,将重新使能端口引脚。
注: 在进入掉电模式之前,必须通过软件设置禁用 WDT 定时器。若掉电模式下 WDT
发生溢出,器件将无法唤醒。
用户手册
7-19
V1.1, 2010-09
XC83x
系统控制单元
退出掉电模式
可通过以下方式退出掉电模式:
· EXINT0 引脚上检测到由 EXICON0.EXINT0 选定的信号跳变
· RTC 产生的唤醒事件请求
· RTC 时钟源出错
注: EXICON0.EXINT0 = 11B 不能用于掉电唤醒。
由位 PMCON0.EWS 使能 EXINT0 唤醒源。可由位 MODPISEL1.EXINT0IS 选择 EXINT0
的输入引脚。由位 PMCON0.WKSEL 选择带复位唤醒或无复位唤醒。
若进入掉电模式前 WKSEL 已置 1,系统将执行和上电复位类似的复位序列。因此,所有
端口引脚处于复位状态,该状态一直保持到执行程序将其改变。
若进入掉电模式前 WKSEL 已清 0,系统将执行快速唤醒序列。端口引脚保持掉电模式下
的有效状态,直至执行程序改变引脚值。
由 EXINT0 触发的无复位掉电唤醒的步骤如下:
1.
2.
3.
4.
5.
掉电模式下, EXINT0 引脚必须保持无效电平。
EXINT0 引脚变有效至少保持 100 ns 之后退出掉电模式。
主电压调节器开启,大约需要 150 μs 达到稳定。
片上振荡器开启,通常需要 10 us 达到稳定。
随后 FLASH 进入读取准备就绪模式。和正常复位下的时长 160 μs 不同,该段时间可
忽略。
6. CPU 恢复运行。内核将返回执行 PD 置 1 指令之后的下一条指令。
注: 唤醒源 EXINT0 不会引发中断,即使进入掉电模式之前 EXINT0 被使能。其它唤醒
源也一样。只有在 CPU 恢复运行之后、 EXINT0 满足中断产生条件时,才会产生
中断。
在低压工作条件下,退出掉电模式进入正常工作模式时,有效电流必须低于数据手册规
定的极限值。若该条件不满足,则在唤醒之后立即发生欠压复位。
无复位掉电唤醒后,可由唤醒事件的状态标志指示唤醒源。此外,可根据需要置位
OSC_CON.RCOWDRST 重新使能振荡器看门狗。 不过,在使能振荡器看门狗工作之
前,必须检查标志位 OSC_CON.INTOSC_ST 的状态,确保 48 MHz 和 75 kHz 振荡器已
稳定工作,详细说明请参见章节 7.3.1。
掉电模式 1 下, RTC 关闭。一旦退出掉电模式, RTC 要由用户重新使能。
用户手册
7-20
V1.1, 2010-09
XC83x
系统控制单元
7.4.1.3
外设时钟管理
功耗降低的程度取决于哪些外设在工作(运行外设的个数)。在实现某种特定功能时,对
于那些不需要的外设,可关闭其时钟输入禁止该外设工作。例如,在空闲模式下,若所
有定时器被停止,ADC、CCU6、MDU 和串行接口均不工作,则最大程度降低了系统功
耗。不过,用户必须慎重决定在正常工作模式和空闲模式下,哪些外设应继续工作,那
些外设应被停止。
置位寄存器 PMCON1 中的相应控制位,可分别禁止(关闭时钟)外设单元 ADC、SSC、
CCU6、MDU、LEDTSCU、IIC 和定时器 T2。此外,复位 GLOBCTR.ANON 可禁止 ADC
的模拟部分,该特性将终止 ADC 模拟时钟的产生,无需进行模数转换时功耗降低。
使用片上振荡器以节省功耗时,应置位 OSC_CON.XPD 关闭 XTAL。使用片外振荡器时,
可通过置位 OSC_CON.OSCPD 关闭片上振荡器。
PMCON1
外设管理控制寄存器 1
RMAP: 0, PAGE: 1
7
6
IIC_DIS
LTS_DIS
rw
rw
(EFH)
5
4
CDC_DIS MDU_DIS
rw
rw
复位值:FFH
3
2
1
0
T2_DIS
CCU_DIS
SSC_DIS
ADC_DIS
rw
rw
rw
rw
符号
位
类型
描述
ADC_DIS
0
rw
ADC 禁用请求,高有效
0
ADC 正常工作
1
请求禁用 ADC (缺省状态)
SSC_DIS
1
rw
SSC 禁用请求,高有效
0
SSC 正常工作
1
请求禁用 SSC (缺省状态)
CCU_DIS
2
rw
CCU 禁用请求,高有效
0
CCU 正常工作
1
请求禁用 CCU (缺省状态)
T2_DIS
3
rw
T2 禁用请求,高有效
0
T2 正常工作
1
请求禁用 T2 (缺省状态)
MDU_DIS
4
rw
MDU 禁用请求,高有效
0
MDU 正常工作
1
请求禁用 MDU (缺省状态)
用户手册
7-21
V1.1, 2010-09
XC83x
系统控制单元
符号
位
类型
描述
CDC_DIS
5
rw
CORDIC 禁用请求,高有效
0
CORDIC 正常工作
1
请求禁用 CORDIC (缺省状态)
LTS_DIS
6
rw
LEDTSCU 禁用请求,高有效
0
LEDTSCU 正常工作
1
请求禁用 LEDTSCU (缺省状态)
IIC_DIS
7
rw
IIC 禁用请求,高有效
0
IIC 正常工作
1
请求禁用 IIC (缺省状态)
用户手册
7-22
V1.1, 2010-09
XC83x
系统控制单元
7.4.2
功率管理寄存器
PMCON0
功率模式控制寄存器 0
RMAP: 0, PAGE: 1
7
6
(F3H)
5
4
复位值:01H
3
2
1
0
0
WKSEL
PDMODE
PD
EWS
r
rw
rw
rwh
rw
符号
位
类型
描述
EWS
0
rw
外部中断 0 唤醒源选择
0
不选择外部中断 0 唤醒
1
选择外部中断 0 唤醒
PD
1
rwh
掉电模式使能,高有效
置位该位将使芯片进入由 PDMODE 选择的掉电模
式。由唤醒电路复位该位。
PD 是受保护位。保护机制有效时,该位不能被直接
写入。有关保护机制的详细说明,参见章节 3.4.4。
PDMODE
[3:2]
rw
掉电模式选择
00
选择掉电模式 1
01
选择掉电模式 2
10
选择掉电模式 3
11
选择掉电模式 4
WKSEL
4
rw
唤醒复位选择位
0
无复位唤醒
1
带复位唤醒
0
[7:5]
r
保留
读取返回 0 ;应写入 0。
PCON [ 注:该寄存器位于 XC800 内核中 ]
功率控制寄存器 [ 不可位寻址 ]
(87H)
RMAP: 0, PAGE: X
7
6
5
4
复位值:00H
3
2
1
0
SMOD
0
GF1
GF0
0
IDLE
rw
r
rw
rw
r
rw
用户手册
7-23
V1.1, 2010-09
XC83x
系统控制单元
符号
位
类型
描述
IDLE
0
rw
空闲模式使能
0
不进入空闲模式
1
进入空闲模式
用户手册
7-24
V1.1, 2010-09
XC83x
系统控制单元
7.5
SCU 寄存器映射
系统控制 SFR 用于控制系统的整体功能 (如中断、可变波特率产生、时钟管理、位保护
方案及振荡器)。这些 SFR 位于标准 SFR 区(RMAP = 0),组织成 8 页。SCU_PAGE
寄存器位于地址单元 F1H,其中包含分页值和页控制信息。
SCU_PAGE
SCU 分页寄存器
RMAP: 0, PAGE: X
7
(F1H)
6
5
4
复位值:00H
3
2
1
OP
STNR
0
PAGE
w
w
r
rwh
0
符号
位
类型
描述
PAGE
[3:0]
rwh
页信息
写入时,该值表示新页的值。读出时,该值表示当前有
效页的值 = addr [y:x+1]。
STNR
[5:4]
w
保存编号
该编号指示在哪个保存位域上执行由 OP 确定的操作。
若 OP = 10B,
PAGE 的内容在被新值覆盖之前保存在 SCU_STx 中。
若 OP = 11B,
PAGE 的内容被 SCU_STx 覆盖。写入 PAGE 的值不予
理睬。
00
选择 SCU_ST0
01
选择 SCU_ST1
10
选择 SCU_ST2
11
选择 SCU_ST3
OP
[7:6]
w
操作
0X 手动保存页模式,STNR 的值被忽略,PAGE 被直
接写入。
10
带有自动页保存的新页设置。当前写入 PAGE 中
的内容被保存的同时,上次写入 PAGE 中的内容
被保存在 STNR 指定的位域 SCU_STx 中。
11
自动恢复页操作。对写入 PAGE 的内容不予理
睬,PAGE 的内容由 STNR 指定的位域 SCU_STx
中的值覆盖。
用户手册
7-25
V1.1, 2010-09
XC83x
系统控制单元
系统控制 SFR 的地址归纳见表 7-5,寄存器 SYSCON0 未在表中列出,可从标准(非映
射)和映射地址单元 8FH 访问该寄存器。
表 7-5
SCU 页 0 - 7 的 SFR 地址列表
地址
页0
页1
页2
页3
F2H
IRCON0
PASSWD
XADDRH
F3H
IRCON1
PMCON0
MODPISEL
F4H
EXICON1
OSC_CON
MODPISEL1
F5H
IRCON2
ID
MODPISEL2
F6H
IRCON3
WDTCON
MODSUSP
F7H
NMISR
RSTCON
MODIEN
EEH
NMICON
SDCON
MODPISEL3
EFH
EXICON0
PMCON1
地址
F2H
页4
F3H
WDTREL
F4H
WDTWINB
BGH
F5H
WDTL
LINST
F6H
WDTH
F7H
用户手册
页5
页6
页7
BCON
BGL
FEAL
FEAH
7-26
V1.1, 2010-09
XC83x
看门狗定时器
8
看门狗定时器
8.1
概述
看门狗定时器 (WDT)为检测软硬件故障以及故障恢复提供了高度可靠和安全的方式。
要在用户预设的时间间隔内定期复位 WDT。CPU 必须在该时间间隔内服务 WDT 以避免
引发 XC83x 系统复位。因此, WDT 服务程序可确保系统能够正常运行,确保系统可在
用户设定的时间之后退出意外出错状况。
WDT 缺省被禁用。
调试模式下,看门狗定时器 WDT 缺省被挂起,停止计数 (其调试挂起位缺省置位,即
MODSUSP.WDTSUSP = 1)。因此,在调试过程中不需要刷新 WDT。
特性
·
·
·
·
16 位看门狗定时器
定时器高 8 位的重载值可编程设定
窗界可编程设定
输入频率由 75 kHz 片内振荡器 (二级时钟源)产生
用户手册
WDT, V1.0
8-1
V1.1, 2010-09
XC83x
看门狗定时器
8.2
系统信息
本节给出 WDT 的相关系统信息。
8.2.1
复位的影响
必须周期刷新或清零 WDT 的定时器,否则定时器将溢出,触发看门狗复位。由寄存器
RSTCON 中的标志位 WDTRST 指示是否发生 WDT 复位。
在访问 RSTCON 寄存器之前必须先对 SCU_PAGE 寄存器中的位域 PAGE 进行设置。
RSTCON
复位控制寄存器
RMAP: 0, PAGE: 1
7
复位值:00H1)
(F7H)
6
5
4
3
2
1
0
SWRQ
0
SOFTRS
WDTRST
WKRS
rwh
r
rwh
rwh
rwh
1) 发生 WDT 复位时,该寄存器的复位值为 02H。
符号
位
类型
描述
WDTRST
1
rwh
看门狗定时器复位指示位
0
未发生看门狗复位
1
已发生看门狗复位
该位只能由硬件置位、软件清零。
0
[6:3]
r
保留
读取返回 0 ;应写入 0。
8.2.2
时钟配置
WDT 以 75 kHz 振荡器产生的时钟工作。
8.2.3
中断事件及分配
表 8-1 给出 WDT 中断的非可屏蔽中断节点分配。
表 8-1
WDT 事件的非可屏蔽中断节点控制
事件
中断节点使能位
中断节点标志位
向量地址
WDT 溢出
NMICON.NMIWDT
NMISR.FNMIWDT
73H
用户手册
WDT, V1.0
8-2
V1.1, 2010-09
XC83x
看门狗定时器
8.2.4
模块挂起控制
进入调试模式后, WDT 的定时器缺省被挂起。在该模式下,也可通过清零 MODSUSP.
WDTSUSP 允许 WDT 工作。寄存器 MODSUSP 的定义可参见章节 10.2.4。
用户手册
WDT, V1.0
8-3
V1.1, 2010-09
XC83x
看门狗定时器
8.3
功能说明
看门狗定时器(WDT)是以 75 kHz 时钟递增计数的 16 位定时器,它由两个 8 位定时器
串联组成。服务 WDT 时,可由用户预设定时器高 8 位的值,从而能够修改 WDT 的失效
时间;每次服务 WDT 时复位定时器的低 8 位。 WDT 单元的框图如图 8-1 所示。
WDT
控制
WDTREL
清零
75 KHz
振荡器
WDT 低位字节
WDT 高位字节
溢出/超时控制 &
窗界控制
ENWDT
WDTTO
WDTRST
逻辑
ENWDT_P
WINBCNT
图 8-1
WDT 框图
若置位 WDTEN 使能 WDT 工作,定时器将从用户设置的初始值开始递增计数。 CPU 必
须在计数器溢出之前服务 WDT,服务即执行刷新操作 (WDTRS 置 1),把用户设置的
初始值重新装入定时器,继续正常工作。
定时器溢出之前若 WDT 未被服务,则认为系统出错、正常运行模式被终止,将产生 WDT
NMI 请求 (FNMIWDT),随后进入预警模式。预警持续 30H 个计数周期。在预警阶段,
WDT 刷新操作不予理睬,也不能关闭 WDT,将立即进行 XC83x 复位 (WDTRST)且
该复位过程不能被终止。由寄存器 RSTCON 中的标志位 WDTRST 指示是否发生 WDT
复位。若刷新和溢出同时发生, WDT 将不会进入预警状态。
必须周期刷新 WDT 以保证定时器不会溢出。刷新 WDT 意味着:对定时器的低位字节清
零,将位域 WDTREL 中预先设置的值重新载入高位字节。刷新 WDT 还将清零 WDTRS。
WDT 有一个 “可编程窗界”,在窗界内不能刷新看门狗,窗界内的刷新操作视为无效,
此时虽不会产生 NMI 请求,但 WDT 会激活 WDTRST。窗界取值在 0000H 到 WDTWINB
和 00H 串联组成的值之间。可由 WINBEN 使能该特性。
WDT 被刷新后,定时器从 (<WDTREL>* 28)开始继续递增计数。 WDT 的溢出周期可
由重载值 WDTREL 编程设定,WDTREL 是 WDT 的高位字节,在寄存器 WDTREL 中设
置该重载值。
用户手册
WDT, V1.0
8-4
V1.1, 2010-09
XC83x
看门狗定时器
从 WDT 被刷新到下次溢出之间的溢出周期 PWDT 可由下面的公式决定:
( 2 16 – WDTREL × 2 8 )
P WDT = ----------------------------------------------------------
(8.1)
f PCLK
当使能 WDT 的窗界刷新特性,若 WDTWINB 大于 WDTREL,则溢出周期 PWDT 缩短,
见图 8-2。用 WDTWINB 替换上面公式中的 WDTREL 即可计算相应的 PWDT。为了使该
窗界刷新特性真正有用, WDTWINB 不能小于 WDTREL。
计数
FFFFH
WDTWINB
WDTREL
时间
允许刷新
不允许刷新
图 8-2
WDT 时序示意图
表 8-2 列出不同输入时钟所对应的 WDT 溢出周期取值。数值舍入到 3 位有效。
表 8-2
WDT 溢出周期范围
WDTREL 中的重载值
75 kHz 输入频率
FFH
3.4 ms
7FH
440 ms
00H
874 ms
注: 出于安全的考虑,建议用户在每次刷新 WDT 之前对 WDTCON 重写。
注: 若置位 SFR MODSUSP 中的 WDTSUSP,当 OCDS 进入监控模式时,WDT 可被
调试挂起。
用户手册
WDT, V1.0
8-5
V1.1, 2010-09
XC83x
看门狗定时器
8.4
寄存器说明
共由 5 个 SFR 控制 WDT 的操作,可从映射 SFR 区访问这些寄存器。
这些 SFR 的地址归纳见表 8-3。
表 8-3
寄存器映射
地址
页
寄存器
F6H
1
WDTCON
F3H
4
WDTREL
F4H
4
WDTWINB
F5H
4
WDTL
F6H
4
WDTH
8.4.1
看门狗定时器寄存器
WDT 的当前计数值存放在不可位寻址的只读寄存器 WDTH 和 WDTL 中。 WDT 控制寄
存器 WDTCON (可位寻址)用于控制 WDT 的操作,还用来选择输入时钟的预分频因
子。寄存器WDTREL定义定时器高位字节的重载值。WDTWINB定义看门狗窗界计数值。
WDTREL
WDT 重载寄存器
RMAP: 0, PAGE: 4
7
(F3H)
6
5
4
复位值:00H
3
2
1
0
WDTREL
rw
符号
位
类型
描述
WDTREL
[7:0]
rw
WDT 的重载值
(载入 WDT 的高位字节)
用户手册
WDT, V1.0
8-6
V1.1, 2010-09
XC83x
看门狗定时器
WDTCON
WDT 控制寄存器
RMAP: 0, PAGE: 1
7
(F6H)
6
复位值:00H
5
4
3
2
1
0
0
WINBEN
WDTPR
0
WDTEN
WDTRS
0
r
rw
rh
r
rw
rwh
r
符号
位
类型
描述
WDTRS
1
rwh
WDT 刷新开始控制
高有效。该位置位将开始刷新 WDT。该位由软件置
位后由硬件自动清零。
WDTEN
2
rw
WDT 使能
0
禁用 WDT
1
使能 WDT
WDTEN 是受保护位。保护机制有效时,该位不能
被直接写入。
注: 预警模式下(WDTPR = 1),清零 WDTEN 无
效。
WDTPR
4
rh
WDT 预警模式标志
0
正常工作模式 (复位后的缺省模式)
1
WDT 工作在预警模式
检测到 WDT 出错时该位置 1, WDT 发出 NMI 强制
中断并进入预警模式。预警周期结束后芯片复位。
WINBEN
5
rw
WDT 窗界使能控制
0
禁用 WDT 窗界特性 (缺省状态)
1
使能 WDT 窗界特性
0
0, 3,
[7:6]
r
保留
读操作返回 0,应写入 0。
用户手册
WDT, V1.0
8-7
V1.1, 2010-09
XC83x
看门狗定时器
WDTL
看门狗定时器,低位字节
RMAP: 0, PAGE: 4
7
6
(F5H)
5
4
复位值:00H
3
2
1
0
WDT
rh
符号
位
类型
描述
WDT
[7:0]
rh
WDT 的当前值
WDTH
看门狗定时器,高位字节
RMAP: 0, PAGE: 4
7
6
(F6H)
5
4
复位值:00H
3
2
1
0
WDT
rh
符号
位
类型
描述
WDT
[7:0]
rh
WDT 的当前值
WDTWINB
WDT 窗界计数寄存器
RMAP: 0, PAGE: 4
7
6
(F4H)
5
4
复位值:00H
3
2
1
0
WDTWINB
rw
用户手册
WDT, V1.0
8-8
V1.1, 2010-09
XC83x
看门狗定时器
符号
位
类型
描述
WDTWINB
[7:0]
rw
WDT 窗界计数值
该值可编程设定。窗界取值在 0000H 到
(WDTWINB, 00H)之间,在窗界内 WDT 不能被刷
新,否则将产生 WDT 复位 (WDTRST 置位)。
WDTWINB 与 WDTH 匹配。
用户手册
WDT, V1.0
8-9
V1.1, 2010-09
XC83x
中断系统
9
中断系统
XC800 内核支持 1 个非可屏蔽中断 (NMI)和 14 个可屏蔽中断。除了内核支持的标准
中断功能 (例如,可配置的中断优先级和中断屏蔽功能)之外, XC83x 中断系统还提供
了扩展中断功能,例如:将每个中断向量映射给多个中断源以增加所支持的中断源个数,
附加的状态寄存器可用来检测和确定中断源。
9.1
中断源
XC83x 支持 14 个中断向量,共分为 4 级中断优先级。其中 10 个中断向量分配给片上外
设:定时器 T0、定时器 T1、UART 和 SSC 各分配 1 个专用中断向量;定时器 T2、ADC、
LIN、 LEDTSCU、 P1 口 HCPADA 和捕获 / 比较单元共享 6 个中断向量。此外,将 4 个
中断向量分配给外部中断、 MDU、 CORDIC、 RTC 和 IIC:外部中断 0 和 1 各分配一个
专用中断向量,外部中断 2 和 MDU、CORDIC、IIC 共享 1 个中断向量。RTC 和外部中
断 [6:3] 共享 1 个中断向量。
非可屏蔽中断 (NMI)具有最高中断优先级。在 XC83x 系统中,以下事件可产生 NMI:
·
·
·
·
·
·
·
·
看门狗定时器,溢出前预警
48 MHz 和 75 kHz 振荡器,振荡器时钟丢失
32.768 kHz XTAL 振荡器, XTAL 时钟丢失
Flash 定时器,操作 (如擦除)结束
OCDS,发生用户 IRAM 事件
Flash ECC 出错
VDDP 预警
VDDC 预警
图 9-1, 图 9-2, 图 9-3, 图 9-4 和图 9-5 给出常规中断源和中断节点总览(包括相应的控
制和状态标志)。图 9-6 给出 NMI 请求源总览。
用户手册
中断系统 , V2.3.3
9-1
V1.1, 2010-09
XC83x
中断系统
最高
定时器T0
溢出
TF0
TCON.5
ET0
000B
H
IEN0.1
定时器T1
溢出
最低
优先级
IP.1/
IPH.1
TF1
TCON.7
ET1
001B
H
IEN0.3
UART
接收
IP.3/
IPH.3
RI
SCON.0
UART
发送
>=1
TI
ES
SCON.1
IEN0.4
0023
H
IP.4/
IPH.4
查
询
顺
序
IE0
EINT0
TCON.1
IT0
EX0
0003
H
IEN0.0
TCON.0
IP.0/
IPH.0
EXINT0
EXICON0.0/1
IE1
EINT1
TCON.3
IT1
EX1
0013
H
IEN0.2
TCON.2
IP.2/
IPH.2
EXINT1
EA
EXICON0.2/3
IEN0.7
可位寻址
中断请求标志由硬件清零
图 9-1
中断请求源 (第 1 部分)
用户手册
中断系统 ,V2.3.3
9-2
V1.1, 2010-09
XC83x
中断系统
最高
定时器T2
溢出
TF2
T2_T2CON.7
T2EX
最低
优先级
TF2EN
T2_T2CON1.1
>=1
EXF2
EXEN2 T2_T2CON.6
T2_T2CON.3
EDGES
EL
T2_T2MOD.5
EXF2EN
T2_T2CON1.0
>=1
ET2
同步字节结束
EOFSYN
同步字节出错
ERRSYN
LINST.4
002B
H
IEN0.5
IP.5/
IPH.5
>=1
SYNEN
LINST.5
LINST.6
查
询
顺
序
ADC服务请求 0
ADCSR0
ADC服务请求 1
ADCSR1
EADC
IRCON1.4
IEN1.0
IRCON1.3
>=1
0033
H
IP1.0/
IPH1.0
EA
IEN0.7
可位寻址
中断请求标志由硬件清零
图 9-2
中断请求源 (第 2 部分)
用户手册
中断系统 , V2.3.3
9-3
V1.1, 2010-09
XC83x
中断系统
最高
SSC_EIR
EIR
IRCON1.0
最低
优先级
EIREN
MODIEN.0
SSC_TIR
>=1
TIR
IRCON1.1
TIREN
MODIEN.1
ESSC
RIR
SSC_RIR
IRCON1.2
003B
H
IEN1.1
IP1.1/
IPH1.1
RIREN
MODIEN.2
查
询
顺
序
EXINT2
EINT2
IRCON0.2
EXINT2
EXICON0.4/5
MDU_0
IRDY
MDUSTAT.0
EX2
IE
0043
H
IEN1.2
MDUCON.7
IP1.2/
IPH1.2
>=1
MDU_1
IERR
MDUSTAT.1
CORDIC
EOC
CD_STATC.2
IIC
IE
MDUCON.7
INT_ EN
CD_STATC.3
IFLG
IIC_CNTR.3
IEN
IIC_CNTR.7
EA
IEN0.7
可位寻址
中断请求标志由硬件清零
图 9-3
中断请求源 (第 3 部分)
用户手册
中断系统 ,V2.3.3
9-4
V1.1, 2010-09
XC83x
中断系统
最高
最低
优先级
EXINT3
EINT3
IRCON0.3
EXINT3
EXICON0.6/7
EXINT4
EINT4
IRCON0.4
EXINT3
EXICON1.0/1
EXM
EXINT5
EINT5
>=1
004B
H
IEN1.3
IRCON0.5
IP1.3/
IPH1.3
查
询
顺
序
EXINT5
EXICON1.2/3
RTC
比较/唤醒
CFRTC
RTCON.6
ECRTC
RTCON.4
RTC
SEC_TIME
>=1
SFRTC
RTCON.7
ESRTC
RTCON.5
EA
IEN0.7
可位寻址
中断请求标志由硬件清零
图 9-4
中断请求源 (第 4 部分)
用户手册
中断系统 , V2.3.3
9-5
V1.1, 2010-09
XC83x
中断系统
最高
CCU6 节点 0
最低
优先级
CCU6SR0
IRCON2.0
ECCIP0
0053
H
IEN1.4
CCU6 节点 1
IP1.4/
IPH1.4
CCU6SR1
IRCON2.4
>=1
LED/TS 时帧
TFF
ECCIP1
GLOBCTL1.5
ITF_EN
005 B
H
IEN1.5
GLOBCTL1.4
P1.0过电流
IP1.5/
IPH1.5
P0_OCF
P1_OCD.0
P0_OCEN
P1_OCD.4
P1.1过电流
P1_OCF
P1_OCD.1
P1.2过电流
P1_OCEN
P1_OCD.5
>=1
P2_OCF
P1_OCD.2
查
询
顺
序
>=1
P2_OCEN
P1_OCD.6
P3_OCF
P1.3过电流
P1_OCD.3
P3_OCEN
ECCIP2
P1_OCD.7
0063
H
IEN1.6
CCU6 节点 2
IP1.6/
IPH1.6
CCU6SR2
CCU6
SR2 EN
IRCON3.0
MODIEN.6
CCU6SR3
CCU6 节点 3
CCU6
SR3EN
IRCON3.4
>=1
MODIEN.7
ECCIP3
TSF
LED/TS 时间片
GLOBCTL1.7
IEN1.7
ITS_EN
GLOBCTL1.6
006B
H
IEN0.7
EA
IP1.7/
IPH1.7
可位寻址
中断请求标志由硬件清零
图 9-5
中断请求源 (第 5 部分)
用户手册
中断系统 ,V2.3.3
9-6
V1.1, 2010-09
XC83x
中断系统
WDT 溢出
FNMIWDT
NMISR.0
NMIWDT
NMICON.0
48MHz 或 75kHz
时钟丢失
FNMIOSCCLK
NMISR.1
NMIOSCCLK
NMICON.1
FNMIFLASH
Flash
NMISR.2
NMIFLASH
NMICON.2
IRAM
读事件*
FNMIRR
MMICR.2
NMIRRE
MMICR.0
IRAM
写事件*
>=1
NMISR.3
FNMIRW
MMICR.3
FNMIOCDS
NMIOCDS
NMICON.3
NMIRWE
MMICR.1
VDDC 预警
>=1
0073
H
非可屏蔽
中断
FNMIVDDC
NMISR.4
NMIVDD
NMICON.4
VDDP 预警
FNMIVDDP
NMISR.5
NMIVDDP
NMICON.5
Flash ECC 错误
FNMIECC
NMISR.6
NMIECC
NMICON.6
32.768kHz
时钟丢失
FNMIXTALCLK
NMISR.7
NMIXTALCLK
NMICON.7
图 9-6
非可屏蔽中断请求源
用户手册
中断系统 , V2.3.3
9-7
V1.1, 2010-09
XC83x
中断系统
9.1.1
中断源和中断向量
每个中断事件源对应有一个所属中断节点的中断向量地址。通过访问该中断向量来服务
相应的中断节点请求。通过使能位可单独使能或禁止每个中断节点的中断服务。 XC83x
中分配给各中断源的中断向量地址和对应的中断节点使能位归纳见表 9-1。
表 9-1
中断向量地址
中断节点
中断向量 XC83x 中断源分配
地址
使能位
SFR
NMI
0073H
NMIWDT
NMICON
看门狗定时器 NMI
48 MHz 和 75 kHz 时钟 NMI
NMIOSCCLK
32.768 kHz XTAL 时钟 NMI
NMIXTALCLK
Flash 操作完成 NMI
OCDS NMI
NMIFLASH
NMIOCDS
ECC 出错 NMI
NMIECC
VDDP 预警 NMI
NMIVDDP
VDDC 预警 NMI
NMIVDDC
XINTR0
0003H
外部中断 0
EX0
XINTR1
000BH
定时器 T0
ET0
XINTR2
0013H
外部中断 1
EX1
XINTR3
001BH
定时器 T1
UART
ET1
定时器 T2
LIN
ET2
XINTR4
0023H
XINTR5
002BH
用户手册
中断系统 ,V2.3.3
IEN0
ES
9-8
V1.1, 2010-09
XC83x
中断系统
表 9-1
中断向量地址
中断节点
中断向量 XC83x 中断源分配
地址
使能位
SFR
XINTR6
0033H
ADC
EADC
IEN1
XINTR7
003BH
SSC
ESSC
XINTR8
0043H
外部中断 2
CORDIC
EX2
MDU
IIC
XINTR9
004BH
EXM
外部中断 3
外部中断 4
外部中断 5
外部中断 6
XINTR10
0053H
RTC 中断
CCU6 SR0
XINTR11
005BH
CCU6 SR1
ECCIP1
XINTR12
0063H
LEDTSCU 时帧
CCU6 SR2
ECCIP2
XINTR13
006BH
P1 口 HCPADA
CCU6 SR3
ECCIP3
ECCIP0
LEDTSCU 时间片
9.1.2
中断源和中断优先级
当前被服务的中断只能响应具有更高优先级的中断,而不能响应同级或低优先级中断。
因此,具有最高优先级的中断不响应其它任何中断。
若 CPU 同时接收到两个或更多不同优先级的中断请求,它会首先响应最高优先级的请
求。若 CPU 同时接收到多个相同优先级的中断请求,则由内部查询顺序决定首先响应哪
个中断请求。因此,每级优先级内又含有由查询顺序决定的次级优先级结构,见表 9-2。
表 9-2
同级内的优先级结构
中断源
优先级
非可屏蔽中断 (NMI)
外部中断 0
(最高)
1
定时器 T0
2
用户手册
中断系统 , V2.3.3
9-9
V1.1, 2010-09
XC83x
中断系统
表 9-2
同级内的优先级结构
中断源
优先级
外部中断 1
3
定时器 T1
UART
5
定时器 T2 / LIN
6
ADC 和 ORC
SSC
8
外部中断 2 /CORDIC/ MDU / IIC
9
EXINT[6:3] / 实时时钟
10
CCU6 中断节点指针 0
11
4
7
CCU6 中断节点指针 1 / LED 和触摸感应
12
CCU6 中断节点指针 2/P1 口 HCPADA
13
CCU6 中断节点指针 3 / LED 和触摸感应
14
9.2
中断结构
中断事件可由片上外设或由外部产生。中断事件检测由相关的片上外设来控制。可通过
中断状态标志确定发生了哪种中断事件,该特性对于共用一个中断节点的多个中断源尤
其有用。每个中断节点 (NMI 除外)有一个全局使能 / 禁止位。在大多数情况下,还为
特定的中断事件(NMI 事件)提供附加的使能 / 禁止位。某事件的中断使能位若被禁用,
即使发生该中断事件,也不会产生中断请求。
总的来说, XC83x 有两种中断结构,主要区别在于 (由事件触发)产生中断请求 (每个
直接送至内核的中断请求对应一个中断向量 / 节点)的方式、以及中断请求被清零的方式
不同。
这两种中断结构的共同点是都具有中断屏蔽位 EA,用于全局使能或者禁止所有送至内核
的中断请求 (NMI 除外)。复位 EA (清零)只会屏蔽送至内核的挂起中断请求,而不会
阻止捕获送入的中断请求。
注: NMI 节点和其它中断节点类似,区别在于前者没有 EA 位。NMI 节点是不可屏蔽的。
9.2.1
中断结构 1
中断结构 1 如图 9-7 所示,中断事件将会置位中断状态标志,同时产生一个挂起的中断
请求。只有当相应的中断节点被使能时,挂起的中断请求才有效,中断内核。一旦中断
节点被服务 (中断被应答),其挂起的中断请求 (由中断状态标志表示)可由硬件 (内
核)自动清零。
用户手册
中断系统 ,V2.3.3
9-10
V1.1, 2010-09
XC83x
中断系统
软件
清零
置位
中断事件
清零
中断应答
(来自内核)
挂起的
中断请求
中断状态标志
中断节点使能位
AND
至内核
EA 位
图 9-7
中断结构 1
XC83x 系统中,一旦中断源定时器 T0、定时器 T1、外部中断 0 和外部中断 1 (各自对
应一个专用中断节点)产生的挂起中断请求被服务,寄存器 TCON 中相应的中断状态标
志 TF0、TF1、IE0 和 IE1 由内核清零。若某个中断节点被禁用(例如,使用软件查询),
由于内核未被中断 (从而也不会产生中断应答) ,其相应的中断状态标志必须由软件清
除。对于具有专用中断节点的 UART 模块而言,即使其挂起的中断请求被服务,寄存器
SCON 中的中断状态标志 RI 和 TI 也不能由内核清零。 UART 模块的中断状态标志 (挂
起的中断请求)只能由软件清零。
9.2.2
中断结构 2
图 9-8 所示的中断结构 2 适用于定时器 T2、LIN、外部中断 2 到 6、ADC、SSC、IIC、
RTC、LEDTSCU、P1 口 HCPADA、CCU6 和 MDU 中断源。该结构中,中断状态标志
不会直接驱动挂起的中断请求。
用户手册
中断系统 , V2.3.3
9-11
V1.1, 2010-09
XC83x
中断系统
节点上所有被使能中断
的状态标志
相应的
事件状态标志
NOR
事件中断请求
AND
置位/清零
FF*
中断节点使能位
AND
* 用锁存器实现,不能由软件置位
图 9-8
挂起的
中断请求
清零
事件发生
相应的
事件中断使能位
中断应答
(来自内核)
OR
送至内核
EA 位
中断结构 2
中断源产生的中断事件将置位相应的中断状态标志,同时,若该事件被使能,将激活挂
起的中断请求送至内核。考虑产生中断事件但其中断节点被禁用的情况 (假设全局中断
使能位 EA 置位)。一段时间过后使能中断节点时,先前激活的挂起中断请求此时将产生
中断请求送至内核。 NMI 节点比较特殊,因为它是非可屏蔽中断。
有效的挂起中断请求会中断内核,一旦中断节点被服务 (中断被应答) ,该请求被硬件
(内核)自动清零;中断状态标志保持置位,必须由软件清零。挂起的中断请求也可由软
件清零 :只有将节点上被使能中断的状态标志全部清零,才能间接清零挂起的中断请求。
需要注意 :这和中断结构 1 的方式有所不同,中断结构 1 只需复位节点的中断状态标志,
即可直接清零挂起的中断请求。
总而言之,在中断结构 2 中,中断处理的优先级由高到低排列如下:1) CPU 应答中断
请求,执行中断服务程序将清除挂起的中断请求; 2)任一被使能中断的事件发生时,将
置位挂起的中断请求; 3)清除所有被使能中断的状态标志将清除挂起的中断请求。
9.3
中断处理
在每个机器周期的 P2 对中断请求信号进行采样,在下一个机器周期对采样到的中断请求
进行查询。如果某中断节点请求标志在前一周期的 P2 已经有效,查询周期将发现该请
求,中断系统将产生一个 LCALL 指令调用相应的中断服务程序。由硬件生成的 LCALL
指令在下列任意一种条件下都会推迟执行:
1. 正在处理同级或更高优先级的中断。
2. 当前周期 (查询周期)不是正在执行指令的最后一个周期。
3. 正在执行的指令是 RETI 或访问寄存器 IEN0/IEN1、 IP/IPH 或 IP1/IPH1 的写指令。
上述任意一种情况都会推迟执行 LCALL 进入中断服务程序。条件 2 保证了正在执行的指
令在进入中断服务程序之前可执行完成;条件 3 保证了如果正在执行的指令是 RETI 或是
用户手册
中断系统 ,V2.3.3
9-12
V1.1, 2010-09
XC83x
中断系统
对寄存器 IEN0/IEN1、IP/IPH 或 IP1/IPH1 的写操作时,进入中断服务程序之前必须至少
再执行一条指令,该延迟保证了中断状态的改变可被 CPU 监测到。
中断查询在每个机器周期重复执行,查询到的值为前一机器周期 P2 的采样值。需要注
意,若某中断标志有效 (置位) ,但由于上述的条件之一而导致它的节点中断请求未被
响应;或当服务该中断节点时,该中断标志已不再有效,相应的中断源不再被响应。换
言之,如果中断请求标志曾经有效、但未能被 CPU 及时响应,该标志将不被记忆。每个
查询周期仅查询挂起的中断请求。
处理器执行硬件生成的 LCALL 指令,调用相应的中断服务程序响应中断请求。有些情况
下,由硬件清除中断标志;有些情况下,必须由用户程序清除中断标志。由硬件生成的
LCALL 会将程序计数器 (PC)的值压入堆栈 (但不保存程序状态字 PSW 的内容),并
将被响应中断节点的中断向量地址重新装入 PC,中断向量地址总结见表 9-1。
中断服务程序执行到 RETI 指令时,程序返回继续执行调用中断后的下一条指令。 RETI
指令通知处理器中断服务程序已执行完毕,然后从栈顶弹出两个字节重新装入 PC,继续
执行被中断的程序。需要注意的是,RETI 指令非常重要,它通知处理器用户程序已离开
当前的中断优先级。简单的 RET 指令也可以返回到被中断的程序,但这样会使中断控制
系统假定中断服务程序仍在执行。在这种情况下,同级或低优先级中断请求就无法被响
应。
9.4
中断响应时间
对于某中断节点上的 (不同中断源产生的)中断事件,其相应的中断请求信号将在每个
机器周期的 P2 被采样,在下一个机器周期之前该值不会被电路查询。如果中断请求有效
并且响应中断的条件成立,下一条将执行硬件生成的调用指令,进入中断服务程序。调
用指令本身占用两个机器周期,因此,从中断请求有效到开始执行中断服务程序中的第
一条指令至少需要三个完整的机器周期,如图 9-9 所示。
P1
P2
P1
P2
P1
P2
P1
P2
P1
P2
fCCLK
中断请求有效
/被采样
LCALL
查询中断请求
(当前指令的最后
一个周期)
中断向量处的
第一条指令
中断响应时间 = 3 x 机器周期
图 9-9
最短中断响应时间
如果下列任意一种情况出现,中断请求则需要更长的响应时间:
1. 如果一个同级或更高优先级的中断正在处理中,则附加的等待时间取决于其它中断服
务程序所需时间。
用户手册
中断系统 , V2.3.3
9-13
V1.1, 2010-09
XC83x
中断系统
2. 如果正在执行的指令还没有执行到它的最后一个周期,则附加的等待时间不会超过三
个机器周期,因为最长的指令 (MUL 和 DIV 指令)仅四个机器周期,见图 9-10。
3. 如果正在执行的指令是 RETI 指令或访问寄存器 IEN0、IEN1、或 IP(H)、IP1(H) 的写
指令,则附加的等待时间不会超过五个机器周期(最多再用一个机器周期完成当前指
令,如果指令是 MUL 或 DIV,再加四个机器周期完成下条指令),见图 9-11。
P1
P2
P1
P2
P1
P2
P1
P2
P1
P1
P2
P2
P1
P2
P1
P2
fCCLK
当前指令为4周期指令
(MUL或 DIV)
采样的中断请求
有效
采样中断请求
中断向量处的
第一条指令
LCALL
查询中断请求
(当前指令的
最后一个周期)
中断响应时间 = 6 x 机器周期
图 9-10
P1
条件 2 下的中断响应时间
P2
P1
P2
P1
P2
P1
P2
P1
P2
P1
P2
P1
P2
P1
P2
P1
P2
P1
P2
fCCLK
当前指令为2周期指令
采样的中断请求
有效
采样中断请求
查询中断请求
(RETI或
写访问中断寄存器)
下一条4周期指令
(MUL或DIV)
采样中断请求
查询中断请求
(当前指令的
最后一个周期)
LCALL
中断向量处的
第一条指令
中断响应时间 = 8 x 机器周期
图 9-11
条件 3 下的中断响应时间
因此,在单中断系统中,中断响应时间始终大于等于三个机器周期、小于九个机器周期
(不考虑等待状态)。当考虑等待状态时,中断响应时间将会延长,这取决于中断响应期
间 (图 9-10 和 图 9-11 的阴影部分)执行的用户指令占用的时间 (硬件生成的 LCALL
除外)。
用户手册
中断系统 ,V2.3.3
9-14
V1.1, 2010-09
XC83x
中断系统
9.5
寄存器说明
中断 SFR 具有以下功能:中断节点使能、外部中断控制、中断标志和中断优先级设置。
中断 SFR 及相应的地址归纳见表 9-3。
表 9-3
寄存器映射
地址
寄存器
RMAP = 0 或 1
A8H
IEN0
E8H
IEN1
B8H
IP
B9H
IPH
F8H
IP1
F9H
IPH1
88H
TCON
98H
SCON
RMAP = 0
EEH (SCU 页 0)
NMICON
EFH (SCU 页 0)
EXICON0
F4H (SCU 页 0)
EXICON1
F4H (SCU 页 3)
MODPISEL1
F2H (SCU 页 0)
IRCON0
F3H (SCU 页 0)
IRCON1
F5H (SCU 页 0)
IRCON2
F6H (SCU 页 0)
IRCON3
F7H (SCU 页 0)
NMISR
用户手册
中断系统 , V2.3.3
9-15
V1.1, 2010-09
XC83x
中断系统
9.5.1
中断节点使能寄存器
通过置位或清零中断使能寄存器 IEN0 和 IEN1 中的各控制位,每个中断节点可分别被使
能或禁止。寄存器 IEN0 中还包含全局中断屏蔽位 (EA),该位被清零可立即禁止所有
挂起的中断请求。
多个 NMI 中断源共用 NMI 中断向量,每个中断源可通过寄存器 NMICON 分别被使能或
禁止。
复位后,寄存器 IEN0、IEN1 和 NMICON 中的使能位全被清零,即所有中断节点缺省被
禁止。
IEN0
中断使能寄存器 0
RMAP: X, PAGE: X
(A8H)
复位值 :00H
7
6
5
4
3
2
1
0
EA
0
ET2
ES
ET1
EX1
ET0
EX0
rw
r
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
EX0
0
rw
中断节点 XINTR0 使能
0
禁止 XINTR0
1
使能 XINTR0
ET0
1
rw
中断节点 XINTR1 使能
0
禁止 XINTR1
1
使能 XINTR1
EX1
2
rw
中断节点 XINTR2 使能
0
禁止 XINTR2
1
使能 XINTR2
ET1
3
rw
中断节点 XINTR3 使能
0
禁止 XINTR3
1
使能 XINTR3
ES
4
rw
中断节点 XINTR4 使能
0
禁止 XINTR4
1
使能 XINTR4
ET2
5
rw
中断节点 XINTR5 使能
0
禁止 XINTR5
1
使能 XINTR5
用户手册
中断系统 ,V2.3.3
9-16
V1.1, 2010-09
XC83x
中断系统
符号
位
类型
描述
EA
7
rw
全局中断屏蔽
0
所有挂起的中断请求 (NMI 除外)都被禁止
1
挂起的中断请求未被禁止
0
6
r
保留
读操作返回 0,应写入 0。
IEN1
中断使能寄存器 1
RMAP: X, PAGE: X
(E8H)
复位值 :00H
7
6
5
4
3
2
1
0
ECCIP3
ECCIP2
ECCIP1
ECCIP0
EXM
EX2
ESSC
EADC
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
EADC
0
rw
中断节点 XINTR6 使能
0
禁止 XINTR6
1
使能 XINTR6
ESSC
1
rw
中断节点 XINTR7 使能
0
禁止 XINTR7
1
使能 XINTR7
EX2
2
rw
中断节点 XINTR8 使能
0
禁止 XINTR8
1
使能 XINTR8
EXM
3
rw
中断节点 XINTR9 使能
0
禁止 XINTR9
1
使能 XINTR9
ECCIP0
4
rw
中断节点 INTR10 使能
0
禁止 XINTR10
1
使能 XINTR10
ECCIP1
5
rw
中断节点 XINTR11 使能
0
禁止 XINTR11
1
使能 XINTR11
ECCIP2
6
rw
中断节点 XINTR12 使能
0
禁止 XINTR12
1
使能 XINTR12
用户手册
中断系统 , V2.3.3
9-17
V1.1, 2010-09
XC83x
中断系统
符号
位
类型
描述
ECCIP3
7
rw
中断节点 XINTR13 使能
0
禁止 XINTR13
1
使能 XINTR13
在访问 NMICON 寄存器之前必须先对 SCU_PAGE 寄存器中的位域 PAGE 进行设置。
NMICON
NMI 控制寄存器
RMAP: 0, PAGE: 0
7
6
NMIXTALCLK
NMIECC
rw
rw
(EEH)
5
4
复位值:00H
3
NMIVDDP NMIVDDC NMIOCDS
rw
rw
2
1
0
NMIFLASH
NMIOSCCLK
NMIWDT
rw
rw
rw
rw
符号
位
类型
描述
NMIWDT
0
rw
WDT NMI 使能
0
禁止 WDT NMI
1
使能 WDT NMI
NMIOSCCLK
1
rw
48 MHz 或 75 kHz 振荡器时钟丢失 NMI 使能
0
禁止 48 MHz 或 75 kHz 振荡器时钟丢失 NMI
1
使能 48 MHz 或 75 kHz 振荡器时钟丢失 NMI
NMIFLASH
2
rw
Flash 定时器 NMI 使能
0
禁止 Flash 定时器 NMI
1
使能 Flash 定时器 NMI
NMIOCDS
3
rw
OCDS NMI 使能
0
禁止 OCDS NMI
1
使能 OCDS NMI
NMIVDDC
4
rw
VDDC 预警 NMI 使能
0
禁止 VDDC 预警 NMI
1
使能 VDDC 预警 NMI
NMIVDDP
5
rw
VDDP 预警 NMI 使能
0
禁止 VDDP 预警 NMI
1
使能 VDDP 预警 NMI
NMIECC
6
rw
ECC 出错 NMI 使能
0
禁止 ECC 出错 NMI
1
使能 ECC 出错 NMI
用户手册
中断系统 ,V2.3.3
9-18
V1.1, 2010-09
XC83x
中断系统
符号
位
类型
描述
NMIXTALCLK
7
rw
32.768 kHz XTAL 时钟丢失 NMI 使能
0
禁止 32.768 kHz XTAL 时钟丢失 NMI
1
使能 32.768 kHz XTAL 时钟丢失 NMI
注: 外部供电电压不超过 3.3 V 时 , 用户必须禁用 NMIVDDP。
9.5.2
外部中断控制寄存器
共有 7 个外部中断, EXT_INT[6:0],从端口送入 XC83x。外部中断引脚的分配情况归纳
见 表 9-4。外 部 中 断 可 由 信 号 的 正 沿、负 沿、或 任 意沿触发。寄存器 EXICON0 和
EXICON1 指定触发外部中断的有效跳变沿。在外部中断中,外部中断 0 和外部中断 1 可
直接送入内核、无需跳变沿检测。送入内核的信号可通过 TCON 寄存器中的位 IT0 和 IT1
进一步设定为由低电平或负跳变激活。不过,若在 SCU 中进行跳变沿检测,TCON.IT0/1
必须设置为下降沿触发。若 SCU 检测到有效的跳变沿事件,将产生两个 CCLK 周期的低
脉冲用于内核检测。
若外部中断由正 (负)沿触发,外部中断请求引脚必须至少保持一个 CCLK 周期的低
(高)电平,接着至少保持一个 CCLK 周期的高 (低)电平,从而确保该跳变被识别。
如果外部中断 0 和外部中断 1 的边沿检测被旁路,外部中断请求引脚必须至少保持两个
CCLK 周期的高或低电平。
外部中断 2 到 6 和其它中断源共用两个中断节点。因此,除相应的中断节点使能之外,
外部中断 2 到 6 中的任一个可被单独禁用,它们在复位后缺省设置为禁用。
表 9-4
外部中断 [6:0] 引脚功能及选择
引脚
功能
说明
由以下位 / 位域选择
P0.5
EXINT0_0
外部中断输入 0
MODPISEL1.EXINT0IS = 000B
P0.6
EXINT0_1
MODPISEL1.EXINT0IS = 001B
P1.0
EXINT0_2
MODPISEL1.EXINT0IS = 010B
P2.0
EXINT0_3
MODPISEL1.EXINT0IS = 011B
P2.7
EXINT0_4
MODPISEL1.EXINT0IS = 100B
P3.1
EXINT0_5
MODPISEL1.EXINT0IS = 101B
P3.2
EXINT0_6
MODPISEL1.EXINT0IS = 110B
P0.4
EXINT1_0
P2.1
EXINT1_1
P2.2
EXINT2_0
P3.0
EXINT2_1
P2.3
EXINT3
用户手册
中断系统 , V2.3.3
MODPISEL1.EXINT1IS = 0B
外部中断输入 1
MODPISEL1.EXINT1IS = 1B
MODPISEL1.EXINT2IS = 0B
外部中断输入 2
MODPISEL1.EXINT2IS = 1B
–
外部中断输入 3
9-19
V1.1, 2010-09
XC83x
中断系统
表 9-4
外部中断 [6:0] 引脚功能及选择
引脚
功能
说明
由以下位 / 位域选择
P1.2
EXINT4
外部中断输入 4
–
P1.4
EXINT5
外部中断输入 5
–
P2.6
EXINT5
外部中断输入 6
–
在访问 EXICON0、EXICON1 和 MODPISEL1 寄存器之前必须先对 SCU_PAGE 寄存器
中的位域 PAGE 进行设置。
注: 多个外部中断支持复用输入引脚。当切换输入时,应当考虑相关引脚上的有效沿 /
电平触发选择和相应电平,以防止产生不需要的中断。
EXICON0
外部中断控制寄存器 0
RMAP: 0, PAGE: 0
7
6
(EFH)
5
4
复位值:F0H
3
2
1
0
EXINT3
EXINT2
EXINT1
EXINT0
rw
rw
rw
rw
符号
位
类型
描述
EXINT0
1:0
rw
外部中断 0 触发选择
00
下降沿触发中断
01
上升沿触发中断
10
上升沿和下降沿均触发中断
11
SCU 中的边沿检测旁路。中断请求信号直接
送入内核
EXINT1
3:2
rw
外部中断 1 触发选择
00
下降沿触发中断
01
上升沿触发中断
10
上升沿和下降沿均触发中断
11
SCU 中的边沿检测旁路。中断请求信号直接
送入内核
EXINT2
5:4
rw
外部中断 2 触发选择
00
下降沿触发中断
01
上升沿触发中断
10
上升沿和下降沿均触发中断
11
外部中断 2 被禁止
用户手册
中断系统 ,V2.3.3
9-20
V1.1, 2010-09
XC83x
中断系统
符号
位
类型
描述
EXINT3
7:6
rw
外部中断 3 触发选择
00
下降沿触发中断
01
上升沿触发中断
10
上升沿和下降沿均触发中断
11
外部中断 3 被禁止
EXICON1
外部中断控制寄存器 1
RMAP: 0, PAGE: 0
7
6
(F4H)
5
4
复位值:3FH
3
2
1
0
0
EXINT6
EXINT5
EXINT4
r
rw
rw
rw
符号
位
类型
描述
EXINT4
1:0
rw
外部中断 4 触发选择
00
下降沿触发中断
01
上升沿触发中断
10
上升沿和下降沿均触发中断
11
外部中断 4 被禁止
EXINT5
3:2
rw
外部中断 5 触发选择
00
下降沿触发中断
01
上升沿触发中断
10
上升沿和下降沿均触发中断
11
外部中断 5 被禁止
EXINT6
5:4
rw
外部中断 6 触发选择
00
下降沿触发中断
01
上升沿触发中断
10
上升沿和下降沿均触发中断
11
外部中断 6 被禁止
0
7:6
r
保留
读操作返回 0,应写入 0。
用户手册
中断系统 , V2.3.3
9-21
V1.1, 2010-09
XC83x
中断系统
MODPISEL1
外设输入选择寄存器 1
RMAP: 0, PAGE: 3
7
6
(F4H)
5
EXINT2IS EXINT1IS
rw
rw
4
复位值:00H
3
2
1
EXINT0IS
URRIS
rw
rw
符号
位
类型
描述
EXINT0IS
[5:3]
rw
外部中断 0 输入选择
000 选择外部中断输入 EXINT0_0
001 选择外部中断输入 EXINT0_1
010 选择外部中断输入 EXINT0_2
011 选择外部中断输入 EXINT0_3
100 选择外部中断输入 EXINT0_4
101 选择外部中断输入 EXINT0_5
110 选择外部中断输入 EXINT0_6
111 不使用
EXINT1IS
6
rw
外部中断 1 输入选择
0
选择外部中断输入 EXINT1_0
1
选择外部中断输入 EXINT1_1
EXINT2IS
7
rw
外部中断 2 输入选择
0
选择外部中断输入 EXINT2_0
1
选择外部中断输入 EXINT2_1
TCON
定时器和计数器控制 / 状态寄存器
RMAP: X, PAGE: X
(88H)
0
复位值:00H
7
6
5
4
3
2
1
0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
rwh
rw
rwh
rw
rwh
rw
rwh
rw
用户手册
中断系统 ,V2.3.3
9-22
V1.1, 2010-09
XC83x
中断系统
符号
位
类型
描述
IT0
0
rw
外部中断 0 电平 / 边沿触发控制
0
选择低电平触发外部中断 0
1
选择下降沿触发外部中断 0
IT1
2
rw
外部中断 1 电平 / 边沿触发控制
0
选择低电平触发外部中断 1
1
选择下降沿触发外部中断 1
9.5.3
中断标志寄存器
不同中断源的中断标志存放在多个特殊功能寄存器 (SFR)中。若软件和硬件同时访问
某标志位,硬件访问占优。在访问 IRCONx 寄存器之前必须先对 SCU_PAGE 寄存器中
的位域 PAGE 进行设置。
IRCON0
中断请求寄存器 0
RMAP: 0, PAGE: 0
(F2H)
复位值:00H
7
6
5
4
3
2
1
0
EXINT6
EXINT5
EXINT4
EXINT3
EXINT2
0
r
rwh
rwh
rwh
rwh
rwh
r
符号
位
类型
描述
EXINTx
(x = 2 - 6)
[6:2]
rwh
外部中断 x 的中断标志
该位由硬件置位,只能由软件清零。
0
未产生中断事件
1
已产生中断事件
0
[1:0], 7
r
保留
读操作返回 0,应写入 0。
用户手册
中断系统 , V2.3.3
9-23
0
V1.1, 2010-09
XC83x
中断系统
IRCON1
中断请求寄存器 1
RMAP: 0, PAGE: 0
7
6
(F3H)
5
复位值:00H
4
3
2
1
0
0
ADCSR1
ADCSR0
RIR
TIR
EIR
r
rwh
rwh
rwh
rwh
rwh
符号
位
类型
描述
EIR
0
rwh
SSC 出错中断标志
该位由硬件置位,只能由软件清零。
0
未产生中断事件 .
1
已产生中断事件
TIR
1
rwh
SSC 发送中断标志
该位由硬件置位,只能由软件清零。
0
未产生中断事件
1
已产生中断事件
RIR
2
rwh
SSC 发送中断标志
该位由硬件置位,只能由软件清零。
0
未产生中断事件
1
已产生中断事件
ADCSR0
3
rwh
ADC 中断标志 0
该位由硬件置位,只能由软件清零。
0
未产生中断事件
1
已产生中断事件
ADCSR1
4
rwh
ADC 中断标志 1
该位由硬件置位,只能由软件清零。
0
未产生中断事件
1
已产生中断事件
0
[7:5]
r
保留
读操作返回 0,应写入 0。
用户手册
中断系统 ,V2.3.3
9-24
V1.1, 2010-09
XC83x
中断系统
IRCON2
中断请求寄存器 2
RMAP: 0, PAGE: 0
7
6
(F5H)
5
4
复位值:00H
3
2
1
0
CCU6SR1
0
CCU6SR0
r
rwh
r
rwh
符号
位
类型
描述
CCU6SR0
0
rwh
CCU6 中断标志 0
该位由硬件置位,只能由软件清零。
0
未产生中断事件
1
已产生中断事件
CCU6SR1
4
rwh
CCU6 中断标志 1
该位由硬件置位,只能由软件清零。
0
未产生中断事件
1
已产生中断事件
0
[3:1],
[7:5]
r
保留
读操作返回 0,应写入 0。
IRCON3
中断请求寄存器 3
RMAP: 0, PAGE: 0
7
6
(F6H)
5
4
复位值:00H
3
2
1
0
0
CCU6SR3
0
CCU6SR2
r
rwh
r
rwh
符号
位
类型
描述
CCU6SR3
4
rwh
CCU6 中断标志 3
该位由硬件置位,只能由软件清零。
0
未产生中断事件
1
已产生中断事件
用户手册
中断系统 , V2.3.3
0
9-25
V1.1, 2010-09
XC83x
中断系统
符号
位
类型
描述
CCU6SR2
0
rwh
CCU6 中断标志 2
该位由硬件置位,只能由软件清零。
0
未产生中断事件
1
已产生中断事件
0
[3:1],
[7:5]
r
保留
读操作返回 0,应写入 0。
TCON
定时器和计数器控制 / 状态寄存器
RMAP: X, PAGE: X
(88H)
7
6
5
4
TF1
TR1
TF0
rwh
rw
rwh
复位值:00H
3
2
1
0
TR0
IE1
rw
rwh
IT1
IE0
IT0
rw
rwh
rw
符号
位
类型
描述
IE0
1
rwh
外部中断 0 标志
检测到外部中断 0 事件时,该标志由硬件置位。
处理器响应中断转入中断服务程序后,该标志由硬
件清零,也可由软件清零。
IE1
3
rwh
外部中断 1 标志
检测到外部中断 1 事件时,该标志由硬件置位。
处理器响应中断转入中断服务程序后,该标志由硬
件清零,也可由软件清零。
TF0
5
rwh
定时器 T0 溢出标志
定时器 T0 溢出时,该标志由硬件置位。处理器响应
中断转入中断服务程序后,该标志由硬件清零,也
可由软件清零。
TF1
7
rwh
定时器 T1 溢出标志
定时器 T1 溢出时,该标志由硬件置位。处理器响应
中断转入中断服务程序后,该标志由硬件清零,也
可由软件清零。
用户手册
中断系统 ,V2.3.3
9-26
V1.1, 2010-09
XC83x
中断系统
SCON
UART 控制 / 状态寄存器
RMAP: X, PAGE: X
(98H)
复位值:00H
7
6
5
4
3
2
1
0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
rw
rw
rw
rw
rw
rwh
rwh
rwh
符号
位
类型
描述
RI
0
rwh
串行接口接收中断标志
完成一个串行数据字节的接收后,该标志由硬件置
位;必须由软件清零。
TI
1
rwh
串行接口发送中断标志
完成一个串行数据字节的发送后,该标志由硬件置
位;必须由软件清零。
NMISR
NMI 状态寄存器
RMAP: 0, PAGE: 0
7
6
FNMI
FNMIECC
XTALCLK
rwh
rwh
(F7H)
复位值:00H
5
4
3
2
FNMI
VDDP
FNMI
VDDC
FNMI
OCDS
FNMI
FLASH
rwh
rwh
rwh
rwh
1
0
FNMI
FNMIWDT
OSCCLK
rwh
rwh
符号
位
类型
描述
FNMIWDT
0
rwh
WDT NMI 标志
0
未发生 WDT NMI
1
已发生 WDT 预警
FNMIOSCCLK
1
rwh
48 MHz 或 75 kHz 振荡器时钟 NMI 标志
0
未发生 48 MHz 或 75 kHz 振荡器 NMI
1
已发生 48 MHz 或 75 kHz 时钟丢失
FNMIFLASH
2
rwh
Flash 操作完成 NMI 标志
0
未发生 Flash NMI
1
Flash 操作已完成
用户手册
中断系统 , V2.3.3
9-27
V1.1, 2010-09
XC83x
中断系统
符号
位
类型
描述
FNMIOCDS
3
rwh
OCDS NMI 标志
0
未发生 OCDS NMI
1
监控模式下已发生 JTAG 接收或用户中断请求
FNMIVDDC
4
rwh
VDDC 预警 NMI 标志
0
未发生 VDDC NMI
1
已发生 VDDC 预警 (跌至 2.3V 以下)
FNMIVDDP
5
rwh
VDDP 预警 NMI 标志
0
未发生 VDDP NMI
1
已发生 VDDP 预警 (若外部电压为 5.0V,对应
的 VDDP 预警电压 4.0V)
FNMIECC
6
rwh
ECC NMI 标志
0
未发生 ECC 错误
1
ECC 已出错
FNMIXTALCLK 7
rwh
32.768 kHz XTAL 振荡器时钟 NMI 标志
该位由硬件置位,只能由软件清零。
0
未发生 32.768 kHz XTAL 时钟丢失 NMI
1
已发生 32.768 kHz XTAL 时钟丢失
注: NMISR 寄存器只能由软件清零,或在上电复位之后被置为缺省值。在其它复位方
式下,该寄存器的值保持不变,从而可检查引发前次 NMI 的中断源。
用户手册
中断系统 ,V2.3.3
9-28
V1.1, 2010-09
XC83x
中断系统
9.5.4
中断优先级寄存器
每个中断节点的优先级可分别编程设定 (共有四级优先级可用) 。用两对中断优先级寄
存器来设定每个中断向量的优先级。第一对中断优先级寄存器是 IP 和 IPH ;第二对中断
优先级寄存器是 IP1 和 IPH1。
每对中断优先级寄存器中的对应位相组合,共同确定该中断节点的优先级 (4 级优先级
供选择),见表 9-5。
表 9-5
中断优先级选择
IPH.x / IPH1.x
IP.x / IP1.x
优先级
0
0
优先级 0 (最低)
0
1
优先级 1
1
0
优先级 2
1
1
优先级 3 (最高)
注: 由于 NMI 具有最高优先级(高于优先级 3),故不需要通过表 9-5 进行优先级选择。
IP
中断优先级寄存器
RMAP: X, PAGE: X
7
6
(B8H)
复位值:00H
5
4
3
2
1
0
0
PT2
PS
PT1
PX1
PT0
PX0
r
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
PX0
0
rw
中断节点 XINTR0 的优先级低位
PT0
1
rw
中断节点 XINTR1 的优先级低位
PX1
2
rw
中断节点 XINTR2 的优先级低位
PT1
3
rw
中断节点 XINTR3 的优先级低位 3
PS
4
rw
中断节点 XINTR4 的优先级低位
PT2
5
rw
中断节点 XINTR5 的优先级低位
0
[7:6]
r
保留
读操作返回 0,应写入 0。
用户手册
中断系统 , V2.3.3
9-29
V1.1, 2010-09
XC83x
中断系统
IPH
中断优先级寄存器,高位字节
RMAP: X, PAGE: X
7
6
(B9H)
复位值:00H
5
4
3
2
1
0
0
PT2H
PSH
PT1H
PX1H
PT0H
PX0H
r
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
PX0H
0
rw
中断节点 XINTR0 的优先级高位
PT0H
1
rw
中断节点 XINTR1 的优先级高位
PX1H
2
rw
中断节点 XINTR2 的优先级高位
PT1H
3
rw
中断节点 XINTR3 的优先级高位
PSH
4
rw
中断节点 XINTR4 的优先级高位
PT2H
5
rw
中断节点 XINTR5 的优先级高位
0
[7:6]
r
保留
读操作返回 0,应写入 0。
IP1
中断优先级寄存器 1
RMAP: X, PAGE: X
(F8H)
复位值:04H
7
6
5
4
3
2
1
0
PCCIP3
PCCIP2
PCCIP1
PCCIP0
PXM
PX2
PSSC
PADC
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
PADC
0
rw
中断节点 XINTR6 的优先级低位
PSSC
1
rw
中断节点 XINTR7 的优先级低位
PX2
2
rw
中断节点 XINTR8 的优先级低位
PXM
3
rw
中断节点 XINTR9 的优先级低位
PCCIP0
4
rw
中断节点 XINTR10 的优先级低位
PCCIP1
5
rw
中断节点 XINTR11 的优先级低位
用户手册
中断系统 ,V2.3.3
9-30
V1.1, 2010-09
XC83x
中断系统
符号
位
类型
描述
PCCIP2
6
rw
中断节点 XINTR12 的优先级低位
PCCIP3
7
rw
中断节点 XINTR13 的优先级低位
IPH1
中断优先级寄存器 1,高位字节
RMAP: X, PAGE: X
(F9H)
复位值:04H
7
6
5
4
3
2
1
0
PCCIP3H
PCCIP2H
PCCIP1H
PCCIP0H
PXMH
PX2H
PSSCH
PADCH
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
PADCH
0
rw
中断节点 XINTR6 的优先级高位
PSSCH
1
rw
中断节点 XINTR7 的优先级高位
PX2H
2
rw
中断节点 XINTR8 的优先级高位
PXMH
3
rw
中断节点 XINTR9 的优先级高位
PCCIP0H
4
rw
中断节点 XINTR10 的优先级高位
PCCIP1H
5
rw
中断节点 XINTR11 的优先级高位
PCCIP2H
6
rw
中断节点 XINTR12 的优先级高位
PCCIP3H
7
rw
中断节点 XINTR13 的优先级高位
9.6
中断标志概览
中断事件的中断标志存放在不同的 SFR 中。表 9-6 列出各中断标志所属的 SFR。中断标
志的具体信息将在相关外设章节中给出。
表 9-6
中断标志的位置
中断事件
中断标志
SFR
定时器 T0 溢出
TF0
TCON
定时器 T1 溢出
TF1
TCON
定时器 T2 溢出
TF2
T2_T2CON
定时器 T2 外部事件
EXF2
T2_T2CON
UART 接收
RI
SCON
用户手册
中断系统 , V2.3.3
9-31
V1.1, 2010-09
XC83x
中断系统
表 9-6
中断标志的位置
中断事件
中断标志
SFR
UART 发送
TI
SCON
LIN 同步字节结束
EOFSYN
LINST
LIN 同步字节出错
ERRSYN
LINST
外部中断 0
IE0
TCON
外部中断 1
IE1
TCON
外部中断 2
EXINT2
IRCON0
外部中断 3
EXINT3
IRCON0
外部中断 4
EXINT4
IRCON0
外部中断 5
EXINT5
IRCON0
外部中断 6
EXINT6
IRCON0
RTC 比较 / 唤醒中断
CFRTC
RTC_RTCON
RTC 秒定时中断
SFRTC
RTC_RTCON
ADC 服务请求 0
ADCSR0
IRCON1
ADC 服务请求 1
ADCSR1
IRCON1
CORDIC 计算结束
EOC
CD_STATC
MDU 结果准备就绪
IRDY
MDU_MDUSTAT
MDU 出错
IERR
MDU_MDUSTAT
SSC 错误
EIR
IRCON1
SSC 发送
TIR
IRCON1
SSC 接收
RIR
IRCON1
IIC 中断
IFLG
CNTR
P1.0 HCPADA 过电流中断
P0_OCF
P1_OCD
P1.1 HCPADA 过电流中断
P1_OCF
P1_OCD
P1.2 HCPADA 过电流中断
P2_OCF
P1_OCD
P1.3 HCPADA 过电流中断
P3_OCF
P1_OCD
CCU6 节点 0 中断
1)
CCU6SR0
IRCON2
CCU6 节点 1 中断
CCU6SR11)
IRCON2
CCU6 节点 2 中断
1)
IRCON3
CCU6SR2
1)
CCU6 节点 3 中断
CCU6SR3
IRCON3
LEDTSCU 时间片中断
TSF
LTS_GLOBCTL1
用户手册
中断系统 ,V2.3.3
9-32
V1.1, 2010-09
XC83x
中断系统
表 9-6
中断标志的位置
中断事件
中断标志
SFR
LEDTSCU 时帧中断
WDT NMI
TFF
LTS_GLOBCTL1
FNMIWDT
NMISR
48 MHz 和 75 kHz 振荡器 NMI
FNMIOSCCLK
NMISR
32.768 kHz XTAL 振荡器 NMI
FNMIXTALCLK
NMISR
Flash 操作完成 NMI
OCDS NMI
FNMIFLASH
NMISR
FNMIOCDS
NMISR
VDDC 预警 NMI
FNMIVDDC
NMISR
VDDP 预警 NMI
Flash ECC NMI
FNMIVDDP
NMISR
FNMIECC
NMISR
1) 可通过 CCU6 寄存器 INPL/INPH 将每个 CCU6 中断分配给任意一个 CCU6 中断节点 [3:0]。
用户手册
中断系统 , V2.3.3
9-33
V1.1, 2010-09
XC83x
调试系统
10
调试系统
本章将简要介绍 XC800 调试系统,着重对 OCDS 单元 (提供硬件支持调试功能)予以
说明。
10.1
概述
调试系统由片上调试支持 (OCDS) 单元和 ROM 中的调试监控程序构成,它为基于
XC800 的控制系统提供基本调试功能,通过调试接口由外部工具直接控制。
特性
OCDS 支持以下调试特性:
·
·
·
·
·
·
在程序存储器的指令地址上和指定的地址范围内设置断点
在内部 RAM 地址段设置断点
在 Flash/RAM 代码区可设置数量不限的软件断点
通过调试接口处理外部暂停
程序代码单步调试
出现 IRAM 读 / 写断点时用户处理 OCDS NMI
10.1.1
调试系统的组成部分
下面将简要介绍调试系统的组成部分:
调试接口
可通过调试接口访问器件 (如读写数据)。 XC83x 支持的调试接口有:
· 单引脚 DAP (SPD)
· 1 或 2 引脚 UART
SPD 接口代表单引脚器件访问端口,它是英飞凌微控制器的标准化端口,仅使用单引脚
DAP1 进行串行数据读写。
UART 是标准接口,但不支持 OCDS 硬件命令。
监控程序
OCDS 监控程序 (或 OCDS 固件)存放在 Boot ROM 中。调试器发出命令后,监控程
序执行指令以访问可寻址的地址单元 (如器件的内存和 SFR)。
片上调试支持单元 (OCDS)
OCDS 硬件是调试系统的核心,它通过与 XC800 CPU 的接口来控制芯片的调试。
10.2
产品信息
本节给出和 OCDS 相关的产品信息。
用户手册
OCDS, V2.7.2
10-1
V1.1, 2010-09
XC83x
调试系统
10.2.1
引脚配置
表 10-1 列出 XC83x 中的调试引脚功能。
表 10-1
XC83x 引脚功能和选择
引脚 功能
说明
由 ... 选择
P3.2 SPD_0
单引脚调试访问端口:数据
根据 BMI 值进行选择,详见第 5
章的描述。
P0.6 SPD_1
P1.0 SPD_2
10.2.2
时钟配置
OCDS 以 CPU 频率 8 MHz 或 24 MHz 工作。
10.2.3
中断事件和中断节点分配
发生暂停事件时,可以不进入监控模式,而是转入执行 OCDS NMI 服务程序。在这种配
置下,OCDS NMI引发的操作完全由用户程序控制,后面将对该使用方法进行详细说明。
OCDS 模块产生的中断事件以及相应的中断使能位和标志位归纳见表 10-2。
表 10-2
OCDS 中断事件
事件
事件中断使能位
事件标志位
IRAM 读事件
MMICR.NMIRRE
MMICR.FNMIRR
IRAM 写事件
MMICR.NMIRWE
MMICR.FNMIRW
表 10-3 给出 OCDS 中断事件的中断节点分配情况。
表 10-3
OCDS 中断事件的中断节点控制
事件
中断节点使能位
中断节点标志位
中断向量
地址
IRAM 读事件
NMICON.NMIOCDS
NMISR.FNMIOCDS
73H
IRAM 写事件
10.2.4
调试挂起控制
监控模式有效时,用户可选择允许某些模块挂起。可使能调试挂起的模块有:
·
·
·
·
看门狗定时器
CCU6 的定时器 T12
CCU6 的定时器 T13
定时器 T2
用户手册
OCDS,V2.7.2
10-2
V1.1, 2010-09
XC83x
调试系统
· RTC 定时器
· LEDTSCU 计数器
若调试挂起,在监控模式下,这些模块的功能被冻结 (比如定时器停止计数) 。寄存器
MODSUSP用于控制调试挂起功能。在访问MODSUSP寄存器之前必须先对SCU_PAGE
寄存器中的位域 PAGE 进行设置。
MODSUSP
模块挂起控制寄存器
RMAP: 0, PAGE: 3
7
6
(F6H)
5
0
4
3
LTSSUSP RTCSUSP
r
rw
复位值:01H
T2SUSP
rw
2
1
0
T13SUSP T12SUSP WDTSUSP
rw
rw
rw
rw
符号
位
类型
描述
WDTSUSP
0
rw
SCU WDT 调试挂起位
0
WDT 不被挂起
1
WDT 将被挂起
T12SUSP
1
rw
定时器 T12 调试挂起位
0
捕获 / 比较单元中的定时器 T12 不被挂起
1
捕获 / 比较单元中的定时器 T12 将被挂起
此外,挂起后 T12 PWM 输出置为无效电平、捕获输
入禁用。
T13SUSP
2
rw
定时器 T13 调试挂起位
0
捕获 / 比较单元中的定时器 T13 不被挂起
1
捕获 / 比较单元中的定时器 T13 将被挂起
此外,挂起后 T13 PWM 输出置为无效电平、捕获输
入禁用。
T2SUSP
3
rw
定时器 T2 调试挂起位
0
定时器 T2 不被挂起
1
定时器 T2 将被挂起
RTCSUSP
4
rw
RTC 调试挂起位
0
RTC 不被挂起
1
RTC 将被挂起
LTSSUSP
5
rw
LED 和触摸感应计数器调试挂起位
0
LED 和触摸感应计数器不被挂起
1
LED 和触摸感应计数器将被挂起
用户手册
OCDS, V2.7.2
10-3
V1.1, 2010-09
XC83x
调试系统
符号
位
类型
描述
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
10.2.5
JTAG ID
XC83x 器件的 JTAG ID 见 表 10-4。
表 10-4
JTAG ID
器件类型
器件名
JTAG ID
Flash
XC83x-2FGI
101BA083H
XC83x-2FRI
XC83x-1FRI
10.3
101BB083H
调试系统的功能概述
XC800 调试操作基于 OCDS 硬件和 监控程序 (存放在 ROM 中)的紧密配合。
下面将详细说明相关的操作。
10.3.1
识别调试事件
在发生调试事件时, OCDS 负责启动相应的监控程序。
XC83x 支持的调试事件 (断点)有以下几种类型:
硬件断点
最多可设置 4 个硬件断点,发生以下情况时引发暂停:
· 从指定的程序存储器 (IP)地址单元中获取代码 - 在用户程序的一条指令上设置暂停
· 从指定的程序存储器 (IP)地址段上获取代码 - 在用户程序的多条连续指令上设置暂
停
· 对指定的内部 RAM 地址单元进行读或写操作(可选)- 数据移出 / 移入地址单元时引
发暂停
在指令地址上设置断点时, HWBPx 定义 16 位地址;在 IRAM 地址上设置断点时,
HWBP2/3L 和 HWBP2/3H 定义 8 位 IRAM 地址区间。
所支持的断点设置包括:
· 断点 0
· 断点 1
– 两个点断点
指令地址 = HWBP0 和
指令地址 = HWBP1 或
用户手册
OCDS,V2.7.2
10-4
V1.1, 2010-09
XC83x
调试系统
– 一个区间断点
HWBP0 <= 指令地址 <= HWBP1
· 断点 2
– 一个点断点,指令地址 = HWBP2,或
– 一个区间断点, HWBP2L <= IRAM 读地址 <= HWBP2H
· 断点 3
– 一个点断点,指令地址 = HWBP3,或
– 一个区间断点, HWBP3L <= IRAM 写地址 <= HWBP3H
若将区间断点的高低地址设置为同一地址值,将会产生点断点。
软件断点
这类断点使用 XC800 专用的 (非 8051 标准) TRAP 指令,同时还将扩展操作 (EO)
寄存器中的位 TRAP_EN 置 1。
读取 TRAP 指令时,产生一个断点,执行相应的暂停动作。
实际上,软件断点的行为与指令地址上的点断点相似,区别在于前者由程序代码产生,而
后者由专门的比较逻辑实现。
在 用 户 程 序 中 可 用 软 件 断 点 替 换 原 先 的 指 令 代 码,数 量 不 限。但 只 能 在 已 实 现 的
RAM/Flash 的地址上设置断点。
外部暂停
下面的情况可引发外部暂停:
· 由 OCDS 命令通过调试接口请求:外部调试器可激活监控程序并中断运行在目标
XC800 上的用户程序。
10.3.2
激活监控程序
一旦识别到调试事件且已正确设置 OCDS 寄存器, OCDS 的主要响应即激活监控程序
(位于 ROM 中)。
OCDS 确保始终安全启动监控程序,并在调试过程中完全独立于当前的系统状态。此外,
监控程序工作时产生的中断请求将不会干扰监控程序正常执行。
一旦监控程序开始工作,它将运行在自己的堆栈和数据存储器中,从而确保当控制返回
用户程序时,所有的 CPU 和内存资源不被改变。因此,OCDS 调试完全是非破坏性的。
监控程序可提供的功能包括:
·
·
·
·
通过调试接口与外部调试器通信
读 / 写任意存储器地址和特殊功能寄存器 (SFR),包括指令指针和密码保护位
配置 OCDS 以及设置 / 删除断点
单指令执行 (单步执行)
注: 本手册不提供监控程序功能的详细描述。
用户手册
OCDS, V2.7.2
10-5
V1.1, 2010-09
XC83x
调试系统
10.3.3
调试挂起控制
XC83x OCDS 除了支持基本调试功能 - 设置断点和暂停用户软件的执行,它还支持调试
期间的模块挂起。
只要器件处于监控模式 (即,用户软件不运行、处于暂停状态)且片上软件使能调试挂
起功能,模块可在调试期间挂起。
这是一种非常有用的特性,尤其对看门狗定时器而言:它可避免调试期间 WDT 意外复
位。通常,为定时器模块提供调试挂起功能。暂停期间终止计数器工作可将器件的状态
完全 “冻结”。
通常,复位之后禁用调试挂起控制位(OCDS 中的全局使能和 SCU 中的各模块使能位),
即缺省情况下,暂停不会使任何模块挂起。通常而言,若要进行调试,器件会从 OCDS
模式下启动,在运行任何用户程序之前将激活监控程序。调试器应提供挂起控制的用户
配置。
10.3.4
运行监控程序
由于监控程序运行在自己的堆栈和数据存储器中,因此内核的状态被完整保存,以便返
回用户程序时恢复该状态。
一旦开始执行监控程序,它可读写所有系统资源,数据可与调试器进行通信。
10.3.5
返回用户程序
接收到返回用户程序的请求后,监控程序根据需要设置内核寄存器 (包括指令指针 IP)
的状态:可以和发生断点前的状态相同,也可以由调试器在暂停阶段改变部分状态。随
后跳转到 IP 指向的地址单元,系统返回用户模式。
10.3.6
单步执行
为了实现单步执行, OCDS 开始的操作和返回用户程序时相同,但同时置位标志位
MMCR.MSTEP。通过这种方式,在重新进入监控之前,只执行一条用户指令。
用户手册
OCDS,V2.7.2
10-6
V1.1, 2010-09
XC83x
调试系统
10.4
断点产生模块
只有在监控模式下才能产生断点。
注意 :
为了能够通过监控模式进行调试,应用程序不应改变扩展操作(EO)寄存器
中的位 TRAP_EN。
断点可划分为以下三种类型:
· 指令执行前暂停
暂停刚好发生在暂停指令 (即引发该断点的指令)执行之前。因此,该暂停指令是用
户程序中将要执行的下一条指令,但只在相应的调试动作发生后执行。
· 指令执行后暂停
在断点指令(即引发该断点的指令)执行之后暂停立即发生。因此在发生相应的调试
动作时,该断点指令已被执行。
· 立即暂停
这类事件和 XC83x 内部的指令执行不同步,在这种情况下不存在 “引起调试事件的
指令”。调试事件一出现, OCDS “尽可能快的”执行调试动作。
10.4.1
产生硬件断点
该模块围绕一组比较器构成,专门用于识别两类硬件断点:
10.4.1.1 指令地址断点
只有当断点地址和指令首字节 (即指令操作码)地址匹配时,才会产生这类 IP 断点。对
于 2 字节和 3 字节指令,指令的第二和第三字节的地址不产生暂停。
IP 断点属于“指令执行前暂停”,因此只有在相应调试动作执行之后才执行该暂停指令。
地址比较器、控制位和标志位
用于产生 IP 断点的比较器说明如下:
· CMP0
两个HWBP0 寄存器(A侧)和16位程序存储器地址总线(B侧)之间的16位比较器 。
产生两个输出信号:
– A=B - (IP= HWBP0 时暂停)
– A=<B - 见下面的说明。
· CMP1
两个 HWBP1 寄存器(A侧)和 16位程序存储器地址总线(B侧)之间的 16位比较器。
产生两个输出信号:
– A=B - (IP= HWBP1 时暂停)
– A>=B 的同时 CMP0 的 A=<B - (HWBP0 =<IP<= HWBP1,产生中断 )
· CMPIP2
两个 HWBP2 寄存器(A 侧)和 16 位程序存储器地址总线(B 侧)之间的 16 位比较器。
产生一个输出信号:
– A=B - (IP = HWBP2 时暂停)
用户手册
OCDS, V2.7.2
10-7
V1.1, 2010-09
XC83x
调试系统
· CMPIP3
两个 HWBP3 寄存器(A 侧)和 16 位程序存储器地址总线(B 侧)之间的 16 位比较器。
产生一个输出信号:
– A=B - (IP = HWBP3 时暂停)
10.4.1.2 IRAM 地址断点
对内部数据存储器(IRAM)执行读写操作的地址位于给定地址区间内时,产生这类 IRAM
地址断点。
IRAM 断点属于 “指令执行后时暂停” ,在断点指令执行之后立即执行相应调试动作。
XC83x OCDS 只支持 IRAM 地址的区间断点。
OCDS 能够区分读操作断点和写操作断点。
读断点和写断点的具体处理不同。
地址比较器、控制位和标志位
用于产生内存访问断点的比较器说明如下:
· CMPRL2, CMPRH2
两个 8 位比较器:
– HWBP2L 寄存器(A 侧)和 8 位 IRAM 源地址总线(B 侧)之间的比较器 CMPRL2,
产生 A=<B ;
– HWBP2H 寄存器(A 侧)和 8 位 IRAM 源地址总线(B 侧)之间的比较器 CMPRH2,
产生 A>=B。
因此:
HWBP2L=<IRAM 读地址 <=HWBP2H 时暂停。
· CMPWL3, CMPWH3
两个 8 位比较器:
– HWBP3L寄存器(A侧)和8位IRAM目的地址总线(B侧)之间的比较器CMPWL3,
产生 A=<B ;
– HWBP3H 寄存器 (A 侧)和 8 位 IRAM 目的地址总线 (B 侧)之间的比较器
CMPWH3,产生 A>=B。因此:
HWBP3L=<IRAM 写地址 <=HWBP3H 时暂停。
10.4.1.3 跟踪暂停地址的改变
硬件断点产生机制能够确保一旦满足暂停条件,立即强制 XC800 内核进入调试模式。此
时程序计数器的值冻结,该值对应内核若未转入调试模式、正常工作时将要读取的指令
的地址。
进入调试模式时, 监控程序将确定引发暂停的事件并将相关信息 (如 IRAM 读 / 写)送
至调试器。
用户手册
OCDS,V2.7.2
10-8
V1.1, 2010-09
XC83x
调试系统
10.4.2
处理外部暂停
下面将说明如何产生并处理外部暂停请求:
1. 请求来源
a) 通过 SPD 发送调试器请求 (专用命令),且 MMODE_r=1,RRF_r=0 及 数据字节
=A5H,同时:
MMCR2.MMODE=0 且 MMCR2.ALTDI=0
2. 内核停止执行当前命令,
内核进入调试模式
注: 在执行 NMI 中断服务程序时不处理外部暂停。
详细说明参见章节 10.7。
10.4.3
处理软件断点
由于软件断点属于 “指令执行前暂停” ,因此只有在相应调试动作执行之后才执行断点
上的指令。
内核一旦取指 TRAP 指令,软件断点生效,从而进入调试模式。
注意 :
用户程序切勿清除 EO 寄存器中的位 TRAP_EN。
OCDS 有两种响应方式:
· 识别到暂停事件时,进入监控模式
· 对软件暂停不予理睬
当上述条件不满足时 (如软件断点被禁用),发生这种情况。
执行到禁用的软件断点时,用户程序将在该指令(TRAP 指令)之后暂停 4 个时钟周期。
10.5
不进入监控模式的断点响应方式
若监控模式禁用,产生暂停事件时, OCDS 系统不启动监控程序 (MM_no_entry),而
是触发另一种动作。
10.5.1
触发 NMI 请求
OCDS 系统不启动监控程序,而是请求 OCDS NMI,详见章节 10.6.1。
只能通过软件清除此处置位的标志位 FNMIRR/FNMIRW - 必须由用户 NMI 服务程序执行
该操作。
用户手册
OCDS, V2.7.2
10-9
V1.1, 2010-09
XC83x
调试系统
10.6
NMI 请求及控制
OCDS 硬件可产生 NMI 请求并控制一般的 NMI 处理。
10.6.1
来自 OCDS 的 NMI 请求
OCDS 产生中断请求从 ocds_nmi_o 上输出。该信号送至 XC800 SCU(系统控制单元)
内部的中断管理模块,置位NMI状态寄存器中的相应标志位。若NMI控制寄存器 NMICON
使能 OCDS NMI 中断,则产生非可屏蔽中断请求送至内核。
访问内部 RAM 中给定的地址区间时(读 / 写操作分别配置),OCDS 可激活 NMI 请求。
该高级特性可完全由用户程序控制,使得可通过部分 OCDS 来支持一个通用的、用户可
访问的功能。
实现该特性的基础是:
· 断点产生模块可识别 IRAM 地址区间的读 / 写访问 (参见章节 10.4.1.2)
· 断点匹配的同时若 MMCR2.MBCON=1,不启动监控固件,实际上不发生调试。
注: 需要置位 EO.TRAP_EN 使能产生断点。
执行 IRAM 访问时,可通过以下步骤配置、触发并处理 OCDS NMI 请求 (参见章
节 10.5.1):
1. 首先必须设置 MMCR2.MBCON=1
2. 用户程序必须执行以下步骤:
a) 置位 MMICR 中的 NMI 使能位 NMIRRE/NMIRWE (分别对应 IRAM 读 / 写访问)
b) 将监测区间的低地址写入 HWBP2L/HBWBP3L (分别对应 IRAM 读 / 写访问)
c) 将监测区间的高地址写入 HWBP2H/HBWBP3H (分别对应 IRAM 读 / 写访问)
3. 完成上述置位操作之后,若 MBCON=1,一旦读 / 写访问到配置的 IRAM 区间,OCDS
将触发 NMI 请求。
4. OCDS 产生 NMI 请求后,置位寄存器 MMICR 中的相应标志位 FNMIRR/FNMIRW 参见 章节 10.8.1 中的寄存器说明和章节 10.5.1 中的功能定义。
若 NMICON.NMIOCDS=1 (该寄存器位于 SCU 中)使能 OCDS NMI 中断,该请求
被送至内核,随后跳转到 XC800 程序存储器的标准单元,激活 NMI 中断服务请求,
该服务程序:
a) 通过评估 NMISR.FNMIOCDS (SCU 中)和 MMICR.FNMIRR/FNMIRW (OCDS
中)的值,可识别该 NMI 请求由 OCDS 产生以及触发该请求的 IRAM 访问类型。
b) 该服务程序结束前必须清除标志位 FNMIRR/FNMIRW,从而可正确响应后面出现
的 NMI。
5. 所有设置
MMBPCR
以尝试配置
/
激活断点进行调试的操作都将复位内部
nmi_r*e/nmi_r*e_l 标志,从而在进行 IRAM 访问时禁止产生 NMI 请求。
注意 :
用户程序将支持 OCDS NMI 的所有软件处理 (服务程序) !
10.6.2
OCDS NMI 服务程序处理
IRAM 读 / 写访问触发 OCDS NMI 时,为了使硬件正确工作,需要对 OCDS NMI 服务程
序进行特殊的处理以设立正确的 RETI 地址。
用户手册
OCDS,V2.7.2
10-10
V1.1, 2010-09
XC83x
调试系统
建议按照以下程序处理:
NMI_OCDS_MAIN: ;OCDS NMI 服务程序
POP RETADD_H ; 获取存储在 SP 中的返回地址
POP RETADD_L
;//--- 处理 OCDS NMI 的用户程序 ---//
;// 用户程序开始
...
;// 用户程序结束
MOV A,RETADD_L
CJNE A,#00H,DEC_LOW_BYTE ; 低位地址字节下溢?
DEC RETADD_H
DEC_LOW_BYTE:
DEC RETADD_L ; 返回地址减 1 个地址单元
PUSH RETADD_L ; 将正确的返回地址回存到 SP 中
PUSH RETADD_H
RETI
10.6.3
OCDS 对 NMI 的控制
控制的目的在于支持正确的 NMI 行为:
· 只要系统仍处于监控模式,在进入监控模式之前已挂起的所有 NMI 请求均不受影响,
即:这些请求被安全保存,系统返回用户模式时送至内核。
10.7
NMI 模式的优先级高于调试模
当内核处于 NMI 模式 (内核接受 NMI 中断请求之后、执行 RETI 指令之前,即:在执行
NMI 中断服务程序的过程中),调试功能被阻滞 / 限制:
1. 内核在服务 NMI 时,不响应外部暂停 (参见章节 10.4.2)。
若在执行 NMI 中断服务程序的过程中产生外部暂停请求,只有在执行 RETI 指令之后
该请求才能被接受。
2. 可在 NMI 中断服务程序中插入断点,但之后不能进行单步调试。
若请求单步调试,中断服务程序将连续执行,只有在执行 RETI 之后才能重新激活监
控模式。
CPU 处于 NMI 模式时,硬件断点和软件断点照常处理。
10.8
寄存器说明
从映射 SFR 区访问 OCDS SFR,这些(直接寻址)SFR 和相应的地址归纳见表 10-5。
用户手册
OCDS, V2.7.2
10-11
V1.1, 2010-09
XC83x
调试系统
表 10-5
寄存器映射 (直接寻址)
地址
寄存器
F4H
MMICR
F6H
HWBPSR
F7H
HWBPDR
ECH
MMWR2
此外还有多个硬件断点寄存器,可通过 HWBPSR (寄存器选择)和 HWBPDR (数据)
间接访问,请参见表 10-6 和表 10-7 (详细说明见章节 10.8)。
表 10-6
硬件断点寄存器 (间接访问)
寄存器
说明
HWBP0L
硬件断点 0 低位寄存器
HWBP0H
硬件断点 0 高位寄存器
HWBP1L
硬件断点 1 低位寄存器
HWBP1H
硬件断点 1 高位寄存器
HWBP2L
硬件断点 2 低位寄存器
HWBP2H
硬件断点 2 高位寄存器
HWBP3L
硬件断点 3 低位寄存器
HWBP3H
硬件断点 3 高位寄存器
表 10-7
HWBPSR [3:0]: 选择硬件断点寄存器
BPSEL 选择的寄存器
0xxx
BPSEL 选择的寄存器
1000
保留 - 不选择
HWBP0L
1001
HWBP0H
1010
HWBP1L
1011
HWBP1H
1100
HWBP2L
1101
HWBP2H
1110
HWBP3L
1111
HWBP3H
用户手册
OCDS,V2.7.2
10-12
V1.1, 2010-09
XC83x
调试系统
10.8.1
控制和状态寄存器
MMICR
监控模式中断控制寄存器
RMAP: 1, PAGE: X
7
6
(F4H)
5
4
复位值:00H
3
2
1
0
FNMIRW
FNMIRR
NMIRWE
NMIRRE
rwh
rwh
rw
rw
符号
位
类型
描述
NMIRRE
0
rw
读访问 IRAM 触发 NMI (参见章节 10.6.1):
0
禁用
1
使能
NMIRWE
1
rw
写访问 IRAM 触发 NMI (参见章节 10.6.1):
0
禁用
1
使能
FNMIRR
2
rwh
IRAM 读访问 NMI 标志
FNMIRW
3
rwh
IRAM 写访问 NMI 标志
位 FNMIRR / FNMIRW:
- 读 / 写 IRAM 时 OCDS 发出 NMI 请求,此时硬件置位相应的标志位 (参见章节 10.5.1
和章节 10.6.1)
- 软件只能复位相应的标志位
用户手册
OCDS, V2.7.2
10-13
V1.1, 2010-09
XC83x
调试系统
10.8.2
硬件断点寄存器
可间接 的 将 所 有 硬 件 断 点 寄 存 器 设 置 为 期 望 的 比 较 值 - 首先正确设置选择寄存器
HWBPSR 中的位域 BPSEL(见表 10-7),然后再设置软件可访问的寄存器 HWBPDR。
HWBPSR
硬件断点选择寄存器
RMAP: 1, PAGE: X
(F6H)
复位值:00H
7
6
5
4
3
2
0
0
0
BPSEL_P
BPSEL
r
r
r
w
rw
符号
位
类型
BPSEL
[3:0]
rw
断点寄存器选择 - 见表 10-7
BPSEL_P
4
w
位保护:
0
不可修改 BPSEL
1
可修改 BPSEL
0
[7:5]
r
保留
6
0
描述
HWBPDR
硬件断点数据寄存器
RMAP: 1, PAGE: X
7
1
(F7H)
5
4
复位值:00H
3
2
1
0
HWBPxx
rw
符号
位
类型
描述
HWBPxx
[7:0]
rw
将要向 / 从 HWBPxx 寄存器 (该寄存器由 HWBPSR
选择)写入 / 读出的数据
用户手册
OCDS,V2.7.2
10-14
V1.1, 2010-09
XC83x
调试系统
HWBP0L
硬件断点 0 低位寄存器
7
6
通过 HWBPDR 设置
5
4
3
复位值:00H
2
1
0
HWBP0L
符号
位
HWBP0L
[7:0]
类型
比较地址 HWBP0 的低位字节
HWBP0H
硬件断点 0 高位寄存器
7
6
描述
通过 HWBPDR 设置
5
4
3
复位值:00H
2
1
0
HWBP0H
符号
位
HWBP0H
[7:0]
类型
比较地址 HWBP0 的高位字节
HWBP1L
硬件断点 1 低位寄存器
7
6
描述
通过 HWBPDR 设置
5
4
3
复位值:00H
2
1
0
HWBP1L
符号
位
HWBP1L
[7:0]
用户手册
OCDS, V2.7.2
类型
描述
比较地址 HWBP1 的低位字节
10-15
V1.1, 2010-09
XC83x
调试系统
HWBP1H
硬件断点 1 高位寄存器
7
6
通过 HWBPDR 设置
5
4
3
复位值:00H
2
1
0
HWBP1H
符号
位
HWBP1H
[7:0]
类型
比较地址 HWBP1 的高位字节
HWBP2L
硬件断点 2 低位寄存器
7
6
描述
通过 HWBPDR 设置
5
4
3
复位值:00H
2
1
0
HWBP2L
符号
位
HWBP2L
[7:0]
类型
比较地址 HWBP2 的低位字节
HWBP2H
硬件断点 2 高位寄存器
7
6
描述
通过 HWBPDR 设置
5
4
3
复位值:00H
2
1
0
HWBP2H
符号
位
HWBP2H
[7:0]
用户手册
OCDS,V2.7.2
类型
描述
比较地址 HWBP2 的高位字节
10-16
V1.1, 2010-09
XC83x
调试系统
HWBP3L
硬件断点 3 低位寄存器
7
6
通过 HWBPDR 设置
5
4
3
复位值:00H
2
1
0
HWBP3L
符号
位
HWBP3L
[7:0]
类型
比较地址 HWBP3 的低位字节
HWBP3H
硬件断点 3 高位寄存器
7
6
描述
通过 HWBPDR 设置
5
4
3
复位值:00H
2
1
0
HWBP3H
符号
位
HWBP3H
[7:0]
10.8.3
类型
描述
比较地址 HWBP3 的高位字节
监控工作寄存器
若 XC83x 不从 OCDS 模式启动,且没有外部器件和接口连接 - 即不进行调试操作时,寄
存器 MMWR2 可用作通用寄存器。
MMWR2
监控工作寄存器 2
RMAP: 1, PAGE: X
7
6
(ECH)
5
4
复位值:00H
3
2
1
0
MMWR2
rw
用户手册
OCDS, V2.7.2
10-17
V1.1, 2010-09
XC83x
调试系统
符号
位
类型
描述
MMWR2
[7:0]
rw
监控程序的工作地址 2
用户手册
OCDS,V2.7.2
10-18
V1.1, 2010-09
XC83x
并行端口
11
并行端口
XC83x 的引脚被组织成 P0 - P3 四个并行端口。 XC83x 中使用的端口引脚类型归纳见
表 11-1。
每个引脚带有一对可分别被使能或禁止的内部上拉 / 下拉器件。 P0、 P1 和 P3 口为双向
口,可用作通用输入 / 输出口 (GPIO)或片上外设的输入 / 输出口 (复用输入输出功
能)。引脚设置为输出口时,可选择漏极开路模式。 P1 口是大电流双向端口,可用于电
机和 LED 应用。P2 口是单向输入口,可用作通用输入、片上外设的输入以及 ADC 的模
拟输入。
表 11-1
XC83x 中的端口类型
端口引脚
P0.1 - P0.7
标准双向端口
端口类型
P1.0 - P1.3
大电流双向 A 类端口 (HCPADA)1)
P1.4 - P1.5
大电流双向 B 类端口 (HCPADB)2)
P2.0 - P2.7
输入端口
P3.0 - P3.2
标准双向端口
1)
HCPADA 用于直接驱动电机和 LED。
2)
HCPADB 仅用于 LED 应用,不用于直接驱动电机。
大电流双向 A 类端口 (HCPADA)特性:
·
·
·
·
·
·
·
·
·
·
·
·
引脚方向可配置
上拉 / 下拉器件可配置
漏极开路模式可配置
通过数字输入输出口传送数据 (通用输入 / 输出)
片上外设的输入 / 输出口 (复用输入输出功能)
在省电模式下输入和输出驱动器禁用
支持单个 2 相步进电机 (即:使用 4 个 HCPADA 端口引脚)
支持 LED 驱动
翻转速度控制
过电流保护使能控制
过电流检测指示 & 关闭
发生过电流事件时可触发 TRAP 功能
大电流双向 B 类端口 (HCPADB)特性:
·
·
·
·
引脚方向可配置
上拉 / 下拉器件可配置
漏极开路模式可配置
通过数字输入输出口传送数据 (通用输入 / 输出)
用户手册
11-1
V1.1, 2010-09
XC83x
并行端口
· 片上外设的输入 / 输出口 (复用输入输出功能)
· 在省电模式下输入和输出驱动器禁用
· 支持 LED 驱动
标准双向口特性:
·
·
·
·
·
·
引脚方向可配置
上拉 / 下拉器件可配置
漏极开路模式可配置
通过数字输入输出口传送数据 (通用输入 / 输出)
片上外设的输入 / 输出口 (复用输入输出功能)
在省电模式下输入和输出驱动器禁用
输入口特性:
·
·
·
·
·
·
输入驱动器可配置
上拉 / 下拉器件可配置
通过数字输入口接收数据 (通用输入口)
片上外设的输入口 (复用输入功能)
ADC 模块的模拟输入
在省电模式下输入驱动器禁用
11.1
基本端口操作
XC83x 双向口引脚的结构框图如图 11-1 所示。每个引脚通过一组控制位和数据位来配
置,从而引脚使用具有很大的灵活性。通过设置控制寄存器,每个引脚可分别被配置成
输入或输出口 ;还可配置成带有或者不带内部上拉 / 下拉器件的漏极开路引脚。
标准双向口的输入和输出驱动器在正常工作模式下使能,掉电模式下禁用。不过,在掉
电模式下,用作掉电唤醒的端口引脚的驱动器使能工作。
输出模式下,输出驱动器将复用器送出的值驱动至端口引脚。在输出模式下,可通过寄
存器 Px_OD (x = 0, 1)将每个引脚切换至漏极开路模式或正常模式 (推挽模式)。
输出驱动器的前级输出复用器使输出口可用作多种功能。若引脚用作通用输出口,软件
控制复用器选通数据寄存器 Px_DATA,软件可对 Px_DATA 中的各位置位或清零,从而
直接影响引脚的状态。若引脚用作片上外设的输出口,输出复用器会选通复用功能输出
线 (AltDataOut),将其送至输出驱动电路。由寄存器 P0_ALTSEL0、 P0_ALTSEL1、
P0_ALTSEL2、 P1_ALTSEL0 和 P1_ALTSEL1 进行复用功能选择。
用户手册
11-2
V1.1, 2010-09
XC83x
并行端口
内部总线
Px_PUDSEL
上拉/下拉
选择寄存器
上拉/下拉
控制逻辑
Px_PUDEN
上拉/下拉
使能寄存器
Px_OD
漏极开路
控制寄存器
Px_ALTSEL0
复用功能选择
寄存器 0
Px_ALTSEL1
复用功能选择
寄存器 1
Px_ALTSEL2
拉动
器件
复用功能选择
寄存器 2
AltDataOut 7
:
:
输出
驱动器
111
:
:
:
引脚
001
AltDataOut1
000
Px_DataOUT
输入
驱动器
输出
数据寄存器
施密特
触发器
Px_DataIN
端口输出
驱动控制寄存器
Pad
AltDataIn
AnalogIn
图 11-1
标准双向口和大电流双向 B 类端口的基本结构
将引脚配置为输入模式 (复位后的缺省模式)时,必须通过以下步骤将输出驱动器切换
至高阻:
· 通过寄存器 Px_DATAOUT 向端口引脚写 "1",将输出驱动器置为高阻
· 通过寄存器 Px_OD 使能漏极开路功能
· 通过寄存器 Px_ALTSELx 选择用作 GPIO 功能
用户手册
11-3
V1.1, 2010-09
XC83x
并行端口
在输入模式下,若复用输出线确保保持高电平,则不必设置用作 GPIO 功能。
引脚上的实际电压值由施密特触发器译成逻辑 0 或 1,可从寄存器 Px_DATAIN 中读取。
每个引脚还可编程设置激活内部的弱上拉或下拉器件。寄存器 Px_PUDEN 使能或禁止拉
动器件,寄存器 Px_PUDSEL 选择激活上拉或下拉器件。
以下代码给出如何将所有 P0 口引脚配置为输入模式:
ANL SYSCON0, #0xFE
MOV PORT_PAGE, #0x00
MOV P0_DATAOUT, #0xFF
; 置位 P0_DATAOUT
MOV PORT_PAGE, #0x03
MOV P0_OD, #0xFF
; 使能漏极开路
MOV PORT_PAGE, #0x02
MOV P0_ALTSEL0, #0x00
; 复用功能选择 GPIO
MOV P0_ALTSEL1, #0x00
;Px_ALTSELx 位于 PORT_PAGE = 0x02 中
MOV P0_ALTSEL2, #0x00
大电流双向 A 类端口引脚的结构框图如图 11-2 所示。除了具有标准双向端口引脚的特性
之外,该类引脚还具有直接驱动电机的特性。可通过 Px_OCPEN 控制过电流保护。使能
过电流保护功能时,通过禁用端口内部的输入和输出驱动器,可为引脚提供过载自我保
护。从过电流状态下恢复时,状态标志 Px_OCF 需要由软件清零。一旦该标志被清零,
输入和输出驱动器将被使能。发生过电流时,寄存器 Px_OCD 中的位 Px_OCF 置 1B。若
Px_OCD中的位Px_OCEN置1B,过电流事件可触发中断。此外,可通过寄存器Px_SLEW
选择端口的翻转速度。
若设置 CCU6_PISEL0L.ISTRP[7:6] 为 01B 或 10B,发生过电流事件时,可触发 CCU6 模
块的 TRAP 功能。
大电流双向 B 类端口没有过电流保护和检测功能,其引脚的结构框图和标准双向口类似,
如图 11-1 所示。该类端口具有高灌电流以支持 LED 应用。
用户手册
11-4
V1.1, 2010-09
XC83x
并行端口
Px_SLEW
翻转速度控制
寄存器
Px_OCD
过电流检测
寄存器
输入/输出
驱动控制逻辑
Px_OCPEN
过电流保护
使能寄存器
内部总线
Px_PUDSEL
上拉/下拉
选择寄存器
上拉/下拉
控制逻辑
Px_PUDEN
上拉/下拉
使能寄存器
Px_OD
漏极开路
控制寄存器
Px_ALTSEL0
复用功能选择
寄存器 0
Px_ALTSEL1
复用功能选择
寄存器 1
拉动
器件
AltDataOut 3
:
:
:
:
AltDataOut 1
输出
驱动器
11
:
01
过电流检测
器件
引脚
00
输入
驱动器
Px_DATAOUT 输出
数据寄存器
施密特
触发器
Px_DataIN
端口输出
驱动控制寄存器
Pad
AltDataIn
AnalogIn
图 11-2
用户手册
大电流双向 A 类端口的基本结构
11-5
V1.1, 2010-09
XC83x
并行端口
单向输入口引脚结构如图 11-3 所示。每一个 P2 口引脚只能工作在输入模式。通过寄存
器 P2_EN 禁止 / 使能输入驱动器。输入驱动器被使能时,引脚上的实际电压值由施密特
触发器译成逻辑 0 或 1,可从寄存器 P2_DATAIN 读出。每个引脚还可设置为激活内部的
弱上拉或下拉器件。寄存器 P2_PUDEN 使能或禁止拉动器件,寄存器 P2_PUDSEL 选
择激活上拉还是下拉器件。模拟输入 (AnalogIn)不经过数字电路和施密特触发器,直
接进入 ADC 的输入通道。
内部总线
Px_PUDSEL
上拉/下拉
选择寄存器
上拉/下拉
控制逻辑
Px_PUDEN
上拉/下拉
使能寄存器
Px_EN
输入控制寄存器
拉动
器件
Px_DATAIN
输入
驱动器
输入
引脚
数据寄存器
施密特
触发器
Pad
AltDataIn
AnalogIn
图 11-3
用户手册
单向输入口的基本机构
11-6
V1.1, 2010-09
XC83x
并行端口
11.1.1
通用寄存器说明
本节将对 XC83x 中的端口 SFR 进行详细说明。
11.1.1.1 寄存器映射
端口 SFR 位于标准存储区 (RMAP = 0),由四页构成。 PORT_PAGE 寄存器位于地址
单元 8EH,包含页信息和分页控制信息。
端口 SFR 的地址归纳见表 11-2。
表 11-2
页 0-3 的 SFR 地址列表
地址
80H
页0
P0_DATAOUT
页1
P0_PUDSEL
86H
P0_DATAIN
P0_PUDEN
页2
P0_ALTSEL0
页3
P0_OD
P0_ALTSEL1
P0_ALTSEL2
85H
90H
P1_DATAOUT
91H
92H
P1_PUDSEL
P1_ALTSEL0
P1_DATAIN
P1_PUDEN
P1_ALTSEL1
P1_OCD
P1_OCPEN
93H
P1_OD
P1_SLEW
P2_PUDSEL
94H
P2_DATAIN
P2_PUDEN
C8H
P3_DATAOUT
P3_PUDSEL
P3_ALTSEL0
C9H
P3_DATAIN
P3_PUDEN
P3_ALTSEL1
PORT_PAGE
端口分页寄存器
RMAP: 0, PAGE: X
7
P2_EN
P3_OD
(8EH)
6
5
4
复位值:00H
3
2
1
OP
STNR
0
PAGE
w
w
r
rwh
0
符号
位
类型
描述
PAGE
[2:0]
rwh
页信息
写入时,该值表示新页地址。
读出时,该值表示当前的有效页 = addr [y:x+1]。
用户手册
11-7
V1.1, 2010-09
XC83x
并行端口
符号
位
类型
描述
STNR
[5:4]
w
保存编号
该编号指示在哪个保存位域上执行由 OP 确定的操
作。
若 OP = 10B,
PAGE 的内容在被新值覆盖之前保存在 PORT_STx
中。
若 OP = 11B,
PAGE 的内容被 PORT_STx 的内容覆盖。写入
PAGE 的值被忽略。
00
选择 PORT_ST0
01
选择 PORT_ST1
10
选择 PORT_ST2
11
选择 PORT_ST3
OP
[7:6]
w
操作
0X 手动保存页模式, STNR 的值被忽略,PAGE
被直接写入。
10
带有自动页保存的新页设置。当前写入 PAGE
中的内容被保存的同时,上次写入 PAGE 中的
内容被保存在 STNR 指定的位域 PORT_STx
中。
11
自动恢复页操作。写入 PAGE 的内容被忽略,
PAGE 的内容由 STNR 指定的位域
PORT_STx 中的值覆盖。
0
3
r
保留
读操作返回 0,应写入 0。
11.1.1.2 寄存器概览
每个并行口的控制位和数据位存放在一组 8 位寄存器中。具有相同含义和功能的位放在
同一个寄存器中。这些寄存器将端口设置为通用 I/O 口或复用功能输入 / 输出口。
P0 和 P2 口仅实现了表 11-3 列出的部分寄存器。每个端口寄存器的具体描述可参见章
节 11.2 至章节 11.5。本节仅对不同端口的寄存器予以概述。
表 11-3
端口寄存器
寄存器缩写名
寄存器全名
具体说明参见
Px_DATAOUT
端口 x 数据输出寄存器
页 11-9
Px_DATAIN
端口 x 数据输入寄存器
页 11-10
Px_OD
端口 x 漏极开路控制寄存器
页 11-10
Px_PUDSEL
端口 x 上拉 / 下拉选择寄存器
页 11-11
用户手册
11-8
V1.1, 2010-09
XC83x
并行端口
表 11-3
端口寄存器
寄存器缩写名
寄存器全名
具体说明参见
Px_PUDEN
端口 x 上拉 / 下拉使能寄存器
页 11-11
Px_ALTSEL0
端口 x 复用功能选择寄存器 0
页 11-12
Px_ALTSEL1
端口 x 复用功能选择寄存器 1
页 11-12
Px_ALTSEL2
端口 x 复用功能选择寄存器 2
页 11-12
Px_OCD
端口 x 过电流检测寄存器
页 11-13
Px_OCPEN
端口 x 过电流保护使能寄存器
页 11-14
Px_SLEW
端口 x 翻转速度控制寄存器
页 11-15
Px_EN
端口 x 输入控制寄存器
页 11-15
注: 并非每个端口均实现了上表列出的所有寄存器。
端口数据输出寄存器
若引脚用作通用输出口,输出数据写入端口 x 的寄存器 Px_DATAOUT 中。
读取 Px_DATAOUT 将返回寄存器的值,而不是 Px_DATAOUT 引脚上的状态。
Px_DATAOUT
端口 x 数据输出寄存器
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
端口 x 引脚 n 的数据值
0
端口 x 引脚 n 的数据值 = 0
1
端口 x 引脚 n 的数据值 = 1 (缺省值)
用户手册
11-9
V1.1, 2010-09
XC83x
并行端口
端口数据输入寄存器
若引脚用作通用输入口,可从寄存器 Px_DATAIN 中读取引脚上的值。数据寄存器
Px_DATAIN 中始终保存端口引脚的锁存值,即使它被分配用作输出引脚。
Px_DATAIN
端口 x 数据输入寄存器
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rh
rh
rh
rh
rh
rh
rh
rh
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rh
端口 x 引脚 n 的数据值
0
端口 x 引脚 n 的数据值 = 0
1
端口 x 引脚 n 的数据值 = 1
漏极开路控制寄存器
工作在输出模式的每个引脚均可切换到漏极开路模式。如果用 1 驱动,不会激活驱动器,
引脚的输出状态取决于内部上拉 / 下拉器件的设置;如果用 0 驱动,驱动器的下拉晶体管
导通。
漏极开路模式由寄存器 Px_OD 控制。
Px_OD
端口 x 漏极开路控制寄存器
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
端口 x 引脚 n 漏极开路模式选择
0
正常模式; 0 和 1 可有效输出
1
漏极开路模式;只有 0 可有效输出 (缺省选
择)
用户手册
11-10
V1.1, 2010-09
XC83x
并行端口
上拉 / 下拉器件寄存器
端口引脚可选择使用内部上拉或下拉器件,从而具备以下输入特性:
· 三态
· 带有弱上拉的高阻态
· 带有弱下拉的高阻态
和以下输出特性:
· 推挽 (选择上拉 / 下拉)
· 带有内部上拉的漏极开路输出
· 带有外部上拉的漏极开路输出
上拉 / 下拉器件可由寄存器 Px_PUDSEL 和 Px_PUDEN 控制。寄存器 Px_PUDSEL 选
择上拉 / 下拉类型;寄存器 Px_PUDEN 使能或禁止上拉 / 下拉器件。可分别为每个引脚
选择上拉 / 下拉器件。
Px_PUDSEL
端口 x 上拉 / 下拉选择寄存器
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
端口 x 引脚 n 上拉 / 下拉选择
0
选择下拉器件
1
选择上拉器件
Px_PUDEN
端口 x 上拉 / 下拉使能寄存器
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
端口 x 引脚 n 上拉 / 下拉使能
0
禁用上拉或下拉器件
1
使能上拉或下拉器件
用户手册
11-11
V1.1, 2010-09
XC83x
并行端口
复用输入功能
一个端口引脚上的复用输入功能的数目不限。每个 I/O 引脚的端口控制逻辑通过寄存器提
供不同输入通路的数字输入值。有关端口输入选择寄存器的具体说明可参见相应外设章
节的内容。
复用输出功能
由输出复用器选择复用输出功能 (最多可选择 8 条输出线)。输出复用器可由以下寄存
器控制:
· 寄存器 Px_ALTSEL0
· 寄存器 Px_ALTSEL1
· 寄存器 Px_ALTSEL2
由寄存器 Px_ALTSEL0、 Px_ALTSEL1 和 Px_ALTSEL2 选择复用输出功能。对于不超
过 4 种复用功能的端口,通过 Px_ALTSEL2 进行设置。
注: 应将 Px_ALTSEL0.Pn、 Px_ALTSEL1.Pn 和 Px_ALTSEL2.Pn 设置成已实现的复
用输出功能。
Px_ALTSELn (n = 0, 1, 2)
端口 x 复用功能选择寄存器
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
引脚输出功能
配置 Px_ALTSEL0.Pn、 Px_ALTSEL1.Pn 和
Px_ALTSEL2.Pn 选择引脚用作 GPIO 或复用功能:
000 GPIO 功能
001 复用输出功能 1
010 复用输出功能 2
011 复用输出功能 3
100 复用输出功能 4
101 复用输出功能 5
110 复用输出功能 6
111 复用输出功能 7
用户手册
11-12
V1.1, 2010-09
XC83x
并行端口
过电流检测寄存器
每个端口引脚均配有过电流检测电路,检测到发生过电流时,该电路将置位过电流检测
寄存器中相应的 Px_OCF。若 Px_OCEN 置 1,同时会产生中断。
Px_OCD
端口 x 过电流检测寄存器
7
6
5
4
P3_OCEN P2_OCEN P1_OCEN P0_OCEN
rw
rw
rw
3
2
1
0
P3_OCF
P2_OCF
P1_OCF
P0_OCF
rwh
rwh
rwh
rwh
rw
符号
Pn_OCF
(n = 0 - 3)
位
n
类型
rwh
描述
Pn_OCEN
(n = 0 - 3)
n
rw
大电流端口 x 引脚 n 过电流中断使能
0
禁止产生过电流中断。
1
使能产生过电流中断。
用户手册
大电流端口 x 引脚 n 过电流检测
0
未产生过电流。向该位写 0 将清除锁存值。
1
检测到过电流。
11-13
V1.1, 2010-09
XC83x
并行端口
过电流保护使能寄存器
若使能过电流保护寄存器,当过电流检测寄存器的值被锁存时(即表明已产生过电流),
大电流端口的输入和输出驱动器将被自动禁用。
Px_OCPEN
端口 x 过电流保护使能寄存器
7
符号
Pn
(n = 0 - 3)
用户手册
6
5
位
n
3
2
1
0
0
P3
P2
P1
P0
r
rw
rw
rw
rw
类型
rw
4
描述
大电流端口 x 引脚 n 过电流保护使能
0
禁用过电流保护。
1
使能过电流保护。
11-14
V1.1, 2010-09
XC83x
并行端口
翻转速度控制寄存器
翻转寄存器控制每个大电流端口的翻转速度。
Px_SLEW
端口 x 翻转速度控制寄存器
7
6
符号
Pn
(n = 0 - 3)
5
3
2
1
0
0
P3
P2
P1
P0
r
rw
rw
rw
rw
位
n
类型
rw
4
描述
大电流端口 x 引脚 n 翻转速度控制
0
选择陡变沿。
1
选择缓变沿。
输入控制寄存器
输入控制寄存器控制每个端口引脚的输入驱动器。该寄存器用于 P2 口。
Px_EN
端口 x 输入控制寄存器
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
端口 x 引脚 n 的输入驱动器控制
0
使能输入驱动器
1
禁用输入驱动器
用户手册
11-15
V1.1, 2010-09
XC83x
并行端口
11.2
P0 口
P0 口是一个 8 位通用双向口,其每个引脚均采用标准双向 pad。 P0 口寄存器归纳见
表 11-4。
表 11-4
P0 口寄存器
寄存器缩写名
寄存器全名
P0_DATAIN
P0 口数据输入寄存器
P0_DATAOUT
P0 口数据输出寄存器
P0_OD
P0 口漏极开路控制寄存器
P0_PUDSEL
P0 口上拉 / 下拉选择寄存器
P0_PUDEN
P0 口上拉 / 下拉使能寄存器
P0_ALTSEL0
P0 口复用功能选择寄存器 0
P0_ALTSEL1
P0 口复用功能选择寄存器 1
P0_ALTSEL2
P0 口复用功能选择寄存器 2
11.2.1
功能
P0 口输入和输出功能归纳见表 11-5。
表 11-5
端口引脚
P0.0
P0 口 I/O 功能
I/O
功能选择
连接信号
输入
GPI
P0_DATAIN.P0
ALT1
T2_0
输出
用户手册
来自 / 送至模块
ALT2
T13HR_1
定时器 T2
CCU6
ALT3
MTSR_2
SSC
ALT4
MRST_3
SSC
ALT5
T12HR_0
CCU6
ALT6
CCPOS0_0
CCU6
ALT7
TSIN0
LEDTSCU
GPO
P0_DATAOUT.P0
ALT1
LINE0/TSIN0
ALT2
MTSR_2
SSC
ALT3
COUT61_1
CCU6
11-16
LEDTSCU
V1.1, 2010-09
XC83x
并行端口
表 11-5
P0 口 I/O 功能
端口引脚
I/O
功能选择
连接信号
P0.1
输入
GPI
P0_DATAIN.P1
ALT1
T0_0
ALT2
CC61_1
定时器 T0
CCU6
ALT3
MTSR_3
SSC
ALT4
MRST_2
SSC
ALT5
T13HR_0
CCU6
ALT6
CCPOS1_0
CCU6
ALT7
TSIN1
LEDTSCU
GPO
P0_DATAOUT.P1
ALT1
LINE1/TSIN1
LEDTSCU
ALT2
MRST_2
SSC
ALT3
CC61_1
CCU6
输出
P0.2
输入
输出
用户手册
来自 / 送至模块
GPI
P0_DATAIN.P2
ALT1
T1_0
ALT2
CC62_1
定时器 T1
CCU6
ALT3
SCL_1
IIC
ALT4
–
ALT5
–
ALT6
CCPOS2_0
CCU6
ALT7
TSIN2
LEDTSCU
GPO
P0_DATAOUT.P2
ALT1
LINE2/TSIN2
LEDTSCU
ALT2
SCL_1
IIC
ALT3
CC62_1
CCU6
11-17
V1.1, 2010-09
XC83x
并行端口
表 11-5
P0 口 I/O 功能
端口引脚
I/O
功能选择
连接信号
P0.3
输入
GPI
P0_DATAIN.P3
输出
P0.4
输入
输出
用户手册
来自 / 送至模块
ALT1
–
ALT2
CC60_1
CCU6
ALT3
SDA_1
IIC
ALT4
–
ALT5
–
ALT6
CTRAP_0
CCU6
ALT7
TSIN3
LEDTSCU
GPO
P0_DATAOUT.P3
ALT1
LINE3/TSIN3
SSC
ALT2
SDA_1
IIC
ALT3
CC60_1
CCU6
GPI
P0_DATAIN.P4
ALT1
T2EX_1
ALT2
SCL_0
定时器 T2
IIC
ALT3
SCK_0
SSC
ALT4
–
ALT5
EXINT1_0
SCU
ALT6
CTRAP_1
CCU6
ALT7
TSIN4
LEDTSCU
GPO
P0_DATAOUT.P4
ALT1
LINE4/TSIN4
LEDTSCU
ALT2
SCK_0
SSC
ALT3
EXF2_0
ALT4
SCL_0
定时器 T2
IIC
ALT5
COL0_1
LEDTSCU
ALT6
COL3_2
LEDTSCU
ALT7
COLA_4
LEDTSCU
11-18
V1.1, 2010-09
XC83x
并行端口
表 11-5
P0 口 I/O 功能
端口引脚
I/O
功能选择
连接信号
P0.5
输入
GPI
P0_DATAIN.P5
输出
用户手册
来自 / 送至模块
ALT1
RXD_0
UART
ALT2
MTSR_0
SSC
ALT3
MRST_1
SSC
ALT4
EXINT0_0
SCU
ALT5
–
ALT6
TSIN5
LEDTSCU
GPO
P0_DATAOUT.P5
ALT1
LINE5/TSIN5
ALT2
MTSR_0
SSC
ALT3
COUT62_1
CCU6
ALT4
TXD_4
UART
ALT5
COL1_1
LEDTSCU
ALT6
EXF2_3
定时器 T2
11-19
LEDTSCU
V1.1, 2010-09
XC83x
并行端口
表 11-5
P0 口 I/O 功能
端口引脚
I/O
功能选择
连接信号
P0.6
输入
GPI
P0_DATAIN.P6
ALT1
RXD_1
UART
ALT2
SDA_0
IIC
ALT3
MTSR_1
SSC
ALT4
MRST_0
SSC
ALT5
EXINT0_1
SCU
ALT6
T2EX_0
输出
用户手册
来自 / 送至模块
ALT7
TSIN6
定时器 T2
LEDTSCU
其它
GPO
SPD_1
SPD
P0_DATAOUT.P6
ALT1
LINE6/TSIN6
LEDTSCU
ALT2
MRST_0
SSC
ALT3
TXD_0
UART
ALT4
SDA_0
IIC
ALT5
COL2_1
LEDTSCU
ALT6
COLA_2
LEDTSCU
其它
SPD_1
SPD
11-20
V1.1, 2010-09
XC83x
并行端口
表 11-5
P0 口 I/O 功能
端口引脚
I/O
功能选择
连接信号
P0.7
输入
GPI
P0_DATAIN.P7
ALT1
–
ALT2
SCL_3
ALT3
–
ALT4
–
ALT5
–
ALT6
–
输出
用户手册
来自 / 送至模块
IIC
ALT7
TSIN7
GPO
P0_DATAOUT.P7
LED/TS
ALT1
LINE7/TSIN7
LED/TS
ALT2
TXD_5
UART
ALT3
COUT63_0
CCU6
ALT4
SCL_3
IIC
ALT5
COL3_1
LED/TS
ALT6
COLA_3
LED/TS
11-21
V1.1, 2010-09
XC83x
并行端口
11.2.2
寄存器说明
P0_DATAIN
P0 口数据输入寄存器
RMAP: 0, PAGE: 0
(86H)
复位值:XXH
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rh
rh
rh
rh
rh
rh
rh
rh
符号
位
n
Pn
(n = 0 - 7)
类型
rh
描述
P0 口引脚 n 的数据值
0
P0 口引脚 n 的数据值 = 0
1
P0 口引脚 n 的数据值 = 1
P0_DATAOUT
P0 口数据输出寄存器
RMAP: 0, PAGE: 0
(80H)
复位值:FFH
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
Pn
(n = 0 - 7)
位
n
类型
rw
描述
P0 口引脚 n 的数据值
0
P0 口引脚 n 的数据值 = 0
1
P0 口引脚 n 的数据值 = 1
P0_OD
P0 口漏极开路控制寄存器
RMAP: 0, PAGE: 3
(80H)
复位值:FFH
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
用户手册
11-22
V1.1, 2010-09
XC83x
并行端口
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
P0 口引脚 n 漏极开路模式选择
0
正常模式; 0 和 1 可被有效输出
1
漏极开路模式;只有 0 可被有效输出 (缺省
值)
P0_PUDSEL
P0 口上拉 / 下拉选择寄存器
RMAP: 0, PAGE: 1
(80H)
复位值:EFH
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
P0 口引脚 n 上拉 / 下拉选择
0
选择下拉器件
1
选择上拉器件 (缺省值)
P0_PUDEN
P0 口上拉 / 下拉使能寄存器
RMAP: 0, PAGE: 1
(86H)
复位值:50H
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
P0 口引脚 n 上拉 / 下拉使能
0
禁用上拉或下拉器件
1
使能上拉或下拉器件
注: P0.4 缺省使能下拉器件。在启动程序中 , 由固件切换到使能上拉器件。
用户手册
11-23
V1.1, 2010-09
XC83x
并行端口
P0_ALTSEL0
P0 口复用功能选择寄存器 0
RMAP: 0, PAGE: 2
(80H)
复位值:00H
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
见表 11-6
P0_ALTSEL1
P0 口复用功能选择寄存器 1
RMAP: 0, PAGE: 2
(86H)
复位值:00H
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
见表 11-6
P0_ALTSEL2
P0 口复用功能选择寄存器 2
RMAP: 0, PAGE: 2
(85H)
复位值:00H
7
6
5
4
P7
P6
P5
P4
0
rw
rw
rw
rw
r
用户手册
3
11-24
2
1
0
V1.1, 2010-09
XC83x
并行端口
符号
位
类型
描述
Pn
(n = 4 - 7)
n
rw
见表 11-6
0
[3:0]
r
保留
读取返回 0 ;应写入 0。
表 11-6
位 P0_ALTSEL2.Pn、 P0_ALTSEL1.Pn 和 P0_ALTSEL0.Pn 的功能
P0_ALTSEL2.Pn P0_ALTSEL1.Pn
P0_ALTSEL0.Pn
功能
0
0
0
GPIO (缺省)
0
0
1
选择复用功能 1
0
1
0
选择复用功能 2
0
1
1
选择复用功能 3
1
0
0
选择复用功能 4
1
0
1
选择复用功能 5
1
1
0
选择复用功能 6
1
1
1
选择复用功能 7
用户手册
11-25
V1.1, 2010-09
XC83x
并行端口
11.3
P1 口
P1 口是一个通用双向口。在 XC83x 中, P1.0、 P1.1、 P1.2 和 P1.3 采用大电流双向 A
类端口; P1.4 和 P1.5 采用大电流双向 B 类端口。 P1 口寄存器归纳见表 11-7 。
表 11-7
P1 口寄存器
寄存器缩写名
寄存器全名
P1_DATAOUT
P1 口数据输出寄存器
P1_DATAIN
P1 口数据输入寄存器
P1_OD
P1 口漏极开路控制寄存器
P1_PUDSEL
P1 口上拉 / 下拉选择寄存器
P1_PUDEN
P1 口上拉 / 下拉使能寄存器
P1_ALTSEL0
P1 口复用功能选择寄存器 0
P1_ALTSEL1
P1 口复用功能选择寄存器 1
P1_OCD
P1 口过流检测寄存器
P1_OCPEN
P1 口过流保护使能寄存器
P1_SLEW
P1 口翻转速度控制寄存器
用户手册
11-26
V1.1, 2010-09
XC83x
并行端口
11.3.1
功能
P1 口输入和输出功能归纳见表 11-8。
表 11-8
P1 口 I/O 功能
端口引脚
I/O
功能选择 连接信号
P1.0
输入
GPI
输出
P1.1
输入
输出
用户手册
来自 / 送至模块
P1_DATAIN.P0
ALT 1
RXD_2
UART
ALT 2
T2EX_2
定时器 T2
ALT 3
–
ALT 4
–
ALT 5
EXINT0_2
ALT 6
–
其它
GPO
SPD_2
SCU
SPD
P1_DATAOUT.P0
ALT 1
COL0_0
LEDTSCU
ALT 2
COUT60_0
CCU6
ALT 3
TXD_1
UART
其它
GPI
SPD_2
SPD
P1_DATAIN.P1
ALT 1
–
ALT 2
–
ALT 3
–
ALT 4
–
ALT 5
–
ALT 6
CC60_0
GPO
P1_DATAOUT.P1
ALT 1
COL1_0
LEDTSCU
ALT 2
CC60_0
CCU6
ALT 3
TXD_2
UART
11-27
CCU6
V1.1, 2010-09
XC83x
并行端口
表 11-8
P1 口 I/O 功能
端口引脚
I/O
功能选择 连接信号
P1.2
输入
GPI
P1_DATAIN.P2
ALT 1
–
ALT 2
–
ALT 3
–
ALT 4
–
ALT 5
EXINT4
ALT 6
–
GPO
P1_DATAOUT.P2
输出
P1.3
输入
输出
用户手册
来自 / 送至模块
SCU
ALT 1
COL2_0
LEDTSCU
ALT 2
COUT61_0
CCU6
ALT 3
COUT63_1
CCU6
GPI
P1_DATAIN.P3
ALT 1
–
ALT 2
–
ALT 3
–
ALT 4
–
ALT 5
–
ALT 6
CC61_0
GPO
P1_DATAOUT.P3
ALT1
COL3_0
LEDTSCU
ALT2
CC61_0
CCU6
ALT3
EXF2_2
定时器 T2
11-28
CCU6
V1.1, 2010-09
XC83x
并行端口
表 11-8
P1 口 I/O 功能
端口引脚
I/O
功能选择 连接信号
P1.4
输入
GPI
P1_DATAIN.P4
ALT 1
–
ALT 2
–
ALT 3
–
ALT 4
–
ALT 5
EXINT5
ALT 6
–
输出
P1.5
输入
输出
用户手册
来自 / 送至模块
SCU
GPO
P1_DATAOUT.P4
ALT1
COL4
LEDTSCU
ALT2
COUT62_0
CCU6
ALT3
COUT63_2
CCU6
GPI
P1_DATAIN.P5
ALT 1
–
ALT 2
–
ALT 3
–
ALT 4
–
ALT 5
–
ALT 6
CC62_0
GPO
P1_DATAOUT.P5
ALT1
COL5
CCU6
LEDTSCU
ALT2
CC62_0
CCU6
ALT3
COLA_1
LEDTSCU
11-29
V1.1, 2010-09
XC83x
并行端口
11.3.2
寄存器说明
P1_DATAIN
P1 口数据输入寄存器
RMAP: 0, PAGE: 0
7
(91H)
6
复位值:XXH
5
4
3
2
1
0
0
P5
P4
P3
P2
P1
P0
r
rh
rh
rh
rh
rh
rh
符号
位
类型
描述
Pn
(n = 0 - 5)
n
rh
P1 口引脚 n 的数据值
0
P1 口引脚 n 的数据值 = 0
1
P1 口引脚 n 的数据值 = 1
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
P1_DATAOUT
P1 口数据输出寄存器
RMAP: 0, PAGE: 0
7
6
(90H)
复位值:3FH
5
4
3
2
1
0
0
P5
P4
P3
P2
P1
P0
r
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 5)
n
rw
P1 口引脚 n 的数据值
0
P1 口引脚 n 的数据值 = 0
1
P1 口引脚 n 的数据值 = 1
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
用户手册
11-30
V1.1, 2010-09
XC83x
并行端口
P1_OD
P1 口漏极开路控制寄存器
RMAP: 0, PAGE: 3
7
6
(90H)
复位值:3FH
5
4
3
2
1
0
0
P5
P4
P3
P2
P1
P0
r
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 5)
n
rw
P1 口引脚 n 漏极开路模式选择
0
正常模式; 0 和 1 可被有效输出
1
漏极开路模式;只有 0 可被有效输出 (缺省
值)
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
P1_PUDSEL
P1 口上拉 / 下拉选择寄存器
RMAP: 0, PAGE: 1
7
6
(90H)
复位值:3FH
5
4
3
2
1
0
0
P5
P4
P3
P2
P1
P0
r
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 5)
n
rw
P1 口引脚 n 上拉 / 下拉选择
0
选择下拉器件
1
选择上拉器件 (缺省值)
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
用户手册
11-31
V1.1, 2010-09
XC83x
并行端口
P1_PUDEN
P1 口上拉 / 下拉使能寄存器
RMAP: 0, PAGE: 1
7
6
(91H)
复位值:00H
5
4
3
2
1
0
0
P5
P4
P3
P2
P1
P0
r
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 5)
n
rw
P1 口引脚 n 上拉 / 下拉使能
0
禁用上拉或下拉器件 (缺省值)
1
使能上拉或下拉器件
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
P1_ALTSELx (x = 0 - 1)
P1 口复用功能选择寄存器
RMAP: 0, PAGE: 2
7
6
(90H + x)
复位值:00H
5
4
3
2
1
0
0
P5
P4
P3
P2
P1
P0
r
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 5)
n
rw
见表 11-9
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
表 11-9
位 P1_ALTSEL0.Pn 和 P1_ALTSEL1.Pn 的功能
P1_ALTSEL1.Pn
P1_ALTSEL0.Pn
功能
0
0
GPIO (缺省)
0
1
选择复用功能 1
用户手册
11-32
V1.1, 2010-09
XC83x
并行端口
表 11-9
位 P1_ALTSEL0.Pn 和 P1_ALTSEL1.Pn 的功能
P1_ALTSEL1.Pn
P1_ALTSEL0.Pn
功能
1
0
选择复用功能 2
1
1
选择复用功能 3
P1_SLEW
P1 口翻转速度控制寄存器
7
6
(92H)
5
4
复位值:00H
3
2
1
0
0
P3
P2
P1
P0
r
rw
rw
rw
rw
符号
Pn
(n = 0 - 3)
位
n
类型
rw
描述
0
[7:4]
r
保留
读取返回 0 ;应写入 0。
大电流 P1 口引脚 n 翻转速度控制
0
选择陡变沿。
1
选择缓变沿。
P1_OCPEN
P1 口过电流保护使能寄存器
7
6
5
(92H)
4
复位值:00H
3
2
1
0
0
P3
P2
P1
P0
r
rw
rw
rw
rw
符号
Pn
(n = 0 - 3)
位
n
类型
rwh
描述
0
[7:4]
r
保留
读取返回 0 ;应写入 0。
用户手册
大电流 P1 口引脚 n 过电流保护使能
0
禁用过电流保护。
1
使能过电流保护。
11-33
V1.1, 2010-09
XC83x
并行端口
P1_OCD
P1 口过电流检测寄存器
7
6
(92H)
5
4
P3_OCEN P2_OCEN P1_OCEN P0_OCEN
rw
rw
rw
复位值:00H
3
2
1
0
P3_OCF
P2_OCF
P1_OCF
P0_OCF
rwh
rwh
rwh
rwh
rw
符号
Pn_OCF
(n = 0 - 3)
位
n
类型
rwh
描述
Pn_OCEN
(n = 0 - 3)
y+4
rw
大电流 P1 口引脚 n 过电流中断使能
0
禁止产生过电流中断。
1
使能产生过电流中断。
用户手册
大电流 P1 口引脚 n 过电流检测
0
未产生过电流。向该位写 0 将清除锁存值。
1
检测到过电流。
11-34
V1.1, 2010-09
XC83x
并行端口
11.4
P2 口
P2 口是一个通用单向输入口。在 XC83x 中,P2 口包含 P2.0 - P2.7 共 8 个引脚。P2 寄
存器归纳见表 11-10。
表 11-10
P2 口寄存器
寄存器缩写名
寄存器全名
P2_DATAIN
P2 口数据寄存器
P2_EN
P2 口使能寄存器
P2_PUDSEL
P2 口上拉 / 下拉选择寄存器
P2_PUDEN
P2 口上拉 / 下拉使能寄存器
用户手册
11-35
V1.1, 2010-09
XC83x
并行端口
11.4.1
功能
P2 口输入和输出功能归纳见表 11-11。
表 11-11
P2 口输入功能
端口引脚
I/O
功能选择
连接信号
P2.0
输入
GPI
P2_DATAIN.P0
P2.1
P2.2
用户手册
输入
输入
来自 / 送至模块
ALT 1
CCPOS0_1
CCU6
ALT 2
T12HR_2
CCU6
ALT 3
T13HR_2
CCU6
ALT 4
T2EX_3
定时器 T2
ALT 5
T2_1
ALT 6
EXINT0_3
定时器 T2
SCU
ANALOG
AN0
ADC
GPI
P2_DATAIN.P1
ALT 1
CCPOS1_1
CCU6
ALT 2
RXD_5
UART
ALT 3
MTSR_6
SSC
ALT 4
–
ALT 5
T0_1
ALT 6
EXINT1_1
定时器 T0
SCU
ANALOG
AN1
ADC
GPI
P2_DATAIN.P1
ALT 1
CCPOS2_1
CCU6
ALT 2
T12HR_3
CCU6
ALT 3
T13HR_3
CCU6
ALT 4
SCK_3
SSC
ALT 5
T1_1
ALT 6
EXINT2_0
定时器 T1
SCU
ANALOG
AN2
ADC
11-36
V1.1, 2010-09
XC83x
并行端口
表 11-11
P2 口输入功能
端口引脚
I/O
功能选择
连接信号
P2.3
输入
GPI
P2_DATAIN.P3
ALT 1
CCPOS0_2
CCU6
ALT 2
CTRAP_2
CCU6
ALT 3
–
P2.4
P2.5
用户手册
输入
输入
来自 / 送至模块
ALT 4
–
ALT 5
T2_2
ALT 6
EXINT3
定时器 T2
SCU
ANALOG
AN3
ADC
GPI
P2_DATAIN.P4
ALT 1
–
ALT 2
T12HR_5
CCU6
ALT 3
T13HR_5
CCU6
ALT 4
–
ALT 5
T2_3
ALT 6
–
ANALOG
AN4
GPI
P2_DATAIN.P5
ADC
ALT 1
–
ALT 2
T12HR_7
CCU6
ALT 3
T13HR_7
CCU6
ALT 4
–
ALT 5
–
ALT 6
–
ANALOG
AN5
11-37
ADC
V1.1, 2010-09
XC83x
并行端口
表 11-11
P2 口输入功能
端口引脚
I/O
功能选择
连接信号
P2.6
输入
GPI
P2_DATAIN.P6
ALT 1
–
ALT 2
–
ALT 3
–
P2.7
用户手册
输入
来自 / 送至模块
ALT 4
SCK_2
ALT 5
–
ALT 6
EXINT6
SCU
ANALOG
AN6
ADC
GPI
P2_DATAIN.P7
ALT 1
–
ALT 2
RXD_6
UART
ALT 3
T2EX_6
定时器 T2
ALT 4
MTSR_7
SSC
ALT 5
–
ALT 6
EXINT0_4
SCU
ANALOG
AN7
ADC
11-38
SSC
V1.1, 2010-09
XC83x
并行端口
11.4.2
寄存器说明
P2_DATAIN
P2 口数据寄存器
RMAP: 0, PAGE: 0
(94H)
复位值:XXH
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rh
rh
rh
rh
rh
rh
rh
rh
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rh
P2 口引脚 n 的数据值
0
P2 口引脚 n 的数据值 = 0
1
P2 口引脚 n 的数据值 = 1
P2_EN
P2 口使能寄存器
RMAP: 0, PAGE: 3
(94H)
复位值:00H
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
P2 口引脚 n 的输入驱动器控制
0
使能输入驱动器 (缺省值)
1
禁用输入驱动器
P2_PUDSEL
P2 口上拉 / 下拉选择寄存器
RMAP: 0, PAGE: 1
(93H)
复位值:FFH
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
用户手册
11-39
V1.1, 2010-09
XC83x
并行端口
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
P2 口引脚 n 上拉 / 下拉选择
0
选择下拉器件
1
选择上拉器件 (缺省值)
P2_PUDEN
P2 口上拉 / 下拉使能寄存器
RMAP: 0, PAGE: 1
(94H)
复位值:00H
7
6
5
4
3
2
1
0
P7
P6
P5
P4
P3
P2
P1
P0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 7)
n
rw
P2 口引脚 n 上拉 / 下拉使能
0
禁用上拉或下拉器件 (缺省值)
1
使能上拉或下拉器件
用户手册
11-40
V1.1, 2010-09
XC83x
并行端口
11.5
P3 口
P3 口是一个通用双向口。 P3 口寄存器归纳见表 11-12。
表 11-12
P3 口寄存器
寄存器缩写名
寄存器全名
P3_DATAIN
P3 口数据输入寄存器
P3_DATAOUT
P3 口数据输出寄存器
P3_OD
P3 口漏极开路控制寄存器
P3_PUDSEL
P3 口上拉 / 下拉选择寄存器
P3_PUDEN
P3 口上拉 / 下拉使能寄存器
P3_ALTSEL0
P3 口复用功能选择寄存器 0
P3_ALTSEL1
P3 口复用功能选择寄存器 1
11.5.1
功能
P3 口输入和输出功能归纳见表 11-13。
表 11-13
P3 口 I/O 功能
端口引脚
I/O
功能选择
连接信号
P3.0
输入
GPI
P3_DATAIN.P0
ALT1
–
ALT2
SCL_2
IIC
ALT3
SCK_1
SSC
ALT4
–
ALT5
EXINT2_1
输出
用户手册
来自 / 送至模块
SCU
ALT6
–
GOP
P3_DATAOUT.P0
ALT1
COL6
LED/TS
ALT2
SCK_1
SSC
ALT3
SCL_2
IIC
ANALOG
XTAL4
XTAL 振荡器
11-41
V1.1, 2010-09
XC83x
并行端口
表 11-13
P3 口 I/O 功能
端口引脚
I/O
功能选择
连接信号
P3.1
输入
GPI
P3_DATAIN.P1
ALT1
RXD_4
ALT2
RTCCLK
ALT3
MTSR_4
SSC
ALT4
MRST_4
SSC
ALT5
EXINT0_5
SCU
ALT6
–
输出
P3.2
输入
输出
用户手册
ANALOG
XTAL3
GOP
P3_DATAOUT.P1
来自 / 送至模块
UART
XTAL 振荡器
ALT1
COLA_0
LED/TS
ALT2
MTSR_4
SSC
ALT3
EXF2_1
定时器 T2
GPI
P3_DATAIN.P2
ALT1
RXD_3
UART
ALT2
SDA_2
IIC
ALT3
MTSR_5
SSC
ALT4
MRST_5
SSC
ALT5
EXINT0_6
SCU
ALT6
T2EX_7
其它
GOP
SPD_0
定时器 T2
SPD
P3_DATAOUT.P2
ALT1
TXD_3
UART
ALT2
MRST_5
SSC
ALT3
SDA_2
IIC
其它
SPD_0
SPD
11-42
V1.1, 2010-09
XC83x
并行端口
11.5.2
寄存器说明
P3_DATAIN
P3 口数据输入寄存器
RMAP: 0, PAGE: 0
7
(C9H)
6
符号
Pn
(n = 0 - 2)
0
5
4
2
1
0
0
P2
P1
P0
r
rh
rh
rh
类型
rh
描述
[7:3]
r
保留
读取返回 0 ;应写入 0。
P3 口引脚 n 的数据值
0
P3 口引脚 n 的数据值 = 0
1
P3 口引脚 n 的数据值 = 1
(C8H)
6
5
1
0
0
P2
P1
P0
r
rw
rw
rw
位
n
类型
rw
0
[7:3]
r
4
复位值:07H
2
符号
Pn
(n = 0 - 2)
用户手册
3
位
n
P3_DATAOUT
P3 口数据输出寄存器
RMAP: 0, PAGE: 0
7
复位值:XXH
3
描述
P3 口引脚 n 的数据值
0
P3 口引脚 n 的数据值 = 0
1
P3 口引脚 n 的数据值 = 1
保留
读取返回 0 ;应写入 0。
11-43
V1.1, 2010-09
XC83x
并行端口
P3_OD
P3 口漏极开路控制寄存器
RMAP: 0, PAGE: 3
7
6
(C8H)
5
4
复位值:07H
3
2
1
0
0
P2
P1
P0
r
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 2)
n
rw
P3 口引脚 n 漏极开路模式选择
0
正常模式; 0 和 1 可被有效输出
1
漏极开路模式;只有 0 可被有效输出 (缺省
值)
0
[7:3]
r
保留
读取返回 0 ;应写入 0。
P3_PUDSEL
P3 口上拉 / 下拉选择寄存器
RMAP: 0, PAGE: 1
7
6
5
(C8H)
4
复位值:07H
3
2
1
0
0
P2
P1
P0
r
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 2)
n
rw
P3 口引脚 n 上拉 / 下拉选择
0
选择下拉器件
1
选择上拉器件 (缺省值)
0
[7:3]
r
保留
读取返回 0 ;应写入 0。
用户手册
11-44
V1.1, 2010-09
XC83x
并行端口
P3_PUDEN
P3 口上拉 / 下拉使能寄存器
RMAP: 0, PAGE: 1
7
6
(C9H)
5
4
复位值:07H
3
2
1
0
0
P2
P1
P0
r
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 2)
n
rw
P3 口引脚 n 上拉 / 下拉使能
0
禁用上拉或下拉器件
1
使能上拉或下拉器件 (缺省值)
0
[7:3]
r
保留
读取返回 0 ;应写入 0。
P3_ALTSELx(x = 0 - 1)
P3 口复用功能选择寄存器
RMAP: 0, PAGE: 2
7
6
(C8H+x)
5
4
复位值:00H
3
2
1
0
0
P2
P1
P0
r
rw
rw
rw
符号
位
类型
描述
Pn
(n = 0 - 2)
n
rw
见表 11-14
0
[7:3]
r
保留
读取返回 0 ;应写入 0。
表 11-14
位 P3_ALTSEL0.Pn 和 P3_ALTSEL1.Pn 的功能
P3_ALTSEL1.Pn
P3_ALTSEL0.Pn
功能
0
0
GPIO
0
1
选择复用功能 1
用户手册
11-45
V1.1, 2010-09
XC83x
并行端口
表 11-14
位 P3_ALTSEL0.Pn 和 P3_ALTSEL1.Pn 的功能
P3_ALTSEL1.Pn
P3_ALTSEL0.Pn
功能
1
0
选择复用功能 2
1
1
选择复用功能 3
用户手册
11-46
V1.1, 2010-09
XC83x
乘法 / 除法单元
12
乘法 / 除法单元
12.1
概述
乘法 / 除法单元(MDU)具有快速 16 位乘法、16 位和 32 位除法功能以及移位和归一化
特性。集成 MDU 的 XC83x 内核支持需要进行快速数学计算的实时控制应用。
MDU 共使用 14 个寄存器,其中 12 个寄存器用于数据处理; 1 个寄存器用于控制 MDU
操作; 1 个寄存器用于存储状态标志。和其它用于外设控制的寄存器一样,这些寄存器
被映射为特殊功能寄存器。 MDU 操作不依赖于 CPU、与 CPU 同时工作。
特性
·
·
·
·
·
·
快速有符号 / 无符号 16 位乘法
快速有符号 / 无符号 32 位除以 16 位和 16 位除以 16 位操作
带有一次左移操作的有符号 16 位乘法 (支持定点数计算,格式为 Q15)
带有一次右移操作的有符号 32 位除以 16 位除法 (支持定点数计算,格式为 Q15)
32 位无符号归一化操作
32 位算术 / 逻辑移位操作
用户手册
MDU, V2.9
12-1
V1.1, 2010-09
XC83x
乘法 / 除法单元
表 12-1 给出各种操作中计算所需的时钟周期数。
表 12-1
MDU 操作特性参数
操作
结果
余数
计算所需时钟周期数
有符号 32 位 /16 位
32 位
16 位
33
带有一次右移操作的
有符号 32 位 /16 位
32 位
16 位
33
有符号 16 位 /16 位
16 位
17
有符号 16 位× 16 位
32 位
16 位
–
16
带有一次左移操作的
有符号 16 位× 16 位
32 位
–
16
无符号 32 位 /16 位
32 位
16 位
32
无符号 16 位 /16 位
16 位
16
无符号 16 位 /16 位
16
32 位归一化
32 位
–
16 位
–
–
移位次数 +1 (最大 32)
32 位左移 / 右移
–
–
移位次数 +1 (最大 32)
12.2
系统信息
本节给出 MDU 的相关系统信息。
12.2.1
时钟配置
MDU 由 FPCLK 提供时钟,它以 48 MHz 的固定频率工作。
如果完全不需要 MDU 功能,可关闭其输入时钟禁止该模块工作,最大限度降低功耗。这
可通过置位寄存器 PMCON1 中的位 MDU_DIS 来实现。
在访问 PMCON1 寄存器之前必须先对 SCU_PAGE 寄存器中的位域 PAGE 进行设置。
PMCON1
外设管理控制寄存器 1
RMAP: 0, PAGE: 1
7
6
IIC_DIS
LTS_DIS
rw
rw
用户手册
MDU,V2.9
(EFH)
5
4
CDC_DIS MDU_DIS
rw
rw
12-2
复位值:FFH
3
2
1
0
T2_DIS
CCU_DIS
SSC_DIS
ADC_DIS
rw
rw
rw
rw
V1.1, 2010-09
XC83x
乘法 / 除法单元
符号
位
类型
描述
MDU_DIS
4
rw
MDU 禁用请求位,高电平有效
0
MDU 正常工作
1
请求禁用 MDU (缺省)
12.2.2
中断事件及分配
由 MDU 产生的中断事件以及相应的事件中断使能位和标志位归纳见表 12-2。
表 12-2
MDU 中断事件
中断事件
中断事件使能位
事件标志位
计算结束
MDUCON.IE
MDUSTAT.IRDY
MDUSTAT.IERR
出错
表 12-3 给出 MDU 中断源的中断节点分配。
表 12-3
MDU 事件的中断节点控制
中断事件
中断节点使能位
中断节点标志位
向量地址
计算结束
IEN1.EX2
–
43H
出错
12.3
功能说明
可将 MDU 视作一个特殊的乘法、除法、归一化和移位操作的协处理器。其操作可分为 3
个阶段 (见图 12-1):
阶段 1:加载 MDx 寄存器
在该阶段, CPU 将操作数载入 MDU 操作数寄存器 (MDx)。
向位域 MDUCON.OPCODE 写入代表所需操作的 4 位操作码,选择 MDU 要执行的计算
类型。
阶段 2:执行计算
只有在启动位 MDUCON.START 置位的情况下,才进入该阶段,紧接着忙碌标志置位。
下一个周期启动位被自动清零。
在该阶段, MDU 独立工作,其操作和 CPU 并行进行。该阶段结束时,计算结果存储在
MDU 结果寄存器 (MRx)中。
用户手册
MDU, V2.9
12-3
V1.1, 2010-09
XC83x
乘法 / 除法单元
阶段 3:从 MRx 寄存器中读取结果
在该最后阶段,CPU 从 MRx 寄存器中取出计算结果。进入下一个计算阶段时 MRx 寄存
器将被重写。
第一次
写操作
阶段 1
加载寄存器
置位
起始位
第一次
读操作
阶段 2
计算
最后一次
读操作
阶段 3
读寄存器
时间
图 12-1
12.3.1
MDU 的操作阶段
除法操作
MDU 支持截断除法操作,这是现代处理器中的通行做法,同时符合 ISO C99 标准。截断
除法操作中除法和取模运算的关系如下:
如果 q = D div d
且 r = D mod d
则 D = q * d + r
且 | r | < | d |
其中 “D”是被除数、“d”是除数、“q”是商、“r”是余数。
截断除法操作将商向零舍入(负向舍入),余数的符号总是和被除数的符号一致,即 sign
(r) = sign (D)。
12.3.2
归一化
MDU 支持高达 32 位无符号数的归一化操作。
对保存在 MD0 (最低有效字节)到 MD3 (最高有效字节)中的无符号 32 位变量进行归
一化。该特性主要用来支持使用浮点算术运算的应用。在归一化过程中,通过左移操作
用户手册
MDU,V2.9
12-4
V1.1, 2010-09
XC83x
乘法 / 除法单元
将寄存器 MD0 到 MD3 中无符号 32 位变量前面所有的 0 除去。当 MSB (最高有效位)
为 1 时整个操作完成。
归一化后,位域 MR4.SCTR 中包含进行左移操作的次数,该值将来可作为指数。归一化
操作中最多移位次数为 31 (= 25-1)。
12.3.3
移位
MDU 支持高达 32 位无符号和有符号数的逻辑和算术移位。
逻辑移位时,从寄存器 MD3 的左端或者 MD0 的右端移入 0 ;算术左移等同于逻辑左移,
但是算术右移时,符号位从 MD3 的左端移入。举例如下,如果对数据 0101B 和 1010B 进
行一次算术右移,相应的结果为 0010B 和 1101B。
对于任何移位操作,寄存器位 MD4.SLR 指定移位方向, MD4.SCTR 指定移位次数。
注: MDU 不检测因算术左移操作而引起的溢出。用户必须确保算术左移的结果始终在
MDU 边界值之内。
12.3.4
带有一次左移操作的乘法
带有一次左移操作的乘法和有符号 16 位乘法运算相似,不同在于前者在完成乘法运算
后, MDU 会对乘积进行一位的算数左移。
MDU 的这种操作有助于 Q151) 格式的有符号定点数的乘法运算。两个 Q15 数据的乘积
为一个 Q1.30 定点数。对该乘积进行一位算数左移,将产生一个 Q31 数,取 32 位数的
高 16 位即可得到格式为 Q15 的乘积。
12.3.5
带有一次右移操作的除法
带有一次右移操作的除法和 32 位除以 16 位的运算相似,不同在于前者在进行除法运算
之前先完成一位的算数右移。
MDU 的这种操作有助于 Q15 格式的有符号 16 位和 16 位定点数的除法运算。一般情况
下,要除一个 Q15 的定点数得到一个 Q15 的商,在进行 32 位除以 16 位的运算之前,需
要先将被除数由 215 的因子按比例放大。
用户程序可将 16 位被除数写入 32 位操作数 (数据)寄存器的高两字节,然后选择带有
一次右移操作的除法运算来完成同样的功能。
12.3.6
忙碌标志
忙碌标志指示 MDU 正在进行计算。 MDUSTAT.BSY 在计算开始时置位,在阶段 2 结束
时清零。错误标志被置位时,忙碌标志也被清零。
若需要执行新的计算,首先查询忙碌标志,只有当其不被置位时,才能置位启动位,开
始新的计算。若忙碌标志仍被置位,对启动位的任何写操作将被忽略。
1) Qx.y 是定点数的一种表示形式, 其中的 x 表示这个定点数位数的整数部分 (缺省为 0), y 则代表小数部分。
符号位不在这种表示形式的考虑范围内。
用户手册
MDU, V2.9
12-5
V1.1, 2010-09
XC83x
乘法 / 除法单元
12.3.7
检错
错误标志 MDUSTAT.IERR 指示计算过程出现了错误。当出现下列任一种情况时,由硬
件置位该标志:
· 除数为 0
· 将保留操作码写入 MDUCON 寄存器
置位错误标志将中止当前操作、触发中断 (见章节 12.4)。除数为 0 的操作不会立即置
位错误标志,而是在除法操作的计算阶段结束时置位错误标志; MDUCON.START 置 1
后可检测到操作码错误。除数为 0 引起的错误会将一个饱和值载入 MRx 寄存器中。
注: 错误标志被置位时,MDU 模块不能保证任何结果的准确性。因此不应使用该结果。
12.4
中断产生
MDU 的中断结构如图 12-2 所示。MDU 可产生两种中断事件,每种中断事件置位一个中
断标志。中断标志由软件清零。
阶段 2 结束时,中断标志 MDUSTAT.IRDY 由硬件置位,指示成功完成了一次计算。可
从寄存器 MRx 中读取结果。中断线 INT_O0 直接分配给该中断源。
计算过程出现错误时,也能产生中断,置位中断标志 MDUCON.IERR 来指示发生错误中
断。除数为 0 时,只有在计算阶段结束时才置位 MDUCON.IERR。一旦 MDUCON.IERR
被置位,将中止任何正在执行的计算。除数为 0 时,会将一个饱和值载入 MRx 寄存器
中。由位 MDUCON.IR 选择分配给该错误中断源的中断线。
只有当中断使能位 MDUCON.IE 置位且发生相应的中断事件时,才会产生中断。中断请
求信号将保持 2 个 CCLK 时钟周期的高电平。
int _reset _SW
复位
IRDY
置位
完成计算
&
至 INT_O0
IE
至 INT_O1
&
出现错误
置位
int _reset _SW
图 12-2
用户手册
MDU,V2.9
复位
IR
IERR
中断产生
12-6
V1.1, 2010-09
XC83x
乘法 / 除法单元
12.5
寄存器说明
从标准 (非映射) SFR 区访问 MDU SFR,这些 SFR 和相应的地址归纳见表 12-4。
表 12-4
寄存器映射
SFR
地址
寄存器名
MDU_MDUCON
B1H
MDU 控制寄存器
MDU_MDUSTAT
B0H
MDU 状态寄存器
MDU_MD0/MR0
B2H
MDU 数据 / 结果寄存器 0
MDU_MD1/MR1
B3H
MDU 数据 / 结果寄存器 1
MDU_MD2/MR2
B4H
MDU 数据 / 结果寄存器 2
MDU_MD3/MR3
B5H
MDU 数据 / 结果寄存器 3
MDU_MD4/MR4
B6H
MDU 数据 / 结果寄存器 4
MDU_MD5/MR5
B7H
MDU 数据 / 结果寄存器 5
MDx 和 MRx 寄存器共用相同的地址。由于不能对 MRx 寄存器进行写操作,因此,对这
些地址进行的写操作都视作在对 MDx 寄存器进行写操作。
执行读操作时,需要通过位MDUCON.RSEL来选择是读取寄存器MDx还是寄存器MRx。
缺省读取寄存器 MRx。
MDU 的 14 个 SFR 包括一个控制寄存器 MDUCON、一个状态寄存器 MDUSTAT 和两组
数据寄存器:MD0 到 MD5 (包含操作数)和 MR0 到 MR5 (包含计算结果)。
操作类型不同,每个 MDx 和 MRx 寄存器的作用不同,归纳见表 12-5 和表 12-6。例如在
乘法运算中, 16 位乘数的低字节必须写入 MD4,高字节写入 MD5。
表 12-5
MDx 寄存器
寄存器
寄存器在操作中的作用
32/16 位除法
16/16 位除法
归一化和移位
MD0
16 位乘法
M’andL
D’endL
D’endL
OperandL
MD1
M’andH
D’end
D’endH
Operand
MD2
–
D’end
–
Operand
MD3
–
D’endH
–
OperandH
MD4
M’orL
D’orL
D’orL
MD5
M’orH
D’orH
D’orH
控制
–
用户手册
MDU, V2.9
12-7
V1.1, 2010-09
XC83x
乘法 / 除法单元
表 12-6
MRx 寄存器
Register
寄存器在操作中的作用
16 位乘法
32/16 位除法
16/16 位除法
归一化和移位
MR0
PrL
QuoL
QuoL
ResultL
MR1
Pr
Quo
QuoH
Result
MR2
Pr
Quo
–
Result
MR3
PrH
QuoH
–
ResultH
MR4
M’orL
RemL
RemL
MR5
M’orH
RemH
RemH
控制
–
缩写:
·
·
·
·
·
·
·
·
·
D’end:被除数,除法运算的第一个操作数
D’or:除数,除法运算的第二个操作数
M’and:被乘数,乘法运算的第一个操作数
M’or:乘数,乘法运算的第二个操作数
Pr:积,乘法运算的结果
Rem:余数
Quo:商,除法运算的结果
...L:该字节为 16 位或 32 位操作数的低有效字节
...H:该字节为 16 位或 32 位操作数的高有效字节
MDx 寄存器具有映射寄存器,在计算开始时将数据从实际寄存器锁存到映射寄存器中,
从而使得在进行当前计算的同时,可以将下一组操作数写入 MDx 寄存器。
操作中未用到的 MDx 和 MRx 寄存器对用户来说是未被定义的。对于归一化和移位操作,
寄存器 MD4 和 MR4 用作移位输入和输出控制寄存器,它们规定移位方向并保存已执行
的移位操作的次数。
12.5.1
操作数和结果寄存器
MDx 和 MRx 寄存器用来存储操作数和计算结果。MD4 和 MR4 还用做移位和归一化操作
的输入输出控制寄存器。
用户手册
MDU,V2.9
12-8
V1.1, 2010-09
XC83x
乘法 / 除法单元
MDU_MDx (x = 0 - 5)
MDU 数据寄存器 x [ 操作数 ]
RMAP: 0, PAGE: X
7
6
5
(B2H + x * 1)
4
3
复位值:00H
2
1
0
DATA
rw
符号
位
类型
描述
DATA
[7:0]
rw
操作数
见 表 12-5。
MDU_MRx (x = 0 - 5)
MDU 数据寄存器 x [ 结果 ]
RMAP: 0, PAGE: X
7
6
(B2H + x * 1)
5
4
3
复位值:00H
2
1
0
DATA
rh
符号
位
类型
描述
DATA
[7:0]
rh
计算结果
见表 12-6。
MDU_MD4
移位输入控制寄存器
RMAP: 0, PAGE: X
7
6
(B6H)
5
4
复位值:00H
3
2
0
SLR
SCTR
rw
rw
rw
用户手册
MDU, V2.9
12-9
1
0
V1.1, 2010-09
XC83x
乘法 / 除法单元
符号
位
类型
描述
SCTR
[4:0]
rw
移位计数器
写入 SCTR 的计数值决定一次移位操作要执行的移
位次数。
SLR
5
rw
移位方向
0B
选择左移位
1B
选择右移位
0
[7:6]
rw
保留
应写入 0,读取将返回未定义的数据。
MDU_MR4
移位输出控制寄存器
RMAP: 0, PAGE: X
7
6
(B6H)
5
4
复位值:00H
3
2
1
0
SCTR
rh
rh
0
符号
位
类型
描述
SCTR
[4:0]
rw
移位计数器
一次归一化操作之后, SCTR 中包含所执行的归一
化移位操作的次数。
0
[7:5]
rh
保留
应写入 0,读取将返回未定义的数据。
12.5.2
控制寄存器
寄存器 MDUCON 选择操作类型并控制相应操作的启动。
MDU_MDUCON
MDU 控制寄存器
RMAP: 0, PAGE: X
(B1H)
复位值:00H
7
6
5
4
IE
IR
RSEL
START
OPCODE
rw
rw
rw
rwh
rw
用户手册
MDU,V2.9
3
12-10
2
1
0
V1.1, 2010-09
XC83x
乘法 / 除法单元
符号
位
类型
描述
OPCODE
[3:0]
rw
操作码
0000B 无符号 16 位乘法
0001B 无符号 16 位 /16 位除法
0010B 无符号 32 位 /16 位除法
0011B 32 位逻辑左 / 右移
0100B 有符号 16 位乘法
0101B 有符号 16 位 /16 位除法
0110B 有符号 32 位 /16 位除法
0111B 32 位算术左 / 右移
1000B 32 位归一化操作
1001B 带有一次左移操作的有符号 16 位乘法
1010B 带有一次右移操作的有符号 32 位 /16 位除法
其它:保留
START
4
rwh
启动位
START 由软件置位、硬件复位。
0B
未开始执行操作
开始执行操作
1B
RSEL
5
rw
读选择
0B
读取 MRx 寄存器
1B
读取 MDx 寄存器
IR
6
rw
中断线选择
0B
两个中断源各有专用的中断线
1B
两个中断源共用一条中断线 INT_O0
IE
7
rw
中断使能
禁止中断
0B
1B
使能中断
注: 在计算阶段,当忙碌标志 MDUSTAT.BSY 置位时,不允许对 MDUCON 进行写操
作。
注: 若 MDUCON.START 置 1,向 MDUCON 寄存器的操作码位域写入保留值将会导
致出错。
用户手册
MDU, V2.9
12-11
V1.1, 2010-09
XC83x
乘法 / 除法单元
12.5.3
状态寄存器
寄存器 MDUSTAT 中存放 MDU 的状态标志。
MDU_MDUSTAT
MDU 状态寄存器
RMAP: 0, PAGE: X
7
6
(B0H)
5
4
复位值:00H
3
2
1
0
0
BSY
IERR
IRDY
r
rh
rwh
rwh
符号
位
类型
描述
IRDY
0
rwh
计算结果准备就绪中断
IRDY 位由硬件置位、软件复位。
成功执行操作后不触发中断
0B
成功执行操作后触发中断
1B
IERR
1
rwh
错误中断
IERR 位由硬件置位、软件复位。
0B
出现错误时不触发中断
出现错误时触发中断
1B
BSY
2
rh
忙碌标志
0B
MDU 未进行计算
MDU 仍在进行计算
1B
0
[7:3]
r
保留
读操作返回 0,应写入 0。
用户手册
MDU,V2.9
12-12
V1.1, 2010-09
XC83x
CORDIC 协处理器
13
CORDIC 协处理器
本章将对 CORDIC 协处理器予以说明。
13.1
概述
这里仅对 CORDIC 协处理器的特性予以说明,不涉及 CORDIC 算法的理论背景。
CORDIC 算法是计算三角 (圆)函数、线性函数、双曲函数及其它相关函数的非常有用
的收敛算法。该算法不仅支持欧几里德平面中的向量旋转,还支持线性和双曲面中的向
量旋转。
CORDIC 算法是一个迭代过程,其截断误差是固有误差。每次计算进行 16 次迭代、内核
数据宽度至少为 20 位时,CORDIC 协处理器可达到更高的精度。和其它复杂算法相比,
该算法的主要优点在于硬件开销较低。
一般 CORDIC 算法对应如下 CORDIC 方程。因子 m 控制向量旋转并选择圆函数 (三角
函数)、线性和双曲函数相对应的角度设置:
xi+1 = xi - m · di · yi · 2-i
(13.1)
yi+1 = yi + di · xi · 2-i
(13.2)
zi+1 = zi - di · ei
(13.3)
其中:
m = 1 圆函数 (基本 CORDIC 功能), ei = atan(2-i)
m = 0 线性函数,ei = 2-i
m = -1 双曲函数,ei = atanh(2-i)
在本文档中, CORDIC 数据使用下列术语:
· 结果数据:CORDIC 计算结束时,最终的结果数据 (位 BSY 不再有效)
· 计算数据:CORDIC 迭代的中间数据或最后一次迭代的数据
· 初始数据:第一次 CORDIC 迭代所使用的数据,通常是用户初始化数据
特性
CORDIC 协处理器的主要特性如下:
· 操作模式
– 支持所有 CORDIC 操作模式,可用来解圆(三角)函数、线性(乘 - 加,除 - 加)
函数和双曲函数
– 所有操作模式都集成有相应的查找表 (LUT)
· 圆函数向量模式:求解角度和幅值时,X 和 Y 的初始值可扩展在 [-215,(215-1)] 之间取值
· 圆函数旋转模式:Z 的初始值可扩展在 [-215,(215-1)] 之间取值,对应求解三角函数时
角度在 [-π,((215-1)/215)π] 之间取值
· 可通过门控时钟信号关闭模块
· 16 位数据访问宽度
用户手册
CORDIC 协处理器 , V1.2.5
13-1
V1.1, 2010-09
XC83x
CORDIC 协处理器
·
·
·
·
·
·
·
– X、 Y 内核数据包含 24 位数据外加 2 位溢出位
– Z 内核数据包含 20 位数据外加 1 位溢出位
– KEEP 位,上次的计算结果保留在内核寄存器中用于新的计算
每次计算进行 16 次迭代:从置位启动位 (ST)到置位计算结束 (EOC)标志,最
多需要 41 个时钟周期,其中不包括读写数据字节占用的时间。
数据处理采用 2 补码
– 只有一种例外情况:用户可将 X 结果数据设定为无符号数
X 和 Y 数据通常被当作是整数或有理数, X 和 Y 的数据格式必须一致
LUT 入口数据是 20 位有符号整数
– atan 和 atanh LUT 入口数据是角度值的整数表示(S19),按比例因子调整后由整
数 [-215,(215-1)] 代表角度 [-π,((215-1)/215)π]
– 圆函数和双曲函数可访问的 Z 的结果数据是整数,数据格式为 S15
线性函数的仿真 LUT
– 数据格式为 1 位整数和 15 位小数位 (1.15)
– 线性函数可访问的 Z 的结果数据是有理数,固定数据格式 S4.11 (有符号 4Q16)
截断误差
– 因为 LSB 被截断, CORDIC 的计算结果可能返回一个近似值
– CORDIC 计算结果精度高 (尤其在圆函数模式中)
中断
– 计算结束产生中断
– 中断使能和相应的中断标志
13.2
系统信息
本节给出 CORDIC 协处理器的相关系统信息。
13.2.1
时钟配置
CORDIC 协处理器由 FPCLK 提供时钟,它以 48 MHz 的固定频率工作。
如果完全不需要 CORDIC 协处理器功能,可关闭其输入时钟禁止该模块工作,最大限度
降低功耗。这可通过置位寄存器 PMCON1 中的位 CDC_DIS 来实现。
13.2.1.1 外设管理控制寄存器 1
PMCON1
外设管理控制寄存器 1
RMAP:0, PAGE:1
7
6
IIC_DIS
LTS_DIS
rw
rw
(EFH)
5
4
CDC_DIS MDU_DIS
用户手册
CORDIC 协处理器 ,V1.2.5
rw
rw
13-2
复位值:FFH
3
2
1
0
T2_DIS
CCU_DIS
SSC_DIS
ADC_DIS
rw
rw
rw
rw
V1.1, 2010-09
XC83x
CORDIC 协处理器
符号
位
类型
描述
CDC_DIS
5
rw
CORDIC 禁用请求位,高电平有效
0
CORDIC 正常工作
1
请求禁用 CORDIC (缺省)
13.2.2
中断事件及分配
由 CORDIC 协处理器产生的中断事件以及相应的事件中断使能位和标志位归纳见
表 13-1。
表 13-1
CORDIC 协处理器 中断事件
中断事件
中断事件使能位
事件标志位
计算结束
STATC.INT_EN
STATC.EOC
表 13-2 给出 CORDIC 协处理器中断源的中断节点分配。
表 13-2
CORDIC 协处理器事件的中断节点控制
中断事件
中断节点使能位
中断节点标志位
向量地址
计算结束
IEN1.EX2
–
43H
用户手册
CORDIC 协处理器 , V1.2.5
13-3
V1.1, 2010-09
XC83x
CORDIC 协处理器
13.3
功能描述
以下各节将描述 CORDIC 协处理器的功能。
13.3.1
CORDIC 协处理器的操作
CORDIC 协处理器可工作在旋转模式或向量模式下,用来计算圆 (三角)函数、线性
(乘 - 加,除 - 加)函数或者双曲函数。通过 CD_CON 控制寄存器进行工作模式选择。
清零寄存器 CD_CON 中的 KEEP 位,可初始化内核数据寄存器。如果 ST_MODE = 1,
置位 ST 将启动新的计算;否则,在缺省状态 ST_MODE = 0 下,对寄存器 CD_CORDXL
执行写操作之后会自动启动新的计算。每次计算的迭代次数固定为 16 次,计算过程中
BSY 置位,指示处于忙碌状态。计算结束后该忙碌标志由硬件清零。
CORDIC 计算的第一步(假如相应的 KEEP 未被置位),将数据寄存器 CD_CORDxL 和
CD_CORDxH 中的初始值载入内核数据寄存器中。在计算过程中,内核数据寄存器中总
是保存最新的中间数据;计算完成后,它们保存结果数据。
数据寄存器 CD_CORDxL 和 CD_CORDxH 是映射寄存器,可在运算过程中被写入而不
会影响正常运算。只有在有效设置ST或当ST_MODE = 0时,对X的低字节CD_CORDXL
执行写操作之后 (假如相应的 KEEP 未被置位),映射寄存器中的值才能被传送到内核
数据寄存器中。必须在一次计算结束后 (BSY 不再有效)、新的计算开始之前读取结果
数据。若位 CD_STATC.DMAP = 0,将直接从内核数据寄存器中读取结果数据。内核数
据直接送到总线上,因而作为映射寄存器的数据寄存器在该操作期间不会被覆盖 (改
写)。若位 CD_STATC.DMAP = 1,将读取映射寄存器的内容,尽管只能读出用户定义
的初始化数据。
每次计算结束后,CD_STATC.BSY 返回 0,计算结束(EOC)标志被置位,若 INT_EN
= 1,中断被使能,中断请求信号被激活。检查 X、 Y 和 Z 的结果数据,若有数据溢出,
ERROR 位被置位。开始新的计算、或在读取 ERROR 之后,该标志位被自动清零。
开始新的计算时,内核数据寄存器不会再保存前一次的计算结果,而将始终保存计算的
初始值、或上一次 CORDIC 迭代的 (中间)结果。
在运算过程中、 BSY 置位时,置位 ST 无效。必须在 BSY 失效后一段时间、位 ST 再次
被置位才能启动新的计算。同样地,在运算期间 (由位 BSY 指示)改变工作模式的操作
无效。
13.3.2
结果数据归一化
CORDIC 协处理器在所有操作模式下都将返回归一化的 X 和 Y 结果数据,计算公式如下:
CORDIC 计算数据
X 或 Y 的结果数据 =
MPS
另一方面,对于 Z 结果数据的解释有所不同,这由所使用的 CORDIC 函数决定:
用户手册
CORDIC 协处理器 ,V1.2.5
13-4
V1.1, 2010-09
XC83x
CORDIC 协处理器
对于线性函数, CORDIC 计算得到的 Z 数据无需额外处理,从而可直接当作结果数据。
可访问的 Z 的结果数据为实数,格式为有符号 4Q16。
对于圆函数和双曲函数,可访问的Z的结果数据是一个归一化的整数值,由整数[-215,(2151)] 代表角度范围 [-π,((215-1)/215)π]。 CORDIC 协处理器按照如下比例关系调整 Z 数据:
32768
输入 Z 的初始值 = 实数 Z 的初始值(以弧度为单位) x
实数 Z 结果数据 (以弧度为单位) = Z 结果数据 x
π
π
32768
CORDIC 计算结果数据包含一个固有的、由旋转模式或者向量模式引起的增益因子 K。
每种 CORDIC 函数对应的 K 值不同,如表 13-3 所示。
表 13-3
CORDIC 函数结果数据的固有增益因子
函数
圆函数
增益 K 的近似值
1.64676
双曲函数
0.828
线性函数
1
13.3.3
CORDIC 协处理器操作模式
表 13-4 给出CORDIC协处理器的一般操作模式。该表中的X、Y和Z代表初始值; Xfinal、
Yfinal 和 Zfinal 代表计算结束, BSY 失效后的最终结果数据。
CORDIC 方程如下:
xi+1 = xi - m · di · yi · 2-i
(13.4)
yi+1 = yi + di · xi · 2-i
(13.5)
zi+1 = zi - di · ei
(13.6)
表 13-4
函数
CORDIC 协处理器操作模式和对应的结果数据
旋转模式
di = sign (zi), zi→0
用户手册
CORDIC 协处理器 , V1.2.5
向量模式
di = -sign (yi), yi→0
13-5
V1.1, 2010-09
XC83x
CORDIC 协处理器
表 13-4
函数
圆函数
m=1
ei = atan(2-i)
CORDIC 协处理器操作模式和对应的结果数据
旋转模式
Xfinal = K[X cos(Z) - Y sin(Z)] / MPS
Yfinal = K[Y cos(Z) + X sin(Z)] / MPS
Zfinal = 0
其中 K ≈ 1.64676
向量模式
Xfinal = K sqrt(X2+Y2) / MPS
Yfinal = 0
Zfinal = Z + atan(Y / X)
其中 K ≈ 1.64676
解 cos(Z) 和 sin(Z),
设置 X = 1 / K, Y = 0
可用定义域:由于采用了预处理逻
辑,所以 X、Y 和 Z 可全域取值。
解向量幅值 (sqrt(x2+y2)),
设置 X = x / K, Y = y / K
可用定义域:由于采用了预处理和
后处理逻辑,所以 X 和 Y 可全域
取值。
解 atan(Y / X),设置 Z = 0
可用定义域:X 和 Y 全域取值, X
= 0 除外 。
线性函数
m=0
ei = 2-i
关系:
tan(v) = sin(v) / cos(v)
关系:
acos(w) = atan[sqrt(1-w2) / w]
asin(w) = atan[w / sqrt(1-w2)]
Xfinal = X / MPS
Yfinal = [Y + X Z] / MPS
Zfinal = 0
Xfinal = X / MPS
Yfinal = 0
Zfinal = Z + Y / X
解 X · Z,设置 Y = 0
可用定义域:|Z| ≤ 2
解 Y / X,设置 Z = 0
可用定义域:|Y / X| ≤ 2, X > 0
用户手册
CORDIC 协处理器 ,V1.2.5
13-6
V1.1, 2010-09
XC83x
CORDIC 协处理器
表 13-4
CORDIC 协处理器操作模式和对应的结果数据
函数
旋转模式
Xfinal = k[X cosh(Z) - Y sinh(Z)] /
双曲函数
m = -1
MPS
ei = atanh(2-i) Yfinal = k[Y cosh(Z) + X sinh(Z)] /
MPS
Zfinal = 0
其中 k ≈ 0.828
解 cosh(Z) 、 sinh(Z) 和 eZ,
设置 X = 1 / k, Y = 0
可用定义域:|Z| ≤ 1.11rad, Y = 0
向量模式
Xfinal = k sqrt(X2-Y2) / MPS
Yfinal = 0
Zfinal = Z + atanh(Y / X)
其中 k ≈ 0.828
解 sqrt(x2-y2),
设置 X = x / k, Y = y / k
可用定义域:|y| < |x|, X > 0
解 atanh(Y / X),设置 Z = 0
可用定义域:
|atanh(Y / X)| ≤ 1.11rad, X > 0.
关系:
tanh(v) = sinh(v) / cosh(v)
ev = sinh(v) + cosh(v)
wt = et ln(w)
关系:
ln(w) = 2 atanh[(w-1) / (w+1)]
sqrt(w) = sqrt((w+0.25)2-(w-0.25)2)
acosh(w) = ln[w+sqrt(1-w2)]
asinh(w) = ln[w+sqrt(1+w2)]
使用提示
· 要求解相关函数,用户必须确保 CORDIC 数据的初始值 X、 Y 和 Z 有意义 (在收敛
域之内),从而确保结果收敛。表 13-4 中的可用定义域给出 CORDIC 算法所支持的
收敛域,除去使函数无意义的数据范围。关于收敛域的详细描述,参见章节 13.3.3.1。
计算结果精度的详细描述,参见章节 13.3.5。
· 必须考虑对函数定义域的限制。例如,解 atan (Y/X) 时,设置初始值 X = 0 无意义。
不符合函数定义域的初值将导致错误的 CORDIC 计算结果。
· 所有的数据输入均按 2 补码来处理。只有一种情况例外:用户可选择将 X 结果数据
(仅 X 数据)按无符号数读取。
· 只有在圆函数向量模式下的 X 结果数据(仅 X 数据)才会始终为正、且大于初始值。
因此,用户可能希望将 X 结果数据的 MSB 位用作数据位而非符号位。置位 X_USIGN
= 1, X 结果数据将被当作无符号数处理。
· 对于圆函数和双曲函数,由于对应的 LUT 固定, Z 值始终被当作有符号整数 S19 处
理(数据访问格式为 S15)。LUT 中包含 atan(2-i),i = 0, 1, 2 , ... , 15 和 atanh(2-i),
i = 0, 1 ,2, ... , 15 按比例因子调整后的整数值(S19),从而可用整数 [-219,(219-1)] 代
表角度 [-π,((219-1)/219)π]。因此,对于圆函数和双曲函数,限定 Z 数据 (不考虑收敛
域)代表的角度范围 [-π,((215-1)/215)π] ,超出该范围的 Z 计算结果将导致溢出错误。
· 对于线性函数, Z 数据始终被当作有符号小数 S4.15 处理 (数据访问格式为 S4.11
(有符号数 4Q16))。仿真 LUT 实际上是一个移位寄存器,其中存放 2-i 的实数值,
用户手册
CORDIC 协处理器 , V1.2.5
13-7
V1.1, 2010-09
XC83x
CORDIC 协处理器
数据格式为 1.15。因此,不管收敛域如何,从逻辑上来讲, Z 数据只对幅值小于 16
的数据有用。溢出错误由位 CD_STATC.ERROR 指示。
· MPS 设置对 Z 数据无影响。用户必须确保选择恰当的 Z 初始值,以防止结果数据溢
出和结果不正确。
· CORDIC 协处理器的设计要满足:当用户正确设置 MPS >1 时,X 和 Y 数据不会出现
内部溢出;且可完成结果数据的读取操作。然而,在这些情况下,MPS 设置越高,由
于 LSB 位的丢失导致结果精度越低。
· 于在双曲函数旋转模式下, Y 的初始值必须设置为 0,因此结果精度受到限制。也就
是说,在一次计算中, CORDIC 协处理器不能返回 cosh(Z)+/-sinh(Z) 的正确结果。
13.3.3.1 收敛域
本用户手册不对 CORDIC 收敛的固有局限性进行理论性阐述。
为了保证结果数据收敛,要根据使用的操作模式,对幅值或初始数据值以及相应可用的
数据格式加以限制。考虑到 CORDIC 结果数据的收敛性,下面给出通常应用中的可用定
义域。
旋转模式:Z 数据必须收敛于 0。Z 数据初值必须等于或者小于 ∑di · ei,其中 ei 随着迭代
次数 i 递增而递减。换言之,|Z| ≤ LUT 总和。对于圆函数来说,这意味着 |Z| ≤ 代表 1.74
弧度的整数值;对于线性函数来说,|Z| ≤ 2 ;对于双曲函数来说,|Z| ≤ 代表 1.11 弧度的
整数值。
向量模式:Y 数据必须收敛于 0。 X 和 Y 的初始值受限于 Z 函数 (由 LUT 决定)。对于
圆函数来说,意味着 |atan(Y / X)| ≤ 1.74 弧度;对于线性函数来说,|Y / X| ≤ 2 ;对于双
曲函数来说, |atanh(Y / X)| ≤ 1.11 弧度。在向量模式中,还要求 X > 0。
CORDIC 协处理器的操作模式通常受到这些收敛域的限制,不过,圆函数旋转模式和圆
函数向量模式可通过额外的预 (后)处理逻辑以支持更宽的输入范围。
圆函数旋转模式:支持 Z 全域取值 [-215,(215-1)],代表角度 [-π,((215-1)/215)π]。除了考虑
溢出之外,对于 X 和 Y 初始值没有限制,而且可以通过设置 MPS 来消除溢出的可能性。
圆函数向量模式:支持 X 和 Y 全域取值 [-215,(215-1)] ; Z 的初始值必须满足 |Z| ≤ π / 2 以
避免可能出现的 Z 结果数据溢出。
注: 需要考虑对函数定义域的限制,以使计算结果有意义,例如,除数为 0 是无意义
的。表 13-4 给出了各函数的“可用定义域”,兼顾 CORDIC 收敛性和函数的取值
范围。
注: 输入值可能在收敛域之内,但这并不能保证 CORDIC 结果数据的精度固定不变。
CORDIC 协处理器的精度讨论请参见章节 13.3.5。
13.3.3.2 溢出考虑
除了考虑收敛域,还必须考虑对输入数据幅值的限制,以防止结果数据溢出。
对于所有操作模式, CORDIC 协处理器处理数据溢出的方式都相同。可通过正确设置
MPS 来防止 X 和 Y 数据溢出,在一定程度上 MPS 值由 CORDIC 协处理器的操作模式和
应用数据决定。
用户手册
CORDIC 协处理器 ,V1.2.5
13-8
V1.1, 2010-09
XC83x
CORDIC 协处理器
MPS 设置对 Z 数据无影响。对于圆函数和双曲函数,任何超出范围 [-π,((215-1)/215)π] 的
角度都不能由 Z 表示,否则将导致 Z 数据产生溢出错误。请注意,由于 Z 的内核数据取
值范围为 [-π,((219-1)/219)π],按比例因子调整后由 [-219,(219-1)] 表示,因此始终按照这种
方式对 Z 的读写数据归一化。对于线性函数,Z 是一个实数值,Z 的幅值一定不能超过 4
位整数。
13.3.4
CORDIC 协处理器数据格式
CORDIC 协处理器的初始数据 X、Y 和 Z 输入是 2 补码格式。结果数据也是 2 补码格式。
只有圆函数向量模式中的 X 结果数据有例外情况。X 结果数据的缺省数据格式为 2 补码,
不过用户可通过设置位 CD_CON.X_USIGN = 1,将 X 结果数据按无符号数读取。这样
可防止潜在的 X 数据结果溢出 (包括对 MPS 的设置),因为此时 MSB 位是数据位。请
注意,只有工作在圆函数向量模式时,置位 X_USIGN = 1 才有效,该操作产生的结果数
据始终为正、且大于初始值。
一般来说, X 和 Y 输入数据可以是整数或有理数 (小数)。但在任何计算中, X 和 Y 的
数据格式必须保持一致。此外,数据是小数时, X 和 Y 必须具有相同个数的小数位。
对于圆函数或者双曲函数,Z 数据始终是归一化的整数值;对于线性函数,可访问的 Z 数
据是一个实数,其输入和结果数据格式为 S4.11 (有符号 4Q16),是带 11 位小数位的
小数。
数据归一化的详细描述请参见章节 13.3.2。
13.3.5
CORDIC 协处理器精度
每次 CORDIC 计算的迭代次数固定为 16 次,从迭代 0 开始。双曲函数例外,它从迭代
1 开始,按照设定的步骤进行迭代。可寻址的数据寄存器宽度为 16 位,而用于计算的内
部内核 X 和 Y 数据寄存器宽度为 26 位(24 位数据位加上 2 位溢出位);内部内核 Z 数
据寄存器宽度为 21 位(20 位数据位加上 1 位溢出位)。有关 LUT 数据格式的详细描述,
请参见章节 13.5.1 和章节 13.5.2。
若输入数据值在规定的定义域内(见表 13-4),则可确保 CORDIC 协处理器每次计算的
结果都收敛,尽管在每种操作模式下,各种数据格式所造成的结果数据精度并不固定。精
度通过期望数据和结果数据之间的幅值差来衡量。“归一化误差”(ND)是一个通用术
语,表示结果数据和期望数据之间的幅值偏差。计算该误差时将输入 / 结果数据当作整数
值。若数据为有理数,则必须对误差幅值进行说明。例如,线性函数向量模式下 Z 的数
据格式为 S4.11 - ND = 1(01B)意味着实际数据和期望数据之间的幅值误差不大于 |2-11
+ 2-11| ; ND = 2 (10B)意味着误差不超过 |2-10+2-11| ; ND = 3 (11B)意味着误差不
超过 |2-11+2-10+2-11| ; ND = 4 (100B)意味着误差不超过 |2-9+2-11|,依此类推。考虑到
可能的截断误差,始终加上一个数值 2-11。
表 13-5 列出一次计算中归一化误差的概率。对于每一种 CORDIC 协处理器工作模式,输
入设置总要满足特定条件 (即在可用定义域内,可能还有附加条件) ,该概率值是大约
一百万次不同输入设置对应的仿真结果。
使用有理数 (小数)可以很容易的增加每种操作模式的精度。不过这仅适用于 X 和 Y 数
据 (X 和 Y 数据必须始终保持相同的数据格式),而 Z 的数据格式根据 LUT 的定义是固
用户手册
CORDIC 协处理器 , V1.2.5
13-9
V1.1, 2010-09
XC83x
CORDIC 协处理器
定不变的。显然,对于给定的输入 X 和 Y (和 Z),无论它们是整数还是有理数,希望
计算结果应始终返回一个固定值,差别仅在于如何对输入和结果数据予以解释,也就是
说,数据有没有小数位和有几个小数位。如果 X 和 Y 是整数,CORDIC 计算结果和期望
数据之间的误差绝对不会比 X 和 Y 是有理数时的计算误差小。因此,应根据对应模式下
的最大 ND 值,尽可能将 X 和 Y 设置为有理数并谨慎选择小数位位数。
表 13-5
一次计算的归一化误差
模式
X 归一化误差
圆函数向量
模式
输入条件:可用定义域,且 [(1.64676/2)·sqrt(X2+Y2) ≥ 600]
0 : 50.8317%
0 : 55.8702%
1 : 49.1683%
1 : 44.1298%
X ≤ 1 对应的 ND
Z ≤ 1 对应的 ND
圆函数旋转
模式
输入条件:可用定义域 (X、 Y 和 Z 全域取值)
0 : 50.7715%
0 : 51.2011%
1 : 48.8579%
1 : 48.4944%
2 : 0.3681%
2 : 0.3024%
3 : 0.0023%
3 : 0.0020%
4 : 0.0002%
4 : 0.0001%
X ≤ 4 对应的 ND
Y ≤ 4 对应的 ND
线性函数向量
模式
输入条件:可用定义域 (|Y / X| ≤ 2, X > 0)
0 : 66.9170%
0 : 88.5676%
1 : 33.0830%
1 : 11.4322%
2 : 0.0002%
X ≤ 1 对应的 ND
Z ≤ 2 对应的 ND
线性函数旋转
模式
输入条件:可用定义域 (|Z| ≤ 2)
0 : 69.7141%
1 : 30.2859%
X ≤ 1 对应的 ND
双曲函数向量
模式
输入条件:可用定义域 (|Y| < |X|, X > 0, |atanh(Y / X)| ≤ 1.11rad)
0 : 34.5399%
0 : 58.3062%
1 : 34.5438%
1 : 41.6938%
2 : 17.9254%
Z ≤ 1 对应的 ND
3 : 11.6747%
4 : 1.3162%
X ≤ 4 对应的 ND
用户手册
CORDIC 协处理器 ,V1.2.5
Y 或者 Z 归一化误差
13-10
0 : 62.4055%
1 : 37.1965%
2 : 0.3980%
Y ≤ 2 对应的 ND
V1.1, 2010-09
XC83x
CORDIC 协处理器
表 13-5
一次计算的归一化误差
模式
X 归一化误差
双曲函数旋转
模式
输入条件:可用定义域 (|Z| ≤ 1.11rad, Y = 0)
0 : 14.9401%
0 : 40.4787%
1 : 31.6474%
1 : 40.6711%
2 : 23.7692%
2 : 11.9209%
3 : 14.8353%
3 : 4.6940%
4 : 7.4881%
4 : 1.7290%
5 : 4.3398%
5 : 0.4453%
6 : 2.4387%
6 : 0.0607%
7 : 0.5267%
7 : 0.0003%
8 : 0.0146%
Y ≤ 7 对应的 ND
X ≤ 8 对应的 ND
Y 或者 Z 归一化误差
注: 不能保证多步计算的最终结果具有上面给出的精度 / 误差,举例来说,如果一个运
算包含 2 次 CORDIC 计算,第二次计算要使用第一次的计算结果 (通过置位相应
的 KEEP 位使能该特性),由于近似和误差的累积,不能保证有上述精度。
13.3.6
CORDIC 协处理器性能
CORDIC 计算所需时间随着计算精度的增加而线性增加。增加迭代次数可得到更高的精
度,这需要增加数据参数的宽度。
CORDIC 使用桶形移位寄存器进行数据移位。一次计算的迭代次数固定为 16 次,从开始
计算到 EOC 标志置位总共不超过 41 个时钟周期。需要注意的是,只有在一个时钟周期
之后,ERROR 标志才有效。这样完整的计算时序也适用于那些包含附加数据处理的操作
模式,也适用于需要进行重复迭代、以及外加一个时钟用于模式建立的双曲函数操作模
式。
注: 上述时序不包含软件向 6 个数据寄存器加载初始数据,从 6 个数据寄存器读取最终
结果所需要的时间。
13.4
中断
计算结束 (EOC)是 CORDIC 协处理器的唯一中断源。若设置 CD_STATC.INT_EN =1
使能中断,在 CORDIC 计算结束时中断请求信号被激活,由中断标志 CD_STATC.EOC
指示该状态。如果 EOC 标志没有被软件清零,它会一直保持置位状态,直到读取 Z 结果
数据的低字节 (DMAP = 0)时,才被硬件清零。
处理 EOC 数据时,必须检查数据以确保 ERROR 标志没有被置位 (该标志指示数据溢
出)。
用户手册
CORDIC 协处理器 , V1.2.5
13-11
V1.1, 2010-09
XC83x
CORDIC 协处理器
13.5
CORDIC 协处理器硬件
本节给出 CORDIC 协处理器查找表的相关信息。
13.5.1
反正切和双曲反正切查找表
正切查找表 (atan LUT)和双曲反正切查找表(atanh LUT)中的数据宽度分别为 20 位
和 21 位。Atan LUT 的每个入口数据由 1 个符号位(MSB)和 19 个整数位组成; atanh
LUT 的每个入口数据由 1 个重复位 (MSB)、 1 个符号位和 19 个整数位组成。
LUT 的内容是:
· atan LUT 数据格式为 S19,见表 13-6。
表 13-6
atan(2-i) 预计算值
i=0
atan(2-i) 预计算值
(16 进制)
20000
i=8
atan(2-i) 预计算值
(16 进制)
28C
i=1
12E40
i=9
146
i=2
9FB4
i = 10
A3
i=3
5111
i = 11
51
i=4
28B1
i = 12
29
i=5
145D
i = 13
14
i=6
A2F
i = 14
A
i=7
518
i = 15
5
迭代次数
迭代次数
· atanh LUT 数据格式为 S19,见表 13-7。
表 13-7
atanh(2-i) 预计算值
迭代次数
i=0
atanh(2-i) 预计算值
(16 进制)
-
i=8
atanh(2-i) 预计算值
(16 进制)
28C
i=1
16618
i=9
146
i=2
A681
i = 10
A3
i=3
51EA
i = 11
51
i=4
28CC
i = 12
29
i=5
1461
i = 13
14
i=6
A30
i = 14
A
i=7
518
i = 15
5
迭代次数
用户手册
CORDIC 协处理器 ,V1.2.5
13-12
V1.1, 2010-09
XC83x
CORDIC 协处理器
Z 数据是实际角度的归一化表示。按比例因子调整后,使得 [-π,((219-1)/219)π] 等同于 [219,(219-1)]。因为数据访问宽度为 16 位,因此 LSB 最低 4 位被截断。因此,从用户的角
度来看,角度 [-π,((215-1)/215)π] 由 [-215,(215-1)] 来代表。
13.5.2
线性函数的仿真查找表
线性函数的仿真 LUT 实际是一个移位寄存器。仿真 LUT 的数据格式为 1Q16, 1 个整数
位 (MSB),随后 15 个小数位。
对于线性函数来说,Z 为实数,内部 Z 数据的格式为有符号 4Q20。外部读取数据时,最
低 4 位小数部分被截断,最终计算结果为 1 个符号位、 4 个整数位、后跟 11 个小数位。
用户手册
CORDIC 协处理器 , V1.2.5
13-13
V1.1, 2010-09
XC83x
CORDIC 协处理器
13.6
寄存器描述
从标准 (非映射) SFR 区访问 CORDIC 协处理器的特殊功能寄存器,这些 SFR 和对应
的地址归纳见 表 13-8。
表 13-8
地址映射
地址
BAH
寄存器
CD_CORDXL
BBH
CD_CORDXH
BCH
CD_CORDYL
BDH
CD_CORDYH
BEH
CD_CORDZL
BFH
CD_CORDZH
A0H
CD_STATC
A1H
CD_CON
13.6.1
控制寄存器
CD_CON 寄存器用于控制 CORDIC 协处理器的操作。若 CD_STATC.BSY 置位,对该
寄存器进行的写操作无效。
CD_CON
CORDIC 控制寄存器
RMAP:0, PAGE:X
7
(A1H)
6
5
MPS
3
X_USIGN ST_MODE ROTVEC
rw
符号
ST
4
复位值:62H
rw
位
0
用户手册
CORDIC 协处理器 ,V1.2.5
类型
rwh
rw
rw
2
1
0
MODE
ST
rw
rwh
功能描述
启动计算
如果 ST_MODE = 1,置位 ST 启动 CORDIC 计算。
只有在 BSY 未置位的情况下,该位才有效。对该寄
存器进行写操作时,可同时设置该位和其它位。
开始计算时,该位由硬件清零。
13-14
V1.1, 2010-09
XC83x
CORDIC 协处理器
符号
MODE
位
2:1
类型
rw
功能描述
ROTVEC
3
rw
旋转向量模式选择
0
向量模式 (缺省模式)
1
旋转模式
ST_MODE
4
rw
启动方式
0
对 X 低字节寄存器 CD_CORDXL 进行写操作
之后自动启动计算 (缺省方式)
1
只有当位 ST 置位后才启动计算
X_USIGN
5
rw
圆函数向量模式下 X 结果数据格式
DMAP = 0,读取 X 结果数据时, X 数据格式如下:
0
有符号数, 2 补码
1
无符号数 (缺省)
该位置位时, X 结果数据的 MSB 位被当作数据位、
而非符号位来处理。
操作模式
00
线性函数模式
01
圆函数模式 (缺省模式)
10
保留
11
双曲函数模式
注: 只有在圆函数向量模式下该位才有效。在所有
其它模式下, X 始终按作 2 补码数据处理。
注: 在圆函数向量模式下 X_USIGN = 1 才有意义,
因为结果数据总是为正并且总是大于初始值。
MPS
7:6
用户手册
CORDIC 协处理器 , V1.2.5
rw
X 和 Y 幅值调节因子
在计算的最后一次迭代之后, X 和 Y 的计算值除以
该因子,产生最终结果数据。
正确设置 MPS,对于避免相应内核数据寄存器的结
果溢出是非常重要的。
00
除以 1
01
除以 2 (缺省)
10
除以 4
11
保留,保存最近的 MPS 设置
13-15
V1.1, 2010-09
XC83x
CORDIC 协处理器
13.6.2
状态和数据控制寄存器
CD_STATC 寄存器可位寻址,通常用于指示 CORDIC 协处理器的状态,该寄存器还包
含数据控制位和中断控制位。
CD_STATC
CORDIC 状态和数据控制寄存器
RMAP:0, PAGE:X
(A0H)
复位值:00H
7
6
5
4
3
2
1
0
KEEPZ
KEEPY
KEEPX
DMAP
INT_EN
EOC
ERROR
BSY
rw
rw
rw
rw
rw
rwh
rh
rh
符号
BSY
位
0
类型
rh
功能描述
ERROR
1
rh
错误标志
若 X、 Y 或 Z 的计算结果溢出, CORDIC 计算结束
后该位置位。当启动一次新的 CORDIC 运算时该位
被清零。
EOC
2
rwh
计算结束标志
当 CORDIC 计算完成、 BSY 变为无效后该位被置
位。
除非由软件清零,否则该位一直保持置位,直到读
取 Z 结果数据 (DMAP = 0)的低字节时,才被硬件
自动清零。
INT_EN
3
rw
中断使能
该位置位将使能 CORDIC 协处理器中断。
DMAP
4
rw
数据映射
0
从内核数据寄存器读取 (结果)数据 (缺省)
1
从映射数据寄存器读取 (初始)数据
用户手册
CORDIC 协处理器 ,V1.2.5
CORDIC 协处理器忙碌指示
该位被置位时,指示计算正在进行。 ST 位被置位一
个时钟之后该标志被置位。计算结束时,该位被清
零。
13-16
V1.1, 2010-09
XC83x
CORDIC 协处理器
符号
KEEPX
位
5
类型
rw
功能描述
X 的最终结果用作新计算的初始数据
若该位置位,新的计算将使用前一次计算的结果作
为新计算的初始数据。也就是说,在开始新的计算
时,内核数据寄存器的内容将不被映射数据寄存器
的内容改写。在最初计算加载 X 的初始值时,该位
应该被清零。
注: 映射数据寄存器和 KEEP 位无关,它始终保存
最近写入的初始值,直到软件对其进行下一次
改写。
注: 如果在多步运算中 KEEPX 被置位,X 的最终
结果精度会降低,不能保证具有章节 13.3.5
给出的精度。
KEEPY
6
rw
Y 的最终结果用作新计算的初始数据
< 见 KEEPX 的描述 >
KEEPZ
7
rw
Z 的最终结果用作新计算的初始数据
< 见 KEEPX 的描述 >
13.6.3
数据寄存器
数据寄存器用于初始化 X、 Y 和 Z 参数。可以读出 CORDIC 计算的结果数据 (DMAP =
0);也可读出映射寄存器中的初始数据 (DMAP = 1)。无论读取时 DMAP 如何设置,
这些数据寄存器始终保存最近写入的初始值,直到用户软件对其进行下一次写操作、或
者复位操作。
CD_CORDXL
CORDIC X 数据低字节
RMAP:0, PAGE:X
7
6
(BAH)
5
4
复位值:00H
3
2
1
0
DATAL
rw
用户手册
CORDIC 协处理器 , V1.2.5
13-17
V1.1, 2010-09
XC83x
CORDIC 协处理器
符号
DATAL
位
7:0
类型
rw
功能描述
数据低字节
对该字节进行写操作始终写入相应映射数据寄存器
的低字节中。在 CORDIC 计算过程中可以写入新数
据。
读取时:
DMAP=0:从内核数据字节读取结果数据
DMAP=1:从映射数据字节读取初始值
CD_CORDXH
CORDIC X 数据高字节
RMAP:0, PAGE:X
7
6
(BBH)
5
4
复位值:00H
3
2
1
0
DATAH
rw
符号
DATAH
位
7:0
类型
rw
功能描述
数据高字节
对该字节进行写操作始终写入相应映射数据寄存器
的高字节中。在 CORDIC 计算过程中可以写入新数
据。
读取时:
DMAP=0:从内核数据字节读取结果数据
DMAP=1:从映射数据字节读取初始值
CD_CORDYL
CORDIC Y 数据低字节
RMAP:0, PAGE:X
7
6
(BCH)
5
4
复位值:00H
3
2
1
0
DATAL
rw
用户手册
CORDIC 协处理器 ,V1.2.5
13-18
V1.1, 2010-09
XC83x
CORDIC 协处理器
符号
DATAL
位
7:0
类型
rw
功能描述
数据低字节
对该字节进行写操作始终写入相应映射数据寄存器
的低字节中。在 CORDIC 计算过程中可以写入新数
据。
读取时:
DMAP=0:从内核数据字节读取结果数据
DMAP=1:从映射数据字节读取初始值
CD_CORDYH
CORDIC Y 数据高字节
RMAP:0, PAGE:X
7
6
(BDH)
5
4
复位值:00H
3
2
1
0
DATAH
rw
符号
DATAH
位
7:0
类型
rw
功能描述
数据高字节
对该字节进行写操作始终写入相应映射数据寄存器
的高字节中。在 CORDIC 计算过程中可以写入新数
据。
读取时:
DMAP=0:从内核数据字节读取结果数据
DMAP=1:从映射数据字节读取初始值
CD_CORDZL
CORDIC Z 数据低字节
RMAP:0, PAGE:X
7
6
(BEH)
5
4
复位值:00H
3
2
1
0
DATAL
rw
用户手册
CORDIC 协处理器 , V1.2.5
13-19
V1.1, 2010-09
XC83x
CORDIC 协处理器
符号
DATAL
位
7:0
类型
rw
功能描述
数据低字节
对该字节进行写操作始终写入相应映射数据寄存器
的低字节中。在 CORDIC 计算过程中可以写入新数
据。
读取时:
DMAP=0:从内核数据字节读取结果数据
DMAP=1:从映射数据字节读取初始值
CD_CORDZH
CORDIC Z 数据高字节
RMAP:0, PAGE:X
7
6
(BFH)
5
4
复位值:00H
3
2
1
0
DATAH
rw
符号
DATAH
位
7:0
类型
rw
功能描述
数据高字节
对该字节进行写操作始终写入相应映射数据寄存器
的高字节中。在 CORDIC 计算过程中可以写入新数
据。
读取时:
DMAP=0:从内核数据字节读取结果数据
DMAP=1:从映射数据字节读取初始值
用户手册
CORDIC 协处理器 ,V1.2.5
13-20
V1.1, 2010-09
XC83x
定时器 T0 和 T1
14
定时器 T0 和 T1
14.1
概述
定时器 T0 和定时器 T1 均可用作定时器或计数器。用作定时器时,每个机器周期 (即每
两个输入时钟周期或两个 PCLK), T0 和 T1 加 1。用作计数器时,定时器 T0 和定时器
T1 对应的外部输入引脚 T0 或 T1 上每次发生 1-0 的跳变时(下降沿),T0 或 T1 加 1。
定时器 T0 和 T1 在许多定时应用中非常有用,例如可用来测量事件之间的时间间隔、对
事件计数、产生规律时间间隔的信号。特别是定时器 T1 还可用作片上串口的波特率发生
器。
特性:
· 四种工作模式:
– 模式 0:13 位定时器 / 计数器
– 模式 1:16 位定时器 / 计数器
– 模式 2:带有自动重载的 8 位定时器 / 计数器
– 模式 3:两个 8 位定时器 / 计数器
14.2
系统信息
本节提供与定时器 T0 和 T1 相关的系统信息。
14.2.1
引脚
定时器 T0 和 T1 可用作事件计数器,对外部输入引脚 T0 和 T1 上 1-0 的跳变进行计数。
可分别从 T0_0 和 T0_1/T1_0 和 T1_1 中选择定时器 T0/T1 的事件源。 XC83x 中的定时
器 T0 和 定 时 器 T1 的 引 脚 分 配 见表 14-1。通 过 SFR 位 MODPISEL2.T0IS 和
MODPISEL2.T1IS 选择相应引脚。
表 14-1
XC83x 中定时器 T0 和 T1 的引脚分配
引脚 功能
描述
由 ... 选择
P0.1 T0_0
定时器 T0 输入
MODPISEL2.T0IS = 0B
P2.1 T0_1
P0.2 T1_0
MODPISEL2.T0IS = 1B
MODPISEL2.T1IS = 0B
定时器 T1 输入
P2.2 T1_1
MODPISEL2.T1IS = 1B
访问 MODPISEL2 寄存器之前,必须编程设置 SCU_PAGE 寄存器中的 PAGE 位域。
用户手册
定时器 T0 和 T1, V1.0
14-1
V1.1, 2010-09
XC83x
定时器 T0 和 T1
MODPISEL2
外设输入选择寄存器 2
RMAP: 0, PAGE: 3
(F5H)
4
复位值:00H
7
6
5
3
2
0
T0IS
T1IS
T2IS
T2EXIS
r
rw
rw
rw
rw
符号
位
类型
描述
T1IS
5
rw
定时器 T1 输入选择
0
选择定时器 T1 输入 T1_0
1
选择定时器 T1 输入 T1_1
T0IS
6
rw
定时器 T0 输入选择
0
选择定时器 T0 输入 T0_0
1
选择定时器 T0 输入 T0_1
0
7
r
保留
读操作返回 0 ;应写入 0。
14.2.2
1
0
时钟配置
定时器 T0 和 T1 的工作频率 PCLK 可为 8 MHz 或 24 MHz。
14.2.3
中断事件和分配
表 14-2 列出定时器 T0 和 T1 的中断事件源以及对应的中断节点分配。
表 14-2
定时器 T0 和 T1 事件的中断节点分配
事件
中断节点使能位
中断节点标志位
向量地址
定时器 T0 溢出
IEN0.ET0
TCON.TF0
0BH
定时器 T1 溢出
IEN0.ET1
TCON.TF1
1BH
用户手册
定时器 T0 和 T1, V1.0
14-2
V1.1, 2010-09
XC83x
定时器 T0 和 T1
14.3
定时器基本操作
特殊功能寄存器 TCON 和 TMOD 控制两个定时器的操作。置位控制位 TCON.TRx 来使
能相应的定时器(允许定时器工作);通过输入选择位 TMOD 来选择定时器的输入来自
内部系统时钟或者外部引脚。
注: 本章中 'x' (如 TCON.TRx) 代表 0 或 1。
每个定时器由 两个 8 位寄存器, TLx (低位字节)和 THx (高位字节)组成,其复位缺
省值为 00H。 TCON.TRx 置位或清零不影响定时器寄存器的内容。
定时器溢出
定时器溢出时,定时器溢出标志 TCON.TFx 置位,并在中断使能控制位 IEN0.ETx 置位
时产生中断。进入中断服务程序时,溢出标志被自动清零。
定时器 T0 工作在模式 3 时,定时器 T1 的控制位 TR1、 TF1 和 ET1 为 TH0 保留,具体
内容请参见章节 14.4.4。
外部控制
定时器的启动 / 停止不仅可以完全由软件控制,还可以由外部端口控制。使用外部端口控
制时,必须首先设置 SFR EXICON0 旁路 EXINTx 边沿检测电路,信号直接送入内核。
若定时器被使能 (TCON.TRx = 1)且 TMOD.GATEx 置位,只有当内核外部中断信号
EXINTx = 1 时定时器才能工作,这样便于进行脉宽测量。不过,当定时器 T1 工作在模
式 3 时外部控制不适用。
如果 TMOD.GATEx 被清零,定时器恢复完全由软件控制。
用户手册
定时器 T0 和 T1, V1.0
14-3
V1.1, 2010-09
XC83x
定时器 T0 和 T1
14.4
定时器工作模式
定时器 T0 和定时器 T1 完全兼容,均可设定为四种不同的工作模式,如表 14-3 所示。由
寄存器 TMOD 中的位域 TxM 选择定时器的工作模式。
两个定时器在模式 0、 1 和 2 时独立工作;在模式 3 时具有特定功能。
表 14-3
定时器 T0 和定时器 T1 工作模式
模式
功能描述
0
13 位定时器 / 计数器
该定时器实质上是一个带有 32 预分频的 8 位定时器 / 计数器。包含此工作
模式仅仅是为了和 Intel 8048 器件兼容。
16 位定时器 / 计数器
定时器寄存器 TLx 和 THx 级联组成一个 16 位定时器 / 计数器。
1
2
具有自动重载的 8 位定时器 / 计数器
定时器寄存器 TLx 溢出时, THx 中用户定义的 8 位数据会自动重新载入
TLx。
3
定时器 T0 作为两个独立的 8 位定时器 / 计数器工作
定时器寄存器 TL0 和 TH0 用作两个独立的 8 位定时器 / 计数器。即使定时
器 T1 被使能,它仍然停止计数、保持原先的计数值。
用户手册
定时器 T0 和 T1, V1.0
14-4
V1.1, 2010-09
XC83x
定时器 T0 和 T1
14.4.1
模式 0
在模式 0 下,定时器 T0 或定时器 T1 是带有 32 预分频的 8 位定时器 / 计数器,模式 0 的
操作如图 14-1 所示。
该模式下,定时器寄存器配置为 13 位寄存器。当计数值从全 “1”翻转为全 “0”时溢
出,定时器溢出标志 TFx 置位,该标志可请求中断。当 TRx = 1 且 GATEx = 0 或
EXINTx = 1(GATEx = 1 允许定时器由外部输入 EXINTx 控制,以便用于脉宽测量)时,
定时器计数输入使能。TRx 是寄存器 TCON 中的控制位; GATEx 位于寄存器 TMOD 中。
13 位寄存器由 THx 的 8 位和 TLx 的低 5 位组成,TLx 的高 3 位不确定,应将其忽略。置
位运行标志 (TRx)不对该寄存器清零。
模式 0 的操作对于定时器 T0 和定时器 T1 相同。
fPCLK /2
T0S = 0
TL0
(5位)
TH0
(8位)
TF0
中断
T0S = 1
T0
控制
TR0
GATE0
&
=1
>1
EXINT0
图 14-1
Timer0_Mode0_cn
定时器 T0,模式 0:13 位定时器 / 计数器
用户手册
定时器 T0 和 T1, V1.0
14-5
V1.1, 2010-09
XC83x
定时器 T0 和 T1
14.4.2
模式 1
模式 1 和模式 0 的操作基本相同,唯一区别是模式 1 下定时器寄存器中的 16 位全部有
用。模式 1 的操作如图 14-2 所示。
fPCLK /2
T0S = 0
TL0
(8位)
TH0
(8位)
TF0
中断
T0S = 1
T0
控制
TR0
GATE0
&
=1
>1
EXINT0
图 14-2
Timer0_Mode1_cn
定时器 T0,模式 1:16 位定时器 / 计数器
用户手册
定时器 T0 和 T1, V1.0
14-6
V1.1, 2010-09
XC83x
定时器 T0 和 T1
14.4.3
模式 2
在模式 2 下,定时器设置为可自动重载的 8 位计数器 (TLx),定时器 T0 在模式 2 的操
作如图 14-3 所示。
TLx 溢出不仅置位 TFx,还将 THx 的值重新装入 TLx, THx 的内容由软件预置,重载时
THx 内容不变。
fPCLK/2
T0S = 0
TL0
(8位)
TF0
中断
T0S = 1
T0
控制
TR0
GATE0
重载
&
=1
TH0
(8位)
>1
Timer0_Mode2_cn
EXINT0
图 14-3
定时器 T0,模式 2:自动重载 8 位定时器 / 计数器
用户手册
定时器 T0 和 T1, V1.0
14-7
V1.1, 2010-09
XC83x
定时器 T0 和 T1
14.4.4
模式 3
在模式 3 下,定时器 T0 和定时器 T1 的操作不同。定时器 T0 的 TL0 和 TH0 是两个独立
的 8 位计数器;定时器 T1 只保持其原先计数值,效果如同设置 TR1 = 0。
定时器 T0 在模式 3 的逻辑结构如图 14-4 所示。TL0 使用定时器 T0 的控制位:GATE0、
TR0 和 TF0,而 TH0 锁定为定时器功能(计数机器周期),占用定时器 T1 的控制位 TR1
和 TF1, TH0 溢出时将置位 TF1,并在 ET1 置位时产生中断。
模式 3 可用于额外需要一个 8 位定时器的场合。当定时器 T0 工作在模式 3 且 TR1 置位
时,切换到模式 3 以外的任何其它模式可开启定时器 T1、切换到模式 3 时定时器 T1 关闭。
定时器时钟
fPCLK/2
T0S = 0
TL0
(8位)
TF0
TH0
(8位)
TF1
中断
T0S = 1
T0
控制
TR0
&
=1
GATE0
>1
EXINT0
TR1
图 14-4
中断
Timer0_Mode3_cn
定时器 T0,模式 3:两个 8 位定时器 / 计数器
用户手册
定时器 T0 和 T1, V1.0
14-8
V1.1, 2010-09
XC83x
定时器 T0 和 T1
14.5
寄存器描述
通过 7 个 SFR 控制定时器 T0 和定时器 T1 的操作。可从标准 (非映射) SFR 区和映射
SFR 区对其进行访问。
表 14-4 列出这些 SFR 的地址。
表 14-4
寄存器映射
地址
寄存器
88H
TCON
89H
TMOD
8AH
TL0
8BH
TL1
8CH
TH0
8DH
TH1
A8H
IEN0
14.5.1
定时器 T0 和 T1 寄存器
根据选择的工作模式,定时器 T0 和定时器 T1 的低位字节 (TL0, TL1)和高位字节寄
存器(TH0,TH1)可组合成一个定时器。寄存器 TCON 控制定时器 T0 和定时器 T1 的
操作。寄存器 TMOD 中包含定时器 T0 和定时器 T1 的工作模式选择控制位。 IEN0 寄存
器中包含定时器 T0 和定时器 T1 的中断使能控制位。
TLx (x = 0 - 1)
定时器 x,低位字节
RMAP: X, PAGE: X
7
(8AH + x)
6
5
4
复位值:00H
3
2
1
0
VAL
rwh
符号
位
类型
描述
VAL
[7:0]
rwh
定时器 T0/1 低位字节寄存器
00B TLx 保存 5 位预分频值
01B TLx 保存 16 位定时器值的低 8 位
10B TLx 保存 8 位定时器值
11B TL0 保存 8 位定时器值;未使用 TL1。
用户手册
定时器 T0 和 T1, V1.0
14-9
V1.1, 2010-09
XC83x
定时器 T0 和 T1
THx (x = 0 - 1)
定时器 x,高位字节
RMAP: X, PAGE: X
7
(8CH + x)
6
5
4
复位值:00H
3
2
1
0
VAL
rwh
符号
位
类型
描述
VAL
[7:0]
rwh
定时器 T0/1 高位字节寄存器
00B THx 保存 8 位定时器值
01B THx 保存 16 位定时器值的高 8 位
10B THx 保存 8 位重载值
11B TH0 保存 8 位定时器值;未使用 TH1
TCON
定时器 T0/1 控制寄存器
RMAP: X, PAGE: X
7
6
TF1
TR1
rwh
r
rw
(88H)
复位值:00H
5
4
3
2
TF0
TR0
IE1
IT1
rwh
rw
rwh
rw
r
1
0
IE0
IT0
rwh
rw
符号
位
类型
描述
TR0
4
rw
定时器 T0 运行控制
0B
定时器停止
1B
定时器运行
TF0
5
rwh
定时器 T0 溢出标志
定时器 T0 溢出时由硬件置位。
当 CPU 调用中断服务程序时溢出标志由硬件清
零。
用户手册
定时器 T0 和 T1, V1.0
14-10
V1.1, 2010-09
XC83x
定时器 T0 和 T1
符号
位
类型
描述
TR1
6
rw
定时器 T1 运行控制
0B
定时器停止
定时器运行
1B
注: 如果定时器 T0 工作在模式 3, T1 的运行控
制位也影响 TH0。
TF1
7
rwh
定时器 T1 溢出标志
定时器 T1 溢出时,由硬件置位1)
当 CPU 调用中断服务程序时溢出标志由硬件清
零。
1) 如果定时器 T0 工作在模式 3, TF1 改由 TH0 置位。
TMOD
定时器模式寄存器
RMAP: X, PAGE: X
7
6
GATE1
T1S
rw
(89H)
5
r
rw
4
复位值:00H
3
2
1
0
T1M
GATE0
T0S
T0M
rw
rw
rw
rw
符号
位
类型
描述
T0M
[1:0]
rw
模式选择位
00B 13 位定时器 (M8048 兼容模式)
01B 16 位定时器
10B 8 位自动重载定时器
11B 定时器 T0 被分成两部分。 8 位定时器 TL0
由标准定时器 T0 的控制位控制; 8 位定时
器 TH0 由标准定时器 T1 的控制位控制。
TL1 和 TH1 的内容保持不变 (定时器 T1
停止工作)。
T0S
2
rw
T0 输入选择
0B
输入来自内部系统时钟
输入来自 T0 引脚
1B
用户手册
定时器 T0 和 T1, V1.0
14-11
V1.1, 2010-09
XC83x
定时器 T0 和 T1
符号
位
类型
描述
GATE0
3
rw
T0 门控标志
0B
仅在 TCON.TR0 = 1 时定时器 T0 才运行
(软件控制)。
仅当 EXINT0 引脚 = 1 (硬件控制)且
1B
TCON.TR0 置位时,定时器 T0 才运行
T1M
[5:4]
rw
模式选择位
00B 13 位定时器 (M8048 兼容模式)
01B 16 位定时器
10B 8 位自动重载模式
11B 定时器 T0 被分成两部分。 8 位定时器 TL0
由标准定时器 T0 的控制位控制; 8 位定时
器 TH0 由标准定时器 T1 的控制位控制。
TL1 和 TH1 的内容保持不变 (定时器 T1
停止工作)。
T1S
6
rw
T1 输入选择
0B
输入来自内部系统时钟
输入来自 T1 引脚
1B
GATE1
7
rw
T1 门控标志
0B
仅当 TCON.TR1 = 1 时定时器才运行 (软
件控制)
仅当 EXINT0 引脚 = 1 (硬件控制)且
1B
TCON.TR1 置位时,定时器才运行。
IEN0
中断使能寄存器
RMAP: X, PAGE: X
7
6
EA
0
rw
(A8H)
r
r
复位值:00H
5
4
3
2
1
0
ET2
ES
ET1
EX1
ET0
EX0
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
ET0
1
rw
T0 溢出中断使能
0B
禁止定时器 T0 中断
1B
使能定时器 T0 中断
用户手册
定时器 T0 和 T1, V1.0
14-12
V1.1, 2010-09
XC83x
定时器 T0 和 T1
符号
位
类型
描述
ET1
3
rw
T1 溢出中断使能
0B
禁止定时器 T1 中断
使能定时器 T1 中断
1B
注: 当定时器 T0 工作在模式 3,该中断指示定
时器 T0 的 TH0 寄存器的溢出。
用户手册
定时器 T0 和 T1, V1.0
14-13
V1.1, 2010-09
XC83x
定时器 T2
15
定时器 T2
15.1
概述
定时器 T2 为 16 位通用定时器,其功能与 C501 产品家族中的定时器 T2 兼容。每种工作
模式下,定时器 T2 可用作定时器或计数器。用作定时器时,定时器 T2 以 PCLK/12 的输
入时钟(若预分频被禁止)计数;用作计数器时,对引脚 T2 上 1-0 的跳变计数。计数器
模式下,定时器 T2 的最大计数精度为 PCLK/24 (若预分频被禁止)。
特性
•
•
•
16 位自动重载模式
可选择递增或递减计数
单通道、 16 位捕获模式
15.2
系统信息
本节提供与定时器 T2 相关的系统信息。
15.2.1
引脚
T2 可用作事件计数器,对外部输入引脚 T2 上 1-0 的跳变计数。外部输入可从四个源中
选择:T2_0、 T2_1、 T2_2 和 T2_3。通过 SFR 位 MODPISEL2.T2IS 进行选择。另外,
定时器 T2 的 T2EX 引脚有 8 个源可供选择。通过 MODPISEL2.T2EXIS 进行选择。这些
源中的 4 个为外部引脚,其中 2 个可被来自 ADC 模块的超出范围 0 (ORC0)事件和超
出范围 1 (ORC1)事件触发。
XC82x 的定时器 T2 引脚分配见表 15-1。
表 15-1
XC83x 中定时器 T2 引脚功能
引脚 / 源
功能
描述
由 ... 选择
P0.0
T2_0
定时器 T2 输入
MODPISEL2.T2IS = 00B
P2.0
T2_1
MODPISEL2.T2IS = 01B
P2.3
T2_2
MODPISEL2.T2IS = 10B
P2.4
T2_3
MODPISEL2.T2IS = 11B
用户手册
定时器 T2, V1.2
15-1
V1.1, 2010-09
XC83x
定时器 T2
表 15-1
XC83x 中定时器 T2 引脚功能
引脚 / 源
功能
描述
由 ... 选择
P0.6
T2EX_0
定时器 T2 外部触发输入
MODPISEL2.T2EXIS = 000B
P0.4
T2EX_1
MODPISEL2.T2EXIS = 001B
P1.0
T2EX_2
MODPISEL2.T2EXIS = 010B
P2.0
T2EX_3
MODPISEL2.T2EXIS = 011B
ORC0 事件
T2EX_4
MODPISEL2.T2EXIS = 100B
ORC1 事件
T2EX_5
MODPISEL2.T2EXIS = 101B
P2.7
T2EX_6
MODPISEL2.T2EXIS = 110B
P3.2
T2EX_7
P0.4
EXF2_0
P3.1
EXF2_1
P3_ALTSEL0.P1 = 1B
P3_ALTSEL1.P1 = 1B
P1.3
EXF2_2
P1_ALTSEL0.P3 = 1B
P1_ALTSEL1.P3 = 1B
P0.5
EXF2_3
P0_ALTSEL0.P5 = 0B
P0_ALTSEL1.P5 = 1B
P0_ALTSEL2.P5 = 1B
MODPISEL2.T2EXIS = 111B
P0_ALTSEL0.P4 = 1B
P0_ALTSEL1.P4 = 1B
P0_ALTSEL2.P4 = 0B
定时器 T2 溢出标志
访问 MODPISEL2 寄存器之前,必须编程设置 SCU_PAGE 寄存器中的 PAGE。
MODPISEL2
外设输入选择寄存器 2
RMAP: 0, PAGE: 3
(F5H)
7
6
5
0
T0IS
T1IS
T2IS
T2EXIS
r
rw
rw
rw
rw
用户手册
定时器 T2,V1.2
4
复位值:00H
3
15-2
2
1
0
V1.1, 2010-09
XC83x
定时器 T2
符号
位
类型
描述
T2EXIS
[2:0]
rw
定时器 T2 外部输入选择
000 选择定时器 T2 输入 T2EX_0
001 选择定时器 T2 输入 T2EX_1
010 选择定时器 T2 输入 T2EX_2
011 选择定时器 T2 输入 T2EX_3
100 选择定时器 T2 输入 T2EX_4
101 选择定时器 T2 输入 T2EX_5
110 选择定时器 T2 输入 T2EX_6
111 选择定时器 T2 输入 T2EX_7
注: T2EX_4 和 T2EX_5 分别由超出范围 0 事件和
超出范围 1 事件触发。
T2IS
[4:3]
rw
定时器 T2 输入选择
00
选择定时器 T2 输入 T2_0
01
选择定时器 T2 输入 T2_1
10
选择定时器 T2 输入 T2_2
11
选择定时器 T2 输入 T2_3
0
7
r
保留
读操作返回 0 ;应写入 0。
15.2.2
时钟配置
定时器 T2 工作频率 PCLK 为 8 MHz 或 24 MHz。
如果完全不需要定时器 T2 的功能,可通过门控关闭其时钟输入的方式禁止该模块,从而
最大限度的降低功耗。可通过如下所述的寄存器 PMCON1 中的 T2_DIS 来禁止该模块。
PMCON1
外设管理控制寄存器 1
RMAP: 0, PAGE: 1
7
6
IIC_DIS
LTS_DIS
rw
rw
用户手册
定时器 T2, V1.2
(EFH)
5
4
CDC_DIS MDU_DIS
rw
rw
15-3
复位值:FFH
3
2
1
0
T2_DIS
CCU_DIS
SSC_DIS
ADC_DIS
rw
rw
rw
rw
V1.1, 2010-09
XC83x
定时器 T2
符号
位
类型
描述
T2_DIS
3
rw
T2 禁止请求,高有效
0
T2 正常工作
1
请求禁止 T2 (缺省设置)
15.2.3
中断事件和分配
表 15-2 列出定时器 T2 的中断事件源以及对应事件中断使能位和标志位。
表 15-2
定时器 T2 中断事件
事件
中断事件使能位
事件标志位
定时器 T2 溢出
T2_T2CON1.TF2EN
T2_T2CON.TF2
定时器 T2 外部事件
T2_T2CON1.EXF2EN
T2_T2CON.EXF2
表 15-3 给出每个定时器 T2 中断请求源的中断节点分配。
表 15-3
定时器 T2 事件的中断节点控制
事件
中断节点使能位
中断节点标志位
向量地址
定时器 T2 溢出
IEN0.ET2
–
2BH
定时器 T2 外部事件
15.2.4
IP 互连
在XC83x中,T2EX_4输入和 T2EX_5输入可分别由来自ADC模块的超出范围0(ORC0)
事件和超出范围 1 (ORC1)事件触发,见表 15-4。 发生超出范围事件时, ORCx 将产
生一个送至 T2EX 输入的上升沿信号 。为了检测 T2EX 输入上的上升沿, T2_T2MODE
寄存器中的 EDGESEL 或 T2REGS 必须置 1 (取决于所使用的引脚)。另外, T2EX_4
或 T2EX_5 输入必须通过 MODPISEL2 寄存器进行设置,见表 15-1。
表 15-4
定时器 T2 互连
连接至其它功能模块 / 信号
定时器 T2 功能 / 信号
超出范围 0 (o): ORC0
T2 外部触发 (i): T2EX_4
超出范围 1 (o): ORC1
T2 外部触发 (i): T2EX_5
15.2.5
模块挂起控制
当片上调试支持 (OCDS)处于监控模式 (MMCR2.MMODE = 1)且调试挂起信号有效
(MMCR2.DSUSP = 1)时, XC83x 的 T2 模块中的定时器 / 计数器可根据寄存器
用户手册
定时器 T2,V1.2
15-4
V1.1, 2010-09
XC83x
定时器 T2
MODSUSP 中的对应模块挂起位的设置被挂起。挂起时,由于其输入时钟被关闭,定时
器停止计数。整个模块仍有时钟输入,因此仍可访问模块寄存器。请参考章节 10.2.4 中
的寄存器 MODSUSP 的定义。
用户手册
定时器 T2, V1.2
15-5
V1.1, 2010-09
XC83x
定时器 T2
15.3
基本定时器操作
定时器 T2 可通过位 TR2 由硬件或者软件启动。可置位 TR2 由软件启动定时器 T2 ;若
位 T2RHEN 置位,定时器 T2 可由硬件启动。位 T2REGS 定义引脚 T2EX 上的事件:由
下降沿或上升沿来硬件置位运行位 TR2。只能由软件复位 TR2 停止定时器 T2 工作。
15.4
自动重载模式
寄存器 T2CON 中的 CP/RL2 置 0 时,选择自动重载模式。该模式下,定时器 T2 计数至
溢出后,将一个 16 位的初始值重新装入定时器寄存器中,开始新一轮计数过程。置位寄
存器 T2CON 的 TF2 表示计数溢出,同时向 CPU 发送中断请求(若中断被使能)。溢出
标志 TF2 必须由软件清零。
根据寄存器 T2MOD 中 DCEN 控制位的设置,自动重载模式可进一步分为两种类型。
15.4.1
禁止递增 / 递减计数
若 DCEN = 0,递增 / 递减计数选择被禁止,定时器只能递增计数。工作原理如图 15-1
所示。
若寄存器 T2CON 中的 EXEN2 = 0,一旦将 T2CON 寄存器中的 TR2 置位,定时器开始
递增计数,计数至最大值 FFFFH 后溢出并置位 TF2,将寄存器 RC2 中的 16 位重载值重
新装入定时器寄存器。在溢出前该重载值已由软件设置。然后开始新一轮计数过程,定
时器同上一轮计数过程一样,从重载值开始递增计数。
若 EXEN2 = 1,一旦将 TR2 置位,定时器开始递增计数至最大值 FFFFH。计数溢出或输
入引脚 T2EX 的负 / 正跳变(由寄存器 T2MOD 中的位 EDGESEL 选择)均会引起 16 位
重载,将寄存器 RC2 的内容重新装入定时器寄存器。若由溢出引起重载,溢出标志 TF2
置位。若由引脚 T2EX 的负 / 正跳变引起重载,寄存器 T2CON 中的 EXF2 置位。若由
TCON1 寄存器中的相关使能位 EXF2EN/TF2EN 使能,这两种情况均会产生中断并送至
CPU,定时器进入下一轮计数过程。 EXF2 标志和 TF2 相似,必须由软件清零。
如果位 T2RHEN 置位,由引脚 T2EX 上的第一个下降沿 / 上升沿启动定时器 T2,由位
T2REGS 选择跳变沿。如果位 EXEN2 置位,引脚 T2EX 上的下降沿 / 上升沿启动定时器
T2 的同时置位 EXF2。引脚 T2EX 上接下来的负 / 正跳变将触发重载,由位 EDGESEL
选择跳变沿。
注: 计数器模式下,如果由 T2EX 触发重载的同时检测到计数时钟 T2,先进行重载操
作 (重载操作比计数操作优先)。在接下来的 T2 计数时钟计数器值加 1。
用户手册
定时器 T2,V1.2
15-6
V1.1, 2010-09
XC83x
定时器 T2
PREN
fPCLK
/12
0
T2PRE
1
C/T2=0
THL2
C/T2=1
TR2
T2
溢出
OR
RC2
TF2
O
R
定时器T2
中断
EXF2
EXEN2
T 2EX
图 15-1
15.4.2
自动重载模式 (DCEN = 0)
使能递增 / 递减计数
若 DCEN = 1,可进行递增 / 递减计数方向选择。计数方向由输入引脚 T2EX 的电平决定。
工作原理如图 15-2 所示。
引脚 T2EX 的逻辑电平为 1 时,定时器 T2 递增计数,定时器递增计数至最大值 FFFFH
后溢出,置位 TF2,RC2 寄存器中的 16 位重载值重新装入定时器寄存器。然后开始新一
轮计数过程,定时器同上一轮计数过程一样,从重载值开始递增计数。在溢出前该重载
值已由软件设置。
引脚 T2EX 的逻辑电平为 0 时,定时器 T2 递减计数。定时器递减计数并当 THL2 的值和
寄存器 RC2 中的值相等时发生下溢。下溢后置位 TF2,并将值 FFFFH 重新载入定时器
寄存器 THL2 中。然后开始新一轮计数过程,定时器同上一轮计数过程一样递减计数。
如果位 T2RHEN 置位,定时器 T2 由引脚 T2EX 的上升沿 (T2REGS = 1)启动,开始
递增计数;或由 T2EX 的下降沿 (T2REGS = 0)启动,开始递减计数。
该模式下,定时器 T2 上溢或下溢出时 EXF2 翻转,但该标志不会产生中断请求。
用户手册
定时器 T2, V1.2
15-7
V1.1, 2010-09
XC83x
定时器 T2
FFFF H
EXF2
(递减计数重载 )
PREN
下溢
/12
0
T2PRE
1
fPCLK
定时器 T2
C/T2=0
OR
THL2
TF2
中断
C/T2=1
TR2
T2
16位
比较器
上溢
RC2
T 2EX
图 15-2
用户手册
定时器 T2,V1.2
自动重载模式 (DCEN = 1)
15-8
V1.1, 2010-09
XC83x
定时器 T2
15.5
捕获模式
置位寄存器 T2CON 中的 CP/RL2 和 EXEN2,进入 16 位捕获模式。该模式下,递减计
数功能必须保持禁止。定时器是一个 16 位递增计数的定时器,计数至最大值 FFFFH 后
溢出,溢出后置位 TF2、并将 0000H 重新装入定时器寄存器。置位 TF2 会向 CPU 发送
中断请求。
此外,在引脚 T2EX 的下降沿 / 上升沿(由 T2MOD.EDGESEL 选择),将定时器寄存器
(THL2)的值捕获到寄存器 RC2 中。每个 PCLK 时钟周期对外部输入采样。如果在一个
PCLK 周期采样值为低 (高)电平、下一个 PCLK 周期采样值为高 (低)电平,将识别
到一次信号沿跳变。如果在计数器加 1 的同时检测到捕获信号,计数器先加 1 然后执行
捕获操作,从而确保始终捕获到定时器寄存器的最新值。
如果 T2RHEN 置位,由引脚 T2EX 的第一个下降沿 / 上升沿启动定时器 T2,跳变沿选择
由位 T2REGS 决定。如果位 EXEN2 置位,引脚 T2EX 的下降沿 / 上升沿(由位 EDGESEL
选择跳变沿)启动定时器 T2 的同时置位 EXF2。引脚 T2EX 上接下来的负 / 正跳变将触
发捕获,由位 EDGESEL 选择跳变沿。
执行完捕获操作,EXF2 置位、可用来产生中断请求。定时器 T2 的捕获功能如图 15-3 所
示。
用户手册
定时器 T2, V1.2
15-9
V1.1, 2010-09
XC83x
定时器 T2
PREN
/12
0
T2PRE
1
fPCLK
C/T2=0
THL2
C/T2=1
TR2
溢出
T2
RC2
TF2
定时器T 2
OR
中断
EXF2
EXEN2
T2EX
图 15-3
15.6
捕获模式
计数时钟
自动重载模式下的计数时钟由寄存器 T2CON 中的 C/T2 位来选择。如果 C/T2 = 0,使用
计数时钟 fPCLK/12 (若预分频器被禁止)进行计数。
如果 C/T2 = 1,定时器 T2 用作计数器,对输入引脚 T2 上的 1-0 的跳变进行计数。计数
器在连续两个 PCLK 时钟周期对引脚 T2 采样。如果在第一个 PCLK 周期采样为 1、下一
个 PCLK 周期采样为 0,则计数器加 1。因此,输入引脚上的电平至少应该在 1 个时钟周
期内保持稳定。
若 T2RHEN 置位,定时器 T2 可由引脚 T2EX 上的下降沿 / 上升沿启动工作,跳变沿选
择由位 T2REGS 决定。
注: C501 兼容特性要求计数精度至少为 24 个时钟周期。
用户手册
定时器 T2,V1.2
15-10
V1.1, 2010-09
XC83x
定时器 T2
15.7
外部中断功能
当定时 器 /
计 数 器 功 能 被 禁 止 时 (TR2 = 0) ,只要定时器 T2
保持使能
(PMCON1.T2_DIS = 0),仍可通过引脚 T2EX 上的外部事件产生定时器 T2 中断。为了
实现该功能,必须置位寄存器 T2CON 中的控制位 EXEN2。从而根据 CP/ RL2 的设置,
使得 T2EX 上的任意跳变产生空的加载或捕获操作。
通过禁止定时器 / 计数器功能,T2EX 还可用来提供边沿触发的(上升沿或下降沿)的外
部中断功能,位 EXF2 作为外部中断标志。
用户手册
定时器 T2, V1.2
15-11
V1.1, 2010-09
XC83x
定时器 T2
15.8
寄存器描述
下面各节中描述的所有定时器 T2 寄存器名称在本文档其它章节引用时,需要增加模块名
前缀 “T2_”,如 T2_T2CON。
定时器 T2 SFR 位于标准 (非映射) SFR 区域。表 15-5 列出这些地址。
表 15-5
寄存器映射
地址
寄存器
C0H
T2CON
C1H
T2MOD
C2H
RC2L
C3H
RC2H
C4H
T2L
C5H
T2H
C6H
T2CON1
用户手册
定时器 T2,V1.2
15-12
V1.1, 2010-09
XC83x
定时器 T2
15.8.1
模式寄存器
寄存器 T2MOD 用于配置定时器 T2 的各种工作模式。
T2_T2MOD
定时器 T2 模式寄存器
RMAP: 0, PAGE: X
(C1H)
复位值:00H
7
6
5
4
3
2
1
0
T2REGS
T2RHEN
EDGESEL
PREN
T2PRE
DCEN
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
DCEN
0
rw
递增 / 递减计数器使能
0B
禁止递增 / 递减计数功能
1B
使能递增/递减计数且由引脚T2EX控制计数方
向 (递增 = 1,递减 = 0)
T2PRE
[3:1]
rw
定时器 T2 预分频选择
选择定时器 T2 的输入时钟 (来自外设时钟)
000B fT2 = fPCLK
001B fT2 = fPCLK / 2
010B fT2 = fPCLK / 4
011B fT2 = fPCLK / 8
100B fT2 = fPCLK / 16
101B fT2 = fPCLK / 32
110B fT2 = fPCLK / 64
111B fT2 = fPCLK / 128
PREN
4
rw
预分频使能
0B
禁止预分频功能, 2 或 12 分频器生效
使能预分频功能(见 T2PRE 位),2 或 12 分频
1B
器被旁路。
EDGESEL
5
rw
捕获模式 / 重载模式的边沿选择
0B
选择引脚 T2EX 的下降沿
1B
选择引脚 T2EX 的上升沿
T2RHEN
6
rw
定时器 T2 外部启动使能
0B
禁止定时器 T2 外部启动
使能定时器 T2 外部启动
1B
用户手册
定时器 T2, V1.2
15-13
V1.1, 2010-09
XC83x
定时器 T2
符号
位
类型
描述
T2REGS
7
rw
定时器 T2 外部启动边沿选择
0B
选择引脚 T2EX 的下降沿
选择引脚 T2EX 的上升沿
1B
15.8.2
控制寄存器
控制寄存器T2CON控制定时器T2的工作模式以及中断产生,此外还包含中断状态标志。
T2_T2CON
定时器 T2 控制寄存器
RMAP: 0, PAGE: X
(C0H)
复位值:00H
7
6
5
4
3
2
1
0
TF2
EXF2
0
0
EXEN2
TR2
C_T2
CP_RL2
rwh
rwh
r
r
rw
rwh
rw
rw
符号
位
类型
描述
CP_RL2
0
rw
捕获 / 重载模式选择
计数器溢出或引脚T2EX发生负/正跳变时重载
0B
(当 EXEN2 = 1)。
1B
引脚 T2EX 发生负 / 正跳变时,捕获定时器 T2
数据寄存器的内容 (当 EXEN2 = 1)。由
EDGESEL 选择由引脚 T2EX 的负跳变还是正
跳变触发操作。
C_T2
1
rw
定时器或计数器选择
0B
选择定时器功能
对引脚 T2 上的负跳变计数
1B
TR2
2
rwh
定时器 T2 启动 / 停止控制
停止定时器 T2
0B
1B
启动定时器 T2
EXEN2
3
rw
定时器 T2 外部使能控制
0B
禁止外部事件
1B
捕获 / 重载模式下使能外部事件
用户手册
定时器 T2,V1.2
15-14
V1.1, 2010-09
XC83x
定时器 T2
符号
位
类型
描述
EXF2
6
rwh
定时器 T2 外部事件标志
捕获 / 重载模式下,若 EXEN2 = 1,在引脚 T2EX 上
有负 / 正跳变时该位由硬件置位,该位必须由软件清
零。。
注: 自动重载模式下位 DCEN = 1 时,不产生送入
内核的中断请求。
TF2
7
rwh
0
[5:4]
r
定时器 T2 上溢 / 下溢标志
定时器 T2 上溢或下溢时该标志置位。必须由软件清
除该位。
保留
读操作返回 0 ;应写入 0。
寄存器 T2CON1 用于使能外部中断和溢出中断。
T2_T2CON1
定时器 T2 控制寄存器 1
RMAP: 0, PAGE: X
7
6
(C6H)
5
4
复位值:03H
3
2
1
0
0
TF2EN
EXF2EN
r
rw
rw
符号
位
类型
描述
EXF2EN
0
rw
外部中断使能
0B
禁止外部中断
1B
使能外部中断
TF2EN
1
rw
上溢 / 下溢中断使能
0B
禁止上溢 / 下溢中断
使能上溢 / 下溢中断
1B
0
[7:2]
r
保留
读操作返回 0 ;应写入 0。
用户手册
定时器 T2, V1.2
15-15
V1.1, 2010-09
XC83x
定时器 T2
15.8.3
定时器 T2 重载 / 捕获寄存器
根据所选的工作模式不同,RC2 寄存器中存放定时器寄存器溢出时的 16 位重载值;或存
放捕获到的定时器当前计数值。
T2_RC2L
定时器 T2 重载 / 捕获寄存器,低位字节 (C2H)
RMAP: 0, PAGE: X
7
6
5
4
复位值:00H
3
2
1
0
RC2
rwh
符号
位
类型
描述
RC2
[7:0]
rwh
重载 / 捕获值 [7:0]
如果 CP/RL2 = 0,定时器溢出时将该值装入到定时
器寄存器。
如果 CP/RL2 = 1,当 EXEN2 = 1,引脚 T2EX 发生
负 / 正跳变时,定时器的当前计数值被捕获到该寄存
器。
T2_RC2H
定时器 T2 重载 / 捕获寄存器,高位字节 (C3H)
RMAP: 0, PAGE: X
7
6
5
4
复位值:00H
3
2
1
0
RC2
rwh
符号
位
类型
描述
RC2
[7:0]
rwh
捕获 / 重载值 [15:8]
如果 CP/RL2 = 0,定时器溢出时将该值装入到定时
器寄存器。
如果 CP/RL2 = 1,当 EXEN2 = 1,引脚 T2EX 发生
负 / 正跳变时,定时器的当前计数值被捕获到该寄存
器。
用户手册
定时器 T2,V1.2
15-16
V1.1, 2010-09
XC83x
定时器 T2
15.8.4
定时器 T2 计数寄存器
寄存器 T2L 和 T2H 保存定时器 T2 的当前 16 位计数值。
T2_T2L
定时器 T2 寄存器,低位字节
RMAP: 0, PAGE: X
7
6
5
(C4H)
4
复位值:00H
3
2
1
0
THL2
rwh
符号
位
类型
描述
THL2
[7:0]
rwh
定时器 T2 计数值 [7:0]
这些位用来指示当前 16 位定时器值。
T2_T2H
定时器 T2 寄存器,高位字节
RMAP: 0, PAGE: X
7
6
5
(C5H)
4
复位值:00H
3
2
1
0
THL2
rwh
符号
位
类型
描述
THL2
[7:0]
rwh
定时器 T2 计数值 [15:8]
这些位指示当前 16 位定时器值。
用户手册
定时器 T2, V1.2
15-17
V1.1, 2010-09
XC83x
实时时钟
16
实时时钟
16.1
概述
XC83x 还提供一个实时时钟(RTC)外设模块,一旦启动,RTC 可独立工作,而与微控
制器其余部分的状态无关。实时时钟的时钟源可为:由 32.768 kHz 振荡器引出脚提供的
32.768 kHz 片外振荡器、 75 kHz 片内振荡器或来自 RTCCLK 引脚的外部时钟输入。
32.768 kHz 频率可被分频用以记录从某个起始时刻开始的时间段,即为实时时钟。
特性
· 使用 32.768 kHz 晶振时钟的计时模式
· 使用 75 kHz 片内振荡器的周期唤醒模式
· 从掉电模式中唤醒
16.2
系统信息
本节提供与实时时钟相关的系统信息。
16.2.1
引脚
RTC 时钟源可以是片上或外部时钟源 (通过 RTCCLK 引脚输入)。
XC83x 的 RTCCLK 引脚分配见表 16-1。
表 16-1
XC83x 中 RTC 的引脚功能
引脚
功能
描述
由 ... 选择
P3.1
RTCCLK
RTC 外部时钟输入
–
P3.1
XTAL3
32.768 kHz 片外振荡器输入 OSC_CON.XPD = 0B
P3.0
XTAL4
32.768 kHz 片外振荡器输出
16.2.2
中断事件和分配
表 16-2 列出 RTC 的中断事件源以及相应的中断使能位和标志位。
表 16-2
RTC 中断事件
事件
事件中断使能位
事件中断标志位
RTC 比较 / 唤醒
RTC_RTCON.ECRTC
RTC_RTCON.CFRTC
RTC 秒定时
RTC_RTCON.ESRTC
RTC_RTCON.SFRTC
表 16-3 给出每个 RTC 中断源的中断节点分配。
用户手册
RTC, V1.0
16-1
V1.1, 2010-09
XC83x
实时时钟
表 16-3
RTC 事件的中断节点控制
事件
中断节点使能位
中断节点标志位
向量地址
RTC 比较 / 唤醒
IEN1.EXM
–
4BH
RTC 秒定时
16.2.3
模块挂起控制
当片上调试支持 (OCDS)处于监控模式 (MMCR2.MMODE = 1)且调试挂起信号有效
(MMCR2.DSUSP = 1)时,可根据寄存器 MODSUSP 相关位的设置挂起 XC83x 中 RTC
模块的定时器 / 计数器,该寄存器的描述见章节 10.2.4。
被挂起时,因其计数器输入时钟被门控禁止,仅定时器停止计数。模块本身仍有时钟输
入,因此仍可访问模块寄存器。
16.3
振荡器
32.768 kHz 片外振荡器和 75 kHz 片内振荡器均可用作 RTC 的时钟源。32.768 kHz 振荡
器的输入来自片外石英晶振,该晶振和 32.768 kHz 振荡器引出脚的两个输入引脚 XTAL3
和 XTAL4 相连。75 kHz 振荡器除可用作 RTC 的输入时钟外,还可用作振荡器看门狗的
时钟,用以监控 32.768 kHz 片外振荡器。
一旦上电,这些振荡器开始工作,而与微控制器的状态无关:即使器件进入空闲模式或
掉电模式 2、3 和 4,振荡器仍继续工作。如有需要,32.768 kHz 振荡器引出脚也可被软
件关闭。
这些振荡器以及整个 RTC,即使在电源为 2.5V - 5.5 V 的某些掉电模式期间仍能正常工
作。
16.4
基本定时器操作
RTC 为递增计数的 41 位定时器。该模块由一组 4 到 6 个计数寄存器组成,这些寄存器
统称为 CNT 寄存器,给出当前计数值或 RTC 的当前时间。启动 RTC 之前,可向 CNT
写入任意值。启动 RTC 时,该写入值被当作初始值。另一组寄存器 RTCCR,由 4 到 6
个寄存器组成,可用于中断产生,还可将器件从掉电模式中唤醒。捕获事件被触发时,
RTCCR 寄存器还可用于保存捕获值。置位 RTCON 寄存器中的 RTCC 为 1,可启动实时
时钟。该位用于使能 RTC 定时器的输入时钟。
16.5
实时时钟模式
在 XC83x 中,实时时钟可工作在四种模式。模式 0 和模式 4 为计时模式,用以维持实时
系统时钟,以小时、分钟和秒来指示当前时间。在这两种模式下,使用 32.768 kHz 片外
振荡器或直接以片外 1 Hz 时钟作为 RTC 的时钟输入。模式 1 为使用 41 位计数器的周期
唤醒模式。该模式下,使用片内 75 kHz 振荡器作为时钟输入。模式 3 和模式 1 相似,以
外部时钟作为 32 位计数器的时钟输入。 在 XC83x 中,上电后缺省选择模式 1。用户需
要确保只有当 RTC 停止工作时,才能切换其工作模式。
用户手册
RTC, V1.0
16-2
V1.1, 2010-09
XC83x
实时时钟
16.5.1
模式 0:使用 32.768 kHz 晶振时钟的计时模式
RTC 模式 0 具有计时功能。在该模式下,即使器件进入空闲和掉电模式 2 和 3,RTC 仍
继续工作。
启动 RTC 之前,可向 RTC 的 CNT 寄存器写入用户期望的、以天、小时、分钟、秒、微
秒表示的任意时间范围。当 RTCON 寄存器的 RTCC 位置 1 启动定时器时,写入值作为
RTC 定时器的初始值。该位还使能 RTC 定时器的输入时钟,如图 16-1 所示。当写入
CNT 的值超出规定的范围,比如向 CNT1 写入 70 秒或向 CNT2 写入 80 分钟, CNT 将
被复位到 0。读取这些寄存器将返回 0。CNT 寄存器受到位保护机制(详见 SCU 章节的
描述)的保护。只有在当停止模式下 (RTCC = 0)保护机制被禁止时,才能更新初始计
数值。
实时时钟计数器
32.768 KHz
OSC
CNT0
(微妙)
9位
预分频器
位0
位5
秒
译码器
分钟
译码器
小时
译码器
CNT1
(秒)
CNT2
(分)
CNT3
(小时)
位0
位5
位0
位5
位0
天
译码器
CNT4/5
(天)
位4
位0
位8
RTCC
RTCCT
RTCCT
RTCCT
比较器
(微妙)
RTCCR0
(微妙)
位0
位5
RTCCT
RTCCR1
(秒)
位0
位5
RTCCT
比较器
(分)
比较器
(秒)
RTCCR2
(分)
位0
RTCCR3
(小时)
位5
比较器
(天)
比较器
(小时)
位0
位4
RTCCR4/5
(天)
位0
CFRTC
中断请求
ECTRC
位8
实时时钟比较/捕获寄存器
这些位不可读
图 16-1
实时时钟模式 0
实时时钟的低 9 位(用作后级 32 位计数器 CNT 的预分频器)设为初始值 000000000B。
每个输入时钟周期定时器加 1。采用 32.768 kHz 的输入频率时,1 秒的时间相当于 15 位
定时器计数溢出。在这种情况下,寄存器 CNT5-CNT0 中分别存放天、小时、分、秒和
微秒的实时数值。寄存器 CNT0 中有 6 位用于存放实时时钟的微秒时段;寄存器 CNT1
和 CNT2 中各有 6 位分别用于存放实时时钟的秒和分钟时段,计数 60 次之后,秒和分钟
计数器将复位到 0。器件处于工作模式时,每过 1 秒,标志位 SFRTC 置 1。若 RTCON
寄存器中的 ESRTC 置 1,同时可产生中断。寄存器 CNT3 存放实时时钟的小时值,计数
24 次之后寄存器复位到 0。寄存器 CNT4 和 CNT5 用于存放实时时钟的天数值,它们在
复位之前可计数到 1 年。1 年可能是 365 或 366 天。通过寄存器 RTCON1 中的位 RTYR
选择是否为闰年。
RTC 正常工作时, RTCCR 寄存器的内容将和 RTC 计数器 (CNT)的内容进行比较。
RTCCR 的值可由用户任意设置。若 ECRTC 置 1,在工作模式下,二者内容相等时将产
生中断,寄存器 RTCON 中的位 CFRTC 将置位。当器件处于掉电模式 2 和 3 时,这将
用户手册
RTC, V1.0
16-3
V1.1, 2010-09
XC83x
实时时钟
产生一个从软件掉电状态唤醒的操作。可通过 CFRTC 标志监控实时时钟唤醒请求,但必
须由用户软件清除该标志。在这种情况下,实时时钟不受影响、继续工作。此时的唤醒
操作与通过 EXINT0 引脚从掉电模式唤醒的操作相似。
注: 不带复位从掉电模式唤醒之后,不会产生唤醒中断,与 ECRTC 位的状态无关。不
过唤醒后, CFRTC 标志必须置 1。
注: 建议用户在设置寄存器 RTCCR 之后读取该值以确保其有效。若该值超出规定的范
围,将导致比较操作失败。
如果满足下列条件,实时时钟的模式 0 可产生唤醒请求使 XC83x 退出掉电模式:
·
·
·
·
XC83x 处于掉电模式 2 或 3
掉电模式被使能 (PMCON0 寄存器中的位 PD = 1),且
已选择唤醒模式类型 (PMCON0 中的位 WKSEL),
维持工作电源电平 (包括压降情况在内)
通过置位 RTCON 寄存器中的 RTCCT 位为 1,能够触发捕获事件。2 个 CPU 时钟之后,
捕获的 CNT 值将改写 RTCCR 寄存器先前的内容。一旦触发捕获事件,有必要更新实际
比较值。在 XC83x 中,推荐用户触发捕获事件,以读取 RTC 计数值 (CNT)。由于一
次只能读取 8 位数据,当 RTC 运行时,有可能读取到错误的 32 位实时值。
当 RTCC 位设置为 0 时,实时时钟停止计数且 CNT 寄存器保存最新值。随后置位该位会
从先前停止的计数值开始,启动一个新的计数过程。
注: 当捕获事件和比较事件出现在同一个时钟周期内时,这两个事件能够同时发生。
16.5.2
模式 1:使用 75 kHz 振荡器时钟的周期性唤醒模式
图 16-2 给出 RTC 模式 1 的框图,该模式为上电复位的缺省模式。该模式下,RTC 由一
个 41 位通用定时器组成, 75 kHz 振荡器为该定时器提供输入时钟。
用户手册
RTC, V1.0
16-4
V1.1, 2010-09
XC83x
实时时钟
实时时钟计数器
75 KHz
OSC
9位
预分频器
CNT0
位0
RTCC
RTCCT
CNT1
位7
位8
CNT2
位15
位16
CNT3
位23
RTCCT
位24
位31
RTCCT
复位
定时器
RTCCT
32位比较器
中断
请求
CFRTC
ECTRC
RTCCR0
位0
位7
RTCCR1
位8
位15
RTCCR2
位16
位23
RTCCR3
位24
实时时钟比较/捕获寄存器
位31
这些位不可读
图 16-2
实时时钟模式 1
在掉电模式 4 下,可通过在 RTCCR 寄存器中设置计数值 (该计数值等于唤醒时间的长
度),每隔一段固定的时间 (周期性)对系统唤醒一次。和模式 0 相似,定时器持续工
作,直至 CNT 的计数值和 RTCCR 的值匹配,随后置位 CFRTC 标志。若 ECRTC 被使
能,工作模式下将产生中断。与此同时,41 位定时器将复位并从 0 开始重新计数。此外,
计数操作始终继续,达到 1 分钟、 1 小时或 1 天时计数值不复位。模式 1 的其余操作和
模式 0 类似,区别在于:该模式下, SFRTC 标志不置位。
16.5.3
模式 2:使用 1 Hz 外部时钟的计时模式
图 16-3 给出 RTC 模式 2 的框图。模式 2 和模式 0 的功能类似,区别在于:该模式下,9
位预分频器和 CNT0 被旁路。由 RTCCLK 引脚提供的 1 Hz 外部时钟用作 CNT1-CNT5
的输入时钟。和模式 0 相似,定时器持续工作,直至 CNT 的计数值 (CNT1-CNT5)和
RTCCR 的值(RTCCR1-RTCCR5)匹配,随后置位 CFRTC 标志。若 ECRTC 被使能,
将产生中断。在计数器开始工作之前,用户必须将 RTCCLK 引脚设置为输入模式并和 1
Hz 外部时钟相连。
在 XC83x 中, RTC 模式 2 不能用于将系统从掉电模式中唤醒。
用户手册
RTC, V1.0
16-5
V1.1, 2010-09
XC83x
实时时钟
实时时钟计数器
RTCCLK
(1 Hz
外部时钟)
秒
译码器
分钟
译码器
小时
译码器
天
译码器
CNT1
(秒)
CNT2
(分)
CNT3
(小时)
CNT4/5
(天)
位0
位5
位0
位5
位0
位4
位0
位8
RTCC
RTCCT
RTCCT
RTCCT
比较器
(分)
比较器
(秒)
RTCCR1
(秒)
位0
位5
RTCCT
RTCCR2
(分)
位0
比较器
(天)
比较器
(小时)
RTCCR3
(小时)
位5
位0
位4
RTCCR4/5
(天)
位0
CFRTC
中断请求
ECTRC
位8
实时时钟比较/捕获寄存器
图 16-3
16.5.4
实时时钟模式 2
模式 3:使用外部时钟的定时器模式
图 16-4 给出 RTC 模式 3 的框图。该模式下,实时时钟由一个 32 位通用定时器组成。除
了 9 位预分频器被旁路外,和模式 1 的功能相同。外部时钟通过 RTCCLK 引脚输入到定
时器。在计数器开始工作之前,用户必须将 RTCCLK 引脚设置为输入模式并和外部时钟
相连。
在 XC83x 中, RTC 模式 3 不能用于将系统从掉电模式中唤醒。
用户手册
RTC, V1.0
16-6
V1.1, 2010-09
XC83x
实时时钟
实时时钟计数器
RTCCLK
(外部时钟)
CNT0
位0
RTCC
CNT1
位7
RTCCT
位8
CNT2
位15
位16
CNT3
位23
RTCCT
位24
位31
RTCCT
复位
定时器
RTCCT
32位比较器
中断请求
CFRTC
ECTRC
RTCCR0
位0
位7
RTCCR1
位8
RTCCR2
位15
Bit16
RTCCR3
位23 位 24
位31
实时时钟比较/捕获寄存器
图 16-4
16.6
实时时钟模式 3
省电模式选择
一旦启动,实时时钟将持续计数,直到位 RTCON.RTCC 被清除。 实时时钟不受 XC83x
空闲模 式 的 影 响,在 掉电 模 式 下 也 能 继 续 计 数 (掉 电 模式 1 除外) 。另外,若
OSC_CON.XTAL2L 或 OSC_CON.75KOSC2L 状态被置 1,实时时钟将不会自动停止。
掉电模式 2、 3 和 4 下,如果满足下述条件,实时时钟将继续运行:
· 实时时钟的时钟源可用,
· VDDP > 2.5 V
软件掉电模式 1 下,实时时钟停止工作。
用户手册
RTC, V1.0
16-7
V1.1, 2010-09
XC83x
实时时钟
16.7
寄存器描述
共有 14 个 SFR 用于控制实时时钟的操作。可通过标准(非映射)SFR 区域访问这些寄
存器,寄存器描述见下文。
表 16-4 列出这些 SFR 的地址。
表 16-4
寄存器映射
地址
寄存器
95H
RTCON
96H
RTCON1
E1H
CNT0
E2H
CNT1
E3H
CNT2
E4H
CNT3
E5H
CNT4
E6H
CNT5
E7H
RTCCR0
E9H
RTCCR1
EAH
RTCCR2
EBH
RTCCR3
ECH
RTCCR4
EDH
RTCCR5
用户手册
RTC, V1.0
16-8
V1.1, 2010-09
XC83x
实时时钟
16.7.1
实时时钟寄存器
RTC_RTCON
实时时钟控制寄存器
RMAP: 0, PAGE: X
(95H)
复位值:02H
7
6
5
4
3
2
1
0
SFRTC
CFRTC
ESRTC
ECRTC
RTCCT
RTM
RTCC
rwh
rwh
rw
rw
rwh
rw
rw
符号
位
类型
描述
RTCC
0
rw
实时时钟启动 / 停止控制
0B
停止实时时钟操作
1B
启动实时时钟操作
RTM
[2:1]
rw
实时时钟模式
00B 模式 0 ;选择使用 32.768 kHz XTAL 时钟的计时
醒式
01B 模式 1 ;选择使用 75 kHz 振荡器时钟的周期唤醒
模式
10B 模式 2 ;选择使用 1 Hz 外部时钟的计时模式 (外
部时钟由 RTCCLK 引脚输入)
11B 模式 3 ;选择使用外部时钟的定时器模式 (外部
时钟由 RTCCLK 引脚输入)
注: 切换工作模式的同时会切换时钟源。切换工作模式
时, RTC 必须停止工作。
注: 切换时钟源时 (从模式 1 下的 75 kHz 振荡器时钟
切换到模式 0 下的 32.768 kHz、或模式 2 和 3 下的
外部时钟),晶振时钟输出或外部时钟源必须保持
稳定。
RTCCT
3
rwh
实时时钟捕获事件触发
0B
无操作
立即触发捕获事件
1B
一旦置位,该位保持两个 PCLK 时钟周期,然后被硬件
清除。
读取该位始终返回 0。
ECRTC
4
rw
实时时钟比较中断使能
0B
禁止实时时钟比较中断
使能实时时钟比较中断
1B
用户手册
RTC, V1.0
16-9
V1.1, 2010-09
XC83x
实时时钟
符号
位
类型
描述
ESRTC
5
rw
实时时钟秒定时中断使能
模式 0 下,禁止每秒产生实时时钟中断
0B
模式 0 下,使能每秒产生实时时钟中断
1B
CFRTC
6
rwh
实时时钟比较标志
发生比较匹配时,该位被硬件置位,且只能由软件清除。
仅在 XC83x 处于掉电模式 2、 3 或 4 时,才产生唤醒请
求。
SFRTC
7
rwh
实时时钟秒定时标志
每秒该位被硬件置位,且只能被软件清除。该标志仅适
用于模式 0 和模式 2。
注: 每秒都产生中断的功能仅适用于模式 0 和模式 2。
RTC_RTCON1
实时时钟控制寄存器 1
RMAP: 0, PAGE: X
7
(96H)
6
5
4
复位值:00H
3
2
1
0
0
RTYR
r
rw
符号
位
类型
描述
RTYR
0
rw
实时时钟年份类型
非闰年; 365 天
0B
1B
闰年; 366 天
0
[7:1]
r
保留
读取返回 0 ;应写入 0。
在模式 0 下,使用 CNT0 - CNT5 来表示时间,它们分别对应实时时钟的微秒、秒、分、小
时和天。在模式 2 下,寄存器 CNT1-CNT5 可用,和模式 0 的功能相同。
用户手册
RTC, V1.0
16-10
V1.1, 2010-09
XC83x
实时时钟
RTC_CNT0 [ 模式 0 ]
计数时钟寄存器 0
RMAP: 0, PAGE: X
7
(E1H)
6
5
4
复位值:00H
3
2
0
MILLISECONDS
r
rwh
1
0
符号
位
类型
描述
MILLISECONDS
[5:0]
rwh
实时时钟微秒值 [5:0]
这些位代表当前定时器的微秒值。计数到 3FH
之后,该寄存器复位到 0。与此同时,
CNT1.secs 计数加 1。
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
RTC_CNT1 [ 模式 0 和模式 2 ]
计数时钟寄存器 1
RMAP: 0, PAGE: X
7
6
(E2H)
5
4
复位值:00H
3
2
0
SECONDS
r
rwh
1
0
符号
位
类型
描述
SECONDS
[5:0]
rwh
实时时钟秒值 [5:0]
这些位代表当前定时器的秒值。模式 0 下,计
数到 60D 之后,该寄存器复位到 0。与此同时,
CNT2.minutes 计数加 1。
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
用户手册
RTC, V1.0
16-11
V1.1, 2010-09
XC83x
实时时钟
RTC_CNT2 [ 模式 0 和模式 2 ]
计数时钟寄存器 2
RMAP: 0, PAGE: X
7
6
(E3H)
5
4
复位值:00H
3
2
0
MINUTES
r
rwh
1
0
符号
位
类型
描述
MINUTES
[5:0]
rwh
实时时钟分钟值 [5:0]
这些位代表当前定时器的分钟值。计数到 60D
之后,该寄存器复位到 0。与此同时,
CNT3.hours 计数加 1。
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
RTC_CNT3 [ 模式 0 和模式 2 ]
计数时钟寄存器 3
RMAP: 0, PAGE: X
7
6
(E4H)
5
4
复位值:00H
3
2
0
HOURS
r
rwh
1
0
符号
位
类型
描述
HOURS
[4:0]
rwh
实时时钟小时值 [4:0]
这些位代表当前定时器的小时值。计数到 24D
之后,该寄存器复位到 0。与此同时,寄存器
CNT4 和 CNT5 中的天数加 1。
0
[7:5]
r
保留
读取返回 0 ;应写入 0。
用户手册
RTC, V1.0
16-12
V1.1, 2010-09
XC83x
实时时钟
RTC_CNT4 [ 模式 0 和模式 2 ]
计数时钟寄存器 4
RMAP: 0, PAGE: X
7
6
(E5H)
5
4
复位值:00H
3
2
1
0
DAYS
rwh
符号
位
类型
描述
DAYS
[4:0]
rwh
实时时钟天数值 [7:0]
这些位代表当前定时器天数值的低 8 位。
RTC_CNT5 [ 模式 0 和模式 2 ]
计数时钟寄存器 5
RMAP: 0, PAGE: X
7
6
(E6H)
5
4
复位值:00H
3
2
1
0
0
DAYS
r
rwh
符号
位
类型
描述
DAYS
0
rwh
实时时钟天数值 [8]
这些位代表当前定时器天数值的 MSB。
0
[7:1]
r
保留
读取返回 0 ;应写入 0。
模式 1 下,寄存器 CNT0 - CNT3 代表 41 位实时时钟定时器的高 32 位 ;模式 3 下,
CNT0 - CNT3 代表 32 位定时器。
用户手册
RTC, V1.0
16-13
V1.1, 2010-09
XC83x
实时时钟
RTC_CNT0 [ 模式 1 和模式 3]
计数时钟寄存器 0
RMAP: 0, PAGE: X
7
6
(E1H)
5
4
复位值:00H
3
2
1
0
CNT_VAL
rwh
符号
位
类型
描述
CNT_VAL
[7:0]
rwh
实时时钟计数值 [7:0]
这些位代表当前实时时钟定时器的计数值 [7:0]。
RTC_CNT1 [ 模式 1 和模式 3]
计数时钟寄存器 1
RMAP: 0, PAGE: X
7
6
(E2H)
5
4
复位值:00H
3
2
1
0
CNT_VAL
rwh
符号
位
类型
描述
CNT_VAL
[7:0]
rwh
实时时钟计数值 [15:8]
这些位代表当前实时时钟计数器的计数值
[15:8]。
RTC_CNT2 [ 模式 1 和模式 3]
计数时钟寄存器 2
RMAP: 0, PAGE: X
7
6
5
(E3H)
4
复位值:00H
3
2
1
0
CNT_VAL
rwh
用户手册
RTC, V1.0
16-14
V1.1, 2010-09
XC83x
实时时钟
符号
位
类型
描述
CNT_VAL
[7:0]
rwh
实时时钟计数值 [23:16]
这些位代表当前实时时钟定时器的计数值
[23:16]。
RTC_CNT3 [ 模式 1 和模式 3]
计数时钟寄存器 3
RMAP: 0, PAGE: X
7
6
(E4H)
5
4
复位值:00H
3
2
1
0
CNT_VAL
rwh
符号
位
类型
描述
CNT_VAL
[7:0]
rwh
实时时钟计数值 [31:23]
这些位代表当前实时时钟定时器的计数值
[31:23]。
在模式 0 下,实时时钟定时器的微秒、秒、分、小时和天数值和 RTCCR 寄存器中的值进
行比较,从而可产生比较或唤醒事件。位 RTCCT 置 1 触发捕获事件时,RTCCR 寄存器
的值将在 2 个 CPU 时钟周期之后被捕获到的 CNT 值改写。一旦触发捕获事件,有必要
对实际比较值进行更新。 RTCCR 寄存器由 6 个寄存器 RTCCR0 - RTCCR5 组成。
在模式 2 下, RTCCR0 寄存器不可用于比较操作。
RTC_RTCCR0 [ 模式 0 ]
实时时钟比较 / 捕获寄存器 0
RMAP: 0, PAGE: X
7
6
(E7H)
5
4
复位值:00H
3
2
0
CC_MSECS
r
rwh
1
0
符号
位
类型
描述
CC_MSECS
[5:0]
rwh
比较 / 捕获微秒值 [5:0]
这些位代表比较 / 捕获操作下当前定时器的微秒
值 ,取值范围为 0H - 3FH。
用户手册
RTC, V1.0
16-15
V1.1, 2010-09
XC83x
实时时钟
符号
位
类型
描述
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
RTC_RTCCR1 [ 模式 0 和模式 2]
实时时钟比较 / 捕获寄存器 1
RMAP: 0, PAGE: X
7
6
5
(E9H)
4
复位值:00H
3
2
0
CC_SECONDS
r
rwh
1
0
符号
位
类型
描述
CC_SECONDS
[5:0]
rwh
比较 / 捕获秒值 [5:0]
这些位代表比较 / 捕获操作下当前定时器的秒
值 ,取值范围为 0D - 59D,超出该范围的值被视
为 0D。
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
RTC_RTCCR2 [ 模式 0 和模式 2]
实时时钟比较 / 捕获寄存器 2
RMAP: 0, PAGE: X
7
6
5
(EAH)
4
复位值:00H
3
2
0
CC_MINUTES
r
rwh
1
0
符号
位
类型
描述
CC_MINUTES
[5:0]
rwh
比较 / 捕获分钟值 [5:0]
这些位代表比较 / 捕获操作下当前定时器的分钟
值 ,取值范围为 0D - 59D,超出该范围的值被视
为 0D。
0
[7:6]
r
保留
读取返回 0 ;应写入 0。
用户手册
RTC, V1.0
16-16
V1.1, 2010-09
XC83x
实时时钟
RTC_RTCCR3 [ 模式 0 和模式 2]
实时时钟比较 / 捕获寄存器 3
RMAP: 0, PAGE: X
7
6
5
(EBH)
4
复位值:00H
3
2
0
CC_HOURS
r
rwh
1
0
符号
位
类型
描述
CC_HOURS
[4:0]
rwh
比较 / 捕获小时值 [4:0]
这些位代表比较 / 捕获操作下当前定时器的小时
值 ,取值范围为 0D - 23D,超出该范围的值被视
为 0D。
0
[7:5]
r
保留
读取返回 0 ;应写入 0。
RTC_RTCCR4 [ 模式 0 和模式 2]
实时时钟比较 / 捕获寄存器 4
RMAP: 0, PAGE: X
7
6
5
(ECH)
4
复位值:00H
3
2
1
0
CC_DAYS
rwh
符号
位
类型
描述
CC_DAYS
[7:0]
rwh
比较 / 捕获天数值 [7:0]
这些位代表比较 / 捕获操作下当前定时器的天数
值的低 8 位。
用户手册
RTC, V1.0
16-17
V1.1, 2010-09
XC83x
实时时钟
RTC_RTCCR5 [ 模式 0 和模式 2]
实时时钟比较 / 捕获寄存器 5
RMAP: 0, PAGE: X
7
6
5
(EDH)
4
复位值:00H
3
2
1
0
0
CC_DAYS
r
rwh
符号
位
类型
描述
CC_DAYS
0
rwh
比较 / 捕获天数值 [8]
这些位代表比较 / 捕获操作下当前定时器的天数
值的 MSB。
0
[7:1]
r
保留
读取返回 0 ;应写入 0。
在模式 1 和模式 3 下,4 个比较和捕获寄存器 RTCCR0 - RTCCR3 用于保存 32 位比较值,
当 CNT 寄存器中的计数值与该比较值匹配时,将产生比较事件。当置位 RTCCT 触发捕
获事件时,RTCCR 寄存器的内容将在 2 个 CPU 时钟周期之后被捕获到的 CNT 值改写。
一旦触发捕获事件,有必要对实际比较值进行更新。
RTC_RTCCR0 [ 模式 1 和模式 3]
实时时钟比较 / 捕获寄存器 0
RMAP: 0, PAGE: X
7
6
5
(E7H)
4
复位值:00H
3
2
1
0
CC_VAL
rwh
符号
位
类型
描述
CC_VAL
[7:0]
rwh
比较 / 捕获值 [7:0]
这些位代表 32 位比较 / 捕获值的 [7:0],当前计
数值与比较值匹配时,将产生比较中断。
用户手册
RTC, V1.0
16-18
V1.1, 2010-09
XC83x
实时时钟
RTC_RTCCR1 [ 模式 1 和模式 3]
实时时钟比较 / 捕获寄存器 1
RMAP: 0, PAGE: X
7
6
5
(E9H)
4
复位值:00H
3
2
1
0
CC_VAL
rwh
符号
位
类型
描述
CC_VAL
[7:0]
rwh
比较 / 捕获值 [15:8]
这些位代表 32 位比较 / 捕获值的 [15:8]。当前
计数值与该值匹配时,将产生比较中断。
RTC_RTCCR2 [ 模式 1 和模式 3]
实时时钟比较 / 捕获寄存器 2
RMAP: 0, PAGE: X
7
6
5
(EAH)
4
复位值:00H
3
2
1
0
CC_VAL
rwh
符号
位
类型
描述
CC_VAL
[7:0]
rwh
比较 / 捕获值 [23:16]
这些位代表 32 位比较 / 捕获值的 [23:16]。当前
计数器值与该值匹配时,将产生比较事件。
RTC_RTCCR3 [ 模式 1 和模式 3]
实时时钟比较 / 捕获寄存器 3
RMAP: 0, PAGE: X
7
6
5
(EBH)
4
复位值:00H
3
2
1
0
CC_VAL
rw
用户手册
RTC, V1.0
16-19
V1.1, 2010-09
XC83x
实时时钟
符号
位
类型
描述
CC_VAL
[7:0]
rwh
比较 / 捕获值 [31:23]
这些位代表 32 位比较 / 捕获值的 [31:23]。当前
计数值与该值匹配时,将产生一个比较中断。
用户手册
RTC, V1.0
16-20
V1.1, 2010-09
XC83x
实时时钟
16.7.2
振荡器寄存器
XTAL 振荡器看门狗监控 32.768 kHz 片外振荡器的操作,检测振荡器频率是否低于阈值。
寄存器 OSC_CON 控制 32.768 kHz 振荡器关闭、控制 XTAL 振荡器看门狗的操作并监
控其状态。该寄存器位于 SCU 中。
OSC_CON
OSC 控制寄存器
RMAP: 0, PAGE: 1
(F4H)
7
6
5
4
0
INTOSC_
ST
XPD
XTAL2L
r
rh
rw
rh
复位值:30H
3
2
XTALOWD 75KOSC
RST
2L
rwh
1
0
48MOSC
2L
RCOWD
RST
rh
rwh
rh
符号
位
类型
描述
XTALOWDRST
3
rwh
32.768 kHz 片外振荡器看门狗复位
置位该位将把 XTAL2L 状态标志复位到 1 并重新启
动振荡器检测。该位将自动复位到 0,因此读取始
终返回 0。
0
不起作用
1
将 XTAL2L 标志复位到 1 并重新启动
32.768 kHz 振荡器看门狗。
XTAL2L
4
rh
32.768 kHz 片外振荡器频率过低标志
振荡器看门狗监控 32.768 kHz 片外振荡器频率。
0
片外振荡器频率高于阈值。
1
片外振荡器频率低于阈值。
XPD
5
rw
32.768 kHz XTAL 关闭控制
0
32.768 kHz XTAL 未关闭。
1
32.768 kHz XTAL 关闭。
用户手册
RTC, V1.0
16-21
V1.1, 2010-09
XC83x
UART
17
UART
17.1
概述
UART 是一个全双工异步接收 / 发送器,可以同时接收和发送数据。它还有接收缓存功
能,第一个字节从接收寄存器中读出之前,可以开始接收第二个字节。但是如果第二个
字节接收完毕时第一个字节仍未被读出,其中一个字节将会丢失。
UART 特性:
· 全双工异步模式
– 8 位或 9 位数据帧, LSB 在先
– 固定或可变波特率
· 接收缓存
· 多处理器通信
· 数据发送或接收完毕产生中断
17.2
系统信息
本节提供与 UART 相关的系统信息。
17.2.1
引脚
模式 0 下 (串行端口用作一个移位寄存器),数据从 RXD 移入, RXDO 移出, TXD 线
用来提供移位时钟,外部器件根据该移位时钟移入和移出数据。在模式 1, 2 和 3,端口
用作 UART,通过 TXD 发送数据,从 RXD 接收数据。
注: XC83x 不支持模式 0 操作,因此 RXDO 线不和任何通用 I/O 端口相连。
UART I/O 引脚通常被分配用作通用 I/O 端口的其它功能。寄存器 MODPISEL1 中的位
URRIS 用来选择 RXD 输入功能。 XC83x UART 引脚分配见表 17-1。
表 17-1
XC83x 中 UART 引脚功能
引脚
P0.5
功能
RXD_0
描述
UART 接收数据输入 0
由 ... 选择
MODPISEL1.URRIS = 000B
P0.6
RXD_1
UART 接收数据输入 1
MODPISEL1.URRIS = 001B
P1.0
RXD_2
UART 接收数据输入 2
MODPISEL1.URRIS = 010B
P3.2
RXD_3
UART 接收数据输入 3
MODPISEL1.URRIS = 011B
P3.1
RXD_4
UART 接收数据输入 4
MODPISEL1.URRIS = 100B
P2.1
RXD_5
UART 接收数据输入 5
MODPISEL1.URRIS = 101B
P2.7
RXD_6
UART 接收数据输入 6
MODPISEL1.URRIS = 110B
用户手册
UART, V1.6
17-1
V1.1, 2010-09
XC83x
UART
表 17-1
XC83x 中 UART 引脚功能
由 ... 选择
P0_ALTSEL0.P6 = 1B
P0_ALTSEL1.P6 = 1B
P0_ALTSEL2.P6 = 0B
引脚
P0.6
功能
TXD_0
描述
P1.0
TXD_1
UART 发送数据输出 1
P1_ALTSEL0.P0 = 1B
P1_ALTSEL1.P0 = 1B
P1.1
TXD_2
UART 发送数据输出 2
P1_ALTSEL0.P1 = 1B
P1_ALTSEL1.P1 = 1B
P3.2
TXD_3
UART 发送数据输出 3
P3_ALTSEL0.P2 = 1B
P3_ALTSEL1.P2= 1B
P0.5
TXD_4
UART 发送数据输出 4
P0_ALTSEL0.P5 = 0B
P0_ALTSEL1.P5 = 0B
P0_ALTSEL2.P5 = 1B
P0.7
TXD_5
UART 发送数据输出 5
P0_ALTSEL0.P7 = 0B
P0_ALTSEL1.P7 = 1B
P0_ALTSEL2.P7 = 0B
UART 发送数据输出 0
访问 MODPISEL1 寄存器之前,必须编程设置 SCU_PAGE 寄存器中的 PAGE 位域。
MODPISEL1
外设输入选择寄存器 1
RMAP: 0, PAGE: 3
7
6
(F4H)
5
EXINT2IS0 EXINT1IS
r
符号
URRIS
用户手册
UART, V1.6
rw
位
[2:0]
类型
rw
4
复位值:00H
3
2
1
EXINT0IS
URRIS
rw
rw
0
描述
UART 接收输入选择
000 选择 UART 接收输入 RXD_0
001 选择 UART 接收输入 RXD_1
010 选择 UART 接收输入 RXD_2
011 选择 UART 接收输入 RXD_3
100 选择 UART 接收输入 RXD_4
101 选择 UART 接收输入 RXD_5
110 选择 UART 接收输入 RXD_6
111 保留
17-2
V1.1, 2010-09
XC83x
UART
17.2.2
时钟配置
UART 的工作频率 PCLK 为 8 MHz 或 24 MHz。
17.2.3
中断事件和分配
表 17-2 列出 UART 的中断事件源以及对应的事件中断使能位和标志位。
表 17-2
UART 中断事件
事件
事件中断使能位
–
收到数据
事件标志位
SCON.RI
SCON.TI
发送数据
表 17-3 给出每个 UART 中断源的中断节点分配。
表 17-3
UART 事件的中断节点控制
事件
中断节点使能位
IEN0.ES
收到数据
中断节点标志位
–
向量地址
23H
发送数据
17.3
UART 模式
UART 有四种工作模式。模式 0,UART 用作一个 8 位移位寄存器;模式 1,UART 是一
个 8 位串行口;模式 2 和模式 3, UART 是一个 9 位串行口。模式 2 和模式 3 的唯一区
别在于波特率不同,模式 2 的波特率固定不变,模式 3 的波特率可变。可根据专用波特
率发生器的下溢速率、或定时器 T1 的溢出速率来设置可变的波特率。
设置 SM0 和 SM1 选择不同的工作模式,如表 17-4 所示。
表 17-4
SM0
UART 模式
SM1
工作模式
波特率
0
0
模式 0:8 位移位寄存器
fPCLK/2
0
1
模式 1:8 位移位 UART
可变
1
0
模式 2:9 位移位 UART
fPCLK/64 或 fPCLK/32
1
1
模式 3:9 位移位 UART
可变
用户手册
UART, V1.6
17-3
V1.1, 2010-09
XC83x
UART
17.3.1
模式 0, 8 位移位寄存器,波特率固定
模式 0 下,串行端口用作一个 8 位移位寄存器。数据从 RXD 移入, RXDO 移出, TXD
线用来提供移位时钟,外部器件根据该移位时钟移入和移出数据。
写入 SBUF 激活发送过程。一个机器周期之后,数据已被写入发送移位寄存器中,且第
9 位写入 1。在接下来的 7 个机器周期中,发送移位寄存器中的内容每右移一位,左边移
入一个 0,当数据字节的最高有效位 MSB 移到输出位置时,移位寄存器中还包含一个 1,
左边是一个全零序列。在置位 TI 之前,控制模块执行最后一次移位操作。
在 REN = 1 和 RI = 0 的条件下,启动接收操作。在接收周期的开始,11111110B 写入接
收移位寄存器。在随后的每一个机器周期,移位寄存器的内容左移一位,将 (同一个机
器周期内)RXD 线上的采样值从右边移入。当第一个字节中(初始字节 11111110B)的
0 到达移位寄存器的最左端时,控制模块执行最后一次移位操作,加载 SBUF 并置位 RI。
输入时钟为 fPCLK 时,传送波特率固定为 fPCLK/2,即每个机器周期传送一位。
17.3.2
模式 1, 8 位 UART,波特率可变
模式 1 中 UART 是 8 位串行口。数据帧由 1 位起始位 (0)、 8 位数据位和 1 位停止位
(1)组成,以可变波特率从 TXD 端发送或从 RXD 端接收。
写入 SBUF 激活发送过程。数据送入发送移位寄存器中,第 9 位装入“1”(和模式 0 相
同)。在 16 分频计数器下次翻转后的机器周期的 P1 时刻,起始位复制到 TXD 上,一个
位时间后,数据有效。再经过一个位时间,数据开始右移输出,从左边填入 0。当 MSB
移至移位寄存器的输出位置时,控制器执行最后一次移位并置位 TI。
在 RXD 端检测到负跳变时启动接收 (采样速率为波特率的 16 倍), 16 分频计数器复
位,并将 11111111B 写入接收移位寄存器。如果检测到有效起始位 (0)(基于 “三中
取二”采样),则将其移入寄存器,接着移入 8 位数据。如果接收到的第一位不是有效起
始位,控制器将重新回去检测 RXD 的负跳变。当起始位移至寄存器的最左端时,控制器
作最后一次移位,然后将 8 位数据装入 SBUF,将停止位装入 RB8 (SCON.2),置位
RI。上述操作只有满足以下条件时才发生:RI = 0 并且 SM2 = 0 (见章节 17.4)或接收
到的停止位 = 1。如果这些条件都不满足,所接收的数据就会丢失。
模式 1 发送 / 接收的相关时序如图 17-1 所示。
用户手册
UART, V1.6
17-4
V1.1, 2010-09
图 17-1
用户手册
UART, V1.6
TI
TXD
移位
数据
TX
时钟
17-5
RI
移位
位检测
采样时间
RXD
RX
时钟
起始位
D1
起始位
复位
D0
D0
D2
D1
D3
D2
D4
D3
D5
D4
D6
D5
D7
D6
停止位
D7
停止位
XC83x
UART
发送
接收
串行接口,模式 1,时序图
V1.1, 2010-09
XC83x
UART
17.3.3
模式 2, 9 位 UART,波特率固定
模式 2 中 UART 是 9 位串行口。由 1 位起始位 (0)、 8 位数据位、 1 位可编程数据位
(第 9 位)和一位停止位 (1)组成的数据帧发送到 TXD 端或从 RXD 端接收,发送时第
9 位取自 TB8 (SCON.3);接收时,第 9 位存入 RB8 (SCON.2)。
写入 SBUF 激活发送过程。数据被送入发送移位寄存器,TB8 被复制到第 9 位。在 16 分
频计数器下次翻转后的机器周期的 P1 时刻,起始位被复制到 TXD 上,一个位时间之后
数据有效。再经过一个位时间,数据开始右移输出。第一次移位,停止位 (1)从左边移
入,此后移入 0。当 TB8 移至输出位置时,控制器执行最后一次移位并置位 TI。
在 RXD 端检测到负跳变时启动接收 (采样率为波特率的 16 倍), 16 分频计数器复位,
并将 1111 1111B 写入接收移位寄存器。如果检测到有效起始位 (0)(基于 “三中取
二”),则将其移入寄存器,接着移入 8 位数据。如果接收的第一位不是有效起始位,控
制器将重新回去检测 RXD 的负跳变。当起始位移至寄存器的最左端时,控制器执行最后
一次移位,然后将 8 位数据装入 SBUF,第 9 位数据装入 RB8 (SCON.2),置位 RI。
上述操作只有满足以下条件时才发生:RI = 0 并且 SM2 = 0 (见章节 17.4)或第 9 位 =
1。如果这些条件都不满足,所接收的数据就会丢失。
UART 的波特率为 fPCLK/32 或 fPCLK/64,波特率取决于寄存器 PCON(功率控制寄存器)
中最高位 (SMOD)的设置,该位用于倍频选择。
17.3.4
模式 3, 9 位 UART,波特率可变
除了波特率可变之外,模式 3 和模式 2 完全相同。
所有模式下,数据的发送可由任何一条以 SBUF 为目的寄存器的指令启动;如果 REN =
1,由接收到有效起始位启动数据接收操作。
数据帧发送或接收完成时,串行接口产生中断请求。相应的中断请求标志分别为TI或 RI。
如果不使用串行中断 (串行中断被禁止), TI 和 RI 也可用来查询串行接口。
模式 2 和 3 发送 / 接收的相关时序如图 17-2 所示。
用户手册
UART, V1.6
17-6
V1.1, 2010-09
图 17-2
用户手册
UART, V1.6
TI
TXD
移位
数据
TX
时钟
17-7
RI
移位
位检测
采样时间
RXD
RX
时钟
起始位
起始位
复位
D0
D1
D0
D2
D1
D3
D2
D4
D3
D5
D4
D6
D5
D7
D6
D7
TB8
RB8
停止位
停止位
XC83x
UART
发送
接收
串行接口,模式 2 和 3,时序图
V1.1, 2010-09
XC83x
UART
17.4
多处理器通信
模式 2 和模式 3 还可专门用于多处理器通信,此时地址字节的第 9 位 = 1、数据字节的第
9 位 = 0。在这些模式下接收 9 位数据,第 9 位存入 RB8。始终以停止位来结束通信。串
口可编程设定为:接收到停止位后,只有当 RB8 = 1 串口中断才被激活。
可通过置位寄存器 SCON 中的位 SM2 使能该特性。多处理器系统中使用该特性的一种
方法描述如下。
当主机需要向数台从机之一发送数据块时,主机首先发送一个地址字节对目标从机进行
识别,地址字节和数据字节通过第 9 位区别:地址字节的第 9 位为 1 ;数据字节的第 9
位为 0。SM2 = 1 时,数据字节不会使从机产生中断,而地址字节将中断所有从机,因而
每个从机都会检查接收到的字节,判断是否被寻址。被寻址的从机将 SM2 清零,准备接
收主机发送的数据;未被寻址的从机的 SM2 保持为 1,对主机发送的数据不予理睬。
位 SM2 对模式 0 无影响。模式 1 中 SM2 可被用来检验停止位的有效性。模式 1 接收时,
如果 SM2 = 1,只有接收到有效的停止位才可产生接收中断。
用户手册
UART, V1.6
17-8
V1.1, 2010-09
XC83x
UART
17.5
波特率产生
根据不同的操作模式,有几种产生串口波特率时钟的方式:
在模式 0 和模式 2 中,波特率固定,所以它们使用:
· 固定时钟 (见章节 17.5.1)
在模式 1 和模式 3 中,可变波特率可由以下两种方式产生:
· UART 波特率发生器产生 (见章节 17.5.2),或者
· 定时器 T1 产生 (见章节 17.5.3)
由寄存器 LINST 中的位 BGS 选择可变波特率产生方式。
必须对 “波特率时钟”和 “波特率”加以区分。串行接口需要的时钟是波特率的 16 倍,
用于内部同步。因此,UART 波特率发生器和定时器 T1 必须为串口提供“波特率时钟”,
它被 16 分频即得到真正的 “波特率”。缩写 fPCLK 指输入时钟频率。
17.5.1
固定时钟
模式 0 和模式 2 的波特率固定:在模式 0 中波特率只能为 fPCLK/2 ;在模式 2 中波特率可
在 fPCLK/64 或 fPCLK/32 中选择,取决于 PCON 寄存器中的位 SMOD。
位 SMOD 用作倍频选择器,如公式 (17.1) 所示。如果 SMOD = 0 (复位之后的值),波
特率为输入时钟频率 fPCLK 的 1/64 ;如果 SMOD = 1,波特率为 fPCLK 的 1/32。
(17.1)
SMOD
2
模式2的波特率 = ---------------- × f PCLK
64
17.5.2
UART 波特率发生器
UART 波特率发生器可为 UART 模式 1 和模式 3 产生可变的波特率。波特率发生器具有
可编程设定的 11 位重载值、 3 位预分频器和 5 位分数分频器。
波特率发生器的时钟为输入时钟 fPCLK 经过预分频处理得到的 fDIV。波特率定时器递减计
数,可通过波特率运行控制位 BCON.R 启动或停止波特率定时器。每次定时器下溢都会
为串行通道提供一个时钟脉冲。每次下溢时,将保存在重载寄存器 BG 的 BR_VALUE 中
的 11 位重载值加载到波特率定时器。两次下溢之间的时间取决于分数分频器的“n”值,
由 BGL.FD_SEL 从 32 个值中进行选择,定时器计数次数比 BR_VALUE 规定的值多 1。
由位 BCON.BRPRE 选择预分频器。
寄存器 BG 为双功能波特率发生器 / 重载寄存器。读取 BG 返回定时器的内容,写 BG
(低位字节)始终更新重载寄存器。
仅当 BCON.R =0 时,才能写访问 BG。BCON.R 复位之后的下一个指令周期用重载寄存
器的内容自动重载定时器。当 BCON.R 置位时,任何写访问 BG 的操作都将被忽略。
波特率发生器的波特率取决于以下各位和寄存器值:
用户手册
UART, V1.6
17-9
V1.1, 2010-09
XC83x
UART
·
·
·
·
输入时钟 fPCLK
BCON.BRPRE 的值
BG.FD_SEL 的值
11 位重载值 BG.BR_VALUE
图 17-3 给出波特率发生器的简化框图。
fPCLK
fDIV
预分频器
带分数分频器的
波特率定时器
fBR
R
图 17-3
波特率发生器简化框图
根据下面的公式计算最终的波特率。
(17.2)
f PCLK
波特率 = ---------------------------------------------------------------------n
16 × PRE × ⎛⎝ BR_VALUE + ------⎞⎠
32
PRE 的值 (预分频器)由位域 BCON.BRPRE 选择。 BR_VALUE 代表重载值,被当作
无符号 11 位整数。n/32 由分数分频器的位域 BG.FDSEL 进行选择。
可产生的最大波特率限定为 fPCLK/32。因此,8 MHz 和 24 MHz 的模块时钟,对应的最大
可用波特率分别为 0.25 MBaud 和 0.75 MBaud。
表 17-5和表 17-6列出各种常见波特率、对应的参数设置以及与理想波特率之间的偏差。
表 17-5
波特率
(fPCLK =
8 MHz)
UART 典型波特率 (fPCLK = 8 MHz)
PRE
重载值
分数分频值
(BR_VALUE) (FD_NUM)
BG
寄存器1)
偏差
115.2 kBaud 1 (BRPRE = 000) 4 (4H)
11 (BH)
008BH
-0.08%
20 kBaud
1 (BRPRE = 000) 25 (19H)
0 (0H)
0320H
0.00%
19.2 kBaud
1 (BRPRE = 000) 26 (1AH)
1 (1H)
0341H
+0.04%
9600 Baud
2 (BRPRE = 001) 26 (1AH)
1 (1H)
0341H
+0.04%
用户手册
UART, V1.6
17-10
V1.1, 2010-09
XC83x
UART
表 17-5
波特率
(fPCLK =
8 MHz)
UART 典型波特率 (fPCLK = 8 MHz)
PRE
重载值
分数分频值
(BR_VALUE) (FD_NUM)
BG
寄存器1)
偏差
4800 Baud
4 (BRPRE = 010) 26 (1AH)
1 (1H)
0341H
+0.04%
2400 Baud
8 (BRPRE = 011) 26 (1AH)
1 (1H)
0341H
+0.04%
1) 16 位 BG 寄存器的值由 11 位 BR_VALUE 和 5 位 FD_NUM 级联得到。
表 17-6
波特率
(fPCLK =
24 MHz)
UART 典型波特率 (fPCLK = 24 MHz)
PRE
重载值
分数分频值
(BR_VALUE) (FD_NUM)
BG 寄存
器1)
偏差
115.2 kBaud
1 (BRPRE = 000) 13 (0DH)
1 (01H)
01A1H
-0.08%
20 kBaud
1 (BRPRE = 000) 75 (4BH)
0 (00H)
0960H
+0.00%
19.2 kBaud
1 (BRPRE = 000) 78 (4EH)
4 (04H)
09C4H
+0.00%
9600 Baud
2 (BRPRE = 001) 78 (4EH)
4 (04H)
09C4H
+0.00%
4800 Baud
4 (BRPRE = 010) 78 (4EH)
4 (04H)
09C4H
+0.00%
2400 Baud
8 (BRPRE = 011) 78 (4EH)
4 (04H)
09C4H
+0.00%
1) 16 位 BG 寄存器的值由 11 位 BR_VALUE 和 5 位 FD_NUM 级联得到。
用户手册
UART, V1.6
17-11
V1.1, 2010-09
XC83x
UART
17.5.3
定时器 1
UART 模块工作在模式 1 和模式 3 时,可用定时器 T1 产生可变的波特率。理论上,该定
时器可工作在任何一种模式下。但实际上,定时器 T1 必须设置为自动重载模式(定时器
T1 模式 2),适当设置定时器的高位字节以产生所需的波特率。波特率由定时器 T1 的溢
出速率和 PCON 寄存器中的 SMOD 取值共同决定,计算公式如下:
(17.3)
SMOD
2
× f PCLK
模式1,3的波特率 = --------------------------------------------------32 × 2 × ( 256 – TH1 )
对于给定波特率,定时器 T1 高位字节取值可由下式推导:
(17.4)
SMOD
2
× f PCLK
TH1 = 256 – --------------------------------------------------------------------32 × 2 × 模式1,3的波特率
注: 如果定时器 T0 工作在模式 3,定时器 T1 既不指示溢出也不会产生中断;当定时器
T0 使用其控制位和溢出标志时,定时器 T1 暂停。因此,UART 模块的波特率由定
时器 T0 而不是由定时器 T1 决定。用户应当避免在模式 3 下使用定时器 T0 和定时
器 T1 来产生波特率。
用户手册
UART, V1.6
17-12
V1.1, 2010-09
XC83x
UART
17.6
UART 中的 LIN 支持
UART 模块支持本地互连网络(LIN)协议的主机和从机操作。LIN 波特率检测特性由检
测分隔和同步字节的硬件逻辑组成,通过定时器T2来检测LIN总线波特率,从而使UART
模块与 LIN 的波特率同步、以进行数据发送和接收。
17.6.1
LIN 协议
LIN 是一种机动车内部网络互连的整体通信概念。该通信协议基于 SCI (UART)数据格
式、单主机 / 多从机概念、无需固定的时间基准即可实现各节点时钟同步。LIN 具有吸引
力的一大特性是:从节点无需通过石英晶振或陶瓷晶振即可实现自同步,大大降低了硬
件平台的成本。因此,需要计算并返回每一个报文帧的波特率。
LIN 的报文帧结构如图 17-4 所示。由以下部分组成:
·
·
·
·
报文头,由分隔域 (13 个位时间,低电平)、同步字节 (55H)和 ID 标识符域组成
回应时间
数据字节 (根据 UART 协议)
校验和
帧时隙
报文帧
报文头
同步字节
图 17-4
帧间间隔
回应间隔
被保护的
标识符
回应
数据 1
数据 2
数据 N
校验和
LIN 帧结构
每个字节域串行发送,如图 17-5 所示。首先发送 LSB ;最后发送 MSB。起始位编码为
值 “0”(显性值),停止位编码为值 “1”(隐性值)。
用户手册
UART, V1.6
17-13
V1.1, 2010-09
XC83x
UART
字节域
LSB
起始位 (位 0)
图 17-5
MSB
(位 7) 停止位
字节域结构
分隔域用作新帧的起始信令。只有该域不遵循图 17-5 所示的字节域结构。分隔域始终由
主机任务(主机模式)产生,它必须至少保持包括起始位在内的 13 位显性值,随后为分
隔符,如图 17-6 所示。分隔符必须至少保持 1 个标称位时间。
从节点将使用的分隔域检测阈值为 11 个标称位时间。
起始位
图 17-6
分隔符
分隔域
同步字节是确定时间基准的特定序列,值为 55H,如图 17-7 所示。
即使从机希望接收到字节域 (假定字节域相互分开),它始终要检测分隔域 / 同步序列。
如果在检测阶段接收到字节域,分隔域 / 同步序列检测将中止正在进行的数据传送,开始
新一帧数据的处理。
起始位
图 17-7
停止位
同步字节域
当主机发送了正确的 ID 标识符,相应的目标从机将接收和发送数据:
1.
2.
3.
4.
5.
从机等待同步分隔
从机和同步字节同步
从机侦听标识符 (ID)
从机根据 ID 标识符来确定接收或发送数据,或不进行任何操作
发送数据时,从机发送 2、 4 或 8 个数据字节,随后跟着校验字节
用户手册
UART, V1.6
17-14
V1.1, 2010-09
XC83x
UART
17.6.2
LIN 报文头发送
LIN 报文头发送只适用于主模式。在 LIN 通信中,主机任务决定在何时、将哪帧传送到总
线上;还决定由哪个从机来接收每帧数据。主机和从机之间所需的握手信息由主机的报
文头提供。
报文头由分隔序列、同步序列及随后的标识符组成。这三个域中,只有分隔域不能按正
常的 8 位 UART 数据格式传送。分隔域必须包含 13 位或更多的显性值以保证从机能正确
同步。
在 LIN 通信中,开始传送被保护的标识符时要求从机已被同步。为了实现同步,每一帧
以分隔域开始、随后紧跟同步字节。该序列是唯一的,它为任何从机任务提供了足够的
信息来检测新帧的开始、并在标识符开始时使从机同步。
17.6.2.1 和主机自动同步
一旦进入 LIN 通信,建立主从机连接,串行通信端 (主机)的传送速度 (波特率)用户
软件按照下述步骤进行自动同步:
步骤 1:初始化接口用于接收,初始化定时器用于波特率测量
步骤 2:等待来自主机的 LIN 帧
步骤 3:和主机波特率同步
步骤 4:进入主机请求帧或从机回应帧
在下一节,章节 17.6.2.2,给出微控制器建立 LIN 波特率检测需要的提示。
注: 每个主机请求报文头或从机回应报文头 LIN 帧都要进行重新同步和波特率建立操
作。
17.6.2.2 分隔 / 同步域检测逻辑的初始化
LIN 波特率检测特性使用定时器 T2 来检测 LIN 总线波特率。初始化过程如下:
微控制器的串行端口设置为模式 1 (8 位 UART,可变波特率)。
由位域 BCON.BGSEL 提供波特率范围。
翻转 BCON.BRDIS (在清零之前置 1)以初始化分隔 / 同步检测逻辑。
清除所有状态标志 LINST.BRK、 LINST.EOFSYN 和 LINST.ERRSYN 到 0。
将 T2 设置为捕获模式,由引脚 T2EX 的下降沿触发捕获操作。位 T2MOD.EDGESEL
缺省设置为 0 且位 T2CON. CP/RL2 设置为 1。
· 使能定时器 T2 外部事件。T2CON.EXEN2 设置为 1。(当引脚 T2EX 出现负跳变时,
置位 EXF2 标志)。
· 可由位域 T2MOD.T2PRE 设置 fT2 。
·
·
·
·
·
注: 推荐用户收到每个完整的 LIN 帧之后还翻转 BCON.BRDIS 位,以避免噪声环境中
错误的分隔域检测 (即 LIN 总线上的毛刺)。
用户手册
UART, V1.6
17-15
V1.1, 2010-09
XC83x
UART
17.6.2.3 波特率范围选择
分隔 / 同步位域检测逻辑支持的分隔域中的位的最大个数由公式 (17.5) 定义:
(17.5)
4095
最大位数 = 波特率 × -----------------------采样频率
采样频率由公式 (17.6) 给出:
(17.6)
PCLK 采样频率 = -----------------------BGSEL
8×2
如果分隔域中的位超过最大值,内部计数器将溢出,导致波特率检测错误。因此,对于
需要检测的波特率范围,必须选择合适的 BGSEL 值。
用户手册
UART, V1.6
17-16
V1.1, 2010-09
XC83x
UART
不同 BGSEL 设置所定义的波特率范围见表 17-7。
表 17-7
fPCLK
24 MHz
8 MHz
对应不同输入频率时 BGSEL 位域定义
BGSEL
可检测的波特率范围
fpclk/(2184*2^BGSEL) 至 fpclk/(72*2^BGSEL)
00B
11 kHz 至 333.3 kHz
01B
5.5 kHz 至 166.7 kHz
10B
2.8 kHz 至 83.3 kHz
11B
1.4 kHz 至 41.7 kHz
00B
3.7 kHz 至 111.1 kHz
01B
1.8 kHz 至 55.6 kHz
10B
0.92 kHz 至 27.8 kHz
11B
0.46 kHz 至 13.9 kHz
每个 BGSEL 值支持一定范围的波特率检测。如果所使用的波特率范围落在所定义的范围
之外,则可能不能正确检测波特率。
当 fpclk = 24 MHz 时,可检测的波特率范围为 1.4 kHz 至 333.3 kHz。选择 BGSEL 值时,
可参考以下范例:
·
·
·
·
如果波特率落在 1.4 kHz 到 2.8 kHz 之间,选择的 BGSEL 为 "11B"。
如果波特率落在 2.8 kHz 到 5.5 kHz 之间,选择的 BGSEL 为 "10B"。
如果波特率落在 5.5 kHz 到 11 kHz 之间,选择的 BGSEL 为 "01B"。
如果波特率落在 11 kHz 到 333.3 kHz 之间,选择的 BGSEL 值为 "00B"。如果波特率
为 20 kHz,则可选择的 BGSEL 值为 "00B", “01B”, “10B”, 和 “11B" 。然而,为了得到
更高的检测精度,建议用户选择 “00B"。
当 fpclk = 8 MHz 时,仍可检测波特率,此时可检测波特率范围为 0.46 kHz 至 111.1 kHz。
17.6.2.4 LIN 波特率检测
LIN 的波特率检测如图 17-8 所示,LIN 帧的报文头包括:
· 同步分隔域 (13 个位时间,低电平)
· 同步字节 (55H)
· 被保护 ID 域
用户手册
UART, V1.6
17-17
V1.1, 2010-09
XC83x
UART
第一个负跳变,
置位T2RHEN
负跳变触发的
T2的最后捕获值
自动启动T2
置位EOFSYN,
T2停止
同步字节 (55H)
同步分隔
起始
位
停止位
检查分隔域标志位BRK
是否置位
捕获值(8位)
图 17-8
LIN 自动波特率检测
第 1 个下降沿到来时:
· 置位定时器 T2 外部启动使能位 (T2MOD.T2RHEN)。缺省选择引脚 T2EX 的下降
沿触发定时器 T2 外部启动 (位 T2MOD.T2REGS 为 0)
第 2 个下降沿到来时:
· 硬件启动定时器 T2
第 3 个下降沿到来时:
· 定时器 T2 捕获同步字节 2 位的位时序
· 检查分隔域标志位 LINST.BRK
如果分隔域标志 LINST.BRK 被置位,软件可以继续捕获同步字节的 4/6/8 位。最后,同
步字节结束标志 (LINST.EOFSYN)置位,定时器 T2 停止工作。 T2 重载 / 捕获寄存器
(RC2H/L)存有 2/4/6/8 位的位时间。然后,LIN 子程序计算实际波特率。如果 UART 模
块使用波特率发生器产生波特率,则需设置 PRE 和 BG 的值。
在第 3 个下降沿之后,如果检测到下面的条件,软件可以退出当前操作并继续检测下一
个 LIN 帧的报文头:
· 分隔域标志 LINST.BRK 未置位,或者
· 同步字节错误标志 LINST.ERRSYN 被置位,或者
· 分隔域标志 LINST.BRK 被置位,但同步字节结束标志 LINST.EOFSYN 和同步字节错
误标志 LINST.ERRSYN 未被置位。
用户手册
UART, V1.6
17-18
V1.1, 2010-09
XC83x
UART
17.7
寄存器描述
除了 SCON 和 SBUF 寄存器既可从标准(非映射)SFR 区,也可从映射 SFR 区访问外,
其余 UART SFR 都位于标准 SFR 区域的 SCU 页 5。访问这些寄存器之前,必须编程设
置 SCU_PAGE 寄存器的 PAGE 位域 。
表 17-8 列出 SFR 的地址。
表 17-8
寄存器映射
地址
98H
寄存器
SCON
99H
SBUF
F2H
BCON
F3H
BGL
F4H
BGH
F5H
LINST
用户手册
UART, V1.6
17-19
V1.1, 2010-09
XC83x
UART
17.7.1
UART 寄存器
UART 有两个特殊功能寄存器 (SFR):控制寄存器 SCON 和数据寄存器 SBUF。复位
时,两个寄存器均返回到 00H。 SFR SCON 是串口控制和状态寄存器,该寄存器包含模
式选择位、发送和接收的第 9 位 (TB8 和 RB8)和串口中断位 (TI 和 RI)
SBUF 是串行接口的发送和接收缓存寄存器。数据写入 SBUF 将会加载到发送移位寄存
器并启动数据发送。该寄存器既用来发送也用来接收数据。发送数据写入该寄存器;接
收数据从该寄存器读出,但两条数据通路相互独立。
读取 SBUF 将会访问物理上分开的接收寄存器。
SBUF
串行数据缓存寄存器
RMAP: X, PAGE: X
7
6
(99H)
5
4
复位值:00H
3
2
1
0
VAL
rwh
符号
VAL
位
[7:0]
类型
rwh
描述
串行接口缓存寄存器
SCON
串行通道控制寄存器
RMAP: X, PAGE: X
(98H)
复位值:00H
7
6
5
4
3
2
1
0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
rw
rw
rw
rw
rw
rwh
rwh
rwh
符号
RI
用户手册
UART, V1.6
位
0
类型
rwh
描述
接收中断标志
模式 0 中,第 8 位接收结束时,由硬件置位;模式
1、 2 和 3 中,接收到停止位的中间时刻由硬件置
位。必须由软件清零。
17-20
V1.1, 2010-09
XC83x
UART
符号
TI
位
1
类型
rwh
描述
RB8
2
rwh
串口接收的位 9
模式 2 和 3 中,该位是接收到的第 9 位数据。
模式 1,该位是接收到的停止位。
模式 0 中,未使用该位。
TB8
3
rw
串口发送的位 9
模式 2 和 3 中,该位是发送的第 9 位数据。
REN
4
rw
串口接收使能
禁止串口接收
0B
1B
使能串口接收
SM2
5
rw
模式 2 和 3 中串口多处理器通信使能位
模式 2 或 3 中,若 SM2 被置 1,如果接收到的第 9
位数据 (RB8)为 0, RI 不会被激活;模式 1 中,
若 SM2 被置 1,如果没有接收到有效的停止位
(RB8), RI 不会被激活。模式 0 中, SM2 应为 0。
SM1
6
rw
串口工作模式选择
见 SM0 的定义。
SM0
7
rw
串口工作模式选择 [SM0, SM1]
00B 模式 0:8 位移位寄存器,固定波特率
(fPCLK/2)
01B 模式 1:8 位 UART,可变波特率
10B 模式 2:9 位 UART,固定波特率 (fPCLK/64 或
fPCLK/32)
11B 模式 3:9 位 UART,可变波特率
17.7.2
发送中断标志
模式 0 中,第 8 位发送结束时,由硬件置位;模式
1、 2 和 3 中,开始发送停止位时由硬件置位。必须
由软件清零。
波特率产生控制和状态寄存器
PCON
功率控制寄存器
RMAP: X, PAGE: X
7
6
(87H)
5
4
复位值:00H
3
2
1
0
SMOD
0
GF1
GF0
0
IDLE
rw
r
rw
rw
r
rw
用户手册
UART, V1.6
17-21
V1.1, 2010-09
XC83x
UART
符号
SMOD
位
7
0
类型
rw
1,[6:4] r
描述
波特率倍频使能
0B
模式 1、 2 和 3 的波特率禁止倍频
模式 2 的波特率倍频;只有由定时 T1 产生波
1B
特率时,模式 1 和 3 的波特率才倍频
保留
读操作返回 0 ;应写入 0。
BCON
波特率控制寄存器
RMAP: 0, PAGE: 5
7
(F2H)
6
复位值:00H
5
4
3
2
1
0
BGSEL
0
BRDIS
BRPRE
R
rw
r
rw
rw
rw
符号
R
位
0
类型
rw
描述
BRPRE
[3:1]
rw
预分频选择
选择由外设时钟分频得到的输入时钟 fDIV
000B fDIV = fPCLK
001B fDIV = fPCLK/2
010B fDIV = fPCLK/4
011B fDIV = fPCLK/8
100B fDIV = fPCLK/16
101B fDIV = fPCLK/32
其它值:保留
BRDIS
4
rw
禁止波特率检测
0B
使能分隔 / 同步检测
1B
禁止分隔 / 同步检测
波特率发生器运行控制位
0B
禁止波特率发生器
使能波特率发生器
1B
注: 仅在 R = 0 时,才能写入 BR_VALUE。
用户手册
UART, V1.6
17-22
V1.1, 2010-09
XC83x
UART
符号
BGSEL
位
[7:6]
类型
rw
描述
选择要检测的波特率范围
对应不同的 BGSEL 值,所检测的波特率范围由下面
的公式给出:
fpclk/(2184*2^BGSEL) < 波特率范围 <
fpclk/(72*2^BGSEL)
其中 BGSEL = 00B, 01B, 10B, 11B.
对应不同输入频率,位域 BGSEL 的取值见表 17-6。
LINST
LIN 状态寄存器
RMAP: 0, PAGE: 5
(F5H)
复位值:00H
7
6
5
4
3
2
1
BGS
SYNEN
ERRSYN
EOFSYN
BRK
0
rw
rw
rwh
rwh
rwh
r
0
符号
BRK
位
3
类型
rwh
EOFSYN
4
rwh
同步字节结束中断标志
该位由硬件置位,只能由软件清除。
0B
未检测到同步字节结束
1B
检测到同步字节结束
ERRSYN
5
rwh
同步字节错误中断标志
该位由硬件置位,只能由软件清除。
0B
未在同步字节中检测到错误
在同步字节中检测到错误
1B
SYNEN
6
rw
同步字节结束和同步字节错误中断使能
0B
禁止同步字节结束和同步字节错误中断
1B
使能同步字节结束和同步字节错误中断
BGS
7
rw
波特率发生器选择
0B
选择 UART 波特率发生器
1B
选择定时器 T1 作为波特率发生器
用户手册
UART, V1.6
描述
分隔域标志
该位由硬件置位,只能由软件清除。
0B
未检测分隔域
1B
检测到分隔域
17-23
V1.1, 2010-09
XC83x
UART
17.7.3
波特率发生器定时器 / 重载寄存器
波特率定时器 / 重载寄存器 BG 的低位字节和高位字节包含波特率定时器的 11 位重载值
和 5 位分数分频器的设置。
读取 BG 的低位字节返回波特率定时器的低 3 位和 FD_SEL 的设置,读取高位字节返回
波特率定时器的高 8 位。
写入寄存器 BG 将重载值载入到波特率定时器并选择分数分频因子,在 BCON.R 置位之
后的第一个指令周期进行加载操作。
仅在 R = 0 时,才能写入 BG。
BGL
波特率定时器 / 重载寄存器,低位字节
(F3H)
RMAP: 0, PAGE: 5
7
6
5
4
复位值:00H
3
2
BR_VALUE
FD_SEL
rwh
rw
符号
FD_SEL
位
[4:0]
类型
rw
BR_VALUE
[7:5]
rwh
1
0
描述
分数分频器选择
选择分数分频器 n/32,其中 n 为 FD_SEL 的值,范
围从 0 到 31。
例如,将 0001B 写入到 FD_SEL 选择的分数分频因
子为 1/32。
注: 如果 BR_VALUE = 000H ,则分数分频器无效
波特率定时器 / 重载值
11 位波特率定时器 / 重载值的低 3 位。
参见 BGH 寄存器的描述。
BGH
波特率定时器 / 重载寄存器,高位字节
(F4H)
RMAP: 0, PAGE: 5
7
6
5
4
复位值:00H
3
2
1
0
BR_VALUE
rwh
用户手册
UART, V1.6
17-24
V1.1, 2010-09
XC83x
UART
符号
BR_VALUE
用户手册
UART, V1.6
位
[7:0]
类型
rwh
描述
波特率定时器 / 重载值
11 位波特率定时器 / 重载值的高 8 位。
当 11 位 BR_VALUE 为 000H 时,旁路波特率定时
器。
17-25
V1.1, 2010-09
XC83x
IIC 总线
18
IIC 总线
18.1
概述
IIC 模块为微控制器和 IIC 总线之间提供符合 IIC 总线协议的通信接口。
IIC 可工作在主机模式或从机模式。主机模式下,由 IIC 模块执行仲裁,从而可用于多主
机系统中。 IIC 通信数据率可高达 400 KBaud,支持 7 位寻址和 10 位寻址。
特性:
·
·
·
·
·
·
主机模式或从机模式工作
支持多主机系统
执行仲裁和时钟同步
支持 7 位和 10 位寻址模式
产生的波特率可选,可高达 400 KBaud (快速模式)
通过中断服务程序或轮询实现的灵活控制
18.2
系统信息
本节提供与 IIC 相关的系统信息。
18.2.1
引脚
XC83x 中的 IIC 引脚分配见表 18-1。
表 18-1
XC83x 中的 IIC 引脚功能
引脚 功能
描述
由 ... 选择
P0.4 SCL_0
IIC 时钟输入 / 输出
P0_ALTSEL0.P4 = 0B
P0_ALTSEL1.P4 = 0B
P0_ALTSEL2.P4 = 1B
P0.2 SCL_1
IIC 时钟输入 / 输出
P0_ALTSEL0.P2 = 0B
P0_ALTSEL1.P2 = 1B
P3.0 SCL_2
IIC 时钟输入 / 输出
P3_ALTSEL0.P0 = 1B
P3_ALTSEL1.P0 = 1B
P0.7 SCL_3
IIC 时钟输入 / 输出
P0_ALTSEL0.P7 = 0B
P0_ALTSEL1.P7 = 0B
P0_ALTSEL2.P7 = 1B
P0.6 SDA_0
IIC 数据输入 / 输出
P0_ALTSEL0.P6 = 0B
P0_ALTSEL1.P6 = 0B
P0_ALTSEL2.P6 = 1B
用户手册
IIC, V1.1
18-1
V1.1, 2010-09
XC83x
IIC 总线
表 18-1
XC83x 中的 IIC 引脚功能
引脚 功能
描述
由 ... 选择
P0.3 SDA_1
IIC 数据输入 / 输出
P0_ALTSEL0.P3 = 0B
P0_ALTSEL1.P3 = 1B
P3.2 SDA_2
IIC 数据输入 / 输出
P3_ALTSEL0.P2 = 1B
P3_ALTSEL1.P2 = 1B
对于选中的同一组引脚,由于SCL和SDA的输入和输出功能设置相同,仅需通过GPIO模
块中的 Px_ALTSELn 寄存器进行输入输出设置。不需要单独的输入选择控制(PISEL)。
如果通过 Px_ALTSELn 寄存器选择的输入 / 输出多于一组,那么信号编号低的具有的优
先级较高。例如:如果输出信号 SDA_0 和 SDA_1 同时被选中,则输出仅来自 SDA_0。
18.2.1.1 输出引脚配置
分配给 IIC 线的引脚驱动器提供漏极开路输出。这点可确保 IIC 模块未上电时,不会给 IIC
总线带来任何负载。因此,有必要在 IIC 总线连线上添加外部上拉电阻 (100 KBaud 工
作时大约为 10 KΩ , 400 KBaud 工作时大约为 2 KΩ)。
在建立通讯连接之前,用于 IIC 总线通信的所有引脚必须切换到输出,必须使能这些引脚
的复用功能。
如果不由 IIC 模块驱动,这些引脚必须关闭其驱动器 (即漏极开路输出驱动 1)。由于外
部上拉器件的作用,空闲时相应的总线电平为 1。
18.2.2
时钟配置
IIC 的工作频率 PCLK 为 8 MHz 或 24 MHz。
如果完全不需要 IIC 功能,可通过关闭其时钟输入的方式整个的禁止该模块,以最大程度
降低功耗。可通过置位下述寄存器 PMCON1 中的 IIC_DIS 位来实现。
在访问 PMCON1 寄存器之前,必须编程设置 SCU_PAGE 寄存器中的 PAGE 位域。
PMCON1
外设管理控制寄存器 1
RMAP: 0, PAGE: 1
7
6
IIC_DIS
LTS_DIS
rw
rw
用户手册
IIC, V1.1
(EFH)
5
4
CDC_DIS MDU_DIS
rw
rw
18-2
复位值:FFH
3
2
1
0
T2_DIS
CCU_DIS
SSC_DIS
ADC_DIS
rw
rw
rw
rw
V1.1, 2010-09
XC83x
IIC 总线
符号
位
类型
描述
IIC_DIS
7
rw
IIC 禁止请求,高电平有效。
0
IIC 正常工作
1
请求禁止 IIC (缺省设置)
18.2.3
中断事件及其分配
表 18-2 列出来自 IIC 模块的中断事件源,以及对应的中断使能和标志位。
表 18-2
IIC 中断事件
事件
事件中断使能位
事件标志位
IIC 中断
CNTR.IEN
CNTR.IFLG
表 18-3 给出 IIC 中断源的中断节点分配情况。
表 18-3
IIC 事件的中断节点控制
事件
中断节点使能位
中断节点标志位
向量地址
IIC 中断
IEN1.EX2
–
43H
用户手册
IIC, V1.1
18-3
V1.1, 2010-09
XC83x
IIC 总线
18.3
状态码
由 STAT 寄存器中的 5 位状态码来定义 IIC 的状态。
当 STAT 中的状态码为 F8H 时,表示没有可用的相关状态信息,不产生中断且 CNTR 寄
存器中的 IFLG 位不置位。所有其他状态码与定义的 IIC 状态一一对应。当进入其中任意
一个状态时,对应的状态码出现在寄存器 STAT 中且 CNTR 寄存器中的 IFLG 位置位。当
IFLG 位被清除时,状态码返回到 F8H。
表 18-4
状态码
STAT寄存器值 状态
00H
总线错误
08H
发送起始条件 (START condition)
10H
发送重复起始条件 (Repeated START condition)
18H
发送地址和写位,收到应答 (ACK)位
20H
发送地址和写位,收到非应答位
28H
主机模式下发送数据字节,收到应答位
30H
主机模式下发送数据字节,收到非应答位
38H
在地址或数据字节中丢失仲裁
40H
发送地址和读位,收到应答位
48H
发送地址和读位,收到非应答位
50H
主机模式下收到数据字节,发送应答位
58H
主机模式下收到数据字节,发送非应答位
60H
收到从机地址和写位,发送应答位
68H
由于收到主机,从机地址和写位而丢失地址仲裁,发送应答位
70H
收到广播呼叫地址,发送应答位
78H
由于收到主,从地址和读位而丢失地址仲裁,收到应答位
80H
收到从机地址之后,收到数据字节,发送应答位
88H
收到从机地址之后,收到数据字节,发送非应答位
90H
收到广播呼叫地址之后,收到数据字节,发送应答位
98H
收到广播呼叫地址之后,收到数据字节,发送非应答位
A0H
从机模式下,收到停止条件 (STOP condition)或重复起始条件
A8H
收到从机地址和读位,发送应答位
B0H
由于收到主机,从机地址和读位而丢失地址仲裁,收到应答位
B8H
从机模式下发送数据字节,收到应答位
用户手册
IIC, V1.1
18-4
V1.1, 2010-09
XC83x
IIC 总线
表 18-4
状态码
STAT寄存器值 状态
C0H
从机模式下发送数据字节,收到非应答位
C8H
从机模式下发送最后一个字节,收到应答位
D0H
发送第二个地址字节和写位,收到应答位
D8H
发送第二个地址字节和写位,收到非应答位
E0H
未使用
E8H
未使用
F0H
未使用
F8H
没有相关的状态信息, IFLG = 0
如果 IIC 总线上出现非法情况,则进入到总线错误状态 (IIC 状态码为 00H)。为了从该
状态中恢复,CNTR 寄存器中的 STP 位必须置位且 IFLG 位必须被清除。IIC 模块返回到
空闲状态 (状态码为 F8H):将不在 IIC 总线上发送停止条件。
要请求恢复发送, STA 位置 1 的同时置位 STP 位。然后 IIC 将从总线错误中恢复过来,
发送一个起始条件。
18.4
波特率产生
为了支持大范围的输入时钟频率 (fIIC), IIC 提供两个分频器,用于在主机模式产生 IIC
总线上所需要的波特率。两个分频器由 BRCR 寄存器中的 PREDIV 和 BRP 位定义。
按照下述公式计算波特率:
(18.1)
f PCLK
f OSCL = -----------------------------------------------------------PREDIV
2
× ( BRP + 1 ) × 10
表 18-5 给出常用的波特率以及所需的分频器设置。
表 18-5
波特率选择
波特率 = 100 KBaud
波特率 = 400 KBaud
PREDIV
BRP+1
PREDIV
BRP+1
8 MHz
1 (1H)
4 (4H)
1 (1H)
1 (1H)
24 MHz
1 (1H)
12 (CH)
1 (1H)
3 (3H)
fPCLK
用户手册
IIC, V1.1
18-5
V1.1, 2010-09
XC83x
IIC 总线
根据下面的公式计算 IIC 总线的采样频率:
(18.2)
f PCLK
f SAMP = -----------------2 PREDIV
为了确保能够正确检测到总线上的起始和停止条件, IIC 模块对 IIC 总线进行采样的频率
必须至少是总线上的频率最快的主机总线时钟的 10 倍。在标准模式下,采样频率因此至
少为 1 MHz,在快速模式下,至少为 4 MHz,以确保其它总线主机正确操作。
18.5
时钟同步
当 IIC 主机模式工作时,如果由 IIC 总线上的另一个器件驱动时钟线, IIC 模块将其时钟
与 IIC 总线时钟同步。时钟的高电平周期将由产生最短高电平时钟周期的器件决定。时钟
的低电平周期将由产生最长低电平时钟周期的器件决定。
IIC 主机模式工作时,如果与一个时钟速度慢的从机通信,从机可将 SCL 线保持低电平,
直到其准备好接受下一位为止的方式来拉长每个位周期。IIC 将按照上述方法自动重新同
步时钟。
当 IIC 从机模式工作时,将在传送每个字节之后将 SCL 线保持低电平,直到寄存器 CNTR
中的 IFLG 被清除为止。
18.6
总线仲裁
主机模式下,IIC 将检查每个发送的逻辑 1,在 IIC 总线上是否表现为逻辑 1。如果总线上
的另一个器件驳回并将 SDA 线拉低,则仲裁丢失。如果发送数据字节或非应答位期间仲
裁丢失,则 IIC 将返回到空闲状态。如果发送地址期间仲裁丢失, IIC 将切换到从机模
式,从而 IIC 可识别自己的从机地址或者广播呼叫地址。
18.7
软件复位
通过向寄存器 SRST(地址 DFH)写任意值的方式,IIC 模块将被软件复位。该操作使得
IIC 返回到空闲状态 (STAT 设置为 F8H),并将 CNTR 寄存器中的 STP, STA 和 IFLG
位置为 0。
18.8
操作模式
IIC 模块的所有操作模式需要将 CNTR 寄存器中的 ENAB 位置 1。
18.8.1
主机发送
主机发送模式下, IIC 向从机接收器发送数个字节。
用户手册
IIC, V1.1
18-6
V1.1, 2010-09
XC83x
IIC 总线
将寄存器 CNTR 中的 STA 位置 1,进入到主机发送模式。然后 IIC 将测试 IIC 总线状态,
当总线空闲时,IIC 将发送一个起始条件。发送起始条件之后,IFLG 位将置位,STAT 寄
存器中的状态码将为 08H。在该中断被响应之前,必须将 7 位从机地址或 10 位从机地址
的第一部分加载到 DATA 寄存器中,其 LSB 被清 0 (也就是说,加上写位)以指示发送
模式。此时 IFLG 位应当被清除以促使继续进行传送。
发送 7 位从机地址 (或 10 位地址的第一部分)加上写位之后, IFLG 将再次被置位。
STAT 寄存器中的状态码可能是下述几种情况:
表 18-6
主机发送模式下,发送地址之后的状态码
状态码 IIC 状态
CPU 响应
18H
对应于 7 位地址:
地址 + 写位,
收到应答位
下一个 IIC 动作
向 DATA 写数据字节,清
除 IFLG
发送数据字节,接收应答
位
或者置位 STA,清除 IFLG 发送重复起始条件
或者置位 STP,清除 IFLG 发送停止条件
或者置位 STA 和 STP,清 发送停止条件,然后发送
除 IFLG
起始条件
对应于 10 位地址:
将扩展地址字节写入到
DATA,清除 IFLG
发送扩展数据字节
20H
地址 + 写位,
收到非应答位
与状态码 18H 相同
与状态码 18H 相同
38H
仲裁丢失
清除 IFLG
返回到空闲状态
或者置位 STA,清除 IFLG 当总线空闲时,发送起始
条件
68H
用户手册
IIC, V1.1
仲裁丢失
收到 SLA + 写位,
发送应答位
清除 IFLG, AAK = 0
接收数据字节,发送非应
答位
或者清除 IFLG, AAK = 1
接收数据字节,发送应答
位
18-7
V1.1, 2010-09
XC83x
IIC 总线
表 18-6
主机发送模式下,发送地址之后的状态码
状态码 IIC 状态
CPU 响应
下一个 IIC 动作
78H
仲裁丢失,
与状态码 68H 相同
收到广播呼叫地址,
发送应答位
与状态码 68H 相同
B0H
仲裁丢失,
向 DATA 写字节,清除
接收到 SLA + 读位, IFLG, AAK = 0
发送应答位
或者向 DATA 写字节,清
除 IFLG, AAK = 1
发送最后一个字节,接收
应答位
发送数据字节,接收应答
位
如果使用 10 位寻址,那么 10 位地址的第一部分 + 写位被成功发送之后,状态码将为 18H
或 20H。
中断被响应之后,发送地址第二部分, STAT 寄存器将包含下述状态码之一:
表 18-7
主机发送模式下,发送第二部分地址字节 (10 位寻址)之后的状态码
状态
码
IIC 状态
CPU 响应
下一个 IIC 动作
38H
仲裁丢失
清除 IFLG
返回到空闲状态
或者置位 STA,清除 IFLG 当总线空闲时,发送起始
条件
68H
B0H
用户手册
IIC, V1.1
仲裁丢失,
清除 IFLG, AAK = 0
收到 SLA + 写位,发
送应答位
或者清除 IFLG, AAK = 1
仲裁丢失,
接收 SLA + 读位,
发送应答位
接收数据字节,发送非应
答位
接收数据字节,发送应答
位
向 DATA 写字节,清除
IFLG, AAK = 0
发送最后一个字节,接收
应答位
或者向 DATA 写字节,清
除 IFLG, AAK = 1
发送数据字节,接收应答
位
18-8
V1.1, 2010-09
XC83x
IIC 总线
表 18-7
主机发送模式下,发送第二部分地址字节 (10 位寻址)之后的状态码
状态
码
IIC 状态
CPU 响应
下一个 IIC 动作
D0H
发送第二个地址字节 向 DATA 写字节,清除
+ 写位,收到应答位 IFLG
发送数据字节,接收应答
位
或者置位 STA,清除 IFLG 发送重复起始条件
或者置位 STP,清除 IFLG 发送停止条件
或者置位 STA 和 STP,清 发送停止条件,然后发送
除 IFLG
起始条件
D8H
发送第二个地址字节 与状态码 D0H 相同
+ 写位 ,收到非应答
位
与状态码 D0H 相同
如果已经发送了重复起始条件,状态码将为 10H,而不是 08H。
发送每个数据字节后, IFLG 将置位,下述三种状态码之一将出现在 STAT 寄存器中。
表 18-8
主机发送模式下,发送数据之后的状态码
状态
码
IIC 状态
CPU 响应
下一个 IIC 动作
28H
发送数据字节
收到应答位
向 DATA 写字节,清除
IFLG
发送数据字节,接收应答
位
或者置位 STA,清除 IFLG 发送重复起始条件
或者置位 STP,清除 IFLG 发送停止条件
或者置位 STA 和 STP,清 发送停止条件,然后发送
除 IFLG
起始条件
30H
发送数据字节
收到非应答位
与状态码 28H 相同
与状态码 28H 相同
38H
仲裁丢失
清除 IFLG
返回到空闲状态
或者置位 STA,清除 IFLG 总线空闲时,发送起始条
件
当所有字节被发送完毕之后,应当向 CNTR 寄存器的 STP 位写 1。然后 IIC 将发送停止
条件,清除 STP 位并返回到空闲状态 (状态码为 F8H)。
用户手册
IIC, V1.1
18-9
V1.1, 2010-09
XC83x
IIC 总线
18.8.2
主机接收
主机接收模式下, IIC 将接收来自从机发送器的数个字节。
发送起始条件之后, IFLG 位将被置位, STAT 寄存器中的状态码将为 08H。此时从机地
址 (或者 10 位从机地址的第一部分)应当被加载到 DATA 寄存器中, LSB 设置为 1 以
指示读操作。此时 IFLG 位将被清除到 0 以促使传送继续进行。
当 7 位从机地址 (或者 10 位从机地址的第一部分)和读位被发送之后, IFLG 位将被再
次置位。 STAT 寄存器中的状态码可能为下述几种情况之一:
表 18-9
主机接收模式下,发送地址之后的状态码
状态
码
IIC 状态
40H
发送地址 + 读位,收 清除 IFLG, AAK = 0
到应答位
48H
发送地址 + 读位 ,
收到应答位
CPU 响应
下一个 IIC 动作
接收数据字节,发送非 应
答位
或者清除 IFLG, AAK = 1
接收数据字节,发送应答
位
置位 STA,清除 IFLG
发送重复起始条件
或者置位 STP,清除 IFLG 发送停止条件
或者置位 STA 和 STP,清 发送停止条件,然后发送
除 IFLG
起始条件
38H
仲裁丢失
清除 IFLG
返回到空闲状态
或者置位 STA,清除 IFLG 当总线空闲时,发送起始
条件
68H
仲裁丢失,
收到 SLA + 写位,
发送应答位
清除 IFLG, AAK = 0
接收数据字节,发送非应
答位
或者清除 IFLG, AAK = 1
接收数据字节,发送应答
位
78H
仲裁丢失,
与状态码 68H 相同
收到广播呼叫地址,
发送应答位
B0H
仲裁丢失,
收到 SLA + 读位 ,
发送应答位
用户手册
IIC, V1.1
与状态码 68H 相同
向 DATA 写字节,清除
IFLG, AAK = 0
发送最后一个字节,接收
应答位
或者向 DATA 写字节,清
除 IFLG, AAK = 1
发送数据字节,接收应答
位
18-10
V1.1, 2010-09
XC83x
IIC 总线
如果使用 10 位寻址,使用 10 位地址 + 写位的从机首先被寻址。然后主机在 10 位地址的
第一部分之后,紧跟着再发送一个重启,但是 + 读位 – 之后状态码将为 40H 或 48H。由
从机来记住其在重启之前被选中。
如果已发送重复起始条件,状态码将为 10H,而不是 08H。
收到每个数据字节之后,IFLG 将被置位,STAT 寄存器中的状态码将为下面三种情况之
一:
表 18-10
主机接收模式下,收到数据之后的状态码
状态码 IIC 状态
CPU 响应
下一个 IIC 动作
50H
读取 DATA,清除 IFLG,
AAK = 0
接收数据字节,发送非应
答位
或者读取 DATA,清除
IFLG, AAK = 1
接收数据字节,发送应答
位
读取 DATA,置位 STA,
清除 IFLG
发送重复起始条件
或者读取 DATA,置位
STP,清除 IFLG
发送停止条件
或者读取 DATA,置位
STA 和 STP,清除 IFLG
发送停止条件,然后发送
起始条件
58H
38H
收到数据字节
发送应答位
收到数据字节,
发送非应答位
在发送非应答位期间 清除 IFLG
返回到空闲状态
仲裁丢失
或者置位 STA,清除 IFLG 当总线空闲时,发送起始
条件
收到所有字节之后,应当发送非应答位,然后应当向 CNTR 寄存器中的 STP 位写 “1”
的方式置位该位。 IIC 将发送一个停止条件,清除 STP 位并返回到空闲状态 (状态码为
F8H)。
18.8.3
从机发送
从机发送模式下,数个字节被发送至主机接收器。IIC 模块为了回应,CNTR 寄存器中的
AAK 位需要被置位。
起始条件之后,当 IIC 接收到自己的从机地址和读位, IIC 将进入到从机发送模式。然后
IIC 将发送一个应答位并置位 CNTR 寄存器中的 IFLG 位。 STAT 寄存器中的状态码将为
A8H。
注意:如果 IIC 具有扩展从机地址 (由 ADDR[7:3] 中的 11110B 指示),则该从机将首先
被选中,然后一个重启之后紧跟着另一个地址字节。如果该地址字节与保存在 ADDR 中
用户手册
IIC, V1.1
18-11
V1.1, 2010-09
XC83x
IIC 总线
的值匹配,接收到该地址字节之后 IIC 将发送一个应答位。此时产生一个中断, IFLG 将
被置位,状态码将为 A8H。主机不再发送第二个地址字节:需要由从机记忆在重启之前,
该从机被选中。
发送地址和接收从机地址以及读位过程中,如果仲裁丢失,则可从主机模式直接进入到
从机发送模式。 STAT 寄存器中的状态码将为 B0H。
然后需要发送的数据字节应当加载到 DATA 寄存器中且 IFLG 被清除。当 IIC 已经发送一
个字节并接收到应答位, IFLG 将被置位, STAT 寄存器中的状态码将为 B8H。一旦要发
送的最后一个字节被加载到 DATA 寄存器中,当 IFLG 被清除, AAK 位也应当被清除。
发送最后一个字节之后, IFLG 将被置位,且 STAT 寄存器中的状态码为 C8H。 IIC 返回
到空闲模式 (状态码为 F8H)。要想再次进入从机模式, AAK 位必须先被置 1。
发送一个字节之后,如果未接收到应答位, IFLG 将被置位, STAT 寄存器中的状态码为
C0H。 IIC 将返回到空闲状态。
应答位之后,如果检测到停止条件, IIC 将返回到空闲状态。
18.8.4
从机接收
在从机接收模式下,从主机发送器接收数个数据字节。
起始条件之后,当 IIC 接收到自身的从机地址和写位 (LSB = 0)之后, IIC 将进入从机
接收模式。然后 IIC 将发送一个应答位并置位 CNTR 寄存器中的 IFLG 位:此时 STAT 寄
存器中的状态码为 60H。当 IIC 接收到广播呼叫地址 00H 时, IIC 也会进入到从机接收模
式 (如果 ADDR 寄存器中的 GCE 位被置位)。此时状态码将为 70H。
注意:当 IIC 具有扩展从机地址 (由 ADDR[7:3] 的值为 11110B 表示), IIC 将在收到第
一个地址字节之后发送一个应答位,但是将不产生中断,IFLG 将不被置位且状态码将不
改变。仅在收到第二个地址字节之后,IIC 才产生中断,置位 IFLG 并且状态码变为 70H。
发送地址和从机地址 + 写位过程中 (或广播呼叫地址,如果 ADDR 寄存器中的 GCE 置
1),主机模式下如果仲裁丢失,则可直接进入到从机接收模式。然后 STAT 寄存器中的
状态码将为 68H (如果接收到从机地址) 或者 78H (如果接收到广播呼叫地址)。为了
继续进行数据传送, IFLG 必须被清除至 0 。
如果 CNTR 寄存器中的 AAK 位置为 1,那么接收到每个字节之后,发送一个应答位(SDA
上的低电平)且 IFLG 位被置位:STAT 寄存器将继续包含状态码 80H (或者 90H,如果
是在广播呼叫地址之后进入到从机接收模式)。可从 DATA 寄存器中读取接收到的数据字
节且 IFLG 位必须被清除,以允许继续进行传送操作。应答位之后,检测到停止条件或重
复起始条件时, IFLG 位被置位且 STAT 寄存器将包含状态码 A0H。
如果传送过程中, AAK 位被清除, IIC 将在接收到下一个字节之后,发送一个非应答位
(SDA 上的高电平),并且置位 IFLG 位, STAT 寄存器将包含状态码 88H (或者 98H,
如果是在接收到广播呼叫地址之后进入到从机接收模式)。当 IFLG 被清除至 0,IIC 将返
回到空闲模式 (状态码为 F8H)。
用户手册
IIC, V1.1
18-12
V1.1, 2010-09
XC83x
IIC 总线
18.9
寄存器描述
可从标准(非映射)SFR 区域访问 IIC 特殊功能寄存器 。表 18-11 列出 IIC 寄存器及其
地址。
表 18-11
寄存器映射
地址
寄存器
描述
DAH
IIC_ADDR
从机地址寄存器
DBH
IIC_DATA
数据字节寄存器
DCH
IIC_CNTR
控制寄存器
DDH
IIC_STAT
状态寄存器 (只读)
DDH
IIC_BRCR
时钟控制寄存器 (只写)
DEH
IIC_ADDRX
扩展从机地址寄存器
DFH
IIC_SRST
软件复位寄存器
用户手册
IIC, V1.1
18-13
V1.1, 2010-09
XC83x
IIC 总线
18.9.1
从机地址寄存器
ADDR 寄存器包含广播呼叫地址选择使能位和器件地址 (7 位寻址模式下的全部地址和
10 位寻址的地址的第一部分)。10 位寻址模式下,地址第二部分保存在 ADDRX 寄存器
中。
IIC_ADDR
从机地址寄存器
RMAP: 0, PAGE: X
7
6
(DAH)
5
4
复位值:00H
3
2
1
0
SLA
GCE
rw
rw
符号
位
类型
描述
GCE
0
rw
广播呼叫地址使能
0B
禁止广播呼叫地址的选项
1B
使能广播呼叫地址的选项
SLA
[7:1]
rw
从机地址
从机模式工作时,对于 7 位寻址, SLA 包含 IIC 的 7
位地址。
对于 10 位寻址,最高 5 位 SLA[6:2] 固定为
11110B,而 SLA[1:0] 包含 10 位从地址的高两位。
剩下的低 8 位地址位于 IIC_ADDRX 寄存器中。
用户手册
IIC, V1.1
18-14
V1.1, 2010-09
XC83x
IIC 总线
ADDRX 寄存器包含 10 位寻址模式的低 8 位从机地址。
IIC_ADDRX
扩展从机地址寄存器
RMAP: 0, PAGE: X
7
6
(DEH)
5
4
复位值:00H
3
2
1
0
SLAX
rw
符号
位
类型
描述
SLAX
[7:0]
rw
扩展从机地址
从机模式下,对于 10 位寻址方式, SLAX 包含低 8
位地址。
18.9.2
数据寄存器
DATA 寄存器包含数据字节或者要发送的从机地址或者刚接收到的数据字节。
IIC_DATA
数据寄存器
RMAP: 0, PAGE: X
7
6
(DBH)
5
4
复位值:00H
3
2
1
0
DATA
rw
符号
位
类型
描述
DATA
[7:0]
rw
数据字节
要发送或接收到的数据
用户手册
IIC, V1.1
18-15
V1.1, 2010-09
XC83x
IIC 总线
18.9.3
控制寄存器
CNTR 寄存器用于配置 IIC 并产生起始条件和停止条件,该寄存器还包含中断状态标志。
IIC_CNTR
控制寄存器
RMAP: 0, PAGE: X
(DCH)
复位值:00H
7
6
5
4
3
2
1
0
IEN
ENAB
STA
STP
IFLG
AAK
0
rw
rw
rwh
rwh
rwh
rw
r
符号
位
类型
描述
AAK
2
rw
应答控制
在主机模式或从机模式收到数据字节时,发送
0B
一个非应答位。
1B
如果出现下述情况之一,发送一个应答位:
1)接收到匹配的 7 位或 10 位从机地址; 2)
接收到广播呼叫地址; 3)主机或从机模式下
接收到一个数据字节。
注: 在从机发送器模式下,如果 AAK 位被清零,则
认为 DATA 寄存器中的字节为最后一个字节。
IFLG
3
rwh
中断标志
IFLG 位被硬件置位,只能由软件清除。
0B
未发生中断事件
1B
已发生中断事件
STP
4
rwh
停止主机模式
当 STP 位被置为 1, IIC 将发送一个停止条件。
如果 IIC 处于从机模式, STP 位被置位,则不会在
IIC 总线上发送停止条件,但是 IIC 的操作与已经接
收到停止条件的情况相同。
如果 STA 和 STP 位都被置位, IIC 将在发送起始条
件之前,先发送停止条件 (如果工作在主机模式)
IIC 将不发送任何停止条件
0B
IIC 将在 IIC 总线上发送一个停止条件
1B
注: 发送停止条件之后,STP 位被自动清除;向该
位写 0 无效。
用户手册
IIC, V1.1
18-16
V1.1, 2010-09
XC83x
IIC 总线
符号
位
类型
描述
STA
5
rwh
启动主机模式
当 STA 位被置 1 时, IIC 将进入到主机模式并且一
旦 IIC 总线空闲,就发送一个起始条件。
如果 IIC 已经处于主机模式,且已经发送一个或多个
字节,将发送一个重复起始条件。
如果从机模式下 IIC 仍然被访问, IIC 将完成从机模
式下的数据传送并且一旦 IIC 总线被释放,立即进入
到主机模式。
IIC 不进入主机模式
0B
1B
IIC 进入到主机模式并在 IIC 总线上发送一个
起始条件
注: 发出起始条件之后,STA 位被自动清除;向该
位写 0 无效。
ENAB
6
rw
IIC 使能
0B
禁止 IIC
1B
使能 IIC
IEN
7
rw
中断使能
0B
禁止中断
使能中断
1B
0
[1:0]
r
保留
读操作返回 0 ;应写入 0。
18.9.4
状态寄存器
只读的 STAT 寄存器用来保存 IIC 的 5 位状态码。
IIC_STAT
状态寄存器 [ 读模式 ]
RMAP: 0, PAGE: X
7
6
(DDH)
5
4
复位值:F8H
3
2
STAT
0
r
r
符号
位
类型
描述
STAT
[7:3]
r
状态码
5 位状态码 (见表 18-4)。
用户手册
IIC, V1.1
1
18-17
0
V1.1, 2010-09
XC83x
IIC 总线
符号
位
类型
描述
0
[2:0]
r
保留
读操作返回 0 ;应写入 0。
用户手册
IIC, V1.1
18-18
V1.1, 2010-09
XC83x
IIC 总线
18.9.5
波特率控制寄存器
只写寄存器 BRCR 用来控制 IIC 的采样频率和主机模式下的 IIC 的波特率。
IIC_BRCR
波特率控制寄存器 [ 只写模式 ]
(DDH)
RMAP: 0, PAGE: X
7
6
5
4
复位值:00H
3
2
1
0
0
BRP
PREDIV
w
w
w
符号
位
类型
描述
PREDIV
[2:0]
w
用于生成波特率的预分频器
000B 使用预分频因子 1
001B 使用预分频因子 2
010B 使用预分频因子 4
011B 使用预分频因子 8
100B 使用预分频因子 16
101B 使用预分频因子 32
110B 使用预分频因子 64
111B 使用预分频因子 128
BRP
[6:3]
w
波特率预分频器
决定 IIC 主机模式波特率
0
7
w
保留
应当写入 0。
18.9.6
软件复位寄存器
SRST 寄存器为 IIC 提供软件复位。
IIC_SRST
软件复位寄存器
RMAP: 0, PAGE: X
7
6
(DFH)
5
4
复位值:XXH
3
2
1
0
SRST
w
用户手册
IIC, V1.1
18-19
V1.1, 2010-09
XC83x
IIC 总线
符号
位
类型
描述
SRST
[7:0]
w
软件复位
向 SRST 位域写任意值将触发 IIC 软件复位。
用户手册
IIC, V1.1
18-20
V1.1, 2010-09
XC83x
高速串行同步接口
19
高速串行同步接口
19.1
概述
同步串行接口(SSC)支持全双工和半双工串行同步通信。串行时钟信号由 SSC 内部的
16 位波特率发生器产生 (主模式),或从外部主机接收得到 (从模式)。数据宽度、移
位方向、时钟极性和相位均可编程设定,从而能够和 SPI 兼容器件、或使用其它同步串
行接口的器件进行通信。数据发送和数据接收双缓存。
特性
· 主模式和从模式操作
– 全双工或半双工操作
· 数据发送、接收双缓存
· 灵活的数据格式
– 数据位个数可编程:2 位至 8 位
– 移位方向可编程:最低有效位 (LSB)或最高有效位 (MSB)先移位
– 时钟极性可编程:移位时钟低电平空闲或高电平空闲
– 时钟 / 数据相位可编程:在移位时钟的前沿或后沿进行数据移位
· 波特率可变
· 与串行外设接口 (SPI)兼容
· 中断产生
– 发送缓存寄存器已空
– 接收缓存寄存器已满
– 出错状况 (接收、相位、波特率、发送错误)
图 19-1 给出 SSC 的框图。
用户手册
SSC, V1.4
19-1
V1.1, 2010-09
XC83x
高速串行同步接口
PCLK
波特率
发生器
SS_CLK
时钟
控制
MS_CLK
移位
时钟
RIR
状态
接收中断请求
TIR
SSC 控制模块
寄存器 CON
发送中断请求
EIR
出错中断请求
控制
TXD(主模式 )
引脚
控制
16位移位寄存器
RXD(从模式 )
TXD(从模式 )
RXD(主模式 )
发送缓存寄存器
TB
接收缓存寄存器
RB
内部总线
图 19-1
19.2
SSC 框图
系统信息
本节给出与 SSC 相关的系统信息。
19.2.1
引脚
XC83x 中 SSC 引脚分配见表 19-1。
用户手册
SSC, V1.4
19-2
V1.1, 2010-09
XC83x
高速串行同步接口
表 19-1
XC83x 中的 SSC 引脚功能
引脚 功能
描述
由 ... 选择
P0.4 SCK_0
SSC 时钟输入 / 输出
输入:
MODPISEL.CIS = 00B
输出:
P0_ALTSEL0.P4 = 0B
P0_ALTSEL1.P4 = 1B
P0_ALTSEL2.P4 = 0B
P3.0 SCK_1
SSC 时钟输入 / 输出
输入:
MODPISEL.CIS = 01B
输出:
P3_ALTSEL0.P0 = 0B
P3_ALTSEL1.P0 = 1B
P2.6 SCK_2
SSC 时钟输入
输入:
MODPISEL.CIS = 10B
P2.2 SCK_3
SSC 时钟输入
输入:
MODPISEL.CIS = 11B
P0.5 MTSR_0
SSC 主机发送输出 / 从机接收输
入
输入:
MODPISEL.SIS = 000B
输出:
P0_ALTSEL0.P5 = 0B
P0_ALTSEL1.P5 = 1B
P0_ALTSEL2.P5 = 0B
P0.6 MTSR_1
SSC 从机接收输入
输入:
MODPISEL.SIS = 001B
P0.0 MTSR_2
SSC 主机发送输出 / 从机接收输
入
输入:
MODPISEL.SIS = 010B
输出:
P0_ALTSEL0.P0 = 0B
P0_ALTSEL1.P0 = 1B
P0.1 MTSR_3
SSC 从机接收输入
输入:
MODPISEL.SIS = 011B
P3.1 MTSR_4
SSC 主机发送输出 / 从机接收输
入
输入:
MODPISEL.SIS = 100B
输出:
P3_ALTSEL0.P1 = 0B
P3_ALTSEL1.P1 = 1B
用户手册
SSC, V1.4
19-3
V1.1, 2010-09
XC83x
高速串行同步接口
表 19-1
XC83x 中的 SSC 引脚功能
引脚 功能
描述
由 ... 选择
P3.2 MTSR_5
从机接收输入
输入:
MODPISEL.SIS = 101B
P2.1 MTSR_6
从机接收输入
输入:
MODPISEL.SIS = 110B
P2.7 MTSR_7
从机接收输入
输入:
MODPISEL.SIS = 111B
P0.6 MRST_0
SSC 主机接收输入 / 从机发送输
出
输入:
MODPISEL.MIS = 000B
输出:
P0_ALTSEL0.P6 = 0B
P0_ALTSEL1.P6 = 1B
P0_ALTSEL2.P6 = 0B
P0.5 MRST_1
SSC 主机接收输入
输入:
MODPISEL.MIS = 001B
P0.1 MRST_2
SSC 主机接收输入 / 从机发送输
出
输入:
MODPISEL.MIS = 010B
输出:
P0_ALTSEL0.P1 = 0B
P0_ALTSEL1.P1 = 1B
P0.0 MRST_3
SSC 主机接收输入
输入:
MODPISEL.MIS = 011B
P3.1 MRST_4
SSC 主机接收输入
输入:
MODPISEL.MIS = 100B
P3.2 MRST_5
SSC 主机接收输入 / 从机发送输
出
输入:
MODPISEL.MIS = 101B
输出:
P3_ALTSEL0.P2 = 0B
P3_ALTSEL1.P2 = 1B
SSC 使用三根线与外部器件通信。引脚 SCK 用作时钟线,引脚 MRST (主机接收 / 从
机发送)和 MTSR (主机发送 / 从机接收)用作串行数据的输入 / 输出线。
每条输入线可有多个不同输入源,由 MODPISEL 寄存器从中选择输入信号。与此相似,
每个输出线也可与多个信号相连,由对应端口的 ALTSELx 寄存器进行选择。
访问 MODPISEL 寄存器之前,必须编程设置 SCU_PAGE 寄存器的 PAGE 位域。
用户手册
SSC, V1.4
19-4
V1.1, 2010-09
XC83x
高速串行同步接口
MODPISEL
外设输入选择寄存器
RMAP: 0, PAGE: 3
7
6
(F3H)
5
4
复位值:00H
3
2
1
CIS
SIS
MIS
rw
rw
rw
符号
位
类型
描述
MIS
[2:0]
rw
主机模式接收输入选择
000 选择 SSC 主机接收输入 0
001 选择 SSC 主机接收输入 1
010 选择 SSC 主机接收输入 2
011 选择 SSC 主机接收输入 3
100 选择 SSC 主机接收输入 4
101 选择 SSC 主机接收输入 5
110 保留
111 保留
SIS
[5:3]
rw
从机模式接收输入选择
000 选择 SSC 从机接收输入 0
001 选择 SSC 从机接收输入 1
010 选择 SSC 从机接收输入 2
011 选择 SSC 从机接收输入 3
100 选择 SSC 从机接收输入 4
101 选择 SSC 从机接收输入 5
110 选择 SSC 从机接收输入 6
111 选择 SSC 从机接收输入 7
CIS
[7:6]
rw
从机模式时钟输入选择
00
选择 SSC 从机时钟输入 0
01
选择 SSC 从机时钟输入 1
10
选择 SSC 从机时钟输入 2
11
选择 SSC 从机时钟输入 3
用户手册
SSC, V1.4
19-5
0
V1.1, 2010-09
XC83x
高速串行同步接口
19.2.2
时钟配置
SSC 的工作频率 PCLK 可为 8 MHz 或 24 MHz。
如果完全不需要 SSC 功能,可通过关闭其时钟输入的方式禁止该模块,从而最大程度的
降低功耗。
访问 PMCON1 寄存器之前,必须编程设定 SCU_PAGE 中的 PAGE 位域。
PMCON1
外设管理控制寄存器 1
RMAP: 0, PAGE: 1
7
6
IIC_DIS
LTS_DIS
rw
rw
(EFH)
5
4
CDC_DIS MDU_DIS
rw
rw
复位值:FFH
3
2
1
0
T2_DIS
CCU_DIS
SSC_DIS
ADC_DIS
rw
rw
rw
rw
符号
位
类型
描述
SSC_DIS
1
rw
SSC 禁止请求,高有效
0
SSC 正常工作
1
请求禁止 SSC (缺省设置)
用户手册
SSC, V1.4
19-6
V1.1, 2010-09
XC83x
高速串行同步接口
19.2.3
中断事件和分配
表 19-2 列出 SSC 的中断事件源以及对应的中断节点分配。
注: 所有 SSC 中断使能位和标志位都在中断节点中设置。
表 19-2
SSC 事件的中断节点控制
事件
中断节点使能位
中断节点标志位
向量地址
传送开始
MODIEN.TIREN;
IEN1.ESSC
IRCON1.TIR
3BH
传送结束
MODIEN.RIREN;
IEN1.ESSC
IRCON1.RIR
3BH
出现错误
MODIEN.EIREN;
IEN1.ESSC
IRCON1.EIR
3BH
SSC 模块的三个中断使用中断结构 2,由寄存器 MODIEN 使能这些中断。访问 MODIEN
之前,必须编程设置 SCU_PAGE 中的 PAGE 位域。
MODIEN
外设中断使能寄存器
RMAP: 0, PAGE: 3
7
(F7H)
6
5
4
CCU6SR3 CCU6SR2
EN
EN
rw
r
rw
复位值:07H
3
2
1
0
0
RIREN
TIREN
EIREN
r
rw
rw
rw
符号
位
类型
描述
EIREN
0
rw
SSC 出错中断使能
0
禁止出错中断
1
使能出错中断
TIREN
1
rw
SSC 发送中断使能
0
禁止发送中断
1
使能发送中断
RIREN
2
rw
SSC 接收中断使能
0
禁止接收中断
1
使能接收中断
0
[5:3]
r
保留
读操作返回 0 ;应写入 0。
用户手册
SSC, V1.4
19-7
V1.1, 2010-09
XC83x
高速串行同步接口
19.3
一般操作
SSC 支持全双工和半双工同步通信,波特率可达 12 MBaud (@ 24 MHz 模块时钟)。
串行时钟信号可由 SSC 自身产生 (主模式)或从外部主机接收 (从模式)。数据宽度、
移位方向、时钟极性和相位均可编程设定,从而能够和串行外设接口(SPI)兼容器件进
行通信。数据发送和接收双缓存。SSC 内的 16 位波特率发生器可为 SSC 提供单独的串
行时钟信号。
SSC 可灵活配置,因此其可和其它同步串行接口通信,用作主机 / 从机或进行多主通信
的互连或者可与流行的兼容 SPI 接口进行通信。因此, SSC 可与移位寄存器 (I/O 扩
展),外设 (如 EEPROM 等等)或其它控制器 (联网)通信。 SSC 支持全双工和半双
工通信。通过 TXD 和 RXD 线发送或接收数据,通常这两条线分别和引脚 MTSR (主机
发送 / 从机接收)和 MRST (主机接收 / 从机发送)相连。时钟信号从 MS_CLK (主机
串行移位时钟)输出或从 SS_CLK (从机串行移位时钟)输入;这两条时钟线通常和引
脚 SCLK 相连。
19.3.1
工作模式选择
控制寄存器 CON 控制串行通道 SSC 的工作模式。该寄存器具有双重功能:
· 编程过程中 (CON.EN=0 禁止 SSC),可通过该寄存器访问控制位
· 工作工程中 (CON.EN=1 使能 SSC),可通过该寄存器访问状态标志
SSC 移位寄存器经引脚控制逻辑与发送线和接收线相连。串行数据的发送和接收同步进
行,且发送和接收操作同时发生,即接收数据和发送数据的位数相同。发送数据写入发
送缓存寄存器 (TB) ,移位寄存器一旦为空,则立即将 TB 的内容移入。 SSC 主机
(CON.MS=1)立刻开始发送; SSC 从机(CON.MS=0)将等待有效的移位时钟。开始
传送时,忙标志 CON.BSY 被置位,发送中断请求线 (TIR)被激活以指示寄存器 TB 可
重新装入。传送完设定的数据位 (2...8 位)之后,移位寄存器的内容移入接收缓存寄存
器 (RB),接收中断请求线 (RIR)被激活。如果没有进一步的数据发送 (TB 为空),
同时对 CON.BSY 清零。 CON.BSY 由硬件控制,不应由软件修改。
注: SSC 开始发送数据,在发送数据写入 TB 至少两个时钟周期之后置位 CON.BSY。
因此,不建议通过查询 CON.BSY 指示传送的开始和结束;建议由中断服务程序
(若中断被使能)或中断标志位 IRCON1.TIR 和 IRCON1.RIR(若中断被禁止)指
示传送的开始和结束。
注: 在给定的时间内每次只有一个 SSC 用作主机。
串行数据的传送可用很多方式设定:
·
·
·
·
·
·
数据宽度规定为 2 到 8 位
可先传送 LSB 或先传送 MSB
移位时钟可为低电平空闲或高电平空闲
可在移位时钟信号的前沿或后沿对数据移位
波特率范围从 183.11 Baud 到 12 Mbaud (@24 MHz 模块时钟)
可产生移位时钟 (MS_CLK)或接收移位时钟 (SS_CLK)
这些特性使 SSC 广泛适用于需要串行数据传送的应用领域。
用户手册
SSC, V1.4
19-8
V1.1, 2010-09
XC83x
高速串行同步接口
数据宽 度 选 择 支 持 从 2 位 到 8 位 “字 符”任 意 长 度数据帧的传送。先 传送 LSB
(CON.HB=0)可使 SSC 和 SSC 器件在同步模式下通信;或和其它串行接口、如 8051
的串行接口通信;先传送 MSB (CON.HB=1)可使 SSC 与兼容 SPI 接口进行通信。
无论如何设定数据宽度、选择先传送 LSB 还是 MSB,寄存器 TB 和 RB 中的传送数据始
终右对齐,数据的 LSB 存放在寄存器的位 0。内部移位寄存器逻辑将重排数据。TB 中未
选中的数据位被忽略; RB 中未选中的数据位无效、接收服务程序对其不予理睬。
时钟控制使 SSC 的收发行为可适用于多种不同的串行接口。用一个特定移位时钟沿(上
升或下降)移出发送数据;同时用另一个移位时钟沿锁存接收数据。位 CON.PH 选择用
时钟前沿或后沿发送 / 接收。位 CON.PO 选择空闲状态下移位时钟的电平。因此,对于
高电平空闲时钟,时钟前沿为时钟下降沿,即 1 到 0 的跳变 (见图 19-2)。
CON.
PO
CON.
PH
0
0
0
1
1
0
1
1
移位时钟
MS_CLK/SS_CLK
引脚
MTSR/MRST
发送数据
首位
末位
锁存数据
移位数据
图 19-2
19.3.2
串行时钟相位和极性选择
全双工工作
由三条线将各个器件相互连接。始终由主机来定义这三条线:和主机数据输出线 TXD 相
连的是发送线;和主机数据输入线 RXD 相连的是接收线;移位时钟线是 MS_CLK 或
SS_CLK。由被选作主机的器件产生移位时钟、并从 MS_CLK 线上将其输出。由于所有
从机会接收该时钟,它们的引脚 SCLK 必须切换到输入模式。主机移位寄存器的输出与
外部发送线相连,这些线依次连接至从机的移位寄存器输入。为了使能主机接收从机移
出的数据,从机移位寄存器的输出与外部接收线相连。外部连接是硬件连线,这些引脚
的功能和方向由各个器件是主机操作还是从机操作决定。
注: 图中所示的移位方向对于先传送 LSB 和先传送 MSB 的操作都适用。
初始化器件时,必须选定一个主机,其他所有器件都设置为从机操作。初始化过程包括
选择器件 SSC 的工作模式以及设置对应端口线的功能。
用户手册
SSC, V1.4
19-9
V1.1, 2010-09
XC83x
高速串行同步接口
器件 #1
主机
器件#2
移位寄存器
MTSR
MRST
时钟
从机
移位寄存器
CLK
发送
MTSR
接收
MRST
时钟
CLK
时钟
器件#3
从机
移位寄存器
MTSR
MRST
CLK
图 19-3
时钟
SSC 全双工配置
所有从机器件的数据输出引脚 MRST 都连接到同一条接收线上,如图 19-3 所示。数据传
送时,每个从机从移位寄存器移出数据。有两种方式避免(不同从机同时传送数据引起)
接收线上的数据传送冲突:
· 只有一个从机驱动接收线,即使能该从机 MRST 引脚驱动器。必须将所有其它从机的
MRST 引脚设置为输入,从而只有一个从机可将数据输出到主机的接收线上,其它从
机只能接收来自主机的数据。主机通过两种方式选择期望从其获取数据的从机器件:
通过单独的选择线或向该从机发送特殊命令。被选中的从机将 MRST 引脚切换到输
出,直到它收到一个取消信号或命令。这种方式仅适用于引脚能够禁止其输出驱动器
的情况。
· 从机在 MRST 引脚上采用漏极开路输出,形成线与连接。这种情况下接收线需要外部
上拉。所有未选中向主机发送数据的从机只发送 “1” ,从而避免了选中的从机发送
到接收线上的数据遭破坏。因为这一高电平不能被有效驱动到接收线上,只能由上拉
器件保持;选中的从机发送 “0”时,可有效的将接收线拉低。主机通过两种方式选
择期望从其获取数据的从机器件:通过单独的选择线或向该从机发送特殊命令。
执行完必要的 SSC 初始化,可使能串行接口。主机器件的时钟线此时进入设定的时钟极
性。开始传送之前数据线上的值为 0 或 1。传送结束后,数据线将始终保持最后发送的数
据位的逻辑电平。
当串行接口使能,主机器件将发送数据写入 TB,启动数据传送。该数据被复制到移位寄
存器中 (假定此时寄存器已空) ,在波特率发生器产生的下一个时钟,将选定的发送数
据的首位送到 TXD 线上 (只有 CON.EN=1 才可开始发送)。根据选择的时钟相位,在
用户手册
SSC, V1.4
19-10
V1.1, 2010-09
XC83x
高速串行同步接口
MS_CLK 线上产生时钟脉冲。同时,在相反的时钟沿,主机将输入线 RXD 上检测到的数
据位锁存并移入移位寄存器,发送数据和接收数据进行了 “交换” 。由于时钟线和所有
从机相连,从机移位寄存器将和主机移位寄存器同步移位 - 移出寄存器中的数据,移入输
入线上检测到的数据。在预设个数的时钟脉冲 (由数据宽度选择)之后,主机发送的数
据全部保存在所有从机移位寄存器中;同时主机移位寄存器中保存选中从机发送的数
据。主机和所有从机移位寄存器的内容被复制到接收缓存寄存器 RB,接收中断请求线
RIR 被激活。
当发送缓存寄存器的内容复制到从机的移位寄存器中,从机器件立刻在 RXD 上输出选中
的数据首位 (传送数据的 MSB 或 LSB)。直到 SS_CLK 的第一个时钟沿出现时才置位
CON.BSY。从机器件将不会象主机那样等待波特率发生器的下一个时钟,原因是:根据
所选择的时钟相位,由主机产生的首个时钟沿可能已经用于移出首个数据位。因此,在
此刻从机的首个数据位必须已经有效。
注: 无论有效数据是否被发送或接收, SSC 的发送和接收总是同时发生。
注: 在初始化主机 CLK 引脚时需多加注意,以免产生不期望的时钟跳变,该跳变可能
会干扰其它器件。在由相关的方向控制寄存器将时钟引脚切换到输出之前,必须由
控制寄存器 CON 选择时钟输出电平;通过相关的 ALTSEL 寄存器设置该引脚复用
功能输出选择;或将时钟空闲电平装入输出锁存器中。
19.3.3
半双工工作
在半双工模式下,一条数据线既用作数据接收又用作数据发送。半双工模式有两种端口
配置方式。第一种选择是使用所有三个引脚,但是数据交换线与每个器件的 MTSR 和
MRST 引脚连接,移位时钟线和 SCLK 引脚连接。第二种选择是使用两个引脚,要求
MTSR 和 MRST 线选择同一个 GPIO 引脚,因此建立通信仅需要单根数据交换线,移位
时钟线和前一种方式相同,与 SCLK 相连。
主机器件产生移位时钟控制数据的传送,同时从机器件接收主机发送的数据。由于所有
的发送和接收引脚均连接到同一条数据交换线上,串行数据可在任意两个器件之间传
送。
和全双工模式相似,通过两种方式避免数据交换线上的数据传送冲突:
· 只有发送器件可开启其发送引脚驱动器,此方式仅适用于引脚能够禁止其输出驱动器
的情况。
· 不发送数据的器件采用漏极开路输出并只发送 “1”
因为数据输入和输出彼此相连,发送器件将从输入引脚 (主机器件对应 MRST,从机对
应 MTSR)读回它发送的数据。若接收数据和发送数据不一致,通过这种方法可以检测
到公共数据交换线上数据是否遭破坏。
使用三个引脚的半双工模式端口配置见图 19-4。
用户手册
SSC, V1.4
19-11
V1.1, 2010-09
XC83x
高速串行同步接口
主机
器件#1
器件#2
发送
时钟
从机
移位寄存器
移位寄存器
MTSR
MTSR
MRST
MRST
CLK
时钟
CLK
公共
发送/
接收线
时钟
器件#3
从机
移位寄存器
MTSR
MRST
CLK
图 19-4
19.3.4
时钟
SSC 半双工设置
连续传送
当发送中断请求标志被置位,说明发送缓存寄存器 TB 已空、并准备好可装入新发送数
据。如果当前发送结束时已将新数据装入 TB,该数据立刻被移入移位寄存器,没有任何
附加延时开始发送下一轮数据。在数据线上两帧数据无间隔连续传送。例如,传送两个
字节看上去和传送一个字的效果相同。该特性用来和每次需要传送 8 位以上数据的器件
接口通信,这只需软件规定数据帧的总长度。该特性还可用来和字节宽器件和字宽器件
接口通信。
注: 该特性只允许传送数据宽度为所设定基本数据宽度的整数倍,因为在运行过程中
可能需要禁止 / 使能 SSC 来重新设定基本数据宽度。
用户手册
SSC, V1.4
19-12
V1.1, 2010-09
XC83x
高速串行同步接口
19.3.5
波特率产生
串行通道 SSC 自带 16 位专用波特率发生器,具有 16 位重载功能,使波特率的产生和定
时器无关。 SSC 波特率发生器如图 19-5 所示。
16 位重载寄存器
fPCLK
. 2
.
fMS_CLK/SS_CLK
16位计数器
fMS_CLK max 在主模式 < fPCLK/2
fSS_CLK max 在从模式 < fPCLK/4
图 19-5
SSC 波特率发生器
波特率发生器的输入时钟为模块时钟 fhw_clk,定时器递减计数。寄存器 BR具有双重功能,
是波特率发生器 / 重载寄存器。SSC 被使能时,读取 BR 返回定时器的计数值; SSC 被
禁止时,读取 BR 返回设定的重载值。该模式下,期望的重载值可写入到 BR。
注: SSC 被使能时,一定不能写访问 BR。
下面给出给定重载值时计算波特率,或给定波特率计算重载值的公式:
波特率 =
fhw_clk
2 * (<BR> + 1)
BR =
fhw_clk
2 * 波特率
-1
(19.1)
<BR> 代表重载寄存器的值,被当作无符号 16 位整数,波特率等于 fMS_CLK/SS_CLK 。
模块时钟为 24 MHz 时,可达到的最大波特率:主模式下为 12 MBaud (<BR> = 0000H)
或从模式下为 6 MBaud (<BR> = 0001H)。
表 19-3 列出一些常用的波特率以及所需的重载值和偏差,假设模块时钟为 24 MHz。
表 19-3
SSC 典型波特率 (fhw_clk = 24 MHz)
重载值
波特率 (= fMS_CLK/SS_CLK)
偏差
0000H
0.0%
0001H
12 MBaud (仅适用于主模式)
6 MBaud
0.0%
0005H
2 MBaud
0.0%
000BH
1 MBaud
0.0%
用户手册
SSC, V1.4
19-13
V1.1, 2010-09
XC83x
高速串行同步接口
表 19-3
SSC 典型波特率 (fhw_clk = 24 MHz)
重载值
波特率 (= fMS_CLK/SS_CLK)
偏差
0017H
500 kBaud
0.0%
0077H
100 kBaud
0.0%
FFFFH
183.11 Baud
0.0%
19.3.6
检错机制
SSC 能够检测四种出错情况。主从模式下均可检测接收出错和相位出错;仅在从模式下
检测发送出错和波特率出错。当检测到错误时,对应的出错标志位被 / 可被置位,如被使
能,激活出错中断请求线 (EIR)产生出错中断请求 (见图 19-6)。错误中断处理器会
检查出错标志以确定出错原因。出错标志不会被自动复位,中断被响应后必须由软件清
零。出错中断使能位被置位时,可由中断服务程序来响应出错情况;出错中断使能位未
被置位时,可由软件查询出错情况。
注: 出错中断处理器必须对相关 (被使能的)出错标志清零,以防止重复产生中断请
求。
寄存器 CON中
的位
TEN
&
TE
发送
出错
REN
&
RE
接收
>1
出错
出错中断请求
EIR
PEN
相位
出错
PE
BEN
波特率
出错
图 19-6
用户手册
SSC, V1.4
&
&
BE
SSC 错误中断控制
19-14
V1.1, 2010-09
XC83x
高速串行同步接口
接收出错 (主模式或从模式):当新的数据帧已接收完毕,但上个数据仍未从接收缓存
寄存器 RB 中读出时检测到接收出错。使能 CON.REN 时,置位出错标志 CON.RE 和出
错中断请求线 EIR。接收缓存寄存器 RB 中的旧数据将被新数据覆盖且不可恢复。
相位出错 (主模式或从模式):以模块时钟频率采样引脚 MRST(主模式)或引脚 MTSR
(从模式)上的输入数据,在移位时钟信号 SCLK 锁存时钟沿的一个周期之前和两个周期
之后若数据改变则检测到相位出错。此时置位出错标志 CON.PE,CON.PEN 被使能时,
置位出错中断请求线 EIR。
注: 当同时接收和发送数据时,如果波特率设置为 fhw_clk / 2,出现相位错误。
波特率出错 (从模式):当输入时钟信号和设定的波特率之间偏差超过 100% 时检测到
波特率出错,即实际波特率超过期望波特率的两倍或不到期望波特率的一半。此时置位
出错标志 CON. BE, CON.BEN 被使能时,置位 EIR。使用该检错功能要求将从机的波
特率发生器设置成可产生和主机器件相同的波特率。该特性可检测时钟线上错误的、多
余的或丢失的脉冲 (在某帧之内)。
注: 如果发生该错误且位 CON.AREN = 1,将自动复位 SSC。检测到过少或过多的时
钟脉冲时会自动复位,重新初始化 SSC。
注: 如果通信停止,任何传送之后都可出现该错误。这种情况的出现是由于 SSC 模块
支持背对背的多传送。为了处理这种情况,在完成一次传送之后,波特率检测器期
望在下一个时钟周期立即进行新的传送。
发送出错 (从模式):主机启动传送 (SS_CLK 已有效),但从机发送缓存寄存器 TB 在
上次传送后仍未更新,检测到发送出错。使能 CON.TEN 时,置位出错标志 CON.TE 和
EIR。如果发送缓存器未被更新即开始传送,从机将移出移位寄存器中“旧”的内容,它
通常是上次传送时接收到的数据。如果未选中该从机发送数据,这将可能导致半双工模
式下发送 / 接收线上数据被破坏(漏极开路输出设置)。该模式要求未被选中发送数据的
从机只发送 “1”;也就是说,传送前必须将 “FFFFH”装入从机发送缓存寄存器中。
注: 为了避免可能的数据冲突或数据错误识别,建议在任何传送之前始终先加载从机
发送缓存寄存器。
可通过控制寄存器 CON 中的出错状态标志确定出错中断请求 (接收、相位、波特率或
发送出错)产生的原因。
注: 出错状态标志 CON.TE, CON.RE, CON.PE 和 CON.BE 在进入出错中断服务程序
时不能被自动复位,必须由软件清零。
用户手册
SSC, V1.4
19-15
V1.1, 2010-09
XC83x
高速串行同步接口
19.4
中断
SSC 的三个中断可通过置位 / 清除 SFR SCU_MODIEN 中的对应位来单独使能或禁止。
各中断的详细描述见章节 19.3,总结见表 19-4。
表 19-4
SSC 中断源
中断
信号
描述
发送开始
TIR
指示发送缓存寄存器可重新装入新数据
发送结束
RIR
设定位数的数据已发送完成并移入接收缓存寄存器
接收出错
EIR
当新的数据帧已接收完毕,但上个数据仍未从接收缓存寄
存器中读出时,产生该中断
相位出错
EIR
在移位时钟信号 SCLK 锁存时钟沿的一个周期之前和两个
周期之后数据改变,产生该中断
波特率出错
(仅限从模
式)
EIR
当输入时钟信号和设定的波特率之间偏差超过 100% 时,
产生该中断
发送出错
(仅限从模
式)
EIR
主机启动发送,但从机的 TB 在上次传送后仍未更新,产生
该中断
用户手册
SSC, V1.4
19-16
V1.1, 2010-09
XC83x
高速串行同步接口
19.5
寄存器描述
可从标准 (非映射) SFR 区域访问 SSC 特殊功能寄存器。 SFR 的地址见表 19-5。
表 19-5
寄存器映射
地址
寄存器
AAH
CONL
ABH
CONH
ACH
TBL
ADH
RBL
AEH
BRL
AFH
BRH
用户手册
SSC, V1.4
19-17
V1.1, 2010-09
XC83x
高速串行同步接口
19.5.1
配置寄存器
串行通道 SSC 的工作模式由控制寄存器 CON 控制。该寄存器包含模式和检错选择控制
位,以及用于错误识别的出错状态标志位。根据位 EN 的设置,使能控制功能或状态标
志,使能主 / 从模式控制。
CON.EN = 0: 编程模式
SSC_CONL
控制寄存器低位 [ 编程模式 ]
(AAH)
RMAP: 0, PAGE: X
复位值:00H
7
6
5
4
3
2
1
LB
PO
PH
HB
BM
rw
rw
rw
rw
rw
0
符号
位
类型
描述
BM
[3:0]
rw
数据宽度选择
0000B 保留。不要使用该组合。
0001B 0111B 传送数据宽度为 2 … 8 位 (<BM>+1)
注: BM 位域的最高位始终为 0。因此传送和接收数
据的最大值为 8 位。允许的数据宽度为 2...8 位
(<BM>+1)
HB
4
rw
报文头控制
0B
先发送 / 接收 LSB
1B
先发送 / 接收 MSB
PH
5
rw
时钟相位控制
0B
在时钟的前沿移位输出发送数据,后沿锁存接收
数据
1B
在时钟的前沿锁存接收数据,后沿移位输出发送
数据
PO
6
rw
时钟极性控制
0B
时钟线低电平空闲,时钟前沿为低到高跳变
时钟线高电平空闲,时钟前沿为高到低跳变
1B
LB
7
rw
回环控制
0B
正常输出
接收输入和发送输出相连 (半双工模式)
1B
用户手册
SSC, V1.4
19-18
V1.1, 2010-09
XC83x
高速串行同步接口
SSC_CONH
控制寄存器高位 [ 编程模式 ]
(ABH)
RMAP: 0, PAGE: X
复位值:00H
7
6
5
4
3
2
1
0
EN
MS
0
AREN
BEN
PEN
REN
TEN
rw
rw
r
rw
rw
rw
rw
rw
符号
位
类型
描述
TEN
0
rw
发送出错中断使能
0B
禁止发送出错中断
1B
使能发送出错中断
REN
1
rw
接收出错使能
0B
禁止接收出错中断
1B
使能接收中断出错
PEN
2
rw
相位出错使能
0B
禁止相位出错中断
使能接收中断出错
1B
BEN
3
rw
波特率出错使能
0B
禁止波特率出错中断
使能波特率出错中断
1B
AREN
4
rw
自动复位使能
0B
波特率出错时,无需附加动作
波特率出错时, SSC 自动复位。
1B
MS
6
rw
主机选择
0B
从模式,从 SCLK 接收移位时钟
1B
主模式,产生移位时钟并输出至 SCLK
EN
7
rw
使能位 = 0
禁止发送和接收。访问控制位。
0
5
r
保留
读操作返回 0 ;应写入 0。
用户手册
SSC, V1.4
19-19
V1.1, 2010-09
XC83x
高速串行同步接口
CON.EN = 1: 工作模式
SSC_CONL
控制寄存器低位 [ 工作模式 ]
(AAH)
RMAP: 0, PAGE: X
7
6
5
4
复位值:00H
3
2
1
0
BC
r
rh
符号
位
类型
描述
BC
[3:0]
rh
位计数域
每次移位操作都更新移位计数器。
0
[7:4]
r
保留
读操作返回 0 ;应写入 0。
0
注: 该位域不能被写入。
SSC_CONH
控制寄存器高位 [ 工作模式 ]
(ABH)
RMAP: 0, PAGE: X
复位值:00H
7
6
5
4
3
2
1
0
EN
MS
0
BSY
BE
PE
RE
TE
rw
rw
r
rh
rwh
rwh
rwh
rwh
符号
位
类型
描述
TE
0
rwh
发送出错标志
0B
发送未出错
1B
从机发送缓存寄存器未被更新即开始传送数据
RE
1
rwh
接收出错标志
0B
接收未出错
接收缓存寄存器的内容在读出之前,新数据已接
1B
收完毕
用户手册
SSC, V1.4
19-20
V1.1, 2010-09
XC83x
高速串行同步接口
符号
位
类型
描述
PE
2
rwh
相位出错标志
0B
相位未出错
接收数据在采样时钟沿附近改变
1B
BE
3
rwh
波特率出错标志
0B
波特率未出错
1B
从机的实际波特率超过期望波特率的 2 倍或低于
0.5 倍
BSY
4
rh
忙标志
传送过程中被置位。
MS
6
rw
主机选择位
从模式。从 SCLK 接收移位时钟
0B
1B
主模式。产生移位时钟并从 SCLK 输出
EN
7
rw
使能位 = 1
发送和接收被使能。访问状态标志和主机 / 从机控制。
0
5
r
保留
读操作返回 0,应写入 0。
注: 该位不能被写入。
注: 在访问 CON 之前,先由 CON.EN 的状态决定访问 CON 的目标 (控制位或标志
位)。也就是说,在编程模式下(CON.EN = 0)CON 中写入 C057H 将初始化 SSC
(CON.EN 为 0),然后启动 SSC 工作(CON.EN = 1)。对 CON 进行写操作时,
必须对保留位写入 0。
用户手册
SSC, V1.4
19-21
V1.1, 2010-09
XC83x
高速串行同步接口
19.5.2
波特率定时器重载寄存器
SSC 的波特率定时器重载寄存器 BR 中包含波特率定时器的 16 位重载值。
SSC_BRL
波特率定时器重载寄存器低位
RMAP: 0, PAGE: X
7
6
(AEH)
5
4
复位值:00H
3
2
1
0
BR_VALUE
rw
符号
位
类型
描述
BR_VALUE
[7:0]
rw
波特率定时器 / 重载寄存器值
读取 BR 返回波特率定时器的 16 位计数值;写入
BR 将 BR_VALUE 装入波特率定时器重载寄存器
中。
SSC_BRH
波特率定时器重载寄存器高位
RMAP: 0, PAGE: X
7
6
(AFH)
5
4
复位值:00H
3
2
1
0
BR_VALUE
rw
符号
位
类型
描述
BR_VALUE
[7:0]
rw
波特率定时器 / 重载寄存器值
读取 BR 返回波特率定时器的 16 位计数值;写入
BR 将 BR_VALUE 装入波特率定时器重载寄存器
中。
19.5.3
发送缓存寄存器
SSC 的发送缓存寄存器 TB 中存放发送数据。
用户手册
SSC, V1.4
19-22
V1.1, 2010-09
XC83x
高速串行同步接口
SSC_TBL
发送缓存寄存器低位
RMAP: 0, PAGE: X
7
6
(ACH)
5
4
复位值:00H
3
2
1
0
TB_VALUE
rw
符号
位
类型
描述
TB_VALUE
[7:0]
rw
发送数据寄存器值
TB_VALUE 将发送的数据值,发送时 TB 中未被
选中的位不予理睬。
19.5.4
接收缓存寄存器
SSC 的接收缓存寄存器 RB 中存放接收数据。
SSC_RBL
接收缓存寄存器低位
RMAP: 0, PAGE: X
7
6
(ADH)
5
4
复位值:00H
3
2
1
0
RB_VALUE
rh
符号
位
类型
描述
RB_VALUE
[7:0]
rh
接收数据寄存器值
RB 中存放接收数据 RB_VALUE, RB 中未被选中
的位无效,不予理睬。
用户手册
SSC, V1.4
19-23
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
20
LED 和触摸感应控制器
本章将对 LEDTSCU 模块予以详细说明。
20.1
概述
LED 和触摸感应控制单元 (LEDTSCU)提供多达 8 个行引脚和 8 个列引脚,在单个引
脚上实现 LED 驱动和触摸盘 (touchpad)感应的时分复用控制。
LEDTSCU 提供优化的硬件控制用于列使能和功能选择;需由软件控制每个列时间片的
行使能。
特性
LEDTSCU 支持 LED 驱动功能,具有以下特性:
·
·
·
·
·
·
多达 8 列 LED 选择;若触摸感应功能使能,最多 7 列 LED 选择;
每列 LED 的时间片长度和时间片内的有效时间可配置
每个时间片 (每列)可驱动多达 8 个 LED,共阴极或共阳极
对每个列时间片的行序列进行映射传送
每个时间片产生中断
通过 SFR 控制行引脚和列引脚
LEDTSCU 支持按盘感应功能,具有以下特性:
·
·
·
·
·
·
·
多达 8 个按盘输入
可由软件控制 pad turn (按盘时帧),也可完全由硬件通过循环的方式控制 pad turn
按盘振荡控制电路可灵活配置 (如振荡频率和有效时间控制)
8 位计数器:对引脚上的振荡周期进行计数
和 LED 功能共用时间片长度配置,时间片内的有效时间可配置
每个时间片和时帧产生中断
触摸感应功能下的引脚硬件控制
注: 本章在提到 LED 或触摸感应引脚时,多处用 “引脚 COL[x]” , “TSIN[x]”表示。
它们实际上是由用户通过引脚复用功能选择位域 ALTSEL 进行配置的,详见章
节 20.9 的描述。
用户手册
LEDTSCU, V1.2.2
20-1
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
20.2
系统信息
本节给出 LEDTSCU 的相关系统信息。
20.2.1
引脚配置
表 20-1 说明如何使能 / 选择特定的 LED 或触摸感应引脚功能。
表 20-1
XC83x 引脚功能和选择
引脚
功能
描述
通过以下设置选择
P0.0
TSIN0/LINE0
触摸感应输入 0/
LED 行 0
P0_ALTSEL0.P0 = 1B
P0_ALTSEL1.P0 = 0B
P0.1
TSIN1/LINE1
触摸感应输入 1/
LED 行 1
P0_ALTSEL0.P1 = 1B
P0_ALTSEL1.P1 = 0B
P0.2
TSIN2/LINE2
触摸感应输入 2/
LED 行 2
P0_ALTSEL0.P2 = 1B
P0_ALTSEL1.P2 = 0B
P0.3
TSIN3/LINE3
触摸感应输入 3/
LED 行 3
P0_ALTSEL0.P3 = 1B
P0_ALTSEL1.P3 = 0B
P0.4
TSIN4/LINE4
触摸感应输入 4/
LED 行 4
P0_ALTSEL0.P4 = 1B
P0_ALTSEL1.P4 = 0B
P0_ALTSEL2.P4 = 0B
P0.5
TSIN5/LINE5
触摸感应输入 5/
LED 行 5
P0_ALTSEL0.P5 = 1B
P0_ALTSEL1.P5 = 0B
P0_ALTSEL2.P5 = 0B
P0.6
TSIN6/LINE6
触摸感应输入 6/
LED 行 6
P0_ALTSEL0.P6 = 1B
P0_ALTSEL1.P6 = 0B
P0_ALTSEL2.P6 = 0B
P0.7
TSIN7/LINE7
触摸感应输入 7/
LED 行 7
P0_ALTSEL0.P7 = 1B
P0_ALTSEL1.P7 = 0B
P0_ALTSEL2.P7 = 0B
P1.0
COL0_0
LED 列 0
P1_ALTSEL0.P0 = 1B
P1_ALTSEL1.P0 = 0B
P0.4
COL0_1
LED 列 0
P0_ALTSEL0.P4 = 1B
P0_ALTSEL1.P4 = 0B
P0_ALTSEL2.P4 = 1B
P1.1
COL1_0
LED 列 1
P1_ALTSEL0.P1 = 1B
P1_ALTSEL1.P1 = 0B
用户手册
LEDTSCU, V1.2.2
20-2
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
表 20-1
XC83x 引脚功能和选择
引脚
功能
描述
通过以下设置选择
P0.5
COL1_1
LED 列 1
P0_ALTSEL0.P5 = 1B
P0_ALTSEL1.P5 = 0B
P0_ALTSEL2.P5 = 1B
P1.2
COL2_0
LED 列 2
P1_ALTSEL0.P2 = 1B
P1_ALTSEL1.P2 = 0B
P0.6
COL2_1
LED 列 2
P0_ALTSEL0.P6 = 1B
P0_ALTSEL1.P6 = 0B
P0_ALTSEL2.P6 = 1B
P1.3
COL3_0
LED 列 3
P1_ALTSEL0.P3 = 1B
P1_ALTSEL1.P3 = 0B
P0.7
COL3_1
LED 列 3
P0_ALTSEL0.P7 = 1B
P0_ALTSEL1.P7 = 0B
P0_ALTSEL2.P7 = 1B
P0.4
COL3_2
LED 列 3
P0_ALTSEL0.P4 = 0B
P0_ALTSEL1.P4 = 1B
P0_ALTSEL2.P4 = 1B
P1.4
COL4
LED 列 4
P1_ALTSEL0.P4 = 1B
P1_ALTSEL1.P4 = 0B
P1.5
COL5
LED 列 5
P1_ALTSEL0.P5 = 1B
P1_ALTSEL1.P5 = 0B
P3.0
COL6
LED 列 6
P3_ALTSEL0.P0 = 1B
P3_ALTSEL1.P0 = 0B
P3.1
COLA_0
触摸感应外部上拉 / LED 列 A
P3_ALTSEL0.P1 = 1B
P3_ALTSEL1.P1 = 0B
P1.5
COLA_1
触摸感应外部上拉 / LED 列 A
P1_ALTSEL0.P5 = 1B
P1_ALTSEL1.P5 = 1B
P0.6
COLA_2
触摸感应外部上拉 / LED 列 A
P0_ALTSEL0.P6 = 0B
P0_ALTSEL1.P6 = 1B
P0_ALTSEL2.P6 = 1B
P0.7
COLA_3
触摸感应外部上拉 / LED 列 A
P0_ALTSEL0.P7 = 0B
P0_ALTSEL1.P7 = 1B
P0_ALTSEL2.P7 = 1B
P0.4
COLA_4
触摸感应外部上拉 /LED 列 A
P0_ALTSEL0.P4 = 1B
P0_ALTSEL1.P4 = 1B
P0_ALTSEL2.P4 = 1B
用户手册
LEDTSCU, V1.2.2
20-3
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
20.2.2
时钟配置
系统为 LED&TSCU 内核配有两种时钟源:FPCLK (48 MHz)和 SPCLK (8 MHz)。
内核主要以 FPCLK(48 MHz)时钟工作。LEDTS 计数器可由用户配置,从而以 FPCLK
或 SPCLK 的不同分频时钟工作。触摸感应计数器及相应的逻辑以 FPCLK 对按盘振荡周
期进行计数和处理。
若彻底不需要 LEDTSCU 功能,可关闭其时钟输入以禁用该模块,从而最大程度降低功
耗,通过置位寄存器 PMCON1 中的位 LTS_DIS 来实现 (描述见下页)。
在访问 PMCON1 寄存器之前必须先对 SCU_PAGE 寄存器中的位域 PAGE 进行设置。
PMCON1
外设管理控制寄存器 1
RMAP: 0, PAGE: 1
7
6
IIC_DIS
LTS_DIS
rw
rw
(EFH)
5
4
CDC_DIS MDU_DIS
rw
复位值:FFH
3
2
1
0
T2_DIS
CCU_DIS
SSC_DIS
ADC_DIS
rw
rw
rw
rw
rw
符号
位
类型
描述
LTS_DIS
6
rw
LEDTSCU 禁用请求,高有效
0
LEDTSCU 正常工作
1
请求禁用 LEDTSCU (缺省设置)
0
5
r
保留
读取返回 0 ;应写入 0。
20.2.3
中断事件和中断节点分配
LEDTSCU 模块产生的中断事件以及相应的中断使能位和标志位归纳见表 20-2。
表 20-2
LEDTSCU 中断事件
事件
事件中断使能位
事件标志位
时间片开始
GLOBCTL1.ITS_EN
GLOBCTL1.TSF
时帧开始
GLOBCTL1.ITF_EN
GLOBCTL1.TFF
表 20-3 给出 LEDTSCU 中断事件的中断节点分配情况。
用户手册
LEDTSCU, V1.2.2
20-4
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
表 20-3
LEDTSCU 中断事件的中断节点控制
事件
中断节点使能位
中断节点标志位
中断向量
地址
时间片开始
IEN1.ECCIP3
–
6BH
时帧开始
IEN1.ECCIP1
–
5BH
20.2.4
IP 互连
LEDTSCU 和其他外设的硬件互连使得无需软件干预、自动化的程度更高。
表 20-4
LEDTSCU 互连
LEDTSCU 功能 / 信号
所连接的其它模块功能 / 信号
比较匹配 (输出):LEDTS_CM
ADC 外部触发 (输入):REQTR0G,
REQTR1G
时间片中断 (输出):LEDTS_TSI
ADC 外部触发 (输入):REQTR0H,
REQTR1H
20.2.5
调试挂起控制
调试监控模式有效时,LEDTSCU 定时器 / 计数器、LEDTS 计数器和 TS 计数器可被(共
同)使能挂起操作。 可通过寄存器 MODSUSP 配置调试挂起控制,具体描述参见 章
节 10.2.4。
调试挂起后,这些计数器停止计数 (保持最后的计数值)。
20.3
引脚上 LED 和触摸感应功能的时分复用控制
单个引脚支持 LED 和触摸感应功能的时分复用控制。硬件提供 LED 模式或触摸感应模式
的功能使能控制。
在每个时帧内,最多 8 个时间片可配置 – 最多有 1 个用于触摸感应功能、 8 个用于 LED
功能。若使能触摸感应,最后一个时间片用于该功能,此时 pad turn 有效的引脚所对应
的按盘振荡电路将被使能。若使能 LED 功能,时帧内的其余时间片用于该功能 (一次使
能一列 LED)。
由于每个时帧内只有一个时间片可用于触摸感应功能,缺省状态下,硬件会根据用户配
置的触摸感应输入的个数 (pad turns)自动使能每个按盘振荡器 (pad_turn_x)并以循
环的方式感应各个引脚。此外,也可以由用户通过软件来控制 pad turn 有效。若禁用触
摸感应功能,在最后一个时间片内 pad turn 无效。
一个时帧由多个时间片组成,时间片的长度和个数可配置。若使能触摸感应功能的 pad
turn 硬件自动控制,多个时帧组成一个时段,时段内应包括所有 pad_turn。 LED 和 / 或
触摸感应功能对应的时间片的长度相同,通过 LEDTS 计数器设置,详见章节 20.4,章
节 20.8 和 图 20-2。
用户手册
LEDTSCU, V1.2.2
20-5
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
若使能时间片中断,LEDTS 计数器的 8LSB 溢出时触发该中断,从而启动每个新时间片。
也可使能时帧中断,整个 LEDTS 计数器溢出时触发该中断。
为了使 LED 列激活时间和 / 或触摸感应振荡计数时间更加灵活,每个时间片内的列使能
和按盘振荡使能的占空比均可调。
图 20-1 给出 LED 矩阵加按盘的示例。该示例的配置为 8 X 4 LED 矩阵,有 4 个 pad turn
由硬件依次使能 (共有 6 个按盘)。该示例中,四个时帧构成一个时段。
产生时间片中断后,软件可以:
· 设置下个时间片的行值
· 设置下个时间片的比较值
可根据章节 20.7 中位域 FNCOL 的说明以确定当前有效的时间片。
一次时帧中断指示一个触摸输入线已被感应,从而应用软件可以:
· 启动触摸感应分析程序并更新状态
· 使能 LED 显示更新
用户手册
LEDTSCU, V1.2.2
20-6
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
一个完整的时间段
时帧 0
时帧 1
时帧 2
时帧 3
5.3*5 us 2.01*5 ms
C3
C2 C1
C0
TS C3
C2
C1 C0
TS C3 C2
C1
C0 TS
C3
C2 C1
C0
TS
LTS_fn
COLA
COLLEV = 0
pad _turn_0
pad _turn_1
pad _turn_2
pad _turn_3
COL3
COL2
COL1
COL0
LED功能
LED第一列有效 SW:产生时间片中断时,将下一列
的行值和比较值写入映射寄存器
SW:对pad振荡计数进行分析和操作
HW:比较匹配时,使该列LED失效
HW:计数器的8LSB溢出时,映射传
送 下一列的行值和比较值
图 20-1
LED功能
LED最后一列有效SW:产生时间片中断时,将触摸感
应的比较值写入映射寄存器
HW:比较匹配时,使该列LED失效
HW:计数器的8LSB溢出时,映射
传送(行值&)触摸感应功能的比较
值
触摸感应功能
Pad turn有效的引脚对应的Pad振荡
电路工作 SW:产生时间片中断时,将第一列
LED的行值和比较值写入映射寄存器
HW:使各列LED处于无效电平
HW:比较匹配时,使能pad振荡电
路,对振荡周期进行计数
HW:计数器的8LSB溢出时,映射传
送第一列的行值和比较值
。禁用pad
振荡电路&更新下一个pad turn的
PADT 位
...
引脚上时分复用 LEDTSCU 功能 (示例)
用户手册
LEDTSCU, V1.2.2
20-7
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
20.4
LED 驱动
LED 驱动的硬件控制主要是 LED 列选择 – 一次使能一列。需要通过基于中断的软件处理
(中断服务程序)来使能选中列工作。最多支持 8 列 LED,每列最多可使能 8 个 LED。
该模块可灵活调整 LED 的亮度以满足不同类型 LED 的要求。通过 LEDTS 计数器的比较
寄存器来调整每个时间片内列使能的占空比。从时间片开始到发生比较匹配事件期间,
选中列被使能。若 LED 列使能的占空比为 100%,比较值应设置为 FFH。若比较值设置
为 00H,选中列在该时间片内将始终保持无效电平。通过映射传送更新每个时间片的比较
寄存器,每个新时间片开始时自动进行映射传送。
此外,还可通过映射传送更新每列 LED (时间片)的 LED 使能控制 (LED 行序列)。
每个新时间片开始时自动进行该映射传送。
首次启动 LEDTS 计数器工作时 (由 CLK_PS 使能输入时钟),激活第一列的行序列和
比较值的映射传送。
当 LEDTS 计数器的 8LSB 溢出时,可产生时间片中断,用于指示新的时间片开始。
LED 控制电路如图 20-2 所示,该图同时示出按盘振荡器使能控制。控制电路的时钟源可
选:FPCLK (48 MHz)或 SPCLK (8 MHz)。可通过一个 6 位分频器灵活配置 LEDTS
计数器的计数率,计数器溢出时一个时帧结束。在由多个时间片 (个数可配置)组成的
时帧内,各列 LED 被依次激活。在时帧内的最后一个时间片激活触摸感应功能 (若使能
该功能) 。每个时帧由长度相等的多个时间片组成,时间片长度可配置 (5.3 us 到
2.01 ms 之间)。
当位 CLK_PS 从 0 设置为其它值且 LED 或触摸感应功能中至少有一种功能被使能时,
LEDTS 计数器开始工作。两种功能均被禁用时 LEDTS 计数器不工作。计数器工作期间,
为了避免过度设置功能使能从而干扰硬件控制,只有在 CLK_PS = 0 时才能修改位
TS_EN 和 LD_EN。不过,当 CLK_PS 从 0 设置为 1、或从 1 设置为 0 时,可对 SFR
GLOBCTL0 进行一次写操作来置位 TS_EN 和 LD_EN。
计数器启动后,根据所使能的功能从复位值 / 重载值开始计数:1)使能 LED 功能时,计
数个数为 LED 列数 (位域 NR_LEDCOL); 2)使能触摸感应功能时,在时帧最后增加
一个时间片。计数器始终递增计数,从 7FFH 溢出后从重载值 (等于复位值)开始重新
计数。在每个时帧内, LED 列使能的顺序始终从最高使能列开始 (从高向低)。下面以
四列 LED 举例说明:
·
·
·
·
从 COL3 开始,
随后是 COL2,
随后是 COL1,
最后是 COL0。
若不使能触摸感应功能, COLA 始终用于控制 LED 功能的最后一列 LED,举例说明:
·
·
·
·
从 COL2 开始,
随后是 COL1,
随后是 COL0,
最后是 COLA。
用户手册
LEDTSCU, V1.2.2
20-8
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
FPCLK
(48 MHz)
组成每个 时帧 的时间片个数 =
LE D列数 & & LD_E N + 1 触摸感应时间片 & & TS_E N
NR_LE DCOL : LE DTS 计数器复位值 /重载值 ( 假设 TS _E N = 0)
6位
预分频器
LEDTS 计数器
CLK_PS
0: 无时钟
1: /1
n: /n
...
63: /63
000 B : 700 H 010 B: 500 H 100 B: 300 H 110 B: 100 H
001 B : 600 H 011 B: 400 H 101 B: 200 H 111 B: 000 H
8位
比较寄存器 .
比较匹配
&
DeMux
111 B
110 B
101 B
100 B
011 B
010 B
001 B
000 B
8位溢出
使能pad振荡器 *
&
^
&
^
&
^
&
^
&
^
&
^
&
^
&
^
COLA *
COL0
OR
SPCLK
(8MHz)
COL1
COL2
COL3
COL4
COL5
COL6
COLLEV = 1
映射传送
8位比较值 & LED 行值
C6
C5
C4
C3
C2
C1
C0
CA/
TS*
* 若使能触摸感应功能,该时间片用于pad 振荡
器使能,不用于LED列控制。
用于触摸感应功能时,引脚COLA可被配置成为
使能外部上拉 – 此处未显示。
时间片中断
时帧中断
图 20-2
LED 功能控制电路 (包括按盘振荡器使能控制)
有关时间片以及 LEDTSCU 相关的时序计算,请参见章节 20.8。
20.4.1
LED 引脚分配和电流驱动能力
一个时间片内只能使能一个 LED 列引脚,最多控制 8 个 LED。 COL[x] 的引脚分配可灵
活配置以满足不同的应用需要。该器件支持大电流引脚,有关 LED 引脚的电流驱动能力,
可参见产品数据手册。例如:某些引脚的灌电流为 40 mA。这意味着,若一列直接驱动
8 个 LED,每个 LED 的驱动能力限于 5 mA。
在任何情况下,一次直接驱动(拉或灌)所有 8 个 LED 的总电流绝不能超过所规定的各
引脚的最大电流 ((ΣIM)。若需要更高的 LED 驱动能力,将要用到外部晶体管。
用户手册
LEDTSCU, V1.2.2
20-9
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
20.5
触摸盘感应
图 20-3 引脚振荡控制电路如图 20-3 所示,该部分已和标准 GPIO 焊盘集成在一起。每
个输入引脚 TSIN[x] 对应一个 pad turn (pad_turn_x),在触摸感应时间片内, pad turn
有效期间 TS 计数器工作。
COLA
使能外部上拉
使能 pad 振荡器
&
pad_turn_num
pad_turn_x
计数器复位
TSIN[ x]
8位TS计数器
有效
延长
触摸盘
“ts_extended”
标准 IO pad
图 20-3
触摸感应振荡器控制电路
8 位 TS 计数器对振荡周期进行计数。只有当 pad turn 无效时才能设置该计数器。每次激
活新 pad turn 时,可使能 TS 计数器自动复位 (到 00H)。位 TSCTROVF 指示计数器已
溢出。此外,也可按下面的方式配置:计数器在当前的时间片内计数饱和后停止工作,即
不溢出 & 停留在计数值 FFH。在这种情况下,只有当新 pad turn 有效时 TS 计数器才重
新开始工作。
该模块支持引脚低电平有效延长 (时间可配置) ,从而可根据用户系统的需要来调整按
盘振荡。对按盘振荡的放电阶段进行延长,可延长一个或四个 FPCLK 周期。图 20-4 对
该功能予以说明。
在使能振荡电路工作的有效时间内,有效触摸感应引脚 TSIN[x] 的按盘配置由硬件控制,
具体参见章节 20.9。特别是,当用户系统采用外部电阻上拉时,可选择禁止内部弱上拉。
在整个触摸感应时间片内, COLA 保持高电平,从而使与 COLA 相连的外部电阻上拉有
效。这样的配置可在一定程度上灵活调整按盘的振荡频率以满足用户系统的需要。
在使能的 LINE[x]/TSIN[x] 引脚上,触摸感应和 LED 功能时分复用。在触摸感应时间片
内,对于其它 pad turn 无效的 TSIN 引脚,其对应的 LINE 输出保持有效。软件应负责将
行值置 1 以避免从引脚 COLA 灌入电流。
时帧内的最后一个时间片用于触摸感应功能,有关时间片分配和配置的详细说明,请参
见章节 20.3 和章节 20.4。
用户手册
LEDTSCU, V1.2.2
20-10
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
TS计数器输入
输入高阈值
“ts_extended”
输入高阈值
引脚振荡
输入高阈值
输入低阈值
图 20-4
引脚低电平延长功能
对于 Pad turn 有效的引脚,其按盘振荡电路使能工作的时间长短可由用户配置。通过一
个比较值来调整时间片内按盘振荡电路使能工作(TS 计数器工作)的占空比。只有当发
生比较匹配时,按盘振荡电路才使能开始工作,直到时间片结束时停止。若时间片内按
盘振荡使能的占空比为 100%,比较值应设为 00H ;比较值设为 FFH 时,按盘振荡电路
不工作。
可根据需要使能时间片中断和 / 或时帧中断用于触摸感应控制。
20.5.1
手指感应
将手指放在触摸盘上时,按盘的电容增大,相应的振荡频率将降低。手指不触摸时,按
盘的振荡频率通常介于 0.25 MHz - 0.5 MHz 之间;手指触摸时,按盘的振荡频率通常介
于 0.125 MHz - 0.25 MHz 之间。正如之前的描述,用户系统可在一定程度上灵活调整按
盘振荡 :1)引脚低电平有效延长时间可配置; 2)用户可选择采用外部电阻上拉。时间
片的长度可配置介于 5.3 us (0.18 MHz) - 2.01 ms (496 Hz)之间,还可通过软件配
用户手册
LEDTSCU, V1.2.2
20-11
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
置 pad turn 的有效时间 (在时间片内可调,通过比较功能实现),并设置一个振荡计数
阈值用以检测手指控制是否有效。
用户手册
LEDTSCU, V1.2.2
20-12
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
20.6
引脚上 LED 和触摸感应功能时分复用
在引脚上时分复用 LED 和触摸感应功能时,需要注意:
· 若使能触摸感应功能, LED 最多有 7 列 。
· 在触摸感应功能下, COLA 输出高电平使得可通过外部电阻上拉 (若引脚使能该特
性)。
· 在触摸感应时间片内,建议设置 LED 行输出高电平。
· 在 LED 时间片内, COLA 输出低电平。若相连的 LED 行输出高电平,将会向 COLA
灌入电流。
· 每个 TSIN 引脚的有效电容大小和与之相连的器件以及应用板的设计关系紧密。应该
对实际应用中的所有触摸盘进行校正以实现稳健的触摸检测。
用户手册
LEDTSCU, V1.2.2
20-13
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
20.7
功能使能和控制的注意事项
建议用户在设置 SFR LTS_GLOBCTL0 启动 LED 和 / 或 TS 功能之前,首先设置所有与
LEDTSCU 相关的寄存器中的配置位。
注: 只有当计数器不工作,即 CLK_PS = 0 时,才能修改和 LED/ 触摸感应功能相关的
SFR(特别是影响 LEDTS 计数器配置的 SFR)。详见章节 20.11 中 SFR 的描述。
仅使能 LED 功能
仅使能 LED 功能:置位 LD_EN,清除 TS_EN。
复位后进行初始化:
MOV LTS_GLOBCTL0, #0b10XXXXXX
; 置位 LD_EN 并启动 LEDTS 计数器以分频时钟计数
;(CLK_PS != 0)
在工作期间重新配置:
MOV LTS_GLOBCTL0, #0x00; 清零时钟分频因子以终止 LEDTS 计数器工作
MOV LTS_GLOBCTL0, #0b10XXXXXX
仅使能触摸感应功能
仅使能触摸感应功能:清除 LD_EN,置位 TS_EN。
复位后进行初始化:
MOV LTS_GLOBCTL0, #0b01XXXXXX
; 置位 TS_EN 并启动 LEDTS 计数器以分频时钟计数
;(CLK_PS != 0)
在工作期间重新配置:
MOV LTS_GLOBCTL0, #0x00; 清零时钟分频因子以终止 LEDTS 计数器工作
MOV LTS_GLOBCTL0, #0b01XXXXXX
使能 LED 和触摸感应两种功能
使能两种功能:置位 LD_EN 和 TS_EN。
复位后进行初始化:
MOV LTS_GLOBCTL0, #0b11XXXXXX
; 置位 LD_EN 和 TS_EN 并启动 LEDTS 计数器以分频时钟计数
;(CLK_PS != 0)
在工作期间重新配置:
MOV LTS_GLOBCTL0, #0x00; 清零时钟分频因子以终止 LEDTS 计数器工作
MOV LTS_GLOBCTL0, #0b11XXXXXX
用户手册
LEDTSCU, V1.2.2
20-14
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
位域 FNCOL 的说明
在每个时间片内,由软件更新下个时间片将使用的行值和比较值。位域 FNCOL 给出前一
个时间片内的有效功能 / 列。软件可根据该信息决定当前时间片内的有效功能 / 列,并为
下一个时间片准备 (待映射传送的)数值。
下面的示例中一个时帧内包含六个时间片:五列 LED+ 触摸感应功能。
表 20-5
FNCOL 位域的说明
FNCOL
当前时间片的有效功能 / 列
下个时间片的有效功能 / 列 (由 SW 通过
映射寄存器进行准备)
111H
LED COL[4]
LED COL[3]
010H
LED COL[3]
LED COL[2]
011H
LED COL[2]
LED COL[1]
100H
LED COL[1]
LED COL[0]
101H
LED COL[0]
110H
触摸感应 TSIN[PADT]
触摸感应 TSIN[PADT]
LED COL[4]
20.8
LEDTSCU 时序计算
LEDTSCU 时序计算的公式如下:
计数率 (CR):
(20.1)
CR = ( fCLK ) ÷ ( PREscaler )
时间片长度 (TSD):
(20.2)
TSD =
28
÷ ( CR )
时帧长度:
(20.3)
TimeFrameDuration = ( Number of time slice ) × TSD
LED 驱动的有效时间:
(20.4)
LED Drive Active Duration = TSD × Compare_VALUE ÷
用户手册
LEDTSCU, V1.2.2
20-15
28
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
触摸感应的有效时间:
(20.5)
Touch-sense Drive Active Duration = TSD × ( 2 8 – Compare_VALUE ) ÷ 2 8
用户手册
LEDTSCU, V1.2.2
20-16
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
20.9
LEDTSCU 引脚控制
用户可通过 GPIO-SFR ALTSEL 为 LEDTSCU 功能灵活的分配引脚:
· COL[x] (用于 LED 列控制)
· LINE[x]/TSIN[x] (用于 LED 行控制或触摸感应)
根据用户配置选择激活哪个 COL[x] 和 / 或 LINE[x]/TSIN[x] 时,可参考章节 20.4 的描述。
引脚用作 LED 功能时,用户必须通过 GPIO-SFR ALTSEL 对其进行配置。引脚用作触摸
感应功能时,LEDTSCU 为 pad turn 有效的引脚提供硬件控制的同时,还需通过 ALTSEL
选择 TSIN (和 COLA)功能,可参见表 20-6 和 图 20-5。
表 20-6
LEDTSCU 引脚控制信号
功能
LD/TS_e LTS_fn
n
引脚
LED 列
LD_EN
=1
0 = LED
使能 COL[x] ;
由 GPIO SFR 设置
COL[ 其余 ] 处于无效
电平。
若 TS_EN = 1,
COLA = 0。
LED 行
LD_EN
=1
0 = LED
LINE[x] = 从 LDLINE 由 GPIO SFR 设置
映射传送的值
触摸感应
TS_EN
=1
1 = 触摸
感应
使能 TSIN[x] 启动振
荡电路。
所有其它 TSIN 引脚
输出行值。
引脚控制
由硬件控制 pad_turn_x1) :
- 使能上拉 (可由位 EPULL
禁止该控制)
- 使能漏极开路
除 COLA = 1 之外,
COL[ 其余 ] 处于无效
电平。
1) 对于 pad turn 无效的其它引脚,则无需硬件控制,仍采用 GPIO SFR 设置。
用户手册
LEDTSCU, V1.2.2
20-17
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
触摸感应使能硬件控制 && pad _turn_ x
触摸感应禁止硬件控制
触摸感应上拉
定义:
1
0
P UDE N&S E L
上拉 / 下拉控制
由S FR控制的
GP IO功能
触摸感应漏极开路使能
1
OD
漏极开路控制
LE DTS 输出信号
0
lts_fn && pad _ turn_x
ts_extended [x]
ld_line[x]
1
ALTS E Lx
复用功能选择 x
上拉/
下拉器件
0
AltDataOut[LED&TS]
AltDataOut[N]
输出
驱动
M
U
X
引脚
数据输出
LED行/
触摸感应pad x
输入
驱动
施密特
触发器
Pad
图 20-5
20.10
触摸感应功能中按盘输入引脚的硬件控制
中断
LEDTSCU 内核可触发两种中断 :1)时间片事件; 2)时帧事件。发生这两种事件、或
CLK_PS 从 0 设置为其它值时,无论相应的中断是否被使能,标志位均置位。若中断被
使能,时间片 / 时帧事件 (以及 CLK_PS 从 0 设置为其它值的操作)将激活相应的中断
请求。
用户手册
LEDTSCU, V1.2.2
20-18
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
20.11
寄存器描述
从标准 (非映射) SFR 区访问 LEDTSCU 的特殊功能寄存器。 LEDTSCU SFR 和相应
的地址归纳见表 20-7 。
表 20-7
寄存器映射
地址
寄存器
97H
LTS_GLOBCTL0
D4H
LTS_COMPARE
D5H
LTS_LDLINE
D6H
LTS_LDTSCTL
D7H
LTS_TSCTL
D8H
LTS_GLOBCTL1
D9H
LTS_TSVAL
用户手册
LEDTSCU, V1.2.2
20-19
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
20.11.1
全局控制和状态
LEDTSCU 有三个全局控制和状态寄存器。
LTS_GLOBCTL0
全局控制寄存器 0
RMAP: 0, PAGE: X
(97H)
5
4
复位值:00H
7
6
3
2
LD_EN
TS_EN
CLK_PS
rw
rw
rw
1
0
符号
位
类型
描述
CLK_PS
[5:0]
rw
LEDTS 计数器时钟分频因子
根据设置对输入时钟 FPCLK 或 SPCLK 分频:
无时钟
0D
1 分频
1D
nD
n 分频
63D 63 分频
只有当至少使能触摸感应或 LED 其中一种功能时,
才能将该位 (从 0)设置为其它值。LEDTS 计数器
基于所使能的功能 (以及 NR_LEDCOL)从复位值
/ 重载值开始以输入时钟计数,详见章节 20.4 的描
述。
将该位清零时, LEDTS 计数器停止计数并复位。
TS_EN1)
6
rw
触摸感应功能使能
当 CLK_PS 从 0 设置为其它值时,置位该位以使能
触摸感应功能。
LD_EN
7
rw
LED 功能使能
当 CLK_PS 从 0 设置为其它值时,置位该位以使能
LED 功能。 .
1) 只有当 CLK_PS = 0 时才能修改该位。
用户手册
LEDTSCU, V1.2.2
20-20
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
LTS_GLOBCTL1
全局控制寄存器 1
RMAP: 0, PAGE: X
(D8H)
复位值:00H
7
6
5
4
3
2
1
TSF
ITS_EN
TFF
ITF_EN
CLKSEL
FNCOL
rwh
rw
rwh
rw
rw
rh
0
符号
位
类型
描述
FNCOL
[2:0]
rh
先前的有效功能 /LED 列状态
指示前一个时间片的有效功能 /LED 列状态。当
LEDTS 计数器的 8LSB 溢出、开始下个新时间片
时,对该位进行更新。由内部 DE-MUX 的锁存值控
制,请参见图 20-2。
CLKSEL1)
3
rw
LEDTS 计数器时钟输入选择
0B
选择 48 MHz
选择 8 MHz
1B
ITF_EN
4
rw
使能时帧中断
0B
禁止
1B
使能
TFF
5
rwh
时帧中断标志
每次开始一个新时帧 (以及 CLK_PS 从 0 设置为其
它值)时,该位置位。由软件清零。
ITS_EN
6
rw
使能时间片中断
0B
禁止
1B
使能
TSF
7
rwh
时间片中断标志
每次开始一个新时间片 (以及 CLK_PS 从 0 设置为
其它值)时,该位置位。由软件清零。
1) 只有当 CLK_PS = 0 时才能修改该位。
用户手册
LEDTSCU, V1.2.2
20-21
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
LTS_COMPARE
时间片比较映射寄存器
RMAP: 0, PAGE: X
7
6
(D4H)
5
4
复位值:00H
3
2
1
0
SHD_CMP
rw
符号
位
类型
描述
SHD_CMP
[7:0]
rw
待映射传送的时间片比较值
每次开始一个新时间片时,该值被映射传送到时间
片比较寄存器中。
映射传送和 CLK_PS 的设置有关。
用户手册
LEDTSCU, V1.2.2
20-22
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
20.11.2
功能控制寄存器
这些寄存器用于控制 LED 驱动和触摸感应功能。
LTS_LDTSCTL
LED 和触摸感应控制寄存器
RMAP: 0, PAGE: X
7
6
5
(D6H)
4
复位值:00H
3
2
1
0
NR_LEDCOL
COLLEV
NR_PADT
TSOEXT
rw
rw
rw
rw
符号
位
类型
描述
TSOEXT
0
rw
引脚低电平有效延长
延长 1 FPCLK
0B
1B
延长 4 FPCLK
NR_PADT1)
[3:1]
rw
触摸感应 Pad Turn 的个数
该位域定义触摸感应输入的个数 (和 pad turn 的个
数相等),用于 pad turn 使能的硬件控制。
0D
1
n+1
nD
COLLEV
4
rw
LED 列的有效电平
低有效
0B
1B
高有效
NR_LEDCOL
[7:5]
rw
LED 列数
定义 LED 列数。
000B 1 列 LED
001B 2 列 LED
010B 3 列 LED
011B 4 列 LED
100B 5 列 LED
101B 6 列 LED
110B 7 列 LED
111B 8 列 LED (若 TS_EN = 1, LED 最大列数 =
7)
注: 从最高列开始依次使能各列 LED。若不使能触
摸感应功能,在最后一个时间片激活 COLA。
1) 只有当 CLK_PS = 0 时才能修改该位。
用户手册
LEDTSCU, V1.2.2
20-23
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
LTS_LDLINE
LED 行值映射寄存器
RMAP: 0, PAGE: X
7
6
(D5H)
5
4
复位值:00H
3
2
1
0
SHD_LINE
rw
符号
位
类型
描述
SHD_LINE
[7:0]
rw
待映射传送的 LED 行值
每次开始一个新时间片时,该值被映射传送给各行
LED。
映射传送和 CLK_PS 的设置有关。
LTS_TSCTL
触摸感应控制寄存器
RMAP: 0, PAGE: X
7
6
TSCTROV
TSCTRR
F
rwh
rw
(D7H)
复位值:00H
5
4
3
2
1
TSCTRSA
T
EPULL
PADTSW
PADT
rw
rw
rw
rwh
0
符号
位
类型
描述
PADT
[2:0]
rwh
触摸感应 Pad Turn (输入引脚)
该位为下一个或当前有效的 pad turn (触摸感应输
入引脚)。若 PADTSW = 0,在触摸感应时间片结束
时该位由硬件自动更新。始终可软件设置该位。
0D
TSIN0
nD
TSIN[n]
PADTSW1)
3
rw
触摸感应 Pad Turn 软件控制
0B
硬件以循环的方式从 TSIN0 开始自动使能各
触摸感应输入引脚。
禁止硬件控制,只能软件控制。通过位 PADT
1B
配置有效的触摸感应输入。
用户手册
LEDTSCU, V1.2.2
20-24
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
符号
位
类型
描述
EPULL
4
rw
使能引脚 COLA 的外部上拉配置
该位置位时,禁止对有效的触摸感应输入引脚进行
内部上拉。
0B
在触摸感应时间片内的置位期间,使能硬件控
制 TSIN[x] 引脚内部上拉。这种设置下,未指
定将 COLA 分配给任何引脚。
1B
使能外部上拉:在整个触摸感应时间片内引脚
COLA 输出 1。
注: 无论该位如何设置,引脚 COLA 在整个触摸感
应时间片内始终输出 1。
TSCTRSAT
5
rw
TS 计数器饱和
0B
禁用。
1B
使能。 TS 计数器在当前时间片内计数到 FFH
后停止工作。当新 pad turn 有效时,计数器由
比较匹配事件触发重新开始工作。
TSCTRR
6
rw
TS 计数器自动复位
0B
禁止 TS 计数自动复位。
1B
使能 TS 计数器自动复位,当新 pad turn 有效
时,计数器由比较匹配事件触发自动复位到
00H。
TSCTROVF
7
rwh
TS 计数器溢出指示
该位指示 TS 计数器是否已溢出。当新 pad turn 有效
时,该位由比较匹配事件触发清零。
0B
未发生溢出。
1B
TS 计数器至少已溢出一次。
1) 只有当 CLK_PS = 0 时才能修改该位。
LTS_TSVAL
触摸感应计数器值
RMAP: 0, PAGE: X
7
6
(D9H)
5
4
复位值:00H
3
2
1
0
TSCTRVAL
rwh
用户手册
LEDTSCU, V1.2.2
20-25
V1.1, 2010-09
XC83x
LED 和触摸感应控制器
符号
位
类型
描述
TSCTRVAL
[7:0]
rwh
TS 计数器的计数值
该位域指示 TS 计数器的计数值。只有当 pad turn 无
效时才能设置该寄存器。
可使能该计数器在新 pad turn 有效时自动复位。
用户手册
LEDTSCU, V1.2.2
20-26
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21
捕获 / 比较单元 6 (CCU6)
CCU6 为具有特定应用模式的高精度 16 位捕获和比较单元,主要用于 AC 电机控制应用。
CCU6 的特殊工作模式支持使用霍尔传感器或反电动势检测控制方案的无刷直流电机控
制。此外, CCU6 还支持块切换和多相电机控制算法。
CCU6还提供可同步启动多个定时器的输入,这是具有多个CCU模块的器件的重要特性。
本章结构如下:
· 简介 (见章节 21.1)
包括寄存器概览 (见章节 21.1.3)
· 系统信息 (见章节 21.2)
· 定时器 T12 的操作 (见章节 21.3)
包括与 T12 相关的寄存器 (见章节 21.3.8)
和捕获 / 比较控制寄存器 (见章节 21.3.9)
· 定时器 T13 的操作 (见章节 21.4)
包括与 T13 相关的寄存器 (见章节 21.4.6)
· 强制中断处理 (见章节 21.5)
· 多通道模式 (见章节 21.6)
· 霍尔传感器模式 (见章节 21.7)
· 调制控制寄存器 (见章节 21.8)
· 中断处理 (见章节 21.9)
包括中断寄存器 (见章节 21.9.2)
· 一般模块操作 (见章节 21.10)
包括通用寄存器 (见章节 21.10.2)
21.1
简介
CCU6 单元由带有三个捕获 / 比较通道的定时器 T12 模块和带有一个比较通道的定时器
T13 模块组成。T12 的各通道既能独立产生 PWM 信号或接受捕获触发,各通道也可共同
产生驱动 AC 电机或逆变器的控制信号序列。
CCU6 中丰富的状态位、参数的同步更新 (通过映射寄存器实现)和中断请求信号的灵
活产生为用户提供了高效的软件控制方式。
注: 捕获 / 比较模块自身被称为 CCU6 (捕获 / 比较单元 6)。
模块内的捕获 / 比较通道被称为 CC6x。
用户手册
CCU6, V4.0
21-1
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.1.1
特性概述
本节给出 CCU6 的各组成模块及其主要特性。
定时器 T12 模块特性
·
·
·
·
·
·
·
·
·
·
·
三个捕获 / 比较通道,可单独用作捕获或比较通道
支持三相 PWM 产生 (6 个输出,每相两个信号分别用于控制上桥臂或下桥臂开关)
16 位精度,最大计数频率 = 外设时钟频率
各通道的死区时间控制,以避免功率器件短路
T12 寄存器同步更新
支持中心对齐和边沿对齐 PWM 产生
支持单次模式
可由外部事件启动定时器
能够对外部事件计数
支持多个中断请求源
支持类磁滞控制模式
定时器 T3 模块特性
·
·
·
·
·
·
·
·
一个独立的比较通道 (具有一个输出)
16 位精度,最大计数频率 = 外设时钟频率
T13 寄存器同步更新
可与 T12 同步
周期匹配和比较匹配时产生中断
支持单次模式
可由外部事件启动定时器
能够对外部事件计数
附加的特定功能
·
·
·
·
·
·
·
·
支持用于驱动无刷直流电机的块切换
通过霍尔传感器序列进行位置检测
支持位置输入信号的噪声滤波
块切换的自动转速测量和切换控制
综合错误处理
由外部信号 (CTRAP)控制快速急停,无需 CPU 干预
多通道 AC 驱动的控制模式
输出电平可选,以配合功率器件
用户手册
CCU6, V4.0
21-2
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.1.2
框图
定时器 T12 的三个通道可工作在捕获和 / 或比较模式。三个通道的工作模式还可组合起
来 (即一个通道工作在比较模式,而另一个通道工作在捕获模式)。定时器 T13 只能工
作在比较模式。由多通道控制单元产生输出序列(可由 T12 和 / 或 T13 对其进行调制)。
信号的调制源可选,并可组合使用。
CCU6 模块内核
比较
2
2
输出选择
CC63
比较
中断控制
1
SR[3:0]
3 +3
2
强制中断输入
T13
比较
启动
fCC6
霍尔输入
1
强制中断
控制
多通道
控制
输出选择
CC62
死区时间
控制
比较
1
捕获
时钟控制
1
CC61
比较
T12
CC60
3
1
CTRAP[D:A]
CCPOS2[D:A]
CCPOS1[D:A]
CCPOS0[D:A]
CC62
CC62IN[D:A]
COUT62
CC61IN[D:A]
CC61
COUT61
CC60IN[D:A]
CC60
COUT60
COUT63
T13HR[H:A]
T12HR[H:A]
输入 / 输出控制
端口控制
CCU6_MCB05506+_CN
图 21-1
用户手册
CCU6, V4.0
CCU6 框图
21-3
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.1.3
寄存器概述
为了统一起见,给不同 CCU6 模块的寄存器名称增加前缀 “CCU6x_”以确定寄存器所
在模块。其中 x 代表模块编号。
表 21-1 给出编程设置 CCU6 模块所需的全部寄存器。该表总结了 CCU6 内核寄存器,给
出其偏移地址以及复位值。 8 位短地址在该模块中不可用。
T12相关寄存器
中断状态/
控制寄存器
捕获/比较
控制寄存器
通用寄存器
T12L
CMPSTATL
ISL
PISEL0L
T12H
CMPSTATH
ISH
PISEL0H
T12PRL
CMPMODIFL
ISSL
PISEL2
T12PRH
CMPMODIFH
ISSH
T12DTCL
T12MSELL
ISRL
T12DTCH
T12MSELH
ISRH
CC60RL
TCTR0L
INPL
CC60RH
TCTR0H
INPH
CC60SRL
TCTR2L
IENL
CC60SRH
TCTR2H
IENH
CC61RL
TCTR4L
CC61RH
TCTR4H
CC61SRL
CC61SRH
调制控制寄存器
CC62RL
MODCTRL
CC62RH
MODCTRH
CC62SRL
TRPCTRL
CC62SRH
TRPCTRH
PSLR
T13相关寄存器
T13L
T13H
T13PRL
T13PRH
MCMCTR
MCMOUTSL
MCMOUTSH
MCMOUTL
MCMOUTH
CC63RL
CC63RH
CC63SRL
CC63SRH
图 21-2
用户手册
CCU6, V4.0
8-Bit_CCU6_regs _cn
CCU6 寄存器
21-4
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
表 21-1
CCU6 模块寄存器总结
寄存器
缩写名
描述
偏移
地址
复位值 见
页
PISEL0L
端口输入选择寄存器低位
9EH
00H
页 21-118
PISEL0H
端口输入选择寄存器高位
9FH
00H
页 21-119
PISEL2
端口输入选择寄存器 2
A4H
00H
页 21-120
通用寄存器
定时器 T12 相关寄存器
T12L
定时器 T12 计数寄存器低位
FAH
00H
页 21-42
T12H
定时器 T12 计数寄存器高位
FBH
00H
页 21-42
T12PRL
定时器 T12 周期寄存器低位
9CH
00H
页 21-43
T12PRH
定时器 T12 周期寄存器高位
9DH
00H
页 21-43
T12DTCL
定时器 T12 死区时间控制寄存器低位
A4H
00H
页 21-47
T12DTCH
定时器 T12 死区时间控制寄存器高位
A5H
00H
页 21-47
CC60RL
通道 CC60 捕获 / 比较寄存器低位
FAH
00H
页 21-44
CC60RH
通道 CC60 捕获 / 比较寄存器高位
FBH
00H
页 21-44
CC61RL
通道 CC61 捕获 / 比较寄存器低位
FCH
00H
页 21-44
CC61RH
通道 CC61 捕获 / 比较寄存器高位
FDH
00H
页 21-44
CC62RL
通道 CC62 捕获 / 比较寄存器低位
FEH
00H
页 21-44
CC62RH
通道 CC60 捕获 / 比较寄存器高位
FFH
00H
页 21-44
CC60SRL
通道 CC60 捕获 / 比较映射寄存器低位
FAH
00H
页 21-45
CC60SRH
通道 CC60 捕获 / 比较映射寄存器高位
FBH
00H
页 21-45
CC61SRL
通道 CC61 捕获 / 比较映射寄存器低位
FCH
00H
页 21-45
CC61SRH
通道 CC61 捕获 / 比较映射寄存器高位
FDH
00H
页 21-45
CC62SRL
通道 CC62 捕获 / 比较映射寄存器低位
FEH
00H
页 21-45
CC62SRH
通道 CC62 捕获 / 比较映射寄存器高位
FFH
00H
页 21-45
FEH
00H
页 21-49
FFH
00H
页 21-50
捕获 / 比较控制寄存器
CMPSTATL 比较状态寄存器低位
CMPSTATH 比较状态寄存器高位
用户手册
CCU6, V4.0
21-5
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
表 21-1
CCU6 模块寄存器总结
寄存器
描述
缩写名
CMPMODIF 比较状态修改寄存器低位
L
偏移
地址
A6H
复位值 见
页
00H
页 21-51
CMPMODIF 比较状态修改寄存器高位
H
A7H
00H
页 21-52
T12MSELL
T12 捕获 / 比较模式选择寄存器低位
9AH
00H
页 21-53
T12MSELH
T12 捕获 / 比较模式选择寄存器高位
9BH
00H
页 21-53
TCTR0L
定时器控制寄存器 0 低位
A6H
00H
页 21-55
TCTR0H
定时器控制寄存器 0 高位
A7H
00H
页 21-56
TCTR2L
定时器控制寄存器 2 低位
FAH
00H
页 21-58
TCTR2H
定时器控制寄存器 2 高位
FBH
00H
页 21-59
TCTR4L
定时器控制寄存器 4 低位
9CH
00H
页 21-61
TCTR4H
定时器控制寄存器 4 高位
9DH
00H
页 21-62
定时器 T13 相关寄存器
T13L
定时器 T13 计数寄存器低位
FCH
00H
页 21-75
T13H
定时器 T13 计数寄存器高位
FDH
00H
页 21-75
T13PRL
定时器 T13 周期寄存器低位
9EH
00H
页 21-77
T13PRH
定时器 T13 周期寄存器高位
9FH
00H
页 21-77
CC63RL
定时器 T13 比较寄存器低位
9AH
00H
页 21-78
CC63RH
定时器 T13 比较寄存器高位
9BH
00H
页 21-78
CC63SRL
定时器 T13 比较映射寄存器低位
9AH
00H
页 21-79
定时器 T13 比较映射寄存器高位
9BH
00H
页 21-79
CC63SRH
调制控制寄存器
MODCTRL
调制控制寄存器低位
FCH
00H
页 21-92
MODCTRH
调制控制寄存器高位
FDH
00H
页 21-93
TRPCTRL
强制中断控制寄存器低位
FEH
00H
页 21-94
TRPCTRH
强制中断控制寄存器高位
FFH
00H
页 21-95
PSLR
被动态电平寄存器
A6H
00H
页 21-97
MCMOUTS
L
多通道模式输出映射寄存器低位
9EH
00H
页 21-99
用户手册
CCU6, V4.0
21-6
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
表 21-1
CCU6 模块寄存器总结
寄存器
缩写名
MCMOUTS
H
描述
多通道模式输出映射寄存器高位
偏移
地址
9FH
复位值 见
页
00H
页 21-99
MCMOUTL
多通道模式输出寄存器低位
9AH
00H
页 21-100
MCMOUTH
多通道模式输出寄存器高位
9BH
00H
页 21-101
MCMCTR
多通道模式控制寄存器
A7H
00H
页 21-98
中断状态和节点寄存器
ISL
中断状态寄存器低位
9CH
00H
页 21-105
ISH
中断状态寄存器高位
9DH
00H
页 21-106
ISSL
中断状态置位寄存器低位
A4H
00H
页 21-108
ISSH
中断状态置位寄存器高位
A5H
00H
页 21-108
ISRL
中断状态复位寄存器低位
A4H
00H
页 21-110
ISRH
中断状态复位寄存器高位
A5H
00H
页 21-110
INPL
中断节点指针寄存器低位
9EH
40H
页 21-115
INPH
中断节点指针寄存器高位
9FH
39H
页 21-115
IENL
中断使能寄存器低位
9CH
0000H
页 21-112
IENH
中断使能寄存器高位
9DH
0000H
页 21-113
注: 写访问地址范围内的地址(由同一个片选信号所涵盖的),但是该地址未在模块中
明确给出的情况下,模块对该写操作不予响应。该规则同样适用于读访问。读访问
另一个地址的情况下, CCU6 模块不予响应。
21.2
系统信息
本节提供与 CCU6 相关的系统信息。
21.2.1
引脚
XC83x 的中的 CCU6 引脚分配见表 21-2。
表 21-2
引脚 功能
捕获输入信号
用户手册
CCU6, V4.0
CCU6 引脚功能和选择
由 ... 选择
描述
21-7
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
表 21-2
CCU6 引脚功能和选择
引脚
P1.1
功能
CC60_0
P0.3
CC60_1
P1.3
CC61_0
P0.1
CC61_1
P1.5
CC62_0
P0.2
CC62_1
描述
通道 CC60 上的捕获事件输入
信号
通道 CC61 上的捕获事件输入
信号
通道 CC62 上的捕获事件输入
信号
由 ... 选择
CCU6_PISEL0L.ISCC60 = 00B
CCU6_PISEL0L.ISCC60 = 01B
CCU6_PISEL0L.ISCC61 = 00B
CCU6_PISEL0L.ISCC61 = 01B
CCU6_PISEL0L.ISCC62 = 00B
CCU6_PISEL0L.ISCC62 = 01B
强制中断输入信号
P0.3
CTRAP_0
P0.4
CTRAP_1
MODPISEL3.CTRAPIS = 01B
CCU6_PISEL0L.ISTRP = 00B
P2.3
CTRAP_2
MODPISEL3.CTRAPIS = 10B
CCU6_PISEL0L.ISTRP = 00B
MODPISEL3.CTRAPIS = 00B
CCU6_PISEL0L.ISTRP = 00B
CTRAP 输入信号
霍尔输入信号
P0.0
P2.0
CCPOS0_0 CCPOS0 输入信号
CCPOS0_1
CCU6_PISEL0H.ISPOS0 = 01B
P2.3
CCPOS0_2
CCU6_PISEL0H.ISPOS0 = 10B
P0.1
CCPOS1_0 CCPOS1 输入信号
CCPOS1_1
CCU6_PISEL0H.ISPOS1 = 00B
P2.1
P0.2
P2.2
CCU6_PISEL0H.ISPOS0 = 00B
CCU6_PISEL0H.ISPOS1 = 01B
CCPOS2_0 CCPOS2 输入信号
CCPOS2_1
CCU6_PISEL0H.ISPOS2 = 00B
CCU6_PISEL0H.ISPOS2 = 01B
定时器输入信号
P0.0
T12HR_0
P2.0
T12HR_2
MODPISEL3.IST12HR1 = 010B
CCU6_PISEL0H.IST12HR = 00B
P2.2
T12HR_3
MODPISEL3.IST12HR1 = 011B
CCU6_PISEL0H.IST12HR = 00B
P2.4
T12HR_5
MODPISEL3.IST12HR1 = 101B
CCU6_PISEL0H.IST12HR = 00B
P2.5
T12HR_7
MODPISEL3.IST12HR1 = 111B
CCU6_PISEL0H.IST12HR = 00B
用户手册
CCU6, V4.0
MODPISEL3.IST12HR1 = 000B
CCU6_PISEL0H.IST12HR = 00B
T12HR 输入信号
21-8
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
表 21-2
CCU6 引脚功能和选择
由 ... 选择
MODPISEL3.IST13HR1 = 000B
CCU6_PISEL2.IST13HR = 00B
引脚
P0.1
功能
T13HR_0
描述
P0.0
T13HR_1
MODPISEL3.IST13HR1 = 001B
CCU6_PISEL2.IST13HR = 00B
P2.0
T13HR_2
MODPISEL3.IST13HR1 = 010B
CCU6_PISEL2.IST13HR = 00B
P2.2
T13HR_3
MODPISEL3.IST13HR1 = 011B
CCU6_PISEL2.IST13HR = 00B
P2.4
T13HR_5
MODPISEL3.IST13HR1 = 101B
CCU6_PISEL2.IST13HR = 00B
P2.5
T13HR_7
MODPISEL3.IST13HR1 = 111B
CCU6_PISEL2.IST13HR = 00B
T13HR 输入信号
比较输出信号
P1.1
CC60_0
P0.3
CC60_1
P0_ALTSEL0.P3 = 1B
P0_ALTSEL1.P3 = 1B
P1.0
COUT60_0
P1_ALTSEL0.P0 = 0B
P1_ALTSEL1.P0 = 1B
P1.3
CC61_0
P0.1
CC61_1
P0_ALTSEL0.P1 = 1B
P0_ALTSEL1.P1 = 1B
P1.2
COUT61_0
P1_ALTSEL0.P2 = 0B
P1_ALTSEL1.P2 = 1B
P0.0
COUT61_1
P0_ALTSEL0.P0 = 1B
P0_ALTSEL1.P0 = 1B
用户手册
CCU6, V4.0
通道 CC60 比较输出
通道 CC61 比较输出
21-9
P1_ALTSEL0.P1 = 0B
P1_ALTSEL1.P1 = 1B
P1_ALTSEL0.P3 = 0B
P1_ALTSEL1.P3 = 1B
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
表 21-2
CCU6 引脚功能和选择
由 ... 选择
P1_ALTSEL0.P5 = 0B
P1_ALTSEL1.P5 = 1B
引脚
P1.5
功能
CC62_0
描述
P0.2
CC62_1
P0_ALTSEL0.P2 = 1B
P0_ALTSEL1.P2 = 1B
P1.4
COUT62_0
P1_ALTSEL0.P4 = 0B
P1_ALTSEL1.P4 = 1B
P0.5
COUT62_1
P0_ALTSEL0.P5 = 1B
P0_ALTSEL1.P5 = 1B
P0_ALTSEL2.P5 = 0B
P0.7
COUT63_0
P1.2
COUT63_1
P1_ALTSEL0.P2 = 1B
P1_ALTSEL1.P2 = 1B
P1.4
COUT63_2
P1_ALTSEL0.P4 = 1B
P1_ALTSEL1.P4 = 1B
通道 CC62 比较输出
MODPISEL3
外设输入选择寄存器 3
RMAP: 0, PAGE: 3
7
符号
CTRAPIS
用户手册
CCU6, V4.0
P0_ALTSEL0.P7 = 1B
P0_ALTSEL1.P7 = 1B
P0_ALTSEL2.P7 = 0B
通道 CC63 比较输出
6
(EEH)
5
4
复位值:00H
3
2
1
0
IST13HR1
IST12HR1
CTRAPIS
rw
rw
rw
位
[1:0]
类型
rw
描述
CCU6 CTRAP 输入选择
0
选择 CCU6 CTRAP 输入引脚 CTRAP_0
01
选择 CCU6 CTRAP 输入引脚 CTRAP_1
10
选择 CCU6 CTRAP 输入引脚 CTRAP_2
11
选择通道 3 超出范围事件 (ORC)输入引脚
CTRAP_3
21-10
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
IST12HR1
位
[4:2]
类型
rw
描述
CCU6 T12HR 端口引脚输入选择
000 选择 T12HR 输入引脚 T12HR_0
001 选择通道 0 超出范围事件 T12HR_1
010 选择 T12HR 输入引脚 T12HR_2
011 选择 T12HR 输入引脚 T12HR_3
100 选择通道 2 超出范围事件输入 T12HR_4
101 选择 T12HR 输入引脚 T12HR_5
110 选择通道 4 超出范围事件输入 T12HR_6
111 选择 T12HR 输入引脚 T12HR_7
注: 要选择由端口引脚触发
T12HR,
CCU6_PISEL0H.IST12HR 必须设置为 00B。
IST13HR1
[7:5]
rw
CCU6 T13HR 端口引脚输入选择
000 选择 T13HR 输入引脚 T13HR_0
001 选择 T13HR 输入引脚 T13HR_1
010 选择 T13HR 输入引脚 T13HR_2
011 选择 T13HR 输入引脚 T13HR_3
100 选择通道 2 超出范围事件输入引脚 T13HR_4
101 选择 T13HR 输入引脚 T13HR_5
110 选择通道 4 超出范围事件输入引脚 T13HR_6
111 选择 T13HR 输入引脚 T13HR_7
注: 要选择由端口引脚触发
13HR,
CCU6_PISEL2.IST13HR 必须设置为 00B。
访问 MODPISEL3 寄存器之前,必须编程设置 SCU_PAGE 寄存器中的 PAGE 位域。
21.2.2
时钟配置
CCU6 内核工作时钟 FPCLK 频率固定为 48 MHz。
如果完全不需要 CCU6 功能,可通过门控关闭其时钟输入的方式整个的禁止 CCU6 该模
块,从而最大程度的降低功耗。通过下述寄存器 PMCON1 中的 CCU_DIS 来完成该设置。
访问 PMCON1 寄存器之前,必须编程设置 SCU_PAGE 寄存器 PAGE。
PMCON1
外设管理控制寄存器 1
RMAP: 0, PAGE: 1
7
6
IIC_DIS
LTS_DIS
rw
rw
用户手册
CCU6, V4.0
(EFH)
5
4
CDC_DIS MDU_DIS
rw
复位值:FFH
3
2
1
0
T2_DIS
CCU_DIS
SSC_DIS
ADC_DIS
rw
rw
rw
rw
rw
21-11
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
CCU_DIS
用户手册
CCU6, V4.0
位
2
类型
rw
描述
CCU6 禁止请求,高有效
0
CCU6 正常工作
1
请求禁止 CCU6 (缺省设置)
21-12
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.2.3
中断事件和分配
表 21-3 列出 CCU6 的中断源以及对应的中断事件使能位和标志位。
表 21-3
CCU6 中断事件
事件
事件中断使能位
事件标志位
见章节 21.9
见 IENL, IENH
见 ISL, ISH
服务请求
输出
SR0, SR1,
SR2, SR3
表 21-4 给出 CCU6 每个中断源的中断节点分配情况。
表 21-4
CCU6 事件中断节点控制
事件
SR0
中断节点使能位
IEN1.ECCIP0
中断节点标志位
IRCON2.CCU6SR0
向量地址
53H
SR1
IEN1.ECCIP1
IRCON2.CCU6SR1
5BH
SR2
IEN1.ECCIP2
MODIEN.CCU6SR2EN
IRCON3.CCU6SR2
63H
SR3
IEN1.ECCIP3
MODIEN.CCU6SR3EN
IRCON3.CCU6SR3
6BH
除了表 21-3 中的中断使能位,位 MODIEN.CCU6SR2EN 和 MODIEN.CCU6SR3EN 必
须设置为 1B,以使能 SR2 和 SR3 中断服务请求。访问 MODIEN 寄存器之前,必须编程
设置寄存器 SCU_PAGE 中的 PAGE 位。
注: CCU6 模块的 SR2 和 SR3 事件用作模块间互连的输出信号,可用来触发 CC6x 输
入:T12HR 输入和 T13HR 输入。如果该类型触发模式不需要中断服务,可禁止
MODIEN 中的控制位。然而,SR2 和 SR3 事件要用作互连输出信号,必须使能事
件中断使能位 IENL 和 IENH。
MODIEN
外设中断使能寄存器
RMAP: 0, PAGE: 3
7
(F7H)
6
5
CCU6SR3 CCU6SR2
EN
EN
rw
用户手册
CCU6, V4.0
rw
r
4
复位值:07H
3
2
1
0
0
RIREN
TIREN
EIREN
r
rw
rw
rw
21-13
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
CCU6SR2EN
位
6
类型
rw
描述
CCU6SR3EN
7
rw
CCU6 SR3 使能
0
禁止 CCU6 SR3 中断服务请求
1
使能 CCU6 SR3 中断服务请求
0
[5:3]
r
保留;
读操作返回 0 ;应写入 0。
用户手册
CCU6, V4.0
CCU6 SR2 使能
0
禁止 CCU6 SR2 中断服务请求
1
使能 CCU6 SR2 中断服务请求
21-14
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.2.4
IP 互连
CCU6 可和其它外设相互连接,从而无需软件干预即可实现高水平的自动化。
表 21-5
CCU6 输出连接关系
CCU6 功能 / 信号
连接至其它模块功能 / 信号
定时器 T12 输出信号
T12 周期匹配 (o): T12PM
ADC 请求源 0/1 触发 2 输入 (i): REQTR0C,
REQTR1C
定时器 T13 输出信号
T13 比较匹配 (o): T13CM
ADC 请求源 0/1 触发 4 输入 (i): REQTR0E,
REQTR1E
T13 周期匹配 (o): T13PM
ADC 请求源 0/1 触发 3 输入 (i): REQTR0D,
REQTR1D
CCU6 服务请求输出信号
服务请求输出 SR2 (o): CCU6_SR2
ADC 请求源 0/1 触发 0 输入 (i): REQTR0A,
REQTR1A
服务请求输出 SR3 (o): CCU6_SR3
ADC 请求源 0/1 触发 1 输入 (i): REQTR0B,
REQTR1B
其它信号
MCM 映射传送 (o): MCM_ST
表 21-6
ADC 请求源 0/1 触发 5 输入 (i): REQTR0F,
REQTR1F
CCU6 输入连接关系
CCU6 功能 / 信号
连接至其它模块功能 / 信号 由 ... 选择
捕获输入
CCU6 输入 (i): CC60
CCU6 输入 (i): CC61
用户手册
CCU6, V4.0
CCU6 SR2 输出 (o):
CCU6_SR2
CCU6_PISEL0L.ISCC60 = 10B
ADC 边界事件 0 (o):
ADC_BF0
CCU6_PISEL0L.ISCC60 = 11B
CCU6 SR2 输出 (o):
CCU6_SR2
CCU6_PISEL0L.ISCC61 = 10B
ADC 边界事件 1 (o):
ADC_BF1
CCU6_PISEL0L.ISCC61 = 11B
21-15
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
表 21-6
CCU6 输入连接关系
CCU6 功能 / 信号
CCU6 输入 (i): CC62
连接至其它模块功能 / 信号 由 ... 选择
CCU6_PISEL0L.ISCC62 = 10B
CCU6 SR2 输出 (o):
CCU6_SR2
ADC 边界事件 2 (o):
ADC_BF2
CCU6_PISEL0L.ISCC62= 11B
CCU6 输入 (i): T12HR CCU6 SR2 输出 (o):
CCU6_SR2
CCU6_PISEL0H.IST12HR = 01B
CCU6 SR3 输出 (o):
CCU6_SR3
CCU6_PISEL0H.IST12HR = 10B
ADC 通道事件 (o):
ADC_CHEV
CCU6_PISEL0H.IST12HR = 11B
ORC 事件 0 (o):
ORCEVENT0
MODPISEL3.IST12HR1 = 001B
CCU6_PISEL0H.IST12HR = 00B
ORC 事件 2 (o):
ORCEVENT2
MODPISEL3.IST12HR1 = 100B
CCU6_PISEL0H.IST12HR = 00B
MODPISEL3.IST12HR1 = 110B
CCU6_PISEL0H.IST12HR = 00B
ORC 事件 4(o):
ORCEVENT4
CCU6 输入 (i): T13HR CCU6 SR2 输出 t (o):
CCU6_SR2
CCU6_PISEL2.IST13HR = 01B
CCU6 SR3 输出 (o):
CCU6_SR3
CCU6_PISEL2.IST13HR = 10B
ADC 通道事件 (o):
ADC_CHEV
CCU6_PISEL2.IST13HR = 11B
ORC 事件 2 (o):
ORCEVENT2
MODPISEL3.IST13HR1 = 100B
CCU6_PISEL2.IST13HR = 00B
MODPISEL3.IST13HR1 = 110B
CCU6_PISEL2.IST13HR = 00B
ORC 事件 4(o):
ORCEVENT4
CCU6 输入 (i): CTRAP ORC 事件 3 (o):
ORCEVENT3
MODPISEL3.CTRAPIS = 11B
CCU6_PISEL0L.ISTRP = 00B
P1 过流事件 (o): P1_OCD
CCU6_PISEL0L.ISTRP = 01B/10
ADC 通道事件 0 (o):
ADC_CHEV0
CCU6_PISEL0L.ISTRP = 11B
ADC 边界事件 0 (o):
ADC_BF0
CCU6_PISEL0H.ISPOS0 = 11B
B
CCU6 输入 (i):
CCPOS0
用户手册
CCU6, V4.0
21-16
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
表 21-6
CCU6 输入连接关系
CCU6 功能 / 信号
连接至其它模块功能 / 信号 由 ... 选择
CCU6_PISEL0H.ISPOS1 = 11B
CCU6 输入 (i):
CCPOS1
ADC 边界事件 1 (o):
ADC_BF1
CCU6 输入 (i):
CCPOS2
ADC 边界事件 2 (o):
ADC_BF2
21.2.5
CCU6_PISEL0H.ISPOS2 = 11B
模块挂起控制
当
OCDS
处 于 监 控 模 式 (MMCR2.MMODE = 1) ,且调试挂起信号有效
(MMCR2.DSUSP = 1)时,根据寄存器 MODSUSP 中的相关模块挂起位的设置,XC83x
的 CCU6 模块中的定时器 T12 和定时器 T13 可被挂起。该寄存器的定义见章节 10.2.4。
被挂起时,由于计数器的输入时钟关闭,定时器停止计数。模块仍有时钟输入,因此可
访问模块寄存器。
21.3
定时器 T12 模块
定时器 T12 是产生三相 PWM 信号的主要单元。一个 16 位计数器通过比较器和 3 个通道
寄存器相连,当计数器的值和某个通道寄存器的值匹配时,输出匹配信号。 T12 模块提
供了多种控制功能,以便适用于不同应用的需求。
除可产生三相 PWM 信号之外,T12 模块还支持单通道比较和捕获功能、以及死区时间控
制和类磁滞比较模式。
本节提供下述内容:
·
·
·
·
·
·
·
·
T12 模块概述 (见章节 21.3.1)
计数策略 (见章节 21.3.2)
比较模式 (见章节 21.3.3)
比较模式输出通路 (见章节 21.3.4)
捕获模式 (见章节 21.3.5)
映射传送 (见章节 21.3.6)
T12 工作模式选择 (见章节 21.3.7)
T12 计数寄存器描述 (见章节 21.3.8)
用户手册
CCU6, V4.0
21-17
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
状态位
定时器T12
逻辑
捕获/比较
通道 CC60
CC60ST
捕获/比较
通道 CC61
CC61ST
捕获/比较
通道 CC62
CC62ST
送至死区时间
控制
和输出调制
输入和控制/状态逻辑
T12HR
图 21-3
用户手册
CCU6, V4.0
CC6xIN
CCPOSx
CCU6_MCA05507 _CN
定时器 T12 模块总览
21-18
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.1
T12 概述
图 21-4 为定时器 T12 的内部结构框图。由寄存器 TCTR0L, TCTR0H, TCTR2L,
TCTR2H, TCTR4L, TCTR4H, PISEL0L 和 PISEL0H 中的位控制 T12 模块的功能。
定时器 T12 的输入时钟 (fT12)来自经过预分频处理的模块时钟 fCC6 (预分频因子可编
程设定)和一个可选的 1/256 分频器,或者来自输入信号 T12HR。分频因子分别由位域
T12CLK 和 T12PRE 选择(见表 21-7)。T12 可递增或递减计数,计数方向取决于所选
择的工作模式。计数方向标志 CDIR 指示当前的计数方向。
T12RSEL
T12RS
T12 RR
T12R
CDIR
边沿检测
CTM
T12STR
T12STD
T12HR
STE12
边沿检测
fT12
T12
控制
& 状态
计数寄存器
T12
T12SSC
T12RES
时钟选择
n
fCC6
T12CLK
256
= 0000 H
T12 _ZM
= 0001 H
T12PRE
读取
T12PR
T12 _OM
比较
=?
T12 _PM
周期寄存器
T12 _ST
写入
T12PR
图 21-4
周期映射寄存器
8-BIT_8BIT_CCU6_MCA05508_CN
定时器 T12 逻辑和周期比较器
T12 计数寄存器 T12L, T12H 通过比较器和周期寄存器 T12PRL, T12PRH 相连,该寄
存器的内容决定 T12 的最大计数值。
边沿对齐模式下, T12 计数到由 T12PR 决定的周期值后复位为 0000H 。中心对齐模式
下, T12 计数到周期值后,计数方向从 “递增”变为 “递减”(请注意,在该模式下,
T12 递增计数到周期值加 1 后转为递减计数)。上述两种情况下,均产生信号 T12_PM
用户手册
CCU6, V4.0
21-19
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
(T12 周期匹配)。周期寄存器的新周期值从其映射周期寄存器中获得。
读取 T12PR 得到比较器的当前周期值,对映射周期寄存器进行写访问则写入新周期值。
“T12 映射传送”控制信号 T12_ST 控制将新周期值从映射寄存器传送到 T12PR 中的操
作(见章节 21.3.6),该信号的产生取决于当前的工作模式和映射传送使能位 STE12 的
状态。 CCU6 单元提供了周期值、以及 (和产生 PWM 信号相关的)其它数值的映射寄
存器,便于软件同步更新所有相关参数。
两个信号 T12_ZM 和 T12_OM 分别指示计数器的值是否等于 0000H (T12_ZM = 0- 匹
配)或 0001H (T12_OM = 1- 匹配)。这些信号控制 T12 的计数和切换操作。
T12 基本工作模式:边沿对齐模式 (见图 21-5)或中心对齐模式 (见图 21-6),由位
CTM 进行选择。单次模式控制位 T12SSC 控制定时器在当前计数周期结束后自动停止运
行 (见图 21-7 和图 21-8)。
运行位 T12R 控制 T12 定时器的启动和停止,可由寄存器 TCTR4L,TCTR4H 中的位修
改。T12R 可由软件设置,置位 T12RS 则对 T12R 置位,置位 T12RR 则对 T12R 清零,
T12R 还可由输入信号 T12HR(TCTR2H.T12RESL)的可选信号沿置位,或者根据预先
选定的条件由硬件复位。
当设定的 T12 周期值为 0 时,定时器 T12 的运行位 T12R 一定不能置位。
定时器 T12 可由控制位 T12RES 清零。置位 “只写”控制位 T12RES 只清除定时器的
内容,不会产生其它后续影响,如不会终止定时器工作。
由位 STE12 使能 T12 映射传送控制信号 T12_ST 的产生,该控制位可通过相关置位控制
位 T12STR,或复位控制位 T12STD 间接置位 / 复位。
定时器 T12 工作时,写入计数寄存器 T12 的操作无效。若 T12 停止工作且死区时间计数
器为 0,写入寄存器 T12 的值立刻生效。
用户手册
CCU6, V4.0
21-20
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.2
T12 计数策略
本节描述 T12 的时钟和计数功能。
21.3.2.1 时钟选择
定时器 T12 的输入时钟 fT12 来自经过预分频处理 (预分频因子可编程设定)的模块时钟
fCC6 和一个可选的 1/256 分频器。所得预分频因子列于表 21-7 中。定时器 T12 不工作时
(TCTR0L.T12R = 0),预分频器复位,从而保证产生可重复的时序和延迟。
表 21-7
定时器 T12 输入频率选择
T12CLK
所得输入时钟 fT12
预分频器关闭 (T12PRE = 0)
000B
fCC6
fCC6 / 2
fCC6 / 4
fCC6 / 8
fCC6 / 16
fCC6 / 32
fCC6 / 64
fCC6 / 128
001B
010B
011B
100B
101B
110B
111B
所得输入时钟 fT12
预分频器开启 (T12PRE = 1)
fCC6 / 256
fCC6 / 512
fCC6 / 1024
fCC6 / 2048
fCC6 / 4096
fCC6 / 8192
fCC6 / 16384
fCC6 / 32768
21.3.2.2 边沿对齐 / 中心对齐模式
在边沿对齐模式下 (CTM = 0),定时器 T12 始终递增计数 (CDIR = 0)。计数至由周
期寄存器给出的周期值时 (周期匹配 T12_PM),下一个计数脉冲来到时, T12 的值被
清除 (锯齿形)。
用户手册
CCU6, V4.0
21-21
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
fT12
周期值
T12 计数
周期匹配 0-匹配
0
递增
递增
值 n+1
值 n+2
CDIR
CC6x
映射传送
图 21-5
CCU6_MCT05509_CN
边沿对齐模式下 T12 的操作
因此边沿对齐模式下,定时器的周期值由下式给出:
T12PER = < 周期值 > + 1 ;以 T12 时钟频率 (fT12) 计数
(21.1)
在中心对齐模式下 (CTM = 1) ,定时器 T12 递增或递减计数 (三角形) 。递增计数
(CDIR = 0)至周期寄存器给出的值时 (周期匹配 T12_PM),下一个计数脉冲来到时,
计数方向控制位 CDIR 变为递减 (CDIR = 1)。
当递减计数至 0001H (1- 匹配 T12_OM),下一个计数脉冲来到时,计数方向控制位变
为递增计数。
因此中心对齐模式下,定时器的周期由下式给出:
T12PER = (< 周期值 > + 1) × 2 ;以 T12 时钟频率 (fT12) 计数
(21.2)
fT12 时钟 T12 计数方向被设置为递增计数
· 计数器递减计数到 0001H 时,下一个
(CDIR = 0)。
· 计数器递增计数到周期匹配时,下一个 fT12 时钟 T12 计数方向被设置为递减计数
(CDIR = 1)。
· CDIR = 0 时,下一个 fT12 时钟计数器递增计数; CDIR = 1 时,下一个 fT12 时钟计数
器递减计数。
用户手册
CCU6, V4.0
21-22
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
fT12
<周期值> + 1
周期值
0匹配
T12计数
周期匹配
周期匹配
0
递减
递增
递增
值n
值 n+1
值 n+1
递减
CDIR
CC6x
映射传送
图 21-6
映射传送
值 n+2
CCU6_MCT05510_CN
中心对齐模式下 T12 的操作
注: 在 1- 匹配或周期匹配后的下一个定时器时钟,位 CDIR 改变。因此,定时器以原
先的计数方向再继续计数一个时钟后才真正改变计数方向 (见图 21-6)。
用户手册
CCU6, V4.0
21-23
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.2.3 单次模式
单次模式下,定时器运行位 T12R 被硬件清除。如果 T12SSC = 1,当前定时器周期结束
之后定时器 T12 停止运行。
边沿对齐模式下,当定时器 T12 计数到周期值后被清零至 0000H, T12R 被清除,(见
图 21-7)。
fT12
周期值
T12 计数
比较值
0
T12R
CC6xST
T12SSC
图 21-7
CCU6_MCT05511_CN
边沿对齐模式下的单次操作
中心对齐模式下,定时器递减计数至零时,计数周期结束 (递减计数至 1- 匹配之后一个
时钟周期,见图 21-8)。
fT12
周期值
比较值
T12 计数
1
0
T12R
CC6xST
T12SSC
图 21-8
用户手册
CCU6, V4.0
CCU6_MCT05512_CN
中心对齐模式下的单次操作
21-24
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.3
T12 的比较模式
定时器 T12 的三个独立的捕获 / 比较通道可协同 T12 的计数值,分别执行比较或捕获操
作。捕获功能的具体内容请参阅章节 21.3.5。
21.3.3.1 比较通道
比较模式下(见图 21-9),三个比较通道 CC60,CC61 和 CC62 可产生三相 PWM 序列。
计数寄存器
T12
fT12
比较匹配
CM_60
比较匹配
CM_61
比较
=?
比较
=?
比较
=?
比较寄存器
CC60R
比较寄存器
CC61 R
比较寄存器
CC62R
比较匹配
CM_62
T12_ST
比较映射寄存器
CC60SR
比较映射寄存器
CC61 SR
比较映射寄存器
CC62SR
CCU6_MCA05513_CN
图 21-9
T12 通道比较器
每个通道通过各自的相等比较器和 T12 的计数寄存器相连,当计数器的值和比较寄存器
中的值匹配时产生匹配信号。每个通道由比较器和双寄存器结构 (实际比较寄存器
CC6xR 和相关映射寄存器 CC6xSR)组成。 CC6xR 与比较器直接相连、 CC6xSR 由软
件预先加载。当 T12 的映射传送信号 T12_ST 有效时,映射寄存器中的内容被传送到实
际比较寄存器中。 CAPCOM6 单元提供了比较值以及 (和产生 PWM 信号相关的)其它
数值的映射寄存器,便于软件同步更新所有相关参数。
21.3.3.2 通道状态位
每个 (比较)通道都有对应的状态位, CMPSTATL.CC6xST,用来保存比较 (或捕获)
操作的状态 (见图 21-10)。比较模式下,根据一套切换规则 (取决于定时器 T12 的当
前状态)修改状态位。
用户手册
CCU6, V4.0
21-25
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
CC60_R
送至中断
CC60_F 控制
CCPOS0
CM_60
比较通道
CC60
切换规则
逻辑
状态位
CC60 ST
MSEL 60
送至死区时间
计数器 0
MCC60 S/R
CC61_R
CCPOS1
送至中断
控制
CC61_F
CM_61
比较通道
CC61
切换规则
逻辑
状态位
CC61 ST
MSEL 61
送至死区时间
计数器 1
MCC61 S/R
CC62_R
CCPOS2
CC62_F
CM_62
比较通道
CC62
T12 计数器
切换规则
逻辑
状态位
CC62 ST
MSEL 62
MCC62 S/R
CDIR
T12R
送至中断
控制
送至死区时间
计数器 2
T12_ZM
CCU6_MCB05514_CN
图 21-10
比较模式下的比较状态位框图
CC6xST 切换规则逻辑的输入包括:计数方向标志位(CDIR),定时器运行位(T12R),
定时器 0- 匹配信号 (T12_ZM) ,各通道的比较匹配信号 CM_6x 以及模式控制位
T12MSELL.MSEL6x。
此外,可通过软件设定寄存器 CMPMODIFL, CMPMODIFH 内的置位控制位 MCC6xS
和复位控制位 MCC6xR 分别置位或复位各状态位。输入信号 CCPOSx 用于类磁滞比较
模式,正常比较模式下,这些输入被忽略。
注: 霍尔传感器模式下,还需要考虑附加的 / 不同的规则 (请参阅相关章节)。
用户手册
CCU6, V4.0
21-26
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
递增计数检测到比较匹配时,则指示发生比较中断事件 CC6x_R ;递减计数检测到比较
中断事件时,则指示发生比较中断事件 CC6x_F。状态位的实际设置对比较模式的中断产
生没有影响。
只有当定时器 T12 工作时 (T12R = 1)才可能由切换规则逻辑根据比较动作修改状态位
CC6xST。硬件修改状态位时,使用以下规则置位和复位状态位(如图 21-11 和图 21-12
所示):
状态位 CC6xST 被置位到 1:
· T12 递增计数到比较匹配后,下一个 T12 时钟 (fT12)置位 CC6xST
(即,计数器递增计数到超过比较值);
· T12 递增计数到 0- 匹配且同时为比较匹配时,下一个 T12 时钟(fT12)置位 CC6xST。
状态位 CC6xST 被复位到 0:
· T12 递减计数到比较匹配后,下一个 T12 时钟 (fT12)复位 CC6xST
(即,中心对齐模式下计数器递减计数到低于比较值);
· T12递增计数到0-匹配但同时不是比较匹配时,下一个T12时钟(fT12)复位CC6xST。
fT12
周期值
T12 计数
比较值
0
CC6xST
CCU6_MCT05515_CN
图 21-11
边沿对齐模式下的比较操作
图 21-13 例举出更多的比较波形。请务必注意:图中假设定时器计数过程中某些比较值
被修改。修改值由软件预先载入映射寄存器 CC6xSR 中,当 T12 的映射传送信号 T12_ST
(假定被使能)有效时,该修改值被传送到实际比较寄存器 CC6xR 中。
用户手册
CCU6, V4.0
21-27
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
fT12
比较匹配
比较匹配
周期值
T12 计数
比较值
0
CC6xST
图 21-12
CCU6_MCT05516_CN
中心对齐模式下的比较操作
fT12
周期值 = 5
T12 计数
0
递减
递增
递减
递增
值n
值 n+1
值 n+2
值 n+3
CC6x = 2
CC6x = 2
CC6x = 1
CC6x = 1
CC6x = 1
CC6x = 0
CC6x = 0
CC6x = 0
CC6x = 3
CC6x = 3
CC6x = 3
CC6x = 3
CC6x = 4
CC6x = 4
CC6x = 4
CC6x = 4
CC6x = 5
CC6x = 5
CC6x = 5
CC6x = 5
CC6x = 3
CC6x = 6
CC6x = 6
CC6x = 6
CDIR
CC6x
a)
b)
c)
d)
e)
f)
CCU6_MCT05517_CN
图 21-13
用户手册
CCU6, V4.0
比较波形举例
21-28
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
例 b)图示说明 跳变到占空比为 100% 的情况。先使用比较值 0001H,然后改为 0000H。
请注意:在新比较值生效的定时器周期内,仍产生一个 T12 时钟周期的低脉冲 (该脉冲
由前面的比较值 0001H 产生)。接下来的定时器周期,状态位 CC6xST 始终保持为 1,产
生占空比为 100% 的信号。此时,比较规则 “0- 匹配且同时为比较匹配”生效。
例 f)图示说明跳变到占空比为 0% 的情况。新比较值设定为 < 周期值 > + 1,状态位
CC6ST 始终保持为 0。
图 21-14 举例说明三通道比较波形的产生。通过恰当的死区时间控制和输出调制,可产
生高效的三相 PWM 信号。
周期值
CC61R
CC62R
T12 计数
CC60R
0
递减
递增
递减
递增
递减
CDIR
映射传送
CC60ST
CC61ST
CC62ST
图 21-14
用户手册
CCU6, V4.0
CCU6_MCT05518_CN
三通道比较波形
21-29
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.3.3 类磁滞控制模式
类 磁 滞 控 制 模 式 (T12MSELL.MSEL6x = 1001B)提 供 了 这 样 的 可 能 性:如 果 输 入
CCPOSx 变为 0,通过清除状态位 CC6xST 可切断 PWM 输出。利用该模式可实现简单
的电机控制,例如用比较器指示过流。当 CCPOSx = 0 时,相应通道的 PWM 输出驱动
其被动电平。只有当 CCPOSx = 1 时才可能置位 CC6xST。
只要输入 CCPOSx 为 0,相应的状态位保持为 0。当 CCPOSx 处于高电平时,输出可进
入主动态,并由位 CC6xST 决定 (见图 21-10 状态位逻辑和图 21-15 输出路径)。
使用 fCC6 来评估 CCPOSx 输入。
该模式可将和时间相关的控制行为引入类磁滞控制器。标准的类磁滞控制器检测某值是
否已超过极限,并根据比较结果切换输出。根据运行条件不同,切换频率和占空比不固
定、可不断改变。
若要实现基于类磁滞控制器 (控制内环)的时间相关控制环路 (外部环路),如果外部
环路与内环同步,将会表现出更好的行为特性。因此,可采用本产品提供的类磁滞模式,
它结合了按时间切换的控制和类磁滞控制两种功能。例如,在该模式,可按照某个固定
时间基准接通输出;一旦检测到输入引脚 CCPOSx 的下降沿,则立刻切断输出。
类磁滞模式可产生带有过流保护的标准 PWM。只要引脚 CCPOSx 上不出现低电平,则
以正常方式产生输出信号 (先前章节已作说明);只有当引脚 CCPOSx 上出现低电平,
如检测到过流时,才切断输出以避免损坏系统。
用户手册
CCU6, V4.0
21-30
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.4
比较模式输出路径
图 21-15 给出从通道状态位到其输出引脚最简化的信号路径。如图所示,用户可通过多
种控制选择,决定当前状态位 CC6xST 所对应的 (期望)输出信号的切换操作。输出调
制的具体内容请参阅章节 21.3.4.3。
T12
状态位
死区时间产生
CC60ST
CC61ST
T12
状态选择
输出电平选择
CC6xPS
PSLy
CC6x_O
CC6xST
T12 输出
调制
死区时间
计数器
CC62ST
CC6xST
CC6x
电平
选择
电平
选择
COUT6x
COUT6x_O
COUT6xPS
PSLy+1
CCU6_MCA05519_CN
图 21-15
比较模式简化输出路径框图
输出路径基于被定义为主动或被动的信号。术语 “主动和被动”与输出电平无关,而和
内部动作有关。主要适用于信号调制,此时 T12 和 T13 信号与多通道信号以及强制中断
功能相结合。输出电平选择功能允许用户定义被动态时输出引脚上的输出电平 (主动态
的电平反向)。推荐用户采用下述方式配置该模块,当 CCU6 在被动态输出信号时,外
部功率开关关闭。
21.3.4.1 死区时间产生
功率逆变器中某一相的上下桥臂开关信号 (信号互补)由同一个比较通道产生。例如,
若 T12 计数值大于比较值时,上桥臂的控制开关导通 (状态位 = 1),那么,当 T12 计
数值小于比较值时,下桥臂的控制开关导通 (状态位 = 0)。
大多数情况下,相互连接的功率开关的开关特性不对称,即接通和断开所需时间不同。若
功率器件的接通时间小于断开时间,通常会引发问题,导致逆变器桥臂短路,从而可能
会损坏整个系统。为了通过硬件解决该问题,捕获 / 比较单元中实现了一个可编程的死区
时间产生模块,使信号从被动态到主动态的切换延迟产生 (主动态到被动态的切换不延
迟)。
T12 三个通道的死区时间产生模块的结构相似,如图 21-16 所示。由寄存器 T12DTCL,
T12DTCH 中的位进行控制。只要状态位 CC6xST 变化,即激活对应的死区时间计数器
工作,计数时钟与 T12 输入时钟 (fT12)相同。死区时间的长度可由位域 DTM 编程设
用户手册
CCU6, V4.0
21-31
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
定。对于 T12 三个通道来说,死区时间的长度一致。写 TCTR4L.DTRES = 1,则将所有
死区时间设置为被动。
死区时间值
DTM
fT12
DTRES
死区时间
计数器 0
DTE0
CC60ST
死区时间 0
主动 / 被动
CC60ST
CC60ST
死区时间
计数器 1
DTE1
CC61ST
死区时间 1
主动 / 被动
CC61ST
CC61ST
死区时间
计数器 2
DTE2
CC62ST
死区时间 2
主动 / 被动
CC62ST
CC62ST
CCU6_MCB05520_CN
图 21-16
死区时间产生框图
三个死区时间计数器中的每一个对应有各自的死区时间使能位 DTEx。使能的死区时间计
数器产生通道输出信号从被动到主动的死区时间延迟。当某通道正在进行死区时间产生
时 (主动),状态位 CC6xST 的改变无效。这就避免了状态位 CC6xST 变化过早时,无
意引起的附加死区时间。被禁止的死区时间计数器始终被认为是被动的,且不会延迟任
何 CC6xST 边沿。
根据状态位 CC6xST,死区时间产生模块为每个比较通道输出一个直接信号 CC6xST 和
一个反 向 信 号 CC6xST,由 相 关 的 死 区 时 间 计 数 器 的结果屏蔽每个信号 (波形见
图 21-17)。
用户手册
CCU6, V4.0
21-32
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
T12 计数值
比较值
主动
状态位
CC6xST
被动
主动
死区时间
带有死区
时间的
CC6xST
被动
主动
被动
带有死区
时间的
CC6xST
图 21-17
主动
被动
主动
被动
CCU6_MCT05521_CN
死区时间产生波形
21.3.4.2 状态选择
为了支持更多类型的功率开关和驱动器,可定义何时输出可为主动并被调制,状态选择
为用户提供更大的灵活性,该特性对于互补或多相 PWM 信号尤其有用。
根据输入到死区时间产生器的信号 CC6xST 和 CC6xST (见图 21-15)进行状态选择。
这两个信号决不会同时为主动态,但是可以同时处于被动态。每个比较通道相应的状态
位 CC6xST 改变之后的死区时间内会出现此情况。
如果在达到比较值之前或之后 (见寄存器 CMPSTATL, CMPSTATH)输出信号应该为
主动态,用户可单独为每个输出信号 CC6xO 和 COUT6xO 选择状态。进行状态选择之
后,功率逆变器桥臂中的互补功率开关的主动 (接通)阶段和比较值的之间的对应关系
确定(如达到比较值之前,信号 CC6xO 变为主动态,而在达到比较值之后,COUT6xO
变为主动态。与此类似,尽管同一个比较通道对应有两个输出信号,但每个输出信号的
输出调制,强制中断逻辑和输出电平选择都可单独编程设定。
用户手册
CCU6, V4.0
21-33
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.4.3 输出调制和电平选择
数据最后送入输出调制控制模块。该模块将所有的调制源和强制中断功能逻辑组合,以
控制输 出 引 脚 的 实 际 电 平 (由 寄 存 器 MODCTRL, MODCTRH 内的调制使能位
T1xMODENy 和 MCMEN 控制)。对于每个 T12 输出信号(比较通道 CC60 的情况参见
图 21-18),由下列信号源组合得到:
· T12 相关比较信号 CC6x_O(对于输出 CC6x)或 COUT6x_O(对于输出 COUT6x)
由 T12 模块给出 (带死区时间的状态选择) ,每个输出信号具有单独的使能位
T12MODENy (对于输出 CC6x, y = 0, 2, 4 ;对于输出 COUT6x, y = 1, 3, 5 )。
· T13 相关比较信号 CC63_O 由 T13 状态选择给出,每个输出信号具有一个单独的使
能位 T13MODENy(对于输出 CC6x,y = 0, 2, 4 ;对于输出 COUT6x,y = 1, 3, 5)。
· 多通道输出信号 MCMPy(对于输出 CC6x,y = 0, 2, 4 ;对于输出 COUT6x,y = 1,
3, 5)具有一个公共使能位 MCMEN。
· 强制中断状态 TRPS每个输出信号都有一个单独的使能位TRPENy(对于输出CC6x,
y = 0, 2, 4 ;对于输出 COUT6x, y = 1, 3, 5)。
若输出调制模块的某个调制输入信号 CC6x_O/COUT6x_O,CC63_O,或 MCMPy 被使
能且处于被动态,则被调制信号也处于被动态,和其它被使能信号的状态无关;只有当
所有被使能信号均处于主动态,调制输出才为主动态。如果调制输入都未被使能,输出
处于被动态。
若强制中断状态有效 (TRPS = 1),所有使能的强制中断 (TRPENy = 1)的输出被设
置为被动态。
每个调制控制模块的输出和一个电平选择模块相连 (由寄存器 PSLR 对电平选择模块进
行配置)。根据输出线的状态,由该模块决定决定引脚的实际输出电平。输出线状态由被
动态选择位 PSLy 决定(与主动 / 被动态和输出极性无关)。如果被调制的输出处于被动
态,PSLy 指定的电平即为输出的实际电平;如果被调制的输出处于主动态,PSLy 的反
向电平为输出的实际电平。该特性允许用户调整与电路连接的主动输出信号的极性。
控制位 PSLy 对应有映射寄存器,从而在更新 PSLy 时避免了输出线上多余的脉冲。由
T12 的映射传送信号 (T12_ST)触发 CC6x 和 COUT6x (x = 0, 1, 2) 相关的位的更新。
读操作读取实际使用值;写操作写入映射位。 CCU6 单元提供了 PSL、以及 (和产生
PWM 信号相关的)其它数值的映射寄存器,便于软件同步更新所有相关参数。
图 21-18 给出比较通道 CC60 的输出调制结构 (输出信号 CC60 和 COUT60)。比较通
道 CC61 和 CC62 与 CC60 的输出调制结构相似。
用户手册
CCU6, V4.0
21-34
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
强制中断
处理模块
TRPS
TRPEN0
T13 模块
CC63_O
输出调制
CC60
T13MODEN0
主动
被动
电平选择
CC60
CC60_O
T12 模块 +
死区时间
PSL0
COUT60_O
T12MODEN0
MCMP0
多通道模式
MCMP1
MCMEN
TRPEN1
输出调制
COUT60
T13MODEN1
主动
被动
电平选择
COUT60
PSL1
T12MODEN1
CCU6_MCA05543_CN
图 21-18
用户手册
CCU6, V4.0
比较通道 CC60 的输出调制
21-35
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.5
T12 捕获模式
T12 模块的三个通道均可响应外部信号 CC6xIN,用于捕获 T12 的时间信息。
捕获模式下,当在输入 CC6xIN 上检测到上升沿时,则发生中断事件 CC6x_R,在输入
CC6xIN 上检测到下降沿时,则发生中断事件 CC6x_F。
CCU6 单元提供了多种不同的捕获模式。所有捕获模式下,均使用各通道的两个寄存器
(实际寄存器以及映射寄存器)。通过 T12MSELL.MSEL6x 位域分别为各通道选择捕获
模式。
表 21-8
MSEL6x
0100B
捕获模式总览
模式
1
信号
有效边沿
CC6xIN 上升沿
CC6xIN 下降沿
CC6nSR 保存到
–
T12 保存到
CC6xR
–
CC6xSR
0101B
2
CC6xSR
3
CC6xIN 上升沿
CC6xIN 下降沿
CC6xR
0110B
CC6xR
CC6xSR
0111B
4
CC6xIN 任意沿
CC6xR
CC6xSR
图 21-19 说明捕获模式 1 的操作。检测到输入信号 CC6xIN 的上升沿(0-1 的跳变)时,
将定时器 T12 的当前计数值捕获到寄存器 CC6xR 中;检测到输入引脚 CC6xIN 的下降
沿 (1-0 的跳变)时,将定时器 T12 的内容捕获到 CC6xSR 中。
fT12
计数寄存器
T12
MSEL6x
CC6xIN
上升沿
跳变沿
下降沿
捕获模式
选择
检测
fCC6
置位
状态位
CC6xST
寄存器 CC6xR
映射寄存器
CC6xSR
CC6x_R
CC6x_F
送至中断逻辑
CCU6_MCB05522_CN
图 21-19
捕获模式 1 框图
捕获模式 2, 3 和 4 如图 21-20 所示。各模式的差别仅在于引发捕获操作的有效跳变沿不
同。当处于三种捕获模式中的任意一种,检测到输入引脚 CC6xIN 发生有效跳变时,对
用户手册
CCU6, V4.0
21-36
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
应的映射寄存器 CC6xSR 的当前值被传送到寄存器 CC6xR 中,定时器 T12 的当前值捕
获到寄存器 CC6xSR 中 (同时传送)。捕获模式 2 的有效沿为引脚 CC6xIN 的上升沿;
捕获模式 3 的有效沿为引脚 CC6xIN 的下降沿;捕获模式 4 的有效沿为引脚 CC6xIN 的
任意沿,见表 21-8。当输入信号连续两次跳变间隔很短时,这些捕获模式非常有用。
计数寄存器
T12
fT12
MSEL6x
CC6xIN
跳变沿
捕获模式
选择
映射寄存器
CC6 xSR
检测
Set
fCC6
状态位
CC6xST
寄存器 CC6xR
CC6x_R
CC6x_F
送至中断逻辑
CCU6_MCB05523_CN
图 21-20
用户手册
CCU6, V4.0
捕获模式 2, 3 和 4 框图
21-37
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
此外,还有五种多输入捕获模式,使用两个外部信号输入 CC6xIN 和信号 CCPOSx 触发
捕获。
计数寄存器
T12
fT12
MSEL6x
CC6xIN
跳变沿
检测
捕获
模式
选择
置位
状态位
CC6xST
fCC 6
寄存器 CC6xR
置位
CC6x_R
CC6 x_ F
CCPOSx
跳变沿
检测
送至中断逻辑
捕获
模式
选择
MSEL6x
图 21-21
映射寄存器
CC6xSR
CCU6_MCB05524_CN
多输入捕获模式框图
多输入捕获模式下,信号 CC6xIN 上选定的事件触发 T12 的当前值锁存到寄存器 CC6xR
中;信号 CCPOSx 上选定的事件触发 T12 的当前值锁存到寄存器 CC6xSR 中。触发事
件包括:两个输入引脚上相反的跳变沿、相同的跳变沿、或任意跳变沿。触发事件选择
见表 21-9。
各种不同的捕获模式下,当信号 CC6xIN 或 CCPOSx 上发生所选定的捕获触发事件时,
通道状态位 CC6xST 被置 1。该通道状态位不能由硬件清除,可由软件清除。
此外,中断逻辑的相应信号线被激活,向 CPU 发送中断请求。与所选择的有效边沿无
关,信号 CC6xIN 上检测到的所有边沿都会激活相应的中断请求线(请参阅章节 21.9)。
表 21-9
MSEL6x
1010B
用户手册
CCU6, V4.0
多输入捕获模式总览
模式
5
信号
CC6xIN
有效边沿
上升沿
T12 保存到
CC6xR
CCPOSx
下降沿
CC6xSR
21-38
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
表 21-9
MSEL6x
多输入捕获模式总览
1011B
模式
6
1100B
7
1101B
8
1110B
9
1111B
–
用户手册
CCU6, V4.0
信号
CC6xIN
下降沿
有效边沿
CCPOSx
T12 保存到
CC6xR
上升沿
CC6xSR
CC6xIN
上升沿
CC6xR
CCPOSx
上升沿
CC6xSR
CC6xIN
下降沿
CC6xR
CCPOSx
下降沿
CC6xSR
CC6xIN
任意边沿
CC6xR
CCPOSx
任意边沿
CC6xSR
保留 (无捕获或比较操作)
21-39
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.6
T12 映射寄存器传送
采用一个特殊的映射传送信号 (T12_ST)便于使比较通道 CC60、 CC61 和 CC62 周期
值、比较值的更新和 T12 的操作同步进行。映射寄存器使得软件能够同时更新定义 PWM
周期的 所 有 相 关 参 数。下 一 个
PWM
周 期 可 使 用一组新的参数。软件通过位
TCTR0L.STE12 (向 只 写 位 TCTR4L.T12STR 写 入 1 将置位 STE12 ;向只写位
TCTR4L.T12STD 写入 1 将清除 STE12)。
图 21-22 给出映射寄存器结构和映射传送信号,以及各种寄存器的读 / 写访问特性。
读
读
读
读
周期寄存器
T12PR
(T12)
PSLy
CC6xPS
COUT6xPS
周期映射寄存器
T12PR
(T12) PSLy
映射
CC6xPS
映射
COUT6xPS
映射
写
写
写
写
读
比较寄存器
CC6xR
_
>1
T12_ST
其它模式
(霍尔、捕获等)
比较映射寄存器
CC6xSR
写
图 21-22
用户手册
CCU6, V4.0
读
CCU6_MCA05546 _CN
T12 映射寄存器概览
21-40
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
在以下条件下,发生 T12 映射寄存器传送 (T12_ST 有效):
· 定时器 T12 停止工作 (T12R = 0),或
· STE12 = 1 且递增计数时检测到周期匹配,或
· STE12 = 1 且递减计数时检测到 1- 匹配
当信号 T12_ST 有效,下一个 T12 时钟周期触发映射寄存器传送。映射寄存器传送之后,
位 STE12 自动清零。
21.3.7
定时器 T12 工作模式选择
由位域 TCTR4L.MSEL6x 和 T12MSELL.MSEL6x 定义 T12 各通道的工作模式。
表 21-10
T12 捕获 / 比较模式总览
MSEL6x
选择的工作模式
0000B,
1111B
捕获 / 比较模式关闭
0001B,
0010B,
0011B
比较模式,见章节 21.3.3
三种编码的操作相同
01XXB
双寄存器捕获模式,见章节 21.3.5
1000B
霍尔传感器模式,见章节 21.7
为确保能够正确使用该模式,三个位域 MSEL6x 必须全部被设置为霍尔传
感器模式。
1001B
类磁滞模式,见章节 21.3.3.3
1010B
1011B,
1100B,
1101B
1110B
多输入捕获模式,见章节 21.3.5
由定时器控制寄存器 TCTR0L, TCTR0H 和 TCTR2L, TCTR2H 控制定时器的时钟和计数
策略。通过写寄存器 TCTR4L, TCTR4H 可触发特定操作。
用户手册
CCU6, V4.0
21-41
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.8
T12 相关寄存器
21.3.8.1 T12 计数寄存器
寄存器 T12 的内容表示定时器 T12 的计数值。只有当定时器 T12 停止工作时,才可对其
进行写操作;定时器 T12 运行时写操作无效。寄存器 T12 始终可由软件读取。
在边沿对齐模式下, T12 仅递增计数;中心对齐模式下, T12 可递增和递减计数。
T12L
定时器 T12 计数寄存器低位
RMAP: 0, PAGE: 3
7
6
5
(FAH)
4
复位值:00H
3
2
1
0
T12CVL
rwh
符号
T12CVL
位
[7:0]
类型
rwh
描述
定时器 T12 计数值
该寄存器表示 T12 的 16 位计数值的低 8 位。
T12H
定时器 T12 计数寄存器高位
RMAP: 0, PAGE: 3
7
6
5
(FBH)
4
复位值:00H
3
2
1
0
T12CVH
rwh
符号
T12CVH
位
[7:0]
类型
rwh
描述
定时器 T12 计数值
该寄存器表示 T12 的 16 位计数值的高 8 位。
21.3.8.2 周期寄存器
寄存器 T12PRL/H 中保存定时器 T12 的周期值。周期值和 T12 的当前计数值进行比较,
根据规定的计数规则执行相关操作。该寄存器对应一个映射寄存器,位 STE12 控制映射
用户手册
CCU6, V4.0
21-42
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
传送。软件读操作读出当前用于周期比较的周期值;而写操作将周期值写入映射寄存器
中。映射寄存器结构便于用户同步更新 T12 的所有相关值。
T12PRL
定时器 T12 周期寄存器低位
RMAP: 0, PAGE: 1
7
6
5
(9CH)
4
复位值:00H
3
2
1
0
T12PVL
rwh
符号
T12PVL
位
[7:0]
类型
rwh
描述
定时器 T12 周期值
T12PVL 定义导致周期匹配的周期值的低 8 位。计数
到该值时,定时器被置为 0 (边沿对齐模式)或者
将计数方向改为递减 (中心对齐模式)。
T12PRH
定时器 T12 周期寄存器高位
RMAP: 0, PAGE: 1
7
6
5
(9DH)
4
复位值:00H
3
2
1
0
T12PVH
rwh
符号
T12PVH
用户手册
CCU6, V4.0
位
[7:0]
类型
rwh
描述
定时器 T12 周期值
T12PVH 定义导致周期匹配的周期值的高 8 位。计
数到该值时,定时器 T12 置为 0 (边沿对齐模式)
或将计数方向改为递减 (中心对齐模式)。
21-43
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.8.3 捕获 / 比较寄存器
比较模式下,寄存器 CC6xRL/H (x = 0 - 2) 是 T12 的实际比较寄存器。保存在 CC6xR 中
的值和 T12 的计数值进行比较 (三个通道同时进行)。捕获模式下,当检测到相关的捕
获事件时, T12 计数寄存器的当前值被捕获到寄存器 CC6xRL/H 中。
CC6xRL (x = 0-2)
通道 CC6x 捕获 / 比较寄存低位
(FAH + x * 2)
RMAP: 0, PAGE: 1
7
6
5
4
3
复位值:00H
2
1
0
CCVL
rh
符号
CCVL
位
[7:0]
类型
rh
描述
捕获 / 比较值
比较模式下,位域 CCV 中存放着和 T12 计数值进行
比较的值;捕获模式下, T12 的捕获值可从这些寄
存器读出。
CC6xRH (x = 0-2)
通道 CC6x 捕获 / 比较寄存器高位
(FBH + x * 2)
RMAP: 0, PAGE: 1
7
6
5
4
3
复位值:00H
2
1
0
CCVH
rh
符号
CCVH
用户手册
CCU6, V4.0
位
[7:0]
类型
rh
描述
捕获 / 比较值
比较模式下,位域 CCV 中存放着和 T12 计数值进行
比较的值;捕获模式下, T12 捕获值可从这些寄存
器读出。
21-44
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.8.4 捕获 / 比较映射寄存器
寄存器 CC6xRL/H 可 由 软 件 读 取,若 要 修 改 该 寄 存器的值,则需要将映射寄存器
CC6xSRL/H 中的修改值映射传送到 CC6xRL/H 中。映射寄存器可由软件读写。捕获模
式下,当检测到相关的捕获事件时 (取决于所选择的捕获模式), T12 计数寄存器的值
被捕获到寄存器 CC6xSRL/H 中。
CC6xSRL (x=0-2)
CC6x 捕获 / 比较映射寄存器低位
(FAH + x * 2)
RMAP: 0, PAGE: 0
7
6
5
4
3
复位值:00H
2
1
0
CCSL
rwh
符号
CCSL
位
[7:0]
类型
rh
描述
通道 x 捕获 / 比较值映射寄存器
比较模式下,映射传送期间,位域 CCS 的内容被传
送到对应通道的位域 CCV 中;捕获模式下, T12 的
捕获值可从这些寄存器读出。
注: 捕获模式下,软件也可写映射寄存器。此时,如果硬件捕获操作和软件写操作发生
在同一个周期内,则硬件捕获操作占优 (软件写操作被丢弃)。
CC6xSRH (x=0-2)
通道 CC6x 捕获 / 比较寄存器高位
(FBH + x * 2)
RMAP: 0, PAGE: 0
7
6
5
4
3
复位值:00H
2
1
0
CCSH
rh
注: 捕获模式下,软件也可写映射寄存器。此时,如果硬件捕获操作和软件写操作发生
在同一个周期内,则硬件捕获操作占优 (软件写操作被丢弃)。
用户手册
CCU6, V4.0
21-45
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
CCSH
用户手册
CCU6, V4.0
位
[7:0]
类型
rh
描述
通道 x 捕获 / 比较值的映射寄存器
比较模式下,映射传送期间,位域 CCS 的内容被传
送到对应通道的位域 CCV 中;捕获模式下, T12 的
捕获值可从这些寄存器读出。
21-46
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.8.5 死区时间控制寄存器
寄存器 T12DTCL/H 控制定时器 T12 比较通道的死区时间产生。可分别使能 / 禁止各通道
的死区时间产生。若被使能,从被动态到主动态的跳变被延迟(由位域 DTM 决定延迟时
间)。
死区时间计数器采用和 T12 相同的时钟频率。
在中心对齐和边沿对齐 PWM 模式,该结构可实现对称的死区时间产生。占空比为 50%
使得 CC6x, COUT6x 开启时间为:0.5* 周期 - 死区时间。
注: 死区时间计数器不是由位 T12RES 复位,而是由位 DTRES 复位。
T12DTCL
定时器死区时间控制寄存器低位
(A4H)
RMAP: 0, PAGE: 1
7
6
5
4
复位值:00H
3
2
1
0
DTM
rw
符号
DTM
位
[7:0]
类型
rw
描述
死区时间值
位域 DTM 规定了所选择的输出从被动态切换到主动
态的可编程延迟。从主动态切换到被动态没有延迟。
T12DTCH
定时器 T12 死区时间控制寄存器
(A5H)
RMAP: 0, PAGE: 1
复位值:00H
7
6
5
4
3
2
1
0
0
DTR2
DTR1
DTR0
0
DTE2
DTE1
DTE0
r
rh
rh
rh
r
rw
rw
rw
用户手册
CCU6, V4.0
21-47
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
DTE2,
DTE1,
DTE0
位
2,
1,
0
类型
rw
描述
DTR2,
DTR1,
DTR0
6,
5,
4
rw
死区时间运行指示位
位 DTR0…DTR2 指示定时器 T12 各比较通道 (0 ,
1, 2)死区时间产生的状态。
0B
死区时间计数器 x 当前处于被动状态
死区时间计数器 x 当前处于主动状态
1B
0
7,
3
r
保留;
读操作返回 0 ;应写入 0。
用户手册
CCU6, V4.0
死区时间产生使能位
位 DTE0..DTE2 使能和禁止定时器 T12 各比较通道
(0, 1, 2) 的死区时间产生。
0B
死区时间计数器 x 被禁止。根据实际比较状
态,相应的输出从被动态立即切换到主动态
(无延迟)。
1B
死区时间计数器 x 被使能。根据实际比较状
态,相应的输出从被动态到主动态的切换操作
被延迟 (在位域 DTM 内的编程设定延迟)。
21-48
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.9
捕获 / 比较控制寄存器
21.3.9.1 通道状态位
比较状态寄存器 CMPSTATL/H 中的状态位指示当前的捕获和比较状态,控制位决定比较
通道处于主动态还是被动态。
CMPSTATL
比较状态寄存器低位
RMAP: 0, PAGE: 3
(FEH)
复位值:00H
7
6
5
4
3
2
1
0
0
CC63ST
CCPOS2
CCPOS1
CCPOS0
CC62ST
CC61ST
CC60ST
r
rh
rh
rh
rh
rh
rh
rh
符号
CC60ST,
CC61ST,
CC62ST,
CC63ST
位
0,
1,
2,
6
类型
rh
描述
CCPOS60,
CCPOS61,
CCPOS62
3,
4,
5
rh
霍尔序列采样值
位 CCPOS6x (x = 0, 1, 2) 指示已经与当前和期望霍
尔值进行比较的输入霍尔序列的值。发生 HCRDY
(霍尔比较准备就绪)事件时,该值被采样
0B
采样到的输入 CCPOS6x 为 0
1B
采样到的输入 CCPOS6x 为 1
0
7
r
保留;
读操作返回 0 ;应写入 0。
1)
捕获 / 比较状态位
位 CC6xST 监控捕获 / 比较通道的状态。位
CC6xST (x = 0, 1, 2) 与 T12 相关,位 CC63ST 与
T13 相关。
0B
比较模式下,定时器计数值小于比较值。
捕获模式下,自从上次软件清除该位,还未检
测到所选择的跳变沿。
比较模式下,定时器计数值大于或等于比较值
1B
捕获模式下,已检测到选定的跳变沿。
1) 根据 T12, T13 的切换规则置位或清除这些状态位。
用户手册
CCU6, V4.0
21-49
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
CMPSTATH
比较状态寄存器高位
RMAP: 0, PAGE: 3
7
T13IM
6
(FFH)
5
COUT63P COUT62P
S
S
rwh
rwh
rwh
复位值:00H
4
3
2
1
0
CC62PS
COUT61P
S
CC61PS
COUT60P
S
CC60PS
rwh
rwh
rwh
rwh
rwh
符号
CC60PS,
CC61PS,
CC62PS,
COUT60PS,
COUT61PS,
COUT62PS,
COUT63PS
位
0,
2,
4,
1,
3,
5,
6
类型
rwh
描述
T13IM2)
15
rwh
T13 反向调制控制
位 T13IM 将 T13 信号反向用于调制 CC6x 和
COUT6x (x = 0, 1, 2) 信号。
T13 输出 CC63_O 等于 CC63ST
0B
T13 输出 CC63_O 等于 CC63ST
1B
1)
比较输出的被动态选择
位 CC6xPS, COUT6xPS 选择相应比较通道的被动
态。处于被动态时,输出引脚驱动 (由寄存器
PSLR 定义的)被动电平。位 CC6xPS,
COUT6xPS (x = 0, 1, 2) 与 T12 相关,位 CC63PS
与 T13 相关。
CC6xST 为 0 时对应比较信号处于被动电平
0B
CC6xST 为 1 时对应比较信号处于被动电平
1B
捕获模式下,不使用这些位。
1) 这些位具有映射位,分别与 T12 和 T13 的捕获 / 比较寄存器同时更新。读操作读取实际使用值,写操作写入映
射位。
2) 该位具有映射位,和 T13 的比较和周期寄存器同时更新。读操作读取实际使用值,写操作写入到映射位。
用户手册
CCU6, V4.0
21-50
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
比较状态修改寄存器 CMPMODIFL/H 支持软件修改(独立的置位和清除控制条件)通道
状态位 CC6xST。该特性允许用户软件单独修改输出线的状态,例如比较定时器停止计
数时,用户可自行修改相应的比较状态
CMPMODIFL
比较状态修改寄存器低位
(A6H)
RMAP: 0, PAGE: 0
7
6
5
0
MCC63S
r
w
符号
MCC60S,
MCC61S,
MCC62S,
MCC63S
位
0,
1,
2,
6
类型
w
0
[5:3],
7
r
4
复位值 00H
3
2
1
0
0
MCC62S
MCC61S
MCC60S
r
w
w
w
描述
捕获 / 比较状态修改位
这些位用于软件置位 (MCC6xS)或清除
(MCC6xR1))对应的 CC6xST 位。
该特性允许用户通过软件改变输出线的状态,例如,
当相应的比较定时器停止时,允许通过一个数据写
操作对 CC6xST 位进行控制。
写访问同一个捕获 / 比较状态位的修改位,则按照下
述规则进行:
[MCC6xR, MCC6xS] =
00B 位 CC6xST 不变
01B 位 CC6xST 置位
10B 位 CC6xST 被清除
11B 保留
保留;
读操作返回 0 ;应写入 0。
1) 该位域保存在比较状态修改寄存器高位中。
用户手册
CCU6, V4.0
21-51
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
CMPMODIFH
比较状态修改寄存器高位
(A7H)
RMAP: 0, PAGE: 0
7
6
5
0
MCC63R
r
w
4
复位值:00H
3
2
1
0
0
MCC62R
MCC61R
MCC60R
0
rw
w
w
符号
MCC60R,
MCC61R,
MCC62R,
MCC63R
位
0,
1,
2,
6
类型
w
描述
0
[5:3],
7
r
保留;
读操作返回 0 ;应写入 0。
捕获 / 比较状态寄存器修改位
这些位用于软件置位 (MCC6xS1) ) 或清除 (MCC6xR)
对应的 CC6xST。
该特性允许用户通过软件改变输出线的状态,例如,
当相应的比较定时器停止时,允许通过一个数据写
操作对 CC6xST 位进行控制。
写访问同一个捕获 / 比较状态位的修改位,则按照下
述规则进行:
[MCC6xR, MCC6xS] =
00B 位 CC6xST 不变
01B 位 CC6xST 置位
10B 位 CC6xST 被清除
11B 保留
1) 该位域保存在比较状态修改寄存器低位中。
用户手册
CCU6, V4.0
21-52
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.9.2 T12 模式控制寄存器
寄存器 T12MSELL/H 用于控制定时器 T12 模块中的三个通道对应的捕获 / 比较功能。
T12MSELL
T12 模式选择寄存器低位
RMAP: 0, PAGE: 2
7
6
符号
MSEL60,
MSEL61
(9AH)
5
4
3
2
1
MSEL61
MSEL60
rw
rw
位
[3:0],
[7:4]
类型
rw
6
捕获 / 比较模式选择
这些位域为 T12 的三个捕获 / 比较通道选择相应的
工作模式。每个通道 (x = 0, 1, 2)可分别被设定为
其中一种模式 (霍尔传感器模式除外)。
编码见 表 21-10。
(9BH)
5
0
描述
T12MSELH
T12 模式选择寄存器高位
RMAP: 0, PAGE: 2
7
复位值:00H
4
复位值:00H
3
2
1
DBYP
HSYNC
MSEL62
rw
rw
rw
0
符号
MSEL62
位
[3:0]
类型
rw
描述
HSYNC
[6:4]
rw
霍尔同步
位域 HSYNC 定义霍尔输入序列采样和与当前以及
期望霍尔序列位域进行比较的信号源。
编码见表 21-15。
用户手册
CCU6, V4.0
捕获 / 比较模式选择
这些位域为 T12 的三个捕获 / 比较通道选择相应的
工作模式。每个通道 (x = 0, 1, 2)可分别被设定为
其中一种模式 (霍尔传感器模式除外)。
编码见表 21-10。
21-53
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
DBYP
用户手册
CCU6, V4.0
位
7
类型
rw
描述
延迟旁路
DBYP 控制是否对霍尔输入序列 (由 HSYNC 选
择)采样的信号源进行延迟,由死区时间计数器 0
产生延迟。
0B
旁路无效
源信号变为有效之后,死区时间计数器 0 产生
一个延迟。
旁路有效
1B
不使用死区时间计数器 0 产生延迟。
21-54
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.3.9.3 定时器控制寄存器
寄存器 TCTR0L/H 控制 T12 和 T13 的基本功能。
注: 定时器 T12 不运行时 (T12R = 0),对位域 T12CLK 或 T12PRE 的写操作才有
效。定时器 T13 不运行时 (T13R = 0),对位域 T13CLK 或 T13PRE 的写操作才
有效。
TCTR0L
定时器控制寄存器 0 低位
RMAP: 0, PAGE: 1
(A6H)
复位值:00H
7
6
5
4
3
2
1
0
CTM
CDIR
STE12
T12R
T12PRE
T12CLK
rw
rh
rh
rh
rw
rw
符号
T12CLK
位
[2:0]
类型
rw
描述
T12PRE
3
rw
定时器 T12 预分频使能位
为了支持更高时钟频率,可使能分频因子为 1/256
的 T12 附加预分频器。
0B
T12 附加预分频器被禁止
T12 附加预分频器被使能
1B
T12R
4
rh
定时器 T12 运行位1)
T12R 用于启动和终止定时器 T12。置位
T12RS/T12RR 可软件置位 / 复位 T12R。或根据位
域 T12SSC 定义的功能硬件复位 T12R。
0B
定时器 T12 被终止
定时器 T12 正在运行
1B
用户手册
CCU6, V4.0
定时器 T12 输入时钟选择
根据等式 fT12 = fCC6 / 2<T12CLK> 选择定时器 T12 的输
入时钟。
000B fT12 = fCC6
001B fT12 = fCC6 / 2
010B fT12 = fCC6 / 4
011B fT12 = fCC6 / 8
100B fT12 = fCC6 / 16
101B fT12 = fCC6 / 32
110B fT12 = fCC6 / 64
111B fT12 = fCC6 / 128
21-55
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
STE12
位
5
类型
rh
描述
CDIR
6
rh
定时器 T12 的计数方向
根据 T12 计数规则,该位被置位 / 清除。
0B
T12 递增计数
1B
T12 递减计数
CTM
7
rw
T12 的工作模式
0B
边沿对齐模式:
T12 始终递减计数,到达周期值之后,从 0 开
始继续计数。
中心对齐模式:
1B
检测到周期匹配之后, T12 递减计数。检测到
1- 匹配之后, T12 递增计数。
定时器 T12 映射传送使能
如果检测到 T12 映射传送事件,位 STE12 用于使能
或禁止 T12 的周期值、比较值以及被动态选择位和
电平从其映射寄存器传送至实际寄存器的映射传送。
映射传送之后硬件清除位 STE12。
递增计数时, T12 映射传送事件为周期匹配;递减
计数时,映射传送事件为 1- 匹配。
映射寄存器传送被禁止
0B
映射传送被使能
1B
1) 由 ( T12SSC, T12RR 或 T12RS) 同时置位 / 复位 T12R 的操作无效,位 T12R 保持不变。
TCTR0H
定时器控制寄存器 0 高位
RMAP: 0, PAGE: 1
7
6
(A7H)
复位值:00H
5
4
3
0
STE13
T13R
T13PRE
T13CLK
r
rh
rh
rw
rw
用户手册
CCU6, V4.0
21-56
2
1
0
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
T13CLK
位
[2:0]
类型
rw
描述
T13PRE
3
rw
定时器 T13 预分频使能位
为了支持更高时钟频率,可使能分频因子为 1/256
的 T13 附加预分频器。
0B
T13 的附加预分频器被禁止
T13 的附加预分频器被使能
1B
T13R
4
rh
定时器 T13 运行位1)
T13R 用于启动和终止定时器 T13。置位
T13RS/T13RR 可软件置位 / 复位 T13R。或根据位
域 T13SSC, T13TEC 和 T13TED 定义的功能由硬件
置位 / 清除 T13R。
定时器 T13 被终止
0B
1B
定时器 T13 正在运行
STE13
5
rh
定时器 T13 映射传送使能
如果发生 T13 映射传送事件,位 STE13 使能或禁止
T13 的周期值、比较值以及被动态选择位和电平从
其映射寄存器传送至实际寄存器的映射传送。映射
传送之后硬件清除位 STE13。
T13 映射传送事件为周期匹配。
T13 映射传送事件为周期匹配。
0B
禁止映射寄存器传送
1B
使能映射寄存器传送
0
[7: 6]
r
保留;
读操作返回 0 ;应写入 0。
定时器 T13 输入时钟选择
根据等式 fT13 = fCC6 / 2<T13CLK>,选择定时器 T13 的
输入时钟
000B fT13 = fCC6
001B fT13 = fCC6 / 2
010B fT13 = fCC6 / 4
011B fT13 = fCC6 / 8
100B fT13 = fCC6 / 16
101B fT13 = fCC6 / 32
110B fT13 = fCC6 / 64
111B fT13 = fCC6 / 128
1) (由 T13SSC, T13TEC, T13RR 或 T13RS)同时置位 / 复位 T13R 的操作无效,位 T13R 保持不变。
用户手册
CCU6, V4.0
21-57
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
寄存器 TCTR2L/H 控制定时器 T12 和 T13 的单次模式和同步功能。两个定时器都可以工
作在单次模式。在该模式,一个计数周期之后计数值为 0,此时定时器自动停止计数。在
T12 完成精心定义的 PWM 操作之后, T13 与 T12 的单次模式和同步特性允许产生延迟
可编程设定的事件。
TCTR2L
定时器控制寄存器 2 低位
RMAP: 0, PAGE: 2
7
6
(FAH)
5
4
复位值:00H
3
2
1
0
0
T13TED
T13TEC
T13SSC
T12SSC
r
rw
rw
rw
rw
符号
T12SSC
位
0
类型
rw
描述
T13SSC
1
rw
定时器 T13 单次模式控制
该位控制 T13 的单次模式。
单次模式被禁止,硬件不控制 T13R
0B
1B
单次模式被使能,如果 T13 达到其周期值,位
T13R 被硬件清除。清除 T13R 的同时,位
CC63ST 也被清除。
用户手册
CCU6, V4.0
定时器 T12 单次模式控制
该位控制 T12 的单次模式。
0B
单次模式被禁止,硬件不控制 T12R。
1B
单次模式被使能,如果满足以下条件,位
T12R 被硬件清除:
- 边沿对齐模式下, T12 达到周期值
- 中心对齐模式下,递减计数时, T12 计数至
1。
清除位 T12R 的同时,位 CC6xST (x=0, 1, 2)
也被清除
21-58
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
T13TEC
位
[4:2]
类型
rw
描述
T13TED
[6:5]
rw
定时器 T13 触发事件方向1)
检测到由 T13TEC 定义的触发事件时,位域
T13TED 给出控制位 T13R 自动置位的附加信息。
00B 保留,无操作
01B 当 T12 递增计数时
10B 当 T12 递减计数时
11B 与 T12 的计数方向无关
0
7
r
保留;
读操作返回 0 ;应写入 0。
T13 触发事件控制
根据下面的组合,位域 T13TEC 选择启动 T13 的触
发事件 (自动置位 T13R 以与 T12 的比较信号同
步)。
000B 无操作
001B 由 T12 通道 0 比较事件置位 T13R
010B 由 T12 通道 1 比较事件置位 T13R
011B 由 T12 通道 2 比较事件置位 T13R
100B 由 T12 任意 (通道 0, 1, 2)比较事件置位
T13R
101B 由 T12 周期匹配事件置位 T13R
110B 由 T12 0- 匹配事件 (递增计数时)置位 T13R
111B 由输入 CCPOSx 的任意边沿置位 T13R
1) 例如:
如果想要由定时器 T12 任意比较事件 (T13TEC=100)来启动定时器 T13,触发事件方向可被编程为:
- 递增计数 >> 仅当 T12 递增计数时, T12 通道 0, 1, 2 比较匹配触发 T13R。
- 递减计数 >> 仅当 T12 递减计数时, T12 通道 0, 1, 2 比较匹配触发 T13R。
- 与 CDIR 无关 >> 每个 T12 通道 0, 1, 2 比较匹配触发 T13R。
定时器计数方向来自位 CDIR。从而,如果 T12 运行在边沿对齐模式 (仅递增计数),只有位域 T13TED = 01
或 11,才能自动启动 T13。
TCTR2H
定时器控制寄存器 2 高位
RMAP: 0, PAGE: 2
7
用户手册
CCU6, V4.0
6
(FBH)
5
4
复位值:00H
3
2
1
0
0
T13RSEL
T12RSEL
r
rw
rw
21-59
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
T12RSEL
位
[1:0]
类型
rw
描述
T13RSEL
[3:2]
rw
定时器 T13 外部运行选择
位域 T13RSEL 定义可硬件置位运行位 T13R 的信号
T13HR 上的事件。
00B 禁止外部置位 T13R。
01B 在 T13HR 上检测到上升沿时,位 T13R 被置
位。
10B 在 T13HR 上检测到下降沿时,位 T13R 被置
位。
11B 在 T13HR 上检测到任意信号沿时,位 T13R
被置位。
0
[7:4]
r
保留;
读操作返回 0 ;应写入 0。
用户手册
CCU6, V4.0
定时器 T12 外部运行选择
位域 T12RSEL 定义可硬件置位运行位 T12R 的信号
T12HR 上的事件。
00B 禁止外部置位 T12R。
01B 在 T12HR 上检测到上升沿时,位 T12R 被置
位。
10B 在 T12HR 上检测到下降沿时,位 T12R 被置
位。
11B 在 T12HR 上检测到任意信号沿时,位 T12R
被置位。
21-60
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
寄存器 TCTR4L/H 支持软件控制(独立的置位和复位控制条件)运行位 T12R 和 T13R。
此外,定时器 (运行中)可被复位;位 STE12 和 STE13 可由软件控制,读取这些位始
终返回 0。
TCTR4L
定时器控制寄存器 4 低位
RMAP: 0, PAGE: 0
7
6
T12STD
T12STR
w
w
(9CH)
5
4
复位值:00H
3
2
1
0
0
DTRES
T12RES
T12RS
T12RR
r
w
w
w
w
符号
T12RR
位
0
类型
w
描述
T12RS
1
w
定时器 T12 运行位置位
置位该位可置位 T12R。
0B
T12R 不受影响
1B
T12R 被置位, T12 开始计数
T12RES
2
w
定时器 T12 复位
0B
对 T12 无影响
T12 计数寄存器被复位为 0。根据切换规则切
1B
换输出信号。置位 T12RES 不影响位 T12R。
DTRES
3
w
死区时间计数器复位
0B
对死区时间计数器无影响
1B
三个死区时间计数器均被清零
T12STR
6
w
定时器 T12 映射传送请求
无操作
0B
1B
STE12 被置位,使能映射传送
T12STD
7
w
定时器 T12 映射传送禁止
0B
无操作
1B
STE12 被清除,不触发映射传送
0
[5:4]
r
保留;
读操作返回 0 ;应写入 0。
定时器 T12 运行位复位
置位该位可清除 T12R。
0B
T12R 不受影响
T12R 被清除, T12 停止计数
1B
注: 同时向置位控制位和复位控制位写 1 不会触发任何操作,相关位保持不变。
用户手册
CCU6, V4.0
21-61
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
TCTR4H
定时器控制寄存器 4 高位
RMAP: 0, PAGE: 0
7
6
T13STD
T13STR
w
w
(9DH)
5
4
复位值:00H
3
2
1
0
0
T13RES
T13RS
T13RR
r
w
w
w
符号
T13RR
位
0
类型
w
描述
T13RS
1
w
定时器 T13 运行位置位
置位该位可置位 T13R。
0B
T13R 不受影响
T13R 被置位, T13 开始计数
1B
T13RES
2
w
定时器 T13 复位
0B
对 T13 无影响
1B
T13 计数寄存器被复位为 0。根据切换规则切
换输出信号。置位 T13RES 不影响位 T13R。
T13STR
6
w
定时器 T13 映射传送请求
0B
无操作
1B
STE13 被置位,使能映射传送
T13STD
7
w
定时器 T13 映射传送禁止
0B
无操作
STE13 被复位,不触发映射传送
1B
0
[5:3]
r
保留;
读操作返回 0 ;应写入 0。
定时器 T13 运行位复位
置位该位可清除 T13R。
0B
T13R 不受影响
T13R 被清除, T13 停止计数
1B
注: 同时向置位控制位和复位控制位写 1 不会触发任何操作,相关位保持不变。
用户手册
CCU6, V4.0
21-62
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.4
定时器 T13 模块
定时器 T13 和定时器 T12 类似,但只有一个比较通道。一个 16 位的递增计数器通过比
较器和通道寄存器相连,计数器的值和通道寄存器的值匹配时,输出匹配信号。CCU6 单
元提供了多种控制功能,以便 T13 模块适用于不同的应用需求。此外, T13 可由定时器
T12 的事件同步触发。
·
·
·
·
·
·
T13 概述 (见章节 21.4.1)
计数策略 (见章节 21.4.2)
比较模式 (见章节 21.4.3)
比较输出通路 (见章节 21.4.4)
映射寄存器传送 (见章节 21.4.5)
T13 计数寄存器描述 (见章节 21.4.6)
状态位
定时器T13
逻辑
捕获/比较
通道 CC63
CC63ST
送至输出
调制
输入和控制/状态逻辑
T13HR
图 21-23
21.4.1
与T12同步
CCU6_MCA05526_CN
定时器 T13 模块框图
T13 模块概述
图 21-24 所示为定时器 T13 的内部结构框图。由寄存器 TCTR0L, TCTR0H, TCTR2L,
TCTR2H, TCTR4L, TCTR4H 和 PISEL2 控制定时器 T13 模块。
定时器 T13 的输入时钟 fT13 来自经过预分频处理的 (预分频因子可编程设定)和 1/256
分频 (可选)的模块时钟 fCC6。 T13 只能递增计数 (类似于 T12 的边沿对齐模式)。
计数器寄存器 T13L, T13H 通过比较器和周期寄存器 T13PRL, T13PRH 相连。该寄存器
中存放着 T13 的最大计数值。 T13 计数到周期值后,在下一个 T13 的时钟沿,产生信号
T13_PM (T13 周期匹配)并将 T13 复位为 0000H。周期寄存器的新周期值从映射周期
寄存器 T13PS 中获取,T13PS 的值由软件载入。“T13 映射传送”控制信号 T13_ST 控
制将新周期值从映射寄存器传送到 T13PR 中的操作,该信号的产生取决于控制位
STE13。 CCU6 单元提供了周期值、以及 (和产生 PWM 信号相关的)其它数值的映射
寄存器,便于软件同步更新所有相关参数 (请参阅章节 21.4.5)。
信号 T13_ZM 指示计数器的值是否等于 0000H。
单次模式控制位T13SSC控制定时器在当前计数周期结束后自动停止运行( 图 21-24)。
用户手册
CCU6, V4.0
21-63
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
T13RSEL
与T12同步
T13RS
T13RR
T13R
边沿检测
T13STR
T13STD
T13HR
STE13
边沿检测
fT13
T13
控制
& 状态
计数寄存器
T13
T13SSC
T13RES
时钟选择
n
fCC6
T13CLK
256
= 0000 H
T13PRE
读取
T13PR
T13_ZM
比较
=?
T13_PM
周期寄存器
T13 _ST
写入
T13PR
图 21-24
周期映射寄存器
8BIT_8BIT_CCU6_MCA05527_CN
T13 计数器逻辑和周期比较器
运行位 T13R 控制启动或终止定时器 T13 工作。T13R 可由相关置位控制位 T13RS 或复
位控制位 T13RR 设定(T13RR 和 T13RS 位于寄存器 TCTR4L, TCTR4H 中);或根据
预先选定的条件硬件复位 (单次模式)。
当设置的 T13 周期值为 0 时,一定不能置位定时器 T13 运行位 T13R。如果检测到 T12
事件与 T13 时序同步,则位 T13R 可被自动置位,即 T12 比较通道的信号沿之后,触发
AD 转换操作之前,由 T13 产生一个可编程设定的延迟 (T13 能触发 ADC 转换)
定时器 T13 可由控制位 T13RES 清零。置位 “只写”控制位 T13RES 仅清除定时器的
内容、不会产生其它影响,如不会终止定时器工作。
T13 映射传送控制信号 T13_ST 由位 STE13 控制产生,该控制位可通过相关置位控制位
T13STR,或复位控制位 T13STD 间接设置。
位域 T13TEC 和 T13TED 控制 T13 与定时器 T12 的事件同步。T13TEC 选择触发事件;
T13TED 选择使触发事件有效的定时器 T12 计数方向。
用户手册
CCU6, V4.0
21-64
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
定时器 T13 运行时,对计数寄存器 T13 的写操作无效。如果 T13 停止,对寄存器 T13 的
写操作立即生效。
注: T13 的周期寄存器和对应的映射寄存器占用相同的物理地址。写操作写入映射寄存
器;读操作读取实际周期寄存器的值。
用户手册
CCU6, V4.0
21-65
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.4.2
T13 计数策略
本节描述 T13 的时钟和计数功能。
21.4.2.1 定时器 T13 计数操作
定时器周期由周期寄存器 T13PR 决定,计算公式如下:
T13PER = < 周期值 > + 1 ;以 T13 时钟频率 (fT13) 计数
(21.3)
T13 只能递增计数,类似于 T12 的边沿对齐模式,因此 T13 计数器的 “计数规则”非常
简单:
· 检测到周期匹配时,下一个 T13 时钟沿计数器复位为 0。 T13 始终递增计数。
T13 的操作如图 21-25 所示。
fT13
周期值
T13 计数
周期匹配 0匹配
0
CC63
值 n+1
值 n+2
映射传送
图 21-25
用户手册
CCU6, V4.0
CCU6_MCT05528_CN
T13 计数序列
21-66
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.4.2.2 单次模式
单次模式下,运行位 T13R 可由硬件清除。如果位 T13SSC = 1,当前定时器周期结束之
后,定时器 T13 停止。
fT13
周期值
T13 计数
比较值
0
T13R
CC63ST
T13SSC
图 21-26
用户手册
CCU6, V4.0
CCU6_MCT05529_CN
定时器 T13 的单次操作
21-67
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.4.2.3 与 T12 同步
定时器 T13 可与 T12 事件同步。位域 T13TEC 和 T13TED 选择触发事件,用来启动定时
器 T13 工作。所选择的事件硬件置位 T13R,T13 开始计数。该特性和单次模式相结合,
可在 T12 事件之后产生可编程的时延。
图 21-27 举例说明 T13 如何与 T12 的事件同步,图中所选择的事件为递增计数时的比较
匹配(比较值 = 2)。T12 和 T13 的输入时钟可以不同(选择其它预分频因子),图中所
示 fT13 为 fT12 的一半。
fT12
比较匹配
周期值
T12 计数
比较值
0
T13R
T13 计数
fT13
CCU6_MCT05530_CN
图 21-27
T13 与 T12 比较匹配事件同步
位域 T13TEC 选择启动 T13 的触发事件 (自动置位 T13R 以与 T12 的比较信号同步),
事件选择列于表 21-11 中;另外由 T13TED 选择使触发事件生效的定时器 T12 的计数方
向 (见表 21-12)。
用户手册
CCU6, V4.0
21-68
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
表 21-11
T12 触发事件选择
T13TEC
事件选择
000B
无
001B
通道 0 上的 T12 比较事件 (CM_CC60)
010B
通道 1 上的 T12 比较事件 (CM_CC61)
011B
通道 2 上的 T12 比较事件 (CM_CC62)
100B
任意通道 (0, 1, 2) 上的 T12 比较事件
101B
T12 周期匹配 (T12_PM)
110B
T12 递增计数时 0- 匹配 (T12_ZM 且 CDIR = 0)
111B
霍尔状态的任何变化
表 21-12
T12 触发事件附加条件
T13TED
事件选择附加条件
00B
保留,无操作
01B
T12 递增计数时 (CDIR = 0) 选定的触发事件有效
10B
T12 递减计数时 (CDIR = 1) 选定的触发事件有效
11B
无论 T12 递增 / 递减计数,选定的触发事件均有效
用户手册
CCU6, V4.0
21-69
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.4.3
T13 比较模式
定时器 T13 的单个比较通道可执行 (和 T13 的计数值有关的)比较操作。
图 21-23 给出比较模式下 T13 的通道操作。T13 通道通过等于比较器和 T13 的计数寄存
器相连,当计数器的值和比较寄存器中的值匹配时产生匹配信号。
通道由比较器和双寄存器结构(实际比较寄存器 CC63RL,CC63RH 和对应映射寄存器
CC63SRL,CC63SRH)组成。CC63R 与比较器直接相连、CC63SR 由软件预先加载。
当 T13 的映射传输信号 T13_ST 有效时,映射寄存器中的内容被传送到实际比较寄存器
中。 CCU6 单元提供了比较值、以及 (和产生 PWM 信号相关的)其它数值的映射寄存
器,便于用户编程同步更新所有相关参数。
T13 的通道状态位 CMPSTATL.CC63ST 用于保存比较操作的状态,图 21-28 给出状态
位的逻辑操作。
fT13
计数寄存器
T13
T13_ZM
比较
=?
CM_63
比较寄存器
CC63R
切换规则
逻辑
状态位
CC63ST
T13 R
MCC63S/R
送至状态选择
和输出调制
送至中断
控制
T13 _ST
比较映射寄存器
CC63SR
CCU6_MCB05532_CN
图 21-28
T13 状态位框图
检测到比较匹配时,产生比较中断事件 CM_63。状态位的实际设置对中断产生无影响。
状态位 CC63ST 置位 / 复位控制逻辑的输入包括:定时器运行位(T13R),定时器 0- 匹
配信号 (T13_ZM) ,以及实际比较匹配信号 CM_63。此外,可通过设定置位控制位
MCC63S 和复位控制位 MCC63R(位于寄存器 CMPMODIFL,CMPMODIFH 中)分别
置位或复位 CC63ST。
只有当定时器 T13 工作时 (T13R = 1),才可硬件修改状态位 CC63ST。硬件修改状态
位时,应用以下切换规则置位和复位状态位:
状态位 CC63ST 被置位为 1:
用户手册
CCU6, V4.0
21-70
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
· 比较匹配时 (T13 始终递增计数),下一个 T13 时钟 (fT13)置位 CC63ST ;
(即,计数器递增计数到超过比较值);
· 0- 匹配且同时为比较匹配时,下一个 T13 时钟 (fT13) 置位 CC63ST。
状态位 CC63ST 被复位至 0
· 0- 匹配但同时不是比较匹配时,下一个 T13 时钟 (fT13) 复位 CC63ST。
fT13
比较匹配
比较匹配
T13 计数
周期值
比较值
0
CC63ST
CCU6_MCT05533_CN
图 21-29
用户手册
CCU6, V4.0
T13 比较操作
21-71
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.4.4
比较模式输出路径
图 21-30 给出从通道状态位 CC63ST 到其输出引脚 COUT63 的信号路径。如图所示,用
户可通过多种控制选择,决定当前状态位 CC63ST 所对应的 (期望)输出信号的切换操
作。 T12 信号输出调制控制的具体内容请参阅章节 21.3.4.3。
T13
状态选择
输出调制
输出电平
选择
T13IM
CC63ST
CC63_O
T12
输出调制
T13
状态位
CC63ST
T13
输出调制
CC63ST
电平
选择
COUT63
COUT63 _O
COUT63PS
ECT13 O
PSL63
CCU6_MCA05534_CN
图 21-30
通道 CC63 输出通路
输出线 COUT63_O 可产生 T13 的 PWM 信号,从引脚 COUT63 输出。信号 CC63_O 产
生的 T13 PWM 信号用来调制 T12 的相关输出信号。为了使 COUT63 和内部调制信号无
关,可分别由 T13IM 和 COUT63PS 选择引发有效信号的比较状态。
数据最后送入输出调制模块。因此, T13 的调制源和强制中断功能相结合,用来控制输
出引脚 COUT63 的实际电平 (见图 21-31):
· T13 相关比较信号 COUT63_O 由 T13 状态选择输出,由位 MODCTRH.ECT13O 使能
· 强制中断状态 TRPS 具有单独的使能位 TRPCTRH.TRPEN13。
如果调制输入信号 COUT63_O 使能 (ECT13O = 1)且处于被动态,被调制的信号也处
于被动态。如果调制输入未使能,输出处于被动态。
如果强制中断状态有效 (TRPS = 1),那么使能 (由 TRPEN13 = 1)的强制中断信号
输出被设置为被动态。
调制控制模块的输出和一个电平选择模块相连。根据被动态选择位 PSLR.PSL63 确定的
输出线的状态(使得主动 / 被动态和输出极性无关),通过该模块选择并决定引脚的实际
输出电平。如果被调制的输出信号处于被动态,直接输出 PSL63 电平。如果被调制的输
出处于主动态,输出 PSL63 的反向电平。该特性使得用户能够根据所连接的电路调整主
动态输出信号的极性。
控制位 PSL63 对应有映射寄存器,从而由 T13 的映射传送信号(T13_ST)触发的 PSL63
更新时避免了输出线上多余的脉冲。读操作读取实际使用值;写操作写入映射位。CCU6
单元提供了 PSL 值、以及 (和产生 PWM 信号相关的)其它数值的映射寄存器,便于软
件同步更新所有相关参数。
用户手册
CCU6, V4.0
21-72
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
强制中断
处理模块
TRPS
TRPEN13
T13 模块
输出调制
COUT63
COUT63_O
主动
被动
电平选择
COUT63
ECT13O
PSL63
CCU6_MCA05545_CN
图 21-31
21.4.5
T13 输出调制
T13 映射寄存器传送
采用一个特殊的映射传送信号(T13_ST)便于使比较通道 CC63 周期值和比较值的更新
和 T13 的操作同步。映射寄存器使得软件能够同时更新定义 PWM 周期的所有相关参数。
下一个 PWM 周 期 可 使用 一 组 新的 参 数。软 件通 过 位 TCTR0H.STE13 (向只写位
TCTR4H.T13STR 写入 1 将置位 STE13 ;向只写位 TCTR4H.T13STD 写入 1 将清除
STE13)。
当信号 T13_ST 有效时,在下一个 T13 时钟周期触发映射寄存器传送。映射传送之后位
STE13 自动清零。
在以下条件下,发生 T13 映射寄存器传送 (T13_ST 有效):
· 定时器 T13 不运行 (T13R = 0),或
· STE13 = 1 且 T13R = 1 时检测到周期匹配。
用户手册
CCU6, V4.0
21-73
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
读
读
读
读
周期寄存器
T13PR
PSL63
CC63PS
T13IM
周期映射寄存器
T13PR
PSL63
映射
CC63PS
映射
T13IM
映射
写
写
写
写
读
比较寄存器
CC63R
T13_ST
比较映射寄存器
CC63SR
写
图 21-32
用户手册
CCU6, V4.0
读
CCU6_MCA05547 _CN
T13 映射寄存器概览
21-74
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.4.6
T13 相关寄存器
21.4.6.1 T13 计数寄存器
基于定时器 T13 产生单个通道脉宽调制 (PWM)信号的序列。相关的定时器 T13 寄存
器可同时更新 (以精心定义的条件)以确保 PWM 信号的一致性。 T13 还可和多个定时
器 T12 事件同步。
定时器 T13 仅支持比较通道 CC63 的比较模式。
寄存器 T13 的内容显示了当前定时器 T13 的计数值。只有在定时器 T13 停止时,才可对
寄存器T13进行写操作;定时器T13工作时,写操作无效。寄存器T13始终可由软件读取。
定时器 T13 仅支持边沿对齐模式 (递增计数)。
T13L
定时器 T13 计数寄存器低位
RMAP: 0, PAGE: 3
7
6
5
(FCH)
4
复位值:00H
3
2
1
0
T13CVL
rwh
符号
T13CVL
位
[7:0]
类型
rwh
描述
定时器 T13 计数值
定时器 T13 的 16 位计数值的低 8 位。
注: 定时器 T13 停止时,内部时钟分频器复位以确保产生可重复的时序和延迟。
T13H
定时器 T13 计数寄存器高位
RMAP: 0, PAGE: 3
7
6
5
(FDH)
4
复位值:00H
3
2
1
0
T13CVH
rwh
符号
T13CVH
用户手册
CCU6, V4.0
位
[7:0]
类型
rwh
描述
定时器 T13 计数值
定时器 T13 的 16 位计数值的高 8 位。
21-75
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
注: 定时器停止时,内部时钟分频器复位以确保产生可重复的时序和延迟。
21.4.6.2 周期寄存器
寄存器 T13PR 中存放着定时器 T13 的周期值。周期值和 T13 的当前计数值进行比较,由
计数规则决定计数器的后续操作。该寄存器对应有一个映射寄存器,由位 STE13 控制映
射传送。读操作读取当前用于比较操作的周期值;写操作写入映射寄存器;映射寄存器
结构便于用户同时更新 T13 的所有相关值。
T13PRL
定时器 T13 周期寄存器低位
RMAP: 0, PAGE: 1
7
6
5
(9EH)
4
复位值:00H
3
2
1
0
T13PVL
rwh
符号
T13PVL
位
[7:0]
类型
rwh
描述
T13 周期值
T13PVL 定义 T13 周期值的低 8 位。计数到周期值
时,定时器 T13 被置为 0。
T13PRH
定时器 T13 周期寄存器高位
RMAP: 0, PAGE: 1
7
6
5
(9FH)
4
复位值:00H
3
2
1
0
T13PVH
rwh
符号
T13PVH
用户手册
CCU6, V4.0
位
[7:0]
类型
rwh
描述
T13 周期值
T13PVH 定义 T13 的周期值的高 8 位。计数到周期
值时,定时器 T13 置为 0。
21-76
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.4.6.3 比较寄存器
寄存器 CC63RL/H 寄存器是 T13 的实际比较寄存器。CC63RL/H 中的值和 T13 计数值进
行比较。状态位 CC63ST 位于寄存器 CMPSTATL 内。
CC63RL
T13 比较寄存器低位
RMAP: 0, PAGE: 1
7
6
(9AH)
5
4
复位值:00H
3
2
1
0
CCVL
rh
符号
CCVL
位
[7:0]
类型
rh
描述
通道 CC63 比较值
该位域包含 CCV 的低 8 位值,使用该值和 T13 计数
值进行比较。
CC63RH
T13 比较寄存器高位
RMAP: 0, PAGE: 1
7
6
(9BH)
5
4
复位值:00H
3
2
1
0
CCVH
rh
符号
CCVH
用户手册
CCU6, V4.0
位
[7:0]
类型
rh
描述
通道 CC63 比较值
该位域包含 CCV 的高 8 位值,使用该值和 T13 计数
值进行比较。
21-77
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.4.6.4 比较映射寄存器
寄存器 CC63RL/H 只能由软件读取,通过将映射寄存器 CC63SRL/H 中的值映射传送的
方式修改 CC63RL/H 的值。映射寄存器 CC63SRL/H 可软件读 / 写。
CC63SRL
T13 比较映射寄存器
(9AH)
RMAP: 0, PAGE: 0
7
6
5
4
复位值:00H
3
2
1
0
CCSL
rw
符号
CCSL
位
[7:0]
类型
rw
描述
通道 CC63 比较值映射寄存器
映射传送过程中, CCSL 的内容被传送至 CCV 的低
8 位。
CC63SRH
T13 比较映射寄存器高位
(9BH)
RMAP: 0, PAGE: 0
7
6
5
4
复位值:00H
3
2
1
0
CCSH
rw
符号
CCSH
用户手册
CCU6, V4.0
位
[7:0]
类型
rw
描述
通道 CC63 比较值映射寄存器
映射传送过程中, CCSH 的内容被传送至 CCV 的高
8 位。
21-78
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.5
强制中断处理
强制中断功能使 PWM 输出能够响应输入信号 CTRAP 的变化。如果强制中断输入有效,
可使用该功能关闭功率器件 (如,执行紧急停止) 。强制中断处理和输出调制的结果由
强制中断控制寄存器 TRPCTRL,TRPCTRH 中的位控制。强制中断标志 TRPF 和 TRPS
位于寄存器 ISH 中,通过对寄存器 ISSH 和 ISRH 进行写操作可软件置位 / 清除这些标志。
图 21-33 给出强制中断功能的概述。
强制中断标志 TRPF 监控强制中断输入的变化并启动进入强制中断状态。强制中断状态
位 TRPS 决定输出结果并控制强制中断状态的退出。
检测到强制中断条件 (CTRAP = 0)且输入被使能 (TRPPEN = 1)时,强制中断标志
TRPF 和强制中断状态位 TRPS 均被置 1(强制中断状态有效)。强制中断状态 TRPS 的
输出送入输出调制模块(T12 和 T13),且可使输出无效(将输出设置为被动态)。CCU6
单元分别为 T12 的六个输出和 T13 的单个输出提供了对应的强制中断使能控制位,以灵
活适应不同的应用需求。
有多种退出强制中断状态的方式,可软件为给定应用选择最佳方式。退出强制中断状态
的方式有:强制中断条件撤销后 (CTRAP = 1 或 TRPPEN = 0)立即退出、软件控制退
出、或者使退出和 (由定时器 T12 或 T13 产生的) PWM 信号同步。 .
RTRPF
强制中断
进入 / 退出
控制
CTRAP
TRPPEN
STRPF
TRM2
TRPF
T12_ZM
T13_ZM
强制中断退出
同步
TRPS
送至 T12,
T13 输出
调制
TRM0/1
CCU6_MCB05541_CN
图 21-33
强制中断逻辑框图
模式控制位 TRPM2 可控制 TRPF 的复位操作。若 TRPM2 = 0, CTRAP 返回无效电平
时 ( CTRAP= 1),或如果强制中断输入被禁止 (TRPPEN = 0), TRPF 由硬件自动清
零;若 TRPM2 = 1, CTRAP 变为无效之后, TRPF 必须由软件复位。
模式控制位 TRPM1 和 TRPM0(位于强制中断控制寄存器 TRPCTRL/H 中)控制 TRPS
复位。复位 TRPS 将终止强制中断状态并返回正常操作。有三种方式复位 TRPS,分别
由 TRPM1 和 TRPM0 控制选择:一种方式为当强制中断标志 TRPF 被清零后,立即退出
用户手册
CCU6, V4.0
21-79
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
强制中断状态,不和定时器 T12 或 T13 同步;另两种方式使退出强制中断状态分别和定
时器 T12 或 T13 的计数周期同步。图 21-34 给出相关操作。
T12 计数
T13 计数
TRPF
CTRAP 有效
TRPS
同步至T12
TRPS
同步至T13
TRPS
未同步
CCU6_MCT05542_CN
图 21-34
用户手册
CCU6, V4.0
强制中断状态同步 (TRM2 = 0)
21-80
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.6
多通道模式
多通道模式可用一条指令调制全部六个 T12 的相关输出信号。位域 MCMOUTL.MCMP
规定哪些输出有效。若多通道模式被使能 (位 MODCTRL.MCMEN = 1),位域 MCMP
中被置 1 的位对应的输出才有效。
该位域对应的映射位域为 MCMOUTSL.MCMPS,可由软件写入。可由 T12 或 T13 事件
触发将 MCMPS 中的新值传送到位域 MCMP 中,该映射传送操作和 T12 或 T13 事件同
步。该结构支持由软件写入新值,在定义好的时刻发生映射传送,使映射传送和 PWM 信
号同步。这样可避免由不同步的调制源造成的多余脉冲 。
SWSYN
SWSEL
STRMCM
T12_ZM
CM_CHE
切换同步
T13_ZM
CM_61
映射寄存器
MCMOUTS.MCMPS
映射传送
MCM_ST
切换事件
检测
T12_PM
IDLE
置位
T12_OM
T13_PM
CDIR
R
清零
STR
置位
清零
寄存器
MCMOUT.MCMP
送至中断控制
T13_ST
T12/T13
映射传送
控制
T12_ST
STE12U
T12 输出调制
STE12D
输出 CC6x/COUT6x
STE13U
CCU6_MCB05535+_CN
图 21-35
多通道模式框图
图 21-35 为多通道操作的功能框图,由寄存器 MCMCTR 中的位域控制。由 SWSEL 选
择触发位域 MCMP 更新的事件。为了使 MCMP 更新和 T12 或 T13 产生的 PWM 信号同
步,由位域 SWSYN 选择引发映射传送 (从 MCMPS 至 MCMP)的同步事件。该逻辑
结构决定了在新的 PWM 周期更新 MCMP。选定的切换事件发生时 (该事件不必与调制
的 PWM 同步),提示标志 R 被置位;映射传送后 R 被复位。软件监控该标志以检查该
逻辑的状态。如果发生从 MCMPS 到 MCMP 的映射传送,位 ISH.STR 被置位并产生一
个中断请求。
除了多通道映射传送事件 MCM_ST,可产生 T12 映射传送 (T12_ST)和 T13 映射传送
(T13_ST)事件以允许同时更新 T12 和 / 或 T13 调制占空比以及多通道序列。
用户手册
CCU6, V4.0
21-81
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
如有需要,当选择直接同步模式时,选定的触发事件发生时立刻更新 MCMP。也可由软
件请求更新 MCMP,将更新值写入到 MCMPS 且设置映射传送请求位 STRMCM = 1。对
应于所有 SWSEL 设置,都可选择软件触发 MCMP 更新。
若使用直接模式且位 STRMCM = 1,则 MCMP 的更新完全由软件控制。
触发事件选择和同步事件选择归纳见表 21-13 和表 21-14。
表 21-13
多通道模式切换事件选择
SWSEL
选择的事件 (见寄存器 MCMCTR)
000B
无自动事件检测
001B
输入信号 CCPOSx 上的检测到的正确霍尔事件 (CM_CHE),无附加
延迟
010B
T13 周期匹配 (T13_PM)
011B
T12 递减计数时 1- 匹配 (T12_OM 且 CDIR = 1)
100B
T12 递增计数时比较通道 1 的比较事件 (CM_61 和 CDIR = 1), CC61
支持相位延迟功能以实现块切换模式。
101B
T12 递增计数时周期匹配 (T12_PM 且 CDIR = 0)
110B, 111B
保留,无操作
表 21-14
多通道模式切换同步
SWSYN
同步事件 (见寄存器 MCMCTR)
00B
直接模式:触发事件直接引发映射传送
01B
T13 的 0- 匹配 (T13_ZM),
MCM 映射传送与 T13 PWM 同步
10B
T12 的 0- 匹配 (T12_ZM),
MCM 映射传送与 T12 PWM 同步
11B
保留,无操作
用户手册
CCU6, V4.0
21-82
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.7
霍尔传感器模式
对于工作在块切换模式的无刷直流电机,通常使用多通道模式以产生高效的调制序列控
制电机正确工作。调制序列必须根据电机的角度位置相应产生。通常使用霍尔传感器或
反电动势检测来决定转子的角度位置。 CCU6 的三个输入, CCPOS0、 CCPOS1 和
CCPOS2 可用作霍尔传感器或反电动势检测信号的输入。
电机转动位置和输出调制序列之间紧密关联。当电机转动到某个位置时,由霍尔传感器
的输入采样 (霍尔序列)表示当前位置,接下来必须输出预先确定的多通道调制序列。
电机类型不同,驱动电机的调制序列有所不同。因此,希望能够比较灵活的定义霍尔序
列和相应调制序列之间的关联性。另外, CCU6 的硬件机制大大的减少了块切换操作时
的 CPU 负荷。
CCU6 通 过 特 定 的 寄 存器 实 现 了 该 特 性,该 寄 存 器 中存放着当前实际的霍尔序列
(CURH)、下次期望的霍尔序列 (EXPH)、以及相应的输出序列 (MCMP)。当采样
的霍尔序列和期望序列 (EXPH)匹配时,输出新的调制序列。 CCU6 监控霍尔输入的
变化以检测电机下一次的转动相位 (块切换的某段,两两导通的某个状态) 。检测到期
望的霍尔序列时,输出相应的调制序列。
CCU6 引入霍尔输入的采样时延,从而可增加 (在一定程度上)抗噪声能力。此外,霍
尔序列采样和当前霍尔序列 (CURH)进行比较,从而可容忍短毛刺的存在。霍尔序列
比较逻辑将霍尔输入和下次的期望序列以及当前霍尔序列进行比较以滤除毛刺。
霍尔传感器模式下,通过双寄存器结构控制霍尔和调制序列的产生。寄存器MCMOUTL,
MCMOUTH 中存放着实际使用的值;对应的映射寄存器 MCMOUTSL,MCMOUTSH 中
存放着可由软件加载的、取自预定义表的正确的霍尔和调制序列 (针对给定电机)。
当检测到正确的霍尔序列跳变时,即霍尔序列采样和期望序列相匹配时,映射寄存器的
内容映射传送到寄存器 MCMOUT 中。接着由软件将新值装入 MCMOUTS 中。从
MCMOUTS 到 MCMOUT 的映射传送也可由软件强制执行。
注: 霍尔输入信号 CCPOSx 和 CURH 以及 EXPH 位域对应关系如下:
CCPOS0 与 CURH.0 (LSB) 和 EXPH.0 (LSB) 对应
CCPOS1 与 CURH.1 和 EXPH.1 对应
CCPOS2 与 CURH.2 (MSB) 和 EXPH.2 (MSB) 对应
用户手册
CCU6, V4.0
21-83
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.7.1
霍尔序列评估
跳变沿检测模块以模块时钟 fCC6 永久的监控霍尔传感器的输入 CCPOSx。为了抑制恶劣
的逆变器工作环境引起的霍尔输入上的毛刺,霍尔逻辑提供两种可选的噪声滤波方法
(两种方法可组合使用)。
· 带延迟的噪声滤波:
选择此方法时,要求所有 T12 比较通道的模式控制位域 MSEL6x 必须编程为 1000B
且 DBYP = 0。所选择的事件触发死区时间计数器 0 产生一个可编程设置的延迟 (由
位域 DTM 定义)。当延迟到期之后,评估信号 HCRDY 被激活。
此模式不可能实现带 T12 PWM 信号的输出调制。
· 与 PWM 同步的噪声滤波:
跳变沿检测模块并非永久的监控霍尔输入,而是在 PWM 周期内的确定时间点对其采
样。当切换噪声 (由 PWM 引起的)不会干扰霍尔输入信号时,使用该方法采样霍尔
输入。
CCPOS0..2
如果既不使用死区时间计数器 0 的延迟功能进行霍尔序列评估,也不使能霍尔模式进行
无刷直流电机控制,则可使用定时器 T12 模块进行 PWM 产生和输出调制。
霍尔比较
逻辑
HCRDY
霍尔输入
霍尔序列评估
跳变沿
检测
CM_63
fCC6
T13_PM
T12_PM
死区时间
计数器 0
延迟旁路
事件选择
CDIR
T12_OM
CM_61
HSYNC
DBYP
CCU6_MCB05553_CN
图 21-36
霍尔序列评估
如果评估信号 HCRDY(霍尔比较准备就绪,见图 21-37)被激活,霍尔输入被采样,且
霍尔比较逻辑开始评估霍尔输入。
图 21-36 给出霍尔序列评估事件和噪声滤波逻辑。
表 21-15 总结出可选的触发输入信号。
用户手册
CCU6, V4.0
21-84
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
表 21-15
霍尔传感器模式触发事件选择
HSYNC
事件选择 (见寄存器 T12MSELL, T12MSELH)
000B
CCPOSx 输入上的任意跳变沿,与任何 PWM 信号无关 (一直检查)
001B
T13 比较匹配 (CM_63)
010B
T13 周期匹配 (T13_PM)
011B
由硬件源触发的霍尔采样被关闭
100B
T12 递增计数时的周期匹配 (T12_PM 且 CDIR = 0)
101B
T12 递减计数时的 1- 匹配 (T12_OM 且 CDIR = 1)
110B
递增计数时,比较通道 CC61 的 T12 比较匹配 (CM_61 且 CDIR = 0)
111B
递减计数时,比较通道 CC61 的 T12 比较匹配 (CM_61 且 CDIR = 1)
用户手册
CCU6, V4.0
21-85
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.7.2
霍尔序列比较逻辑
图 21-37 给出双寄存器结构和序列比较逻辑。新调制序列 (MCMPS)、当前霍尔序列
(CURHS)和期望霍尔序列 (EXPHS)软件写入映射寄存器 MCMOUTS 中。寄存器
MCMOUT 中存放着实际使用 CURH 和 EXPH 值。调制序列 MCMP 被送入 T12 输出调
制控制模块。当前霍尔序列 (CURH)和期望霍尔序列 (EXPH)和霍尔传感器输入的
采样 (可从寄存器 CMPSTATL, CMPSTATH 中得到)进行比较。信号 HCRDY (霍
尔比较准备就绪)控制霍尔输入采样和比较输出评估,下一节将对此进行详细说明。
多通道模式逻辑
软件写入
软件写入
CURHS
HP_ST
CURH
霍尔序列
评估
软件写入
EXPHS
MCMPS
MCM_ST
EXPH
HCRDY
MCMP
清零
T12 输出
调制
CM_CHE
采样
CCPOS0..2
霍尔
输入
序列比较
CM_WHE
IDLE
霍尔比较逻辑
CCU6_MCA05536_CN
图 21-37
霍尔序列比较逻辑
· 如果霍尔序列采样和 CURH 内编程设置的值匹配,检测到的跳变为毛刺 (无霍尔事
件),不需要进行后续操作。
· 如果霍尔序列采样和 EXPH 内的值匹配,则检测到的跳变为期望事件 (正确霍尔事
件 CM_CHE)且 MCMP 值必须改变。
· 如果霍尔序列采样和 CURH 以及 EXPH 都不匹配,跳变是由严重错误引起的 (错误
霍尔事件 CM_CWE)可导致紧急关闭 (IDLE)。
每次产生正确的霍尔事件时(CM_CHE),将映射寄存器 MCMOUTS 中的新霍尔序列传
送到 MCMOUT 中 (霍尔序列映射传送 HP_ST),新的霍尔序列连同相应的输出序列
(如存储器内的预定义表)可由软件写入 MCMOUTS 中。信号 MCM_ST 用于触发调制
序列的映射传送。
用户手册
CCU6, V4.0
21-86
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
向 MCMOUTS.STRHP 写 1 (对于 EXPH 和 CURH 来讲)或 MCMOUTS.STRMCMP =
1 (对于 MCMP 来讲),也可实现映射传送。
21.7.3
霍尔模式标志位
根据霍尔序列的比较操作置位相关的标志位,指示模块状态并触发其它操作和中断请
求。
霍尔序列采样和期望序列(EXPH)匹配时,由信号 CM_CHE 置位寄存器 ISH.CHE(正
确的霍尔事件) 。也可通过软件置位寄存器 ISSH.SCHE 对该标志位置位。若寄存器
IENH.ENCHE 被使能,CHE 的置位信号还可向 CPU 发送中断请求。位域 INPL.INPCHE
定义发生中断请求时,哪个服务请求被激活。可通过软件设置寄存器 ISRH.RCHE = 1,
对标志 CHE 清零。 .
标志位 IS.WHE 指示产生了错误的霍尔事件。该标志位的置位、复位以及中断请求产生
方式和标志位 CHE 的机制相似。
标志位 STR 的实现和 CHE、 WHE 相同,该标志位由映射传送信号 MCM_ST 硬件置位
(见图 21-35)。
请注意:标志位 CHE、WHE 和 STR 的中断请求由相应的置位信号触发产生。这意味着,
即使标志位已经被置位,仍可产生中断请求,无需复位标志位以使能后续的中断请求。
不过标志位 IDLE 的实现有所不同。若使能位 ENIDLE 被置位,可由信号 CM_WHE 硬件
置位 IDLE。也可通过软件置位 SIDLE 置位该标志位。只要 IDLE 被置位,调制序列位域
MCMP 将被清零、强制输出为被动态。必须通过置位 RIDLE 清零标志位 IDLE,返回正
常操作。要从 IDLE 模式彻底重启,必须通过设定寄存器 MCMOUTS 中的位 STRMCM
和 STRHP 触发寄存器 MCMOUTS 到 MCMOUT 的映射传送请求。这种方式下,从 IDLE
模式返回正常模式的操作由软件控制,不过可以和 PWM 信号同步。
用户手册
CCU6, V4.0
21-87
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
清零
RCHE
CHE
INPCHE
To SR0
置位
SCHE
_
>1
To SR1
To SR2
CM_CHE
To SR3
ENCHE
霍尔比较逻辑
清零
RWHE
WHE
INPERR
To SR0
置位
CM_WHE
SWHE
_
>1
To SR1
To SR2
To SR3
ENWHE
ENIDLE
SIDLE
_
>1
置位
IDLE
用户手册
CCU6, V4.0
MCMP
清零
RIDLE
图 21-38
清零
CCU6_MCA05540_CN
霍尔模式标志
21-88
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.7.4
实现无刷直流电机控制的霍尔模式
CCU6 提供了一种便于无刷直流电机控制的块切换模式,通过定时器 T12 模块实现。将
T12 三个通道的位域 T12MSELL/T12MSELH.MSELx 全部设定为 1000B,选定该模式。
该模式下,如图 21-39 所示,通道 CC60 工作在捕获模式,以测量最近两次正确霍尔事
件之间的间隔;通道 CC61 工作在比较模式,为霍尔事件和新的 PWM 输出序列应用之
间提供可编程的相位延迟;通道 CC62 也工作在比较模式,作为第一个超时标准。可由
T12 周期匹配事件构成第二个超时标准。
清零
计数寄存器
T12
fT12
霍尔比较逻辑
CM_CHE
CM_61
捕获寄存器
CC60R
图 21-39
比较
=?
比较
=?
比较寄存器
CC61R
比较寄存器
CC62R
比较映射寄存器
CC61SR
比较映射寄存器
CC62SR
CM_62
CCU6_MCA05538_CN
霍尔传感器模式下的 T12 模块
来自霍尔比较逻辑的信号 CM_CHE 可用于:传送新比较值 (从映射寄存器 CC6xSR 到
实际比较寄存器 CC6xR),执行 T12 周期寄存器的映射传送以及将 T12 的当前计数值捕
获到寄存器 CC60R 中,并清除定时器 12。
注: 该模式下,不产生映射传送信号 T12_ST。部分映射位,如 PSLy,将被传送到主
寄存器(实际寄存器)中。只有当定时器 T12 停止工作时才可软件设定主寄存器。
此时,映射寄存器和主寄存器均可由软件编程设定。
用户手册
CCU6, V4.0
21-89
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
CC62 比较
用于超时
霍尔事件捕获
并复位 T12
CC62 比较
T12 计数
CC61 比较
用于相延迟
CC61 比较
0000H
CCPOS0
1
1
1
0
0
CCPOS1
0
0
1
1
1
CCPOS2
1
0
0
0
1
CURH
= 101
= 001
= 011
= 010
= 110
EXPH
= 001
= 011
= 010
= 110
= 100
MCMP
相延迟
CC6x
COUT6y
CCU6_MCT05539_CN
图 21-40
无刷直流电机控制举例 (所有 MSEL6x = 1000B)
检测到期望的霍尔序列之后 (CM_CHE 有效), T12 的计数值被捕获到通道 CC60 中
(通过测量最近两次正确霍尔事件之间的间隔来代表电机实际转速)并复位 T12。当定时
器计数至通道 CC61 的比较值时,触发位域 MCMP 的映射传送,因而切换到下个多通道
状态。下个多通道状态与 PWM 调制源的同步可和该触发事件相结合 (以避免输出线上
的毛刺,见章节 21.6)。如果使用无传感器反电动势技术或使用霍尔传感器,有必要使
用通道 CC61 的比较功能产生从位置传感器的输入信号到输出切换之间的相位延迟。通
道 CC62 的比较值可用作超时触发 (中断),指示电机的实际转速远远低于期望值。可
通过此特性可检测异常的负载变化并可禁止 PWM 的产生。
用户手册
CCU6, V4.0
21-90
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.8
调制控制寄存器
21.8.1
调制控制
寄存器 MODCTR 控制由定时器 T12 和 T13 产生的 PWM 序列调制相应的输出信号。此
外,多通道模式可被使能作为输出信号的附加调制源。
MODCTRL
调制控制寄存器低位
RMAP: 0, PAGE: 2
(FCH)
5
4
复位值:00H
7
6
3
2
MCMEN
0
T12MODEN
rw
r
rw
1
0
符号
T12MODEN
位
[5:0]
类型
rw
描述
MCMEN
7
rw
多通道模式使能
0B
禁止根据位域 MCMOUT 的设置,由多通道序
列调制相应输出信号
使能根据位域 MCMOUT 的设置,由多通道序
1B
列调制相应输出信号
0
6
r
保留;
读操作返回 0 ;应写入 0。
用户手册
CCU6, V4.0
T12 调制使能
这些位使能由 T12 产生的 PWM 序列调制相应的比
较输出信号。
T12MODEN0 = MODCTR.0 对应输出 CC60
T12MODEN1 = MODCTR.1 对应输出 COUT60
T12MODEN2 = MODCTR.2 对应输出 CC61
T12MODEN3 = MODCTR.3 对应输出 COUT61
T12MODEN4 = MODCTR.4 对应输出 CC62
T12MODEN5 = MODCTR.5 对应输出 COUT62
禁止 T12 的 PWM 序列调制相应输出信号
0B
1B
使能 T12 的 PWM 序列调制相应输出信号
21-91
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
MODCTRH
调制控制寄存器高位
RMAP: 0, PAGE: 2
(FDH)
5
4
复位值:00H
7
6
3
2
ECT13O
0
T13MODEN
rw
r
rw
1
0
符号
T13MODEN
位
[5:0]
类型
rw
ECT13O
7
rw
定时器 T13 比较输出使能
0B
输出 COUT63 处于被动态
输出 COUT63 被使能,输出 T13 产生的
1B
PWM 信号。
0
6
r
保留;
读操作返回 0 ;应写入 0。
用户手册
CCU6, V4.0
描述
T13 调制使能
这些位使能由 T13 产生的 PWM 序列 CC63_O 调制
相应的输出信号。
T13MODEN0 = MODCTR.8 对应输出 CC60
T13MODEN1 = MODCTR.9 对应输出 COUT60
T13MODEN2 = MODCTR.10 对应输出 CC61
T13MODEN3 = MODCTR.11 对应输出 COUT61
T13MODEN4 = MODCTR.12 对应输出 CC62
T13MODEN5 = MODCTR.13 对应输出 COUT62
禁止 T13 的 PWM 序列调制相应输出信号
0B
1B
使能 T13 的 PWM 序列调制相应输出信号
21-92
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.8.2
强制中断控制寄存器
寄存器 TRPCTRL/H 控制强制中断功能。其中存放着各输出信号的强制中断使能位、以
及发生强制中断时的操作选择控制位。出现强制中断时,CTRAP 输入引脚为低电平,由
位 ISH.TRPF 监控 (反向电平)。当 TRPF = 1 (强制中断输入有效),强制中断状态位
IS.TRPS 被设置为 1。
TRPCTRL
强制中断控制寄存器低位
RMAP: 0, PAGE: 2
7
符号
TRPM1,
TRPM0
用户手册
CCU6, V4.0
6
(FEH)
5
位
1,
0
2
1
0
0
TRPM2
TRPM1
TRPM0
r
rw
rw
rw
类型
rw
4
复位值:00H
3
描述
强制中断模式控制位 1, 0
强制中断再次变为无效之后,由这两位控制相应输
出如何退出强制中断状态。
退出强制中断时,与定时器驱动的 PWM 序列同步以
避免产生多余脉冲。
[TRPM1, TRPM0] 的组合导致:
00B 与 T12 同步:检测到 T12 0- 匹配 (递增计
数)时, TRPF 再次变为 0 之后,退出强制中
断状态 (返回到正常操作)。
01B 和 T13 同步:检测到 T13 0- 匹配, TRPF 再
次变为 0 之后,退出强制中断状态 (返回到
正常操作)。
10B 保留
11B 不和 T12 或 T13 同步:强制中断标志 TRPF
再次变为 0 之后,立即退出强制中断状态
(返回到正常操作)。
21-93
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
TRPM2
位
2
类型
rw
描述
0
[7:3]
r
保留;
读操作返回 0 ;应写入 0。
强制中断模式控制位 2
该位定义强制中断输入条件 (CTRAP = 0 和
TRPPEN = 1)不再有效时 (或者 CTRAP = 1 或者
TRPPEN = 0),如何清除强制中断标志。
自动模式:
0B
如果强制中断输入条件不再有效,由硬件自动
清除位 TRPF
手动模式:
1B
强制中断输入条件不再有效之后,位 TRPF 保
持为 0。通过编程设置 ISR.RTRPF = 1,软件
清除 TRPF。
TRPCTRH
强制中断控制寄存器高位
RMAP: 0, PAGE: 2
(FFH)
7
6
TRPPEN
TRPEN13
TRPEN
rw
rw
rw
符号
TRPEN
用户手册
CCU6, V4.0
5
位
[5:0]
类型
rw
4
复位值:00H
3
2
1
0
描述
强制中断使能控制
置位各控制位可使能下述对应输出信号的强制中断
功能:
TRPEN0 = TRPCTR.8 对应输出 CC60
TRPEN1 = TRPCTR.9 对应输出 COUT60
TRPEN2 = TRPCTR.10 对应输出 CC61
TRPEN3 = TRPCTR.11 对应输出 COUT61
TRPEN4 = TRPCTR.12 对应输出 CC62
TRPEN5 = TRPCTR.13 对应输出 COUT62
相应输出信号的强制中断功能被禁止。输出状
0B
态与位 IS.TRPS 无关。
1B
相应输出信号的强制中断功能被使能。当
IS.TRPS = 1 时,输出被设置为被动态。
21-94
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
TRPEN13
位
6
类型
rw
描述
TRPPEN
7
rw
强制中断输入引脚使能控制
该位使能强制中断产生的输入 (引脚)功能。当
TRPPEN = 1 时,如果在引脚 CTRAP 上检测到下降
沿,才产生中断。
0B
根据输入引脚 CTRAP 产生 CCU6 强制中断的
功能被禁止。 CCU6 强制中断只能通过软件置
位 TRPF 产生。
根据输入引脚 CTRAP 产生 CCU6 强制中断的
1B
功能被使能。 CCU6 强制中断既可通过软件置
位 TRPF 产生,也可由 CTRAP=0 产生。
用户手册
CCU6, V4.0
T13 输出的强制中断使能控制
0B
输出 COUT63 的强制中断功能被禁止。输出
状态与位 IS.TRPS 无关
输出 COUT63 的强制中断功能被使能。位
1B
IS.TRPS = 1 时,输出状态被设置为被动态
21-95
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.8.3
被动态电平寄存器
寄存器 PSLR 定义了模块 PWM 输出的被动态电平。输出端口处于被动态时,引脚驱动
的电平为被动态电平。输出端口处于主动态时,引脚驱动的电平为主动态电平,该电平
和被动态电平反向。被动态电平可使输出电平和所连接的功率器件的驱动极性 (反向或
不反向)相匹配。该寄存器内的位具有映射位域,允许同时更新所有 PWM 相关参数(用
T12_ST 更新位域 PSL,而用 T13_ST 更新 PSL63)。实际使用的值可被读取 (属性
“rh”),而映射位为只写 (属性 “w”)。
PSLR
被动态电平寄存器
RMAP: 0, PAGE: 2
(A6H)
5
4
复位值:00H
7
6
3
2
PSL63
0
PSL
rwh
r
rwh
1
0
符号
PSL
位
[5:0]
类型
rwh
描述
PSL63
7
rwh
输出 COUT63 的被动态电平
该位决定输出引脚 COUT63 的被动态电平
0B
被动态电平为 0
被动态电平为 1
1B
0
6
r
保留;
读操作返回 0 ;应写入 0。
用户手册
CCU6, V4.0
比较输出的被动态电平
这些位决定模块输出为被动态时所驱动的被动态电
平。
PSL0 = PSLR.0 对应输出 CC60
PSL1 = PSLR.1 对应输出 COUT60
PSL2 = PSLR.2 对应输出 CC61
PSL3 = PSLR.3 对应输出 COUT61
PSL4 = PSLR.4 对应输出 CC62
PSL5 = PSLR.5 对应输出 COUT62
被动态电平为 0
0B
1B
被动态电平为 1
21-96
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.8.4
多通道模式寄存器
寄存器 MCMCTR 用于控制多通道功能。
MCMCTR
多通道模式控制寄存器
RMAP: 0, PAGE: 2
7
6
(A7H)
5
4
复位值:00H
3
2
1
0
SWSYN
0
SWSEL
r
rw
r
rw
0
符号
SWSEL
位
[2:0]
类型
rw
描述
SWSYN
[5:4]
rw
切换同步
如果已经请求映射传送 (标志 R 被 SWSEL 所选定
的事件置位)且如果 MCMEN = 1,由位域 SWSYN
定义映射传送事件 MCM_ST 的同步机制。该特性允
许输出和用于调制的 (T12 或 T13) PWM 源同步。
00B 直接;触发事件立即引发映射传送
01B T13 0- 匹配触发映射传送
10B T12 0- 匹配 (递增计数时)触发映射传送
11B 保留;无操作。
0
[7:6],
3
r
保留;
读操作返回 0 ;应写入 0。
用户手册
CCU6, V4.0
切换选择
位域 SWSEL 选择从 MCMPS 到 MCMP 映射传送
MCM_ST 的触发请求源 (下一次多通道事件)。触
发请求保存在提示标志 R 中,直到完成映射传送。
映射传送完成后标志 R 被自动清除。映射传送和位
域 SWSYN 选定的事件同步发生。
000B 不产生触发请求
001B 检测到正确霍尔事件 (CM_CHE)
010B 检测到 T13 周期匹配 (递增计数时)
011B T12 1- 匹配 (递减计数时)
100B T12 通道 1 比较匹配 (相位延迟功能)
101B 检测到 T12 周期匹配 (递增计数时)
110B 保留,不产生触发请求
111B 保留,不产生触发请求
21-97
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
寄存器 MCMOUTSL/H 保存用于多通道模式和霍尔模式的序列输入。该寄存器 (可读且
可写)为 MCMOUT 的映射寄存器,指示当前有效的信号。
MCMOUTSL
多通道模式输出映射寄存器低位
(9EH)
RMAP: 0, PAGE: 0
5
4
复位值:00H
7
6
3
2
STRMCM
0
MCMPS
w
r
rw
1
0
符号
MCMPS
位
[5:0]
类型
rw
描述
STRMCM
7
w
MCMPS 的映射传送请求
置位 STRMCM = 1 立即激活 MCM_ST,用位域
MCMPS 的值更新位域 MCMP。
读取该位时始终返回 0。
读取该位始终返回 0。
0B
无操作
1B
位域 MCMP 被更新
0
6
r
保留;
读操作返回 0 ;应写入 0。
多通道 PWM 序列映射位域
MCMPS 是位域 MCMP 的映射位域。根据寄存器
MCMCTR 定义的传送条件由 MCM_ST 触发多通道
映射传送。
MCMOUTSH
多通道模式输出映射寄存器高位
(9FH)
RMAP: 0, PAGE: 0
7
6
STRHP
0
CURHS
EXPHS
rw
r
rw
rw
用户手册
CCU6, V4.0
5
4
复位值:00H
3
21-98
2
1
0
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
EXPHS
位
[2:0]
类型
rw
描述
CURHS
[5:3]
rw
当前霍尔序列映射位域
CURHS 是位域 CURH 的映射位域。检测到正确的
霍尔事件 (CM_CHE)时,该位域的内容传送到
CURH 中。
STRHP
7
w
霍尔序列映射传送请求
置位 STRHP = 1 立即激活 HP_ST,用位域 CURHS
和 EXPHS 中的值更新位域 CURH 和 EXPH。
读取该位时始终返回 0。
无操作
0B
1B
位域 EXPH 和 CURH 被更新
0
6
r
保留;
读操作返回 0 ;应写入 0。
期望霍尔序列映射位域
EXPHS 是位域 EXPH 的映射位域。检测到正确的霍
尔事件 (CM_CHE)时,该位域的内容传送到
EXPH 中。
MCMOUTL
多通道模式输出寄存器低位
(9AH)
RMAP: 0, PAGE: 3
7
6
0
R
MCMP
r
rh
rw
用户手册
CCU6, V4.0
5
4
复位值:00H
3
21-99
2
1
0
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
MCMP
位
[5:0]
类型
rh
描述
R
6
rh
提示标志
该标志表明选定的触发源已请求位域 MCMPS 到
MCMP 的映射传送。当 MCMEN = 0 或发生映射传
送之后,该位被清除。
0B
未请求映射传送 MCM_ST。
已请求映射传送 MCM_ST,但是因为选定的
1B
同步条件还未出现,所以映射传送还未执行。
0
6
r
保留;
读操作返回 0 ;应写入 0。
多通道 PWM 序列
MCMP 中存放着多通道模式的输出调制序列。如果
由 MODCTR.MCMEN = 1 使能该模式,所有 T12 相
关的 PWM 输出状态可被修改。
当 IS.IDLE = 1 时,该位域为 0。
MCMP0 = MCMOUT.0 对应输出 CC60
MCMP1 = MCMOUT.1 对应输出 COUT60
MCMP2 = MCMOUT.2 对应输出 CC61
MCMP3 = MCMOUT.3 对应输出 COUT61
MCMP4 = MCMOUT.4 对应输出 CC62
MCMP5 = MCMOUT.5 对应输出 COUT62
输出设定为被动态。与 T12 或 T13 产生的
0B
PWM 无关。
1B
输出可处于主动态,由被使能的 T12、 T13 产
生的 PWM 调制信号和强制中断状态决定输
出。
MCMOUTH
多通道模式输出寄存器高位
(9BH)
RMAP: 0, PAGE: 3
7
6
5
4
复位值:00H
3
2
1
0
CURH
EXPH
r
rw
rw
用户手册
CCU6, V4.0
21-100
0
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
EXPH
位
[10:8]
类型
rh
CURH
[13:11]
rh
当前的霍尔序列
由映射传送 HP_ST 用位 CURHS 的值更新位域
CURH。
如果 HCRDY = 1,为了检测毛刺, CURH 和
CCPOSx 输入采样进行比较。
如果霍尔输入引脚上的霍尔序列采样等于位域
CURH,则未检测到任何霍尔事件。
如果霍尔序列采样和 CURH 或 EXPH 都不相等,则
发生的事件并不是期望的霍尔事件,该事件可能由
致命的错误 (如转子停转等)引起。在此情况下,
检测到错误霍尔事件 (CM_WHE)。
0
[7:6]
r
保留;
读操作返回 0 ;应写入 0。
用户手册
CCU6, V4.0
描述
期望霍尔序列
由映射传送 HP_ST 用位域 EXPHS 的值更新位域
EXPH。
如果 HCRDY = 1,为了检测到出现了期望霍尔序列
或错误序列,位域 EXPH 和 CCPOSx 输入采样进行
比较。
如果霍尔输入引脚上的霍尔序列采样等于位域
EXPH,则已经检测到正确的霍尔事件
(CM_CHE)。
21-101
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.9
中断处理
本节描述 CCU6 模块的中断处理。
21.9.1
中断结构
硬件中断事件或软件置位 (寄存器 ISS 中的)相应中断置位控制位皆可置位事件指示标
志 (寄存器 IS 中的)并触发中断产生。中断脉冲的产生和寄存器 IS 中的中断标志无关
(为了产生另一个中断,无需清除相应的状态位)。置位寄存器 ISR 中的相关位可软件清
除中断标志。
若寄存器 IEN 中的某中断使能位被置位,可在某中断输出线上 (CCU6 单元共有四条中
断线 SR0 至 SR3)产生中断脉冲。若多个中断源和同一个中断节点指针 (位于寄存器
INP 中)相 连,各 中 断请 求 进 行 逻 辑 或,合 并 为 一 条公共的中断请求输出线 (见
图 21-41)。
软件请求
清除中断
中断状态
清零
中断使能
中断节点指针
置位
置位中断
至SR0
_
>1
至SR1
至SR2
至SR3
硬件中断事件
CCU6_MCA05549 _CN
图 21-41
一般中断结构
CCU6 模块的可用中断事件如图 21-42 所示。
用户手册
CCU6, V4.0
21-102
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
T12_ PM
T12 计数器
T12_ OM
CDIR
SR0
中断请求寄存器
CC6 x_ 0IC
SR1
中断请求寄存器
CC6 x_ 1IC
SR2
中断请求寄存器
CC6 x_ 2IC
SR3
中断请求寄存器
CC6 x_ 3IC
CC6x_R
T12 捕获
比较通道 CC6x
T13 计数器
T13 比较通道
CC63
CC6x_F
T13_ PM
CM_63
中断控制逻辑
中断置位寄存器
ISS
中断状态寄存器
IS
多通道模式逻辑
STR
中断复位寄存器
ISR
CM_CHE
霍尔比较逻辑
CM_WHE
中断使能寄存器
IEN
TRPF
强制中断处理
节点指针寄存器
INP
TRPS
CCU6_MCA05548_CN
图 21-42
用户手册
CCU6, V4.0
中断源和中断事件
21-103
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.9.2
中断寄存器
21.9.2.1 中断状态寄存器
寄存器 ISL/H 保存各中断请求位。ISL/H 为只读寄存器,写操作对该寄存器的内容无任何
影响。通过寄存器 ISSL/H (置位对应位)或寄存器 ISRL/H (清除对应位)可软件置位
或清除寄存器 ISL/H 中的各位。
中断的产生和寄存器 ISL/H 中的值无关,例如,即使对应位已经被置位,还将产生中断
(如被使能)。中断产生的触发条件为检测到寄存器 ISL/H 中的对应位被置位(由硬件或
软件)。
比较模式 (及霍尔模式)下,只有当定时器运行 (T1xR = 1)时,才能产生与定时器相
关的中断。捕获模式下,当定时器 T12 停止时,还能产生捕获中断。
注: 并非寄存器 ISL/H 中的所有位均可产生中断。该寄存器还包括其它一些状态位。这
些位和中断请求位的置位和清除操作相似。建议用户软件按位检查中断位 (而不
是将这些中断位相或得到一个公共位)。
ISL
中断状态寄存器低位
RMAP: 0, PAGE: 3
(9CH)
复位值:00H
7
6
5
4
3
2
1
0
T12PM
T12OM
ICC62F
ICC62R
ICC61F
ICC61R
ICC60F
ICC60R
rh
rh
rh
rh
rh
rh
rh
rh
符号
ICC60R,
ICC61R,
ICC62R
用户手册
CCU6, V4.0
位
0,
2,
4
类型
rh
描述
捕获,比较匹配上升沿标志
该位指示已经检测到 CC6x_R 事件。比较模式下,
T12 递增计数 (CM_6x 和 CDIR = 0)时检测到比较
匹配;捕获模式下,在相关输入 CC6xIN 上检测到
上升沿跳变,则通过该位指示已经检测到 CC6x_R
事件。
0B
还未检测到上述事件
已检测到上述事件
1B
21-104
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
ICC60F,
ICC61F,
ICC62F
位
1,
3,
5
类型
rh
描述
T12OM
6
rh
定时器 T12 1- 匹配标志
该位指示递减计数时 (T12_OM 且 CDIR = 1),检
测到定时器 T12 1- 匹配事件。
0B
还未检测到上述事件
1B
已检测到上述事件
T12PM
7
rh
定时器 T12 周期 - 匹配标志
该位指示递增计数时 (T12_PM 且 CDIR = 0),检
测到 T12 周期匹配事件。
0B
还未检测到上述事件
已检测到上述事件
1B
捕获,比较匹配下降沿标志位
该位指示已经检测到 CC6x_F 事件。比较模式下,
T12 递减计数 (CM_6x 且 CDIR = 1)时检测到比较
匹配;捕获模式下,检测到输入 CC6xIN 发生下降
沿跳变。则通过该位指示已经检测到 CC6x_F 事件。
还未检测到上述事件
0B
1B
已检测到上述事件
ISH
中断状态寄存器高位
RMAP: 0, PAGE: 3
(9DH)
复位值:00H
7
6
5
4
3
2
1
0
STR
IDLE
WHE
CHE
TRPS
TRPF
T13PM
T13CM
rh
rh
rh
rh
rh
rh
rh
rh
符号
T13CM
位
0
类型
rh
T13PM
1
rh
用户手册
CCU6, V4.0
描述
定时器 T13 比较匹配标志
该位指示已经检测到定时器 T13 比较匹配
(CM_63)。
还未检测到上述事件
0B
1B
已检测到上述事件
定时器 T13 周期匹配标志
该位指示已经检测到定时器 T13 周期匹配
(T13_PM)。
还未检测到上述事件
0B
1B
已检测到上述事件
21-105
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
TRPF
位
2
类型
rh
描述
TRPS
3
rh
强制中断状态1)
该位指示实际强制中断状态。如果 TRPF = 1 则该位
置位;根据寄存器 TRPCTR 中选定的模式清除该
位。
0B
强制中断状态无效
强制中断状态有效
1B
CHE
4
rh
正确霍尔事件标志
该位指示已经检测到正确霍尔事件 (CM_CHE)
0B
还未检测到上述事件
已检测到上述事件
1B
WHE
5
rh
错误霍尔事件标志
该位指示已经检测到错误霍尔事件 (CM_WHE)
0B
还未检测到上述事件
1B
已检测到上述事件
IDLE
6
rh
空闲状态标志位
若空闲状态被使能 (ENIDLE = 1), IDLE 位和位
WHE 同时置位;该位必须由软件清除。
0B
无操作
1B
位 MCMP 被清除,选中的输出被设置为被动
态
STR
7
rh
多通道模式映射传送请求
该位指示已经发生了从 MCMPS 到 MCMP 的映射传
送 (MCM_ST)。
0B
还未检测到上述事件
1B
已检测到上述事件
强制中断标志
该位指示检测 / 已经检测到强制中断情况 (输入
CTRAP = 0 或由软件设定)。如果 TRM2= 0,输入
CTRAP = 1 或 TRPPEN = 0 时,硬件自动清除
TRPF。
如果 TRM2 = 1,必须由软件设置 RTRPF = 1 以清除
该标志。
还未检测到强制中断情况
0B
检测 / 已经检测到强制中断情况
1B
1) 强制中断状态期间,选定的输出被设置为被动态。由寄存器 PSLR 内的相关位确定被动态期间驱动的逻辑电
平。如果强制中断条件不再有效,但是所选择的同步事件还未发生,则会出现位 TRPS = 1 和 TRPF = 0的情况。
用户手册
CCU6, V4.0
21-106
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.9.2.2 中断状态置位寄存器
通过寄存器 ISSL/H 中的各中断请求置位控制位可软件产生 CCU6 中断请求。向该寄存器
中的位写 1,则置位寄存器 ISSL/H 中的对应位,可用于产生中断事件 (若该中断被使能
并且相应功能可用)。
读取所有位则返回 0。
ISSL
中断状态置位寄存器低位
RMAP: 0, PAGE: 2
(A4H)
复位值:00H
7
6
5
4
3
2
1
0
ST12PM
ST12OM
SCC62F
SCC62R
SCC61F
SCC61R
SCC60F
SCC60R
w
w
w
w
w
w
w
w
符号
SCC60R,
SCC61R,
SCC62R
位
0,
2,
4
类型
w
描述
SCC60F,
SCC61F,
SCC62F
1,
3,
5
w
置位捕获,比较匹配下降沿标志
无操作
0B
1B
位 CC6xF 将被置位
ST12OM
6
w
置位定时器 T12 1- 匹配标志
0B
无操作
1B
位 T12OM 将被置位
ST12PM
7
w
置位定时器 T12 周期匹配标志
0B
无操作
1B
位 T12PM 将被置位
置位捕获,比较匹配上升沿标志位
0B
无操作
位 CC6xR 将被置位
1B
ISSH
中断状态置位寄存器高位
RMAP: 0, PAGE: 2
(A5H)
复位值:00H
7
6
5
4
3
2
1
0
SSTR
SIDLE
SWHE
SCHE
SWHC
STRPF
ST13PM
ST13CM
w
w
w
w
w
w
w
w
用户手册
CCU6, V4.0
21-107
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
ST13CM
位
0
类型
w
描述
ST13PM
1
w
置位定时器 T13 周期匹配标志
0B
无操作
1B
位 T13PM 将被置位
STRPF
2
w
置位强制中断标志
0B
无操作
1B
位 TRPF 和 TRPS 将被置位
SWHC
3
w
软件霍尔比较
0B
无操作
触发霍尔比较操作
1B
SCHE
4
w
置位正确霍尔事件标志
0B
无操作
位 CHE 将被置位
1B
SWHE
5
w
置位错误霍尔事件标志
0B
无操作
1B
位 WHE 将被置位
SIDLE
6
w
置位 IDLE 标志
0B
无操作
1B
位 IDLE 将被置位
SSTR
7
w
置位 STR 标志
0B
无操作
1B
位 STR 将被置位
用户手册
CCU6, V4.0
置位定时器 T13 比较匹配标志
0B
无操作
位 T13CM 将被置位
1B
21-108
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.9.2.3 状态复位寄存器
通过寄存器 ISRL/H 中的各位可软件清除中断事件标志。向该寄存器中的位写 1,则寄存
器 IS 中的对应位清零。
读取所有位则返回 0。
ISRL
中断状态复位寄存器低位
RMAP: 0, PAGE: 0
(A4H)
复位值:00H
7
6
5
4
3
2
1
0
RT12PM
RT12OM
RCC62F
RCC62R
RCC61F
RCC61R
RCC60F
RCC60R
w
w
w
w
w
w
w
w
符号
RCC60R,
RCC61R,
RCC62R
位
0,
2,
4
类型
w
描述
RCC60F,
RCC61F,
RCC62F
1,
3,
5
w
复位捕获,比较匹配下降沿标志
0B
无操作
位 CC6xF 将被复位
1B
RT12OM
6
w
复位定时器 T12 1- 匹配标志
0B
无操作
1B
位 T12OM 将被复位
RT12PM
7
w
复位定时器 T12 周期匹配标志
0B
无操作
1B
位 T12PM 将被复位
复位捕获,比较匹配上升沿标志位
0B
无操作
1B
位 CC6xR 将被复位
ISRH
中断状态寄存器高位
RMAP: 0, PAGE: 0
(A5H)
复位值:00H
7
6
5
4
3
2
1
0
RSTR
RIDLE
RWHE
RCHE
0
RTRPF
RT13PM
RT13CM
w
w
w
w
r
w
w
w
用户手册
CCU6, V4.0
21-109
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
RT13CM
位
0
类型
w
描述
RT13PM
1
w
复位定时器 T13 周期匹配标志
0B
无操作
1B
位 T13PM 将被复位
RTRPF
2
w
复位强制中断标志
0B
无操作
1B
位 TRPF 将被复位 (当输入 CTRAP = 0 且
TRPPEN = 1 时,则不考虑。)
RCHE
4
w
复位正确霍尔事件标志
无操作
0B
1B
位 CHE 将被复位
RWHE
5
w
复位错误霍尔事件标志
无操作
0B
1B
位 WHE 将被复位
RIDLE
6
w
复位 IDLE 标志
0B
无操作
位 IDLE 将被复位
1B
RSTR
7
w
复位 STR 标志
0B
无操作
1B
位 STR 将被复位
0
3
r
保留;
读操作返回 0 ;应写入 0。
用户手册
CCU6, V4.0
复位定时器 T13 比较匹配标志
0B
无操作
位 T13CM 将被复位
1B
21-110
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.9.2.4 中断使能寄存器
寄存器 IENL/H 保存中断使能位和一个控制位,错误霍尔序列的情况下,该控制位用于使
能自动空闲功能。
IENL
中断使能寄存器低位
RMAP: 0, PAGE: 2
7
6
(9CH)
5
4
复位值:00H
3
2
1
0
ENT12PM ENT12OM ENCC62F ENCC62R ENCC61F ENCC61R ENCC60F ENCC60R
rw
rw
rw
rw
rw
rw
rw
rw
符号
ENCC60R,
ENCC61R,
ENCC62R
位
0,
2,
4
类型
rw
描述
ENCC60F,
ENCC61F,
ENCC62F
1,
3,
5
rw
通道 CC6x 的捕获,比较匹配下降沿中断使能
如果出现寄存器 IS 中的位 CC6xF 置位情况,
0B
不产生中断。
1B
如果出现寄存器 IS 中的位 CC6xF 置位情况,
则产生中断请求。位域 INPCC6x 所选择的服
务请求输出被激活。
ENT12OM
6
rw
定时器 T12 1- 匹配中断使能
0B
如果出现寄存器 IS 中的位 T12OM 置位情况,
不产生中断。
如果出现寄存器 IS 中的位 T12OM 置位情况,
1B
则产生中断请求。位域 INPT12 所选择的服务
请求输出被激活。
ENT12PM
7
rw
定时器 T12 周期匹配中断使能
如果出现寄存器 IS 中的位 T12PM 置位情况,
0B
不产生中断。
1B
如果出现寄存器 IS 中的位 T12PM 置位情况,
则产生中断请求。位域 INPT12 所选择的服务
请求输出被激活。
用户手册
CCU6, V4.0
通道 CC6x 的捕获,比较匹配上升沿中断使能
0B
如果出现寄存器 IS 中的位 CC6xR 置位情况,
不产生中断。
1B
如果出现寄存器 IS 中的位 CC6xR 置位情况,
则产生中断请求。位域 INPCC6x 所选择的服
务请求输出被激活。
21-111
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
IENH
中断使能寄存器高位
RMAP: 0, PAGE: 2
(9DH)
复位值:00H
7
6
5
4
3
2
ENSTR
ENIDLE
ENWHE
ENCHE
0
ENTRPF
rw
rw
rw
rw
r
rw
1
0
ENT13PM ENT13CM
rw
rw
符号
ENT13CM
位
0
类型
rw
描述
ENT13PM
1
rw
定时器 T13 周期匹配中断使能
0B
如果出现寄存器 IS 中的位 T13PM 置位情况,
不产生中断。
1B
如果出现寄存器 IS 中的位 T13PM 置位情况,
则产生中断请求。位域 INPT13 所选择的服务
请求输出被激活。
ENTRPF
2
rw
强制中断标志中断使能
0B
如果出现寄存器 IS 中的位 TRPF 置位情况,
不产生中断。
如果出现寄存器 IS 中的位 TRPF 置位情况,
1B
则产生中断请求。位域 INPERR 所选择的服务
请求输出被激活。
ENCHE
4
rw
正确霍尔事件中断使能
如果出现寄存器 IS 中的位 CHE 置位情况,不
0B
产生中断。
1B
如果出现寄存器 IS 中的位 CHE 置位情况,则
产生中断请求。位域 INPCHE 所选择的服务请
求输出被激活。
用户手册
CCU6, V4.0
定时器 T13 比较匹配中断使能
0B
如果出现寄存器 IS 中的位 T13CM 置位情况,
不产生中断。
如果出现寄存器 IS 中的位 T13CM 置位情况,
1B
则产生中断请求。位域 INPT13 所选择的服务
请求输出被激活。
21-112
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
ENWHE
位
5
类型
rw
描述
ENIDLE
6
rw
使能 IDLE
由该位使能检测到错误霍尔事件之后 (位 WHE 被
置位),自动进入到空闲状态 (位 IDLE 将被置
位)。空闲状态期间,位域 MCMP 被自动清除。
0B
检测到错误霍尔事件时,位 IDLE 不被自动置
位。
1B
检测到错误霍尔事件时,位 IDLE 被自动置
位。
ENSTR
7
rw
多通道模式映射传送中断使能
0B
如果出现寄存器 IS 中的位 STR 置位情况,不
产生中断。
如果出现寄存器 IS 中的位 STR 置位情况,则
1B
产生中断请求。位域 INPCHE 所选择的服务请
求输出被激活。
0
3
r
保留;
读操作返回 0 ;应写入 0。
用户手册
CCU6, V4.0
错误霍尔事件中断使能
0B
如果出现寄存器 IS 中的位 WHE 置位情况,不
产生中断。
如果出现寄存器 IS 中的位 WHE 置位情况,则
1B
产生中断请求。位域 INPERR 所选择的服务请
求输出被激活。
21-113
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.9.2.5 中断节点指针寄存器
寄存器 INPL/H 保存中断节点指针,允许用户进行灵活中断处理。如果发生相应中断事件
且使能该事件产生中断,由这些位域定义哪个服务请求输出将被激活。
INPL
中断节点指针寄存器低位
RMAP: 0, PAGE: 2
7
6
(9EH)
5
4
复位值:40H
3
2
1
0
INPCHE
INPCC62
INPCC61
INPCC60
rw
rw
rw
rw
符号
INPCC60,
INPCC61,
INPCC62
位
[1:0],
[3:2],
[5:4]
类型
rw
描述
INPCHE
[7:6]
rw
CHE 中断的中断节点指针
该位域定义位 CHE (如果由 ENCHE 使能)或位
STR (如果由 ENSTR 使能)置位情况所激活的服
务请求输出线。
编码见 INPCC6x。
通道 CC6x 中断的中断节点指针
该位域定义由中断请求源 CC6xR (如果由位
ENCC6xR 使能)或 CC6xF (如果由位 ENCC6xF
使能)激活的服务请求输出线。
00B 选择服务请求输出 SR0
01B 选择服务请求输出 SR1
10B 选择服务请求输出 SR2
11B 选择服务请求输出 SR3
INPH
中断节点指针寄存器高位
RMAP: 0, PAGE: 2
7
6
(9FH)
5
4
复位值:39H
3
2
1
0
0
INPT13
INPT12
INPERR
r
rw
rw
rw
用户手册
CCU6, V4.0
21-114
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
INPERR
位
[1:0]
类型
rw
描述
INPT12
[3:2]
rw
定时器 T12 中断的中断节点指针
该位域定义位 T12OM (如果由 ENT12OM 使能)
或位 T12PM (如果由 ENT12PM 使能)的置位情况
所激活的服务请求输出线。
编码见 INPCC6x。
INPT13
[5:4]
rw
定时器 T13 中断的中断节点指针
该位域定义位 T13CM (如果由 ENT13CM 使能)或
位 T13PM (如果由 ENT13PM 使能)的置位情况所
激活的服务请求输出线。
编码见 INPCC6x。
0
[7:6]
r
保留;
读操作返回 0 ;应写入 0。
用户手册
CCU6, V4.0
错误中断的中断节点指针
该位域定义位 TRPF (如果由 ENTRPF 使能)或位
WHE (如果由 ENWHE 使能)的置位情况所激活的
服务请求输出线。
编码见 INPCC6x。
21-115
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.10
一般模块操作
本节提供下述信息:
· 输入选择 (见章节 21.10.1)
· 通用寄存器描述 (见章节 21.10.2)
21.10.1
输入选择
通过编程设置端口输入选择寄存器 PISEL0L,PISEL0H 和 PISEL2。从 4 个或 8 个可能
的输入中为每个 CCU6 输入选择信号。该特性允许根据器件应用需要调整引脚功能。
模块输出信号的输出引脚在端口中选择。
命名规则:
输入信号 CC60IN 的输入向量 CC60IN[D:A] 由信号 CC60INA 到 CC60IND 组成。
注: 在这些输入影响模块内部逻辑之前,CCU6 的所有功能输入和 fCC6 同步。从而会带
来 2/fCC6 的延迟,对于异步信号,还必须额外增加大约 1/fCC6 的不确定延迟以进行
精确时序计算。如果输入信号为高电平和为低电平的持续时间都大于 1/fCC6,才能
够正确检测到输入信号的边沿。
用户手册
CCU6, V4.0
21-116
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.10.2
通用寄存器
21.10.2.1 端口输入寄存器
寄存器 PISEL0L 和 PISEL0H 中的位域为模块输入选择实际的输入信号。
PISEL0L
端口输入选择寄存器低位
RMAP: 0, PAGE: 3
7
6
(9EH)
5
4
复位值:00H
3
2
1
0
ISTRP
ISCC62
ISCC61
ISCC60
rw
rw
rw
rw
符号
ISCC60
位
[1:0]
类型
rw
描述
ISCC61
[3:2]
rw
CC61 的输入选择
该位域定义用作 CC61 捕获输入的信号。
00B 输入信号 CC61_0
01B 输入信号 CC61_1
10B CCU6 SR2 事件
11B ADC 通道 1 边界极限检查事件
ISCC62
[5:4]
rw
CC62 的输入选择
该位域定义用作 CC62 捕获输入的信号。
00B 输入信号 CC62_0
01B 输入信号 CC62_1
10B CCU6 SR2 事件
11B ADC 通道 2 边界极限检查事件
用户手册
CCU6, V4.0
CC60 的输入选择
该位域定义用作 CC60 捕获输入的信号。
00B 输入信号 CC60_0
01B 输入信号 CC60_1
10B CCU6 SR2 事件
11B ADC 通道 0 边界极限检查事件
21-117
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
ISTRP
位
[7:6]
类型
rw
描述
CTRAP 的输入选择
该位域定义用作 CTRAP 输入的信号。
MODPISEL3.CPTRAPIS 同时用于选择触发 CTRAP
的 8 个触发源之一。
00B 选择输入引脚 CTRAP_0, CTRAP_1,
CTRAP_2 和 CTRAP_3 。寄存器
MODPISEL3 中的位 CTRAPIS 用于进一步从
这四个输入引脚中选择一个。
01B 选择 P1 过流检测输出
10B 上述选项 00 或 01 中的任意输入源被选中,用
来触发 CTRAP
11B 选择 ADC 通道事件
PISEL0H
端口输入选择寄存器 0 高位
RMAP: 0, PAGE: 3
7
6
(9FH)
5
4
复位值:00H
3
2
1
0
IST12HR
ISPOS2
ISPOS1
ISPOS0
rw
rw
rw
rw
符号
ISPOS0
位
[1:0]
类型
rw
描述
ISPOS1
[3:2]
rw
CCPOS1 的输入选择
该位域用于选择 CCPOS1 的输入信号
00B 选择输入 CCPOS1_0
01B 选择输入 CCPOS1_1
10B 未使用
11B ADC 通道 1 边界极限检查事件
用户手册
CCU6, V4.0
CCPOS0 的输入选择
该位域用于选择 CCPOS0 的输入信号。
00B 选择输入 CCPOS0_0
01B 选择输入 CCPOS0_1
10B 选择输入 CCPOS0_2
11B ADC 通道 0 边界极限检查事件
21-118
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
符号
ISPOS2
位
[5:4]
类型
rw
IST12HR
[7:6]
rw
描述
CCPOS2 的输入选择
该位域用来选择 CCPOS2 输入信号。
00B 输入信号 CCPOS2_0
01B 输入信号 CCPOS2_1
10B 未使用
11B ADC 通道 2 边界极限检查事件
T12HR 的输入选择
该位域用来选择 T12HR 的输入信号。
00B 来自 T12HR[7:0]1) 的任意输入
01B CCU6 SR2 输出
10B CCU6 SR3 输出
11B ADC 通道事件
1) SCU 模块中的 MODIPISEL3 寄存器中的 IST12HR1 用于在 T12HR[7:0] 中选择一个。
PISEL2
端口输入选择寄存器 2
RMAP: 0, PAGE: 3
7
6
(A4H)
5
4
复位值:00H
3
2
1
0
0
IST13HR
r
rw
符号
IST13HR
位
[1:0]
类型
rw
描述
0
[7:2]
r
保留;
读操作返回 0 ;应写入 0。
T13HR 的输入选择
该位域用来选择 T13HR 输入的信号。
00B 来自 T13HR[7:0]1) 的输入信号
01B CCU6 SR2 输出
10B CCU6 SR3 输出
11B ADC 通道事件
1) SCU 模块中的 MODIPISEL3 寄存器中的 IST13HR1 用于在 T13HR[7:0] 中选择一个。
用户手册
CCU6, V4.0
21-119
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
21.11
寄存器映射
CCU6 SFR 位于标准存储器区 (RMAP = 0),由 4 页组成。 CCU6_PAGE 寄存器位于
地址 A3H 处,包含分页值和页控制信息。
CCU6_PAGE
CCU6 分页寄存器
RMAP: 0, PAGE: X
7
6
(F1H)
5
4
复位值:00H
3
2
1
OP
STNR
0
PAGE
w
w
r
rwh
符号
PAGE
位
[3:0]
STNR
[5:4]
OP
[7:6]
0
类型 描述
rwh 分页位
写入时,该值表示新页的地址。读出时,该值表示当前
有效页的值 =addr[y:x+1]
w
保存编号
该编号指明在哪个保存位域上执行 OP 定义的操作。
若 OP = 10B,
PAGE 的内容在被新值覆盖之前保存在 CCU6_STx 中。
若 OP = 11B,
PAGE 的内容被 CCU6_STx 覆盖。写入 PAGE 的值不
予理睬。
00
选择 CCU6_ST0
01
选择 CCU6_ST1
10
选择 CCU6_ST2
11
选择 CCU6_ST3
w
操作
0X 手动保存页模式,STNR 的值被忽略,PAGE 被直
接写入
10
带有自动页保存的新页设置。当前写入 PAGE 中
的内容被保存的同时,上次写入 PAGE 的内容被
保存在 STNR 规定的位域 CCU6_STx 中。
11
自动恢复页。对写入 PAGE 的内容不予理睬,
PAGE 由 STNR 规定的位域 CCU6_STx 中的内容
覆盖
内核 SFR 的地址 (非映射)列表见表 21-16。
用户手册
CCU6, V4.0
21-120
V1.1, 2010-09
XC83x
捕获 / 比较单元 6 (CCU6)
本章中描述的所有 CCU6 寄存器名称,在本手册其它章节中引用时需加上模块名前缀
“CCU6_”,例如 CCU6_CC63SRL。
表 21-16
CCU6 页 0 – 3 的 SFR 地址列表
地址
9AH
页0
CC63SRL
页1
CC63RL
页2
T12MSELL
页3
MCMOUTL
9BH
CC63SRH
CC63RH
T12MSELH
MCMOUTH
9CH
TCTR4L
T12PRL
IENL
ISL
9DH
TCTR4H
T12PRH
IENH
ISH
9EH
MCMOUTSL
T13PRL
INPL
PISEL0L
9FH
MCMOUTSH
T13PRH
INPH
PISEL0H
A4H
ISRL
T12DTCL
ISSL
PISEL2
A5H
ISRH
T12DTCH
ISSH
A6H
CMPMODIFL
TCTR0L
PSLR
A7H
CMPMODIFH
TCTR0H
MCMCTR
FAH
CC60SRL
CC60RL
TCTR2L
T12L
FBH
CC60SRH
CC60RH
TCTR2H
T12H
FCH
CC61SRL
CC61RL
MODCTRL
T13L
FDH
CC61SRH
CC61RH
MODCTRH
T13H
FEH
CC62SRL
CC62RL
TRPCTRL
CMPSTATL
FFH
CC62SRH
CC62RH
TRPCTRH
CMPSTATH
用户手册
CCU6, V4.0
21-121
V1.1, 2010-09
XC83x
模数转换器
22
模数转换器
XC83x 的模数转换器模块 (ADC)采用逐次逼近技术将模拟输入值 (电压)转换成离散
数字值。
ADC 模块具有一个输入通道个数可选的 ADC 内核 (ADC0)。
输入通道可选且仲裁方式灵活。
ADC内核0
...
模拟
输入
AD 转换器
数据 (结果)
处理
转换控制
请求控制
总线
接口
ADC_1_kernels _cn
图 22-1
ADC 模块框图
本节给出 ADC 模块特性概述,在后面的章节中按照下述方式介绍 ADC 的一般结构:
·
·
·
·
·
·
·
·
“ 简介和基本结构 ” 页 22-7
“ 一般功能配置 ” 页 22-13
“ 转换请求产生 ” 页 22-16
“ 请求源仲裁 ” 页 22-36
“ 模拟输入通道配置 ” 页 22-41
“ 转换结果处理 ” 页 22-60
“ 中断请求处理 ” 页 22-79
“ 寄存器映射 ” 页 22-86
用户手册
ADC, V2.2
22-1
V1.1, 2010-09
XC83x
模数转换器
下述特性给出 ADC 内核的功能:
· 输入电压范围:0 V - 模拟电源电压 (VDDP = 3.0 V 至 5.5 V)
· 每个通道都具有三个可选的内部参考电压源,支持比例式测量和不同的信号范围:
– 内部 VDDP 和 VSSP
– 内部 1.2Vref 和 CH0,用作 ADC 电压参考地1)
– 内部 1.2Vref 和 VSSP1)
· 多达 8 个模拟输入通道
· 转换速度和采样时间可调整,以适应于各种传感器和参考
· 转换时间低至 1 μs (取决于结果宽度和采样时间)
· 灵活的请求源选择和仲裁
– 单通道转换 (单次或重复)
– 可配置的自动扫描转换 (单次或重复)
– 可编程的任意转换序列 (单次或重复)
– 可由软件、定时器事件或者外部事件触发转换操作
– 等待 - 启动模式,实现最大的吞吐量,或
取消 - 插入 - 重复模式,用来减少转换延迟
· 功能强大的结果处理
– 结果宽度可选:8 位和 10 位
– 4 个独立的结果寄存器
– 可配置的极限检查,边界值可编程设定
– 通过将可选个数的转换结果进行累加的方式减少数据率
– 通过平均转换结果实现的一阶数字低通滤波器
· 基于可选事件的灵活中断产生
· 支持各种省电模式
· 附加特性
– 超出范围 (ORC)电压比较器,检测每个可触发其它模块的输入通道的电压
– 可配置的极限检查器,能够触发其它模块
1) 使用该模式,两次转换之间需要建立时间。具体参数请参见数据手册。
用户手册
ADC, V2.2
22-2
V1.1, 2010-09
XC83x
模数转换器
22.1
系统信息
本节提供与 ADC 相关的系统信息。
22.1.1
引脚
XC83x 中的 ADC 模块的引脚分配见表 22-1。
表 22-1
ADC 引脚功能和选择
引脚
功能
描述
由 ... 选择
P2.0
CH0
模拟输入通道 0
P2_EN.P0 = 1B
P2.1
CH1
模拟输入通道 1
P2_EN.P1 = 1B
P2.2
CH2
模拟输入通道 2
P2_EN.P2 = 1B
P2.3
CH3
模拟输入通道 3
P2_EN.P3 = 1B
P2.4
CH4
模拟输入通道 4
P2_EN.P4 = 1B
P2.5
CH5
模拟输入通道 5
P2_EN.P5 = 1B
P2.6
CH6
模拟输入通道 6
P2_EN.P6 = 1B
P2.7
CH7
模拟输入通道 7
P2_EN.P7 = 1B
22.1.2
时钟配置
ADC 内核的工作频率 FPCLK 固定为 48 MHz。见章节 22.5.1。
如果完全不需要 ADC 功能,可通过门控关闭其时钟输入的方式整个的禁止该模块,从而
最大程度的降低功耗。通过置位下述的 PMCON1 寄存器中的 ADC_DIS 来实现。
必须在访问 PMCON1 寄存器之前编程设置 SCU_PAGE 寄存器中的位域 PAGE。
PMCON1
外设管理控制寄存器 1
RMAP: 0, PAGE: 1
7
6
IIC_DIS
LTS_DIS
rw
rw
(EFH)
5
4
CDC_DIS MDU_DIS
rw
rw
复位值:FFH
3
2
1
0
T2_DIS
CCU_DIS
SSC_DIS
ADC_DIS
rw
rw
rw
rw
符号
位
类型
描述
ADC_DIS
0
rw
ADC 禁止请求,高有效
0
ADC 正常工作
1
请求禁止 ADC (缺省设置)
用户手册
ADC, V2.2
22-3
V1.1, 2010-09
XC83x
模数转换器
22.1.3
中断事件和分配
表 22-2 列出 ADC 的中断事件源以及相应的中断使能位和标志位。
表 22-2
ADC 中断事件
事件
事件中断使能位
事件标志位
服务请求
输出
请求源事件中断
ADC_Q0R0.ENSI
ADC_EVINFR.EVINFx
SR0
ADC_QBUR0.ENSI
ADC_GLOBCTR.CLCIEN
ADC_CHINFR.CHINFx SR0
结果事件中断
ADC_RCRx (x = 0 - 3).IEN
ADC_EVINFR.EVINFx
SR0
超出范围比较器
事件中断
ADC_GLOBCTR.ORCIEN
ADC_LORE.LOREx
SR1
通道事件中断
表 22-3 给出每个 ADC 中断源的中断节点分配。
表 22-3
ADC 事件的中断节点控制
事件
中断节点使能位
中断节点标志位
向量地址
SR0
IEN1.EADC
IRCON1.ADCSR0
33H
SR1
22.1.4
IRCON1.ADCSR1
IP 互连
ADC 可与其它外设互连,无需软件干预即可实现高水平的自动化。表 22-4 描述 ADC 输
出、通道事件和超出范围比较器事件与 CCU6 和定时器 T2 输入的连接关系。表 22-5 描
述 CCU6 和 LEDTSCU 输出与 ADC 外部请求触发输入的连接关系。
表 22-4
ADC 输出连接关系
ADC 功能 / 信号
连接至其它模块的输入
由 ... 选择
ADC 通道事件 (o):
ADC_CHEV
CCU6 输入 (i): T12HR
CCU6_PISEL0H.IST12HR = 11B
CCU6 输入 (i): T13HR
CCU6_PISEL2.IST13HR = 11B
ADC 通道事件 0 (o):
ADC_CHEV0
CCU6 输入 (i): CTRAP
CCU6_PISEL0L.ISTRP = 11B
ADC 通道事件 1(o):
ADC_CHEV1
未连接
-
ADC 通道事件 2 (o):
ADC_CHEV2
未连接
-
通道事件
用户手册
ADC, V2.2
22-4
V1.1, 2010-09
XC83x
模数转换器
表 22-4
ADC 输出连接关系
ADC 功能 / 信号
连接至其它模块的输入
由 ... 选择
ADC 边界事件 0 (o):
ADC_BF0
CCU6 输入 (i): CC60
CCU6_PISEL0L.ISCC60 = 11B
ADC 边界事件 1 (o):
ADC_BF1
ADC 边界事件 2 (o):
ADC_BF2
CCU6 输入 (i): CCPOS0 CCU6_PISEL0H.ISPOS0 = 11B
CCU6_PISEL0L.ISCC61 = 11B
CCU6 输入 (i): CC61
CCU6 输入 (i): CCPOS1 CCU6_PISEL0H.ISPOS1 = 11B
CCU6_PISEL0L.ISCC62= 11B
CCU6 输入 (i): CC62
CCU6 输入 (i): CCPOS2 CCU6_PISEL0H.ISPOS2= 11B
超出范围比较器 (ORC)
ORC 事件 0 (o):
ORCEVENT0
ORC 事件 1 (o):
ORCEVENT1
ORC 事件 2 (o):
ORCEVENT2
CCU6 输入 (i): T12HR
MODPISEL3.IST12HR1 = 001B
CCU6_PISEL0H.IST12HR = 00B
定时器 T2 输入 (i): T2EX MODPISEL2.T2EXIS = 100B
定时器 T2 输入 (i): T2EX MODPISEL2.T2EXIS = 101B
CCU6 输入 (i): T12HR
MODPISEL3.IST12HR1 = 100B
CCU6_PISEL0H.IST12HR = 00B
CCU6 输入 (i): T13HR
MODPISEL3.IST13HR1 = 100B
CCU6_PISEL2.IST13HR = 00B
ORC 事件 3 (o):
ORCEVENT3
CCU6 输入 (i): CTRAP
MODPISEL3.CTRAPIS = 11B
CCU6_PISEL0L.ISTRP = 00/10B
ORC 事件 4 (o):
ORCEVENT4
CCU6 输入 (i): T12HR
MODPISEL3.IST12HR1 = 110B
CCU6_PISEL0H.IST12HR = 00B
CCU6 输入 (i): T13HR
MODPISEL3.IST13HR1 = 110B
CCU6_PISEL2.IST13HR = 00B
表 22-5
ADC 输入连接关系
ADC 功能 / 信号
连接至其它模块功能 / 信号
请求源 x (x = 0,1)
请求源 x 触发 0 输入 (i): REQTRxA
CCU6 服务请求输出 SR2 (o):CCU6_SR2
请求源 x 触发 1 输入 (i): REQTRxB
CCU6 服务请求输出 SR3 (o): CCU6_SR3
请求源 x 触发 2 输入 (i): REQTRxC
CCU6 T12 周期 - 匹配 (o): T12PM
请求源 x 触发 3 输入 (i): REQTRxD
CCU6 T13 周期 - 匹配 (o): T13PM
请求源 x 触发 4 输入 (i): REQTRxE
CCU6 T13 比较 - 匹配 (o): T13CM
请求源 x 触发 5 输入 (i): REQTRxF
CCU6 MCM 映射传送 (o): MCM_ST
用户手册
ADC, V2.2
22-5
V1.1, 2010-09
XC83x
模数转换器
表 22-5
ADC 输入连接关系
ADC 功能 / 信号
连接至其它模块功能 / 信号
请求源 x 触发 6 输入 (i): REQTRxG
LEDTSCU 比较 - 匹配 (o): LEDTS_CM
请求源 x 触发 7 输入 (i): REQTRxH
LEDTSCU 时间片断中断 (o): LEDTS_TSI
用户手册
ADC, V2.2
22-6
V1.1, 2010-09
XC83x
模数转换器
22.2
简介和基本结构
ADC 具有一组可根据给定应用的需要进行配置的功能单元。由这些单元构成从输入信号
到数字结果之间的通路。
Vddp V1.2VREF
va_altref
va_ref
ADC内核
va_gnd
va_altgnd
中断产生
Vssp
模拟输入
通道CH0
...
模拟输入
通道CH3 / 7
AD 转换器
结果处理
转换控制
请求控制
ADC_kernel _overv3_cn
图 22-2
ADC 内核框图
请求源控制
可由两个请求源产生并行转换请求:
· 线性序列请求源请求按照可配置的顺序自动扫描多达 8 个通道
· 任意序列源请求对多达 4 个可任意选择的通道排成队列
每个请求源可 (单次或重复)请求所选择的转换序列,每个请求源可单独使能或可由外
部事件触发,如 PWM 边沿、定时器信号或引脚跳变。
仲裁器可从不同请求源中决断出并行转换请求。具有较高优先级的请求或者取消正在运
行的低优先级请求(取消 - 插入 - 重复模式)或者在当前运行的转换结束后立即进行转换
(等待 - 启动模式)。如果目标结果寄存器还未被读取,转换可被推迟(等待 - 读取模式)。
输入通道选择
模拟输入复用器从多达 8 个 (CH0 - CH7)模拟输入中选择一个进行转换。两个请求源
可选择线性序列或任意序列。这些请求源的优先级可配置。
注: 由于引脚的限制,并非所有模拟输入通道在所有封装的器件中都可用。详情请参考
章节 22.1 中的关于具体实现的描述。
用户手册
ADC, V2.2
22-7
V1.1, 2010-09
XC83x
模数转换器
转换控制
转换参数 (如采样阶段的持续时间)可在输入级中配置。
因此输入通道可根据与 ADC 相连的传感器类型 (或其它模拟源)进行调整。
模拟 / 数字转换器
将选中的输入通道转换成数字值,先对选中的输入通道上的电压进行采样,然后产生选
定位数的结果位。
结果处理
每个模拟输入通道的转换结果可直接送至 4 个结果寄存器中的一个。可由一组通道或单
个通道使用一个结果寄存器。
等待 - 读取模式通过阻止新的转换,直到先前的结果被读出为止的方式,避免了因结果被
覆盖而带来的数据损失。
数据压缩 (例如:用于数字抗混叠滤波)自动将两次转换结果相加,之后才向 CPU 发送
中断请求。
而且,结果寄存器可被级联,组成 FIFO 结构,用来保存数个转换结果而不会覆盖先前的
数据。从而可允许 CPU 延迟读取 ADC 中的结果数据。
ADC 中实现了一个数字一阶低通滤波器,在将结果写入到结果寄存器之前,该滤波器连
续的对转换结果进行滤波。
中断产生
下述 ADC 事件可向 CPU 发出中断请求:
· 请求源事件指示对应请求源的转换序列完成。该事件可用于触发新序列的建立。
· 通道事件指示某个通道完成转换。该事件可和极限检查相结合,仅当转换结果在定义
的范围内时,才产生中断。
· 结果事件指示相应结果寄存器中有新的结果数据可用。如果数据压缩或数字低通滤波
器模式有效,仅在一个完整的累加过程之后才产生结果事件。
· 超出范围比较器事件指示 ADC 输入通道上检测到的电压高于或低于 Vddp。
所有中断请求都被分配给两个中断节点。
附加特性
支持下列两种检测和触发机制,确保快速响应而无需 CPU 干预。
超出范围比较器 (ORC)内嵌到每个 ADC 通道中,当电压超出范围时,将触发其它模
块或中断 。当输入通道上的电压升至高于 Vddp 电平或者当输入通道的电压降至低于
Vddp 电平时,则出现输入超出范围的情况。
超出范围比较器与其它模块 (如 CCU6,定时器)相连,能够触发其它模块的启动或停
止。所有超出范围比较器事件被分配给一个中断节点。
用户手册
ADC, V2.2
22-8
V1.1, 2010-09
XC83x
模数转换器
可配置极限检查器将转换结果与编程设置的边界值比较,当满足触发条件时,触发其它
模块或中断。
可配置的极限检查器与其它模块 (如 CCU6)相连,从而可用于触发其它模块的启动或
停止。
用户手册
ADC, V2.2
22-9
V1.1, 2010-09
XC83x
模数转换器
22.3
电气模型
对模拟输入电压的转换将由两个连续的阶段组成:
· 采样阶段:输入电压被采样并保存
输入信号通路为该阶段的简化模型。
· 转换阶段:保存的电压值被转换成数字结果
参考电压通路为该阶段的简化模型。
输入信号通路
XC83x 的 ADC 模块使用开关电容 CAIN 进行采样 (小的寄生电容用每个输入引脚上的小
电容表示) 。采样过程中,选中的输入 CHx 通过输入复用器 (用理想开关和串联电阻
RAIN 的模型表示)与电容 CAIN 相连。
在采样阶段, CHx 的开关闭合,从而输入电压 VAINx 连接到电容 CAIN 上。
ADC内核
CH3/7
...
R EXT
...
VS
CEXT
CHx
CH0
V AINx
R AIN
CAIN
VC
V AGND
ADC_signal_path_model 3_cn
图 22-3
信号通路模型
图 22-3 给出模拟输入信号通路的简化模型。带有内部阻抗 REXT 的模拟电压源 (电压值
为 VS)用来代表要转换的模拟输入。
在采样阶段,对应的开关闭合,向电容 CAIN 充电。由于 RC 网络的低通效应,实际要转
换的电压 VC 不会立即跟随 VS。采样阶段的长度主要取决于模拟电压源 REXT 的值和需要
的转换精度。
为了减少 REXT 的影响并滤除输入噪声,推荐用户在每个 ADC 的模拟输入引脚上引入一
个快速外部隔直流电容 CEXT。因此主要由 CEXT 提供采样阶段的电荷。与不加隔直流电容
相比,该结构明显缩短了采样阶段的时间,因为用来定义采样时间的低通时常数主要由
RAIN 和 CAIN 的值决定。
另外,电容 CAIN 自动预先充电至大约标准参考电压 VAREF 的一半,以使得采样开始时,
VAINx 和 VC 之间的平均电压差最小。由于参数的变化和寄生效应的影响, CAIN 上的预先
充电的电压通常小于 VAREF / 2。
另一方面, CEXT 和 CAIN 之间电荷的重新分配导致采样过程中 VAINx 的电压发生改变。为
用户手册
ADC, V2.2
22-10
V1.1, 2010-09
XC83x
模数转换器
了使得该电压变化低于 1 LSBn,推荐使用的外部隔直流电容 CEXT 至少在 2n × CAIN 的范
围内。
对于同一个模拟输入通道来讲,在两次采样之间,REXT 和 CEXT 组成的低通滤波器应当允
许 VAINx 跟随 VS。
请注意:尤其对于高温应用来讲,ADC 的模拟输入结构可能导致漏电流并由于 REXT 上的
压降而引入误差。如果输入电压电平接近模拟电源地 VSS 或模拟电源 VDDP,ADC 输入漏
电流增加。推荐使用的工作范围是输入电压大约为 VDDP 的 3% 和 97% 之间,以减少相
应 ADC 通道的输入漏电流。
另外,漏电流还受到相邻模拟输入的过载情况的影响。过载期间,输入上施加的电压超
过电源电压,此时内嵌的保护电路限制输入电压。这使得过载电流通过保护电路传递(通
过一个耦合因子)至相邻输入上。
用户手册
ADC, V2.2
22-11
V1.1, 2010-09
XC83x
模数转换器
22.4
转换特性和误差定义
ADC 的转换特性描述模拟输入电压和 2n 离散数字结果值(n 位精度)之间的关系。每个
数字结果值 (范围是 0 到 2n-1 之间)代表的输入电压范围由参考电压范围除以 2n 来定
义。 该范围 (被称为量化步长或代码宽度)代表 ADC 的最小刻度 (被称为 LSBn)。对
于每个转换结果,数字结果的离散特性产生的系统固有的量化不确定性为 ±0.5 LSBn。
理想的转换曲线中,当模拟输入达到 0.5 LSBn 时,产生第一个数字跳变 (0 到 1 之间)
量化步长在整个输入电压范围内等量分配。
低于或高于参考电压模拟输入电压使得数字结果饱和至数字结果 0 或者 2n-1。
实际转换曲线表现为在一定程度上偏离理想转换曲线:
· 偏移误差指以误差最低的代码得到的真实转换曲线和理想转换曲线之间的偏差。误差
最低的代码指的是对两种曲线来讲,所有可能的代码中曲线拟合度最佳的情形。
· 增益误差指的是实际转换曲线与理想转换曲线的斜率之间的偏差。同样是指所有代码
中两种曲线拟合度最佳的情形。
· 微分非线性误差 (DNL)指的是实际代码宽度和理想代码宽度之间的偏差 (两个相
邻数字转换结果对应的模拟输入电压之间的差别)。-1 LSBn的 DNL值指示代码丢失。
· 积分非线性误差 (INL)实际转换曲线和调整过的理想转换转换曲线之间的偏差 (与
实际转换曲线相同的偏移和增益误差,但是代码宽度是等量的)。
· 总的不可调整误差(TUE)描述了对于给定的测量范围来讲,实际转换结果与理想转
换特性之间的最大偏差。由于上面提到的这些误差可相互补偿,TUE 的值通常比单个
误差的总和要小得多。
TUE 还包含生产工艺的差别和内部噪声的影响 (如果切换噪声由系统产生,通常会
导致 TUE 值的增加)。
用户手册
ADC, V2.2
22-12
V1.1, 2010-09
XC83x
模数转换器
22.5
一般功能配置
对于每个通道、转换源等来讲很多参数都是单独选择的,但是一些配置则适用于整个
ADC 内核。
22.5.1
一般时钟方案和控制
ADC 内核的各部分由时钟信号驱动,时钟信号是基于用来访问 ADC 模块的、总线上的
时钟 fADC 产生的。 XC83x 的 ADC 与系统时钟相连,因此 fADC = fSYS。
· 模拟时钟 fADCI 用作转换器的内部时钟,用来定义转换长度和采样时间。
见章节 22.8.6。
· 仲裁器使用数字时钟 fADCD,并用于定义仲裁周期的持续时间。
· 所有其它数字结构 (如中断等)由模块时钟 fADC 直接驱动。
时序参数被编程到寄存器 ADC_GLOBCTR 中。
时钟产生单元
(SCU中的)
fSYS
ADC内核
模块时钟fADC
分频器
fADCI
模拟时钟
fADCI
中断等
转换器
数字时钟
fADCD
仲裁器
ADC8_clocking2_cn
图 22-4
时钟方案
注: 转换运行过程中,如果 ADC 的时钟降至一个最小值以下或者停止,转换结果可能
被破坏。为了得到正确的转换结果, fADCI 的频率一定不能超过所定义的范围。详
情请参考相关数据手册。
全局控制寄存器定义转换器单元的基本时序参数和基本操作模式,包含下列各位:
·
·
·
·
使能 / 禁止模拟转换器
定义结果精度, 8/10 位宽
定义 fADCI (模拟部分的内部时钟频率)的分频因子 CTC
使能 / 禁止超出范围比较器中断
用户手册
ADC, V2.2
22-13
V1.1, 2010-09
XC83x
模数转换器
· 使能 / 禁止通道极限检查中断
ADC_GLOBCTR
全局控制寄存器
RMAP: 0, PAGE: 0
7
6
ANON
DW
rw
rw
(CAH)
5
4
复位值:30H
3
2
1
0
CTC
ORCIEN
CLCIEN
0
rw
rw
rw
r
符号
位
类型
描述
CLCIEN
2
rw
使能通道极限检查中断
该位使能与极限检查相关的通道事件中断,见图
22-15。如果缓存中有新的转换结果且结果触发极限
检查单元,当使能位置为 1 时,产生通道事件中断。
0B
禁止事件中断
使能事件中断
1B
ORCIEN
3
rw
使能超出范围比较器中断
0B
禁止超出范围比较器中断
1B
使能超出范围比较器中断
CTC
[5:4]
rw
转换时间控制
该位域定义分频得到内部模拟时钟 fADCI 的分频因
子。该时钟提供用来计算转换和采样时间的内部时
间基准。
00B fADCI = 1/3 × fADCA
01B fADCI = 1/4 × fADCA
10B 保留
11B fADCI = 1/6 × fADCA (缺省设置)
DW
6
rw
数据宽度
该位域定义转换结果的位数。
0B
结果为 10 位宽 (缺省设置)
1B
结果为 8 位宽
ANON
7
rw
模拟部分开启
该位使能 ADC 模块的模拟部分并定义其工作模式。
0B
ADC 模块的模拟部分关闭,不可能进行转换。
为了使功耗最小,内部模拟电路处于掉电状
态,且不产生 fADCI 。
1B
ADC 模块的模拟部分开启,可进行转换。模
拟部分的自动掉电功能被禁止。
用户手册
ADC, V2.2
22-14
V1.1, 2010-09
XC83x
模数转换器
符号
位
类型
描述
0
[1:0]
r
保留
读操作返回 0 ;应写入 0。
全局状态寄存器指示转换的当前状态。
ADC_GLOBSTR
全局状态寄存器
RMAP: 0, PAGE: 0
7
6
(CBH)
5
4
复位值:00H
3
2
1
0
0
CHNR
0
SAMPLE
BUSY
r
rh
r
rh
rh
符号
位
类型
描述
BUSY
0
rh
模拟部分忙
该位指示转换正在进行。
模拟部分空闲
0B
当前正在进行转换
1B
SAMPLE
1
rh
采样阶段
该位指示模拟输入信号当前是否被采样。
0B
模拟部分未进行采样
模拟部分正在进行采样
1B
CHNR
[5:3]
rh
通道编号
该位域指示当前正在转换哪个模拟输入通道。新的
转换操作启动时,该信息被更新。
注:位 5 仅适用于具有 8 个转换通道的器件。对于
未实现的通道,这些位应当被当作保留位:类型为
‘r’,读操作返回 0 ;应写入 0。
0
用户手册
ADC, V2.2
2, [7:6]
r
保留
读操作返回 0 ;应写入 0。
22-15
V1.1, 2010-09
XC83x
模数转换器
22.6
转换请求产生
ADC 内核的转换请求单元自动处理转换请求的产生。两个请求源可产生转换请求。由仲
裁器对并行请求源进行决断,选择下一个要转换的通道。
发生触发事件时,请求源请求对某个模拟通道或通道序列进行转换。
· 软件触发直接激活对应的请求源
· 外部触发用外部事件,如来自定时器的 PWM 信号或来自端口引脚的触发脉冲,来同
步触发请求源。
应用软件选择触发源、要转换的通道以及请求源的优先级。无需外部触发,就可由软件
直接激活请求源。
仲裁器规律的扫描挂起的转换请求,并选择具有最高优先级的转换请求。然后转换请求
被前送至转换器,启动所请求通道的转换操作。
每个转换源都可工作在单次模式或连续模式:
· 单次模式,触发一次之后,请求编程设置的转换 (序列)。随后的转换 (序列)必须
再一次被触发。
· 连续模式,触发一次之后,自动重复请求编程设置的转换 (序列)。
对于每个请求源来讲,根据 8 个可选的触发输入 (REQTRx[H:A])中的一个产生外部触
发。
ADC内核
请求控制
请求源 0
(4级队列)
CCU6
请求源 1
1)
(4/8 -通道扫描)
请求源
仲裁器
模拟部分
外部请求
注:
1) 8通道扫描适用于具有8个ADC通道的器件
4通道扫描适用于具有4个ADC通道的器件
ADC_request_handling 2_cn
图 22-5
转换请求单元
有两类请求源可用:
· 通道扫描源可发出一组连续序列的输入通道转换请求。在被使能所有通道中,该序列
从具有最高通道编号的通道开始,按照通道编号降序排列。对于被使能的扫描序列,
用户手册
ADC, V2.2
22-16
V1.1, 2010-09
XC83x
模数转换器
每个通道按照顺序依次进行转换。
一个扫描请求源连续的或按照一个规律的时间基准转换一系列输入通道。例如,如果
设置的优先级较低,可在后台任务中扫描一些输入通道,以更新那些对时间要求不严
格的信息。请求源 1 是通道扫描源。
· 队列请求源可按照任意的次序发出输入通道转换请求。该序列中的队列顺序可随意编
程。可支持通道扫描源无法实现的、特定应用需要的转换序列。而且,还支持在一个
序列中对同一个通道进行多次转换。
队列请求源连续的或根据规律的时间基准转换一系列输入通道。例如,如果设置为中
等优先级,可在发生特定事件时 (例如,与 PWM 同步),转换一些输入通道。与此
同时,具有较低优先级的请求源挂起。
请求源 0 是一个 4 级队列源。
用户手册
ADC, V2.2
22-17
V1.1, 2010-09
XC83x
模数转换器
22.6.1
通道扫描请求源处理
每个模 拟 输入 通 道 可 包 含 在 扫描 序 列 中 或 者 被 排 除在扫描序列之外 (参见寄存器
ADC_CRCR1 中的位)。编程设置的寄存器值保持不变 (当前正在进行的扫描序列不会
改变这些值)。在所有被使能进行通道扫描的通道中,从编号最高的通道开始,从高到低
依次进行转换。
发生加载事件时,转换请求参数被传送至挂起位 (见寄存器 ADC_CRCR1)。挂起转换
请求指示正在进行的扫描序列中将要转换的输入通道。由扫描请求源触发每次转换操
作,并自动清除对应的挂起位。如果扫描源触发的最后一次转换结束且所有的挂起位都
被清除,则认为当前的扫描序列的转换结束并产生一个请求源事件。
如果至少一个挂起位置位,则仅由仲裁器发出转换请求。
如果仲裁器因为更高优先级的请求而中止扫描请求源所触发的转换,对应的挂起位被自
动置位。此项措施保证不会丢失被中止的转换,而是在下一轮仲裁过程中进行处理。
触发单元根据选中的外部 (ADC 模块之外的)触发信号产生加载事件。例如,定时器单
元可发出一个与 PWM 事件同步转换的请求信号。
加载事件启动扫描序列,可由软件或通过选中的硬件触发产生加载事件。
触发输入
REQTRx_[7:0]
REQTRx
触发 &
门控单元
转换请求控制
加载事件
转换请求挂起
请求
请求源事件
请求处理
扫描请求源 x
图 22-6
用户手册
ADC, V2.2
状态
请求源
仲裁器
ADC_scan_reqsrc _cn
扫描请求源
22-18
V1.1, 2010-09
XC83x
模数转换器
扫描请求源操作
通过执行下述动作来配置扫描请求源:
· 通过编程设置 ADC_CRCR1,选择扫描序列中的输入通道
· 如果想要由硬件触发转换,通过编程设置 ADC_ETRCR 选择合适的触发输入,并编
程设置 ADC_CRMR1 来使能触发
· 通过编程设置寄存器 ADC_CRMR1 来定义加载事件操作 (挂起位处理、自动扫描模
式)
位 LDM = 0 的加载事件将被从 ADC_CRCR1 的内容复制到 ADC_CRPR1 (覆盖模
式)。该操作启动新的扫描序列并中止先前扫描序列中的任何挂起转换。
位 LDM = 1 的加载事件将 ADC_CRCR1 和 ADC_CRPR1 的内容进行或操作 (组合
模式)。该操作启动的扫描序列将包括先前的扫描序列中的挂起转换。
· 使 能 对 应 的 仲 裁 时 隙 (1) ,接 受 来 自 通 道 扫 描 源 的 转 换 请 求 (见 寄 存 器
ADC_PRAR)。
通过产生加载事件来启动通道扫描序列:
· 如果选择并使能硬件触发,在选中的输入信号上 (例如,来自定时器或输入引脚)产
生所配置的跳变。
· 通过置位 ADC_CRMR1.LDEV = 1 产生软件加载事件。
· 通过直接向 ADC_CRPR1 的挂起位写扫描序列的方式产生加载事件。序列被复制到
ADC_CRCR1 并自动产生加载事件。
在此情况下,可用一次数据写操作来定义并启动一个扫描序列。
注: 如果使能自动扫描,完成扫描序列之后,每次发生请求源事件时,自动产生加载事
件。该方式连续的重复预定义的扫描序列 (自动扫描)。
通过执行下述步骤停止或中止正在进行的扫描序列:
· 如果使能外部门控,将门控信号切换至预定义的无效电平。该方式不会修改转换挂起
位,仅阻止向仲裁器发出转换请求。
· 禁止仲裁器中的对应的仲裁时隙 (1) 。该方式不会修改转换挂起位的内容,仅阻止
仲裁器接受来自请求处理模块的转换请求。
· 通过清除位域 ENGT = 0B 来禁止通道扫描源。通过置位 ADC_CRMR1.CLRPND = 1
来清除挂起请求位。
用户手册
ADC, V2.2
22-19
V1.1, 2010-09
XC83x
模数转换器
扫描请求源事件和中断
如果扫描序列中的最后一个转换完成(所有挂起位 = 0),则发生一个扫描请求源事件。
可根据图 22-7 中的结构,由请求源事件产生请求源事件中断。如果检测到请求源事件,
则寄存器 ADC_EVINFR 中对应的指示标志被置位。通过向寄存器 ADC_EVINCR 中的对
应位写 1,可由软件清除指示标志。
每次检测到相关请求源事件时(且由 CRMRx.ENSI 使能的情况下),服务请求输出 SRx
被激活。
请求源事件和结果事件共享同一个寄存器。由存器 ADC_EVINFR 中的位来保存请求源事
件:
· 事件 1:通道扫描源 1 的请求源事件 (仲裁时隙 1 中)
请求源事件
指示标志
请求源事件
中断使能
EVINFR.
EVINF1
CRMR1.
ENSI
置位
完成
扫描序列
请求源事件
至SR0
ADC_scan_source_int_cn
图 22-7
扫描请求源的中断产生
转换请求模式寄存器中的位用来设置需要的转换模式。
ADC_CRMR1
转换请求模式寄存器 1
RMAP: 0, PAGE: 6
(CCH)
复位值:00H
7
6
5
4
3
2
1
0
0
LDEV
CLRPND
SCAN
ENSI
ENTR
0
ENGT
r
w
w
rw
rw
rw
r
rw
用户手册
ADC, V2.2
22-20
V1.1, 2010-09
XC83x
模数转换器
符号
位
类型
描述
ENGT
0
rw
使能门控功能
该位用于使能请求源的门控功能。
0B
门控线恒为 0,请求源关闭。
门控线恒为 1,请求源开启。
1B
ENTR
2
rw
使能外部触发
该位用于使能外部触发。如果使能,在外部触发输
入 REQTR 上检测到上升沿时,则发生加载事件。
0B
禁止外部触发
1B
使能外部触发
ENSI
3
rw
使能请求源中断
该位用于使能请求源中断。完成该请求源的最后一
个挂起转换时 (当 PND = 0),产生中断。
0B
禁止请求源中断
1B
使能请求源中断
SCAN
4
rw
使能自动扫描
该位用于使能自动扫描功能。如果使能,当转换
(该请求源请求的)完成且 PND = 0 时,自动产生加
载事件。
禁止自动扫描功能
0B
使能自动扫描功能
1B
CLRPND
5
w
清除挂起位
0B
无操作
1B
寄存器 CRPR1 中的位被复位
LDEV
6
w
产生加载事件
无操作
0B
1B
产生加载事件
0
7,[1:0]
r
保留
读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-21
V1.1, 2010-09
XC83x
模数转换器
转换请求控制寄存器 1 选择请求源 1 (通道扫描源)请求的、需要转换的通道。当发生
加载事件时,这些位被用来更新挂起寄存器 CRPR1。
注: 写访问寄存器 CRPR1 还更新寄存器 CRCR1 并产生加载事件。
ADC_CRCR1
转换请求控制寄存器 1
RMAP: 0, PAGE: 6
(CAH)
复位值:00H
7
6
5
4
3
2
1
0
CH7
CH6
CH5
CH4
CH3
CH2
CH1
CH0
rwh
rwh
rwh
rwh
rwh
rwh
rwh
rwh
符号
位
类型
描述
CHx
(x = 0 - 7)
x
rwh
通道位 x
每位对应一个模拟通道,通道编号 x 由该位在寄存
器中的位置定义。当发生加载事件时,转换请求挂
起寄存器中的对应位 x 将被该位覆盖。
0B
并行请求源将不请求模拟通道 x 进行转换。
1B
并行请求源将请求模拟通道 x 进行转换。
注意:位 4-7 仅适用于具有 8 个 ADC 通道的器件。
对于未实现的通道,这些位应被当作保留位:类型
为 ‘r’,读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-22
V1.1, 2010-09
XC83x
模数转换器
转换请求挂起寄存器指示请求源 1 (通道扫描源)中的哪个通道请求转换操作。发生加
载事件时,由挂起寄存器 CRCR1 中的内容更新这些位。
注: 写寄存器 CRPR1 还会更新 CRCR1 并产生加载事件。
ADC_CRPR1
转换请求挂起寄存器 1
RMAP: 0, PAGE: 6
(CBH)
复位值:00H
7
6
5
4
3
2
1
0
CHP7
CHP6
CHP5
CHP4
CHP3
CHP2
CHP1
CHP0
rwh
rwh
rwh
rwh
rwh
rwh
rwh
rwh
符号
位
类型
描述
CHPx
(x = 0 - 7)
x
rwh
通道挂起位 x
写方式:
写该位实际上指向的是寄存器 CRCR1
读方式:
每位对应一个模拟通道;通道编号 x 由该位在寄存
器中的位置定义。
仲裁器自动复位 (转换启动时)或者再次置位 (转
换被中止时)相应模拟通道。
0B
并行请求源未请求模拟通道 x 进行转换操作
1B
并行请求源请求模拟通道 x 进行转换操作
注意:位 4-7 仅适用于具有 8 个 ADC 通道的器件。
对于未实现的通道,这些位应当被当作保留位:类
型为 ‘r’,读操作返回 0 ;应写入 0。
0
[7:4]
r
保留
读操作返回 0 ;应写入 0。
注: 可从该寄存器位置读取的位通常是‘rh’类型。不能直接由写操作修改这些位。写
操作可修改 CRCR1 中的位 (这就是该寄存器类型被标志为 ‘rwh’的原因)并在
一个时钟周期之后引发加载事件。
22.6.2
队列请求源处理
队列请求源支持由任意通道组成的短转换序列 (与使能通道按照固定次序进行转换的扫
描请求源不同)。编程设置的序列保存在队列缓存中 (基于一个 FIFO 机制)。通过队列
输入给出所请求通道编号,其中队列级 0 用来定义下一个要转换的通道。
仅当一个有效的请求源被保存在队列级 0 中时,才能由仲裁器发出一个转换请求。
用户手册
ADC, V2.2
22-23
V1.1, 2010-09
XC83x
模数转换器
如果仲裁器因为一个具有更高优先级的请求而中止队列请求源所触发的转换,相应的转
换参数被自动保存到备份级中。此做法确保被中止的转换不丢失而且能参加下一轮仲裁
(在队列级 0 之前)。
触发和门控单元根据选中的外部 (ADC 模块之外的)触发产生触发事件。例如,定时器
单元可发出一个与 PWM 事件同步的转换请求。
触发事件可通过软件或选中的硬件触发产生,触发事件用于启动一个队列转换。由位
QSRx.EV 指示触发事件的出现。启动相应的转换,或向寄存器位 QMRx.CEV 写 1 都可
清除该标志。
触发输入
REQTRx_[7:0]
重填
队列输入
REQTRx
触发 &
门控单元
E
V
中间队列级
队列级0
等待
触发
请求源事件
请求
请求处理
中止
状态
请求源
仲裁器
重启
备份级
顺序请求源
图 22-8
ADC_seq_reqsrc_cn
队列请求源
由队列输入寄存器 (ADC_QINR0)定义转换请求序列。 每个有效请求源选择要转换的
通道并可使能外部触发,中断产生和自动重填(即转换之后该请求源仍保持在队列中)。
这些请求源保存在队列缓存级中。
队列级 0 (ADC_Q0R0)的内容用来选择下一个要转换的通道。当请求的转换启动时,
该队列级的内容失效并被复制到备份级中。之后可处理队列中的下一个请求(如可用)。
注: 无法直接修改队列级的内容,仅能通过写队列输入或清空队列的方式间接修改队
列级的内容。
如果所有队列请求源都选择自动重填,则不需要编程设置,即可重复转换预定的转
换序列。
用户手册
ADC, V2.2
22-24
V1.1, 2010-09
XC83x
模数转换器
队列请求源的特性
XC83x 的 ADC 内核提供具有缓存能力的队列请求源:
· 队列请求源 0 提供 4 级缓存且可处理多达 4 个输入通道请求源。支持特定应用的短转
换序列,尤其适用于要求多次转换同一个通道的、对时间要求苛刻的序列。
用户手册
ADC, V2.2
22-25
V1.1, 2010-09
XC83x
模数转换器
队列请求源的操作
执行下述动作来配置队列请求源:
· 向队列输入寄存器 ADC_QINR0 写请求源来定义序列。因为如果使能重填特性,则不
允许软件写 QINRx,因此必须在使能队列请求源之前初始化整个序列。
· 如果需要硬件触发,通过编程设置 ADC_ETRCR 来选择合适的触发输入。
编程设置寄存器 ADC_QMR0 的位域 ENGT 来使能触发
· 使 能 对 应 的 仲 裁 时 隙 (0) ,接 受 来 自 队 列 请 求 源 的 转 换 请 求 (见 寄 存 器
ADC_PRAR)。
通过产生触发事件来启动队列序列:
· 如果选择并使能硬件触发,在选中的输入信号(如来自定时器或输入引脚)上产生配
置的跳变。
· 通过设置 QMRx.TREV = 1 产生软件触发事件
· 向空队列写新的队列请求。这使得一个(新的)有效队列请求被前送至队列级 0 并启
动转换请求 (如果由 QMRx.ENGT 使能且无需等待外部触发)。
注: 如果重填机制被激活,处理过的请求源被自动重载到队列中。通过此方式连续的重
复对应的序列 (自动扫描)。
在此情况下,当队列源正在运行时,不要写队列输入。
向整个被重填的队列进行写操作时,该写操作被忽略。
通过执行下述动作来停止或中止队列序列:
· 禁止仲裁器中的对应仲裁时隙 (0) 。此动作不修改队列请求源,但是阻止仲裁器接
受来自请求处理模块的请求。
· 通过清除位域 ENGT = 0B 来禁止队列请求源:
– 通过置位 QMRx.CLRV = 1 的方式,使下一个挂起的队列请求失效。
如果备份级中包含一个有效请求源,需要使该请求源失效,否则应该使队列级 0 失
效。
– 通过置位 QMRx.FLUSH = 1 删去队列中的所有请求源。
用户手册
ADC, V2.2
22-26
V1.1, 2010-09
XC83x
模数转换器
队列请求源事件和中断
当转换完成时,则发生队列源的请求源事件。可根据图 22-9 的结构,由请求源事件产生
请求源事件中断。如果检测到请求源事件,则置位 ADC_EVINFR 寄存器中的相应的指示
位。向寄存器 ADC_EVINCR 的对应位写 1 的方式可软件清除中断指示标志。
正常序列转换的情况下中断使能位来自队列级 0 ;被中止之后,重复转换的情况下中断
使能位来自备份级。
每次检测到相关的请求源事件时(如果分别由 Q0Rx.ENSI,或 QBURx.ENSI 使能),服
务请求输出线 SRx 被激活。
请求源事件和结果事件共享同一个寄存器。请求源事件保存在寄存器 ADC_EVINFR 中。
· 事件 0:队列源 0 的请求源事件 (仲裁时隙 0 中的)
请求源事件
指示标志
请求源事件
中断使能
EVINFR.
EVINF0
Q0R0.
ENSI
置位
请求源触发的
转换完成
请求源事件
0
至SR0
1
QBUR0.
ENSI
QBUR0.
V
ADC_seq_source_int_cn
图 22-9
用户手册
ADC, V2.2
队列请求源的中断产生
22-27
V1.1, 2010-09
XC83x
模数转换器
队列模式寄存器用于配置队列请求源的工作模式。
ADC_QMR0
队列模式寄存器
RMAP: 0, PAGE: 6
(CDH)
复位值:00H
7
6
5
4
3
2
1
0
CEV
TREV
FLUSH
CLRV
0
ENTR
0
ENGT
w
w
w
w
r
rw
r
rw
符号
位
类型
描述
ENGT
0
rw
门控使能
该位用于使能请求源的门控功能。
0B
门控线一直为 0,该请求源被关闭。
门控线一直为 1,该请求源被开启。
1B
ENTR
2
rw
使能外部触发
该位用于使能外部触发功能。如果被使能,当寄存
器 Q0R0 或 QBUR0 中至少一个 V 位置位时,且如
果在外部触发输入 REQTR 上检测到上升沿,则位
EV 被置位。
0B
禁止外部触发
1B
使能外部触发
CLRV
4
w
清除 V 位
0B
无操作
1B
寄存器 Q0R0 或 QBUR0 中的 V 位被复位。如
果 QBUR0.V = 1,则 QBUR0.V 被复位;如果
QBUR0.V = 0,则 Q0R0.V 被复位。
FLUSH
5
w
清空队列
0B
无操作
队列寄存器中的所有位 V 和位 EV 被复位。队
1B
列中不再包含有效请求源。
TREV
6
w
触发事件
0B
无操作
1B
软件产生触发事件。如果请求源等待触发事
件,则启动转换请求。
CEV
7
w
清除事件位
0B
无操作
1B
位 EV 被清除
用户手册
ADC, V2.2
22-28
V1.1, 2010-09
XC83x
模数转换器
符号
位
类型
描述
0
1, 3
r
保留
读操作返回 0 ;应写入 0。
注: 通过 QMR.CLRV 或 QMR.FLUSH 软件修改队列内容之前, 必须完成该队列相关
的所有硬件动作。因此,必须禁止仲裁时隙且软件必须等待至少两个仲裁周期(以
确保该请求源不再是仲裁获胜者)。然后,要检查位 ADC_GLOBCTR.BUSY 以确
保该请求源触发的转换不再运行。然后软件可读取 QBURx 和 Q0Rx 并可以开始修
改队列内容。
用户手册
ADC, V2.2
22-29
V1.1, 2010-09
XC83x
模数转换器
队列状态寄存器指示队列请求源的当前状态。填充级别和空队列信息请参考队列的中间
级(如果有的话)和队列寄存器 0。被中止的转换保存在备份级中,不由这些位指示(参
见 QBURx.V)。
ADC_QSR0
队列状态寄存器
RMAP: 0, PAGE: 6
7
6
(CEH)
复位值:20H
5
4
3
2
1
0
0
EMPTY
EV
0
FILL
r
rh
rh
r
rh
符号
位
类型
描述
FILL
[1:0]
rh
填充级别
该位指示在顺序请求源队列中有多少个有效请求源。
每次有新请求写入 QINR0 中,该位域加 1 ;每完成
一次转换,该位域减 1。如果填充级别达到最大值,
则忽略新的转换请求。如果位 EMPTY = 1,表示队
列中没有有效的请求源。
00B 如果位 EMPTY = 0,表示队列中有 1 个有效
请求源
01B 如果位 EMPTY = 0,表示队列中有 2 个有效
请求源
10B 如果位 EMPTY = 0,表示队列中有 3 个有效
请求源
11B 如果位 EMPTY = 0,表示队列中有 4 个有效
请求源
EV
4
rh
事件检测
当 V = 1 时,该位指示检测到有事件发生。一旦该位
被置位,转换启动后该位自动复位。
0B
还未检测到事件
1B
已经检测到事件
EMPTY
5
rh
队列为空
该位指示顺序请求源是否包含有效请求源。如果队
列已满 (EMPTY = 0),则新的请求源被忽略。
0B
队列中已有 “FILL+1”个有效请求源
1B
队列为空,队列中没有有效的请求源。
0
[3:2],
[7:6]
r
保留
读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-30
V1.1, 2010-09
XC83x
模数转换器
队列输入寄存器是队列请求源转换请求的入口寄存器。
ADC_QINR0
队列输入寄存器 0
RMAP: 0, PAGE: 6
(D2H)
4
复位值:00H
7
6
5
3
2
1
0
EXTR
ENSI
RF
0
REQCHNR
w
w
w
r
w
符号
位
类型
描述
REQCHNR
[2:0]
w
请求通道编号
该位域用来定义所请求的通道编号。
注意:位 2 仅适用于具有 8 个 ADC 通道的器件。对
于未实现的通道,这些位应被当作保留位:类型为
‘r’,读操作返回 0 ;应写入 0。
RF
5
w
重填
该位定义重填功能。
ENSI
6
w
使能请求源中断
该位定义请求源中断功能。
EXTR
7
w
外部触发
该位定义外部触发功能。
0
[4:3]
r
保留
读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-31
V1.1, 2010-09
XC83x
模数转换器
队列寄存器 0 用来监控挂起请求的状态 (队列级别 0)。
ADC_Q0R0
队列 0 寄存器 0
RMAP: 0, PAGE: 6
(CFH)
复位值:00H
7
6
5
4
3
2
1
0
EXTR
ENSI
RF
V
0
REQCHNR
rh
rh
rh
rh
r
rh
符号
位
类型
描述
REQCHNR
[2:0]
rh
请求通道编号
该位域指示将要或当前请求转换的通道编号。
注意:位 2 仅适用于具有 8 个 ADC 通道的器件。对
于未实现的通道,这些位应被当作保留位:类型为
‘r’,读操作返回 0 ;应写入 0。
V
4
rh
请求通道编号有效
该位指示 REQCHNR、 RF、 ENSI 和 EXTR 中的数
据是否有效。当有效请求源写入到队列输入寄存器
QINR0 中 (或者由中间队列寄存器更新 QINR0)
时,位 V 被置位。
数据无效
0B
1B
数据有效
RF
5
rh
重填
该位指示当挂起请求被执行后 (转换启动)是被丢
弃还是被自动重填到请求队列的顶端。
0B
转换启动后丢弃请求
转换启动后将请求重填到队列中
1B
ENSI
6
rh
请求源中断使能
该位指示转换结束后是否产生请求源中断。若转换
结束且 ENSI = 1,则中断触发被激活。
0B
禁止产生请求源中断
1B
使能产生请求源中断
EXTR
7
rh
外部触发
该位定义转换请求是否和外部触发事件有关。事件
标志 (位 EV)指示是否已发生外部事件并可请求转
换。
0B
位 EV 不用来启动转换请求
1B
位 EV 用来启动转换请求
用户手册
ADC, V2.2
22-32
V1.1, 2010-09
XC83x
模数转换器
符号
位
类型
描述
0
3
r
保留
读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-33
V1.1, 2010-09
XC83x
模数转换器
队列备份寄存器用来监控中止的队列请求的状态。
ADC_QBUR0
队列备份寄存器 0
RMAP: 0, PAGE: 6
(D2H)
复位值:00H
7
6
5
4
3
2
1
0
EXTR
ENSI
RF
V
0
REQCHNR
rh
rh
rh
rh
r
rh
符号
位
类型
描述
REQCHNR
[2:0]
rh
请求通道编号
开始执行由 Q0R0 请求的转换时,由位域
Q0R0.REQCHNR 更新该位域。
注意:位 2 仅适用于具有 8 个 ADC 通道的器件。对
于未实现的通道,该位应被当作保留位:类型为
‘r’,读操作返回 0 ;应写入 0。
V
4
rh
请求通道编号有效
该位指示 REQCHNR, RF, ENSI 和 EXTR 中的数
据是否有效。如果正在运行的转换被中止,则位 V
置位。当转换启动时,该位被复位。
0B 备份寄存器中不包含有效数据,因为该数据所
描述的转换操作未被中止。
1B 数据有效。在处理 Q0R0 请求的转换之前,先
请求执行被中止的转换。
RF
5
rh
重填
开始执行由 Q0R0 请求的转换时,该位由位
Q0R0.RF 更新。
ENSI
6
rh
使能请求源中断
开始执行由 Q0R0 请求的转换时,该位由位
Q0R0.ENSI 更新。
EXTR
7
rh
外部触发
开始执行由 Q0R0 请求的转换时,该位由位
Q0R0.EXTR 更新。
0
3
r
保留
读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-34
V1.1, 2010-09
XC83x
模数转换器
注: 寄存器 QBURx 与寄存器 QINRx 共用一个地址。
读操作返回 QBURx 寄存器中的状态位;写操作的目标是寄存器 QINRx 中的控制
位。
22.6.3
硬件触发选择
可由软件和硬件信号激活请求源。硬件触发可为来自多个外设模块的信号或端口输入。
外部触发控制寄存器中的位用来选择外部触发输入信号源。
ADC_ETRCR
外部触发控制寄存器
RMAP: 0, PAGE: 4
7
6
(D3H)
5
4
复位值:00H
3
2
1
0
ETRSEL1
ETRSEL0
r
rw
rw
符号
位
类型
描述
ETRSEL0,
ETRSEL1
[2:0],
[5:3]
rw
请求源 x 的外部触发选择
该位域用来选择外部触发输入信号。
000B 选择触发输入 REQTRxA
001B 选择触发输入 REQTRxB
010B 选择触发输入 REQTRxC
011B 选择触发输入 REQTRxD
100B 选择触发输入 REQTRxE
101B 选择触发输入 REQTRxF
110B 选择触发输入 REQTRxG
111B 选择触发输入 REQTRxH
0
[7:6]
r
保留
读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
0
22-35
V1.1, 2010-09
XC83x
模数转换器
22.7
请求源仲裁
请求源仲裁器规律的依次查询请求源,寻找挂起的请求源。在仲裁周期内给每个请求源
分配特定的时隙,称之为仲裁时隙。
根据应用的需要,在具有来自多个源的并行请求源的情况下,可通过寄存器 ADC_PRAR
由用户配置每个请求源的优先级,从而仲裁器可选择下一个要转换的通道。
被禁止的或未使用的仲裁时隙被认为是空的,不参与仲裁。复位之后,所有时隙都被禁
止,要参与仲裁过程,则必须使能这些时隙 (通过寄存器 ADC_PRAR)。
图 22-10 给出仲裁序列的总结。仲裁周期由每个可用请求源所对应的仲裁时隙组成。始
终在最后一个时隙评估同步请求源,且同步请求源比所有其它请求源优先级都要高一
些。为了调整与其它产品的时序 (XC83x 不需用此操作),可在仲裁周期中插入附加的
时隙。每个仲裁周期结束时,仲裁器已经确定了具有最高优先级的转换请求。
如果在仲裁周期内启动一次转换,该仲裁周期将不会给出仲裁获胜者。
在 XC83x 中,下述请求源可用:
· 仲裁时隙 0:4 级顺序源,任意次序的 4 级序列
· 仲裁时隙 1:4/8 通道扫描源,预先定义次序的序列
· 最有一个仲裁时隙:同步源,可和来自另一个 ADC 内核的转换请求同步 (始终以最
高优先级处理同步的从 ADC 内核中的请求)
仲裁周期
决断出仲
裁胜出者
仲裁时隙 0
仲裁时隙 1
查询请求源 0 查询请求源 1
仲裁时隙 2
仲裁时隙 3
未使用
检查同步的
启动请求
可启动转换
ADC_arbiter _round _cn
图 22-10
用户手册
ADC, V2.2
仲裁周期
22-36
V1.1, 2010-09
XC83x
模数转换器
22.7.1
仲裁器时序
仲裁器的时序 (即仲裁周期)由一轮仲裁中仲裁时隙个数以及每个仲裁时隙的持续时间
共同决定。
仲裁周期由 4 个仲裁时隙组成。
仲裁时隙的持续时间可编程设定 tSlot = fADC。
从而仲裁周期的持续时间为 tARB = N × tSlot (N = 仲裁时隙个数)。
仲裁周期引入一个时序最小单元的概念,用来检测输入的转换请求信号以及启动相关转
换的最早时间点。该时序最小单元可引入一个最大为一个仲裁周期的抖动。通过使一轮
仲裁周期最小的方式可减小这个抖动。
为了在转换请求的触发事件 (如由定时器单元或外部事件触发的)和相关转换的启动操
作之间,实现可重复产生的反应时间(没有抖动的固定延迟),主要有下述两种选择。对
两种选择来讲,在触发事件发生之前,转换器必须空闲且一定不能有挂起的其它转换请
求,空闲状态的持续时间至少是一个仲裁周期。
· 如果位 ADC_PRAR.ARBM = 0,仲裁器持续运行。
转换触发的产生必须和仲裁器的时序同步,输入的触发应当精确的为仲裁器最小时间
单元的 n 倍 (n = 1, 2, 3,...)。为了具有灵活性,仲裁时隙的持续时间可编程设置为
时钟周期 fADC 的几倍。
· 如果位 ADC_PRAR.ARBM = 1,当没有挂起的转换请求时,一个仲裁周期之后,仲
裁器停止。如果至少有一个使能的请求源则再次启动仲裁器。转换请求的触发不需要
与仲裁器的时序同步。
用户手册
ADC, V2.2
22-37
V1.1, 2010-09
XC83x
模数转换器
22.7.2
请求源优先级和转换启动模式
每个请求源的优先级都可配置,因此仲裁器可决断来自不同请求源的并行请求。选择具
有最高优先级的请求源进行转换。这些可配置的优先级 (见寄存器 ADC_PRAR)可适
应给定应用的需要。
转换启动模式决定如何处理在仲裁中获胜的转换请求。
优先级和仲裁寄存器用来定义请求源的优先级,每个请求源的启动模式以及使能 / 禁止仲
裁时隙以决定是否接受某转换请求。
注: 只有当请求源被禁止,且该源请求的正在进行的转换完成之后,才能改变其优先级
和转换启动模式设置。
ADC_PRAR
优先级和仲裁寄存器
RMAP: 0, PAGE: 0
(CCH)
复位值:00H
7
6
5
4
3
2
1
0
ASEN1
ASEN0
0
ARBM
CSM1
PRIO1
CSM0
PRIO0
rw
rw
r
rw
rw
rw
rw
rw
符号
位
类型
描述
PRIO0
0
rw
请求源 0 的优先级
该位定义顺序请求源 0 的优先级。
0B
低优先级
高优先级
1B
CSM0
1
rw
请求源 0 的转换启动模式
该位定义顺序请求源 0 的转换启动模式。
0B
选择等待 - 启动模式
1B
选择取消 - 插入 - 重复模式
PRIO1
2
rw
请求源 1 的优先级
该位定义并行请求源 1 的优先级。
0B
低优先级
1B
高优先级
CSM1
3
rw
请求源 1 的转换启动模式
该位定义并行请求源 1 的转换启动模式。
选择等待 - 启动模式
0B
1B
选择取消 - 插入 - 重复模式
用户手册
ADC, V2.2
22-38
V1.1, 2010-09
XC83x
模数转换器
符号
位
类型
描述
ARBM
4
rw
仲裁模式
该位决定选择哪种仲裁模式。
0B
持续仲裁 (缺省设置)
由挂起的转换请求启动仲裁
1B
ASEN0,
ASEN1
6,
7
rw
使能仲裁时隙 x
每位使能一个仲裁时隙。 ASEN0 使能仲裁时隙 0 ;
ASEN1 使能仲裁时隙 1。
如果禁止仲裁时隙,在仲裁中忽略与该时隙相连的
请求源的挂起转换请求。
0B
禁止对应的仲裁时隙
使能对应的仲裁时隙
1B
0
5
r
保留
读操作返回 0 ;应写入 0。
注: 如果仲裁器不应持续运行 (ARBM = 1),与仲裁时隙 x 相连的请求源一定不能有
效。因此在禁止某仲裁时隙之前,应当清除相关请求源的转换请求。
用户手册
ADC, V2.2
22-39
V1.1, 2010-09
XC83x
模数转换器
转换启动模式
仲裁器选出下一个要转换的请求之后,对该通道的处理取决于转换器的当前状态:
· 转换器当前空闲:立即启动在仲裁中获胜的转换请求
· 当前转换的优先级相同或更高:完成当前转换,随后启动在仲裁中获胜的转换请求
· 当前转换的优先级较低:接下来的动作由用户配置:
– 等待 - 启动模式:完成当前转换,然后启动在仲裁中获胜的转换请求。该模式提供
的吞吐量最大,但是对于高优先级的转换来讲,会产生一个延迟 / 抖动。例子,见
图 22-11:
转换 A 在 (t1)时刻请求而在 (t2)时刻启动。转换 B 在 (t3)时刻请求,但是
只有在完成转换 A 之后才能在 (t4)时刻启动。
– 取消 - 插入 - 重复模式:当前转换被中止,中止之后(1 … 3 fADCI 个时钟周期),启
动在仲裁中获胜的转换请求。
从对应的请求源中恢复被中止的转换请求并在下一个仲裁周期中参与仲裁。该模式
对较高优先级的转换来讲带来的抖动 / 延迟最小,但是减少了整个的吞吐量。
例子见图 22-11:
转换 A 在 (t6)时刻请求,在 (t7)时刻启动。转换 B 在 (t8)时刻请求,而在
(t9)时刻启动,转换 A 被中止但是再次被请求。当转换 B 完成时 (t10),转换 A
被重新启动。
例外情况:等待读取模式有效时,如果两个请求使用同一个结果寄存器,(见章节
22.10)则当前转换不能被中止。
t1
t3
t6
t8
请求通道 B
请求通道 A
A
转换
t2
B
t4
A
t5
等待-启动模式
t7
B
t9
A
t10
t11
取消-插入-重复模式
ADC_conv _starts _cn
图 22-11
转换启动模式
在寄存器 ADC_PRAR 中为每个请求源单独配置转换启动模式,并且该启动模式适用于
该源请求的所有通道。在该例中,通道 A 由一个优先级较低的请求源发出,而通道 B 的
转换由一个优先级较高的请求源发出。
用户手册
ADC, V2.2
22-40
V1.1, 2010-09
XC83x
模数转换器
22.8
模拟输入通道配置
每个模拟输入通道都有数个可配置的参数,用来控制该通道的转换操作。某个通道赢得
仲裁之后,其配置参数则适用于转换器。通道控制寄存器(页 22-44 上的 CHCTRx )定
义下述参数:
· 转换参数 :输入级定义采样时间和数据宽度。所有通道使用相同的输入级。
· 参考选择:三类内部参考可选,范围从内部的 1.2V 和 Vddp 3.3/5V。参考选择决定
ADC 的转换模式,即单端模式或者差分模式,见章节 22.8.1。
请注意低参考电压得到的最小电压间隔较小,后果是 TUE 因为噪声的影响而增加。
· 结果目标:转换结果可被保存到 4 个结果寄存器之一。
· 通道事件处理:通道事件可用来限制结果落在规定区域之内或之外 (极限检查)。
除了一般的通道控制,ADC内核还支持一种特殊机制(被称为假名特性,见章节 22.8.4)
将转换请求重新定向到另一个通道编号。
22.8.1
参考选择
ADC 的转换结果始终参考一个参考电压。如果模拟输入电压等于参考电压,则得到最大
的数字结果值 (满量程) 。为了用满量程的数字值代表多个测量范围,用户可在下面三
种转换模式中进行选择:
· 单端测量, ADC 参考内部连接至 VDDP 和 VSSP,见图 22-12。
· 类差分测量,ADC 参考连接至内部 1.2V 参考电压和来自 CH0 的参考地,见图 22-13。
· 单端测量, ADC 参考连接至内部 1.2V 参考电压和 VSSP,见图 22-14。
单端 ADC 转换的情况下,参考连接至 Vddp 和 Vssp 电压, ADC 参考电压内部连接至
Vddp 和 Vssp 电压,见图 22-12。
Vddp
ADC内核
va_ref
va_gnd
Vssp
AD
转换器
请求控制
转换控制
AIN CH0
AIN CH1
...
结果处理
AIN CH3/7
中断产生
ADC_single_ended_measurement2_cn
图 22-12
用户手册
ADC, V2.2
参考连接至 Vddp 和 Vssp 的单端测量
22-41
V1.1, 2010-09
XC83x
模数转换器
类差分 ADC 转换,参考连接至内部 1.2V 参考电压和来自 CH0 的参考地。CH0 不能用于
ADC 测量。CH0 用作 ADC 的参考地,可从外部连接以增加测量精度,见 图 22-13。CH0
的数字特性可被其它通道用作假名功能,见 章节 22.8.4。需要注意:使用该模式时,两
次转换之前需要建立时间,具体参数请参见数据手册。
V1.2VREF
ADC内核
va_altref
va_altgnd
V1.2VGND
AD
转换器
请求控制
转换控制
AIN CH0
AIN CH1
...
结果处理
AIN CH3/7
中断产生
ADC_differential_like_1.2Vref_ch0gnd_measurement2_cn
图 22-13
使用内部 1.2V 参考电压, CH0 参考地的类差分测量
单端 ADC 转换使用 1.2V 参考电压和 Vssp 进行 ADC 测量,见图 22-14。
用户手册
ADC, V2.2
22-42
V1.1, 2010-09
XC83x
模数转换器
V1.2VREF
ADC内核
va_altref
va_altgnd
Vssp
AD
转换器
请求控制
转换控制
AIN CH0
AIN CH1
...
结果处理
AIN CH3/7
中断产生
ADC_single_ended_1.2Vref_vssp_measurement2_cn.vsd
图 22-14
使用内部 1.2V 参考电压和 Vssp 的单端测量模式
通过编程设置 ADC_CHCTRx.REFSEL 来为每个输入通道选择参考。需要注意:使用该
模式时,两次转换之前需要建立时间,具体参数请参见数据手册。
用户手册
ADC, V2.2
22-43
V1.1, 2010-09
XC83x
模数转换器
22.8.2
通道参数
可由对应的通道控制寄存器来配置每个模拟输入通道。采样时间和结果宽度通过输入级
进行选择。
通道控制寄存器为每个输入通道选择控制参数,还可用来选择目标结果寄存器以及内部
参考电压,控制极限检查机制以及边界标志。
ADC_CHCTRx (x = 0 - 2)
通道 x 控制寄存器
RMAP: 0, PAGE: 1
7
6
(CAH + x * 1)
5
4
复位值:00H
3
2
1
0
BFEN
LCC
REFSEL
RESRSEL
rw
rw
rw
rw
符号
位
类型
描述
RESRSEL
[1:0]
rw
结果寄存器选择
该位域定义该通道的转换结果存放在哪个结果寄存
器中。
00B 选择结果寄存器 0
01B 选择结果寄存器 1
10B 选择结果寄存器 2
11B 选择结果寄存器 3
REFSEL
[3:2]
rw
参考输入选择
该位域定义该通道使用的参考源
00B 使用参考 VDDP 和 VSSP 进行模数转换 (见图
22-12)
01B 使用内部 1.2V 和 CH0 参考地进行模数转换
(见图 22-13)1)
10B 使用内部 1.2V 和 Vssp 进行模数转换 (见图
22-14)1)
11B 保留;不要使用该组合。
用户手册
ADC, V2.2
22-44
V1.1, 2010-09
XC83x
模数转换器
符号
位
类型
描述
LCC
[6:4]
rw
极限检查控制
该位域定义极限检查机制的行为,见章节 22.8.3。
000B 不进行极限检查
001B 结果落在区域 I 之外
010B 结果落在区域 II 之外
011B 结果落在区域 III 之外
100B 始终进行极限检查 (不考虑边界)
101B 结果落在区域 I 之内
110B 结果落在区域 II 之内
111B 结果落在区域 III 之内
BFEN
7
rw
使能边界标志
该位用作边界标志 ADC_BF<2:0> 信号的门控控制
0B
禁止对应通道的边界标志信号
使能对应通道的边界标志信号
1B
1) 使用该模式时,两次转换之间需要建立时间。具体参数请参见数据手册。
ADC_CHCTRx (x = 3 - 5)
通道 x 控制寄存器
ADC_CHCTRx (x = 6 - 7)
通道 x 控制寄存器
RMAP: 0, PAGE: 1
7
6
5
(CAH + x * 1)
复位值:00H
(CCH + x * 1)
复位值:00H
4
3
2
1
0
0
LCC
REFSEL
RESRSEL
r
rw
rw
rw
符号
位
类型
描述
RESRSEL
[1:0]
rw
结果寄存器选择
该位域定义该通道的转换结果存放在哪个结果寄存
器中。
00B 选择结果寄存器 0
01B 选择结果寄存器 1
10B 选择结果寄存器 2
11B 选择结果寄存器 3
用户手册
ADC, V2.2
22-45
V1.1, 2010-09
XC83x
模数转换器
符号
位
类型
描述
REFSEL
[3:2]
rw
参考输入选择
该位域定义该通道使用的参考源
00B 使用参考 VDDP 和 VSSP 进行模数转换 (见图
22-12)
01B 使用内部 1.2V 和 CH0 参考地进行模数转换
(见图 22-13)1)
10B 使用内部 1.2V 和 Vssp 进行模数转换 (见图
22-14)1)
11B 保留;不要使用该组合。
LCC
[6:4]
rw
极限检查控制
该位域定义极限检查机制的行为,见章节 22.8.3。
000B 不进行极限检查
001B 结果落在区域 I 之外
010B 结果落在区域 II 之外
011B 结果落在区域 III 之外
100B 始终进行极限检查 (不考虑边界)
101B 结果落在区域 I 之内
110B 结果落在区域 II 之内
111B 结果落在区域 III 之内
0
7
r
保留
读操作返回 0 ;应写入 0。
1) 使用该模式时,两次转换之间需要建立时间。具体参数请参见数据手册。
注: ADC_CHCTR4 - 7 仅适用于具有 8 个 ADC 通道的器件。对于未实现的通道,这些
位被当作保留位:类型为 ‘r’,读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-46
V1.1, 2010-09
XC83x
模数转换器
输入级用来定义采样阶段的长度以及转换精度。
缺省设置选择最小的采样阶段长度 2 个 fADCI 周期。
输入级寄存器用来为每个输入级选择采样时间和精度。
ADC_INPCR0
输入级 0 寄存器
RMAP: 0, PAGE: 0
7
(CEH)
6
5
4
复位值:00H
3
2
1
0
STC
r
rw
0
符号
位
类型
描述
STC
[3:0]
rw
采样时间控制
该位域定义采样时间的附加长度,以 fADCI 时钟周期
的倍数为单位
编程设置的采样时间被延长 2 个模拟时钟周期
0
[7:4]
r
保留
读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-47
V1.1, 2010-09
XC83x
模数转换器
22.8.3
极限检查
极限检查机制自动用两个边界值 (边界 A 和边界 B)与每个转换结果进行比较。对每个
通道来讲,用户从一组可编程设置的值(ADC_LCBR0 和 ADC_LCBR1)中间选择边界
值。
根据两次比较的结果产生通道中断。通过相关通道控制寄存器的位域 LCC 选择产生中断
的条件。
边界
A
GLOBCTR.
CLCIEN
B
通道编号
模拟部分
仲裁器
通道
事件
极限检查
转换完成
转换结果
ADC8_channel _events _overv_cn
图 22-15
通道事件产生
两个可选择的边界值将转换结果的范围划分成三个区域:
· 区域 I:转换结果低于或等于两个边界
· 区域 II:转换结果高于一个边界并低于 / 等于另一个边界
· 区域 III:转换结果高于两个边界
n
2 -1
n位精度的
转换结果范围
区域 III
产生通道事件的转换结果
边界 B
区域 II
区域 I
不产生通道事件
的转换结果
边界 A
产生通道事件的转换结果
0
ADC_limit_check _cn
图 22-16
极限检查
极限检查示例显示仅当转换结果落在区域 II (LCC = 010B)所定义的正常工作范围之外
时,才产生通道事件。
用户手册
ADC, V2.2
22-48
V1.1, 2010-09
XC83x
模数转换器
如果仅需要两个区域,则边界 A 和边界 B 使用相同的边界寄存器。在此情况下,区域 II
为空,仅有两个结果范围可用。此情况下应避免 LCC = x10B 的设置。
极限检查的典型应用是监控任务 (温度、压力、电流等等) ,此情况下结果的真实值不
如其所在范围重要。只要测量值在规定的有效范围内,则不需要任何 CPU 动作。只有当
转换结果落在有效范围之外,才应当产生中断来指示该紧急情况 (温度过高,压力不足
等等)。
如果想要监控的模拟输入信号是作为自动扫描序列的一部分而由一个规律的时间基准来
自动触发的情况下,CPU 负荷被减至最小。从而在正常情况下,带来的 CPU 负荷为 0。
注: 过流保护的情况下,可使用通道事件来禁止 PWM 产生,以减少电流 (在 XC83x
中, ADC 模块的中断输出线与 CCU6x 单元的对应输入相连,从而在没有 CPU 干
预的情况下,允许迅速响应中断情况。
边界标志控制
可通过配置极限检查机制来自动控制边界标志。当转换结果位于区域 III 时,可置位边界
标志;当转换结果位于区域 I 时,清除边界标志。
区域III
边界1
边界0
区域II
区域I
标志BFx
MC_ADC_BFLAG_CN
图 22-17
边界标志控制
边界值的不同定义出边界标志的置位 / 清除的滞后现象。
在用来监控线性霍尔元件的三个通道上使用该特性可产生馈送至 CCU6x 单元的三个霍尔
位置输入的信号。
用户手册
ADC, V2.2
22-49
V1.1, 2010-09
XC83x
模数转换器
极限检查边界寄存器用来定义极限检查单元的比较值 (边界值)。
ADC_LCBR0
极限检查边界寄存器 0
ADC_LCBR1
极限检查寄存器 1
RMAP: 0, PAGE: 0
7
6
5
(CDH)
复位值:70H
(CFH)
复位值:B0H
4
3
2
1
0
BOUNDARY
rw
符号
位
类型
描述
BOUNDARY
[7:0]
rw
极限检查的边界值
使用该值和实际转换结果进行比较。
22.8.4
假名特性
假名特性将来自通道 CH0 的请求重新定向到另一个通道。这意味着将使用另一个通道的
参数而不是 CH0 的参数转换来自 CH0 的通道输入。重新定向特性可用作下列场合:
· 同一个信号可被测量两次,两个结果(原始的和重新定向的)可分别保存在结果寄存
器中。从而不依赖于 CPU 的中断延迟,该特性确保两次转换依次快速进行而且避免
了数据丢失。
传感器信号被连接至一个输入 (而不是两个)。该特性可在低成本应用中节约输入引
脚,并减少误差计算中需要考虑的输入漏电流。
· 即使模拟输入 CH0 被用作备用参考地 (见图 22-18),仍可使用 CH0 的内部触发和
数据处理特性。
· 两次转换 (对同一信号)的通道设置可使用不同的边界值、中断等等。
· 如果已经建立了队列请求源,来自通道 CH0 的转换请求可轻松重新定向至其它输入
通道而无需清空整个队列。
图 22-18 给出上述特性的示例,传感器信号被连接至一个输入通道 (CHx),但是触发
两次转换 (通道 CHx 和 CH0)。假名特性将转换请求从 CH0 重新定向至 CHx,但是还
使用 CH0 的设置进行转换。尽管测量同一个模拟输入 (CHx),两次转换结果可被保存
并从结果寄存器中恢复出来:RESRx (触发的 CHx 转换)和 RESR0 (触发的 CH0 转
换)。另外,还可使能或禁止并选择不同的中断或极限边界。
用户手册
ADC, V2.2
22-50
V1.1, 2010-09
XC83x
模数转换器
传感器
CHx
RESRx
ADC
参考
CH0
PWM
定时器
RESRy
触发 CH0
触发 CHx
ADC_alias_cn
图 22-18
假名特性
在典型的低成本 AC 驱动应用中,仅使用一个公共电流传感器来确定相电流。根据使用的
PWM 序列,测量值具有不同的意义且必须精确定位采样点在 PWM 周期中的位置。
用户手册
ADC, V2.2
22-51
V1.1, 2010-09
XC83x
模数转换器
假名寄存器指定代替 CH0 的通道编号,即 CH0 被请求时,实际上将使用另一个通道。
编程设置的假名通道编号控制模拟输入复用器 (ADC 的)。原始通道编号控制所有其它
内部动作并同步转换请求。
ADC_ALR0
假名寄存器 0
RMAP: 0, PAGE: 4
7
6
(CFH)
5
4
复位值:00H
3
2
1
0
ALIAS0
r
rw
0
符号
位
类型
描述
ALIAS0
[2:0]
rw
CH0 转换请求的假名通道编号
该位域指示用来代替 CH0 的通道编号。并且使用通
道 CH0 的设置完成转换。该位域的缺省设置为
CH0。
注意:位 2 仅适用于具有 8 个 ADC 通道的器件。对
于未实现的通道,该位应被当作保留位:类型为
‘r’,读操作返回 0 ;应写入 0。
0
用户手册
ADC, V2.2
[7:3]
r
保留
读操作返回 0 ;应写入 0。
22-52
V1.1, 2010-09
XC83x
模数转换器
22.8.5
超出范围比较器
每个 ADC 通道都内嵌超出范围比较器机制,用来检测高于或低于 Vddp 的电压。使用超
出范围比较器之前,应当通过置位 ADC_ENORC.ENORCx 来使能,并通过设置位
ADC_CNF.CNFx 来决定检测电压是高于或低于 Vddp (见图 22-19)。
CNF.
CNFx
AIN CHx
ENORC.
ENORCx
LORE.
LOREx
超出范围比较器
SR1
ORCEVENT0-4
ADC_out_of_range _comparator _cn
图 22-19
超出范围比较器
当发生电压超出范围事件时,事件被锁存到 ADC_LORE.LOREx 中,通过 ADC_SR1 置
位中断请求并通过与 ORCEVENT0-4 连接来触发其它模块。仅 ADC_CH0-4 可用来触发
其它模块。
用户手册
ADC, V2.2
22-53
V1.1, 2010-09
XC83x
模数转换器
这些寄存器中的位域用来使能 ADC 通道的超出范围比较器。
ADC_ENORC
使能超出范围比较器寄存器
RMAP: 0, PAGE: 0
(D3H)
复位值:00H
7
6
5
4
3
2
1
0
ENORC7
ENORC6
ENORC5
ENORC4
ENORC3
ENORC2
ENORC1
ENORC0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
ENORCx
(x = 0 - 7)
x
rw
使能超出范围比较器 x
由该位使能对应模拟输入通道的超出范围比较器。
0B
禁止超出范围比较器
使能超出范围比较器
1B
注意:位 4-7 仅适用于具有 8 个模拟 ADC 通道的器
件。对于未实现的通道,这些位应当被当作保留位:
类型为 ‘r’,读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-54
V1.1, 2010-09
XC83x
模数转换器
该寄存器中的位用来选择:当检测到的每个输入 ADC 通道电压是高于或是低于 Vddp 时
触发超出范围比较器。
ADC_CNF
配置超出范围比较器寄存器
RMAP: 0, PAGE: 4
(D2H)
复位值:00H
7
6
5
4
3
2
1
0
CNF7
CNF6
CNF5
CNF4
CNF3
CNF2
CNF1
CNF0
rw
rw
rw
rw
rw
rw
rw
rw
符号
位
类型
描述
CNFx
(x = 0 - 7)
x
rw
超出范围比较器标志 x
该位选择由 CHx 上升沿还是下降沿触发超出范围比
较器标志寄存器。
0B
下降沿触发超出范围事件寄存器
上升沿触发超出范围事件寄存器
1B
注:位 4-7 仅适用于具有 8 个模拟 ADC 通道的器
件。对于未实现的通道,这些位应当被当作保留位:
类型为 ‘r’,读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-55
V1.1, 2010-09
XC83x
模数转换器
这些寄存器中的位域指示对应模拟输入通道是否已发生电压超出范围事件。如果某模拟
输入通道发生电压超出范围事件,则该寄存器中的对应位锁存至 1。向该寄存器写 0 可清
除事件标志。
ADC_LORE
锁存超出范围事件寄存器
RMAP: 0, PAGE: 0
(D2H)
复位值:00H
7
6
5
4
3
2
1
0
LORE7
LORE6
LORE5
LORE4
LORE3
LORE2
LORE1
LORE0
rwh
rwh
rwh
rwh
rwh
rwh
rwh
rwh
符号
位
类型
描述
LOREx
(x = 0 - 7)
x
rwh
锁存超出范围事件 x
该位用来指示哪个模拟输入通道发生了电压超出范
围事件。 LORE 位可由硬件置位且只能由软件清除。
通道 x 未发生电压超出范围事件。向该位写
0B
‘0’可清除该标志。
通道 x 已发生电压超出范围事件
1B
注意:位 4-7 仅适用于具有 8 个模拟 ADC 通道的器
件。对于未实现的通道,这些位应被当作保留位:
类型为 ‘r’,读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-56
V1.1, 2010-09
XC83x
模数转换器
22.8.6
转换时序
转换所需的总转换时间取决于下述几个可由用户定义的因子:
· ADC 转换时钟频率,其中 fADCI = fADC / (CTC+3)
· 所选择的采样时间,其中 tS = (2 + STC) × tADCI
(STC = 附加采样时间,参见章节 22.5.1)
· 所选择的结果宽度 N (8/10 位)
· 以模块时钟速度进行的同步阶段
转换时间由采样时间、转换步骤和同步阶段组成,可通过下面的公式计算:
tCN = tADC x (1 + r x (3 + n + STC))
r = CTC +3,
CTC = 转换时间控制 (ADC_GLOBCTR.CTC)
STC = 采样时间控制 (ADC_INPCR0.STC)
n = 8 或 10 (分别对应 8 位和 10 位转换)
tADC = 1/ fADC
触发模数转换的频率还取决于下面几个可配置的因子:
·
·
·
·
可选择的转换时间,由输入级的设置来定义
被取消的、且需要重复进行的转换带来的延迟
可配置的仲裁周期时间
外部触发信号的频率,如被使能
例 1:
当 N=10 位 , STC=0000B, fADC=48Mhz, CTC=01B
f ADCI = ( 48Mhz ⁄ ( 1 + 3 ) ) = 12Mhz = 83.33ns
t sample = ( 2 + 0 ) × 83.33ns = 166.67ns
用户手册
ADC, V2.2
22-57
(22.1)
(22.2)
V1.1, 2010-09
XC83x
模数转换器
表 22-6
采样时间
采样时间
ADC_INPCR0.STC
(二进制)
2 x tADCI
0000B
3 x tADCI
0001B
...
17 x tADCI
1111B
1 ⎞
- × ( 1 + ( 1 + 3 ) × ( 3 + 10 + 0 ) ) = 1.104us
tconv = ⎛⎝ --------------48Mhz⎠
用户手册
ADC, V2.2
22-58
(22.3)
V1.1, 2010-09
XC83x
模数转换器
22.8.7
通道事件和中断
发生通道事件时,可产生如图 22-20 中所示结构的通道事件中断。如果检测到通道事件,
则置位寄存器 ADC_CHINFR 中对应的中断指示标志。向寄存器 ADC_CHINCR 中的对
应位写 1,可软件清除指示标志。
通道
事件
至 SR0
通道事件标志
CHINFR
CHINF0
ADC_chev 0
CHINF1
CHINF2
...
通道
编号
ADC_chev 1
ADC_chev 2
CHINF7
注:
ADC_chev0-2信号内部连接至其它模块,且不由CHINSR置
位来触发通道中断寄存器
ADC_channel _events _routi ng_cn
图 22-20
用户手册
ADC, V2.2
通道事件中断产生
22-59
V1.1, 2010-09
XC83x
模数转换器
22.9
转换结果处理
每个模拟输入通道的转换结果可保存在 4 个转换结果寄存器中的一个 (由相关通道控制
寄存器 CHCTRx 中的位域 RESRSEL 选择)。该结构为不同组的通道提供保存转换结果
的不同位置。用户可根据应用的需要 (数据压缩、自动扫描、假名特性等等) ,来分配
转换结果,使 CPU 的负荷最小并且更加能容忍较长的中断延迟。
22.9.1
转换结果的保存
每个结果寄存器都有一个对应的数据有效标志 (VFx) 。该标志指示何时 “新的”有效
数据被保存到对应的结果寄存器且可供读取。
根据结果寄存器读取方式 (见下文) ,当结果被读出时,相应的有效标志被自动清除或
保持置位。
· 自动清除有效标志为结果的产生和恢复提供简单的握手。该方式还支持等待 - 读取模
式。
· 有效标志保持置位。无需应用给出握手信号就能给出结果值的方式来支持调试。
AD转换级
指向
结果寄存器
0-3
数据压缩单元/
数字低通滤波器
置位条件
数据有效性
标志
结果事件
ADC_result_handling _cn
图 22-21
转换结果保存
转换结果的处理由以下功能组成:
·
·
·
·
转换结果保存到用户可配置的寄存器中
等待 - 读取模式,多个通道共用同一个结果寄存器时,避免数据损失(见 章节 22.10)
结果事件中断 (见章节 22.10.1)
数据压缩或抗混叠滤波和数字低通滤波器 (见章节 22.10.2)
用户手册
ADC, V2.2
22-60
V1.1, 2010-09
XC83x
模数转换器
可在每个结果寄存器中叠加多达 4 个结果值。此方式减少了 ADC 产生中断的频率。
· 标准应用读取方式 (RESRxL/H):
– 8
位转换模式,禁止数据压缩和低通滤波器 (即
ADC_GLOBCTR.DW=1,
RCRx.DRCTR=0, RCRx.DLPF=0)
选择该模式时,目标结果寄存器为 ADC_RESRxL (x=0-3)和 ADC_RESRxH
(x=0-3)中,见图 22-22。
在 ADC_RESRxL (x=0-3),其中位 2-0 指示触发结果事件的通道编号;寄存器
ADC_RESRxH (x=0-3),位 7-0 返回转换结果。读取结果时自动清除有效标志。
只有不进行数据压缩时,该读取方式才有用。
– 10
位转换模式,禁止数据压缩和低通滤波器 (即
ADC_GLOBCTR.DW=0,
RCRx.DRCTR=0, RCRx.DLPF=0)
选择该模式时,目标结果寄存器为 ADC_RESRxL (x=0-3)和 ADC_RESRxH
(x=0-3),见图 22-23。
在 ADC_RESRxL(x=0-3),其中位 2-0 指示触发结果事件的通道编号,位 7-5 返
回转换结果的低 3 位。在 ADC_RESRxH (x=0-3)中,位 6-0 返回转换结果的位
9-3。读取结果时自动清除有效标志。只有不进行数据压缩时,该读取方式才有用。
· 累加应用读取方式 (RESRxL/H):
– 8 位转换模式,使能数据压缩并禁止数字低通滤波器(即 ADC_GLOBCTR.DW=1,
RCRx.DRCTR=1, RCRx.DLPF=0)
选择该模式时,目标结果寄存器为 ADC_RESRxL (x=0-3) 和 ADC_RESRxH
(x=0-3),见图 22-24。
第一次转换之后,在 ADC_RESRxL (x=0-3)结果寄存器中,位 2-0 指示触发结
果事件的通道编号。在 ADC_RESRxH (x=0-3) 中,位 7-0 返回转换结果。该方式
允许一次读取结果。读取结果时自动清除有效标志。
第二次转换时,在 ADC_RESRxL (x=0-3) 结果寄存器中,位 2-0 指示触发结果事
件的通道编号,位 7 为累加结果的最低位。在 ADC_RESRxH (x=0-3) 中,位 7-0
返回累加结果的位 8-1。
– 10 位转换模式,使能数据压缩,禁止数字低通滤波器(即 ADC_GLOBCTR.DW=0,
RCRx.DRCTR=1, RCRx.DLPF=0)
选择该模式时,目标结果寄存器为 ADC_RESRxL (x=0-3) 和 ADC_RESRxH (x=03),见图 22-25。
第一次转换之后,在 ADC_RESRxL (x=0-3) 结果寄存器中,位 2-0 指示触发结果
事件的通道编号,位 7-5 返回转换结果的位 2-0。在 ADC_RESRxH (x=0-3) 中,位
6-0 返回转换结果的位 9-3。读取结果时,自动清除有效标志。
第二次转换之后,在 ADC_RESRxL (x=0-3) 结果寄存器中,位 2-0 指示触发通道
事件的通道编号,位 7-5 返回累加结果的位 2-0。在 ADC_RESRxH (x=0-3) 中,位
7-0 返回累加结果的位 10-3。
· 数字低通滤波应用读取方式 (RESRxL/H):
10 位转换模式,禁止数据压缩,使能数字低通滤波器 (即 ADC_GLOBCTR.DW=0,
RCRx.DRCTR=0, RCRx.DLPF=1)该模式仅适用于 10 位转换,且使用数字低通滤波
器时,一定不能使能数据压缩特性,原因是 ADC 模块中只有一个加法器。
选择该模式时,目标结果寄存器为 ADC_RESRxL (x=0-3) 和 ADC_RESRxH (x=0-3),
用户手册
ADC, V2.2
22-61
V1.1, 2010-09
XC83x
模数转换器
见图 22-26。
在 ADC_RESRxL (x=0-3) 中,位 2-0 指示触发结果事件的通道编号,位 7-3 返回滤波
结果的位 4-0。在 ADC_RESRxH (x=0-3) 中,位 7-0 返回滤波结果的位 12-5。
结果读取方式 (SFR 页2)
8位转换(无累加 )
RESRxH
RESRxL
7
6
5
4
3
2
1
0
7
6
5
R7
R6
R5
R4
R3
R2
R1
R0
0
0
0
msb
rh
4
3
2
VF DRC
lsb
1
0
CHNR
rh
adc_result_register_view_he_ 8bit_drctr_dlpf=0_ cn.vsd
图 22-22
8 位 , RCRx.DRCTR=0, RCRx.DLPF=0, 结果寄存器读取方式
结果读取方式 (SFR 页 2)
10位转换(无累加)
7
6
0
R9
RESRxH
5
4
3
R8
R7
R6
1
0
7
6
5
R5
R4
R3
R2
R1
R0
rh
msb
RESRxL
4
3
2
2
VF DRC
1
0
CHNR
rh
lsb
adc_result_register_view_he _10bit_drctr=0 _dlpf=0_ cn.vsd
图 22-23
10 位 , RCRx.DRCTR=0, RCRx.DLPF=0, 结果寄存器读取方式
结果读取方式(SFR 页 2)
8位转换 (累加, 第一次转换 )
RESRxH
7
6
5
4
3
RESRxL
2
1
0
R7 R6 R5 R4 R3 R2 R1 R0
msb
rh
7
RESRxH
5 4 3 2
7
6
5
4
0
0
0
VF DRC
lsb
3
2
1
0
CHNR
rh
8位转换 (累加至9位, 第二次转换之后 )
6
1
0
R8 R7 R6 R5 R4 R3 R2 R1
msb
rh
7
6
5
R0
0
0
lsb
RESRxL
4 3 2
VF DRC
1
0
CHNR
rh
adc_result_register_view_he _8bit_drctr=1_ dlpf=0_cn.vsd
图 22-24
用户手册
ADC, V2.2
8 位 , RCRx.DRCTR=1, RCRx.DLPF=0, 结果寄存器读取方式
22-62
V1.1, 2010-09
XC83x
模数转换器
结果读取方式 ( SFR 页2)
10位转换 (累加, 第一次转换 )
7
6
0
R9
RESRxH
5
4
3
R8
R7
msb
R6
RESRxL
4
3
2
2
1
0
7
6
5
R5
R4
R3
R2
R1
R0
rh
VF DRC
lsb
1
0
CHNR
rh
10位转换 (累加至11位, 第二次转换之后 )
7
6
R10 R9
RESRxH
5
4
3
R8
R7
msb
R6
2
1
0
7
6
R5
R4
R3
R2
R1
rh
RESRxL
5
4
3
R0
VF DRC
lsb
2
1
0
CHNR
rh
adc_result_register_view_he _10bit_drctr=1 _dlpf=0_ cn.vsd
图 22-25
10 位 , RCRx.DRCTR=1, RCRx.DLPF=0, 结果寄存器读取方式
结果读取方式 (SFR 页 2)
10位转换 (累加至 13位,使能数字滤波器 DLPF=1)
7
6
RESRxH
5
4
3
R12 R11 R10 R9
msb
R8
rh
2
1
0
7
6
R7
R6
R5
R4
R3
lsb
RESRxL
5
4
3
R2
R1
R0
2
1
0
CHNR
rh
adc_result_register_view_he _10bit_drctr=0 _dlpf=1_ cn.vsd
图 22-26
10 位 , RCRx.DRCTR=0, RCRx.DLPF=1, 结果寄存器读取方式
所有转换结果保存在结果寄存器中,结果寄存器中的内容在保存在同一个页地址上,根
据所选择的模式,对齐数据。
用户手册
ADC, V2.2
22-63
V1.1, 2010-09
XC83x
模数转换器
标准读取方式由结果寄存器 ADC_RESRxL 和 ADC_RESRxH 组成,给出转换结果和相关
通道编号。
读取寄存器 RESRx 时,对应的有效标志被清除 (从应用的角度看)。
ADC_RESRxL (x = 0 - 2)
结果寄存器 x 低位 , 标准 8 位或累加 8 位的第一次转换(CAH + x * 2)
ADC_RESR3L
结果寄存器 3 低位 , 标准 8 位或累加 8 位的第一次转换(D2H)
RMAP: 0, PAGE: 2
7
6
5
2
复位值:00H
复位值:00H
4
3
1
0
VF
DRC
CHNR
r
rh
rh
rh
0
符号
位
类型
描述
CHNR
[2:0]
rh
通道编号
该位域包含最新更新寄存器的通道编号
注意:位 2 仅适用于具有 8 个 ADC 通道的器件。对
于未实现的通道,这些位应被当作保留位:类型为
‘r’,读操作返回 0 ;应写入 0。
DRC
3
rh
数据压缩计数器
该位指示要得到数据压缩的最终结果还需要累加多
少个转换结果。
0B
结果寄存器中的最终结果可用。当该位被置 0
时,有效标志被自动置位。
要得到最终结果,还需要累加一个转换结果。
1B
当该位被置 1 时,有效标志被自动复位。
VF
4
rh
结果寄存器 x 的有效标志
该位指示结果寄存器 x 中的内容是否有效。
0B
结果寄存器 x 不包含有效数据
结果寄存器 x 包含有效数据
1B
0
[7:5]
r
保留
读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-64
V1.1, 2010-09
XC83x
模数转换器
ADC_RESRxH (x = 0 - 2)
结果寄存器 x 高位 , 标准 8 位或累加 8 位的第一次转换(CBH + x * 2)
ADC_RESR3H
结果寄存器 3 高位 , 标准 8 位或累加 8 位的第一次转换(D3H)
RMAP: 0, PAGE: 2
7
6
5
4
3
2
复位值:00H
复位值:00H
1
0
RESULT[7:0]
rh
符号
位
类型
描述
RESULT[7:0]
[7:0]
rh
转换结果
该位包含转换结果或数据压缩滤波的结果。
ADC_RESRxL (x = 0 - 2)
结果寄存器 x 低位 , 标准读取 10 位转换(CAH + x * 2)
ADC_RESR3L
结果寄存器 3 低位 , 标准读取 10 位转换 (D2H)
RMAP: 0, PAGE: 2
7
6
5
复位值:00H
复位值:00H
4
3
2
1
RESULT[2:0]
VF
DRC
CHNR
rh
rh
rh
rh
0
符号
位
类型
描述
CHNR
[2:0]
rh
通道编号
该位包含最新更新结果寄存器的通道编号。
注意:位 2 仅适用于具有 8 个 ADC 通道的器件。对
于未实现的通道,这些位应被当作保留位:类型为
‘r’,读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-65
V1.1, 2010-09
XC83x
模数转换器
符号
位
类型
描述
DRC
3
rh
数据压缩计数器
该位指示要得到数据压缩的最终结果还需要累加多
少个转换结果。
0B
结果寄存器中的最终结果可用。当该位被置 0
时,有效标志被自动置位。
1B
要得到最终结果,还需要累加一个转换结果。
当该位被置 1 时,有效标志被自动复位。
VF
4
rh
结果寄存器 x 的有效标志
该位指示结果寄存器 x 中的内容是否有效。
0B
结果寄存器 x 不包含有效数据
结果寄存器 x 包含有效数据
1B
RESULT[2:0]
[7:5]
rh
转换结果
该位域包含转换结果或数据压缩滤波的结果。
ADC_RESRxH (x = 0 - 2)
结果寄存器 x 高位 , 标准读取 10 位转换(CBH + x * 2)
ADC_RESR3H
结果寄存器 3 高位 , 标准读取 10 位转换 (D3H)
RMAP: 0, PAGE: 2
7
6
5
4
3
0
RESULT[9:3]
r
rh
复位值:00H
复位值:00H
2
1
0
符号
位
类型
描述
RESULT[9:3]
[6:0]
rh
转换结果
该位域包含转换结果或数据压缩滤波的结果。
0
7
r
保留
读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-66
V1.1, 2010-09
XC83x
模数转换器
ADC_RESRxL (x = 0 - 2)
结果寄存器 x 低位 , 累加读取 8 位的第二次转换(CAH + x * 2)
ADC_RESR3L
结果寄存器 3 低位 , 累加读取 8 位的第二次转换(D2H)
RMAP: 0, PAGE: 2
7
6
5
4
3
2
复位值:00H
复位值:00H
1
0
R0
0
VF
DRC
CHNR
rh
r
rh
rh
rh
符号
位
类型
描述
CHNR
[2:0]
rh
通道编号
该位包含最新更新结果寄存器的通道编号。
注意:位 2 仅适用于具有 8 个 ADC 通道的器件。对
于未实现的通道,这些位应被当作保留位:类型为
‘r’,读操作返回 0 ;应写入 0。
DRC
3
rh
数据压缩计数器
该位指示要得到数据压缩的最终结果还需要累加多
少个转换结果。
0B
结果寄存器中的最终结果可用。当该位被置 0
时,有效标志被自动置位。
要得到最终结果,还需要累加一个转换结果。
1B
当该位被置 1 时,有效标志被自动复位。
VF
4
rh
结果寄存器 x 的有效标志
该位指示结果寄存器 x 中的内容是否有效。
0B
结果寄存器 x 不包含有效数据
1B
结果寄存器 x 包含有效数据
0
[6:5]
r
保留
读操作返回 0 ;应写入 0。
RESULT[0]
7
rh
转换结果
该位域包含转换结果或数据压缩滤波的结果。
用户手册
ADC, V2.2
22-67
V1.1, 2010-09
XC83x
模数转换器
ADC_RESRxH (x = 0 - 2)
结果寄存器 x 高位 , 累加读取 8 位的第二次转换(CBH + x * 2)
ADC_RESR3H
结果寄存器 3 高位 , 累加读取 8 位的第二次转换(D3H)
RMAP: 0, PAGE: 2
7
6
5
4
3
2
复位值:00H
复位值:00H
1
0
RESULT[8:1]
rh
符号
位
类型
描述
RESULT[8:1]
[7:0]
rh
转换结果
该位域包含转换结果或数据压缩滤波的结果。
ADC_RESRxL (x = 0 - 2)
结果寄存器 x 低位 , 累加读取 10 位的第一次转换(CAH + x * 2)
ADC_RESR3L
结果寄存器 3 低位 , 累加读取 10 位的第一次转换(D2H)
RMAP: 0, PAGE: 2
7
6
5
2
复位值:00H
复位值:00H
4
3
1
RESULT[2:0]
VF
DRC
CHNR
rh
rh
rh
rh
0
符号
位
类型
描述
CHNR
[2:0]
rh
通道编号
该位包含最新更新结果寄存器的通道编号。
注意:位 2 仅适用于具有 8 个 ADC 通道的器件。对
于未实现的通道,这些位应被当作保留位:类型为
‘r’,读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-68
V1.1, 2010-09
XC83x
模数转换器
符号
位
类型
描述
DRC
3
rh
数据压缩计数器
该位指示要得到数据压缩的最终结果还需要累加多
少个转换结果。
0B
结果寄存器中的最终结果可用。当该位被置 0
时,有效标志被自动置位。
1B
要得到最终结果,还需要累加一个转换结果。
当该位被置 1 时,有效标志被自动复位。
VF
4
rh
结果寄存器 x 的有效标志
该位指示结果寄存器 x 中的内容是否有效。
0B
结果寄存器 x 不包含有效数据
结果寄存器 x 包含有效数据
1B
RESULT[2:0]
[7:5]
rh
转换结果
该位域包含转换结果或数据压缩滤波的结果。
ADC_RESRxH (x = 0 - 2)
结果寄存器 x 高位 , 累加读取 10 位的第一次转换(CBH + x * 2)
ADC_RESR3H
结果寄存器 3 高位 , 累加读取 10 位的第一次转换(D3H)
RMAP: 0, PAGE: 2
7
6
5
4
3
0
RESULT[9:3]
r
rh
2
复位值:00H
复位值:00H
1
0
符号
位
类型
描述
RESULT[9:3]
[6:0]
rh
转换结果
该位域包含转换结果或数据压缩滤波的结果。
0
7
r
保留
读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-69
V1.1, 2010-09
XC83x
模数转换器
ADC_RESRxL (x = 0 - 2)
结果寄存器 x 低位 , 累加读取 10 位的第二次转换(CAH + x * 2)
ADC_RESR3L
结果寄存器 3 低位 , 累加读取 10 位的第二次转换(D2H)
RMAP: 0, PAGE: 2
7
6
5
2
复位值:00H
复位值:00H
4
3
1
RESULT[2:0]
VF
DRC
CHNR
rh
rh
rh
rh
0
符号
位
类型
描述
CHNR
[2:0]
rh
通道编号
该位包含最新更新结果寄存器的通道编号。
注意:位 2 仅适用于具有 8 个 ADC 通道的器件。对
于未实现的通道,这些位应被当作保留位:类型为
‘r’,读操作返回 0 ;应写入 0。
DRC
3
rh
数据压缩计数器
该位指示要得到数据压缩的最终结果还需要累加多
少个转换结果。
0B
结果寄存器中的最终结果可用。当该位被置 0
时,有效标志被自动置位。
要得到最终结果,还需要累加一个转换结果。
1B
当该位被置 1 时,有效标志被自动复位。
VF
4
rh
结果寄存器 x 的有效标志
该位指示结果寄存器 x 中的内容是否有效。
0B
结果寄存器 x 不包含有效数据
1B
结果寄存器 x 包含有效数据
RESULT[2:0]
[7:5]
rh
转换结果
该位域包含转换结果或数据压缩滤波的结果。
用户手册
ADC, V2.2
22-70
V1.1, 2010-09
XC83x
模数转换器
ADC_RESRxH (x = 0 - 2)
结果寄存器 x 高位 , 累加读取 10 位的第二次转换(CBH + x * 2)
ADC_RESR3H
结果寄存器 3 高位 , 累加读取 10 位的第二次转换(D3H)
RMAP: 0, PAGE: 2
7
6
5
4
3
复位值:00H
复位值:00H
2
1
0
RESULT[10:3]
rh
符号
位
RESULT[10:3] [7:0]
类型
描述
rh
转换结果
该位域包含转换结果或数据压缩滤波的结果。
ADC_RESRxL (x = 0 - 2)
结果寄存器 x 低位 , 低通滤波读取 10 位转换(CAH + x * 2)
ADC_RESR3L
结果寄存器 3 低位 , 低通滤波读取 10 位转换(D2H)
RMAP: 0, PAGE: 2
7
6
5
4
3
复位值:00H
复位值:00H
2
1
RESULT
[4:0]
CHNR
rh
rh
0
符号
位
类型
描述
CHNR
[2:0]
rh
通道编号
该位包含最新更新结果寄存器的通道编号。
注意:位 2 仅适用于具有 8 个 ADC 通道的器件。对
于未实现的通道,这些位应被当作保留位:类型为
‘r’,读操作返回 0 ;应写入 0。
RESULT[4:0]
用户手册
ADC, V2.2
[7:3]
rh
转换结果
该位域保存数字低通滤波的结果。
22-71
V1.1, 2010-09
XC83x
模数转换器
ADC_RESRxH (x = 0 - 2)
结果寄存器 x 高位 , 低通滤波读取 10 位(CBH + x * 2)
ADC_RESR3H
结果寄存器 3 高位 , 低通滤波读取 10 位 (D3H)
RMAP: 0, PAGE: 2
7
6
5
4
3
复位值:00H
复位值:00H
2
1
0
RESULT[12:5]
rh
符号
位
RESULT[12:5] [7:0]
用户手册
ADC, V2.2
类型
描述
rh
转换结果
该位域保存数字低通滤波的结果。
22-72
V1.1, 2010-09
XC83x
模数转换器
结果控制寄存器控制结果寄存器的行为并监控其状态。
ADC_RCRx (x = 0 - 3)
结果控制寄存器 x
RMAP: 0, PAGE: 4
(CAH + x * 1)
复位值:00H
7
6
5
4
3
2
1
0
VFCTR
WFR
0
IEN
0
DLPF
0
DRCTR
rw
rw
r
rw
r
rw
r
rw
符号
位
类型
描述
DRCTR
0
rw
数据压缩控制
该位定义进行数据压缩需要累加多少个转换结果。
该位定义 DRC 的重载值。
0B
禁止数据压缩滤波。DRC 的重载值为 0,因此
转换结果不累加。
1B
使能数据压缩滤波。 DRC 的重载值为 1,因此
由两个转换结果累加得到最终结果。
DLPF1)
2
rw
数字低通滤波器控制
该位定义转换结果是否经过数字低通滤波处理。
0B
禁止数字低通滤波器
1B
使能数字低通滤波器,当该位第 1 次从 0 变为
1 时,先前的结果寄存器被清除。见页 22-77
IEN
4
rw
中断使能
该位使能与结果寄存器 x 相关的事件中断。当 DRC
置为 0 时,产生事件中断 (递减之后或重载之后)。
0B
禁止事件中断
使能事件中断
1B
WFR
6
rw
等待 - 读取模式
该位使能结果寄存器 x 的等待 - 读取模式。
0B
禁止等待 - 读取模式
1B
使能待待 - 读取模式
VFCTR
7
rw
有效标志控制
该位使能复位结果寄存器 x 的有效标志 (通过读取
高位字节)。
0B
读访问 RESRxH/RESRAxH 时, VF 不变 (缺
省设置)
读访问 RESRxH/RESRAxH 时, VF 被复位
1B
1)
用户手册
ADC, V2.2
22-73
V1.1, 2010-09
XC83x
模数转换器
符号
位
类型
描述
0
1,3,5
r
保留
读操作返回 0 ;应写入 0。
1) 10 位转换时,可使用数据压缩滤波或数字低通滤波。然而,因为只有一个加法器,因此不能同时开启这两种滤
波器。 因此同时使能这两个滤波器时,DRCTR=1 和 DLPF=1,结果与 DRCTR=0 且 DLPF=1,仅使能数字低
通滤波相同。
8 位转换时,仅能使能数据压缩滤波器。选择 8 位转换模式时,使能数字低通滤波器(DLPF=1)的结果与禁止
数字低通滤波器 (DLPF=0)的结果相同。
用户手册
ADC, V2.2
22-74
V1.1, 2010-09
XC83x
模数转换器
有效标志清除寄存器用于清除相应结果寄存器中的有效标志。
ADC_VFCR
有效标志清除寄存器
RMAP: 0, PAGE: 4
7
符号
(CEH)
6
5
3
2
1
0
0
VFC3
VFC2
VFC1
VFC0
r
w
w
w
w
类型
描述
VFCx(x = 0 - 3) x
w
清除结果寄存器 x 的有效标志
0B
无操作
结果寄存器 RESRxL 中的 VF 被复位
1B
0
r
保留
读操作返回 0 ;应写入 0。
22.10
位
4
复位值:00H
[7:4]
等待 - 读取模式
在 CPU 读取先前的数据之前,等待 - 读取模式用来防止结果寄存器被新的转换结果覆盖。
例如,自动扫描转换序列或其它对 “时序要求不苛刻”的序列有可能使用同一个结果寄
存器。然而,结果来自不同的输入通道,因此覆盖会破坏先前的转换结果1)。
等待 - 读取模式自动挂起该通道的转换,直到当前结果被读出才启动该通道的转换操作。
因此可由硬件或软件触发来请求一次转换或转换序列,只有在先前的转换结果被读取之
后,才启动下一次转换操作。根据 CPU 读取先前转换结果的能力(中断延迟)自动调整
转换序列的启动。
如果结果寄存器使能等待 - 读取模式 (相应结果控制寄存器中的位 WFR = 1),当目标
结果寄存器包含有效数据时 (由有效标志 VFx = 1 指示)或者当前运行的转换使用同一
个结果寄存器时,则请求源不产生转换请求。
如果两个请求源使用同一个结果寄存器且选择了等待 - 读取模式,则高优先级的请求源不
能中断在其请求转换之前已经启动的低优先级请求源。取消 - 插入 - 重复模式在此情况下
不可用。如果高优先级请求使用另一个结果寄存器,则可取消低优先级的转换并在随后
重复该转换。
1) 使用不同的结果寄存器的单个通道的重复转换不会破坏其它结果,而是更新它们先前的结果值。通过此方式,
结果寄存器中始终是可用的、实际的信号值。
用户手册
ADC, V2.2
22-75
V1.1, 2010-09
XC83x
模数转换器
22.10.1
结果事件和中断
根据图 22-27 的结构,由结果事件产生结果事件中断。如果检测到结果事件,置位寄存
器 ADC_EVINFR 中的指示标志。还可通过向 ADC_EVINSR 中的对应位写 1 的方式置位
这些标志,写0无效。可通过向寄存器ADC_EVINCR写 1的方式软件清除这些指示标志。
结果事件
中断使能
RCR0-3.
IEN
结果事件
指示标志
EVINFR.
EVINF4-7
置位
新数据可用
至 SR0
结果事件
ADC_result_event _int_cn
图 22-27
结果事件中断产生
请求源事件中断和结果事件中断共用同一个服务请求输出线 SR0。
结果事件和请求源事件共用同一组寄存器。结果事件位于 ADC_EVINFR 的下述位置:
·
·
·
·
事件 4:结果寄存器 0 的结果事件
事件 5:结果寄存器 1 的结果事件
...
事件 7:结果寄存器 3 的结果事件
22.10.2
数据压缩和滤波
在产生结果中断之前,数据压缩自动累加一组转换结果。采用此方式可去除一些来自输
入信号的噪声并减少 CPU 因读取 ADC 转换数据所产生的负荷。
标准数据压缩模式可累加任意结果寄存器中的结果值。
数字低通滤波器通过平均先前结果和当前结果的方式去除测量到的瞬态噪声电压,对结
结果值进行预处理。
标准数据压缩模式
数据压缩模式可用作数字滤波器,进行抗混叠或数据抽取用途。累加最多两个转换结果
并产生最终结果。
每个结果寄存器可单独使能其数据压缩特性,由寄存器 ADC_RCRx (x = 0 - 3) 中的
DRCTR 进行控制。数据压缩计数器指示累加操作的实际状态。
注: 累加的转换操作之间可插入目标为其它结果寄存器的转换操作。
用户手册
ADC, V2.2
22-76
V1.1, 2010-09
XC83x
模数转换器
转换完成
DRCTR = 1
c0
c1
c2
c3
c4
c5
c6
c7
c8
转换正在
运行
r0
r1
r2
r3
r4
r5
r6
r7
给出结果
0
1
0
1
0
1
0
1
0
DRC
0
r0
r0 +
r1
r2
r2 +
r3
r4
r4 +
r5
r6
r6 +
r7
结果寄存器x的内容
DRCTR = 0
结果寄存器x的有效标志
VF
0
0
0
0
0
0
0
0
0
DRC
0
r0
r1
r2
r3
r4
r5
r6
r7
结果寄存器x的内容
结果寄存器x的有效标志
VF
ADC8_DRC_cn
图 22-28
标准数据压缩滤波器
本例给出 2 个累加转换结果的数据压缩序列。 8 个转换结果 (r0 … r7)累加之后得到 4
个最终结果。
转换完成时,数据被保存到结果寄存器中,如果使能数据压缩模式,由数据压缩计数器
DRC 控制数据处理:
· 如果 DRC = 0 (例中的 t3, t5, t7, t9) ,转换结果被保存到寄存器中。用位域
RCRx.DRCTR 中的内容加载 DRC。
(即累加开始)
· 如果 DRC > 0 (例中的 t2, t4, t6, t8),转换结果和结果寄存器中的值相加
DRC 减 1
· 如果 DRC 变为 0,不管是从 1 减为 0(例中的 t2, t4, t6, t8)还是从 DRCTR 加载的,
相应结果寄存器中的有效位被置位,且发生结果寄存器事件。
最终结果必须在下一个数据压缩序列启动之前 (例中 t3, t5, t7 或 t9 之前)被读取。
读取结果时自动清除有效标志。
数字低通滤波模式
数据压缩逻辑还可以构成一个低通滤波器,将放大的结果值 (因子 4)与一个缩小的先
前值 (因子为 0.5)相加。
用户手册
ADC, V2.2
22-77
V1.1, 2010-09
XC83x
模数转换器
每个结果寄存器可单独使能低通滤波模式,由寄存器 ADC_RCRx (x = 0 - 3) 中的 LPFEN
控制。此时不使用数据压缩计数器 DRC。
注意:对于低通滤波模式,结果数据必须来自一个专用的通道。
r0
r1
r2
r0×4
+0
0
r4
r3
r2×4
+ Rt2/2
r1×4
+ Rt1/2
r3×4
+ Rt3/2
RESRAx中
的转换结果
RESRAx的
内容
VFR.VFx
t1
t2
t3
t4
t4
MC_ADC_LPFILTER_cn
图 22-29
低通滤波器操作
每个结果乘以 4 并和先前寄存器值的 1/2 相加。相加之后有效标志被激活。
用户手册
ADC, V2.2
22-78
V1.1, 2010-09
XC83x
模数转换器
22.11
中断请求处理
可由几种类型的事件产生中断。每个 ADC 内核提供两个连接至中断节点的服务请求输出
信号 (ADCx_SR[1:0])。四类事件可产生中断请求:
· 请求源事件:指示完成了请求源所请求的转换序列。对于扫描源来讲,完成仲裁之后
的一组预定的通道转换之后,产生中断事件。对于顺序请求源来讲,用户可决定在转
换序列中的何处产生请求源事件。
请求源事件指示转换序列已经达到一个预定的状态,软件可访问相关的一组结果。
· 通道事件:指示转换已经完成。可选择,仅在转换结果在编程定义的范围内才产生通
道事件。
通道事件尤其可用来指示模拟输入值在额定工作范围之内或之外。从而可减少 CPU
的背景任务负荷,即如果满足或超出特定转换结果范围时才需要产生中断。
· 结果事件: 指示结果寄存器中有一个新的有效结果。通常,该事件触发 CPU 的读操
作。可选择是否使能数据压缩或数字低通滤波器,如使能则以较低的速率产生结果事
件。
· 超出范围比较器事件:指示在模拟输入通道上检测到的电压高于或低于 Vddp。
每个 ADC 事件有专用的标志指示且可由软件清除。如果使能某事件中断,每次发生该事
件都会产生中断,与相应的指示标志无关。此方式可确保高效的处理 ADC 事件(无需清
除指示标志, ADC 事件也可产生中断)。
请求源事件,通道事件和结果事件共用一个服务请求输出 ADC_SR0,超出范围比较器事
件使用服务请求输出 ADC_SR1。
注: 如果全部被使能,一次转换可能引发三个中断,每个中断一种类型。
在此情况下, ADC 模块首先触发请求源事件中断,然后是通道事件中断,紧跟着
是结果事件中断 (所有中断都发生在数个 fADC 时钟周期内)。
用户手册
ADC, V2.2
22-79
V1.1, 2010-09
XC83x
模数转换器
事件指示标志寄存器 ADC_EVINFR 监控检测到的请求源事件 (标志 EVINF0-EVINF1)
和结果事件 (标志 EVINF4-EVINF7)。
ADC_EVINFR
事件中断标志寄存器
RMAP: 0, PAGE: 5
(CEH)
7
6
5
4
EVINF7
EVINF6
EVINF5
EVINF4
rh
rh
rh
rh
复位值:00H
3
2
1
0
0
EVINF1
EVINF0
r
rh
rh
符号
位
类型
描述
EVINF0,
EVINF1,
EVINF4,
EVINF5,
EVINF6,
EVINF7
0,
1,
4,
5,
6,
7
rh
事件中断 x 的标志
该位监控事件中断 x 的状态
事件中断 x 未发生。写 0 清除该寄存器
0B
1B
事件中断 x 已发生。写 1 置位该寄存器并产生
中断脉冲 (如被使能)
0
[3:2]
r
保留
读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-80
V1.1, 2010-09
XC83x
模数转换器
当事件中断置位标志寄存器 ADC_EVINSR 中的某位被写入时,则置位 ADC_EVINFR 中
的对应位并产生中断请求。
ADC_EVINSR
事件中断清除标志寄存器
RMAP: 0, PAGE: 5
(D2H)
7
6
5
4
EVINS7
EVINS6
EVINS5
EVINS4
w
w
w
w
复位值:00H
3
2
1
0
0
EVINS1
EVINS0
r
w
w
符号
位
类型
描述
EVINS0,
EVINS1,
EVINS4,
EVINS5,
EVINS6,
EVINS7
0,
1,
4,
5,
6,
7
w
置位事件 x 中断标志
无操作
0B
位 EVINFR.x 被置位
1B
0
[3:2]
r
保留
读操作返回 0 ;应写入 0。
注: 向事件中断置位标志寄存器 ADC_EVINSR 写 1 则置位 ADC_EVINFR 中对应位并
产生中断请求,写 0 无效。
用户手册
ADC, V2.2
22-81
V1.1, 2010-09
XC83x
模数转换器
向事件指示位清除寄存器 ADC_EVINCR 写 1 会清除寄存器 ADC_EVINFR 中的对应事
件指示标志 EVINFx。当相应位置被写 1 时,如果检测到请求源或结果事件,标志 EVINFx
被清除。
ADC_EVINCR
事件中断清除标志寄存器
RMAP: 0, PAGE: 5
(CFH)
7
6
5
4
EVINC7
EVINC6
EVINC5
EVINC4
w
w
w
w
复位值:00H
3
2
1
0
0
EVINC1
EVINC0
r
w
w
符号
位
类型
描述
EVINC0,
EVINC1,
EVINC4,
EVINC5,
EVINC6,
EVINC7
0,
1,
4,
5,
6,
7
w
清除事件 x 的中断标志
无操作
0B
1B
位 EVINFR.x 复位
0
[3:2]
r
保留
读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-82
V1.1, 2010-09
XC83x
模数转换器
通道事件指示标志寄存器 CHINFR 监控检测到的通道 0 … 7 的通道事件。
ADC_CHINFR
通道中断标志寄存器
RMAP: 0, PAGE: 5
(CAH)
复位值:00H
7
6
5
4
3
2
1
0
CHINF7
CHINF6
CHINF5
CHINF4
CHINF3
CHINF2
CHINF1
CHINF0
rh
rh
rh
rh
rh
rh
rh
rh
符号
位
类型
描述
CHINFx
(x = 0 - 7)
x
rh
通道 x 的中断标志
该位监控通道 x 中断的状态
0B
通道 x 未发生通道中断
通道 x 已发生通道中断
1B
注意:位 4-7 仅适用于具有 8 个 ADC 通道的器件。
对于未实现的通道,这些位应被当作保留位:类型
为 ‘r’,读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-83
V1.1, 2010-09
XC83x
模数转换器
向 CHINSR 寄存器中的某位写 1 会置位相应的中断请求位并产生中断请求。写 0 无效。
ADC_CHINSR
通道中断置位寄存器
RMAP: 0, PAGE: 5
(CCH)
复位值:00H
7
6
5
4
3
2
1
0
CHINS7
CHINS6
CHINS5
CHINS4
CHINS3
CHINS2
CHINS1
CHINS0
w
w
w
w
w
w
w
w
符号
位
类型
描述
CHINSx
(x = 0 - 7)
x
w
通道 x 中断标志置位
0B
无操作
置位 CHINFR.x 并产生中断脉冲
1B
注意:位 4-7 仅适用于具有 8 个 ADC 通道的器件。
对于未实现的通道,这些位应被当作保留位:类型
为 ‘r’,读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-84
V1.1, 2010-09
XC83x
模数转换器
向寄存器 CHINCR 中的某位写 1 则清除寄存器 ADC_CHINFR 中的对应通道事件指示标
志 CHINFx。当相应位置被写 1 时,如果检测到通道事件,标志 CHINFx 被清除。
ADC_CHINCR
通道中断清除寄存器
RMAP: 0, PAGE: 5
(CBH)
复位值:00H
7
6
5
4
3
2
1
0
CHINC7
CHINC6
CHINC5
CHINC4
CHINC3
CHINC2
CHINC1
CHINC0
w
w
w
w
w
w
w
w
符号
位
类型
描述
CHINCx
(x = 0 - 7)
x
w
清除通道 x 的中断标志
0B
无操作
位 CHINFR.x 复位
1B
注意:位 4-7 仅适用于具有 8 个 ADC 通道的器件。
对于未实现的通道,这些位应被当作保留位:类型
为 ‘r’,读操作返回 0 ;应写入 0。
用户手册
ADC, V2.2
22-85
V1.1, 2010-09
XC83x
模数转换器
22.12
寄存器映射
ADC SFR 位于标准存储器区 (RMAP = 0),由 6 页组成。 ADC_PAGE 寄存器的地址
为 D1H,包含分页值和页控制信息。
ADC_PAGE
ADC 分页寄存器
RMAP: 0, PAGE: X
7
(F1H)
6
5
4
复位值:00H
3
2
1
OP
STNR
0
PAGE
w
w
r
rwh
符号
位
类型
0
描述
PAGE
[3:0]
rwh
分页位
写入时,该值表示新页的值。读出时,该值指示当前有
效页的值 = addr [y:x+1]
STNR
[5:4]
w
保存编号
该编号指明在哪个保存位域上执行 OP 定义的操作。
若 OP = 10B,
PAGE 的内容在被新值覆盖之前保存在 ADC_STx 中
若 OP = 11B,
PAGE 的内容被 ADC_STx 的内容覆盖。写入 PAGE 的
值不予理睬
00
选择 ADC_ST0
01
选择 ADC_ST1
10
选择 ADC_ST2
11
选择 ADC_ST3
OP
[7:6]
w
操作
0X 手动保存页模式,STNR 的值被忽略,PAGE 被直
接写入
10
带有自动页保存的新页设置。当前写入 PAGE 中
的内容被保存的同时,上次写入 PAGE 的内容 `
被保存在 STNR 规定的位域 ADC_STx 中
11
自动恢复页。对写入 PAGE 的内容不予理睬,
PAGE 由 STNR 规定的位域 ADC_STx 中的内容
覆盖 。
内核 SFR 的地址列于表 22-7 和表 22-8 中。
用户手册
ADC, V2.2
22-86
V1.1, 2010-09
XC83x
模数转换器
本章中描述的所有 ADC 寄存器名称,在本手册其他章节中引用时需加上模块名前缀
"ADC_",例如 ADC_GLOBCTR。
表 22-7
页 0 – 3 的 SFR 地址列表
地址
页0
页1
页2
CAH
ADC_GLOBCTR
CHCTR0
RESR0L
CBH
ADC_GLOBSTR
CHCTR1
RESR0H
CCH
ADC_PRAR
CHCTR2
RESR1L
CDH
ADC_LCBR0
CHCTR3
RESR1H
CEH
ADC_INPCR0
CHCTR4
RESR2L
CFH
ADC_LCBR1
CHCTR5
RESR2H
D2H
ADC_LORE
CHCTR6
RESR3L
D3H
ADC_ENORC
CHCTR7
RESR3H
表 22-8
页 4 – 7 的 SFR 地址列表
地址
页4
页5
页6
CAH
RCR0
ADC_CHINFR
ADC_CRCR1
CBH
RCR1
ADC_CHINCR
ADC_CRPR1
CCH
RCR2
ADC_CHINSR
ADC_CRMR1
CDH
RCR3
CEH
ADC_VFCR
ADC_EVINFR
ADC_QSR0
CFH
ADC_ALR0
ADC_EVINCR
ADC_Q0R0
D2H
ADC_CNF
ADC_EVINSR
ADC_QBUR0/
ADC_QINR0
D3H
ADC_ETRCR
用户手册
ADC, V2.2
页3
页7
ADC_QMR0
22-87
V1.1, 2010-09
XC83x
Boot ROM 用户子程序
23
Boot ROM 用户子程序
Boot ROM 用户子程序提供一组非常有用的、可供用户应用调用的子程序。表 23-1 给出
用户应用能够调用的子程序列表,这些子程序是由英飞凌开发的并且作为 Boot ROM 功
能的组成部分。
表 23-1
Boot ROM 用户子程序列表
地址
名称
描述
0xDFDE
BR_FLASH_READ_MODE_
STATUS
检查选中的 Flash Bank 的读模式状态
0xDFE1
BR_GET_4_BYTES_INFO
读取 4 字节的芯片 ID 编号和用户 ID 编号
(USER_ID)
0xDFE4
BR_PROG_USER_ID
编程设置 4 字节 USER_ID
(BR_FEATURE_SETTING 的选项 1)
0xDFE4
BR_CLKMODE_SETTING
初始化 CLKMODE
(BR_FEATURE_SETTING 的选项 0)
0xDFE7
BR_AUTO_BAUD
自动检测 UART 波特率
0xDFEA
BR_UART_BSL
0xDFED
重新进入 UART BSL 模式
BR_FLASH_BACKGROUND 后台编程代码 / 数据
_PROGRAM
0xDFF0
BR_FLASH_BACKGROUND 后台擦除 Flash
_ERASE
0xDFF3
BR_FLASH_BACKGROUND Flash 擦除中止 (后台)
_ERASE_ABORT
0xDFF6
BR_FLASH_PROGRAM
将代码 / 数据编程到 Flash 中
0xDFF9
BR_FLASH_ERASE
擦除 Flash
可从 XRAM 或 Flash 中调用擦除和编程子程序。 表 23-2 描述如何使用和调用这些子程
序。
表 23-2
调用 Flash 用户子程序
名称
器件
从何处调用
目标
BR_FLASH_PROGRAM
XC83x - 8K
XRAM
Flash Bank 0 或
Flash Bank 1
BR_FLASH_ERASE
Flash Bank 0/1
XC83x - 4K
用户手册
BootROM 用户子程序 , V1.2
23-1
Flash Bank 0/1
Flash Bank 0
Flash Bank 0
XRAM
Flash Bank 0
V1.1, 2010-09
XC83x
Boot ROM 用户子程序
表 23-2
调用 Flash 用户子程序 (cont’d)
名称
器件
从何处调用
目标
BR_FLASH_ERASE
XC83x - 8K
XRAM 或 Flash
Bank 0/1
同时对 Flash Bank 0
和 Flash Bank 1 进
行操作
XRAM
Flash Bank 0 或
Flash Bank 1
Flash Bank 0
Flash Bank 1
Flash Bank 1
Flash Bank 0
XRAM
Flash Bank 0
BR_FLASH_BACKGROUND_ XC83x - 8K
PROGRAM
BR_FLASH_BACKGROUND_
ERASE
XC83x - 4K
BR_FLASH_BACKGROUND_
ERASE_ABORT
23.1
Flash Bank 读模式状态子程序
读模式状态子程序允许检查 Flash Bank 的准备好 - 可供读取的状态。当用户使用
BR_FLASH_BACKGROUND_ERASE_ABORT 子程序时,该读模式状态子程序会非常
有用。调用擦除中止子程序之后,用户可调用该读模式状态子程序,用来检查擦除操作
是否被成功中止且 Flash 是否已经进入读模式。
调用该子程序之前,用户必须确保将输入 R7 配置为所选择的 Flash Bank。当 Flash 处
于读模式时,借位标志被清除;否则,借位标志被置位。对于错误的输入,借位标志也
被置位。
表 23-3
Flash Bank 读模式状态子程序说明
子程序
BR_FLASH_READ_MODE_STATUS
输入
当前寄存器组的 R7:所选择的 Flash Bank
00H Flash Bank 0
01H Flash Bank 11)
其它:保留 (无效选项)
输出
所需堆栈大小
C = 0: 所选择的 Flash Bank 处于读模式
C = 1: 所选择的 Flash Bank 不处于读模式
C = 1:I 所选择的选项无效
6
使用 / 破坏的资源
A
1) 仅适用于 XC83x - 8K 器件。对于其它器件配置,视其为无效选项。
用户手册
BootROM 用户子程序 , V1.2
23-2
V1.1, 2010-09
XC83x
Boot ROM 用户子程序
23.2
获得 4 字节信息
该子程序允许工具链软件或者甚至是用户代码读出器件的芯片 ID 编号 (见章节 1.3)或
用户 ID 编号 (USER_ID ;见章节 5.1)。
表 23-4
BR_GET_4_BYTES_INFO 子程序说明
子程序
BR_GET_4_BYTES_INFO
输入
当前寄存器组的 R7:选项
00H 选项 0 芯片 ID 编号
01H 选项 1 用户 ID 编号 (USER_ID)
其它:保留 (无效选项)
当前寄存器组的 R5:
4 字节 IRAM 缓存指针
选项 0 对应的 IRAM 缓存填充方式:
[R5]: 芯片 ID 编号 (MSB)
[R5+1]: 芯片 ID 编号
[R5+2]: 芯片 ID 编号
[R5+3]: 芯片 ID 编号 (LSB)
输出
选项 1 对应的 IRAM 缓存填充方式:
[R5]: USER_ID 编号 (MSB)
[R5+1]:USER_ID 编号
[R5+2]:USER_ID 编号
[R5+3]:USER_ID 编号 (LSB)
无效选项对应的 IRAM 缓存填充方式:
[R5]: 0x00
[R5+1]:0x00
[R5+2]:0x00
[R5+3]:0x00
所需缓存大小
C = 0 ;读取成功
C = 1 ;读取不成功 (选项无效)
8
使用 / 破坏的资源
A
当前寄存器组的 R1 和 R7 (2 字节)
23.3
特性设置子程序
Boot ROM 中的特性设置子程序用于初始化一些设置。当前仅提供两个选项:CLKMODE
设置 (BR_CLKMODE_SETTING)和编程 USER_ID (BR_PROG_USER_ID)。
用户手册
BootROM 用户子程序 , V1.2
23-3
V1.1, 2010-09
XC83x
Boot ROM 用户子程序
CLKMODE 设置子程序将频率设置为 8 MHz 或 24 MHz,而编程 USER_ID 子程序将 4
字节用户 ID (USER_ID)信息编程到器件中。这 4 字节用户 ID 编号将由:BMI, BMI
(用于确定 Boot 模式)和一些如时钟频率设置和被使能的外设等的初始化信息。一旦编
程完成,该 BR_PROG_USER_ID 子程序将发出一个软件复位。因此除了器件复位之外,
没 有 其 它 的 操 作 成 功 的 指 示,且 器 件 将 从 编 程 设 置 的 启 动 模 式 开 始 启 动。该
BR_PROG_USER_ID 子程序将检查 NMISR 是否为 0x00。如果是,该子程序将清除
NMICON 和 EA 并继续编程 USER_ID。调用该子程序之后无法返回,因此在调用该程序
之前,用户应当留意看门狗服务程序并禁止 WDT。
表 23-5
CLKMODE 设置子程序
子程序
BR_CLKMODE_SETTING
(BR_FEATURE_SETTING —选项 0)
输入
当前寄存器组的 R7:选项
00H 选项 0 - BR_CLKMODE_SETTING
其它:保留 (无效选项)
当前寄存器组的 R5:
00 - 8 MHz
80 - 24 MHz
其它 —保留
所需要的堆栈大小
C = 0: 选择了正确选项,相应的设置 CLK 模式
C = 1:I 选择了无效选项
9
使用 / 破坏的资源
A
输出
表 23-6
子程序
编程 USER_ID 子程序的说明说明
BR_PROG_USER_ID
(BR_FEATURE_SETTING —选项 1)
用户手册
BootROM 用户子程序 , V1.2
23-4
V1.1, 2010-09
XC83x
Boot ROM 用户子程序
表 23-6
编程 USER_ID 子程序的说明说明
当前寄存组的 R7:选项
01H 选项 1-BR_PROG_USER_ID
其它:保留 (无效选项)
输入
当前寄存器组的 R5:
用来存放 4 字节用户 ID 编号的 IRAM 起始地址
[R5]: USER_ID_3
[R5+1]:USER_ID_2
[R5+2]:USER_ID_1
[R5+3]:USER_ID_0
4 字节用户 ID 编号 (IRAM 中的)
SFR NMISR = 00H
堆栈指针 (SP)设置:
0x07 <= SP <= 0x60 或者
0xC0 <= SP <= 0xE0
输出1)
所需堆栈大小
C = 1: 编程用户 ID 失败
C = 1: 由于 NMISR 非 00H,退出子程序—错误
10
使用 / 破坏的资源
DPTR, A
当前寄存器组的 R0, R1, R3, R5, R6 和 R7 (6 字节)
IRAM 地址 0x80 - 0xBF (64 字节)
1) 只有当编程 USER_ID 失败之后,才退出子程序并可观察到输出。成功编程 USER_ID 时,将触发一个软件复
位并按照 BMI 编程的启动模式启动。
23.4
UART 自动波特率子程序
从主机接收到一个同步字节之后,该子程序允许由应用软件配置 UART 设置。一旦调用
该子程序,则接收同步字节、波特率计算和发送回应字节过程中用户应用将停滞。自动
波特率的协议描述见图 6-1,自动波特率所使用的端口引脚的定义见表 6-1。
用户需要注意所使用的时钟频率和并根据所需要的自动波特率来编程 BCON.BGSEL
SFR 位域。
注: 该子程序不修改时钟频率和 BGSEL SFR 位域。可在调用该子程序之前,根据所需
要的波特率和时钟频率修改这些位域。
注: 一旦进入到该用户子程序,设置 SPD 的操作不被禁止。用户必须确保 SPD 和自动
波特率所使用的端口引脚不会发生冲突。
注: 为了不干扰自动波特率的检测和计算,强烈建议用户在调用该子程序之前,禁止所
有中断。
用户手册
BootROM 用户子程序 , V1.2
23-5
V1.1, 2010-09
XC83x
Boot ROM 用户子程序
表 23-7
BR_AUTO_BAUD 子程序说明
子程序
BR_AUTO_BAUD
输入
相应的设置 BCON.BGSEL SFR 位域
输出
该子程序配置端口引脚 (至输入 / 输出, RXD/TXD)并根据
接收到的 005555H,或 0055AAH 自动波特率值配置 UART 波
特率。随后,如果成功完成初始化,该子程序发送回应符号
55H (应答码)。
11
所需堆栈大小
使用的 / 破坏的资源
端口相关的 SFR, A, SBUF, SCON, MODPISEL1,
MODPISEL2, TCON, TMOD, TH0, TL0, TR0, BCON, LINST,
T2_T2CON, T2_RC2H/L, T2_T2MOD, T2_T2H/L
IRAM 地址 0x7F
23.5
UART BSL 子程序
该子程序允许应用软件从各种模式,如编程、擦除 XRAM、擦除 Flash 等模式中跳回到
UART BSL 模式。在该子程序中将完成自动波特率检测。用户需要留意所使用的时钟频
率并根据需要的自动波特率设置 BCON.BGSEL SFR 位域。UART_BSL 模式特性的详细
信息,请参考引导程序加载器一章。
注: 该子程序不修改时钟频率和 BGSEL SFR 位域。在调用该子程序之前,需要由用户
根据需要的波特率和时钟频率修改这些位域。
注: 由于该子程序始终等待任何的 UART BSL 报文头,因此该程序不具备返回能力,
因此需要使用一个 LJMP 指令 (而不是 LCALL)。
注: 进入到该子程序之后, SPD 设置被禁止。且一旦 SPD 被禁止,不能再次被使能,
除非通过复位的方式来解决。
表 23-8
BR_UART_BSL 子程序说明
子程序
BR_UART_BSL
输入
IEN0.EA = 0
NMICON = 0x00
相应的设置 BCON.BGSEL SFR 位域
堆栈指针 (SP)设置:
0x07 <= SP <= 0x60 或者
SP = 0xE0
输出
-
用户手册
BootROM 用户子程序 , V1.2
23-6
V1.1, 2010-09
XC83x
Boot ROM 用户子程序
表 23-8
BR_UART_BSL 子程序说明
所需堆栈大小
-
使用 / 破坏的资源
-
注: 根据选择的以及执行的 UART BSL 模式,部分 IRAM 地址上的内容可能被破坏。
23.6
Flash 编程子程序
每次调用 Flash 编程子程序允许编程:
· 将 32 个数据字节 (WL 对齐)写入到所选择的 Flash 字线
· 将 32 个数据字节 (WL 对齐)写入到所选择的用户 BSL Flash 扇区字线1)
调用该子程序之前,用户必须确保要编程的 Flash 内容已经被缓存到同样大小的 IRAM 缓
存中。为用户提供两种类型的 Flash 编程子程序。可从 XRAM 或 Flash 中调用擦除和编
程子程序。表 23-2 描述如何使用和调用这些子程序。
第一类子程序 (不支持后台编程) BR_FLASH_PROGRAM:将一直等待,直到编程操
作完成,才允许继续执行用户程序。对于正在执行的用户代码保存在想要编程的 Flash
Bank 的情况来说,该类子程序对用户来说非常必要,尤其是对于仅有一个 Flash bank 的
情况来讲。 Flash 不能同时处于编程模式和读模式。对于用户想要编程的 Flash bank 还
用于保存中断向量的情况, Flash Bank 处于编程模式时,中断处理器无法访问该 Flash
Bank,因此无法处理中断,此时该类子程序也非常有用。对于第一种类型的编程子程序,
Boot ROM 将用来控制代码,FNMIFLASH 标志被自动清除且因此无需用户处理该标志。
表 23-9
FLASH_PROGRAM 子程序说明
子程序
BR_FLASH_PROGRAM
输入
想要编程的 Flash WL 对齐地址
当前寄存器组的 R6:DPH
当前寄存器组的 R7:DPL1)
当前寄存器组的 R5:
存放 32 字节 Flash 数据的 IRAM 起始地址
32 字节 Flash 数据
所有中断,包括 NMI 在内必须被禁止 (IEN0.EA=0,
NMICON=00H)
SFR NMISR = 00H
1) 仅 XC83x - 8K 器件支持该操作。
用户手册
BootROM 用户子程序 , V1.2
23-7
V1.1, 2010-09
XC83x
Boot ROM 用户子程序
表 23-9
FLASH_PROGRAM 子程序说明 (cont’d)
PSW.CY:
0 = Flash 编程成功
1 = Flash 编程不成功
输出
所需要的堆栈大小
DPTR 增加 20H2)
12
使用的 / 破坏的资源
DPTR, A
当前寄存器组的 R0, R2, R6 和 R7 (4 字节)
1) 对于对齐的字线地址, DPL 的低 5 位为 0,例如:00H, 20H, 40H, 60H, 80H, A0H, C0H 和 E0H。
2) 当 PSW.CY 为 0 时, DPTR 仅增加 20H 。
第二类子程序 (支持后台编程) BR_FLASH_BACKGROUND_PROGRAM,允许在调
用编程子程序之后,继续执行用户程序代码。用户将一直等待,直到产生 Flash NMI 事
件;寄存器 NMISR 中的位 FNMIFLASH 置位,且如果由 NMIFLASH 使能,为了进入
Flash NMI 服务子程序,触发一个发送给 CPU 的 NMI。此时 Flash bank 处于准备好 - 可
供读取模式,即编程操作已经完成。
表 23-10
FLASH_BACKGROUND_PROGRAM 子程序说明
子程序
BR_FLASH_BACKGROUND_PROGRAM
输入
想要编程的 Flash WL 对齐地址:
当前寄存器组的 R6:DPH
当前寄存器组的 R7:DPL1)
当前寄存器组的 R5:
存放 32 字节 Flash 数据的 IRAM 起始地址
32 字节 Flash 数据
Flash NMI (NMICON.NMIFLASH)被使能 (1)或禁止 (0)
SFR NMISR = 00H
输出
所需堆栈大小
使用的 / 破坏的资源
PSW.CY:
0 = 正在进行 Flash 编程
1 = Flash 编程不成功
DPTR 增加 20H2)
8
DPTR, A
当前寄存器组的 R0, R2, R6 和 R7 (4 字节)
1) 对于对齐的字线地址, DPL 的低 5 位为 0,例如:00H, 20H, 40H, 60H, 80H, A0H, C0H 和 E0H。
2) 当 PSW.CY 为 0 时, DPTR 仅增加 20H 。
用户手册
BootROM 用户子程序 , V1.2
23-8
V1.1, 2010-09
XC83x
Boot ROM 用户子程序
23.7
Flash 擦除子程序
每次调用 Flash 擦除子程序允许擦除所选择 Flash Bank 的扇区。无论何时,可选择擦除
多个 Flash 扇区1)2)。该子程序还支持擦除用户 BSL Flash 扇区 1)。用户 BSL Flash 扇区
的擦除操作可与 Flash Bank0/1 Flash 扇区的擦除一起完成。
调用该子程序之前,用户必须确保相应的设置输入。为用户提供两类 Flash 擦除子程序。
可从 XRAM 或 Flash 中调用擦除和编程用户子程序。表 23-2 描述如何使用和调用这些子
程序。
1) 仅适用于 XC83x - 8K 器件。
2) 适用于 BR_FLASH_ERASE 用户子程序,可从 Flash 或 XRAM 中调用该子程序。同时擦除两个 Flash bank
时,需要选择 BR_FLASH_BACKGROUND_ERASE 用户子程序,此时必须从 XRAM 中调用该程序。
用户手册
BootROM 用户子程序 , V1.2
23-9
V1.1, 2010-09
XC83x
Boot ROM 用户子程序
第一类子程序 (不支持后台擦除) BR_FLASH_ERASE,将等待直到擦除操作完成,才
能继续执行用户程序。如果查询错误时发现 FNMIVDDP, FNMIVDD 或 FNMIPLL 标志
被置位,则该子程序将被中止。该类子程序在下述情况下非常必要:如果用户想要擦除
的 Flash Bank 刚好保存着正在执行的用户代码,尤其当器件仅有一个 Flash Bank 时。
Flash 不能同时处于擦除模式和读取模式。对于用户想要擦除的 Flash bank 还用于保存
中断向量的情况,Flash Bank 处于擦除模式时,中断处理器无法访问该 Flash Bank,因
此无法处理中断,此时该类子程序也非常有用。对于第一类的擦除子程序,Boot ROM 将
控制代码, FNMIFLASH 标志被自动清除,因此无需要用户处理该标志。
注: 擦除操作完成后,由于程序将返回到用户代码,用户需要注意不要无意的擦除了自
己的用户代码。
注: 当为该子程序提供无效的 / 无输入时, C 标志将被置位,将退出子程序。不能完成
其他任何操作。
表 23-11
FLASH_ERASE 子程序说明
子程序
1)
输入
BR_FLASH_ERASE
当前寄存器组的 R7:
Flash Bank 0 中的、所选择的想要擦除的扇区
LSB 代表扇区 0, MSB 代表扇区 7
当前寄存器组的 R6:
Flash Bank 0 中的、所选择的想要擦除的扇区
LSB 代表扇区 8,位 1 代表扇区 9
当前寄存器组的 R52):
Flash Bank 1 中的、所选择的想要擦除的扇区
LSB 代表扇区 0, MSB 代表扇区 7
当前寄存器组的 R42):
Flash Bank1 中的、所选择的想要擦除的扇区
LSB 代表扇区 8,位 1 代表扇区 9,位 2 代表用户 BSL Flash
扇区
SFR NMISR = 00H
所需要的堆栈大小
所有中断,包括 NMI 在内都应当被禁止 (IEN0.EA=0,
NMICON=00H)
PSW.CY:
0 = Flash 擦除操作成功
1 = Flash 擦除操作不成功
1 = 给出的输入无效 / 无输入
12
使用 / 破坏的资源
DPTR, A
输出
当前寄存器组的 R2 和 R7 (2 字节)
用户手册
BootROM 用户子程序 , V1.2
23-10
V1.1, 2010-09
XC83x
Boot ROM 用户子程序
1) 如果不选择擦除 Bank 中的某个 / 某几个扇区,对应输入应当设置为 0。
2) 仅适用于 XC83x-8K 器件。对于其它器件配置,该字节被忽略。
第二类子程序 (支持后台擦除) BR_FLASH_BACKGROUND_ERASE,允许在调用擦
除子程序之后,继续执行用户程序代码。用户将一直等待,直到产生 Flash NMI 事件;
寄存器 NMISR 中的位 FNMIFLASH 置位,且如果由 NMIFLASH 使能,为了进入 Flash
NMI 服务子程序,触发一个发送给 CPU 的 NMI。此时 Flash bank 处于准备好 - 可供读
取模式,即擦除擦作已经完成。
注: 当为该子程序提供无效 / 无输入时, C 标志将被置位,将退出子程序。不能完成其
他任何操作。
表 23-12
FLASH_BACKGROUND_ERASE 子程序说明
子程序
1)
输入
BR_FLASH_BACKGROUND_ERASE
当前寄存器组的 R7:
Flash Bank 0 中的、想要擦除的扇区
LSB 代表扇区 0, MSB 代表扇区 7
当前寄存器组的 R6:
Flash Bank 0 中的、想要擦除的扇区
LSB 代表扇区 8,位 1 代表扇区 9
当前寄存器组的 R52):
Flash Bank1 中的、想要擦除的扇区
LSB 代表扇区 0, MSB 代表扇区 7
当前寄存器组的 R42):
Flash Bank1 中的、想要擦除的扇区
LSB 代表扇区 9,位 1 代表扇区 9,位 2 代表用户 BSL Flash
扇区
SFR NMISR = 00H
Flash NMI (NMICON.NMIFLASH)被使能 (1)或被禁止
(0)
输出
所需堆栈大小
PSW.CY:
0 = 正在进行 Flash 擦除操作
1 = Flash 擦除操作不成功
1 = 给出的输入无效 / 无输入
8
使用 / 破坏的资源
DPTR, A
当前寄存器组的 R2 (1 字节)
1) 如果不选择擦除 Bank 中的某个 / 某几个扇区,对应输入应当设置为 0。
用户手册
BootROM 用户子程序 , V1.2
23-11
V1.1, 2010-09
XC83x
Boot ROM 用户子程序
2) 仅适用于 XC83x-8K 器件。对于其它器件配置,该字节被忽略。
23.8
Flash 擦除中止子程序
Flash Bank 上的每个完整的擦除操作大约需要 100 ms,在此期间不能对 Flash 进行读取
或编程操作。对于 XC83x 来讲,已经提供了预防措施,允许正在进行的擦除操作 (类型
2,BR_FLASH_BACKGROUND_ERASE)被中断转而执行具有更高优先级的任务,如
从 Flash 读取 / 向 Flash 编程关键数据的操作。因此,Flash Bank 中所选择扇区的擦除操
作可被中止,以允许读取或编程其它扇区。为了将擦除中止操作对 Flash 数据保持特性 /
编程 / 擦除周期次数的影响减至最低,并且为了保证数据可靠性,对每个 Flash Bank 进
行操作时,必须注意以下几点:
· 擦除操作开始 5 ms 之后才能被中止
· 每个扇区最多允许两次连续的 (其间没有完整的擦除操作)擦除中止操作。
· 单次或两次连续的擦除中止操作之后,需要一个由用户程序启动的、完整的擦除操作
(大约需要 100 ms),由于相关的数据已经被破坏。
· 对于特定的编程 / 擦除次数,每个被中止的擦除操作被当作一次编程 / 擦除操作。
· 整个芯片生命周期期间,每个 D-Flash 扇区允许的最大擦除中止次数为 2500。
Flash 擦除操作启动之后 5 ms 之内,不能调用 Flash 擦除中止子程序。这是一个严格的
要求,用户必须遵守。否则,擦除操作不能被中止。一旦退出该子程序,用户可调用
BR_FLASH_READ_MODE_STATUS 用户子程序检查擦除中止操作是否已经完成。当
所选择的扇区已经进入到读模式,则只是擦除中止操作已经完成。
表 23-13
Flash 擦除中止子程序
子程序
BR_FLASH_BACKGROUND_ERASE_ABORT
输入
Flash Bank 处于擦除模式1)
输出
所需堆栈大小
C = 0: 正在进行擦除中止操作
C = 1: 未启动 Flash 擦除中止操作
3
使用的 / 破坏的资源
A
1) 对于 XC83x-8K 器件来讲,Flash Bank 0 和 Flash Bank 1 可同时处于擦除模式,因而两个 Flash Bank 的擦除
操作也可一起被中止。
用户手册
BootROM 用户子程序 , V1.2
23-12
V1.1, 2010-09
XC83x
ROM Library
24
ROM Library
除用户程序之外,我们还为用户开发自己的应用提供了一组实用的 ROM library 程序。
XC83x 可提供的 ROM library 有:
· 定点 ROM Library,
· LED 和触摸感应控制器 ROM Library,
· EEPROM 模拟 ROM Library
用户应用程序可调用表 24-1 中列出的 ROM Library 函数。后面各节将对不同的 ROM
library 予以详细说明。
表 24-1
XC83x ROM Library 函数和相应的地址
地址
函数
说明
0xD649
_PI_CONTROLLER_G16
定点 ROM Library
0xD64F
_PI_CONTROLLER_G256
定点 ROM Library
0xD655
_P_CONTROLLER_G16
定点 ROM Library
0xD65B
_P_CONTROLLER_G256
定点 ROM Library
0xD75B
_PT1_24
定点 ROM Library
0xD78A
_PT1_32
定点 ROM Library
0xD7CE
_CLARKE
定点 ROM Library
0xD802
_CARTESIAN_POLAR_POLL
定点 ROM Library
0xD805
_CARTESIAN_POLAR_RET
定点 ROM Library
0xD81E
_VECTOR_ROTATION
定点 ROM Library
0xD821
_INV_VECTOR_ROTATION
定点 ROM Library
0xD859
_SINCOSINE_POLL
定点 ROM Library
0xD85C
_SINCOSINE_RET
0xDFCC
FINDTOUCHEDPAD
定点 ROM Library
LEDTS ROM Library
0xDFCF
SET_LDLINE_CMP
LEDTS ROM Library
0xDFD2
INITEEPROM
EEPROM 模拟 ROM Library
0xDFD5
FIXEEPROM
EEPROM 模拟 ROM Library
0xDFD8
READEEPROM
EEPROM 模拟 ROM Library
0xDFDB
WRITEEEPROM
EEPROM 模拟 ROM Library
用户手册
ROM Library, V1.4
24-1
V1.1, 2010-09
XC83x
ROM Library
24.1
定点 ROM Library
定点 library 中包含多个存储于 ROM、可由用户访问的程序。以下各节将对这些程序予以
详细说明。
表中的 “执行周期”未包括调用指令 “LCALL”。在 Flash 中执行该指令需要 10 个时钟
周期;在 XRAM 中执行该指令需要 8 个时钟周期。
24.1.1
P 控制器程序
P 控制器程序用于实现一种比例控制算法,该算法的定义如下:
(24.1)
Y(k) = G × Kp × X(k)
其中:
·
·
·
·
·
Y(k) :P 控制器的输出
G:增益因子 (16 或 256)
Kp:比例增益
X:误差 = 参考值 - 实际值
k:时间或瞬时时间
表 24-2
P 控制器程序说明
地址
_P_controller_G16 或 _P_controller_G256
0xD655: _P_controller_G16
0xD65B: _P_controller_G256
C 函数原型
int P_controller_G16(int Ref_val, int Actual_val, char idata *Kp)
int P_controller_G256(int Ref_val, int Actual_val, char idata *Kp)
输入
R7, R6 (MSB), Ref_val = 16 位参考值
子程序
R5, R4 (MSB), Acutal_val = 16 位实际值
R3 = 指向 Kp_H 的 idata 指针
执行周期
R7, R6 (MSB) = 16 位 Y(k) 值
_P_controller_G16: 138 cclks
_P_controller_G256: 112 cclks
用到的资源
PSW, A, MDU
输出
当前寄存器 bank 中的 R0, R4, R5
代码示例:
// 全局变量
data int Speed;
data int Speed_ref;
用户手册
ROM Library, V1.4
24-2
V1.1, 2010-09
XC83x
ROM Library
data int Speed_kp;
data int P_Speed;
// 程序
Speed = 16288
Speed_ref = 4000;
Speed_kp = 4096;
P_Speed = P_controller_G16(Speed_ref, Speed, (char idata *)
&Speed_kp);
//P_speed = 0x7F40
24.1.2
PI 控制器程序
PI 控制器程序用于实现一种比例积分控制算法,该算法的定义如下:
(24.2)
Y(k) = G × Kp × X(k) + Y(k-1) + Ki × X(k)
其中:
·
·
·
·
·
·
·
Y(k) :PI 控制器的输出
Y(k-1):PI 控制器前一次的输出
G:增益因子 (16 或 256)
Kp:比例增益
Ki:积分增益
X:误差 = 参考值 - 实际值
k:时间或瞬时时间
表 24-3
PI 控制器程序说明
地址
_PI_controller_G16 或 _PI_controller_G256
0xD649: _PI_controller_G16
0xD64F: _PI_controller_G256
C 函数原型
int PI_controller_G16(int Ref_val, int Actual_val, PI_param *pPI)
int PI_controller_G256(int Ref_val, int Actual_val, PI_param *pPI)
输入
R7, R6 (MSB), Ref_val = 16 位参考值
子程序
R5, R4 (MSB), Acutal_val = 16 位实际值
R3 = 指向 Y(k-1)_H 的 idata 指针
用户手册
ROM Library, V1.4
24-3
V1.1, 2010-09
XC83x
ROM Library
表 24-3
PI 控制器程序说明
备注
要求如下的结构体:
Struct{
Y(k-1)[HLh]
Kp[HL]
Ki[HL]
PI_SAT_HH //24 位饱和值 0xHHFFFF 的高字节
}
输出
执行周期
R7, R6 (MSB) = 16 位 Y(k) 值
_PI_controller_G16: 248 cclks
_PI_controller_G256: 226 cclks
用到的资源
PSW, A, MDU
当前寄存器 bank 中的 R0, R2, R4, R5
代码示例:
// 定义结构体
typedef struct pi_param{
char
yn[3];
int
kp;
int
ki;
unsigned char
PI_SAT_HH;
}PI_param;
// 全局变量
data int Speed;
data int Speed_ref;
data int PI_Speed;
idata PI_param Speed_control;
// 程序
Speed = 2048;
Speed_ref = 4000;
Speed_control.yn[0] = 0x01;
Speed_control.yn[1] = 0x4C;
Speed_control.yn[2] = 0x97;
Speed_control.kp = 4096;
Speed_control.ki = 32;
Speed_control.PI_SAT_HH = 0x1F;
PI_Speed = PI_controller_G16(Speed_ref, Speed, &Speed_control);
//PI_Speed = 0x108E
用户手册
ROM Library, V1.4
24-4
V1.1, 2010-09
XC83x
ROM Library
24.1.3
PT1_24 控制器程序
PT1_24 控制器程序是一个数字低通滤波器,其实现是通过以下方式定义的:
(24.3)
Y(k) = Y(k-1) + 2
–Z
× [ X(k) – Y(k-1) ]
其中:
·
·
·
·
·
Y(k):PT1_24 控制器的输出
Y(k-1):PT1_24 控制器前一次的输出
Z:分频因子 (1/2Z)
X(k):16 位输入
k:时间或瞬时时间
表 24-4
PT1_24 控制器程序说明
子程序
_PT1_24
地址
0xD75B: _PT1_24
C 函数原型
int PT1_24(int X, char Z, char idata *pY)
R7, R6 (MSB) = 16 位 X 值
输入
R5 = 8 位 Z 值,右移位次数 (1/2Z)
R3 = 指向 Y(k-1)_H 的 idata 指针
Y(k-1) = 24 位 [HLh]
备注
X 必须介于 0xC000 - 0x3FFF 之间
执行周期
R7, R6 (MSB) = 16 位 Y(k) 值
76 cclk
用到的资源
PSW, A, MDU
输出
当前寄存器 bank 中的 R0
代码示例:
// 声明变量
data char
data int
data int
data int
Speed[3];
result;
angle_new;
angle_old;
// 程序
Speed[0] = 0xF8;
Speed[1] = 0xF3;
用户手册
ROM Library, V1.4
24-5
V1.1, 2010-09
XC83x
ROM Library
Speed[2] = 0xCB;
angle_new = 0x1800;
angle_old = 0x0800;
result = PT1_24(angle_new - angle_old, 5, &speed);
//result = 0xF9AC;
24.1.4
PT1_32 控制器程序
PT1_32 控制器程序是一个积分器,其实现是通过以下方式定义的:
(24.4)
Y(k) = Y(k-1) + Z1 × X(k) – Z2 × Y(k-1)
其中:
·
·
·
·
·
Y(k):PT1_32 控制器的输出
Y(k-1):PT1_32 控制器前一次的输出
Z:分频因子 (1/2Z)
X(k):16 位输入
k:时间或瞬时时间
表 24-5
PT1_32 控制器程序说明
子程序
_PT1_32
地址
0xD78A: _PT1_32
C 函数原型
int PT1_32(int X, int Z2, int idata *pY)
输入
R7, R6 (MSB) = 16 位 X 值
R5, R4 (MSB) = 16 位 Z2 值
R3 = 指向 Y(k-1)_H 的 idata 指针
MDU_MD4 = Z1_L
MDU_MD5 = Z1_H
备注
Y(k-1) = 32 位 [HLhl]
Z1 必须介于 0x0000 - 0x3FFF 之间,或 X 必须介于 0xC000 0x3FFF 之间
执行周期
R7, R6 (MSB) = 16 位 Y(k) 值
118 cclk
用到的资源
PSW, A, MDU
输出
当前寄存器 bank 中的 R0
用户手册
ROM Library, V1.4
24-6
V1.1, 2010-09
XC83x
ROM Library
代码示例:
// 全局变量
data int result;
data int Integrator[2];
// 程序
Integrator[0] = 0xFF12;
Integrator[1] = 0xE828;
MDU_MD4 = 0x1F;//Low byte Z1
MDU_MD5 = 0x00; //High byte Z1
result = PT1_32(X, 0x109, &Integrator);
//result = 0xFF15
24.1.5
Cartesian-Polar 坐标转换程序
该程序用于将笛卡尔坐标转换为极坐标,定义如下:
(24.5)
2
2⎞
⎛ X +Y
R = K × ⎜ ---------------------⎟
4
⎝
⎠
(24.6)
Y
θ = atan ⎛⎝ ---⎞⎠
X
其中:
·
·
·
·
·
R:距离原点的径向距离
θ:相对 x 轴的反时针夹角
K:~ 1.64676 倍的比例因子
X: x 坐标
Y: y 坐标
表 24-6
Cartesian-Polar 坐标转换程序说明
子程序
地址
用户手册
ROM Library, V1.4
_Cartesian_Polar_poll 或 _Cartesian_Polar_ret
0xD802: _Cartesian_Polar_poll
0xD805: _Cartesian_Polar_ret
24-7
V1.1, 2010-09
XC83x
ROM Library
表 24-6
Cartesian-Polar 坐标转换程序说明
void Cartesian_Polar_poll(int X, int Y)
- 程序在返回之前等待 CD_BSY 标志。一旦程序返回,可从
CORDX 和 CORDZ 中读取结果。
C 函数原型
void Cartesian_Polar_ret(int X, int Y)
- 一旦 CORDIC 开始工作,程序返回,不等待 CD_BSY 标志。用
户将检查 CD_BSY 标志或在读取 CORDX 和 CORDY 中的结果之
前等待足够长的时间。
R7, R6 (MSB) = 16 位 X 值
输入
R5, R4 (MSB) = 16 位 X 值
执行周期
CORDX = R 和 CORDZ = θ
_Cartesian_Polar_poll: 58 cclk
_Cartesian_Polar_ret: 38 cclk
用到的资源
PSW, A, CORDIC
输出
代码示例:
// 要得到 R 值,设置 X = x/1.64676, Y = y/1.6476
// 即:R = Sqrt[sq(X) + sq(Y)]/4
// 若 X = 300, Y = 400,
//X = 300/1.64676 = 182.18 = 0xB7
//Y = 400/1.64676 = 242.90 = 0xF3
// 程序
int R_result, angle_result;
Cartesian_Polar_ret(0xB7, 0xF3);
while(CD_BSY);
// 等待至转换结束
R_result = CD_CORDXLH;
angle_result = CD_CORDZLH;
//R_result = 0x007D, angle_result = 0x25B3
24.1.6
Clarke 变换程序
该程序用于将三相系统变换为两相正交系统,其实现是通过以下方式定义的:
用户手册
ROM Library, V1.4
24-8
V1.1, 2010-09
XC83x
ROM Library
(24.7)
I_phaseA
I_alpha = -----------------------2
(24.8)
PhaseA + 2 × PhaseB
I_beta = ⎛ -------------------------------------------------------⎞
⎝
⎠
3×2
其中:
·
·
·
·
·
Y(k):PT1_24 控制器的输出
Y(k-1):PT1_24 控制器前一次的输出
Z:分频因子 (1/2Z)
X(k):16 位输入
k:时间或瞬时时间
表 24-7
Clarke 变换程序说明
子程序
_Clarke
地址
0xD7CE: _Clarke
C 函数原型
void Clarke(int idata *I_phaseAB, int idata *I_alphabeta)
输入
R7 = 指向 I_phaseA_H 的 idata 指针
备注
R5 = 指向 I_alpha_H 的 idata 指针
char idata *I_phaseAB
IRAM 中的地址分配:
I_phaseA_H (MSB), I_phaseA_L, I_phaseB_H, I_phaseB_L
char idata *I_alphabeta
IRAM 中的地址分配:
I_alpha_H (MSB), I_alpha_L, I_beta_H, I_beta_L
执行周期
I_alpha 和 I_beta 的结果保存在第 2 个输入参数的地址单元中
84 cclk
用到的资源
PSW, A, MDU
输出
当前寄存器 bank 中的 R0, R1
代码示例:
// 声明变量
data int I_phaseA
data int I_phaseB
data int I_alpha
用户手册
ROM Library, V1.4
_at_ (0x36);
_at_ (0x38);
_at_ (0x4A);
24-9
V1.1, 2010-09
XC83x
ROM Library
data int
I_beta
_at_ (0x4C);
// 程序
I_phaseA = -2048;
I_phaseB = 8192;
Clarke(&I_phaseA, &I_alpha);
//I_alpha = 0xFC00, I_beta = 0x102A
24.1.7
向量旋转 (Park 变换)程序
该程序用于将 Clarke 变换产生的两相 (参见章节 24.1.6)旋转一个角度 θ:
(24.9)
( I_alpha × cos ( θ ) + I_beta × sin ( θ ) )
Id = -------------------------------------------------------------------------------------------------2
(24.10)
( – I_alpha × sin ( θ ) + I_beta × cos ( θ ) )
Iq = -----------------------------------------------------------------------------------------------------2
其中:
·
·
·
·
·
Y(k):PT1_24 控制器的输出
Y(k-1):PT1_24 控制器前一次的输出
Z:分频因子 (1/2Z)
X(k):16 位输入
k:时间或瞬时时间
表 24-8
向量旋转程序说明
子程序
_Vector_Rotation
地址
0xD81E: _Vector_Rotation
C 函数原型
void Vector_Rotation(int Angle, int idata *pInput, int idata*pOutput)
输入
R7, R6 (MSB) = 16 位角度值
R5 = 指向 I_alpha_H 的 idata 指针
备注
用户手册
ROM Library, V1.4
R3 = 指向 Iq_H 的 idata 指针
char idata *pInput
IRAM 中的地址分配:
I_alpha_H (MSB), I_alpha_L, I_beta_H, I_beta_L
24-10
V1.1, 2010-09
XC83x
ROM Library
表 24-8
向量旋转程序说明
char idata *pOutput
IRAM 中的地址分配:
Iq_H (MSB), Iq_L, Id_H, Id_L
执行周期
Iq 和 Id 的结果保存在第 3 个输入参数的地址单元中
92 cclk
用到的资源
PSW, A, B, CORDIC
输出
当前寄存器 bank 中的 R0
代码示例:
// 声明变量
data int
data int
data int
data int
data int
I_alpha
I_beta
I_q
I_d
angle;
_at_
_at_
_at_
_at_
(0x4A);
(0x4C);
(0x4E);
(0x50);
// 程序
I_alpha = -4096;
I_beta = 8192;
// 若角度为 126o, 将其转换为弧度单位
angle = 126*32768/180;
Vector_Rotation(angle, &I_alpha, &I_q);
//I_q = 0xFB2C, I_d = 0x1D0F
24.1.8
向量逆旋转 (Park 逆变换)程序
该程序用于实现向量逆旋转(向量旋转参见章节 24.1.7),将 Id 和 Iq 变换回 I_alpha 和
and I_beta,旋转角度为 θ:
(24.11)
( Id × cos ( θ ) – Iq × sin ( θ ) )
I_alpha = -----------------------------------------------------------------------4
(24.12)
( Id × sin ( θ ) + Iq × cos ( θ ) )
I_beta = -----------------------------------------------------------------------4
其中:
· Y(k):PT1_24 控制器的输出
用户手册
ROM Library, V1.4
24-11
V1.1, 2010-09
XC83x
ROM Library
·
·
·
·
Y(k-1):PT1_24 控制器前一次的输出
Z:分频因子 (1/2Z)
X(k):16 位输入
k:时间或瞬时时间
表 24-9
向量逆旋转程序说明
子程序
_Inv_Vector_Rotation
地址
0xD821: _Inv_Vector_Rotation
C 函数原型
void Inv_Vector_Rotation(int Angle, int idata *pInput, int idata
*pOutput)
输入
R7, R6 (MSB) = 16 位角度值
R5 = 指向 Iq_H 的 idata 指针
R3 = 指向 I_alpha_H 的 idata 指针
char idata *pInput
IRAM 中的地址分配:
Iq_H (MSB), Iq_L, Id_H, Id_L
备注
char idata *pOutput
IRAM 中的地址分配:
I_alpha_H (MSB), I_alpha_L, I_beta_H, I_beta_L
执行周期
Iq 和 Id 的结果保存在第 3 个输入参数的地址单元中
88 cclk
用到的资源
PSW, A, B, CORDIC
输出
当前寄存器 bank 中的 R0
24.1.9
Sine/Cosine 程序
该程序用于实现 Sine/Cosine 函数:
(24.13)
K × [ Y × cos ( z ) + X × sin ( z ) ]
Yo = -------------------------------------------------------------------------2
其中:
·
·
·
·
·
Yo:输出值
K:~ 1.64676 倍的比例因子
Y:cos(z) 的增益因子
X:sin(z) 的增益因子
z:角度 (以弧度为单位时:z * 32768/180o)
用户手册
ROM Library, V1.4
24-12
V1.1, 2010-09
XC83x
ROM Library
表 24-10
Sine/Cosine 程序说明
子程序
地址
C 函数原型
_SinCos_poll 或 _SinCos_ret
0xD859: _SinCos_poll
0xD85C: _SinCos_ret
int SinCos_poll(int X, int Y, int Z)
- 程序将结果返回 R7 和 R6 之前等待 CD_BSY 标志。
void SinCos_retl(int X, int Y, int Z)
- 一旦 CORDIC 开始工作,程序返回,不等待 CD_BSY 标志。用
户将检查 CD_BSY 标志或在读取 CORDY 中的结果之前等待足够
长的时间。
输入
R7, R6 (MSB) = 计算 Sine 的 16 位 X 值。计算 Cosine 时输入为
0。
R5, R4 (MSB) = 计算 Cosine 的 16 位 Y 值。计算 Sine 时输入为
0。
R3, R2 (MSB) = 16 位 Z 值
输出
R7, R6 (MSB) = Yo,适用于程序 _SinCos_poll
执行周期
CORDY = Yo, CD_BSY 标志置位之后适用于程序 _SinCos_ret
_SinCos_poll: 70 cclk
_SinCos_ret: 42 cclk
用到的资源
PSW, A, CORDIC
代码示例:
// 计算 Sine 值示例
// 第 1 步 : 设置 Y = 0。公式变为:
//Yo = K * [X * sin(z)]/2 = 1.64676 * [X * sin(z)]/2
// 第 2 步:使增益因子为 1 (Yo = sin(z)),
// 设置 X = 2/1.64676 = 1.214506
// 将 X 扩大 10000 倍以获得更好的精度 ,
//X = 12145.06 = 0x2F72
// 第 3 步 : 将 z 转换为弧度单位。若角度为 45o,
//z = 45o * 32768/180o = 8192 = 0x2000
// 程序
int sin_out;
sin_out = SinCos_poll(0x2F72, 0, 0x2000);
//sin_out = 0x1B9F,缩小 10000 倍即得到结果 0.7071
用户手册
ROM Library, V1.4
24-13
V1.1, 2010-09
XC83x
ROM Library
24.2
LED 和触摸感应控制器 ROM Library
LEDTS ROM Library 中包含两个存储于 ROM、可由用户访问的程序。以下各节将对这
些程序予以详细说明。
· SET_LDLINE_CMP 函数 (LED 和触摸感应)
· FINDTOUCHEDPAD 函数 (触摸感应)
· 中断时函数的使用
LEDTS 的调用函数归纳见表 24-11。
表 24-11
LEDTS ROM Library 程序列表
地址
函数
说明
0xDFCF
SET_LDLINE_CMP
设置 SFR LTS_LDLINE 和 LTS_COMPARE
(仅使能 LED 功能)
0xDFCF
SET_LDLINE_CMP
设置 SFR LTS_LDLINE 和 LTS_COMPARE
(仅使能触摸感应功能)
0xDFCF
SET_LDLINE_CMP
设置 SFR LTS_LDLINE 和 LTS_COMPARE
(使能 LED 和触摸感应功能)
0xDFCC
FINDTOUCHEDPAD
取平均,计算 LowTrip 并评估按盘是否被触摸
发生时间片或时帧中断时,调用这些函数,详见章节 24.2.3 的描述。
用户手册
ROM Library, V1.4
24-14
V1.1, 2010-09
XC83x
ROM Library
24.2.1
SET_LDLINE_CMP 函数 (LED 和触摸感应)
该函数根据用户的输入参数1) 为 LED 和 / 或触摸感应功能设置 SFR LTS_LDLINE 和
LTS_COMPARE (亮度 / 振荡窗)。该函数读取 SFR LTS_GLOBCTL1.FNCOL 的值,
从而选择将哪些数据同步写入 SFR LTS_LDLINE 以实现 LED 显示2)。同样的,该函数还
为各列 LED 或触摸感应功能的各个 pad turn 更新 SFR LTS_COMPARE 的值。图 24-1
示出该函数的使用概况;图 24-2 给出该函数中 SFR 的设置。
中断控制
COL6
时帧
COL5
COL4
COL3
TFF
ITF_EN
ITS_EN
列控制
COL2
COL1
COL0
时间片
TSF
COLA
ISR
调用 ROMLIB
LINE7
AND
LINE6
LINE5
ROM Library
LEDLINE[ 7]
LEDLINE
[6]
LEDCMP[7]
LEDLINE
[ 5]
LEDCMP[6]
LEDLINE
[4]
LEDCMP[5]
LEDLINE
[ 3]
LEDCMP[4]
LEDLINE
2]
LEDCMP[[3]
LEDLINE
[1]
LEDCMP[2]
LEDLINE
[0]
LEDCMP[1]
LEDCMP[0]
图 24-1
行控制
LINE4
LINE3
LINE2
mux
LINE1
LINE0
SET_LDLINE_CMP 函数概览
每次发生时间片或时帧中断时可调用该函数。 有关如何调用该函数的详细描述,可参见
章节 24.2.3。
章节 24.2.1.1,章节 24.2.1.2 和章节 24.2.1.3 分别给出仅 LED 功能使能、仅触摸感应功
能使能以及 LED 和触摸感应功能均使能情况下的输入。
1) 该函数决定当前时间片内的有效功能 / 列并为下一个时间片更新行值和 (映射传送的)比较值,这些操作用户
不可见。
2) 用作触摸感应功能时,可将 LTS_LDLINE 设置为 0xFF。
用户手册
ROM Library, V1.4
24-15
V1.1, 2010-09
图 24-2
用户手册
ROM Library, V1.4
24-16
TSF
调用 ROMLIB
ISR
ITS_EN
TFF
CLKSEL
ITF_EN
48MHz
8MHZ
预分频器
LEDLINE[7]
LEDLINE[
6]
LEDCMP[7]
LEDLINE[5]
LEDCMP[6]
LEDLI
NE[4]
LEDCMP[5]
LEDLINE[3]
LEDCMP[4]
LED
LINE[2]
LEDCMP[3]
LEDL
INE[1]
LEDCMP[2]
LEDLINE[0]
LEDCMP[1]
LEDCMP[0]
ROM Library
时间片
时帧
中断控制
0: 无时钟
1: clk/ 1
...
63: clk/63
CLK_PS
mux
demux
3位
SHD_CMP
比较器
8位
LEDTS计数器
列控制
行控制
SHD_LINE
映射传送
行值
AND
AND
COL2
COL3
COL4
COL5
COL6
P0
口
LINE0
LINE1
LINE2
LINE3
LINE4
LINE5
LINE6
LINE7
XOR COLA
XOR COL1
XOR COL0
XOR
AND
XOR
AND
XOR
XOR
AND
AND
XOR
AND
AND
使能
Pad振荡器
COLLEV
AND
NR_LEDCOL
重载值
XC83x
ROM Library
SET_LDLINE_CMP 函数 - SFR 设置
V1.1, 2010-09
XC83x
ROM Library
24.2.1.1 SET_LDLINE_CMP 函数的输入 (仅使能 LED 功能)
仅使能 LED 功能时,相应的输入参数归纳见表 24-12。使能 2 列、4 列、6 列或 8 列 LED
时的输入参数示例见图 24-3。
表 24-12
LDLINE & COMPARE 设置说明 (仅使能 LED 功能)
子程序
地址
SET_LDLINE_CMP
输入
当前寄存器 bank 中的 R7:
LDLINE 参数的起始 IRAM 地址
DFCFH
当前寄存器 bank 中的 R5:
COMPARE 参数的起始 IRAM 地址
写入 IRAM R7... R7+(y-1) 的 LDLINE 参数1):
@R7 = COLA 的 LDLINE 参数
@R7+1 = COL0 的 LDLINE 参数
...
@R7+(y-1) = COL(y-2) 的 LDLINE 参数
写入 IRAM R5...R5+(y-1) 的 COMPARE 参数 1)
@R5 = COLA 的 COMPARE 参数
@R5+1 = COL0 的 COMPARE 参数
...
@R5+(y-1) = COL(y-2) 的 COMPARE 参数
所需堆栈大小
SFR LTS_LDLINE 设置完成
SFR LTS_COMPARE 设置完成
2
用到的资源
A, R0, R1, R2, R3, R4
输出
1) 和使能 LED 的列数有关; y = 使能 LED 的列数。
用户手册
ROM Library, V1.4
24-17
V1.1, 2010-09
XC83x
ROM Library
2列 LED + 禁用TS
8列LED + 禁用TS
6列LED + 禁用TS
LDLINE( A)
R7
LDLINE(A)
R7
LDLINE(A)
R7
LDLINE(A)
R7
LDLINE (0)
R7 +1
LDLINE(0)
R7 +1
LDLINE (0)
R7 +1
LDLINE(0)
R7 + 1
LDLINE(1)
R7 +2
LDLINE (1)
R7 +2
LDLINE(1)
R7 + 2
LDLINE(2)
R7 +3
LDLINE (2)
R7 +3
LDLINE(2)
R7 + 3
LDLINE(3)
R7 +4
LDLINE(3)
R7 + 4
LDLINE(4)
R7 + 5
LDLINE(4)
R7 +5
LDLINE(5)
R7 +6
LDLINE(6)
R7 +7
COMPARE(A)
COMPARE(0)
图 24-3
4列 LED + 禁用TS
R5
R 5 +1
COMPARE(A)
R5
COMPARE(0)
R 5 +1
COMPARE(1)
R 5 +2
COMPARE(A)
R5
COMPARE(2)
R 5 +3
COMPARE(0)
R5 +1
COMPARE(1)
R5 +2
COMPARE(A)
R5
COMPARE(2)
R5 +3
COMPARE(0)
R5 + 1
COMPARE(3)
R5 +4
COMPARE(1)
R5 + 2
COMPARE(4)
R5 +5
COMPARE(2)
R5 + 3
COMPARE(3)
R5 + 4
COMPARE(4)
R5 + 5
LED
COMPARE(5)
R5 + 6
触摸感应
COMPARE(6)
R5 + 7
输入参数示例 (仅使能 LED 功能)
用户手册
ROM Library, V1.4
24-18
V1.1, 2010-09
XC83x
ROM Library
24.2.1.2 SET_LDLINE_CMP 函数的输入 (仅使能触摸感应功能)
仅使能触摸感应功能时,相应的输入参数归纳见表 24-13 (采用公共比较参数)和
表 24-14 (采用不同的比较参数)。输入参数示例见图 24-4。
用户可以灵活的选择比较参数,也就是说,可为所有 pad turn 选择一个公共比较参数,
或为每个 pad turn 分别选择不同的比较参数。这也为不同的按盘提供了更好的灵敏度。
若 CMP_OPTION (位于地址 R5)设置为 0xFF,表示选择不同的比较参数,则可从
IRAM 地址 R5+1 开始递增读取每个 pad turn 的不同比较参数1)。若 CMP_OPTION 不设
置为 0xFF,表示所有 pad turn 共用一个比较参数,该值写入地址 R5 中2)。
在准备触摸感应功能的比较值时,函数中已考虑到量化效应。各比较值将和 2, 4, 8, 16 ...
进行 XRL 操作,将最终的结果更新到 SFR LTS_COMPARE 中。量化效应提供了更好的
灵敏度,由于所有操作均由函数完成,因此它对用户而言完全不可见。
表 24-13
LDLINE & 公共 COMPARE 设置说明 (仅使能触摸感应功能)
子程序
地址
SET_LDLINE_CMP
输入
当前寄存器 bank 中的 R7:
LDLINE 参数的起始 IRAM 地址
DFCFH
当前寄存器 bank 中的 R5:
CMP_OPTION & COMPARE 参数的起始 IRAM 地址
写入 IRAM 地址 R7 的 LDLINE 参数:
@R7 = COLA ( 用作触摸感应 ) 的 LDLINE 参数
写入 IRAM 地址 R5 的 COMPARE 参数:
@R5 = 所有 pad turn 的公共 COMPARE 参数1)
所需堆栈大小
SFR LTS_LDLINE 设置完成
SFR LTS_COMPARE 设置完成
2
用到的资源
A, R0, R1, R2, R3, R4
输出
1) 该公共比较参数不能设置为 0xFF。
表 24-14
LDLINE & 不同 COMPARE 设置说明 (仅使能触摸感应功能)
子程序
地址
SET_LDLINE_CMP
DFCFH
1) 见表 24-14。
2) 见表 24-13。
用户手册
ROM Library, V1.4
24-19
V1.1, 2010-09
XC83x
ROM Library
表 24-14
LDLINE & 不同 COMPARE 设置说明 (仅使能触摸感应功能)
输入
当前寄存器 bank 中的 R7:
LDLINE 参数的起始 IRAM 地址
当前寄存器 bank 中的 R5:
CMP_OPTION & COMPARE 参数的起始 IRAM 地址
写入 IRAM 地址 R7 的 LDLINE 参数:
@R7 = COLA ( 用作触摸感应 ) 的 LDLINE 参数
写入 IRAM 地址 R5...R5+z 的 COMPARE 参数1)
@R5 = CMP_OPTION (0xFF value)
@R5+1 = PADT0 的 COMPARE 参数
@R5+2 = PADT1 的 COMPARE 参数
...
@R5+z = PADT(z-1) 的 COMPARE 参数
所需堆栈大小
SFR LTS_LDLINE 设置完成
SFR LTS_COMPARE 设置完成
2
用到的资源
A, R0, R1, R2, R3, R4
输出
1) 和使能 pad turn 的个数有关; z = 使能 pad turn 的个数。
用户手册
ROM Library, V1.4
24-20
V1.1, 2010-09
XC83x
ROM Library
24.2.1.3 SET_LDLINE_CMP 函数的输入 (使能 LED 和触摸感应功能)
LED 和触摸感应功能均使能时,相应的输入参数归纳见表 24-15 (采用公共比较参数)
和 (表 24-16 采用不同的比较参数)。输入参数示例见图 24-4 和图 24-5。
用户可以灵活的选择比较参数,也就是说,可为所有 pad turn 选择一个公共比较参数,
或为每个 pad turn 分别选择不同的比较参数。这也为不同的按盘提供了更好的灵敏度。
若 CMP_OPTION (位于地址 R5)设置为 0xFF,表示选择不同的比较参数,则可从
IRAM 地址 R5+1 开始递增读取每个 pad turn 的不同比较参数1)。若 CMP_OPTION 不设
置为 0xFF,表示所有 pad turn 共用一个比较参数,该值写入地址 R5 中2) 。
在准备触摸感应功能的比较值时,函数中已考虑到量化效应。各比较值将和 2, 4, 8, 16 ...
进行 XRL 操作,将最终的结果更新到 SFR LTS_COMPARE 中。量化效应提供了更好的
灵敏度,由于所有操作均由函数完成,因此它对用户而言完全不可见。
表 24-15
LDLINE & 公共 COMPARE 设置说明 (LEDTS)
子程序
地址
SET_LDLINE_CMP
输入
当前寄存器 bank 中的 R7:
LDLINE 参数的起始 IRAM 地址
DFCFH
当前寄存器 bank 中的 R5:
COMPARE 参数的起始 IRAM 地址
写入 IRAM R7... R7+y 的 LDLINE 参数1) .
@R7 = COLA (用作触摸感应功能)的 LDLINE 参数
@R7+1 = COL0 的 LDLINE 参数
...
@R7+y = COL(y-1) 的 LDLINE 参数
写入 IRAM R5... R5+y 的 COMPARE 参数 1)
@R5 = pad turn (COLA) 的公共 COMPARE 参数2)
@R5+1 = COL0 的 COMPARE 参数
...
@R5+y = COL(y-1) 的 COMPARE 参数
所需堆栈大小
SFR LTS_LDLINE 设置完成
SFR LTS_COMPARE 设置完成
2
用到的资源
A, R0, R1, R2, R3, R4
输出
1) 和使能 LED 的列数有关; y = 使能 LED 的列数。触摸感应功能使能时,最多可使用 7 列 LED。 .
2) 该公共比较参数不能设置为 0xFF。
1) 见表 24-16。
2) 见表 24-15。
用户手册
ROM Library, V1.4
24-21
V1.1, 2010-09
XC83x
ROM Library
表 24-16
LDLINE & 不同 COMPARE 设置说明 (LEDTS)
子程序
地址
SET_LDLINE_CMP
输入
当前寄存器 bank 中的 R7:
LDLINE 参数的起始 IRAM 地址
DFCFH
当前寄存器 bank 中的 R5:
CMP_OPTION & COMPARE 参数的起始 IRAM 地址
写入 IRAM 地址 R7...R7+y 的 LDLINE 参数:
@R7 = COLA ( 用作触摸感应功能 ) 的 LDLINE 参数
@R7+1 = COL0 的 LDLINE 参数
...
@R7+y = COL(y-1) 的 LDLINE 参数
写入 IRAM R5... R5+(y+z) 的 COMPARE 参数1)
@R5 =CMP_OPTION (0xFF)
@R5+1 = COL0 的 COMPARE 参数
@R5+2 = COL1 的 COMPARE 参数
...
@R5+y = COL(y-1) 的 COMPARE 参数
@R5+(y+1) = PADT0 的 COMPARE 参数
@R5+(y+2) = PADT1 的 COMPARE 参数
...
@R5+(y+z) = PADT(z-1) 的 COMPARE 参数
所需堆栈大小
SFR LTS_LDLINE 设置完成
SFR LTS_COMPARE 设置完成
2
用到的资源
A, R0, R1, R2, R3, R4
输出
1) 和使能 LED 的列数和使能 pad turn 的个数有关; y = 使能 LED 的列数, z = 使能 pad turn 的个数。
用户手册
ROM Library, V1.4
24-22
V1.1, 2010-09
XC83x
ROM Library
无 LED + 8个TS PAD使能
TS PADTx的比较值不同
无 LED + 8个TS PAD使能
TS PADTx的比较值相同
2列 LED + 2个TS PAD使能
TS PADTx的比较值不同
LDLINE(A)
LDLINE(A)
LDLINE(A)
R7
LDLINE(A)
R7
LDLINE(0)
R7 +1
LDLINE(0)
R7 + 1
LDLINE(1)
R7 +2
LDLINE(1)
R7 + 2
CMP_ OPTION=
0xFF
R7
R5
R7
公共
COMPARE (PADTx) R5
2 列 LED + 2个TS PAD使能
TS PADTx的比较值相同
COMPARE
(PADT0)
R5 +1
COMPARE
(PADT1)
R5 +2
CMP_ OPTION=
0xFF
COMPARE
(PADT2)
R5 +3
COMPARE(0)
R5 + 1
COMPARE(0)
R5 + 1
COMPARE
(PADT3)
R5 +4
COMPARE (1)
R5 + 2
COMPARE(1)
R5 + 2
COMPARE
(PADT4)
R5 +5
COMPARE
(PADT0)
R5 + 3
COMPARE
(PADT5)
R5 +6
COMPARE
(PADT1)
R5 + 4
COMPARE
(PADT6)
R5 +7
COMPARE
(PADT7)
R5 +8
R5
公共
COMPARE(PADTx) R5
LED
触摸感应
图 24-4
输入参数示例 1 (LED 和触摸感应功能均使能)
用户手册
ROM Library, V1.4
24-23
V1.1, 2010-09
XC83x
ROM Library
4列 LED + 5个TS PAD使能
TS PADTx的比较值不同
4列 LED + 5个TS PAD使能
TS PADTx的比较值相同
7列 LED + 8个TS PAD使能
TS PADTx的比较值不同
7列LED + 8个TS PAD使能
TS PADTx的比较值相同
LDLINE (A)
R7
LDLINE (A)
R7
LDLINE (A)
R7
LDLINE (A)
R7
LDLINE (0)
R 7 +1
LDLINE(0)
R7 + 1
LDLINE (0)
R 7 +1
LDLINE (0)
R 7+1
LDLINE (1)
R 7 +2
LDLINE (1)
R7 + 2
LDLINE (1)
R 7 +2
LDLINE (1)
R 7+2
LDLINE (2)
R 7 +3
LDLINE (2)
R7 + 3
LDLINE (2)
R 7 +3
LDLINE (2)
R 7+3
LDLINE (3)
R 7 +4
LDLINE (3)
R7 + 4
LDLINE (3)
R 7 +4
LDLINE (3)
R 7+4
LDLINE (4)
R7 + 5
LDLINE (4)
R 7 +5
LDLINE (5)
R7 + 6
LDLINE (5)
R 7 +6
LDLINE (6)
R7 + 7
LDLINE (6)
R 7 +7
CMP_ OPTION=
0 xFF
R5
公共
COMPARE(PADTx)
R5
COMPARE(0)
R5 +1
COMPARE(0)
R 5 +1
COMPARE(1)
R5 +2
COMPARE(1)
R 5 +2
COMPARE(2)
R5 +3
COMPARE(2)
R 5 +3
CMP_ OPTION=
0xFF
COMPARE(3)
R5 +4
COMPARE(3)
R 5 +4
COMPARE(0)
R 5 +1
COMPARE(0)
R 5 +1
COMPARE
( PADT0)
R5 +5
COMPARE(1)
R 5 +2
COMPARE(1)
R 5 +2
COMPARE
( PADT1)
R5 +6
COMPARE(2)
R 5 +3
COMPARE(2)
R 5 +3
COMPARE
(PADT2)
R5 +7
COMPARE(3)
R 5 +4
COMPARE(3)
R 5 +4
COMPARE
( PADT3)
R5 + 8
COMPARE(4)
R 5 +5
COMPARE(4)
R 5 +5
COMPARE
( PADT4)
R5 + 9
COMPARE(5)
R 5 +6
COMPARE(5)
R 5 +6
COMPARE(6)
R 5 +7
COMPARE(6)
R 5 +7
COMPARE
(PADT0)
R 5 +8
COMPARE
(PADT1)
R 5 +9
COMPARE
(PADT2)
R 5 + 10
COMPARE
(PADT3)
R 5 + 11
COMPARE
(PADT4)
R 5 + 12
COMPARE
(PADT5)
R5 + 13
COMPARE
(PADT6)
R5 + 14
LED
COMPARE
(PADT7)
R 5 + 15
触摸感应
图 24-5
R5
公共
COMPARE(PADTx)
R5
输入参数示例 2 (LED 和触摸感应功能均使能)
用户手册
ROM Library, V1.4
24-24
V1.1, 2010-09
XC83x
ROM Library
24.2.2
FINDTOUCHEDPAD 函数 (触摸感应)
触摸感应的概念是基于将按盘看作是 pad 和地之间的一个电容。手指触摸按盘时,电容
将改变。可通过按盘、电阻和 I/O pad 组成的 RC 振荡回路来测量电容变化。由一个 8 位
计数器对预设时间段内的振荡操作进行计数 (即构成一个频率计数器)。每个 pad turn
均使用该频率计数器 (LTS_TSVAL)。用户可决定采样次数以累加构成一个总频率计数
器 (TOTAL_TSCTRL/H)。
可由函数 FINDTOUCHEDPAD 成功检测按盘是否被触摸,该函数包括以下特性:
· 找到平均值
· 找到 LowTrip (trip point)
· 找到哪个按盘被触摸并产生状态标志
图 24-6 示出该函数的使用概况;图 24-7 给出该函数中 SFR 的设置。
LPF增益
2 除数 n
Average0
Average1
Average2
Total_TSCTR x 2
LowTrip
Average3
Average4
Average5
减操作
Y= X-m
Average6
Average7
递增
n
PadFlag0
PadFlag1
PadFlag2
比较
+
PadFlag3
PadFlag4
PadFlag5
PadFlag6
PadFlag7
PADT
i =0
ITF_EN
累加
AcCnt
LTS_TSVAL
Σ
i =1
低通滤波器
Y’ = K/T*Y + X – 1/T*Y
K = T = 2 除数 n
LTS_TSVAL
图 24-6
FINDTOUCHEDPAD 函数概览
用户手册
ROM Library, V1.4
24-25
V1.1, 2010-09
图 24-7
用户手册
ROM Library, V1.4
TSINx
24-26
IO pad
OD
TSCTRVAL
8位计数器
TSCTRR
Pad控制
EPULL
振荡脉冲计数
TSCTRSAT
TSCTROVF
触摸盘
(可选)
外部上拉
COLA
中断控制
时帧
PADT
TFF
i =1
ΣLTS_TSVAL
AcCnt
累加
i =0
递增 PADT
I TF_EN
振荡回路
TSOEXT
有效延长
Pad选择
PADTSW
自动扫描
Pad振荡使能
除数 n
K = T= 2
Y=X- m
减操作
LowTrip
Total_TSCTR x 2
Y’ = K/T*Y + X –1/T*Y
低通滤波器
Average7
Average6
Average5
Average4
Average3
Average2
Average1
Average0
2 除数 n
LPF增益
+
比较
-
PadFlag7
PadFlag6
PadFlag5
PadFlag4
PadFlag3
PadFlag2
PadFlag1
PadFlag0
XC83x
ROM Library
FINDTOUCHEDPAD 函数 - SFR 设置
V1.1, 2010-09
XC83x
ROM Library
24.2.2.1 FINDTOUCHEDPAD 函数的输入
该函数计算每个 pad turn 的连续平均值以消除 pad 计数频率上的所有毛刺、生成一个可
用于计算 trip point 的稳定值。该平均值 的计算是基于采样次数的累加值(输入:累加计
数器)并包含了低通滤波器增益 (输入:除数 n)。平均值减去某数值 (输入:减数 m)
得到 LowTrip(trip point)。可根据 Low Trip 判断按盘是否被触摸。由状态标志(输出:
PadResult,PadFlag 和 PadError)指示通过函数检测到的各种结果。当至少有一个 pad
标志被置位 (PADFlag 状态 != 0x00)时,则跳过平均值和 Low Trip 计算。
用户可选择每个 pad turn 使用公共的或不同的 trip point 值,这由 IRAM 地址单元 0x32
中的减法选项 (subtraction option)来决定。若减法选项为 0x00,则选择公共减数 m
值,在 IRAM 地址 0x34 中初始化该 m 值;若选择不同的减数 m 值,则将减法选项设置
为存放 不 同
m
值 的 起 始 地 址。用 户 还 可 选择公共或不同的振荡窗周期
(LTS_COMPARE),具体参见章节 24.2.1。
该函数的详细说明列于表 24-17,其参数说明还可参见章节 24.2.2.2,函数的具体实现见
章节 24.2.2.4 的描述。
表 24-17
找到被触摸 touchpad 程序说明
子程序
地址
FINDTOUCHEDPAD
输入
IRAM 地址上的输入参数或 SFR 输入设置
LTS_GLOBCTL0.TS_EN = 11)
使能触摸感应功能和其相应设置
LTS_TSCTL.PADTSW = 0
用户使用该函数时必须禁止硬件控制2)
IRAM 地址 0x30
累加计数值
用于计算平均值所需累加的采样次数。该值可介于 1-255 之间。
ShortCount
该值和 PadDown 计数器 (PDC)的计数值相比较,用以指示
置位 PadResult 标志的有效时段。 PDC < ShortCount 指示有效
时段。一旦检测到某按盘被触摸,立即将 PDC 初始化为 0xFF,
每个周期 PDC 减 1。
IRAM 地址 0x31
IRAM 地址 0x32
用户手册
ROM Library, V1.4
DFCCH
减法选项或减数 m 的地址3)
该减法选项为每个按盘选择公共的或者不同的减数值。若选项为
0x00,则选择公共减数 m 值,该值存放在 IRAM 地址 0x34 中
;若选项不为 0x00,则为各按盘选择不同的减数值,此时该地
址单元中存放不同减数 m 的起始地址。
24-27
V1.1, 2010-09
XC83x
ROM Library
表 24-17
找到被触摸 touchpad 程序说明
IRAM 地址 0x33
除数 n
用于计算平均值的低通滤波器增益(2n),n 可取 1, 2, 3, 4, 5, 6,
7, 8,所对应的低通滤波器增益为 2, 4, 8... 256。
IRAM 地址 0x34
减数 m 值:
平均值减去该 m 值计算得到 LowTrip (Trip point)值。
公共减数 m 值4)
或
· 减数 m 值的地址5):PADT0 的减数 m 值
· 减数 m 值的地址 +1:PADT1 的减数 m 值 1
· 减数 m 值的地址 +2:PADT2 的减数 m 值
· 减数 m 值的地址 +z:PADTz 的减数 m 值
其中 z 代表被使能 pad turn 的个数
或
0x32 上用户定义的
IRAM 地址 2
IRAM 地址 0x2D
PadError 状态
若该位为 1,函数将退出相应的 pad turn,不进行任何分析。当
位 PadFlag 为 0 时,用户应清除该状态以便进一步分析。
IRAM 地址 0x2E
PadResult 状态
若该位为 1,函数将退出相应的 pad turn,不进行任何分析。当
位 PadFlag 为 0 时,用户应清除该状态以便进一步分析。
输出
IRAM 地址上的输出参数:
IRAM 地址 0x2D
PadError 状态
位 0 指示 PADT0 的错误状态
位 1 指示 PADT1 的错误状态
..
位 7 指示 PADT7 的错误状态
该字节 / 位指示按盘被触摸的时间过长。该字节 / 位不由函数清
零,必须由用户清零。只有当 PadFlag 为 0 时才能访问该状态。
IRAM 地址 0x2E
PadResult 状态
位 0 指示 PADT0 的结果状态
位 1 指示 PADT1 的结果状态
..
位 7 指示 PADT7 的结果状态 7
该字节 / 位指示按盘在有效时段内被触摸。该字节 / 位不由函数
清零,必须由用户清零。只有当 PadFlag 为 0 时才能访问该状
态。
用户手册
ROM Library, V1.4
24-28
V1.1, 2010-09
XC83x
ROM Library
表 24-17
找到被触摸 touchpad 程序说明
IRAM 地址 0x2F
所需堆栈大小
PadFlag 状态
位 0 指示 PADT0 的标志状态
位 1 指示 PADT1 的标志状态
..
位 7 指示 PADT7 的标志状态
该字节 / 位为 1 指示按盘正被触摸并在进行分析。分析完毕后,
该字节 / 位由函数清零。该字节 / 位由函数置位或清零,用户绝
不能访问该位。当相应的 PadFlag 为 0 时,用户可读取
PadError 和 PadResult 的状态。
2
用到的资源
A, R0, R1, R3, R4, R5, R6, R7
IRAM 地址 0x2D - 0x2F (3 字节)
XRAM 地址 0xF0EC - 0xF0FF (最多 20 字节)6)
1) 使能触摸感应控制以及触摸感应 pad turn 的个数和中断标志 (时帧 / 时间片)。
2) 该函数将控制 pad turn 的个数并通过 LTS_TSCTL.PADT 进行配制。
3) 若用户将该值设置为 0x34(举例),则 :IRAM 地址 0x34 上的减数 m 值用于 PADT0 ; IRAM 地址 0x35 上的减
数 m 值用于 PADT1 ; IRAM 地址 0x36 上的减数 m 值用于 PADT2,依此类推。
4) 若所有按盘使用公共的减数 m 值,在 IRAM 地址 0x32 上将减法选项设置为 0x00。
5) 在 IRAM 地址 0x32 上定义减数 m 值的起始地址。
6) 该函数保存用于计算平均值、 Low trip 值和决定触摸状态的参数。切勿修改这些单元中的数据以保证触摸感应
算法有效,详见章节 24.2.2.3 的描述。
Notes:
· 该函数使用固定的 IRAM 地址段 0x2D - 0x34 和 XRAM 地址段 0xF0EC - 0xF0FF。这
些地址段不能被其它用户程序设置。检测到出错时,用户可对其清零以重新开始计
算。
· 软件必须顺序使能触摸感应 pad turn (如: PADT0, PADT1...)。 用户不能使能 3 个
pad turn 并将其定义为 PADT0、PADT4 和 PADT6 ,必须将它们定义 PADT0、PADT1
和 PADT2。
· pad turn 的保持时间为(累加计数值 +11)),当 TSCTR_COUNTER2) 为 0x00 时,函
数使 pad turn 加 1。一旦最高使能 pad turn 被置位,函数重新返回 PADT0。例如,
若累加计数器定义为 0x04,使能 2 个触摸感应 pad turn,PADTx 的顺序将为 PADT1,
PADT1,PADT1,PADT1,PADT1,PADT0,PADT0,PADT0,PADT0, PADT0, PADT1...。
· 通常在产生时帧中断时调用该函数,但用户也可在产生时间片中断时调用该函数。
1) 附加一个计数周期用于计算平均值。
2) TSCTR_COUNTER 是存放在 XRAM 中的一个参数,它用于保存用户自定义的输入参数 - 累加计数值。当
LTS_GLOBCTL1.FNCOL = 0x07 (触摸感应功能)每次调用 FINDTOUCHEDPAD 函数时,该值减 1。
用户手册
ROM Library, V1.4
24-29
V1.1, 2010-09
XC83x
ROM Library
· 该函数会检查 LTS_GLOBCTL1.FNCOL 是否为 0x07,因此,产生时间片中断时,用
户可在函数 SET_LDLINE_CMP 之前安全的调用该函数,两个函数之间无需额外的检
查代码。该函数在执行其余部分之前将首先检查该时间片中断是否对应于触摸感应功
能。若 TS_GLOBCTL1.FNCOL 不是 0x07,函数将退出。可参见图 24-13。
用户手册
ROM Library, V1.4
24-30
V1.1, 2010-09
XC83x
ROM Library
24.2.2.2 FINDTOUCHEDPAD 函数的输出
该函数 检 测 按 盘 是 否 被 触 摸 并 确 定 其 状 态,函 数 输 出为 PadFlag、 PadResult 和
PadError。
该函数检查按盘是否被触摸 (当前的计数值是否小于 trip point)并在 PadFlag 状态寄存
器中设置相应的标志位。PadFlag 首次被置位时,由软件实现的 Pad 递减计数器(PDC)
将被初始化为 0xFF,每个周期1)PDC 减 1 直至按盘被释放,或直至 PDC 已递减至 0x00。
若 PadFlag 状态被置位,则意味着某个按盘正在被评估,此时, PadResult 和 PadError
应被忽略。一旦评估完成, PadFlag 状态寄存器中的相应标志位将被清零,结果由
PadResult 和 PadError 状态寄存器给出。
按盘是否被触摸分为两种情况:
· 已触摸 (PadFlag = 1)
· 未触摸 (PadFlag = 1)
被触摸按盘分为三种结果:
· 有效触摸 (PadResult = 1)
· 无效触摸 (短暂触摸 - 忽略)
· 过长时间触摸 (PadError = 1)
一旦按盘被释放 (PDC 的计数值高于 trip point),将 PDC 和预先设定的 ShortCount
(输入)阈值进行比较。若高于该阈值,PadFlag 被清零,不再执行其它操作。该情况被
视为无效触摸。
若 PDC 低于该阈值但 >0,清除 PadFlag 并置位 PadResult 中相应的标志位,这意味着
已识别到成功的触摸操作。 但一旦 PDC 递减到 0,则清除 PadFlag 并置位 PadError 中
相应的标志位,这意味着触摸时间过长。
由于这些操作占用多个时间片时间,用户程序在读取 PadError 或 PadResult 之前必须检
查确保 PadFlag 已清零。 PadFlag 非零说明仍在对按盘进行分析。
PadFlag(F)
Pad Flag 状态 (IRAM 地址 0x2F)
7
6
5
复位值:00H
4
3
2
1
0
PadTurn7 PadTurn6 PadTurn5 PadTurn4 PadTurn3 PadTurn2 PadTurn1 PadTurn0
rw
rw
rw
rw
rw
rw
rw
rw
1) 所有使能按盘的累加计数周期 (AEPACP)。见公式 (24.23)。
用户手册
ROM Library, V1.4
24-31
V1.1, 2010-09
XC83x
ROM Library
符号
位
类型
描述
PadTurn0
0
rw
Pad Turn 0 的 PadFlag
0B 未触摸按盘
1B 已触摸按盘
PadTurn1
1
rw
Pad Turn 1 的 PadFlag
0B 未触摸按盘
1B 已触摸按盘
PadTurn2
2
rw
Pad Turn 2 的 PadFlag
0B 未触摸按盘
1B 已触摸按盘
PadTurn3
3
rw
Pad Turn 3 的 PadFlag
0B 未触摸按盘
1B 已触摸按盘
PadTurn4
4
rw
Pad Turn 4 的 PadFlag
0B 未触摸按盘
1B 已触摸按盘
PadTurn5
5
rw
Pad Turn 5 的 PadFlag
0B 未触摸按盘
1B 已触摸按盘
PadTurn6
6
rw
Pad Turn 6 的 PadFlag
0B 未触摸按盘
1B 已触摸按盘
PadTurn7
7
rw
Pad Turn 7 的 PadFlag
0B 未触摸按盘
1B 已触摸按盘
PadResult(R)
PadResult 状态 (IRAM 地址 0x2E)
7
6
5
复位值:00H
4
3
2
1
0
PadTurn7 PadTurn6 PadTurn5 PadTurn4 PadTurn3 PadTurn2 PadTurn1 PadTurn0
rw
rw
用户手册
ROM Library, V1.4
rw
rw
rw
24-32
rw
rw
rw
V1.1, 2010-09
XC83x
ROM Library
符号
位
类型
描述
PadTurn0
0
rw
Pad Turn 0 的 PadResult
0B 触摸按盘无效
1B 触摸按盘有效
PadTurn1
1
rw
Pad Turn 1 的 PadResult
0B 触摸按盘无效
1B 触摸按盘有效
PadTurn2
2
rw
Pad Turn 2 的 PadResult
0B 触摸按盘无效
1B 触摸按盘有效
PadTurn3
3
rw
Pad Turn 3 的 PadResult
0B 触摸按盘无效
1B 触摸按盘有效
PadTurn4
4
rw
Pad Turn 4 的 PadResult
0B 触摸按盘无效
1B 触摸按盘有效
PadTurn5
5
rw
Pad Turn 5 的 PadResult
0B 触摸按盘无效
1B 触摸按盘有效
PadTurn6
6
rw
Pad Turn 6 的 PadResult
0B 触摸按盘无效
1B 触摸按盘有效
PadTurn7
7
rw
Pad Turn 7 的 PadResult
0B 触摸按盘无效
1B 触摸按盘有效
PadError(E)
PadError 状态 (IRAM 地址 0x2D)
7
6
5
复位值:00H
4
3
2
1
0
PadTurn7 PadTurn6 PadTurn5 PadTurn4 PadTurn3 PadTurn2 PadTurn1 PadTurn0
rw
rw
用户手册
ROM Library, V1.4
rw
rw
rw
24-33
rw
rw
rw
V1.1, 2010-09
XC83x
ROM Library
符号
位
类型
描述
PadTurn0
0
rw
Pad Turn 0 的 PadError
0B 触摸按盘无误
1B 触摸按盘有误 (长按)
PadTurn1
1
rw
Pad Turn 1 的 PadError
0B 触摸按盘无误
1B 触摸按盘有误 (长按)
PadTurn2
2
rw
Pad Turn 2 的 PadError
0B 触摸按盘无误
1B 触摸按盘有误 (长按)
PadTurn3
3
rw
Pad Turn 3 的 PadError
0B 触摸按盘无误
1B 触摸按盘有误 (长按)
PadTurn4
4
rw
Pad Turn 4 的 PadError
0B 触摸按盘无误
1B 触摸按盘有误 (长按)
PadTurn5
5
rw
Pad Turn 5 的 PadError
0B 触摸按盘无误
1B 触摸按盘有误 (长按)
PadTurn6
6
rw
Pad Turn 6 的 PadError
0B 触摸按盘无误
1B 触摸按盘有误 (长按)
PadTurn7
7
rw
Pad Turn 7 的 PadError
0B 触摸按盘无误
1B 触摸按盘有误 (长按)
24.2.2.3 FINDTOUCHEDPAD 函数的 XRAM 参数
FINDTOUCHEDPAD 函数计算每个 pad turn 的平均值并检测每次触摸为有效、无效或过
长时间触摸 (由输出状态指示) 。该函数保存的参数用于跟踪按盘被触摸的时间长短
(PDC)、 LTS_TSVAL 的累加值以及所有 pad turn 的平均值 AverageL/H,函数使用并
更新这些参数,用户切勿对其进行修改。表 24-18 列出这些参数、相应的地址以及参数
说明。
用户手册
ROM Library, V1.4
24-34
V1.1, 2010-09
XC83x
ROM Library
表 24-18
存放在 XRAM 中的参数
参数
地址
说明
Pad 递减计数器
(PDC)
0xF0FF
PDC1) 用于跟踪按盘被触摸的时间长短。一旦检测到
触摸操作, PDC 被初始化为 0xFF,每个周期2) PDC
减 1。按盘被释放后,将 PDC 和输入值 ShortCount
和 / 或 0x00 比较以确定该次触摸为有效、无效或过
长时间模式。
TOTAL_TSCTR
(高字节)
TOTAL_TSCTR
(低字节)
TSCTR_Counter
0xF0FE
TOTAL_TSCTRL/H3) 是累加触摸感应计数值
(LTS_TSVAL)。该值将用于计算平均值并和
4)
0xF0FD LowTrip 值 进行比较。
0xF0FC
TSCTR_Counter5) 基于输入值 “累加计数器”跟踪
LTS_TSVAL 的累加值。
Average0 (高字节) 0xF0FB
Average0 (低字节) 0xF0FA
pad turn 0 (PADT0)的平均值6)
Average1 (高字节) 0xF0F9
Average1 (低字节) 0xF0F8
pad turn 1 (PADT1)的平均值 6)
Average2 (高字节) 0xF0F7
Average2 (低字节) 0xF0F6
pad turn 2 (PADT2)的平均值 6)
Average3 (高字节) 0xF0F5
Average3 (低字节) 0xF0F4
pad turn 3 (PADT3)的平均值 6)
Average4 (高字节) 0xF0F3
Average4 (低字节) 0xF0F2
pad turn 4 (PADT4)的平均值 6)
Average5 (高字节) 0xF0F1
Average5 (低字节) 0xF0F0
pad turn 5 (PADT5)的平均值 6)
Average6 (高字节) 0xF0EF
Average6 (低字节) 0xF0EE
pad turn 6 (PADT6)的平均值 6)
Average7 (高字节) 0xF0ED
Average7 (低字节) 0xF0EC
pad turn 7 (PADT7)的平均值 6)
1) 可修改 PDC 来调整检测周期以产生 PadError 或 PadResult 结果。
2) 该周期指所有使能按盘的累加计数周期。参见公式 (24.23)。
3) TSCTR_Counter 不为 0x00 时,它意味着累加未结束,当前的 TOTAL_TSCTRL/H 数值还不是总触摸感应计数
值。
4) 具体实现请参见章节 24.2.2.4。
5) TSCTR_Counter为0x00时,TOTAL_TSCTRL/H的数值 即和LowTrip比较,从而确定是否检测到触摸操作或按
盘是否被释放。 PadFlag 为 0 后,发生下一次时间片 / 时帧中断时,该值将用于计算相应的平均值。
用户手册
ROM Library, V1.4
24-35
V1.1, 2010-09
XC83x
ROM Library
6) 始终更新平均值, PadFlag 不为 0x00 的情况除外 (检测到触摸操作并在处理中)。有关平均值的计算,参见
章节 24.2.2.4 的描述。用于存放平均值的 XRAM 地址个数和使能 pad turn 的个数有关,8 个平均值最多 16 个
地址。 若 pad turn 未使能,则不使用相应的地址。
24.2.2.4 函数的具体实现
函数中用到的主要公式包括:如何得到 Total_TSCTRL/H,如何计算平均值,如何计算
LowTrip(Trip point)以及如何进行比较以判断按盘是否被触摸。使用 SFR LTS_TSVAL
的值进行计算。
在输入参数 “AccumulatorCounter (累加计数值)”中定义需要累加的总采样次数。所
有采样的总数值 (TOTAL_TSCTRL/H)是 SFR LTS_TSVAL 数值的累加结果。
(24.14)
AccumulatorCounter
∑
TOTAL_TSCTRL/H(x) =
LTS_TSVAL(i)
i=1
其中 i 是用户定义的输入参数 - 累加计数值 (采样次数),该值可介于 1-255 之间。
平均值的计算见 公式 (24.15)。
(24.15)
AVERAGEL/H(x-1)
AVERAGEL/H(x) = AVERAGEL/H(x-1) + TOTAL_TSCTRL/H(x) – --------------------------------------------n
2
其中 n 是用户定义的输入参数 - 除数 n,该值可取 1 - 8。
平均值减去用户定义的输入参数 - 减数 m,即得到 LowTrip (Trip point)的值,具体计
算见公式 (24.16)。
(24.16)
LOWTRIPL/H(x) = AVERAGEL/H(x) – SUBTRACTION m
将计算得到的 LowTrip 值和当前累加的 LTS_TSVAL 值,即 TOTAL_TSCTRL/H * 2n 进
行比较。
当前累加的 LTS_TSVAL 小于 LowTrip 时,则识别按盘正被触摸,见公式 (24.17):
(24.17)
n
TOTAL_TSCTRL/H(x) × 2 < LOWTRIPL/H(x)
用户手册
ROM Library, V1.4
24-36
V1.1, 2010-09
XC83x
ROM Library
当前累加的 LTS_TSVAL 大于 LowTrip 时,则识别按盘未被触摸或已被释放 (触摸完
毕),见公式 (24.18):
(24.18)
n
TOTAL_TSCTRL/H(x) × 2 ≥ LOWTRIPL/H(x)
一旦识别到按盘正被触摸,计数器 PDC 初始化到 0xFF 并开始递减计数直至触摸完毕。
该情况下,将 PDC 和 ShortCount (输入参数)进行比较,从而判断触摸是否有效。
内部状态
由于触摸感应功能的时分复用特性,该函数被调用时可处于不同的状态,其状态可由该
函数本身或由用户程序来修改。共有 5 种内部状态:空闲、按盘被触摸、按盘被释放、
Error 以及 Result 状态。图 24-8 示出该函数所处的不同状态以及状态之间的转移。
Total_ TSCTRL/ H * 2
>=
LowTripL/ H
空闲
F
0
R
0
E
0
Total_ TSCTRL/ H * 2
<
LowTripL/H
ERROR
由用户清除
error标志
F
0
PDC = 0
R E
0 1
PDC < SC
由用户清除
result标志
图 24-8
F
0
R E
1 0
n
PAD
被触摸
F R E
1 0 0
Total_ TSCTRL/ H * 2
>=
LowTripL/H
RESULT
n
PAD
被释放
F R E
1 1 0
n
PDC >= SC
状态图
进入某状态的操作:
空闲:
进入:检查 Total_TSCTRL/H* 2n < LowTripL/H point 是否成立
退出:若成立,置位相应的 PadFlag 位,启动计数器(PDC)工作,PDC 预设值为 0xFF。
用户手册
ROM Library, V1.4
24-37
V1.1, 2010-09
XC83x
ROM Library
按盘被触摸:
进入 :PDC 递减计数,检查 PDC 是否等于 0,检查 Total_TSCTRL/H* 2n < LowTripL/H
point 是否成立
退出:根据检查的结果置位相应的 PadError 标志、清除 PadFlag 标志或置位 PadResult
标志
按盘被释放:
进入:检查 PDC >= short count 是否成立
退出:若 PDC >= short count,清除所有标志;若 PDC < short count,清除 PadFlag 标志
Pad Result:
进入:检查 PadResult 标志是否由用户清零,若未清零,退出
退出:空闲
Pad Error:
进入:检查 PadError 标志是否由用户清零,若未清零,退出
退出:空闲
Pad 递减计数器 - PDC
函数一旦检测到按盘被触摸,则将 PDC 初始化为 0xFF。每个周期1) 函数使 PDC 减 1,
直至按盘被释放2)。对于两个按盘被触摸的情况,在它们的分析阶段, PDC 仅递减一次
(可检测出 PDC 之前已递减过)。图 24-9 示出 PDC 如何工作。PDC 是一个软件递减计
数器,以周期 1) 作为计数时钟。
1) 所有使能按盘的累加计数周期 (AEPACP)。见公式 (24.23)。
2) 或直至 PDC 递减到 0x00。
用户手册
ROM Library, V1.4
24-38
V1.1, 2010-09
XC83x
ROM Library
ShortCount
阈值
无效触摸
( (过短))
过长触摸
有效触摸
AEPACP
...
FFH FEH ...
00H
计数器预设值(0xFF)
图 24-9
Pad 递减计数器 - PDC
平均值[0]
T otal_ T S CT RL/H
Trip point(LowTrip)
无效触摸
(过短)
有效触摸
过长时间触摸
PadFlag[0]
PadResult[ 0]
PadError[0]
所有使能Pad的累加计数周期(AEPACP)
由用户程序清零
PDC> =
ShortCount
图 24-10
PDC <
ShortCount
PDC <
0x00
时序图
用户手册
ROM Library, V1.4
24-39
V1.1, 2010-09
XC83x
ROM Library
图 24-10 以 Pad turn 0 为例说明 PadFlag、PadResult、PadError 和 PDC 的状态及相互
关系。Trip point(LowTrip)可以固定,或如上图所示,一旦 padflag 被置位时可增加一
定的滞后 (通过改变用户输入减数 m 来实现)。
第一个 PadFlag 被置位时,向 PDC 载入其超时值。在随后的 Pad turn 中,该计数器递
减计数直至到 0,或直至所有的 PadFlag 位被清零后 PDC 置 0。若某个 Pad turn 上次保
持置位的 PadFlag 被清零,退出该函数时 PDC 置 0。若按盘的触摸时间过短 (short
count)或在 PDC 超时之前按盘被释放,可发生这样的情况。
有一种容易被忽略的情况,即在触摸另一个按盘之前用户未清除上一个按盘的 PadError
或 PadResult 标志。在这种情况下 (例如:上一个被触摸的按盘是个组合按盘,下一个
被 触 摸 的 按 盘 是 个 单 一 按 盘,其 按 盘 独 立 于 上 一 个 组 合 按 盘) ,会 有 两 个 以 上 的
PadResult 标志置位。
PDC 每个周期(所有使能按盘的累加计数周期)递减一次,即使两个 PadFlag 位同时置
位。
时间片、时帧和周期的定义
下面给出时间片、时帧和周期的定义。周期的概念包括硬件控制方案的周期和软件控制
ROM Library 方案的周期(单个按盘累加计数周期和所有使能按盘累加计数周期)。触摸
感应功能使能时,时间片、时帧和周期的计算由以下公式给出,它们之间的关系可参见
图 24-11 的示例。
时间片长度 (TSD)的定义见公式 (24.19):
(24.19)
Prescaler × 256
Time Slice Duration = -----------------------------------------f CLK
其中 presclaer 为 LEDTS 计数器时钟的预分频因子 (LTS_GLOBCL0.CLK_PS),输入
时钟 fCLK 为 8 MHz 或 24 MHz,这和 USER_ID 的设置有关。
时帧长度 (TFD)的定义见公式 (24.20):
(24.20)
Time Frame Duration = (Number of Time Slice(s)) × TSD
用户手册
ROM Library, V1.4
24-40
V1.1, 2010-09
XC83x
ROM Library
硬件控制方案中周期的定义见公式 (24.21):
(24.21)
Period (Hardware-Controlled
Scheme)
= (Number of Touch-sense input(s) TSIN[x]) × TFD
软件控制ROM Library方案中,单个按盘累加计数周期(SPACP)的定义见公式 (24.22):
(24.22)
Period (SPAC) = ( AccumulatorCounter + 1 ) × TFD
其中累加计数值为函数 FINDTOUCHEDPAD 的用户自定义输入参数。
软件控制 ROM Library 方案中,所有使能按盘累加计数周期 (AEPACP)的定义见公
式 (24.23):
(24.23)
Period (AEPAC) = Period (SPAC) × (Number of Touch-sense input(s) TSIN[x])
用户手册
ROM Library, V1.4
24-41
V1.1, 2010-09
XC83x
ROM Library
按盘被触摸时, PDC 每个 AEPACP 减 1。 按盘被释放后,检查 PDC 的值。若 PDC <
ShortCount,则触摸有效;若PDC已递减至0x00,则触摸时间过长。最短和最长有效pad
检测周期的定义分别见 公式 (24.24) 和 公式 (24.25)。
(24.24)
Minimum Valid Pad Detection Period (VPDP) = ( 0xFF – ShortCount + 1 ) × AEPACP
(24.25)
Maximum Valid Pad Detection Period (VPDP) = 0xFF × AEPACP
用户可引入 ErrorCount 来缩短最长有效 pad 检测周期(以获得更快输出 PadError=1),
见公式 (24.26)。
(24.26)
Maximum Valid Pad Detection Period (VPDP) = ( 0xFF – ErrorCount + 1 ) × AEPACP
用户手册
ROM Library, V1.4
24-42
V1.1, 2010-09
XC83x
ROM Library
举例:使能7列LED和3个触摸感应Pad Turn
1 个时间片
PADT0
6
5
4
3
2
1
0 TS 6
PADT1
5
4
3
2
1
0 TS 6
PADT0
PADT2
5
4
3
2
1
0 TS 6
5
4
3
2
1
0 TS 6
1个时帧
1个周期(硬件控制方案)
举例:使能7列LED和3个触摸感应Pad Turn,累加计数值 = 0x04
1 个时间片
6
PADT0
PADT0
PADT0
...…0 TS 6
....…0 TS 6
……0 TS 6
PADT0
..…0
PADT0
TS 6 …. … 0 TS 6
PADT1
PADT1
PADT1
… ....0 TS 6 …. …0 TS 6
… .. 0 TS 6
1个时帧
1个周期
(软件控制ROM library方案)
(单个Pad累加计数周期)
PADT1
PADT0
…...
…...
…...
…...
…...
…...
…...
…...
PADT2
… ...
… ...
… ...
… ...
…...
PADT0
…...
…...
…...
…...
…...
…...
…...
1个周期
(单个Pad累加计数周期)
1个周期
(软件控制ROM library 方案)
(所有使能 Pad累加计数周期)
某个Pad被触摸时,PDC在一个周期内(所有使能PADTx累加计数周期)递减1次,
在组合Pad的情况下(2个Pad被触摸),PDC在一个周期内(所有使能PADTx累加计数周期)仍递减1次
图 24-11
软件控制 ROM Library 方案中的周期定义
用户手册
ROM Library, V1.4
24-43
V1.1, 2010-09
XC83x
ROM Library
24.2.3
中断时函数的使用
根据 LED 或 / 和触摸感应功能的使能情况,产生时间片或 时帧中断时可调用这些函数
(前提是函数的输入参数已准备就绪)。图 24-12和图 24-13示出在各种情况下用户如何
调用相应的函数。
* ROM中的函数
若仅使能LED
若仅使能时间片中断
时间片中断
(时间片标志)
用于控制显示的LED列数据,
用于控制亮度的COMPARE值
SET_LDLINE_CMP ()*
RETI
若仅使能TS
若仅使能时帧/时间片中断
时帧/时间片中断
(时帧/时间片标志)
计算被触摸Pad的
平均值和LowTrip
FINDTOUCHEDPAD()*
为Pad的振荡窗设置
COMPARE值
SET_LDLINE_CMP ()*
RETI
若仅使能TS
若使能时间片中断和时帧中断
时间片中断
(时间片标志)
为Pad的振荡窗设置
COMPARE值
SET_LDLINE_CMP ()*
RETI
时帧中断
(时帧标志)
^^时帧中断的优先级较高(缺省设置))
计算被触摸Pad的
平均值和LowTrip
FINDTOUCHEDPAD ()*
RETI
图 24-12
中断服务程序中函数的调用 (i)
用户手册
ROM Library, V1.4
24-44
V1.1, 2010-09
XC83x
ROM Library
* ROM中的函数
若使能LED和TS
若使能时间片中断和时帧中断
时间片中断
(时间片标志)
用于控制显示的LED列数据,
用于控制亮度或振荡窗的
COMPARE值
SET_ LDLINE_CMP ()*
** 每次发生时间片中断时调用
该函数,无论当前处于触摸
感应时间片还是LED时间片
RETI
时帧中断
(时帧标志)
计算被触摸Pad的
平均值和LowTrip
FINDTOUCHEDPAD ()*
^^ 每次发生时帧中断时
调用该函数
RETI
若使能LED和TS
若仅使能时间片中断
.
时间片中断
(时间片标志)
计算被触摸Pad的
平均值和LowTrip
用于控制显示的LED列数据,
用于控制亮度或振荡窗的
COMPARE值
FINDTOUCHEDPAD ()*
^^ 若FNCOL不是0x07,
将退出程序
SET_ LDLINE_CMP()*
RETI
图 24-13
中断服务程序中函数的调用 (ii)
用户手册
ROM Library, V1.4
24-45
V1.1, 2010-09
XC83x
ROM Library
24.3
EEPROM 模拟 ROM Library
XC83x 通过 ROM library 为用户提供了 EEPROM 模拟功能。使用片上 Flash 模拟
EEPROM。ROM library 提供了一种访问模拟 EEPROM 的程序框架。
针对该程序框架的说明,可参阅应用指南“AP0805710 XC866/XC886/XC888 EEPROM
模拟”。
24.3.1
特性
EEPROM 模拟 ROM library 具有以下特性:
· 提供初始化、修改和读 / 写模拟 EEPROM 的函数
· 支持模拟 EEPROM 的大小:31、 62、 93 和 124 字节
· 高达 160 万次的耐擦写周期 @ 2 年的数据保持时间
24.3.2
系统要求
ROM library 有以下要求:
·
·
·
·
使用 Flash 地址段 AE00H - AFFFH 共 512 个字节进行 EEPROM 模拟1)
支持 KEIL C51 工具链 (小存储器模型,大端,寄存器调用规则)
只支持基于查询的 Flash 操作2)
不支持编程退出检测
24.3.3
概念
使用 Flash 中的 512 个字节 (分为两个逻辑扇区)来模拟 EEPROM。每次仅有一个逻
辑扇区为“有效扇区”,即该扇区内包含着最新数据。用户程序在模拟 EEPROM 之前必
须先进行相应的初始化,这包括调用初始化函数并指定模拟方案。初始化函数将更新
页 24-48 “EEPROMInfo 数据结构”中的信息 (ROM liabary 函数将使用该信息)。
ROM library 支持 4 种模拟方案,即模式 0 (Mode_0)、模式 1 (Mode_1)、模式 2
(Mode_2)和模式 3 (Mode_3)。每种模式代表一种模拟 EEPROM 的大小。
用户程序通过逻辑地址访问模拟 EEPROM。有效逻辑地址的数目和模拟 EEPROM 的大
小有关。每个逻辑地址代表 32 个数据字节,其中 31 个用户数据字节和 1 个状态字节,
这对应一次 Flash 写操作的大小,即 Flash 字线 (WL)大小。
逻辑地址提供了一种方便的抽象,使用户程序无需处理 Flash 的实际物理地址。
ROM library 通过状态字节来管理 EEPROM 模拟。向每条 Flash 字线的最后一个字节中
写入状态字节。用户程序可安全的忽略该字节。
1) 对于 8K 的器件而言,使用 Flash 地址段 1E00H- 1FFFH 来模拟 EEPROM ;对于 4K 的器件而言,使用 Flash
地址段 0E00H- 0FFFH 来模拟 EEPROM。
2) 使用 Boot ROM flash 用户程序 (非后台),包括 NMI 在内的所有中断必须禁用。
用户手册
ROM Library, V1.4
24-46
V1.1, 2010-09
XC83x
ROM Library
表 24-19
EEPROM 模拟方案
模拟方案
模拟 EEPROM 大小 (字节)
有效逻辑地址
Mode_0
31 数据 + 1 状态
WL_0
Mode_1
62 数据 + 2 状态
WL_0 & WL_1
Mode_2
93 数据 + 3 状态
WL_0, WL_1 & WL_2
Mode_3
124 数据 + 4 状态
WL_0, WL_1, WL_2 & WL_3
表 24-20
逻辑地址和数据字节的关系
逻辑地址
数据字节
WL_0
0 - 30
WL_1
31 - 61
WL_2
62 - 92
WL_3
93 - 124
初始化函数还可进行一些基本的检错操作。它可检测 Flash 擦除操作期间是否发生退出、
以及模拟 EEPROM 是否首次被使用。 InitEEPROM() 假定:在首次调用该函数时,用于
模拟 EEPROM 的 Flash 区段已被擦除。
用户程序使用逻辑地址通过读写函数访问模拟 EEPROM。每次读操作将读取 31 个用户
数据字节和 1 个状态字节,这些字节将保存在由调用函数指定的 IRAM 地址中。
类似的,每次写操作只能写入 31 个用户数据字节和 1 个状态字节,这些待写入的字节应
保存在由调用函数指定的 IRAM 地址中。状态字节将由写函数自动更新。
一旦 “有效扇区”中填满数据,随后的写操作将指向下一个逻辑扇区。下一个逻辑扇区
将成为 “有效扇区”,上一个 “有效扇区”被收回。收回操作包括:在擦除上一个 “有
效扇区”之前,将其中的所有有效数据写入当前的 “有效扇区”中。
要更新少于 31 个字节的数据时,用户程序必须先从存放这些数据的逻辑地址上读出该数
据。一旦读出的数据被保存在 IRAM 中,用户程序将会更新 IRAM 中的相关数据,随后
调用写函数将新数据写入模拟 EEPROM。
24.3.4
API 说明
模拟 EEPROM 的操作由一个数据结构和四个函数控制。此外还给出一些常量的定义以便
于使用。
24.3.4.1 常量定义
函数为多个常量定义了有意义的名称,这样可提高代码的可读性。
EEPROM 模拟方案
用户手册
ROM Library, V1.4
24-47
V1.1, 2010-09
XC83x
ROM Library
·
·
·
·
#define MODE_0 32
#define MODE_1 64
#define MODE_2 96
#define MODE_3 128
逻辑地址
· #define WL_0 0
· #define WL_1 1
· #define WL_2 2
· #define WL_3 3
24.3.4.2 EEPROMInfo 数据结构
EEPROM 模拟 API 采用一个称为 EEPROMInfo 的数据结构来管理 EEPROM 模拟操作。
typedef struct EEPROMInfo{
unsigned int ActiveSector;
unsigned int WriteAddress;
unsigned char DataSize;
}idata EEPROMInfo;
EEPROMinfo 结构中包含 3 个变量:ActiveSector、 WriteAddress 和 DataSize。该结构
必须由用户程序声明并保存在间接 IRAM 地址中。
ActiveSector 存放当前“有效扇区”的地址,ReadEEPROM() 将使用该变量以定位当前
模拟的数据组。WriteAddress 存放数据写入的起始地址,用户程序调用 WriteEEPROM()
时将使用该变量。调用 InitEEPROM() 和 WriteEEPROM() 时更新这两个变量。DataSize
存放 EEPROM 模拟的数据组大小。
EEPROMInfo 不能由用户直接修改,它只能由 EEPROM 模拟 API 提供的函数来修改。
24.3.4.3 函数
EEPROM 模拟 API 提供以下 4 个函数:
· InitEEPROM
· FixEEPROM
· WriteEEPROM
· ReadEEPROM
在访问模拟 EEPROM 时必须使用这些函数。
InitEEPROM
用户手册
ROM Library, V1.4
24-48
V1.1, 2010-09
XC83x
ROM Library
表 24-21
InitEEPROM
函数
InitEEPROM
函数原型
unsigned char InitEEPROM(unsigned char mode,
EEPROMInfo *config)
输入
mode - 模拟方案,即模拟 EEPROM 的大小,有效值为 32, 64,
96 和 128
config - 指向 EEPROMInfo 数据结构的指针
返回
status - 模拟 EEPROM 的状态。输入到 FiXEEPROM()
0x0 - 模拟 EEPROM 的状态 OK
0x1 - 扇区 8 & 9 需要擦除
0x2 - 扇区 6 & 7 需要擦除
0x3 - 扇区 6 - 9 需要擦除
最大堆栈大小
4 字节
InitEEPROM() 将根据选定的模拟方案初始化 EEPROMInfo 数据结构。在使用其它 API
函数之前至少需要调用一次该函数。InitEEPROM() 假定:在首次调用该函数时,用于模
拟 EEPROM 的 Flash 区段处于擦除状态。
InitEEPROM()
将 会 更 新 EEPROM 配 置,指 示 当前的 “有效扇区”和随后调用
WriteEEPROM() 函数时数据将要写入的 Flash 地址。
包含有效状态字节的扇区被选作“有效扇区”。若两个逻辑扇区均包含有效的状态字节,
包含有效状态字节数目最少的逻辑扇区被选作“有效扇区”。此外,InitEEPROM() 还将
返回错误状态,请求对包含最多有效状态字节的扇区进行擦除。不过会有一种不期望的
情况:在 WriteEEPROM() 收回操作期间突然断电。
以 124 字节 EEPROM 模拟为例:若在 WriteEEPROM() 回收操作期间突然断电,此时并
非 124 字节的有效信息全部被复制到新扇区中。
InitEEPROM() 还将检查擦除操作是否意外退出并返回状态字节指示需要重新初始化的
扇区。
FixEEPROM
表 24-22
FixEEPROM
函数
FixEEPROM
函数原型
void FixEEPROM(unsigned char sector_status,
unsigned char idata *buffer)
用户手册
ROM Library, V1.4
24-49
V1.1, 2010-09
XC83x
ROM Library
表 24-22
FixEEPROM
输入
sector_status - 由 InitEEPROM() 返回的状态
buffer - 指向 IRAM 中 32 字节缓存的指针
返回
无
最大堆栈大小
4 字节 + 12 字节 (Boot ROM 用户程序)
FixEEPROM() 将根据 InitEEPROM() 返回的状态字节来修正无效扇区。它将擦除相应的
Flash 扇区并设置状态字节以指示该扇区已被擦除。
需要通过指向 IRAM 中 32 字节缓存的指针来实现 Flash 写操作。 在调用该函数之前,要
确保 NMISR SFR 中的标志位被清零。
用户手册
ROM Library, V1.4
24-50
V1.1, 2010-09
XC83x
ROM Library
WriteEEPROM
表 24-23
WriteEEPROM
函数
WriteEEPROM
函数原型
void WriteEEPROM(unsigned char address, char
idata * src, EEPROMInfo *config)
输入
address - 数据写入的逻辑地址
src - 指向 IRAM 中 32 字节待写入数据的指针
config - 指向 EEPROMInfo 数据结构的指针
返回
无
最大堆栈大小
6 字节 + 12 字节 (Boot ROM 用户程序)
WriteEEPROM() 根据 EEPROM 的配置进行写操作,将数据写入有效的 Flash 地址单元
并更新 EEPROM 配置。一次写入 32 字节 (31 个数据字节 + 1 个状态字节)。
此外,当上一个 “有效扇区”填满数据后,该函数将 “收回”该扇区。在调用该函数之
前,要确保 NMISR SFR 中的标志位被清零。
ReadEEPROM
表 24-24
ReadEEPROM
函数
ReadEEPROM
函数原型
unsigned char ReadEEPROM(unsigned char address,
char idata * dst, EEPROMInfo *config)
输入
address - 读取数据的逻辑地址
dst - 指向 IRAM 中保存读取数据的 32 字节缓存的指针
config - 指向 EEPROMInfo 数据结构的指针
输出
status - 读操作的结果
0x00 - 读操作成功
0xFF - 读操作失败
最大堆栈大小
2 字节
ReadEEPROM() 将在当前的 “有效扇区”中根据给定的 “地址”寻找最新数据,它将
始终返回 32 字节的数据,即 31 个数据字节 +1 个状态字节。
用户手册
ROM Library, V1.4
24-51
V1.1, 2010-09
XC83x
ROM Library
“地址”取值介于 0-3 之间。若数据组大小为 32 字节,则仅地址 0 有效;若数据组大小
为 128 字节,则地址 0-3 均有效,地址 2 将返回字节 64-95,字节 95 为状态字节。
若无法找到地址,函数将返回错误代码。
24.3.4.4 API 使用示例
下面以 C 语言举例说明如何使用 EEPROM 模拟 API,该举例示出如何初始化 Flash 区段
并给出一些错误处理的方式。
#include "EEPROM.h"
void main(void)
{
/*EEPROM 模拟所需的数据结构 */
char idata buffer[32];
EEPROMInfo config;
unsigned char eeprom_status;
/* 初始化并检查模拟 EEPROM 的完整性 */
eeprom_status = InitEEPROM(MODE_3, &config);
if(0 != eeprom_status){
if( 0x0 == config.ActiveSector){
/* 检测到擦除操作退出或首次使用 EEPROM*/
/* 初始化无效扇区 */
FixEEPROM(eeprom_status, buffer);
}else{
/* 在收回操作期间突然发生编程或擦除退出 */
/* 根据用户的实际应用,可执行其它操作 */
/* 初始化无效扇区。数据将被擦除 */
FixEEPROM(eeprom_status, buffer);
}
/* 检查 EEPROM 扇区是否处于有效状态 */
eeprom_status = InitEEPROM(MODE_3, &config);
用户手册
ROM Library, V1.4
24-52
V1.1, 2010-09
XC83x
ROM Library
if (0 != eeprom_status){
/*EEPROM 出现致命错误 */
while(1);
}
}
/* 用户程序 */
/* 读取和写入模拟 EEPROM 举例 */
/* 读取当前数据 */
ReadEEPROM(WL_1, &buffer, &config);
/* 更新待写入 EEPROM 的数据 */
buffer[20] += 1;
/* 写回更新数据 */
WriteEEPROM(WL_1, &buffer, &config);
while(1); /* 等待断电 */
}
用户手册
ROM Library, V1.4
24-53
V1.1, 2010-09
w w w . i n f i n e o n . c o m
Published by Infineon Technologies AG