0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
SWM201G6S7-65

SWM201G6S7-65

  • 厂商:

    SYNWIT(华芯微特)

  • 封装:

    SSOP28_208MIL

  • 描述:

    ARM®Cortex-M0 32bit MCU 32K FLASH 8K SRAM

  • 数据手册
  • 价格&库存
SWM201G6S7-65 数据手册
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
SWM201G6S7-65 价格&库存

很抱歉,暂时无法提供与“SWM201G6S7-65”相匹配的价格&库存,您可以联系我们找货

免费人工找货
SWM201G6S7-65
  •  国内价格
  • 1+2.80000

库存:4