SWM201 系列
ARM®CortexTM-M0
32 位微处理器
SWM201 系列 MCU
数据手册
华芯微特科技有限公司
Synwit Technology Co., Ltd.
1
Version 1.23
SWM201 系列
目
录
相关文档 ........................................................................................................................................... 7
缩写表........................................................................................................................................ 7
寄存器描述列表缩写约定 ......................................................................................................... 7
文档下载地址 ............................................................................................................................ 7
1
概述 ........................................................................................................................................... 8
2
特性 ........................................................................................................................................... 9
3
选型指南 ................................................................................................................................. 12
4
功能方框图.............................................................................................................................. 13
5
管脚配置 ................................................................................................................................. 14
6
5.1
SWM201C6T7 ............................................................................................................... 14
5.2
SWM201G6S7 .............................................................................................................. 15
5.3
管脚定义 ..................................................................................................................... 16
5.4
管脚复用功能 .............................................................................................................. 21
功能描述 ................................................................................................................................. 23
6.1
存储器映射.................................................................................................................. 23
6.2
中断控制器(NVIC) .................................................................................................. 24
6.3
系统定时器(SYSTIC) ................................................................................................ 39
6.4
系统控制器.................................................................................................................. 46
6.5
系统管理(SYSCON).................................................................................................. 56
6.6
端口控制模块(PORTCON) ..................................................................................... 106
6.7
通用 I/O (GPIO) .................................................................................................... 145
6.8
加强型定时器(TIMER) .......................................................................................... 167
6.9
基础定时器(BTIMER) ............................................................................................ 195
6.10
正交编码器(QEI)................................................................................................... 206
6.11
看门狗定时器(WDT)............................................................................................. 221
6.12
实时时钟(RTC) ...................................................................................................... 233
6.13
UART 接口控制器(UART) ...................................................................................... 254
6.14
I2C 总线控制器(I2C) ............................................................................................. 275
6.15
SPI 总线控制器(SPI) .............................................................................................. 301
6.16
脉冲宽度调制(PWM)发生器 ................................................................................ 326
6.17
模拟数字转换器(SAR ADC) ................................................................................... 382
6.18
旋转坐标计算(CORDIC) ........................................................................................ 414
6.19
除法器(DIV) .......................................................................................................... 425
6.20
FLASH 控制器与 ISP 操作........................................................................................... 436
6.21
比较器(CMP) ........................................................................................................ 449
6.22
放大器(OPA) ......................................................................................................... 461
7
典型应用电路........................................................................................................................ 470
8
电气特性 ............................................................................................................................... 471
8.1
绝对最大额定值 ........................................................................................................ 471
8.2
DC 电气特性 .............................................................................................................. 472
2
Version 1.23
SWM201 系列
9
10
8.3
AC 电气特性 .............................................................................................................. 473
8.4
模拟器件特性 ............................................................................................................ 477
封装尺寸 ............................................................................................................................... 485
9.1
LQFP48 ....................................................................................................................... 485
9.2
SSOP28 ....................................................................................................................... 486
版本记录 ....................................................................................................................... 487
图目录
图 4-1 功能方框图 .................................................................................................................. 13
图 5-1 C6T7 封装管脚配置图 .................................................................................................. 14
图 5-2 G6S7 封装管脚配置图 .................................................................................................. 15
图 6-1 systic 模块结构图 ......................................................................................................... 40
图 6-2 SysTick 计数时序图....................................................................................................... 41
图 6-3 时钟结构框图............................................................................................................... 57
图 6-4 端口唤醒示意图........................................................................................................... 61
图 6-5 PORTCON 模块结构框图............................................................................................. 107
图 6-6 引脚配置示意图 ...................................................................................................... 108
图 6-7 IO 输入上拉下拉 ........................................................................................................ 109
图 6-8 推挽输出 ................................................................................................................... 109
图 6-9 开漏输出 ................................................................................................................... 110
图 6-10 TIMER 模块结构框图 ............................................................................................... 168
图 6-11 定时器工作示意图 ................................................................................................... 169
图 6-12 计数器工作示意图 ................................................................................................... 170
图 6-13 级联模式工作示意图 ............................................................................................... 171
图 6-14 脉冲发送示意图 ...................................................................................................... 172
图 6-15 输出脉冲比较点 1 等于周期脉冲发送示意图 ........................................................ 172
图 6-16 单次高电平捕捉示意图 ........................................................................................... 173
图 6-17 单次低电平捕捉示意图 ........................................................................................... 173
图 6-18 HALL 记录值 ............................................................................................................. 174
图 6-19 HALL 对应关系图 ...................................................................................................... 175
图 6-20 BTIMER 模块结构框图 ............................................................................................. 196
图 6-21 定时器工作示意图 ................................................................................................... 197
图 6-22 定时器 RELOAD 工作示意图..................................................................................... 198
图 6-23 QEI 模块结构框图 .................................................................................................... 207
图 6-24 增量式正交编码盘示意图....................................................................................... 208
图 6-25 三相信号正向/反向旋转时序关系 .......................................................................... 208
图 6-26 QEI 计数器索引复位模式 ......................................................................................... 209
图 6-27 计数匹配复位模式 .................................................................................................. 209
图 6-28 正交编码器 x4 计数模式示意图.............................................................................. 210
图 6-29 正交编码器 x2 计数模式示意图.............................................................................. 210
图 6-28 WDT 模块结构框图 .................................................................................................. 222
3
Version 1.23
SWM201 系列
图 6-29 普通模式 WDT 工作示意图 ..................................................................................... 223
图 6-30 WDT 配置为 RESET 模式波形图................................................................................ 224
图 6-31 WDT 配置为中断模式波形图 ................................................................................... 224
图 6-32 窗口模式看门狗发生中断及复位与计数值之间的关系示意图 .............................. 224
图 6-33 RTC 模块结构框图 .................................................................................................... 234
图 6-34 UART 模块结构图 ..................................................................................................... 255
图 6-35 UART 字符格式 ......................................................................................................... 256
图 6-36 自动波特率示意图 .................................................................................................. 257
图 6-37 LIN Fram 示意图 ....................................................................................................... 259
图 6-38 Break 信号不够长示意图 ......................................................................................... 260
图 6-39 Break 信号恰好够长示意图...................................................................................... 260
图 6-40 Break 信号足够长示意图 ......................................................................................... 260
图 6-41 硬件流控 .................................................................................................................. 261
图 6-42 对方发送 8 个数据接收 FIFO 示意图 ...................................................................... 262
图 6-43 对方发送 9 个数据接收 FIFO 示意图 ...................................................................... 262
图 6-44 发送 FIFO 示意图..................................................................................................... 263
图 6-45 I2C 模块结构框图 ..................................................................................................... 276
图 6-46 I2C 通信示意图......................................................................................................... 277
图 6-47 Master SCL 周期配置示意图 ..................................................................................... 278
图 6-48 Master 寄存器时序示意图 ...................................................................................... 280
图 6-49 Slave 寄存器时序示意图 ......................................................................................... 282
图 6-50 SPI 模块结构框图 ..................................................................................................... 302
图 6-51 SPI 模式波形图 ......................................................................................................... 303
图 6-52 SSI 模式单次输出波.................................................................................................. 304
图 6-53 SSI 模式连续输出波形 .............................................................................................. 304
图 6-54 主机模式接口框图 ................................................................................................... 305
图 6-55 从机模式接口框图 ................................................................................................... 305
图 6-56 philips 数据格式 ....................................................................................................... 305
图 6-57 MSB 对齐数据格式................................................................................................... 306
图 6-58 PCM 短帧数据格式................................................................................................... 306
图 6-59 PCM 长帧数据格式(PCMSYNW = 0) ................................................................ 307
图 6-60 PCM 长帧数据格式(PCMSYNW = 1) ................................................................ 307
图 6-61 SPIFLASH 四线读帧格式............................................................................................ 307
图 6-62 SPIFALSH 四线模式外部连接图 ................................................................................ 307
图 6-63 PWM 模块结构框图 ................................................................................................. 327
图 6-64 PWM 死区示意图 ..................................................................................................... 328
图 6-65 边沿对齐模式下向上计数时计数器启动与停止波形 ............................................. 329
图 6-66 边沿对齐模式下向下计数时计数器启动与停止波形 ............................................. 330
图 6-67 中心对齐模式下计数器启动与停止波形 ................................................................ 331
图 6-68 非对称中心对齐模式下计数器启动与停止波形..................................................... 331
图 6-69 边沿对齐模式下计数器计数过程波形 .................................................................... 332
图 6-70 中心对称模式下计数器计数过程波形 .................................................................... 332
图 6-71 硬件刹车控制和软件刹车控制计数器计数情况..................................................... 333
4
Version 1.23
SWM201 系列
图 6-72 计数器重载波形 ...................................................................................................... 334
图 6-73 边沿对齐模式下 PWM 信号产生波形..................................................................... 335
图 6-74 中心对齐模式下 PWM 信号产生波形..................................................................... 335
图 6-75 非对称中心对齐模式下 PWM 信号产生波形 ......................................................... 336
图 6-76 BRK 中心对齐模式下 PWM 信号产生波形............................................................... 336
图 6-77 TRIGGER 控制波形 .................................................................................................... 337
图 6-78 重复计数功能波形图 .............................................................................................. 338
图 6-79 PWM 触发 ADC 采样示意图 ..................................................................................... 338
图 6-80 电平翻转示意图 ...................................................................................................... 339
图 6-81 挖坑前波形 ............................................................................................................. 340
图 6-82 挖坑后波形 ............................................................................................................. 340
图 6-83 ADC 模块结构框图 ................................................................................................... 383
图 6-84 ADC 时钟示意图 ....................................................................................................... 384
图 6-85 中心对称模式下 PWM 触发 ADC 采样示意图......................................................... 385
图 6-86 SAR ADC 连续采样示意图......................................................................................... 386
图 6-87 SAR ADC 多通道连续采样示意图 ............................................................................. 387
图 6-88 比较器框图 .............................................................................................................. 450
图 6-89 比较器迟滞功能示意图........................................................................................... 452
图 6-90 HALL 对应关系图 ...................................................................................................... 452
图 6-91 P 端分压模式结构示意图......................................................................................... 453
图 6-92 P 端分压模式结构图 ................................................................................................ 453
图 6-93 放大器框图 .............................................................................................................. 462
图 6-94 典型放大电路........................................................................................................... 463
图 6-95 PGA 内部结构图 ....................................................................................................... 464
图 6-96 PGA 应用参考图 ....................................................................................................... 465
图 7-1 典型应用电路图......................................................................................................... 470
图 8-1 上电复位时间示意图 ................................................................................................ 476
图 9-1 LQFP48 封装尺寸图 .................................................................................................... 485
图 9-2 SSOP28 封装尺寸图.................................................................................................... 486
表格目录
表格 3-1 SWM201 系列 MCU 选型表 ...................................................................................... 12
表格 5-1 PA 复用功能.............................................................................................................. 21
表格 5-2 PB 复用功能 ............................................................................................................. 21
表格 5-3 PM 复用功能 ............................................................................................................ 22
表格 6-1 存储器映射............................................................................................................... 23
表格 6-2 中断编号及对应外设 ............................................................................................... 25
表格 8-1 绝对最大额定值 ..................................................................................................... 471
表格 8-2 DC 电气特性(Vdd-Vss = 5.0V, Tw =25℃)) ................................................................. 472
表格 8-3 内部振荡器特征值 ................................................................................................. 473
表格 8-4 外部 4-32MHZ 晶体振荡器 ..................................................................................... 474
5
Version 1.23
SWM201 系列
表格 8-5 外部振荡器典型电路 ............................................................................................. 475
表格 8-6 SAR ADC 特征值 ...................................................................................................... 477
表格 8-7 放大器特征值......................................................................................................... 478
表格 8-8 比较器特征值......................................................................................................... 479
表格 8-9LDO 特征值.............................................................................................................. 480
6
Version 1.23
SWM201 系列
相关文档
缩写表
名称
描述
ACMP
Analog Comparator Controller
ADC
Analog-to-Digital Converter
AES
Advanced Encryption Standard
APB
Advanced Peripheral Bus
AHB
Advanced High-Performance Bus
BOD
Brown-out Detection
CAN
Controller Area Network
PWM
Pulse Width Modulation
FIFO
First In, First Out
GPIO
General-Purpose Input/Output
IAP
In Application Programming
ICP
In Circuit Programming
ISP
In System Programming
LDO
Low Dropout Regulator
MPU
Memory Protection Unit
NVIC
Nested Vectored Interrupt Controller
DMA
Direct Memory Access
PLL
Phase-Locked Loop
寄存器描述列表缩写约定
名称
描述
RO
只读(read only)
WO
只写(write only)
R/W
读/写(read / write)
R/W0C
写 0 清零(read/write 0 clear)
R/W1C
写 1 清零(read/write 1 clear)
AC
自动清零(auto clear)
RC
读清零(read clear)
-
保留(reserve)
文档下载地址
http://www.synwit.cn/support-1/3.html
7
Version 1.23
SWM201 系列
1
概述
SWM201 系列 32 位 MCU(以下简称 SWM201)内嵌 ARM® CortexTM-M0 内核,凭借其出色的
性能以及高可靠性、低功耗、代码密度大等突出特点,可应用于工业控制、电机控制、白色家
电等多种领域。
SWM201 支持片上包含精度为 1%以内的 30MHz、60MHz 时钟,最高支持 60MHz 时钟输出。同
时提供最大为 32K 字节的 FLASH 和最大 8K 字节的 SRAM。此外,芯片支持 ISP(在系统编程)
操作及 IAP(在应用编程),用户可自定义 BOOT 程序。
SWM201 外设串行总线包括最多 2 个 UART 接口、1 个 ISP 接口、1 个 I2C 接口(支持主/从选
择),此外还具有 1 个 16 位看门狗定时器,1 个实时时钟(RTC)模块,2 组 24 位加强型定时
器,4 组 24 位基础型定时器,1 个 16 位正交编码器(QEI)模块,2 路 4 通道(共 8 通道)
16bit PWM,1 个除法器(DIV),1 个旋转坐标计算模块(CORDIC),1 个(最多 12 通道)通
道 12bit、1MSPS 的逐次逼近型 ADC 模块,3 路运算放大器模块,4 路比较器模块,并提供欠压
检测及低电压复位功能。
8
Version 1.23
SWM201 系列
特性
2
⚫
⚫
内核
◼
32 位 ARM® Cortex™-M0 内核
◼
24 位系统定时器
◼
工作频率最高 60MHz
◼
硬件单周期乘法
◼
集成嵌套向量中断控制器(NVIC)
,提供最多 32 个、4 级可配置优先级的中断
◼
通过 SWD 接口烧录
内置 LDO
◼
⚫
SRAM 存储器
◼
⚫
⚫
⚫
⚫
供电电压范围 2.5V 至 5.5V
8KB
FLASH 存储器
◼
32KB
◼
支持用户定制 ISP(在系统编程)更新用户程序
◼
支持自定义 BOOT 程序
串行接口
◼
UART*2,具有独立 8 字节 FIFO,最高支持主时钟 16 分频
◼
I2C*1,支持 7 位、10 位地址方式,支持 master/slave 模式
◼
SPI*1,具有 8 字节独立 FIFO,支持 SPI、SSI、I2S 协议,支持 Master/Slave
PWM 控制模块
◼
独立 4 通道 16 位 PWM 产生器,互补模式下可扩展为 8 通道
◼
提供新周期开始中断,高电平结束中断以及中心对称模式下的半周期中断
◼
具有普通、中心对称输出模式
◼
死区控制
◼
由硬件完成与 ADC 的交互
定时器模块
◼
2 路 32 位(24 位计数器+8 位预分频)加强定时器,支持计数器、捕获、脉冲发送等
功能,1 路支持 HALL 接口
⚫
◼
4 路 32 位(24 位计数器+8 位预分频)基础定时器
◼
16 位看门狗定时器,溢出后可配置触发中断或复位芯片
◼
内置低功耗定时器模块,使用内部 32KB 时钟,休眠计数并自唤醒
◼
QEI
GPIO
◼
最多可达 44 个 GPIO
◼
可配置 4 种 IO 模式
◼
◆
上拉输入
◆
下拉输入
◆
推挽输出
◆
开漏输出
灵活的中断配置
◆
触发类型设置(边沿检测、电平检测)
9
Version 1.23
SWM201 系列
⚫
◼
◼
⚫
⚫
⚫
⚫
⚫
⚫
触发电平设置(高电平、低电平)
◆
触发边沿设置(上升沿、下降沿、双边沿)
模拟外设
◼
⚫
◆
12 位 12 通道高精度 SAR ADC
◆
采样率高达 1MSPS
◆
支持 single/scan 两种模式
◆
独立结果寄存器
◆
提供独立 FIFO
◆
可由软件/PWM/TIMER 触发
OPA*3
◆
2 路支持内置 PGA,支持 5/10/15 倍放大
◆
每个通道输出引脚支持直接进入复用 ADC 模块
CMP*4
◆
CMP0/1/2 输出可直接选择接入 HALL 信号
◆
CMP3 输出可直接连接至 PWM 刹车信号(PWMBREAK2)
欠压检测
◼
支持欠压检测
◼
支持多级欠压中断和复位选择
时钟源
◼
30MHz、60MHz 精度可达 1%的片内时钟源
◼
32KHZ 片内时钟源
◼
片外 4~32Mhz 片外晶振
◼
片外 32KHZ 时钟,供 RTC 使用
CORDIC
◼
14 个时钟迭代得到结果
◼
计算 sin 和 cos 时,输入弧度范围建议在 0.01 ~1.56
◼
计算 arctan 数值范围建议在 0.05 ~ 10000
◼
输出结果支持查询和中断方式
DIV
◼
支持 32 位整数除法运算及求余运算
◼
支持 32 位开方运算,支持小数位
◼
除法单次运算最多耗时 32 个时钟,开方单次运算耗时 16/32 个时钟
◼
支持有符号数和无符号数运算
其他
◼
自定义 BOOT 程序
◼
96BIT 独立 ID
低功耗
◼
浅睡眠:38uA
◼
深睡眠:200nA
环境
◼
工作温度:-40℃~105℃
◼
保存温度:-50℃~150℃
◼
湿度等级:MSL3
10
Version 1.23
SWM201 系列
⚫
⚫
封装
◼
LQFP48
◼
SSOP28
应用范围
◼
仪器仪表
◼
工业控制
◼
电机驱动
◼
白色家电
◼
可穿戴设备
11
Version 1.23
SWM201 系列
选型指南
3
表格 3-1 SWM201 系列 MCU 选型表
Voltage
Flash
SRAM
I/
Part Number
SAR
Tim
RTC
PWM
(V)
(KB)
(KB)
O
SWM201C6T7-50
2.5~5.5
32
8
43
2+4+1
1
2(8)
SWM201G6S7-65
2.5~5.5
32
8
24
2+4+1
1
2(8)
SPI
UART
I2C
CORDIC
DIV
OPA
CMP
Package
1(12)
1
2
1
1
1
3
4
LQFP48
1(11)2
1
2
1
1
1
31
43
SSOP28
ADC
注 1:SWM201G6S7 系列 OPA1~2 只支持 PGA 模式
注 2:OPA1/2 输出端可分别连接 ADC 通道 CH7 和 CH3
注 3:CMP0/1/2 反向端连接内部 VREF
12
Version 1.23
SWM201 系列
功能方框图
4
SWCLK
SWD
SWDIO
CORTEX-M0
Ibus
Dbus
Sbus
ROM
RAM
Flash
DMA
SYS
DIV
CORDIC
AHB:Fmax=SYSCLK
GPIOA
PORT
GPIOB
GPIOM
RXD
UART0
UART1
I2C0
I2C1
SPI0
APB2:PCLK2=HCLK/2
PWM x2
APB1:PCLK1 = HCLK
TXD
WDT
TIMER x2
BTIMER x4
OPA x3
CMP x4
ADC ch x12
QEI
RTC
图 4-1 功能方框图
13
Version 1.23
B13/PWM0A
B12/UART0RX/SPI0MOSI/PWM0B/T0I/T0O/XO
B11/UART0TX/SPI0CLK/PWM0BN/T1I/T1O/XI
B10/PWM0AN/T0I/T0O/ISP
A7/I2C0DAT/PWM0BN
A6/I2C0CLK/PWM0B
RESETn
VDD5
CAP
VSS5
A5/UART1RX/PWM1A/PWM0AN/PWM1AN
45
44
43
42
41
40
39
38
37
SWM201C6T7
46
5.1
B14/UART0TX/SPI0MISO/PWMBRK0/CMPVN3
管脚配置
47
5
48
SWM201 系列
B15/UART0RX/SPI0SSN
1
36
A4/UART1TX/PWM1B/PWM1BN
M0/SWCLK/UART1TX/PWMPULSE0
2
35
A3/PWM0A/PWM1AN/PWM0AN
M1/SWDIO/UART1RX/T1I/T1O
3
34
A2/PWM1AN/PWM0AN/PWM1A
M2/PWM1BN/PWM1B/HALL0
4
33
A1/I2C0DAT/UART0TX/PWM1BN/PWM1B
M3/I2C0CLK/UART0TX/PWM1B/PWM0A/PWM1BN/HALL1
5
32
A0/I2C0CLK/UART0RX/PWM0AN/PWM1AN/PWM0A
M4/I2C0DAT/UART0RX/PWM1AN/PWM1A/HALL2
6
31
A15
M5/PWM1A/PWM1BN/PWM1AN
7
30
A14/T0I/T0O/ADC0_CH0/CMPVP3
M6/PWM0AN/PWM0A
8
29
A13/ADC0_CH1/OPVN1
M7/PWM0A/PWM1AN/PWM0AN
9
28
A12/OPVN2
M8/SPI0CLK/PWM0BN/T0I/T0O/WAKEUP0/ADC0_CH11
10
27
A11/PWMPULSEL1/ADC0_CH3/OPOUT2
M9/QEIUPDN/SPI0MOSI/PWM0B/T1I/T1O/ADC0_CH10
11
26
A10/PWMBRK2/OPVP2
M10/SPI0SSN/WAKEUP1
12
25
A9/OPVP1
SWM201C6T7
A8/UART1CTS/ADC0_CH7/OPOUT1
B9/UART1RTS/ADC0_CH8/OPOUT0
B8/UART1RX/OPVN0
B7/UART1TX/T1I/T1O/ADC0_CH9/OPVP0
B6/INDEX/PWMBRK1/HALL2/T0I/T0O/ADC0_CH4/CMPVP0
B5/QEB/I2C0DAT/HALL1/T1I/T1O/ADC0_CH5/CMPVP1
B4/QEA/I2C0CLK/HALL0/ADC0_CH6/CMPVP2
B3/UART0RX/ADC0_CH2
B2/UART0TX/CMPVN0
VDDIO
B1/UART0CTS/CMPVN1
B0/UART0RTS/CMPVN2
LQFP48
图 5-1 C6T7 封装管脚配置图
14
Version 1.23
SWM201 系列
5.2
SWM201G6S7
RESETn
1
28
VDD5
B11/UART0TX/SPI0CLK/PWM0BN/T1I/T1O/XI
2
27
CAP
B12/UART0RX/SPI0MOSI/PWM0B/T0I/T0O/XO
3
48
26
VSS5
B14/UART0TX/SPI0MISO/PWMBRK0/CMPVN3
4
25
A5/UART1RX/PWM1A/PWM0AN/PWM1AN
M0/SWCLK/UART1TX/PWMPULSE0
5
24
A4/UART1TX/PWM1B/PWM1BN
M1/SWDIO/UART1RX/T1I/T1O
6
23
A3/PWM0A/PWM1AN/PWM0AN
M8/SPI0CLK/PWM0BN/T0I/T0O/WAKEUP0/ADC0_CH11
7
M9/QEIUPDN/SPI0MOSI/PWM0B/T1I/T1O/ADC0_CH10
8
SWM201G6S7
22
A2/PWM1AN/PWM0AN/PWM1A
21
A1/I2C0DAT/UART0TX/PWM1BN/PWM1B
20
A0/I2C0CLK/UART0RX/PWM0AN/PWM1AN/PWM0A
19
A14/T0I/T0O/ADC0_CH0/CMPVP3
B4/QEA/I2C0CLK/HALL0/ADC0_CH6/CMPVP2
9
B5/QEB/I2C0DAT/HALL1/T1I/T1O/ADC0_CH5/CMPVP1
10
B6/INDEX/PWMBRK1/HALL2/T0I/T0O/ADC0_CH4/CMPVP0
11
18
A13/ADC0_CH1/OPVN1
B7/UART1TX/T1I/T1O/ADC0_CH9/OPVP0
12
17
A12/OPVN2
B8/UART1RX/OPVN0
13
16
A10/PWMBRK2/OPVP2
B9/UART1RTS/ADC0_CH8/OPOUT0
14
15
A9/OPVP1
SSOP28
图 5-2 G6S7 封装管脚配置图
15
Version 1.23
SWM201 系列
管脚定义
5.3
1
G6S7
C6T7
管脚号
/
管脚名称
B15
可复用功能
UART0RX/
SPI0SSN
类型
B15:数字 GPIO 功能引脚;
UART0RX:UART0 模块接收数据引脚;
I/O
SPI0SSN:SPI0 模块使能引脚;
M0:数字 GPIO 功能引脚;
SWCLK/
2
5
M0
UART1TX/
SWCLK:SWD 下载接口时钟引脚;
I/O
UART1TX:UART1 模块发送数据引脚;
PWMPULSE0/
PWMPULSE0:PWM 模块 PULSE0 引脚;
M1:数字 GPIO 功能引脚;
SWDIO/
3
6
M1
UART1RX/
T1I/
SWDIO:SWD 下载接口的数据线引脚;
UART1RX:UART1 模块接收数据引脚;
I/O
T1I:TIMER1 模块输入捕获引脚;
T1O
T1O:TIMER1 模块输出比较引脚;
M2:数字 GPIO 功能引脚;
PWM1BN/
4
/
M2
PWM1B/
PWM1BN:PWM 模块第 1 组 B 路反向输出引脚;
I/O
PWM1B:PWM 模块第 1 组 B 路输出引脚;
HALL0
HALL0:霍尔模块输入引脚;
M3:数字 GPIO 功能引脚;
I2C0CLK/
I2C0CLK:I2C0 模块时钟引脚;
UART0TX/
5
/
M3
PWM1B/
PWM0A/
UART0CTS:UART0 模块发送允许引脚;
PWM1B:PWM 模块第 1 组 B 路输出引脚;
I/O
PWM0A:PWM 模块第 0 组 A 路输出引脚;
PWM1BN/
PWM1BN:PWM 模块第 1 组 B 路反向输出引脚;
HALL1
HALL1:霍尔模块输入引脚;
M4:数字 GPIO 功能引脚;
I2C0DAT/
I2C0DAT:I2C0 模块数据引脚;
UART0RX/
6
/
M4
PWM1AN/
UART0RX:UART0 模块接收数据引脚;
I/O
PWM1AN:PWM 模块第 1 组 A 路反向输出引脚;
PWM1A/
PWM1A:PWM 模块第 1 组 A 路输出引脚;
HALL2
HALL2:霍尔模块输入引脚;
M5:数字 GPIO 功能引脚;
PWM1A/
7
/
M5
PWM1BN/
PWM1A:PWM 模块第 1 组 A 路输出引脚;
I/O
PWM1BN:PWM 模块第 1 组 B 路反向输出引脚;
PWM1AN
8
/
M6
PWM0AN/
PWM0A
描述
PWM1AN:PWM 模块第 1 组 A 路反向输出引脚;
M6:数字 GPIO 功能引脚;
PWM0AN:PWM 模块第 0 组 A 路反向输出引脚;
I/O
PWM0A:PWM 模块第 0 组 A 路输出引脚;
16
Version 1.23
SWM201 系列
M7:数字 GPIO 功能引脚;
PWM0A/
9
/
M7
PWM1AN/
PWM0A:PWM 模块第 0 组 A 路输出引脚;
I/O
PWM1AN:PWM 模块第 1 组 A 路反向输出引脚;
PWM0AN
PWM0AN:PWM 模块第 0 组 A 路反向输出引脚;
M8:数字 GPIO 功能引脚;
SPI0CLK/
SPI0CLK:SPI0 模块的主机时钟引脚;
PWM0BN/
10
7
M8
T0I/
T0O/
PWM0BN:PWM 模块第 0 组 B 路反向输出引脚;
T0I:TIMER0 模块输入捕获引脚;
I/O
T0O:TIMER0 模块输出比较引脚;
WAKEUP0/
WAKEUP0:WAKEUP 输入引脚 0;
ADC0_CH11
ADC0_ CH11:ADC0 模块通道 11 输入引脚;
M9:数字 GPIO 功能引脚;
QEIUPDN/
QEIUPDN:编码器模块 UPDN 引脚;
SPI0MOSI/
11
8
M9
PWM0B/
T1I/
SPI0MOSI:SPI0 模块的主机发送引脚;
PWM0B:PWM 模块第 0 组 B 路输出引脚;
I/O
T1I:TIMER1 模块输入捕获引脚;
T1O/
T1O:TIMER1 模块输出比较引脚;
ADC0_CH10
12
13
14
15
16
17
/
/
/
/
/
/
M10
B0
B1
VDDIO
B2
B3
SPI0SSN/
WAKEUP1
UART0RTS/
CMPVN2
UART0CTS/
CMPVN1
——
UART0TX/
CMPVN0
UART0RX/
ADC0_CH2
ADC0_ CH10:ADC0 模块通道 10 输入引脚;
M10:数字 GPIO 功能引脚;
SPI0SSN:SPI0 模块使能引脚;
I/O
WAKEUP1:WAKEUP 输入引脚 1;
B0:数字 GPIO 功能引脚;
UART0RTS:UART0 模块接收请求引脚;
I/O
CMPVN2:比较器 2 N 端输入引脚;
B1:数字 GPIO 功能引脚;
UART0CTS:UART0 模块发送允许引脚;
I/O
CMPVN1:比较器 1 N 端输入引脚;
VDDIO:芯片 IO 电源功能引脚;
S
B2:数字 GPIO 功能引脚;
UART0TX:UART0 模块发送数据引脚;
I/O
CMPVN0:比较器 0 N 端输入引脚;
B3:数字 GPIO 功能引脚;
UART0RX:UART0 模块接收数据引脚;
I/O
ADC0_CH2:ADC0 模块通道 2 输入引脚
B4:数字 GPIO 功能引脚;
QEA/
QEA:编码器模块 A 相输入引脚;
I2C0CLK/
18
9
B4
HALL0/
I2C0CLK:I2C0 模块时钟引脚;
I/O
HALL0:霍尔模块输入引脚;
ADC0_CH6/
ADC0_CH6:ADC0 模块通道 6 输入引脚;
CMPVP2
CMPVP2:比较器 2 P 端输入引脚;
17
Version 1.23
SWM201 系列
B5:数字 GPIO 功能引脚;
QEB/
QEB:编码器模块 B 相输入引脚;
I2C0DAT/
I2C0DAT:I2C0 模块数据引脚;
HALL1/
19
10
B5
T1I/
HALL1:霍尔模块输入引脚;
I/O
T1I:TIMER1 模块输入捕获引脚;
T1O/
T1O:TIMER1 模块输出比较引脚;
ADC0_CH5/
ADC0_ CH5:ADC0 模块通道 5 输入引脚;
CMPVP1
CMPVP1:比较器 1 P 端输入引脚;
B6:数字 GPIO 功能引脚;
INDEX/
INDEX:编码器模块索引相输入引脚;
PWMBRK1/
PWMBRK1:PWM 模块的 BRAKE1 引脚;
HALL2/
20
11
B6
T0I/
HALL2:霍尔模块输入引脚;
I/O
T0I:TIMER0 模块输入捕获引脚;
T0O/
T0O:TIMER0 模块输出比较引脚;
ADC0_CH4/
ADC0_ CH4:ADC0 模块通道 4 输入引脚;
CMPVP0
CMPVP0:比较器 0 P 端输入引脚;
B7:数字 GPIO 功能引脚;
UART1TX/
UART1TX:UART1 模块发送引脚;
T1I/
21
12
B7
T1O/
T1I:TIMER1 模块输入捕获引脚;
I/O
T1O:TIMER1 模块输出比较引脚;
ADC0_CH9/
ADC0_ CH9:ADC0 模块通道 9 输入引脚;
OPVP0
22
13
B8
UART1RX/
OPVN0
OPVP0:放大器 0 P 端输入引脚;
B8:数字 GPIO 功能引脚;
UART1RX:UART1 模块接收数据引脚;
I/O
OPVN0:放大器 0 N 端输入引脚;
B9:数字 GPIO 功能引脚;
UART1RTS/
23
14
B9
ADC0_CH8/
UART1RTS:UART1 模块接收请求引脚;
I/O
ADC0_ CH8:ADC0 模块通道 8 输入引脚;
OPOUT0
OPOUT0:放大器 0 输出引脚;
A8:数字 GPIO 功能引脚;
UART1CTS/
24
/
A8
ADC0_CH7/
UART1CTS:UART1 模块发送允许引脚;
I/O
ADC0_CH7:ADC0 模块通道 7 输入引脚;
OPOUT1
25
26
15
16
A9
A10
OPVP1
PWMBRK2/
OPVP2
OPOUT1:放大器 1 输出引脚;
A9:数字 GPIO 功能引脚;
I/O
OPVP1:放大器 1 P 端输入引脚;
A10:数字 GPIO 功能引脚;
PWMBRK2:PWM 模块的 BRAKE2 引脚;
I/O
OPVP2:放大器 2 P 端输入引脚;
A11:数字 GPIO 功能引脚;
PWMPULSEL1
27
/
A11
/
ADC0_CH3/
PWMPULSEL1:PWM 的 PILSE 引脚;
I/O
ADC0_ CH3:ADC0 模块通道 3 输入引脚;
OPOUT2:放大器 2 输出引脚;
OPOUT2
18
Version 1.23
SWM201 系列
28
29
17
18
A12
A13
OPVN2
ADC0_CH1/
OPVN1
A12:数字 GPIO 功能引脚;
I/O
OPVN2:放大器 2 N 端输入引脚;
A13:数字 GPIO 功能引脚;
ADC0_ CH1:ADC0 模块通道 1 输入引脚;
I/O
OPVN1:放大器 1 N 端输入引脚;
A14:数字 GPIO 功能引脚;
T0I/
30
19
A14
T0O/
ADC0_CH0/
T0I:TIMER0 模块输入捕获引脚;
T0O:TIMER0 模块输出比较引脚;
I/O
ADC0_ CH0:ADC0 模块通道 0 输入引脚;
CMPVP3
31
/
A15
——
CMPVP3:比较器 3 P 端输入引脚;
A15:数字 GPIO 功能引脚;
I/O
A0:数字 GPIO 功能引脚;
I2C0CLK/
I2C0CLK:I2C0 模块时钟引脚;
UART0RX/
32
20
A0
PWM0AN/
UART0RX:UART0 模块数据接收引脚;
I/O
PWM0AN:PWM 模块第 0 组 A 路反向输出引脚;
PWM1AN/
PWM1AN:PWM 模块第 1 组 A 路反向输出引脚;
PWM0A
PWM0A:PWM 模块第 0 组 A 路输出引脚;
A1:数字 GPIO 功能引脚;
I2C0DAT/
33
21
A1
UART0TX/
PWM1BN/
I2C0DAT:I2C0 模块数据引脚;
UART0TX:UART0 模块数据发送引脚;
I/O
PWM1BN:PWM 模块第 1 组 B 路反向输出引脚;
PWM1B
PWM1B:PWM 模块第 1 组 B 路输出引脚;
A2:数字 GPIO 功能引脚;
PWM1AN/
34
22
A2
PWM0AN/
PWM1AN:PWM 模块第 1 组 A 路反向输出引脚;
I/O
PWM0AN:PWM 模块第 0 组 A 路反向输出引脚;
PWM1A
PWM1A:PWM 模块第 1 组 A 路输出引脚;
A3 数字 GPIO 功能引脚;
PWM0A/
35
23
A3
PWM1AN/
PWM0A:PWM 模块第 0 组 A 路输出引脚;
I/O
PWM1AN:PWM 模块第 1 组 A 路反向输出引脚;
PWM0AN
PWM0AN:PWM 模块第 0 组 A 路反向输出引脚;
A4:数字 GPIO 功能引脚;
UART1TX/
36
24
A4
PWM1B/
UART1TX:UART1 模块发送引脚;
I/O
PWM1B:PWM 模块第 1 组 B 路输出引脚;
PWM1BN
PWM1BN:PWM 模块第 1 组 B 路反向输出引脚;
A5:数字 GPIO 功能引脚;
UART1RX/
37
25
A5
PWM1A/
PWM0AN/
UART1RX:UART1 模块接收引脚;
PWM1A:PWM 模块第 1 组 A 路输出引脚;
I/O
PWM0AN:PWM 模块第 0 组 A 路反向输出引脚;
PWM1AN
PWM1AN:PWM 模块第 1 组 A 路反向输出引脚;
38
26
VSS5
——
S
39
27
CAP
——
S
VSS5:芯片主地功能引脚;
CAP:电容引脚;
注:需要对地连接一个 1uf 电容
19
Version 1.23
SWM201 系列
40
28
VDD5
——
S
41
1
RESETn
——
I/O
42
43
/
/
A6
A7
I2C0CLK/
PWM0B
I2C0DAT/
PWM0BN
VDD5:芯片电源功能引脚;
RESETn:芯片复位功能引脚,低电平复位;
A6:数字 GPIO 功能引脚;
I2C0CLK:I2C0 模块时钟引脚;
I/O
PWM0B:PWM 模块第 0 组 B 路输出引脚;
A7:数字 GPIO 功能引脚;
I2C0DAT:I2C0 模块数据引脚;
I/O
PWM0BN:PWM 模块第 0 组 B 路反向输出引脚;
B10:数字 GPIO 功能引脚;
PWM0AN/
44
/
B10
T0I/
T0O/
PWM0AN:PWM 模块第 0 组 A 路反向输出引脚;
T0I:TIMER0 模块输入捕获引脚;
I/O
T0O:TIMER0 模块输出比较引脚;
ISP
ISP:芯片 ISP 引脚;
B11:数字 GPIO 功能引脚;
UART0TX/
UART0TX:UART0 模块发送引脚;
SPI0CLK/
45
2
B11
PWM0BN/
T1I/
SPI0CLK:SPI0 模块主机时钟引脚;
PWM0BN:PWM 模块第 0 组 B 路反向输出引脚;
I/O
T1I:TIMER1 模块输入捕获引脚;
T1O/
T1O:TIMER1 模块输出比较引脚;
XI
XI:外部晶振输入引脚;
B12:数字 GPIO 功能引脚;
UART0RX/
UART0RX:UART0 模块接收数据引脚;
SPI0MOSI/
46
3
B12
PWM0B/
T0I/
SPI0MOSI:SPI0 模块的主机发送引脚;
PWM0B:PWM 模块第 0 组 B 路输出引脚;
I/O
T0I:TIMER0 模块输入捕获引脚;
T0O/
T0O:TIMER0 模块输出比较引脚;
XO
47
/
B13
PWM0A
XO:外部晶振输出引脚;
B13:数字 GPIO 功能引脚;
I/O
PWM0A:PWM 模块第 0 组 A 路输出引脚;
B14:数字 GPIO 功能引脚;
UART0TX/
48
4
B14
SPI0MISO/
PWMBRK0/
UART0TX:UART0 模块发送引脚;
SPI0MISO:SPI0 模块的主机接收引脚;
I/O
PWMBRK0:PWM 模块的 BRAKE0 引脚;
CMPVN3
CMPVN3:比较器 3N 端输入引脚;
注 1:I=输入,O=输出,S=电源
注 2:ISP 方式的串口烧录时,默认使用 M1(RX)/M0(TX)作为串口通讯使用。
20
Version 1.23
SWM201 系列
5.4
管脚复用功能
表格 5-1 PA 复用功能
管脚名称 SEL0001
SEL0010
SEL0110
SEL0111
SEL1000
SEL1111
其他
PA0
I2C0CLK
UART0RX PWM0AN PWM1AN PWM0A
-
-
-
-
-
PA1
I2C0DAT
UART0TX PWM1BN PWM1B
-
-
-
-
-
-
PA2
PWM1AN
PWM0AN PWM1A
-
-
-
-
-
-
-
PA3
PWM0A
PWM1AN PWM0AN -
-
-
-
-
-
-
PA4
UART1TX
PWM1B
PWM1BN -
-
-
-
-
-
-
PA5
UART1RX
PWM1A
PWM0AN PWM1AN -
-
-
-
-
-
PA6
I2C0CLK
PWM0B
-
-
-
-
-
-
-
-
PA7
I2C0DAT
PWM0BN -
-
-
-
-
-
-
-
PA8
UART1CTS
-
-
-
-
-
-
-
PA9
-
-
-
-
-
-
-
-
OPVP1
-
PA10
PWMBRK2 -
-
-
-
-
-
-
OPVP2
-
-
-
-
-
-
-
-
SEL0011
SEL0100
SEL0101
ADC0_CH7
PA11
PWMPULSEL
1
PA12
-
-
-
-
-
-
-
-
PA13
-
-
-
-
-
-
-
-
PA14
T0I
T0O
-
-
-
-
-
-
/OPOUT1
ADC0_CH3
/OPOUT2
OPVN2
ADC0_CH1
/OPVN1
ADC0_CH0
-
-
-
/CMPVP3
PA15
-
-
-
-
-
-
-
-
-
-
表格 5-2 PB 复用功能
管脚名称 SEL0001
SEL0010
SEL0011
SEL0100
SEL0101
SEL0110
SEL0111
SEL1000
SEL1111
其他
PB0
UART0RTS -
-
-
-
--
-
-
CMPVN2
-
PB1
UART0CTS -
-
-
-
-
-
-
CMPVN1
-
PB2
UART0TX
-
-
-
-
-
-
-
CMPVN0
-
PB3
UART0RX
-
-
-
-
-
-
PB4
QEA
I2C0CLK
HALL0
-
-
-
-
-
PB5
QEB
I2C0DAT
HALL1
T1I
T1O
-
-
PB6
INDEX
PWMBRK1 HALL2
T0I
T0O
-
-
-
PB7
UART1TX
T1I
T1O
-
-
-
-
-
PB8
UART1RX
-
-
-
-
-
-
-
ADC0_CH2 ADC0_CH6
/ CMPVP2
ADC0_CH5
/ CMPVP1
ADC0_CH4
/ CMPVP0
ADC0_CH9
/ OPVP0
OPVN0
-
-
-
-
21
Version 1.23
SWM201 系列
ADC0_CH8
PB9
UART1RTS -
-
-
-
-
-
-
PB10
PWM0AN T0I
T0O
-
-
-
-
-
-
ISP
PB11
UART0TX
PWM0BN T1I
T1O
XI
-
-
-
-
-
PB12
UART0RX
PWM0B
T0I
T0O
XO
-
-
-
-
-
PB13
PWM0A
-
-
-
-
-
-
-
-
-
PB14
UART0TX
PWMBRK0 -
-
-
-
-
-
CMPVN3
-
PB15
UART0RX
SPI0SSN
-
-
-
-
-
-
-
-
/OPOUT0
-
表格 5-3 PM 复用功能
管脚名称 SEL0001
SEL0010
SEL0100
SEL0101
SEL0110
SEL0111
SEL1000
SEL1111
其他
PM0
SWCLK
UART1TX
-
-
-
-
-
-
-
PM1
SWDIO
UART1RX
T1I
T1O
-
-
-
-
-
-
PM2
PWM1BN PWM1B
HALL0
-
-
-
-
-
-
-
PM3
I2C0CLK
UART0TX
PWM1B
PWM0A
PWM1BN HALL1
-
-
-
-
PM4
I2C0DAT
UART0RX
PWM1AN PWM1A
HALL2
-
-
-
-
-
PM5
PWM1A
PWM1BN PWM1AN -
-
-
-
-
-
-
PM6
PWM0AN PWM0A
-
-
-
-
-
-
-
PM7
PWM0A
PWM1AN PWM0AN -
-
-
-
-
-
-
PM8
SPI0CLK
PWM0BN T0I
T0O
-
-
-
-
PM9
QEIUPDN SPI0MOSI PWM0B
T1I
T1O
-
-
-
PM10
SPI0SSN
-
-
-
-
-
-
-
-
WAKEUP1
PM11
-
-
-
-
-
-
-
-
-
-
PM12
-
-
-
-
-
-
-
-
-
-
PM13
-
-
-
-
-
-
-
-
-
-
PM14
-
-
-
-
-
-
-
-
-
-
PM15
-
-
-
-
-
-
-
-
-
-
SEL0011
PWMPULS
E0
-
ADC0_CH1
1
ADC0_CH1
0
WAKEUP
-
22
Version 1.23
SWM201 系列
6
功能描述
6.1
存储器映射
SWM201 控制器为 32 位通用控制器,提供了 4G 字节寻址空间,如下表所示。数据格式仅支持
小端格式(Little-Endian),各模块具体寄存器排布及操作说明在后章节有详细描述。
表格 6-1 存储器映射
起始
结束
描述
0x00000000
-
FLASH
0x20000000
-
SRAM
0x40000000
0x400007FF
SYSCON
0x40001000
0x400017FF
INTCTRL
0x40003000
0x400037FF
CORDIC
0x40003800
0x40003FFF
DIVIDER
0x40004000
0x400047FF
GPIOM
0x40040000
0x400407FF
GPIOA
0x40040800
0x40040FFF
GPIOB
0x40042000
0x400427FF
UART0
0x40042800
0x40042FFF
UART1
0x40044000
0x400447FF
SPI0
0x40046000
0x400467FF
PWM
0x40046800
0x40046FFF
TIMER
0x40048800
0x40048FFF
TIMERB
0x40049000
0x400497FF
SARADC0
0x4004A000
0x4004A7FF
FLASHC
0x4004B800
0x4004BFFF
RTC
0x4004D800
0x4004DFFF
QEI
0x400A0000
0x400A07FF
PORTCON
0x400A0800
0x400A0FFF
WDT
0x400A6000
0x400A67FF
I2C0
0x400Aa000
0x400AA7FF
ANACON
0xE000E010
0xE000E01F
系统定时控制寄存器
0xE000E100
0xE000E4EF
NVIC 中断控制寄存器器
0xE000ED00
0xE000ED3F
系统控制寄存器
存储器
AHB 总线外设
APB1 总线外设
APB2 总线外设
核内部控制器
23
Version 1.23
SWM201 系列
6.2
中断控制器(NVIC)
6.2.1
概述
Cortex-M0 提供了“嵌套向量中断控制器(NVIC)”用以管理中断事件。
中断优先级分为 4 级,可通过中断优先级配置寄存器(IRQn)进行配置。中断发生时,内核比
较中断优先级,并自动获取入口地址,并保护环境,将指定寄存器中数据入栈,无需软件参
与。中断服务程序结束后,由硬件完成出栈工作。同时支持“尾链(Tail-Chaining Interrupts)”模
式及“迟至(Late Arrivals)”模式,有效的优化了中断发生及背对背中断的执行效率,提高了中
断的实时性。
更多细节请参阅“CortexTM-M0 技术参考手册”及“ARM® CoreSight 技术参考手册”。
6.2.2
特性
⚫
支持嵌套及向量中断
⚫
硬件完成现场的保存和恢复
⚫
动态改变优先级
⚫
确定的中断时间
24
Version 1.23
SWM201 系列
6.2.3
功能描述
中断向量表
SWM201 提供了 32 个中断供外设与核交互,其排列如表格 6-2 所示。可以通过中断配置模
块,将任意模块或具体 IO 的中断连接至指定中断编号。具体使用参考中断配置模块。
表格 6-2 中断编号及对应外设
中断(IRQ 编号)
描述
0
UART0
1
TIMER0
2
CORDIC
3
UART1
4
PWM_CH1
5
TIMER1
6
HALL
7
PWM_CH0
8
BOD
9
PWM_HALT
10
RTC_BASE
11
WDT
12
I2C0
13
XTAL_STOP_DET
14
SARADC0
15
CMP
16
BTIMER0
17
BTIMER1
18
BTIMER2
19
BTIMER3
20
GPIOA
21
GPIOB
22
GPIOM
23
GPIOA0/GPIOM0
24
GPIOA1/GPIOM1
25
GPIOA2/GPIOM2
26
GPIOA3/GPIOM3
27
GPIOB0/GPIOA8
28
GPIOB1/GPIOA9
29
GPIOB2/GPIOA10
30
GPIOB3/GPIOA11/SPI
31
GPIOB4/GPIOB10/QEI
NMI
SYSTEM
25
Version 1.23
SWM201 系列
6.2.4
寄存器映射
名称
NVIC
偏移
类型
复位值
描述
BASE 0xE000E100
NVIC_ISER
0x00
R/W
0x00
中断使能寄存器
NVIC_ICER
0x80
R/W
0x00
清除使能寄存器
NVIC_ISPR
0x100
R/W
0x00
设置挂起寄存器
NVIC_ICPR
0x180
R/W
0x00
清除挂起寄存器
NVIC_IPR0
0x300
R/W
0x00
IRQ0—IRQ3 优先级控制
NVIC_IPR1
0x304
R/W
0x00
IRQ4—IRQ7 优先级控制
NVIC_IPR2
0x308
R/W
0x00
IRQ8—IRQ11 优先级控制
NVIC_IPR3
0x30C
R/W
0x00
IRQ12—IRQ15 优先级控制
NVIC_IPR4
0x310
R/W
0x00
IRQ16—IRQ19 优先级控制
NVIC_IPR5
0x314
R/W
0x00
IRQ20—IRQ23 优先级控制
NVIC_IPR6
0x318
R/W
0x00
IRQ24—IRQ27 优先级控制
NVIC_IPR7
0x31C
R/W
0x00
IRQ28—IRQ31 优先级控制
26
Version 1.23
SWM201 系列
寄存器描述
6.2.5
中断使能寄存器 NVIC_ISER
寄存器
偏移
类型
复位值
描述
NVIC_ISER
0x00
R/W
0x00
中断使能寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
SETENA
23
22
21
20
SETENA
15
14
13
12
SETENA
7
6
5
4
SETENA
位域
名称
31:0
SETENA
描述
中断使能,向对应位写 1 使能相应中断号中断,写 0 无效。
读返回目前使能状态。
27
Version 1.23
SWM201 系列
清除使能寄存器 NVIC_ICER
寄存器
偏移
类型
复位值
描述
NVIC_ICER
0x80
R/W
0x00
清除使能寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
CLRENA
23
22
21
20
CLRENA
15
14
13
12
CLRENA
7
6
5
4
CLRENA
位域
名称
31:0
CLRENA
描述
中断清除,向对应位写 1 清除相应中断号中断使能位,写 0 无效。
读返回目前使能状态
28
Version 1.23
SWM201 系列
设置挂起寄存器 NVIC_ISPR
寄存器
偏移
类型
复位值
描述
NVIC_ISPR
0x100
R/W
0x00
设置挂起寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
SETPEND
23
22
21
20
SETPEND
15
14
13
12
SETPEND
7
6
5
4
SETPEND
位域
名称
31:0
SETPEND
描述
中断挂起,向对应位写 1 挂起相应中断号中断,写 0 无效。
读返回目前挂起状态。
29
Version 1.23
SWM201 系列
清除挂起寄存器 NVIC_ICPR
寄存器
偏移
类型
复位值
描述
NVIC_ICPR
0x180
R/W
0x00
清除挂起寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
CLRPEND
23
22
21
20
CLRPEND
15
14
13
12
CLRPEND
7
6
5
4
CLRPEND
位域
名称
31:0
CLRPEND
描述
中断挂起清除,向对应位写 1 清除相应中断号中断挂起标志,写 0 无效。
读返回目前挂起状态。
30
Version 1.23
SWM201 系列
IRQ0—IRQ3 优先级控制 NVIC_IPR0
寄存器
偏移
类型
复位值
描述
NVIC_IPR0
0x300
R/W
0x00
IRQ0—IRQ3 优先级控制
31
30
29
28
27
PRI_3
23
21
20
19
PRI_2
24
18
17
16
10
9
8
2
1
0
14
13
12
11
PRI_1
7
25
22
15
26
6
5
4
3
PRI_0
-
位域
名称
描述
31:30
PRI_3
IRQ3 优先级,0 为最高,3 为最低
29:24
-
-
23:22
PRI_2
IRQ2 优先级,0 为最高,3 为最低
21:16
-
-
15:14
PRI_1
IRQ1 优先级,0 为最高,3 为最低
13:8
-
-
7:6
PRI_0
IRQ0 优先级,0 为最高,3 为最低
5:0
-
-
31
Version 1.23
SWM201 系列
IRQ4—IRQ7 优先级控制 NVIC_IPR1
寄存器
偏移
类型
复位值
描述
NVIC_IPR1
0x304
R/W
0x00
IRQ4—IRQ7 优先级控制
31
30
29
28
27
PRI_7
23
21
20
19
PRI_6
24
18
17
16
10
9
8
2
1
0
14
13
12
11
PRI_5
7
25
22
15
26
6
5
4
3
PRI_4
-
位域
名称
描述
31:30
PRI_7
IRQ7 优先级,0 为最高,3 为最低
29:24
-
-
23:22
PRI_6
IRQ6 优先级,0 为最高,3 为最低
21:16
-
-
15:14
PRI_5
IRQ5 优先级,0 为最高,3 为最低
13:8
-
-
7:6
PRI_4
IRQ4 优先级,0 为最高,3 为最低
5:0
-
-
32
Version 1.23
SWM201 系列
IRQ8—IRQ11 优先级控制 NVIC_IPR2
寄存器
偏移
类型
复位值
描述
NVIC_IPR2
0x308
R/W
0x00
IRQ8—IRQ11 优先级控制
31
30
29
28
27
PRI_11
23
21
20
19
PRI_10
24
18
17
16
10
9
8
2
1
0
14
13
12
11
PRI_9
7
25
22
15
26
6
5
4
3
PRI_8
-
位域
名称
描述
31:30
PRI_11
IRQ11 优先级,0 为最高,3 为最低
29:24
-
-
23:22
PRI_10
IRQ10 优先级,0 为最高,3 为最低
21:16
-
-
15:14
PRI_9
IRQ9 优先级,0 为最高,3 为最低
13:8
-
-
7:6
PRI_8
IRQ8 优先级,0 为最高,3 为最低
5:0
-
-
33
Version 1.23
SWM201 系列
IRQ12—IRQ15 优先级控制 NVIC_IPR3
寄存器
偏移
类型
复位值
描述
NVIC_IPR3
0x30C
R/W
0x00
IRQ12—IRQ15 优先级控制
31
30
29
28
27
PRI_15
23
21
20
19
PRI_14
24
18
17
16
10
9
8
2
1
0
14
13
12
11
PRI_13
7
25
22
15
26
6
5
4
3
PRI_12
-
位域
名称
描述
31:30
PRI_15
IRQ15 优先级,0 为最高,3 为最低
29:24
-
-
23:22
PRI_14
IRQ14 优先级,0 为最高,3 为最低
21:16
-
-
15:14
PRI_13
IRQ13 优先级,0 为最高,3 为最低
13:8
-
-
7:6
PRI_12
IRQ12 优先级,0 为最高,3 为最低
5:0
-
-
34
Version 1.23
SWM201 系列
IRQ16—IRQ19 优先级控制 NVIC_IPR4
寄存器
偏移
类型
复位值
描述
NVIC_IPR4
0x310
R/W
0x00
IRQ16—IRQ19 优先级控制
31
30
29
28
27
PRI_19
23
21
20
19
PRI_18
24
18
17
16
10
9
8
2
1
0
14
13
12
11
PRI_17
7
25
22
15
26
6
5
4
3
PRI_16
-
位域
名称
描述
31:30
PRI_19
IRQ19 优先级,0 为最高,3 为最低
29:24
-
-
23:22
PRI_18
IRQ18 优先级,0 为最高,3 为最低
21:16
-
-
15:14
PRI_17
IRQ17 优先级,0 为最高,3 为最低
13:8
-
-
7:6
PRI_16
IRQ16 优先级,0 为最高,3 为最低
5:0
-
-
35
Version 1.23
SWM201 系列
IRQ20—IRQ23 优先级控制 NVIC_IPR5
寄存器
偏移
类型
复位值
描述
NVIC_IPR5
0x314
R/W
0x00
IRQ20—IRQ23 优先级控制
31
30
29
28
27
PRI_23
23
21
20
19
PRI_22
24
18
17
16
10
9
8
2
1
0
14
13
12
11
PRI_21
7
25
22
15
26
6
5
4
3
PRI_20
-
位域
名称
描述
31:30
PRI_23
IRQ23 优先级,0 为最高,3 为最低
29:24
-
-
23:22
PRI_22
IRQ22 优先级,0 为最高,3 为最低
21:16
-
-
15:14
PRI_21
IRQ21 优先级,0 为最高,3 为最低
13:8
-
-
7:6
PRI_20
IRQ20 优先级,0 为最高,3 为最低
5:0
-
-
36
Version 1.23
SWM201 系列
IRQ24—IRQ27 优先级控制 NVIC_IPR6
寄存器
偏移
类型
复位值
描述
NVIC_IPR6
0x318
R/W
0x00
IRQ24—IRQ27 优先级控制
31
30
29
28
27
PRI_27
23
21
20
19
PRI_26
24
18
17
16
10
9
8
2
1
0
14
13
12
11
PRI_25
7
25
22
15
26
6
5
4
3
PRI_24
-
位域
名称
描述
31:30
PRI_27
IRQ27 优先级,0 为最高,3 为最低
29:24
-
-
23:22
PRI_26
IRQ26 优先级,0 为最高,3 为最低
21:16
-
-
15:14
PRI_25
IRQ25 优先级,0 为最高,3 为最低
13:8
-
-
7:6
PRI_24
IRQ24 优先级,0 为最高,3 为最低
5:0
--
-
37
Version 1.23
SWM201 系列
IRQ28—IRQ31 优先级控制 NVIC_IPR6
寄存器
偏移
类型
复位值
描述
NVIC_IPR7
0x31C
R/W
0x00
IRQ28—IRQ31 优先级控制
31
30
29
28
27
PRI_31
23
21
20
19
PRI_30
24
18
17
16
10
9
8
2
1
0
14
13
12
11
PRI_29
7
25
22
15
26
6
5
4
3
PRI_28
-
位域
名称
描述
31:30
PRI_31
IRQ31 优先级,0 为最高,3 为最低
29:24
-
-
23:22
PRI_30
IRQ30 优先级,0 为最高,3 为最低
21:16
-
-
15:14
PRI_29
IRQ29 优先级,0 为最高,3 为最低
13:8
-
-
7:6
PRI_28
IRQ28 优先级,0 为最高,3 为最低
5:0
-
-
38
Version 1.23
SWM201 系列
6.3
系统定时器(SYSTIC)
6.3.1
概述
CortexTM-M0 核内部提供了一个 24 位系统定时器。该定时器使能后装载当前值寄存器(VAL)
内数值并向下递减至 0,并在下个时钟沿重新加载重载寄存器(LOAD)内数值。计数器再次递
减至 0 时,计数器状态寄存器(CTRL)中标识位 COUNTERFLAG 置位,读该位可清零。
复位后,VAL 寄存器与 LOAD 寄存器值均未知,因此使用前需初始化,向 VAL 写入任意值,清
零同时复位状态寄存器,保证装载值为 LOAD 寄存器中数值。
当 LOAD 寄存器值为 0 时,重新装载后计时器保持为 0,并停止重新装载。
细节请参阅“CortexTM-M0 技术参考手册”及“ARM® CoreSight 技术参考手册”。
6.3.2
特性
⚫
24 位系统定时器
⚫
递减
⚫
写清零
39
Version 1.23
SWM201 系列
6.3.3
模块结构框图
RELOAD
ENABLE
HCLK
24-bit Down
Counter
TICKINT
=0
COUNTFLAG
IRQ
CURRENT
图 6-1 systic 模块结构图
40
Version 1.23
SWM201 系列
6.3.4
功能描述
该定时器使能后装载当前值寄存器(VAL)内数值并向下递减至 0,并在下个时钟重新加载重载
寄存器(LOAD)内数值。计数器再次递减至 0 时,计数器状态寄存器(CTRL)中的标志位
COUNTERFLAG 置位,读该位可清零。
复位后,VAL 寄存器与 LOAD 寄存器值均未知,因此使用前需初始化,向 VAL 写入任意值,清
零同时复位状态寄存器,保证装载值为 LOAD 寄存器中数值。
当 LOAD 寄存器值为 0 时,重新装载后计时器保持为 0,并停止重新装载。
该计数器可用作实时系统的滴答定时器或一个简单的计数器。
SysTick 计数时序图如图 6-2 所示。
RELOAD
Current
Write
IRQ
图 6-2 SysTick 计数时序图
41
Version 1.23
SWM201 系列
6.3.5
名称
SYSTIC
寄存器映射
偏移
类型
复位值
描述
BASE:0xE000E010
CTRL
0x0
R/W
0x04
状态寄存器
LOAD
0x4
R/W
—
重载寄存器
VAL
0x8
R/W
—
当前值寄存器
42
Version 1.23
SWM201 系列
寄存器描述
6.3.6
状态寄存器 CTRL
寄存器
偏移
类型
复位值
描述
CTRL
0x0
R/W
0x04
状态寄存器
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
COUNTERFLAG
12
11
10
9
8
3
2
1
0
CLKSOURCE
TINKINT
ENABLE
7
6
5
4
-
位域
名称
描述
31:17
-
-
16
COUNTERFLAG
计数器递减到 0 且该过程中本寄存器未被读取,本位返回 1,RO
15:3
-
SysTick 定时器时钟源:
2
CLKSOURCE
0:参考时钟
1:系统时钟
1
TINKINT
0
ENABLE
1:中断触发使能
0:中断触发禁能
1:定时器使能
0:定时器禁能
43
Version 1.23
SWM201 系列
重载寄存器 LOAD
寄存器
偏移
类型
复位值
描述
LOAD
0x4
R/W
—
重载寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
RELOAD
15
14
13
12
RELOAD
7
6
5
4
RELOAD
位域
名称
描述
31:24
-
-
23:0
RELOAD
计数器达到 0 时加载本寄存器值,写 0 终止继续加载
44
Version 1.23
SWM201 系列
当前值寄存器 VAL
寄存器
偏移
类型
VAL
0x8
R/W
30
29
31
复位值
描述
当前值寄存器
—
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
CURRENT
15
14
13
12
CURRENT
7
6
5
4
CURRENT
位域
名称
描述
31:24
-
-
23:0
CURRENT
读操作返回当前计数器值,写操作清 0 该寄存器,同时清除 COUNTERFLAG 位
45
Version 1.23
SWM201 系列
6.4
系统控制器
6.4.1
概述
CrotexTM-M0 系统控制器主要负责内核管理,包括 CPUID,内核核资源中断优先级设置及内核电
源管理。
更多细节请参阅“CortexTM-M0 技术参考手册”及“ARM®CoreSight 技术参考手册”。
6.4.2
特性
⚫
CPUID
⚫
内核电源管理
⚫
内核核资源中断优先级设置
46
Version 1.23
SWM201 系列
6.4.3
功能描述
系统控制器主要负责内核管理,包括 CPUID,内核核资源中断优先级设置及内核电源管理,具
体操作详见寄存器描述。
47
Version 1.23
SWM201 系列
6.4.4
寄存器映射
名称
SYSCTRL
偏移
类型
复位值
描述
BASE:0xE000ED00
CPUID
0x00
RO
0x410CC200
CPUID 寄存器
ICSR
0x04
R/W
0x00000000
中断控制状态寄存器
AIRCR
0x0C
R/W
SCR
0x10
R/W
0x00000000
系统控制寄存器
SHPR2
0x1C
R/W
0x00000000
系统优先级控制寄存器 2
SHPR3
0x20
R/W
0x00000000
系统优先级控制寄存器 3
中断与复位控制寄存器
0xFA050000
48
Version 1.23
SWM201 系列
寄存器描述
6.4.5
CPUID 寄存器 CPUID
寄存器
偏移
类型
复位值
描述
CPUID
0x00
RO
0x410CC200
CPUID 寄存器
31
30
29
28
27
26
25
24
18
17
16
IMPLEMENTER
23
22
21
20
19
PART
15
14
13
12
11
10
9
8
3
2
1
0
PARTNO
7
6
5
4
PARTNO
REVISION
位域
名称
描述
31:24
IMPLEMENTER
ARM 分配执行码
23:20
-
-
19:16
PART
ARMV6-M
15:4
PARTNO
读返回 0xC20
3:0
REVISION
读返回 0x00
49
Version 1.23
SWM201 系列
中断控制状态寄存器 ICSR
寄存器
偏移
类型
复位值
描述
ICSR
0x04
R/W
0x00000000
中断控制状态寄存器
30
29
31
NMIPENDSET
-
23
22
-
ISRPENDING
15
14
28
27
26
25
24
PENDSVSET
PENDSVCLR
PENDSTSET
PENDSTCLR
-
20
19
18
17
16
21
13
12
VECTPENDING
11
10
VECTPENDING
7
6
名称
8
1
0
5
4
3
-
位域
9
2
VECTACTIVE
描述
挂起 NMI 中断位
写:
0:没有效果
1:将 NMI 异常状态更改为挂起。
读:
31
NMIPENDSET
0 = NMI 异常未挂起
1 = NMI 异常待定。
因为 NMI 是优先级最高的异常,所以通常处理器一检测到该位写入 1 就进入 NMI
异常处理程序。 输入处理程序然后将此位清除为 0.这意味着只有在处理器执行该
处理程序时重新置位 NMI 信号时,NMI 异常处理程序才会读取此位。
30:29
-
挂起 PendSV 中断,1 有效
写:
0:没有效果
28
PENDSVSET
1:将 PendSV 异常状态更改为挂起。
读:
0:PendSV 异常未挂起
1:PendSV 异常处于待处理状态。
将 1 写入此位是将 PendSV 异常状态设置为挂起的唯一方法。
写 1 清 PendSV 中断,仅写有效,WO
27
PENDSVCLR
0:没有效果
1:从 PendSV 异常中删除暂挂状态。
50
Version 1.23
SWM201 系列
挂起 SysTick 异常中断
写:
0:没有效果
26
PENDSTSET
1:将 SysTick 异常状态更改为挂起。
读:
0:SysTick 异常未挂起
1:SysTick 异常处于待处理状态。
如果您的设备未实现 SysTick 定时器,则该位保留。
25
PENDSTCLR
写 1 清 SysTick 中断,仅写有效,WO
24:23
-
-
22
ISRPENDING
外部配置中断是否挂起,RO
21:18
-
-
17:12
VECTPENDING
优先级最高的挂起异常向量号,RO
0:没有待处理的异常
其他:向量号
11:6
-
0:线程模式
5:0
VECTACTIVE
其它:当前执行异常处理向量号
RO
51
Version 1.23
SWM201 系列
中断与复位控制寄存器 AIRCR
寄存器
偏移
类型
AIRCR
0x0C
WO
0xFA050000
30
29
28
31
复位值
描述
中断与复位控制寄存器
27
26
25
24
19
18
17
16
11
10
9
8
2
1
0
VECTORKEY
23
22
21
20
VECTORKEY
15
14
13
12
ENDIANESS
7
6
5
4
3
VECTCLRACTIV
SYSRESETREQ
E
-
位域
名称
-
描述
注册码:
31:16
VECTORKEY
读为未知
在写入时,将 0x05FA 写入 VECTKEY,否则将忽略写入。
数据字节模式
15
ENDIANESS
0:小端
1:大端
14:3
-
-
2
SYSRESETREQ
写 1 时复位芯片,复位时自动清除
1
VECTCLRACTIVE
置 1 时清除所有异常活动状态
0
-
-
52
Version 1.23
SWM201 系列
系统控制寄存器 SCR
寄存器
偏移
类型
复位值
描述
SCR
0x10
R/W
0x00000000
系统控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
4
3
2
1
0
SWVONPEND
-
SLEEPDEEP
SLEEPONEXIT
-
23
22
21
20
-
15
14
13
12
-
7
6
5
-
位域
名称
描述
31:5
-
-
4
SWVONPEND
使能后,可将中断挂起过程作为唤醒事件
3
-
-
2
SLEEPDEEP
深睡眠提醒
1
SLEEPONEXIT
置 1 后,内核从异常状态返回后进入睡眠模式
0
-
-
53
Version 1.23
SWM201 系列
系统优先级控制寄存器 2 SHPR2
寄存器
偏移
类型
复位值
描述
SHPR2
0x1C
R/W
0x00000000
系统优先级控制寄存器 2
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
PRI_11
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
31:30
PRI_11
29:0
-
描述
系统处理器优先级 11:SVCall
0 为最高,3 为最低
-
54
Version 1.23
SWM201 系列
系统优先级控制寄存器 3 SHPR3
寄存器
偏移
类型
复位值
描述
SHPR3
0x20
R/W
0x00000000
系统优先级控制寄存器 3
30
29
31
28
27
26
25
24
18
17
16
11
10
9
8
3
2
1
0
PRI_15
23
22
21
20
19
PRI_14
15
14
13
12
-
7
6
5
4
-
位域
名称
31:30
PRI_15
29:24
-
23:22
PRI_14
21:0
-
描述
系统处理器优先级 15:SysTick
0 为最高,3 为最低
系统处理器优先级 14:PendSV
0 为最高,3 为最低
-
55
Version 1.23
SWM201 系列
6.5
系统管理(SYSCON)
6.5.1
概述
系统管理为整个芯片提供时钟源,包括系统时钟切换、外设时钟门控、工作模式选择、数据备
份以及版本控制等功能。还可通过单独时钟的开或关,时钟源选择来进行功耗控制。
6.5.2
特性
⚫
时钟控制
⚫
工作模式选择
⚫
休眠使能
⚫
RTC 唤醒设置
⚫
端口唤醒设置
⚫
BOD 掉电检测控制
⚫
复位控制及状态
⚫
UID
56
Version 1.23
SWM201 系列
6.5.3
模块结构框图
SYS
DIV
CORDIC
30/60MHz HRC
AHB
/8
CPU
APB1
XIN
XOUT
GPIO
SYS
4-32MHz XTAL
TIMR
CLK_DIVx
UART
CLK
PWM
32KHz LRC
/2
APB2
PORT
X32K_IN
X32K_OUT
GPIOM
XTAL_32K
I2C
WDT
HRC
XTAL
HRC/4
ADC
XTAL/4
HRC/8
XTAL/8
CLKSEL.ADC
图 6-3 时钟结构框图
57
Version 1.23
SWM201 系列
6.5.4
功能描述
时钟控制
SWM201 有 4 个时钟源可供使用:
⚫
内部高频振荡器(RCHF):内部高频振荡器为片内时钟源,无需连接任何外部器件。
频率为 30MHz 或 60MHz,通过 HRCCR 寄存器进行切换,可提供较精确的固定频率时
钟.
⚫
内部低频振荡器(RCLF):内部低频振荡器为片内时钟源,无需连接任何外部器件。
频率为 32KHz。
⚫
外部振荡器(XTAH)
:外部振荡器可接 4~32MHz 频率.
⚫
外部低频振荡器(XTAL):外部低频振荡器,支持 32.768KHz 时钟接入
对于主时钟选择,通过 CLKSEL 寄存器 SYSCLK 位,选择内部高频时钟或其他时钟。
CLKSEL 寄存器 SYSCLK 位,选择内部高频时钟(RCHF),时钟源为 30MHz 或 60MHz(通过
HRCCR 寄存器切换),此时 CLKSEL 寄存器 SRCDIV 位无效。
CLKSEL 寄存器 SYSCLK 位,选择 SRCCLK,通过 SRCCLK 位可选择时钟源为片内高频 RC 振荡器
(30/60MHz)、片外高频晶体振荡器(4~32MHz)
、片外低频晶体振荡器(32.768KHz)、片内低
频 RC 振荡器(32KHz)
,此时 CLKSEL 寄存器 SRCDIV 位有效:
⚫
CLKSEL 寄存器 BIT[1] = 0 时,选择内部 RCHF 时钟不分频
⚫
CLKSEL 寄存器 BIT[1] = 1 时,选择内部 RCHF 时钟 8 分频
当 CLKSEL 寄存器 SRCCLK 选择片外时钟。选择片外时钟前,需将相应引脚输入使能通过 INEN_x
寄存器打开,并通过寄存器 PORTx_FUNC 将相应引脚换至外接晶振功能,且将 XTALCR 寄存器中
外接晶振使能位使能。完成上述操作后,需根据外部晶振起振时间,使用软件产生一定时间,
确保晶振稳定震荡,最后将 CLKSEL 寄存器中相应位设置为片外震荡器。
注意:执行时钟切换时,需要保证目标时钟使能及通路打开,在 30MHz 与 60MHz 相互切换
时,需要先切换至 32KHZ 时钟
对于 ADC 时钟,通过 CLKSEL 寄存器 ADC_ SRC、ADCDIV、ADCCLK0、ADCCLK1 配置:
通过 ADCCLK0 选择 ADCCLK0 时钟,ADCCLK0 选择片内高频 RC 振荡器(RCHF:30/60MHz)、片
外高频晶体振荡器(4~32MHz)。可通过 ADCDIV 和 ADC_ SRC 选择 SARADC 时钟源分频,可选
不分频、4 分频、8 分频。
内部 RCHF 及 RCLF 可通过 HRCCR 寄存器 ON 位与 LRCCR 寄存器 EN 位进行关闭操作,关闭前需
确认时钟已切换,并未使用即将执行关闭操作的时钟。
外设时钟控制功能可控制外设时钟打开及关闭,如:
⚫
GPIO
⚫
SARADC
58
Version 1.23
SWM201 系列
⚫
DIV
⚫
I2C
⚫
PWM
⚫
TIMER
⚫
WDT
⚫
UART
⚫
RTC
上电后,以上模块均处于时钟关闭状态,需要通过设置 CLKEN 寄存器进行时钟使能,否则访问
对应模块寄存器操作无效。
休眠与唤醒设置
SWM201 系列提供浅睡眠(SLEEP)模式及深睡眠(STOP)模式,通过 SLEEP 寄存器进行使能操
作。
深睡眠模式
深睡眠模式只支持指定 IO WAKEUP0 端口唤醒。
端口唤醒:
具体流程如下:
⚫
确认 RCLF(32KHZ 时钟)为使能状态
⚫
将需要执行唤醒操作的引脚对应 PxWKEN 寄存器及 INEN_x 寄存器指定位配置为 1
⚫
使能相应端口对应位输入使能及唤醒功能
⚫
SLEEP 寄存器 STOP 位置 1 后,芯片进入深睡眠模式
⚫
唤醒端口 WAKUP,当 WAKUP 端口对应位产生下降沿时,芯片被唤醒,继续执行
程序。
⚫
唤醒后,端口对应 PxWKSR 寄存器对应位被置 1,可通过对该位写 1 进行清除
(该位对进入休眠无影响)
深睡眠模式下,芯片进入掉电状态,所有时钟均关闭,RAM 内数据也会丢失。通过向
SLEEP 寄存器 BIT[1]置 1,且 wakeup 引脚为高时,芯片进入睡眠模式。只能通过指定
wakeup 引脚唤醒芯片,唤醒后,芯片相当于重新上电。
浅睡眠模式
浅睡眠模式下,芯片进入保持状态,所有时钟关闭,在功耗较低的前提下保持数据。可以通过
配置任意 I/O 引脚进行唤醒操作,也可以通过 RTC 定时器进行唤醒操作,或者两种唤醒操作同
时存在。IO 唤醒操作同样为下降沿唤醒。唤醒后,程序从睡眠使能语句继续执行。
59
Version 1.23
SWM201 系列
在 sleep 之前,需要将时钟切换为内部高频。
注意:浅睡眠模式使能前需保证 RCLF(32KHZ)时钟为使能状态,且将所有不需要唤醒操作的
IO 输入使能关闭(PORTCON 模块中 INEN_x 寄存器)。
RTC 唤醒
浅睡眠模式下,通过 SYSCON 模块中 RTCWKSR 寄存器及 RTCWKCR 寄存器进行定时器唤醒
操作。流程如下:
⚫
关闭所有不需要唤醒功能的 IO 输入使能(PORTCON 模块中 INEN_x 寄存器)
⚫
配置 RTC 时钟源及唤醒时间
⚫
使能唤醒源,设置 RTCWKCR 寄存器 EN 位为 1 (使能前需通过写 1 清除 TWGFLG
寄存器 FLG 位)
⚫
使能 RTC,RTC 开始计数
⚫
SLEEP 寄存器 SLEEP 位置 1 后,芯片进入浅睡眠模式,RTC 计到设置值后唤醒芯
片
⚫
唤醒后,RTCWKSR 寄存器 FLAG 位为 1(可通过对该位写 1 进行清除)
端口唤醒
浅睡眠模式下,可指定任意 IO 进行唤醒操作。示意图如图 6-4 所示。
具体流程如下:
⚫
确认 RCLF(32KHZ 时钟)为使能状态
⚫
将需要执行唤醒操作的引脚对应 PxWKEN 寄存器及 INEN_x 寄存器指定位配置为
1,使能相应端口对应位输入使能及唤醒功能
⚫
SLEEP 寄存器 BIT[0] = 1 后,芯片进入浅睡眠模式
⚫
唤醒端口可配置为 GPIO 端口,以及 UART 模块 RX 端口或 I2C 模块 DAT 端口,当
配置端口对应位产生下降沿时,芯片被唤醒,继续执行程序。使用通讯接口进行
唤醒时,需保证通讯采样速率低于 32KHZ,避免出现数据丢失现象
⚫
唤醒后,端口对应 PxWKSR 寄存器对应位被置 1,可通过对该位写 1 进行清除
(该位对进入休眠无影响)
注意:所有配置为唤醒功能的引脚,执行唤醒过程时只能有一个产生下降沿,对应引脚必
须保证为高电平。为保证功耗最低,需确认所有输入使能引脚无悬空输入状态
60
Version 1.23
SWM201 系列
CLK
SLEEP
PIN1
PIN2
图 6-4 端口唤醒示意图
BOD 掉电检测
芯片提供了低电压中断及复位功能,通过 BODCR 寄存器进行配置。
通过配置寄存器 BODCR,可选择电压低压 1.7V/1.9V/2.1V/2.7V/3.5V 产生复位,当电压低于配置
电压时,将产生低压复位,使整个芯片处于复位状态。该功能为常开功能。
通过配置寄存器 BODCR,可选择电压低压 1.9V/2.1V/2.3V/2.5V/2.7V/3.5V/4.1V 产生中断,当电
压低于配置电压时,将产生 BOD 中断信号,通过查询 BODSR 寄存器 IF 位可以获取状态。
IF 位为中断状态位,当芯片供电电压从配置电压以上变为低于配置电压时,该位将被置 1(沿
触发)。此时若 IE 位为非屏蔽状态(IE = 1),则 NVIC 控制器将接收到 BOD 中断。该中断可通
过向 IF 位写 1 清除。清除后,即使电压低于配置电压,IF 位也不会发生变化,也不会再次产生
中断,直至供电电压再次出现从配置电压以上至配置电压以下的下降沿。
随机数发生器
芯片提供了一个随机数发生器,可以供 64 位随机数供使用,可通过配置 PRNGCR 寄存器、
PRNGDL 寄存器、PRNGDH 寄存器使用。
使用流程如下:
⚫
配置 PRNGCR 寄存器 CLK 位,配置时钟工作模式
⚫
配置 PRNGCR 寄存器 CLKEN 位,使随机数发生器正常工作
⚫
查询 PRNGCR 寄存器 RDY 位为 1 时,表明随机数准备完成,可将 PRNGL 和
PRNGH 两个寄存器一并读出
⚫
PRNGL 和 PRNGH 组成 64 位随机数
用户 ID
芯片可以提供唯一 96BIT ID 号用于加密使用。
61
Version 1.23
SWM201 系列
6.5.5
寄存器映射
名称
SYSCON
偏移
类型
复位值
描述
BASE:0x40000000
CLKSEL
0x00
R/W
0x01
时钟选择控制寄存器
CLKDIVX_ON
0x04
R/W
0x00
源时钟控制寄存器
CLKEN0
0x08
R/W
0x00
时钟门控控制寄存器 0
CLKEN1
0x0C
R/W
0x00
时钟门控控制寄存器 1
SLEEP
0x10
R/W
0x00
系统模式控制寄存器
RSTSR
0x024
R/W1C
0x00
芯片复位状态寄存器
RTCWKCR
0x30
R/W
0x00
RTC 唤醒使能控制寄存器
RTCWKSR
0x34
R/W1C
0x00
RTC 唤醒标志寄存器
CHIP_ID0
0x80
RO
—
芯片 96 位 ID 寄存器 0
CHIP_ID1
0x84
RO
—
芯片 96 位 ID 寄存器 1
CHIP_ID2
0x88
RO
—
芯片 96 位 ID 寄存器 2
BACKUP0
0x090
R/W
0x00
数据备份寄存器 0
BACKUP1
0x094
R/W
0x00
数据备份寄存器 1
BACKUP2
0x098
R/W
0x00
数据备份寄存器 2
BACKUP3
0x09c
R/W
0x00
数据备份寄存器 3
PRNGCR
0x0d0
R/W
0x00
随机数控制寄存器
PRNGDL
0x0d4
RO
0x00
随机数输出寄存器低 32 位数据
PRNGDH
0x0d8
RO
0x00
随机数输出寄存器高 32 位数据
PAWKEN
0x100
R/W
0x00
PORTA 唤醒使能控制寄存器
PBWKEN
0x104
R/W
0x00
PORTB 唤醒使能控制寄存器
PMWKEN
0x120
R/W
0x00
PORTM 唤醒使能控制寄存器
PAWKSR
0x130
R/W1C
0x00
PORTA 唤醒状态寄存器
PBWKSR
0x134
R/W1C
0x00
PORTB 唤醒状态寄存器
PMWKSR
0x150
R/W1C
0x00
PORTM 唤醒状态寄存器
IOFILT0
0x400
R/W
0x00
IO 滤波窗口时间配置寄存器 0
IOFILT1
0x404
R/W
0x00
IO 滤波窗口时间配置寄存器 1
PRSTEN
0x720
R/W
0x0000_0000
芯片复位屏蔽寄存器
PRSTR0
0x724
R/W
0x0000_0000
芯片复位配置寄存器 0
PRSTR1
0x728
R/W
0x0000_0000
芯片复位配置寄存器 1
ANACON
BASE:0400AA000
HRCCR
0x00
R/W
0x1
内部高频 RC 振荡器配置寄存器
BODCR
0x10
R/W
0x00
BOD 控制寄存器
BODSR
0x14
R/W1C
0x00
BOD 中断状态寄存器
XTALCR
0x20
R/W
0x00
晶体振荡器控制寄存器
XTALSR
0x24
R/W1C
0x00
晶体振荡器状态寄存器
LRCCR
0x050
R/W
0x0000_0001
芯片内部低频 RC 配置寄存器
62
Version 1.23
SWM201 系列
寄存器描述
6.5.6
时钟选择控制寄存器 CLKSEL
寄存器
偏移
类型
复位值
描述
CLKSEL
0x00
R/W
0x01
时钟选择控制寄存器
30
29
31
28
27
26
25
23
22
21
WKUP
20
15
14
13
RTCTRM
7
IOFILT
12
19
18
17
16
ADC_SRC
ADCDIV
-
ADCCLK0
11
10
9
8
1
0
CLKDIVX
SYSCLK
WDT
6
5
4
3
RTC
位域
名称
描述
31:25
-
-
24
2
SRCCLK
SLEEP 唤醒时钟选择
24
WKUP
1:片外低频晶体振荡器(32.768KHz)
0:内部低频 RC 振荡器(32KHz)
23:20
-
SARADC 采样时钟输出选择,对所有 SARADC 均有效
1:选择 ADCDIV 作为 ADC 时钟输入
19
ADC_SRC
0:选择 ADCCLKx 作为 ADC 时钟输入
注:SARADC 采样时钟在进行不同源选择时,必须先将 SARADC 时钟使能关闭,再
进行时钟源切换。
SARADC 时钟源分频选择,对所有 SARADC 均有效
18
ADCDIV
1:时钟源的 8 分频
0:时钟源的 4 分频
17
-
SARADC 时钟源选择 0,对所有 SARADC 均有效
16
ADCCLK0
1:片外高频晶体振荡器(4~32MHz)
0:片内高频 RC 振荡器(30/60MHz)
RTC TRIM 参考时钟选择
00:片外高频晶体振荡器(xtah)
15:14
RTCTRM
01:xtah/2
10:xtah/4
11:xtah/8
63
Version 1.23
SWM201 系列
WDT 计数时钟选择
11:片外低频晶体振荡器(32.768KHz)
10:片内低频 RC 振荡器(32KHz)
13:12
WDT
01:片外高频晶体振荡器(4~32MHz)
00:片内高频 RC 振荡器(30/60MHz)
注:WDT 计数时钟在进行不同源选择时,必须先将 WDT 使能关闭,再进行时钟源
切换。
11:8
-
滤波时钟选择
7:6
IOFILT
0x:片内高频 RC 振荡器(30/60MHz)
10:片外高频晶体振荡器(4~32MHz)
11:片内低频 RC 振荡器(32KHz)
32K 时钟选择
5
RTC
1:片外低频晶体振荡器(32.768KHz)
0:内部低频 RC 振荡器(32KHz)
SRCCLK 时钟选择
1xx:片内高频 RC 振荡器(RCHF:30/60MHz)
4:2
SRCCLK
011:片外高频晶体振荡器(XTAH:4~32MHz)
010:片外低频晶体振荡器(XTAL:32.768KHz)
001:保留
000:片内低频 RC 振荡器(RCLF:32KHz)
SRCCLK 分频选择
1
CLKDIVx
1:SRC_CLK/8 分频
0:SRC_CLK
系统时钟选择
1:RCHF(30/60MHz)
0
SYSCLK
0:SRCCLK
注:更改 SRCCLK 或 DIV 设置时,需要将此位先切换为 1,再进行时钟源或分频切
换
64
Version 1.23
SWM201 系列
源时钟选择控制寄存器 CLKDIVX_ON
寄存器
偏移
类型
复位值
描述
CLKDIVX_ON
0x04
R/W
0x00
源时钟控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
CLKDIV_ON
DIVCLK 时钟门控
1:关闭
0:打开
注:更改 DIV 时,需保证此位为 1,在关闭状态下进行更改
0
CLKDIV_ON
注 2:系统时钟选择不同时钟切换时,若需要在 SRCDIVCLK 或 SRCCLK 内部时钟源
之间进行切换,则系统时钟需要先切换回 RCHF,然后将该位置为 1 后再进行切
换。
注 3:若系统时钟已选择了 RCHF 作为时钟源,并需要改变 RCHF 频率时,系统时
钟需要先切至其他时钟源,然后再改变 RCHF 频率,最后再将系统时钟切换回
RCHF。
65
Version 1.23
SWM201 系列
时钟门控控制寄存器 0 CLKEN0
寄存器
偏移
类型
复位值
描述
CLKEN0
0x08
R/W
0x00
时钟门控控制寄存器 0
30
29
31
28
27
23
22
-
21
20
DIV
CORDIC
19
26
25
24
SDADC0
ANAC
-
18
17
16
9
8
-
15
14
13
12
11
10
I2C0
-
SPI0
PWM
TIMER
WDT
7
6
5
4
3
2
UART1
UART0
-
GPIOM
-
位域
名称
描述
31
-
-
30:27
-
-
26
SARADC0
SARADC_CTRL0 时钟使能
25
ANAC
ANACON 时钟使能
24:22
-
-
21
DIV
DIVIDER 时钟使能
20
CORDIC
CORDIC 时钟使能
19:16
-
-
15
I2C0
I2C0 时钟使能
14
-
-
13
SPI0
SPI0 时钟使能
12
PWM
PWM 时钟使能
11
TIMER
TIMER 时钟使能
10
WDT
WDT 时钟使能
9:8
-
-
7
UART1
UART1 时钟使能
6
UART0
UART0 时钟使能
5
-
-
4
GPIOM
GPIOM 时钟使能
3:2
-
-
1
GPIOB
GPIOB 时钟使能
0
GPIOA
GPIOA 时钟使能
1
0
GPIOB
GPIOA
66
Version 1.23
SWM201 系列
时钟门控控制寄存器 1 CLKEN1
寄存器
偏移
类型
复位值
描述
CLKEN1
0x0C
R/W
0x00
时钟门控控制寄存器 1
30
29
31
28
27
-
26
25
QEI
18
24
-
23
22
21
20
19
17
16
-
BTIMR
-
IOFILT
RTC
15
14
13
12
11
10
9
8
3
2
1
0
-
7
6
5
4
-
位域
名称
描述
31:27
-
-
26
QEI
QEI 时钟使能
23:25
-
-
22
BTIMR
BTIMR 时钟使能
21
-
-
20
IOFILT
IOFILT 时钟使能
19
RTC
RTC 时钟使能
18:0
-
-
67
Version 1.23
SWM201 系列
系统模式控制寄存器 SLEEP
寄存器
偏移
类型
复位值
描述
SLEEP
0x10
R/W
0x00
系统模式控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
STOP
SLEEP
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:2
-
-
1
STOP
将该位置 1 后,系统将进入 STOP 模式
0
SLEEP
将该位置 1 后,系统将进入 SLEEP 模式
68
Version 1.23
SWM201 系列
芯片复位状态寄存器 RSTSR
寄存器
偏移
类型
复位值
描述
RSTSR
0x024
R/W1C
0x00
芯片复位状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
WDT
POR
23
22
21
20
-
15
14
13
12
-
7
6
5
-
4
IAA
位域
名称
描述
31:5
-
-
-
非法地址访问复位状态标志寄存器
4
IAA
1:表示出现非法地址访问复位
写 1 清零
3:2
-
WDT 复位状态标志寄存器,写 1 清零
1
WDT
1:出现 WDT 复位
0:未出现 WDT 复位
POR 复位状态标志寄存器,写 1 清零
0
POR
1:出现 POR 复位
0:未出现 POR 复位
69
Version 1.23
SWM201 系列
RTC 唤醒使能控制寄存器 RTCWKCR
寄存器
偏移
类型
复位值
描述
RTCWKCR
0x30
R/W
0x00
RTC 唤醒使能控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
EN
基本 RTC 唤醒使能寄存器
0
EN
1:使能基本 RTC 唤醒功能
0:禁止基本 RTC 唤醒功能
70
Version 1.23
SWM201 系列
RTC 唤醒标志寄存器 RTCWKSR
寄存器
偏移
类型
复位值
描述
RTCWKSR
0x34
R/W1C
0x00
RTC 唤醒标志寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
FLAG
基本 RTC 唤醒标志,写 1 清除
0
FLAG
0:未产生唤醒标志
1:已产生唤醒标志
71
Version 1.23
SWM201 系列
芯片 96 位 ID 寄存器 0 CHIP_ID0
寄存器
偏移
类型
复位值
描述
CHIP_ID0
0x80
RO
—
芯片 96 位 ID 寄存器 0
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
ID0
23
22
21
20
ID0
15
14
13
12
ID0
7
6
5
4
ID0
位域
名称
描述
31:0
ID0
芯片 96 位 ID 寄存器 0
72
Version 1.23
SWM201 系列
芯片 96 位 ID 寄存器 1 CHIP_ID1
寄存器
偏移
类型
复位值
描述
CHIP_ID1
0x84
RO
—
芯片 96 位 ID 寄存器 1
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
ID1
23
22
21
20
ID1
15
14
13
12
ID1
7
6
5
4
ID1
位域
名称
描述
31:0
ID1
芯片 96 位 ID 寄存器 1
73
Version 1.23
SWM201 系列
芯片 96 位 ID 寄存器 2 CHIP_ID2
寄存器
偏移
类型
复位值
描述
CHIP_ID2
0x88
RO
—
芯片 96 位 ID 寄存器 2
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
ID2
23
22
21
20
ID2
15
14
13
12
ID2
7
6
5
4
ID2
位域
名称
描述
31:0
ID2
芯片 96 位 ID 寄存器 2
74
Version 1.23
SWM201 系列
数据备份寄存器 0 BACKUP0
寄存器
偏移
类型
复位值
描述
BACKUP0
0x090
R/W
0x00
数据备份寄存器 0
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
BACKUP0
23
22
21
20
BACKUP0
15
14
13
12
BACKUP0
7
6
5
4
BACKUP0
位域
名称
描述
31:0
BACKUP0
数据备份寄存器 0
75
Version 1.23
SWM201 系列
数据备份寄存器 1 BACKUP0
寄存器
偏移
类型
复位值
描述
BACKUP1
0x094
R/W
0x00
数据备份寄存器 1
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
BACKUP1
23
22
21
20
BACKUP1
15
14
13
12
BACKUP1
7
6
5
4
BACKUP1
位域
名称
描述
31:0
BACKUP1
数据备份寄存器
76
Version 1.23
SWM201 系列
数据备份寄存器 2 BACKUP0
寄存器
偏移
类型
复位值
描述
BACKUP2
0x098
R/W
0x00
数据备份寄存器 2
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
BACKUP2
23
22
21
20
BACKUP2
15
14
13
12
BACKUP2
7
6
5
4
BACKUP2
位域
名称
描述
31:0
BACKUP2
数据备份寄存器
77
Version 1.23
SWM201 系列
数据备份寄存器 3 BACKUP3
寄存器
偏移
类型
复位值
描述
BACKUP3
0x09c
R/W
0x00
数据备份寄存器 3
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
BACKUP3
23
22
21
20
BACKUP3
15
14
13
12
BACKUP3
7
6
5
4
BACKUP3
位域
名称
描述
31:0
BACKUP3
数据备份寄存器 3
78
Version 1.23
SWM201 系列
随机数控制寄存器 PRNGCR
寄存器
偏移
类型
复位值
描述
PRNGCR
0x0d0
R/W
0x00
随机数控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
RDY
4
3
-
位域
名称
描述
31:9
-
-
8
RDY
7:3
-
2
1
0
CLKEN
CLK
SEEDCLR
PRNG 随机数准备标志,RO
当检测到该信号为 1 时,则可以读取 PRNG_DATAL 和 PRNG_DATAH
PRNG 随机数发生器时钟使能
2
CLKEN
0:所有时钟无效
1:正常工作
PRNG 随机数发生器时钟配置
1
CLK
0:三个时钟工作模式(RCHF、RCLF、XTALH)
;
1:两个时钟工作模式(RCHF、RCLF)
PRNG 种子清零寄存器
0
SEEDCLR
1:种子清零。此时随机数发生器不工作
0:随机数发生器工作
注:该信号如果有效,则其为高的时间不能短于 RCLF 一个周期。
79
Version 1.23
SWM201 系列
随机数输出寄存器低 32 位数据 PRNGDL
寄存器
偏移
类型
复位值
描述
PRNGDL
0x0d4
RO
0x00
随机数输出寄存器低 32 位数据
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
DATAL
23
22
21
20
DATAL
15
14
13
12
DATAL
7
6
5
4
DATAL
位域
名称
描述
31:0
DATAL
随机数输出寄存器低 32 位数据
80
Version 1.23
SWM201 系列
随机数输出寄存器高 32 位数据 PRNGDH
寄存器
偏移
类型
复位值
描述
PRNGDH
0x0d8
RO
0x00
随机数输出寄存器高 32 位数据
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
DATAH
23
22
21
20
DATAH
15
14
13
12
DATAH
7
6
5
4
DATAH
位域
名称
描述
31:0
DATAH
随机数输出寄存器高 31 位数据
81
Version 1.23
SWM201 系列
PORTA 唤醒使能控制寄存器 PAWKEN
寄存器
偏移
类型
复位值
描述
PAWKEN
0x100
R/W
0x00
PORTA 唤醒使能控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PAWKEN15
PAWKEN14
PAWKEN13
PAWKEN12
PAWKEN11
PAWKEN10
PAWKEN9
PAWKEN8
7
6
5
4
3
2
1
0
PAWKEN7
PAWKEN6
PAWKEN5
PAWKEN4
PAWKEN3
PAWKEN2
PAWKEN1
PAWKEN0
位域
名称
描述
31:16
-
-
15
PAWKEN15
PA15 输入唤醒使能
1:使能
14
PAWKEN14
PA14 输入唤醒使能
1:使能
13
PAWKEN13
PAWKEN12
11
PAWKEN11
10
PAWKEN10
9
PAWKEN9
8
PAWKEN8
7
PAWKEN7
PAWKEN6
1:使能
PAWKEN5
1:使能
PAWKEN4
0:禁能
PA10 输入唤醒使能
1:使能
0:禁能
PA9 输入唤醒使能
1:使能
0:禁能
PA8 输入唤醒使能
1:使能
0:禁能
PA7 输入唤醒使能
0:禁能
PA6 输入唤醒使能
0:禁能
PA5 输入唤醒使能
1:使能
4
0:禁能
PA11 输入唤醒使能
1:使能
5
0:禁能
PA12 输入唤醒使能
1:使能
6
0:禁能
PA13 输入唤醒使能
1:使能
12
0:禁能
0:禁能
PA4 输入唤醒使能
1:使能
0:禁能
82
Version 1.23
SWM201 系列
3
PAWKEN3
PA3 输入唤醒使能
1:使能
2
PAWKEN2
PA2 输入唤醒使能
1:使能
1
PAWKEN1
0
PAWKEN0
0:禁能
0:禁能
PA1 输入唤醒使能
1:使能
0:禁能
PA0 输入唤醒使能
1:使能
0:禁能
83
Version 1.23
SWM201 系列
PORTB 唤醒使能控制寄存器 PBWKEN
寄存器
偏移
类型
复位值
描述
PBWKEN
0x104
R/W
0x00
PORTB 唤醒使能控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PBWKEN15
PBWKEN14
PBWKEN13
PBWKEN12
PBWKEN11
PBWKEN10
PBWKEN9
PBWKEN8
7
6
5
4
3
2
1
0
PBWKEN7
PBWKEN6
PBWKEN5
PBWKEN4
PBWKEN3
PBWKEN2
PBWKEN1
PBWKEN0
位域
名称
描述
31:16
-
-
15
PBWKEN15
PB15 输入唤醒使能
1:使能
14
PBWKEN14
PB14 输入唤醒使能
1:使能
13
PBWKEN13
PBWKEN12
11
PBWKEN11
10
PBWKEN10
9
PBWKEN9
8
PBWKEN8
7
PBWKEN7
PBWKEN6
1:使能
PBWKEN5
1:使能
PBWKEN4
0:禁能
PB10 输入唤醒使能
1:使能
0:禁能
PB9 输入唤醒使能
1:使能
0:禁能
PB8 输入唤醒使能
1:使能
0:禁能
PB7 输入唤醒使能
0:禁能
PB6 输入唤醒使能
0:禁能
PB5 输入唤醒使能
1:使能
4
0:禁能
PB11 输入唤醒使能
1:使能
5
0:禁能
PB12 输入唤醒使能
1:使能
6
0:禁能
PB13 输入唤醒使能
1:使能
12
0:禁能
0:禁能
PB4 输入唤醒使能
1:使能
0:禁能
84
Version 1.23
SWM201 系列
3
PBWKEN3
PB3 输入唤醒使能
1:使能
2
PBWKEN2
PB2 输入唤醒使能
1:使能
1
PBWKEN1
0
PBWKEN0
0:禁能
0:禁能
PB1 输入唤醒使能
1:使能
0:禁能
PB0 输入唤醒使能
1:使能
0:禁能
85
Version 1.23
SWM201 系列
PORTM 唤醒使能控制寄存器 PMWKEN
寄存器
偏移
类型
复位值
描述
PMWKEN
0x120
R/W
0x00
PORTM 唤醒使能控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PMWKEN15
PMWKEN14
PMWKEN13
PMWKEN12
PMWKEN11
PMWKEN10
PMWKEN9
PMWKEN8
7
6
5
4
3
2
1
0
PMWKEN7
PMWKEN6
PMWKEN5
PMWKEN4
PMWKEN3
PMWKEN2
PMWKEN1
PMWKEN0
位域
名称
描述
31:16
-
-
15
PMWKEN15
PM15 输入唤醒使能
1:使能
14
PMWKEN14
PM14 输入唤醒使能
1:使能
13
PMWKEN13
PMWKEN12
11
PMWKEN11
10
PMWKEN10
9
PMWKEN9
8
PMWKEN8
7
PMWKEN7
PMWKEN6
1:使能
PMWKEN5
1:使能
PMWKEN4
0:禁能
PM10 输入唤醒使能
1:使能
0:禁能
PM9 输入唤醒使能
1:使能
0:禁能
PM8 输入唤醒使能
1:使能
0:禁能
PM7 输入唤醒使能
0:禁能
PM6 输入唤醒使能
0:禁能
PM5 输入唤醒使能
1:使能
4
0:禁能
PM11 输入唤醒使能
1:使能
5
0:禁能
PM12 输入唤醒使能
1:使能
6
0:禁能
PM13 输入唤醒使能
1:使能
12
0:禁能
0:禁能
PM4 输入唤醒使能
1:使能
0:禁能
86
Version 1.23
SWM201 系列
3
PMWKEN3
PM3 输入唤醒使能
1:使能
2
PMWKEN2
PM2 输入唤醒使能
1:使能
1
PMWKEN1
0
PMWKEN0
0:禁能
0:禁能
PM1 输入唤醒使能
1:使能
0:禁能
PM0 输入唤醒使能
1:使能
0:禁能
87
Version 1.23
SWM201 系列
PORTA 唤醒状态寄存器 PAWKSR
寄存器
偏移
类型
复位值
描述
PAWKSR
0x130
R/W1C
0x00
PORTA 唤醒状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PAWKSR15
PAWKSR14
PAWKSR13
PAWKSR12
PAWKSR11
PAWKSR10
PAWKSR9
PAWKSR8
7
6
5
4
3
2
1
0
PAWKSR7
PAWKSR6
PAWKSR5
PAWKSR4
PAWKSR3
PAWKSR2
PAWKSR1
PAWKSR0
位域
名称
描述
31:16
-
PA15 输入唤醒状态标志位
15
PAWKSR15
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA14 输入唤醒状态标志位
14
PAWKSR14
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA13 输入唤醒状态标志位
13
PAWKSR13
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA12 输入唤醒状态标志位
12
PAWKSR12
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA11 输入唤醒状态标志位
11
PAWKSR11
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA10 输入唤醒状态标志位
10
PAWKSR10
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA9 输入唤醒状态标志位
9
PAWKSR9
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA8 输入唤醒状态标志位
8
PAWKSR8
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
88
Version 1.23
SWM201 系列
PA7 输入唤醒状态标志位
7
PAWKSR7
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA6 输入唤醒状态标志位
6
PAWKSR6
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA5 输入唤醒状态标志位
5
PAWKSR5
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA4 输入唤醒状态标志位
4
PAWKSR4
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA3 输入唤醒状态标志位
3
PAWKSR3
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA2 输入唤醒状态标志位
2
PAWKSR2
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA1 输入唤醒状态标志位
1
PAWKSR1
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PA0 输入唤醒状态标志位
0
PAWKSR0
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
89
Version 1.23
SWM201 系列
PORTB 唤醒状态寄存器 PBWKSR
寄存器
偏移
类型
复位值
描述
PBWKSR
0x134
R/W1C
0x00
PORTB 唤醒状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PBWKSR15
PBWKSR14
PBWKSR13
PBWKSR12
PBWKSR11
PBWKSR10
PBWKSR9
PBWKSR8
7
6
5
4
3
2
1
0
PBWKSR7
PBWKSR6
PBWKSR5
PBWKSR4
PBWKSR3
PBWKSR2
PBWKSR1
PBWKSR0
位域
名称
描述
31:16
-
PB15 输入唤醒状态标志位
15
PBWKSR15
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB14 输入唤醒状态标志位
14
PBWKSR14
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB13 输入唤醒状态标志位
13
PBWKSR13
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB12 输入唤醒状态标志位
12
PBWKSR12
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB11 输入唤醒状态标志位
11
PBWKSR11
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB10 输入唤醒状态标志位
10
PBWKSR10
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB9 输入唤醒状态标志位
9
PBWKSR9
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB8 输入唤醒状态标志位
8
PBWKSR8
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
90
Version 1.23
SWM201 系列
PB7 输入唤醒状态标志位
7
PBWKSR7
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB6 输入唤醒状态标志位
6
PBWKSR6
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB5 输入唤醒状态标志位
5
PBWKSR5
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB4 输入唤醒状态标志位
4
PBWKSR4
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB3 输入唤醒状态标志位
3
PBWKSR3
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB2 输入唤醒状态标志位
2
PBWKSR2
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB1 输入唤醒状态标志位
1
PBWKSR1
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PB0 输入唤醒状态标志位
0
PBWKSR0
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
91
Version 1.23
SWM201 系列
PORTM 唤醒状态寄存器 PMWKSR
寄存器
偏移
类型
复位值
描述
PMWKSR
0x150
R/W1C
0x00
PORTM 唤醒状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PMWKSR15
PMWKSR14
PMWKSR13
PMWKSR12
PMWKSR11
PMWKSR10
PMWKSR9
PMWKSR8
7
6
5
4
3
2
1
0
PMWKSR7
PMWKSR6
PMWKSR5
PMWKSR4
PMWKSR3
PMWKSR2
PMWKSR1
PMWKSR0
位域
名称
描述
31:16
-
PM15 输入唤醒状态标志位
15
PMWKSR15
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM14 输入唤醒状态标志位
14
PMWKSR14
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM13 输入唤醒状态标志位
13
PMWKSR13
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM12 输入唤醒状态标志位
12
PMWKSR12
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM11 输入唤醒状态标志位
11
PMWKSR11
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM10 输入唤醒状态标志位
10
PMWKSR10
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM9 输入唤醒状态标志位
9
PMWKSR9
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM8 输入唤醒状态标志位
8
PMWKSR8
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
92
Version 1.23
SWM201 系列
PM7 输入唤醒状态标志位
7
PMWKSR7
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM6 输入唤醒状态标志位
6
PMWKSR6
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM5 输入唤醒状态标志位
5
PMWKSR5
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM4 输入唤醒状态标志位
4
PMWKSR4
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM3 输入唤醒状态标志位
3
PMWKSR3
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM2 输入唤醒状态标志位
2
PMWKSR2
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM1 输入唤醒状态标志位
1
PMWKSR1
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
PM0 输入唤醒状态标志位
0
PMWKSR0
唤醒后硬件置 1,软件写 1 清除
1:唤醒
0:未唤醒
93
Version 1.23
SWM201 系列
IO 滤波窗口时间配置寄存器 0 IOFILT0
寄存器
偏移
类型
复位值
描述
IOFILT0
0x400
R/W
0x00
IO 滤波窗口时间配置寄存器 0
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
-
5
IOSEL
4
CLKDIV
位域
名称
描述
31:7
-
-
TIM
0 组 IO 滤波选择控制位
00:选择基础序号的 IO 具有滤波功能
01:选择基础序号+1 的 IO 具有滤波功能
6:5
IOSEL
10:选择基础序号+2 的 IO 具有滤波功能
11:选择基础序号+3 的 IO 具有滤波功能
例如:若基础序号的 IO 为 B0,当该位为 00 时,则 B0 具有滤波功能;当该位为
01 时,则 B1 具有滤波功能;当该位为 10 时,则 B2 具有滤波功能;当该位为 11
时,则 B3 具有滤波功能。
0 组 IO 滤波时钟是否采用分频
4
CLKDIV
0:不分频
1:分频(固定为 32 分频)
0 组 IO 硬件滤波窗口时间配置寄存器(若配置则对某 IO 的输入具有滤波功能,
则该寄存器存在)
若滤波时钟分频:
滤波窗口时间=32*Tfilter_clk*2^ TIM
3:0
TIM
若滤波时钟不分频:
滤波窗口时间=Tfilter_clk*2^ TIM
当 TIM 为 0 时,则不具有滤波功能。因此,只有当将 TIM 配置大于 0 时,滤波功
能才能开启。
94
Version 1.23
SWM201 系列
IO 滤波窗口时间配置寄存器 1 IOFILT1
寄存器
偏移
类型
复位值
描述
IOFILT1
0x404
R/W
0x00
IO 滤波窗口时间配置寄存器 1
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
-
5
IOSEL
4
CLKDIV
位域
名称
描述
31:7
-
-
TIM
1 组 IO 滤波选择控制位
00:选择基础序号的 IO 具有滤波功能
01:选择基础序号+1 的 IO 具有滤波功能
6:5
IOSEL
10:选择基础序号+2 的 IO 具有滤波功能
11:选择基础序号+3 的 IO 具有滤波功能
例如:若基础序号的 IO 为 B0,当该位为 00 时,则 B0 具有滤波功能;当该位为
01 时,则 B1 具有滤波功能;当该位为 10 时,则 B2 具有滤波功能;当该位为 11
时,则 B3 具有滤波功能。
1 组 IO 滤波时钟是否采用分频
4
CLKDIV
0:不分频
1:分频(固定为 32 分频)
1 组 IO 硬件滤波窗口时间配置寄存器(若配置则对某 IO 的输入具有滤波功能,
则该寄存器存在)
若滤波时钟分频:
滤波窗口时间=32*Tfilter_clk*2^ TIM
3:0
TIM
若滤波时钟不分频:
滤波窗口时间=Tfilter_clk*2^ TIM
当 TIM 为 0 时,则不具有滤波功能。因此,只有当将 TIM 配置大于 0 时,滤波功
能才能开启。
95
Version 1.23
SWM201 系列
芯片复位屏蔽寄存器 PRSTEN
寄存器
偏移
类型
复位值
描述
PRSTEN
0x720
R/W
0x0000_0000
芯片复位屏蔽寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
PRSTEN
位域
名称
描述
31:8
-
-
7:0
PRSTEN
只有当该寄存器配置为 0x55 时,才能对 PRSTR0 和 PRSTR1 进行写操作。
96
Version 1.23
SWM201 系列
芯片复位配置寄存器 0 PRSTR0
寄存器
偏移
类型
复位值
描述
PRSTR0
0x724
R/W
0x0000_0000
芯片复位配置寄存器 0
31
30
29
28
27
23
22
-
21
20
DIV
CORDIC
19
26
25
24
SARADC0
ANAC
-
18
17
16
9
8
-
15
14
13
12
11
10
I2C0
-
SPI0
PWM
TIMER
WDT
7
6
5
4
3
2
UART1
UART0
-
GPIOM
位域
名称
描述
31
-
-
30:27
-
-
26
SARADC0
25
ANAC
24:22
-
21
DIV
20
CORDIC
19:16
-
15
I2C0
14
-
13
SPI0
12
PWM
11
TIMER
10
WDT
9:8
-
7
UART1
-
1
0
GPIOB
GPIOA
SARADC0_CTRL 模块复位配置位
将该位置 1,则复位该模块。
ANAC 模块复位配置位
将该位置 1,则复位该模块。
DIV 模块复位配置位
将该位置 1,则复位该模块。
CORDIC 模块复位配置位
将该位置 1,则复位该模块。
I2C0 模块复位配置位
将该位置 1,则复位该模块。
SPI0 模块复位配置位
将该位置 1,则复位该模块。
PWM 模块复位配置位
将该位置 1,则复位该模块。
TIMER 模块复位配置位
将该位置 1,则复位该模块。
WDT 模块复位配置位
将该位置 1,则复位该模块。
UART1 模块复位配置位
将该位置 1,则复位该模块。
97
Version 1.23
SWM201 系列
6
UART0
5
-
4
GPIOM
2:3
-
1
GPIOB
0
GPIOA
UART0 模块复位配置位
将该位置 1,则复位该模块。
GPIOM 模块复位配置位
将该位置 1,则复位该模块。
GPIOB 模块复位配置位
将该位置 1,则复位该模块。
GPIOA 模块复位配置位
将该位置 1,则复位该模块。
98
Version 1.23
SWM201 系列
芯片复位配置寄存器 1 PRSTR1
寄存器
偏移
类型
复位值
描述
PRSTR1
0x728
R/W
0x0000_0000
芯片复位配置寄存器 1
31
30
29
28
27
-
26
25
QEI
18
24
-
23
22
21
20
19
17
16
-
BTIMR
-
IOFILT
RTC
15
14
13
12
11
10
9
8
3
2
1
0
-
7
6
5
4
-
位域
名称
描述
31:27
-
-
26
QEI
23:25
-
22
BTIMR
21
-
20
IOFILT
19
RTC
18:0
-
QEI 模块复位配置位
将该位置 1,则复位该模块
BTIMR 模块复位配置位
将该位置 1,则复位该模块
IOFILT 模块复位配置位
将该位置 1,则复位该模块
RTC_BASE 模块复位配置位
将该位置 1,则复位该模块。
-
99
Version 1.23
SWM201 系列
内部高频 RC 振荡器配置寄存器 HRCCR
寄存器
偏移
类型
复位值
描述
HRCCR
0x00
R/W
0x1
内部高频 RC 振荡器配置寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
DBL
ON
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:2
-
内部高频 RC 振荡器倍频
1
DBL
0:30MHz
1:60MHz
内部高频 RC 振荡器使能
0
ON
0:关闭
1:开启
100
Version 1.23
SWM201 系列
BOD 控制寄存器 BODCR
寄存器
偏移
类型
复位值
描述
BODCR
0x10
R/W
0
BOD 控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
INTLVL
5
INTLVL
4
3
RSTLVL
位域
名称
描述
31:7
-
-
2
-
1
0
IE
-
BOD 中断电位配置寄存器
000: BOD 1.9V 产生中断
001: BOD 2.1V 产生中断
9:7
INTLVL
010: BOD 2.3V 产生中断
011: BOD 2.5V 产生中断
100: BOD 2.7V 产生中断
101: BOD 3.5V 产生中断
110: BOD 4.1V 产生中断
BOD 复位电位配置寄存器
000: BOD 1.7V 产生复位
6:4
RSTLVL
001: BOD 1.9V 产生复位
010: BOD 2.1V 产生复位
011: BOD 2.7V 产生复位
100: BOD 3.5V 产生复位
3:2
-
BOD 中断功能使能寄存器
1
IE
1:使能
0:关闭
0
-
-
101
Version 1.23
SWM201 系列
BOD 中断状态寄存器 BODSR
寄存器
偏移
类型
复位值
描述
BODSR
0x14
R/W1C
0
BOD 中断状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
ST
IF
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
1
ST
BOD 原始状态寄存器
BOD 中断状态标志位,写 1 清除
1:已触发中断电压
0
IF
0:未触发中断电压
注:只有当 BODCR.IE=1 时,BODSR.IF 才会置位
102
Version 1.23
SWM201 系列
晶体振荡器控制寄存器 XTALCR
寄存器
偏移
类型
复位值
描述
XTALCR
0x20
R/W
0
晶体振荡器控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
9
8
1
0
ON
32KON
23
22
21
20
15
DRV
14
13
12
11
10
7
6
-
32KDRV
5
4
DET
32KDET
位域
名称
描述
31:17
-
-
3
2
-
高频晶体振荡器驱动能力控制信号
20:16
DRV
每 bit 位控制的驱动能力一样,将该寄存器配置几个 bit 为 1,则表示有几倍的驱
动能力
15:12
-
-
11:8
32KDRV
32K 低频晶振频率修调控制信号
外接高频晶振停振检测
5
DET
0:关闭
1:开启
外接低频晶振停振检测
4
32KDET
0:关闭
1:开启
3:2
-
外接高频晶振使能
1
ON
0:关闭
1:开启
外接低频晶振使能
0
32KON
0:关闭
1:开启
103
Version 1.23
SWM201 系列
晶体振荡器状态寄存器 XTALSR
寄存器
偏移
类型
复位值
描述
XTALSR
0x24
R/W1C
0
晶体振荡器状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
STOP
32KSTOP
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:2
-
外接高频晶振状态,写 1 清 0
1
STOP
0:正常
1:停振,发生停震后将自动切换至 RCHF
外接低频晶振状态,写 1 清 0
0
32KSTOP
0:正常
1:停振
104
Version 1.23
SWM201 系列
内部低频 RC 配置寄存器 LRCCR
寄存器
偏移
类型
复位值
描述
LRCCR
0x050
R/W
0x0000_0001
内部低频 RC 配置寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
ON
内置低频 RC 使能
0
ON
0:关闭
1:开启
105
Version 1.23
SWM201 系列
6.6
端口控制模块(PORTCON)
6.6.1
概述
端口控制模块主要包括管脚输入使能,管脚功能配置,I/O 上拉、下拉、开漏配置。SWM201 系
列所有型号 PORTCON 模块操作均相同,部分型号无对应管脚时,对应寄存器位无效。
6.6.2
特性
⚫
配置 I/O 引脚为特定功能
⚫
支持上拉/下拉/推挽/开漏功能
⚫
配置管脚输入使能
106
Version 1.23
SWM201 系列
6.6.3
模块结构框图
Analog Path
VDD
GPIO
数字外设
数字外设
数字外设
PULLU
Weak
Pull Up
PULLD
Weak
Pull Down
INEN
Digital Input
数字外设
数字外设
数字外设
模拟外设
PORTx_SEL
OPEND
VDD
DIR=1 或
外设输出模式
Digital Output
图 6-5 PORTCON 模块结构框图
107
Version 1.23
SWM201 系列
6.6.4
功能描述
端口控制模块主要包括管脚输入使能,管脚功能配置,I/O 上拉、下拉、开漏配置。
引脚输入使能
本芯片引脚作为输入或需要输入的外设时,需要打开引脚对应输入使能寄存器(INEN_x),当
引脚所在寄存器对应位设置为 1 时,输入使能打开,引脚可获取外部状态。
功能选择配置
端口复用通过端口复用寄存器 PORTx_FUNC 寄存器实现。当指定位配置为对应值时,引脚功能
实现切换。
每个端口可能具备以下功能:
⚫
通用输入输出接口:引脚作为通用输入输出功能,输入或输出指定数字电平
⚫
外设接口:将对应引脚切换至指定数字功能,如 TIMER/UART/PWM 等
⚫
模拟接口:将对应引脚切换至模拟功能,如模数转换器、时钟输入等
⚫
下载接口:使用仿真器连接下载程序及单步执行
配置示意图如图 6-6 所示。
PORTx_FUNC
GPIO
外设接口
MUX
SWD
PINx
ADC/XI/XO
图 6-6 引脚配置示意图
上拉/下拉/推挽/开漏配置
本芯片每个引脚均可配置为以下模式:
⚫
上拉输入
108
Version 1.23
SWM201 系列
⚫
下拉输入
⚫
推挽输出
⚫
开漏输出
当对应引脚作为除 GPIO 之外的功能引脚时,此配置同样生效。
作为输入功能使用时,GPIO DIR 寄存器对应位为 0,该状态为上电默认状态。此时可以开启内
部上拉和下拉功能,通过配置 PULLU 及 PULLD 寄存器实现,将引脚所对应寄存器指定位配置为
1,即可实现该功能。如图 6-7 所示:
VCC
PULLU
IN
PIN
PULLD
GND
图 6-7 IO 输入上拉下拉
作为输出功能使用时,GPIO DIR 寄存器对应位为 1,此时可配置引脚状态为推挽输出或开漏输
出,,通过配置 OPEND 寄存器实现。
作为推挽输出时,GPIO OPEND 寄存器对应位为 0,芯片具备拉/灌电流的能力,GPIO DATA 寄存
器配置值将反映到对应引脚电平。如图 6-8 所示:
VCC
PIN
DATA
GND
图 6-8 推挽输出
109
Version 1.23
SWM201 系列
作为开漏输出时,GPIO OPEND 寄存器对应位为 1,芯片只具备灌电流的能力,不具备拉电流能
力。GPIO 输出配置为 0 时,对应引脚将输出 0,配置为 1 时,输出高阻。若需要输出 1 时,需
要将内部/外部引脚接上拉电阻,通过上拉实现高电平输出。示意图如图 6-9 所示:
PIN
DATA
图 6-9 开漏输出
110
Version 1.23
SWM201 系列
6.6.5
寄存器映射
名称
偏移
POTRG
类型
复位值
描述
BASE:0x400A0000
PORTA_FUNC0
0x00
R/W
0x00
端口 A 功能配置寄存器 0
PORTA_FUNC1
0x04
R/W
0x00
端口 A 功能配置寄存器 1
PORTB_FUNC0
0x10
R/W
0x00
端口 B 功能配置寄存器 0
PORTB_FUNC1
0x14
R/W
0x00
端口 B 功能配置寄存器 1
PORTC_SEL0
0x20
R/W
0x00
端口 C 功能配置寄存器 0
PORTC_SEL1
0x24
R/W
0x00
端口 C 功能配置寄存器 1
PORTM_FUNC0
0x80
R/W
0x00
端口 M 功能配置寄存器 0
PORTM_FUNC1
0x84
R/W
0x00
端口 M 功能配置寄存器 1
PORTn
BASE:0x400A0100
PULLU_A
0x00
R/W
0x00
端口 A 上拉使能控制寄存器
PULLU_B
0x10
R/W
0x00
端口 B 上拉使能控制寄存器
PULLU_M
0x80
R/W
0x00
端口 M 上拉使能控制寄存器
PULLD_A
0x100
R/W
0x00
端口 A 下拉使能控制寄存器
PULLD_B
0x110
R/W
0x00
端口 B 下拉使能控制寄存器
PULLD_M
0x180
R/W
0x00
端口 M 下拉使能控制寄存器
INEN_A
0x200
R/W
0x00
端口 A 输入使能控制寄存器
INEN_B
0x210
R/W
0x00
端口 B 输入使能控制寄存器
INEN_M
0x280
R/W
0x00
端口 M 输入使能控制寄存器
OPEND_A
0x300
R/W
0x00
端口 A 开漏使能控制寄存器
OPEND_B
0x310
R/W
0x00
端口 B 开漏使能控制寄存器
OPEND_M
0x380
R/W
0x00
端口 M 开漏使能控制寄存器
111
Version 1.23
SWM201 系列
寄存器描述
6.6.6
PORTA_FUNC0
寄存器
偏移
类型
复位值
描述
PORTA_FUNC0
0x00
R/W
0xF0
端口 A 功能配置寄存器 0
31
30
29
28
27
26
PIN7
23
22
21
14
20
19
18
13
6
12
11
名称
16
10
9
8
1
0
PIN2
5
4
3
PIN1
位域
17
PIN4
PIN3
7
24
PIN6
PIN5
15
25
2
PIN0
描述
Port A7 功能选择
0000:GPIO
31:28
PIN7
0001:I2C0_DATA
0010:PWM0_OUTBN
其它:保留
Port A6 功能选择
0000:GPIO
27:24
PIN6
0001:I2C0_CLK
0010:PWM0_OUTB
其它:保留
Port A5 功能选择
0000:GPIO
0001:UART1_RX
23:20
PIN5
0010:PWM1_OUA
0011:PWM0_OUAN
0100:PWM1_OUAN
其它:保留
Port A4 功能选择
0000:GPIO
19:16
PIN4
0001:UART1_TX
0010:PWM1_OUTB
0011:PWM1_OUTBN
其它:保留
112
Version 1.23
SWM201 系列
Port A3 功能选择
0000:GPIO
15:12
PIN3
0001:PWM0_OUTA
0010:PWM1_OUTAN
0011:PWM0_OUTAN
其它:保留
Port A2 功能选择
0000:GPIO
11:8
PIN2
0001:PWM1_OUTAN
0010:PWM0_OUTAN
0011:PWM1_OUTA
其它:保留
Port A1 功能选择
0000:GPIO
0001:I2C0_DAT
7:4
PIN1
0010:UART0_TX
0011:PWM1_OUTBN
0100:PWM1_OUTB
其它:保留
Port A0 功能选择
0000:GPIO
0001:I2C0_CLK
3:0
PIN0
0010:UART0_RX
0011:PWM0_OUTAN
0100:PWM1_OUTAN
0101:PWM0_OUTA
其它:保留
113
Version 1.23
SWM201 系列
PORTA_FUNC1
寄存器
偏移
类型
复位值
描述
PORTA_FUNC1
0x04
R/W
0x00
端口 A 功能配置寄存器 1
31
30
29
28
27
26
PIN15
23
22
21
14
20
19
18
13
6
12
11
名称
16
10
9
8
1
0
PIN10
5
4
3
PIN9
位域
17
PIN12
PIN11
7
24
PIN14
PIN13
15
25
2
PIN8
描述
Port A15 功能选择
31:28
PIN15
0000:GPIO
其它:保留
Port A14 功能选择
0000:GPIO
0001:TIMER_IN0
27:24
PIN14
0010:TIMER_OUT0
0111:SARADC0_CH0
0111:CMPVP3
其它:保留
Port A13 功能选择
0000:GPIO
23:20
PIN13
0111:SARADC0_CH1
0111:OPVN1
其它:保留
Port A12 功能选择
19:16
PIN12
0000:GPIO
0111:SARADC0_CH2
其它:保留
Port A11 功能选择
0000:GPIO
15:12
PIN11
0001:PWM_PULSE1_IN
0111:SARADC0_CH3
0111:OPOUT2
其它:保留
114
Version 1.23
SWM201 系列
Port A10 功能选择
0000:GPIO
11:8
PIN10
0001:PWM_BREAK2_IN
0111:OPVP2
其它:保留
Port A9 功能选择
7:4
PIN9
0000:GPIO
0111:OPVP1
其它:保留
Port A8 功能选择
0000:GPIO
3:0
PIN8
0001:UART1_CTS_IN
0111:SARADC0_CH7
0111:OPOUT1
其它:保留
115
Version 1.23
SWM201 系列
PORTB_FUNC0
寄存器
偏移
类型
复位值
描述
PORTB_FUNC0
0x10
R/W
0x00
端口 B 功能配置寄存器 0
31
30
29
28
27
26
PIN7
23
22
21
14
20
19
18
13
6
12
11
名称
16
10
9
8
1
0
PIN2
5
4
3
PIN1
位域
17
PIN4
PIN3
7
24
PIN6
PIN5
15
25
2
PIN0
描述
Port B7 功能选择
0000:GPIO
0001:UART1_TX
31:28
PIN7
0010:TIMER_IN1
0011:TIMER_OUT1
0111:SARADC0_CH9
0111:OPVP0
其它:保留
Port B6 功能选择
0000:GPIO
0001:INDEX
0010:PWM_BREAK1_IN
27:24
PIN6
0011:HALL2_IN
0100:TIMER_IN0
0101:TIMER_OUT0
0111:SARADC0_CH4
0111:CMPVP0
其它:保留
116
Version 1.23
SWM201 系列
Port B5 功能选择
0000:GPIO
0001:QEB
0010:I2C0_DAT
23:20
PIN5
0011:HALL1_IN
0100:TIMER_IN1
0101:TIMER_OUT1
0111:SARADC0_CH5
0111:CMPVP1
其它:保留
Port B4 功能选择
0000:GPIO
0001:QEA
19:16
PIN4
0010:I2C0_CLK
0011:HALL0_IN
0111:SARADC0_CH6
0111:CMPVP2
其它:保留
Port B3 功能选择
0000:GPIO
15:12
PIN3
0001:UART0_RX
0010:RTC_BASE_1HZ_OUT
0111:SARADC0_CH2
其它:保留
Port B2 功能选择
0000:GPIO
11:8
PIN2
0001:UART0_TX
0111:CMPVN0
其它:保留
Port B1 功能选择
0000:GPIO
7:4
PIN1
0001:UART0_CTS_IN
0111:CMPVN1
其它:保留
Port B0 功能选择
0000:GPIO
3:0
PIN0
0001:UART0_RTS_OUT
0111:CMPVN2
其它:保留
117
Version 1.23
SWM201 系列
PORTB_FUNC1
寄存器
偏移
类型
复位值
描述
PORTB_FUNC1
0x14
R/W
0x00
端口 B 功能配置寄存器 1
31
30
29
28
27
26
PIN15
23
22
21
14
20
19
18
13
6
12
11
名称
16
10
9
8
1
0
PIN10
5
4
3
PIN9
位域
17
PIN12
PIN11
7
24
PIN14
PIN13
15
25
2
PIN8
描述
Port B15 功能选择
0000:GPIO
31:28
PIN15
0001:UART0_RX
0010:SPIO_SSN
其它:保留
Port B14 功能选择
0000:GPIO
0001:UART0_TX
27:24
PIN14
0010:SPI0_MISO
0011:PWM_BREAK0_IN
0111:CMPVN3
其它:保留
Port B13 功能选择
23:20
PIN13
0000:GPIO
0001:PWM0_OUTA
其它:保留
Port B12 功能选择
0000:GPIO
0001:UART0_RX
0010:SPI0_MOSI
19:16
PIN12
0011:PWM0_OUTB
0100:TIMER_IN0
0101:TIMER_OUT0
0111:XO
其它:保留
118
Version 1.23
SWM201 系列
Port B11 功能选择
0000:GPIO
0001:UART0_TX
0010:SPI0_CLK
15:12
PIN11
0011:PWM0_OUTBN
0100:TIMER_IN1
0101:TIMER_OUT1
0111:XI
其它:保留
Port B10 功能选择
0000:GPIO
11:8
PIN10
0001:PWM0_OUTAN
0010:TIMER_IN0
0011:TIMER_OUT0
其它:保留
Port B9 功能选择
0000:GPIO
7:4
PIN9
0001:UART1_RTS
0111:SARADC0_CH8
0111:OPOUT0
其它:保留
Port B8 功能选择
0000:GPIO
3:0
PIN8
0001:UART1_RX
0111:OPVN0
其它:保留
119
Version 1.23
SWM201 系列
PORTM_FUNC0
寄存器
偏移
类型
复位值
描述
PORTM_FUNC0
0x80
R/W
0x00
端口 M 功能配置寄存器
31
30
29
28
27
26
PIN15
23
22
21
14
20
19
18
13
6
12
11
名称
16
10
9
8
1
0
PIN10
5
4
3
PIN9
位域
17
PIN12
PIN11
7
24
PIN14
PIN13
15
25
2
PIN8
描述
Port M7 功能选择
0000:GPIO
31:28
PIN7
0001:PWM0_OUTA
0010:PWM1_OUTAN
0011:PWM0_OUTAN
其它:保留
Port M6 功能选择
0000:GPIO
27:24
PIN6
0001:PWM0_OUTAN
0010:PWM0_OUTA
其它:保留
Port M5 功能选择
0000:GPIO
23:20
PIN5
0001:PWM1_OUTA
0010:PWM1_OUTBN
0011:PWM1_OUTAN
其它:保留
Port M4 功能选择
0000:GPIO
0001:I2C0_DAT
19:16
PIN4
0010:UART0_RX
0011:PWM1_OUTAN
0100:PWM1_OUTA
0101:HALL2_IN
其它:保留
120
Version 1.23
SWM201 系列
Port M3 功能选择
0000:GPIO
0001:I2C0_CLK
0010:UART0_TX
15:12
PIN3
0011:PWM1_OUTB
0100:PWM0_OUTA
0101:PWM1_OUTBN
0110:HALL1_IN
其它:保留
Port M2 功能选择
0000:GPIO
0001:PWM1_OUTBN
11:8
PIN2
0010:PWM1_OUTB
0011:HALL0_IN
0100:RTC_BASE_1HZ_OUT
其它:保留
Port M1 功能选择
0000:GPIO
0001:JTAGTMS/SWIO
7:4
PIN1
0010:UART1_RX
0011:TIMER_IN1
0100:TIMER_OUT1
其它:保留
Port M0 功能选择
0000:GPIO
3:0
PIN0
0001:JTAG/SWCLK
0010:UART1_TX
0011:PWM_PULSE0_IN
其它:保留
121
Version 1.23
SWM201 系列
PORTM_FUNC1
寄存器
偏移
类型
复位值
描述
PORTM_FUNC1
0x84
R/W
0x00
端口 M 功能配置寄存器 1
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
1
0
23
22
21
20
-
15
14
13
12
PIN11
7
6
PIN10
5
4
3
PIN9
2
PIN8
位域
名称
描述
31:16
-
Port M11 功能选择
15:12
PIN11
0000:GPIO
0001:SPI0_MISO
其它:保留
Port M10 功能选择
0000:GPIO
11:8
PIN10
0001:SPI0_SSN
0010:WAKEUP1
其它:保留
Port M9 功能选择
0000:GPIO
0001:QEIUPDN
0010:SPI0_MOSI
7:4
PIN9
0011:PWM0_OUTB
0100:TIMER_IN1
0101:TIMER_OUT1
0111:SARADC0_CH10
其它:保留
122
Version 1.23
SWM201 系列
Port M8 功能选择
0000:GPIO
0001:SPI0_CLK
0010:PWM0_OUTBN
3:0
PIN8
0011:TIMER_IN0
0100:TIMER_OUT0
0111:SARADC0_CH11
0111:WAKEUP0
其它:保留
123
Version 1.23
SWM201 系列
PORTA 端口上拉功能寄存器 PULLU_A
寄存器
偏移
类型
复位值
描述
PULLU_A
0x00
R/W
0x00
端口 A 上拉使能控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
-
15
PIN15
PIN15 上拉电阻使能
0:禁能
14
PIN14
PIN14 上拉电阻使能
0:禁能
13
PIN13
PIN12
11
PIN11
10
PIN10
9
PIN9
8
PIN8
7
PIN7
PIN6
0:禁能
PIN5
0:禁能
PIN4
1:使能
PIN10 上拉电阻使能
0:禁能
1:使能
PIN9 上拉电阻使能
0:禁能
1:使能
PIN8 上拉电阻使能
0:禁能
1:使能
PIN7 上拉电阻使能
1:使能
PIN6 上拉电阻使能
1:使能
PIN5 上拉电阻使能
0:禁能
4
1:使能
PIN11 上拉电阻使能
0:禁能
5
1:使能
PIN12 上拉电阻使能
0:禁能
6
1:使能
PIN13 上拉电阻使能
0:禁能
12
1:使能
1:使能
PIN4 上拉电阻使能
0:禁能
1:使能
124
Version 1.23
SWM201 系列
3
PIN3
PIN3 上拉电阻使能
0:禁能
2
PIN2
PIN2 上拉电阻使能
0:禁能
1
PIN1
0
PIN0
1:使能
1:使能
PIN1 上拉电阻使能
0:禁能
1:使能
PIN0 上拉电阻使能
0:禁能
1:使能
125
Version 1.23
SWM201 系列
PORTB 端口上拉功能寄存器 PULLU_B
寄存器
偏移
类型
复位值
描述
PULLU_B
0x10
R/W
0x00
端口 B 上拉使能控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
-
15
PIN15
PIN15 上拉电阻使能
0:禁能
14
PIN14
PIN14 上拉电阻使能
0:禁能
13
PIN13
PIN12
11
PIN11
10
PIN10
9
PIN9
8
PIN8
7
PIN7
PIN6
0:禁能
PIN5
0:禁能
PIN4
1:使能
PIN10 上拉电阻使能
0:禁能
1:使能
PIN9 上拉电阻使能
0:禁能
1:使能
PIN8 上拉电阻使能
0:禁能
1:使能
PIN7 上拉电阻使能
1:使能
PIN6 上拉电阻使能
1:使能
PIN5 上拉电阻使能
0:禁能
4
1:使能
PIN11 上拉电阻使能
0:禁能
5
1:使能
PIN12 上拉电阻使能
0:禁能
6
1:使能
PIN13 上拉电阻使能
0:禁能
12
1:使能
1:使能
PIN4 上拉电阻使能
0:禁能
1:使能
126
Version 1.23
SWM201 系列
3
PIN3
PIN3 上拉电阻使能
0:禁能
2
PIN2
PIN2 上拉电阻使能
0:禁能
1
PIN1
0
PIN0
1:使能
1:使能
PIN1 上拉电阻使能
0:禁能
1:使能
PIN0 上拉电阻使能
0:禁能
1:使能
127
Version 1.23
SWM201 系列
PORTM 端口上拉功能寄存器 PULLU_M
寄存器
偏移
类型
复位值
描述
PULLU_M
0x80
R/W
0x00
端口 M 上拉使能控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
PIN11
PIN10
PIN9
PIN8
23
22
21
20
-
15
14
13
12
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:12
-
-
11
PIN11
PIN11 上拉电阻使能
0:禁能
10
PIN10
PIN10 上拉电阻使能
0:禁能
9
PIN9
PIN8
7
PIN7
6
PIN6
5
PIN5
4
PIN4
3
PIN3
PIN2
0:禁能
PIN1
0:禁能
PIN0
1:使能
PIN6 上拉电阻使能
0:禁能
1:使能
PIN5 上拉电阻使能
0:禁能
1:使能
PIN4 上拉电阻使能
0:禁能
1:使能
PIN3 上拉电阻使能
1:使能
PIN2 上拉电阻使能
1:使能
PIN1 上拉电阻使能
0:禁能
0
1:使能
PIN7 上拉电阻使能
0:禁能
1
1:使能
PIN8 上拉电阻使能
0:禁能
2
1:使能
PIN9 上拉电阻使能
0:禁能
8
1:使能
1:使能
PIN0 上拉电阻使能
0:禁能
1:使能
128
Version 1.23
SWM201 系列
PORTA 端口下拉功能寄存器 PULLD_A
寄存器
偏移
类型
复位值
描述
PULLD_A
0x100
R/W
0x00
端口 A 下拉使能控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
-
15
PIN15
PIN15 下拉电阻使能
0:禁能
14
PIN14
PIN14 下拉电阻使能
0:禁能
13
PIN13
PIN12
11
PIN11
10
PIN10
9
PIN9
8
PIN8
7
PIN7
PIN6
0:禁能
PIN5
0:禁能
PIN4
1:使能
PIN10 下拉电阻使能
0:禁能
1:使能
PIN9 下拉电阻使能
0:禁能
1:使能
PIN8 下拉电阻使能
0:禁能
1:使能
PIN7 下拉电阻使能
1:使能
PIN6 下拉电阻使能
1:使能
PIN5 下拉电阻使能
0:禁能
4
1:使能
PIN11 下拉电阻使能
0:禁能
5
1:使能
PIN12 下拉电阻使能
0:禁能
6
1:使能
PIN13 下拉电阻使能
0:禁能
12
1:使能
1:使能
PIN4 下拉电阻使能
0:禁能
1:使能
129
Version 1.23
SWM201 系列
3
PIN3
PIN3 下拉电阻使能
0:禁能
2
PIN2
PIN2 下拉电阻使能
0:禁能
1
PIN1
0
PIN0
1:使能
1:使能
PIN1 下拉电阻使能
0:禁能
1:使能
PIN0 下拉电阻使能
0:禁能
1:使能
130
Version 1.23
SWM201 系列
PORTB 端口下拉功能寄存器 PULLD_B
寄存器
偏移
类型
复位值
描述
PULLD_B
0x110
R/W
0x00
端口 B 下拉使能控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
-
15
PIN15
PIN15 下拉电阻使能
0:禁能
14
PIN14
PIN14 下拉电阻使能
0:禁能
13
PIN13
PIN12
11
PIN11
10
PIN10
9
PIN9
8
PIN8
7
PIN7
PIN6
0:禁能
PIN5
0:禁能
PIN4
1:使能
PIN10 下拉电阻使能
0:禁能
1:使能
PIN9 下拉电阻使能
0:禁能
1:使能
PIN8 下拉电阻使能
0:禁能
1:使能
PIN7 下拉电阻使能
1:使能
PIN6 下拉电阻使能
1:使能
PIN5 下拉电阻使能
0:禁能
4
1:使能
PIN11 下拉电阻使能
0:禁能
5
1:使能
PIN12 下拉电阻使能
0:禁能
6
1:使能
PIN13 下拉电阻使能
0:禁能
12
1:使能
1:使能
PIN4 下拉电阻使能
0:禁能
1:使能
131
Version 1.23
SWM201 系列
3
PIN3
PIN3 下拉电阻使能
0:禁能
2
PIN2
PIN2 下拉电阻使能
0:禁能
1
PIN1
0
PIN0
1:使能
1:使能
PIN1 下拉电阻使能
0:禁能
1:使能
PIN0 下拉电阻使能
0:禁能
1:使能
132
Version 1.23
SWM201 系列
PORTM 端口下拉功能寄存器 PULLD_M
寄存器
偏移
类型
复位值
描述
PULLD_M
0x180
R/W
0x00
端口 M 下拉使能控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
PIN11
PIN10
PIN9
PIN8
23
22
21
20
-
15
14
13
12
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:12
-
-
11
PIN11
PIN11 下拉电阻使能
0:禁能
10
PIN10
PIN10 下拉电阻使能
0:禁能
9
PIN9
PIN8
7
PIN7
6
PIN6
5
PIN5
4
PIN4
3
PIN3
PIN2
0:禁能
PIN1
0:禁能
PIN0
1:使能
PIN6 下拉电阻使能
0:禁能
1:使能
PIN5 下拉电阻使能
0:禁能
1:使能
PIN4 下拉电阻使能
0:禁能
1:使能
PIN3 下拉电阻使能
1:使能
PIN2 下拉电阻使能
1:使能
PIN1 下拉电阻使能
0:禁能
0
1:使能
PIN7 下拉电阻使能
0:禁能
1
1:使能
PIN8 下拉电阻使能
0:禁能
2
1:使能
PIN9 下拉电阻使能
0:禁能
8
1:使能
1:使能
PIN0 下拉电阻使能
0:禁能
1:使能
133
Version 1.23
SWM201 系列
PORTA 端口输入使能功能寄存器 INEN_A
寄存器
偏移
类型
复位值
描述
INEN_A
0x200
R/W
0x00
端口 A 输入使能控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
-
15
PIN15
PIN15 输入使能
0:禁能
14
PIN14
PIN14 输入使能
0:禁能
13
PIN13
PIN12
11
PIN11
10
PIN10
9
PIN9
8
PIN8
7
PIN7
PIN6
0:禁能
PIN5
0:禁能
PIN4
1:使能
PIN10 输入使能
0:禁能
1:使能
PIN9 输入使能
0:禁能
1:使能
PIN8 输入使能
0:禁能
1:使能
PIN7 输入使能
1:使能
PIN6 输入使能
1:使能
PIN5 输入使能
0:禁能
4
1:使能
PIN11 输入使能
0:禁能
5
1:使能
PIN12 输入使能
0:禁能
6
1:使能
PIN13 输入使能
0:禁能
12
1:使能
1:使能
PIN4 输入使能
0:禁能
1:使能
134
Version 1.23
SWM201 系列
3
PIN3
PIN3 输入使能
0:禁能
2
PIN2
PIN2 输入使能
0:禁能
1
PIN1
0
PIN0
1:使能
1:使能
PIN1 输入使能
0:禁能
1:使能
PIN0 输入使能
0:禁能
1:使能
135
Version 1.23
SWM201 系列
PORTB 端口输入使能功能寄存器 INEN_B
寄存器
偏移
类型
复位值
描述
INEN_B
0x210
R/W
0x00
端口 B 输入使能控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
-
15
PIN15
PIN15 输入使能
0:禁能
14
PIN14
PIN14 输入使能
0:禁能
13
PIN13
PIN12
11
PIN11
10
PIN10
9
PIN9
8
PIN8
7
PIN7
PIN6
0:禁能
PIN5
0:禁能
PIN4
1:使能
PIN10 输入使能
0:禁能
1:使能
PIN9 输入使能
0:禁能
1:使能
PIN8 输入使能
0:禁能
1:使能
PIN7 输入使能
1:使能
PIN6 输入使能
1:使能
PIN5 输入使能
0:禁能
4
1:使能
PIN11 输入使能
0:禁能
5
1:使能
PIN12 输入使能
0:禁能
6
1:使能
PIN13 输入使能
0:禁能
12
1:使能
1:使能
PIN4 输入使能
0:禁能
1:使能
136
Version 1.23
SWM201 系列
3
PIN3
PIN3 输入使能
0:禁能
2
PIN2
PIN2 输入使能
0:禁能
1
PIN1
0
PIN0
1:使能
1:使能
PIN1 输入使能
0:禁能
1:使能
PIN0 输入使能
0:禁能
1:使能
137
Version 1.23
SWM201 系列
PORTM 端口输入使能功能寄存器 INEN_M
寄存器
偏移
类型
复位值
描述
INEN_M
0x280
R/W
0x00
端口 M 输入使能控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
PIN11
PIN10
PIN9
PIN8
23
22
21
20
-
15
14
13
12
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:12
-
-
11
PIN11
PIN11 输入使能
0:禁能
10
PIN10
PIN10 输入使能
0:禁能
9
PIN9
PIN8
7
PIN7
6
PIN6
5
PIN5
4
PIN4
3
PIN3
PIN2
0:禁能
PIN1
0:禁能
PIN0
1:使能
PIN6 输入使能
0:禁能
1:使能
PIN5 输入使能
0:禁能
1:使能
PIN4 输入使能
0:禁能
1:使能
PIN3 输入使能
1:使能
PIN2 输入使能
1:使能
PIN1 输入使能
0:禁能
0
1:使能
PIN7 输入使能
0:禁能
1
1:使能
PIN8 输入使能
0:禁能
2
1:使能
PIN9 输入使能
0:禁能
8
1:使能
1:使能
PIN0 输入使能
0:禁能
1:使能
138
Version 1.23
SWM201 系列
PORTA 端口开漏功能寄存器 OPEND_A
寄存器
偏移
类型
复位值
描述
OPEND_A
0x300
R/W
0x00
端口 A 开漏使能控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
PIN15 开漏使能
15
PIN15
0:推挽模式
1:开漏模式
PIN14 开漏使能
14
PIN14
0:推挽模式
1:开漏模式
PIN13 开漏使能
13
PIN13
0:推挽模式
1:开漏模式
PIN12 开漏使能
12
PIN12
0:推挽模式
1:开漏模式
PIN11 开漏使能
11
PIN11
0:推挽模式
1:开漏模式
PIN10 开漏使能
10
PIN10
0:推挽模式
1:开漏模式
PIN9 开漏使能
9
PIN9
0:推挽模式
1:开漏模式
PIN8 开漏使能
8
PIN8
0:推挽模式
1:开漏模式
139
Version 1.23
SWM201 系列
PIN7 开漏使能
7
PIN7
0:推挽模式
1:开漏模式
PIN6 开漏使能
6
PIN6
0:推挽模式
1:开漏模式
PIN5 开漏使能
5
PIN5
0:推挽模式
1:开漏模式
PIN4 开漏使能
4
PIN4
0:推挽模式
1:开漏模式
PIN3 开漏使能
3
PIN3
0:推挽模式
1:开漏模式
PIN2 开漏使能
2
PIN2
0:推挽模式
1:开漏模式
PIN1 开漏使能
1
PIN1
0:推挽模式
1:开漏模式
PIN0 开漏使能
0
PIN0
0:推挽模式
1:开漏模式
140
Version 1.23
SWM201 系列
PORTB 端口开漏功能寄存器 OPEND_B
寄存器
偏移
类型
复位值
描述
OPEND_B
0x310
R/W
0x00
端口 B 开漏使能控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
PIN15 开漏使能
15
PIN15
0:推挽模式
1:开漏模式
PIN14 开漏使能
14
PIN14
0:推挽模式
1:开漏模式
PIN13 开漏使能
13
PIN13
0:推挽模式
1:开漏模式
PIN12 开漏使能
12
PIN12
0:推挽模式
1:开漏模式
PIN11 开漏使能
11
PIN11
0:推挽模式
1:开漏模式
PIN10 开漏使能
10
PIN10
0:推挽模式
1:开漏模式
PIN9 开漏使能
9
PIN9
0:推挽模式
1:开漏模式
PIN8 开漏使能
8
PIN8
0:推挽模式
1:开漏模式
141
Version 1.23
SWM201 系列
PIN7 开漏使能
7
PIN7
0:推挽模式
1:开漏模式
PIN6 开漏使能
6
PIN6
0:推挽模式
1:开漏模式
PIN5 开漏使能
5
PIN5
0:推挽模式
1:开漏模式
PIN4 开漏使能
4
PIN4
0:推挽模式
1:开漏模式
PIN3 开漏使能
3
PIN3
0:推挽模式
1:开漏模式
PIN2 开漏使能
2
PIN2
0:推挽模式
1:开漏模式
PIN1 开漏使能
1
PIN1
0:推挽模式
1:开漏模式
PIN0 开漏使能
0
PIN0
0:推挽模式
1:开漏模式
142
Version 1.23
SWM201 系列
PORTM 端口开漏功能寄存器 OPEND_M
寄存器
偏移
类型
复位值
描述
OPEND_M
0x380
R/W
0x00
端口 M 开漏使能控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
PIN11
PIN10
PIN9
PIN8
23
22
21
20
-
15
14
13
12
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:12
-
PIN11 开漏使能
11
PIN11
0:推挽模式
1:开漏模式
PIN10 开漏使能
10
PIN10
0:推挽模式
1:开漏模式
PIN9 开漏使能
9
PIN9
0:推挽模式
1:开漏模式
PIN8 开漏使能
8
PIN8
0:推挽模式
1:开漏模式
PIN7 开漏使能
7
PIN7
0:推挽模式
1:开漏模式
PIN6 开漏使能
6
PIN6
0:推挽模式
1:开漏模式
PIN5 开漏使能
5
PIN5
0:推挽模式
1:开漏模式
PIN4 开漏使能
4
PIN4
0:推挽模式
1:开漏模式
143
Version 1.23
SWM201 系列
PIN3 开漏使能
3
PIN3
0:推挽模式
1:开漏模式
PIN2 开漏使能
2
PIN2
0:推挽模式
1:开漏模式
PIN1 开漏使能
1
PIN1
0:推挽模式
1:开漏模式
PIN0 开漏使能
0
PIN0
0:推挽模式
1:开漏模式
144
Version 1.23
SWM201 系列
6.7
通用 I/O (GPIO)
6.7.1
概述
通用输入输出模块主要功能包括数据控制、中断控制功能。SWM201 系列所有型号 GPIO 操作
均相同。使用前需使能对应 GPIO 模块时钟。
6.7.2
特性
⚫
最高 44 个独立 IO。
⚫
每个 IO 均支持位带功能
⚫
每个 IO 均可触发中断。
⚫
中断触发条件可配置,支持电平触发/边沿触发。
⚫
◼
电平触发支持高电平/低电平
◼
边沿触发中断可配置为上升沿/下降沿/双边沿触发。
每个 IO 均支持上拉/下拉/推挽/开漏功能。
145
Version 1.23
SWM201 系列
6.7.3
功能描述
数据控制
除 SWD 引脚与 ISP 引脚外,所有引脚上电后默认状态均为 GPIO 浮空输入(DIR = 0)。SWD 引
脚可在加密章节进行修改,IS 引脚默认下拉使能,保证浮空状态不会进入 ISP 模式。
GPIO 方向寄存器(DIRx)用来将每个独立的管脚配置为输入模式或者输出模式:
⚫
当数据方向设为 0 时,GPIO 对应引脚配置为输入
通过读取相应数据寄存器(IDRx)对应位或对应 DATAPINx 寄存器获取指定 GPIO 端口
当前状态值
⚫
当数据方向设为 1 时,GPIO 对应引脚配置为输出
通过向对应端口数据寄存器(ODRx)对应位或对应 DATAPINx 寄存器写入值改变指定
引脚输出,0 输出低电平,1 输出高电平。DATAPINx 寄存器可以直接控制对应端口,
对其他端口无影响,无需经过读后写。
GPIOM 端口为 AHB IO,挂载于 AHB 总线,对于读取和写入操作,均为命令发出后的 1 个周期
完成。
中断控制与清除
可根据需求将 GPIO 端口对应引脚配置为中断模式,并通过相关寄存器配置中断极性及触发方
式。触发方式分为边沿触发和电平触发两种模式。
⚫
对于边沿触发中断,可以设置为上升沿触发,下降沿触发或双边沿触发。中断发生
后,标志位具备保持特性,必须通过软件对中断标志位进行清除
⚫
对于电平触发中断,当外部引脚输入为指定电平时,中断发生。当电平翻转后,中断
信号消失,无需软件进行清除。使用电平触发中断,需保证外部信号源保持电平稳
定,以便有效中断电平能被端口识别
使用以下寄存器来对产生中断触发方式和极性进行定义:
⚫
GPIO 中断触发条件寄存器(INTLVLTRG)
,用于配置电平触发或边沿触发
⚫
GPIO 中断触发极性寄存器(INTRISEEN)
,用于配置电平或边沿触发极性
⚫
GPIO 中断边沿触发配置寄存器(INTBE)
,选择为边沿触发后,用于配置单边沿触发或
双边沿触发
通过 GPIO 中断使能寄存器(INTEN)可以使能或者禁止相应端口对应位中断,GPIO 原始中断状
态(INTRAWSTAUS)不受使能位影响。当产生中断时,可以在 GPIO 原始中断状态
(RAWINTSTAUS)获取中断信号的状态。当中断使能寄存器(INTEN)对应位为 1 时,中断状
态(INTSTAUS)寄存器可读取到对应中断信号,且中断信号会进入中断配置模块及 NVIC 模块,
执行中断程序。
通过写 1 到 GPIO 中断清除寄存器(INTCLR)指定位可以清除相应位中断。
146
Version 1.23
SWM201 系列
6.7.4
寄存器映射
名称
偏移
类型
GPIOA
BASE:0x40040000
GPIOB
BASE:0x40040800
GPIOM
BASE:0x40004000
复位值
描述
ODR
0x00
R/W
0x00
GPIO 写数据寄存器
DIR
0x04
R/W
0x00
GPIO 方向寄存器
INTLVLTRG
0x08
R/W
0x00
GPIO 中断触发条件
INTBE
0x0c
R/W
0x00
GPIO 中断沿触发配置寄存器
INTRISEEN
0x10
R/W
0x00
GPIO 中断触发极性
INTEN
0x14
R/W
0x00
GPIO 中断使能
INTRAWSTAT
0x18
R/W
0x00
GPIO 中断原始状态
INTSTAT
0x1c
R/W
0x00
GPIO 中断状态
INTCLR
0x20
R/W
0x00
GPIO 中断清除
IDR
0x30
R/W
0x00
GPIO 读数据寄存器
DATAPIN0
0x40
R/W
0x00
GPIO PIN0 数据寄存器
DATAPIN1
0x44
R/W
0x00
GPIO PIN1 数据寄存器
DATAPIN2
0x48
R/W
0x00
GPIO PIN2 数据寄存器
DATAPIN3
0x4c
R/W
0x00
GPIO PIN3 数据寄存器
DATAPIN4
0x50
R/W
0x00
GPIO PIN4 数据寄存器
DATAPIN5
0x54
R/W
0x00
GPIO PIN5 数据寄存器
DATAPIN6
0x58
R/W
0x00
GPIO PIN6 数据寄存器
DATAPIN7
0x5c
R/W
0x00
GPIO PIN7 数据寄存器
DATAPIN8
0x60
R/W
0x00
GPIO PIN8 数据寄存器
DATAPIN9
0x64
R/W
0x00
GPIO PIN9 数据寄存器
DATAPIN10
0x68
R/W
0x00
GPIO PIN10 数据寄存器
DATAPIN11
0x6c
R/W
0x00
GPIO PIN11 数据寄存器
DATAPIN12
0x70
R/W
0x00
GPIO PIN12 数据寄存器
DATAPIN13
0x74
R/W
0x00
GPIO PIN13 数据寄存器
DATAPIN14
0x78
R/W
0x00
GPIO PIN14 数据寄存器
DATAPIN15
0x7c
R/W
0x00
GPIO PIN15 数据寄存器
147
Version 1.23
SWM201 系列
寄存器描述
6.7.5
GPIOx 写数据寄存器 ODR
寄存器
偏移
类型
复位值
描述
ODR
0x00
R/W
0x00
GPIO 写数据寄存器
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
-
15
PIN15
Px15 引脚数据写寄存器位
14
PIN14
Px14 引脚数据写寄存器位
13
PIN13
Px13 引脚数据写寄存器位
12
PIN12
Px12 引脚数据写寄存器位
11
PIN11
Px11 引脚数据写寄存器位
10
PIN10
Px10 引脚数据写寄存器位
9
PIN9
Px9 引脚数据写寄存器位
8
PIN8
Px8 引脚数据写寄存器位
7
PIN7
Px7 引脚数据写寄存器位
6
PIN6
Px6 引脚数据写寄存器位
5
PIN5
Px5 引脚数据写寄存器位
4
PIN4
Px4 引脚数据写寄存器位
3
PIN3
Px3 引脚数据写寄存器位
2
PIN2
Px2 引脚数据写寄存器位
1
PIN1
Px1 引脚数据写寄存器位
0
PIN0
Px0 引脚数据写寄存器位
148
Version 1.23
SWM201 系列
GPIOx 方向寄存器 DIR
寄存器
偏移
类型
复位值
描述
DIR
0x04
R/W
0x00
GPIO 方向寄存器
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
Px15 引脚方向寄存器位
15
PIN15
1:输出
0:输入
Px14 引脚方向寄存器位
14
PIN14
1:输出
0:输入
Px13 引脚方向寄存器位
13
PIN13
1:输出
0:输入
Px12 引脚方向寄存器位
12
PIN12
1:输出
0:输入
Px11 引脚方向寄存器位
11
PIN11
1:输出
0:输入
Px10 引脚方向寄存器位
10
PIN10
1:输出
0:输入
Px9 引脚方向寄存器位
9
PIN9
1:输出
0:输入
Px8 引脚方向寄存器位
8
PIN8
1:输出
0:输入
149
Version 1.23
SWM201 系列
Px7 引脚方向寄存器位
7
PIN7
1:输出
0:输入
Px6 引脚方向寄存器位
6
PIN6
1:输出
0:输入
Px5 引脚方向寄存器位
5
PIN5
1:输出
0:输入
Px4 引脚方向寄存器位
4
PIN4
1:输出
0:输入
Px3 引脚方向寄存器位
3
PIN3
1:输出
0:输入
Px2 引脚方向寄存器位
2
PIN2
1:输出
0:输入
Px1 引脚方向寄存器位
1
PIN1
1:输出
0:输入
Px0 引脚方向寄存器位
0
PIN0
1:输出
0:输入
150
Version 1.23
SWM201 系列
GPIOx 中断触发条件寄存器 INTLVLTRG
寄存器
偏移
类型
复位值
描述
INTLVLTRG
0x08
R/W
0x00
GPIO 中断触发方式
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
Px15 引脚中断敏感条件寄存器位
15
PIN15
1:电平检测
0:边沿检测
Px14 引脚中断敏感条件寄存器位
14
PIN14
1:电平检测
0:边沿检测
Px13 引脚中断敏感条件寄存器位
13
PIN13
1:电平检测
0:边沿检测
Px12 引脚中断敏感条件寄存器位
12
PIN12
1:电平检测
0:边沿检测
Px11 引脚中断敏感条件寄存器位
11
PIN11
1:电平检测
0:边沿检测
Px10 引脚中断敏感条件寄存器位
10
PIN10
1:电平检测
0:边沿检测
Px9 引脚中断敏感条件寄存器位
9
PIN9
1:电平检测
0:边沿检测
Px8 引脚中断敏感条件寄存器位
8
PIN8
1:电平检测
0:边沿检测
151
Version 1.23
SWM201 系列
Px7 引脚中断敏感条件寄存器位
7
PIN7
1:电平检测
0:边沿检测
Px6 引脚中断敏感条件寄存器位
6
PIN6
1:电平检测
0:边沿检测
Px5 引脚中断敏感条件寄存器位
5
PIN5
1:电平检测
0:边沿检测
Px4 引脚中断敏感条件寄存器位
4
PIN4
1:电平检测
0:边沿检测
Px3 引脚中断敏感条件寄存器位
3
PIN3
1:电平检测
0:边沿检测
Px2 引脚中断敏感条件寄存器位
2
PIN2
1:电平检测
0:边沿检测
Px1 引脚中断敏感条件寄存器位
1
PIN1
1:电平检测
0:边沿检测
Px0 引脚中断敏感条件寄存器位
0
PIN0
1:电平检测
0:边沿检测
152
Version 1.23
SWM201 系列
GPIOx 中断沿触发配置寄存器 INTBE
寄存器
偏移
类型
复位值
描述
INTBE
0x0c
R/W
0x00
GPIOx 中断沿触发配置寄存器
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
Px15 引脚中断沿触发配置寄存器位
15
PIN15
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px14 引脚中断沿触发配置寄存器位
14
PIN14
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px13 引脚中断沿触发配置寄存器位
13
PIN13
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px12 引脚中断沿触发配置寄存器位
12
PIN12
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px11 引脚中断沿触发配置寄存器位
11
PIN11
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px10 引脚中断沿触发配置寄存器位
10
PIN10
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
153
Version 1.23
SWM201 系列
Px9 引脚中断沿触发配置寄存器位
9
PIN9
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px8 引脚中断沿触发配置寄存器位
8
PIN8
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px7 引脚中断沿触发配置寄存器位
7
PIN7
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px6 引脚中断沿触发配置寄存器位
6
PIN6
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px5 引脚中断沿触发配置寄存器位
5
PIN5
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px4 引脚中断沿触发配置寄存器位
4
PIN4
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px3 引脚中断沿触发配置寄存器位
3
PIN3
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px2 引脚中断沿触发配置寄存器位
2
PIN2
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px1 引脚中断沿触发配置寄存器位
1
PIN1
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
Px0 引脚中断沿触发配置寄存器位
0
PIN0
1:相应位为双边沿触发中断,即上升沿和下降沿都会触发中断
0:相应位为单边沿触发中断,由 INTRISEEN 寄存器相应位确定是上升沿/下降沿触
发
154
Version 1.23
SWM201 系列
GPIOx 中断触发极性寄存器 INTRISEEN
寄存器
偏移
类型
复位值
描述
INTRISEEN
0x10
R/W
0x00
GPIO 中断触发极性
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
Px15 引脚中断事件寄存器位
15
PIN15
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px14 引脚中断事件寄存器位
14
PIN14
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px13 引脚中断事件寄存器位
13
PIN13
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px12 引脚中断事件寄存器位
12
PIN12
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px11 引脚中断事件寄存器位
11
PIN11
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px10 引脚中断事件寄存器位
10
PIN10
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px9 引脚中断事件寄存器位
9
PIN9
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px8 引脚中断事件寄存器位
8
PIN8
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
155
Version 1.23
SWM201 系列
Px7 引脚中断事件寄存器位
7
PIN7
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px6 引脚中断事件寄存器位
6
PIN6
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px5 引脚中断事件寄存器位
5
PIN5
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px4 引脚中断事件寄存器位
4
PIN4
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px3 引脚中断事件寄存器位
3
PIN3
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px2 引脚中断事件寄存器位
2
PIN2
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px1 引脚中断事件寄存器位
1
PIN1
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
Px0 引脚中断事件寄存器位
0
PIN0
1:上升沿/高电平触发中断
0:下降沿/低电平触发中断
156
Version 1.23
SWM201 系列
GPIOx 中断使能寄存器 INTEN
寄存器
偏移
类型
复位值
描述
INTEN
0x14
R/W
0x00
GPIO 中断使能
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
Px15 引脚中断使能寄存器位
15
PIN15
1:相应位为中断使能
0:相应位为中断禁止
Px14 引脚中断使能寄存器位
14
PIN14
1:相应位为中断使能
0:相应位为中断禁止
Px13 引脚中断使能寄存器位
13
PIN13
1:相应位为中断使能
0:相应位为中断禁止
Px12 引脚中断使能寄存器位
12
PIN12
1:相应位为中断使能
0:相应位为中断禁止
Px11 引脚中断使能寄存器位
11
PIN11
1:相应位为中断使能
0:相应位为中断禁止
Px10 引脚中断使能寄存器位
10
PIN10
1:相应位为中断使能
0:相应位为中断禁止
Px9 引脚中断使能寄存器位
9
PIN9
1:相应位为中断使能
0:相应位为中断禁止
Px8 引脚中断使能寄存器位
8
PIN8
1:相应位为中断使能
0:相应位为中断禁止
157
Version 1.23
SWM201 系列
Px7 引脚中断使能寄存器位
7
PIN7
1:相应位为中断使能
0:相应位为中断禁止
Px6 引脚中断使能寄存器位
6
PIN6
1:相应位为中断使能
0:相应位为中断禁止
Px5 引脚中断使能寄存器位
5
PIN5
1:相应位为中断使能
0:相应位为中断禁止
Px4 引脚中断使能寄存器位
4
PIN4
1:相应位为中断使能
0:相应位为中断禁止
Px3 引脚中断使能寄存器位
3
PIN3
1:相应位为中断使能
0:相应位为中断禁止
Px2 引脚中断使能寄存器位
2
PIN2
1:相应位为中断使能
0:相应位为中断禁止
Px1 引脚中断使能寄存器位
1
PIN1
1:相应位为中断使能
0:相应位为中断禁止
Px0 引脚中断使能寄存器位
0
PIN0
1:相应位为中断使能
0:相应位为中断禁止
158
Version 1.23
SWM201 系列
GPIOx 原始中断状态寄存器 INTRAWSTAT
寄存器
偏移
类型
复位值
描述
INTRAWSTAT
0x18
R/W
0x00
GPIO 中断原始状态
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
Px15 引脚原始中断状态寄存器位
15
PIN15
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px14 引脚原始中断状态寄存器位
14
PIN14
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px13 引脚原始中断状态寄存器位
13
PIN13
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px12 引脚原始中断状态寄存器位
12
PIN12
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px11 引脚原始中断状态寄存器位
11
PIN11
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px10 引脚原始中断状态寄存器位
10
PIN10
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px9 引脚原始中断状态寄存器位
9
PIN9
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px8 引脚原始中断状态寄存器位
8
PIN8
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
159
Version 1.23
SWM201 系列
Px7 引脚原始中断状态寄存器位
7
PIN7
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px6 引脚原始中断状态寄存器位
6
PIN6
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px5 引脚原始中断状态寄存器位
5
PIN5
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px4 引脚原始中断状态寄存器位
4
PIN4
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px3 引脚原始中断状态寄存器位
3
PIN3
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px2 引脚原始中断状态寄存器位
2
PIN2
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px1 引脚原始中断状态寄存器位
1
PIN1
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
Px0 引脚原始中断状态寄存器位
0
PIN0
1:检测到中断触发条件(不受使能影响)
0:没有检测到中断触发条件(不受使能影响)
160
Version 1.23
SWM201 系列
GPIOx 中断状态寄存器 INTSTAT
寄存器
偏移
类型
复位值
描述
INTSTAT
0x1c
R/W
0x00
GPIO 中断状态
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
Px15 引脚中断状态寄存器位
15
PIN15
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px14 引脚中断状态寄存器位
14
PIN14
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px13 引脚中断状态寄存器位
13
PIN13
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px12 引脚中断状态寄存器位
12
PIN12
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px11 引脚中断状态寄存器位
11
PIN11
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px10 引脚中断状态寄存器位
10
PIN10
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
161
Version 1.23
SWM201 系列
Px9 引脚中断状态寄存器位
9
PIN9
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px8 引脚中断状态寄存器位
8
PIN8
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px7 引脚中断状态寄存器位
7
PIN7
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px6 引脚中断状态寄存器位
6
PIN6
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px5 引脚中断状态寄存器位
5
PIN5
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px4 引脚中断状态寄存器位
4
PIN4
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px3 引脚中断状态寄存器位
3
PIN3
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px2 引脚中断状态寄存器位
2
PIN2
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px1 引脚中断状态寄存器位
1
PIN1
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
Px0 引脚中断状态寄存器位
0
PIN0
1:检测到了中断
0:没有检测到中断
INTSTAT.PINx = INTRAWSTAT.PINx & INTEN.PINx
162
Version 1.23
SWM201 系列
GPIOx 中断清除寄存器 INTCLR
寄存器
偏移
类型
复位值
描述
INTCLR
0x20
R/W
0x00
GPIO 中断清除
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
-
15
PIN15
Px15 引脚中断清除寄存器位,写 1 清除中断
14
PIN14
Px14 引脚中断清除寄存器位,写 1 清除中断
13
PIN13
Px13 引脚中断清除寄存器位,写 1 清除中断
12
PIN12
Px12 引脚中断清除寄存器位,写 1 清除中断
11
PIN11
Px11 引脚中断清除寄存器位,写 1 清除中断
10
PIN10
Px10 引脚中断清除寄存器位,写 1 清除中断
9
PIN9
Px9 引脚中断清除寄存器位,写 1 清除中断
8
PIN8
Px8 引脚中断清除寄存器位,写 1 清除中断
7
PIN7
Px7 引脚中断清除寄存器位,写 1 清除中断
6
PIN6
Px6 引脚中断清除寄存器位,写 1 清除中断
5
PIN5
Px5 引脚中断清除寄存器位,写 1 清除中断
4
PIN4
Px4 引脚中断清除寄存器位,写 1 清除中断
3
PIN3
Px3 引脚中断清除寄存器位,写 1 清除中断
2
PIN2
Px2 引脚中断清除寄存器位,写 1 清除中断
1
PIN1
Px1 引脚中断清除寄存器位,写 1 清除中断
0
PIN0
Px0 引脚中断清除寄存器位,写 1 清除中断
163
Version 1.23
SWM201 系列
GPIOx 读数据寄存器 IDR
寄存器
偏移
类型
复位值
描述
IDR
0x30
R/W
0x00
GPIO 读数据寄存器
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
12
11
10
9
8
PIN15
PIN14
PIN13
PIN12
PIN11
PIN10
PIN9
PIN8
7
6
5
4
3
2
1
0
PIN7
PIN6
PIN5
PIN4
PIN3
PIN2
PIN1
PIN0
位域
名称
描述
31:16
-
-
15
PIN15
Px15 引脚数据读寄存器位
14
PIN14
Px14 引脚数据读寄存器位
13
PIN13
Px13 引脚数据读寄存器位
12
PIN12
Px12 引脚数据读寄存器位
11
PIN11
Px11 引脚数据读寄存器位
10
PIN10
Px10 引脚数据读寄存器位
9
PIN9
Px9 引脚数据读寄存器位
8
PIN8
Px8 引脚数据读寄存器位
7
PIN7
Px7 引脚数据读寄存器位
6
PIN6
Px6 引脚数据读寄存器位
5
PIN5
Px5 引脚数据读寄存器位
4
PIN4
Px4 引脚数据读寄存器位
3
PIN3
Px3 引脚数据读寄存器位
2
PIN2
Px2 引脚数据读寄存器位
1
PIN1
Px1 引脚数据读寄存器位
0
PIN0
Px0 引脚数据读寄存器位
164
Version 1.23
SWM201 系列
GPIOx PINn 数据寄存器 DATAPINx(x = 0~15)
寄存器
偏移
类型
复位值
描述
DATAPIN0
0x40
R/W
0x00
GPIO PIN0 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN1
0x44
R/W
0x00
GPIO PIN1 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN2
0x48
R/W
0x00
GPIO PIN2 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN3
0x4C
R/W
0x00
GPIO PIN3 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN4
0x50
R/W
0x00
GPIO PIN4 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN5
0x54
R/W
0x00
GPIO PIN5 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN6
0x58
R/W
0x00
GPIO PIN6 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN7
0x5C
R/W
0x00
GPIO PIN7 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN8
0x60
R/W
0x00
GPIO PIN8 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN9
0x64
R/W
0x00
GPIO PIN9 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN10
0x68
R/W
0x00
GPIO PIN10 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN11
0x6C
R/W
0x00
GPIO PIN11 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN12
0x70
R/W
0x00
GPIO PIN12 数据寄存器
寄存器
偏移
类型
复位值
描述
165
Version 1.23
SWM201 系列
DATAPIN13
0x74
R/W
0x00
GPIO PIN13 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN14
0x78
R/W
0x00
GPIO PIN14 数据寄存器
寄存器
偏移
类型
复位值
描述
DATAPIN15
0x7C
R/W
0x00
GPIO PIN15 数据寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
DATAPINi
GPIOx PINn 数据寄存器。
0
DATAPINi
读:GPIOx PINn 的输入数据
写:GPIOx PINn 的输出数据
166
Version 1.23
SWM201 系列
6.8
加强型定时器(TIMER)
6.8.1
概述
SWM201 系列所有型号 TIMER 操作均相同,不同型号具备 TIMER 数量可能不同。使用前需使能
TIMER 模块时钟。
每个 TIMER 模块均具备定时器功能(使用片内时钟作为计数基准)和计数器功能(使用片外时
钟作为计数基准)、输出比较及输入捕获功能。
TIMER0 支持 Hall 功能及连续脉宽捕捉功能。
6.8.2
特性
⚫
2 路 32 位通用定时器
◼
24 位计数器
◼
8 位预分频
⚫
可单独配置计时触发条件为内部时钟或者外部输入
⚫
支持脉冲捕获及宽度测量,检测脉冲极性可配
⚫
支持脉冲发送功能,可作为 PWM 使用
⚫
TIMER0 支持 HALL 功能,可采集霍尔传感器
⚫
TIMER0~1 输出可作为外部触发事件信号
⚫
定时器溢出脉冲输出,可用于触发 ADC
167
Version 1.23
SWM201 系列
模块结构框图
6.8.3
LDVAL
时基单元
输出比较单元OC
输入捕获单元IC
EN
PCLK
0
TxI
1
HALT
8-bit PSC
24-bit Down
Counter
IE
CKSRC
=0
IF
IRQ
波形发生器
TxO
OCIE
OCIF
=
OCR
ICRIE
ICREN
ICRIF
ICRR
TxI
ICFIE
ICFEN
ICFIF
ICFR
图 6-10 TIMER 模块结构框图
168
Version 1.23
SWM201 系列
功能描述
6.8.4
定时器
使用 TIMERx 作为定时器时,为递减计数。流程如下:
⚫
将控制寄存器(CRx)中 MODx 位配置为定时器,CLKSRCx 位配置计数源选择,配置为
使用系统时钟作为计数源。
⚫
通过装载值寄存器(LOADx)设置计数起始值。
⚫
使能寄存器(EN)对应位使能为 1。
⚫
对应 TIMERx 开始递减计数,计数到 0 时,产生中断,同时重新装载计数值,进行下
一周期计数。
在计数过程中,可通过对当前值寄存器(VALUEx)进行读取,获取当前计数值。
定时器计数过程中改变装载值寄存器(LOADx)值,将在下个计数周期(计数到 0 重新装载)
生效,不会改变本周期计数值。
定时器计数过程中,可以通过 HALT 寄存器控制位置 1 暂停指定通道计数,置 0 后继续计数。
如图 6-11 所示。
CLK
CVALx
V1
LDVALx
V1
V1-1
V1-2
2
1
0
V2
V2-1
V2-2
2
1
0
V2
IF
EN
图 6-11 定时器工作示意图
计数器
使用 TIMERx 作为计数器时,为递减计数。流程如下:
⚫
将控制寄存器(CRx)中 MODx 位配置为计数器,CLKSRCx 位计数源选择配置为外部的
cntsrc 的上升沿。此时,对应 TIMER 将以配置为 CNT 引脚外部输入的上升沿作为计数
目标。
⚫
针对外部信号输入引脚进行如下操作:
◼
配置 PORTCON 模块中 INEN 寄存器使能引脚输入功能。
◼
通过 PORTX_FUNC 寄存器将引脚切换为指定数字功能。
169
Version 1.23
SWM201 系列
⚫
通过装载值寄存器(LOADx)设置计数目标值。
⚫
使能寄存器(EN)对应位使能为 1,对应 TIMERx 开始递减计数,计数到 0 时,产生
中断,同时重新装载计数值,进行下一周期计数。
在计数过程中,可通过对当前值寄存器(VALUEx)进行读取,获取当前计数值。
定时器计数过程中改变装载值寄存器(LOADx)值,将在下个计数周期(计数到 0 重新装载)
生效,不会改变本周期计数值。
计数器使用过程中,可以通过 HALT 寄存器控制位置 1 暂停指定通道计数,置 0 后继续计数。
示意图如图 6-12 所示。
CLK
TIMER_IN
CVALx
V1
LDVALx
V1-1
V1-2
2
1
0
V2
V2-1
V2-2
2
1
0
V2
V1
IF
EN
图 6-12 计数器工作示意图
级联
当 TIMER 无法满足计数宽度或时间长度时,可以通过级联方式,使计数周期为 TIMER 位宽相乘
的关系。最高支持两级级联。
使用方式如下:
⚫
TIMERn 根据需要设置为定时器或计数器模式
⚫
TIMERn+1 设置为级联模式(CLKSRCx 位配置为使用上一路计数器的进位标志)
⚫
LOADn = 目标计数值 A
⚫
LOADn+1 = 目标计数值 B,总计数周期为 A*B
⚫
使能 TIMERn+1 中断
⚫
使能 TIMERn+1
⚫
使能 TIMERn
⚫
TIMERn+1 中断产生,在中断程序中使能 TIMERn 中断
⚫
TIMERn 中断产生,计数周期完成
示意图如图 6-13 所示:
170
Version 1.23
SWM201 系列
CLK
CVAL0
0XFFF FFFFF
CVAL1
3
2
0XFFF FFFFF
LDVAL0
1
0XFFF FFFFF
LDVAL1
0
3
2
2
1
0
3
2
1
1
0
3
0
2
1
2
0
3
2
1
0X00000003
0XFFF FFFFF
0X00000002
IF0
IF1
EN0
EN1
图 6-13 级联模式工作示意图
脉冲发送
所有 TIMER 模块均支持脉冲发送功能,可发送指定脉宽的方波。该计数器为向下计数。使用方
式如下:
⚫
⚫
⚫
针对外部信号输入引脚进行如下操作
◼
配置 PORTCON 模块中使能引脚输出功能
◼
通过 PORTX_FUNC 寄存器将引脚切换为 TIMER 对应数字功能
TIMER 初始化
◼
指定要被设置的定时器
◼
设置 TIMER 的工作模式为 OC(输出比较)模式
◼
设置定时周期
输出比较功能初始化
◼
指定要被设置的定时器
◼
设置当计数器的值递减到 MATCH 时引脚输出电平翻转
◼
设置初始输出电平
⚫
启动定时器
⚫
每次周期结束时,会更新翻转电平配置
示意图如图 6-14 所示:
171
Version 1.23
SWM201 系列
LDVAL
OCMAT0
OCMAT1
TOIF
OC0IF
OC1IF
TxO
图 6-14 脉冲发送示意图
在使用过程中,我们一般将 OCMAT1 的值设置为当前的 TIMER 值来输出 PWM 波,示意图如图
6-15 所示:
LDVAL=
OCMAT1
OCMAT0
TOIF
OC0IF
OC1IF
TxO
图 6-15 输出脉冲比较点 1 等于周期脉冲发送示意图
脉冲捕捉
所有 TIMER 模块均支持用于捕捉外部脉宽,可记录外部单个脉冲宽度。
172
Version 1.23
SWM201 系列
使用方式如下:
⚫
针对外部信号输入引脚进行如下操作
◼
配置 PORTCON 模块中 INEN 寄存器使能引脚输入功能
◼
通过 PORTX_FUNC 寄存器将引脚切换为 TIMER 对应数字功能
⚫
设置中断使能寄存器(IEx),使能中断
⚫
使能寄存器(EN)对应位使能,启动捕捉功能
⚫
当指定引脚出现变化沿时,开始记录宽度,再次出现沿时,将对应种类的脉宽长度记
录于 ICLOWx 或 ICHIGHx 寄存器,并产生中断。
⚫
进入中断,读取脉冲长度寄存器,获取指定种类的脉冲宽度
⚫
如果不操作 EN 位,则持续记录电平宽度,直至 EN 位关闭。
捕捉高电平示意图如图 6-16 所示。
CLK
P_CNT
0
1
2
3
4
0
1
2
0
HIGH
P_CVAL
0
4
0
2
0
PIF
PIE
EN
图 6-16 单次高电平捕捉示意图
低电平示意图如图 6-17 所示。
CLK
P_CNT
0
1
2
3
4
0
1
2
0
HIGH
P_CVAL
0
4
0
2
0
PIF
PIE
EN
图 6-17 单次低电平捕捉示意图
霍尔接口
TIMER0 模块提供了 HALL 接口功能,能够自动记录脉冲变化间隔,并产生中断。
使用方式如下:
173
Version 1.23
SWM201 系列
⚫
HALL 功能为指定引脚,且不同封装可能有所差异,具体引脚详见管教排布:
◼
配置 PORTCON 模块中 INEN 寄存器使能引脚输入功能
◼
通过 PORTX_FUNC 寄存器将引脚切换为 HALL 功能
⚫
配置 HALLSR 寄存器,设置对应 HALL 输入信号的原状态
⚫
配置 TIMER0 装载值寄存器(LOADx)
⚫
使能 HALL 模式控制寄存器中输入 HALL 信号触发使能位(HALLEN)
⚫
清除输入 HALL 信号触发中断的状态(HALLIF)
⚫
使能 HALL 中断(HALLIE)
⚫
TIMER0 使能(EN)
⚫
当外部 HALLX 引脚产生指定电平变化时,将(计数器加载值-计数器当前值)的结果
保存到寄存器 HALLDR 中,计数器复位到加载值重新计数,并产生 TIMER 中断。同时
HALLIF 寄存器 IFx 将产生对应标示位,标识对应引脚产生电平变化。
记录示意图如图 6-18 所示。
hall0
hall1
hall2
cnt0
cnt1
cnt2
cnt3
cnt4
cnt5
cnt6
CNT(counter)
HALLTIM
0000
CNT加载值cnt0
CNT加载值cnt2
CNT加载值cnt5
图 6-18 HALL 记录值
HALL0、HALL1、HALL2 是 HALL 功能的三个输入引脚,任意一个 HALL 引脚上出现跳变沿时,将
(计数器加载值-计数器当前值)的结果保存到寄存器 HALLDR 中,并且计数器复位到加载值重
新计数。
HALL0~2 信号输入同时支持连接至 CMP0~2,可通过 ACMPCR2 寄存器 HALLx 位配置,可选择为
CMPxOUT 引脚或者 HALL IO 引脚。
174
Version 1.23
SWM201 系列
HALL0(IO)
CMP0OUT
HALL0
ACMPCR2.HALL0
HALL1(IO)
CMP1OUT
HALL1
ACMPCR2.HALL1
HALL2(IO)
CMP2OUT
HALL2
ACMPCR2.HALL2
图 6-19 HALL 对应关系图
中断配置与清除
每路 TIMER 均具备独立中断,通过中断使能寄存器 IE 进行各 TIMER 中断使能。通过中断状态寄
存器 IF 进行中断查询及清除。
TIMER 中断
可通过配置中断使能寄存器 IEx 相应位使能中断。当检测到中断触发条件时,中断标志寄存器
IFx 相应位中置 1。如需清除此标志,需在相应标志位中写 1 清零(R/W1C),否则中断在开启
状态下会一直进入。
HALL 中断
可通过配置 HALL 模式控制寄存器对应位设置输入 HALLx 信号触发中断的条件:上升沿、下降
沿、上升沿和下降沿。可通过配置 HALL 中断使能寄存器 HALLIE 相应位使能中断。当检测到中
断触发条件时,HALL 中断标志寄存器 HALLIF 相应位中置 1。如需清除此标志,需在相应标志位
中写 1 清零(R/W1C),否则中断在开启状态下会一直进入。
175
Version 1.23
SWM201 系列
6.8.5
寄存器映射
名称
偏移
类型
复位值
TIMER0
BASE:0x40046800
TIMER1
BASE:0x40046840
描述
LOADx
0x0
RW
0x00
TIMERx 装载值寄存器
VALUEx
0x4
RO
0xFFFFF
TIMERx 当前计数值寄存器
CRx
0x8
RW
0x00
TIMERx 控制寄存器
IEx
0x10
RW
0x00
TIMERx 中断使能寄存器
IFx
0x14
R/W1C
0x00
TIMERx 中断状态。写 1 清零。
HALTx
0x18
R/W
0x00
TIMERx 暂停控制
OCCRx
0x1C
R/W
0x00
TIMER 发送脉冲控制信号
OCMAT0x
0x20
RW
0x00
PWM 输出脉冲第一个反转值
OCMAT1x
0x24
RW
0x00
PWM 输出脉冲第二个反转值
ICLOWx
0x28
RO
0x00
输入脉冲低电平长度
ICHIGHx
0x2C
RO
0x00
输入脉冲高电平长度
PREDIVx
0x30
RW
0x00
TIMERx 预分频器装载值寄存器
HALLIE
0x400
RW
0x00
HALL 中断使能
HALLIF
0x408
R/W1C
0x00
HALL 中断状态
HALLEN
0x40C
RW
0x00
HALL 模式控制
HALLDR
0x410
RO
0x00
HALL 数据寄存器
HALLSR
0x41C
RO
0x00
外部 HALL 输入信号的状态寄存器
EN
0x440
RW
0x00
TIMER 使能寄存器
176
Version 1.23
SWM201 系列
寄存器描述
6.8.6
装载值寄存器 LOADx
寄存器
偏移
类型
复位值
描述
LOADx
0x0
RW
0x00
TIMERx 装载值寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
LOADx
15
14
13
12
LOADx
7
6
5
4
LOADx
位域
名称
描述
31:24
-
-
23:0
LOADx
定时器通道 x 的装载值
177
Version 1.23
SWM201 系列
当前值寄存器 VALUEx
寄存器
偏移
类型
复位值
描述
VALUEx
0x4
RO
0xFFFFF
TIMERx 当前计数值寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
VALUEx
15
14
13
12
VALUEx
7
6
5
4
VALUEx
位域
名称
描述
31:24
-
-
23:0
VALUEx
定时器通道 x 的计数器当前值
178
Version 1.23
SWM201 系列
控制寄存器 CRx
寄存器
偏移
类型
复位值
描述
CRx
0x8
RW
0x00
TIMERx 控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
-
4
ICEDGEx
位域
名称
描述
31:4
-
-
MODEx
CLKSRCx
输入脉冲测量模式下,计数模式:
00:检测到上升沿或者下降沿后开始计数
5:4
ICEDGEx
01:检测到上升沿开始计数
10:检测到下降沿开始计数
定时器工作模式:
3:2
MODEx
00:普通定时器模式
01:输入脉冲测量模式
10:输出 PWM 模式
定时器计数源选择:
00:使用内部系统时钟上升沿
1:0
CLKSRCx
01:使用上一路计数器的进位标志(x=1 时,使用第 0 路;x=2 时,使用第 1 路;
依次类推,x=0 时,使用第 TM_NO-1 路,最多支持两级级联)
10:使用外部的 cntsrc 的上升沿
179
Version 1.23
SWM201 系列
中断使能寄存器 IEx
寄存器
偏移
类型
复位值
描述
IEx
0x10
RW
0x00
TIMERx 中断使能寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
4
3
2
1
0
ICF
ICR
OC1
OC0
TO
23
22
21
20
-
15
14
13
12
-
7
6
5
-
位域
名称
描述
31:5
-
输入脉冲下降沿中断使能
4
ICF
1:使能
0:禁能
输入脉冲上升沿中断使能
3
ICR
1:使能
0:禁能
输出 PWM 翻转点 1 中断使能
2
OC1
1:使能
0:禁能
输出 PWM 翻转点 0 中断使能
1
OC0
1:使能
0:禁能
计数器溢出中断
0
TO
1:使能
0:禁能
180
Version 1.23
SWM201 系列
中断状态寄存器 IFx
寄存器
偏移
类型
复位值
描述
IFx
0x14
R/W1C
0x00
TIMERx 中断状态。写 1 清零。
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
4
3
2
1
0
ICF
ICR
OC1
OC0
TO
23
22
21
20
-
15
14
13
12
-
7
6
5
-
位域
名称
描述
31:5
-
输入脉冲下降沿中断状态,R/W1C
4
ICF
1:中断发生
0:中断未发生
输入脉冲上升沿中断状态,R/W1C
3
ICR
1:中断发生
0:中断未发生
输出 PWM 翻转点 1 中断状态,R/W1C
2
OC1
1:中断发生
0:中断未发生
输出 PWM 翻转点 0 中断状态,R/W1C
1
OC0
1:中断发生
0:中断未发生
计数器溢出中断状态,R/W1C
1:中断发生
0
TO
0:中断未发生
当使用级联功能时,高一级的中断不会触发,低一级的中断在全部计数结束后触
发。比如通道 0 和通道 1 级联,当通道 1 和通道 0 的计数都到 0 时,通道 0 的溢
出中断才会触发,通道 1 的溢出中断始终不会触发。
181
Version 1.23
SWM201 系列
暂停控制寄存器 HALTx
寄存器
偏移
类型
复位值
描述
HALTx
0x18
R/W
0x00
TIMERx 暂停控制
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
HALTx
定时器暂停控制
0
HALTx
1:暂停当前定时器的计数
0:当前定时器正常减计数
182
Version 1.23
SWM201 系列
发送脉冲控制信号寄存器 OCCRx
寄存器
偏移
类型
复位值
描述
OCCRx
0x1C
R/W
0x00
TIMER 发送脉冲控制信号
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
FORCEEN
INITLVL
FORCELVL
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:3
-
-
2
FORCEEN
Force Level,强制输出使能
1
INITLVL
Initial Level,初始输出电平
0
FORCELVL
Force Level,强制输出电平
183
Version 1.23
SWM201 系列
输出脉冲第一个反转值寄存器 OCMAT0x
寄存器
偏移
类型
复位值
描述
OCMAT0x
0x20
RW
0x00
PWM 输出脉冲第一个反转值
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
OCMAT0x
15
14
13
12
OCMAT0x
7
6
5
4
OCMAT0x
位域
名称
描述
31:24
-
-
23:0
OCMAT0x
PWM 输出脉冲第一个反转值
184
Version 1.23
SWM201 系列
输出脉冲第二个反转值寄存器 OCMAT1x
寄存器
偏移
类型
复位值
描述
OCMAT1x
0x24
RW
0x00
PWM 输出脉冲第二个反转值
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
OCMAT1x
15
14
13
12
OCMAT1x
7
6
5
4
OCMAT1x
位域
名称
描述
31:24
-
-
23:0
OCMAT1x
PWM 输出脉冲第二个反转值
185
Version 1.23
SWM201 系列
输入脉冲低电平长度寄存器 ICLOWx
寄存器
偏移
类型
复位值
描述
ICLOWx
0x28
RO
0x00
输入脉冲低电平长度
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
ICLOWx
15
14
13
12
ICLOWx
7
6
5
4
ICLOWx
位域
名称
描述
31:24
-
-
23:0
ICLOWx
输入脉冲低电平长度
186
Version 1.23
SWM201 系列
输入脉冲高电平长度寄存器 ICHIGHx
寄存器
偏移
类型
复位值
描述
ICHIGHx
0x2C
RO
0x00
输入脉冲高电平长度
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
ICHIGHx
15
14
13
12
ICHIGHx
7
6
5
4
ICHIGHx
位域
名称
描述
31:24
-
-
23:0
ICHIGHx
输入脉冲高电平长度
187
Version 1.23
SWM201 系列
预分频器装载值寄存器 PREDIVx
寄存器
偏移
类型
复位值
描述
PREDIVx
0x30
RW
0x00
TIMERx 预分频器装载值寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
PREDIVx
位域
名称
描述
31:8
-
定时器时钟分频
0:1 分频
7:0
PREDIVx
1:2 分频
……
254:255 分频
255:256 分频
188
Version 1.23
SWM201 系列
HALL 中断使能寄存器 HALLIE
寄存器
偏移
类型
复位值
描述
HALLIE
0x400
RW
0x00
HALL 中断使能
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
HALLIE
HALL 中断使能。
0
HALLIE
1:HALL 中断使能
0:HALL 中断禁能
189
Version 1.23
SWM201 系列
HALL 中断状态寄存器 HALLIF
寄存器
偏移
类型
复位值
描述
HALLIF
0x408
R/W1C
0x00
HALL 中断状态
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
IN2
IN1
IN0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:3
-
输入 HALL 信号 2 触发中断的状态,R/W1C
2
IN2
1:中断已发生
0:中断未发生
输入 HALL 信号 1 触发中断的状态,R/W1C
1
IN1
1:中断已发生
0:中断未发生
输入 HALL 信号 0 触发中断的状态,R/W1C
0
IN0
1:中断已发生
0:中断未发生
190
Version 1.23
SWM201 系列
HALL 模式控制寄存器 HALLEN
寄存器
偏移
类型
复位值
描述
HALLEN
0x40C
RW
0x00
HALL 模式控制
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
EN
输入 HALL 信号触发使能
0
EN
0:不触发
1:触发
191
Version 1.23
SWM201 系列
HALL 数据寄存器 HALLDR
寄存器
偏移
类型
复位值
描述
HALLDR
0x410
RO
0x00
HALL 数据寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
HALLDR
15
14
13
12
HALLDR
7
6
5
4
HALLDR
位域
名称
描述
31:24
-
HALL 信号触发时,通道计数器的计数值。
23:0
HALLDR
仅当定义 HALL 是有效,否则为只读,且为常 0。
HALL 输入跳变沿将计数器(加载值-当前值)存入此寄存器
192
Version 1.23
SWM201 系列
外部 HALL 输入信号的状态寄存器 HALLSR
寄存器
偏移
类型
复位值
描述
HALLSR
0x41C
RO
0x00
外部 HALL 输入信号的状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
HALLSR2
HALLSR1
HALLSR0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:3
-
-
2
HALLSR2
输入 HALL 信号 2 的原状态
1
HALLSR1
输入 HALL 信号 1 的原状态
0
HALLSR0
输入 HALL 信号 0 的原状态
193
Version 1.23
SWM201 系列
使能寄存器 EN
寄存器
偏移
类型
复位值
描述
EN
0x440
R/W
0x00
TIMER 使能寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
EN1
EN0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:3
-
TIMER1 使能
1
EN1
1:使能
0:禁能
TIMER0 使能
0
EN0
1:使能
0:禁能
194
Version 1.23
SWM201 系列
6.9
基础定时器(BTIMER)
概述
6.9.1
基础计数器模块,SWM201 系列所有型号 BTIMER 操作均相同,不同型号 BTIMER 数量可能不
同。使用前需使能 BTIMER 模块时钟。
每个 BTIMER 模块均具备定时器功能,并具备一个 8 位分频器,每个定时器具备独立中断源。
特性
6.9.2
⚫
4 路 24 位通用定时器
⚫
每路均具备独立 8 位预分频
⚫
独立中断源
195
Version 1.23
SWM201 系列
6.9.3
模块结构框图
LDVAL
时基单元
EN
HALT
PCLK1
8位预分频
24-bit Down
Counter
IE
=0
IF
IRQ
图 6-20 BTIMER 模块结构框图
196
Version 1.23
SWM201 系列
功能描述
6.9.4
使用 BTIMERx 作为定时器时,为递减计数,计数源为系统时钟。
定时器
使用流程如下:
⚫
通过预分频寄存器(PREDIVx)设置预分频目标值(8BIT),对系统时钟进行分频。
⚫
通过装载值寄存器(LOADx)设置计数目标值(24BIT)。
⚫
通过中断使能寄存器(IEx)配置中断使能。
⚫
通过使能寄存器(EN)进行对应 BTIMERx 使能。
⚫
对应 BTIMERx 开始递减计数,计数到 0 时,产生中断,同时重新从装载值寄存器
(LOADx)装载计数值,进行下一周期计数。
⚫
中断通过中断状态寄存器(IFx)进行查询(IEx 使能情况下),同时对该寄存器进
行写 1 操作清除中断
⚫
在计数过程中,可通过对当前值寄存器(VALUEx)进行读取,获取当前计数值。
⚫
定时器计数过程中改变装载值寄存器(LOADx)值,同时向装载位(RELOAD)写
1,BTIMER 将立刻重新装载改变值并计数(RELAOD 位硬件自动清 0),当前计数
周期被中断。若不对装载位(RELOAD)进行操作,则改变值将在下个计数周期
(计数到 0 重新装载)生效,不会改变本周期计数值。
如图 6-21、图 6-22 所示。
CLK
CVALx
V1
LDVALx
V1
V1-1
V1-2
2
1
0
V2
V2-1
V2-2
2
1
0
V2
IF
EN
图 6-21 定时器工作示意图
197
Version 1.23
SWM201 系列
CLK
CVALx
V1
LDVALx
V1
V1-1
V1-2
30
29
V2
V2-1
V2-2
V2-3
2
1
0
V2
IF
EN
RELOAD
图 6-22 定时器 RELOAD 工作示意图
中断配置与清除
每路 TIMER 均具备独立中断,通过中断使能寄存器 IE 进行各 TIMER 中断使能。通过中断状态寄
存器 IF 进行中断查询及清除。
可通过配置中断使能寄存器 IEx 使能中断。当 TIMER 计数到 0 时,中断标志寄存器 IFx 置 1。如
需清除此标志,需在标志位中写 1 清零(R/W1C),否则中断在开启状态下会一直进入。
198
Version 1.23
SWM201 系列
6.9.5
名称
寄存器映射
偏移
类型
复位值
BTIMER0
BASE:0x40048800
BTIMER1
BASE:0x40048840
BTIMER2
BASE:0x40048880
BTIMER3
BASE:0x400488C0
描述
LOADx
0x0
RW
0x00
BTIMERx 装载值寄存器
VALUEx
0x4
RO
0xFFFFF
BTIMERx 当前计数值寄存器
IEx
0x10
RW
0x00
BTIMERx 中断使能寄存器
IFx
0x14
R/W1C
0x00
BTIMERx 中断状态。写 1 清零。
PREDIVx
0x30
RW
0x00
BTIMERx 预分频器装载值寄存器
EN
0x440
RW
0x00
BTIMERx 使能寄存器
199
Version 1.23
SWM201 系列
寄存器描述
6.9.6
装载值寄存器 LOADx
寄存器
偏移
类型
复位值
描述
LOADx
0x0
RW
0x00
BTIMERx 装载值寄存器
30
29
31
28
27
26
25
24
23
22
21
RELOAD
20
19
18
17
16
11
10
9
8
3
2
1
0
LOADx
15
14
13
12
LOADx
7
6
5
4
LOADx
位域
名称
描述
31:25
-
1: LDVAL 更新值将立刻加载至 CAVL 寄存器并计数。
24
RELOAD
0: LDVAL 更新值将在当前计数周期结束后加载至 CVAL 并计数。
AC,自动清零
23:0
LOADx
定时器通道 x 的装载值
200
Version 1.23
SWM201 系列
当前值寄存器 VALUEx
寄存器
偏移
类型
复位值
描述
VALUEx
0x4
RO
0xFFFFF
BTIMERx 当前计数值寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
VALUEx
15
14
13
12
VALUEx
7
6
5
4
VALUEx
位域
名称
描述
31:24
-
-
23:0
VALUEx
定时器通道 x 的计数器当前值
201
Version 1.23
SWM201 系列
中断使能寄存器 IEx
寄存器
偏移
类型
复位值
描述
IEx
0x10
RW
0x00
BTIMERx 中断使能寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
TO
计数器溢出中断
0
TO
1:使能
0:禁能
202
Version 1.23
SWM201 系列
中断状态寄存器 IFx
寄存器
偏移
类型
复位值
描述
IFx
0x14
R,W1C
0x00
BTIMERx 中断状态寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
TO
定时器通道 x 溢出中断状态,写 1 清除中断
0
TO
1:中断已触发
0:中断未触发
203
Version 1.23
SWM201 系列
预分频器装载值寄存器 PREDIVx
寄存器
偏移
类型
复位值
描述
PREDIVx
0x30
RW
0x00
BTIMERx 预分频器装载值寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
PREDIVx
位域
名称
描述
31:8
-
定时器时钟分频
0:1 分频
7:0
PREDIVx
1:2 分频
……
254:255 分频
255:256 分频
204
Version 1.23
SWM201 系列
使能寄存器 EN
寄存器
偏移
类型
复位值
描述
EN
0x440
R/W
0x00
BTIMER 使能寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
EN3
EN2
EN1
EN0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:4
-
BTIMER3 使能
3
EN3
1:使能
0:禁能
BTIMER2 使能
2
EN2
1:使能
0:禁能
BTIMER1 使能
1
EN1
1:使能
0:禁能
BTIMER0 使能
0
EN0
1:使能
0:禁能
205
Version 1.23
SWM201 系列
6.10 正交编码器(QEI)
6.10.1 概述
SWM201 系列所有型号 QEI 操作均相同。使用前需使能对应 QEI 模块时钟。
正交编码器(增量式编码器或光电式编码器)用于检测旋转运动系统的位置和速度,正交编码
器可以用于多种电机的闭环控制,诸如开关磁阻(SR)电机和交流感应电机(ACM)等。
6.10.2 特性
⚫
提供脉冲计数和计数方向
⚫
16 位向上/向下计数器
⚫
计数方向状态
⚫
×2 和×4 两种计数模式
⚫
索引复位/计数匹配复位模式
⚫
通用 16 位计数器(正向计数或反向计数)
⚫
QEI 产生的中断
⚫
A 相和 B 相输入的交换模式
206
Version 1.23
SWM201 系列
6.10.3 模块结构框图
dflt_clk
QEA
Frequency
divider of filter
Digital filter
Position
QEB
Digital filter
INDEX
Digital filter
SWPAB
Position & Direction
of rotation/ Timer
timer_dvid_clk
UPDN
QEA
Timer clk ctrl
TQCS
Pclk
图 6-23 QEI 模块结构框图
207
Version 1.23
SWM201 系列
6.10.4 功能描述
功能说明
典型的增量式编码器包括一个放置在电机转动轴上的带有开槽的轮子和一个用于检测开槽
的发射/接收装置,通常有三个输出,分别为 A 相、B 相和索引相(INDXE)
,所提供的信息可被
QEI 接口解码,用来提供电机的运动信息,包括旋转距离和旋转方向,编码盘的示意图如图
6-24 所示。
索引相
A相
B相
图 6-24 增量式正交编码盘示意图
时序说明
在正交编码器中 A 相(QEA)和 B 相(QEB)的位置关系是唯一的,如果 A 相超前 B 相,
那么电机的旋转方向被认为是正向,反之则被认为是反向旋转,索引相作为基准来确定电机的
绝对位置,电机每旋转一圈产生一个索引相脉冲信号,电机旋转时三个信号的相关时序如图
6-25 所示。
one cycle
QEA
正向
旋转
QEB
INDEX
01 00 10 11
QEA
反向
旋转
QEB
INDEX
11 10 00 01
图 6-25 三相信号正向/反向旋转时序关系
208
Version 1.23
SWM201 系列
计数器复位模式
在 QEI 模块中支持两种复位模式:索引复位和计数匹配复位。
索引复位
索引复位的方式如图 6-26 所示,在 INDEX 信号到来时,QEI 计数器复位,旋转方向不变时计数
器每次都将在索引信号的同一位置发生复位,正向旋转和反向旋转时的复位位置相对称,将
QEI 模块配置在索引复位模式下,QEI 模块将会自动检测 INDEX 信号和电机正转/反转时索引信
号的复位位置。
QEA
QEB
INDEX
11 10 00
10 11 01
复位
复位
图 6-26 QEI 计数器索引复位模式
匹配复位
计数匹配复位发生在计数器的累加值与预置的目标计数值相等时发生。
在电机正向旋转时,计数器的累加值与最大计数值相等时发生复位,复位后计数器的值被置
0;
在电机反向旋转时,计数器的累加值在等于零时发生复位,复位后计数器的值被复位为预置的
最大计数值,计数匹配复位方式如图 6-27 所示。
QEA
QEB
INDEX
CNT
+
+
+
M
0
+
-
不复位
0
M
-
复位
复位
不复位
图 6-27 计数匹配复位模式
209
Version 1.23
SWM201 系列
正交解码器
正交解码器的工作过程如图 6-28 和图 6-29 所示:
如图 6-28 中正交解码器工作在 x4 计数模式下,在 QEA、QEB 的上升沿和下降沿处都会计数。
计数的方向由正反转状态 UPDN 决定:
⚫
当 UPDN 为高电平时,表示电机正转,计数器在每个计数脉冲到来时累加计数结果;
⚫
当 UPDN 为低电平时,表示电机反转,计数器在每个计数脉冲到来时递减。
在电机换向旋转时若产生抖动(在图 6-28 中 jitter 为抖动部分),QEI 模块会根据检测到的计
数脉冲情况判断是否产生抖动,在电机抖动的情况下,计数器不工作,直到电机恢复稳定状态
为止。
jitter
QEA
QEB
PULS
POSCNT
UPDN
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
图 6-28 正交编码器 x4 计数模式示意图
如图 6-29 所示:正交编码器工作在 x2 计数模式下,在该模式下,计数脉冲只在 QEA 的上升沿
和下降沿处产生,QEB 只被用来判断旋转方向。
QEA
QEB
PULS
POSCNT
UPDN
+
+
+
+
+
-
-
-
-
图 6-29 正交编码器 x2 计数模式示意图
210
Version 1.23
SWM201 系列
配置方式
配置方式如下:
⚫
通过 PORTX_FUNC 寄存器将引脚切换为 QEI 对应数字功能,并使能数字输入
⚫
配置 QEI 工作模式(X2、X4)
、最大计数值、复位源等设置
⚫
若需要使用中断,使能 QEI 相应中断
⚫
启动 QEI,开始计数
⚫
定时读取 QEI 位置计数器和最大值计数器,从而计算电机的转动方向和速度
中断配置与清除
可通过配置 IE 寄存器设置 QEI 模块对应的中断,如需清除相应的中断标志,需在 IC 寄存器相应
位中将中断状态写 1 清零(R/W1C)。
211
Version 1.23
SWM201 系列
6.10.5 寄存器映射
下表列出了 QEI 模块的相关寄存器,所列偏移量为寄存器相对于 QEI 模块基址的 16 进制增量:
名称
QEI
偏移
类型
复位值
描述
BASE:0x4004D800
CR
0x00
R/W
0x00
控制/状态寄存器
POSCNT
0x04
RO
0x00
位置计数器寄存器
MAXCNT
0x08
R/W
0x00
最大计数值寄存器
IE
0x20
R/W
0x00
中断使能寄存器
IM
0x24
R/W
0x00
中断状态屏蔽寄存器
IC
0x28
R/W
0x00
清除中断状态寄存器
IF
0x2C
RO
0x00
中断状态寄存器
IFOV
0x30
RO
0x00
中断溢出寄存器
212
Version 1.23
SWM201 系列
6.10.6 寄存器描述
控制/状态寄存器 CR
寄存器
偏移
类型
复位值
描述
CR
0x00
R/W
0x00
控制/状态寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
PAUSE
INDEX
-
2
1
0
23
22
21
20
-
15
14
13
12
7
6
5
4
MODE
RSTSRC
X2X4
ABSWAP
位域
名称
描述
31:11
-
-
3
-
ENA
空闲模式停止位
10
PAUSE
1:模块暂停工作
0:模块继续工作
索引信号状态位(写无效)
9
INDEX
1:索引引脚为高电平
0:索引引脚为低电平
8
-
工作模式选择位
7
MODE
1:QEI 解码器模式
0:保留
计数器复位模式选择位
6
RSTSRC
1:索引信号复位
0:计数匹配复位
QEI 计数模式选择位
5
X2X4
1:X4 计数模式
0:X2 计数模式
B 换向选择位
4
ABSWAP
1:A、B 换向
0:A、B 未换向
3:1
QEI 模块使能
0
ENA
1:使能
0:禁能
213
Version 1.23
SWM201 系列
位置计数器寄存器 POSCNT
寄存器
偏移
类型
复位值
描述
POSCNT
0x04
RO
0x00
位置计数器寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
POSCNT
7
6
5
4
POSCNT
位域
名称
描述
31:16
-
-
15:0
POSCNT
位置计数器状态
214
Version 1.23
SWM201 系列
最大计数值寄存器 MAXCNT
寄存器
偏移
类型
复位值
描述
MAXCNT
0x08
R/W
0x00
最大计数值寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
MAXCNT
7
6
5
4
MAXCNT
位域
名称
描述
31:16
-
-
15:0
MAXCNT
最大计数值
215
Version 1.23
SWM201 系列
中断使能寄存器 IE
寄存器
偏移
类型
复位值
描述
IE
0x20
R/W
0x00
中断使能寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
ERROR
CNTOV
MATCH
INDEX
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:4
-
计数错误中断使能标志位
3
ERROR
1:使能
0:禁能
计数器溢出中断使能标志位
2
CNTOV
1:使能
0:禁能
计数匹配中断使能标志位
1
MATCH
1:使能
0:禁能
索引信号复位中断使能使能标志位
0
INDEX
1:使能
0:禁能
216
Version 1.23
SWM201 系列
中断状态屏蔽寄存器 IM
寄存器
偏移
类型
复位值
描述
IM
0x24
R/W
0x00
中断状态屏蔽寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
ERROR
CNTOV
MATCH
INDEX
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:4
-
屏蔽计数错误中断标志位
3
ERROR
1:未屏蔽
0:已屏蔽
屏蔽计数器溢出中断标志位
2
CNTOV
1:未屏蔽
0:已屏蔽
屏蔽计数匹配中断标志位
1
MATCH
1:未屏蔽
0:已屏蔽
屏蔽索引信号复位中断标志位
0
INDEX
1:未屏蔽
0:已屏蔽
217
Version 1.23
SWM201 系列
清除中断状态寄存器 IC
寄存器
偏移
类型
复位值
描述
IC
0x28
R/W
0x00
清除中断状态寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
ERROR
CNTOV
MATCH
INDEX
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:4
-
清除计数错误中断标志位
3
ERROR
1:清除
0:未清除
清除计数器溢出中断标志位
2
CNTOV
1:清除
0:未清除
清除计数匹配中断标志位
1
MATCH
1:清除
0:未清除
清除索引信号复位中断标志位
0
INDEX
1:清除
0:未清除
218
Version 1.23
SWM201 系列
中断状态寄存器 IF
寄存器
偏移
类型
复位值
描述
IF
0x2C
RO
0x00
中断状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
ERROR
CNTOV
MATCH
INDEX
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:4
-
计数错误中断标志位
3
ERROR
1: 有错误
0:无错误
计数器溢出中断标志位
2
CNTOV
1:已溢出
0:未溢出
计数匹配中断标志位
1
MATCH
1:计数匹配
0:计数未匹配
索引信号复位中断标志位
0
INDEX
1:以复位
0:未复位
219
Version 1.23
SWM201 系列
中断溢出寄存器 IFOV
寄存器
偏移
类型
复位值
描述
IFOV
0x30
RO
0x00
中断溢出寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
ERROR
CNTOV
MATCH
INDEX
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:4
-
计数错误中断溢出标志位
3
ERROR
1:溢出
0:未溢出
计数器溢出中断溢出标志位
2
CNTOV
1:溢出
0:未溢出
计数匹配中断溢出标志位
1
MATCH
1:溢出
0:未溢出
索引信号复位中断溢出标志位
0
INDEX
1:溢出
0:未溢出
220
Version 1.23
SWM201 系列
6.11 看门狗定时器(WDT)
6.11.1 概述
SWM201 系列所有型号 WDT 操作均相同。使用前需使能对应 WDT 模块时钟。
看门狗定时器(WDT)主要用于控制程序流程正确,在程序流长时间未按既定流程执行指定程
序的情况下复位芯片。
6.11.2 特性
⚫
产生计数器溢出复位信号,复位信号使能可配
⚫
具有 16 位计数位宽,可配置灵活、宽范围的溢出周期
⚫
具有中断功能
221
Version 1.23
SWM201 系列
6.11.3 模块结构框图
0
FEED
WDTEN
PCLK
16-bit Up
Counter
RSTEN
Reset
=
RSTV
INTEN
IRQ
=
INTV
图 6-30 WDT 模块结构框图
222
Version 1.23
SWM201 系列
6.11.4 功能描述
看门狗定时器(WDT)主要用于控制程序流程正确,在程序流程时间未按既定流程执行指定程
序的情况下复位芯片。
WDT 模块功能分为普通模式和窗口模式。
在普通模式下,任何时候都可以喂狗执行 WDT 复位操作;
在窗口模式下,只能在 WDT 中断之后、WDT 复位之前喂狗,如果喂早了(在 WDT 中断之前)
那么立即复位。
普通模式
工作示意图如图 6-31 示:
RSTV
INTV
Feed
IRQ
Reset
图 6-31 普通模式 WDT 工作示意图
配置方式如下:
⚫
配置复位值寄存器 RSTVAL,设置复位值,WDT 为递增计数
⚫
配置控制寄存器 CR 中 RSTEN 位,设置以系统时钟为单位递增时产生中断或产生复位
⚫
将控制寄存器 CR 中 EN 位置 1,使能 WDT 模块
⚫
程序执行过程中通过向 FEED 寄存器写入 0x55 喂狗,重启计数
⚫
若当 VALUE 寄存器加至 INTVAL 或 RETVAL,依然未执行喂狗操作,则根据 CR 寄存器
设置,产生中断或复位信号
控制寄存器 CR 中 RSTEN 位配置为复位使能时,使能后波形如图 6-32 所示:
223
Version 1.23
SWM201 系列
CLK
RSTVAL
VAL
0
1
N-4
N-3
N-2
N-1
N
0
0
0
0
0
0
IF
T_rst
RST
图 6-32 WDT 配置为 RESET 模式波形图
控制寄存器 CR 中 RSTEN 位配置为复位失能时,使能后波形如图 6-33 所示,中断产生后,通过
IF 寄存器进行清除。
CLK
INTVAL
VAL
0
1
N-4
N-3
N-2
N-1
N
0
1
N-1
N-2
N
T_int
IF
RST
图 6-33 WDT 配置为中断模式波形图
窗口模式
在窗口模式下,只能在 WDT 中断之后、WDT 复位之前喂狗,如果在 WDT 中断之前喂狗,则立
即执行 WDT 复位操作。
在窗口模式下看门狗发生中断及复位与计数值之间的关系示意图如图 6-34 所示:
counter
wdtrstvalue
wdtintvalue
该区域内喂
狗将发生
WDT复位
发生WDT中断
发生WDT复位
图 6-34 窗口模式看门狗发生中断及复位与计数值之间的关系示意图
配置方式如下:
224
Version 1.23
SWM201 系列
⚫
配置复位值寄存器 RSTVAL,设置复位值,WDT 为递增计数
⚫
配置控制寄存器 CR 中 WINEN 位,使能窗口功能
⚫
配置控制寄存器 CR 中 RSTEN 位,设置以系统时钟为单位递增时产生中断或产生复位
⚫
将控制寄存器 CR 中 EN 位置 1,使能 WDT 模块
⚫
WDT 中断之后、WDT 复位之前通过向 FEED 寄存器写入 0x55 喂狗,重启计数
⚫
如果在 WDT 中断之前喂狗,则执行 WDT 复位操作
中断配置与清除
可通过配置 WDT 控制寄存器 CR 设置以系统时钟为单位递增时产生中断,并使能中断,启动
WDT,当 VALUE 寄存器加至 INTVAL,依然未执行喂狗操作时,中断标志寄存器 IF 位置 1。如需
清除此标志,需在标志位中写 1 清零(R/W1C),否则中断在开启状态下会一直进入。
225
Version 1.23
SWM201 系列
6.11.5 寄存器映射
下表列出了 WDT 模块的相关寄存器,所列偏移量为寄存器相对于 WDT 模块基址的 16 进制增
量:
名称
WDT
偏移
类型
复位值
描述
BASE:0x400A0800
RSTVAL
0x00
R/W
0xFFFF
WDT 复位值寄存器
INTVAL
0x04
R/W
0xFFFF
WDT 中断值寄存器
CR
0x08
R/W
0x00
WDT 控制寄存器
IF
0x0C
R/W
0x00
WDT 中断状态寄存器
FEED
0x10
WO
0x00
WDT 重启计数器寄存器
226
Version 1.23
SWM201 系列
6.11.6 寄存器描述
WDT 复位值寄存器 RSTVAL
寄存器
偏移
类型
复位值
描述
RSTVAL
0x00
R/W
0xFFFF
WDT 复位值寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
RSTVAL
7
6
5
4
RSTVAL
位域
名称
描述
31:16
-
WDT 计数器的复位计数初始值。
15:0
RSTVAL
当 WDT 计数值计数到该寄存器设置值时,产生复位。
使能后配置无效
227
Version 1.23
SWM201 系列
WDT 中断值寄存器 INTVAL
寄存器
偏移
类型
复位值
描述
INTVAL
0x04
R/W
0xFFFF
WDT 中断值寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
INTVAL
7
6
5
4
INTVAL
位域
名称
描述
31:16
-
WDT 计数器中断目标值
当 WDT 计数值递增计数到该寄存器设置值时,产生中断
产生中断后,若未设置复位值则重新归 0 计数,若设置复位值,则继续计数直至
15:0
INTVAL
复位
当中断与复位同时使用时,INTVAL 需要小于 RSTVAL,产生中断后,若未执行喂狗
操作,则计数器继续计数,直至产生复位
使能后配置无效
228
Version 1.23
SWM201 系列
WDT 控制寄存器 CR
寄存器
偏移
类型
复位值
描述
CR
0x08
R/W
0x00
WDT 控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
7
6
CLKDIV
5
4
-
位域
名称
描述
31:12
-
-
3
2
1
0
WINEN
INTEN
RSTEN
EN
看门狗计数时钟预分频寄存器
0000:2
0001:4
0010:8
0011:16
0100:32
0101:64
0110:128
11:8
CLKDIV
0111:256
1000:512
1001:1024
1010:2048
1011:4096
1100:8192
1101:16384
1110:32768
1111:65536
7:4
-
WDT 窗口功能使能
3
WINEN
1:使能窗口功能
0:禁止窗口功能
WDT 中断输出使能位
2
INTEN
1:使能中断
0:禁止中断
229
Version 1.23
SWM201 系列
WDT 复位输出使能位
1
RSTEN
1:使能复位
0:禁止复位
WDT 启动位
0
EN
1:启动 WDT 计数
0:停止计数
230
Version 1.23
SWM201 系列
WDT 中断状态寄存器 IF
寄存器
偏移
类型
复位值
描述
IF
0x0C
R/W
0x00
WDT 中断状态寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
IF
-
位域
名称
描述
31:1
-
-
0
IF
WDT 中断位,高有效,R/W1C
硬件置位,写 1 清零
231
Version 1.23
SWM201 系列
WDT 重启寄存器 FEED
寄存器
偏移
类型
复位值
描述
FEED
0x10
WO
0x00
WDT 重启计数器寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
FEED
位域
名称
描述
31:8
-
-
7:0
FEED
看门狗重启计数器寄存器
当向该寄存器写入 0x55 后会重启看门狗计数器(喂狗操作)
232
Version 1.23
SWM201 系列
6.12 实时时钟(RTC)
6.12.1 概述
使用前需使能 RTC 模块时钟。RTC 控制器用于提供给用户实时的时间信息与日期信息。
6.12.2 特性
⚫
可自由设置日期(年、月、周、日)和时间(时、分、秒)
⚫
可自由设置闹钟(周、时、分、秒)
⚫
自动识别当前设置年份是否为闰年
⚫
支持 RTC 时钟校正功能
⚫
支持 RTC 中断从 SLEEP 模式下唤醒芯片
233
Version 1.23
SWM201 系列
6.12.3 模块结构框图
LRC32K
IF
Counter
MINSEC
XTAL32K
DATHUR
CLKSEL.RTC
MONDAY
TRIM
SEC
MIN
HOUR
DATE
IRQ
YEAR
=
ALARM
MINSECAL
DAYHURAL
图 6-35 RTC 模块结构框图
234
Version 1.23
SWM201 系列
6.12.4 功能描述
使用 RTC 前,需进行如下操作:
⚫
通过寄存器 EN 禁能 RTC;
⚫
读取配置状态寄存器 CFGABLE,当该寄存器 = 1 时,分别通过寄存器 MINSEC、
DATHUR、MONDAY、YEAR 配置 RTC 的初始计数值 ,通过寄存器 MINSECAL、
DATHURAL 设置 RTC 闹钟时间;
⚫
通过寄存器 LOAD 加载各项初始值;
⚫
用户根据需要,通过寄存器 IE 使能天/时/分/秒等中断或闹钟中断;
⚫
通过寄存器 EN 使能 RTC;
⚫
若使能了天/时/分/秒等中断,计数到规定时间后进入中断;若使能了闹钟中断,计数
到闹钟设定时间后将芯片从休眠状态唤醒(进入闹钟中断前芯片需处于休眠状态)。
备份寄存器
在 SYSCON 模块中,提供了 3 个 32 位 RTC 电源域备份寄存器,用于存储数据,RTC 电源域备份
寄存器处在备份域,由于此芯片 RTC 没有单独额外供电,当系统在待机模式下被唤醒,或系统
复位时,该寄存器不会被复位;只有在断电复位时,该寄存器才会复位。使用流程如下所示:
⚫
确认 RCLF(32KHz 时钟)为使能状态
⚫
配置 PxWKEN 寄存器指定位,使能相应端口对应位唤醒功能
⚫
SLEEP 寄存器 BIT[0] = 1 后,芯片进入睡眠模式
⚫
当配置端口对应位产生下降沿时,芯片被唤醒,继续执行程序
⚫
唤醒后,端口对应 PxWKSR 寄存器对应位被至 1,可通过对该位写 1 进行清除(该位
对进入休眠无影响)
注:内部的 NVIC_RESET 对 RTC 域没有影响
RTC 唤醒
浅睡眠模式下,通过 SYSCON 模块中 RTCWKSR 寄存器及 RTCWKCR 寄存器进行定时器唤醒操
作。
在 sleep 之前,需要将时钟切换为内部高频。
流程如下:
关闭所有不需要唤醒功能的 IO 输入使能(PORTCON 模块中 INEN_x 寄存器)
配置 RTC 时钟源及唤醒时间
使能唤醒源,设置 RTCWKCR 寄存器 EN 位为 1 (使能前需通过写 1 清除 TWGFLG 寄存
器 FLG 位)
235
Version 1.23
SWM201 系列
使能 RTC,RTC 开始计数
SLEEP 寄存器 SLEEP 位置 1 后,芯片进入浅睡眠模式,RTC 计到设置值后唤醒芯片
唤醒后,RTCWKSR 寄存器 FLG 位为 1(可通过对该位写 1 进行清除)
时钟源
RTC 时钟源可选择片外低频晶体振荡器(32.768KHz)或内部低频 RC 振荡器(32KHz)两个时钟
源,可通过 SYSCON 模块中 CLKSET 寄存器中 RTC(32K 时钟选择)设置 RTC 时钟源。
中断配置与清除
可通过配置中断使能寄存器 IE 相应位使能中断。当计数到设定时间时,中断标志寄存器 IF 对应
位置 1。如需清除此标志,需在对应标志位中写 1 清零(R/W1C)
,否则中断在开启状态下会一
直进入。
236
Version 1.23
SWM201 系列
6.12.5 寄存器映射
名称
RTC
偏移
类型
复位值
描述
BASE:0x4004B800
MINSEC
0x00
R/W
0x00
分秒计数寄存器
DATHUR
0x04
R/W
0x20
日时计数寄存器
MONDAY
0x08
R/W
0x08
月周计数寄存器
YEAR
0x0C
R/W
0x7df
年计数寄存器
MINSECAL
0x10
R/W
0x00
分秒闹铃设置寄存器
DAYHURAL
0x14
R/W
0x00
周时闹铃设置寄存器
LOAD
0x18
0x00
初始化计数器
IE
0x1C
R/W
0x00
中断使能寄存器
IF
0x20
R/W1C
0x00
中断标志寄存器
EN
0x24
R/W
0x01
RTC 使能寄存器
CFGABLE
0x28
RO
0x00
配置状态寄存器
TRIM
0x2C
RW
0x0
时钟调整寄存器
TRIMM
0x30
RW
0x0
时钟微调整寄存器
CALIBREFCNT
0X60
RW
0X0
Refclk 时钟下 cnt_ref_target
CALIBEN
0X64
RW
0X0
使能 rtc 校正
CALIBSR
0x68
RO
0x0
校正状态寄存器
R/W,
AC
237
Version 1.23
SWM201 系列
6.12.6 寄存器描述
分秒计数寄存器 MINSEC
寄存器
偏移
类型
复位值
描述
MINSEC
0x00
R/W
0x00
分秒计数寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
1
0
23
22
21
20
-
15
14
13
12
7
6
MIN
5
4
3
MIN
2
SEC
位域
名称
描述
31:12
-
-
11:6
MIN
计时器分钟计数
5:0
SEC
计时器秒计数
238
Version 1.23
SWM201 系列
日时计数寄存器 DATHUR
寄存器
偏移
类型
复位值
描述
DATHUR
0x04
R/W
0x20
日时计数寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
DATE
4
3
DATE
2
1
0
HOUR
位域
名称
描述
31:10
-
-
9:5
DATE
计时器天计数
4:0
HOUR
计时器小时计数
239
Version 1.23
SWM201 系列
月周计数寄存器 MONDAY
寄存器
偏移
类型
复位值
描述
MONDAY
0x08
R/W
0x08
月周计数寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
-
4
MON
位域
名称
描述
31:7
-
-
DAY
计时器月计数
0000:保留
0001:1 月
0010:2 月
0011:3 月
0100:4 月
0101:5 月
0110:6 月
6:3
MON
0111:7 月
1000:8 月
1001:9 月
1010:10 月
1011:11 月
1100:12 月
1101:保留
1110:保留
1111:保留
计时器周计数
000:表示周日
001:表示周一
2:0
DAY
010:表示周二
011:表示周三
100:表示周四
101:表示周五
110:表示周六
240
Version 1.23
SWM201 系列
年计数寄存器 YEAR
寄存器
偏移
类型
复位值
描述
YEAR
0x0C
R/W
0x7df
年计数寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
1
0
23
22
21
20
-
15
14
13
12
7
6
YEAR
5
4
3
2
YEAR
位域
名称
描述
31:12
-
-
11:0
YEAR
计时器年计数。支持 1901-2199
241
Version 1.23
SWM201 系列
分秒闹铃设置寄存器 MINSECAL
寄存器
偏移
类型
复位值
描述
MINSECAL
0x10
R/W
0x00
分秒闹铃设置寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
1
0
23
22
21
20
-
15
14
13
12
7
6
MIN
5
4
3
MIN
2
SEC
位域
名称
描述
31:12
-
-
11:6
MIN
定时器分钟设置
5:0
SEC
定时器秒设置
242
Version 1.23
SWM201 系列
周时闹铃设置寄存器 DATHURAL
寄存器
偏移
类型
复位值
描述
DAYHURAL
0x14
R/W
0x00
周时闹铃设置寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
SAT
FRI
THU
WED
3
2
1
0
23
22
21
20
-
15
14
13
12
7
6
5
TUE
MON
SUN
4
HOUR
位域
名称
描述
31:12
-
-
11
SAT
定时器周设置,设置为周六
10
FRI
定时器周设置,设置为周五
9
THU
定时器周设置,设置为周四
8
WED
定时器周设置,设置为周三
7
TUE
定时器周设置,设置为周二
6
MON
定时器周设置,设置为周一
5
SUN
定时器周设置,设置为周日
4:0
HOUR
定时器小时设置
243
Version 1.23
SWM201 系列
初始化寄存器 LOAD
寄存器
偏移
LOAD
0x18
类型
复位值
描述
0x00
初始化计数器
R/W,
31
30
AC
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
ALARM
TIME
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
1
ALARM
0
TIME
将 MISEAL 和 WEHOAL 寄存器装载到 alarm 同步寄存器,持续到 rtcclk 的上升沿来
临,自动清零,AC
将 MINSEC、DATHUR、MONDAY、YEAR 的值装载到相关 cnt 计数器,将 TRM 和
TRMM 的值装载到 basecnt 中,持续到 rtcclk 的上升沿来临,自动清零
注:
需要在 MINSEC、DATHUR、MONDAY、YEAR、TRIM 和 TRIMM 配置完成后,再配置 TIME 信号;
需要在 MINSECAL 和 DATHURAL 配置完成后,再配置 ALARM 信号。
若配置 TIME 之后,需要关闭 pclk,则只需要等待 TIME=0 之后,再关闭 pclk。
244
Version 1.23
SWM201 系列
中断使能寄存器 IE
寄存器
偏移
类型
复位值
描述
IE
0x1C
R/W
0x00
中断使能寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
4
3
2
1
0
QSEC
HSEC
TRIM
ALARM
DATE
HOUR
MIN
SEC
位域
名称
描述
31:8
-
四分之一秒中断使能
7
QSEC
1:使能
0:禁能
半秒中断使能
6
HSEC
1:使能
0:禁能
Rtc_calib 中断使能
5
TRIM
1:使能
0:禁能
闹钟中断使能
4
ALARM
1:使能
0:禁能
天中断使能
3
DATE
1:使能
0:禁能
小时中断使能
2
HOUR
1:使能
0:禁能
分钟中断使能
1
MIN
1:使能
0:禁能
秒中断使能
0
SEC
1:使能
0:禁能
245
Version 1.23
SWM201 系列
中断标志寄存器 IF
寄存器
偏移
类型
复位值
描述
IF
0x20
R/W1C
0x00
中断标志寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
4
3
2
1
0
QSEC
HSEC
TRIM
ALARM
DATE
HOUR
MIN
SEC
位域
名称
描述
31:8
-
四分之一秒中断状态,R/W1C
7
QSEC
1:中断已发生
0:中断未发生
半秒中断状态,R/W1C
6
HSEC
1:中断已发生
0:中断未发生
Rtc_calib 中断状态,写 1 清零
5
TRIM
1:中断已发生
0:中断未发生
闹钟中断状态,写 1 清零
4
ALARM
1:中断已发生
0:中断未发生
天中断状态,写 1 清零
3
DATE
1:中断已发生
0:中断未发生
小时中断状态,写 1 清零
2
HOUR
1:中断已发生
0:中断未发生
分钟中断状态,写 1 清零
1
MIN
1:中断已发生
0:中断未发生
秒中断状态,写 1 清零
0
SEC
1:中断已发生
0:中断未发生
246
Version 1.23
SWM201 系列
RTC 使能寄存器 EN
寄存器
偏移
类型
复位值
描述
EN
0x24
R/W
0x01
RTC 使能寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
EN
RTC 使能寄存器
0
EN
1:使能
0:禁能
247
Version 1.23
SWM201 系列
配置状态寄存器 CFGABLE
寄存器
偏移
类型
复位值
描述
CFGABLE
0x28
RO
0x00
配置状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
CFGABLE
寄存器可配置指示。
0
CFGABLE
如果需要更改 RTC 的寄存器时,必须先查询此寄存器,当 CFGABLE 为 1 时,尽快
配置完所有的寄存器(IE 和 IF 的配置不需要关注这一位)
248
Version 1.23
SWM201 系列
时钟调整寄存器 TRIM
寄存器
偏移
类型
复位值
描述
TRIM
0x2C
RW
0x0
时钟调整寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
DEC
4
3
2
1
0
ADJ
位域
名称
描述
31:9
-
-
8
DEC
用于调整 BASECNT 的计数周期,默认为 32768,如果 DEC 为 1,则计数周期调整
7:0
ADJ
为 32768-ADJ,否则调整为 32768+ADJ
249
Version 1.23
SWM201 系列
时钟微调整寄存器 TRIMM
寄存器
偏移
类型
复位值
描述
TRIMM
0x30
RW
0x0
时钟微调整寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
INRC
CYCLES
位域
名称
描述
31:4
-
-
3
INRC
用于计数周期微调整(n 个周期调整一次),如果 inrc 为 1 ,则第 n 个计
2:0
CYCLES
数周期调整为(32768±ADJ)-1,否则调整为(32768±ADJ)+1;(cycles=0 时,不进行微
调整;cycles=1,则 n 为 2;cycles=7,则 n 为 8;以此类推)
250
Version 1.23
SWM201 系列
目标值寄存器 CALIBREFCNT
寄存器
偏移
类型
复位值
描述
CALIBREFCNT
0X60
RW
0X0
Refclk 时钟下 cnt_ref_target
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
15
14
CALIBREFCNT
13
12
11
10
9
8
3
2
1
0
CALIBREFCNT
7
6
5
4
CALIBREFCNT
位域
名称
描述
31:21
-
-
20:0
CALIBREFCNT
参考时钟下,cnt_ref 计时 500ms,应计目标值
251
Version 1.23
SWM201 系列
使能 rtc 校正寄存器 CALIBEN
寄存器
偏移
类型
复位值
描述
CALIBEN
0X64
RW
0X0
使能 rtc 校正
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:1
-
-
CENABLE
Rtc 时钟校正
0
CENABLE
1:使能
0:失能
252
Version 1.23
SWM201 系列
校正状态寄存器 CALIBST
寄存器
偏移
类型
复位值
描述
CALIBSR
0x68
RO
0x0
校正状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
FLAG
FAIL
DONE
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:2
-
-
2
FLAG
Rtc 正在校正
1
FAIL
rtc 校正失败
0
DONE
rtc 校正完成
253
Version 1.23
SWM201 系列
6.13 UART 接口控制器(UART)
6.13.1 概述
不同型号具备 UART 数量可能不同。使用前需使能对应 UART 模块时钟。
UART 模块支持波特率配置,最高速度可达到模块时钟 16 分频。具备深度为 8 的 FIFO,同时提
供了多种中断供选择。
6.13.2
特性
⚫
支持标准的 UART 协议
⚫
支持全双工模式
⚫
支持波特率可配置
⚫
支持 8 位/9 位数据格式选择
⚫
可配置的奇偶校验位
⚫
支持 1 位/2 位停止位选择
⚫
支持波特率自动调整
⚫
深度为 8 字节的发送和接收 FIFO
⚫
支持 break 操作自动检测
⚫
支持接收超时中断
⚫
支持 LIN 模式
⚫
支持发送/接收数据 LSB/MSB 选择
⚫
支持发送/接收数据电平反向
254
Version 1.23
SWM201 系列
6.13.3 模块结构框图
APB总线
写UARTxDATA
读UARTxDATA
UARTxDATA
8级深度
TX FIFO
8级深度
RX FIFO
FIFO水
位检测
发送完成
TX移位寄存器
接收完成
RX移位寄存器
RXD
RTS
CTS
TXD
PCLK
/16
/BAUD
EN
图 6-36 UART 模块结构图
255
Version 1.23
SWM201 系列
6.13.4 功能描述
数据格式及波特率配置
数据位
可以通过向 CTRL 寄存器的 DATA9B 位写 1,选择支持 9 位数据模式。该位默认为 0,即 8 位数
据模式
奇偶校验位
CTRL 寄存器 PAREN 位使能奇偶校验,PARMD 位选择奇偶校验模式,分别有奇校验、偶校验、
常 1、常 0 等四种校验格式,根据需求可以灵活选择配置具体看下表:
校验类型
CTRL[21]
CTRL[20]
CTRL[19]
无校验
x
x
0
奇校验
0
0
1
偶校验
0
1
1
校验位常为 1
1
0
1
校验位常为 0
1
1
1
停止位
停止位位数默认为 1 位,可通过向 CTRL 寄存器 STOP2B 位选择停止位位数为 2 位。
字符格式如图 6-37 所示:
(IDLE)
St
0
1
2
3
4
5
6
7
[8]
[P]
Sp1 [Sp2]
St/IDL
图 6-37 UART 字符格式
使能波特率配置后,对 BAUD 寄存器 BAUD 位写入特定值,配置波特率。
配置方式如下:
目标波特率 = 系统主时钟 / (BAUD.BAUD *16 +BAUD.FRAC + 1)
波特率配置完成后,需将 CTRL 寄存器 EN 位使能,使能 UART 模块,使波特率配置生效。
自动波特率功能
UART 自动波特率功能可以自动测量 UART_RX 脚输入数据的波特率。当自动波特率测量完成
后,测量的结果保存在 BAUD 寄存器的 BAUD 位。
自动波特率的检测时间,从 UART_RX 数据的起始位到第一个上升沿的时间,通过配置 BAUD 寄
存器 ABRBIT 位设定检测的时间长度,即 2 ABRDBITS 位。配置 BAUD 寄存器 ABREN 位,使能自动波
特率检测功能。
256
Version 1.23
SWM201 系列
以 BAUD.ABRBIT=0,即设定检测的时间长度 1 位,通过测量起始位脉宽计算波特率为例:初始
阶段,RXD 保持为 1,一旦检测到下降沿,即为接收到起始位,自动波特率计数器开始计数,
当检测到第一个上升沿时,自动波特率计数器停止计数。
自动波特率计数值除以检测时间长度的结果保存在 BAUD 位,ABREN 位清零。
当自动波特率计数器溢出,BAUD 寄存器的 ABRERR 置 1,调节失败,写 1 清零。
配置流程:
⚫ 选择检测时间的长度,配置 BAUD 寄存器 ABRBIT 位
⚫ 配置 BAUD 寄存器 ABREN 位,使能自动波特率检测功能
⚫ 等待接收调节的数据,查看 BAUD 寄存器 ABREN 位是否清零,清零表示波特率检测完
成
⚫ 检测完成后查看 BAUD 寄存器 ABRERR 位,查看自动调节波特率时计数器是否溢出
⚫ 如果数据未溢出,则表示成功
n=11
n=10
n=01
n=00
RX_PIN
start
autobaud_count
bit0
bit1 bit2
bit3
0 1 2 3 .... .... ..
bit4
bit5
bit6
bit7
parity stop
.. .. ........ ...... ....
m
autobaud_en
flexbaud
Old baud
m÷2^n
图 6-38 自动波特率示意图
FIFO 及中断设置
UART 模块包含深度为 8 的接收 FIFO 及发送 FIFO,同时提供了与 FIFO 相配合的状态位中断,供
操作使用。使用方式如下:
⚫
通过 FIFO 寄存器配置中断触发条件,并获取 FIFO 内部数据数量
◼
TXTHR 位设置发送 FIFO 中断阈值,当 TXFIFO 中数据量不超过设置值时,触发中
断。当 TXTHR 位配置为 0 且使能 CTRL 中 TXIE 发送端 FIFO 中断时,UART 使能后
即触发发送中断
◼
RXTHR 位设置接收 FIFO 中断阈值,当 RXFIFO 中数据量不小于设置值时,触发中
断。当 RXTHR 位配置为 0 且使能 CTRL 中 RXIE 发送端 FIFO 中断时,UART 使能后
接收到 1 个数据值即触发接收中断
257
Version 1.23
SWM201 系列
⚫
通过 CTRL 寄存器 RXIE 位及 TXIE 位,使能 FIFO 中断
⚫
通过查询 BAUD 寄存器 RXIF 或 TXIF 位获取 FIFO 状态
数据发送及接收
将控制及状态寄存器(CTRL)EN 位置 1 后,对应 UART 模块使能
对于发送操作:
⚫
向 DATA 寄存器写入数据,数据发送至 UART_TX 线
⚫
通过读取 CTRL 寄存器 TXIDLE 位状态,获取当前发送状态
⚫
可通过读取 BAUD 寄存器 TXD 位,获取当前 TX 线实时状态
对于接收操作:
⚫
通过判断 DATA 寄存器中 VALID 位,判断是否接收到有效数据
⚫
当接收到有效数据后,读取 DATA 寄存器,可获得 UART_RX 线接收的数据
⚫
可通过读取 BAUD 寄存器 RXD 位,获取当前 RX 线实时状态
⚫
可设置接收超时中断。使能后,当接收相邻两个数据间隔时长超过设置时长时,将触
发中断
电平反向
通过设置 CFG 寄存器的 TXINV 位及 RXINV 位,分别对 TX 和 RX 线设置取反,设置后电平立刻生
效
大小端控制
通过 CFG 寄存器的 MSBF 位进行配置,设置数据传输是从高位(MSB)开始传输还是从低位(LSB)开
始传输。
LIN Fram
UART 支持 LIN 功能。在主机模式下,支持 LIN_BREAK 产生,在 从机模式下,支持 LIN_BREAK
检测。报文是以报文帧的格式传输和发送。报文帧由主机节点发送的报文头和从机发送的应答
组成。报文帧的报头包括 break 域,同步域和帧识别码(帧 ID)。帧 ID 仅作为定义帧的用
途,从机负责响应相关的帧 ID,响应由数据域和校验域组成。
258
Version 1.23
SWM201 系列
Frame slot
Frame
Response
space
Header
Break
Field
Synch
Field
Protected
Identifier
Response
Data N
Data2
Data1
Check
Sum
图 6-39 LIN Fram 示意图
当使用 LIN Fram 时,可通过 LINCR 寄存器进行相关设置。
发送操作:
与正常的 UART 发送相比,选用 LIN Fram 发送时,除了基本操作步骤外,还需:
⚫
通过配置 CFG 寄存器 BRKTXLEN 位配置发送 BRK 的长度
⚫
置位 LINCR 寄存器中 GENBRK 位,TX 线上会发送设定的 BRK 的长度位时间的低电平
⚫
设定的 BRK 的长度位低电平发送完成时 LINCR 寄存器 GENBRK 自动清零,LINCR 寄存
器 GENBRKIF 置位
⚫
LINCR 寄存器 GENBRK 清零后,软件可以写 DATA 寄存器发送数据
注意:发送 BREAK 信号时,向 DATA 寄存器写入数据,数据同样会执行发送操作,但数据电平
不会体现到 TX 线上,除非发送数据期间清除 CTRL 寄存器 GENBRK 位。
接收操作:
与正常的 UART 接收相比,选用 LIN Fram 接收时,除了基本操作步骤外,还需:
⚫
通过配置 CFG 寄存器 BRKRXLEN 位配置接收 BRK 的判定长度
⚫
通过 LINCR 寄存器将 BRKDETIE 位置 1,使能检测到 Break 信号中断
⚫
当 RX 线上出现低电平宽度超过设定判断长度时,LINCR 寄存器 BRKDETIF 置位,执行
UART 中断处理函数
⚫
在 UART 中断处理函数中检测 LINCR 寄存器 BRKDETIF 是否为 1,
,如果为 1 表示检测到
了 break,向 BRKDETIF 写 1 清除中断标志
当 Break 信号不够长时,丢弃 Break,BRKDETIF 不置 1,如图 6-40 所示:
RX
Break State
idle
bit0
bit1
bit2
bit3
bit4
bit5
bit6
bit7
bit8
bit9
bit10
idle
BRKDETIF
259
Version 1.23
SWM201 系列
图 6-40 Break 信号不够长示意图
当 Break 信号恰好够长时,等接收线上收到高电平后,检测到 Break,BRKDETIF 置 1,如图
6-41 所示:
RX
Break State
idle
bit0
bit1
bit2
bit3
bit4
bit5
bit6
bit7
bit8
bit9
bit10
idle
LINBRKST
图 6-41 Break 信号恰好够长示意图
当 Break 信号足够长时,等接收线上收到高电平后,检测到 Break,BRKDETIF 置 1,如图 6-42
所示:
RX
Break State
idle
bit0
bit1
bit2
bit3
bit4
bit5
bit6
bit7
bit8
bit9
bit10
idle
LINBRKST
图 6-42 Break 信号足够长示意图
硬件流控
硬件流控(RTS/CTS)制主要功能为防止串口传输时出现丢失数据的现象,使用流控制功能时需
将通信两端的 RTS 和 CTS 对应相连,通过 RTS 和 CTS 可以控制两个串口设备间的串行数据流。
RTS 流控制
RTS 为输出信号,通过自动流控控制寄存器使能该信号并设置有效极性(高电平/低电平)以及
触发阈值,当 RTS 为有效电平时表示可以接收数据,当接收数据达到所设置的阈值时,RTS 无
效。
CTS 流控制
CTS 为输入信号,通过自动流控控制寄存器使能该信号并设置有效极性(高电平/低电平),当
RTS 为有效电平时表示可以发送数据。
260
Version 1.23
SWM201 系列
Receiver
FIFO
Receiver
(串转并)
RXD
TXD
Transmitter
(并转串)
Transmitter
FIFO
Threshold
Detection
Auto RTS
Flow Control
RTS
CTS
Auto CTS
Flow Control
Transmitter
FIFO
Transmitter
(并转串)
TXD
RXD
Receiver
(串转并)
Receiver
FIFO
Auto CTS
Flow Control
CTS
RTS
Auto RTS
Flow Control
Threshold
Detection
图 6-43 硬件流控
接收中断与超时中断
以如下配置为例:
方式一:FIFO 清空后,不产生超时中断
⚫
配置 FIFO 寄存器 RXLVL 位为 3,即 RXThreshold=3,接收 FIFO 取值 3
⚫
配置 CTRL 寄存器 RXIE 位为 1,即 RXThresholdIEn=1,配置接收 FIFO 中的个数>
RXThreshold 时触发中断
⚫
配置 TOCR 寄存器 TIME 位为 10,即 TimeoutTime = 10,超时时长 =
TimeoutTime/(Baudrate/10) 秒
⚫
配置 UARTx.TOCR 寄存器 MODE 位为 0,FIFO 清空后,不产生超时中断
⚫
配置 CTRL 寄存器 TOIE 位为 1,即 TimeoutIEn = 1,超时中断,超过
TimeoutTime/(Baudrate/10) 秒没有在 RX 线上接收到数据且接收 FIFO 中数据个数不为
零时可触发中断
对方发送 8 个数据
261
Version 1.23
SWM201 系列
接收FIFO中数据个数 > RXThreshold
产生接收中断请求,ISR中将数据读走
接
收
到
第
一
个
数
据
接
收
到
第
二
个
数
据
接
收
到
第
四
个
数
据
接
收
到
第
三
个
数
据
接
收
到
第
五
个
数
据
接收FIFO中数据个数 > RXThreshold
产生接收中断请求,ISR中将数据读走
接
收
到
第
七
个
数
据
接
收
到
第
六
个
数
据
接
收
到
第
八
个
数
据
图 6-44 对方发送 8 个数据接收 FIFO 示意图
每接收到一个数据,RX FIFO 中数据个数加一,当 RX FIFO 中数据个数大于 RXThreshold 时,触
发接收中断。
对方发送 9 个数据
接收FIFO中数据个数 > RXThreshold
产生接收中断请求,ISR中将数据读走
接
收
到
第
一
个
数
据
接
收
到
第
二
个
数
据
接
收
到
第
三
个
数
据
接
收
到
第
四
个
数
据
接
收
到
第
五
个
数
据
接
收
到
第
六
个
数
据
接
收
到
第
七
个
数
据
接收FIFO中数据个数 > RXThreshold
产生接收中断请求,ISR中将数据读走
接
收
到
第
八
个
数
据
10个字符时间内未接收到新的字符
产生超时中断请求,ISR中将数据读走
图 6-45 对方发送 9 个数据接收 FIFO 示意图
只有当接收 FIFO 中有数据,且在指定时间内未接收到新的数据时,才会触发超时中断。
若应用中希望通过数据间时间间隔作为帧间隔依据,即不管对方发送过来多少个数据,最后都
能产生超时中断,可以通过在接收 ISR 中从 RX FIFO 中读取数据时总是少读一个(即让一个数据
留在 RX FIFO 中)来实现。
方式二:无论 FIFO 是否清空,间隔指定时间后均产生超时中断
⚫
配置 FIFO 寄存器 RXLVL 位为 3,即 RXThreshold=3,接收 FIFO 取值 3
⚫
配置 CTRL 寄存器 RXIE 位为 1,即 RXThresholdIEn=1,配置接收 FIFO 中的个数>
RXThreshold 时触发中断
⚫
配置 TOCR 寄存器 TIME 位为 10,即 TimeoutTime = 10,超时时长 =
TimeoutTime/(Baudrate/10) 秒
⚫
配置 UARTx.TOCR 寄存器 MODE 位为 1,无论 FIFO 是否清空,间隔指定时间后均产生
超时中断
262
Version 1.23
SWM201 系列
⚫
配置 CTRL 寄存器 TOIE 位为 1,即 TimeoutIEn = 1,超时中断,超过
TimeoutTime/(Baudrate/10) 秒没有在 RX 线上接收到数据时可触发中断
无论接收 FIFO 中是否有数据,只要在指定时间内未接收到新的数据时,就会触发超时中断。
发送中断
以如下配置为例:
⚫
配置 FIFO 寄存器 TXLVL 位为 3,即 TXThreshold = 4,发送 FIFO 取值 4
⚫
配置 CTRL 寄存器 TXIE 位为 1,即 TXThresholdIEn = 1,配置发送 FIFO 中的个数>
TXThreshold 时触发中断
将待发送数据填入发送FIFO
开启发送中断
发
送
出
第
一
个
数
据
发
送
出
第
二
个
数
据
发送FIFO中数据个数 TXThreshold
产生发送中断请求,ISR中将数据填入
若没有剩余数据需要发送,关闭发送中断
发送FIFO中数据个数 TXThreshold
产生发送中断请求,ISR中将数据填入
发
送
出
第
三
个
数
据
发
送
出
第
四
个
数
据
发
送
出
第
五
个
数
据
发
送
出
第
六
个
数
据
发
送
出
第
七
个
数
据
FIFO
将
待
发
送
数
据
填
入
发
送
发
送
出
第
八
个
数
据
发
送
出
第
九
个
数
据
发
送
出
第
十
个
数
据
发
送
出
第
十
一
个
数
据
发
送
出
第
十
二
个
数
据
图 6-46 发送 FIFO 示意图
每发送出一个数据,TX FIFO 中数据个数减 1,当 TX FIFO 中数据个数小于等于 TXThreshold 时,
触发发送中断。
如果初始化时 TX FIFO 中数据个数为零,则开启发送中断后会立即触发发送中断。建议在发送
FIFO 填入数据后再开启发送中断。
中断清除
此模块中中断状态位详见寄存器中各个中断标志位属性,当其中断标志位属性为 R/W1C 时,如
需清除此标志,需在对应标志位中写 1 清零(R/W1C),否则中断在开启状态下会一直进入;
当其中断标志位属性为 AC 时,表示此中断状态位会自动清零;当其中断标志位属性为 RO 时,
表示此标志位会随着水位的变化而改变,标志位只与其当前状态有关,不需要清除。具体详见
寄存器描述。
263
Version 1.23
SWM201 系列
6.13.5 寄存器映射
名称
偏移
类型
UART0
BASE: 0x40042000
UART1
BASE: 0x40042800
复位值
描述
DATA
0x00
R/W
0x0
UART 数据寄存器
CTRL
0x04
R/W
0x1
UART 控制及状态寄存器
BAUD
0x08
R/W
0x184000
UART 波特率控制寄存器
FIFO
0x0C
R/W
0x0
UART 数据队列寄存器
LINCR
0x10
R/W
0x0
LIN Frame 控制寄存器
CTSCR/ RTSCR
0x14
R/W
0x0
自动流控控制寄存器
CFG
0x18
R/W
0x334
CFG 寄存器
TOCR
0x1C
R/W
0x0
接收超时控制寄存器
264
Version 1.23
SWM201 系列
6.13.6 寄存器描述
数据接口寄存器 DATA
寄存器
偏移
类型
复位值
描述
DATA
0x00
R/W
0
UART 数据寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
PAERR
VALID
DATA
2
1
0
23
22
21
20
-
15
14
13
12
7
6
5
4
3
DATA
位域
名称
描述
31:11
-
当前读回的的数据是否存在校验错误,RO
10
PAERR
1:存在
0:不存在
数据有效位,RO
9
VALID
1:DATA 字段有有效的接收数据
0:DATA 字段无有效的接收数据
UART 数据位
8:0
DATA
读操作,返回缓存中接收到的数据
写操作,将待发送的数据写入缓存中
265
Version 1.23
SWM201 系列
控制及状态寄存器 CTRL
寄存器
偏移
类型
复位值
描述
CTRL
0x04
R/W
1
UART 控制及状态寄存器
30
29
31
28
27
26
25
24
19
18
17
16
PAREN
DATA9B
GENBRK
BRKIE
11
10
9
8
LOOP
EN
-
23
22
21
STOP2B
20
PARMD
15
14
13
12
BRKDET
TOIE
7
6
5
4
3
2
1
0
-
TXDOIE
RXOV
RXIE
RXNE
TXIE
TXFF
TXIDLE
-
位域
名称
描述
31:24
-
停止位模式
23:22
STOP2B
00:1 位
01:2 位
1x:保留
奇偶校验位模式
00:奇校验
21:20
PARMD
01:偶校验
10:常 1
11:常 0
奇偶校验使能位
19
PAREN
1:使能
0:禁能
数据位模式
18
DATA9B
1:9 位数据位
0:8 位数据位
17
GENBRK
0:表示 UART 正常发送数据
1:使用 LIN Fram 发送数据
Break 中断使能:
16
BRKIE
1:使能
0:禁能
Break 检测标志位,R/W1C
15
BRKDET
1:接收到 Break
0:没有接收到 Break
266
Version 1.23
SWM201 系列
接收数据超时中断
14
TOIE
1:使能
0:禁能
13:11
-
回环测试模式使能位(从 TX 线发送出去的数据,在自身 RX 线上可以收到,从而
测试硬件是否正常工作)
10
LOOP
1:使能
0:禁能
UART 模块使能位
9
EN
8:7
-
6
TXDOIE
1:使能
0:禁能
发送完成中断使能位
1:使能
0:禁能
接收端 FIFO 溢出标志位,W1C
5
RXOV
1:接收 FIFO 溢出
0:接收 FIFO 没有溢出
接收端 FIFO 中断使能位
4
RXIE
1:接收 FIFO 达到预定的数量时产生中断
0:接收 FIFO 达到预定的数量时不产生中断
注:接收 FIFO 中此位为 0 表示接收到 1 个数据,依次类推
接收端 FIFO 非空标志位,RO
3
RXNE
1:非空
0:空
发送端 FIFO 中断使能位
2
TXIE
1:当发送 FIFO 内的数据少于预定的数量时产生中断
0:当发送 FIFO 内的数据少于预定的数量时不产生中断
注:发送 FIFO 中此位为 0 表示发送 0 个数据,依次类推
发送端 FIFO 满标志位,RO
1
TXFF
1:发送 FIFO 内的数据满
0:发送 FIFO 内的数据不满
发送线空闲标志位,RO
0
TXIDLE
1:发送线空闲
0:发送线忙,正在发送数据
267
Version 1.23
SWM201 系列
波特率寄存器 BAUD
寄存器
偏移
类型
复位值
描述
BAUD
0x08
R/W
0x184000
UART 波特率控制寄存器
30
29
31
28
FRAC
27
26
TXDOIF
ABRERR
25
24
ABRBIT
23
22
21
20
19
18
17
16
ABREN
RXIF
TOIF
TXTHRF
RXTHRF
BRKIF
TXIF
RXTOIF
15
14
13
12
11
10
9
8
RXD
TXD
7
6
2
1
0
BAUD
5
4
3
BAUD
位域
名称
描述
31:28
FRAC
波特率设置微调(波特率分频值的小数部分),参考 BAUD 的设置
发送完成中断状态位
1:中断已产生
27
TXDOIF
0:中断未产生
RO,表示此标志位会随着水位的变化而改变,标志位只与其当前状态有关,不需
要清除
自动调节波特率时,计数器溢出中断标志,R/W1C
26
ABRERR
1:自动调节波特率时,计数器溢出,调节失败。
0:自动调节波特率时,计数器没有溢出。
自动调节波特率时,检测的时间长度
00:1 位长度
25:24
ABRBIT
01:2 位长度
10:4 位长度
11:8 位长度
1:打开波特率自动调节功能。
23
ABREN
0:关闭波特率自动调节功能。
调节完成自动清零,R/W,AC
1:接收数据缓存达到预定数量
22
RXIF
0:接收数据缓存未达到预定数量
RO,表示此标志位会随着水位的变化而改变,标志位只与其当前状态有关,不需
要清除
1:接收数据超出 TIME 确定的时间
0:接收数据未超出 TIME 确定的时间
21
TOIF
RO,表示此标志位会随着水位的变化而改变,标志位只与其当前状态有关,不需
要清除
超过 TOTIME/BAUDRAUD 秒没有接收到新的数据时若 TOIE=1,此位由硬件置位
268
Version 1.23
SWM201 系列
1:发送数据缓存达到预定数量
20
TXTHRF
0:发送数据缓存未达到预定数量
RO,表示此标志位会随着水位的变化而改变,标志位只与其当前状态有关,不需
要清除
1:接收数据缓存达到预定数量
19
RXTHRF
0:接收数据缓存未达到预定数量
RO,表示此标志位会随着水位的变化而改变,标志位只与其当前状态有关,不需
要清除
接收 BREAK 字符中断状态位
1:中断已产生
18
BRKIF
0:中断未产生
RO,表示此标志位会随着水位的变化而改变,标志位只与其当前状态有关,不需
要清除
1:发送数据缓存内的数据少于预定的数量
17
TXIF
0:发送数据缓存内的数据大于预定的数量
RO,表示此标志位会随着水位的变化而改变,标志位只与其当前状态有关,不需
要清除
接收或超时中断标志
11:中断已产生
16
RXTOIF
0:中断未产生
RO,表示此标志位会随着水位的变化而改变,标志位只与其当前状态有关,不需
要清除
15
RXD
直接读取接收线状态,RO
14
TXD
直接读取发送线状态,RO
用于控制 UART 工作的波特率
13:0
BAUD
得到的波特率为:系统主时钟 / (BAUD.BAUD *16 +BAUD.FRAC + 1)
可通过 BAUD 寄存器 FRAC 位进行波特率微调,使波特率的误差在 5%以内。
269
Version 1.23
SWM201 系列
数据队列寄存器 FIFO
寄存器
偏移
类型
复位值
描述
FIFO
0x0C
R/W
0
UART 数据队列寄存器
30
29
31
28
27
26
23
22
21
14
20
19
18
13
6
17
16
9
8
1
0
RXTHR
12
11
10
7
24
TXTHR
15
25
TXLVL
5
4
3
2
-
RXLVL
位域
名称
描述
31:28
-
设置发送 FIFO 中断(TXIF)阈值
27:24
TXTHR
1:当发送 FIFO 里的水位不超过设置值时产生中断
0:当发送 FIFO 里的水位不超过设置值时不产生中断
23:20
-
设置接收 FIFO 中断(RXIF)阈值
19:16
RXTHR
1:当接收 FIFO 里的水位超过设置值时产生中断
0:当接收 FIFO 里的水位超过设置值时不产生中断
15:12
-
-
11:8
TXLVL
发送缓存的实际水位
7:4
-
-
3:0
RXLVL
接收缓存的实际水位
270
Version 1.23
SWM201 系列
LIN Frame 控制寄存器 LINCR
寄存器
偏移
类型
复位值
描述
LINCR
0x10
R/W
0x0
LIN Frame 控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
4
3
2
1
0
GENBRK
GENBRKIF
GENBRKIE
BRKDETIF
BRKDETIE
23
22
21
20
-
15
14
13
12
-
7
6
5
-
位域
名称
描述
31:5
-
发送 LIN Break
4
GENBRK
1:发送
0:不发送
发送完成自动清零,R/W,AC
LIN Break 发送完成中断状态,R/W1C
3
GENBRKIF
1:中断已产生
0:中断未产生
注:无论 GENBRKIE 是 0 还是 1,此标志位都可以置位
发送 LIN Break 完成中断的使能
2
GENBRKIE
1:使能
0:禁能
注:此位负责控制 GENBRKIF 中断标志是否要触发内核中断
检测到 LIN Break 中断状态,R/W1C
1
BRKDETIF
1:中断已产生
0:中断未产生
检测到 LIN Break 中断的使能
0
BRKDETIE
1:使能
0:禁能
271
Version 1.23
SWM201 系列
自动流控控制寄存器 CTSCR/ RTSCR
寄存器
偏移
类型
复位值
描述
CTSCR/ RTSCR
0x14
R/W
0x0
自动流控控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
CTSCR_STAT
5
RTSCR_STAT
4
RTSCR_THR
位域
名称
描述
31:9
-
-
8
RTSCR_STAT
RTS 的当前状态,RO
7
CTSCR_STAT
CTS 的当前状态,RO
3
2
1
0
RTSCR_POL
CTSCR_POL
RTSCR_EN
CTSCR_EN
RTS 流控的触发阈值
000 :触发阈值为 1byte,内部缓存的剩余空间最多只剩 1 个 BYTE。
6:4
RTSCR_THR
001:触发阈值为 2bytes,内部缓存的剩余空间最多只剩 2 个 BYTE。
010:触发阈值为 4bytes,内部缓存的剩余空间最多只剩 4 个 BYTE。
011:触发阈值为 6bytes,内部缓存的剩余空间最多只剩 6 个 BYTE。
RTS 信号的极性。
3
RTSCR_POL
1:高有效,rts 输出高,可以接收数据。
0:低有效,rts 输出低,可以接收数据
CTS 信号的极性。
2
CTSCR_POL
1:高有效,cts 输入为高,可以发送数据。
0:低有效,cts 输入为低,可以发送数据。
RTS 流控使能
1
RTSCR_EN
1:rts 信号发挥流控的作用
0:忽略 rts。
CTS 流控使能
0
CTSCR_EN
1:cts 信号发挥流控的作用
0:忽略 cts。
272
Version 1.23
SWM201 系列
配置寄存器 CFG
寄存器
偏移
类型
复位值
描述
CFG
0x18
R/W
0
CFG 寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
TXINV
RXINV
3
2
23
22
21
20
-
15
14
13
12
7
6
5
BRKRXLEN
4
BRKTXLEN
位域
名称
描述
31:12
-
-
11
TXINV
BRKRXLEN
1
0
MSBF
RXEN
1:发送时电平取反
0:发送时电平不取反
10
RXINV
1:接收时电平取反
0:接收时电平不取反
9:6
BRKRXLEN
5:2
BRKTXLEN
1
MSBF
接收 BRK 的判定长度。
0 表示收到 1 个 bit 的 0,1 表示收到 2bit 的 0,依次类推
发送 BRK 的长度。
1 表示发送 1bit 的 0,2 表示发送 2bit 的 0,依次类推
1:发送和接收时 MSB 在前
0:发送和接收时 LSB 在前
接收打开使能
0
RXEN
1:接收打开。可通过 uart_rx_in 接收外来的数据。
0:接收关闭。不能通过 uart_rx_in 接收外来的数据。而内部的 uart_rx_in 信号保
持为 1。
273
Version 1.23
SWM201 系列
接收超时控制寄存器 TOCR
寄存器
偏移
类型
复位值
描述
TOCR
0x1C
R/W
0x0
接收超时控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
1
0
23
22
21
20
-
15
14
-
7
6
13
12
IFCLR
MODE
5
4
TIME
3
2
TIME
位域
名称
描述
31:14
-
-
13
IFCLR
超时计数器清零,R/W1C
12
MODE
1:无论 FIFO 是否清空,间隔指定时间后均产生超时中断
0:FIFO 清空后,不产生超时中断
接收数据超时中断的触发条件。
11:0
TIME
计时单位为 10 个 SYMBOL TIME
具体和实际波特率的设置相关。如波特率为 9600,则计时单位为 1/960 秒。
274
Version 1.23
SWM201 系列
6.14 I2C 总线控制器(I2C)
6.14.1 概述
SWM201 系列所有型号 I2C 操作均相同,不同型号 I2C 模块数量可能不同。使用前需使能对应
I2C 模块时钟。
I2C 模块提供了 MASTER 模式及 SLAVE 模式,基本操作及配置详见功能描述章节。
6.14.2 特性
⚫
支持通过 APB 总线进行配置
⚫
支持 master、slave 两种模式
⚫
支持 I2C 输入信号数字滤波
⚫
支持 Standard-mode(100kbps)、Fast-mode(400kbps)、Fast-mode Plus(1Mbps)、
High-speed mode(3.4Mbps)
⚫
SCL/SDA 线上数据可读
⚫
Master 模式特性:
⚫
◼
支持 clock synchronization
◼
支持多 master 总线仲裁
◼
支持 clock stretching,slave 器件可通过拉低 SCL 来 hold 总线
◼
支持 SCL LOW 超时报警
◼
支持读、写操作
◼
支持发出的 SCL 时钟周期最大为(2^17)*pclk
◼
SCL 时钟占空比可配置
Slave 模式特性:
◼
支持多 slave
◼
支持 7 位、10 位两种地址模式
◼
支持地址 mask,一个 slave 器件可以占用多个地址
7 位地址模式,一个 slave 器件最多可占用 128 个地址
10 位地址模式,一个 slave 器件最多可占用 256 个地址
◼
支持 clock stretching,slave 器件可通过拉低 SCL 来 hold 总线
◼
支持读、写操作
275
Version 1.23
SWM201 系列
6.14.3 模块结构框图
APB总线
写I2CxDATA
读I2CxDATA
TXDATA
RXDATA
发送
数据移位寄存器
SDA
接收
PCLK
/MSTPSC
SCL
MODE=1
=
SLV_ACTIVE
SLVADDR.ADDR
图 6-47 I2C 模块结构框图
276
Version 1.23
SWM201 系列
6.14.4 功能描述
基本操作
总线设置
I2C 总线采用串行数据线(SDA)和串行时钟线(SCL)传输数据。I2C 总线的设备端口为开漏输出,必
须在接口外接上拉电阻。
数据在主从设备之间通过 SCL 时钟信号在 SDA 数据线上逐字节同步传输。每一个 SCL 时钟脉冲
发送一位数据,高位在前。每发送一个字节的数据产生一个应答信号。在时钟线 SCL 高电平期
间对数据的每一位进行采样。数据线 SDA 在时钟线 SCL 为低改变,在时钟线 SCL 为高电平时保
持稳定。
协议介绍
通常情况下,一个标准的通信包含四个部分:开始信号、从机地址、数据传输、停止信号。如
图 6-48 所示:
SDA
SCL
6..0
S
Adress
7..0
R/W
A
DATA
7..0
A
DATA
A/A
P
图 6-48 I2C 通信示意图
起始位发送
当总线空闲时,表示没有主机设备占用总线(SCL 和 SDA 都保持高电平),主机可以通过发送
一个起始信号启动传输。启动信号,通常被称为 S 位。SCL 为高电平时,SDA 由高电平向低电平
跳变。启动信号表示开始新的数据传输。
重新启动是没有先产生一个停止信号的启动信号。主机使用此方法与另一个从机或者在不释放
总线的情况下与相同的从机改变数据传输方向(例如从写入设备到写入设备的转换)。
当命令寄存器的 STA 位被置位,同时 RD 或者 WR 位被置位时,系统核心产生一个启动信号。
根据 SCLK 的当前的不同状态,生成启动信号或重复启动信号。
地址发送
在开始信号后,由主机传输的第一个字节数据是从机地址。包含 7 位的从设备地址和 1 位的
RW 指示位。RW 指示位信号表示与从机的数据传输方向。在系统中的从机不可以具有相同的地
址。只有从机地址和主机发送的地址匹配时才能产生一个应答位(在第九个时钟周期拉低
SDA)进行响应。对于 10 位从机地址,模块通过产生两个从机地址支持。
277
Version 1.23
SWM201 系列
发送从机地址为一次写操作,在传输寄存器中保存从机地址并对 WR 位置位,从机地址将被发
送到总线上。
数据发送
一旦成功取得了从机地址,主机就可以通过 R/W 位控制逐字节的发送数据。每传输一个字节都
需要在第九个时钟周期产生一个应答位。
如果从机信号无效,主机可以生成一个停止信号中止数据传输或生成重复启动的信号并开始一
个新的传输周期。如果从机返回一个 NACK 信号,主机就会产生一个停止信号放弃数据传输,
或者产生一个重新启动信号开始一个新的传输周期。
如果主机作为接收设备,没有应答从机,从机就会释放 SDA,主机产生停止信号或者重新启动
信号。
向从机写入数据,需把将要发送的数据存入传输寄存器中并设置 WR 位。从从机中读取数据,
需设置 RD 位。在数据传输过程中系统核心设置 TIP 提示标志,指示传输正在进行。当传输完成
后 TIP 提示标志会自动清除。当中断使能时,中断标志位 IF 被置位,并产生中断。当中断标志
位 IF 被置位后,接收寄存器收到有效数据。当 TIP 提示标志复位后,用户可以发出新的写入或
读取命令。
停止位发送
主机可以通过生成一个停止信号终止通信。停止信号通常被称为 P 位,被定义为 SCL 为高电平
时,SDA 由低电平向高电平跳变。
Master SCL 周期配置
图 6-49 Master SCL 周期配置示意图
主机发送模式
I2C 模块作为主机,初始化配置操作如下:
⚫
配置 PORTCON 模块中端口对应 PORTx_FUNC 寄存器,将指定引脚切换为功能复用
⚫
配置 PORTCON 模块中端口对应 PULLU_x 上拉使能寄存器,使能端口内部上拉电阻
(也可使用外部上拉电阻)
⚫
配置 PORTCON 模块中端口对应 INEN_x 输入使能寄存器,使能 I2C 数据线输入功能
⚫
配置 CR 寄存器的 EN 位,关闭 I2C 模块,确保配置寄存器过程中模块未工作
278
Version 1.23
SWM201 系列
⚫
配置 CR 寄存器的 MASTER 位,将 I2C 模块设置为主机模式
⚫
配置 CR 寄存器的 EN 位,I2C 模块总线使能
⚫
设置时序配置寄存器 CLK,假设 pclk=48M,希望 I2C 工作在 Standard-mode
(100kbps)速度下,则每个 SCL 480 个 pclk,可以设置 SCLL=0Xa0,SCLH =0x50,
DIV=0x01
⚫
查询 SR.BUSY,如果为 1,则等待直至其变为 0;如果为 0,则进行下一步
⚫
发送 Start。设置 MCR.STA=1,查询该位,直至其变为 0
⚫
发 slave 地址字节
◼
设置 TXDATA 为【7 位 slave 地址字节左移一位】
◼
设置 MCR.WR=1,查询该位,直至其变为 0(或查询到 IF 的 TXDONE=1(发送成
功)或 AL=1(仲裁丢失总线)
,并写 1 清除)
◼
如果 TXDONE=1,读 TR.RXACK,如果该位为 0,表示 slave 地址匹配成功
◼
如果 AL=1,表示本 master 失去总线,不能再进行后续操作,需重新查询 SR.BUSY
位直至 1,才可以重新发送 Start 位,重新申请总线操作
⚫
向 slave 发送待写数据
◼
设置 TXDATA,准备待写入 slave 的数据
◼
设置 MCR.WR=1,查询该位,直至其变为 0(或查询到 RIST 的 TXDONE=1,并写 1
清除)
◼
⚫
读 TR.RXACK,如果该位为 0,表示写数据成功
发 STOP。设置 MCR.STO=1,查询该位,直至其变为 0
示意图如图 6-50 所示:
279
Version 1.23
SWM201 系列
1 (read)
S
SLAVE ADDRESS
R/W
A
DATA
A
DATA
A
P
BUSY
master
STA
WR
Write TXDATA
TXDE
W1C
TXF
RD
Read RXDATA
Read RXDATA
RXDNE
W1C
W1C
RXF
STO
图 6-50 Master 寄存器时序示意图
注:图中红色部分表示软件操作
主机接收模式
I2C 作为主机接收模式,需将 I2C 模块设置为 MASTER,初始化过程与主发送模式相同。
I2C 作为主机从从机接收数据操作流程如下:
⚫
配置 PORTCON 模块中端口对应 PORTx_FUNC 寄存器,将指定引脚切换为功能复用
⚫
配置 PORTCON 模块中端口对应 PULLU_x 上拉使能寄存器,使能端口内部上拉电阻
(也可使用外部上拉电阻)
⚫
配置 PORTCON 模块中端口对应 INEN_x 输入使能寄存器,使能 I2C 数据线输入功能
⚫
配置 CR 寄存器的 EN 位,关闭 I2C 模块,确保配置寄存器过程中模块未工作
⚫
配置 CR 寄存器的 MASTER 位,将 I2C 模块设置为主机模式
⚫
配置 CR 寄存器的 EN 位,I2C 模块总线使能
⚫
设置时序配置寄存器 CLK,假设 pclk=48M,希望 I2C 工作在 Standard-mode
(100kbps)速度下,则每个 SCL 480 个 pclk,可以设置 SCLL=0Xa0,SCLH =0x50,
DIV=0x01
⚫
查询 SR.BUSY,如果为 1,则等待直至其变为 0;如果为 0,则进行下一步
⚫
发送 Start。设置 MCR.STA=1,查询该位,直至其变为 0
⚫
发 slave 地址字节
◼
设置 TXDATA 为【7 位 slave 地址字节地址右移 1 位】
280
Version 1.23
SWM201 系列
◼
设置 MCR.WR=1,查询该位,直至其变为 0(或查询到 IF 的 TXDONE=1(发送成
功)或 AL=1(仲裁丢失总线)
,并写 1 清除)
◼
如果 TXDONE=1,读 TR.RXACK,如果该位为 0,表示 slave 地址匹配成功
◼
如果 AL=1,表示本 master 失去总线,不能再进行后续操作,需重新查询 SR.BUSY
位直至 1,才可以重新发送 Start 位,重新申请总线操作
⚫
⚫
从 slave 读数据
◼
设置 TR.TXACK=0
◼
设置 MCR.RD=1,查询直到 IF.RXNE=1
◼
读取 RXDATA,得到 slave 数据
◼
查询 MCR.RD,直至其变为 0(或查询到 IF.RXDONE=1,并写 1 清除)
发 STOP。设置 MCR.STO=1,查询该位,直至其变为 0
从发送模式
I2C 作为从发送模式,需将 I2C 模块设置为 SLAVE,具体软件配置操作如下:
⚫
配置 PORTCON 模块中端口对应 PORTx_FUNC 寄存器,将指定引脚切换为功能复用
⚫
配置 PORTCON 模块中端口对应 PULLU_x 上拉使能寄存器,使能端口内部上拉电阻
(也可使用外部上拉电阻)
⚫
配置 PORTCON 模块中端口对应 INEN_x 输入使能寄存器,使能 I2C 数据线输入功能
⚫
配置 CR 寄存器的 EN 位,关闭 I2C 模块,确保配置寄存器过程中模块未工作
⚫
配置 CR 寄存器的 MASTER 位,将 I2C 模块设置为从机模式
⚫
配置 CR 寄存器的 EN 位,I2C 模块总线使能
⚫
设置 slave 地址模式。SCR.SADDR10=0
⚫
设置 slave 地址 SADDR
⚫
查询直至 IF.RXSTA,表示检测到 I2C 总线上有 start 发出
⚫
查询直至 IF.RXNE=1。表示有 master 选中本器件
⚫
如果 SADDR 中设置了地址 mask,则读取 RXDATA,判断 master 发送的实际地址
⚫
如果判断到 TR.SLVRD=1,表示 master 希望从 slave 读取数据
⚫
准备数据,写 TXDATA
⚫
查询直到 RXDONE=1,表示之前地址匹配后,返回 ACK 结束
⚫
查询直到 IF.TXE=1,就可以向 TXDATA 中写入新数据了
⚫
查询直到 IF.TXDONE=1,表示数据发送完成。然后写 1 清除
281
Version 1.23
SWM201 系列
⚫
查询 TR.RXACK,如果为 0,表示 master 希望继续接收数据,则可重新向 TXDATA 中写
入数据;如果 RXACK=1,表示 master 希望结束读操作,则设置 TR.TXCLR,清除之前预
准备到 TXDATA 中的最后一个数据。转入下一步
⚫
查询到 IF.RXSTO,表示检测到 I2C 总线上有 STOP 发出。本次会话结束
示意图如图 6-51 所示:
1
S
SLAVE ADDRESS
(read)
R/W
A
DATA
A
DATA
A
P
BUSY
slave
W1C
RSTA
Read RXDATA
RXDNE
W1C
RXF
t1
SLV_STRETCH_BUSY
Write TXDATA
Write TXDATA
TXDE
W1C
W1C
TXF
W1C
RSTO
图 6-51 Slave 寄存器时序示意图
注 1:图中红色部分表示软件操作
注 2:图中 t1= tLOW,由 CLK 寄存器设置
从接收模式
I2C 作为从接收模式,需将 I2C 模块设置为 SLAVE,操作流程如下:
⚫
配置 PORTCON 模块中端口对应 PORTx_FUNC 寄存器,将指定引脚切换为功能复用
⚫
配置 PORTCON 模块中端口对应 PULLU_x 上拉使能寄存器,使能端口内部上拉电阻
(也可使用外部上拉电阻)
⚫
配置 PORTCON 模块中端口对应 INEN_x 输入使能寄存器,使能 I2C 数据线输入功能
⚫
配置 CR 寄存器的 EN 位,关闭 I2C 模块,确保配置寄存器过程中模块未工作
⚫
配置 CR 寄存器的 MASTER 位,将 I2C 模块设置为从机模式
⚫
配置 CR 寄存器的 EN 位,I2C 模块总线使能
⚫
设置 slave 地址模式。SCR.SADDR10=0
⚫
设置 slave 地址 SADDR
⚫
查询直至 IF.RXSTA,表示检测到 I2C 总线上有 start 发出
⚫
查询直至 IF.RXNE=1。表示有 master 选中本器件
⚫
如果 SADDR 中设置了地址 mask,则读取 RXDATA,判断 master 发送的实际地址
282
Version 1.23
SWM201 系列
⚫
如果判断到 TR.SLVWR=1,表示 master 希望向 slave 写入数据
⚫
查询直到 RXDONE=1,表示之前地址匹配后,返回 ACK 结束。然后写 1 清除
⚫
设置 TR.TXACK=0
⚫
查询直到 IF.RXNE=1,表示 slave 接收到新数据,读取 RXDATA
⚫
查询直到 RXDONE=1,表示之前接收数据后,返回 ACK 结束。然后写 1 清除
⚫
可重复查询 IF.RXNE 位,继续接收数据,直到查询到 IF.RXSTO,表示本次会话结束
时钟延展 clock stretching
clock stretching 通过将 SCL 线拉低来暂停一个传输,直到释放 SCL 线为高电平,传输才继续进
行。
以 master-receiver,slave-transmitter 为例,具体软件配置操作如下:
⚫
配置 PORTCON 模块中端口对应 PORTx_FUNC 寄存器,将指定引脚切换为功能复用
⚫
配置 PORTCON 模块中端口对应 PULLU_x 上拉使能寄存器,使能端口内部上拉电阻
(也可使用外部上拉电阻)
⚫
配置 PORTCON 模块中端口对应 INEN_x 输入使能寄存器,使能 I2C 数据线输入功能
⚫
配置 CR 寄存器的 EN 位,关闭 I2C 模块,确保配置寄存器过程中模块未工作
⚫
配置 CR 寄存器的 MASTER 位,将 I2C 模块设置为主机模式
⚫
配置 CR 寄存器的 EN 位,I2C 模块总线使能
⚫
设置时序配置寄存器 CLK,假设 pclk=48M,希望 I2C 工作在 Standard-mode
(100kbps)速度下,则每个 SCL 480 个 pclk,可以设置 SCLL=0Xa0,SCLH =0x50,
DIV=0x01
⚫
查询 SR.BUSY,如果为 1,则等待直至其变为 0;如果为 0,则进行下一步
⚫
发送 Start。设置 MCR.STA=1,查询该位,直至其变为 0
⚫
发 slave 地址字节
◼
设置 TXDATA 为【7 位 slave 地址字节左移一位】
◼
设置 MCR.WR=1,查询该位,直至其变为 0(或查询到 IF 的 TXDONE=1(发送成
功)或 AL=1(仲裁丢失总线)
,并写 1 清除)
◼
如果 TXDONE=1,读 TR.RXACK,如果该位为 0,表示 slave 地址匹配成功
◼
如果 AL=1,表示本 master 失去总线,不能再进行后续的步骤 6~7,需查询直至
SR.BUSY=1,才可以回到步骤 4,重新发送 Start 位,重新申请总线操作
⚫
向 slave 发送待写数据
283
Version 1.23
SWM201 系列
◼
设置 TXDATA,准备待写入 slave 的数据
◼
设置 MCR.WR=1,查询该位,直至其变为 0(或查询到 RIST 的 TXDONE=1,并写 1
清除)
◼
⚫
读 TR.RXACK,如果该位为 0,表示写数据成功
发 STOP。设置 MCR.STO=1,查询该位,直至其变为 0
HS-MODE
以 master-transmitter 为例
具体软件配置操作如下:
⚫
设置 CR.HS=0,以普通模式发第一个字节
⚫
以主机发送模式的方式,先在 F/S-mode 下发送 START 和 master code。在此过程中,
可以进行 multi-master 的总线仲裁
⚫
如果本 master 获得了总线控制权。则进行如下步骤
⚫
设置 CR.HS=1。才可以设置为高速模式
⚫
设置 CLK 寄存器。假设 pclk=60M,希望 I2C 工作在 HS-mode(3.4Mbps)速度下,则
每个 SCL 14 个 pclk,可以设置 SCLL=0x0A,SCLH=0x05,DIV=0x0
⚫
以主机发送模式的方式,以 High-speed 发送 Sr 和 slave 地址(不需要再判断 IF.AL
位)、写数据等
以 slave-receiver 为例
具体软件配置操作如下:
⚫
根据 F/S-mode 速度设置 CLK 寄存器
⚫
设置 CR.MASTER=0(slave)
,CR.EN=1,CR.HS=0
⚫
设置 slave SCR.MCDE=1,等待 master 发送 master code
⚫
查询直到 RXNE=1,表示接收到 master code
⚫
读取 RXDATA 中的数据,判断是 multi-master 中的哪一个 master 获得了总线。
(对于
single-master 情况,可以省略此判断,但 RXDATA 中的数据需要读走,否则会影响后
续地址和数据的接收)
⚫
设置 HS-mode,后续操作在 HS-mode 下进行。设置 CR.HS=1;设置 SCR.MCDE=0
⚫
根据 HS-mode 速度设置 CLK 寄存器
⚫
设置 slave 地址模式及地址。设置 SCR.SADDR10,并相应设置 SADDR
⚫
查询直到 IF.RXSTA=1,表示接收到 Sr
⚫
查询直到 RXNE=1,表示接收到匹配的地址
284
Version 1.23
SWM201 系列
⚫
根据从机接收模式的操作继续后续操作,直至结束本次会话
中断清除
此模块中中断状态位详见寄存器中各个中断标志位属性,当其中断标志位属性为 R/W1C 时,如
需清除此标志,需在对应标志位中写 1 清零(R/W1C),否则中断在开启状态下会一直进入;
当其中断标志位属性为 AC 时,表示此中断状态位会自动清零;当其中断标志位属性为 RO 时,
表示此标志位会随着水位的变化而改变,标志位只与其当前状态有关,不需要清除。具体详见
寄存器描述。
285
Version 1.23
SWM201 系列
6.14.5 寄存器映射
名称
偏移
类型
I2C0
BASE: 0x400A6000
I2C1
BASE: 0x400A6800
复位值
描述
CR
0x0
R/W
0x0000_010C
通用配置寄存器
SR
0x4
RO
0x0000_0006
通用状态寄存器
TR
0x8
R/W
0x0000_0000
通用传输寄存器
RXDATA
0xC
RO
0x0000_0000
接收数据寄存器
TXDATA
0x10
R/W
0x0000_0000
发送数据寄存器
IF
0x14
R/W
0x0000_0001
中断标志寄存器
IE
0x18
R/W
0x0000_0001
中断使能寄存器
MCR
0x20
R/W
0x0000_0000
Master 控制寄存器
CLK
0x24
R/W
0x0003_4080
时序配置寄存器
SCR
0x30
R/W
0x0000_0000
Slave 控制寄存器
SADDR
0x34
R/W
0x0000_0000
Slave 地址寄存器
286
Version 1.23
SWM201 系列
6.14.6 寄存器描述
通用配置寄存器 CR
寄存器
偏移
类型
复位值
描述
CR
0x0
R/W
0x0000_010C
通用配置寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
HS
MASTER
EN
23
22
21
20
-
15
14
13
12
-
7
6
5
-
4
DNF
位域
名称
描述
31:7
-
Receive SDA、SCL 数字噪声滤波(Digital Noise Filter)
。
0000:滤波不使能。
6:3
DNF
0001:滤波使能,且滤波能力最大 1 个系统时钟。
……
1111:滤波使能,且滤波能力最大 15 个系统时钟。
High-Speed mode。仅在 master 模式下有效。
2
HS
0:Standard-mode, Fast-mode, Fast-mode Plus。SCL 为 open-drain 输出。
1:High-Speed mode。SCL 为电流源上拉电路输出。Master 发送 STOP 后,硬件自
动清除本位。
模式控制。
1
MASTER
0:slave 模式
1:master 模式
i2c 总线使能。
0
EN
0:不使能。
1:使能。
287
Version 1.23
SWM201 系列
通用状态寄存器 SR
寄存器
偏移
类型
复位值
描述
SR
0x4
RO
0x0000_0006
通用状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
SDA
SCL
BUSY
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:3
-
I2C SDA 状态。不受 I2C 总线使能影响。
2
SDA
0:I2C SDA 为低。
1:I2C SDA 为高。
I2C SCL 状态。不受 I2C 总线使能影响。
1
SCL
0:I2C SCL 为低。
1:I2C SCL 为高。
总线忙状态。本位不受 CR.EN 位控制,当 EN 不使能时,仍然检测总线忙状态。
0
BUSY
0:总线不忙。
1:总线忙,I2C 总线 START 至 STOP 期间有效。
288
Version 1.23
SWM201 系列
通用传输寄存器 TR
寄存器
偏移
类型
复位值
描述
TR
0x8
R/W
0x0000_0000
通用传输寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
SLVSTR
SLVWR
SLVRD
SLVACT
3
2
1
0
TXCLR
RXACK
TXACK
23
22
21
20
-
15
14
13
7
12
SLVRDS
6
5
4
-
位域
名称
描述
31:14
-
Slave 接收到的数据类型。仅在 Slave 模式有效。
00:RXDATA 为空。
13:12
SLVRDS
01:接收到的是地址。
10:接收到的是数据。
11:接收到的是 master code。仅当 MCDE=1 时有效。
Slave clock stretching 忙状态。仅在 slave 模式有效。
11
SLVSTR
0:无 clock stretching。
1:有 clock stretching。
Slave 写状态。仅在 slave 模式有效。
10
SLVWR
1:Slave 接收到 master 的写请求后有效。
0:slave 接收到 master 的读请求或 STOP 后,自动清除。
Slave 读状态。仅在 slave 模式有效。
9
SLVRDD
1:Slave 接收到 master 的读请求后有效。
0:slave 接收到 master 的写请求或 STOP 后,自动清除。
Slave 活跃状态。仅在 slave 模式有效。
8
SLVACT
0:slave 器件处于非活跃状态
1:slave 器件处于活跃状态。地址匹配成功后本位有效;接收到 STOP,或 Sr 后的
地址匹配不成功,自动清除。
7:3
-
发送数据寄存器清空。硬件自动清除。
2
TXCLR
0:不清空。
1:清空 TXDATA 中的数据,并更新 TXE 位。
289
Version 1.23
SWM201 系列
当作为 transmitter 时,接收到的 ACK/NACK。硬件置位,TXDONE 有效后即可查询
1
RXACK
此位;接收到 Sr 或 STOP 会将此位清零。
0:接收到 ACK
1:接收到 NACK
当作为 receiver 时,反馈 ACK/NACK。
0:反馈 ACK。
1:反馈 NACK。
0
TXACK
以下情况,ACK/NACK 不由本位决定:
slave 接收地址时,硬件自动反馈 ACK/NACK。
slave MCDE 有效,接收到 master code 时,硬件自动返回 NACK。
slave 接收溢出时,硬件自动反馈 NACK。
290
Version 1.23
SWM201 系列
接收数据寄存器 RXDATA
寄存器
偏移
类型
复位值
描述
RXDATA
0xC
RO
0x0000_0000
接收数据寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
RXDATA
位域
名称
描述
31:8
-
接收数据寄存器
7:0
RXDATA
RXNE 为 1,表示本寄存器中存在有效数据
在完成数据接收(不包含 ACK/NACK 发送)的时刻,更新此寄存器
slave 接收地址字节情况,参见 RXDONE 位说明
291
Version 1.23
SWM201 系列
发送数据寄存器 TXDATA
寄存器
偏移
类型
复位值
描述
TXDATA
0x10
R/W
0x0000_0000
发送数据寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
TXDATA
位域
名称
描述
31:8
-
-
7:0
TXDATA
发送数据寄存器
TXE 为 0,表示本寄存器中存在待发送数据
292
Version 1.23
SWM201 系列
中断标志寄存器 IF
寄存器
偏移
类型
复位值
描述
IF
0x14
R/W
0x0000_0001
中断标志寄存器
30
29
31
28
27
26
25
24
19
18
17
16
MLTO
AL
9
8
RXSTO
RXSTA
23
22
21
20
-
15
14
13
12
11
10
7
6
5
-
位域
名称
描述
31:18
-
-
4
3
2
1
0
RXDONE
TXDONE
RXOV
RXNE
TXE
Master SCL LOW 超时。写 1 清除。仅在 master 模式有效。
17
MLTO
0:未超时。
1:超时。SCL LOW 时间超过 1024 个由 CLK 寄存器设置的 SCL LOW 时间。
【对于 golden model,SCL LOW 超时时间由 MLTO_LIM 设置】
Master 仲裁丢失总线。写 1 清除。仅在 master 模式有效。
16
AL
0:无仲裁丢失总线控制权。
1:仲裁丢失总线控制权。
15:10
-
Slave 检测到 STOP。写 1 清除。仅在 slave 模式下有效。
9
RXSTO
0:slave 未检测到 STOP。
1:slave 检测到 STOP。
Slave 检测到 START。写 1 清除。仅在 slave 模式下有效。
8
RXSTA
0:slave 未检测到 START。
1:slave 检测到 START。
7:5
-
-
293
Version 1.23
SWM201 系列
接收结束。写 1 清除,包含 ACK/NACK 时间。
0:接收未结束。
1:接收结束。
slave 接收情况说明:
Slave 器件 7 位地址模式下,slave 地址字节(含 R/W 位)接收完成,若地址匹
4
RXDONE
配,则生成此中断。
Slave 器件 10 位地址模式下,slave 地址的第 2 字节(ADDR[7:0])接收完成,若 10
位地址匹配,则生成此中断;跟在 repeat START 之后的 slave 地址第 1 字节,若地
址 8、9 位匹配,则生成此中断;跟在 START 之后的第 1 字节接收完成后,即使
ADDR[9:8]匹配,也不会生成此中断。
Slave 模式,MCDE=1,接收到 master code 时,会生成此中断。
发送结束。写 1 清除,包含 ACK/NACK 时间。
3
TXDONE
0:发送未结束,或没有发送。
1:发送结束。
说明:当 master 模式发送字节发生仲裁丢失总线时,不产生本中断。
接收数据寄存器溢出。软件写 1 清除。
(更新的时刻点,不包含 ACK/NACK 发送)
0:无溢出。
1:当 RXDATA 非空时,又接收到新的字节,会产生溢出。溢出发生时,新数据丢
2
RXOV
失。
说明:对于 slave 模式,如果 STRE 位有效,当接收数据寄存器非空,且又接收到
新的字节,slave 器件会拉低 SCL 信号,直到 RXDATA 中的旧数被读走,再把新数存
到 RXDATA 中,此情况不会产生溢出。
接收数据寄存器非空。
0:接收数据寄存器空,不存在未读取的接收数据。
1:接收数据寄存器非空,存在未读取的接收数据。
在接收完数据的时刻更新此位(不包含 ACK/NACK 发送时间)
。
如果新数据接收完成时,旧数据未及时读取,分如下几种情况处理:
1
RXNE
Master 模式:
新数据丢失。同时置位 RXD_OV 位。
Slave 模式:
A.STRE=0:新数据丢失。同时置位 RXD_OV 位,硬件自动反馈 NACK。
B.STRE=1:正常返回 ACK,然后在 master 发送下一个字节前,slave 将 SCL hold
在低电平,直到旧数据被读走后,再将新数据更新到 RXDATA 寄存器中。最后释放
SCL。
发送数据寄存器空。
0:发送数据寄存器非空,不允许写 TXDATA 寄存器。
1:发送数据寄存器空,允许写 TXDATA 寄存器。
0
TXE
在发送数据开始的时刻,发送数据被硬件读走后,此位被更新为 1(此时 TXDONE
仍为 0)
。
向 TXDATA 寄存器写入新数据,可清除此位。
294
Version 1.23
SWM201 系列
中断使能寄存器 IE
寄存器
偏移
类型
复位值
描述
IE
0x18
R/W
0x0000_0001
中断使能寄存器
30
29
31
28
27
26
25
24
19
18
17
16
MLTO
AL
9
8
RXSTO
RXSTA
23
22
21
20
-
12
11
10
9
8
10
7
6
5
-
位域
名称
描述
31:18
-
-
4
3
2
1
0
RXDONE
TXDONE
RXOV
RXNE
TXE
Master SCL LOW 超时中断使能。
17
MLTO
0:不使能。
1:使能。
Master 仲裁丢失总线中断使能。
16
AL
0:不使能。
1:使能。
15:10
-
Slave 检测到 STOP 中断使能。
9
RXSTO
0:不使能。
1:使能。
Slave 检测到 START 中断使能。
8
RXSTA
0:不使能。
1:使能。
7:5
-
接收数据结束中断使能。
4
RXDONE
0:不使能。
1:使能。
发送数据结束中断使能。
3
TXDONE
0:不使能。
1:使能。
接收数据寄存器溢出中断使能。
2
RXOV
0:不使能。
1:使能。
295
Version 1.23
SWM201 系列
接收数据寄存器非空中断使能。
1
RXNE
0:不使能。
1:使能。
发送数据寄存器空中断使能。
0
TXE
0:不使能。
1:使能。
296
Version 1.23
SWM201 系列
Master 控制寄存器 MCR
寄存器
偏移
类型
复位值
描述
MCR
0x20
R/W
0x0000_0000
Master 控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
STO
WR
RD
STA
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:5
-
-
3
STO
写 1,产生 STOP,完成后自动清零。
写 1,发送 TXDATA 中数据,完成后(含 ACK/NACK 时间)自动清零。
2
WR
向本位写 1 前,要求 TXDATA 不能为空。否则,本位无法设置。
注意:WR 与 RD 位不能同时写 1.
1
RD
0
STA
写 1,接收数据到 RXDATA 中,完成后(含 ACK/NACK 时间)自动清零。
写 1,产生 START,完成后自动清零。
注意:允许 STA 和 WR 同时置位,优先发送 START。
297
Version 1.23
SWM201 系列
时序配置寄存器 CLK
寄存器
偏移
类型
复位值
描述
CLK
0x24
R/W
0x0003_4080
时序配置寄存器
30
29
31
28
27
26
23
22
25
24
SDAH
21
20
19
18
17
16
11
10
9
8
3
2
1
0
DIV
15
14
13
12
SCLH
7
6
5
4
SCLL
位域
名称
描述
31:28
-
SDA 数据保持时间配置。(对 Master 和 Slave 有效)
对于 master:tHD;DAT=(SDAH + 4) * Tpclk
对于 slave:tHD;DAT=(SDAH + DNF + 6) * Tpclk
27:24
SDAH
注意:如果应用环境比较恶劣,则应注意,出现在 SDA 数据保持期间的毛刺有可
能导致 SDA 的变化沿提前毛刺宽度的时间(如果此时 SCL 上无毛刺,则总线上会
出现非预期的 STA、STOP)
。在此情况下,应设置 SDAH 使得 tHD;DAT 大于最大的
毛刺宽度。
时钟预分频,详见 SCLH 和 SCLL 描述。
(仅对 Master 模式有效)
0:1 分频
23:16
DIV
1:2 分频
2:3 分频
……
255:256 分频
15:8
SCLH
SCL 时钟高电平时间配置。
(仅对 Master 模式有效)
tHIGH=( (SCLH+1) * (DIV+1) + DNF + 6) * Tpclk
SCL 时钟低电平时间配置。
(对 Master 模式有效;在 slave 模式下,如果使能了
STRETCH 功能,且 ASDS 配置为 0,则需要配置本寄存器。在 slave 写 TXDATA 后,
7:0
SCLL
延迟本寄存器设置的时间,再释放 SCL。
)
tLOW=( (SCLL+1) * (DIV+1) + SDAH + 5) * Tpclk
SCL 的周期为 tHIGH+tLOW。
推荐 SCLH 与 SCLL 的比例为 1:2。
注:示意图如图 6-49 所示
298
Version 1.23
SWM201 系列
Slave 控制寄存器 SCR
寄存器
偏移
类型
复位值
描述
SCR
0x30
R/W
0x0000_0000
Slave 控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
ASDS
STRE
MCDE
SADDR10
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:4
-
Stretching 后数据建立时间自适应使能。(Adaptive Stretching Data Setup)
0:自适应不使能。由 CLK 设置
1:自适应使能。在接收 master 地址时,自动检测 SCL 低电平时间,作为
3
ASDS
stretching 后数据建立时间。
Slave-transmitter,当 STRECH 寄存器设置为有效,且发生 stretching 的情况,在新
数据准备好后,salve 会继续拉低 SCL 一段时间,以保证 SDA 线上满足数据建立时
间的要求。
Clock stretching 使能控制。
0:Clock stretching 不使能。
1:Clock stretching 使能。
(slave 作为 receiver 时,当接收到新数据,但旧数据未被及时读取(RXNE=1):
2
STRE
SLVSTR 变有效,在返回 ACK 后,将 SCL hold 在低电平,直到旧数据被读取后,把
新数据更新到 RXDATA 中,同时 SLVSTR 变无效,再释放 SCL,开始下一个数据的接
收。
slave 作为 transmitter 时,当发送结束(TXDONE=1,含接收 ACK/NACK 时间),但
新数据未准备好(TXE=1)
:SLVSTR 变有效,将 SCL hold 在低电平,直到新数据准
备好,延迟 SCLL 时间后,SLVSTR 变无效,再释放 SCL,开始新数据的发送。)
Master Code Detect Enable.
0:不检测 master code。
1
MCDE
1:检测 master code。
本位有效时,slave 在 START 之后检测到 master code,会生成 RXDONE 中断,并硬
件设置 SLVRDS 为 11。软件应保证 slave 地址设置不与 master code 冲突。
slave 地址模式控制。
0
SADDR10
0:7 位地址模式
1:10 位地址模式
299
Version 1.23
SWM201 系列
Slave 地址寄存器 SADDR
寄存器
偏移
类型
复位值
描述
SADDR
0x34
R/W
0x0000_0000
Slave 地址寄存器
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
MASK7
15
14
13
MASK10
12
11
10
9
7
6
ADDR10
5
4
3
ADDR7
位域
名称
描述
31:24
-
-
8
2
1
0
ADDR0
Slave 对应地址位掩码。
0:不掩码。
23:17
MASK7
1:掩码对应位地址。掩码后,硬件匹配 slave 地址时,忽略被掩码的地址位。
对于 10 位地址模式,RXDATA 仅保存 ADDR[7:0],所以不支持对 ADDR[9:8]的
mask。
16
MASK10
Slave 对应地址位掩码。
15:10
-
-
9:8
ADDR10
10 位地址模式:地址 bit9~bit8
7:1
ADDR7
地址 bit7~bit1
0
ADDR0
10 位地址模式:地址 bit0
300
Version 1.23
SWM201 系列
6.15 SPI 总线控制器(SPI)
6.15.1 概述
SWM201 系列所有型号 SPI 模块操作均相同,不同型号 SPI 数量可能不同。使用前需使能对应
SPI 模块时钟。
SPI 是一种用于全双工模式的串行同步数据通讯协议。该模块为支持 SPI 通讯协议的接口控制模
块,它支持主/从工作模式,并可通过 4 线实现设备的通讯。
SPI 模块支持 SPI 模式及 SSI 模式。SPI 模式下支持 MASTER 模式及 SLAVE 模式。具备深度为 8 的
FIFO,速率及帧宽度可灵活配置。其结构图如图 6-52 SPI 模块结构框图所示。
除了支持 SPI 协议外,还可支持 SSI 协议和 I2S 协议,并支持 SPIFLASH 的 4 线快速读操作。
6.15.2 特性
SPI 模式
⚫
支持主机模式和从机模式
⚫
支持 SPI 和 SSI 两种帧结构
⚫
内置深度为 8 的 FIFO,作为接收和发送数据的缓存
⚫
数据位数 4~16bit 可配置
⚫
可编程时钟极性和相位
⚫
支持 LSB 和 MSB 可配置
I2S 模式
⚫
支持全双工或半双工通讯
⚫
支持主模式或从模式
⚫
8 位可编程线性预分频器,可实现精确的音频采样频率(8kHz 到 192kHz)
⚫
数据格式 8 位、16 位、24 位或 32 位可配置
⚫
支持 I2S Philips 标准、MSB justified 标准、PCM 标准(长帧和短帧同步)
⚫
支持 LSB 和 MLB 可配置
SPIFLASH 模式
⚫
仅支持 4 线快速读操作
⚫
Dummy clock 个数可配置
⚫
读命令可配置
301
Version 1.23
SWM201 系列
6.15.3 模块结构框图
APB总线
读SPIxDATA
写SPIxDATA
SPIxDATA
8级深度
RX FIFO
8级深度
TX FIFO
字传输完成
移位寄存器
MOSI
MISO
PCLK1
/4、/8、
/16、/32、
/64、/128
SCLK
MSTR
同步控制
CLKDIV
SSEL
图 6-52 SPI 模块结构框图
302
Version 1.23
SWM201 系列
6.15.4 功能描述
位速率的产生
SPI 模块包含一个可编程的位速率时钟分频器来生成串行输出时钟。串行位速率通过设置 CTRL
寄存器 CLKDIV 位对输入时钟进行分频来获得。分频值的范围为 4~512 分频值。计算公式如下
Fsclk_out = FPCLK1/SCKDIV。
SPI_CLK 最高支持模块输入时钟 2 分频,即当时钟为 48MHZ 时,最高可支持输出 24MHZ 时钟。
注:2 分频后如果时钟高于 24MHz,则需要接硬件滤波
帧宽度
使能 SPI 模块前,可通过设置 CTRL 寄存器 SIZE 位选择数据帧长度,支持 4~16 位。设置该寄存
器位时,需保证 SPI 处于关闭状态。
SPI 模式
使能 SPI 模块前,可通过设置 CTRL 寄存器中 FFS 位域选择为 SPI 模式。此时,可通过 CTRL 寄存
器中 CPOL 和 CPHA 配置 SPI 模块时钟空闲状态极性与数据采样时间点。
当 CPOL=0,CPHA=0 时,时钟空闲状态为低电平,起始采样点为时钟上升沿。
当 CPOL=0,CPHA=1 时,时钟空闲状态为低电平,起始采样点为时钟下降沿。
当 CPOL=1,CPHA=0 时,时钟空闲状态为高电平,起始采样点为时钟下降沿。
当 CPOL=1,CPHA=1 时,时钟空闲状态为高电平,起始采样点为时钟上升沿。
输出波形如图 6-53 SPI 模式波形图所示:
CPHA=0
CPOL=0
CPOL=1
SAMPLE
MOSI/MISO
SS
CPHA=1
CPOL=0
CPOL=1
SAMPLE
MOSI/MISO
SS
图 6-53 SPI 模式波形图
303
Version 1.23
SWM201 系列
所有模式下,片选线均为发送一个数据后自动拉高,第二个数据再次拉低,因此当需要使用连
续片选时,需使用 GPIO 模拟片选线。
SSI 模式
可通过设置 CTRL 寄存器中 FFS 位选择输出模式,当选择 SSI 模式时,单次输出波形如图 6-54
所示:
SCK
SSEL
4-16Bit
MOSI/MISO
LSB
MSB
图 6-54 SSI 模式单次输出波
连续输出波形如图 6-55 所示:
SCK
SSEL
4-16Bit
MOSI/MISO
4-16Bit
LSB
MSB
MSB
LSB
图 6-55 SSI 模式连续输出波形
I2S 模式
I2S 时钟
在寄存器 CLKEN0 中使能对应 I2S 模块的时钟源。
主机/从机接口
通过配置 I2SCR 寄存器 MSTR 位可选择 I2S 为主机/从机,同时需配置 CTRL 寄存器中的 MSTR
位。
串行总线的时钟 I2S_SCLK 由主机产生。字选择信号 I2S_WS 由主机产生,代表着新的数据字的
开始和目标音频的通道。I2S_WS 和数据都在 I2S_SCLK 下降沿同步改变。主机模式下,主机输出
I2S_SCLK, I2S_WS 到从机。从机模式下,I2S_SCLK 和 I2S_WS 则由主机输入。
304
Version 1.23
SWM201 系列
I2S_SCLK
I2S
Master
I2S_WS
Slave
I2S_DO
I2S_DI
图 6-56 主机模式接口框图
I2S_SCLK
I2S
Slave
I2S_WS
Master
I2S_DO
I2S_DI
图 6-57 从机模式接口框图
I2S 操作
I2S 控制器支持飞利浦标准、MSB 对齐的数据、PCM 短帧标准、PCM 长帧标准,可配置 I2SCR
寄存器 I2SSTD 位
I2S_WS 信号指示当前传输的音频通道。可通过 I2SCR 寄存器 DATLEN 位配置数据字的位宽度,
通过 CTRL 寄存器 LSBF 位配置数据传输的序列。
philips 数据格式时序图如图 6-58 所示:
SCLK
WS
SD_I/SD_O
LSB
MSB
LSB
左通道 N位
MSB
右通道 N位
图 6-58 philips 数据格式
305
Version 1.23
SWM201 系列
按 I2S 协议,发送的数据在 I2S_SCLK 的上升沿被读取,在下降沿发送。在 I2S 的数据格式里,
MSB 在 I2S_WS 变化后的下一个 I2S_SCLK 周期的下降沿发送并锁存。在 MSB 对齐的数据格式
里,I2S_WS 在每个音频通道的第一个数据位(MSB)发送时发生变化。
MSB 对齐数据格式如图 6-59 所示:
SCLK
WS
SD_I/SD_O
MSB
LSB
MSB
右通道 N位
左通道 N位
图 6-59 MSB 对齐数据格式
I2S 控制器还支持 PCM(短帧和长帧)格式的音频传输,可通过 I2SCR 寄存器 I2SSTD 位配置。
在 PCM 协议里,I2S_WS 只是以一个上升沿的脉冲来作为音频段(或音频帧)的开始。因此,
I2S_WS 在 PCM 协议里也被称为“帧开始”或“帧同步”信号。
在主机模式下,对于短帧同步,I2S_WS 同步信号的持续时间仅为一个周期。对于长帧同步,用
户可以通过 I2SCR 寄存器 PCMSYNW 位来选择两种常用的“帧开始”脉冲宽度,一种是采用和
通道宽度一致的脉冲宽度,另一种是采用一个 I2S_SCLK 周期的脉冲宽度。
SCLK
WS
SD_I/SD_O
LSB
MSB
LSB
MSB
左通 道 N位
LSB
MSB
右通 道 N位
图 6-60 PCM 短帧数据格式
SCLK
WS
SD-I/SD_O
LSB
MSB
LSB
左通道 N位
MSB
LSB
MSB
右通道 N位
306
Version 1.23
SWM201 系列
图 6-61 PCM 长帧数据格式(PCMSYNW = 0)
1
2
3
4
5
6
7
8
9
10
SCLK
WS
SD_I/SD_O
LSB
MSB
LSB
MSB
左通 道 N位
LSB
MSB
右通 道 N位
图 6-62 PCM 长帧数据格式(PCMSYNW = 1)
SPIFLASH 模式
SPIFLASH 读支持 Standard SPI 模式和 Quad SPI 模式,写支持 Quad SPI。
SPIFLASH 4 线模式只支持读操作,且 Dummy clock 个数以及读命令均可配置。其帧格式如图
6-63 所示:
CS#
0
1
2
3
4
5
6
7
8
9
29
30
31
32
33
38
39
41
42
D4
D0
D4
D0
D4
D5
D1
D5
D1
D5
D6
D2
D6
D2
D6
D7
D3
D7
D3
D7
40
SCLK
Command
SO/SIO1
SIO2
SIO3
A23
A22
A2
Data
Out1
8 dummy cycles
24 ADD Cycles
6B
SI/SIO0
A1
A0
Data
Out3
Data
Out2
High Impedance
High Impedance
High Impedance
图 6-63 SPIFLASH 四线读帧格式
SPIFLASH 外部连接示意图如图 6-64 所示:
SPI
SPIFLASH
SSN
CS
CLK
CLK
MOSI
DI(IO0)
MISO
DO(IO1)
SPI_MI2
WP(IO2)
SPI_MI3
HOLD(IO3)
图 6-64 SPIFALSH 四线模式外部连接图
307
Version 1.23
SWM201 系列
主设备操作
当 SPI 模块作为主模块工作时,操作流程如下:
⚫
通过 CTRL 寄存器 CLKDIV 位定义串行时钟波特率
⚫
设置 CTRL 寄存器 SIZE 位来选择数据位数
⚫
选择 CTRL 寄存器 CPOL 和 CPHA 位,定义数据传输和串行时钟间的相位关系。主、从设备的
CPOL 和 CPHA 位必须一致
⚫
配置 CTRL 寄存器 FFS 位定义数据帧格式,主、从设备的数据帧格式必须一致。
⚫
设置 CTRL 寄存器 MSTR 位为主模式
⚫
使能 CTRL 寄存器 EN 位
在主设备配置中,MOSI 引脚是数据输出,而 MISO 引脚是数据输入。
注意:当选择硬件提供的 CS 引脚作为从设备片选使能时,每传输一个字节的数据,CS 引脚均
会变高。因此,当从设备需要连续拉低的片选信号时,需要使用 GPIO 模拟 CS 信号。
从设备操作
在从模式下,SCK 引脚用于接收从主设备来的串行时钟。对 CTRL 寄存器中 CLKDIV 的设置不影
响数据传输速率。
操作流程:
⚫
设置 CTRL 寄存器 SIZE 位来定义数据位数选择。
⚫
选择 CTRL 寄存器 CPOL 和 CPHA 位,与主设备一致。
⚫
配置 CTRL 寄存器 FFS 位定义数据帧格式。
⚫
设置 CTRL 寄存器 MSTR 位为从模式
在从设备配置中,MOSI 引脚是数据输入,MISO 引脚是数据输出。
FIFO 操作
发送 FIFO
通用发送 FIFO 是一个 32 位宽、8 单元深、先进先出的存储缓冲区。通过写 DATA 寄存器来将数
据写入发送 FIFO,数据在由发送逻辑读出之前一直保存在发送 FIFO 中。并行数据在进行串行转
换并通过 MOSI 管脚分别发送到相关的从机之前先写入发送 FIFO。
接收 FIFO
通用接收 FIFO 是一个 32 位宽、8 单元深、先进先出的存储缓冲区。从串行接口接收到的数据
在读出之前一直保存在缓冲区中,通过读 DATA 寄存器来访问读 FIFO。从 MISO 管脚接收到的
串行数据在分别并行加载到相关的主机接收 FIFO 之前先进行记录。
308
Version 1.23
SWM201 系列
可通过中断使能寄存器 IE、中断状态寄存器 IF、状态寄存器 STAT 对 FIFO 状态及中断进行查询
与控制。
中断配置与清除
可通过配置中断使能寄存器 IE 相应位使能中断。当中断触发后,中断标志寄存器 IF 对应位置
1。如需清除此标志,需在对应标志位中写 1 清零(R/W1C)
,否则中断在开启状态下会一直进
入。
309
Version 1.23
SWM201 系列
6.15.5 寄存器映射
名称
SPI0
偏移
类型
复位值
描述
BASE: 0x40044000
CTRL
0x00
R/W
0x009e 1172
SPI 控制寄存器
DATA
0x04
R/W
0x0000 0000
SPI 数据寄存器
STAT
0x08
R/W
0x0001 0006
SPI 状态寄存器
IE
0x0C
R/W
0x0000 0000
SPI 中断使能寄存器
IF
0x10
R/W1C
0x0000 0000
SPI 中断状态寄存器
I2SCR
0x14
R/W
0x0000 0046
I2S 控制寄存器
I2SPR
0x18
R/W
0x0000 0000
I2S 预分频寄存器
SPIFLASHCR
0x20
R/W
0x0000 0007
SPIFLASH 控制寄存器
SPIFLASHADDR
0x24
R/W
0x0000 0007
SPIFLASH 地址配置寄存器
310
Version 1.23
SWM201 系列
6.15.6 寄存器描述
控制寄存器 CTRL
寄存器
偏移
类型
复位值
描述
CTRL
0x00
R/W
0x009e 1172
SPI 控制寄存器
30
29
28
INNOSPL
LSBF
21
20
31
23
22
27
19
TFTHR
15
18
RFTHR
14
-
7
26
6
13
12
FAST
MSTR
5
4
11
10
FFS
3
SIZE
2
EN
位域
名称
描述
31:30
-
-
25
24
TFCLR
RFCLR
17
16
SSN
FILTE
9
8
CPOL
CPHA
1
0
CLKDIV
输入信号不进行采样控制
0:输入信号处理方式 FILTE 寄存器来控制
29
INNOSPL
1:输入信号不进行任何采样
注:若不进行采样,则输入信号直接进行电路进行工作,可最大化的提高传输速
率,但会降低可靠性。该为有效后,SPI 的传输速率在理论上无论主从模式全双工
还是单工,最大的传输速率可达到 pclk1 的 2 分频。
LSB 配置寄存器
1:数据按照 LSB 发送(发送时,TX 寄存器数据的 bit0 位会首先被发出;接收时,
28
LSBF
接收的第一个 bit 数据会放到 RX 寄存器的 bit0 位)
0:数据按照 MSB 发送(发送时,TX 寄存器数据的最高位会首先被发出;接收
时,接收的第一个 bit 数据会放到 RX 寄存器的最高位)
注:不适用于 SPIFLASH 模式
27:26
-
发送 FIFO 清除控制位
25
TFCLR
1:发送 FIFO 清除有效
0:发送 FIFO 清除无效
接收 FIFO 清除控制位
24
RFCLR
1:接收 FIFO 清除有效
0:接收 FIFO 清除无效
311
Version 1.23
SWM201 系列
发送 FIFO 达到设置水位后产生中断配置位
000:发送 FIFO 中最多有 0 个数据
001:发送 FIFO 中最多有 1 个数据
010:发送 FIFO 中最多有 2 个数据
23:21
TFTHR
011:发送 FIFO 中最多有 3 个数据
100:发送 FIFO 中最多有 4 个数据
101:发送 FIFO 中最多有 5 个数据
110:发送 FIFO 中最多有 6 个数据
111:发送 FIFO 中最多有 7 个数据
接收 FIFO 达到设置水位后会产生中断配置位
000:接收 FIFO 中至少有 1 个数据
001:接收 FIFO 中至少有 2 个数据
010:接收 FIFO 中至少有 3 个数据
20:18
RFTHR
011:接收 FIFO 中至少有 4 个数据
100:接收 FIFO 中至少有 5 个数据
101:接收 FIFO 中至少有 6 个数据
110:接收 FIFO 中至少有 7 个数据
111:接收 FIFO 中至少有 8 个数据
SSN 在传输过程中是否出现控制位。(在数据帧为 SPI 模式下,并且配置主模式工
17
SSN
作时,通过该位可控制在传输过程中每帧数据之间是否需要 SSN 拉高)
0:传输过程中 SSN 始终为 0
1:传输过程中每一帧数据之间会将 SSN 至少拉高 0.5 个 SCK 周期
输入信号去抖控制
16
FILTE
0:对输入信号不进行去抖操作
1:对输入信号进行去抖操作
15:14
-
快速模式选择
13
FAST
1:SPI 的 SCLK 为 pclk1 的 2 分频
0:SPI 的 SCLK 由 CLKDIV 控制
注:仅适用于 SPI 模式
主从模式选择
12
MSTR
1:SPI 系统配置为主器件模式
0:SPI 系统配置为从器件模式
注:I2S 模式时也需配置此位
数据帧格式选择
00:SPI 模式
11:10
FFS
01:SSI 模式
10:I2S 模式
11:SPI FLASH 模式
312
Version 1.23
SWM201 系列
时钟极性选择
9
CPOL
0 = 串行时钟空闲状态为低电平,有效电平为高电平
1 = 串行时钟空闲状态为高电平,有效电平为低电平
注:仅适用于 SPI 模式
时钟相位选择
8
CPHA
0 = 在串行时钟的第一个跳变沿采样数据
1 = 在串行时钟的第二个跳变沿采样数据
注:仅适用于 SPI 模式
数据位数选择
0000:保留
0001:保留
0010:保留
0011:4bit 数据
0100:5bit 数据
0101:6bit 数据
0110:7bit 数据
7:4
SIZE
0111:8bit 数据
1000:9bit 数据
1001:10bit 数据
1010:11bit 数据
1011:12bit 数据
1100:13bit 数据
1101:14bit 数据
1110:15bit 数据
1111:16bit 数据
注:仅适用于 SPI 模式
SPI 使能位
0:禁止
3
EN
1:使能
注 1:仅适用于 SPI 模式
注 2:该寄存器使能后,若在主模式下,当发送 FIFO 有数据时则开始启动数据帧
传输;在从模式下,等待数据帧传输
波特率选择
000:PCLK14 分频
001:PCLK18 分频
010:PCLK116 分频
2:0
CLKDIV
011:PCLK132 分频
100:PCLK164 分频
101:PCLK1128 分频
110:PCLK1256 分频
111:PCLK1512 分频
注:仅适用于 SPI 模式
313
Version 1.23
SWM201 系列
数据寄存器 DATA
寄存器
偏移
类型
复位值
描述
DATA
0x04
R/W
0x0000 0000
SPI 数据寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
DATA
23
22
21
20
DATA
15
14
13
12
DATA
7
6
5
4
DATA
位域
名称
描述
SPI 接收/发送数据寄存器
31:0
DATA
读操作从接收 FIFO 中读出接收到的数据
写操作将数据写入发送 FIFO 中
注:若数据不是 32bit,则按照右对齐进行排列,高位不关心。
314
Version 1.23
SWM201 系列
状态寄存器 STAT
寄存器
偏移
类型
复位值
描述
STAT
0x08
R/W
0x0001 0006
SPI 状态寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
BUSY
13
12
-
7
6
TFLVL
RFLVL
TFLVL
5
4
3
2
1
0
RFOV
RFF
RFNE
TFNF
TFE
WTC
位域
名称
描述
31:16
-
SPI 传输忙标志位
15
BUSY
0:表示 SPI 未进行传输
1:表示 SPI 正在进行传输
注:仅适用于 SPI 模式
14:12
-
接收 FIFO 数据深度位标志,RO
000:RFF 为 1 时,表示 FIFO 内有 8 组数据
RFF 为 0 时,表示 FIFO 内没有数据;
001:表示 FIFO 内有 1 组数据;
11:9
RFLVL
010:表示 FIFO 内有 2 组数据;
011:表示 FIFO 内有 3 组数据;
100:表示 FIFO 内有 4 组数据;
101:表示 FIFO 内有 5 组数据;
110:表示 FIFO 内有 6 组数据;
111:表示 FIFO 内有 7 组数据;
发送 FIFO 数据深度位标志,RO
000:TFNF 为 0 时,表示 FIFO 内有 8 组数据
TFNF 为 1 时,表示 FIFO 内没有数据;
001:表示 FIFO 内有 1 组数据;
8:6
TFLVL
010:表示 FIFO 内有 2 组数据;
011:表示 FIFO 内有 3 组数据;
100:表示 FIFO 内有 4 组数据;
101:表示 FIFO 内有 5 组数据;
110:表示 FIFO 内有 6 组数据;
111:表示 FIFO 内有 7 组数据;
315
Version 1.23
SWM201 系列
接收 FIFO 溢出标志,软件清零,写清零
5
RFOV
0:没溢出
1:溢出
接收 FIFO 满标志
4
RFF
0:非满
1:满
接收 FIFO 非空标志
3
RFNE
0:空
1:非空
发送 FIFO 非满标志
2
TFNF
0:满
1:非满
发送 FIFO 空标志
1
TFE
0:非空
1:空
SPI 数据帧传输结束标志
每次数据帧传输结束后,该标志会被置位。
0
WTC
软件清零,写 1 清零。
注:仅适用于 SPI 模式
316
Version 1.23
SWM201 系列
中断使能寄存器 IE
寄存器
偏移
类型
复位值
描述
IE
0x0C
R/W
0x0000 0000
SPI 中断使能寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
WTC
FTC
23
22
21
20
-
15
14
13
12
-
7
6
5
4
3
2
1
0
-
TFTHR
RFTHR
TFHF
TFE
RFHF
RFF
RFOV
位域
名称
描述
31:10
-
SPI 传输结束中断使能
9
WTC
1:使能
0:不使能
SPI 数据帧传输结束中断使能
8
FTC
1:使能
0:不使能
7
-
发送 FIFO 达到设定水位中断使能
6
TFTHR
1:使能
0:不使能
接收 FIFO 达到设定水位中断使能
5
RFTHR
1:使能
0:不使能
发送 FIFO 半满使能
4
TFHF
1:使能
0:不使能
发送 FIFO 空中断使能
3
TFE
1:使能
0:不使能
接收 FIFO 半满使能
2
RFHF
1:使能
0:不使能
接收 FIFO 满中断使能
1
RFF
1:使能
0:不使能
317
Version 1.23
SWM201 系列
接收 FIFO 溢出中断使能
0
RFOV
1:使能
0:不使能
318
Version 1.23
SWM201 系列
中断状态寄存器 IF
寄存器
偏移
类型
复位值
描述
IF
0x10
R/W1C
0x0000 0000
SPI 中断状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
WTC
FTC
23
22
21
20
-
15
14
13
12
-
7
6
5
4
3
2
1
0
-
TFTHR
RFTHR
TFHF
TFE
RFHF
RFF
RFOV
位域
名称
描述
31:10
-
SPI 传输结束中断标志
9
WTC
1:中断
0:未中断
写 1 清中断
SPI 数据帧传输结束中断标志
8
FTC
1:中断
0:未中断
写 1 清中断
7
-
发送 FIFO 达到设定水位中断标志
6
TFTHR
1:中断
0:未中断
写 1 清中断
接收 FIFO 达到设定水位中断标志
5
RFTHR
1:中断
0:未中断
写 1 清中断
发送 FIFO 半满中断标志
4
TFHF
1:中断
0:未中断
写 1 清中断状态
发送 FIFO 空中断标志
3
TFE
1:中断
0:未中断
写 1 清中断状态
319
Version 1.23
SWM201 系列
接收 FIFO 半满中断标志
2
RFHF
1:中断
0:未中断
写 1 清中断状态
接收 FIFO 满中断标志
1
RFF
1:中断
0:未中断
写 1 清中断状态
接收 FIFO 溢出中断标志
0
RFOVF
1:中断
0:未中断
写 1 清中断状态
320
Version 1.23
SWM201 系列
I2S 控制寄存器 I2SCR(仅在 I2S 模式下有效)
寄存器
偏移
类型
复位值
描述
I2SCR
0x14
R/W
0x0000 0046
I2S 控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
-
15
14
13
CHSIDE
12
11
10
9
8
CHLEN
MCLKEN
PCMSYNW
3
2
1
0
I2SEN
MSTR
DOEN
DIEN
7
6
5
DATLEN
4
I2SSTD
位域
名称
描述
31:17
-
通道信息
0:发送或接收左通道数据
16
CHSIDE
1:发送或接收右通道数据
注 1:仅在 I2S 模式有效,并且 PCM 标准下没有意义
注 2:主模式下发送的数据,默认首先发送左通道数据
注 3:从模式下接收到的数据可通过该寄存器来判断为左通道数据或右通道数据
15:11
-
声道长度(每个音频声道的数据位数)
10
CHLEN
0:16 位宽
1:32 位宽
主时钟输出使能
9
MCLKEN
0:禁止主时钟输出
1:启动主时钟输出
PCM 长帧同步脉冲宽度(仅在 I2SSTD=11 时生效)
8
PCMSYNW
0:一个 SCLK 时钟宽度
1:一个数据字长宽度
数据字长传输宽度选择
00:8 位数据宽度
7:6
DATLEN
01:16 位数据宽度
10:24 位数据宽度
11:32 位数据宽度
321
Version 1.23
SWM201 系列
I2S 标准选择
00:I2S philips 标准
5:4
I2SSTD
01:MSB justified 标准(左对齐)
10:PCM 短帧标准
11:PCM 长帧标准
I2S 使能控制位
0:禁止
1:使能
注 1:如果该位置 1,主模式下,SCLK 将会启动输出
3
I2SEN
注 2:当作为从模式,若一组数据接收或发送完成后,需要关闭 I2SEN。
注 3:I2S 工作在从模式,当该位被置位 1 后,电路将检查到的有效一个完整帧作
为接收和发送的起始。例如,若 I2SEN=1 后,主设备才开始发出完整帧的 SCLK 时
钟和 WS 信号,则从设备会立刻认为该完整帧是有效帧,进行正常接收和发送;
若 I2SEN=1 前,主设备已开始进行帧的 SCLK 和 WS 信号发送,那么当 I2SEN=1
时,从设备会检查到下一个有效完整帧才开始正常接收和发送。
I2S 端口配置方式
2
MSTR
1:主模式(SCLK/WS 输出)
0:从模式(SCLK/WS 输入)
1:SD_O 输出数据
1
DOEN
0:SD_O 无效
注:bit0 和 bit1 不能同时为 1。
1:SD_I 输入数据
0
DIEN
0:SD_I 无效
注:bit0 和 bit1 不能同时为 1。
322
Version 1.23
SWM201 系列
I2S 预分频寄存器 I2SPR(仅在 I2S 模式下有效)
寄存器
偏移
类型
复位值
描述
I2SPR
0x18
R/W
0x0000 0000
I2S 预分频寄存器
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
15
14
SCLKDIV
13
12
11
10
9
8
3
2
1
0
SCLKDIV
7
6
5
4
-
MCLKDIV
位域
名称
描述
31:20
-
位时钟预分频
19:8
SCLKDIV
Fsclk= Fpclk1/(2*(SCLKDIV+1)
)
注:在使用过程中,该数值不能配为 0。
7:6
-
主时钟预分频
5:0
MCKLDIV
Fmclk=Fpclk1/(2*( MCLKDIV+1))
一般,主时钟的速率是采样频率的 256 倍或 384 倍。
323
Version 1.23
SWM201 系列
SPIFLASH 控制寄存器 SPIFLASHCR(仅在 SPI FLASH 模式下有效)
寄存器
偏移
类型
复位值
描述
SPIFLASHCR
0x20
R/W
0x0000 0007
SPIFLASH 控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
2
1
0
23
22
21
20
-
15
14
13
12
REVDATANUM
7
6
5
-
4
3
SPIFLASHEN
位域
名称
描述
31:16
-
-
15:8
REVDATANUM
7:5
-
DUMMYCLKNUM
所需接收字节数据配置寄存器
待接收(REV_DATA_NUM+1)个数据
SPIFLASH 使能控制位
4
SPIFLASHEN
0:禁止
1:使能
3:0
DUMMYCLKNUM
dummy clk 数量配置寄存器
DUMMY CLK= DUMMY_CLK_NUM+1
324
Version 1.23
SWM201 系列
SPIFLASH 地址配置寄存器 SPIFLASHADDR(仅在 SPI FLASH 模式下有效)
寄存器
偏移
类型
复位值
描述
SPIFLASHADDR
0x24
R/W
0x0000 0007
SPIFLASH 地址配置寄存器
31
30
29
28
27
26
25
24
18
17
16
10
9
8
2
1
0
SPIFLASHADDR
23
22
21
20
19
SPIFLASHADDR
15
14
13
12
11
SPIFLASHADDR
7
6
5
4
3
SPIFLASHADDR
位域
名称
描述
31:0
SPIFLASHADDR
SPIFLASH 地址
325
Version 1.23
SWM201 系列
6.16 脉冲宽度调制(PWM)发生器
6.16.1 概述
SWM201 系列所有型号 PWM 操作均相同,不同型号 PWM 通道数可能不同。使用前需使能
PWM 模块时钟。
PWM 模块用于实现芯片输出特定的方波,控制外部元器件,如步进电机等。计数器可以通过
APB 总线读写寄存器、和外部硬件同时控制,实现计数过程的控制。同时,CPU 和外部硬件也
可以共同实现对输出 PWM 信号的控制。
PWM 模块提供了 2 组(PWM0、PMW1)、8 路(PWM0A、PWM0B、PWM0AN、PWM0BN、
PWM1A、PWM1B、PWM1AN、PWM1BN)独立通道,支持边沿模式、中心对称模式。
中心对称模式下,输出是互补输出。如 PWM0A 驱动 PWM0A 和 PWM0AN 两个输出信号,两个
信号周期相等、电平值相反,且可设置死区。
6.16.2 特性
⚫
2 组 16 位宽 PWM 控制,每组 PWM 支持 4 路 PWM 输出(A/AN/B/BN 路)
,最多可产
生 8 路 PWM 信号
⚫
支持 10 bit 预分频计数器,一个位宽为 10bit 的预分频计数器
⚫
每组 PWM 支持 4 个翻转点(非对称中心对齐模式下,每路输出支持 2 个翻转点,其他
情况下每路支持 1 个翻转点)
⚫
支持 CPU 和外部信号两个控制源,同时控制计数器的启动、停止、输出 MASK、配置更
新四种操作,同时外部信号还可以控制计数器的暂停操作
⚫
提供新周期开始中断,高电平结束中断、刹车中断以及中心对称模式下的半周期中断
⚫
最多支持 7 路外部信号控制源和 3 路外部 HALT 信号,支持对低 4 路外部信号和 3 路外
部 HALT 信号进行滤波功能,支持不滤波、过滤 4/8/16pclk 宽度四种配置
⚫
支持 PWM 计数周期、翻转周期、死区值、trigger 值的动态配置,先发起更新请求,并
在周期溢出时完成更新
⚫
支持输出两种类型的触发信号,计数器比较匹配触发和计数器溢出触发
⚫
可选择初始输出电平选择
⚫
PWM 输出的固定值可配
⚫
PWM 空闲状态下的输出可配
⚫
支持刹车功能
⚫
支持硬件自动触发 ADC 采样
326
Version 1.23
SWM201 系列
6.16.3 模块结构框图
START
PCLK
/N
16-bit Up-Down
Counter
DZ
CLKDIV
=
CLR
波
形
发
生
器
PERIOD
=
向上计数时
刹
车
波
形
取
反
PWMxY
PWMxYN
SET
向下计数时
CMPY
死
区
插
入
IE.UPOVF
IF.UPOVF
IE.UPCMPY
IF.UPCMPY
PWMx_IRQn
IE.DNCMPY
IF.DNCMPY
注1:x表示0或1,Y表示A或B,UP表示向上计数时,DN表示向下计数时
注2:非对称中心对齐模式与普通的中心对称模式唯一的区别就是:下降沿的时候与CMPA2比较,,而不是与CMPA比较
图 6-65 PWM 模块结构框图
327
Version 1.23
SWM201 系列
6.16.4 功能描述
时钟分频
通过 CRx 寄存器 CLKSRC 和 CLKDIV 位,可进行 PWM 工作时钟频率配置,支持工作时钟的分频
范围为系统时钟的 1-1024 倍。
死区保护
PWM 输出时 Dead Zone(死区)的作用是在电平翻转时插入一个时间间隔,避免关闭前一个设备
和打开后一个设备时,因为开关速度的问题,出现同时开启状态而增加负荷的情况(在没有彻底
关闭前打开了后一个设备),尤其是电流过大时容易造成短路等损坏设备。
此 PWM 模块每一路 PWM 的死区都独立配置,在独立模式和中心对称模式下均可配。效果为将
上升沿推后指定周期,但其配置值必须小于高电平持续时长的配置值,且具有死区保护,即当
高电平周期设置为全 0 或者等于周期数时,死区设置失效。
死区示意图如图 6-66 所示:
PWMxA
PWMxAn
PWMxA
PWMxAn
DZAx
DZAnx
DZAx
DZAnx
图 6-66 PWM 死区示意图
计数器的启动与停止
边沿对齐模式
向上计数时,如图 6-67 示意图中如果 IDLEAN 为低,则需要插入死区,否则无死区。
START 信号为上升沿触发,立即生效(系统时钟)。
STOP 信号为高电平期间停止,低电平期间继续计数,立即生效(系统时钟)。
如图 6-67 所示:
328
Version 1.23
SWM201 系列
...
clock
...
...
翻转值A0
START
计数器立即
停止
STOP
RUN
REF_AN
REF_A
PWM_AN
PWM_A
IDLEAN
IDLEAN
IDLEAN
IDLEA
IDLEA
IDLEA
IDLEAN
DZA
IDLEAN
IDLEA
DZA
IDLEAN
IDLEA
如果 IDLEAN为
低, 则加死区
IDLEA
如果 IDLEAN为
低, 则加死区
图 6-67 边沿对齐模式下向上计数时计数器启动与停止波形
向下计数时,如图 6-68 所示,如果 IDLEA 为低,则需要插入死区,否则无死区。
329
Version 1.23
SWM201 系列
...
clock
...
...
翻转值A0
计数器立即
停止
START
STOP
RUN
REF_AN
IDLEAN
IDLEAN
IDLEAN
REF_A
IDLEA
IDLEA
IDLEA
如果IDLEA为
低, 则加死区
PWM_AN
IDLEAN
PWM_A
IDLEA
如果IDLEA为
低, 则加死区
IDLEAN
IDLEAN
DZA
IDLEA
DZA
IDLEA
图 6-68 边沿对齐模式下向下计数时计数器启动与停止波形
中心对齐模式
波形如图 6-69 所示:
330
Version 1.23
SWM201 系列
...
clock
...
...
...
翻转值A0
START
计数器立即
停止
STOP
RUN
REF_AN
IDLEAN
IDLEAN
IDLEAN
REF_A
IDLEA
IDLEA
IDLEA
PWM_AN
IDLEAN
PWM_A
IDLEA
DZA
IDLEAN
DZA
DZA
IDLEAN
IDLEA
如果IDLEAN为
低, 则加死区
IDLEA
如果IDLEAN为
低, 则加死区
图 6-69 中心对齐模式下计数器启动与停止波形
非对称中心对齐模式
波形如图 6-70 所示:
...
clock
...
...
...
翻转值A0
计数器立即
停止
START
STOP
RUN
REF_AN
IDLEAN
IDLEAN
IDLEAN
REF_A
IDLEA
IDLEA
IDLEA
如果IDLEA为
低, 则加死区
PWM_AN
IDLEAN
PWM_A
IDLEA
如果IDLEA为
低, 则加死区
DZA
DZA
IDLEAN
IDLEAN
IDLEA
DZA
IDLEA
图 6-70 非对称中心对齐模式下计数器启动与停止波形
331
Version 1.23
SWM201 系列
计数器计数过程
边沿对齐模式
波形如图 6-71 所示:
clock
0x0
0x0
0x1
...
N-1
N
N-1
N-2
...
0x0
MAX
...
MAX-1
N
N+1
N+2
...
MAX
0x0
0x1
...
...
0x1
0x0
PERA
counter
0
DIR
RUN
0x0 边沿对齐模式
MODE
OVF_UP
OVF_DOWN
DIR_ST
图 6-71 边沿对齐模式下计数器计数过程波形
中心对称模式
波形如图 6-72 所示:
CLK
0x0
0x0
0x1
...
N
...
N
...
M AX
...
M AX
...
0x1
0x0
0x1
...
MAX-1
M AX
MAX-1
PER A
CNT
停止 并清0
无影 响
重新 计数
0
STPCNT
START
START.ENx
0x1 中心 对称 模式
CRx. MODE
...
SWBRK.PWMx y
||HWBRKIN
...
BRKIF
CPU写1清
CPU写1清
图 6-72 中心对称模式下计数器计数过程波形
硬件刹车控制和软件刹车控制
刹车功能可以控制 x 组 y 路 PWM 在 BRK 过程中输出电平的值,可以通过配置 BRKCRx 寄存器配
置。
332
Version 1.23
SWM201 系列
刹车功能同时可以控制在 BRK 过程中计数器是否停止计数。可通过配置 BRKCRx 寄存器 STPCNT
位配置在刹车过程中计数器是否继续计数或停止计数并清零。
刹车功能也可以控制在 BRK 信号撤销后 PWM 信号是否立即变为原始信号或刹车 BRK 的值直到
当前计数周期溢出,PWM 的信号才会跟随原始信号进行翻转。可通过配置 BRKCRx 寄存器
OFFA/OFFB 位分别配置 A 路信号和 B 路信号。
硬件刹车控制和软件刹车控制计数器计数波形如图 6-73 所示:
CLK
0x0
0x0
0x1
...
N
...
N
...
M AX
...
M AX
...
0x1
0x0
0x1
...
MAX-1
M AX
MAX-1
...
0x1
0x0
PER A
CNT
停止 并清0
无影 响
重新 计数
0
CRx. DIR
START
RUN
0x1 中心 对称 模式
CRx. MODE
...
SWBRK.PWMx y
||HWBRKIN
...
BRKIF
CPU写1清
CPU写1清
图 6-73 硬件刹车控制和软件刹车控制计数器计数情况
BRK 过程并不会影响计数器的周期数、对比值等内容,仅仅控制计数器是否完成一次重新启
动。
计数器重载
RELOAD 信号为上升沿触发,不立即生效,需等到计数器溢出后生效。
Log:
计数器的
RELOAD (重载)动作包含三个源头:由 START 动作引起、由主动 CPU 发起、由外部信
1、更新寄存器名称,与手册对应(20210525)
号发起。
⚫
由 START 动作引起:CPU 通过软件或硬件发起一次计数启动(START 动作)时,完成自动
重载。当计数器第一次启动或计数器从 IDLE 状态被重新启动时,都会在进入 ACTIVE 状
态之后,自动完成重载动作。
⚫
由主动 CPU 发起:CPU 通过写 RELOAD 寄存器
◼
A:当 CPU 配置 RELOAD_EN 有效时,每当 RPT_CNTER 计到 0 且计数器溢出时,
都会完成一次自动重载,即周期性的自动重载
◼
B:当 CPU 配置 RESTART_PWMX 为 1 时,计数器会自动完成一次重载+重新启动
的动作,即立即重载
333
Version 1.23
SWM201 系列
⚫
外部信号发起:当发生 EVMUXx 寄存器中 RELOAD 所配置的 ext_event[x]信号(ext_event
上升沿)
,且 RELOAD_EN 有效时,计数器也会自动完成一次重载+重新启动动作,与 CPU
发起的立即重载类似
可通过配置 IEx 寄存器 RELOADEN 位配置计数器重载中断使能,IFx 寄存器查看重载状态,此状
态位为写 1 清零。
如图 6-74 所示:
...
clock
...
...
...
counter
CPU 设计 新配 置值
配置 值
周期、 对比
ValueM
ValueX
ValueN
溢出 状态 &&
自动 配置 请求
共同 引起 计数参 考值的 变化
计数 参考 值
ValueM
ValueX
此处 不更 新
重载 请求
计数 器溢 出
图 6-74 计数器重载波形
注:ext_event 为计数器硬件触发信号,可以完成如下操作:
(1)计数器启动,上升沿启动
(2)计数器停止,高电平时停止,可以配置为停止到当前值,还是初始值(向上计数情况下,
初始值是 0,向下计数情况下,初始值是 PERIOD)
(3)计数器暂停,高电平期间暂停,低电平期间正常计数
(4)寄存器 REALOAD,上升沿触发,在当前周期溢出时完成 RELOAD 动作
(5)输出 MASK,低电平期间 PWM 正常输出,高电平期间 PWM 被 MASK 到指定值
PWM 信号产生波形
以 A 路信号为例说明:
边沿对齐模式:
334
Version 1.23
SWM201 系列
clock
...
...
...
...
周期值
翻转值A0
OVF_UP ||
OVF_DOWN
1
CRx.DIR
REF_AN
PWM_AN
图 6-75 边沿对齐模式下 PWM 信号产生波形
中心对齐模式:
clock
...
...
...
...
翻转值A0
OVF_UP ||
OVF_DOWN
CRx.DIR
REF_AN
REF_A
配置值
周期、对比
DZA
DZA
DZA
PWM_AN
DZA
DZA
PWM_A
图 6-76 中心对齐模式下 PWM 信号产生波形
非对称中心对齐模式:
335
Version 1.23
SWM201 系列
...
clock
...
...
...
翻转值A1
翻转值A0
OVF_UP ||
OVF_DOWN
CRx.DIR
REF_AN
REF_A
配置值
周期、对比
DZA
DZA
DZA
PWM_AN
DZA
DZA
PWM_A
图 6-77 非对称中心对齐模式下 PWM 信号产生波形
BRK 情况下中心对齐模式:
clock
...
...
...
...
HALT期间
停止计数
HALT期间
继续计数
翻转值A0
OVF_UP ||
OVF_DOWN
CRx.DIR
IDLEA
REF_AN
IDLEAN
REF_A
BRK
HALT结束
PWM 马上变回 原值
DZA
HALTAN
DZA
PWM_AN
PWM_A
HALTAN
DZA
DZA
HALTA
HALT AN
DZA
BRKIF
图 6-78 BRK 中心对齐模式下 PWM 信号产生波形
TRIGGER 控制
PWM 模块在计数过程中,可以根据配置输出三种 trigger 信号:
PWM 计数器比较匹配触发:
336
Version 1.23
SWM201 系列
PWM 计数器在计数过程中,当计到 TRIG_CNT 中配置的参考值时,就会产生一个周期的 trig 信
号。根据配置,可以将该 trig 信息映射到输出的 trig[7:0]信号上,且输出宽度可以配置,以 4 个
计数周期为单位进行设置,最小长度为 0 个(即不输出 PWM_TRIG,只输出 ADC_TRIG),最大
长度为 252 个计数
当重复计数功能有效时,trig 信号会在最后一次重复计数时产生。
ADC 触发:
在 PWM_TRIG 输出宽度的正中间,会输出一个 pclk 的 ADC_TRIG 信号,用于触发 ADC 采样。
PWM 计数器溢出触发:
当计数器溢出 TRIG 使能,且计数器发生向上溢出或向下溢出时,会产生一个 pclk 周期的 TRIG
信号,与自定义 TRIG 一致,可以根据配置将该 trig 信息映射到输出的 trig[7:0]信号上。
TRIGGER 控制波形如图 6-79 所示:
...
clock
...
...
...
翻转 值A1
TRIG_CNT
翻转 值A0
OVF_UP ||
OVF_DOWN
向下 计数 期间产 生tri gger
向上 计数 期间产 生tri gger
DIR
REF_ AN
REF_ A
DZA
DZA
PWM_AN
DZA
DZA
PWM_A
PWM_TRIG
(CNT )
TRIG_CNT
TRIG_CNT
Tri g_cnt产生 1pc lk的adc _trig
ADC_TRIG
PWM_TRIG
(OVF)
图 6-79 TRIGGER 控制波形
重复计数功能
重复计数器主要用于控制寄存器 RELOAD 的时机,在周期性自动重载情况下,只有当重复计数
器计为 0,且计数器溢出时,才会完成重载动作。
337
Version 1.23
SWM201 系列
...
clock
...
...
...
...
...
周期值
翻转值A0
RCR
0x2
0x1
0x0
0x2
0x1
0x0
0x2
0x1
REF_AN
REF_BN
PWM_AN
PWM_BN
图 6-80 重复计数功能波形图
触发 SAR ADC 采样
PWM 在任意模式下可以触发 ADC,每一路输出独立的 ADC 触发信号,且每个周期可以设置 1
个 ADC 触发点,每个 PWM 只输出一个触发信号,不区分 A.B 分别触发。
将 SAR ADC 配置寄存器(CTRL)中 TRIG 方式设置为 PWM 触发。每路 PWM 对应 1 个 ADTRG
值,当 PWM 计数到指定值,可触发 ADC 进行采样。
具体配置方式如下:
⚫
配置 PWMx 路触发 ADC 控制寄存器,设置触发点是否有效以及 PWM 触发 ADC 时间
点。
⚫
配置 ADC 的触发方式为 PWM 触发
⚫
使能 PWM 模块 EN 位,当计数值到达 MATCH 设置值时,触发 ADC 配置寄存器(CTRL)
中选中的通道(CHx)进行采样,采样完成后,将产生 EOC 标志位,并产生 ADC 中断
示意图如图 6-81 所示:
CLK
PERAx
N
N-1 N-2
...
2
1
0
N
N-1 N-2
PWM_A Trigger
TRIGGERAx
TA TA-1 ...
1
0
...
2
1
0
N
N-1 N-2
...
2
0
N
TA TA-1 ...
1
0
...
N-1 N-2
PWM_A Trigger
PWM_A Trigger
0
1
2
1
0
N
PWM_A Trigger
0
PWM_A_OUTx
PWM_An_OUTx
ADC_START
TRIGGERENx
图 6-81 PWM 触发 ADC 采样示意图
电平翻转
PWM 模块支持电平翻转,可通过配置 OUTCRx 寄存器中 INVA 和 INVB 位,分别对应 A 通道和 B
通道。
338
Version 1.23
SWM201 系列
如图 6-82 所示:
PER
HIGH
OUTCR.INVxY
PWMxY
PWMxYn
注:INVxA同时影响A和An,,INVxB影响B和Bn
图 6-82 电平翻转示意图
挖坑及 ADC 触发功能
挖坑功能指的是外部信号在高/低电平期间输出被 MASK 到指定电平,也就是我们下面提到的
MASK 功能。
当 MASK 被使能之后,MASK_A/AN/B/BN 有效期间,PWM 输出被 MASK 到的值。MASK 无效期
间,PWM_A/AN/B/BN 输出正常值。
此功能可以在 PWM 波形的任何位置挖坑,挖坑的方向可以是向上、也可以是向下,且 A 和 AN
的挖坑方向是可独立配置的。
MASK 配置对所有的 A/B/AN/BN 路同时有。
PWM 输出可以配置为对 MASK 信号立即生效,还是在原始信号下一次翻转时生效。
可以在 PWM MASK_A/AN/B/BN 有效期间,通过配置 CMPTRGx 寄存器中 ATP 位选择 ADC_TRIG
信号产生时机,可以在 pwm_trig 信号产生的同时,1/8,2/8······7/8 等时间点生成一个系统时钟
的 adc_trig 信号
⚫
在中心对齐模式下,通过配置 CMPTRGx 寄存器中 DIR 位,选择向上/向下计数过程中产生
TRIG 信号。
⚫
通过配置 CMPTRGx 寄存器中 WIDTH 位,设置 Trigger 计数器产生的匹配信号输出宽度,
范围为 0-252 个计数时钟长度
339
Version 1.23
SWM201 系列
PERIOD=10000
CMPA=2500
PWM0A
PWM0AN
图 6-83 挖坑前波形
如图 6-84 所示,设置在 PWM0 计数器等于 1500 处在波形上挖两个电平为零的坑,并在坑的
3/8 宽度位置启动 ADC。
PWM_CmpTrigger(PWM0, 1500, PWM_DIR_UP, 50, PWM_TRG_1, 3),此语句为设置 PWM0 向上计
数,计数值等于 1500 时发出一个触发信号,触发信号发送到 trigger1。
PWM_OutMask(PWM0, PWM_CH_A, PWM_EVT_1, 0, PWM_EVT_1, 0),词语为设置 PWM0A 和
PWM0AN 在 event1 为高时分别输出 0 和 0。
PERIOD=10000
CMPA=2500
1500
PWM0A
50
PWM0AN
0/8
1/8
2/8
3/8
4/8
5/8
6/8
7/8
此处触发ADC
图 6-84 挖坑后波形
340
Version 1.23
SWM201 系列
6.16.5 寄存器映射
名称
偏移
类型
PWM0
BASE:0x40046000
PWM1
BASE:0x40046080
复位值
描述
CRx
0x0
R/W
0
第 x 组 PWM 的工作模式控制
OCRx
0x4
R/W
0
第 x 组 PWM 配置控制
BRKCRx
0x8
R/W
0
第 x 组 BRK 控制寄存器
BRKINx
0xC
R/W
0
第 x 组外部 BRK 选择寄存器
PERIODx
0x20
R/W
0
第 x 组 PWM 的周期数
CMPAx
0x24
R/W
0
第 x 组 A 路 PWM 的高电平宽度 0
CMPBx
0x28
R/W
0
第 x 组 B 路 PWM 的高电平宽度 0
DZAx
0x2C
R/W
0
第 x 组 A 路死区长度控制
DZBx
0x30
R/W
0
第 x 组 B 路死区长度控制
CMPA2x
0x34
R/W
0
CMPB2x
0x38
R/W
0
OVFTRGx
0x50
R/W
0
第 x 组计数器溢出配置
CMPTRGx
0x54
R/W
0
第 x 组触发控制寄存器
CMPTRG2x
0x58
R/W
0
第 x 组触发间隔周期配置寄存器 2
EVMUXx
0x60
R/W
0
第 x 组 PWM 外部信号选择
EVMSKx
0x64
R/W
0
第 x 组 PWM 外部信号配置寄存器
IEx
0x70
R/W
0
第 x 组中断使能寄存器
IFx
0x74
R/W1C
0
第 x 组 PWM 的中断状态寄存器
VALUEx
0x78
RO
0
第 x 组计数器的当前计数值
SRx
0x7C
RO
0
第 x 组计数器的当前运行状态
START
0x400
R/W
0
PWM 启动寄存器
SWBRK
0x404
R/W
0
软件 BRK 操作启动寄存器
RESET
0x408
R/W
0
PWM 复位寄存器
RELOADEN
0x40C
R/W
0
PWM 重载请求寄存器
PULSE
0x410
R/W
0
PWM 外部脉冲触发沿选择
FILTER
0x414
R/W
0
PWM 外部信号滤波选择寄存器
BRKPOL
0x418
R/W
0
外部 BRK 控制寄存器
BRKIE
0x41C
R/W
0
外部 BRK 中断使能寄存器
BRKIF
0x420
R/W
0
外部 BRK 中断状态寄存器
EVSR
0x424
RO
0
外部信号当前状态寄存器
第 x 组 A 路 PWM 的高电平宽度 1,仅在非对称中心
对齐模式下使用
第 x 组 B 路 PWM 的高电平宽度 1,仅在非对称中心对
齐模式下使用
341
Version 1.23
SWM201 系列
6.16.6 寄存器描述
第 x 组 PWM 的工作模式控制寄存器 CRx (x=0,1)
寄存器
偏移
类型
复位值
描述
CRx
0x0
R/W
0
第 x 组 PWM 的工作模式控制
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
DIR
MULT
23
22
21
20
RPTNUM
15
14
13
12
CLKDIV
7
6
5
CLKDIV
4
CLKSRC
位域
名称
描述
31:24
-
-
MODE
重载配置寄存器
n:表示重复计数 n+1 次之后重载
23:16
RPTNUM
注 1:该重复计数器仅应用于重载动作,仅当重复计数值计到 0 且计数器溢出之
后,才会完成重载动作
注 2:计数器每向上或者向下计数一轮,重复计数器减 1,即中心对齐模式下每计
一个完整的周期,该重复计数器减 2
PWM 工作时钟频率相对于系统时钟的分频比选择:
0:1 分频;
1:2 分频;
15:6
CLKDIV
2:3 分频;
以此类推
1023:1024 分频
注:最多支持 1024 分频
第 x 组 PWM 的计数时钟选择
00:使用 PWM_DIV 分频后的时钟计数
5:4
CLKSRC
01:使用 Pulse0 作为 PWM 的计数时钟
10:使用 Pulse1 作为 PWM 的计数时钟
11:保留
342
Version 1.23
SWM201 系列
初始计数方向配置寄存器
0:向上计数模式
3
DIR
1:向下计数模式
注 1:当 MODEx=201 和 10 时,表示中心对齐模式下计数器在前半周期的计数方向
注 2:向上计数是计数器启动之后初始值为低(begin_with_low)的模式,向下计
数是计数器启动之后初始值为高(begin_with_high)的模式
第 x 组 PWM 的计数模式
0:单次计数模式
2
MULT
1:多次计数模式
注 1:单次计数模式下,计数器完成一次计数后产生溢出状态
注 2:多次计数模式下,计数器始终处在计数过程当中,且每轮计数完成都会产生
溢出状态
第 x 组 PWM 的工作模式控制
00:边沿对齐模式
01:中心对齐模式,计数器双向计数
10:非对称中心对齐模式,计数器双向计数
1:0
MODE
11:保留
注 1:边沿对齐模式和中心对齐模式下,不论计数器是向上计数还是向下计数,均
以 CMPA/CMPB 为参考值,输出对应的高电平宽度
注 2:非对称中心对齐模式下,向上计数过程中以 CMPA/CMPB 为参考值,向下计
数过程中以 CMPA2/CMPB2 为参考值,输出对应的高电平宽度
343
Version 1.23
SWM201 系列
第 x 组 PWM 配置控制 OCRx(x=0,1)
寄存器
偏移
类型
复位值
描述
OCRx
0x4
R/W
0
第 x 组 PWM 配置控制
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
4
3
2
1
0
INVBN
INVAN
INVB
INVA
IDLEBN
IDLEAN
IDLEB
IDLEA
位域
名称
描述
31:8
-
1:工作时将 BN 路 pwmobn 反向后输出
7
INVBN
0:工作时将 BN 路 pwmobn 按原始值输出
注 1:该位直接操作 PWM 的最终输出电平(死区计算、PWMMASK、BRK 操作之
后)
1:工作时将 AN 路 pwmoan 反向后输出
6
INVAN
0:工作时将 AN 路 pwmoan 按原始值输出
注 1:该位直接操作 PWM 的输出电平(死区计算、PWMMASK、BRK 操作之后)
1:工作时将 B 路 pwmob 反向后输出
5
INVB
0:工作时将 B 路 pwmob 按原始值输出
注 1:该位直接操作 PWM 的输出电平(死区计算、PWMMASK、BRK 操作之后)
1:工作时将 A 路 pwmoa 反向后输出
4
INVA
0:工作时将 A 路 pwmoa 按原始值输出
注 1:该位直接操作 PWM 的输出电平(死区计算、PWMMASK、BRK 操作之后)
3
IDLEBN
2
IDLEAN
1
IDLEB
0
IDLEA
1:空闲时 BN 路 pwmobn 的原始输出为高
0:空闲时 BN 路 pwmobn 的原始输出为低
1:空闲时 AN 路 pwmoan 的原始输出为高
0:空闲时 AN 路 pwmoan 的原始输出为低
1:空闲时 B 路 pwmob 的原始输出为高
0:空闲时 B 路 pwmob 的原始输出为低
1:空闲时 A 路 pwmoa 的原始输出为高
0:空闲时 A 路 pwmoa 的原始输出为低
344
Version 1.23
SWM201 系列
第 x 组 BRK 控制寄存器 BRKCRx(x=0,1)
寄存器
偏移
类型
复位值
描述
BRKCRx
0x8
R/W
0
第 x 组 BRK 控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
ACTIVE
SWBRKST
10
9
8
STPCNT
OUTBN
OUTAN
2
1
0
OFFA
OUTA
23
22
21
20
-
15
14
13
12
11
7
6
-
5
4
OFFB
OUTB
位域
名称
描述
31:18
-
-
3
-
当前外部激活的 BRK 状态
17
ACTIVE
1:正在进行 BRK
0:没有进行 BRK
当前软件激活的 BRK 状态
16
SWBRKST
1:正在进行 BRK
0:没有进行 BRK
15:11
-
第 x 组计数器在 BRK 过程中的状态
10
STPCNT
0:计数器不受 BRK 信号影响
1:停止并清除计数值
第 x 组 BN 路在 BRK 过程中输出的电平值
9
OUTBN
1:刹车过程中输出高电平
0:刹车过程中输出低电平
第 x 组 AN 路在 BRK 过程中输出的电平值
8
OUTAN
1:刹车过程中输出高电平
0:刹车过程中输出低电平
7:6
-
B 路信号在 BRK 信号撤消之后
0:PWM 输出信号立即变回原始信号
5
OFFB
1:保持 BRK 值直到当前计数周期溢出,PWM 信号才会跟随原始信号进行翻转
注 1:当该位被配置为 1 时,需要软件保证 STPCNT 为 0(计数器能够正常计数)
,
当 STPCNT 为 1 时,该位配置 1 无效果,按为 0 时的方式发生作用。
第 x 组 B 路在 BRK 过程中输出的电平值
4
OUTB
1:刹车过程中输出高电平
0:刹车过程中输出低电平
345
Version 1.23
SWM201 系列
3:2
-
A 路信号在 BRK 信号撤消之后
0:PWM 信号立即变回原始信号
1
OFFA
1:保持 BRK 值直到当前计数周期溢出,PWM 信号才会跟随原始信号进行翻转
注 1:当该位被配置为 1 时,需要软件保证 STPCNT 为 0(计数器能够正常计数)
,
当 STPCNT 为 1 时,该位配置 1 无效果,按为 0 时的方式发生作用。
第 x 组 A 路在 BRK 过程中输出的电平值
0
OUTA
1:刹车过程中输出高电平
0:刹车过程中输出低电平
注 1:SWBRK 和 HWBRK 都受 BRKCTRL 寄存器控制
注 2:配置该 BRKCRx 寄存器之前,应先配置模块 BRK 功能的全局寄存器 BRKPOL、BRKIE.
346
Version 1.23
SWM201 系列
第 x 组外部 BRK 选择寄存器 BRKINx(x=0,1)
寄存器
偏移
类型
复位值
描述
BRKINx
0xC
R/W
0
第 x 组外部 BRK 选择寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
4
3
2
1
0
-
BRK2B
BRK1B
BRK0B
-
BRK2A
BRK1A
BRK0A
位域
名称
描述
31:7
-
第 x 组 B 路是否受外部硬件 BRK2 信号的影响
6
BRK2B
0:对应刹车信号失效
1:对应刹车信号有效
注 1:B/BN 路同时受 BRK2B 控制
第 x 组 B 路是否受外部硬件 BRK1 信号的影响
5
BRK1B
0:对应刹车信号失效
1:对应刹车信号有效
注 1:B/BN 路同时受 BRK1B 控制
第 x 组 B 路是否受外部硬件 BRK0 信号的影响
4
BRK0B
0:对应刹车信号失效
1:对应刹车信号有效
注 1:B/BN 路同时受 BRK0B 控制
3
-
第 x 组 A 路是否受外部硬件 BRK2 信号的影响
2
BRK2A
0:对应刹车信号失效
1:对应刹车信号有效
注 1:A/AN 路同时受 BRK2A 控制
第 x 组 A 路是否受外部硬件 BRK1 信号的影响
1
BRK1A
0:对应刹车信号失效
1:对应刹车信号有效
注 1:A/AN 路同时受 BRK1A 控制
第 x 组 A 路是否受外部硬件 BRK0 信号的影响
0
BRK0A
0:对应刹车信号失效
1:对应刹车信号有效
注 1:A/AN 路同时受 BRK0A 控制
347
Version 1.23
SWM201 系列
第 x 组 PWM 的周期数 PERIODx(x=0,1)
寄存器
偏移
类型
复位值
描述
PERIODx
0x20
R/W
0
第 x 组 PWM 的周期数
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
PERIOD
7
6
5
4
PERIOD
位域
名称
描述
31:16
-
-
15:0
PERIOD
第 x 组 PWM 的周期数
注 1:实际运行的周期数是该值加 1
注 1:当周期数等于 0 时,原始输出保持空闲状态的值
注 2:当高电平值 CMPA/CMPB 为 0 时,输出翻转不考虑死区值,A/B 原始输出保持为 0,
AN/BN 原始输出保持为 1
注 3:当翻转比较值(CMPA/B)+死区值大于周期数时,A/B 原始输出保持为 0,AN/BN 原始输出
保持为 1。
注 4:非对称中心对齐模式下,当翻转比较值 2 大于周期数时,比较值 2 配置无效,A/B 原始
输出在周期值向下翻转为 0,AN/BN 因为此时翻转比较值+死区值也一定大于周期数,因此
AN/BN 原始输出此时翻转为 1
348
Version 1.23
SWM201 系列
第 x 组 A 路 PWM 的高电平宽度 CMPAx(x=0,1)
寄存器
偏移
类型
复位值
描述
CMPAx
0x24
R/W
0
第 x 组 A 路 PWM 的高电平宽度
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
CMPA
7
6
5
4
CMPA
位域
名称
描述
31:16
-
第 x 组 A 路 PWM 的高电平宽度
注 1:边沿触发模式下,不论向上还是向下计数模式,均以此比较值作为高电平宽
15:0
CMPA
度。
注 2:中心对齐模式和非对称中心对齐模式下,此比较值为向上计数过程中的高电
平宽度值。
349
Version 1.23
SWM201 系列
第 x 组 B 路 PWM 的高电平宽度 CMPBx(x=0,1)
寄存器
偏移
类型
复位值
描述
CMPBx
0x28
R/W
0
第 x 组 B 路 PWM 的高电平宽度
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
CMPB
7
6
5
4
CMPB
位域
名称
描述
31:16
-
第 x 组 B 路 PWM 的高电平宽度
注 1:边沿触发模式下,不论向上还是向下计数模式,均以此比较值作为高电平宽
15:0
CMPB
度。
注 2:中心对齐模式和非对称中心对齐模式下,此比较值为向上计数过程中的高电
平宽度值。
350
Version 1.23
SWM201 系列
第 x 组 A 路死区长度控制 DZAx(x=0,1)
寄存器
偏移
类型
复位值
描述
DZAx
0x2C
R/W
0
第 x 组 A 路死区长度控制
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
DZA
4
3
2
1
0
DZA
位域
名称
描述
31:10
Reserve
第 x 组 A 路死区长度控制。
9:0
DZA
注 1:只要出现波形上升沿都会计算死区值
例如:当 idle 值为 0,向下计数,开始启动时也会计算死区值。
351
Version 1.23
SWM201 系列
第 x 组 B 路死区长度控制 DZBx (x=0,1)
寄存器
偏移
类型
复位值
描述
DZBx
0x30
R/W
0
第 x 组 B 路死区长度控制
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
DZB
4
3
2
1
0
DZB
位域
名称
描述
31:10
-
第 x 组 B 路死区长度控制
9:0
DZB
注 1:只要出现波形上升沿都会计算死区值
例如:当 idle 值为 0,向下计数,开始启动时也会计算死区值。
352
Version 1.23
SWM201 系列
第 x 组 A 路 PWM 的高电平宽度 2 寄存器 CMPA2x (x=0,1)
寄存器
偏移
类型
复位值
CMPA2x
0x34
R/W
0
30
29
31
描述
第 x 组 A 路 PWM 的高电平宽度 2,仅在非对称中心
对齐模式下使用
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
CMPA2
7
6
5
4
CMPA2
位域
名称
描述
31:16
-
第 x 组 A 路 PWM 的高电平宽度 2。
最小为 0
15:0
CMPA2
注 1:该寄存器仅非对称中心对齐模式下使用,在该模式下,计数器在向上计数过
程中以 CMPAx 作为高电平宽度,向下计数过程中以 CMPA2x 作为高电平宽度
注 2:CMPA2 必须小于等于 PERIODx,否则在向下计数过程中 CMPA2 按 PERIODx 计
算,A 原始输出始终保持 1,AN 原始输出始终保持 0
353
Version 1.23
SWM201 系列
第 x 组 B 路 PWM 的高电平宽度 2 寄存器 CMPB2x (x=0,1)
寄存器
偏移
类型
复位值
CMPB2x
0x38
R/W
0
30
29
31
描述
第 x 组 B 路 PWM 的高电平宽度 2,仅在非对称中心
对齐模式下使用
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
CMPB2
7
6
5
4
CMPB2
位域
名称
31:16
-
描述
第 x 组 B 路 PWM 的高电平宽度 2。
最小为 0
15:0
CMPB2
注 1:该寄存器仅非对称中心对齐模式下使用,在该模式下,计数器在向上计数过
程中以 CMPBx 作为高电平宽度,向下计数过程中以 CMPB2x 作为高电平宽度
注 2:CMPB2 必须小于 PERIODx,否则在向下计数过程中 CMPB2 按 PERIODx 计
算,B 原始输出始终保持 1,BN 原始输出始终保持 0
354
Version 1.23
SWM201 系列
第 x 组计数器溢出配置寄存器 OVFTRGx(x=0,1)
寄存器
偏移
类型
复位值
描述
OVFTRGx
0x50
R/W
0
第 x 组计数器溢出配置
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
DNEN
UPEN
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
MUX
位域
名称
描述
31: 5
Reserve
计数器溢出信号映射到哪一路 trig 输出
000:映射到 trig[0]
001:映射到 trig[1]
010:映射到 trig[2]
4:2
MUX
011:映射到 trig[3]
100:映射到 trig[4]
101:映射到 trig[5]
110:映射到 trig[6]
111:映射到 trig[7]
计数器向下溢出映射使能
1
DNEN
1:向下溢出映射使能
0:向下溢出映射不使能
计数器向上溢出映射使能
0
UPEN
1:向上溢出映射使能
0:向上溢出映射不使能
355
Version 1.23
SWM201 系列
第 x 组触发控制寄存器 CMPTRGx (x=0,1)
寄存器
偏移
类型
复位值
描述
CMPTRGx
0x54
R/W
0
第 x 组触发控制寄存器
30
29
31
ATP
23
28
27
DIR
22
21
26
-
20
19
WIDTH
15
14
25
WIDTH
18
17
MUX
13
12
24
16
EN
11
10
9
8
3
2
1
0
CMP
7
6
5
4
CMP
位域
名称
描述
ADC_TRIG 信号产生时机选择位
000:表示当 pwm_trig 信号产生的同时,生成 1 个系统时钟的 adc_trig 信号
001:
表示在 pwm_trig 信号持续时间的第 1/8 时间点处,
生成 1 个系统时钟的 adc_trig
信号
010:
表示在 pwm_trig 信号持续时间的第 2/8 时间点处,
生成 1 个系统时钟的 adc_trig
信号
011:
表示在 pwm_trig 信号持续时间的第 3/8 时间点处,
生成 1 个系统时钟的 adc_trig
信号
100:
表示在 pwm_trig 信号持续时间的第 4/8 时间点处,
生成 1 个系统时钟的 adc_trig
信号
31:29
ATP
101:
表示在 pwm_trig 信号持续时间的第 5/8 时间点处,
生成 1 个系统时钟的 adc_trig
信号
110:
表示在 pwm_trig 信号持续时间的第 6/8 时间点处,
生成 1 个系统时钟的 adc_trig
信号
111:
表示在 pwm_trig 信号持续时间的第 7/8 时间点处,
生成 1 个系统时钟的 adc_trig
信号
注:
1:adc_trig 相对于 pwm_trig 的偏移量为:
0+ ((bit[29] == 1) ? trig_cnt[15:3] : 0)
+((bit[30] == 1 ) ? trig_cnt[15:2] : 0)
+((bit[31] == 1 ) ? trig_cnt[15:1] : 0)
2:当 pwm_trig 宽度不能被 8 整除时,会按照如注 1 的情况进行近似计算。
中心对齐工作模式下,产生 TRIG 信号的时机
28
DIR
0:向上计数过程中产生 TRIG 信号
1:向下计数过程中产生 TRIG 信号
注 1:仅在中心对齐模式和非对称中心对齐模式下有效
356
Version 1.23
SWM201 系列
27:26
-
第 x 组 Trigger 计数器产生的匹配信号输出宽度
0:无输出
1:输出 4 个计数时钟长度
2:输出 8 个计数时钟长度
3:输出 12 个计数时钟长度
25:20
WIDTH
…
63:输出 252 个计数时钟长度
注 1:每次计数时,会在计数中间产生一个 pclk 的 trig_adc 信号
注 2:最多输出 252 个计数时钟宽度的 PWM_TRIG(当系统时钟为 125Mhz,计数时
钟与系统时钟一致的情况下,最多可以产生 252*8ns =2.016 us 的 pwm_trig 信号)
注 3:当 WIDTH 配置为 0 时,不产生 pwm_trig 信号,只产生 trig_adc 信号
第 x 组 Trigger 计数器产生的匹配信号映射到哪一路 trig 输出
000:映射到 trig[0]
001:映射到 trig[1]
010:映射到 trig[2]
19:17
MUX
011:映射到 trig[3]
100:映射到 trig[4]
101:映射到 trig[5]
110:映射到 trig[6]
111:映射到 trig[7]
第 x 组 Trigger 计数器信号是否使能
16
EN
1:使能
0:不使能
第 x 组计数器的值与此比较值相等时产生 Trigger 信号
15:0
CMP
注 1:如果第 x 组计数器的值和此比较值的值相等,则 trigger 输出一个精度为 4 倍
计数时钟的高脉冲,宽度可配置,且输出的 pwm_trig 能够跨计数器的周期。
357
Version 1.23
SWM201 系列
第 x 组触发间隔周期配置寄存器 2CMPTRG2x (x=0,1)
寄存器
偏移
类型
复位值
描述
CMPTRG2x
0x58
R/W
0
第 x 组触发间隔周期配置寄存器 2
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:3
-
-
INTV
触发间隔周期选择
000:每周期触发
001:间隔 1 周期触发一次
010:间隔 2 周期触发一次
2:0
INTV
011:间隔 3 周期触发一次
100:间隔 4 周期触发一次
101:间隔 5 周期触发一次
110:间隔 6 周期触发一次
111:间隔 7 周期触发一次
358
Version 1.23
SWM201 系列
第 x 组 PWM 外部信号选择寄存器 EVMUXx(x=0,1)
寄存器
偏移
类型
复位值
描述
EVMUXx
0x60
R/W
0
第 x 组 PWM 外部信号选择
30
29
31
-
28
27
MASKBN
23
22
-
21
20
19
MASKB
15
14
-
13
12
11
6
-
5
3
STOP
位域
名称
描述
31
-
-
18
-
24
17
16
MASKA
10
4
25
MASKAN
-
RELOAD
7
26
9
8
PAUSE
2
1
0
START
BN 路 MASK 功能选择寄存器
000:禁用外部信号控制 BN 路 MASK
001:由 ext_event[0]控制 BN 路 MASK
010:由 ext_event[1]控制 BN 路 MASK
30:28
MASKBN
011:由 ext_event[2]控制 BN 路 MASK
100:由 ext_event[3]控制 BN 路 MASK
101:由 ext_event[4]控制 BN 路 MASK
110:由 ext_event[5]控制 BN 路 MASK
111:由 ext_event[6]控制 BN 路 MASK
27
-
AN 路 MASK 功能选择寄存器
000:禁用外部信号控制 AN 路 MASK
001:由 ext_event[0]控制 AN 路 MASK
010:由 ext_event[1]控制 AN 路 MASK
26:24
MASKAN
011:由 ext_event[2]控制 AN 路 MASK
100:由 ext_event[3]控制 AN 路 MASK
101:由 ext_event[4]控制 AN 路 MASK
110:由 ext_event[5]控制 AN 路 MASK
111:由 ext_event[6]控制 AN 路 MASK
23
-
-
359
Version 1.23
SWM201 系列
B 路 MASK 功能选择寄存器
000:禁用外部信号控制 B 路 MASK
001:由 ext_event[0]控制 B 路 MASK
010:由 ext_event[1]控制 B 路 MASK
22:20
MASKB
011:由 ext_event[2]控制 B 路 MASK
100:由 ext_event[3]控制 B 路 MASK
101:由 ext_event[4]控制 B 路 MASK
110:由 ext_event[5]控制 B 路 MASK
111:由 ext_event[6]控制 B 路 MASK
19
-
A 路 MASK 功能选择寄存器
000:禁用外部信号控制 A 路 MASK
001:由 ext_event[0]控制 A 路 MASK
010:由 ext_event[1]控制 A 路 MASK
18:16
MASKA
011:由 ext_event[2]控制 A 路 MASK
100:由 ext_event[3]控制 A 路 MASK
101:由 ext_event[4]控制 A 路 MASK
110:由 ext_event[5]控制 A 路 MASK
111:由 ext_event[6]控制 A 路 MASK
15
-
计数器外部重启功能选择寄存器
000:禁用外部信号重启计数器
001:由 ext_event[0]重启计数器
010:由 ext_event[1]重启计数器
011:由 ext_event[2]重启计数器
14:12
RELOAD
100:由 ext_event[3]重启计数器
101:由 ext_event[4]重启计数器
110:由 ext_event[5]重启计数器
111:由 ext_event[6]重启计数器
注 1:外部发起的重启请求,当 RELOAD_EN 为 1 且发生上升沿时,会完成一次“清
除+重载+启动”的功能,清除的内容为当前计数值、当前的分频值、当前重复计数
值。然后重新启动一次全新的计数过程。
11
-
-
360
Version 1.23
SWM201 系列
计数器外部暂停功能选择寄存器
000:禁用外部信号暂停计数器
001:由 ext_event[0]暂停计数器
010:由 ext_event[1]暂停计数器
011:由 ext_event[2]暂停计数器
100:由 ext_event[3]暂停计数器
10:8
PAUSE
101:由 ext_event[4]暂停计数器
110:由 ext_event[5]暂停计数器
111:由 ext_event[6]暂停计数器
注 1:高电平有效
注 2:计数器被暂停之后,计数器暂停在当前计数值,当选中的 ext_event 变为低
(不再暂停)之后,计数器马上继续计数
注 3:当检测到外部暂停时,计数器最少保持一个计数时钟的暂停
7
-
计数器外部停止功能选择寄存器
000:禁用外部信号停止计数器
001:由 ext_event[0]停止计数器
010:由 ext_event[1]停止计数器
011:由 ext_event[2]停止计数器
6:4
STOP
100:由 ext_event[3]停止计数器
101:由 ext_event[4]停止计数器
110:由 ext_event[5]停止计数器
111:由 ext_event[6]停止计数器
注 1:高电平有效
注 2:计数器被停止之后,需要等待选中的 ext_event 变为低(停止计数的功能失
效)
,再经过 CPU 或者硬件启动,才会开始计数。
3
-
计数器外部启动功能选择寄存器
000:禁用外部信号启动计数器
001:由 ext_event[0]启动计数器
010:由 ext_event[1]启动计数器
2:0
START
011:由 ext_event[2]启动计数器
100:由 ext_event[3]启动计数器
101:由 ext_event[4]启动计数器
110:由 ext_event[5]启动计数器
111:由 ext_event[6]启动计数器
注 1:计数器启动为上升沿触发,立即生效
注 2:计数器停止为高电平停止,低电平释放,立即生效(系统时钟域)
注 3:计数器暂停为高电平暂停,低电平继续计数,输入信号会同步到计数周期上去,当外部
信号的长度小于一个计数时钟时,计数器也会暂停一个计数时钟。
注 4:寄存器重启为上升沿触发,当 LOAD_EN 为 1 时,立即生效
361
Version 1.23
SWM201 系列
注 5:MASK 为高电平时输出设定值,低电平时输出正常值。A/AN/B/BN 路输出 MASK 可以配置
为立即生效,也可以配置为等到当前周期溢出之后才会 MASK 到设定值。当 MASK 信号撤消之
后,也可以配置为立即生效,或者会继续保留 MASK 值直到当前周期溢出。
362
Version 1.23
SWM201 系列
第 x 组 PWM 外部信号配置寄存器 EVMSKx (x=0,1)
寄存器
偏移
类型
复位值
描述
EVMSKx
0x64
R/W
0
第 x 组 PWM 外部信号配置寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
-
位域
名称
描述
31:9
-
-
STPCLR
4
3
2
1
0
IMME
OUTBN
OUTAN
OUTB
OUTA
计数器外部停止期间计数器是否清除
1:清除
8
STPCLR
0:保持当前值,不清除
注 1:仅在 EV_STOP,即计数器外部停止功能下有效
注 2:EV_STOP 信号引起的计数器停止和清除动作均立即生效,精确到系统时钟域
7:5
-
MASK 信号是否立即生效
1:立即生效
0:保持当前值,直到计数溢出之后才被 MASK
注 1:MASK 信号撤消时,配置与此处一致
4
IMME
注 2:立即生效会精确到系统时钟域;
注 3:溢出之后被 MASK 时,PWM 输出会同步到计数器溢出,使用系统时钟对外部
输入的 MASK 触发信号进行采样,当采到 MASK 触发源为 1 时,PWM 输出被 MASK
的时间最少持续一个计数溢出。当输入的有效 MASK 触发信号出现在跨计数器溢出
点的情况时,PWM 输出 MASK 值会持续两次计数溢出
输出信号 PWMBN 被 MASK 的目标电平值
3
OUTBN
0:表示 MASK 到 0
1:表示 MASK 到 1
输出信号 PWMAN 被 MASK 的目标电平值
2
OUTAN
0:表示 MASK 到 0
1:表示 MASK 到 1
输出信号 PWMB 被 MASK 的目标电平值
1
OUTB
0:表示 MASK 到 0
1:表示 MASK 到 1
363
Version 1.23
SWM201 系列
输出信号 PWMA 被 MASK 的目标电平值
0
OUTA
0:表示 MASK 到 0
1:表示 MASK 到 1
364
Version 1.23
SWM201 系列
第 x 组中断使能寄存器 IEx (x=0,1)
寄存器
偏移
类型
复位值
描述
IEx
0x70
R/W
0xFF
第 x 组中断使能寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
4
3
2
1
0
-
RELOADEN
DNCMPB
DNCMPA
UPCMPB
UPCMPA
DNOVF
UPOVF
位域
名称
描述
31: 7
-
第 x 组 PWM 计数器重载中断使能
6
RELOADEN
1:使能
0:不使能
第 x 组 PWM 计数器向下计数过程中 B 路上升沿中断使能
5
DNCMPB
1:使能
0:不使能
第 x 组 PWM 计数器向下计数过程中 A 路上升沿中断使能
4
DNCMPA
1:使能
0:不使能
第 x 组 PWM 计数器向上计数过程中 B 路下降沿中断使能
3
UPCMPB
1:使能
0:不使能
第 x 组 PWM 计数器向上计数过程中 A 路下降沿中断使能
2
UPCMPA
1:使能
0:不使能
第 x 组 PWM 计数器向下溢出中断使能
1
DNOVF
1:使能
0:不使能
第 x 组 PWM 计数器向上溢出中断使能
0
UPOVF
1:使能
0:不使能
365
Version 1.23
SWM201 系列
第 x 组 PWM 的中断状态寄存器 IFx(x=0,1)
寄存器
偏移
类型
复位值
描述
IFx
0x74
R/W1C
0
第 x 组 PWM 的中断状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
4
3
2
1
0
-
RELOADEN
DNCMPB
DNCMPA
UPCMPB
UPCMPA
DNOVF
UPOVF
位域
名称
描述
31: 7
-
第 x 组 PWM 计数器重载状态,写 1 清除
1:已经发生
0:没有发生
注 1:如下情况下会置位重载状态
1:当 reload_en 使能之后,每次计数器溢出(向下溢出或者向下溢出)时的自动
6
RELOADST
reload
2:当 reload_en 使能之后,每个 ev_recount 发生时的 reload
注 2:当计数器在 start(CPU 引起或者 ev_start)时,会有一个自动 reload,该动作
不会置位重载状态
注 3:当 CPU 配置 RESTART_PWMX 寄存器时,同样也会有一个自动 reload,该动作
也不会置位重载状态
第 x 组 PWM 计数器向下计数过程中 B 路上升沿发生状态,写 1 清除
5
DNCMPB
1:已经发生
0:没有发生
第 x 组 PWM 计数器向下计数过程中 A 路上升沿发生状态,写 1 清除
4
DNCMPA
1:已经发生
0:没有发生
第 x 组 PWM 计数器向上计数过程中 B 路下降沿发生状态,写 1 清除
3
UPCMPB
1:已经发生
0:没有发生
第 x 组 PWM 计数器向上计数过程中 A 路下降沿发生状态,写 1 清除
2
UPCMPA
1:已经发生
0:没有发生
366
Version 1.23
SWM201 系列
第 x 组 PWM 计数器向下溢出状态,写 1 清除
1
DNOVF
1:已经发生溢出
0:没有发生溢出
第 x 组 PWM 计数器向上溢出状态
0
UPOVF
1:已经发生溢出
0:没有发生溢出
注 1:写 1 清除
367
Version 1.23
SWM201 系列
第 x 组计数器的当前计数值 VALUEx(x=0,1)
寄存器
偏移
类型
复位值
描述
VALUEx
0x78
RO
0
第 x 组计数器的当前计数值
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
CNT
7
6
5
4
CNT
位域
名称
描述
31:16
-
-
15:0
CNT
第 x 组 PWM 的当前计数值。
368
Version 1.23
SWM201 系列
第 x 组计数器的当前运行状态 SRx(x=0,1)
寄存器
偏移
类型
复位值
描述
SRx
0x7C
RO
0
第 x 组计数器的当前运行状态
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
4
OUTAN
OUTB
OUTA
DIR
OUTBN
3
2
-
位域
名称
描述
31:9
-
-
8
OUTBN
第 x 组 PWM 计数器当前 BN 路输出
7
OUTAN
第 x 组 PWM 计数器当前 AN 路输出
6
OUTB
第 x 组 PWM 计数器当前 B 路输出
5
OUTA
第 x 组 PWM 计数器当前 A 路输出
4
DIR
1
0
STAT
第 x 组 PWM 计数器当前计数方向
0:向上计数过程当中
1:向下计数过程当中
3:2
-
第 x 组 PWM 的计数器状态
1:0
STAT
00:IDLE 状态,计数器不工作
01:ACTIVE 状态,计数器正在计数过程中
10:PAUSE 状态,计数器被暂停
369
Version 1.23
SWM201 系列
PWM 启动寄存器 START
寄存器
偏移
类型
复位值
描述
START
0x400
R/W
0
PWM 启动寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
PWM1
PWM0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31: 2
-
PWM1 计数器启动位
1:启动
0:停止
1
PWM1
注 1:CPU 写该寄存器时,写 1 表示启动计数器,写 0 表示停止计数器。
注 2:CPU 回读时,为 1 表示发生了 CPU 启动或者外部硬件启动,为 0 表示计数器
未启动
注 3:单次计数模式完成、BRK 停止、外部硬件停止发生时,该位也会被置 0
PWM0 计数器启动位
1:启动
0:停止
0
PWM0
注 1:CPU 写该寄存器时,写 1 表示启动计数器,写 0 表示停止计数器。
注 2:CPU 回读时,为 1 表示发生了 CPU 启动或者外部硬件启动,为 0 表示计数器
未启动
注 3:单次计数模式完成、BRK 停止、外部硬件停止发生时,该位也会被置 0
370
Version 1.23
SWM201 系列
软件 BRK 操作启动寄存器 SWBRK
寄存器
偏移
类型
复位值
描述
SWBRK
0x404
R/W
0
软件 BRK 操作启动寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
PWM1B
PWM0B
1
0
PWM1A
PWM0A
23
22
21
20
-
15
14
13
12
-
7
6
5
4
3
-
位域
名称
描述
31:10
-
-
2
PWM1 的 B 路软件 BRK 启动
9
PWM1B
0:不启动
1:启动
PWM0 的 B 路软件 BRK 启动
8
PWM0B
0:不启动
1:启动
7:2
-
PWM1 的 A 路软件 BRK 启动
1
PWM1A
0:不启动
1:启动
PWM0 的 A 路软件 BRK 启动
0
PWM0A
0:不启动
1:启动
371
Version 1.23
SWM201 系列
PWM 复位寄存器 RESET
寄存器
偏移
类型
复位值
描述
RESET
0x408
R/W1C
0
PWM 复位寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
PWM1
PWM0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:2
-
PWM1 寄存器复位操作
1:复位
1
PWM1
0:不复位
注 1:软件置位,硬件自动清 0
注 2:复位范围为该组 PWM 的全部逻辑
PWM0 寄存器复位操作
1:复位
0
PWM0
0:不复位
注 1:软件置位,硬件自动清 0
注 2:复位范围为该组 PWM 的全部逻辑
372
Version 1.23
SWM201 系列
PWM 重载请求寄存器 RELOADEN
寄存器
偏移
类型
复位值
描述
RELOADEN
0x40C
R/W
0
PWM 重载请求寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
RESTART_PWM RESTART_PWM
1
0
7
6
5
4
3
名称
描述
31:10
-
-
1
0
RESTART_PWM RESTART_PWM
1
0
-
位域
2
PWM1 重新启动
软件置位,硬件自动清除
注 1:计数器正常计数过程中置位, PWM 会先完成一次“清除+加载”动作,清除
的内容为当前计数值、当前的分频值、当前重复计数值。然后重新启动一次全新的
计数过程。
9
RESTART_PWM1
注 2:当 RESTART_PWMX 发生之后,在“清除+加载”过程中,PWM 输出会保持当
前 值 ( 不 会 引 入 IDLE 值 ), 直 到 重 新 计 数 开 始 之 后 得 到 新 的 输 出 值 。 即
RESTART_PWMX 之后会输出新生成的、与前一次计数没有关系的、完整的 PWM 波
形。
注 3:在 IDLE 状态下置位,效果与 START 一致,会引起计数器开始计数(自动完成
RELOAD)动作
PWM0 重新启动
软件置位,硬件自动清除
注 1:计数器正常计数过程中置位, PWM 会先完成一次“清除+加载”动作,清除
的内容为当前计数值、当前的分频值、当前重复计数值。然后重新启动一次全新的
计数过程。
8
RESTART_PWM0
注 2:当 RESTART_PWMX 发生之后,在“清除+加载”过程中,PWM 输出会保持当
前 值 ( 不 会 引 入 IDLE 值 ), 直 到 重 新 计 数 开 始 之 后 得 到 新 的 输 出 值 。 即
RESTART_PWMX 之后会输出新生成的、与前一次计数没有关系的、完整的 PWM 波
形。
注 3:在 IDLE 状态下置位,效果与 START 一致,会引起计数器开始计数(自动完成
RELOAD)动作
7:2
-
-
373
Version 1.23
SWM201 系列
PWM1 寄存器重载使能,软件置位,软件清除
1:使能
0:不使能
1
RELOADEN_PWM1
注 1:重新加载(PERIOD,COMPA0、DZA、COMPA1、COMPB0、DZB、COMPB1、
TRIG_CNT)的使能位, 使能有效时,每次当 RPT_CNTER 为 0 且周期溢出时,都会
完成加载。
注 2:RELOAD 使能后,到实际的 RELOAD 动作(周期溢出时)发生之间,如果上述
的寄存器又被赋予了新值,则以最后的值作为重载值。
PWM0 寄存器重载使能,软件置位,软件清除
1:使能
0:不使能
0
RELOADEN_PWM0
注 1:重新加载(PERIOD,COMPA0、DZA、COMPA1、COMPB0、DZB、COMPB1、
TRIG_CNT)的使能位, 使能有效时,每次当 RPT_CNTER 为 0 且周期溢出时,都会
完成加载。
注 2:RELOAD 使能后,到实际的 RELOAD 动作(周期溢出时)发生之间,如果上述
的寄存器又被赋予了新值,则以最后的值作为重载值。
374
Version 1.23
SWM201 系列
PWM 外部脉冲触发沿选择 PULSE
寄存器
偏移
类型
复位值
描述
PULSE
0x410
R/W1C
0
PWM 外部脉冲触发沿选择
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
EDGE1
EDGE0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:2
-
外部计数时钟 pulse1 触发沿选择寄存器
1:上升沿
1:0
EDGE1
0:下降沿
注 1:外部计数时钟触发计数器过程中,如果发生了 RESTART_PWMX 功能(外部或
者软件)
,则 RESTART_PWMX 之后的新计数过程需要等到下一次 pulse 的触发沿时
才会发生
外部计数时钟 pulse0 触发沿选择寄存器
1:上升沿
0
EDGE0
0:下降沿
注 1:外部计数时钟触发计数器过程中,如果发生了 RESTART_PWMX 功能(外部或
者软件)
,则 RESTART_PWMX 之后的新计数过程需要等到下一次 pulse 的触发沿时
才会发生
375
Version 1.23
SWM201 系列
PWM 外部信号滤波选择寄存器 FILTER
寄存器
偏移
类型
复位值
描述
FILTER
0x414
R/W
0
PWM 外部信号滤波选择寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:2
Reserve
保留
FILTER
外部信号滤波配置
00:滤波被禁止
01:过滤 4 个 pclk 时钟周期
1:0
FILTER
10:过滤 8 个 pclk 时钟周期
11:过滤 16 个 pclk 时钟周期
注 1:ext_event[3:0]和外部 BRK 信号同时参与滤波,且配置一致
注 2:ext_event[6:4]不参与滤波
376
Version 1.23
SWM201 系列
外部 BRK 控制寄存器 BRKPOL
寄存器
偏移
类型
复位值
描述
BRKPOL
0x418
R/W
0
外部 BRK 控制寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
BRK2
BRK1
BRK0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:3
-
刹车信号 2 极性配置
2
BRK2
1:硬件刹车输入高电平有效
0:硬件刹车输入低电平有效
刹车信号 1 极性配置
1
BRK1
1:硬件刹车输入高电平有效
0:硬件刹车输入低电平有效
刹车信号 0 极性配置
0
BRK0
1:硬件刹车输入高电平有效
0:硬件刹车输入低电平有效
377
Version 1.23
SWM201 系列
外部 BRK 中断使能寄存器 BRKIE
寄存器
偏移
类型
复位值
描述
BRKIE
0x41C
R/W
0
外部 BRK 中断使能寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
BRK2
BRK1
BRK0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:3
-
硬件刹车 2 中断使能。
2
BRK2
1:使能
0:不使能
硬件刹车 1 中断使能。
1
BRK1
1:使能
0:不使能
硬件刹车 0 中断使能。
0
BRK0
1:使能
0:不使能
378
Version 1.23
SWM201 系列
外部 BRK 中断状态寄存器 BRKIF
寄存器
偏移
类型
复位值
描述
BRKIF
0x420
R/W1C
0
外部 BRK 中断状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
4
3
2
1
0
-
BRK2_VAL
BRK1_VAL
BRK0_VAL
-
BRK2
BRK1
BRK0
位域
名称
描述
31:7
-
-
6
BRK2_VAL
5
BRK1_VAL
4
BRK0_VAL
3
-
硬件刹车 2 的当前电平值
注 1:只单纯记录刹车 PIN 脚当前电平值,与刹车配置信息无关
硬件刹车 1 的当前电平值
注 1:只单纯记录刹车 PIN 脚当前电平值,与刹车配置信息无关
硬件刹车 0 的当前电平值
注 1:只单纯记录刹车 PIN 脚当前电平值,与刹车配置信息无关
硬件刹车 2 状态。
1:已经发生
2
BRK2
0:没有发生
注 1:写 1 清除
注 2:只有在至少有一组 PWM 选择了某一个刹车时,该刹车对应的中断状态才能
生效,否则会一直保持为 0
硬件刹车 1 状态。
1:已经发生
1
BRK1
0:没有发生
注 1:写 1 清除
注 2:只有在至少有一组 PWM 选择了某一个刹车时,该刹车对应的中断状态才能
生效,否则会一直保持为 0
硬件刹车 0 状态。
1:已经发生
0
BRK0
0:没有发生
注 1:写 1 清除
注 2:只有在至少有一组 PWM 选择了某一个刹车时,该刹车对应的中断状态才能
生效,否则会一直保持为 0
379
Version 1.23
SWM201 系列
外部信号当前状态寄存器 EVSR
寄存器
偏移
类型
复位值
描述
EVSR
0x424
RO
0
外部信号当前状态寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
23
22
21
20
-
15
14
13
12
-
7
6
5
4
3
2
1
0
-
EV6
EV5
EV4
EV3
EV2
EV1
EV0
位域
名称
描述
31:7
-
外部信号 6 的当前电平值
1:高电平
6
EV6
0:低电平
注 1:只单纯记录 ext_event 的当前电平值,与配置信息无关
注 2:当短时间内出现多次脉冲时,CPU 不一定能够及时获得准确的当前电平值
外部信号 5 的当前电平值
1:高电平
5
EV5
0:低电平
注 1:只单纯记录 ext_event 的当前电平值,与配置信息无关
注 2:当短时间内出现多次脉冲时,CPU 不一定能够及时获得准确的当前电平值
外部信号 4 的当前电平值
1:高电平
4
EV4
0:低电平
注 1:只单纯记录 ext_event 的当前电平值,与配置信息无关
注 2:当短时间内出现多次脉冲时,CPU 不一定能够及时获得准确的当前电平值
外部信号 3 的当前电平值
1:高电平
3
EV3
0:低电平
注 1:只单纯记录 ext_event 的当前电平值,与配置信息无关
注 2:当短时间内出现多次脉冲时,CPU 不一定能够及时获得准确的当前电平值
外部信号 2 的当前电平值
1:高电平
2
EV2
0:低电平
注 1:只单纯记录 ext_event 的当前电平值,与配置信息无关
注 2:当短时间内出现多次脉冲时,CPU 不一定能够及时获得准确的当前电平值
380
Version 1.23
SWM201 系列
外部信号 1 的当前电平值
1:高电平
1
EV1
0:低电平
注 1:只单纯记录 ext_event 的当前电平值,与配置信息无关
注 2:当短时间内出现多次脉冲时,CPU 不一定能够及时获得准确的当前电平值
外部信号 0 的当前电平值
1:高电平
0
EV0
0:低电平
注 1:只单纯记录 ext_event 的当前电平值,与配置信息无关
注 2:当短时间内出现多次脉冲时,CPU 不一定能够及时获得准确的当前电平值
381
Version 1.23
SWM201 系列
6.17 模拟数字转换器(SAR ADC)
6.17.1 概述
SWM201 系列所有型号 SAR ADC 操作均相同,不同型号 ADC 通道数量可能不同,最多支持 1 组
12 通道。使用前需使能 SAR ADC 模块时钟。
6.17.2 特性
⚫
12-bits 分辨率
⚫
最高 1MSPS 转换速率
⚫
支持单次模式和连续模式
⚫
具备深度为 8 的 FIFO
⚫
灵活的转换启动方式,支持软件、PWM、TIMER 启动、外部 IO 触发
⚫
每个通道都有自己独立的转换结果数据寄存器和转换完成、数据溢出状态寄存器
382
Version 1.23
SWM201 系列
6.17.3 模块结构框图
内部
基准
APB
PGAIVCM
REFP
12位DAC
转换控制
逻辑
AIN0
AIN1
比较器
AIN10
AIN11
硬
件
平
均
器
8 级
深度
FIFO
数
据
寄
存
器
采样保持
HRC
XTAL
HRC/4
XTAL/4
HRC/8
XTAL/8
CLKSEL.ADC
图 6-85 ADC 模块结构框图
383
Version 1.23
SWM201 系列
6.17.4 功能描述
操作说明
使用 SAR ADC 前,需针对对应引脚及模块进行如下操作:
⚫
通过 PORTX_FUNC 寄存器将引脚切换为 SAR ADC CHx 功能
⚫
通过 CTRL 寄存器中 TRIG 位配置触发方式
⚫
通过 CTRL 寄存器中 CONT 位配置采样方式
⚫
通过 CTRL 寄存器中 AVG 位配置是否需要硬件计算平均值
⚫
如需使用中断,通过 IE 寄存器使能对应中断
⚫
配置 CTRL 寄存器中对应通道(CHx)选通
⚫
使能 CTRL 寄存器中 EN 位
⚫
使用软件使能 START 寄存器 GO 位触发采样或使用 TIMER、PWM 模块触发采样
⚫
工作过程中,START 寄存器将被硬件置 1,采样完成后,自动清 0
时钟说明
ADC 模块时钟,可通过 SYSCON 模块中 CLKSEL 寄存器 ADC_SRC,ADCDIV,ADCCLK0 等位配置
ADC 时钟源,通过 ADC 模块中 CTRL3 寄存器 CLKDIV1 和 CLKDIV2 位配置时钟分频,在此基础
上,ADC 有一个固定的 4 分频,ADC 时钟的计算分频过程如图 6-86 所示:
ADC
div
N
ADC_CLK
CTRL3.CLKDIV2
ADC->CTRL2.CLKSEL
div
4/2/1
div
4
CTRL3.CLKDIV1
SYS->CLKSEL.ADC
图 6-86 ADC 时钟示意图
触发源选择
SAR ADC 支持 CPU 触发、PWM 触发及 EXTIO 触发。通过将 SAR ADC CTRL 寄存器中 TRIG 进行设
置,该设置对所有选中通道均有效,当不同通道需要不同触发方式时,需要在采样间隔配置
TRIG 位进行切换。
各模式触发操作方式如下:
使用 PWM 触发
384
Version 1.23
SWM201 系列
PWM 配置所需模式,将 SARADC 的 CTRL 寄存器中 TRIG 方式设置为 PWM 触发。每路 PWM 对
应一个 ADTRG 寄存器值,当 PWM 计数到指定值,可触发 ADC 进行采样。
PWM 在任意模式下可以触发 ADC,每一路输出独立的 ADC 触发信号,且每个周期可以设置 1
个 ADC 触发点,每个 PWM 只输出一个触发信号,不区分 A.B 分别触发。
具体配置方式如下(以 ADTRG0A0 为例):
⚫
PWM 配置所需模式,
⚫
配置 PWM 模块 ADTRG0A0 数值,该数值为触发延时时长,在中心对称模式下,前半
周期从周期起始记,后半周期采样点与前半周期中心对称
⚫
使能 ADTRG0A0 寄存器 EN 位
⚫
配置 ADC 寄存器中 TRIG 寄存器 A0 对应位,确认该通道未被屏蔽
⚫
使能 PWM 模块 EN 位,当计数值到达 ADTRG0A0 设置值时,触发 ADC CTRL 寄存器中
选中的通道(CHx)进行采样,采样完成后,将产生 EOC 标志位,并产生 ADC 中断
示意图如图 6-87 所示。
CLK
PERAx
N
N-1 N-2
...
2
1
0
N
N-1 N-2
PWM_A Trigger
TRIGGERAx
TA TA-1 ...
1
0
...
2
1
0
N
N-1 N-2
...
2
0
N
TA TA-1 ...
1
...
N-1 N-2
PWM_A Trigger
PWM_A Trigger
0
1
0
2
1
0
N
PWM_A Trigger
0
PWM_A_OUTx
PWM_An_OUTx
ADC_START
TRIGGERENx
图 6-87 中心对称模式下 PWM 触发 ADC 采样示意图
使用软件触发
将 CTRL 寄存器中 TRIG 设置为 CPU 触发。ADC 配置完成后,通过程序将 START 寄存器 GO 位置
1 触发采样。采样完成后,该位自动清 0。可以通过 ADC 采样完成中断或标志位查询进行结果
获取。软件触发支持单次模式和连续模式。
软件触发时采样模式说明
ADC 采样模式在软件触发方式下可分为单次模式和连续模式。
单次模式
单次模式在所有选通的通道上执行一次转换,然后自动停止,其流程如下:
⚫
配置 ADC 所需转换通道
385
Version 1.23
SWM201 系列
⚫
启动 ADC 采样前,CTRL 寄存器 CONT 位配置为单次模式
⚫
START 寄存器 GO 位写 1 启动转换
⚫
所有 CTRL 寄存器中选通通道从小到大依次完成一次转换,并将转换结果和转换完成
EOC 标志存入通道对应的数据和状态寄存器
⚫
每个通道转换完成时对应通道状态寄存器的 EOC 标志会置位,如果该通道的 EOC 中
断使能,则该通道转换完成时会触发中断处理程序
⚫
所有通道转换完成后,START 寄存器 busy 位自动清零,停止转换,ADC 进入 Idle 模
式。
连续模式
连续模式下 ADC 会不断的重复在所有选通的通道上执行转换,直到软件向 START 寄存器 GO 位
写 0 才会停止转换。
连续采样示意图如图 6-89 所示。
具体操作步骤如下:
⚫
配置 ADC 所需转换通道
⚫
启动 ADC 采样前,CTRL 寄存器 CONT 位配置为连续模式
⚫
START 寄存器写 1 启动转换
⚫
所有 CTRL 寄存器中选通通道从小到大依次完成一次转换,转换完成后 EOC 标志将存
入通道对应的状态寄存器
⚫
使用 FIFO 时,采样结果及对应通道将存至 FIFO,未使用 FIFO 时,转换结果存入通道
对应的数据寄存器
⚫
每个通道转换完成时对应通道状态寄存器的 EOC 标志会置位,如果该通道的 EOC 中
断使能,则该通道转换完成时会触发中断处理程序
⚫
重复采样及结果存储,直到 START 寄存器写 0,A/D 转换停止,A/D 转换器进入空闲
状态。
图 6-88 SAR ADC 连续采样示意图
386
Version 1.23
SWM201 系列
sample0
sample1
sample2
sample3
sample4
sample5
ADC_PLL_CKIN
EN_ADC
ADC_CH_SEL
0
ADC_DOUT
2
5
ch2_0
ch2_1
6
ch5_2
ch5_3
ch5_4
ch6_5
ADC_LATCH_CLK
图 6-89 SAR ADC 多通道连续采样示意图
数据处理
SAR ADC 支持针对采样数据硬件自动完成平均值计算。通过配置 CTRL 寄存器中 AVG 位设置为
结果取平均。支持 2 到 16 次取平均。设置 N 次平均,则采集完成 N 次后 EOC 标志有效,同时
取平均值的结果被送至对应通道数据寄存器。
参考源选择
SAR ADC 支持使用 REFP 和 REFN 作为输入电压参考。部分 ADCx 可具有独立的参考电压输入
(不同封装可能有所变化,具体见封装引脚图),当封装图上有 REFP/REFN 引脚时,需接外部
参考电压,此时参考电压为接入电压;当封装图上没有 REFP/REFN 引脚时,参考电压为 ADC 电
源电压 AVDD/AVSS。
供电电压
ADC 正常供电电压范围为 2.5V~5.5V,其特性详情请参考表格 8-6 所示。
ADC 工作电压在 2.5V 以下时会影响 ADC 精度,建议 2.5V 电压点以下不使用 ADC 值。
中断配置与清除
可通过配置中断使能寄存器 IE 中相应位使能中断。当中断触发后,中断标志寄存器 IF 中对应位
置 1。如需清除此标志,需在对应标志位中写 1 清零(R/W1C),否则中断在开启状态下会一
直进入。
387
Version 1.23
SWM201 系列
6.17.5 寄存器映射
名称
SAR-ADC0
偏移
类型
复位值
描述
BASE:0x40049000
CTRL
0x00
R/W
0
ADC 配置寄存器
START
0x04
R/W
0
ADC 启动寄存器
IE
0x08
R/W
0
ADC 中断使能寄存器
IF
0x0C
R/W1C
0
ADC 中断状态寄存器
STAT0
0x10
R/W
0
ADC 通道 0 状态寄存器
DATA0
0x14
R/W
0
ADC 通道 0 数据寄存器
STAT1
0x20
R/W
0
ADC 通道 1 状态寄存器
DATA1
0x24
R/W
0
ADC 通道 1 数据寄存器
STAT2
0x30
R/W
0
ADC 通道 2 状态寄存器
DATA2
0x34
R/W
0
ADC 通道 2 数据寄存器
STAT3
0x40
R/W
0
ADC 通道 3 状态寄存器
DATA3
0x44
R/W
0
ADC 通道 3 数据寄存器
STAT4
0x50
R/W
0
ADC 通道 4 状态寄存器
DATA4
0x54
R/W
0
ADC 通道 4 数据寄存器
STAT5
0x60
R/W
0
ADC 通道 5 状态寄存器
DATA5
0x64
R/W
0
ADC 通道 5 数据寄存器
STAT6
0x70
R/W
0
ADC 通道 6 状态寄存器
DATA6
0x74
R/W
0
ADC 通道 6 数据寄存器
STAT7
0x80
R/W
0
ADC 通道 7 状态寄存器
DATA7
0x84
R/W
0
ADC 通道 7 数据寄存器
STAT8
0x90
R/W
0
ADC 通道 8 状态寄存器
DATA8
0x94
R/W
0
ADC 通道 8 数据寄存器
STAT9
0xa0
R/W
0
ADC 通道 9 状态寄存器
DATA9
0xa4
R/W
0
ADC 通道 9 数据寄存器
STAT10
0xb0
R/W
0
ADC 通道 10 状态寄存器
DATA10
0xb4
R/W
0
ADC 通道 10 数据寄存器
STAT11
0xc0
R/W
0
ADC 通道 11 状态寄存器
DATA11
0xc4
R/W
0
ADC 通道 11 数据寄存器
CHSEL
0xd0
R/W
0
ADC 通道配置寄存器
FIFOSR
0x190
R/W
0
ADC FIFO 状态寄存器
FIFODR
0x194
R/W
0
ADC 所有通道数据寄存器
CTRL2
0x1a0
R/W
0
ADC 配置寄存器 1
CTRL3
0x1a4
R/W
0
ADC 配置寄存器 2
CTRL4
0x1a8
R/W
0
ADC 配置寄存器 3
TRGMSK
0x1b0
R/W
0
PWM 通道触发 ADC 屏蔽寄存器
CALIBSET
0x1f4
R/W
0
CALIB 配置寄存器
CALIBEN
0x1f8
R/W
0
CALIB 使能寄存器
388
Version 1.23
SWM201 系列
6.17.6 寄存器描述
配置寄存器 CTRL
寄存器
偏移
类型
复位值
描述
CTRL
0x00
R/W
00
ADC 配置寄存器
30
29
31
28
27
26
25
23
22
21
14
TRIG
AVG
20
19
18
17
16
RESET
FIFOCLR
RES2FIFO
-
TRIG
13
12
11
10
9
8
CONT
EN
CH11
CH10
CH9
CH8
AVG
15
24
7
6
5
4
3
2
1
0
CH7
CH6
CH5
CH4
CH3
CH2
CH1
CH0
位域
名称
描述
31:25
-
一次启动 ADC 采样次数配置寄存器
0000:1 次采样
0001:2 次采样并取平均
24:21
AVG
0011:4 次采样并取平均
0111:8 次采样并取平均
1111:16 次采样并取平均
其余配置:保留
ADC 复位,写入 1 后复位生效,需要再次写入 0 清除复位
20
RESET
0:复位无效
1:复位有效
FIFO 清除使能
19
FIFOCLR
0:FIFO 正常工作
1:FIFO 复位
采样数据存储位置
18
RES2FIFO
17
-
0:采样结果存储为通道模式,采样完成后存储在对应通道数据 DATAx 寄存器
1:采样结果存储为 FIFO 模式,采集完成所有数据均存储于 FIFODR,数据
Bit[15:12]为通道号
-
389
Version 1.23
SWM201 系列
ADC triger 方式选择
100:CPU 触发
16:14
TRIG
101:PWM 触发
110:TIMER0 触发
111:TIMER1 触发
其余配置:保留
ADC 工作模式(只在 CPU 触发方式下有效)
13
CONT
0:单次模式
1:连续模式
ADC 使能
12
EN
1:使能
0:禁能
ADC 通道 11 选择控制,RO,由硬件自动写入
0:通道未选中
11
CH11
1:通道选中
注 1:此 bit 是只读寄存器,显示当前状态下 ADC 采样时各通道是否有效
注 2:该值反映的值为 CHSEL 寄存器中的配置值,当 PWM 触发使能过程中,该值
为 CHSEL.PWM;当 CPU 触发使能过程中,该值为 CHSEL.CPU
ADC 通道 10 选择控制,RO,由硬件自动写入
0:通道未选中
10
CH10
1:通道选中
注 1:此 bit 是只读寄存器,显示当前状态下 ADC 采样时各通道是否有效
注 2:该值反映的值为 CHSEL 寄存器中的配置值,当 PWM 触发使能过程中,该值
为 CHSEL.PWM;当 CPU 触发使能过程中,该值为 CHSEL.CPU
ADC 通道 9 选择控制,RO,由硬件自动写入
0:通道未选中
9
CH9
1:通道选中
注 1:此 bit 是只读寄存器,显示当前状态下 ADC 采样时各通道是否有效
注 2:该值反映的值为 CHSEL 寄存器中的配置值,当 PWM 触发使能过程中,该值
为 CHSEL.PWM;当 CPU 触发使能过程中,该值为 CHSEL.CPU
ADC 通道 8 选择控制,RO,由硬件自动写入
0:通道未选中
8
CH8
1:通道选中
注 1:此 bit 是只读寄存器,显示当前状态下 ADC 采样时各通道是否有效
注 2:该值反映的值为 CHSEL 寄存器中的配置值,当 PWM 触发使能过程中,该值
为 CHSEL.PWM;当 CPU 触发使能过程中,该值为 CHSEL.CPU
ADC 通道 7 选择控制,RO,由硬件自动写入
0:通道未选中
7
CH7
1:通道选中
注 1:此 bit 是只读寄存器,显示当前状态下 ADC 采样时各通道是否有效
注 2:该值反映的值为 CHSEL 寄存器中的配置值,当 PWM 触发使能过程中,该值
为 CHSEL.PWM;当 CPU 触发使能过程中,该值为 CHSEL.CPU
390
Version 1.23
SWM201 系列
ADC 通道 6 选择控制,RO,由硬件自动写入
0:通道未选中
6
CH6
1:通道选中
注 1:此 bit 是只读寄存器,显示当前状态下 ADC 采样时各通道是否有效
注 2:该值反映的值为 CHSEL 寄存器中的配置值,当 PWM 触发使能过程中,该值
为 CHSEL.PWM;当 CPU 触发使能过程中,该值为 CHSEL.CPU
ADC 通道 5 选择控制,RO,由硬件自动写入
0:通道未选中
5
CH5
1:通道选中
注 1:此 bit 是只读寄存器,显示当前状态下 ADC 采样时各通道是否有效
注 2:该值反映的值为 CHSEL 寄存器中的配置值,当 PWM 触发使能过程中,该值
为 CHSEL.PWM;当 CPU 触发使能过程中,该值为 CHSEL.CPU
ADC 通道 4 选择控制,RO,由硬件自动写入
0:通道未选中
4
CH4
1:通道选中
注 1:此 bit 是只读寄存器,显示当前状态下 ADC 采样时各通道是否有效
注 2:该值反映的值为 CHSEL 寄存器中的配置值,当 PWM 触发使能过程中,该值
为 CHSEL.PWM;当 CPU 触发使能过程中,该值为 CHSEL.CPU
ADC 通道 3 选择控制,RO,由硬件自动写入
0:通道未选中
3
CH3
1:通道选中
注 1:此 bit 是只读寄存器,显示当前状态下 ADC 采样时各通道是否有效
注 2:该值反映的值为 CHSEL 寄存器中的配置值,当 PWM 触发使能过程中,该值
为 CHSEL.PWM;当 CPU 触发使能过程中,该值为 CHSEL.CPU
ADC 通道 2 选择控制,RO,由硬件自动写入
0:通道未选中
2
CH2
1:通道选中
注 1:此 bit 是只读寄存器,显示当前状态下 ADC 采样时各通道是否有效
注 2:该值反映的值为 CHSEL 寄存器中的配置值,当 PWM 触发使能过程中,该值
为 CHSEL.PWM;当 CPU 触发使能过程中,该值为 CHSEL.CPU
ADC 通道 1 选择控制,RO,由硬件自动写入
0:通道未选中
1
CH1
1:通道选中
注 1:此 bit 是只读寄存器,显示当前状态下 ADC 采样时各通道是否有效
注 2:该值反映的值为 CHSEL 寄存器中的配置值,当 PWM 触发使能过程中,该值
为 CHSEL.PWM;当 CPU 触发使能过程中,该值为 CHSEL.CPU
ADC 通道 0 选择控制,RO,由硬件自动写入
0:通道未选中
0
CH0
1:通道选中
注 1:此 bit 是只读寄存器,显示当前状态下 ADC 采样时各通道是否有效
注 2:该值反映的值为 CHSEL 寄存器中的配置值,当 PWM 触发使能过程中,该值
为 CHSEL.PWM;当 CPU 触发使能过程中,该值为 CHSEL.CPU。
391
Version 1.23
SWM201 系列
启动寄存器 START
寄存器
偏移
类型
复位值
描述
START
0x04
R/W
00
ADC 启动寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
-
4
BUSY
位域
名称
描述
31:5
-
-
-
GO
ADC 工作状态标识
4
BUSY
1:采样进行
0:空闲
3:1
-
ADC 启动信号(只在 CPU 触发方式下有效)
该位写 1,则启动一次转换。
单次采样模式:该位置 1 后,将对有效通道依次轮询进行采样转换,并将转换的
0
GO
数据保存在相应通道的 FIFO 或寄存器中。转换完成后硬件会自动清零
多次采样模式:该位置 1 表示启动 ADC 转换,软件清零后停止转换
多次模式下启动 ADC 转换后,将对有效通道依次轮询进行采样转换,并将转换的
数据保存在相应通道的 FIFO 或寄存器中。每次转换完成后判断该位是否为 1,若
为 1 则继续转换,若为 0 则停止转换。
392
Version 1.23
SWM201 系列
中断寄存器 IE
寄存器
偏移
类型
复位值
描述
IE
0x08
R/W
00
ADC 中断使能寄存器
30
29
31
28
27
-
26
25
24
FIFOF
FIFOHF
FIFOOV
23
22
21
20
19
18
17
16
CH11OVF
CH11EOC
CH10OVF
CH10EOC
CH9OVF
CH9EOC
CH8OVF
CH8EOC
15
14
13
12
11
10
9
8
CH7OVF
CH7EOC
CH6OVF
CH6EOC
CH5OVF
CH5EOC
CH4OVF
CH4EOC
7
6
5
4
3
2
1
0
CH3OVF
CH3EOC
CH2OVF
CH2EOC
CH1OVF
CH1EOC
CH0OVF
CH0EOC
位域
名称
描述
31:27
-
ADC 数据 FIFO 满中断使能
26
FIFOF
1:使能
0:禁能
ADC 数据 FIFO 半满中断使能
25
FIFOHF
1:使能
0:禁能
ADC 数据 FIFO 溢出中断使能
24
FIFOOV
1:使能
0:禁能
ADC 通道 11 数据寄存器溢出中断使能
23
CH11OVF
1:使能
0:禁能
ADC 通道 11 数据转换完成中断使能
22
CH11EOC
1:使能
0:禁能
ADC 通道 10 数据寄存器溢出中断使能
21
CH10OVF
1:使能
0:禁能
ADC 通道 10 数据转换完成中断使能
20
CH10EOC
1:使能
0:禁能
ADC 通道 9 数据寄存器溢出中断使能
19
CH9OVF
1:使能
0:禁能
393
Version 1.23
SWM201 系列
ADC 通道 9 数据转换完成中断使能
18
CH9EOC
1:使能
0:禁能
ADC 通道 8 数据寄存器溢出中断使能
17
CH8OVF
1:使能
0:禁能
ADC 通道 8 数据转换完成中断使能
16
CH8EOC
1:使能
0:禁能
ADC 通道 7 数据寄存器溢出中断使能
15
CH7OVF
1:使能
0:禁能
ADC 通道 7 数据转换完成中断使能
14
CH7EOC
1:使能
0:禁能
ADC 通道 6 数据寄存器溢出中断使能
13
CH6OVF
1:使能
0:禁能
ADC 通道 6 数据转换完成中断使能
12
CH6EOC
1:使能
0:禁能
ADC 通道 5 数据寄存器溢出中断使能
11
CH5OVF
1:使能
0:禁能
ADC 通道 5 数据转换完成中断使能
10
CH5EOC
1:使能
0:禁能
ADC 通道 4 数据寄存器溢出中断使能
9
CH4OVF
1:使能
0:禁能
ADC 通道 4 数据转换完成中断使能
8
CH4EOC
1:使能
0:禁能
ADC 通道 3 数据寄存器溢出中断使能
7
CH3OVF
1:使能
0:禁能
ADC 通道 3 数据转换完成中断使能
6
CH3EOC
1:使能
0:禁能
ADC 通道 2 数据寄存器溢出中断使能
5
CH2OVF
1:使能
0:禁能
394
Version 1.23
SWM201 系列
ADC 通道 2 数据转换完成中断使能
4
CH2EOC
1:使能
0:禁能
ADC 通道 1 数据寄存器溢出中断使能
3
CH1OVF
1:使能
0:禁能
ADC 通道 1 数据转换完成中断使能
2
CH1EOC
1:使能
0:禁能
ADC 通道 0 数据寄存器溢出中断使能
1
CH0OVF
1:使能
0:禁能
ADC 通道 0 数据转换完成中断使能
0
CH0EOC
1:使能
0:禁能
395
Version 1.23
SWM201 系列
中断状态寄存器 IF
寄存器
偏移
类型
复位值
描述
IF
0x0C
R/W1C
00
ADC 中断状态寄存器
31
30
29
28
27
-
26
25
24
FIFOF
FIFOHF
FIFOOV
23
22
21
20
19
18
17
16
CH11OVF
CH11EOC
CH10OVF
CH10EOC
CH9OVF
CH9EOC
CH8OVF
CH8EOC
15
14
13
12
11
10
9
8
CH7OVF
CH7EOC
CH6OVF
CH6EOC
CH5OVF
CH5EOC
CH4OVF
CH4EOC
7
6
5
4
3
2
1
0
CH3OVF
CH3EOC
CH2OVF
CH2EOC
CH1OVF
CH1EOC
CH0OVF
CH0EOC
位域
名称
描述
31:27
-
ADC 数据 FIFO 满中断状态,写 1 清除
26
FIFOF
0:未产生
1:产生中断
ADC 数据 FIFO 半满中断状态,写 1 清除
25
FIFOHF
0:未产生
1:产生中断
ADC 数据 FIFO 溢出中断状态,写 1 清除
24
FIFOOV
0:未产生
1:产生中断
ADC 通道 11 数据寄存器溢出中断状态,写 1 清除
23
CH11OVF
0:未产生
1:产生中断
ADC 通道 11 数据转换完成中断状态,写 1 清除
22
CH11EOC
0:未产生
1:产生中断
ADC 通道 10 数据寄存器溢出中断状态,写 1 清除
21
CH10OVF
0:未产生
1:产生中断
ADC 通道 10 数据转换完成中断状态,写 1 清除
20
CH10EOC
0:未产生
1:产生中断
ADC 通道 9 数据寄存器溢出中断状态,写 1 清除
19
CH9OVF
0:未产生
1:产生中断
396
Version 1.23
SWM201 系列
ADC 通道 9 数据转换完成中断状态,写 1 清除
18
CH9EOC
0:未产生
1:产生中断
ADC 通道 8 数据寄存器溢出中断状态,写 1 清除
17
CH8OVF
0:未产生
1:产生中断
ADC 通道 8 数据转换完成中断状态,写 1 清除
16
CH8EOC
0:未产生
1:产生中断
ADC 通道 7 数据寄存器溢出中断状态,写 1 清除
15
CH7OVF
0:未产生
1:产生中断
ADC 通道 7 数据转换完成中断状态,写 1 清除
14
CH7EOC
0:未产生
1:产生中断
ADC 通道 6 数据寄存器溢出中断状态,写 1 清除
13
CH6OVF
0:未产生
1:产生中断
ADC 通道 6 数据转换完成中断状态,写 1 清除
12
CH6EOC
0:未产生
1:产生中断
ADC 通道 5 数据寄存器溢出中断状态,写 1 清除
11
CH5OVF
0:未产生
1:产生中断
ADC 通道 5 数据转换完成中断状态,写 1 清除
10
CH5EOC
0:未产生
1:产生中断
ADC 通道 4 数据寄存器溢出中断状态,写 1 清除
9
CH4OVF
0:未产生
1:产生中断
ADC 通道 4 数据转换完成中断状态,写 1 清除
8
CH4EOC
0:未产生
1:产生中断
ADC 通道 3 数据寄存器溢出中断状态,写 1 清除
7
CH3OVF
0:未产生
1:产生中断
ADC 通道 3 数据转换完成中断状态,写 1 清除
6
CH3EOC
0:未产生
1:产生中断
ADC 通道 2 数据寄存器溢出中断状态,写 1 清除
5
CH2OVF
0:未产生
1:产生中断
397
Version 1.23
SWM201 系列
ADC 通道 2 数据转换完成中断状态,写 1 清除
4
CH2EOC
0:未产生
1:产生中断
ADC 通道 1 数据寄存器溢出中断状态,写 1 清除
3
CH1OVF
0:未产生
1:产生中断
ADC 通道 1 数据转换完成中断状态,写 1 清除
2
CH1EOC
0:未产生
1:产生中断
ADC 通道 0 数据寄存器溢出中断状态,写 1 清除
1
CH0OVF
0:未产生
1:产生中断
ADC 通道 0 数据转换完成中断状态,写 1 清除
0
CH0EOC
0:未产生
1:产生中断
398
Version 1.23
SWM201 系列
通道状态寄存器 STATx(0~11)
寄存器
偏移
类型
复位值
描述
STAT0
0x10
R/W
0
ADC 通道 0 状态寄存器
寄存器
偏移
类型
复位值
描述
STAT1
0x20
R/W
0
ADC 通道 1 状态寄存器
寄存器
偏移
类型
复位值
描述
STAT2
0x30
R/W
0
ADC 通道 2 状态寄存器
寄存器
偏移
类型
复位值
描述
STAT3
0x40
R/W
0
ADC 通道 3 状态寄存器
寄存器
偏移
类型
复位值
描述
STAT4
0x50
R/W
0
ADC 通道 4 状态寄存器
寄存器
偏移
类型
复位值
描述
STAT5
0x60
R/W
0
ADC 通道 5 状态寄存器
寄存器
偏移
类型
复位值
描述
STAT6
0x70
R/W
0
ADC 通道 6 状态寄存器
寄存器
偏移
类型
复位值
描述
STAT7
0x80
R/W
0
ADC 通道 7 状态寄存器
寄存器
偏移
类型
复位值
描述
STAT8
0x18
R/W
0
ADC 通道 8 状态寄存器
寄存器
偏移
类型
复位值
描述
STAT9
0x28
R/W
0
ADC 通道 9 状态寄存器
寄存器
偏移
类型
复位值
描述
STAT10
0x38
R/W
0
ADC 通道 10 状态寄存器
寄存器
偏移
类型
复位值
描述
STAT11
0x48
R/W
0
ADC 通道 11 状态寄存器
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
399
Version 1.23
SWM201 系列
15
14
13
12
11
10
9
8
3
2
1
0
OVF
EOC
7
6
5
4
-
位域
名称
描述
31:2
-
ADC 通道 x 数据寄存器溢出标志
1
OVF
1:溢出
0:未溢出
读数据寄存器清除
ADC 通道 x 数据转换完成标志,写 1 清除
0
EOC
1:ADC 对通道 x 一次采样转换完成
0:转换未完成
400
Version 1.23
SWM201 系列
通道数据寄存器 DATAx(0~11)
寄存器
偏移
类型
复位值
描述
DATA0
0x14
R/W
0
ADC 通道 0 数据寄存器
寄存器
偏移
类型
复位值
描述
DATA1
0x24
R/W
0
ADC 通道 1 数据寄存器
寄存器
偏移
类型
复位值
描述
DATA2
0x34
R/W
0
ADC 通道 2 数据寄存器
寄存器
偏移
类型
复位值
描述
DATA3
0x44
R/W
0
ADC 通道 3 数据寄存器
寄存器
偏移
类型
复位值
描述
DATA4
0x54
R/W
0
ADC 通道 4 数据寄存器
寄存器
偏移
类型
复位值
描述
DATA5
0x64
R/W
0
ADC 通道 5 数据寄存器
寄存器
偏移
类型
复位值
描述
DATA6
0x74
R/W
0
ADC 通道 6 数据寄存器
寄存器
偏移
类型
复位值
描述
DATA7
0x84
R/W
0
ADC 通道 7 数据寄存器
寄存器
偏移
类型
复位值
描述
DATA8
0x1c
R/W
0
ADC 通道 8 数据寄存器
寄存器
偏移
类型
复位值
描述
DATA9
0x2c
R/W
0
ADC 通道 9 数据寄存器
寄存器
偏移
类型
复位值
描述
DATA10
0x3c
R/W
0
ADC 通道 10 数据寄存器
寄存器
偏移
类型
复位值
描述
DATA11
0x4c
R/W
0
ADC 通道 11 数据寄存器
30
29
31
28
27
26
25
24
19
18
17
16
23
22
21
20
401
Version 1.23
SWM201 系列
15
14
13
12
11
10
NUM
7
6
9
8
1
0
VAL
5
4
3
2
VAL
位域
名称
描述
31:16
-
ADC 数据对应的通道编号
0000:通道 0
0001:通道 1
0010:通道 2
0011:通道 3
0100:通道 4
15:12
NUM
0101:通道 5
0110:通道 6
0111:通道 7
1000:通道 8
1001:通道 9
1010:通道 10
1011:通道 11
11:0
VAL
ADC 通道 x 数据寄存器
注:溢出后,再次转换的数据会覆盖旧数据
402
Version 1.23
SWM201 系列
ADC 通道配置寄存器 CHSEL
寄存器
偏移
类型
复位值
描述
CHSEL
0xd0
R/W
0
ADC 通道配置寄存器
30
29
31
28
27
26
23
22
25
24
PWM
21
20
19
18
17
16
11
10
9
8
1
0
PWM
15
14
13
12
7
6
CPU
5
4
3
2
CPU
位域
名称
描述
31:28
-
PWM 启动 ADC 采样时的通道号,对应位置 1 则指定通道启动采样
BIT27: CH11
BIT26: CH10
BIT25: CH9
BIT24: CH8
BIT23: CH7
BIT22: CH6
27:16
PWM
BIT21: CH5
BIT20: CH4
BIT19: CH3
BIT18: CH2
BIT17: CH1
BIT16: CH0
注 1:采样过程中 CTRL 寄存器 bit[11:0]为此处配置值
注 2:配置 pwm 触发 ADC 采样使能且 PWM 触发信号有效时,实际发生的 ADC 采
样通道会自动切换为 CHSEL.PWM 值
15:12
-
-
403
Version 1.23
SWM201 系列
CPU 启动 ADC 采样的通道号
BIT11: CH11
BIT10: CH10
BIT9: CH9
BIT8: CH8
BIT7: CH7
BIT6: CH6
BIT5: CH5
11:0
CPU
BIT4: CH4
BIT3: CH3
BIT2: CH2
BIT1: CH1
BIT0: CH0
注 1:启动 CPU 触发后,采样过程中 CTRL 寄存器 bit[11:0]为此处配置值
注 2:当 CPU 启动了 ADC 采样过程中,如遇到 PWM 触发 ADC 的启动信号,PWM
信号被忽略
404
Version 1.23
SWM201 系列
FIFO 状态寄存器 FIFOSR
寄存器
偏移
类型
复位值
描述
FIFOSR
0x90
R/W
0
ADC FIFO 状态寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
EMPTY
PULL
HF
OVF
23
22
21
20
-
15
14
13
12
-
7
6
-
5
4
LEVEL
位域
名称
描述
31:7
-
ADC 数据 FIFO LEVEL 标志
000:FIFO 有 0 个数据
001:FIFO 有 1 个数据
010:FIFO 有 2 个数据
6:4
LEVEL
011:FIFO 有 3 个数据
100:FIFO 有 4 个数据
101:FIFO 有 5 个数据
110:FIFO 有 6 个数据
111:FIFO 有 7 个数据
ADC 数据 FIFO 空标志
3
EMPTY
1:FIFO 空
0:FIFO 非空
ADC 数据 FIFO 满标志
2
FULL
1:FIFO 满
0:FIFO 非满
ADC 数据 FIFO 半满标志
1
HF
1:FIFO 半满
0:FIFO 满或未达到半满
ADC 数据 FIFO 溢出标志
0
OVF
1:FIFO 出现溢出
0:FIFO 未溢出
405
Version 1.23
SWM201 系列
所有通道 FIFO 数据寄存器 FIFODR
寄存器
偏移
类型
复位值
描述
FIFODR
0x94
R/W
0
ADC 所有通道数据寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
1
0
23
22
21
20
-
15
14
13
12
NUM
7
6
VAL
5
4
3
2
VAL
位域
名称
描述
31:16
-
ADC 数据对应的通道编号
0000:通道 0
0001:通道 1
0010:通道 2
0011:通道 3
0100:通道 4
15:12
NUM
0101:通道 5
0110:通道 6
0111:通道 7
1000:通道 8
1001:通道 9
1010:通道 10
1011:通道 11
11:0
VAL
ADC 通道 x 数据 FIFO 寄存器
注:溢出后,再次转换的数据会被丢掉
406
Version 1.23
SWM201 系列
配置寄存器 CTRL2
寄存器
偏移
类型
复位值
描述
CTRL2
0xa0
RW
0x0
ADC 配置寄存器 2
31
30
29
28
27
26
25
24
19
18
17
16
23
22
21
20
15
14
ADJL
13
12
11
10
9
8
3
2
1
0
ADJH
7
6
5
4
-
CLKSEL
位域
名称
描述
31:20
-
-
19:16
ADJL
ADC Auto Low Timing Adjust 配置
15:8
ADJH
ADC Auto High Timing Adjust 配置
7:0
-
-
0
CLKSEL
0:SYSCON 的 SARADC 采样时钟源作为 ADC 的时钟输入;
1;选择外部晶振作为 ADC 的时钟输入
407
Version 1.23
SWM201 系列
配置寄存器 CTRL3
寄存器
偏移
类型
复位值
描述
CTRL3
0xa4
RW
0x0
ADC 配置寄存器 3
31
30
-
29
28
27
CLKDIV1
23
22
26
14
24
17
16
CLKDIV2
21
20
19
18
15
25
13
IREFSEL
12
11
10
9
8
3
2
1
0
7
6
5
4
-
位域
名称
描述
31
-
-
REFSEL
-
RC Clock Post Divide(EXT_REF_CLKIN 或 RC60MHz_CLKIN 时钟的预分频)
00:4 分频
30:29
CLKDIV1
01:2 分频
10:1 分频
11:保留
RC clock input divider ratio(对分频时钟的再分频)
1 对应 1 分频,以此类推
00001:1 分频
00010:2 分频
00011:3 分频
00100:4 分频
00101:5 分频
28:24
CLKDIV2
00110:6 分频
00111:7 分频
01000:8 分频
01001:9 分频
01010:10 分频
01011:11 分频
01100:12 分频
01101:13 分频
23:19
-
内置基准使能
18:16
IREFSEL
111: 3.6V
其余配置:保留
切换至内部基准时,需要写入 111 保证基准档位正确
408
Version 1.23
SWM201 系列
15:3
-
ADC 参考选择
2:1
REFSEL
00:内部基准
11:外部基准
其余配置:保留
0
-
-
409
Version 1.23
SWM201 系列
配置寄存器 CTRL4
寄存器
偏移
类型
复位值
描述
CTRL3
0x1a8
RW
0
ADC 配置寄存器 4
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:3
-
-
EREFSEL
-
ADC 外部基准选择
2
EREFSEL
0:VERFP
1:VDD
1:0
-
-
410
Version 1.23
SWM201 系列
PWM 通道触发 ADC 屏蔽寄存器 TRGMSK
寄存器
偏移
类型
复位值
TRGMSK
0xb0
R/W
0
30
29
31
描述
PWM 通道触发 ADC 屏蔽寄存器,可通过此寄存器区
分不同 ADC 的 PWM 触发通道
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
PWM1
-
PWM0
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
31:3
-
PWM1 触发 ADC 屏蔽寄存器
2
PWM1
0:不屏蔽
1:屏蔽
1
-
PWM0 触发 ADC 屏蔽寄存器
0
PWM0
0:不屏蔽
1:屏蔽
411
Version 1.23
SWM201 系列
ADC 数据调整寄存器 CALIBSET
寄存器
偏移
类型
复位值
描述
CALIBSET
0x1f4
R/W
0
CALIB 配置寄存器
31
30
29
28
27
26
25
23
22
21
24
K
20
19
18
17
16
11
10
9
8
K
15
14
13
12
-
7
6
5
OFFSET
4
3
2
1
0
OFFSET
位域
名称
描述
31:25
-
-
24:16
K
15:9
-
-
8:0
OFFSET
ADC 数据调整的 OFFSET 值
ADC 数据调整的 K 值(K 始终大于 1 小于 1.511)的小数部分
例如:要校准的 K 值为 1.230,则该寄存器直接写入 230 即可。
412
Version 1.23
SWM201 系列
ADC 数据调整使能寄存器 CALIBEN
寄存器
偏移
类型
复位值
描述
CALIBEN
0x1f8
R/W
0
CALIB 使能寄存器
31
30
29
28
27
26
25
24
19
18
17
16
11
10
9
8
3
2
1
0
K
OFFSET
23
22
21
20
-
15
14
13
12
-
7
6
5
4
-
位域
名称
描述
312
-
ADC_CALIB_SET 寄存器 K 配置数据是否有效
1
K
0:数据无效
1:数据有效
ADC_CALIB_SET 寄存器 OFFSET 配置数据是否有效
0
OFFSET
0:数据无效
1:数据有效
413
Version 1.23
SWM201 系列
6.18 旋转坐标计算(CORDIC)
6.18.1
概述
SWM201 系列部分型号可能不包括该模块。使用前需使能 CORDIC 模块时钟。
6.18.2
特性
⚫
计算 sin 和 cos 时,输入弧度范围建议在 0.01 ~1.56
⚫
计算 arctan 数值范围建议在 0.05 ~ 10000
⚫
计算 tanh,一个周期出结果
⚫
输出结果支持查询和中断方式
414
Version 1.23
SWM201 系列
6.18.3
功能描述
使用 CORDIC 计算 COS/SIN/ARCTAN 流程如下:
⚫
配置中断使能寄存器 IE
⚫
配置参数寄存器 INPUT
⚫
配置控制寄存器 CMD
⚫
结果查询
如果采用查询方式,根据需要,反复查询 COS、SIN 或者 ARCTAN,当相应输出寄存器 DONE 位
为 1 时,得到有效的返回值;
如果采用中断方式,当中断来临,查询到 IF 寄存器 DONE 位状态为 1 时,根据需要,读 COS、
SIN 或者 ARCTAN 寄存器即可。
注意:计算得到的结果会一直保持,直到下一次启动 CMD. START。START 启动后,就可以开始
配置下一次计算所需要的 INPUT 和 CMD,但 START 只有等到这次计算结束后才能再次启动。
中断配置与清除
可通过配置中断使能寄存器 IE 中相应位使能中断。当中断触发后,中断标志寄存器 IF 中对应位
置 1。如需清除此标志,需在对应标志位中写 1 清零(R/W1C),否则中断在开启状态下会一
直进入。
415
Version 1.23
SWM201 系列
6.18.4
名称
CORDIC
寄存器映射
偏移
类型
复位值
描述
BASE: 0x40003000
CMD
0x00
R/W
0
控制寄存器
INPUT
0x04
R/W
0
待计算参数寄存器
COS
0x08
R/W
0
COS 计算结果输出寄存器
SIN
0x0C
R/W
0
SIN 计算结果输出寄存器
ARCTAN
0x10
R/W
0
ARCTAN 计算结果输出寄存器
IF
0x14
R/W1C
0
中断状态寄存器
IE
0x18
R/W
0
中断使能寄存器
TANH
0x1C
R/W
0
TANH 计算寄存器
416
Version 1.23
SWM201 系列
寄存器描述
6.18.5
控制寄存器 CMD
寄存器
偏移
类型
复位值
描述
CMD
0x00
R/W
0
控制寄存器
30
29
31
28
27
26
25
24
19
18
17
16
11
10
9
8
2
1
0
23
22
21
20
-
15
14
13
12
-
7
6
-
5
4
3
MULMODE
CALMUL
CALSIN
位域
名称
描述
31:6
-
-
5
MULMODE
4
CALMUL
RANGE
START
1:当前为计算乘除法模式
0:当前为计算 SIN COS ARCTAN 模式
1:当前为计算乘法
0:当前为计算除法
3
CALSIN
1:计算 sin 和 cos
0:计算 arctan
控制计算 arctan 时,待计算的值 x 的范围
2:1
RANGE
00:在 0.05