SWM100 系列
ARM®CortexTM-M0
32 位微处理器
SWM100 系列 MCU
数据手册
华芯微特科技有限公司
Synwit Technology Co., Ltd.
1
SWM100 系列
目
录
概述........................................................................................................................................... 5
特性........................................................................................................................................... 5
选型指南................................................................................................................................... 6
功能方框图............................................................................................................................... 7
管脚配置................................................................................................................................... 8
5.1
QFN24........................................................................................................................... 8
5.2
LQFP32 ......................................................................................................................... 9
5.3
LQFP48 ....................................................................................................................... 10
5.4
管脚描述..................................................................................................................... 10
6 功能描述................................................................................................................................. 13
6.1
存储器映射................................................................................................................. 13
6.2
中断控制器................................................................................................................. 15
6.3
系统定时器................................................................................................................. 20
6.4
系统控制器................................................................................................................. 21
6.5
系统管理(SYSCON) ............................................................................................. 24
6.6
通用 I/O(GPIO) ..................................................................................................... 42
6.7
通用定时器(TIMER) ............................................................................................ 47
6.8
专用定时器(TIMERSE)........................................................................................ 50
6.9
看门狗定时器(WDT)............................................................................................ 56
6.10 UART 接口控制器(UART) .................................................................................. 59
6.11 I2C 总线控制器(主/从)......................................................................................... 67
6.12 串行外设接口(SPI)控制器 ................................................................................... 83
6.13 脉冲宽度调制(PWM)发生器 ............................................................................... 97
6.14 模拟数字转换器(ADC) ...................................................................................... 110
6.15 比较器/放大器.......................................................................................................... 119
6.16 ISP 及 FLASH 操作 ................................................................................................. 123
7 典型应用电路....................................................................................................................... 126
8 电气特性............................................................................................................................... 126
8.1
绝对最大额定值....................................................................................................... 126
8.2
DC 电气特性 ............................................................................................................ 126
8.3
AC 电气特性 ............................................................................................................ 127
8.4
模拟器件特性........................................................................................................... 128
9 封装信息............................................................................................................................... 129
9.1
LQFP32 ..................................................................................................................... 129
9.2
LQFP48 ..................................................................................................................... 130
9.3
QFN24....................................................................................................................... 131
10 版本记录............................................................................................................................... 132
1
2
3
4
5
2
SWM100 系列
图目录
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
图
4-1 功能方框图 .................................................................................................................. 7
5-1 QFN24 封装管脚配置 ................................................................................................. 8
5-2 LQFP32 封装管脚配置................................................................................................ 9
5-3 LQFP48 封装管脚配置.............................................................................................. 10
6-1 时钟供给示意图 ........................................................................................................ 25
6-2 IO 引脚示意图 ........................................................................................................... 26
6-3 定时器工作示意图 .................................................................................................... 43
6-4 脉冲捕捉示意图 ........................................................................................................ 51
6-5 占空比捕捉示意图 .................................................................................................... 52
6-6 UART 结构图 ............................................................................................................. 59
6-7 UART 结构图 ............................................................................................................. 60
6-8 UART 结构图 ............................................................................................................. 60
6-9 I2C 通信示意图 .......................................................................................................... 68
6-10 SPI 单个数据传输帧格式(SCPH=0).................................................................. 85
6-11 SPI 连续数据传输帧格式(SCPH=0).................................................................. 85
6-12 SPI 单个数据传输帧格式(SCPH=1).................................................................. 86
6-13 SPI 连续数据传输帧格式(SCPH=1).................................................................. 86
6-14 Microwire 不连续数据传输帧格式(不连续读数据) ......................................... 87
6-15 Microwire 连续数据传输帧格式(连续读数据) ................................................. 87
6-16 Microwire 单个数据传输帧格式(写数据) ......................................................... 88
6-17 SSP 单个数据传输帧格式 ....................................................................................... 88
6-18 SSP 多个数据连续传输帧格式 ............................................................................... 89
6-19PWM 结构示意图 ..................................................................................................... 98
6-20 PWM 死区发生示意图 ............................................................................................ 99
6-21 PWM 普通模式波形示意图 .................................................................................... 99
6-22 PWM 未开启死区的互补模式示意图 .................................................................. 100
6-23 PWM 开启死区的互补模式示意图 ...................................................................... 100
6-24 PWM 中心对称模式示意图 .................................................................................. 101
6-25 SAR ADC 结构示意图 .......................................................................................... 111
6-26 SAR ADC 中断示意图 .......................................................................................... 113
6-27 比较器/放大器结构示意图 .................................................................................. 119
7-1 典型应用电路图 ..................................................................................................... 126
9-1 LQFP32 封装............................................................................................................ 129
9-2 LQFP48 封装............................................................................................................ 130
9-3 QFN24 封装 ............................................................................................................. 131
表格目录
表格 3-1 SWM100 系列 MCU 选型表 ................................................................................... 6
表格 6-1 存储器映射 ............................................................................................................ 13
3
SWM100 系列
表格
表格
表格
表格
表格
表格
表格
表格
表格
表格
6-2 中断编号及对应外设 ........................................................................................... 15
6-3 IAP 函数调用编号及说明 ................................................................................... 124
6-4 IAP 参数说明表 ................................................................................................... 124
6-5 Flash 参数设置表 ................................................................................................. 124
6-6 Flash 页地址表 ..................................................................................................... 125
8-1 绝对最大额定值 .................................................................................................. 126
8-2 DC 电气特性( Vdd-Vss = 3.3V, Tw =25℃) ........................................................ 126
8-3 内部振荡器特征值 ............................................................................................. 127
8-4 SAR ADC 特征值 ................................................................................................ 128
8-5 比较器/放大器特性表格 .................................................................................... 128
4
SWM100 系列
1 概述
SWM100 系列 MCU 是基于 ARM® CortexTM-M0 的 32 位微控制器。与传统 8051 单片机
相比,在价格相近的情况下,保证了高性能、低功耗、代码密度大等优势,适用于工业控制
及白色家电等诸多应用领域。
SWM100 内嵌 ARM® CortexTM-M0 控制器,最高可运行至 50MHz,
内置 16K 字节 FLASH
存储器,4K 字节 SRAM,提供 22MHz/44MHz 精度为 1%的内置时钟,支持四级加密,支持
ISP(在系统编程)及 IAP(在应用编程)操作。
SWM100 外设串行总线包括 I2C 总线接口,工业标准的 UART 接口,SSI 通信接口(支
持 SPI、Micro Wire 及 SSI 协议)
。此外还包括看门狗定时器,4 组通用定时器(计数器),1
组专用定时器(包含定时、捕捉、PWM 等功能)
,3 组(6 通道)PWM 控制模块,12 位逐
次逼近型 ADC 模块以及 3 路模拟比较器(运算放大器)模块,同时提供欠压检测及低电压
复位功能。
2 特性
内核
32 位 ARM® Cortex™-M0 内核
提供 24 位系统定时器
工作频率最高 50MHz
硬件单周期乘法
集成嵌套向量中断控制器(NVIC),提供最多 32 个、4 级可配置优先级的中断
内置 LDO
供电电压范围为 2.2V 至 3.6V
内部 FLASH 存储器
16 K 字节用以存储用户程序
通过 SWD 接口烧录,支持加密
支持 ISP(在系统编程)更新用户程序
支持 IAP(在应用编程)记录用户数据
内部 SRAM 存储器
4K 单周期访问的 SRAM
串行接口
数量可配置的 UART 模块,具有独立 8 字节 FIFO
数量可配置的 SSP 模块,具有 8 字节独立 FIFO,支持 SPI、Micro Wire、SSI 协议,
传输速率最高可达系统时钟 1/2
高速 I2C 总线接口,支持 8 位、10 位地址方式,最高速率可达 1M 位/秒
PWM 控制模块
6 通道 16 位 PWM 产生器
可设置高电平结束或周期开始两种条件触发中断
具有普通、互补、中心对称等多种输出模式
宽度可调节的前后死区控制
提供设备保护,由硬件完成“刹车”功能
5
SWM100 系列
由硬件完成与 ADC 的交互
定时器模块
4 路 32 位通用定时器,可做计数器使用
1 路专用定时器,功能包括定时器、计数器、捕捉及 PWM 信号产生
32 位看门狗定时器,溢出后可配置触发中断或复位芯片
GPIO
最多可达 45 个 IO,其中 24 路具备中断功能
可配置 4 种 IO 模式
上拉输入
下拉输入
推挽输出
开漏输出
灵活的中断配置
触发类型设置(边沿检测、电平检测)
触发电平设置(高电平、低电平)
模拟外设
12 位 8 通道高精度 SAR ADC
采样率高达 1MSPS
支持 Signle/Single-cycle scan/ Continuous scan/ Burst 四种模式
独立结果寄存器
Burst 模式下提供 FIFO
可由软件或 PWM 触发
3 路模拟比较器/运算放大器
作为模拟比较器
可以灵活选择片内(16 级)、片外参考电压
比较结果可以触发中断通知 MCU 进行处理
作为运算放大器
完全由用户根据需要进行电路设计
结果可送至 ADC 进行转换处理
欠压检测
支持 4 级欠压检测
支持欠压中断和复位选择
时钟源
22.1184MHz 及 44MHz 精度可达 1%的片内时钟源
片外 4 ~ 32Mhz 晶振
3 选型指南
表格 3-1 SWM100 系列 MCU 选型表
Part Number
Flash
SRAM
I/O
Timer
PWM
WDT
RTC
DMA
UART
I2C
SPI
CAN
Package
SWM100E4U7-80
16KB
4KB
20
4+1
5
1
0
0
1
1
1
0
QFN24
SWM100K4T7-80
16KB
4KB
29
4+1
6
1
0
0
1
1
1
0
LQFP32
SWM100C4T7-50
16KB
4KB
45
4+1
6
1
0
0
1
1
1
0
LQFP48
6
SWM100 系列
4 功能方框图
SW1000S
SWCLK
SWDIO
CLOCK
GENERATION,
POWER CONTROL,
SYSTEM
FUNCTIONS
POR
SERIAL WIRE
IRC
ARM
CORTEX-M0
FLASH
16/24/32 KB
SRAM
4/8/16 KB
XTAL OUT
XTAL IN
RESET
ROM
AHB-LITE
SYSTEM
CONTROL
AHB TO APB
BRIDGE
AHB TO APB
BRIDGE
IN[2:0]
CREF[2:0]
COMPARATOR/
AMPLIFIER
GPIO A
GPIO A[15:0]
GPIO B
GPIO B[4:0]
GPIO C
GPIO C[7:0]
GPIO D
GPIO D[7:0]
GPIO E
GPIO E[7:0]
OUT[2:0]
AD[5:7]
AD[7:0]
12-bit SAR ADC
AD[2:0]
APB
PWM
APB
PWM[5:0]
COUNTER 0
COUNTER 1
COUNTER 2
COUNTER 3
COUNTER_SE
TIMER 0/
COUNTER 0
TIMER 1/
COUNTER 1
TIMER 2/
COUTER 2
TIMER 3/
COUNTER 3
UART
I2C
RXD
TXD
SCL
SDA
SDI
TIMER_SE
SSI
SDO
SCLK
SS
WDT
图 4-1 功能方框图
7
SWM100 系列
5 管脚配置
5.1 QFN24
图 5-1 QFN24 封装管脚配置
8
SWM100 系列
5.2 LQFP32
A_14\AD_REFp\(UART_RX)
18
17
21
A_7\PWM_BREAK\OP0_INp
22
19
B_0\Clk_IN
23
20
VDD33
A_9\OP1_INn
A_10\TIMERSE_IN\OP1_INp
24
A_8\AD_6\OP1_OUT
A_11\AD_7\OP2_OUT
9
D_7\COUNTER_2
8
32
VSS33
D_6\COUNTER_3
A_0\I2C_CLK\AD_0
7
10
D_5\PWM_0
31
B_3\SWD_IO
6
A_1\I2C_SDA\AD_1
30
D_4\PWM_1
11
B_2\SWD_CLK
5
A_2\AD_2\(SSI_IN)
29
D_3\PWM_2
12
C_1/UART_TX
4
A_3\AD_3\(SSI_OUT)
28
D_2\PWM_3
13
C_0/UART_RX
3
A_4\AD_4\(SSI_CLK)
27
D_1\PWM_4
14
RESRTn
2
A_5\AD_5\OP0_OUT\(SSI_CSn)
26
D_0\PWM_5
15
A_13\TIMERSE_OUT\OP2_INp
1
A_6\OP0_INn
25
B_4
16
A_12\OP2_INn
图 5-2 LQFP32 封装管脚配置
9
SWM100 系列
5.3 LQFP48
D_4\PWM_1
D_3\PWM_2
D_2\PWM_3
D_1\PWM_4
D_0\PWM_5
B_4
E_7
E_6
E_5
E_4
E_3
E_2
12
11
10
9
8
7
6
5
4
3
2
1
D_5\PWM_0
13
48
E_1
D_6\COUNTER_3
14
47
E_0
D_7\COUNTER_2
15
46
B_3\SWD_IO
A_0\I2C_CLK\AD_0
16
45
B_2\SWD_CLK
A_1\I2C_SDA\AD_1
17
44
C_7/SSI_CSn
A_2\AD_2\(SSI_IN)
18
43
C_6/SSI_CLK
A_3\AD_3\(SSI_OUT)
19
42
C_5/SSI_OUT
A_4\AD_4\(SSI_CLK)
20
41
C_4/SSI_IN
A_5\AD_5\OP0_OUT\(SSI_CSn)
21
40
C_3/COUNTER_0
30
31
32
33
34
35
36
VSS33
VDD33
A_10\TIMERSE_IN\OP1_INp
A_11\AD_7\OP2_OUT
A_12\OP2_INn
A_13\TIMERSE_OUT\OP2_INp
RESRTn
A_7\PWM_BREAK\OP0_INp
29
C_0/UART_RX
B_1\Clk_OUT
37
28
24
B_0\Clk_IN
A_15\(UART_TX)
27
C_1/UART_TX
A_9\OP1_INn
C_2/COUNTER_1
38
26
39
23
A_8\AD_6\OP1_OUT
22
25
A_6\OP0_INn
A_14\AD_REFp\(UART_RX)
图 5-3 LQFP48 封装管脚配置
5.4 管脚描述
管脚号
描述
LQFP48
类
LQFP32
可复用功能
QFN24
管脚名
/
/
1
E2
——
I/O
E2:数字 GPIO 功能引脚;
/
/
2
E3
——
I/O
E3:数字 GPIO 功能引脚;
/
/
3
E4
——
I/O
E4:数字 GPIO 功能引脚;
/
/
4
E5
——
I/O
E5:数字 GPIO 功能引脚;
/
/
5
E6
——
I/O
E6:数字 GPIO 功能引脚;
/
/
6
E7
——
I/O
E7:数字 GPIO 功能引脚;
1
1
7
B4
——
I/O
B4:数字 GPIO 功能引脚;
称
型
10
SWM100 系列
2
8
D0
PWM_5
I/O
D0:数字 GPIO 功能引脚;
PWM_5:PWM 模块 5 路输出
2
3
9
D1
PWM_4
I/O
D1:数字 GPIO 功能引脚;
PWM_4:PWM 模块 4 路输出
3
4
10
D2
PWM_3
I/O
D2:数字 GPIO 功能引脚;
PWM_3:PWM 模块 3 路输出
4
5
11
D3
PWM_2
I/O
D3:数字 GPIO 功能引脚;
PWM_2:PWM 模块 2 路输出
5
6
13
D4
PWM_1
I/O
D4:数字 GPIO 功能引脚;
PWM_1:PWM 模块 1 路输出
6
7
14
D5
PWM_0
I/O
D5:数字 GPIO 功能引脚;
PWM_0:PWM 模块 0 路输出
/
8
12
D6
COUNTER3_IN
I/O
D6:数字 GPIO 功能引脚;
COUNTER3_IN: COUNTER3 模块外部计数
源
/
9
15
D7
COUNTER2_IN
I/O
D7:数字 GPIO 功能引脚;
COUNTER2_IN: COUNTER2 模块外部计数
源
7
10
16
A0
I2C_CLK/
I/O
A0:数字 GPIO 功能引脚;
I2C_CLK:I2C 模块时钟线引脚
AD0
AD0:模数转换器输入通道 0;
9
11
17
A1
I2C_SDA/
I/O
A1:数字 GPIO 功能引脚;
I2C_SDA:I2C 模块数据线引脚
AD1
AD1:模数转换器输入通道 1;
10
12
18
A2
SSI_RX/
I/O
A2:数字 GPIO 功能引脚;
SSI_RX:SSI 串行接口的接收线引脚;
AD2
AD2:模数转换器输入通道 2;
11
13
19
A3
SSI_TX/
I/O
A3:数字 GPIO 功能引脚;
SSI_TX:SSI 串行接口的发送线引脚;
AD3
AD3:模数转换器输入通道 3;
12
14
20
A4
SSI_CLK/
I/O
A4:数字 GPIO 功能引脚;
SSI_CLK:SSI 串行接口的时钟线引脚;
AD4
AD4:模数转换器输入通道 4;
13
15
21
A5
SSI_CSn/
I/O
A5:数字 GPIO 功能引脚;
SSI_CSn:SSI 串行接口的片选线引脚;
AD5/
OP0_OUT
AD5:模数转换器输入通道 5;
OP0_OUT:放大器 0 输出端
/
16
22
A6
OP0_N
I/O
A6:数字 GPIO 功能引脚;
OP0_N:放大器 0_N 端
/
17
23
A14
UART_RX/
I/O
A14:数字 GPIO 功能引脚;
UART_RX : UART 模块接收引脚;
AD_P
AD_P:模数转换器 P 端
11
SWM100 系列
/
/
24
A15
UART_TX/
I/O
A15:数字 GPIO 功能引脚;
UART_TX : UART 模块发送引脚;
AD_N
AD_N:模数转换器 N 端
/
18
25
A7
PWM_BREAK /
I/O
A7:数字 GPIO 功能引脚;
PWM_BREAK:PWM 模块刹车;
OP0_P
OP0_P:放大器 0_P 端
/
19
26
A8
AD6/
I/O
OP1_OUT
A8:数字 GPIO 功能引脚;
AD6:模数转换器输入通道 6;
OP1_OUT:放大器 1 输出端
/
20
27
A9
OP1_N
I/O
A9:数字 GPIO 功能引脚;
OP1_N:放大器 1_N 端
15
21
28
B0
CLK_IN
I/O
B0:数字 GPIO 功能引脚;
CLK_IN:芯片时钟输入引脚
16
29
B1
CLK_OUT
I/O
B1:数字 GPIO 功能引脚;
CLK_OUT:芯片时钟输出引脚
8
32
30
VSS33
——
S
VSS33:芯片主地端;
17
22
31
VDD33
——
S
VDD33:芯片主电源端;
/
23
32
A10
TIMER_SE_IN /
I/O
OP1_P
A10:数字 GPIO 功能引脚;
TIMER_SE_IN:专用定时器的输入捕获端
OP1_P:放大器 1_P 端
/
24
33
A11
AD7/
I/O
OP2_OUT
A11:数字 GPIO 功能引脚;
AD7:模数转换器输入通道 7;
OP2_OUT:放大器 2_输出端
/
25
34
A12
OP2_N
I/O
A12:数字 GPIO 功能引脚;
OP2_N:放大器 2_N 端
/
26
35
A13
TIMER_SE_OUT/
I/O
OP2_P
A13:数字 GPIO 功能引脚;
TIMER_SE_OUT:专用定时器的输出比较端
OP2_P:放大器 2_P 端
/
27
36
RESETn
——
I/O
RESETn:芯片复位功能引脚,低电平复位;
18
28
37
C0
UART_RX
I/O
C0:数字 GPIO 功能引脚;
UART_RX : UART 模块接收引脚;
19
29
38
C1
UART_TX
I/O
C1:数字 GPIO 功能引脚;
UART_TX : UART 模块发送引脚;
21
/
39
C2
COUNTER1_IN
I/O
C2:数字 GPIO 功能引脚;
COUNTER1_IN: COUNTER1 模块外部计数
源
22
/
40
C3
COUNTER0_IN
I/O
C3:数字 GPIO 功能引脚;
COUNTER0_IN: COUNTER0 模块外部计数
源
/
/
41
C4
SSI_RX
I/O
C4:数字 GPIO 功能引脚;
SSI_RX:SSI 串行接口的接收线引脚;
12
SWM100 系列
/
/
42
C5
SSI_TX
I/O
C5:数字 GPIO 功能引脚;
SSI_TX:SSI 串行接口的发送线引脚;
/
/
43
C6
SSI_CLK
I/O
C6:数字 GPIO 功能引脚;
SSI_CLK:SSI 串行接口的时钟线引脚;
/
/
44
C7
SSI_CSn
I/O
C7:数字 GPIO 功能引脚;
SSI_CSn:SSI 串行接口的片选线引脚;
23
30
45
B2
SWCLK
I/O
B2:数字 GPIO 功能引脚;
SWCLK:SWD 下载接口的时钟线引脚
24
31
46
B3
SWDIO
I/O
B3:数字 GPIO 功能引脚;
SWDIO:SWD 下载接口的数据线引脚
/
/
47
E0
——
I/O
E0:数字 GPIO 功能引脚;
/
/
48
E1
——
I/O
E1:数字 GPIO 功能引脚;
6 功能描述
6.1 存储器映射
本系列控制器为 32 位通用控制器,提供了 4G 字节寻址空间,如下表所示。数据使用
小端格式(Little-Endian)
,各模块具体寄存器排布及操作说明在后章节有详细描述。
表格 6-1 存储器映射
起始
结束
描述
存储器
0x00000000
0x00003FFF
片内 Flash(16KB)
0x20000000
0x00000FFF
片内 SRAM(4KB)
APB 总线外设
0x40000000
0x400007FF
SYSTEM_CON
0x40001000
0x400017FF
GPIO
0x40003000
0x400037FF
UART
0x40004000
0x400047FF
SSI
0x40005000
0x400057FF
I2C
0x40011000
0x400117FF
GPIO_E
0x40012000
0x400127FF
TIMER
0x40012800
0x40012FFF
TIMER_SE
0x40016000
0x400167FF
PWM
0x40017000
0x400177FF
ADC
0x40019000
0x400197FF
WDT
0x400F0000
0x400F07FF
SYSTEM_CTL
核内部控制器
13
SWM100 系列
起始
结束
描述
0xE000E010
0xE000E01F
系统定时控制寄存器
0xE000E100
0xE000E4EF
NVIC 中断控制寄存器器
0xE000ED00
0xE000ED3F
系统控制寄存器器
14
SWM100 系列
6.2 中断控制器
6.2.1 概述
CortexTM-M0 提供了“嵌套向量中断控制器(NVIC)
”用以管理中断事件。其具有如下
特性:
支持嵌套及向量中断
硬件完成现场的保存和恢复
动态改变优先级
确定的中断时间
中断优先级分为 4 级,可通过中断优先级配置寄存器(IRQn)进行配置。中断发生时,
内核比较中断优先级,自动获取入口地址,并保护环境,将指定寄存器中数据入栈,无需软
件参与。中断服务程序结束后,由硬件完成出栈工作。同时支持“尾链”模式及“迟至”模式,
有效的优化了中断发生及背对背中断的执行效率,提高了中断的实时性。
更多细节请参阅“CortexTM-M0 技术参考手册”及“ARM® CoreSight 技术参考手册”。
6.2.2 中断向量表
本系列 MCU 提供了 27 个中断,其排列如下表所示。
表格 6-2 中断编号及对应外设
中断(IRQ 编号)
描述
0
GPIOA0
1
GPIOA1
2
BOD
3
WDT
4
Timer_SE
5
PWM
6
ADC
7
保留
8
UART
9
SSI
10
I2C
11
保留
12
GPIOA2
13
GPIOA3
14
GPIOA4
15
GPIOA5
15
SWM100 系列
中断(IRQ 编号)
描述
16
GPIOA6
17
GPIOA7
18
Timer0
19
Timer1
20
Timer2
21
Timer3
22
GPIOA8
23
GPIOA9
24
GPIOA10
25
GPIOA11
26
GPIOA12
27
GPIOA13
28
GPIOA14
29
GPIOA15
30
保留
31
GPIOE
6.2.3 寄存器映射
NVIC
BASE:0xE000E100
名称
偏移量
位宽
类型
复位值
描述
NVIC_ISER
0x100
32
R/W
0x00
中断使能寄存器
NVIC_ICER
0x180
32
R/W
0x00
清除使能寄存器
NVIC_ISPR
0x200
32
R/W
0x00
设置挂起寄存器
NVIC_ICPR
0x280
32
R/W
0x00
清除挂起寄存器
NVIC_IPR0
0x400
32
R/W
0x00
IRQ0—IRQ3 优先级控制
NVIC_ IPR1
0x404
32
R/W
0x00
IRQ4—IRQ7 优先级控制
NVIC_ IPR2
0x408
32
R/W
0x00
IRQ8—IRQ11 优先级控制
NVIC_ IPR3
0x40C
32
R/W
0x00
IRQ12—IRQ15 优先级控制
NVIC_ IPR4
0x410
32
R/W
0x00
IRQ16—IRQ19 优先级控制
NVIC_ IPR5
0x414
32
R/W
0x00
IRQ20—IRQ23 优先级控制
NVIC_ IPR6
0x418
32
R/W
0x00
IRQ24—IRQ27 优先级控制
NVIC_ IPR7
0x41C
32
R/W
0x00
IRQ28—IRQ31 优先级控制
16
SWM100 系列
6.2.4 寄存器描述
NVIC_ISER
ADDR:0xE000E100
位域
31:0
名称
SETENA
类型
R/W
复位值
描述
中断使能,向对应位写 1 使能相应中断号中断,
写 0 无效。
读返回目前使能状态。
0x00
NVIC_ ICER
ADDR:0xE000E180
位域
31:0
名称
CLRENA
类型
复位值
描述
R/W
0x00
中断清除,向对应位写 1 清除相应中断号中断
使能位,写 0 无效。
读返回目前使能状态。
类型
复位值
描述
R/W
0x00
中断挂起,向对应位写 1 挂起相应中断号中断,
写 0 无效。
读返回目前挂起状态。
NVIC_ ISPR
ADDR:0xE000E200
位域
31:0
名称
SETPEND
NVIC_ ICPR
ADDR:0xE000E280
位域
名称
类型
复位值
描述
31:0
CLRPEND
R/W
0x00
中断挂起清除,向对应位写 1 清除相应中断号
中断挂起标志,写 0 无效。
读返回目前挂起状态。
NVIC_ IPR0
ADDR:0xE000E400
位域
名称
类型
复位值
31:30
PRI_3
R/W
0x00
29:24
REVERSED
—
—
23:22
PRI_2
R/W
0x00
21:16
REVERSED
—
—
15:14
PRI_1
R/W
0x00
13:8
REVERSED
—
—
7:6
PRI_0
R/W
0x00
5:0
REVERSED
—
—
描述
IRQ3 优先级,0 为最高,3 为最低
保留
IRQ2 优先级,0 为最高,3 为最低
保留
IRQ1 优先级,0 为最高,3 为最低
保留
IRQ0 优先级,0 为最高,3 为最低
保留
17
SWM100 系列
NVIC_ IPR1
ADDR:0xE000E404
位域
名称
类型
复位值
31:30
PRI_7
R/W
0x00
29:24
REVERSED
—
—
23:22
PRI_6
R/W
0x00
21:16
REVERSED
—
—
15:14
PRI_5
R/W
0x00
13:8
REVERSED
—
—
7:6
PRI_4
R/W
0x00
5:0
REVERSED
—
—
描述
IRQ7 优先级,0 为最高,3 为最低
保留
IRQ6 优先级,0 为最高,3 为最低
保留
IRQ5 优先级,0 为最高,3 为最低
保留
IRQ4 优先级,0 为最高,3 为最低
保留
NVIC_ IPR2
ADDR:0xE000E408
位域
名称
类型
复位值
描述
31:30
PRI_11
R/W
0x00
IRQ11 优先级,0 为最高,3 为最低
29:24
REVERSED
—
—
23:22
PRI_10
R/W
0x00
21:16
REVERSED
—
—
15:14
PRI_9
R/W
0x00
13:8
REVERSED
—
—
7:6
PRI_8
R/W
0x00
5:0
REVERSED
—
—
保留
IRQ10 优先级,0 为最高,3 为最低
保留
IRQ9 优先级,0 为最高,3 为最低
保留
IRQ8 优先级,0 为最高,3 为最低
保留
NVIC_ IPR3
ADDR:0xE000E40C
位域
名称
类型
复位值
31:30
PRI_15
R/W
0x00
29:24
REVERSED
—
—
23:22
PRI_14
R/W
0x00
21:16
REVERSED
—
—
15:14
PRI_13
R/W
0x00
13:8
REVERSED
—
—
7:6
PRI_12
R/W
0x00
5:0
REVERSED
—
—
描述
IRQ15 优先级,0 为最高,3 为最低
保留
IRQ14 优先级,0 为最高,3 为最低
保留
IRQ13 优先级,0 为最高,3 为最低
保留
IRQ12 优先级,0 为最高,3 为最低
保留
NVIC_ IPR4
ADDR:0xE000E410
位域
名称
类型
复位值
31:30
PRI_19
R/W
0x00
29:24
REVERSED
—
—
23:22
PRI_18
R/W
0x00
描述
IRQ19 优先级,0 为最高,3 为最低
保留
IRQ18 优先级,0 为最高,3 为最低
18
SWM100 系列
位域
名称
类型
复位值
21:16
REVERSED
—
—
15:14
PRI_17
R/W
0x00
13:8
REVERSED
—
—
7:6
PRI_16
R/W
0x00
5:0
REVERSED
—
—
描述
保留
IRQ17 优先级,0 为最高,3 为最低
保留
IRQ16 优先级,0 为最高,3 为最低
保留
NVIC_ IPR5
ADDR:0xE000E414
位域
名称
类型
复位值
31:30
PRI_23
R/W
0x00
29:24
REVERSED
—
—
23:22
PRI_22
R/W
0x00
21:16
REVERSED
—
—
15:14
PRI_21
R/W
0x00
13:8
REVERSED
—
—
7:6
PRI_20
R/W
0x00
5:0
REVERSED
—
—
描述
IRQ23 优先级,0 为最高,3 为最低
保留
IRQ22 优先级,0 为最高,3 为最低
保留
IRQ21 优先级,0 为最高,3 为最低
保留
IRQ20 优先级,0 为最高,3 为最低
保留
NVIC_ IPR6
ADDR:0xE000E418
位域
名称
类型
复位值
31:30
PRI_27
R/W
0x00
29:24
REVERSED
—
—
23:22
PRI_26
R/W
0x00
21:16
REVERSED
—
—
15:14
PRI_25
R/W
0x00
13:8
REVERSED
—
—
7:6
PRI_24
R/W
0x00
5:0
REVERSED
—
—
描述
IRQ27 优先级,0 为最高,3 为最低
保留
IRQ26 优先级,0 为最高,3 为最低
保留
IRQ25 优先级,0 为最高,3 为最低
保留
IRQ24 优先级,0 为最高,3 为最低
保留
NVIC_ IPR7
ADDR:0xE000E41C
位域
名称
类型
复位值
31:30
PRI_31
R/W
0x00
29:24
REVERSED
—
—
23:22
PRI_30
R/W
0x00
21:16
REVERSED
—
—
15:14
PRI_29
R/W
0x00
13:8
REVERSED
—
—
7:6
PRI_28
R/W
0x00
5:0
REVERSED
—
—
描述
IRQ31 优先级,0 为最高,3 为最低
保留
IRQ30 优先级,0 为最高,3 为最低
保留
IRQ29 优先级,0 为最高,3 为最低
保留
IRQ28 优先级,0 为最高,3 为最低
保留
19
SWM100 系列
6.3 系统定时器
6.3.1 概述
CortexTM-M0 核内部提供了一个 24 位系统定时器。该定时器使能后装载当前值寄存器
(SYST_CVR)内数值并向下递减至 0,并在下个时钟重新加载重载寄存器(SYST_RVR)
内 数 值 。 计 数 器 再 次 递 减 至 0 时 , 计 数 器 状 态 寄 存 器 ( SYST_CSR ) 中 的 标 志 位
COUNTERFLAG 置位,读该位可清零。
复位后,SYST_CVR 寄存器与 SYST_RVR 寄存器值均未知,因此使用前需初始化,向
SYST_CVR 写入任意值,清零同时复位状态寄存器,保证装载值为 SYST_RVR 寄存器中数
值。
当 SYST_RVR 寄存器值为 0 时,重新装载后计时器保持为 0,并停止重新装载。
细节请参阅“CortexTM-M0 技术参考手册”及“ARM® CoreSight 技术参考手册”
。
6.3.2 寄存器映射
SYSTIC
BASE:0xE000E010
名称
偏移量
位宽
类型
复位值
描述
SYST_CSR
0x10
32
R/W
0x04
状态寄存器
SYST_RVR
0x14
32
R/W
—
重载寄存器
SYST_CVR
0x18
32
R/W
—
当前值寄存器
6.3.3 寄存器描述
SYST_CSR
ADDR:0xE000E010
位域
名称
类型
复位值
描述
31:17
REVERSED
—
—
保留位
16
COUNTERF
LAG
R
0
计数器递减到 0 且该过程中本寄存器未被读取,
本位返回 1
15:2
REVERSED
—
—
保留位
1
TINKINT
R/W
0
1:中断触发使能
0:中断触发禁能
0
ENABLE
R/W
0
1:定时器使能
0:定时器禁能
SYST_RVR
ADDR:0xE000E014
位域
名称
类型
复位值
描述
20
SWM100 系列
31:24
REVERSED
—
—
保留位
23:0
RELOAD
R/W
—
计数器达到 0 时加载本寄存器值,写 0 终止继续
加载
SYST_CVR
ADDR:0xE000E018
位域
名称
类型
复位值
描述
31:24
REVERSED
—
—
保留位
23:0
CURRENT
R/W
—
读操作返回当前计数器值,写操作清 0 该寄存器,
同时清除 COUNTERFLAG 位
6.4 系统控制器
6.4.1 概述
CrotexTM-M0 系统控制器主要负责内核管理,包括 CPUID,内核核资源中断优先级设置
及内核电源管理。
更多细节请参阅“CortexTM-M0 技术参考手册”及“ARM®CoreSight 技术参考手册”。
6.4.2 寄存器映射
SYSCTRL
BASE:0xE000ED00
名称
偏移量
位宽
类型
复位值
描述
CPUID
0xD00
32
R
0x410CC200
CPUID 寄存器
ICSR
0xD04
32
R/W
0x00000000
中断控制状态寄存器
AIRCR
0xD0C
32
R/W
0xFA050000
中断与复位控制寄存器
SCR
0xD10
32
R/W
0x00000000
系统控制寄存器
SHPR2
0xD1C
32
R/W
0x00000000
系统优先级控制寄存器 2
SHPR3
0xD20
32
R/W
0x00000000
系统优先级控制寄存器 3
6.4.3 寄存器描述
CPUID
ADDR:0xE000ED00
位域
名称
类型
复位值
31:24
IMPLEMENTER
R
0x41
23:20
REVERSED
—
—
19:16
PART
R
0xC
15:4
PARTNO
R
0xC20
3:0
REVISION
R
0x00
描述
ARM 分配执行码
保留位
ARMV6-M
读返回 0xC20
读返回 0x00
21
SWM100 系列
ICSR
ADDR:0xE000ED04
位域
名称
类型
复位值
描述
31:29
REVERSED
—
—
保留位
28
PENDSVSET
R/W
0
挂起 PendSV 中断,1 有效
27
PENDSVCLR
WO
—
写 1 清 PendSV 中断,仅写有效
26
PENDSTSET
R/W
0
挂起 SysTick 中断,1 有效
25
PENDSTCLR
—
—
写 1 清 SysTick 中断,仅写有效
24
REVERSED
—
—
保留位
23
ISRPREEMPT
RO
0
退出调试 halt 状态时置位,仅适用于调试
22
ISRPENDING
RO
0
外部配置中断是否挂起
21
REVERSED
—
—
保留位
20:12
VECTPENDING
R/W
0
优先级最高的挂起异常向量号
11:9
REVERSED
—
—
保留位
8:0
VECTACTIVE
RO
0
0:线程模式
其它:当前执行异常处理向量号
AIRCR
ADDR:0xE000ED0C
位域
名称
类型
复位值
描述
31:16
VECTORKEY
WO
—
写入时须保证 0x05FA
15:3
REVERSED
—
—
保留位
2
SYSRESETREQ
WO
0
写 1 时复位芯片,复位时自动清除
1
VECTCLRACTIVE
WO
0
置 1 时清除所有异常活动状态
0
REVERSED
—
—
保留位
SCR
ADDR:0xE000ED10
位域
名称
类型
复位值
描述
31:5
REVERSED
—
—
保留位
4
SWVONPEND
R/W
0
使能后,可将中断挂起过程作为唤醒事件
3
REVERSED
—
—
保留位
2
SLEEPDEEP
R/W
0
深睡眠提醒
1
SLEEPONEXIT
R/W
0
置 1 后,内核从异常状态返回后进入睡眠模
式
0
REVERSED
—
—
保留位
SHPR2
ADDR:0xE000ED1C
位域
名称
类型
复位值
22
描述
SWM100 系列
31:30
PRI_11
R/W
0
系统处理器优先级 11:SVCall
0 为最高,3 为最低
29:0
REVERSED
—
—
保留位
SHPR3
ADDR:0xE000ED20
位域
名称
类型
复位值
31:30
PRI_15
R/W
0
系统处理器优先级 15:SysTick
0 为最高,3 为最低
29:24
REVERSED
—
—
保留位
23:22
PRI_14
R/W
0
系统处理器优先级 14:PendSV
0 为最高,3 为最低
21:0
REVERSED
—
—
保留位
23
描述
SWM100 系列
6.5 系统管理(SYSCON)
6.5.1 特性
时钟控制
工作模式选择
休眠使能
端口设置
BOD 掉电检测控制
复位控制及状态
6.5.2 功能
时钟控制
本系列 MCU 有 2 个时钟源可供使用:
内部振荡器:内部振荡器为片内时钟源,无需连接任何外部器件。内部振荡器频率
为 22.1184MHz ± 1%或 44.2368MHz± 1%,可提供较精确的固定频率时钟。
外部振荡器:外部振荡器可接 4MHz ~ 32MHz 时钟源。
外设时钟关断
外设时钟关断功能可作用于包括以下外设时钟:
通用定时器
UART
SSI
看门狗控制器
AD 转换器
专用定时器
PWM 控制器
通过设置 SYS_CFG_1 寄存器[0:7]位,可关断指定外设时钟,以达到减小功耗的目的。
时钟倍频
可通过时钟倍频功能,将内部时钟源频率由 22MHz 倍频至 44MHz。
时钟供给示意图如下图所示
24
SWM100 系列
SYS_CFG_0
BIT[31]
FILTER_CLK_DIV
FILTER_CLK
ADC_CLK_DIV
ADC_CLK
PWM_CLK_DIV
PWM_CLK
INT_CLK
EXT_CLK
FCLK_DIV
HCLK
PCLK
TIMER_CLK
TIMERSE_CLK
SPI_CLK
I2C_CLK
图 6-1 时钟供给示意图
端口设置
端口功能设置通过 SYS_CON 寄存器组实现,包括端口复用切换和 I/O 功能设置,端口
复用切换用于指定端口功能,可将引脚在标准 I/O 和外围设备之间切换。I/O 功能设置包括
设置 I/O 电平状态。
端口复用切换
端口复用通过端口复用寄存器 PORTA_SEL 寄存器、PORTB_SEL 寄存器、PORTC_SEL
寄存器及 PORTD_SEL 寄存器实现,每个芯片引脚对应端口复用寄存器相应两位。
每个端口可能具有以下三种功能或其中两种:
GPIO
外设接口:将引脚切换至外围设备(使用外围设备时需首先进行此操作)
模拟接口:将引脚切换至模数转换器/比较器/放大器功能
:将引脚切换至通用 I/O,可进行 I/O 引脚设置
具体引脚对应功能及配置方式见本章寄存器描述章节
I/O 引脚设置
每个端口对应一组配置寄存器,可通过设置相应位将对应引脚配置为指定模式,各状态
之间互不影响,当端口选择为 GPIO 时有效。
其中,端口 A 及端口 B 低两位可配置为以下三种模式:
上拉输入
下拉输入
推挽/开漏输出
25
SWM100 系列
端口 C、端口 D 均只能配置上拉输入模式。
以下为各 IO 引脚示意图。
VDD
PULLUP
DATA_IN
PIN
PULLDOWN
VDD
PUSHPULLN
OUTPUT_EN
DATA_OUT
图 6-2 IO 引脚示意图
BOD 中断及掉电级别控制
芯片提供了 4 级掉电检测模式。当芯片电压低于所设置级别时,芯片将根据配置,产生
BOD 复位或中断,详见 SYS_CTL_0 寄存器 BODC 位。
计数器/定时器功能切换
SYS_CTL_0 寄存器中 BIT[29:26]用于控制定时器/计数器切换,当对应为设置为 1 时,
功能设置为 TIMER,置为 0 时功能设置为 COUNTER,具体应用方式见 TIMER 寄存器描述
章节。
端口 E 滤波功能配置
SYS_CTL_1 寄存器中 BIT[10:8]用于使能 GPIO E 端口 BIT[2:0]滤波功能,当对应为设
置为 1 时,端口 E 对应位滤波功能打开,置为 0 时,端口 E 对应位滤波功能关闭,具体滤
波应用方式见 GPIO 节。
初始化和配置
系统复位后,系统时钟默认为内部时钟。外围设备全部打开,默认状态下 ADC 时钟为
输入时钟 8 分频(注;须保证 ADC 工作时钟频率小于 13MHZ)
,PWM 时钟为输入时钟 4
分频。
端口上电默认配置均为 I/O,Serial Ware 接口根据加密级别进行配置。
26
SWM100 系列
6.5.3 寄存器映射
SYSCON
BASE:0x40000000
名称
偏移量
类型
复位值
描述
OP_COMP_CTL
0x00
R/W
0x00000000
比较器/放大器配置寄存器
SPI_CTL
0x04
R/W
0x00000000
SPI 状态配置
REVERSED
0x08
~0x7C
—
—
保留
PORTA_SEL
0x80
R/W
0x00000000
端口 A 功能配置寄存器
PORTB_SEL
0x84
R/W
0x00005000
端口 B 功能配置寄存器
PORTC_SEL
0x88
R/W
0x00000000
端口 C 功能配置寄存器
PORTD_SEL
0x8C
R/W
0x00000000
端口 D 功能配置寄存器
PORTA_PULLU
0x90
R/W
0x00000000
端口 A 上拉配置寄存器
PORTB_PULLU
0x94
R/W
0x00000000
端口 B 上拉配置寄存器
PORTC_PULLU
0x98
R/W
0x00000000
端口 C 上拉配置寄存器
PORTD_PULLU
0x9C
R/W
0x00000000
端口 D 上拉配置寄存器
PORTA_PULLD
0xA0
R/W
0x00000000
端口 A 下拉配置寄存器
PORTB_PULLD
0xA4
R/W
0x00000010
端口 B 下拉配置寄存器
REVERSED
0xA8~
0xAC
—
—
保留
PORTA_PUSHPn
0xB0
R/W
0x00000000
端口 A 推挽配置寄存器
PORTB_PUSHPn
0xB4
R/W
0x00000000
端口 B 推挽配置寄存器
REVERSED
0xB8~
0xCC
—
—
保留
PORTE_PULLU
0xD0
R/W
0x00000000
端口 E 上拉配置寄存器
SYSCTL
BASE:0x400F0000
名称
偏移量
类型
复位值
描述
SYS_CFG_0
0x00
R/W
0x7C004404
系统寄存器 0
SYS_CFG_1
0x04
R/W
0x000000FF
系统寄存器 1
SYS_DBLF
0x08
R/W
0x00000001
时钟倍频寄存器
SYS_OSCDIS
0x0C
R/W
0x00000000
内置振荡器关闭寄存器
27
SWM100 系列
6.5.4 寄存器描述
比较器/放大器控制寄存器 OP_COMP_CTL
ADDR:0x40000000
位域
名称
类型
复位值
31:0
OP_COMP_CTL
RW
0
描述
见比较器/放大器章节
SPI 状态配置寄存器 SPI_CTL
ADDR:0x40000004
位域
名称
类型
复位值
描述
31:2
REVERSED
R
0
保留位
1
SPI_CTL
RW
0
SPI 状态控制位
0:空闲状态为低电平
1:空闲状态为三态
0
REVERSED
R
0
保留位
端口 A 功能选择寄存器 PORTA_SEL
ADDR:0x40000080
位域
31:30
29:28
27:26
25:24
23:22
21:20
名称
PA15
PA14
PA13
PA12
PA11
PA10
类型
R/W
R/W
R/W
R/W
R/W
R/W
复位值
描述
00
PortA15 功能选择
00:GPIO
01:UART_TX(备选)
10/11:模数转换 基准 N 端
00
PortA14 功能选择
00:GPIO
01:UART_RX(备选)
10/11:模数转换 基准 P 端
00
PortA13 功能选择
00:GPIO
01:TIMER_SE_OUT
10/11:比较器 2 P 端
00
PortA12 功能选择
00:GPIO
01:保留
10/11:比较器 2 N 端
00
PortA11 功能选择
00:GPIO
01:保留
10/11:模数转换 bit7/放大器 2 输出
00
PortA10 功能选择
00:GPIO
01:TIMER_SE_IN
28
SWM100 系列
10/11:比较器 1 P 端
19:18
17:16
15:14
PA09
PA08
PA07
R/W
R/W
R/W
00
PortA9 功能选择
00:GPIO
01:保留
10/11:比较器 1 N 端
00
PortA8 功能选择
00:GPIO
01:保留
10/11:模数转换 bit6/放大器 1 输出
00
PortA7 功能选择
00:GPIO
01:PWM_BREAK
10/11:放大器 0 P 端
13:12
PA06
R/W
00
11:10
PA05
R/W
00
9:8
7:6
5:4
3:2
1:0
PA04
PA03
PA02
PA01
PA00
R/W
R/W
R/W
R/W
R/W
PortA6 功能选择
00:GPIO
01:保留
10/11:放大器 0 N 端
PortA5 功能选择
00:GPIO
01:SSI_CSn(备选)
10/11:模数转换 bit5/放大器 0 输出
00
PortA4 功能选择
00:GPIO
01:SSI_CLK(备选)
10/11:模数转换 bit4
00
PortA3 功能选择
00:GPIO
01:SSI_TX(备选)
10/11:模数转换 bit3
00
PortA2 功能选择
00:GPIO
01:SSI_RX(备选)
10/11:模数转换 bit2
00
PortA1 功能选择
00:GPIO
01:I2C_SDA
10/11:模数转换 bit1
00
PortA0 功能选择
00:GPIO
01:I2C_CLK
10/11:模数转换 bit0
29
SWM100 系列
端口 B 功能选择寄存器 PORTB_SEL
ADDR:0x40000084
位域
名称
类型
复位值
31:10
REVERSED
R
0
保留位
00
PortB4 功能选择
00:GPIO
01:保留
10/11:保留
00
PortB3 功能选择
00:GPIO
01:SWDIO
10/11:保留
00
PortA2 功能选择
00:GPIO
01:SWCLK
10/11:保留
00
PortB1 功能选择
00:GPIO
01:保留
10/11:clk-
00
PortB0 功能选择
00:GPIO
01:保留
10/11:clk+
9:8
7:6
5:4
3:2
1:0
PB04
PB03
PB02
PB01
PB00
R/W
R/W
R/W
R/W
R/W
描述
端口 C 功能选择寄存器 PORTC_SEL
ADDR:0x40000088
位域
名称
类型
复位值
31:16
REVERSED
R
0
保留位
00
PortC7 功能选择
00:GPIO
01:SSI_CSn
10/11:保留
00
PortC6 功能选择
00:GPIO
01:SSI_CLK
10/11:保留
15:14
13:12
PC07
PC06
R/W
R/W
描述
11:10
PC05
R/W
00
PortC5 功能选择
00:GPIO
01:SSI_TX
10/11:保留
9:8
PC04
R/W
00
PortC4 功能选择
30
SWM100 系列
00:GPIO
01:SSI_RX
10/11:保留
7:6
5:4
3:2
1:0
PC03
PC02
PC01
PC00
R/W
R/W
R/W
R/W
00
PortC3 功能选择
00:GPIO
01:Counter0 IN
10/11:保留
00
PortC2 功能选择
00:GPIO
01:Counter1 IN
10/11:保留
00
PortC1 功能选择
00:GPIO
01:UART_TX
10/11:保留
00
PortC0 功能选择
00:GPIO
01:UART_RX
10/11:保留
端口 D 功能选择寄存器 PORTD_SEL
ADDR:0x4000008C
位域
名称
类型
复位值
31:16
REVERSED
R
0
保留位
00
PortD7 功能选择
00:GPIO
01:Counter2 IN
10/11:保留
00
PortD6 功能选择
00:GPIO
01:Counter3 IN
10/11:保留
00
PortD5 功能选择
00:GPIO
01:PWM0
10/11:保留
15:14
13:12
11:10
PD07
PD06
PD05
R/W
R/W
R/W
描述
9:8
PD04
R/W
00
PortD4 功能选择
00:GPIO
01:PWM1
10/11:保留
7:6
PD03
R/W
00
PortD3 功能选择
00:GPIO
31
SWM100 系列
01:PWM2
10/11:保留
5:4
3:2
1:0
PD02
PD01
PD00
R/W
R/W
R/W
00
PortD2 功能选择
00:GPIO
01:PWM3
10/11:保留
00
PortD1 功能选择
00:GPIO
01:PWM4
10/11:保留
00
PortD0 功能选择
00:GPIO
01:PWM5
10/11:保留
端口 A 上拉使能寄存器 PORTA_PULLUP
ADDR:0x40000090
位域
名称
类型
复位值
描述
31:16
REVERSED
R
0
保留位
15
PA15
R/W
00
Port A15 上拉配置
0: 上拉关闭
1: 上拉开启
14
PA14
R/W
00
Port A14 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port A13 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port A12 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port A11 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port A10 上拉配置
0: 上拉关闭
1: 上拉开启
13
12
11
10
PA13
PA12
PA11
PA10
R/W
R/W
R/W
R/W
9
PA9
R/W
00
Port A9 上拉配置
0: 上拉关闭
1: 上拉开启
8
PA8
R/W
00
Port A8 上拉配置
0: 上拉关闭
32
SWM100 系列
1: 上拉开启
7
6
5
4
PA07
PA06
PA05
PA04
R/W
R/W
R/W
R/W
00
Port A7 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port A6 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port A5 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port A4 上拉配置
0: 上拉关闭
1: 上拉开启
3
PA03
R/W
00
Port A3 上拉配置
0: 上拉关闭
1: 上拉开启
2
PA02
R/W
00
Port A2 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port A1 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port A0 上拉配置
0: 上拉关闭
1: 上拉开启
1
0
PA01
PA00
R/W
R/W
端口 B 上拉使能寄存器 PORTB_PULLUP
ADDR:0x40000094
位域
名称
类型
复位值
31:4
REVERSED
R
0
保留位
3
PB3
R/W
0
Port B3 上拉配置
0: 上拉关闭
1: 上拉开启
0
Port B2 上拉配置
0: 上拉关闭
1: 上拉开启
0
Port B1 上拉配置
0: 上拉关闭
1: 上拉开启
0
Port B0 上拉配置
0: 上拉关闭
1: 上拉开启
2
1
0
PB2
PB1
PB0
R/W
R/W
R/W
33
描述
SWM100 系列
端口 C 上拉使能寄存器 PORTC_PULLUP
ADDR:0x40000098
位域
名称
类型
复位值
31:8
REVERSED
R
0
保留位
00
Port C7 上拉配置
0: 上拉关闭
1: 上拉开启
7
PC07
R/W
描述
6
PC06
R/W
00
Port C6 上拉配置
0: 上拉关闭
1: 上拉开启
5
PC05
R/W
00
Port C5 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port C4 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port C3 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port C2 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port C1 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port C0 上拉配置
0: 上拉关闭
1: 上拉开启
4
3
2
1
0
PC04
PC03
PC02
PC01
PC00
R/W
R/W
R/W
R/W
R/W
端口 D 上拉使能寄存器 PORTD_PULLUP
ADDR:0x4000009C
位域
名称
类型
复位值
31:8
REVERSED
R
0
保留位
7
PD07
R/W
00
Port D7 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port D6 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port D5 上拉配置
0: 上拉关闭
1: 上拉开启
6
5
PD06
PD05
R/W
R/W
34
描述
SWM100 系列
4
3
2
1
0
PD04
PD03
PD02
PD01
PD00
R/W
R/W
R/W
R/W
R/W
00
Port D4 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port D3 上拉配置
0: 上拉关闭
1: 上拉开启
00
PortD2 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port D1 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port D0 上拉配置
0: 上拉关闭
1: 上拉开启
端口 E 上拉使能寄存器 PORTE_PULLUP
ADDR:0x400000D0
位域
名称
类型
复位值
31:8
REVERSED
R
0
保留位
00
Port E7 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port E6 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port E5 上拉配置
0: 上拉关闭
1: 上拉开启
00
Port E4 上拉配置
0: 上拉关闭
1: 上拉开启
7
6
5
4
PE07
PE06
PE05
PE04
R/W
R/W
R/W
R/W
描述
3
PE03
R/W
00
Port E3 上拉配置
0: 上拉关闭
1: 上拉开启
2
PE02
R/W
00
PortE2 上拉配置
0: 上拉关闭
1: 上拉开启
1
PE01
R/W
00
Port E1 上拉配置
0: 上拉关闭
1: 上拉开启
0
PE00
R/W
00
Port E0 上拉配置
35
SWM100 系列
0: 上拉关闭
1: 上拉开启
端口 A 下拉使能寄存器 PORTA_PULLDOWN
ADDR:0x400000A0
位域
名称
类型
复位值
31:16
REVERSED
R
0
保留位
0
Port A15 下拉配置
0: 下拉关闭
1: 下拉开启
0
Port A14 下拉配置
0: 下拉关闭
1: 下拉开启
15
14
PA15
PA14
R/W
R/W
描述
13
PA13
R/W
0
Port A13 下拉配置
0: 下拉关闭
1: 下拉开启
12
PA12
R/W
0
Port A12 下拉配置
0: 下拉关闭
1: 下拉开启
0
Port A11 下拉配置
0: 下拉关闭
1: 下拉开启
0
Port A10 下拉配置
0: 下拉关闭
1: 下拉开启
0
Port A9 下拉配置
0: 下拉关闭
1: 下拉开启
0
Port A8 下拉配置
0: 下拉关闭
1: 下拉开启
11
10
9
8
PA11
PA10
PA9
PA8
R/W
R/W
R/W
R/W
7
PA7
R/W
0
Port A7 下拉配置
0: 下拉关闭
1: 下拉开启
6
PA6
R/W
0
Port A6 下拉配置
0: 下拉关闭
1: 下拉开启
0
Port A5 下拉配置
0: 下拉关闭
1: 下拉开启
0
Port A4 下拉配置
0: 下拉关闭
1: 下拉开启
5
4
PA5
PA4
R/W
R/W
36
SWM100 系列
3
2
1
0
PA3
PA2
PA1
PA0
R/W
R/W
R/W
R/W
0
Port A3 下拉配置
0: 下拉关闭
1: 下拉开启
0
Port A2 下拉配置
0: 下拉关闭
1: 下拉开启
0
Port A1 下拉配置
0: 下拉关闭
1: 下拉开启
0
Port A0 下拉配置
0: 下拉关闭
1: 下拉开启
端口 B 下拉使能寄存器 PORTB_PULLDOWN
ADDR: 0x400000A4
位域
名称
类型
复位值
31:5
REVERSED
R
0
4
PB4
R/W
1
3
PB3
R/W
0
2
PB2
R/W
0
1
PB1
R/W
0
0
PB0
R/W
0
描述
保留位
Port B4 下拉配置
0: 下拉关闭
1: 下拉开启
Port B3 下拉配置
0: 下拉关闭
1: 下拉开启
Port B2 下拉配置
0: 下拉关闭
1: 下拉开启
Port B1 下拉配置
0: 下拉关闭
1: 下拉开启
Port B0 下拉配置
0: 下拉关闭
1: 下拉开启
端口 A 推挽使能寄存器 PORTA_PUSHPULLN
ADDR: 0x400000B0
位域
名称
类型
复位值
31:16
REVERSED
R
0
15
PA15
R/W
0
14
PA14
R/W
0
13
PA13
R/W
0
描述
保留位
Port A15 推挽配置
0: 推挽模式
1: 开漏模式
Port A14 推挽配置
0: 推挽模式
1: 开漏模式
Port A13 推挽配置
0: 推挽模式
37
SWM100 系列
1: 开漏模式
12
PA12
R/W
0
11
PA11
R/W
0
10
PA10
R/W
0
9
PA9
R/W
0
8
PA8
R/W
0
7
PA7
R/W
0
6
PA6
R/W
0
5
PA5
R/W
0
4
PA4
R/W
0
3
PA3
R/W
0
2
PA2
R/W
0
1
PA1
R/W
0
0
PA0
R/W
0
Port A12 推挽配置
0: 推挽模式
1: 开漏模式
Port A11 推挽配置
0: 推挽模式
1: 开漏模式
Port A10 推挽配置
0: 推挽模式
1: 开漏模式
Port A9 推挽配置
0: 推挽模式
1: 开漏模式
Port A8 推挽配置
0: 推挽模式
1: 开漏模式
Port A7 推挽配置
0: 推挽模式
1: 开漏模式
Port A6 推挽配置
0: 推挽模式
1: 开漏模式
Port A5 推挽配置
0: 推挽模式
1: 开漏模式
Port A4 推挽配置
0: 推挽模式
1: 开漏模式
Port A3 推挽配置
0: 推挽模式
1: 开漏模式
Port A2 推挽配置
0: 推挽模式
1: 开漏模式
Port A1 推挽配置
0: 推挽模式
1: 开漏模式
Port A0 推挽配置
0: 推挽模式
1: 开漏模式
端口 B 推挽使能寄存器 PORTB_ PUSHPULLN
ADDR: 0x400000B4
位域
名称
类型
复位值
31:8
REVERSED
R
0
保留位
1
PB1
R/W
0
Port B1 推挽配置
0: 推挽模式
38
描述
SWM100 系列
1: 开漏模式
0
PB0
R/W
Port B0 推挽配置
0: 推挽模式
1: 开漏模式
0
系统控制寄存器 0 SYS_CFG_0
ADDR:0x400F0000
位域
名称
类型
复位值
描述
31
CLK
R/W
0
切换时钟
0:外部
1:内部,
30
REVERSED
—
—
保留
29
TCTRAN3
R/W
1
28
TCTRAN2
R/W
1
27
TCTRAN1
R/W
1
26
TCTRAN0
R/W
1
25:22
PEDIV
R/W
0
21:16
BODC
R/W
0
15:12
PWMC
R/W
4
11:8
ADCC
R/W
4
7:0
SCLKC
R/W
4
切换计数器/定时器 3
0:计数器(计数源需外接)
1:定时器
切换计数器/定时器 2
0:计数器(计数源需外接)
1:定时器
切换计数器/定时器 1
0:计数器(计数源需外接)
1:定时器
切换计数器/定时器 0
0:计数器(计数源需外接)
1:定时器
端口 E 滤波基准时钟分频
写入奇数不分频,写入偶数为相应分频值,
0 为 2 分频
BOD 掉电级别:
BIT [21:19] 掉电复位级别
000:1.7V 001: 2.1V 011: 2.4V 011:
2.7V
BIT[18:16] 中断
000:1.9V 001: 2.3V 011: 2.6V 011:
2.9V
PWM 时钟分频
写入奇数不分频,写入偶数为相应分频值,
0 为 2 分频
ADC 时钟分频(需要确保分频后的频率小
于 13MHz)
写入奇数不分频,写入偶数为相应分频值,
0 为 2 分频
SCLK 时钟分频,
写入奇数不分频,写入偶数为相应分频值,
0 为 2 分频
系统控制寄存器 1 SYS_CFG_1
ADDR: 0x400F0004
39
SWM100 系列
位域
名称
类型
复位值
31:11
REVERSED
—
—
保留
0
E2 口滤波使能
0:禁止
1:使能
10
E2FLTEN
R/W
描述
9
E1FLTEN
R/W
0
E1 口滤波使能
0:禁止
1:使能
8
E0FLTEN
R/W
0
E0 口滤波使能
0:禁止
1:使能
1
PWM 时钟使能
0:禁止
1:使能
7
PWMEN
R/W
6
TIMERSEN
R/W
1
5
ADCEN
R/W
1
4
WDTEN
R/W
1
3
SSIEN
R/W
1
2
I2CEN
R/W
1
1
UARTEN
R/W
1
0
TIMEN
R/W
1
TIMER_SE 时钟使能
0:禁止
1:使能
ADC 时钟使能
0:禁止
1:使能
Watchdog 时钟使能
0:禁止
1:使能
SSI 时钟使能
0:禁止
1:使能
I2C 时钟使能
0:禁止
1:使能
UART 时钟使能
0:禁止
1:使能
TIMER 时钟使能
0:禁止
1:使能
时钟倍频寄存器 SYS_DBLF
ADDR: 0x400F0008
位域
名称
类型
复位值
31:1
REVERSED
—
—
0
SYS_DBLF
R/W
描述
保留
0x01
40
时钟倍频
0 = 22.1184MHZ
1 = 44.2368MHZ
SWM100 系列
内置振荡器关闭寄存器 SYS_OSCDIS
ADDR: 0x400F000C
位域
名称
类型
复位值
31:1
REVERSED
—
—
保留
0
OSCDIS
R/W
0
内部时钟关断:
1 = 关断内部时钟
0 = 内部时钟打开
41
描述
SWM100 系列
6.6 通用 I/O(GPIO)
6.6.1 特性
每个端口具有独立的数据输入、输出寄存器
每个引脚可独立配置方向
A 端口可设置为上拉、下拉、推挽、开漏四种工作模式(见第五章)
A 端口和 E 端口具有可编程控制中断,其中 A 端口每个引脚均可配置为独立中断
源,E 端口所有引脚共享一路中断。中断特性如下:
触发极性可配置
触发方式可配置(沿触发/电平触发)
中断可屏蔽
6.6.2 功能
除 SW 引脚外,所有引脚上电后默认状态均为 GPIO 浮空输入(DIR = 0)
。SW 引脚默
认为露出状态。可根据需求以引脚为单位对 GPIO 方向及数据进行控制。同时可将端口 A、
端口 E 配置为中断模式。
数据控制
GPIO 方向寄存器(DIR)用来将每个独立的管脚配置为输入模式或者输出模式。当数
据方向位为 0 时,GPIO 配置为输入,并且对应的外部数据寄存器(EXT)位将捕获和存储
GPIO 端口上的值。当数据方向位设为 1 时,GPIO 配置为输出,并且对应端口数据寄存器
(DATA)对应位的值将在 GPIO 相应引脚上输出,对数据寄存器进行读操作时,返回值为
上次写入值。
中断控制
可根据需求将 GPIO 端口 A 及端口 E 配置为中断模式,并通过相关寄存器配置中断极
性及触发方式。触发方式分为边沿触发和电平触发两种模式。对于边沿触发中断,必须通过
软件对中断位进行清除。对于电平触发中断,需保证外部信号源保持电平稳定,以便中断能
被控制器识别。
使用以下寄存器来对产生中断触发方式和极性进行定义:
GPIO 中断触发方式(INTLEVEL)寄存器
GPIO 中断触发极性(INTPOLARITY)寄存器
通过 GPIO 中断使能(INTEN)寄存器可以使能或者禁止相应中断,通过 GPIO 中断屏
蔽(INTMASK)寄存器可以屏蔽或者打开相应的中断。
当产生中断时,可以在 GPIO 原始中断状态(RAWINTSTAUS)和 GPIO 屏蔽后的中断
42
SWM100 系列
状态(INTSTAUS)寄存器中获取中断信号的状态。INTSTATUS 寄存器仅显示经过屏蔽后
被传送到控制器的中断信号。RINTS 则表示外部中断信号目前状态,但不一定能够被中断
控制器接收。
写 1 到 GPIO 中断结束(INTEOI)寄存器可以清除相应位中断。
滤波功能设置
GPIO E 端口 BIT[2:0]具有输入时钟可配置的滤波功能。当开启系统控制模块(SYSCTL)
中 SYS_CTL_1 寄存器 BIT[10:8]对应位时,滤波功能使能,输入信号稳定三个时钟周期(以
GPIO 模块输入时钟计)后认定有效。如下图所示。
图 6-3 定时器工作示意图
初始化和配置
GPIO 引脚默认为浮空输入模式,可通过以下方式对其状态进行更改:
设置 IO 方向:
ADIR,BDIR,CDIR,DDIR,EDIR 寄存器
设置为 0 则相应位为输入
设置为 1 则相应位为输出
读取 IO 引脚状态: AEXT,BEXT,CEXT,DEXT,EEXT 寄存器
输出指定值:
ADATE,BDATA,CDATA,DDATA,EDATA 寄存器
配置中断:
INTEN 寄存器
设置 0 端口 A/E 相应位作为正常 GPIO 端口
设置 1 端口 A/E 相应位作为外部中断输入
配置中断触发方式:INTLEVEL 寄存器
设置 0 端口 A/E 相应位电平触发方式
设置 1 端口 A/E 相应位边沿触发方式
6.6.3 寄存器映射
GPIO
BASE:0x40001000
名称
偏移量
类型
复位值
ADATA
0x00
R/W
0x00
Port A 数据寄存器
ADIR
0x04
R/W
0x00
Port A 方向寄存器
REVERSED
0x08
—
—
BDATA
0x0C
R/W
0x00
Port B 数据寄存器
BDIR
0x10
R/W
0x00
Port B 方向寄存器
REVERSED
0x14
—
—
CDATA
0x18
R/W
0x00
Port C 数据寄存器
CDIR
0x1C
R/W
0x00
Port C 方向寄存器
43
描述
保留
保留
SWM100 系列
名称
偏移量
类型
复位值
REVERSED
0x20
—
—
DDATA
0x24
R/W
0x00
Port D 数据寄存器
DDIR
0x28
R/W
0x00
Port D 方向寄存器
REVERSED
0x2C
—
—
INTEN_A
0x30
R/W
0x00
中断使能
INTMASK_A
0x34
R/W
0x00
中断屏蔽
INTLEVEL_A
0x38
R/W
0x00
中断触发方式
INTPOLARIT
Y_A
0x3C
R/W
0x00
中断触发极性
INTSTAT_A
0x40
RO
0x00
中断状态
RAWINTSTAT
_A
0x44
RO
0x00
原始中断状态
REVERSED
0x48
—
—
保留
INTEOI_A
0x4C
WO
—
对于边沿触发类型的中断,写 1 清
除相应的中断状态
AEXT
0x50
RO
0x00
Port A 外部数据寄存器
BEXT
0x54
RO
0x00
Port B 外部数据寄存器
CEXT
0x58
RO
0x00
Port C 外部数据寄存器
DEXT
0x58
RO
0x00
Port D 外部数据寄存器
GPIO_E
描述
保留
保留
BASE:0x40011000
名称
偏移量
类型
复位值
EDATA
0x00
R/W
0x00
Port E 数据寄存器
EDIR
0x04
R/W
0x00
Port E 方向寄存器
REVERSED
0x08~0x2
C
—
—
INTEN_E
0x30
R/W
0x00
中断使能
INTMASK_E
0x34
R/W
0x00
中断屏蔽
INTLEVEL_E
0x38
R/W
0x00
中断触发方式
INTPOLARIT
Y_E
0x3C
R/W
0x00
中断触发极性
INTSTAT_E
0x40
RO
0x00
中断状态
RAWINTSTAT
_E
0x44
RO
0x00
原始中断状态
REVERSED
0x48
—
—
保留
INTEOI_E
0x4C
WO
—
对于边沿触发类型的中断,写 1 清
除相应的中断状态
EEXT
0x50
RO
0x00
44
描述
保留
Port E 外部数据寄存器
SWM100 系列
6.6.4 寄存器描述
端口 X 数据寄存器 XDATA
ADDR:0x40001000、0x4000100C、0x40001018、0x40001024、0x40011000
位域
名称
类型
复位值
31:16
REVERSED
R
0
保留位(x 为位宽)
0
当 Port X 数据方向寄存器相应位配置为输出模
式,且端口功能选择寄存器选择为 GPIO 功能,
则写入该寄存器的值将被输出到 Port A 的 I/O 管
脚上。
读这个寄存器返回的是最近写入这个寄存器的
值。
15:0
XDATA
R/W
描述
端口 X 方向寄存器 XDIR
ADDR:0x40001004、0x40001010、0x4000101C、0x40001028、0x40011004
位域
名称
类型
复位值
描述
31:16
REVERSED
R
0
保留位(x 为位宽)
15:0
XDIR
R/W
0
设置 GPIO 管脚方向:
1:相应位为输出管脚
0:相应位为输入管脚
端口 X 中断使能寄存器 INTEN_X
ADDR:0x40001030
位域
名称
类型
复位值
描述
31:16
REVERSED
R
0
保留位(x 为位宽)
15:0
INTEN
R/W
0
0:Port X 相应位作为正常 GPIO 端口
1:Port X 相应位作为外部中断输入
端口 X 中断屏蔽寄存器 INTMASK_X
ADDR:0x40001034
位域
名称
类型
复位值
描述
31:16
REVERSED
R
0
保留位(x 为位宽)
15:0
INTMASK
R/W
0
0:Port X 相应位中断非屏蔽
1:Port X 相应位中断屏蔽
端口 X 中断触发方式寄存器 INTLEVEL_X
ADDR:0x40001038
位域
名称
类型
复位值
描述
31:16
REVERSED
R
0
保留位(x 为位宽)
15:0
LEVEL
R/W
0
0:Port X 相应位电平触发方式
1:Port X 相应位边沿触发方式
45
SWM100 系列
端口 X 中断触发极性寄存器 INTPOLARITY_X
ADDR:0x4000103C
位域
名称
类型
复位值
31:16
REVERSED
R
0
保留位(x 为位宽)
0
0:电平触发时,Port X 相应位中断为低电平触发
沿触发时,Port X 相应中断位为下降沿触发
1:电平触发时,Port X 相应位中断为高电平触发
沿触发时,Port X 相应位中断为上升沿触发
15:0
POLARITY
R/W
描述
端口 X 中断状态寄存器 INTSTATUS_X
ADDR:0x40001040
位域
名称
类型
复位值
31:16
REVERSED
R
0
保留位(x 为位宽)
0
屏蔽后的中断状态
0:Port X 相应位无中断发生
1:Port X 相应位有中断发生
15:0
STATUS
R
描述
端口 X 中原始中断状态寄存器 INTRAWSTATUS_X
ADDR:0x40001044
位域
名称
类型
复位值
31:16
REVERSED
R
0
保留位(x 为位宽)
15:0
RAW
STATUS
0
未屏蔽前的中断状态
0:Port X 相应位无中断发生
1:Port X 相应位有中断发生
R
描述
端口 X 中断清除寄存器 INTEOI_X
ADDR:0x4000104C
位域
名称
类型
复位值
描述
31:16
REVERSED
R
0
保留位(x 为位宽)
15:0
EOI
WO
0
相应位写 1 清除相应位的中断状态
端口 X 外部寄存器 XEXT
ADDR:0x40001050、0x40001054、0x40001058、0x4000105C、0x40011050
位域
名称
类型
复位值
描述
31:16
REVERSED
R
0
保留位(x 为位宽)
15:0
EOI
RO
0
Port X 方向设置为输入状态,读此寄存器为 Port
X 的输入数据
46
SWM100 系列
6.7 通用定时器(TIMER)
6.7.1 特性
32 位向下计数定时器
具有两种操作模式:自由运行模式和用户定义模式
时间溢出周期 = (输入时钟周期)*(装载计数值)
可随时读取目前计数值
6.7.2 功能描述
每个定时器模块包括两个递减计数器、两个 32 位装载/初始化寄存器、两个当前计数值
寄存器和他们的相关的控制功能寄存器。定时器(计数器)的准确功能可由软件来控制,并
通过寄存器接口进行配置。
定时器模块复位后处于未激活状态,所有控制寄存器均被清零,同时进入默认状态。在
通过软件对定时器(计数器)进行配置时需用到控制寄存器(CTRL) 装载计数值寄存器
(LDCNT)
。
定时器从初始值向下计数,减到零触发定时器中断。两种情况会使得定时器从装载计数
值寄存器(LDCNT)重新装载初始化值:
定时器复位或禁止后使能
定时器计数减到零
初始化和配置
作为定时器使用时,必须先配置 SYSCTL 模块中 SYS_CFG_0 寄存器 BIT[29:26](见
系统管理寄存器描述章节)所对应的位,将定时器/计数器功能选择为定时器功能。
定时器、计数器的本质就是一个递减计数器,区别是计数脉冲的来源不同,当作为定时
器使用时,计数脉冲对象为 PCLK。当作为计数器使用时,计数脉冲对象来自对应引脚外接
信号,在使用计数器时,需要将对应的引脚复用切换至计数器功能。
自由运行模式
自 由 运 行 模 式 从 0xFFFFFFFF 开 始 减 数 , 使 用 该 模 式 务 必 将 装 载 值 寄 存 器 设 为
0xFFFFFFFF。
用户定义模式
用户定义模式,用户可以自定义装载值寄存器的值,减到 0 后计数器再次装载此值。
6.7.3 寄存器映射
TIMER
BASE:0x40012000/0x40012014/0x40012028/0x4001203C
名称
偏移量
类型
复位值
描述
LDCNT
0x00
R/W
0x00
装载值寄存器
CVAL
0x04
RO
0x00
当前计数值寄存器
CTRL
0x08
R/W
0x00
控制寄存器
47
SWM100 系列
名称
偏移量
类型
复位值
描述
EOI
0x0C
RO
0x00
中断结束寄存器
INTS
0x10
RO
0x00
中断状态寄存器
6.7.4 寄存器描述
装载值寄存器 LDCNT
ADDR:0x40012000、0x40012014、0x40012028、0x4001203C
位域
名称
类型
复位值
31:0
LDCNT
R/W
0x00
描述
写入这个寄存器的值用来初始化与之关联的
定时器的初始计数值。
用户模式下,定时器计数过程中更改该寄存
器的值,则计数器记到 0 后自动装载所更改
值并重新计数
当前值寄存器 CVAL
ADDR:0x40012004、0x40012018、0x4001202C、0x40012040
位域
名称
类型
复位值
描述
31:0
CVAL
RO
_
模块使能后,读取该寄存器返回计数器当前
的值
控制寄存器 CTRL
ADDR:0x40012008、0x4001201C、0x40012030、0x40012044
位域
名称
类型
复位值
31:3
REVERSED
—
—
保留
00
定时器中断屏蔽
0:非屏蔽
1:屏蔽
00
定时器模式
0:自由运行模式
1:用户定义计数模式
注:在使能自由运行模式前必须将 LDCNT 寄
存器的值所有位置 1
0
定时器使能
0:禁止
1:使能
2
1
0
IM
MODE
EN
R/W
R/W
R/W
描述
中断结束寄存器
ADDR:0x4001200C、0x40012020、0x40012034、0x40012048
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
EOI
RO
0
读这个寄存器返回的都是零,同时清除相关
定时器的中断
48
SWM100 系列
中断状态寄存器
ADDR:0x40012010、0x40012024、0x40012038、0x4001204C
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
STAT
RO
0
判断是否已触发中断
0:未触发中断
1:已触发中断
49
SWM100 系列
6.8 专用定时器(TIMERSE)
6.8.1 特性
32 位定时器/计数器功能
32 位 PWM 输出功能
脉冲及占空比捕捉功能
6.8.2 功能描述
TIMER/COUNTER 模式
配置模块控制寄存器(CTRL)中模式位 BIT[5:4],选择模式 0(00b)
,则模块被配置
为定时器/计数器模式,该模式提供了 32 位长度的计数寄存器,可按以下流程进行配置:
计数目标值。通过目标计数值寄存器(TARVAL)进行配置,写入 32 位目标计数
值,计数器递增至该值后一次计数结束
计数时钟源。可选择片内模块输入时钟或片外引脚输入时钟作为计数时钟源,通过
模块控制寄存器(CTRL)中 BIT[8]进行配置。 默认内部时钟
计数有效沿。通过模块控制寄存器(CTRL)中 BIT[16]进行配置,设置上升沿或
下降沿计数有效。默认上升沿有效
计数循环模式。通过模块控制寄存器(CTRL)中 BIT[28]进行配置,当配置为 0
时,为循环计数模式;配置为 1 时,为单次计数模式。默认循环模式
输出模式。配置为定时器或计数器时,模块控制寄存器(CTRL)BIT[13:12]可配
置输出模式。当配置为除“无输出”以外的模式时,可通过配置输出寄存器
(OUTPVAL)控制引脚输出电平。计数器计数过程中,引脚为保持状态。当一次
计数模式结束后,根据所配置的输出模式,电平发生变化。默认无输出模式
中断设置。可通过设置中断使能及中断屏蔽位,使能或禁能计数完成中断,中断标
志通过读取目标计数值寄存器(TARVAL)或当前值寄存器(CURVAL)清除。中
断未清除再次出现中断时,中断溢出标志位(INTFLAG)被置 1,通过读取目标计
数值寄存器(TARVAL)或当前值寄存器(CURVAL)清除
模块使能。通过模块控制寄存器(CTRL)中 BIT[0]进行配置
PWM 输出模式
配置模块控制寄存器(CTRL)中模式位 BIT[5:4],选择模式 1(01b)
,同时将 BIT[13:12]
配置为记到则相反(01b)
,则模块被配置为 PWM 模式。该模式提供了一个最大周期长度为
32 位的 PWM 模块,可按照以下流程进行配置:
计数时钟源。可选择片内模块输入时钟或片外引脚输入时钟作为 PWM 最小分辨率
长度单位,通过模块控制寄存器(CTRL)中 BIT[8]进行配置。默认内部时钟
50
SWM100 系列
计数有效沿。通过模块控制寄存器(CTRL)中 BIT[16]进行配置,设置上升沿或
下降沿计数有效。默认上升沿有效
初始输出电平。可通过配置输出寄存器(OUTPVAL)指定 PWM 初始输出电平。
默认初始输出为低电平
计数目标值。通过目标计数值寄存器(TARVAL)进行配置。该寄存器低 16 位为
PWM 初始电平长度,高 16 位为跳变后电平长度。(注:当配置为 PWM 模式时,
改寄存器高 16 位及低 16 位均不能为 0,即不能通过 PWM 模式实现单一电平)
中断设置。当电平发生跳变时,产生中断,可通过设置中断使能及中断屏蔽位,使
能或禁能中断
模块使能。通过模块控制寄存器(CTRL)中 BIT[0]进行配置
状态读取。通过读取当状态寄存器(MOD2LF)判断当前输出所处周期
Capture 模式
配置模块控制寄存器(CTRL)中模式位 BIT[5:4],选择模式 2(10b)或模式 3(11b)
时,模块配配置为 capture 模式,用于捕捉外部电平变化。
当配置为模式 2(10b)时,用于捕捉脉冲宽度,引脚出现指定外部电平变化沿(上升
或下降)时,触发计数,以内部时钟计,直至出现外部反向电平沿(下降或上升)后,一次
计数结束,产生中断,三个时钟周期后通过捕捉寄存器 2(CAPLH)给出计数值。读取该寄存
器可清除中断。中断未清除再次出现中断时,中断溢出标志位(INTFLAG)被置 1,通过读
取捕捉寄存器 2(CAP2)清除。
图 6-4 脉冲捕捉示意图
可按照以下流程进行配置:
计数有效沿。通过模块控制寄存器(CTRL)中 BIT[16]进行配置,设置外部上升
沿或下降沿起始计数。默认上升沿有效
计数循环模式。通过模块控制寄存器(CTRL)中 BIT[28]进行配置,当配置为 0
时,为循环计数模式;配置为 1 时,为单次计数模式。默认循环模式(注:循环模
式下,需要保证读取时间小于两次脉冲捕捉结束时间,以免数据丢失)
中断设置。当捕捉完成后,产生中断。可通过设置中断使能及中断屏蔽位,使能或
禁能中断
模块使能。通过模块控制寄存器(CTRL)中 BIT[0]进行配置
51
SWM100 系列
当配置为模式 2(11b)时,用于捕捉占空比宽度,引脚出现指定外部电平变化沿(上
升或下降)时,记为时间点 1,此时触发计数,以内部时钟计,直至出现外部反向电平变化
沿(下降或上升)后,记为时间点 2,继续计数,直至再次出现外部反向电平变化沿(上升
或下降)
,记为时间点 3,一次记录完成,触发中断,通过捕捉寄存器 2(CAPLH)给出时间点
1 至时间点 2 计数值,通过捕捉寄存器 1(CAPW)给出时间点 1 至时间点 3 计数值。读取捕
捉寄存器 2(CAPLH)或捕捉寄存器 1(CAPW)可清除中断。中断未清除再次出现中断时,中断
溢出标志位(INTFLAG)被置 1,通过读取捕捉寄存器 2(CAPLH)或捕捉寄存器 1(CAPW)
清除。
图 6-5 占空比捕捉示意图
可按照以下流程进行配置:
计数有效沿。通过模块控制寄存器(CTRL)中 BIT[16]进行配置,设置外部上升
沿或下降沿起始计数。默认上升沿有效
计数循环模式。通过模块控制寄存器(CTRL)中 BIT[28]进行配置,当配置为 0
时,为循环计数模式;配置为 1 时,为单次计数模式。默认循环模式(注:循环模
式下,需要保证读取时间小于两次脉冲捕捉结束时间,以免数据丢失)
中断设置。当捕捉完成后,产生中断。可通过设置中断使能及中断屏蔽位,使能或
禁能中断
模块使能。通过模块控制寄存器(CTRL)中 BIT[0]进行配置
6.8.3 寄存器映射
TIMERSE
BASE:0x40012800
名称
偏移量
类型
复位值
CTRL
0x00
R/W
0x00
模块控制寄存器
TARVAL
0x04
R/W
0x00
目标计数值寄存器
CURVAL
0x08
RO
0x00
当前计数值寄存器
CAPW
0x0C
RO
0x00
捕捉寄存器 1
CAPLH
0x10
RO
0x00
捕捉寄存器 2
MOD2LF
0x14
RO
0x00
当前状态寄存器
REVERSED
0x18~0x
7C
—
—
OUTPVAL
0x80
R/W
0x00
输出寄存器
INTCTL
0x84
R/W
0x00
中断控制寄存器
52
描述
保留
SWM100 系列
名称
偏移量
类型
复位值
描述
INTSTAT
0x88
RO
0x00
中断原始状态寄存器
INTMSKSTAT
0x8C
RO
0x00
屏蔽后中断状态寄存器
INTFLAG
0x90
RO
0x00
中断溢出标志寄存器
CTRL
0x00
R/W
0x00
模块控制寄存器
6.8.4 寄存器描述
模块控制寄存器 CTRL
ADDR: 0x40012800
位域
名称
类型
复位值
描述
31:29
REVERSED
—
—
保留
28
LMOD
R/W
0
循环模式选择
0:循环模式
27:17
REVERSED
—
—
保留
16
TMOD
R/W
0
有效沿选择
0:上升沿有效
15:14
REVERSED
—
—
保留
13:12
OUTMOD
R/W
0
输出模式选择
00:无输出
10:记到后置高
11:9
REVERSED
—
—
保留
8
OSCMOD
R/W
0
时钟源选择
0:内部时钟
7:6
REVERSED
—
—
保留
5:4
WMOD
R/W
0
工作模式选择
00:计数器模式
10:脉冲捕捉模式
3:1
REVERSED
—
—
保留
0
EN
R/W
0
模块使能
0:模块禁能
1:单次模式
1:下降沿有效
01:记到后反向
11:记到后置低
1:外部时钟
01:PWM 模式
11:占空比捕捉模式
1:模块使能
目标计数值寄存器 TARVAL
ADDR: 0x40012804
位域
名称
类型
复位值
31:16
TARH
R/W
0
15:0
TARL
R/W
0
描述
模式 0/ 模式 2/ 模式 3 目标值高 16 位;
模式 1PWM 信号跳变后周期长度
模式 0/2/3 目标值低 16 位;
模式 1PWM 信号跳变前初始周期长度
53
SWM100 系列
当前计数值寄存器 CURVAL
ADDR: 0x40012808
位域
名称
类型
复位值
描述
31:0
CAPW
R/W
0
类型
复位值
描述
RO
0
模式 2 下无意义
模式 3(占空比捕捉)总周期宽度(跳变沿 1
至跳变沿 3)计数值
类型
复位值
描述
0
模式 2(脉冲捕捉)脉冲宽度周期计数值
模式 3(占空比捕捉)跳变沿 1 至跳变沿 2 周
期宽度计数值
描述
模式 0/ 模式 2/ 模式 3 当前计数值
捕捉寄存器 1 CAPW
ADDR: 0x4001280C
位域
31:0
名称
CAPW
捕捉寄存器 2 CAPLH
ADDR: 0x40012810
位域
31:0
名称
CAPLH
RO
当前状态寄存器 MOD2LF
ADDR: 0x40012814
位域
名称
类型
复位值
31:1
REVERSED
—
—
保留
0
MOD2LF
RO
0
模式 1(PWM)下状态
0:未发生电平翻转
1:已发生电平翻转
输出寄存器 OUTPVAL
ADDR: 0x40012880
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
OUTPVAL
R/W
0
TIMERSE_OUT 输出引脚电平
0:低电平
1:高电平
中断控制寄存器 INTCTL
ADDR: 0x40012884
位域
名称
类型
复位值
31:2
REVERSED
—
—
1
INTMSK
描述
保留
中断屏蔽信号
0:屏蔽
54
1:未屏蔽
SWM100 系列
位域
名称
类型
复位值
0
INTEN
R/W
0
描述
中断使能信号
0:禁能
1:使能
原始中断状态寄存器 INTSTAT
ADDR: 0x40012888
位域
名称
类型
复位值
31:1
REVERSED
—
—
0
INTSTAT
R/W
0
描述
保留
原始中断信号
0:未触发
1:已触发
原始中断状态寄存器 INTMSKSTAT
ADDR: 0x4001288C
位域
名称
类型
复位值
31:1
REVERSED
—
—
0
MSKSTAT
R/W
0
描述
保留
屏蔽后中断信号
0:未触发
1:已触发
中断溢出寄存器 INTFLAG
ADDR: 0x40012890
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
0
INTFLAG
R/W
0
保留
中断溢出信号,当已有中断未清除,再次发生
中断时,该位置 1
0:未溢出
1:溢出
55
SWM100 系列
6.9 看门狗定时器(WDT)
6.9.1 功能
看门狗定时器(WDT)主要用于控制程序流程正确,在程序流长时间未按既定流程执
行指定程序的情况下复位芯片。它具有两个工作模式,可触发中断或复位芯片。使能前,首
先写入超时周期值并初始化模块。使能后,当工作在模式 0(RMOD=0)时, WDT 将根据
系统时钟递减计数。在计数至 0 值时产生复位信号将系统复位。当工作在模式 1(RMOD=1)
时,WDT 会在第一次计数后置标志位、产生中断并再次装载超时周期值开始计数。当第二
次记至 0 值时,复位芯片。在 WDT 计数过程中对计数器重启寄存器进行写操作可使该模块
恢复至初始使能状态继续工作,从而延后复位发生的时间。通过不断将复位时间延后的行为
实现保证程序流正常工作的效果。
初值化和配置
配置 WDT 顺序如下:
设置所要计数的值,其中,TOP_INIT 为初始值(在 WDT 使能之前写入值)
,TOP
为超时后将要填装的值
写(CR 寄存器)配置 WDT 模式(系统复位模式或中断模式)
写(EN)使能 WDT
6.9.2 寄存器映射
WDT
BASE:0x40019000
名称
偏移量
类型
复位值
描述
CR
0x00
R/W
0x00
WDT 控制寄存器
TORR
0x04
R/W
0x00
超时周期寄存器
CCVR
0x08
RO
0x00
当前计数器值寄存器
CRR
0x0C
WO
0x00
计数器重启寄存器
STAT
0x10
RO
0x00
中断状态寄存器
EOI
0x14
RO
0x00
中断清除寄存器
6.9.3 寄存器描述
WDT 控制寄存器(CR)
ADDR: 0x40019000
位域
名称
类型
复位值
31:2
REVERSED
—
—
保留
1
RMOD
R/W
0
设置超时事件发生时,响应模式。
0 : 产生一个系统复位
56
描述
SWM100 系列
0
EN
R/W
0
1 :第一次超时发生,产生一个 WDT
中断。如果在第二次超时发生时,没有
中断没有被清除,就会产生一个系统复
位
使能 WDT 模块。系统复位后将变成默
认值。
0 :WDT 禁止
1 :WDT 使能
超时周期寄存器(TORR)
ADDR: 0x40019004
位域
名称
类型
复位值
描述
31:8
REVERSED
—
—
7:4
TOP_INIT
R/W
0
3:0
TOP
R/W
0
保留
设置初始计数值 i,必须在 WDT 使能
之前设置
以下为设置值 i 所对应的计数值:
2(16+i)
( i 的范围为 0~15 )
设置计数值,超时发生后将装入该值倒
以下为设置值 i 所对应的计数值:
2(16+i)
( i 的范围为 0~15 )
当前计数器值寄存器(CCVR)
ADDR: 0x40019008
位域
名称
类型
复位值
31:0
CCVR
RO
0x00
描述
读操作返回当前计数器计数值
计数器重启寄存器(CRR)
ADDR: 0x4001900C
位域
名称
类型
复位值
描述
31:8
REVERSED
—
—
保留
7:0
CRR
WO
—
写入 0x76 后重启计数器器,同时清除
中断(喂狗操作)。读返回 0
中断状态寄存器(STAT)
ADDR: 0x40019010
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
0
STAT
RO
0
保留
显示 WDT 中断状态,读操作返回如下
值:
1 :已产生中断,且未清除
0 :未产生中断或中断已清除
57
SWM100 系列
中断清除寄存器(EOI)
ADDR: 0x4001901C
位域
名称
类型
复位值
31:1
REVERSED
—
—
保留
0
EOI
RO
0
读该位可清除 WDT 中断(计数器不重
启)
58
描述
SWM100 系列
6.10 UART 接口控制器(UART)
6.10.1 特性
独立的发送 FIFO 和接收 FIFO
FIFO 长度可编程,包括提供传统双缓冲接口的 1 字节深的操作
FIFO 触发深度可为:1/8、 1/4、 1/2、 3/4 或 7/8
可编程的波特率发生器允许速率高达 3.125 Mbps
标准的异步通信位:起始位、停止位和奇偶校验位(parity)
检测错误的起始位
线中止(Line-break)的产生和检测
完全可编程的串行接口特性:
5、 6、 7 或 8 个数据位
偶校验、奇校验、粘着或无奇偶校验位的产生/检测
产生 1 或 2 个停止位
6.10.2 功能
结构图如下图所示。
图 6-6 UART 结构图
59
SWM100 系列
UART(RS232)串行协议
由于串行通讯的双方是异步的,所以在串行数据的开始和结束处添加了开始和停止位
(start and stop bits)。这两位使得通讯双方在未共享时钟信号的情况下进行同步。一个完整
的串行数据结构被称作一个字符(character)。如下图所示:
图 6-7 UART 结构图
串行字符中最后一个数据位和停止位之间可以添加校验位,用于对接收的数据进行简单
的错误检查。
初始化和配置
UART 配置过程如下图所示:
关闭UART所有中断
复位接收和发送FIFO
设置线控制寄存器
设置波特率
使能FIFO(可选)
UART准备接收发
送数据
图 6-8 UART 结构图
6.10.3 寄存器映射
UART
BASE: 0x40003000
60
SWM100 系列
名称
偏移量
类型
复位值
RO
0x00
WO
0x00
DLL
R/W
0x00
DLH
R/W
0x00
IER
R/W
0x00
IIR
RO
0x01
WO
0x00
RBR
0x00
THR
0x04
0x08
FCR
LCR
0x0C
R/W
0x00
REVERSED
0x10
—
—
LSR
0x14
RO
0x60
REVERSED
0x18
~0x78
—
—
USR
0x7C
RO
0x06
描述
接收缓冲寄存器,包含下一个要读
取的已接收字符
( LCR bit[7] = 0 )
发送保持寄存器,用于写入下一个
要发送的字符
( LCR bit[7] = 0 )
除数锁存(Low)寄存器,存储波
特率除数值的最低有效字节
( LCR bit[7] = 1 )
除数锁存(High)寄存器,存储波
特率除数值的最高有效字节
( LCR bit[7] = 1 )
中断使能寄存器,包含 4 个 UART
中断对应的各个中断的使能位
( LCR bit[7] = 0 )
中断 ID 寄存器,识别等待处理的
中断,以及 FIFO 的状态
FIFO 控制寄存器,控制 FIFO 的状
态及模式
线控制寄存器,包含数据帧格式控
制,波特率除数锁存器的可配置使
能,以及一个断点控制位
保留
线状态寄存器,包含发送和接受的
状态标志位
保留
UART 状态寄存器,包含 UART
FIFO 状态
6.10.4 寄存器描述
接收缓冲寄存器(RBR)
ADDR: 0x40003000
位域
名称
类型
复位值
描述
31:8
REVERSED
—
—
7:0
RBR
RO
0x00
保留
如果使能 FIFO(FCR[0]置“1”
)
,该寄存器获取接
收 FIFO 中最早接收到的字节;如果接收 FIFO 已
满并且该寄存器在下一个字节到来之前没有被读
取,FIFO 中的数据将被保持,但任何新到来的数
据将丢失并产生溢出错误。
如果未使能 FIFO,寄存器在下一个数据到来之前
必须被读取,否则旧的数据将被覆盖并产生溢出错
误。
该寄存器中的数据只有在 LSR 寄存器 DR 位为
“1”
61
SWM100 系列
的时候有效。
发送保持寄存器(THR)
ADDR: 0x40003000
位域
名称
类型
复位值
31:8
REVERSED
—
—
7:0
THR
WO
描述
保留
0x00
如果使能 FIFO(FCR[0]置“1”),在 FIFO 填满之
前,X 个字节的数据可被写到 THR。X 的大小由
FIFO 的深度决定。FIFO 满时还继续写数据会导致
数据丢失。
如果未使能 FIFO,向 THR 写数据将清除 LSR[5],
当 LSR[5]为“0”时,向 THR 写入数据将导致数
据被覆盖。
所以,数据应该在 LSR[5]被置“1”时写入 THR
除数锁存(LOW)寄存器(DLL)
ADDR: 0x40003000
位域
名称
类型
复位值
31:8
REVERSED
—
—
7:0
LOW
R/W
0x00
描述
保留
除数锁存(Low)寄存器,存储波特率除数值的最
低有效字节
除数锁存(HIGH)寄存器(DLH)
ADDR: 0x40003004
位域
名称
类型
复位值
描述
31:8
REVERSED
—
—
7:0
HIGH
R/W
0x00
除数锁存(High)寄存器,存储波特率除数
值的最高有效字节
复位值
描述
保留
可编程发送保持寄存器空中断模式使能用于
使能或禁用发送保持寄存器空的中断。
(中断
判断条件 FIFO LEVEL>TX Empty Trigger?。
同时线状态 THRE 由指示发送 FIFO 空转换为
指示发送 FIFO 满。)
0 = 禁用
1 = 使能
保留
中断使能寄存器(IER)
ADDR: 0x40003004
位域
名称
类型
31:8
REVERSED
—
—
7
PTIME
R/W
0x00
6 :3
REVERSED
—
—
2
ELS
R/W
0x00
保留
该位用于使能或禁用接收线状态中断。
0 = 禁用
1 = 使能
62
SWM100 系列
1
ETBEI
R/W
0x00
0
ERBFI
R/W
0x00
该位用于使能或禁用发送保持寄存器空中断
0 = 禁用
1 = 使能
该位用于使能或禁用接收数据可用中断
0 = 禁用
1 = 使能
中断标志寄存器(IIR)
ADDR: 0x40003008
位域
名称
类型
复位值
31:8
REVERSED
—
—
7:6
RBR
RO
0x00
5:4
REVERSED
—
—
3:0
中断标志
RO
0x0
描述
保留
该位用于指示 FIFO 使能或禁用
00 = 禁用
11 = 使能
保留
中断标志,详细信息见中断处理表
0001 = 无中断
0010 = 发送保持寄存器空
0100 = 接收数据可用
0110 = 接收线状态
0111 = 忙监测(未使用)
1100 = 字符超时
IIR[3]指示只有在 FIFO 使能时才能触发的中
断。
中断处理表
Bit3
中断标志
Bit2
Bit1
Bit0
优先
级
中断类型
中断源
中断复位
0
0
0
1
无
无
无
无
0
1
1
0
最高
接收线状态
溢出/校验/帧错误或
间隔中断
读线状态寄存器
0
1
0
0
其次
接收数据可
用
接收数据可用
读接收缓冲寄存
器
读接收缓冲寄存
器
读 IIR 寄存器或
写 THR 寄存器
1
1
0
0
其次
字符超时
RX FIFO 中至少有
一个字符,并且在最
近的 4 个字符时间内
没有字节输入输出
0
0
1
0
第三
发送保持寄
存器空
发送保持寄存器空
0
1
1
1
第四
忙监测
在 UART 忙时
读 UART 状态寄
(USR[0]被置“1”
)
存器
写线控制寄存器
FIFO 控制寄存器(FCR)
ADDR: 0x40003008
位域
名称
类型
复位值
描述
31:8
REVERSED
—
—
7:6
接收触发
WO
0x00
保留
这两个位决定了 UART RX FIFO 在触发中断
时的接收阈值
63
SWM100 系列
5:4
发送触发
WO
0x00
3
REVERSED
—
—
2
TX FIFO 复
位
WO
0x00
1
RX FIFO 复
位
WO
0x00
0
FIFO 使能
WO
0x00
00 = 1 个字节
01 = 2 个字节
10 = 4 个字节
11 = 6 个字节
这两个位决定了 UART TX FIFO 在激活中断
前剩余的字符数量。
00 = FIFO 空
01 = 2 个字节
10 = 2 个字节
11 = 4 个字节
保留
0:对两个 UART FIFO 均无影响
1:写 1 将会清除 UART Tx FIFO 中的所有字
节,并复位控制器部分和指针逻辑,该位自
动清零。
0:对两个 UART FIFO 均无影响
1:写 1 将会清除 UART Rx FIFO 中的所有字
节,并复位控制器部分和指针逻辑,该位自
动清零。
该位使能或禁用发送和接收 FIFO。当该位的
值改变时,FIFO 的控制器部分将被复位
线控制寄存器(LCR)
ADDR: 0x4000300C
位域
名称
类型
复位值
描述
31:8
REVERSED
—
—
7
DLAB
R/W
0x00
6
BC
R/W
0x00
5
REVERSED
—
—
4
EPS
R/W
0x00
3
PEN
R/W
0x00
2
STOP
R/W
0x00
1:0
DLS
R/W
0x00
保留
除数锁存读写使能位,任意时刻可读,UART
为非忙状态(USR[0] = 0)时可写。该位用于使
能除数锁存寄存器(DLL 和 DLH)读写功能。
当该位置 1 时,DLL 和 DLH 寄存器可读写。
设置波特率完成后,该位必须被清 0,以保证
其它寄存器访问正确性
间隔控制:
0 = 禁用间隔传输
1 = 当被置为“1”
,强行使串行输出为逻辑“0”
保留
奇偶校验选择:
0 = 选择奇校验
1 = 选择偶校验
校验使能:
0 = 校验禁用
1= 校验使能
停止位设置:
0 = 1 bit 停止位
1 = 当 LCR[1:0]为 0 时是 1.5 bits,否则为 2 bits
字长度设置:
00 = 5 bits
01 = 6 bits
64
SWM100 系列
10 = 7 bits
11 = 8 bits
线状态寄存器(LSR)
ADDR: 0x40003014
位域
名称
类型
复位值
描述
31:8
REVERSED
—
—
7
RFE
RO
0x00
6
TEMT
RO
0x01
5
THRE
RO
0x00
4
BI
RO
0x00
3
FE
RO
0x00
2
PE
RO
0x00
1
OE
RO
0x00
保留
接收 FIFO 错误位:
当一个带有 RX 错误(如:帧错误、校验错误
或间隔中断)的字符载入到 RBR 时,LSR[7]
就会被置位。当 U0LSR 寄存器被读取并且
UART FIFO 中不再有错误时,该位就会清零。
0 = RBR 中没有 UART RX 错误或 FCR[0]=0
1 = RBR 包含至少一个 UART RX 错误
发送器空:
当 THR 和 TSR 同时为空时,TEMT 就会被设
置;而当 TSR 或 THR 任意一个包含有效数据
时,TEMT 就会被清零。
0 = THR 和/或发送移位寄存器包含有效数据
1 = THR 和发送移位寄存器为空
发送保持寄存器空:
当检测到 UART THR 已空时,THRE 就会立
即被设置。写 THR 会清零 THRE。
0 = THR 包含有效数据
1 = THR 为空
间隔中断:
当串行输入线保持在逻辑“0”状态的时间大
于开始+数据+校验+停止的时间的总和的时
候,该位被置“1”。读 LSR 清除该位。
0 = 无间隔中断
1 = 间隔中断
帧错误:
当接收字符的停止位为逻辑 0 时,就会发生
帧错误。使能 FIFO 时,当一个有帧错误的字
符在 FIFO 顶时,该位被置位。当检测到有帧
错误时,RX 会尝试与数据重新同步,并假设
错误的停止位实际是一个超前的起始位。但
即使没有出现帧错误,它也无法假设下一个
接收到的字符是正确的。读 LSR 清除该位。
0 = 无帧错误
1 = 帧错误
校验错误:
使能 FIFO 时,当一个有校验错误的字符到达
FIFO 顶时,该位被置位。当有间隔中断发生
时,该位被置位。读 LSR 清除该位。
0 = 无校验错误
1 = 校验错误
溢出错误:
一旦发生错误,就设置溢出错误条件。读 LSR
65
SWM100 系列
0
DR
RO
0x00
会清零 LSR[1]。当 UART 接收移位寄存器已
有新的字符就绪,而 UART RBR FIFO 已满时
LSR[1]会置位。此时,UART 接收 FIFO 将不
会被覆盖,UART 接收移位寄存器内的字符
将会丢失
0 = 无溢出错误
1 = 溢出错误
接收数据就绪:
用于指示接收缓冲寄存器或接收 FIFO 中至少
有一个字符。
0 = 无数据准备好
1 = 数据准备好
在 FIFO 禁用时,读取 RBR 或 FIFO 使能时,
FIFO 空会清除该位。
UART 状态寄存器(USR)
ADDR: 0x4000307C
位域
名称
类型
复位值
描述
31:8
REVERSED
—
—
7:0
BUSY
RO
0x00
保留
该位用于指示 UART 是否处在忙或者空闲状
态。
00 = UART 空闲或不活跃
11 = UART 忙
66
SWM100 系列
6.11 I2C 总线控制器(主/从)
6.11.1 特性
两线 I2C 串行接口,包括串行数据线 SDA 和串行时钟线 SCL
三种速率:
标准速率(100Kbps)
快速速率(400Kbps)
高速速率(1Mbps)
同步时钟
可指定主机或从机
7 位或 10 位地址模式
发送和接收缓冲器
中断或轮询模式选择
多主机仲裁
6.11.2 功能
芯片提供了内部集成电路(I2C)总线接口模块,其通过采用两线设计(串行数据线 SDA 和
串行时钟线 SCL),提供双向的数据传输,可应用于串行存储器(RAM 和 ROM)、网络设备、
LCD、音频发生器等外部 I2C 设备。
I2C 总线仅使用两个信号:SDA 和 SCL,这两个被称为 I2CSDA 和 I2CSCL。SDA 是
双向串行数据线,SCL 是双向串行时钟线。当 SDA 和 SCL 线都为高电平时,总线处于空闲
状态。
基本操作
总线设置
I2C 总线采用串行数据线(SDA)和串行时钟线(SCL)传输数据。I2C 总线的设备端口为开
漏输出,所以必须在接口外接上拉电阻。
数据在主从设备之间通过 SCL 时钟信号在 SDA 数据线上逐字节同步传输。每一个 SCL
时钟脉冲发送一位数据,高位在前。每发送一个字节的数据产生一个应答信号。在时钟线
SCL 高电平期间对数据的每一位进行采样。数据线 SDA 在时钟线 SCL 为低改变,在时钟线
SCL 为高电平时必须保持稳定。
协议介绍
67
SWM100 系列
通常情况下,一个标准的通信包含四个部分:
(1)开始信号
(2)从机地址
(3)数据传输
(4)停止信号
如下图所示
图 6-9 I2C 通信示意图
起始位发送
当总线空闲时,表示没有主机设备占用总线(SCL 和 SDA 都保持高电平),主机可以
通过发送一个起始信号启动传输。启动信号,通常被称为 S 位。SCL 为高电平时,SDA 由
高电平向低电平跳变。启动信号表示开始新的数据传输。
重新启动是没有先产生一个停止信号的启动信号。主机使用此方法与另一个从机或者在
不释放总线的情况下与相同的从机改变数据传输方向(例如从写入设备到写入设备的转换)
。
当命令寄存器的 STA 位被置位,同时 RD 或者 WR 位被置位时,系统核心产生一个启
动信号。根据 SCLK 的当前的不同状态,生成启动信号或重复启动信号。
地址发送
在开始信号后,由主机传输的第一个字节数据是从机地址。包含 7 位的从设备地址和 1
位的 RW 指示位。RW 指示位信号表示与从机的数据传输方向。在系统中的从机不可以具有
相同的地址。只有从机地址和主机发送的地址匹配时才能产生一个应答位(在第九个时钟周
期拉低 SDA)进行响应。对于 10 位从机地址,模块通过产生两个从机地址支持。
发送从机地址为一次写操作,在传输寄存器中保存从机地址并对 WR 位置位,从机地
址将被发送到总线上。
数据发送
一旦成功取得了从机地址,主机就可以通过 R/W 位控制逐字节的发送数据。每传输一
个字节都需要在第九个时钟周期产生一个应答位。
如果从机信号无效,主机可以生成一个停止信号中止数据传输或生成重复启动的信号并
开始一个新的传输周期。如果从机返回一个 NACK 信号,主机就会产生一个停止信号放弃
数据传输,或者产生一个重新启动信号开始一个新的传输周期。
如果主机作为接收设备,没有应答从机,从机就会释放 SDA,主机产生停止信号或者
重新启动信号。
向从机写入数据,需把将要发送的数据存入传输寄存器中并设置 WR 位。从从机中读
68
SWM100 系列
取数据,需设置 RD 位。在数据传输过程中系统核心设置 TIP 提示标志,指示传输正在进行。
当传输完成后 TIP 提示标志会自动清除。当中断使能时,中断标志位 IF 被置位,并产生中
断。当中断标志位 IF 被置位后,接收寄存器收到有效数据。当 TIP 提示标志复位后,用户
可以发出新的写入或读取命令。
停止位发送
主机可以通过生成一个停止信号终止通信。停止信号通常被称为 P 位,被定义为 SCL
为高电平时,SDA 由低电平向高电平跳变。
初始化和配置
配置设备为主机:
CON 寄存器 bit 6 SLAVE_DISABLE 位设置为 1,
同时 bit 0 位 MASTER_MODE 设置为 1
配置设备为从机:
CON 寄存器 bit 6 SLAVE_DISABLE 位设置为 0,
同时 bit 0 位 MASTER_MODE 设置为 0
配置主机地址长度:
CON 寄存器 bit 4 10BITADDR_M 位
设置为 0 则主机地址长度为 7 bit
设置为 1 则主机地址长度为 10bit
配置从机地址长度:
CON 寄存器 bit 3 10BITADDR_S 位
设置为 0 则主机地址长度为 7bit
设置为 1 则主机地址长度为 10bit
配置传输速率为标准速率(100kbit/s):
CON 寄存器 bit 1 和 2 SPEED 位
设置为 0x1 则主机速率设置为 100kbit/s
配置传输速率为快速速率(400kbit/s):
CON 寄存器 bit 1 和 2 SPEED 位
设置为 0x2 则主机速率设置为 400kbit/s
配置从机地址:
SAR 寄存器 bit 0 到 bit 9
设置 7 位或者 10 位的从机地址(作为从机有效)
配置发送模式:
TAR 寄存器 bit 10 到 bit 11
设置为 0x0 则正常发送 TAR 中的目标地址
设置为 0x2 则发送一个广播
设置为 0x3 则发送开始字
配置目标地址:
TAR 寄存器 bit 0 到 bit 9
设置 7 位或 10 位的目标地址做为将要发送的从机地址
配置 I2C clock 电平计数寄存器:
SS_SCL_HCNT , SS_SCL_LCNT , FS_SCL_HCNT
69
FS_SCL_LCNT
,
SWM100 系列
HS_SCL_HCNT , HS_SCL_LCNT 寄存器
MIN_SCL_HIGHtime 为 CLK 高电平最低时间限制
MIN_SCL_HIGHtime = 4000ns (100kbps,系统时钟不得低于 250KHz)
MIN_SCL_HIGHtime = 600ns (400kbps,系统时钟不得低于 1.67MHz)
MIN_SCL_HIGHtime = 60ns (3.4Mbs,100pF 总线负载,系统时钟不得低于
16.7MHz)
MIN_SCL_HIGHtime = 160ns (3.4Mbs,400pF 总线负载,系统时钟不得低于
6.25MHz)
MIN_SCL_LOWtime 为 CLK 低电平最低时间限制
MIN_SCL_LOWtime = 4700ns (100kbps,系统时钟不得低于 212.8KHz)
MIN_SCL_LOWtime = 1300ns (400kbps,系统时钟不得低于 769.3KHz)
MIN_SCL_LOWtime = 120ns (3.4Mbs,100pF 总线负载,系统时钟不得低于
8.4MHz)
MIN_SCL_LOWtime = 320ns (3.4Mbs,400pF 总线负载,系统时钟不得低于
3.125MHz)
OSCLK 为当前系统频率(Hz) Value 为计算所得值
计算公式为 Value = MIN_SCL_HIGHtime * (1/OSCLK)
将 Value 填入所对应寄存器
6.11.3 寄存器映射
I2C
BASE: 0x40005000
名称
偏移量
类型
复位值
描述
CON
0x00
R/W
0x43
I2C 控制寄存器
TAR
0x04
R/W
0x55
I2C 目标地址寄存器
SAR
0x08
R/W
0x55
I2C 从机地址寄存器
HS_MADDR
0x0C
R/W
0x1
I2C 高速主机模式代码地址寄存
器
DATA_CMD
0x10
R/W
0x0
I2C 数据缓存和命令寄存器
SS_SCL_HCNT
0x14
R/W
0x0190
标准速率 I2C clock 高电平计数
寄存器
SS_SCL_LCNT
0x18
R/W
0x01d6
标准速率 I2C clock 低电平计数
寄存器
FS_SCL_HCNT
0x1C
R/W
0x003c
快速速率 I2C clock 高电平计数
寄存器
FS_SCL_LCNT
0x20
R/W
0x0082
快速速率 I2C clock 低电平计数
寄存器
HS_SCL_HCNT
0x24
R/W
0x006
高速速率 I2C clock 高电平计数
寄存器
HS_SCL_LCNT
0x28
R/W
0x0010
高速速率 I2C clock 低电平计数
寄存器
INTR_STAT
0x2C
RO
0x0
I2C 中断状态寄存器
INTR_MASK
0x30
R/W
0x8ff
I2C 中断屏蔽寄存器
70
SWM100 系列
名称
偏移量
类型
复位值
描述
SAW_INTR_STAT
0x34
RO
0x0
I2C 原中断状态寄存器
RX_TL
0x38
R/W
0x0
I2C 接收 FIFO 阀值寄存器
TX_TL
0x3C
R/W
0x0
I2C 发送 FIFO 阀值寄存器
CLR_INTR
0x40
RO
0x0
清除组合和单个中断寄存器
CLR_RX_UNDER
0x44
RO
0x0
清除 RX_UNDER 中断寄存器
CLR_RX_OVER
0x48
RO
0x0
清除 RX_OVER 中断寄存器
CLR_TX_OVER
0x4C
RO
0x0
清除 TX_OVER 中断寄存器
CLR_RD_REQ
0x50
RO
0x0
清除 RD_REQ 中断寄存器
CLR_TX_ABRT
0x54
RO
0x0
清除 TX_ABRT 中断寄存器
CLR_RX_DONE
0x58
RO
0x0
清除 RX_DONE 中断寄存器
CLR_ACTIVITY
0x5C
RO
0x0
清除 ACRIVITY 中断寄存器
CLR_STOP_DET
0x60
RO
0x0
清除 STOP_DET 中断寄存器
CLR_START_DET
0x64
RO
0x0
清除 START_DET 中断寄存器
CLR_GEN_CALL
0x68
RO
0x0
清除 GEN_CALL 中断寄存器
ENABLE
0x6C
R/W
0x0
I2C 使能寄存器
STATUS
0x70
RO
0x6
I2C 状态寄存器
TXFLR
0x74
RO
0x0
I2C 发送 FIFO 数量寄存器
RXFLR
0x78
RO
0x0
I2C 接收 FIFO 数量寄存器
SDA_HOLD
0x7C
R/W
0x3
I2C SDA 保持时间长度寄存器
TX_ABRT_SOURCE
0x80
RO
0x0
I2C 发送失败原因寄存器
SLV_DATA_NACK_O
NLY
0x84
R/W
0x0
产生从机 NACK 寄存器
REVERSED
0x88
~0x90
—
—
保留
SDA_SETUP
0x94
R/W
0x64
I2C SDA 设置寄存器
ACK_GENERAL_CAL
L
0x98
R/W
0x1
I2C 广播 ACK 寄存器
ENABLE_STATUS
0x9C
RO
0x0
I2C 使能状态寄存器
6.11.4 寄存器描述
I2C 控制寄存器(CON)
ADDR: 0x40005000
位域
名称
类型
复位值
描述
31:7
REVERSED
—
—
保留
6
SLAVE_
DISABLE
R/W
1
这一位控制 I2C 从机使能,如果这一位设置为
0 则此设备会被当成从机。如果设置为 0,此
寄存器第 0 位也必须设置为 0。
0: 从机使能
1: 从机禁止
5
RESTART_EN
R/W
0
复位使能:
71
SWM100 系列
0:禁能
1:使能
当该位被禁能时,主模块无法实现如下操作:
发送开始位
实现高速模式操作
在混合模式时改变方向
以 10bit 地址格式执行读操作
4
3
2:1
0
10BITADDR_M
ASTER
10BITADDR_S
LAVE
SPEED
MASTER_MO
DE
R/W
R/W
R/W
R/W
0
当 I2C 为主机时,这一位控制,发送地址时为
7 位或者 10 位地址模式。
0: 7 位地址模式
1: 10 位地址模式
0
当 I2C 为从机时,控制 I2C 应答 7 位或 10 位
地址模式
0: 7 位地址模式,忽略处理 10 位地址,7 位
地址只用 IC_SAR 寄存器的低 7 位进行对
比
1: 10 位地址模式
1
这几位控制 I2C 速率的选择。硬件保护通过软
件编程修改的值不为非法值。
1: 标准速率模式(100kbit/s)
2: 快速速率模式(400kbit/s)
3: 高速速率模式(3.4Mbit/s)
1
这一位控制 I2C 主机使能,当这一位设置为 1
时,此寄存器第 6 位必须设置为 1.
0: 主机禁止
1: 主机使能
I2C 目标地址寄存器(TAR)
ADDR: 0x40005004
位域
名称
类型
复位值
描述
31:12
REVERSED
—
—
11
SPECIAL
R/W
0
10
GC_OR_STAR
T
R/W
0
9:0
TAR
R/W
0x55
保留
指示软件执行一个广播或者开始字节命令
0: 忽略第 10 位 GC_OR_START,正常使用寄
存器 TAR。
1: 执行在 GC_OR_START 位设置的特殊 I2C
命令
如果第 11 位设置为 1,则执行此位
0: 广播地址----在广播发出之后,只可以写操
作。如果发送了读命令,将会设置
RAW_INTR_STAT 寄 存 器 的 第 6 位
(TX_ABRT)
1: 开始字节
设置目标地址。当发送一个广播时,忽略这些
位。产生一个开始字节 CPU 只需要写一次到
72
SWM100 系列
这些位。如果是 7 位地址模式,只需写低 7 位。
I2C 从机地址寄存器(SAR)
ADDR: 0x40005008
位域
名称
类型
复位值
31:10
REVERSED
—
—
9:0
SAR
R/W
0x55
描述
保留
当 I2C 为从机时,这些位保存从机地址,如果
是 7 位地址模式,只需用低 7 位保存
I2C 高速主机模式代码地址寄存器(HS_MADDR)
ADDR: 0x4000500C
位域
名称
类型
复位值
描述
31:8
REVERSED
—
—
保留
2:0
HS_MAR
R/W
0x1
设置高速主机总线地址,范围为 0 至 7
I2C 数据缓存和命令寄存器(DATA_CMD)
ADDR: 0x40005010
位域
名称
类型
复位值
描述
31:9
REVERSED
—
—
8
CMD
WO
0
7:0
DAT
R/W
0
保留
这一位控制执行读或写。如果设备为从机时,
控制这一位是无效的。
1: 读
0: 写
这些位是接收或发送的数据,当正在写这个寄
存器的时候,如果执行一个读,I2C 就会忽略
读。当执行读命令,读这个寄存器的时候,这
些位返回接收到的数据。
标准速率 I2C clock 高电平计数寄存器(SS_SCL_HCNT)
ADDR: 0x40005014
位域
名称
类型
复位值
描述
31:16
REVERSED
—
—
15:0
SS_SCL_HCNT
R/W
0x0190
保留
这些位必须在 I2C 总线执行正确的 I/O 时序之
前设置。用以设置标准速率下 SCL 时钟高电
平周期计数值。这个寄存器只有在 I2C 设备禁
止(ENABLE 寄存器设置为 0)时,才可以写入,
其他时候写入都是无效的。
它的最小有效值为 6;
标准速率 I2C clock 低电平计数寄存器(SS_SCL_LCNT)
ADDR: 0x40005018
位域
名称
类型
复位值
描述
31:16
REVERSED
—
—
15:0
SS_SCL_LCNT
R/W
0x01d6
保留
这些位必须在 I2C 总线执行正确的 I/O 时序之
前设置。用以设置标准速率下 SCL 时钟低电
73
SWM100 系列
平周期计数值。这个寄存器只有在 I2C 设备禁
止(ENABLE 寄存器设置为 0)时,才可以写入,
其他时候写入都是无效的。
它的最小有效值为 8;
快速速率 I2C clock 高电平计数寄存器(FS_SCL_HCNT)
ADDR: 0x4000501C
位域
名称
类型
复位值
描述
31:16
REVERSED
—
—
15:0
FS_SCL_HCNT
R/W
0x003c
保留
这些位必须在 I2C 总线执行正确的 I/O 时序之
前设置。用以设置快速速率下 SCL 时钟高电
平周期计数值。这个寄存器只有在 I2C 设备禁
止(ENABLE 寄存器设置为 0)时,才可以写入,
其他时候写入都是无效的。
它的最小有效值为 6;
快速速率 I2C clock 低电平计数寄存器(FS_SCL_LCNT)
ADDR: 0x40005020
位域
名称
类型
复位值
描述
31:16
REVERSED
—
—
15:0
FS_SCL_LCNT
R/W
0x0082
保留
这些位必须在 I2C 总线执行正确的 I/O 时序之
前设置。用以设置快速速率下 SCL 时钟低电
平周期计数值。这个寄存器只有在 I2C 设备禁
止(ENABLE 寄存器设置为 0)时,才可以写入,
其他时候写入都是无效的。
它的最小有效值为 8;
高速速率 I2C clock 高电平计数寄存器(HS_SCL_HCNT)
ADDR: 0x40005024
位域
名称
类型
复位值
描述
31:16
REVERSED
—
—
15:0
HS_SCL_HCN
T
R/W
0x006
保留
这些位必须在 I2C 总线执行正确的 I/O 时序之
前设置。用以设置高速速率下 SCL 时钟高电
平周期计数值。这个寄存器只有在 I2C 设备禁
止(ENABLE 寄存器设置为 0)时,才可以写入,
其他时候写入都是无效的。
它的最小有效值为 6;
高速速率 I2C clock 低电平计数寄存器(HS_SCL_LCNT)
ADDR: 0x40005028
位域
名称
类型
复位值
描述
31:8
REVERSED
—
—
15:0
HS_SCL_LCNT
R/W
0x0010
保留
这些位必须在 I2C 总线执行正确的 I/O 时序之
前设置。用以设置高速速率下 SCL 时钟低电
平周期计数值。这个寄存器只有在 I2C 设备禁
止(ENABLE 寄存器设置为 0)时,才可以写入,
74
SWM100 系列
其他时候写入都是无效的。
它的最小有效值为 8;
I2C 中断状态寄存器(INTR_STAT)
ADDR: 0x4000502C
位域
名称
类型
复位值
31:12
REVERSED
—
—
11
R_GEN_CALL
RO
0
10
R_START_DET
RO
0
9
R_STOP_DET
RO
0
8
R_ACTIVITY
RO
0
7
R_RX_DONE
RO
0
6
R_TX_ABRT
RO
0
5
R_RD_REQ
RO
0
4
R_TX_EMPTY
RO
0
3
R_TX_OVER
RO
0
2
R_RX_FULL
RO
0
1
R_RX_OVER
RO
0
0
R_RX_UNDER
RO
0
描述
保留
表示寄存器 RAW_INTR_STAT 中对应中断位
状态:
0:中断未触发
1:中断触发
I2C 中断屏蔽寄存器(INTR_MASK)
ADDR: 0x40005030
位域
名称
类型
复位
值
31:8
REVERSED
—
—
11
M_GEN_CALL
R/W
1
10
M_START_DET
R/W
1
9
M_STOP_DET
R/W
1
8
M_ACTIVITY
R/W
1
7
M_RX_DONE
R/W
1
6
M_TX_ABRT
R/W
1
5
M_RD_REQ
R/W
1
4
M_TX_EMPTY
R/W
1
3
M_TX_OVER
R/W
1
2
M_RX_FULL
R/W
1
1
M_RX_OVER
R/W
1
0
M_RX_UNDER
R/W
1
描述
保留
对应屏蔽 INTR_STAT 寄存器中的中断状态。
0: 屏蔽中断
1: 不屏蔽中断
I2C 原中断状态寄存器(RAW_INTR_STAT)
ADDR: 0x40005034
位域
名称
类型
复位值
描述
31:12
REVERSED
—
—
保留
11
GEN_CALL
RO
0
只有当接收到一个广播地址并且是已被确认
75
SWM100 系列
的时候这一位被置位。
10
START_DET
RO
0
指示一个开始或者重新启动条件产生。
9
STOP_DET
RO
0
指示一个结束条件产生
8
ACTIVITY
RO
0
获得 I2C 模块活动和停止的状态。
7
RX_DONE
RO
0
当 I2C 模块为从机发送模式,如果主机不确认
发送的字节,这一位设置为 1。
0
这一位指示如果 I2C 模块是一个发送者(主机
发送模式和从机发送模式),并且无法在发送
缓冲区中完成预计的动作。当这一位为 1 时,
读 TX_ABRT_SOURCE 寄存器,将会得到产
生此中断的原因。
当 I2C 模块作为从机并且另一个 I2C 主机试图
从 I2C 模块读取数据,这一位变为 1。I2C 总
线保持在等待状态(SCL=0)直到这个中断发
生。
6
TX_ABRT
RO
5
RD_REQ
RO
0
4
TX_EMPTY
RO
0
3
TX_OVER
RO
0
2
RX_FULL
RO
0
1
RX_OVER
RO
0
0
RX_UNDER
RO
0
当发送缓冲区是处于或者在 TX_TL 寄存器设
置的阀值之下,这一位变为 1。当缓冲区级别
在阀值之上,硬件自动清除这一位。
在发送期间如果发送缓冲区已满,
并且处理器尝试发送另一个 I2C 命令去写
DATA_CMD 寄存器时,这一位变为 1。
当接收缓冲区达到或者超过 RX_TL 寄存器中
设置的阀值,这一位变为 1。当缓冲区级别在
阀值之下,硬件自动清除这一位。
如果接收缓冲区全满,并且从外部 I2C 设备接
收了一个额外的字节,这一位变为 1。
当 接 收 缓 冲 区 为 空 时 ,如 果 处 理 器 试 图 读
DATA_CMD 寄存器,这一位变为 1。
I2C 接收 FIFO 阀值寄存器(RX_TL)
ADDR: 0x40005038
位域
名称
类型
复位值
描述
31:3
REVERSED
—
—
2:0
RX_TL
R/W
0
保留
接收 FIFO 阀值
控制触发 RX_FULL 中断的阀值,范围是 0-7。
I2C 发送 FIFO 阀值寄存器(TX_TL)
ADDR: 0x4000503C
位域
名称
类型
复位值
描述
31:3
REVERSED
—
—
2:0
TX_TL
R/W
0
保留
发送 FIFO 阀值
控制触发 TX_EMPTY 中断阀值,范围是 0-7。
76
SWM100 系列
清除组合和单个中断寄存器(CLR_INTR)
ADDR: 0x40005040
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
CLR_INTR
RO
0
读 此 寄 存 器 将 清 除 组 合中 断 、 所 有 中 断 和
TX_ABRT_SOURCE 寄存器。
清除 RX_UNDER 中断寄存器(CLR_RX_UNDER)
ADDR: 0x40005044
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
CLR_RX_UND
ER
RO
0
读此寄存器将清除 RAW_INTR_STAT 寄存器
中的 RX_UNDER 中断。
清除 RX_OVER 中断寄存器(CLR_RX_OVER)
ADDR: 0x40005048
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
CLR_RX_OVE
R
RO
0
读此寄存器将清除 RAW_INTR_STAT 寄存器
中的 RX_OVER 中断。
清除 TX_OVER 中断寄存器(CLR_TX_OVER)
ADDR: 0x4000504C
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
CLR_TX_OVE
R
RO
0
读此寄存器将清除 IC_RAW_INTR_STAT 寄存
器中的 TX_OVER 中断。
清除 RD_REQ 中断寄存器(CLR_RD_REQ)
ADDR: 0x40005050
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
CLR_RD_REQ
RO
0
读此寄存器将清除 IC_RAW_INTR_STAT 寄存
器中的 RD_REQ 中断。
清除 TX_ABRT 中断寄存器(CLR_TX_ABRT)
ADDR: 0x40005054
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
CLR_TX_ABR
T
RO
0
读此寄存器将清除 IC_RAW_INTR_STAT 寄存
器中的 TX_ABRT 中断。
77
SWM100 系列
清除 RX_DONE 中断寄存器(CLR_RX_DONE)
ADDR: 0x40005058
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
CLR_RX_DON
E
RO
0
读此寄存器将清除 IC_RAW_INTR_STAT 寄存
器中的 RX_DONE 中断。
清除 ACTIVITY 中断寄存器(CLR_ACTIVITY)
ADDR: 0x4000505C
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
CLR_ACTIVIT
Y
RO
0
读此寄存器将清除 IC_RAW_INTR_STAT 寄存
器中的 ACTIVITY 中断。
清除 STOP_DET 中断寄存器(CLR_STOP_DET)
ADDR: 0x40005060
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
CLR_STOP_DE
T
RO
0
读此寄存器将清除 IC_RAW_INTR_STAT 寄存
器中的 STOP_DET 中断。
清除 START_DET 中断寄存器(CLR_START_DET)
ADDR: 0x40005064
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
CLR_START_D
ET
RO
0
读此寄存器将清除 IC_RAW_INTR_STAT 寄存
器中的 START_DET 中断。
清除 GEN_CALL 中断寄存器(CLR_GEN_CALL)
ADDR: 0x40005068
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
保留
0
CLR_GEN_CA
LL
RO
0
读此寄存器将清除 IC_RAW_INTR_STAT 寄存
器中的 GEN_CALL 中断。
I2C 使能寄存器(ENABLE)
ADDR: 0x4000506C
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
0
ENABLE
R/W
0
保留
控制 I2C 模块是否使能
0: 禁止 I2C 模块(在擦除状态下 TX 和 RX 的
FIFO 是保留的)
1: 使能 I2C 模块
78
SWM100 系列
I2C 状态寄存器(STATUS)
ADDR: 0x40005070
位域
名称
类型
复位值
描述
31:7
REVERSED
—
—
6
SLV_ACTIVIT
Y
RO
0
5
MST_ACTIVIT
Y
RO
0
4
RFF
RO
0
3
RFNE
RO
0
2
TFE
RO
1
1
TFNF
RO
1
0
ACTIVITY
RO
0
保留
从机有限状态机活动状态。
当从机有限状态机是不活动的状态,这一位被
设置。
0: 从机有限状态机是空闲状态,因此 I2C 从机
是不活动的。
1: 从机有限状态机是不空闲状态,因此 I2C
从机是活动的。
主机有限状态机活动状态。
当主机有限状态机是不活动的状态,这一位被
设置。
0: 主机有限状态机是空闲状态,因此 I2C 主机
是不活动的。
1: 主机有限状态机是不空闲状态,因此 I2C
主机是活动的。
接收 FIFO 全满,当接收 FIFO 全满时,这一
位变为 1。如果接收 FIFO 包含一个或多个空
位,这一位自动被清除。
0: 接收 FIFO 不满
1: 接收 FIFO 满
接收 FIFO 不空,当接收 FIFO 包含一个或多
个空位时,这一位变为 1。当接收 FIFO 为空
时,这一位自动清除
0: 接收 FIFO 为空
1: 接收 FIFO 不为空
发送 FIFO 全空,当发送 FIFO 是全空时,这
一位变为 1。当发送 FIFO 包含一个或者多个
有效项时,这一位自动清除。
0: 发送 FIFO 不为空
1: 发送 FIFO 为空
发送 FIFO 不满,当发送 FIFO 包含一个或多
个空位时,这一位变为 1。当 FIFO 为满,这
一位自动清除。
0: 发送 FIFO 为满
1: 发送 FIFO 不为满
I2C 活动状态
I2C 发送 FIFO 数量寄存器(TXFLR)
ADDR: 0x40005074
位域
名称
类型
复位值
描述
31:3
REVERSED
—
—
保留
2:0
ENABLE
RO
0
发送 FIFO 层数。在发送 FIFO 中包含的有效
的数据项个数.
79
SWM100 系列
I2C 接收 FIFO 数量寄存器(RXFLR)
ADDR: 0x40005078
位域
名称
类型
复位值
描述
31:3
REVERSED
—
—
保留
2:0
RXFLR
RO
0
接收 FIFO 层数。在接收 FIFO 中包含的有效
的数据项个数.
I2C SDA 保持时间长度寄存器(SDA_HOLD)
ADDR: 0x4000507C
位域
名称
类型
复位值
描述
31:16
REVERSED
—
—
保留
15:0
IC_SDA_HOLD
R/W
0x3
设置在时钟周期上规定的 SDA 保持时间
I2C 发送失败原因寄存器(TX_ABRT_SOURCE)
ADDR: 0x40005080
位域
名称
类型
复位值
31:16
REVERSED
—
—
15
ABRT_SLVRD_INT
X
RO
0
14
ABRT_SLV_ARBLO
ST
RO
0
13
ABRT_SLVFLUSH_
TXFIFO
RO
0
12
ARB_LOST
RO
0
11
ABRT_MASTER_DI
S
RO
0
描述
保留
保留
当 对 方 传输 一条 从 状态请 求
从发送器
时,该位被置 1
1: 当正在发送数据给主机时,
从机丧失总线控制
这
一
位
和 从发送器
IC_TX_ABRT_SOURCE[12]
同时置位
1: TX_FIFO 存在数据时收到读
指令
1: 主机丢失仲裁,
或
IC_TX_ABRT_SOURCE[14]同
样置位,则从发送机丢失仲裁
1: 用户试图启用主机操作 禁
使能
10
ABRT_10B_RD_NO
RSTRT
RO
0
1: 重启禁止
(IC_RESTART_EN
(IC_CON[5])位为 0)并且主机
使用 10-bit 地址模式发送一个
读命令
9
ABRT_SBYTE_NOR
STRT
RO
0
1: CON 寄存器 BIT[5]禁能且
尝试发送 START 标志字节时
8
ABRT_HS_NORSTR
T
0
1: 重启禁止
(IC_RESTART_EN
(IC_CON[5])位为 0)并且 用户
试图在高速模式下使用主机发
RO
I2C
当前状态
80
从发送器
主发送器
或者从发
送器
主发送器
或者主接
收器
主接收器
主机
主发送器
或者主接
收器
SWM100 系列
7
ABRT_SBYTE_ACK
DET
RO
0
6
ABRT_HS_ACKDET
RO
0
5
ABRT_GCALL_REA
D
RO
0
4
ABRT_GCALL_NO
ACK
RO
0
3
ABRT_TXDATA_N
OACK
RO
0
2
ABRT_10ADDR2_N
OACK
RO
0
1
ABRT_10ADDR1_N
OACK
RO
0
0
ABRT_7B_ADDR_N
OACK
RO
0
送数据
1:主机发送 START Byte 并且
START Byte 被确认(错误的行
为)
1:主机在高速模式下,并且高
速主机代码被确认(错误的行
为)
1:主机发送了一个广播,但是
用户接下来编程的字节是读总
线
1:主机发送一个广播,并且没
有从机在总线上确认这个广播
1:主机接收到地址 ACK,但是
当它对此地址发送数据时,没
有接收到从机 ACK
1:主机为 10-bit 地址模式,并
且第二个地址字节没有得到任
何从机确认
1:主机为 10-bit 地址模式,并
且第一个地址字节没有得到任
何从机确认
1:主机为 7-bit 地址模式,并且
地址字节没有得到任何从机确
认
主机
主机
主发送器
主发送器
主发送器
主发送器
或者主接
收器
主发送器
或者主接
收器
主发送器
或者主接
收器
产生从机 NACK 寄存器(SLV_DATA_NACK_ONLY)
ADDR: 0x40005084
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
0
NACK
R/W
0
保留
产生 NACK。
NACK 的产生仅出现在 I2C 是从机接收的时
候。
如果这一位设置为 1,在接收了一个字节数据
之后只能产生 NACK;因此,数据发送失败,
并且接收到的数据没有压入接收缓冲区中。
当这个寄存器设置为 0 时,产生 NACK/
ACK,取决于正常的标准。
1: 产生 NACK 在接收了一个字节数据之后
0: 正常产生 NACK/ACK
I2C SDA 设置寄存器(SDA_SETUP)
ADDR: 0x40005094
位域
名称
类型
复位值
描述
31:8
REVERSED
—
—
7:0
SDA_SETUP
R/W
0x64
保留
SDA 设置。
建议的规定延时值为 1000ns
如果一个 clk 频率为 10MHz,此寄存器必须编
81
SWM100 系列
程写为 11.
I2C 广播 ACK 寄存器(ACK_GENRAL_CALL)
ADDR: 0x40005098
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
0
ACK_GEN_CA
LL
R/W
1
保留
若该位设置为 1,当模块接收到一个广播时,
I2C 应答一个 ACK。
若该位设置为 0 时,I2C 不产生广播中断。
I2C 使能状态寄存器(ENABLE_STATUS)
ADDR: 0x4000509C
位域
名称
类型
复位值
描述
31:3
REVERSED
—
—
保留
2
SLV_RX_DATA
_LOST
RO
0
从机接收数据丢失。该位被置 1 表明一个从机
接收操作已经失败。
1
SLV_DISABLE
D_WHILE_BU
SY
RO
0
当模块在传输过程中接收到 NACK 时该位为
1,证明目前从模块不可达
0
IC_EN
RO
0
当该位为 1 时,模块视目前状态为已使能
当该位为 0 时,模块视目前状态为未使能
82
SWM100 系列
6.12 串行外设接口(SPI)控制器
6.12.1 特性
时钟位速率可编程,最高可达芯片主时钟速率 1/2
独立的发送和接收 FIFO,16 位宽,8 个单元深
SPI、Microwire 或者 SSP 的操作可编程
数据帧大小可编程,范围为 4~16 位
内部回送测试(loopback test)模式,可进行诊断/调试测试
6.12.2 功能
SSI 对从外设器件接收到的数据执行串行到并行转换。CPU 访问数据、控制和状态信息。
发送和接收路径利用内部 FIFO 存储单元进行缓冲,该 FIFO 可在发送和接收模式下独立存
储多达 8 个 16 位值。
位速率的产生
SSI 包含一个可编程的位速率时钟分频器来生成串行输出时钟。串行位速率通过设置
BAUD 寄存器对输入时钟进行分频来获得。分频值的范围为 2~65534 的偶数值。计算公式
如下 Fsclk_out = FHCLK/SCKDIV。
FIFO 操作
发送 FIFO:通用发送 FIFO 是一个 16 位宽、8 单元深、先进先出的存储缓冲区。通过
写数据 (DATA)寄存器来将数据写入发送 FIFO,数据在由发送逻辑读出之前一直保存在发
送 FIFO 中。当 SSI 配置为主机时,并行数据在进行串行转换并通过 SDO 管脚分别发送到
相关的从机之前先写入发送 FIFO。
接收 FIFO:通用接收 FIFO 是一个 16 位宽、8 单元深、先进先出的存储缓冲区。从串
行接口接收到的数据在读出之前一直保存在缓冲区中,通过读 DATA 寄存器来访问读 FIFO。
当 SSI 配置为主机时,
从 SDI 管脚接收到的串行数据在分别并行加载到相关的主机接收 FIFO
之前先进行记录。
中断
SSI 可在出现下列情况时产生中断:
多主竞争中断
接收 FIFO 满中断
接收 FIFO 上溢中断
接收 FIFO 下溢中断
83
SWM100 系列
发送 FIFO 上溢中断
发送 FIFO 空中断
所有中断事件在发送到中断控制器之前要先执行“或”操作,因此,在任何给定的时刻
SSI 只能向控制器发送一个中断请求。在 6 个可单独屏蔽的中断中,每个都可以通过置位 SSI
中断屏蔽 (INTMASK)寄存器中适当的位来屏蔽。将适当的屏蔽位置 1 可使能中断。
SSI 提供单独的输出和组合的中断输出,这样,允许使用全局中断服务程序或组合的器
件驱动程序来处理中断。发送和接收动态数据流的中断与状态中断是分开的,因此,可以根
据 FIFO 的触发深度对数据执行读和写操作。各个中断源的状态可从 SSI 原始中断状态
(RAWINTSTAT)和 SSI 屏蔽后的中断状态(INTSTAT)寄存器中读取。
帧格式
根据所设置的数据大小,
每个数据帧的长度均在 4~16 位之间,并且从最高有效位(MSB)
开始发送。此处,有 3 种基本的帧类型可供选择:
SPI
Microwire
SSP
对于上述 3 种帧格式,串行时钟(SCLK)在 SSI 空闲时保持不活动状态,只有当数据的
发送或接收处于活动状态时,SCLK 才在设置好的频率下工作。
对于 SPI 和 Microwire 这两种帧格式,从选择(SS)管脚为低电平有效,并在整个帧的
传输过程中保持有效(被下拉)
。
而对于 SSP 帧格式,在发送每个帧之前,SS 管脚会发出一个以上升沿开始并持续一个
时钟周期的脉冲。在这种帧格式中,SSI 和片外从器件在 SCLK 的上升沿驱动各自的输出数
据,并在下降沿锁存另一个器件的数据。
不同于其它两种全双工传输的帧格式,在半双工下工作的 Microwire 格式使用特殊的主
-从消息技术。在该模式中,当帧开始传输时向片外从机发送预先定义好位数的控制消息。
在发送过程中,SSI 不会接收到任何输入数据。在消息发送完毕之后,片外从机对消息进行
译码,并在控制消息的最后一位发送完成之后等待一个串行时钟周期,之后以请求的数据来
响应。返回的数据,其长度在 4~16 位之间,这样,无论在何处,总的帧长度都在 13~25
位之间。
SPI
SPI 接口是一个 4 线接口,
其中 ss_n 信号用作从机选择。SPI 格式的主要特性为:
sclk_out
信号的不活动状态和相位均通过 CTRLR0 控制寄存器中的 SCPOL 和 SCPH 位来设置。
SCPOL 时钟极性位
当 SCPOL = 0,它在 sclk_out 管脚上产生稳定的低电平值。如果 SCPOL 位为高,则在
没有进行数据传输的情况下,它在 sclk_out 管脚上产生一个稳定的高电平值。
SCPH 相位控制位
84
SWM100 系列
SCPH 相位控制位用来选择捕获数据的时钟边沿并允许边沿改变状态。SCPH 在第一个
传输位上的影响最大,因为它可以在第一个数据捕获边沿之前允许或不允许一次时钟转换。
当 SCPH = 0,在第一个时钟边沿转换时捕获数据。如果 SCPH = 1,则在第二个时钟边沿转
换时捕获数据。
图 6-10 SPI 单个数据传输帧格式(SCPH=0)
图 6-11 SPI 连续数据传输帧格式(SCPH=0)
在上述配置中(SCPH = 0),当 SSI 处于空闲周期时:
如果 SCPOL=0 时 sclk_out 被强制变为低电平,SCPOL=1 时 sclk_out 被强制变为
高电平
ss_n 被强制变为高电平
发送数据线 txd 被强制变为低电平
当 SSI 配置为主机时,使能 sclk_out 端口
当 SSI 配置为从机时,禁止 sclk_out 端口
如果 SSI 使能并且在发送 FIFO 中含有有效的数据,则通过将 ss_n 主机信号驱动为低电
平表示发送操作开始。这使得从机数据能够放在主机的 rxd 输入线上。主机 txd 输出端口使
能。
在半个 sclk_out 周期之后,有效的主机数据传输到 txd 管脚。既然主机和从机数据都已
设置好,则在下半个 sclk_out 周期之后,sclk_out 主机时钟管脚变为高电平/低电平。
这时,如果 SCPOL=0,数据在 sclk_out 信号的上升沿被捕获,在 sclk_out 的下降沿进
85
SWM100 系列
行传输。如果 SCPOL=1,数据在 sclk_out 信号的下降沿被捕获,在 sclk_out 的上升沿进行
传输。
如果传输一个字,则在数据字的所有位都已传输完之后,ss_n 线在捕获到最后一个位之
后的一个 sclk_out 周期返回到其空闲的高电平/低电平状态。
在连续的背对背传输中,ss_n 信号必须在每次数据字的传输之间保持高电平。因为当
SCPH 位为逻辑 0 时,从机选择管脚将冻结串行外设寄存器中的数据,使其不能修改。因此,
主器件必须在每次数据传输之间将从器件的 ss_n 管脚拉高,以便使能串行外设的数据写操
作。当连续传输完成时,ss_n 管脚将在捕获到最后一位之后的一个 sclk_out 周期返回到其空
闲的高电平/低电平状态。
图 6-12 SPI 单个数据传输帧格式(SCPH=1)
图 6-13 SPI 连续数据传输帧格式(SCPH=1)
在上述配置中,当 SSI 处于空闲周期时:
如果 SCPOL=0 时 sclk_out 被强制变为低电平,SCPOL=1 时 sclk_out 被强制变为
高电平
ss_n 被强制变为高电平
发送数据线 txd 被强制变为低电平
当 SSI 配置为主机时,使能 sclk_out 端口。
86
SWM100 系列
当 SSI 配置为从机时,禁止 sclk_out 端口
如果 SSI 使能并且在发送 FIFO 中含有有效的数据,则通过将 ss_n 主机信号驱动为低电
平表示发送操作开始。主机 txd 输出被使能。在后半个 sclk_out 周期之后,主机和从机有效
数据能够放在各自的传输线上。同时,利用一个上升沿/下降沿跳变将 sclk_out 使能。
这时,如果 SCPOL=0,数据在 sclk_out 信号的上升沿被捕获,在 sclk_out 的下降沿进
行传输。如果 SCPOL=1,数据在 sclk_out 信号的下降沿被捕获,在 sclk_out 的上升沿进行
传输。如果传输一个字,则在所有位传输完之后,ss_n 线在捕获到最后一个位之后的一个
sclk_out 周期返回到其空闲的高电平/低电平状态。
Microwire
图 6-14 Microwire 不连续数据传输帧格式(不连续读数据)
在 MICROWIRE 模式中,当 ss_n 变为低电平之后,SSI 从机在 sclk_out 的上升沿时刻
对接收数据的第一个位进行采样。用来驱动自由运行的 sclk_out 的主机必须确保 ss_n 信号
相对于 sclk_out 的上升沿具有足够的建立时间和保持时间裕量(setup and hold margins)
。
图 6-15 Microwire 连续数据传输帧格式(连续读数据)
在上述配置中,当 SSI 处于空闲周期时:
sclk_out 被强制变为低电平
ss_n 变为高电平
发送数据线 txd 被强制变为低电平
通过向发送 FIFO 写入一个控制字节可以触发一次传输。在 ss_n 的下降沿,发送 FIFO
底部入口包含的值被传输到发送逻辑的串行移位寄存器中,而 1 - 16 位控制帧的 MSB 被移
出到 txd 管脚上。在该控制帧的传输期间 ss_n 保持低电平。rxd 管脚保持三态。
87
SWM100 系列
片外串行从器件在每个 sclk_out 的上升沿处将每个控制位锁存到其串行移位器中。在将
最后一位锁存之后,从器件在一个时钟周期的等待状态期间对控制字节进行译码,并且从机
通过将数据发送回 SSI 来响应。每个数据位在 sclk_out 的下降沿时刻被驱动到 rxd 线上。SSI
在 sclk_out 的上升沿时依次将每个位锁存。在帧传输结束时,对于单次传输, ss_n 信号在最
后一位已锁存到接收串行移位器之后的一个时钟周期被拉为高电平,这使得数据传输到接收
FIFO 中。
注: 在接收移位器将 LSB 锁存之后的 ss_n 的下降沿上或在 ss_n 管脚变为高电平时,
片外从器件能够将接收线置为三态。
对于连续传输,数据传输的开始与结束与单次传输相同。但 ss_n 线持续有效(保持低
电平),并且数据传输以背对背(back-to-back)方式产生。在从当前帧接收到数据的最低有效
位(LSB)之后紧跟着下一帧的控制字节。在当前帧的 LSB 锁存到 SSI 之后,所接收到的
每个值在 sclk_out 的下降沿时刻从接收移位器中进行传输。
图 6-16 Microwire 单个数据传输帧格式(写数据)
SSP
图 6-17 SSP 单个数据传输帧格式
88
SWM100 系列
图 6-18 SSP 多个数据连续传输帧格式
初始化和配置
设置协议模式:
CTRL0 寄存器 bit 5 到 bit4 FRF 位
设置为 00 SPI 帧格式
设置为 01 SSP 帧格式
设置为 10 Microwire 帧格式
设置移位寄存器回环:
CTRL0 寄存器 bit11 SRL 位
设置为 0 正常模式
设置为 1 测试模式
设置传输模式:
CTRL0 寄存器 bit9 到 bit8 TMOD 位
设置为 00 发送和接收
设置为 01 只发送
设置为 10 只接收
设置为 11 读 EEPROM
设置串行时钟极性:
CTRL0 寄存器 bit7 SCPOL 位
设置为 0
SPI 控制器使总线时钟在两帧传输之间保持低电平
设置为 1 SPI 控制器使总线时钟在两帧传输之间保持高电平
设置串行时钟相位:
CTRL0 寄存器 bit6 SCPH 位
设置为 0 在第一个时钟边沿转换时捕获数据
设置为 1 在第二个时钟边沿转换时捕获数据
设置数据帧长度:
CTRL0 寄存器 bit3 到 bit0 DFS 位
设置 0011 — 1111 分别为 4-bit — 16-bit 数据长度
设置 Microwire 控制字长度:
CTRL0 寄存器 bit15 到 bit12 CFS 位
设置 0000 — 1111 分别为 0-bit — 16-bit 控制字长度
设置 Microwire 握手:
MWCR 寄存器 bit2 MHS 位
设置为 0 禁止握手接口
89
SWM100 系列
设置为 1 使能握手接口
设置 Microwire 数据方向:
MWCR 寄存器 bit1 MDD 位
设置为 0 接收
设置为 1 发送
设置 SSI 时钟分频值:
BAUDR 寄存器 bit15 到 bit0 SCKDV 位
ssi_clk = HCLK/SCKDV(寄存器值为对应分頻值)
6.12.3 寄存器映射
SPI
BASE: 0x40004000
名称
偏移量
类型
复位值
描述
CTRL0
0x00
R/W
0x07
控制寄存器 0
CTRL1
0x04
R/W
0x00
控制寄存器 1
SSIEN
0x08
R/W
0x00
SSI 使能寄存器
MWCTRL
0x0C
R/W
0x00
Mircrowire 控制寄存器
SEN
0x10
R/W
0x00
从使能寄存器
BAUD
0x14
R/W
0x00
波特率寄存器
TXFTLR
0x18
R/W
0x00
发送 FIFO 阀值寄存器
RXFTLR
0x1C
R/W
0x00
接收 FIFO 阀值寄存器
TXFLR
0x20
R/W
0x00
发送 FIFO 数量寄存器
RXFLR
0x24
R/W
0x00
接收 FIFO 数量寄存器
STAT
0x28
R/W
0x6
状态寄存器
INTMASK
0x2C
R/W
0x3F
中断屏蔽寄存器
INTSTAT
0x30
R/W
0x00
中断状态寄存器
RAWINTSTAT
0x34
R/W
0x00
原始中断状态寄存器
TXOICLR
0x38
R/W
0x00
发送 FIFO 上溢中断清除寄存器
RXOICLR
0x3C
R/W
0x00
接收 FIFO 上溢中断清除寄存器
RXUICLR
0x40
R/W
0x00
接收 FIFO 下溢中断清除寄存器
MSTICLR
0x44
R/W
0x00
多主中断清除寄存器寄存器
INTCLR
0x48
R/W
0x00
中断清除寄存器
RESERVED
0x4C0x5C
R/W
0x00
保留
DATA
0x600x9C
R/W
0x00
数据寄存器
6.12.4 寄存器描述
控制寄存器 0(CTRL0)
ADDR: 0x40004000
位域
名称
类型
复位值
描述
90
SWM100 系列
位域
名称
类型
复位值
描述
31:16
REVERSED
—
—
15:12
CFS
R/W
0
11
SRL
R/W
0
10
REVERSED
—
—
9:8
TMOD
R/W
0
7
SCPOL
R/W
0
6
SCPH
R/W
0
5:4
FRF
R/W
0
3:0
DFS
R/W
0x7
保留
控制帧长度
Microwire 协议控制帧长度
移位寄存器回环
仅用于测试模式。置位后将发送移位寄存器输
出连接到接收移位寄存器的输入。
0:正常模式
1:测试模式
保留
传输模式
00:传输和接收
01:仅传输
10:仅接收
11:EEPROM 读
串行时钟极性
该位只用于 SPI 模式。
0:SPI 控制器使总线时钟在两帧传输之间保持
低电平
1:SPI 控制器使总线时钟在两帧传输之间保持
高电平
串行时钟相位
该位只用于 SPI 模式
0:在串行同步时钟的第二个跳变沿(上升或
下降)数据被采样
1:在串行同步时钟的第一个跳变沿(上升或
下降)数据被采样
帧格式
00:SPI
01:SSP
10:Microwire
11:保留
数据帧长度,规则如下:
0000/0001/0010:保留
0011: 4-bit 0100:5-bit
0101:6-bit
0110: 7-bit 0111:8-bit
1000:9-bit
1001: 10-bit 1010:11-bit
1011:12-bit
1100: 13-bit 1101:14-bit
1110:15-bit
1111: 16-bit
控制寄存器 1(CTRL1)
ADDR: 0x40004004
位域
名称
类型
复位值
31:16
REVERSED
—
—
15:0
NDF
R/W
0x00
描述
保留
数据帧数
当 TMOD=10 时,连续接收数据帧的数目
91
SWM100 系列
SSI 使能寄存器(SSIEN)
ADDR: 0x40004008
位域
名称
类型
复位值
31:1
REVERSED
—
—
0
EN
R/W
0x00
描述
保留
SSI 使能
0:禁止 SSI 模块
1:使能 SSI 模块
Microwire 控制寄存器(MWCTRL)
ADDR: 0x4000400C
位域
名称
类型
复位值
31:3
REVERSED
—
—
2
MHS
R/W
0
1
MDD
R/W
0
0
MWMOD
R/W
0
描述
保留
Microwire 握手
0:禁止握手接口
1:使能握手接口
Microwire 数据方向
0:接收
1:发送
Microwire 传输模式
0:非顺序传输
1:顺序传输
SSI 从使能寄存器(SEN)
ADDR: 0x40004010
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
0
SE
R/W
0
保留
SSI 从选择使能(发送或接受数据前必须先使
能该位)
0:未使能
1:使能
波特率(BAUD)
ADDR: 0x40004014
位域
名称
类型
复位值
31:1
REVERSED
—
—
0
SCKDIV
R/W
0x00
描述
保留
SSI 时钟分频
FSCLK_OUT = FHCLK/SCKDIV
传输 FIFO 阀值寄存器(TXFTL)
ADDR: 0x40004018
位域
名称
类型
复位值
31:3
REVERSED
—
—
描述
保留
92
SWM100 系列
2:0
TFT
R/W
0x00
传输 FIFO 阀值,达到设置值后触发中断,设
置值与 FIFO 数据数量对应值如下:
000: 0 个 001: 1 个 010: 2 个
011: 3 个 100: 4 个 101: 5 个
110: 6 个 111: 7 个
接收 FIFO 阀值寄存器(RXFTL)
ADDR: 0x4000401C
位域
名称
类型
复位值
描述
31:3
REVERSED
—
—
2:0
RFT
R/W
0x00
保留
接收 FIFO 阀值,达到设置值后触发中断,设
置值与 FIFO 数据数量对应值如下:
000: 0 个 001: 1 个 010: 2 个
011: 3 个 100: 4 个 101: 5 个
110: 6 个 111: 7 个
传输 FIFO 数量寄存器(TXFL)
ADDR: 0x40004020
位域
名称
类型
复位值
31:3
REVERSED
—
—
2:0
TXTFL
R/W
0x00
描述
保留
传输 FIFO 数量
传输 FIFO 中包含的可用数据条目的数量
接收 FIFO 数量寄存器(RXFL)
ADDR: 0x40004024
位域
名称
类型
复位值
31:3
REVERSED
—
—
2:0
RXTFL
R/W
0x00
描述
保留
接收 FIFO 数量
接收 FIFO 中包含的可用数据条目的数量
状态寄存器(STAT)
ADDR: 0x40004028
位域
名称
类型
复位值
31:7
REVERSED
—
—
6
DCOL
RO
0
5
TXE
RO
0
4
RFF
RO
0
3
RFNE
RO
0
描述
保留
数据冲突错误
0:没有错误
1:传输数据冲突错误
传输错误
0:没有错误
1:传输错误
接收 FIFO 满
0:接收 FIFO 不满
1:接收 FIFO 满
接收 FIFO 不空
0:接收 FIFO 空
1:接收 FIFO 不空
93
SWM100 系列
2
TFE
RO
1
1
TFNF
RO
1
0
BUSY
RO
0
传输 FIFO 空
0:传输 FIFO 不空
1:传输 FIFO 空
传输 FIFO 不空
0:传输 FIFO 满
1:传输 FIFO 不空
SSI 忙标志
0:SSI 模块空闲状态或者被禁止
1:SSI 模块正在传输数据
中断屏蔽寄存器(INTMASK)
ADDR: 0x4000402C
位域
名称
类型
复位值
31:6
REVERSED
—
—
5
MSTIM
R/W
1
4
RXFIM
R/W
1
3
RXOIM
R/W
1
2
RXUIM
R/W
1
1
TXOIM
R/W
1
0
TXEIM
R/W
1
描述
保留
多主竞争中断屏蔽
0:中断屏蔽
1:中断非屏蔽
接收 FIFO 满中断屏蔽
0:中断屏蔽
1:中断非屏蔽
接收 FIFO 上溢中断屏蔽
0:中断屏蔽
1:中断非屏蔽
接收 FIFO 下溢中断屏蔽
0:中断屏蔽
1:中断非屏蔽
传输 FIFO 上溢中断屏蔽
0:中断屏蔽
1:中断非屏蔽
传输 FIFO 空中断屏蔽
0:中断屏蔽
1:中断非屏蔽
中断状态寄存器(INTSTAT)
ADDR: 0x40004030
位域
名称
类型
复位值
31:6
REVERSED
—
—
5
MSTIS
RO
0
4
RXFIS
RO
0
3
RXOIS
RO
0
描述
保留
多主竞争中断状态
0:中断屏蔽后中断未发生
1:中断屏蔽后中断发生
接收 FIFO 满中断状态
0:中断屏蔽后中断未发生
1:中断屏蔽后中断发生
接收 FIFO 上溢中断状态
0:中断屏蔽后中断未发生
1:中断屏蔽后中断发生
94
SWM100 系列
2
RXUIS
RO
0
1
TXOIS
RO
0
0
TXEIS
RO
0
接收 FIFO 下溢中断状态
0:中断屏蔽后中断未发生
1:中断屏蔽后中断发生
传输 FIFO 上溢中断状态
0:中断屏蔽后中断未发生
1:中断屏蔽后中断发生
传输 FIFO 空中断状态
0:中断屏蔽后中断未发生
1:中断屏蔽后中断发生
原始中断状态寄存器(RAWINTSTAT)
ADDR: 0x40004034
位域
名称
类型
复位值
31:6
REVERSED
—
—
5
MSTIR
RO
0
4
RXFIR
RO
0
3
RXOIR
RO
0
2
RXUIR
RO
0
1
TXOIR
RO
0
0
TXEIR
RO
0
描述
保留
多主竞争中断状态
0:中断屏蔽前中断未发生
1:中断屏蔽前中断发生
接收 FIFO 满中断状态
0:中断屏蔽前中断未发生
1:中断屏蔽前中断发生
接收 FIFO 上溢中断状态
0:中断屏蔽前中断未发生
1:中断屏蔽前中断发生
接收 FIFO 下溢中断状态
0:中断屏蔽前中断未发生
1:中断屏蔽前中断发生
传输 FIFO 上溢中断状态
0:中断屏蔽前中断未发生
1:中断屏蔽前中断发生
传输 FIFO 空中断状态
0:中断屏蔽前中断未发生
1:中断屏蔽前中断发生
传输 FIFO 上溢中断清除寄存器(TXOICLR)
ADDR: 0x40004038
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
0
TXOIC
RO
0
保留
清除传输 FIFO 上溢中断
读该寄存器清除传输 FIFO 上溢中断,写操作
无效
接收 FIFO 上溢中断清除寄存器(RXOICLR)
ADDR: 0x4000403C
位域
名称
类型
复位值
31:1
REVERSED
—
—
描述
保留
95
SWM100 系列
0
RXOIC
RO
0
清除接收 FIFO 上溢中断
读该寄存器清除接收 FIFO 上溢中断,写操作
无效
接收 FIFO 下溢中断清除寄存器(RXUICLR)
ADDR: 0x40004040
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
0
RXUIC
RO
0
保留
清除接收 FIFO 下溢中断
读该寄存器清除接收 FIFO 下溢中断,写操作
无效
多主竞争中断清除寄存器(MSTICLR)
ADDR: 0x40004044
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
0
MSTIC
RO
0
保留
清除多主竞争中断
读该寄存器清除多主竞争中断,写操作无效
中断清除寄存器(INTCLR)
ADDR: 0x40004048
位域
名称
类型
复位值
描述
31:1
REVERSED
—
—
0
IC
RO
0x00
保留
清除中断
读该寄存器清除 TXO,RXU,RXO 和 MST
中断,写操作无效
数据寄存器(DATA)
ADDR: 0x40004060
位域
名称
类型
复位值
31:16
REVERSED
—
—
15:0
DR
RO
0x00
描述
保留
数据寄存器
读操作:读取接收 FIFO 缓冲区数据
写操作:向发送 FIFO 缓冲区写数据
96
SWM100 系列
6.13 脉冲宽度调制(PWM)发生器
6.13.1 特性
3 组 PWM 发生器,产生 6 路 PWM 信号
灵活的 PWM 产生方法
自带死区发生器
灵活可控的输出控制模块
丰富的中断机制和 ADC 触发
6.13.2 功能
脉宽调制(PWM)为一种对模拟信号电平进行数字化编码的方法。在脉宽调制中使用
高分辨率计数器来产生方波,通过调整方波的占空比来对模拟信号电平进行编码,通常使用
在开关电源和电机控制中。
PWM 模块由 3 路 PWM 发生器模块 1 组控制模块组成。每路 PWM 发生器模块包含 1
组 PWM 信号发生器,死区发生器和中断/ADC-触发 选择器。而控制模块决定了 PWM 信号
的极性,以及将哪个信号传递到管脚。每组 PWM 发生器模块产生两路 PWM 信号,此两路
PWM 信号可以是独立的信号,也可以是一对插入了死区延迟的互补信号。这些 PWM 发生
模块的输出信号在传递到器件管脚之前由输出控制模块管理。
PWM 模块具有较强的灵活性,可以产生简单的 PWM 信号,也可以产生带死区延迟的
成对 PWM 信号,如供 H 桥驱动电路使用的信号。3 个发生器模块也可产生 3 相全桥所需的
完整 6 通道门控。
PWM 模块每组 PWM 发生器都有一个 16 位定时器,两个比较器,可以产生两路 PWM。
在 PWM 发生器运作时,定时器在不断计数并和两个比较器的值进行比较,可以在和
比较器相等时或者定时器计数值为零、为装载值时对输出的 PWM 产生影响。
97
SWM100 系列
PWM0HCYCA
PWM0CYCA
pwm_interrupt_
generator_0_a
PWM0HOVERI_A
PWM0COVERI_A
PWMENABLE[0]
PWM0DBRISE
PWM0MOD
pwm_generator_0_a
PWM0_
OUT_A
中心对称
dead_zone_
generator_0
互补
普通
pwm_generator_0_b
PWM0_
OUT_B
PWM0DBFALL
PWM0HCYCB
PWM0CYCB
PWMENABLE[1]
pwm_interrupt_
generator_0_b
PWM0HOVERI_B
PWM0COVERI_B
图 6-19PWM 结构示意图
PWM 定时器
PWM 定时器输出 3 个信号,这些信号在生成 PWM 信号的过程中使用。一个是方向
信号(在递减计数模式中,该信号始终为低电平,在先递增后递减计数模式中,则是在高低
电平之间切换) 。另外两个信号为零脉冲和装载脉冲。当计数器计数值为 0 时,零脉冲信
号发出一个宽度等于时钟周期的高电平脉冲;当计数器计数值等于装载值时,装载脉冲也发
出一个宽度等于时钟周期的高电平脉冲。
PWM 比较器
PWM 发生器含两个比较器, 用于监控计数器的值。 当比较器的值与计数器的值相等
时,比较器输出宽度为单时钟周期的高电平脉冲。在先递增后递减计数模式中,比较器在递
增和递减计数时都要进行比较,因此必须通过计数器的方向信号来限定。这些限定脉冲在生
成 PWM 信号的过程中使用。如果任一比较器的值大于计数器的装载值,则该比较器永远
不会输出高电平脉冲。
死区发生器
死区发生器仅在互补模式下有效。互补模式下,两路 PWM 信号为一组,丢弃第二路
PWM 信号,并在第一路 PWM 信号基础上产生第二路 PWM 信号,两路信号为互补输出。
从 PWM 发生器产生的两路 PWM 信号被传递到死区发生器。如果死区发生器禁能,则 PWM
信号只简单地通过该模块,不会发生改变。如果死区发生器使能,则可在第一路 PWM 信号
上升沿(前死区)或第二路 PWM 信号上升沿(后死区)产生延迟(也可同时产生),延迟
时间可通过配置 PWMxDBRISE 及 PWMxDBFALL 寄存器进行更改。死区示意图如下图所
示(阴影部分表示死区)
98
SWM100 系列
图 6-20 PWM 死区发生示意图
PWMA 和 PWMB 是一对高电平有效的信号,并且其中一个信号总是为高电平。但在跳
变处的那段可编程延迟时间除外, 都为低电平。 这样这两个信号便可用来驱动半-H 桥
(half-H bridge)
,
又由于它们带有死区延迟,因而还可以避免冲过电流(shoot through current)
破坏电力功率器件。
输出控制模块
PWM 发生器模块产生的是两路原始的 PWM 信号,输出控制模块在 PWM 信号进入芯
片管脚之前要对其最后的状态进行控制。
输出控制模块主要有 2 项功能:
输出使能,只有被使能的 PWM 信号才能反映到芯片管脚上
输出反相控制,如果使能,则 PWM 信号输出到管脚时会 180°反相
中断触发控制单元
PWM 模块能够发出两种情况的中断,分别为高电平结束中断和周期开始中断。中断发
生由中断状态寄存器标识,可以通过中断清除寄存器清除中断状态,不用的中断可由中断屏
蔽寄存器进行屏蔽。
PWM 普通模式
普通模式下,每一路 PWM 独立配置,彼此间相互无影响,起始输出为高,波形下图所
示。
图 6-21 PWM 普通模式波形示意图
普通模式配置流程如下:
写 0x00 至相应的模式寄存器 MOD
设置周期长度寄存器
99
SWM100 系列
设置高电平周期寄存器
设置中断屏蔽寄存器
编写对应的中断服务程序
使能相应的中断
设置 PWM 使能寄存器
PWM 互补模式
互补模式下,两路输出为一组,第一路起始输出为高,第二路输出为第一路输出波形的
反向,并可配置死区发生器,波形如下图。
图 6-22 PWM 未开启死区的互补模式示意图
图 6-23 PWM 开启死区的互补模式示意图
互补模式配置流程如下:
写 0x01 至相应的模式寄存器 MOD
设置周期长度寄存器
设置高电平周期寄存器
设置死区寄存器
设置中断屏蔽寄存器
编写对应的中断服务程序
使能相应的中断
设置 PWM 使能寄存器
100
SWM100 系列
PWM 中心对称模式
中心对称模式下,每路 PWM 单独使用,两周期为一个对称单元,如下图所示
图 6-24 PWM 中心对称模式示意图
互补模式配置流程如下:
写 0x03 至相应的模式寄存器 MOD
设置周期寄存器
设置高电平周期寄存器
设置中断屏蔽寄存器
编写对应的中断服务程序
使能相应的中断
设置 PWM 使能寄存器
PWM 刹车模块
PWM 模块配置了刹车功能,通过 PWMSHUTDOWN 寄存器相应位进行配置,可应用
于电机控制等领域。具有如下特性:
刹车模块为三组 PWM 共享:可通过配置 PWMSCE 位域进行通道选择,配置指定
通道组响应刹车信号
触发方式可配置:可通过 PWMSIL 位对触发方式进行配置。当该位置 1 时,高电
平触发刹车。当该位清 0 时,低电平触发刹车。
触发信号具有滤波功能:当采样信号连续三个时钟周期(以 PWM 输入时钟计)满
足触发条件时,刹车被触发,PWM 模块进行响应。
刹车后输出方式可配置:通过 PWMSOL 进行配置,当该位置 1 时,刹车功能触发
后 PWM 模块输出高电平直至刹车取消。当该位置 0 时,刹车功能触发后 PWM 模
块输出低电平直至刹车取消。
刹车取消方式:通过刹车输入端电平反向进行取消。当刹车触发后,输入端输入触
发电平的反向电平并连续稳定三个周期后,刹车取消。若刹车有效信号保持,则
PWM 输出模块不会工作,输出信号始终为 PWMSOL 位设置电平。
刹车响应方式可配置:通过 PWMSOL 进行配置。刹车行为发生后,当该位为 1 时,
101
SWM100 系列
PWM 模块使能位清 0,同时计数器清 0,PWM 模块不工作,引脚输出指定电平直
至刹车取消。当该位为 0 时,PWM 模块正常工作,取消刹车后,引脚强制输出电
平取消,PWM 模块继续工作。
刹车中断:刹车被触发后,中断状态寄存器(INTSTATUS)BIT16 位被置 1,PWM
中断被触发。可通过中断清除寄存器(PWMINTCLR)进行清除操作。
PWM 中断服务程序的编写
查询中断状态寄存器 INTSTAT
编写对应的中断处理程序
读中断清除寄存器 INTCLR,清除相应的中断
102
SWM100 系列
6.13.3 寄存器映射
PWM
BASE:0x40016000
名称
偏移量
类型
复位值
PWM0MOD
0x00
R/W
0x00
PWM0 模式寄存器
PWM0CYCA
0x04
R/W
0x00
PWM0A 路周期长度寄存器
PWM0HCYCA
0x08
R/W
0x00
PWM0A 路高电平长度寄存器
PWM0DBRISE
0x0C
R/W
0x00
PWM0 死区上升沿延迟寄存器
PWM0CYCB
0x10
R/W
0x00
PWM0B 路周期长度寄存器
PWM0HCYCB
0x14
R/W
0x00
PWM0B 路高电平长度寄存器
PWM0DBFALL
0x18
R/W
0x00
PWM0 死区下降沿延迟寄存器
RESERVED
0x1C
R/W
0x00
保留
PWM1MOD
0x20
R/W
0x00
PWM1 模式寄存器
PWM1CYCA
0x24
R/W
0x00
PWM1A 路周期长度寄存器
PWM1HCYCA
0x28
R/W
0x00
PWM1A 路高电平长度寄存器
PWM1DBRISE
0x2C
R/W
0x00
PWM1 死区上升沿延迟寄存器
PWM1CYCB
0x30
R/W
0x00
PWM1B 路周期长度寄存器
PWM1HCYCB
0x34
R/W
0x00
PWM1B 路高电平长度寄存器
PWM1DBFALL
0x38
R/W
0x00
PWM1 死区下降沿延迟寄存器
RESERVED
0x3C
—
—
PWM2MOD
0x40
R/W
0x00
PWM2 模式寄存器
PWM2CYCA
0x44
R/W
0x00
PWM2A 路周期长度寄存器
PWM2HCYCA
0x48
R/W
0x00
PWM2A 路高电平长度寄存器
PWM2DBRISE
0x4C
R/W
0x00
PWM2 死区上升沿延迟寄存器
PWM2CYCB
0x50
R/W
0x00
PWM2B 路周期长度寄存器
PWM2HCYCB
0x54
R/W
0x00
PWM2B 路高电平长度寄存器
PWM2DBFALL
0x58
R/W
0x00
PWM2 死区下降沿延迟寄存器
RESERVED
0x5C
—
—
PWMSHUTDO
WN
0x60
R/W
0x00
RESERVED
0x64
~0x7C
—
—
保留
PWMENABLE
0x80
R/W
0x00
PWM 使能寄存器
PWMINTEN
0x84
R/W
0x00
PWM 中断使能寄存器
PWMINTSTAT
0x88
R/W
0x00
PWM 中断状态寄存器
PWMINTCLR
0x8C
R/W
0x00
PWM 中断清除寄存器
PWMINTMASK
0x90
R/W
0x00
PWM 中断屏蔽寄存器
PWMINTRAWS
TAT
0x94
R
0x00
PWM 中断初始状态寄存器
PWMINTOF
0x98
R
0x00
PWM 中断溢出标志
103
描述
保留
保留
PWM 刹车控制寄存器
SWM100 系列
6.13.4 寄存器描述
PWM 工作模式寄存器 xMOD
ADDR: 0x40016000+0x20*x(x=0,1,2)
位域
名称
类型
复位值
31:2
REVERSED
—
—
1
中心对称
R/W
0
0
互补模式
R/W
0
描述
保留
中心对称输出模式
0:左对齐输出模式
1:中心对称输出模式
互补输出模式
0:普通输出
1:互补输出
周期长度寄存器 xCYCA
ADDR: 0x40016004+0x20*x(x=0,1,2)
位域
名称
类型
复位值
描述
31:16
REVERSED
—
—
保留
15: 0
A 路周期长度
R/W
0
PWM xA 路周期长度,即一个 PWM 周期包含
PWM 输入时钟的个数
描述
周期长度寄存器 xCYCB
ADDR: 0x40016010+0x20*x(x=0,1,2)
位域
名称
类型
复位值
31:16
REVERSED
—
—
保留
0
PWM xB 路周期长度,即一个 PWM 周期包含
PWM 输入时钟的个数
互补输出时设为 0
描述
15: 0
B 路周期长度
R/W
高电平长度寄存器 xHCYCA
ADDR: 0x40016008+0x20*x(x=0,1,2)
位域
名称
类型
复位值
31:16
REVERSED
—
—
保留
15: 0
A 路高电平长
度
R/W
0
PWM xA 路高电平长度,即一个 PWM 周期内
高电平长度(占空比),以 PWM 输入时钟为
单位
复位值
描述
高电平长度寄存器 xHCYCB
ADDR: 0x40016014+0x20*x(x=0,1,2)
位域
名称
类型
104
SWM100 系列
31:16
15: 0
REVERSED
B 路高电平长度
—
R/W
—
保留
0
PWM xB 路高电平长度,即一个 PWM 周期内
高电平长度(占空比),以 PWM 输入时钟为
单位
描述
上升沿死区寄存器 xDBRISE
ADDR: 0x4001600C+0x20*x(x=0,1,2)
位域
名称
类型
复位值
31:16
REVERSED
—
—
保留
15: 0
A 路上升沿死
区长度(前死
区)
0
配置为互补模式时,xA 路 PWM 上升沿向后
延迟长度(以 PWM 输入时钟为单位,仅互补
模式下有效)
描述
R/W
下降沿死区寄存器 DBFALL
ADDR: 0x40016018+0x20*x(x=0,1,2)
位域
名称
类型
复位值
31:16
REVERSED
—
—
保留
15: 0
B 路上升沿死区
长度(后死区)
0
配置为互补模式时,xB 路 PWM 上升沿向后延
迟长度(以 PWM 输入时钟为单位,仅互补模
式下有效)
R/W
PWM 刹车控制寄存器 PWMSHUTDOWN
ADDR: 0x4001601C
位域
名称
类型
复位值
31:8
REVERSED
—
—
7
PWMSTAT
R
0
6
PWMSDOL
R/W
0
5
PWMSDIL
R/W
0
4
PWMSDM
R/W
0
3
PWM2SDC
R/W
0
2
PWM1SDC
R/W
0
描述
保留
刹车状态标志位
0:未刹车
1:已刹车
刹车后输出电平配置位
0:禁止
1:使能
刹车触发条件配置位
0:低电平触发
1:高电平触发
刹车方式配置位(方式说明见 12.3.4 节)
0:方式 A
1:方式 B
PWM 2 组刹车使能位
0:禁止
1:使能
PWM 1 组刹车使能位
0:禁止
105
SWM100 系列
1:使能
1
PWM0SDC
R/W
0
0
PWMSDEN
R/W
0
PWM 0 组刹车使能位
0:禁止
1:使能
刹车功能使能位
0:禁止
1:使能
PWM 使能寄存器 ENABLE
ADDR: 0x40016020
位域
名称
类型
复位值
描述
31:6
REVERSED
—
—
保留
5
PWM2B 路 使
能
R/W
0
0:禁止
1:使能
4
PWM2A 路使
能
R/W
0
0:禁止
1:使能
3
PWM1B 路使
能
R/W
0
0:禁止
1:使能
2
PWM1A 路使
能
R/W
0
0:禁止
1:使能
1
PWM0B 路使
能
R/W
0
0:禁止
1:使能
0
PWM0A 路使
能
R/W
0
0:禁止
1:使能
PWM 中断屏蔽寄存器 INTMASK
ADDR: 0x40016024
位域
名称
类型
复位值
描述
31:17
REVERSED
—
—
保留
16
PWM 刹车中断
R/W
0
1:非屏蔽
1:屏蔽
15:14
REVERSED
—
—
保留
13
PWM2B 路周期
开始中断
R/W
0
0:非屏蔽
1:屏蔽
12
PWM2A 路周
期开始中断
R/W
0
0:非屏蔽
1:屏蔽
11
PWM1B 路周期
开始中断
R/W
0
0:非屏蔽
1:屏蔽
10
PWM1A 路周
期开始中断
R/W
0
0:非屏蔽
1:屏蔽
9
PWM0B 路周
R/W
0
0:非屏蔽
106
SWM100 系列
期开始中断
1:屏蔽
8
PWM0A 路周
期开始中断
R/W
0
0:非屏蔽
1:屏蔽
7:6
REVERSED
—
—
保留
5
PWM2B 路高电
平结束中断
R/W
0
0:非屏蔽
1:屏蔽
4
PWM2A 路高
电平结束中断
R/W
0
0:非屏蔽
1:屏蔽
3
PWM1B 路高
电平结束中断
R/W
0
0:非屏蔽
1:屏蔽
2
PWM1A 路高
电平结束中断
R/W
0
0:非屏蔽
1:屏蔽
1
PWM0B 路高
电平结束中断
R/W
0
0:非屏蔽
1:屏蔽
0
PWM0A 路高
电平结束中断
R/W
0
0:非屏蔽
1:屏蔽
PWM 中断状态寄存器 INTSTATUS
ADDR: 0x40016028
位域
名称
类型
复位值
描述
31:17
REVERSED
—
—
保留
16
PWM 刹车中断
RO
0
0:无中断发生
1:有中断发生
15:14
REVERSED
—
—
保留
12
PWM2B 路周
期开始中断
RO
0
0:无中断发生
1:有中断发生
12
PWM2A 路周
期开始中断
RO
0
0:无中断发生
1:有中断发生
11
PWM1B 路周期
开始中断
RO
0
0:无中断发生
1:有中断发生
10
PWM1A 路周
期开始中断
RO
0
0:无中断发生
1:有中断发生
9
PWM0B 路周
期开始中断
RO
0
0:无中断发生
1:有中断发生
8
PWM0A 路周
期开始中断
RO
0
0:无中断发生
1:有中断发生
7:6
REVERSED
—
—
保留
5
PWM2B 路高电
平结束中断
RO
0
0:无中断发生
1:有中断发生
4
PWM2A 路高
RO
0
0:无中断发生
107
SWM100 系列
电平结束中断
1:有中断发生
3
PWM1B 路高
电平结束中断
RO
0
0:无中断发生
1:有中断发生
2
PWM1A 路高
电平结束中断
RO
0
0:无中断发生
1:有中断发生
1
PWM0B 路高
电平结束中断
RO
0
0:无中断发生
1:有中断发生
0
PWM0A 路高
电平结束中断
RO
0
0:无中断发生
1:有中断发生
PWM 中断清除寄存器 INTCLR
ADDR: 0x4001602C
位域
名称
类型
复位值
描述
31:17
REVERSED
—
—
保留
16
PWM 刹车中断
RO
0
写清除中断状态,读无效
15:14
REVERSED
—
—
保留
13
PWM2B 路周期
开始中断清除
RO
0
写清除中断状态,读无效
12
PWM2A 路周
期开始中断清
除
RO
0
写清除中断状态,读无效
11
PWM1B 路周
期开始中断清
除
RO
0
写清除中断状态,读无效
10
PWM1A 路周
期开始中断清
除
RO
0
写清除中断状态,读无效
9
PWM0B 路周
期开始中断清
除
RO
0
写清除中断状态,读无效
8
PWM0A 路周
期开始中断清
除
RO
0
写清除中断状态,读无效
7:6
REVERSED
—
—
保留
5
PWM2B 路高电
平结束中断清
除
RO
0
写清除中断状态,读无效
4
PWM2A 路高
电平结束中断
清除
RO
0
写清除中断状态,读无效
108
SWM100 系列
3
PWM1B 路高
电平结束中断
清除
RO
0
写清除中断状态,读无效
2
PWM1A 路高
电平结束中断
清除
RO
0
写清除中断状态,读无效
RO
0
写清除中断状态,读无效
RO
0
写清除中断状态,读无效
1
0
PWM0B 路高电
平结束中断清除
PWM0A 路高电
平结束中断清除
109
SWM100 系列
6.14 模拟数字转换器(ADC)
6.14.1 特性
模拟输入电压: 0~Vref (Max to Vdd)
12-bits 分辨率和 10-bits 精确度保证;
多达 8 路单端输入通道;
最大 ADC 时钟频率 13MHz;
高达 1MSPS 转换速率;
四种运作模式:
Single mode:A/D 转换在指定通道完成一次;
Single-cycle scan mode: A/D 转换在指定通道完成一个周期(从低数通道到
高数通道)
;
Continuous scan mode:A/D 转换器连续执行 Single-cycle scan mode 走到软件
停止 A/D 转换;
Burst mode:A/D 转换采样和转换指定单个通道,并存入 FIFO;
灵活的 A/D 转换开始条件:
软件向 ADCR 寄存器的 ad_en 位写 1;
外部 PWM 自动触发;
每通道转换结果存储在数据寄存器内,并带有 valid/overrun 标志
转换结果可和指定的值相比较 当转换值和设定值相匹配时,根据用户设定产生中
断请求
6.14.2 功能
ADC 模块支持四种操作模式,包括单触发模式,Burst 模式,单周期扫描模式以及连续
扫描模式。同时,可与比较器/放大器协同工作,并支持在转换完成后进行比较,并以中断
方式通知核进行处理。结构示意图如下。
110
PWM_OUT2
PWM_OUT4
MUX
DELAY
LOGIC
DELAY
LOGIC
DELAY
LOGIC
Control
ADF
Logics
ADRC
ADCST
DAT7
DAT1
DAT0
ADCMPR
ADCMD
ADCR
APB Bus
ADCHER
Digatal
OVERRUN
&
VALID
PWM_OUT0
...
PWM_ADC
PWM_CNT2
PWM_CNT1
PWM_CNT0
SWM100 系列
FIFO[0]
FIFO[1]
FIFO[2]
FIFO[3]
FIFO[4]
FIFO[5]
FIFO[6]
FIFO[7]
EOC
ADC_ON
ADC_ST
AIN[1]
...
AIN[7]
ADINT
ADCMSK[1]
8 to 1 analog
MUX
AIN[0]
A/D
Analog macro
ADCMSK[0]
Compare
Logic
CMPINT
图 6-25 SAR ADC 结构示意图
单触发模式
单触发模式主要用于对固定模拟量的转换及监控。在单触发模式下,A/D 转换遵循单
通道模式,其运作流程如下:
当 ADCR 寄存器 AD_EN 置位 1 时,开始 A/D 转换,可通过软件或外部触发输入
当 A/D 转换完成,A/D 转换的数据值将传递给相应通道数据寄存器
A/D 转换完成后,ADCST 寄存器对应 ADF 位将被置 1。若此时 ADCMSK 寄存器
ADF_MSK 位已置 1,则将产生 ADINT 中断请求
A/D 转换期间,AD_EN 位为高. A/D 转换结束, AD_EN 位自动清 0,A/D 转换器
进入 idle 模式
111
SWM100 系列
Burst 模式
在 Burst 模式下, A/D 转换会采样和转换指定的独立通道,
并将采样值存储在 FIFO 中,
具体操作步骤如下:
软件置 ADCR 的 AD_EN 位为 1 或由外部触发输入(PWM), 开始 A/D 转换
当 A/D 转换完成后,结果送入 FIFO,可以从 A/D 数据寄存器中读取
多于 4 个采样时,ADCST 的 ADF 位将置 1。如果此时 ADCMSK 寄存器 ADF_MSK
位置 1,在 A/D 转换完成时就会产生 ADINT 中断请求
AD_EN 保持为 1 时,重复步骤 2 到步骤 3. 当 AD_EN 位清零时,A/D 转换停止,
A/D 转换器进入空闲状态
注:在 burst 模式下,如果软件使能多个通道, 最小通道进行转换,其他通道不转换。
单周期扫描模式
在单周期模式下, A/D 将从最小通道向最大通道 进行转换,具体流程如下:
软件置位 ADCR 寄存器的 AD_EN 位或外部触发输入,开始从最小通道的 A/D 转
换
每路 A/D 转换完成后,A/D 转换数值将装载到相应数据寄存器中
当所选择的通道转换完成后,ADCST 的 ADF 位置 1,如果此时 ADCMSK 寄存器
ADF_MSK 位也置 1,在 A/D 转换结束后就会有 ADINT 中断请求。A/D 转换结束,
AD_EN 位将自动清 0,A/D 转换器进入 idle 模式。若在 A/D 转换过程中将 AD_EN
清 0,A/D 转换将自动停止,转入 idle 模式
连续扫描模式
连续扫描模式需使能 ADCHE 寄存器的相应位,则 A/D 转换在指定通道进行,最多支
持 8 通道 ADC。操作步骤如下:
软件置位 ADCR 寄存器的 AD_EN 位或由外部触发输入, 开始最低编号通道的 A/D
转换
每路 A/D 转换完成后,A/D 转换数值将装载到相应数据寄存器中
当被选择的通道数都转换完成后,ADCST 寄存器中 ADF 位将被置 1。若此时
ADCMSK 寄存器中 ADF_MSK 位被置 1,则当 A/D 转换完成后,将产生 ADINT
中断请求.,且继续从被使能的最低通道继续采样
只要 AD_EN 位保持为 1,
就重复步骤 2 到 3. 当 AD_EN 位被清 0, A/D 转换停止,
A/D 转换器进入空闲状态. 当 AD_EN 清 0, ADC 控制器将完成当前转换,
最低 ADC
的使能通道的结果将不确定
比较模式下转换结果监控
芯片提供比较寄存器 ADCMPR 用以监控 A/D 转换模块指定通道的转换结果值。 可通
过设定该寄存器 CMPCH(通道选择)位和 CMPCOND(比较条件)位监控选定的通道,
112
SWM100 系列
用以检查转换值与指定值 CMPD(比较数值)之间的关系。当比较结果和预设定相匹配,比较
计数器将加 1,当计数器的值和设定值(CMPMATCNT+1)匹配,ADCST 的 CMPF 位将置
1,若此时 ADCMSK 寄存器 CMP_MSK 置 1,将产生 ADINT 中断请求。
中断方式配置
中断电路如下图所示:
图 6-26 SAR ADC 中断示意图
PWM 触发 ADC 采样
芯片具有 PWM 输出上升沿触发 ADC 进行采样功能,并且可延迟触发时间;如果当前
ADC 正处于采样过程中,则会在采样结束后响应 PWM 触发再次进行采样;6 路 PWM 中第
1 路、第 3 路、第 5 路可以触发 ADC 进行采样,分别由寄存器 PWM_ADC 的第 0 位、第 1
位、第 2 位控制;可对 PWM 输出上升沿延迟若干时钟周期再触发 ADC 进行采样,延迟时
间可通过寄存器 PWM_CNT0、PWM_CNT2、PWM_CNT4 进行配置;具体操作步骤如下:
配置 PWM_ADC 寄存器,使能第 0 路(PWM0A)、第 2 路(PWM1A)、第 4 路
(PWM2A)PWM 中的一路或几路触发 ADC 进行采样
相应的分别配置 PWM_CNT0、PWM_CNT2、PWM_CNT4 寄存器配置延迟采样的
延迟时间
通道选择如下表
PWM 触发 ADC 进行采样通道选择方式
ADC_CHANNEL
PA4_EN
PA2_EN
PA0_EN
0
0
1
0
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
1
0
0
0
1
1
0
0
0
0
0
0
1
1
1
1
0
0
0
0
0
0
1
1
0
1
0
1
0
0
0
0
0
1
0
1
1
1
1
0
0
0
0
0
1
1
1
113
SWM100 系列
6.14.3 寄存器映射
SAR-ADC
BASE:0x40017000
名称
偏移量
类型
复位值
描述
DAT0
0x00
R/W
0x00
A/D 数据寄存器 0
DAT 1
0x04
R/W
0x00
A/D 数据寄存器 1
DAT 2
0x08
R/W
0x00
A/D 数据寄存器 2
DAT 3
0x0C
R/W
0x00
A/D 数据寄存器 3
DAT 4
0x10
R/W
0x00
A/D 数据寄存器 4
DAT 5
0x14
R/W
0x00
A/D 数据寄存器 5
DAT 6
0x18
R/W
0x00
A/D 数据寄存器 6
DAT 7
0x1C
R/W
0x00
A/D 数据寄存器 7
ADDRC
0x20
R/W
0x00
当 burst 模式下,存储最近的 8 次
转化值
ADCHER
0x24
R/W
0x00
通道使能寄存器
ADCR
0x28
R/W
0x00
控制寄存器
ADCMD
0x2C
R/W
0x00
ADC 模式寄存器
ADCMPR
0x30
R/W
0x00
ADC 比较寄存器
ADCMSK
0x34
R/W
0x00
ADC 屏蔽寄存器
ADCST
0x38
R/W
0x00
ADC 状态寄存器
PWM_ADC
0x3C
R/W
0x00
PWM 触发 ADC 的使能寄存器
PWM_CNT0
0x40
R/W
0x03
第 0 路 PWM 延迟采样延迟时间配
置寄存器
PWM_CNT1
0x44
R/W
0x03
第 2 路 PWM 延迟采样延迟时间配
置寄存器
PWM_CNT2
0x48
R/W
0x03
第 4 路 PWM 延迟采样延迟时间配
置寄存器
6.14.4 寄存器描述
通道数据寄存器 DATx
ADDR: 0x40017000+0x4*x(x=0~7)
位域
名称
类型
复位值
描述
31:18
REVERSED
—
—
保留
17
OVERRUN
RO
0
本通道数据已满标志位,1 有效,读数据寄存
器后清除
16
VALID
RO
0
本通道转换结束,数据可用标志位,1 有效,
读数据寄存器后清除
15:12
REVERSED
—
—
保留
11:0
DATA
RO
0x00
相应通道的 AD 转化结果
114
SWM100 系列
寄存器 ADDRC
ADDR: 0x40017020
位域
名称
类型
复位值
描述
31:12
REVERSED
—
—
11:0
DATA
RO
0x00
Burst 模式下相应通道最近的 8 个 AD 转化结
果
描述
保留
寄存器 ADCHER
ADDR: 0x40017024
位域
名称
类型
复位值
31:8
REVERSED
—
—
7
C_EN7
R/W
0
6
C_EN6
R/W
0
5
C_EN5
R/W
0
4
C_EN4
R/W
0
3
C_EN3
R/W
0
2
C_EN2
R/W
0
1
C_EN1
R/W
0
0
C_EN0
R/W
0
保留
1:AD 转化的第 7 个通道选通
0:AD 转化的第 7 个通道未选通
1:AD 转化的第 6 个通道选通
0:AD 转化的第 6 个通道未选通
1:AD 转化的第 5 个通道选通
0:AD 转化的第 5 个通道未选通
1:AD 转化的第 4 个通道选通
0:AD 转化的第 4 个通道未选通
1:AD 转化的第 3 个通道选通
0:AD 转化的第 3 个通道未选通
1:AD 转化的第 2 个通道选通
0:AD 转化的第 2 个通道未选通
1:AD 转化的第 1 个通道选通
0:AD 转化的第 1 个通道未选通
1:AD 转化的第 0 个通道选通
0:AD 转化的第 0 个通道未选通
寄存器 ADCR
ADDR: 0x40017028
位域
名称
类型
复位值
描述
31:2
REVERSED
—
—
保留
1
AD_ON
R/W
0
ADC 上电,1 有效
0
AD_ST
R/W
0
ADC 开始信号使能,1 有效
寄存器 ADCMD
ADDR: 0x4001702C
位域
名称
类型
复位值
描述
31:4
REVERSED
—
—
保留
3
MOD_S
R/W
0
Single mode: A/D 转换在指定通道完成一次
2
MOD_B
R/W
0
Burst mode: A/D 转换 采样和转换指定单个
通道,并存入 FIFO
115
SWM100 系列
1
MOD_CS
R/W
0
Continuous scan mode: A/D 转换器连续执行
Single-cycle scan mode 走到软件停止 A/D 转
换
0
MOD_SS
R/W
0
Single-cycle scan mode: A/D 转换在指定通道
完成一个周期(从低数通道到高数通道)
寄存器 ADCMPR
ADDR: 0x40017030
位域
名称
类型
复位值
描述
31:28
REVERSED
—
—
27:16
CMPD
R/W
0
保留
比较数值
此 12 位数值将和指定通道的转换结果相比较,
在 scan 模式下(without imposing a load on
software)软件可应用于监控外部模拟输入 pin
电压跃迁
15:12
REVERSED
—
—
11:8
CMPMATCNT
R/W
0
7:6
REVERSED
—
—
5:3
CMPCH
R/W
0
2
CMPCOND
R/W
0
1
REVERSED
—
—
0
CMPEN
R/W
0
保留
比较匹配值
当 指 定 A/D 通 道 的 转 换 值 和 比 较 条 件
CMPCOND[2]相匹配, 内部计数器将相应的
加 1. 当 内 部 计 数 器 的 值 达 到 设 定 值 时 ,
(CMPMATCNT +1) 硬件将置位 CMPF 位
保留
Compare 通道选择
000 = 选择 通道 0 转换结果
001 = 选择 通道 1 转换结果
010 = 选择 通道 2 转换结果
011 = 选择 通道 3 转换结果
100 = 选择 通道 4 转换结果
101 = 选择 通道 5 转换结果
110 = 选择 通道 6 转换结果
111 = 选择 通道 7 转换结果
比较条件
1 = 设置比较条件即当 12 位 A/D 转换结果
大于或等于 12 位 CMPD(ADCMPRx[27:16]),
内部匹配计数器加 1
0 = 设置比较条件即当 12 位 A/D 转换结果
小于 12 位 CMPD(ADCMPRx[27:16]),内部
匹配计数器加 1
注 : 当 内 部 计 数 器 的 值 达 到 (CMPMATCNT
+1), CMPF 置位
保留
比较使能
1 = 使能比较
0 = 禁止比较
该位置 1 使能 比较 CMPD[11:0] 特定通道
的转换值 当转换数据下载到 ADDR 寄存器
116
SWM100 系列
寄存器 ADCMSK
ADDR: 0x40017034
位域
名称
类型
复位值
31:2
REVERSED
—
—
1
CMP_MSK
R/W
0
0
ADF_MSK
R/W
0
描述
保留
0:屏蔽比较中断
1:未屏蔽比较中断
0:屏蔽转换结束中断
1:未屏蔽转换结束中断
寄存器 ADCST
ADDR: 0x40017038
位域
名称
类型
复位值
描述
31:24
REVERSED
—
—
保留
23:16
OVERRUN
RO
0
结束运行标志,每位对应一个通道
15:8
VALID
RO
0
数据有效标志位,每位对应一个通道
7:2
REVERSED
—
—
1
CMPF0
R/W
0
0
ADF
R/W
0
保留
比较标志位
选择 A/D 转换通道 结果和 ADCMPR 0 相匹
配 该位置 1. 写 1 清该位
1 = ADDR 转换结果和 ADCMPR0 相匹配
0 = ADDR 转换结果和 ADCMPR0 不匹配
A/D 转换结束标志位
状态标志位 指示 A/D 转换结束.
ADF 在下列三个条件时置 1:
1. 单一模式下 A/D 转换结束时
2. 扫描模式下 A/D 在所有指定通道转换结束
时
3. Burst 模式下,FIFO 多于 4 个 samples.
该标志写 1 清零
寄存器 PWM_ADC
ADDR: 0x4001703C
位域
名称
类型
复位值
描述
31:3
REVERSED
—
—
保留
2
PA4_EN
R/W
0
第 4 路 PWM 触发 ADC 使能寄存器
1
PA2_EN
R/W
0
第 2 路 PWM 触发 ADC 使能寄存器
0
PA0_EN
R/W
0
第 0 路 PWM 触发 ADC 使能寄存器
寄存器 PWM_CNT0
ADDR: 0x40017040
位域
名称
类型
复位值
描述
31:16
REVERSED
—
—
保留
15:0
PA0_DELAY
R/W
0x3
第 0 路 PWM 延迟采样延迟时间配置寄存器,写入
值为延时周期数
117
SWM100 系列
寄存器 PWM_CNT1
ADDR: 0x40017044
位域
名称
类型
复位值
描述
31:16
REVERSED
—
—
保留
15:0
PA0_DELAY
R/W
0x3
第 2 路 PWM 延迟采样延迟时间配置寄存器,写入
值为延时周期数
描述
寄存器 PWM_CNT2
ADDR: 0x40017048
位域
名称
类型
复位值
31:16
REVERSED
—
—
保留
15:0
PA0_DELAY
R/W
0x3
第 4 路 PWM 延迟采样延迟时间配置寄存器,写入
值为延时周期数
118
SWM100 系列
6.15 比较器/放大器
6.15.1 功能
芯片包括 3 路模拟比较器/放大器。根据用户配置的工作模式不同(OPx_MOD[2:0])可
分别配置为比较器或放大器。结构如下图所示:
GPIO_INT
INN
VOUT
INP
ADC_IN
INTERNAL
VOLTAGE
REFERENCE
GENERATOR
(OP_COMP_CTL
BIT[3:0])
OPx_MODE
图 6-27 比较器/放大器结构示意图
比较器
当 OPx_MOD[2:1]=10 或 OPx_MOD[2:1]=01 时,比较器/放大器模块工作在比较器
模式。当其正极(cpxinp)输入大于负极(cpxinn)时,结果为逻辑 0,反之为逻辑 1。
每一路比较器可分别配置为 2 种输出模式,分别是:
普通 GPIO 输入(OPx_MOD[2:0]=011)
带有迟滞比较的 GPIO 输入(OPx_MOD[2:0]=101)
在两种 GPIO 输入模式中,
比较器 CPx 的输出值会送往 cpxinn 管脚所复用的 gpio 端口。
例如,在使用比较器 0 时,cpxinn 与 PortA8 复用。那么当选择为普通 GPIO 输入模式时,
比较器的输出值会在 gpio 的 PortA8 的输入寄存器观察到;
如果配置了 GPIO 模块中的 PortA8
相应中断,比较器 0 的输出变化会触发 PortA8 的中断。
放大器
当 OPx_MOD[2:1]=11 时,比较器/放大器模块工作在放大器模式。此时片上的放大器
正极(opxinp)
、负极(opxinn)和输出端(opxout)为开环放大器的 3 个端口。可以搭建外
电路以确定放大器的放大倍数。
每一路放大器可分别配置为 2 种输出模式,分别是:
ADC 输入(OPx_MOD[2:0]=110)
片外工作(OPx_MOD[2:0]=111)
119
SWM100 系列
当放大器工作在 ADC 输入模式时,放大器的输出端不仅反映在 opxout 引脚上,还会与
opxout 端所对应的 ADC 输入端相连通,使得读取 ADC 相应的输入端值即可知道放大器的
输出电平。相对的片外工作模式中,放大器的输出只会影响 opxout 引脚电平,而不会关联
到片内其他电路。用户需要使用片外电路对放大器输出值进行处理。
当工作在 ADC 输入模式时,正输入端可以选择使用内部电压基准。内部基准共 16 档
可选。在正输入端使用内部电压基准时,原正输入端引脚可以被切换至数字信号模式正常完
成数字引脚功能。
典型配置过程
比较器配置
配置需使用的比较器管脚使其切换为模拟信号模式,有两种情况:1)比较器的两
个输入都从片外给出,则比较器的正端输入引脚和负端输入引脚都要切换为模拟功
能模式; 2)比较器的两个输入只有一个从片外给出,则只有比较器的负端输入引脚
切换为模拟功能模式,且比较器的正端输入引脚必须切换为数字功能模式
如果比较器的两个输入只有一个从片外给出,则比较器的正端输入需要由片内基准
电压提供,片内基准电压可通过片内基准寄存器(OP_PREF[3:0])配置
配置比较器/放大器工作模式寄存器(OPx_MOD[2:0]),选择合适的工作模式
配置负端输入引脚的中断模式,使得当比较器的输出结果符合中断配置时产生引脚
中断
放大器配置
配置需使用的放大器管脚使其切换为模拟信号模式,
放大器的 OP+、
OP-和 OP_OUT
都必须切换为模拟信号模式
配置比较器/放大器工作模式寄存器(OPx_MOD[2:0]),选择合适的工作模式
如果需要将放大器的输出信号输出给 ADC,则正确配置 ADC 的通道选择寄存器选
中 OPA 的输出引脚作为 ADC 的当前转换通道
6.15.2 寄存器映射
OP_COMP_CTL
BASE:0x400F0000
名称
偏移量
类型
复位值
描述
OP_COMP_CTL
0x00
R/W
0x00001110
比较器/放大器配置寄存器
6.15.3 寄存器描述
OP_COMP_CTL
ADDR: 0x400F0000
位域
名称
类型
复位值
描述
31:15
REVERSED
—
—
保留
120
SWM100 系列
14:12
OP2_MODE
20:18
001
11
REVERSED
—
—
10:8
OP1_MODE
R/W
001
7
REVERSED
—
—
6:4
OP0_MODE
R/W
001
比较器/放大器 2 工作模式
000:保留
001:关闭比较器/放大器模块
010:放大器关闭,比较器无迟滞,对应路 ADC
接受片外模拟信号
011:放大器关闭,比较器无迟滞,对应路 ADC
不接受片外模拟信号
100:放大器关闭,比较器有迟滞,对应路 ADC
接受片外模拟信号
101:放大器关闭,比较器有迟滞,对应路 ADC
不接受片外模拟信号
110:放大器工作,比较器关闭,对应路 ADC
接受放大器输出的模拟信号
111:放大器工作,比较器关闭,对应路 ADC
不接受模拟信号
保留
比较器/放大器 1 工作模式
000:保留
001:关闭比较器/放大器模块
010:放大器关闭,比较器无迟滞,对应路 ADC
接受片外模拟信号
011:放大器关闭,比较器无迟滞,对应路 ADC
不接受片外模拟信号
100:放大器关闭,比较器有迟滞,对应路 ADC
接受片外模拟信号
101:放大器关闭,比较器有迟滞,对应路 ADC
不接受片外模拟信号
110:放大器工作,比较器关闭,对应路 ADC
接受放大器输出的模拟信号
111:放大器工作,比较器关闭,对应路 ADC
不接受模拟信号
保留
比较器/放大器 0 工作模式
000:保留
001:关闭比较器/放大器模块
010:放大器关闭,比较器无迟滞,对应路 ADC
接受片外模拟信号
011:放大器关闭,比较器无迟滞,对应路 ADC
不接受片外模拟信号
100:放大器关闭,比较器有迟滞,对应路 ADC
接受片外模拟信号
101:放大器关闭,比较器有迟滞,对应路 ADC
不接受片外模拟信号
110:放大器工作,比较器关闭,对应路 ADC
接受放大器输出的模拟信号
111:放大器工作,比较器关闭,对应路 ADC
不接受模拟信号
121
SWM100 系列
3:0
OP_PREF
R/W
0000
正输入端内部基准寄存器
0000:0.3v
0001:0.45v
0010:0.6v
0011:0.75v
0100:0.9v
0101:1.05v
0110:1.2v
0111:1.35v
1000:1.5v
1001:1.65v
1010:1.8v
1011:1.95v
1100:2.1v
1101:2.25v
1110:2.4v
1111:2.55v
122
SWM100 系列
6.16 ISP 及 FLASH 操作
6.16.1 特性
支持加密操作;
支持 ISP 程序定制;
支持 FLASH 编程。
6.16.2 功能
ISP 模式
当芯片上电后检测到 B4 脚持续 5ms 以上的高电平,且加密级别为 0、2 三个级别中的
一个时,将会进入 ISP(在应用编程)模式。用户通过本公司所提供的上位机软件及串口连
接,执行 flash 页擦除、flash 全擦除及程序更新操作。
加密方式
通过用户向 FLASH 地址 0x1FC 写入指定数据的方式进行加密。加密分为如下级别:
下表是加密级别及特性
级别
地址 0x1FC 写入值
描述
级别 0
默认值 0xFFFFFFFF
无加密,SWD 端口及 ISP 下载模式均可使用
级别 1
0xABCD4321
无 ISP 模式,ISP 下载引脚应用无限制,SWD 使用正常
级别 2
0x1234DCBA
封闭 SWD 端口,ISP 模式可正常使用,可使用 ISP 全部
功能
级别 3
0xA4B3C2D1
SWD,ISP 模式均不可用,当 ISP 引脚为高时,flash 自动
擦除
级别 4
0xD1C2B3A4
SWD,ISP 模式均不可用,ISP 引脚为高时无效果,只能
通过用户程序调用 ISP 下载或 IAP 擦除 flash
FLASH 操作
IAP 函数为片内驻留程序,其提供了针对片内 flash 的相关操作,通过寄存器 r0 中所包
含地址传中内容递调用函数编号及参数,同时将结果返回至寄存器 r1 中地址所指向的结果
列表。参数列表最多包含两个参数,占两个字,返回值均占 1 个字。
IAP 函数为 Thumb 代码,驻留地址为 0x100700,建议使用如下方式调用:
定义驻留地址:
#define IAP_LOC 0x100701
定义函数指针类型:
typedef void (*IAP) (unsigned int * , unsigned int *);
在调用函数内定义变量:
unsigned int command[3];
123
SWM100 系列
unsigned int result;
声明及设置函数指针
IAP iap_function;
iap_function = (IAP) IAP_LOC;
调用语句:
iap_function(command,&result);
调用完成后,在 result 中返回执行结果。调用 IAP 函数时,应保证栈空间剩余 24 个字
节(byte)以上。
表格 6-3 IAP 函数调用编号及说明
命令
IAP 命令
写 Flash
参数调整
Flash
ISP 调用
返回参数
70
71
Command[0]=71
Command[1]=IAP_WREN;
IAP_WRDIS;
IAP_PEN;
IAP_SUCCESS
IAP_PARAERR
72
Command[0]=72
Command[1]=IAP_PNUM;
IAP_SUCCESS
IAP_PARAERR
IAP_EXCERR
74
Command[0]=74
无
页
擦
输入参数
IAP_SUCCESS
Command[0]=70
IAP_PARAERR
Command[1]=IAP_TMNUM;
IAP_EXCERR
使
能
Flash
码
描述
FLASH 写入、页擦及全擦操作
前调用该函数,根据当前时钟
进行进行参数调整,保证操作
成功,具体对应参数细节见
FLASH 参数设置表
FLASH 写入、页擦及全擦操作
前调用该函数进行使能,写操
作完成后应调用 IAP_WRDIS
操作禁能写操作
擦除指定页,页号对应地址范
围见 FLASH 页参数表。擦除
前应确定参数正确性及使能打
开,擦除后使能自动关闭。
重新调用 ISP 命令进行下载
表格 6-4 IAP 参数说明表
参数符号
对应值
描述
IAP_TMNUM
见 FLASH 参数表
输入参数,FLASH 写入、页擦及全擦操作参数配置对应值
IAP_WREN
0x53
输入参数,FLASH 写使能
IAP_WRDIS
0x54
输入参数,FLASH 写禁能
IAP_PEN
0x55
输入参数,FLASH 页擦除使能
IAP_PNUM
见 FLASH 页地址表
输入参数,FLASH 页对应地址
IAP_SUCCESS
0
输出参数,执行成功
IAP_INVALID
1
输出参数,命令不可用
IAP_PARAERR
2
输出参数,Command 中参数错误
IAP_EXCERR
3
输出参数,执行错误,包括 flash 参数设置错误等原因引起
表格 6-5 Flash 参数设置表
IAP_TMNUM 值
对应时钟区间
0
17M~32M
124
SWM100 系列
1
9M~17M
2
5M~9M
3
3M~5M
4
1.5M~3M
5
750K~1.5M
6
400K~750K
7
175K~400K
表格 6-6 Flash 页地址表
对应地址区间
IAP_PNUM 值
0x00000000~0x000003FF
0
1
0x00000400~0x000007FF
2
0x00000800~0x00000BFF
3
0x00000C00~0x00000FFF
4
0x00001000~0x000013FF
5
0x00001400~0x000017FF
6
0x00001800~0x00001BFF
7
0x00001C00~0x00001FFF
8
0x00002000~0x000023FF
9
0x00002400~0x000027FF
10
0x00002800~0x00002BFF
11
0x00002C00~0x00002FFF
12
0x00003000~0x000033FF
13
0x00003400~0x000037FF
14
0x00003800~0x00003BFF
15
0x00003C00~0x00003FFF
详细操作请参阅库函数。
125
SWM100 系列
7 典型应用电路
POWER
AVDD
AVCC
0.1UF
DVCC
SPI_SS
SPI_CLK
SPI_MISO
SPI_MOSI
CS
CLK
MISO
MOSI
VDD
SPI_DEVICE
VSS
1UF
AVSS
I2C_SCL
I2C_SDA
20P
DVCC
10K
VDD
ICE_CLK
ICE_DAT
NRESET
VSS
10K
INTERFACE
SWD
DVCC
VDD
CLK
I2C_DEVICE
VSS
DIO
XI
2~32
CRYSTAL
MHZ
20P
XO
RESET
R-IN
RXD
NRST
PC COM PORT
DVCC
10K
T-OUT
TXD
0.1UF
UART
图 7-1 典型应用电路图
8 电气特性
8.1 绝对最大额定值
表格 8-1 绝对最大额定值
参数
最大值
典型值
最小值
符号
单位
直流电源电压
3.6
3.3
2.2
Vdd-Vss
V
晶振频率
44.2368
22.1184
4
1/Tclk
MHz
工作温度
105
—
-40
Tw
℃
贮存温度
150
—
-50
Ts
℃
8.2 DC 电气特性
表格 8-2 DC 电气特性( Vdd-Vss = 3.3V, Tw =25℃)
参数
最大值
典型值
最小值
单位
符号
测试条件
工作电压
3.6
3.3
2.2
V
Vdd
—
电源地
0.8
—
0
V
Vss
—
模拟工作电压
Vdd
—
0
Tw
AVdd
—
模拟参考电压
AVdd
—
0
V
Vref
—
PortA 输入低电压(TTL)
0.8
—
Vpal
V
Vdd = 3.3V
PortA 输入高电压(TTL)
3.6
—
Vpah
V
Vdd = 3.3V
2.0
126
SWM100 系列
参数
最大值
典型值
最小值
单位
符号
PortA 输入漏电流
1
—
-1
Ipalk
uA
PortA 上拉模式阻值
89
57
39
Rpau
KΩ
—
PortA 下拉模式阻值
107
57
35
Rpad
KΩ
—
PortA 源电流
120
70
35
Ipaoh
mA
Vdd = 3.3V
PortA 灌电流
55
44
—
Ipaol
mA
Vdd = 3.3V
PortB, PortC
输入低电压(TTL)
0.8
—
Vpxl
V
Vdd = 3.3V
3.6
—
2.0
Vpxh
V
Vdd = 3.3V
1
—
-1
Ipxlk
uA
Vdd = 3.3V
0