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

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
SWM150R6T6-50

SWM150R6T6-50

  • 厂商:

    SYNWIT(华芯微特)

  • 封装:

    LQFP64_10X10MM

  • 描述:

    SWM150R6T6是一款基于32位ARM® Cortex™-M0 微控制器。具有高性能、低功耗、代码密度大等优势,适用于工业控制及白色家电等诸多应用领域。

  • 数据手册
  • 价格&库存
SWM150R6T6-50 数据手册
SWM150 系列 ARM®CortexTM-M0 32 位微处理器 SWM150 系列 MCU 数据手册 华芯微特科技有限公司 Synwit Technology Co., Ltd. 1 SWM150 系列 目 录 1 2 3 4 5 概述........................................................................................................................................... 5 特性........................................................................................................................................... 5 选型指南................................................................................................................................... 6 功能方框图............................................................................................................................... 7 管脚配置................................................................................................................................... 8 5.1 TQFP48 ......................................................................................................................... 8 5.2 LQFP64 ......................................................................................................................... 9 5.3 管脚描述....................................................................................................................... 9 6 功能描述................................................................................................................................. 13 6.1 存储器映射................................................................................................................. 13 6.2 中断控制器................................................................................................................. 15 6.3 系统定时器................................................................................................................. 20 6.4 系统控制器................................................................................................................. 21 6.5 系统管理(SYSCON) ............................................................................................. 23 6.6 通用 I/O(GPIO) ..................................................................................................... 49 6.7 通用型定时器(TIMER) ........................................................................................ 55 6.8 专用定时器(TIMERSE)........................................................................................ 58 6.9 看门狗定时器(WDT)............................................................................................ 64 6.10 UART 接口控制器(UART) .................................................................................. 67 6.11 串行外设接口(SPI)控制器 ................................................................................... 75 6.12 脉冲宽度调制(PWM)发生器 ............................................................................... 89 6.13 模拟数字转换器(ADC) ...................................................................................... 101 6.14 正交编码器(QEI) ................................................................................................ 110 6.15 比较器/放大器(CMP) ......................................................................................... 119 6.16 ISP 及 FLASH 操作 ................................................................................................. 123 7 典型应用电路....................................................................................................................... 125 8 电气特性............................................................................................................................... 125 8.1 绝对最大额定值....................................................................................................... 125 8.2 DC 电气特性 ............................................................................................................ 125 8.3 AC 电气特性 ............................................................................................................ 126 8.4 模拟器件特性........................................................................................................... 127 9 封装信息............................................................................................................................... 128 9.1 TQFP48 ..................................................................................................................... 128 9.2 LQFP64 ..................................................................................................................... 129 10 版本记录............................................................................................................................... 130 图目录 图 4-1 功能方框图 .................................................................................................................. 7 图 5-1 LQFP64 封装管脚配置................................................................................................ 8 图 5-2 LQFP64 封装管脚配置................................................................................................ 9 2 SWM150 系列 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 图 6-1 时钟供给示意图 ....................................................................................................... 24 6-2 I/O 引脚示意图 .......................................................................................................... 26 6-3 FLASH 接口示意图 ................................................................................................... 27 6-4 端口 E 滤波示意图 ................................................................................................... 50 6-5 脉冲捕捉示意图 ....................................................................................................... 59 6-6 占空比捕捉示意图 ................................................................................................... 60 6-7 UART 结构图 ............................................................................................................. 67 6-8 串行数据格式 ........................................................................................................... 68 6-9 UART 配置流程 ......................................................................................................... 68 6-10 SPI 单个数据传输帧格式(SCPH=0).................................................................. 77 6-11 SPI 连续数据传输帧格式(SCPH=0).................................................................. 77 6-12 SPI 单个数据传输帧格式(SCPH=1).................................................................. 78 6-13 SPI 连续数据传输帧格式(SCPH=1).................................................................. 78 6-14 Microwire 不连续数据传输帧格式(不连续读数据) ......................................... 79 6-15 Microwire 连续数据传输帧格式(连续读数据) ................................................. 79 6-16 Microwire 单个数据传输帧格式(写数据) ......................................................... 80 6-17 SSP 单个数据传输帧格式 ....................................................................................... 80 6-18 SSP 多个数据连续传输帧格式 ............................................................................... 80 6-19 PWM 结构示意图 .................................................................................................... 90 6-20 死区发生示意图 ..................................................................................................... 91 6-21 PWM 普通模式波形示意图 .................................................................................... 91 6-22 未开启死区的互补模式 ......................................................................................... 92 6-23 开启死区的互补模式 ............................................................................................. 92 6-24 中心对称模式 ......................................................................................................... 93 6-25 ADC 结构示意图 ................................................................................................... 102 6-26 ADC 中断示意图 ................................................................................................... 104 6-27 增量式正交编码盘示意图 ................................................................................... 110 6-28 三相信号正向/反向旋转时序关系 ...................................................................... 111 6-29 QEI 结构示意图 ..................................................................................................... 111 6-30 x4 计数模式 ........................................................................................................... 112 6-31 x2 计数模式 ........................................................................................................... 112 6-32 可编程数字噪声滤波器结构框图........................................................................ 113 6-33 信号通过滤波器传播 ........................................................................................... 113 6-34 索引复位模式 ....................................................................................................... 113 6-35 计数匹配复位模式 ............................................................................................... 114 6-36 比较器/放大器结构示意图 .................................................................................. 119 7-1 典型应用电路图 ..................................................................................................... 125 9-1 TQFP48 封装............................................................................................................ 128 9-2 LQFP64 封装............................................................................................................ 129 表格目录 表格 3-1 SWM240 系列 MCU 选型表 ................................................................................... 6 3 SWM150 系列 表格 表格 表格 表格 表格 表格 表格 6-1 存储器映射 ............................................................................................................ 13 6-2 中断编号及对应外设 ........................................................................................... 15 8-1 绝对最大额定值 .................................................................................................. 125 8-2 DC 电气特性( Vdd-Vss = 3.3V, Tw =25℃) ........................................................ 125 8-3 内部振荡器特征值 ............................................................................................. 126 8-4 SAR ADC 特征值 ................................................................................................ 127 8-5 比较器/放大器特性 ............................................................................................ 127 4 SWM150 系列 1 概述 SWM150 系列 MCU 是基于 ARM® CortexTM-M0 的 32 位微控制器。与传统 8051 单片机 相比,在价格相近的情况下,保证了高性能、低功耗、代码密度大等优势,适用于工业控制 及白色家电等诸多应用领域。 SWM150 内嵌两个 ARM® CortexTM-M0 控制器,具备独立的程序运行空间,运行速度 最高可运行至 50MHz。FLASH 大小 32KB,SRAM 大小 4KB,支持 ISP(在系统编程)操 作及 IAP(在应用编程) 。提供 22MHz/44MHz 精度为 1%的内置时钟,支持两级加密,支持 ISP(在系统编程)及 IAP(在应用编程)操作。 SWM150 外设串行总线包括 I2S 总线接口,2 路工业标准的 UART 接口,SSI 通信接口 (支持 SPI、Micro Wire 及 SSI 协议) 。此外还包括看门狗定时器,4 组通用定时器(计数器) , 1 组专用定时器(包含定时、捕捉、PWM 等功能),1 组 QEI 接口,3 组(6 通道)PWM 控 制模块,8 通道 12 位逐次逼近型 ADC 模块以及 3 组模拟比较器(运算放大器)模块,一组 VF 电路采集模块。最多支持 61 个 IO 接口,同时提供欠压检测及低电压复位功能。 2 特性       内核 ▪ 包含 2 个 32 位 ARM® Cortex™-M0 内核 ▪ 提供 2 个 24 位系统定时器 ▪ 工作频率最高 50MHz ▪ 硬件单周期乘法 ▪ 2 组集成嵌套向量中断控制器(NVIC),提供最多 32 个、4 级可配置优先级的中断, 共享中断源 内置 LDO ▪ 可接受电压范围为 2.7V 至 3.6V SPI FLASH 存储器 ▪ 32KB 程序区 ▪ 32KB 数据区 ▪ 可通过 SWD 接口烧录,支持加密 ▪ 支持 ISP(在系统编程)更新用户程序 ▪ 支持 IAP(在应用编程)记录用户数据 内部 SRAM 存储器 ▪ 4K 单周期访问的 SRAM 串行接口 ▪ 两路 UART 模块,具有独立 8 字节 FIFO ▪ 一路 SSP 模块,具有 8 字节独立 FIFO,支持 SPI、Micro Wire、SSI 协议,传输速 率最高可达系统时钟 1/2 ▪ 一路高速 I2S 总线接口 PWM 控制模块 ▪ 6 通道 16 位 PWM 产生器 ▪ 可设置高电平结束或周期开始两种条件触发中断 ▪ 具有普通、互补、中心对称等多种输出模式 5 SWM150 系列      ▪ 宽度可调节的前后死区控制 ▪ 提供设备保护,由硬件完成“刹车”功能 ▪ 由硬件完成与 ADC 的交互 定时器模块 ▪ 4 路 32 位通用定时器,可做计数器使用 ▪ 1 路专用定时器,功能包括定时器、计数器、捕捉及 PWM 信号产生 ▪ 32 位看门狗定时器,溢出后可配置触发中断或复位芯片 GPIO ▪ 最多可达 61 个 IO,其中 20 路具备中断功能 ▪ 可配置 4 种 IO 模式 ✓ 上拉输入 ✓ 下拉输入 ✓ 推挽输出 ✓ 开漏输出 ▪ 灵活的中断配置 ✓ 触发类型设置(边沿检测、电平检测) ✓ 触发电平设置(高电平、低电平) 模拟外设 ▪ 12 位 8 通道高精度 SAR ADC ✓ 采样率高达 1MSPS ✓ 支持 Signle/Single-cycle scan/ Continuous scan/ Burst 四种模式 ✓ 独立结果寄存器 ✓ Burst 模式下提供 FIFO ✓ 可由软件或 PWM 触发 ▪ 3 路模拟比较器/运算放大器 ✓ 作为模拟比较器 可以灵活选择片内(16 级)、片外参考电压 比较结果可以触发中断通知 MCU 进行处理 ✓ 作为运算放大器 完全由用户根据需要进行电路设计 结果可送至 ADC 进行转换处理 欠压检测 ▪ 支持 4 级欠压检测 ▪ 支持欠压中断和复位选择 时钟源 ▪ 22.1184MHz 及 44MHz 精度可达 1%的片内时钟源 ▪ 片外 4 ~ 32Mhz 晶振 3 选型指南 表格 3-1 SWM240 系列 MCU 选型表 Part Number Flash SRAM I/O Timer PWM WDT RTC DMA UART I2C SPI CAN Package SWM150C6V6-50 20KB 4KB 43 4+1 6 1 0 0 2 0 1 0 TQFP48 SWM150R6T6-50 20KB 4KB 61 4+1 6 1 0 0 2 0 1 0 LQFP64 6 SWM150 系列 4 功能方框图 SW1500 SWCLK SWDIO CLOCK GENERATION, POWER CONTROL, SYSTEM FUNCTIONS POR SERIAL WIRE IRC ARM CORTEX-M0 FLASH 20/16/32/34 KB SRAM 4/8/4/2 KB XTAL OUT XTAL IN RESET ROM AHB-LITE SYSTEM CONTROL IN[2:0] CREF[2:0] AHB TO APB BRIDGE AHB TO APB BRIDGE COMPARATOR / AMPLIFIER GPIO A GPIO A[15:0] GPIO B GPIO B[6:0] GPIO C GPIO C[7:0] OUT[2:0] AD[5:7] AD[7:0] 12-bit SAR ADC GPIO E GPIO E[7:0] GPIO F GPIO F[21:0] AD[2:0] APB PWM APB PWM[5:0] COUNTER 3 TIMER 0/ COUNTER 0 TIMER 1/ COUNTER 1 TIMER 2/ COUTER 2 TIMER 3/ COUNTER 3 COUNTER_SE TIMER_SE COUNTER 0 COUNTER 1 COUNTER 2 UART RXD TXD SDI SSI SDO SCLK SS WDT 图 4-1 功能方框图 7 SWM150 系列 5 管脚配置 5.1 TQFP48 B1\XO 5 4 1 B2\SWCLK0 6 2 VSS 7 E4\COUNTER0IN B3\SWDIO0 8 3 B4 9 B0\XI B5\SWDCLK1 10 E5\COUNTER1IN B6\SWDIO1 11 C5\SSI_TX C0\UART0_IN C4\SSI_RX 12 C3\I2S_WS C1\UART0_OUT C2\I2S_CLK 48 F0\PWM5 47 F1\PWM4 46 F2\PWM3 45 F3\PWM2 44 F4\PWM1 43 F5\PWM0 42 F6\I2S_DI 41 F7\I2S_DO RESETn 13 14 15 16 34 35 36 E1\QEI1 E2\QEI2 E3\QEI_UD E0\QEI0 37 33 24 A0\AD0\UART1_IN A11\AD7\COUNTER3IN\OP2OUT A12\I2S_CLK_EXT\OP2N 32 A1\AD1\UART1_OUT 38 A10\TIMERSE_IN\OP1P A13\TIMERSE_OUT\OP2P 23 31 39 A9\OP1N 22 30 ADC_VSS VDD 40 29 21 A8\AD6\COUNTER2IN\OP1OUT A2\AD2\(SSI_RX) 28 20 A7\PWM_BREAK\OP0P A3\AD3\(SSI_TX) 27 19 AVSS A4\AD4\(SSI_CLK) 26 18 A6\OP0N C7\SSI_CSN 25 17 A5\AD5\OP0OUT\(SSI_CSN) C6\SSI_CLK 图 5-1 LQFP64 封装管脚配置 8 SWM150 系列 A13\TIMERSE_OUT\OP2P F12 52 49 F11 53 F13 F10 54 RESETn F9 55 50 F8 56 51 F6/I2S_DI F5\PWM0 59 F7\I2S_DO F4\PWM1 60 57 F3\PWM2 61 58 F1\PWM4 F2\PWM3 62 F0\PWM5 63 64 5.2 LQFP64 A12\I2S_CLK_EXT\OP2N E4\COUNTER0IN 1 48 E5\COUNTER1IN 2 47 E3\QEI_UD E6\VF_IN 3 46 E2\QEI2 E7\VF_OUT 4 45 E1\QEI1 F14 5 44 E0\QEI0 F15 6 43 F21 F16 7 42 F20 F17 8 25 26 27 28 29 30 31 32 A2\AD2\(SSI_RX) A1\AD1\UART1_OUT A0\AD0\UART1_IN A14\REFP\(UART0_IN) A15\(UART0_OUT) A5\AD5\OP0OUT\(SSI_CSN) 33 A6\OP0N A3\AD3\(SSI_TX) 16 A4\AD4\(SSI_CLK) B6\SWDIO1 24 34 A7\PWM_BREAK\OP0P C7\SSI_CSN 15 23 35 A8\AD6\COUNTER2IN\OP1OUT B5\SWDCLK1 C6\SSI_CLK 14 22 36 VDD B4 C5\SSI_TX 13 C4\SSI_RX 37 A9\OP1N B3\SWDIO0 21 12 20 VSS C3\I2S_WS 38 A10\TIMERSE_IN\OP1P 19 11 C2\I2S_CLK 39 A11\AD7\COUNTER3IN\OP2OUT B2\SWCLK0 18 40 F18 B1\XO 17 9 10 C0\UART0_IN B0\XI C1\UART0_OUT 41 F19 图 5-2 LQFP64 封装管脚配置 5.3 管脚描述 TQFP48 LQFP64 管脚号 管脚名称 1 1 E4 可复用功能 类型 COUNTER0_IN I/O 描述 E4:数字 GPIO 功能引脚; COUNTER0_IN:COUNTER0 外部计数源 2 2 E5 COUNTER1_IN I/O E5:数字 GPIO 功能引脚; COUNTER1_IN:COUNTER1 外部计数源 9 SWM150 系列 / 3 E6 VF_IN I/O E6:数字 GPIO 功能引脚; VF_IN:VF 电路输入引脚 / 4 E7 VF_OUT I/O E7:数字 GPIO 功能引脚; VF_OUT:VF 电路输出引脚 / 5 F14 —— I/O F14:数字 GPIO 功能引脚; / 6 F15 —— I/O F15:数字 GPIO 功能引脚; / 7 F16 —— I/O F16:数字 GPIO 功能引脚; / 8 F17 —— I/O F17:数字 GPIO 功能引脚; 3 9 B0 XI I/O B0:数字 GPIO 功能引脚; XI:外部晶振输入引脚 4 10 B1 XO I/O B1:数字 GPIO 功能引脚; XO:外部晶振输出引脚 5 11 B2 SWCLK0 I/O B2:数字 GPIO 功能引脚; SWCLK0:SWD 下载接口 0 的时钟线引脚 6 13 VSS —— S 7 14 B3 SWDIO0 I/O VSS:芯片主地功能引脚 B3:数字 GPIO 功能引脚; SWDIO0:SWD 下载接口 0 的数据线引脚 8 12 B4 —— I/O B4:数字 GPIO 功能引脚; 9 15 B5 SWCLK1 I/O B5:数字 GPIO 功能引脚; SWCLK1:SWD 下载接口 1 的时钟线引脚 10 16 B6 SWDIO1 I/O B6:数字 GPIO 功能引脚; SWDIO1:SWD 下载接口 1 的数据线引脚 11 17 C0 UART0_IN I/O C0:数字 GPIO 功能引脚; UART0_IN:UART0 模块数据输入引脚 12 18 C1 UART0_OUT I/O C1:数字 GPIO 功能引脚; UART0_OUT:UART0 模块数据输出引脚 13 19 C2 I2S_CLK I/O C2:数字 GPIO 功能引脚; I2S_CLK:I2S 接口的时钟线引脚 14 20 C3 I2S_WS I/O C3:数字 GPIO 功能引脚; I2S_WS:I2S 接口的左右通道时钟线引脚 15 21 C4 SSI_RX I/O C4:数字 GPIO 功能引脚; SSI_RX:SSI 串行接口的接收线引脚 16 22 C5 SSI_TX I/O C5:数字 GPIO 功能引脚; SSI_TX:SSI 串行接口的发送线引脚 17 23 C6 SSI_CLK I/O C6:数字 GPIO 功能引脚; SSI_CLK:SSI 串行接口的时钟线引脚 18 24 C7 SSI_CSn I/O C7:数字 GPIO 功能引脚; SSI_CSn:SSI 串行接口的片选引脚 19 25 A4 SSI_CLK/ AD4 I/O A4:数字 GPIO 功能引脚; SSI_CLK:SSI 串行接口的时钟线引脚 AD4:ADC 模块通道 4 输入信号 10 SWM150 系列 20 26 A3 SSI_TX/ I/O AD3 A3:数字 GPIO 功能引脚; SSI_TX:SSI 串行接口的发送线引脚 AD3:ADC 模块通道 5 输入信号 21 27 A2 SSI_RX/ I/O AD2 A2:数字 GPIO 功能引脚; SSI_RX:SSI 串行接口的接收线引脚 AD2:ADC 模块通道 2 输入信号 23 28 A1 UART1_OUT/ I/O AD1 A1:数字 GPIO 功能引脚; UART1_OUT:UART1 模块数据输出引脚 AD1:ADC 模块通道 1 输入信号 24 29 A0 UART1_IN/ I/O AD0 A0:数字 GPIO 功能引脚; UART1_IN:UART1 模块数据输入引脚 AD0:ADC 模块通 05 输入信号 / 30 A14 UART0_IN/ I/O AD_REFP A14:数字 GPIO 功能引脚; UART0_IN:UART0 模块数据输入引脚 AD_REFP:ADC 模块输入信号参考端 P / 31 A15 UART0_OUT I/O A15:数字 GPIO 功能引脚; UART0_OUT:UART0 模块数据输出引脚 25 32 A5 SSI_CSn/ I/O A5:数字 GPIO 功能引脚; AD5/ SSI_CSn:SSI 模块片选功能引脚 OP0_OUT AD5:ADC 模块通道 5 输入信号 OP0_OUT:放大器 0 输出端 26 33 A6 OP0_N I/O A6:数字 GPIO 功能引脚; OP0_N:放大器 0_N 端 28 34 A7 PWM_BREAK/ I/O OP0_P A7:数字 GPIO 功能引脚; PWM_BREAK:PWM 刹车功能引脚 OP0_P:放大器 0_P 端 29 35 A8 AD6/ I/O COUNTER2_IN/ A8:数字 GPIO 功能引脚; AD6:ADC 模块通道 6 输入信号 OP1_OUT COUNTER2_IN:COUNTER2 外部计数源 OP1_OUT:放大器 1 输出端 30 36 VDD —— S VDD:芯片主电源功能引脚 31 37 A9 OP1_N I/O A9:数字 GPIO 功能引脚; OP1_N:放大器 1_N 端 32 38 A10 TIMER_SE_IN/ I/O OP1_P A10:数字 GPIO 功能引脚; TIMER_SE_IN:专用定时器输入捕获功能引脚 OP1_P:放大器 1_P 端 33 39 A11 AD7/ I/O COUNTER3IN/ A11:数字 GPIO 功能引脚; AD7:ADC 模块通道 7 输入信号 OP2_OUT COUNTER3IN:COUNTER3 外部计数源 OP2_OUT:放大器 2 输出端 / 40 F18 —— I/O F18:数字 GPIO 功能引脚; / 41 F19 —— I/O F19:数字 GPIO 功能引脚; 11 SWM150 系列 / 42 F20 —— I/O F20:数字 GPIO 功能引脚; / 43 F21 —— I/O F21:数字 GPIO 功能引脚; 34 44 E0 QEI_0 I/O E0:数字 GPIO 功能引脚; QEI_0:正交编码器 A 相输入引脚 35 45 E1 QEI_1 I/O E1:数字 GPIO 功能引脚; QEI_1:正交编码器 B 相输入引脚 36 46 E2 QEI_2 I/O E2:数字 GPIO 功能引脚; QEI_2:正交编码器索引相输入引脚 37 47 E3 QEI_UD I/O E3:数字 GPIO 功能引脚; QEI_UD:正交编码器输出引脚 38 48 A12 I2S_CLK_EXT/ I/O OP2_N A12:数字 GPIO 功能引脚; I2S_CLK_EXT:I2S 模块时钟线 OP2_N:放大器 2_N 端 39 49 A13 TIMER_SE_OUT/ I/O OP2P A13:数字 GPIO 功能引脚; TIMER_SE_OUT:专用定时器比较输出功能引脚 OP2_P:放大器 2_P 端 40 50 RESET —— I/O RESET:芯片复位引脚; / 51 F13 —— I/O F13:数字 GPIO 功能引脚; / 52 F12 —— I/O F12:数字 GPIO 功能引脚; / 53 F11 —— I/O F11:数字 GPIO 功能引脚; / 54 F10 —— I/O F10:数字 GPIO 功能引脚; / 55 F9 —— I/O F9:数字 GPIO 功能引脚; / 56 F8 —— I/O F8:数字 GPIO 功能引脚; 41 57 F7 I2S_DO I/O F7:数字 GPIO 功能引脚; I2S_DO:I2S 模块数据输出线 42 58 F6 I2S_DI I/O F6:数字 GPIO 功能引脚; I2S_DI:I2S 模块数据输入线 43 59 F5 PWM0 I/O F5:数字 GPIO 功能引脚; PWM0:PWM 模块 0 路输出 44 60 F4 PWM1 I/O F4:数字 GPIO 功能引脚; PWM1:PWM 模块 1 路输出 45 61 F3 PWM2 I/O F3:数字 GPIO 功能引脚; PWM2:PWM 模块 2 路输出 46 62 F2 PWM3 I/O F2:数字 GPIO 功能引脚; PWM3:PWM 模块 3 路输出 47 63 F1 PWM4 I/O F1:数字 GPIO 功能引脚; PWM4:PWM 模块 4 路输出 48 64 F0 PWM5 I/O F0:数字 GPIO 功能引脚; PWM5:PWM 模块 5 路输出 12 SWM150 系列 6 功能描述 6.1 存储器映射 本系列控制器为 32 位通用控制器,提供了 4G 字节寻址空间,如下表所示。数据使用 小端格式(Little-Endian) ,各模块具体寄存器排布及操作说明在后章节有详细描述。 表格 6-1 存储器映射 起始 结束 描述 存储器(core10 视图) 0x00000000 0x00005000 SRAM0 程序区地址(16KB/20KB/24KB) 0x20000000 0x20001000 SRAM0 数据区地址(8KB/4KB/0KB) 0x00006000 0x00008800 SRAM1 程序区地址(8KB/10KB/12KB) 0x20002000 0x20002800 SRAM1 数据区地址(4KB/2KB/0KB) 0x20003000 0x20003400 交互访问区地址(1KB) 存储器(core1 视图) 0x00000000 0x00002800 SRAM1 程序区地址(8KB/10KB/12KB) 0x20000000 0x20000800 SRAM1 数据区地址(4KB/2KB/0KB) 0x20003000 0x20003400 交互访问区地址(1KB) APB 总线外设 0x3f000000 0x3f000800 INTERACTION 0x40000000 0x400007FF SYSTEM_CON 0x40001000 0x400017FF GPIOABC 0x40002000 0x400027FF TIMER_SE 0x40003000 0x400037FF UART0 0x40004000 0x400047FF SSI 0x4000B000 0x4000B7FF I2S 0x40011000 0x400117FF GPIO_EF 0x40012000 0x400127FF TIMER 0x40013000 0x400137FF UART1 0x40016000 0x400167FF PWM 0x40017000 0x400177FF ADC 0x40019000 0x400197FF WDT 0x4001B000 0x4001B7FF SPI2SRAM 0x4001D000 0x400197FF QEI 0x400F0000 0x400F07FF SYSTEM_CTL 核内部控制器 0xE000E010 0xE000E01F 系统定时控制寄存器 13 SWM150 系列 起始 结束 描述 0xE000E100 0xE000E4EF NVIC 中断控制寄存器器 0xE000ED00 0xE000ED3F 系统控制寄存器器 14 SWM150 系列 6.2 中断控制器 6.2.1 概述 CortexTM-M0 提供了“嵌套向量中断控制器(NVIC) ”用以管理中断事件。其具有如下 特性:  支持嵌套及向量中断  硬件完成现场的保存和恢复  动态改变优先级  确定的中断时间 中断优先级分为 4 级,可通过中断优先级配置寄存器(IRQn)进行配置。中断发生时, 内核比较中断优先级,自动获取入口地址,并保护环境,将指定寄存器中数据入栈,无需软 件参与。中断服务程序结束后,由硬件完成出栈工作。同时支持“尾链”模式及“迟至”模式, 有效的优化了中断发生及背对背中断的执行效率,提高了中断的实时性。 更多细节请参阅“CortexTM-M0 技术参考手册”及“ARM® CoreSight 技术参考手册”。 6.2.2 中断向量表 本系列 MCU 提供了 32 个中断,其排列如下表所示。 表格 6-2 中断编号及对应外设 中断(IRQ 编号) 描述 0 TIMER_SE 1 保留 2 SPI2SRAM 3 WDT 4 CORE 5 PWM 6 ADC 7 QEI 8 UART0 9 SSI 10 UART1 11 I2S 12 GPIOA2 13 GPIOA3 14 GPIOA4 15 GPIOA5 15 SWM150 系列 中断(IRQ 编号) 描述 16 GPIOA6 17 GPIOA7 18 Timer0 19 Timer1 20 Timer2 21 Timer3 22 GPIOA8 23 GPIOA9 24 GPIOA10 25 GPIOA11 26 GPIOA12 27 GPIOA13 28 GPIOA14 29 GPIOA15 30 保留 31 GPIOE 6.2.3 寄存器映射 NVIC BASE:0xE000E100 名称 偏移量 位宽 类型 复位值 描述 NVIC_ISER 0x100 32 R/W 0x00 中断使能寄存器 NVIC_ICER 0x180 32 R/W 0x00 清除使能寄存器 NVIC_ISPR 0x200 32 R/W 0x00 设置挂起寄存器 NVIC_ICPR 0x280 32 R/W 0x00 清除挂起寄存器 NVIC_IPR0 0x400 32 R/W 0x00 IRQ0—IRQ3 优先级控制 NVIC_ IPR1 0x404 32 R/W 0x00 IRQ4—IRQ7 优先级控制 NVIC_ IPR2 0x408 32 R/W 0x00 IRQ8—IRQ11 优先级控制 NVIC_ IPR3 0x40C 32 R/W 0x00 IRQ12—IRQ15 优先级控制 NVIC_ IPR4 0x410 32 R/W 0x00 IRQ16—IRQ19 优先级控制 NVIC_ IPR5 0x414 32 R/W 0x00 IRQ20—IRQ23 优先级控制 NVIC_ IPR6 0x418 32 R/W 0x00 IRQ24—IRQ27 优先级控制 NVIC_ IPR7 0x41C 32 R/W 0x00 IRQ28—IRQ31 优先级控制 16 SWM150 系列 6.2.4 寄存器描述 NVIC_ISER ADDR:0xE000E100 位域 31:0 名称 SETENA 类型 R/W 复位值 描述 中断使能,向对应位写 1 使能相应中断号中断, 写 0 无效。 读返回目前使能状态。 0x00 NVIC_ ICER ADDR:0xE000E180 位域 31:0 名称 CLRENA 类型 复位值 描述 R/W 0x00 中断清除,向对应位写 1 清除相应中断号中断 使能位,写 0 无效。 读返回目前使能状态。 类型 复位值 描述 R/W 0x00 中断挂起,向对应位写 1 挂起相应中断号中断, 写 0 无效。 读返回目前挂起状态。 NVIC_ ISPR ADDR:0xE000E200 位域 31:0 名称 SETPEND NVIC_ ISPR ADDR:0xE000E280 位域 名称 类型 复位值 描述 31:0 SETPEND R/W 0x00 中断挂起清除,向对应位写 1 清除相应中断号 中断挂起标志,写 0 无效。 读返回目前挂起状态。 NVIC_ IPR0 ADDR:0xE000E400 位域 名称 类型 复位值 31:30 PRI_3 R/W 0x00 29:24 REVERSED — — 23:22 PRI_2 R/W 0x00 21:16 REVERSED — — 15:14 PRI_1 R/W 0x00 13:8 REVERSED — — 7:6 PRI_0 R/W 0x00 5:0 REVERSED — — 描述 IRQ3 优先级,0 为最高,3 为最低 保留 IRQ2 优先级,0 为最高,3 为最低 保留 IRQ1 优先级,0 为最高,3 为最低 保留 IRQ0 优先级,0 为最高,3 为最低 保留 17 SWM150 系列 NVIC_ IPR1 ADDR:0xE000E404 位域 名称 类型 复位值 31:30 PRI_7 R/W 0x00 29:24 REVERSED — — 23:22 PRI_6 R/W 0x00 21:16 REVERSED — — 15:14 PRI_5 R/W 0x00 13:8 REVERSED — — 7:6 PRI_4 R/W 0x00 5:0 REVERSED — — 描述 IRQ7 优先级,0 为最高,3 为最低 保留 IRQ6 优先级,0 为最高,3 为最低 保留 IRQ5 优先级,0 为最高,3 为最低 保留 IRQ4 优先级,0 为最高,3 为最低 保留 NVIC_ IPR2 ADDR:0xE000E408 位域 名称 类型 复位值 描述 31:30 PRI_11 R/W 0x00 IRQ11 优先级,0 为最高,3 为最低 29:24 REVERSED — — 23:22 PRI_10 R/W 0x00 21:16 REVERSED — — 15:14 PRI_9 R/W 0x00 13:8 REVERSED — — 7:6 PRI_8 R/W 0x00 5:0 REVERSED — — 保留 IRQ10 优先级,0 为最高,3 为最低 保留 IRQ9 优先级,0 为最高,3 为最低 保留 IRQ8 优先级,0 为最高,3 为最低 保留 NVIC_ IPR3 ADDR:0xE000E40C 位域 名称 类型 复位值 31:30 PRI_15 R/W 0x00 29:24 REVERSED — — 23:22 PRI_14 R/W 0x00 21:16 REVERSED — — 15:14 PRI_13 R/W 0x00 13:8 REVERSED — — 7:6 PRI_12 R/W 0x00 5:0 REVERSED — — 描述 IRQ15 优先级,0 为最高,3 为最低 保留 IRQ14 优先级,0 为最高,3 为最低 保留 IRQ13 优先级,0 为最高,3 为最低 保留 IRQ12 优先级,0 为最高,3 为最低 保留 NVIC_ IPR4 ADDR:0xE000E410 位域 名称 类型 复位值 31:30 PRI_19 R/W 0x00 29:24 REVERSED — — 23:22 PRI_18 R/W 0x00 描述 IRQ19 优先级,0 为最高,3 为最低 保留 IRQ18 优先级,0 为最高,3 为最低 18 SWM150 系列 位域 名称 类型 复位值 21:16 REVERSED — — 15:14 PRI_17 R/W 0x00 13:8 REVERSED — — 7:6 PRI_16 R/W 0x00 5:0 REVERSED — — 描述 保留 IRQ17 优先级,0 为最高,3 为最低 保留 IRQ16 优先级,0 为最高,3 为最低 保留 NVIC_ IPR5 ADDR:0xE000E414 位域 名称 类型 复位值 31:30 PRI_23 R/W 0x00 29:24 REVERSED — — 23:22 PRI_22 R/W 0x00 21:16 REVERSED — — 15:14 PRI_21 R/W 0x00 13:8 REVERSED — — 7:6 PRI_20 R/W 0x00 5:0 REVERSED — — 描述 IRQ23 优先级,0 为最高,3 为最低 保留 IRQ22 优先级,0 为最高,3 为最低 保留 IRQ21 优先级,0 为最高,3 为最低 保留 IRQ20 优先级,0 为最高,3 为最低 保留 NVIC_ IPR6 ADDR:0xE000E418 位域 名称 类型 复位值 31:30 PRI_27 R/W 0x00 29:24 REVERSED — — 23:22 PRI_26 R/W 0x00 21:16 REVERSED — — 15:14 PRI_25 R/W 0x00 13:8 REVERSED — — 7:6 PRI_24 R/W 0x00 5:0 REVERSED — — 描述 IRQ27 优先级,0 为最高,3 为最低 保留 IRQ26 优先级,0 为最高,3 为最低 保留 IRQ25 优先级,0 为最高,3 为最低 保留 IRQ24 优先级,0 为最高,3 为最低 保留 NVIC_ IPR7 ADDR:0xE000E41C 位域 名称 类型 复位值 31:30 PRI_31 R/W 0x00 29:24 REVERSED — — 23:22 PRI_30 R/W 0x00 21:16 REVERSED — — 15:14 PRI_29 R/W 0x00 13:8 REVERSED — — 7:6 PRI_28 R/W 0x00 5:0 REVERSED — — 描述 IRQ31 优先级,0 为最高,3 为最低 保留 IRQ30 优先级,0 为最高,3 为最低 保留 IRQ29 优先级,0 为最高,3 为最低 保留 IRQ28 优先级,0 为最高,3 为最低 保留 19 SWM150 系列 6.3 系统定时器 6.3.1 概述 CortexTM-M0 核内部提供了一个 24 位系统定时器。该定时器使能后装载当前值寄存器 (SYST_CVR)内数值并向下递减至 0,并在下个时钟重新加载重载寄存器(SYST_RVR) 内 数 值 。 计 数 器 再 次 递 减 至 0 时 , 计 数 器 状 态 寄 存 器 ( SYST_CSR ) 中 的 标 志 位 COUNTERFLAG 置位,读该位可清零。 复位后,SYST_CVR 寄存器与 SYST_RVR 寄存器值均未知,因此使用前需初始化,向 SYST_CVR 写入任意值,清零同时复位状态寄存器,保证装载值为 SYST_RVR 寄存器中数 值。 当 SYST_RVR 寄存器值为 0 时,重新装载后计时器保持为 0,并停止重新装载。 细节请参阅“CortexTM-M0 技术参考手册”及“ARM® CoreSight 技术参考手册” 。 6.3.2 寄存器映射 SYSTIC BASE:0xE000E010 名称 偏移量 位宽 类型 复位值 描述 SYST_CSR 0x10 32 R/W 0x04 状态寄存器 SYST_RVR 0x14 32 R/W — 重载寄存器 SYST_CVR 0x18 32 R/W — 当前值寄存器 6.3.3 寄存器描述 SYST_CSR ADDR:0xE000E010 位域 名称 类型 复位值 描述 31:17 REVERSED — — 保留位 16 COUNTERF LAG R 0 计数器递减到 0 且该过程中本寄存器未被读取, 本位返回 1 15:2 REVERSED — — 保留位 1 TINKINT R/W 0 1:中断触发使能 0:中断触发禁能 0 ENABLE R/W 0 1:定时器使能 0:定时器禁能 SYST_RVR ADDR:0xE000E014 位域 名称 类型 复位值 描述 20 SWM150 系列 31:24 REVERSED — — 保留位 23:0 RELOAD R/W — 计数器达到 0 时加载本寄存器值,写 0 终止继续 加载 SYST_CVR ADDR:0xE000E018 位域 名称 类型 复位值 描述 31:24 REVERSED — — 保留位 23:0 CURRENT R/W — 读操作返回当前计数器值,写操作清 0 该寄存器, 同时清除 COUNTERFLAG 位 6.4 系统控制器 6.4.1 概述 CrotexTM-M0 系统控制器主要负责内核管理,包括 CPUID,内核核资源中断优先级设置 及内核电源管理。 更多细节请参阅“CortexTM-M0 技术参考手册”及“ARM®CoreSight 技术参考手册”。 6.4.2 寄存器映射 SYSCTRL BASE:0xE000ED00 名称 偏移量 位宽 类型 复位值 描述 CPUID 0xD00 32 R 0x410CC200 CPUID 寄存器 ICSR 0xD04 32 R/W 0x00000000 中断控制状态寄存器 AIRCR 0xD0C 32 R/W 0xFA050000 中断与复位控制寄存器 SCR 0xD10 32 R/W 0x00000000 系统控制寄存器 SHPR2 0xD1C 32 R/W 0x00000000 系统优先级控制寄存器 2 SHPR3 0xD20 32 R/W 0x00000000 系统优先级控制寄存器 3 6.4.3 寄存器描述 CPUID ADDR:0xE000ED00 位域 名称 类型 复位值 31:24 IMPLEMENTER R 0x41 23:20 REVERSED — — 19:16 PART R 0xC 15:4 PARTNO R 0xC20 3:0 REVISION R 0x00 描述 ARM 分配执行码 保留位 ARMV6-M 读返回 0xC20 读返回 0x00 21 SWM150 系列 ICSR ADDR:0xE000ED04 位域 名称 类型 复位值 描述 31:29 REVERSED — — 保留位 28 PENDSVSET R/W 0 挂起 PendSV 中断,1 有效 27 PENDSVCLR WO — 写 1 清 PendSV 中断,仅写有效 26 PENDSTSET R/W 0 挂起 SysTick 中断,1 有效 25 PENDSTCLR — — 写 1 清 SysTick 中断,仅写有效 24 REVERSED — — 保留位 23 ISRPREEMPT RO 0 退出调试 halt 状态时置位,仅适用于调试 22 ISRPENDING RO 0 外部配置中断是否挂起 21 REVERSED — — 保留位 20:12 VECTPENDING R/W 0 优先级最高的挂起异常向量号 11:9 REVERSED — — 保留位 8:0 VECTACTIVE RO 0 0:线程模式 其它:当前执行异常处理向量号 AIRCR ADDR:0xE000ED0C 位域 名称 类型 复位值 描述 31:16 VECTORKEY WO — 写入时须保证 0x05FA 15:3 REVERSED — — 保留位 2 SYSRESETREQ WO 0 写 1 时复位芯片,复位时自动清除 1 VECTCLRACTIVE WO 0 置 1 时清除所有异常活动状态 0 REVERSED — — 保留位 SCR ADDR:0xE000ED10 位域 名称 类型 复位值 描述 31:5 REVERSED — — 保留位 4 SWVONPEND R/W 0 使能后,可将中断挂起过程作为唤醒事件 3 REVERSED — — 保留位 2 SLEEPDEEP R/W 0 深睡眠提醒 1 SLEEPONEXIT R/W 0 置 1 后,内核从异常状态返回后进入睡眠模 式 0 REVERSED — — 保留位 SHPR2 ADDR:0xE000ED1C 位域 名称 类型 复位值 22 描述 SWM150 系列 31:30 PRI_11 R/W 0 系统处理器优先级 11:SVCall 0 为最高,3 为最低 29:0 REVERSED — — 保留位 SHPR3 ADDR:0xE000ED20 位域 名称 类型 复位值 描述 31:30 PRI_15 R/W 0 系统处理器优先级 15:SysTick 0 为最高,3 为最低 29:24 REVERSED — — 保留位 23:22 PRI_14 R/W 0 系统处理器优先级 14:PendSV 0 为最高,3 为最低 21:0 REVERSED — — 保留位 6.5 系统管理(SYSCON) 6.5.1 特性  时钟控制  端口设置  系统功能设置  SRAM 功能划分  滤波器使能及分频  CORE1 核控制  BOD 控制  FLASH 接口控制  ID 寄存器  中断屏蔽控制 6.5.2 功能 系统控制模块分为两个部分,第一部分负责为相关器件提供功能配置,如端口复用切换、 IO 配置等,第二部分整个芯片提供时钟源,决定了各模块的时钟分频及电源控制等操作。 系统控制模块仅能供 CORE0 核访问,CORE1 核不可访问该模块,访问将可能引起硬件错 误。 时钟分频示意图如下: 23 SWM150 系列 SYS_CFG_0 BIT[31] FILTER_CLK_DIV FILTER_CLK INT_CLK ADC_CLK_DIV ADC_CLK PWM_CLK_DIV PWM_CLK EXT_CLK SCLK_DIV SCLK GPIO TIMER_CLK TIMERSE_CLK SPI_CLK I2S_CLK UART_CLK FLASH2SRAM_CLK QEI_CLK WDT_CLK 图 6-1 时钟供给示意图 时钟源选择 芯片有 2 个时钟源可供使用:  内部振荡器:内部振荡器为片内时钟源,无需连接任何外部器件。内部振荡器频率 为 22MHz ± 1%或 44MHz± 1%,可提供较精确的固定频率时钟  外部振荡器:外部振荡器可接 4MHz ~ 32MHz 时钟源 时钟分频 时钟分频主要作用于以下时钟源:  系统时钟(SCLK)  PWM 时钟(PWM_CLK)  ADC 时钟(ADC_CLK)  I2S 时钟(I2S_CLK)  E 口滤波时钟 其中,PWM 时钟、ADC 时钟及 E 口滤波时钟并不依赖于系统时钟,均以输入时钟源 为基准独立分频。I2S 时钟分频在 SCLK 时钟分频基础上进行分频。 写入值遵循如下规则:  当写入数值为偶数时,以输入时钟为基准按写入数值进行分频(0 为 2 分频)  当写入数值为奇数时,取消分频,时钟频率与输入时钟源相同 24 SWM150 系列 外设时钟关断 设时钟关断功能可作用于包括以下外设时钟:  通用定时器  UART0 接口  SSI 接口  看门狗控制器  AD 转换器  专用定时器  PWM 控制器  QEI 接口  SPI2SRAM 模块  I2S 接口  UART1 接口 各模块时钟默认为关断状态,以达到减小功耗的目的。使用指定模块前,需通过设置 SYS_CFG_1 寄存器[16:0]位,打开指定外设时钟。 时钟倍频 可通过时钟倍频功能,将内部时钟源频率由 22MHz 倍频至 44MHz。 端口复用切换 端口功能设置通过 SYS_CON 寄存器组实现,包括端口复用切换和 I/O 功能设置,端口 复用切换用于指定端口功能,可将引脚在标准 I/O 和外围设备之间切换。I/O 功能设置包括 设置 I/O 电平状态。 端口复用通过端口复用寄存器 PORTA_SEL 寄存器、PORTB_SEL 寄存器、PORTC_SEL 寄存器及 PORTD_SEL 寄存器实现,每个芯片引脚对应端口复用寄存器相应两位。 每个端口可能具有以下三种功能或其中两种:  GPIO  外设接口 :将引脚切换至外围设备(使用外围设备时需首先进行此操作)  模拟接口 :将引脚切换至模数转换器/比较器/放大器功能 :将引脚切换至通用 I/O,可进行 I/O 引脚设置 I/O 引脚设置 每个端口对应一组配置寄存器,可通过设置相应位将对应引脚配置为指定模式,各状态 之间互不影响,当端口选择为 GPIO 时有效。 其中,端口 A 及端口 B 低两位可配置为以下三种模式: 25 SWM150 系列  上拉输入  下拉输入  推挽/开漏输出 其余端口均只能配置上拉输入模式。 以下为各 IO 引脚示意图。 VDD PULLUP DATA_IN PIN PULLDOWN VDD PUSHPULLN OUTPUT_EN DATA_OUT 图 6-2 I/O 引脚示意图 复位时,除 SWD 接口外,GPIO 所有引脚默认配置模式均为悬空输入。 BOD 中断及掉电级别控制 芯片提供了 4 级掉电检测模式。当芯片电压低于所设置级别时,芯片将根据配置,产生 BOD 复位或中断,详见 BOD_CTL 寄存器。 定时器/计数器功能切换 SYS_CTL_0 寄存器中 BIT[29:26]用于控制定时器/计数器切换,当对应为设置为 1 时, 功能设置为 TIMER,置为 0 时功能设置为 COUNTER,具体应用方式见“TIMER”章节。 端口 E 滤波功能配置 SYS_CTL_1 寄存器中 BIT[10:8]用于使能 GPIO E 端口 BIT[2:0]滤波功能,当对应位设 置为 1 时,端口 E 对应位滤波功能打开,置为 0 时,端口 E 对应位滤波功能关闭,SYS_CTL_0 寄存器中 BIT[25:22]用于调节滤波宽度。具体滤波应用方式见“GPIO”章节。 内置 SRAM 功能切换 芯片无内置非易失性存储器,取而代之使用 SRAM 作为程序运行的载体。将每个核所 26 SWM150 系列 对应的 SRAM 划分为两个区域,一个区域为程序区,用于替代传统 flash 区域,存储用户代 码。上电后,芯片将代码由片外 flash 拷贝至该区域执行。另一个区域为执行区,作用与传 统 SRAM 相同。 当需要较大片内执行区域时,可以将两个核所对应的 SRAM 区域合并,全部供 CORE0 核使用,此时 CORE1 核无法使用。 芯片可根据配置将 SRAM 按以下 6 种方式进行划分,每种方式代码区与执行区大小不 同,最后两种无法使用 CORE1 核。具体划分方式如 FLASH 接口示意图所示。 其中,SRAMSWITCH 为 CORE0 用户程序 0x28 偏移地址处写入值,对应值如下:  写入值 0(默认):CORE0 核地址划分为 20KB/4KB,CORE1 核地址划分为 10KB/2KB  写入值 1:CORE0 核地址划分为 20KB/4KB,CORE1 核地址划分为 8KB/4KB  写入值 2:CORE0 核地址划分为 16KB/8KB,CORE1 核地址划分为 10KB/2KB  写入值 3:CORE0 核地址划分为 16KB/8KB,CORE1 核地址划分为 8KB/4KB  写入值 4:CORE0 核地址划分为 28KB/8KB,CORE1 核不可使用  写入值 5:CORE0 核地址划分为 32KB/4KB,CORE1 核不可使用  写入其它值:不更改划分,划分方式与写入 0 时相同 FLASH 接口切换 芯片外挂 Flash 使用两种接口进行通讯,其结构如下图所示。通过 SYS_SPICON 寄存 器进行控制。可通过调用 IAP 程序进行片外 FLASH 读写操作。 SPI_CON SRAM SPI2SRAM CORE READ WRITE SPI S W I T C H SOUT SIN CLK CS 片外 FLASH 图 6-3 FLASH 接口示意图 读取过程中,使用 SPI2SRAM 模块。该模块与 SRAM 之间采用独立通道,通过双线模 式对 FLASH 进行读取,读取过程不占用总线,可与核并行工作。写入过程中,使用 SPI 接 口进行操作,此时需占用核,并将片上 SPI 模块切换至 FLASH 接口。 调用 IAP 程序进行片外 FLASH 操作时,已包含上述读写过程,详见“加密及 Flash”章 节。用户仅需要保证调用 IAP 函数前 SPI2SRAM 模块及 SPI 模块时钟已开启。 27 SWM150 系列 SPI2SRAM 模块说明 SPI2SRAM 模块主要用于程序执行过程中的数据快速切换,该方式无需占用内核,只需 调用片上 IAP 函数即可(调用方式详见“加密及 Flash”章节) ,通过以下流程进行拷贝:  第一次使用前,打开 SPI2SRAM 模块时钟  在需要拷贝的时机调用 IAP 函数,输入拷贝源地址、目标地址、拷贝大小、是否 加密等参数  调用该 IAP 函数完成后,正常返回执行用户程序  需要跳转到片内新拷贝程序前,需要查询 SPI2SRAM 中指定寄存器位,该位归 0 证明拷贝成功  模块速度为系统时钟二分频,拷贝采用双线协议,即最高拷贝速度可达“系统时钟 /BIT” 使用注意事项:  拷贝目标地址必须为片内所划分的 CODE 区,无法拷贝至 SRAM 区  拷贝过程中中断程序无影响,但需要保证中断执行函数不在拷贝的目标地址内  拷贝需要以字为单位  该模块不具备 FLASH 写入功能,FLASH 写入过程需要占用核 片内 ID 芯片提供了 128BIT 片内 ID 供用户使用。用户可通过读取 SYS_IDn 寄存器进行相关加 密操作。 双核结构说明 芯片包含两个 Cortex-M0 内核,每个内核均有独立程序空间,可并行执行程序。两个 核中,CORE0 核为主核,芯片上电后首先运行,当需要使用 CORE1 核时,须将 CORE1_EN 寄存器中 CLKEN 位及 RESETEN 位置为 1。当置位完成后,CORE1 核从对应程序空间读取 程序执行。 双核通讯方式 芯片中两个内核可通过以下三种方式进行通讯  访问公共空间 芯片提供了两种公共空间供双核交互访问。一种为 SRAM 区, 所在地址为 0x20003000, 大小为 1KB,该区域具备较高的访问效率,可供两核同时访问。另一种为寄存器区,所在 地址为 0x3F000000,该区域提供了 15 个 2BIT 宽的寄存器及 16 个 32BIT 宽寄存器,用于交 互通讯。  中断通讯 在 INTERACTION 区域偏移 0x00 处,提供了 2 个 BIT 用于触发 CORE0 核及 CORE1 28 SWM150 系列 核对应中断。当指定位被置 1 时,该位相关核所对应中断被触发。进入中断后将指定位清 0 即可清除中断。可以通过一个核置另一个核对应位的方式,通过中断进行两核之间通讯。  单向空间访问 芯片针对两个核提供了独立的程序运行空间。CORE0 核所对应空间 CORE1 不可见, CORE1 核所对应空间 CORE0 核可见且可进行读写。详细地址空间分布见第 3 章。可通过 CORE0 核修改 CORE1 核地址空间进行通讯。但需注意 CORE1 核所执行程序的安全性,防 治代码区及数据区执行过程中被 CORE0 核修改。 双核中断控制 芯片所包含的两个 Cortex-M0 内核均具备独立的中断控制器,且中断向量表相同,详 见“中断控制器”章节。当外设中断发生时,两个核均可接受中断,并执行各自对应中断处理 程序。当需要屏蔽中断时,可通过 SYSCON 中 INT_MASKN0 寄存器及 INT_MASKN1 寄存 器屏蔽对应核中断。上电后,CORE0 核中断默认为非屏蔽状态,CORE1 核中断默认为屏蔽 状态。 初始化和配置 系统复位后,系统时钟默认为内部时钟。外围设备时钟全部关闭,默认状态下 ADC 时 钟为输入时钟 4 分频(注;须保证 ADC 工作时钟频率小于 13MHZ) ,PWM 时钟为输入时 钟 4 分频。 端口上电默认配置均为 I/O,Serial Ware 接口根据加密级别进行配置。 29 SWM150 系列 6.5.3 寄存器映射 INTERACTION BASE:0x3F000000 名称 偏移量 类型 复位值 描述 CORE_INT 0x00 R/W 0x00000 000 核中断触发寄存器 INTERACTBITx 0x04 ~0x3C R/W 0x00000 000 交互寄存器组 1 INTERACTREGx 0x40 ~0x7C R/W 0x00000 000 交互寄存器组 2 SYSCON BASE:0x40000000 名称 偏移量 类型 复位值 描述 OP_COMP_CTL 0x00 R/W 0x00000000 比较器/放大器配置寄存器 INT_MASKN0 0x04 R/W 0xFFFFFFF F CORE0 核中断屏蔽寄存器 INT_MASKN1 0x08 R/W 0x00000000 CORE1 核中断屏蔽寄存器 REVERSED 0x0C ~0x7C — — 保留 PORTA_SEL 0x80 R/W 0x00000000 端口 A 功能配置寄存器 PORTB_SEL 0x84 R/W 0x00005000 端口 B 功能配置寄存器 PORTC_SEL 0x88 R/W 0x00000000 端口 C 功能配置寄存器 REVERSED 0x8C — — 保留 PORTA_PULLU 0x90 R/W 0x00000000 端口 A 上拉配置寄存器 PORTB_PULLU 0x94 R/W 0x00000000 端口 B 上拉配置寄存器 PORTC_PULLU 0x98 R/W 0x00000000 端口 C 上拉配置寄存器 REVERSED 0x9C — — 保留 PORTA_PULLD 0xA0 R/W 0x00000000 端口 A 下拉配置寄存器 PORTB_PULLD 0xA4 R/W 0x00000010 端口 B 下拉配置寄存器 REVERSED 0xA8~ 0xAC — — 保留 PORTA_PUSHPn 0xB0 R/W 0x00000000 端口 A 推挽配置寄存器 PORTB_PUSHPn 0xB4 R/W 0x00000000 端口 B 推挽配置寄存器 REVERSED 0xB8~ 0xBC — — 保留 PORTE_ SEL 0xC0 R/W 0x00000000 端口 E 功能配置寄存器 PORTF_ SEL 0xC4 R/W 0x00000000 端口 F 功能配置寄存器 REVERSED 0xC8~ 0xCC — — 保留 PORTE_PULLU 0xD0 R/W 0x00000000 端口 E 上拉配置寄存器 PORTF_PULLU 0xD4 R/W 0x00000000 端口 F 上拉配置寄存器 REVERSED 0xD8~0x DC — — 保留 30 SWM150 系列 SYSCTL BASE:0x400F0000 名称 偏移量 类型 复位值 描述 SYS_CFG_0 0x00 R/W 0x7C004 401 系统寄存器 0 SYS_CFG_1 0x04 R/W 0x00000 000 系统寄存器 1 SYS_DBLF 0x08 R/W 0x00000 001 时钟倍频寄存器 SYS_OSCDIS 0x0C R/W 0x00000 000 内置振荡器关闭寄存器 REVERSED 0x10~ 0x1C — — 保留 SYS_SPICON 0x20 R/W 0x00000 00E FLASH 接口配置寄存器 SYS_CORE1EN 0x24 R/W 0x00000 000 CORE1 核使能寄存器 REVERSED 0x28~ 0x30 — — 保留 SYS_VFCON 0x34 R/W 0x00000 000 VF 电路控制寄存器 SYS_BODCON 0x38 R/W 0x00000 000 BOD RESET 控制寄存器 REVERSED 0x3C — — 保留 SYS_I2SCLKSRC 0x40 R/W 0x00000 001 I2S 时钟源控制 SYS_I2SCLKDIV 0x44 R/W 0x00000 000 I2S 时钟分频 REVERSED 0x48~ 0x5C — — 保留 SYS_CHIPID0 0x60 R — ID0 寄存器 SYS_CHIPID1 0x64 R — ID1 寄存器 SYS_CHIPID2 0x68 R — ID2 寄存器 SYS_CHIPID3 0x6C R — ID3 寄存器 31 SWM150 系列 6.5.4 寄存器描述 CORE0/CORE1 中断控制寄存器 CORE_INT ADDR: 0x3F000000 位域 名称 类型 复位值 31:2 REVERSED R 0 1 0 CORE0INT CORE1INT 交互标志位寄存器 R/W R/W 描述 保留位 0x0 CORE0 核中断触发位,该位置 1 时, CORE0 核对应 CORE 中断被触发,写 0 清除该中断 0x0 CORE1 核中断触发位,该位置 1 时, CORE1 核对应 CORE 中断被触发,写 0 清除该中断 INTERACTBIT0~ INTERACTBIT14 ADDR: 0x3F000004 ~ 0x3F00003C 位域 名称 类型 复位值 31:2 REVERSED R 0 1:0 DATA R/W 0x0 交互标志位寄存器 描述 保留位 标志位寄存器,CORE0 及 CORE1 均可访 问及修改 INTERACTREG0~ INTERACTREG15 ADDR: 0x3F000040 ~ 0x3F00007C 位域 名称 类型 复位值 描述 31:0 DATA R/W 0x0 交互数据寄存器,CORE0 及 CORE1 均可 访问及修改 比较器/放大器控制寄存器 OP_COMP_CTL ADDR:0x40000000 位域 名称 类型 复位值 31:0 OP_COMP_CTL R/W 0x00 CORE0 中断屏蔽寄存器 描述 见“比较器/放大器”章节 INT_MASK0 ADDR:0x40000004 位域 31:0 名称 INT_ MASKN0 CORE1 中断屏蔽寄存器 类型 R/W 复位值 描述 0xFFFF FFFF 指定位为 1 时,CORE0 核中断向量表对应 位非屏蔽,CORE0 核对应 NVIC 可接收对 应位到中断 指定位为 0 时,CORE0 核中断向量表对应 位屏蔽,CORE0 核对应 NVIC 不可接收到 对应位中断 INT_MASK1 ADDR:0x40000008 32 SWM150 系列 位域 31:0 名称 INT_ MASKN1 类型 R/W 复位值 描述 0x00 指定位为 1 时,CORE1 核中断向量表对应 位非屏蔽,CORE0 核对应 NVIC 可接收对 应位到中断 指定位为 0 时,CORE1 核中断向量表对应 位屏蔽,CORE0 核对应 NVIC 不可接收到 对应位中断 端口 A 功能选择寄存器 PORTA_SEL ADDR:0x40000080 位域 名称 类型 复位值 31:30 PA15 R/W 00 29:28 PA14 R/W 00 27:26 PA13 R/W 00 25:24 PA12 R/W 00 23:22 PA11 R/W 00 21:20 PA10 R/W 00 19:18 PA09 R/W 00 17:16 PA08 R/W 00 15:14 PA07 R/W 00 33 描述 PortA15 功能选择 00:GPIO 01: UART0_RX(备选) 10/11:保留 PortA14 功能选择 00:GPIO 01: UART0_TX(备选) 10/11:模数转换 基准 P 端 PortA13 功能选择 00:GPIO 01:TIMER_SE_OUT 10/11:比较器 2 P 端 PortA12 功能选择 00:GPIO 01:I2S_CLK_EXT 10/11:比较器 2 N 端 PortA11 功能选择 00:GPIO 01:Counter3 IN 10/11:模数转换 bit7/放大器 2 输出 PortA10 功能选择 00:GPIO 01:TIMER_SE_IN 10/11:比较器 1 P 端 PortA9 功能选择 00:GPIO 01:保留 10/11:比较器 1 N 端 PortA8 功能选择 00:GPIO 01:Counter2 IN 10/11:模数转换 bit6/放大器 1 输出 PortA7 功能选择 00:GPIO 01:PWM_BREAK 10/11:放大器 0 P 端 SWM150 系列 13:12 PA06 R/W 00 11:10 PA05 R/W 00 9:8 PA04 R/W 00 7:6 PA03 R/W 00 5:4 PA02 R/W 00 3:2 PA01 R/W 00 1:0 PA00 R/W 00 PortA6 功能选择 00:GPIO 01:保留 10/11:放大器 0 N 端 PortA5 功能选择 00:GPIO 01:SSI_CSn(备选) 10/11:模数转换 bit5/放大器 0 输出 PortA4 功能选择 00:GPIO 01:SSI_CLK(备选) 10/11:模数转换 bit4 PortA3 功能选择 00:GPIO 01:SSI_TX(备选) 10/11:模数转换 bit3 PortA2 功能选择 00:GPIO 01:SSI_RX(备选) 10/11:模数转换 bit2 PortA1 功能选择 00:GPIO 01:UART1_TX 10/11:模数转换 bit1 PortA0 功能选择 00:GPIO 01:UART1_RX 10/11:模数转换 bit0 端口 B 功能选择寄存器 PORTB_SEL ADDR:0x40000084 位域 名称 类型 复位值 31:14 REVERSED R 0 13:12 PB06 R/W 00 11:10 PB05 R/W 00 9:8 PB04 R/W 00 7:6 PB03 R/W 00 描述 保留位 PortB6 功能选择 00:GPIO 01:SWDIO1(CORE1 对应 SWD) 10/11:保留 PortB5 功能选择 00:GPIO 01:SWCLK1(CORE1 对应 SWD) 10/11:保留 PortB4 功能选择 00:GPIO 01:保留 10/11:保留 PortB3 功能选择 00:GPIO 01:SWDIO0(CORE0 对应 SWD) 34 SWM150 系列 5:4 PB02 R/W 00 3:2 PB01 R/W 00 1:0 PB00 R/W 00 10/11:保留 PortB2 功能选择 00:GPIO 01:SWCLK0(CORE0 对应 SWD) 10/11:保留 PortB1 功能选择 00:GPIO 01:保留 10/11:XO PortB0 功能选择 00:GPIO 01:保留 10/11:XI 端口 C 功能选择寄存器 PORTC_SEL ADDR:0x40000088 位域 名称 类型 复位值 31:16 REVERSED R 0 15:14 PC07 R/W 00 13:12 PC06 R/W 00 11:10 PC05 R/W 00 9:8 PC04 R/W 00 7:6 PC03 R/W 00 5:4 PC02 R/W 00 3:2 PC01 R/W 00 1:0 PC00 R/W 00 35 描述 保留位 PortC7 功能选择 00:GPIO 01:SSI_CSn 10/11:保留 PortC6 功能选择 00:GPIO 01:SSI_CLK 10/11:保留 PortC5 功能选择 00:GPIO 01:SSI_TX 10/11:保留 PortC4 功能选择 00:GPIO 01:SSI_RX 10/11:保留 PortC3 功能选择 00:GPIO 01:I2S_WS 10/11:保留 PortC2 功能选择 00:GPIO 01:I2S_SCLK 10/11:保留 PortC1 功能选择 00:GPIO 01:UART0_TX 10/11:保留 PortC0 功能选择 00:GPIO SWM150 系列 01:UART0_RX 10/11:保留 端口 A 上拉使能寄存器 PORTA_PULLUP ADDR:0x40000090 位域 名称 类型 复位值 31:16 REVERSED R 0 15 PA15 R/W 0 14 PA14 R/W 0 13 PA13 R/W 0 12 PA12 R/W 0 11 PA11 R/W 0 10 PA10 R/W 0 9 PA9 R/W 0 8 PA8 R/W 0 7 PA7 R/W 0 6 PA6 R/W 0 5 PA5 R/W 0 4 PA4 R/W 0 3 PA3 R/W 0 2 PA2 R/W 0 描述 保留位 Port A15 上拉配置 0: 上拉关闭 1: 上拉开启 Port A14 上拉配置 0: 上拉关闭 1: 上拉开启 Port A13 上拉配置 0: 上拉关闭 1: 上拉开启 Port A12 上拉配置 0: 上拉关闭 1: 上拉开启 Port A11 上拉配置 0: 上拉关闭 1: 上拉开启 Port A10 上拉配置 0: 上拉关闭 1: 上拉开启 Port A9 上拉配置 0: 上拉关闭 1: 上拉开启 Port A8 上拉配置 0: 上拉关闭 1: 上拉开启 Port A7 上拉配置 0: 上拉关闭 1: 上拉开启 Port A6 上拉配置 0: 上拉关闭 1: 上拉开启 Port A5 上拉配置 0: 上拉关闭 1: 上拉开启 Port A4 上拉配置 0: 上拉关闭 1: 上拉开启 Port A3 上拉配置 0: 上拉关闭 1: 上拉开启 Port A2 上拉配置 0: 上拉关闭 36 SWM150 系列 1 PA1 R/W 0 0 PA0 R/W 0 端口 B 上拉使能寄存器 1: 上拉开启 Port A1 上拉配置 0: 上拉关闭 1: 上拉开启 Port A0 上拉配置 0: 上拉关闭 1: 上拉开启 PORTB_PULLUP ADDR:0x40000094 位域 名称 类型 复位值 31:7 REVERSED R 0 6 PB6 R/W 0 5 PB5 R/W 0 4 REVERSED — — 3 PB3 R/W 0 2 PB2 R/W 0 1 PB1 R/W 0 0 PB0 R/W 0 端口 C 上拉使能寄存器 描述 保留位 Port B6 上拉配置 0: 上拉关闭 1: 上拉开启 Port B5 上拉配置 0: 上拉关闭 1: 上拉开启 保留 Port B3 上拉配置 0: 上拉关闭 1: 上拉开启 Port B2 上拉配置 0: 上拉关闭 1: 上拉开启 Port B1 上拉配置 0: 上拉关闭 1: 上拉开启 Port B0 上拉配置 0: 上拉关闭 1: 上拉开启 PORTC_PULLUP ADDR:0x40000098 位域 名称 类型 复位值 31:8 REVERSED R 0 7 PC7 R/W 0 6 PC6 R/W 0 5 PC5 R/W 0 4 PC4 R/W 0 描述 保留位 Port C7 上拉配置 0: 上拉关闭 1: 上拉开启 Port C6 上拉配置 0: 上拉关闭 1: 上拉开启 Port C5 上拉配置 0: 上拉关闭 1: 上拉开启 Port C4 上拉配置 0: 上拉关闭 37 SWM150 系列 3 PC3 R/W 0 2 PC2 R/W 0 1 PC1 R/W 0 0 PC0 R/W 0 端口 A 下拉使能寄存器 1: 上拉开启 Port C3 上拉配置 0: 上拉关闭 1: 上拉开启 Port C2 上拉配置 0: 上拉关闭 1: 上拉开启 Port C1 上拉配置 0: 上拉关闭 1: 上拉开启 Port C0 上拉配置 0: 上拉关闭 1: 上拉开启 PORTA_PULLDOWN ADDR:0x400000A0 位域 名称 类型 复位值 31:15 REVERSED R 0 14 PA14 R/W 0 13 PA13 R/W 0 12 PA12 R/W 0 11 PA11 R/W 0 10 PA10 R/W 0 9 PA9 R/W 0 8 PA8 R/W 0 7 PA7 R/W 0 6 PA6 R/W 0 5 PA5 R/W 0 描述 保留位 Port A14 下拉配置 0: 下拉关闭 1: 下拉开启 Port A13 下拉配置 0: 下拉关闭 1: 下拉开启 Port A12 下拉配置 0: 下拉关闭 1: 下拉开启 Port A11 下拉配置 0: 下拉关闭 1: 下拉开启 Port A10 下拉配置 0: 下拉关闭 1: 下拉开启 Port A9 下拉配置 0: 下拉关闭 1: 下拉开启 Port A8 下拉配置 0: 下拉关闭 1: 下拉开启 Port A7 下拉配置 0: 下拉关闭 1: 下拉开启 Port A6 下拉配置 0: 下拉关闭 1: 下拉开启 Port A5 下拉配置 0: 下拉关闭 1: 下拉开启 38 SWM150 系列 4 PA4 R/W 0 3 PA3 R/W 0 2 PA2 R/W 0 1 PA1 R/W 0 0 PA0 R/W 0 端口 B 下拉使能寄存器 Port A4 下拉配置 0: 下拉关闭 1: 下拉开启 Port A3 下拉配置 0: 下拉关闭 1: 下拉开启 Port A2 下拉配置 0: 下拉关闭 1: 下拉开启 Port A1 下拉配置 0: 下拉关闭 1: 下拉开启 Port A0 下拉配置 0: 下拉关闭 1: 下拉开启 PORTB_PULLDOWN ADDR:0x400000A4 位域 名称 类型 复位值 31:5 REVERSED R 0 4 PB4 R/W 1 2: 3 REVERSED — — 1 PB1 R/W 0 0 PB0 R/W 0 端口 A 推挽使能寄存器 描述 保留位 Port B4 下拉配置 0: 下拉关闭 1: 下拉开启 保留 Port B1 下拉配置 0: 下拉关闭 1: 下拉开启 Port B0 下拉配置 0: 下拉关闭 1: 下拉开启 PORTA_PUSHPULLN ADDR:0x400000B0 位域 名称 类型 复位值 31:15 REVERSED R 0 14 PA14 R/W 0 13 PA13 R/W 0 12 PA12 R/W 0 11 PA11 R/W 0 描述 保留位 Port A14 推挽配置 0: 推挽模式 1: 开漏模式 Port A13 推挽配置 0: 推挽模式 1: 开漏模式 Port A12 推挽配置 0: 推挽模式 1: 开漏模式 Port A11 推挽配置 0: 推挽模式 1: 开漏模式 39 SWM150 系列 10 PA10 R/W 0 9 PA9 R/W 0 8 PA8 R/W 0 7 PA7 R/W 0 6 PA6 R/W 0 5 PA5 R/W 0 4 PA4 R/W 0 3 PA3 R/W 0 2 PA2 R/W 0 1 PA1 R/W 0 0 PA0 R/W 0 端口 B 推挽使能寄存器 Port A10 推挽配置 0: 推挽模式 1: 开漏模式 Port A9 推挽配置 0: 推挽模式 1: 开漏模式 Port A8 推挽配置 0: 推挽模式 1: 开漏模式 Port A7 推挽配置 0: 推挽模式 1: 开漏模式 Port A6 推挽配置 0: 推挽模式 1: 开漏模式 Port A5 推挽配置 0: 推挽模式 1: 开漏模式 Port A4 推挽配置 0: 推挽模式 1: 开漏模式 Port A3 推挽配置 0: 推挽模式 1: 开漏模式 Port A2 推挽配置 0: 推挽模式 1: 开漏模式 Port A1 推挽配置 0: 推挽模式 1: 开漏模式 Port A0 推挽配置 0: 推挽模式 1: 开漏模式 PORTB_ PUSHPULLN ADDR:0x400000B4 位域 名称 类型 复位值 31:2 REVERSED R 0 1 PB1 R/W 0 0 PB0 R/W 0 描述 保留位 Port B1 推挽配置 0: 推挽模式 1: 开漏模式 Port B0 推挽配置 0: 推挽模式 1: 开漏模式 端口 E 功能选择寄存器 PORTE_SEL ADDR:0x400000C0 位域 名称 类型 复位值 40 描述 SWM150 系列 31:16 REVERSED R 0 15:14 PE07 R/W 00 13:12 PE06 R/W 00 11:10 PE05 R/W 00 9:8 PE04 R/W 00 7:6 PE03 R/W 00 5:4 PE02 R/W 00 3:2 PE01 R/W 00 1:0 PE00 R/W 00 保留位 PortE7 功能选择 00:GPIO 01:VF_OUT 10/11:保留 PortE6 功能选择 00:GPIO 01:VF_IN 10/11:保留 PortE5 功能选择 00:GPIO(具备滤波功能) 01:Counter1 IN 10/11:保留 PortE4 功能选择 00:GPIO(具备滤波功能) 01:Counter0 IN 10/11:保留 PortE3 功能选择 00:GPIO(具备滤波功能) 01:QEI_UD 10/11:保留 PortE2 功能选择 00:GPIO(具备滤波功能) 01:QEIC 10/11:保留 PortE1 功能选择 00:GPIO(具备滤波功能) 01:QEIB 10/11:保留 PortE0 功能选择 00:GPIO(具备滤波功能) 01:QEIA 10/11:保留 端口 F 功能选择寄存器 PORTF_SEL ADDR:0x400000C4 位域 名称 类型 复位值 31:16 REVERSED R 0 15:14 PF07 R/W 00 13:12 PF06 R/W 00 11:10 PF05 R/W 00 描述 保留位 PortF7 功能选择 00:GPIO 01:I2S_SDO 10/11:保留 PortF6 功能选择 00:GPIO 01:I2S_SDI 10/11:保留 PortF5 功能选择 00:GPIO 41 SWM150 系列 9:8 PF04 R/W 00 7:6 PF03 R/W 00 5:4 PF02 R/W 00 3:2 PF01 R/W 00 1:0 PF00 R/W 00 端口 E 上拉使能寄存器 01:PWM0 10/11:保留 PortF4 功能选择 00:GPIO 01:PWM1 10/11:保留 PortF3 功能选择 00:GPIO 01:PWM2 10/11:保留 PortF2 功能选择 00:GPIO 01:PWM3 10/11:保留 PortF1 功能选择 00:GPIO 01:PWM4 10/11:保留 PortF0 功能选择 00:GPIO 01:PWM5 10/11:保留 PORTE_PULLUP ADDR:0x400000D0 位域 名称 类型 复位值 31:8 REVERSED R 0 7 PE7 R/W 0 6 PE6 R/W 0 5 PE5 R/W 0 4 PE4 R/W 0 3 PE3 R/W 0 2 PE2 R/W 0 1 PE1 R/W 0 描述 保留位 Port E7 上拉配置 0: 上拉关闭 1: 上拉开启 Port E6 上拉配置 0: 上拉关闭 1: 上拉开启 Port E5 上拉配置 0: 上拉关闭 1: 上拉开启 Port E4 上拉配置 0: 上拉关闭 1: 上拉开启 Port E3 上拉配置 0: 上拉关闭 1: 上拉开启 Port E2 上拉配置 0: 上拉关闭 1: 上拉开启 Port E1 上拉配置 0: 上拉关闭 1: 上拉开启 42 SWM150 系列 0 PE0 端口 F 上拉使能寄存器 R/W Port E0 上拉配置 0: 上拉关闭 1: 上拉开启 0 PORTF_PULLUP ADDR:0x400000D4 位域 名称 类型 复位值 31:20 REVERSED R 0 19 PF19 R/W 0 18 PF18 R/W 0 17 PF17 R/W 0 16 PF16 R/W 0 15 PF15 R/W 0 14 PF14 R/W 0 13 PF13 R/W 0 12 PF12 R/W 0 11 PF11 R/W 0 10 PF10 R/W 0 9 PF9 R/W 0 8 PF8 R/W 0 7 PF7 R/W 0 6 PF6 R/W 0 描述 保留位 Port F19 上拉配置 0: 上拉关闭 1: 上拉开启 Port F18 上拉配置 0: 上拉关闭 1: 上拉开启 Port F17 上拉配置 0: 上拉关闭 1: 上拉开启 Port F16 上拉配置 0: 上拉关闭 1: 上拉开启 Port F15 上拉配置 0: 上拉关闭 1: 上拉开启 Port F14 上拉配置 0: 上拉关闭 1: 上拉开启 Port F13 上拉配置 0: 上拉关闭 1: 上拉开启 Port F12 上拉配置 0: 上拉关闭 1: 上拉开启 Port F11 上拉配置 0: 上拉关闭 1: 上拉开启 Port F10 上拉配置 0: 上拉关闭 1: 上拉开启 Port F9 上拉配置 0: 上拉关闭 1: 上拉开启 Port F8 上拉配置 0: 上拉关闭 1: 上拉开启 Port F7 上拉配置 0: 上拉关闭 1: 上拉开启 Port F6 上拉配置 43 SWM150 系列 5 PF5 R/W 0 4 PF4 R/W 0 3 PF3 R/W 0 2 PF2 R/W 0 1 PF1 R/W 0 0 PF0 R/W 0 0: 上拉关闭 1: 上拉开启 Port F5 上拉配置 0: 上拉关闭 1: 上拉开启 Port F4 上拉配置 0: 上拉关闭 1: 上拉开启 Port F3 上拉配置 0: 上拉关闭 1: 上拉开启 Port F2 上拉配置 0: 上拉关闭 1: 上拉开启 Port F1 上拉配置 0: 上拉关闭 1: 上拉开启 Port F0 上拉配置 0: 上拉关闭 1: 上拉开启 系统控制寄存器 0 SYS_CFG_0 ADDR:0x400F0000 位域 名称 类型 复位值 31 CLK R/W 0 30 REVERSED — — 29 TCTRAN3 R/W 1 28 TCTRAN2 R/W 1 27 TCTRAN1 R/W 1 26 TCTRAN0 R/W 1 25:22 PEDIV R/W 0 21:16 REVERSED — — 15:12 PWMC R/W 4 11:8 ADCC R/W 4 描述 切换时钟 0:外部 1:内部, 保留 切换计数器/定时器 3 0:计数器(计数源需外接) 1:定时器 切换计数器/定时器 2 0:计数器(计数源需外接) 1:定时器 切换计数器/定时器 1 0:计数器(计数源需外接) 1:定时器 切换计数器/定时器 0 0:计数器(计数源需外接) 1:定时器 端口 E BIT[2:0]滤波基准时钟分频 写入奇数不分频,写入偶数为相应分频值, 0 为 2 分频 保留 PWM 时钟分频 写入奇数不分频,写入偶数为相应分频值, 0 为 2 分频 ADC 时钟分频(需要确保分频后的频率小 44 SWM150 系列 7:0 SCLKC R/W 于 13MHz) 写入奇数不分频,写入偶数为相应分频值, 0 为 2 分频 SCLK 时钟分频, 写入奇数不分频,写入偶数为相应分频值, 0 为 2 分频 4 系统控制寄存器 1 SYS_CFG_1 ADDR: 0x400F0004 位域 名称 类型 复位值 31:17 REVERSED R 0 16 UART1EN R/W 0 15 I2SEN R/W 0 14 SPI2SRAMEN R/W 0 13 REVERSED — — 12 QEIEN R/W 0 11 REVERSED — — 10 E2FLTEN R/W 0 9 E1FLTEN R/W 0 8 E0FLTEN R/W 0 7 PWMEN R/W 0 6 TIMERSEN R/W 0 5 ADCEN R/W 0 4 WDTEN R/W 0 3 SSIEN R/W 0 描述 保留位 UART1 时钟使能 0:禁止 1:使能 I2S 时钟使能 0:禁止 1:使能 SPI2SRAM 时钟使能 0:禁止 1:使能 保留 QEI 时钟使能 0:禁止 1:使能 保留 E2 口滤波使能 0:禁止 1:使能 E1 口滤波使能 0:禁止 1:使能 E0 口滤波使能 0:禁止 1:使能 PWM 时钟使能 0:禁止 1:使能 TIMER_SE 时钟使能 0:禁止 1:使能 ADC 时钟使能 0:禁止 1:使能 Watchdog 时钟使能 0:禁止 1:使能 SSI 时钟使能 0:禁止 45 SWM150 系列 2 REVERSED — — 1 UART0EN R/W 0 0 TIMEN R/W 0 时钟倍频寄存器 1:使能 保留 UART0 时钟使能 0:禁止 1:使能 TIMER 时钟使能 0:禁止 1:使能 SYS_DBLF ADDR: 0x400F0008 位域 名称 类型 复位值 31:1 REVERSED R 0 0 SYS_DBLF R/W 0x01 SPI 状态配置寄存器 描述 保留位 时钟倍频,0 = 22M,1= 44M SYS_SPICON ADDR:0x400F0020 位域 名称 类型 复位值 31:6 REVERSED R 0 保留位 00 外挂 FLASH 读取时钟分频 00 / 01: 2 分频 10: 4 分频 11: 8 分频 1 0:SPI2SRAM 模块不连接至外挂 FLASH 1:SPI2SRAM 模块连接至外挂 FLASH(用 于 flash 读) (此为优先级高于 BIT0, 当两者均置 1 时, 此位有效) 1 0:FLASH 端口 CS 端强制选中,持续为 低 1:FLASH 端口 CS 端由对应控制器控制 (推荐) 1 SPI 状态控制位 0:空闲状态为低电平 1:空闲状态为三态(推荐) 0 0:SPI 模块不连接至外挂 FLASH 1:SPI 模块连接至外挂 FLASH(用于 flash 写) (此为优先级低于 BIT3, 当两者均置 1 时, 此位无效) 5:4 3 2 1 0 SPI2RAM DIV SPI2SRAM PORTSW SPICSN SPI_CTL SPI2FLASH R/W R/W R/W R/W R/W 描述 CORE1 核控制寄存器 SYS_CORE1EN ADDR:0x400F0024 位域 名称 类型 复位值 46 描述 SWM150 系列 31:2 REVERSED R 0 1 CORE1CLKEN R/W 0 0 CORE1RSTEN R/W 0 VF 电路控制 保留位 CORE1 核时钟使能: 0 = CORE1 核时钟停止 1 = CORE1 核时钟使能 CORE1 核 RESET 使能: 0 = CORE1 核处于 RESRT 状态, 停止工作 1 = CORE1 核 RESET 状态结束,开始工 作 SYS_VFCON ADDR:0x400F0034 位域 名称 类型 复位值 31:1 REVERSED R 0 0 VFCON R/W 0 BOD 控制寄存器 描述 保留位 VF 电路使能寄存器: 0 = VF 电路禁能 1 = VF 电路使能 SYS_BODCON ADDR:0x400F0038 位域 名称 类型 复位值 31:7 REVERSED R 0 6:4 BODRST R/W 0 3 BODINTEN R/W 0 2:0 BODINT R/W 0 描述 保留位 低电压触发复位级别设置: 00:1.7V 01: 2.1V 10: 2.4V 11: 2.7V 低电压触发中断使能 0 低电压触发中断级别设置: 00:1.9V 01: 2.3V 10: 2.6V 11: 2.9V I2S 时钟源切换寄存器 SYS_I2SCLKSRC ADDR:0x400F0040 位域 名称 类型 复位值 描述 31:1 REVERSED R 0 保留位 0 I2SCLK SRC R/W 0 I2S 时钟源切换: 0 = 外部时钟(I2S_CLK_EXT) 1 = 内部时钟(I2S_CLK) I2S 时钟源分频寄存器 SYS_I2SCLKDIV ADDR:0x400F0044 位域 名称 类型 复位值 31:8 REVERSED R 0 保留位 7:0 I2SCLK DIV 0 I2S 时钟分频 写入奇数不分频,写入偶数为相应分频值, 0 为 2 分频 R/W 47 描述 SWM150 系列 ID 寄存器 0 SYS_CHIPID0 ADDR:0x400F0060 位域 名称 类型 复位值 31:0 CHIPID0 R — 描述 芯片 128 位 ID 寄存器 0 ID 寄存器 1 SYS_CHIPID1 ADDR:0x400F0064 位域 名称 类型 复位值 31:0 CHIPID1 R — 描述 芯片 128 位 ID 寄存器 1 ID 寄存器 2 SYS_CHIPID2 ADDR:0x400F0068 位域 名称 类型 复位值 31:0 CHIPID2 R — 描述 芯片 128 位 ID 寄存器 2 ID 寄存器 3 SYS_CHIPID3 ADDR:0x400F006C 位域 名称 类型 复位值 31:0 CHIPID3 R — 描述 芯片 128 位 ID 寄存器 3 48 SWM150 系列 6.6 通用 I/O(GPIO) 6.6.1 特性  最高 58 个独立 IO  每个端口具有独立的数据输入、输出寄存器  每个引脚可独立配置方向  A 端口可设置为上拉、下拉、推挽、开漏四种工作模式(见第五章)  A 端口和 E 端口具有可编程控制中断,其中 A 端口每个引脚均可配置为独立中断 源,E 端口所有引脚共享一路中断。中断特性如下:  触发极性可配置  触发方式可配置(沿触发/电平触发)  中断可屏蔽 6.6.2 功能 GPIO 模块由包括 5 个端口(PortA,PortB,PortC,PortE,PortF) 。其中,其中端口 A 位宽为 16 位,端口 B 位宽为 7 位,端口 C 位宽为 8 位、端口 E 位宽为 8 位,端口 F 位宽为 22 位,共计 61 个可编程输入/输出管脚。 除 SW 引脚外,所有引脚上电后默认状态均为 GPIO 浮空输入(DIR = 0) 。SW 引脚默 认为露出状态。可根据需求以引脚为单位对 GPIO 方向及数据进行控制。同时可将端口 A、 端口 E 配置为中断模式。 数据控制 GPIO 方向寄存器(DIR)用来将每个独立的管脚配置为输入模式或者输出模式。 当数据方向位为 0 时,GPIO 配置为输入,并且对应的外部数据寄存器(EXT)位将捕 获和存储 GPIO 端口上的值。即 GPIO 为输入时,需要读取外部数据寄存器(EXT)来获取 引脚状态。 当数据方向位设为 1 时,GPIO 配置为输出,并且对应端口数据寄存器(DATA)对应 位的值将在 GPIO 相应引脚上输出,对数据寄存器进行读操作时,返回值为上次写入值。即 当 GIPO 为输出时,需要配置数据寄存器(DATA)来更改引脚状态。 中断控制 可根据需求将 GPIO 端口 A 及端口 E 配置为中断模式,并通过相关寄存器配置中断极 性及触发方式。触发方式分为边沿触发和电平触发两种模式。对于边沿触发中断,必须通过 软件对中断位进行清除。对于电平触发中断,需保证外部信号源保持电平稳定,以便中断能 被控制器识别。 49 SWM150 系列 使用以下寄存器来对产生中断触发方式和极性进行定义:  GPIO 中断触发方式(INTLEVEL)寄存器  GPIO 中断触发极性(INTPOLARITY)寄存器 通过 GPIO 中断使能(INTEN)寄存器可以使能或者禁止相应中断,通过 GPIO 中断屏 蔽(INTMASK)寄存器可以屏蔽或者打开相应的中断。 当产生中断时,可以在 GPIO 原始中断状态(RAWINTSTAUS)和 GPIO 屏蔽后的中断 状态(INTSTAUS)寄存器中获取中断信号的状态。INTSTATUS 寄存器仅显示经过屏蔽后 被传送到控制器的中断信号。RINTS 则表示外部中断信号目前状态,但不一定能够被中断 控制器接收。 写 1 到 GPIO 中断结束(INTEOI)寄存器可以清除相应位中断。 滤波功能设置 GPIO E 端口 BIT[5:0]具有输入时钟可配置的滤波功能。 对于 BIT[2:0],通过开启系统控制模块(SYSCTL)中 SYS_CTL_1 寄存器 BIT[10:8]对 应位使能滤波功能。输入信号稳定三个时钟周期(以 GPIO 模块输入时钟计)后认定有效, 如下图所示。可通过配置 SYS_CTL_0 寄存器中 BIT[25:22]分频器调节三个时钟周期的宽度。 对于 BIT[5:3],通过配置 QEI 模块中寄存器进行配置。 图 6-4 端口 E 滤波示意图 初始化和配置 GPIO 引脚默认为浮空输入模式,可通过以下方式对其状态进行更改:  设置 IO 方向: ADIR,BDIR,CDIR,EDIR,FDIR 寄存器  读取 IO 引脚状态: 设置为 0 则相应位为输入 设置为 1 则相应位为输出 AEXT,BEXT,CEXT,EEXT,FEXT 寄存器  输出指定值: ADATE,BDATA,CDATA,EDATA,FDATA 寄存器  配置中断: INTEN 寄存器  设置 0 端口 A/D 相应位作为正常 GPIO 端口 设置 1 端口 A/D 相应位作为外部中断输入 配置中断触发方式: INTLEVEL 寄存器 设置 0 端口 A/E 相应位电平触发方式 设置 1 端口 A/E 相应位边沿触发方式 50 SWM150 系列 6.6.3 寄存器映射 GPIOABC BASE:0x40001000 名称 偏移量 类型 复位值 ADATA 0x00 R/W 0x00 Port A 数据寄存器 ADIR 0x04 R/W 0x00 Port A 方向寄存器 REVERSED 0x08 — — BDATA 0x0C R/W 0x00 Port B 数据寄存器 BDIR 0x10 R/W 0x00 Port B 方向寄存器 REVERSED 0x14 — — CDATA 0x18 R/W 0x00 Port C 数据寄存器 CDIR 0x1C R/W 0x00 Port C 方向寄存器 REVERSED 0x20~ 0x2C — — INTEN_A 0x30 R/W 0x00 中断使能 INTMASK_A 0x34 R/W 0x00 中断屏蔽 INTLEVEL_A 0x38 R/W 0x00 中断触发方式 INTPOLARIT Y_A 0x3C R/W 0x00 中断触发极性 INTSTAT_A 0x40 RO 0x00 中断状态 RAWINTSTAT _A 0x44 RO 0x00 原始中断状态 REVERSED 0x48 — — 保留 INTEOI_A 0x4C WO — 对于边沿触发类型的中断,写 1 清 除相应的中断状态 AEXT 0x50 RO 0x00 Port A 外部数据寄存器 BEXT 0x54 RO 0x00 Port B 外部数据寄存器 CEXT 0x58 RO 0x00 Port C 外部数据寄存器 GPIOEF 描述 保留 保留 保留 BASE:0x40011000 名称 偏移量 类型 复位值 EDATA 0x00 R/W 0x00 Port E 数据寄存器 EDIR 0x04 R/W 0x00 Port E 方向寄存器 REVERSED 0x08 — — FDATA 0x0C R/W 0x00 Port F 数据寄存器 FDIR 0x10 R/W 0x00 Port F 方向寄存器 REVERSED 0x14~ 0x2C — — INTEN_E 0x30 R/W 0x00 中断使能 INTMASK_E 0x34 R/W 0x00 中断屏蔽 INTLEVEL_E 0x38 R/W 0x00 中断触发方式 INTPOLARIT Y_E 0x3C R/W 0x00 中断触发极性 51 描述 保留 保留 SWM150 系列 名称 偏移量 类型 复位值 描述 INTSTAT_E 0x40 RO 0x00 中断状态 RAWINTSTAT _E 0x44 RO 0x00 原始中断状态 REVERSED 0x48 — — 保留 INTEOI_E 0x4C WO — 对于边沿触发类型的中断,写 1 清 除相应的中断状态 EEXT 0x50 RO 0x00 Port E 外部数据寄存器 FEXT 0x54 RO 0x00 Port F 外部数据寄存器 6.6.4 寄存器描述 端口 X 数据寄存器 XDATA ADDR:0x40001000/0x4000100C/0x40001018/0x40011000/0x4001100C 位域 名称 类型 复位值 31:x REVERSED R 0 x:0 XDATA R/W 0x00 描述 保留位(x 为位宽) 当 Port X 数据方向寄存器相应位配置为输出模 式,且端口功能选择寄存器选择为 GPIO 功能, 则写入该寄存器的值将被输出到对应的 I/O 管脚 上。 读这个寄存器返回的是最近写入这个寄存器的 值。 端口 X 方向寄存器 XDIR ADDR:0x40001004/0x40001010/0x4000101C/0x40011004/0x40011010 位域 名称 类型 复位值 31:x REVERSED R 0 x:0 XDIR R/W 0x00 描述 保留位(x 为位宽) GPIO 数据方向 0:管脚为输入 1:管脚为输出 端口 X 中断使能寄存器 INTEN_X ADDR:0x40001030/0x40011030 位域 名称 类型 复位值 31:x REVERSED R 0 x:0 INTEN R/W 0x00 描述 保留位(x 为位宽) 0:Port X 相应位作为正常 GPIO 端口 1:Port X 相应位作为外部中断输入 端口 X 中断屏蔽寄存器 INTMASK_X ADDR:0x40001034/0x40011034 位域 名称 类型 复位值 31:x REVERSED R 0 描述 保留位(x 为位宽) 52 SWM150 系列 x:0 MASK R/W 0x00 0:Port X 相应位中断非屏蔽 1:Port X 相应位中断屏蔽 端口 X 中断触发方式寄存器 INTLEVEL_X ADDR:0x40001038/0x40011038 位域 名称 类型 复位值 31:x REVERSED R 0 x:0 LEVEL R/W 0x00 描述 保留位(x 为位宽) 0:Port X 相应位电平触发方式 1:Port X 相应位边沿触发方式 端口 X 中断触发极性寄存器 INTPOLARITY_X ADDR:0x4000103C/0x4001103C 位域 名称 类型 复位值 31:x REVERSED R 0 x:0 POLARITY R/W 0x00 描述 保留位(x 为位宽) 0:电平触发时,Port X 相应位中断为低电平触发 沿触发时,Port X 相应中断位为下降沿触发 1:电平触发时,Port X 相应位中断为高电平触发 沿触发时,Port X 相应位中断为上升沿触发 端口 X 中断状态寄存器 INTSTATUS_X ADDR:0x40001040/0x40011040 位域 名称 类型 复位值 31:x REVERSED R 0 x:0 STATUS RO 0x00 描述 保留位(x 为位宽) 屏蔽后的中断状态 0:Port X 相应位无中断发生 1:Port X 相应位有中断发生 端口 X 中原始中断状态寄存器 INTRAWSTATUS_X ADDR:0x40001044/0x40011044 位域 名称 类型 复位值 31:x REVERSED R 0 x:0 RAW STATUS RO 0x00 描述 保留位(x 为位宽) 未屏蔽前的中断状态 0:Port X 相应位无中断发生 1:Port X 相应位有中断发生 端口 X 中断清除寄存器 INTEOI_X ADDR:0x4000104C/0x4001104C 位域 名称 类型 复位值 描述 31:x REVERSED R 0 保留位(x 为位宽) x:0 EOI WO — 相应位写 1 清除相应位的中断状态 端口 X 外部寄存器 XEXT ADDR:0x40001050/0x40001054/0x40001058/0x40011050/0x40011054 53 SWM150 系列 位域 名称 类型 复位值 31:x REVERSED R 0 x:0 EXT RO 0x00 描述 保留位(x 为位宽) Port X 方向设置为输入状态,读此寄存器为 Port X 的输入数据 54 SWM150 系列 6.7 通用型定时器(TIMER) 6.7.1 特性  32 位向下计数定时器  具有两种操作模式:自由运行模式和用户定义模式  时间溢出周期 = (输入时钟周期)*(装载计数值)  可随时读取目前计数值 6.7.2 功能描述 芯片提供了 4 个独立 32 位定时(计数)器模块,以实现频率测量、计数、间隔延时等 功能。定时器向下递减计数,一旦计数为零可以产生中断。 每个定时器模块包括两个递减计数器、两个 32 位装载/初始化寄存器、两个当前计数值 寄存器和他们的相关的控制功能寄存器。定时器(计数器)的准确功能可由软件来控制,并 通过寄存器接口进行配置。 定时器模块复位后处于未激活状态,所有控制寄存器均被清零,同时进入默认状态。在 通过软件对定时器(计数器)进行配置时需用到控制寄存器(CTRL) 装载计数值寄存器 (LDCNT) 。 定时器从初始值向下计数,减到零触发定时器中断。两种情况会使得定时器从装载计数 值寄存器(LDCNT)重新装载初始化值:  定时器复位或禁止后使能  定时器计数减到零 初始化和配置 作为定时器使用时,必须先配置 SYSCTL 模块中 SYS_CFG_0 寄存器 BIT[29:26](见“系 统控制”章节)所对应的位,将定时器/计数器功能选择为定时器功能。 定时器、计数器的本质就是一个递减计数器,区别是计数脉冲的来源不同,当作为定时 器使用时,计数脉冲对象为 FCLK。当作为计数器使用时,计数脉冲对象来自对应引脚外接 信号,在使用计数器时,需要将对应的引脚复用切换至计数器功能。 自由运行模式 自由运行模式从 0xFFFFFFFF 开始减数,使用该模式务必将装载值寄存器设为 0Xffffffff。 用户定义模式 用户定义模式,用户可以自定义装载值寄存器的值,减到 0 后计数器再次装载此值。 55 SWM150 系列 6.7.3 寄存器映射 TIMER BASE:0x40012000+0x14*x(x=0,1,2,3) 名称 偏移量 类型 复位值 描述 LDCNT 0x00 R/W 0x00 装载值寄存器 CVAL 0x04 RO 0x00 当前计数值寄存器 CTRL 0x08 R/W 0x00 控制寄存器 EOI 0x0C RO 0x00 中断结束寄存器 INTS 0x10 RO 0x00 中断状态寄存器 6.7.4 寄存器描述 装载值寄存器 LDCNTx ADDR:0x40012000+0x14*x(x=0,1,2,3) 位域 名称 类型 复位值 31:0 LDCNT R/W 0x00 描述 写入这个寄存器的值用来初始化与之关联的 定时器的初始计数值。 用户模式下,定时器计数过程中更改该寄存 器的值,则计数器记到 0 后自动装载所更改 值并重新计数 当前计数值寄存器 CVALx ADDR:0x40012004+0x14*x(x=0,1,2,3) 位域 名称 类型 复位值 描述 31:0 CVAL RO — 模块使能后,读取该寄存器返回计数器当前 的值 控制寄存器 CTRL ADDR:0x40012008+0x14*x(x=0,1,2,3) 位域 名称 类型 复位值 描述 31:3 REVERSED — — 2 IM R/W 00 1 MODE R/W 0 0 EN R/W 0 保留 定时器中断屏蔽 0:非屏蔽 1:屏蔽 定时器模式 0:自由运行模式 1:用户定义计数模式 注:在使能自由运行模式前必须将 LDCNT 寄 存器的值所有位置 1 定时器使能 0:禁止 1:使能 56 SWM150 系列 中断结束寄存器 ADDR:0x4001200C+0x14*x(x=0,1,2,3) 位域 名称 类型 复位值 描述 31:1 REVERSED — — 保留 0 EOI RO 0 读这个寄存器返回的都是零,同时清除相关 定时器的中断 中断状态寄存器 ADDR:0x40012010+0x14*x(x=0,1,2,3) 位域 名称 类型 复位值 31:1 REVERSED — — 0 STAT RO 0 描述 保留 判断是否已触发中断 0:已触发中断 1:未触发中断 57 SWM150 系列 6.8 专用定时器(TIMERSE) 6.8.1 特性  32 位定时器/计数器功能  32 位 PWM 输出功能  脉冲及占空比捕捉功能 6.8.2 功能 Timer/counter 模式 配置模块控制寄存器(CTRL)中模式位 BIT[5:4],选择模式 0(00b) ,则模块被配置 为定时器/计数器模式,该模式提供了 32 位长度的计数寄存器,可按以下流程进行配置:  计数目标值。通过目标计数值寄存器(TARVAL)进行配置,写入 32 位目标计数 值,计数器递增至该值后一次计数结束  计数时钟源。可选择片内模块输入时钟或片外引脚输入时钟作为计数时钟源,通过 模块控制寄存器(CTRL)中 BIT[8]进行配置。 默认内部时钟  计数有效沿。通过模块控制寄存器(CTRL)中 BIT[16]进行配置,设置上升沿或 下降沿计数有效。默认上升沿有效  计数循环模式。通过模块控制寄存器(CTRL)中 BIT[28]进行配置,当配置为 0 时,为循环计数模式;配置为 1 时,为单次计数模式。默认循环模式  输出模式。配置为定时器或计数器时,模块控制寄存器(CTRL)BIT[13:12]可配 置输出模式。当配置为除“无输出”以外的模式时,可通过配置输出寄存器 (OUTPVAL)控制引脚输出电平。计数器计数过程中,引脚为保持状态。当一次 计数模式结束后,根据所配置的输出模式,电平发生变化。默认无输出模式  中断设置。可通过设置中断使能及中断屏蔽位,使能或禁能计数完成中断,中断标 志通过读取目标计数值寄存器(TARVAL)或当前值寄存器(CURVAL)清除。中 断未清除再次出现中断时,中断溢出标志位(INTFLAG)被置 1,通过读取目标计 数值寄存器(TARVAL)或当前值寄存器(CURVAL)清除  模块使能。通过模块控制寄存器(CTRL)中 BIT[0]进行配置 PWM 输出模式 配置模块控制寄存器(CTRL)中模式位 BIT[5:4],选择模式 1(01b) ,同时将 BIT[13:12] 配置为记到则相反(01b) ,则模块被配置为 PWM 模式。该模式提供了一个最大周期长度为 32 位的 PWM 模块,可按照以下流程进行配置:  计数时钟源。可选择片内模块输入时钟或片外引脚输入时钟作为 PWM 最小分辨率 长度单位,通过模块控制寄存器(CTRL)中 BIT[8]进行配置。默认内部时钟 58 SWM150 系列  计数有效沿。通过模块控制寄存器(CTRL)中 BIT[16]进行配置,设置上升沿或 下降沿计数有效。默认上升沿有效  初始输出电平。可通过配置输出寄存器(OUTPVAL)指定 PWM 初始输出电平。 默认初始输出为低电平  计数目标值。通过目标计数值寄存器(TARVAL)进行配置。该寄存器低 16 位为 PWM 初始电平长度,高 16 位为跳变后电平长度。(注:当配置为 PWM 模式时, 改寄存器高 16 位及低 16 位均不能为 0,即不能通过 PWM 模式实现单一电平)  中断设置。当电平发生跳变时,产生中断,可通过设置中断使能及中断屏蔽位,使 能或禁能中断  模块使能。通过模块控制寄存器(CTRL)中 BIT[0]进行配置  状态读取。通过读取当状态寄存器(MOD2LF)判断当前输出所处周期 Captur 模式 配置模块控制寄存器(CTRL)中模式位 BIT[5:4],选择模式 2(10b)或模式 3(11b) 时,模块配配置为 capture 模式,用于捕捉外部电平变化。 当配置为模式 2(10b)时,用于捕捉脉冲宽度,引脚出现指定外部电平变化沿(上升 或下降)时,触发计数,以内部时钟计,直至出现外部反向电平沿(下降或上升)后,一次 计数结束,产生中断,三个时钟周期后通过捕捉寄存器 2(CAPLH)给出计数值。读取该寄存 器可清除中断。中断未清除再次出现中断时,中断溢出标志位(INTFLAG)被置 1,通过读 取捕捉寄存器 2(CAP2)清除。 图 6-5 脉冲捕捉示意图 可按照以下流程进行配置:  计数有效沿。通过模块控制寄存器(CTRL)中 BIT[16]进行配置,设置外部上升 沿或下降沿起始计数。默认上升沿有效  计数循环模式。通过模块控制寄存器(CTRL)中 BIT[28]进行配置,当配置为 0 时,为循环计数模式;配置为 1 时,为单次计数模式。默认循环模式(注:循环模 式下,需要保证读取时间小于两次脉冲捕捉结束时间,以免数据丢失)  中断设置。当捕捉完成后,产生中断。可通过设置中断使能及中断屏蔽位,使能或 禁能中断  模块使能。通过模块控制寄存器(CTRL)中 BIT[0]进行配置 59 SWM150 系列 当配置为模式 2(11b)时,用于捕捉占空比宽度,引脚出现指定外部电平变化沿(上 升或下降)时,记为时间点 1,此时触发计数,以内部时钟计,直至出现外部反向电平变化 沿(下降或上升)后,记为时间点 2,继续计数,直至再次出现外部反向电平变化沿(上升 或下降) ,记为时间点 3,一次记录完成,触发中断,通过捕捉寄存器 2(CAPLH)给出时间点 1 至时间点 2 计数值,通过捕捉寄存器 1(CAPW)给出时间点 1 至时间点 3 计数值。读取捕 捉寄存器 2(CAPLH)或捕捉寄存器 1(CAPW)可清除中断。中断未清除再次出现中断时,中断 溢出标志位(INTFLAG)被置 1,通过读取捕捉寄存器 2(CAPLH)或捕捉寄存器 1(CAPW) 清除。 图 6-6 占空比捕捉示意图 可按照以下流程进行配置:  计数有效沿。通过模块控制寄存器(CTRL)中 BIT[16]进行配置,设置外部上升 沿或下降沿起始计数。默认上升沿有效  计数循环模式。通过模块控制寄存器(CTRL)中 BIT[28]进行配置,当配置为 0 时,为循环计数模式;配置为 1 时,为单次计数模式。默认循环模式(注:循环模 式下,需要保证读取时间小于两次脉冲捕捉结束时间,以免数据丢失)  中断设置。当捕捉完成后,产生中断。可通过设置中断使能及中断屏蔽位,使能或 禁能中断  模块使能。通过模块控制寄存器(CTRL)中 BIT[0]进行配置 6.8.3 寄存器映射 TIMERSE BASE:0x40002000 名称 偏移量 类型 复位值 描述 CTRL 0x00 R/W 0x00 模块控制寄存器 TARVAL 0x04 R/W 0x00 目标计数值寄存器 CURVAL 0x08 RO 0x00 当前计数值寄存器 CAPW 0x0C RO 0x00 捕捉寄存器 1 CAPLH 0x10 RO 0x00 捕捉寄存器 2 MOD2LF 0x14 RO 0x00 当前状态寄存器 REVERSED 0x18~0x 7C — — 保留 OUTPVAL 0x80 R/W 0x00 输出寄存器 INTCTL 0x84 R/W 0x00 中断控制寄存器 60 SWM150 系列 名称 偏移量 类型 复位值 描述 INTSTAT 0x88 RO 0x00 中断原始状态寄存器 INTMSKSTAT 0x8C RO 0x00 屏蔽后中断状态寄存器 INTFLAG 0x90 RO 0x00 中断溢出标志寄存器 6.8.4 寄存器描述 模块控制寄存器 CTRL ADDR:0x40002000 位域 名称 类型 复位值 31:29 REVERSED — — 28 LMOD R/W 0 27:17 REVERSED — — 16 TMOD R/W 0 15:14 REVERSED — — 13:12 OUTMOD R/W 0 11:9 REVERSED — — 8 OSCMOD R/W 0 7:6 REVERSED — — 5:4 WMOD R/W 0 3:1 REVERSED — — 0 EN R/W 0 描述 保留 循环模式选择 0:循环模式 保留 有效沿选择 0:上升沿有效 保留 输出模式选择 00:无输出 10:记到后置高 保留 时钟源选择 0:内部时钟 保留 工作模式选择 00:计数器模式 10:脉冲捕捉模式 保留 模块使能 0:模块禁能 1:单次模式 1:下降沿有效 01:记到后反向 11:记到后置低 1:外部时钟 01:PWM 模式 11:占空比捕捉模式 1:模块使能 目标计数值寄存器 TARVAL ADDR:0x40002004 位域 名称 类型 复位值 31:16 TARH R/W 0 15:0 TARL R/W 0 描述 模式 0/ 模式 2/ 模式 3 目标值高 16 位; 模式 1PWM 信号跳变后周期长度 模式 0/2/3 目标值低 16 位; 模式 1PWM 信号跳变前初始周期长度 当前计数值寄存器 CURVAL ADDR:0x40002008 位域 名称 类型 复位值 31:0 CURV R/W 0 描述 模式 0/ 模式 2/ 模式 3 当前计数值 61 SWM150 系列 捕捉寄存器 1 CAPW ADDR:0x4000200C 位域 名称 类型 复位值 31:0 CAPW RO 0 描述 模式 2 无意义 模式 3(占空比捕捉)总周期宽度(跳变沿 1 至跳变沿 3)计数值 捕捉寄存器 2 CAPLH ADDR:0x40002010 位域 名称 类型 复位值 31:0 CAPLH RO 0 描述 模式 2(脉冲捕捉)脉冲宽度周期计数值 模式 3(占空比捕捉)跳变沿 1 至跳变沿 2 周 期宽度计数值 当前状态寄存器 MOD2LF ADDR:0x40002014 位域 名称 类型 复位值 描述 31:1 REVERSED — — 0 MOD2LF RO 0 保留 模式 1(PWM)下状态 0:未发生电平翻转 1:已发生电平翻转 输出寄存器 OUTPVAL ADDR:0x40002080 位域 名称 类型 复位值 31:1 REVERSED — — 0 OUTPVAL R/W 0 描述 保留 TIMERSE_OUT 输出引脚电平 0:低电平 1:高电平 中断控制寄存器 INTCTL ADDR:0x40002084 位域 名称 类型 复位值 31:2 REVERSED — — 1 INTMSK 0 INTEN R/W 0 描述 保留 中断屏蔽信号 0:屏蔽 中断使能信号 0:禁能 1:未屏蔽 1:使能 原始中断状态寄存器 INTSTAT ADDR:0x40002088 位域 名称 类型 复位值 31:1 REVERSED — — 0 INTSTAT R/W 0 描述 保留 原始中断信号 0:未触发 62 1:已触发 SWM150 系列 原始中断状态寄存器 INTMSKSTAT ADDR:0x4000208C 位域 名称 类型 复位值 31:1 REVERSED — — 0 MSKSTAT R/W 0 描述 保留 屏蔽后中断信号 0:未触发 1:已触发 中断溢出寄存器 INTFLAG ADDR:0x40002090 位域 名称 类型 复位值 描述 31:1 REVERSED — — 0 INTFLAG R/W 0 保留 中断溢出信号,当已有中断未清除,再次发 生中断时,该位置 1 0:未溢出 1:溢出 63 SWM150 系列 6.9 看门狗定时器(WDT) 6.9.1 功能 看门狗定时器(WDT)主要用于控制程序流程正确,在程序流长时间未按既定流程执 行指定程序的情况下复位芯片。它具有两个工作模式,可触发中断或复位芯片。使能前,首 先写入超时周期值并初始化模块。使能后,当工作在模式 0(RMOD=0)时, WDT 将根据 系统时钟递减计数。在计数至 0 值时产生复位信号将系统复位。当工作在模式 1(RMOD=1) 时,WDT 会在第一次计数后置标志位、产生中断并再次装载超时周期值开始计数。当第二 次记至 0 值时,复位芯片。在 WDT 计数过程中对计数器重启寄存器进行写操作可使该模块 恢复至初始使能状态继续工作,从而延后复位发生的时间。通过不断将复位时间延后的行为 实现保证程序流正常工作的效果。 初始化和配置 配置 WDT 顺序如下:  设置所要计数的值,其中,TOP_INIT 为初始值(在 WDT 使能之前写入值) ,TOP 为超时后将要填装的值  写(CR 寄存器)配置 WDT 模式(系统复位模式或中断模式)  写(EN)使能 WDT 6.9.2 寄存器映射 WDT BASE:0x40019000 名称 偏移量 类型 复位值 描述 CR 0x00 R/W 0x00 WDT 控制寄存器 TORR 0x04 R/W 0x00 超时周期寄存器 CCVR 0x08 RO 0x00 当前计数器值寄存器 CRR 0x0c WO — 计数器重启寄存器 STAT 0x10 RO 0x00 中断状态寄存器 EOI 0x14 RO 0x00 中断清除寄存器 6.9.3 寄存器描述 WDT 控制寄存器(CR) ADDR: 0x40019000 位域 名称 类型 复位值 31:2 REVERSED — — 保留 1 RMOD R/W 0 设置超时事件发生时,响应模式。 0 : 产生一个系统复位 64 描述 SWM150 系列 0 EN R/W 0 1 :第一次超时发生,产生一个 WDT 中断。如果在第二次超时发生时,没有 中断没有被清除,就会产生一个系统复 位 使能 WDT 模块。系统复位后将变成默 认值。 0 :WDT 禁止 1 :WDT 使能 超时周期寄存器(TORR) ADDR: 0x40019004 位域 名称 类型 复位值 31:8 REVERSED — — 7:4 TOP_INIT R/W 0 3:0 TOP R/W 0 描述 保留 设置初始计数值 i,必须在 WDT 使能 之前设置 以下为设置值 i 所对应的计数值: 2(16+i) ( i 的范围为 0~15 ) 设置计数值,超时发生后将装入该值倒 以下为设置值 i 所对应的计数值: 2(16+i) ( i 的范围为 0~15 ) 当前计数器值寄存器(CCVR) ADDR: 0x40019008 位域 名称 类型 复位值 31:0 CCVR RO 0x00 描述 读操作返回当前计数器计数值 计数器重启寄存器(CRR) ADDR: 0x4001900C 位域 名称 类型 复位值 描述 31:8 REVERSED — — 保留 7:0 CRR WO — 写入 0x76 后重启计数器器,同时清除 中断(喂狗操作)。读返回 0 描述 中断状态寄存器(STAT) ADDR: 0x40019010 位域 名称 类型 复位值 31:1 REVERSED — — 保留 0 STAT RO 0 显示 WDT 中断状态,读操作返回如下 值: 1 :已产生中断,且未清除 65 SWM150 系列 0 :未产生中断或中断已清除 中断清除寄存器(EOI) ADDR: 0x40019014 位域 名称 类型 复位值 31:1 REVERSED — — 保留 0 EOI RO 0 读该位可清除 WDT 中断(计数器不重 启) 66 描述 SWM150 系列 6.10 UART 接口控制器(UART) 6.10.1 特性  独立的发送 FIFO 和接收 FIFO  FIFO 长度可编程,包括提供传统双缓冲接口的 1 字节深的操作  FIFO 触发深度可为:1/8、 1/4、 1/2、 3/4 或 7/8  可编程的波特率发生器允许速率高达 3.125 Mbps  标准的异步通信位:起始位、停止位和奇偶校验位(parity)  检测错误的起始位  线中止(Line-break)的产生和检测  完全可编程的串行接口特性:  5、 6、 7 或 8 个数据位  偶校验、奇校验、粘着或无奇偶校验位的产生/检测  产生 1 或 2 个停止位 6.10.2 功能 通用异步收发器 (UART) 具有完全可编程、16C550 型串行接口的特性。芯片具备 2 路 UART 端口,使用方式均相同。结构图如下图所示。 APB interface APB signal resetn sclk rx Reset block Register Block Baud clock generator APB signal int Sync block Serial receiver Serial transmotter 图 6-7 UART 结构图 67 tx SWM150 系列 UART(RS232)串行协议 由于串行通讯的双方是异步的,所以在串行数据的开始和结束处添加了开始和停止位 (start and stop bits)。这两位使得通讯双方在未共享时钟信号的情况下进行同步。一个完整 的串行数据结构被称作一个字符(character)。如下图所示: 图 6-8 串行数据格式 串行字符中最后一个数据位和停止位之间可以添加校验位,用于对接收的数据进行简单 的错误检查。 初始化和配置 UART 配置过程如下图所示: 关闭UART中断 复位接受及发送FIFO 设置控制寄存器 设置波特率 使能FIFO(可选) 中断使能(可选) UART接收及发送 图 6-9 UART 配置流程 6.10.3 寄存器映射 UARTn BASE: 0x40003000+0x10000*n(n 为端口值) 名称 偏移量 类型 复位值 RBR 0x00 RO 0x00 68 描述 接收缓冲寄存器,包含下一个要读 取的已接收字符 ( LCR bit[7] = 0 ) SWM150 系列 THR WO 0x00 DLL R/W 0x00 DLH R/W 0x00 IER R/W 0x00 IIR RO 0x01 WO 0x00 0x04 0x08 FCR LCR 0x0C R/W 0x00 REVERSED 0x10 — — LSR 0x14 RO 0x60 REVERSED 0x18 ~0x78 — — USR 0x7C RO 0x06 发送保持寄存器,用于写入下一个 要发送的字符 ( LCR bit[7] = 0 ) 除数锁存(Low)寄存器,存储波 特率除数值的最低有效字节 ( LCR bit[7] = 1 ) 除数锁存(High)寄存器,存储波 特率除数值的最高有效字节 ( LCR bit[7] = 1 ) 中断使能寄存器,包含 4 个 UART 中断对应的各个中断的使能位 ( LCR bit[7] = 0 ) 中断 ID 寄存器,识别等待处理的 中断,以及 FIFO 的状态 FIFO 控制寄存器,控制 FIFO 的状 态及模式 线控制寄存器,包含数据帧格式控 制,波特率除数锁存器的可配置使 能,以及一个断点控制位 保留 线状态寄存器,包含发送和接受的 状态标志位 保留 UART 状态寄存器,包含 UART FIFO 状态 6.10.4 寄存器描述 接收缓冲寄存器(RBR) ADDR:0x40003000+0x10000*n(n=0,1) 位域 名称 类型 复位值 描述 31:8 REVERSED — — 7:0 RBR RO 0x00 保留 如果使能 FIFO(FCR[0]置“1” ) ,该寄存器获取接 收 FIFO 中最早接收到的字节;如果接收 FIFO 已 满并且该寄存器在下一个字节到来之前没有被读 取,FIFO 中的数据将被保持,但任何新到来的数 据将丢失并产生溢出错误。 如果未使能 FIFO,寄存器在下一个数据到来之前 必须被读取,否则旧的数据将被覆盖并产生溢出错 误。 该寄存器中的数据只有在 LSR 寄存器 DR 位为 “1” 的时候有效。 发送保持寄存器(THR) ADDR:0x40003000+0x10000*n(n=0,1) 69 SWM150 系列 位域 名称 类型 复位值 描述 31:8 REVERSED — — 7:0 THR WO 0x00 保留 如果使能 FIFO(FCR[0]置“1”),在 FIFO 填满之 前,X 个字节的数据可被写到 THR。X 的大小由 FIFO 的深度决定。FIFO 满时还继续写数据会导致 数据丢失。 如果未使能 FIFO,向 THR 写数据将清除 LSR[5], 当 LSR[5]为“0”时,向 THR 写入数据将导致数 据被覆盖。 所以,数据应该在 LSR[5]被置“1”时写入 THR 除数锁存(LOW)寄存器(DLL) ADDR:0x40003000+0x10000*n(n=0,1) 位域 名称 类型 复位值 31:8 REVERSED — — 7:0 LOW R/W 0x00 描述 保留 除数锁存(Low)寄存器,存储波特率除数值的最 低有效字节 除数锁存(HIGH)寄存器(DLH) ADDR:0x40003004+0x10000*n(n=0,1) 位域 名称 类型 复位值 31:8 REVERSED — — 7:0 HIGH R/W 0x00 描述 保留 除数锁存(High)寄存器,存储波特率除数值的最 高有效字节 中断使能寄存器(IER) ADDR:0x40003004+0x10000*n(n=0,1) 位域 名称 类型 复位值 描述 31:8 REVERSED — — 7 PTIME R/W 0x00 保留 可编程发送保持寄存器空中断模式使能用于使能 或禁用发送保持寄存器空的中断。(中断判断条件 FIFO LEVEL>TX Empty Trigger?。同时线状态 THRE 由指示发送 FIFO 空转换为指示发送 FIFO 满。) 0 = 禁用 1 = 使能 6 :3 REVERSED — — 2 ELS R/W 0x00 1 ETBEI R/W 0x00 0 ERBFI R/W 0x00 保留 该位用于使能或禁用接收线状态中断。 0 = 禁用 1 = 使能 该位用于使能或禁用发送保持寄存器空中断 0 = 禁用 1 = 使能 该位用于使能或禁用接收数据可用中断 70 SWM150 系列 0 = 禁用 1 = 使能 中断标志寄存器(IIR) ADDR:0x40003008+0x10000*n(n=0,1) 位域 名称 类型 复位值 31:8 REVERSED — — 7:6 RBR RO 0x00 5:4 REVERSED — — 3:0 中断标志 RO 0x0 描述 保留 该位用于指示 FIFO 使能或禁用 00 = 禁用 11 = 使能 保留 中断标志,详细信息见中断处理表 0001 = 无中断 0010 = 发送保持寄存器空 0100 = 接收数据可用 0110 = 接收线状态 0111 = 忙监测(未使用) 1100 = 字符超时 IIR[3]指示只有在 FIFO 使能时才能触发的中断。 中断处理表 Bit3 中断标志 Bit2 Bit1 Bit0 优先 级 中断类型 中断源 中断复位 0 0 0 1 无 无 无 无 0 1 1 0 最高 接收线状态 溢出/校验/帧错误或 间隔中断 读线状态寄存器 0 1 0 0 其次 接收数据可 用 接收数据可用 读接收缓冲寄存 器 读接收缓冲寄存 器 读 IIR 寄存器或 写 THR 寄存器 1 1 0 0 其次 字符超时 RX FIFO 中至少有 一个字符,并且在最 近的 4 个字符时间内 没有字节输入输出 0 0 1 0 第三 发送保持寄 存器空 发送保持寄存器空 0 1 1 1 第四 忙监测 在 UART 忙时 读 UART 状态寄 (USR[0]被置“1” ) 存器 写线控制寄存器 FIFO 控制寄存器(FCR) ADDR:0x40003008+0x10000*n(n=0,1) 位域 名称 类型 复位值 描述 31:8 REVERSED — — 7:6 RBR RO 0x00 保留 如果使能 FIFO(FCR[0]置“1” ) ,该寄存器获取接 收 FIFO 中最早接收到的字节;如果接收 FIFO 已 满并且该寄存器在下一个字节到来之前没有被读 取,FIFO 中的数据将被保持,但任何新到来的数 据将丢失并产生溢出错误。 如果未使能 FIFO,寄存器在下一个数据到来之前 71 SWM150 系列 5:4 发送空触发 WO 0x00 3 REVERSED — — 2 TX FIFO 复 位 WO 0x00 1 RX FIFO 复 位 WO 0x00 0 FIFO 使能 WO 0x00 必须被读取,否则旧的数据将被覆盖并产生溢出错 误。 该寄存器中的数据只有在 LSR 寄存器 DR 位为 “1” 的时候有效。 这两个位决定了接收 UART TX FIFO 在激活中断 前剩余的字符数量。 00 = FIFO 空 01 = 2 个字节 10 = 4 个字节 11 = 8 个字节 保留 0:对两个 UART FIFO 均无影响 1:写 1 清零 UART Tx FIFO 中的所有字节,并复 位控制器部分和指针逻辑,该位自动清零 0:对两个 UART FIFO 均无影响 1:写 1 清零 UART Rx FIFO 中的所有字节,并复 位控制器部分和指针逻辑,该位自动清零 该位使能或禁用发送和接收 FIFO。当该位的值改 变时,FIFO 的控制器部分将被复位 线控制寄存器(LCR) ADDR:0x4000300C+0x10000*n(n=0,1) 位域 名称 类型 复位值 描述 31:8 REVERSED — — 7 DLAB R/W 0x00 6 BC R/W 0x00 5 REVERSED — — 4 EPS R/W 0x00 3 PEN R/W 0x00 2 STOP R/W 0x00 1:0 DLS R/W 0x00 保留 除数锁存读写使能位,任意时刻可读,UART 为非 忙状态(USR[0] = 0)时可写。该位用于使能除数锁 存寄存器(DLL 和 DLH)读写功能。 当该位置 1 时,DLL 和 DLH 寄存器可读写。设置 波特率完成后,该位必须被清 0,以保证其它寄存 器访问正确性 间隔控制: 0 = 禁用间隔传输 1 = 当被置为“1” ,强行使串行输出为逻辑“0” 保留 奇偶校验选择: 0 = 选择奇校验 1 = 选择偶校验 校验使能: 0 = 校验禁用 1= 校验使能 停止位设置: 0 = 1 bit 停止位 1 = 当 LCR[1:0]为 0 时是 1.5 bits,否则为 2 bits 字长度设置: 00 = 5 bits 01 = 6 bits 10 = 7 bits 72 SWM150 系列 11 = 8 bits 线状态寄存器(LSR) ADDR:0x40003014+0x10000*n(n=0,1) 位域 名称 类型 复位值 描述 31:8 REVERSED — — 7 RFE RO 0x00 6 TEMT RO 0x01 5 THRE RO 0x00 4 BI RO 0x00 3 FE RO 0x00 2 PE RO 0x00 1 OE RO 0x00 保留 接收 FIFO 错误位: 当一个带有 RX 错误(如:帧错误、校验错误或间 隔中断)的字符载入到 RBR 时,LSR[7]就会被置 位。当 U0LSR 寄存器被读取并且 UART FIFO 中 不再有错误时,该位就会清零。 0 = RBR 中没有 UART RX 错误或 FCR[0]=0 1 = RBR 包含至少一个 UART RX 错误 发送器空: 当 THR 和 TSR 同时为空时,TEMT 就会被设置; 而当 TSR 或 THR 任意一个包含有效数据时, TEMT 就会被清零。 0 = THR 和/或发送移位寄存器包含有效数据 1 = THR 和发送移位寄存器为空 发送保持寄存器空: 当检测到 UART THR 已空时,THRE 就会立即被 设置。写 THR 会清零 THRE。 0 = THR 包含有效数据 1 = THR 为空 间隔中断: 当串行输入线保持在逻辑“0”状态的时间大于开 始+数据+校验+停止的时间的总和的时候,该位被 置“1” 。读 LSR 清除该位。 0 = 无间隔中断 1 = 间隔中断 帧错误: 当接收字符的停止位为逻辑 0 时,就会发生帧错 误。使能 FIFO 时,当一个有帧错误的字符在 FIFO 顶时,该位被置位。当检测到有帧错误时,RX 会 尝试与数据重新同步,并假设错误的停止位实际是 一个超前的起始位。但即使没有出现帧错误,它也 无法假设下一个接收到的字符是正确的。读 LSR 清除该位。 0 = 无帧错误 1 = 帧错误 校验错误: 使能 FIFO 时,当一个有校验错误的字符到达 FIFO 顶时,该位被置位。当有间隔中断发生时,该位被 置位。读 LSR 清除该位。 0 = 无校验错误 1 = 校验错误 溢出错误: 一旦发生错误,就设置溢出错误条件。读 LSR 会 73 SWM150 系列 0 DR RO 0x00 清零 LSR[1]。当 UART 接收移位寄存器已有新的 字符就绪,而 UART RBR FIFO 已满时 LSR[1]会 置位。 此时, UART 接收 FIFO 将不会被覆盖, UART 接收移位寄存器内的字符将会丢失 0 = 无溢出错误 1 = 溢出错误 接收数据就绪: 用于指示接收缓冲寄存器或接收 FIFO 中至少有一 个字符。 0 = 无数据准备好 1 = 数据准备好 在 FIFO 禁用时,读取 RBR 或 FIFO 使能时,FIFO 空会清除该位。 UART 状态寄存器(USR) ADDR:0x4000307C+0x10000*n(n=0,1) 位域 名称 类型 复位值 描述 31:8 REVERSED — — 7:0 BUSY RO 0x00 保留 该位用于指示 UART 是否处在忙或者空闲状态。 00 = UART 空闲或不活跃 11 = UART 忙 74 SWM150 系列 6.11 串行外设接口(SPI)控制器 6.11.1 特性  时钟位速率可编程,最高可达芯片主时钟速率 1/2  独立的发送和接收 FIFO,16 位宽,8 个单元深  SPI、Microwire 或者 SSP 的操作可编程  数据帧大小可编程,范围为 4~16 位  内部回送测试(loopback test)模式,可进行诊断/调试测试 6.11.2 功能 芯片提供的同步串行接口 (SSI)模块可与具有 SPI、Microwire、SSP 协议接口的外设器 件进行同步串行通信。 SSI 对从外设器件接收到的数据执行串行到并行转换。CPU 访问数据、控制和状态信息。 发送和接收路径利用内部 FIFO 存储单元进行缓冲,该 FIFO 可在发送和接收模式下独立存 储多达 8 个 16 位值。 位速率的产生 SSI 包含一个可编程的位速率时钟分频器来生成串行输出时钟。串行位速率通过设置 BAUD 寄存器对输入时钟进行分频来获得。分频值的范围为 2~65534 的偶数值。计算公式 如下 Fsclk_out = FHCLK/SCKDIV。 FIFO 操作 发送 FIFO:通用发送 FIFO 是一个 16 位宽、8 单元深、先进先出的存储缓冲区。通过 写数据 (DATA)寄存器来将数据写入发送 FIFO,数据在由发送逻辑读出之前一直保存在发 送 FIFO 中。当 SSI 配置为主机时,并行数据在进行串行转换并通过 SDO 管脚分别发送到 相关的从机之前先写入发送 FIFO。 接收 FIFO:通用接收 FIFO 是一个 16 位宽、8 单元深、先进先出的存储缓冲区。从串 行接口接收到的数据在读出之前一直保存在缓冲区中,通过读 DATA 寄存器来访问读 FIFO。 当 SSI 配置为主机时, 从 SDI 管脚接收到的串行数据在分别并行加载到相关的主机接收 FIFO 之前先进行记录。 中断 SSI 可在出现下列情况时产生中断:  多主竞争中断  接收 FIFO 满中断  接收 FIFO 上溢中断 75 SWM150 系列  接收 FIFO 下溢中断  发送 FIFO 上溢中断  发送 FIFO 空中断 所有中断事件在发送到中断控制器之前要先执行“或”操作,因此,在任何给定的时刻 SSI 只能向控制器发送一个中断请求。在 6 个可单独屏蔽的中断中,每个都可以通过置位 SSI 中断屏蔽 (INTMASK)寄存器中适当的位来屏蔽。将适当的屏蔽位置 1 可使能中断。 SSI 提供单独的输出和组合的中断输出,这样,允许使用全局中断服务程序或组合的器 件驱动程序来处理中断。发送和接收动态数据流的中断与状态中断是分开的,因此,可以根 据 FIFO 的触发深度对数据执行读和写操作。各个中断源的状态可从 SSI 原始中断状态 (RAWINTSTAT)和 SSI 屏蔽后的中断状态(INTSTAT)寄存器中读取。 帧格式 根据所设置的数据大小, 每个数据帧的长度均在 4~16 位之间,并且从最高有效位(MSB) 开始发送。此处,有 3 种基本的帧类型可供选择:  SPI  Microwire  SSP 对于上述 3 种帧格式,串行时钟(SCLK)在 SSI 空闲时保持不活动状态,只有当数据的 发送或接收处于活动状态时,SCLK 才在设置好的频率下工作。 对于 SPI 和 Microwire 这两种帧格式,从选择(SS)管脚为低电平有效,并在整个帧的 传输过程中保持有效(被下拉) 。 而对于 SSP 帧格式,在发送每个帧之前,SS 管脚会发出一个以上升沿开始并持续一个 时钟周期的脉冲。在这种帧格式中,SSI 和片外从器件在 SCLK 的上升沿驱动各自的输出数 据,并在下降沿锁存另一个器件的数据。 不同于其它两种全双工传输的帧格式,在半双工下工作的 Microwire 格式使用特殊的主 -从消息技术。在该模式中,当帧开始传输时向片外从机发送预先定义好位数的控制消息。 在发送过程中,SSI 不会接收到任何输入数据。在消息发送完毕之后,片外从机对消息进行 译码,并在控制消息的最后一位发送完成之后等待一个串行时钟周期,之后以请求的数据来 响应。返回的数据,其长度在 4~16 位之间,这样,无论在何处,总的帧长度都在 13~25 位之间。 SPI SPI 接口是一个 4 线接口, 其中 ss_n 信号用作从机选择。SPI 格式的主要特性为: sclk_out 信号的不活动状态和相位均通过 CTRLR0 控制寄存器中的 SCPOL 和 SCPH 位来设置。 SCPOL 时钟极性位 当 SCPOL = 0,它在 sclk_out 管脚上产生稳定的低电平值。如果 SCPOL 位为高,则在 没有进行数据传输的情况下,它在 sclk_out 管脚上产生一个稳定的高电平值。 76 SWM150 系列 SCPH 相位控制位 SCPH 相位控制位用来选择捕获数据的时钟边沿并允许边沿改变状态。SCPH 在第一个 传输位上的影响最大,因为它可以在第一个数据捕获边沿之前允许或不允许一次时钟转换。 当 SCPH = 0,在第一个时钟边沿转换时捕获数据。如果 SCPH = 1,则在第二个时钟边沿转 换时捕获数据。 图 6-10 SPI 单个数据传输帧格式(SCPH=0) 图 6-11 SPI 连续数据传输帧格式(SCPH=0) 在上述配置中(SCPH = 0),当 SSI 处于空闲周期时:  如果 SCPOL=0 时 sclk_out 被强制变为低电平,SCPOL=1 时 sclk_out 被强制变为 高电平  ss_n 被强制变为高电平  发送数据线 txd 被强制变为低电平  当 SSI 配置为主机时,使能 sclk_out 端口。  当 SSI 配置为从机时,禁止 sclk_out 端口 如果 SSI 使能并且在发送 FIFO 中含有有效的数据,则通过将 ss_n 主机信号驱动为低电 平表示发送操作开始。这使得从机数据能够放在主机的 rxd 输入线上。主机 txd 输出端口使 能。 在半个 sclk_out 周期之后,有效的主机数据传输到 txd 管脚。既然主机和从机数据都已 设置好,则在下半个 sclk_out 周期之后,sclk_out 主机时钟管脚变为高电平/低电平。 77 SWM150 系列 这时,如果 SCPOL=0,数据在 sclk_out 信号的上升沿被捕获,在 sclk_out 的下降沿进 行传输。如果 SCPOL=1,数据在 sclk_out 信号的下降沿被捕获,在 sclk_out 的上升沿进行 传输。 如果传输一个字,则在数据字的所有位都已传输完之后,ss_n 线在捕获到最后一个位之 后的一个 sclk_out 周期返回到其空闲的高电平/低电平状态。 在连续的背对背传输中,ss_n 信号必须在每次数据字的传输之间保持高电平。因为当 SCPH 位为逻辑 0 时,从机选择管脚将冻结串行外设寄存器中的数据,使其不能修改。因此, 主器件必须在每次数据传输之间将从器件的 ss_n 管脚拉高,以便使能串行外设的数据写操 作。当连续传输完成时,ss_n 管脚将在捕获到最后一位之后的一个 sclk_out 周期返回到其空 闲的高电平/低电平状态。 图 6-12 SPI 单个数据传输帧格式(SCPH=1) 图 6-13 SPI 连续数据传输帧格式(SCPH=1) 在上述配置中,当 SSI 处于空闲周期时:  如果 SCPOL=0 时 sclk_out 被强制变为低电平,SCPOL=1 时 sclk_out 被强制变为 高电平  ss_n 被强制变为高电平  发送数据线 txd 被强制变为低电平  当 SSI 配置为主机时,使能 sclk_out 端口。 78 SWM150 系列  当 SSI 配置为从机时,禁止 sclk_out 端口 如果 SSI 使能并且在发送 FIFO 中含有有效的数据,则通过将 ss_n 主机信号驱动为低电 平表示发送操作开始。主机 txd 输出被使能。在后半个 sclk_out 周期之后,主机和从机有效 数据能够放在各自的传输线上。同时,利用一个上升沿/下降沿跳变将 sclk_out 使能。 这时,如果 SCPOL=0,数据在 sclk_out 信号的上升沿被捕获,在 sclk_out 的下降沿进 行传输。如果 SCPOL=1,数据在 sclk_out 信号的下降沿被捕获,在 sclk_out 的上升沿进行 传输。 如果传输一个字,则在所有位传输完之后,ss_n 线在捕获到最后一个位之后的一个 sclk_out 周期返回到其空闲的高电平/低电平状态。 Microwire 图 6-14 Microwire 不连续数据传输帧格式(不连续读数据) 在 MICROWIRE 模式中,当 ss_n 变为低电平之后,SSI 从机在 sclk_out 的上升沿时刻 对接收数据的第一个位进行采样。用来驱动自由运行的 sclk_out 的主机必须确保 ss_n 信号 相对于 sclk_out 的上升沿具有足够的建立时间和保持时间裕量(setup and hold margins) 。 图 6-15 Microwire 连续数据传输帧格式(连续读数据) 在上述配置中,当 SSI 处于空闲周期时:  sclk_out 被强制变为低电平  ss_n 变为高电平  发送数据线 txd 被强制变为低电平 通过向发送 FIFO 写入一个控制字节可以触发一次传输。在 ss_n 的下降沿,发送 FIFO 底部入口包含的值被传输到发送逻辑的串行移位寄存器中,而 1 - 16 位控制帧的 MSB 被移 出到 txd 管脚上。在该控制帧的传输期间 ss_n 保持低电平。rxd 管脚保持三态。 79 SWM150 系列 片外串行从器件在每个 sclk_out 的上升沿处将每个控制位锁存到其串行移位器中。在将 最后一位锁存之后,从器件在一个时钟周期的等待状态期间对控制字节进行译码,并且从机 通过将数据发送回 SSI 来响应。每个数据位在 sclk_out 的下降沿时刻被驱动到 rxd 线上。SSI 在 sclk_out 的上升沿时依次将每个位锁存。在帧传输结束时,对于单次传输, ss_n 信号在最 后一位已锁存到接收串行移位器之后的一个时钟周期被拉为高电平,这使得数据传输到接收 FIFO 中。 注: 在接收移位器将 LSB 锁存之后的 ss_n 的下降沿上或在 ss_n 管脚变为高电平时, 片外从器件能够将接收线置为三态。 对于连续传输,数据传输的开始与结束与单次传输相同。但 ss_n 线持续有效(保持低 电平),并且数据传输以背对背(back-to-back)方式产生。在从当前帧接收到数据的最低有效 位(LSB)之后紧跟着下一帧的控制字节。在当前帧的 LSB 锁存到 SSI 之后,所接收到的 每个值在 sclk_out 的下降沿时刻从接收移位器中进行传输。 图 6-16 Microwire 单个数据传输帧格式(写数据) SSP 图 6-17 SSP 单个数据传输帧格式 图 6-18 SSP 多个数据连续传输帧格式 80 SWM150 系列 初始化和配置           设置协议模式: CTRL0 寄存器 bit 5 到 bit4 FRF 位 设置为 00 SPI 帧格式 设置为 01 SSP 帧格式 设置为 10 Microwire 帧格式 设置移位寄存器回环: CTRL0 寄存器 bit11 SRL 位 设置为 0 正常模式 设置为 1 测试模式 设置传输模式: CTRL0 寄存器 bit9 到 bit8 TMOD 位 设置为 00 发送和接收 设置为 01 只发送 设置为 10 只接收 设置为 11 读 EEPROM 设置串行时钟极性: CTRL0 寄存器 bit7 SCPOL 位 设置为 0 SPI 控制器使总线时钟在两帧传输之间保持低电平 设置为 1 SPI 控制器使总线时钟在两帧传输之间保持高电平 设置串行时钟相位: CTRL0 寄存器 bit6 SCPH 位 设置为 0 在第一个时钟边沿转换时捕获数据 设置为 1 在第二个时钟边沿转换时捕获数据 设置数据帧长度: CTRL0 寄存器 bit3 到 bit0 DFS 位 设置 0011 — 1111 分别为 4-bit — 16-bit 数据长度 设置 Microwire 控制字长度: CTRL0 寄存器 bit15 到 bit12 CFS 位 设置 0000 — 1111 分别为 0-bit — 16-bit 控制字长度 设置 Microwire 握手: MWCR 寄存器 bit2 MHS 位 设置为 0 禁止握手接口 设置为 1 使能握手接口 设置 Microwire 数据方向: MWCR 寄存器 bit1 MDD 位 设置为 0 接收 设置为 1 发送 设置 SSI 时钟分频值: BAUDR 寄存器 bit15 到 bit0 SCKDV 位 ssi_clk = HCLK/SCKDV(寄存器值为对应分頻值) 81 SWM150 系列 6.11.3 寄存器映射 SPI BASE:0x40004000 名称 偏移量 类型 复位值 描述 CTRL0 0x00 R/W 0x07 控制寄存器 0 CTRL1 0x04 R/W 0x00 控制寄存器 1 SSIEN 0x08 R/W 0x00 SSI 使能寄存器 MWCTRL 0x0C R/W 0x00 Mircrowire 控制寄存器 SEN 0x10 R/W 0x00 从使能寄存器 BAUD 0x14 R/W 0x00 波特率寄存器 TXFTLR 0x18 R/W 0x00 发送 FIFO 阀值寄存器 RXFTLR 0x1C R/W 0x00 接收 FIFO 阀值寄存器 TXFLR 0x20 R/W 0x00 发送 FIFO 数量寄存器 RXFLR 0x24 R/W 0x00 接收 FIFO 数量寄存器 STAT 0x28 R/W 0x6 状态寄存器 INTMASK 0x2C R/W 0x3F 中断屏蔽寄存器 INTSTAT 0x30 R/W 0x00 中断状态寄存器 RAWINTSTAT 0x34 R/W 0x00 原始中断状态寄存器 TXOICLR 0x38 R/W 0x00 发送 FIFO 上溢中断清除寄存器 RXOICLR 0x3C R/W 0x00 接收 FIFO 上溢中断清除寄存器 RXUICLR 0x40 R/W 0x00 接收 FIFO 下溢中断清除寄存器 MSTICLR 0x44 R/W 0x00 多主中断清除寄存器寄存器 INTCLR 0x48 R/W 0x00 中断清除寄存器 RESERVED 0x4C0x5C R/W 0x00 保留 DATA 0x600x9C R/W 0x00 数据寄存器 6.11.4 寄存器描述 控制寄存器 0(CTRL0) ADDR: 0x40004000 位域 名称 类型 复位值 31:16 REVERSED — — 保留 15:12 CFS R/W 0 控制帧长度 Microwire 协议控制帧长度 移位寄存器回环 仅用于测试模式。置位后将发送移位寄存器输 出连接到接收移位寄存器的输入。 0:正常模式 1:测试模式 11 SRL R/W 0 10 REVERSED — — 描述 保留 82 SWM150 系列 位域 9:8 7 6 5:4 3:0 名称 TMOD SCPOL SCPH FRF DFS 类型 R/W R/W R/W R/W R/W 复位值 描述 0 传输模式 00:传输和接收 01:仅传输 10:仅接收 11:EEPROM 读 0 串行时钟极性 该位只用于 SPI 模式。 0:SPI 控制器使总线时钟在两帧传输之间保持 低电平 1:SPI 控制器使总线时钟在两帧传输之间保持 高电平 0 串行时钟相位 该位只用于 SPI 模式 0:在串行同步时钟的第二个跳变沿(上升或 下降)数据被采样 1:在串行同步时钟的第一个跳变沿(上升或 下降)数据被采样 0 帧格式 00:SPI 01:SSP 10:Microwire 11:保留 0x7 数据帧长度,规则如下: 0000/0001/0010:保留 0011: 4-bit 0100:5-bit 0110: 7-bit 0111:8-bit 1001: 10-bit 1010:11-bit 1100: 13-bit 1101:14-bit 1111: 16-bit 0101:6-bit 1000:9-bit 1011:12-bit 1110:15-bit 控制寄存器 1(CTRL1) ADDR: 0x40004004 位域 名称 类型 复位值 31:16 REVERSED — — 15:0 NDF R/W 0x00 描述 保留 数据帧数 当 TMOD=10 时,连续接收数据帧的数目 SSI 使能寄存器(SSIEN) ADDR: 0x40004008 位域 名称 类型 复位值 31:1 REVERSED — — 描述 保留 83 SWM150 系列 位域 0 名称 EN 类型 R/W 复位值 0x00 描述 SSI 使能 0:禁止 SSI 模块 1:使能 SSI 模块 Microwire 控制寄存器(MWCTRL) ADDR: 0x4000400C 位域 名称 类型 复位值 31:3 REVERSED — — 保留 0 Microwire 握手 0:禁止握手接口 1:使能握手接口 0 Microwire 数据方向 0:接收 1:发送 0 Microwire 传输模式 0:非顺序传输 1:顺序传输 2 1 0 MHS MDD MWMOD R/W R/W R/W 描述 SSI 从使能寄存器(SEN) ADDR: 0x40004010 位域 名称 类型 复位值 31:1 REVERSED — — 保留 R/W 0 SSI 从选择使能(发送或接受数据前必须先使 能该位) 0:未使能 1:使能 描述 0 SE 描述 波特率(BAUD) ADDR: 0x40004014 位域 名称 类型 复位值 31:1 REVERSED — — 0 SCKDIV R/W 0x00 保留 SSI 时钟分频 FSCLK_OUT = FHCLK/SCKDIV 传输 FIFO 阀值寄存器(TXFTL) ADDR: 0x40004018 位域 名称 类型 复位值 31:3 REVERSED — — 描述 保留 84 SWM150 系列 位域 2:0 名称 TFT 类型 R/W 复位值 描述 0x00 传输 FIFO 阀值,达到设置值后触发中断,设 置值与 FIFO 数据数量对应值如下: 000: 0 个 001: 1 个 010: 2 个 011: 3 个 100: 4 个 101: 5 个 110: 6 个 111: 7 个 接收 FIFO 阀值寄存器(RXFTL) ADDR: 0x4000401C 位域 名称 类型 复位值 31:3 REVERSED — — 2:0 RFT R/W 0x00 描述 保留 接收 FIFO 阀值,达到设置值后触发中断,设 置值与 FIFO 数据数量对应值如下: 000: 0 个 001: 1 个 010: 2 个 011: 3 个 100: 4 个 101: 5 个 110: 6 个 111: 7 个 传输 FIFO 数量寄存器(TXFL) ADDR: 0x40004020 位域 名称 类型 复位值 31:3 REVERSED — — 2:0 TXTFL R/W 0x00 描述 保留 传输 FIFO 数量 传输 FIFO 中包含的可用数据条目的数量 接收 FIFO 数量寄存器(RXFL) ADDR: 0x40004024 位域 名称 类型 复位值 31:3 REVERSED — — 2:0 RXTFL R/W 0x00 描述 保留 接收 FIFO 数量 接收 FIFO 中包含的可用数据条目的数量 状态寄存器(STAT) ADDR: 0x40004028 位域 名称 类型 复位值 31:7 REVERSED — — 6 DCOL RO 0 5 TXE RO 0 4 RFF RO 0 描述 保留 数据冲突错误 0:没有错误 1:传输数据冲突错误 传输错误 0:没有错误 1:传输错误 接收 FIFO 满 0:接收 FIFO 不满 1:接收 FIFO 满 85 SWM150 系列 位域 名称 类型 复位值 3 RFNE RO 0 2 TFE RO 1 1 TFNF RO 1 0 BUSY RO 0 描述 接收 FIFO 不空 0:接收 FIFO 空 1:接收 FIFO 不空 传输 FIFO 空 0:传输 FIFO 不空 1:传输 FIFO 空 传输 FIFO 不空 0:传输 FIFO 满 1:传输 FIFO 不空 SSI 忙标志 0:SSI 模块空闲状态或者被禁止 1:SSI 模块正在传输数据 中断屏蔽寄存器(INTMASK) ADDR: 0x4000402C 位域 名称 类型 复位值 31:6 REVERSED — — 5 MSTIM R/W 1 4 RXFIM R/W 1 3 RXOIM R/W 1 2 RXUIM R/W 1 1 TXOIM R/W 1 0 TXEIM R/W 1 描述 保留 多主竞争中断屏蔽 0:中断屏蔽 1:中断非屏蔽 接收 FIFO 满中断屏蔽 0:中断屏蔽 1:中断非屏蔽 接收 FIFO 上溢中断屏蔽 0:中断屏蔽 1:中断非屏蔽 接收 FIFO 下溢中断屏蔽 0:中断屏蔽 1:中断非屏蔽 传输 FIFO 上溢中断屏蔽 0:中断屏蔽 1:中断非屏蔽 传输 FIFO 空中断屏蔽 0:中断屏蔽 1:中断非屏蔽 中断状态寄存器(INTSTAT) ADDR: 0x40004030 位域 名称 类型 复位值 31:6 REVERSED — — 5 MSTIS RO 0 4 RXFIS RO 0 描述 保留 多主竞争中断状态 0:中断屏蔽后中断未发生 1:中断屏蔽后中断发生 接收 FIFO 满中断状态 0:中断屏蔽后中断未发生 1:中断屏蔽后中断发生 86 SWM150 系列 位域 名称 类型 复位值 3 RXOIS RO 0 2 RXUIS RO 0 1 TXOIS RO 0 0 TXEIS RO 0 描述 接收 FIFO 上溢中断状态 0:中断屏蔽后中断未发生 1:中断屏蔽后中断发生 接收 FIFO 下溢中断状态 0:中断屏蔽后中断未发生 1:中断屏蔽后中断发生 传输 FIFO 上溢中断状态 0:中断屏蔽后中断未发生 1:中断屏蔽后中断发生 传输 FIFO 空中断状态 0:中断屏蔽后中断未发生 1:中断屏蔽后中断发生 原始中断状态寄存器(RAWINTSTAT) ADDR: 0x40004034 位域 名称 类型 复位值 31:6 REVERSED — — 5 MSTIR RO 0 4 RXFIR RO 0 3 RXOIR RO 0 2 RXUIR RO 0 1 TXOIR RO 0 0 TXEIR RO 0 描述 保留 多主竞争中断状态 0:中断屏蔽前中断未发生 1:中断屏蔽前中断发生 接收 FIFO 满中断状态 0:中断屏蔽前中断未发生 1:中断屏蔽前中断发生 接收 FIFO 上溢中断状态 0:中断屏蔽前中断未发生 1:中断屏蔽前中断发生 接收 FIFO 下溢中断状态 0:中断屏蔽前中断未发生 1:中断屏蔽前中断发生 传输 FIFO 上溢中断状态 0:中断屏蔽前中断未发生 1:中断屏蔽前中断发生 传输 FIFO 空中断状态 0:中断屏蔽前中断未发生 1:中断屏蔽前中断发生 传输 FIFO 上溢中断清除寄存器(TXOICLR) ADDR: 0x40004038 位域 名称 类型 复位值 描述 31:1 REVERSED — — 0 TXOIC RO 0 保留 清除传输 FIFO 上溢中断 读该寄存器清除传输 FIFO 上溢中断,写操作 无效 接收 FIFO 上溢中断清除寄存器(RXOICLR) ADDR: 0x4000403C 87 SWM150 系列 位域 名称 类型 复位值 描述 31:1 REVERSED — — 0 RXOIC RO 0 保留 清除接收 FIFO 上溢中断 读该寄存器清除接收 FIFO 上溢中断,写操作 无效 接收 FIFO 下溢中断清除寄存器(RXUICLR) ADDR: 0x40004040 位域 名称 类型 复位值 描述 31:1 REVERSED — — 0 RXUIC RO 0 保留 清除接收 FIFO 下溢中断 读该寄存器清除接收 FIFO 下溢中断,写操作 无效 多主竞争中断清除寄存器(MSTICLR) ADDR: 0x40004044 位域 名称 类型 复位值 31:1 REVERSED — — 0 MSTIC RO 0 描述 保留 清除多主竞争中断 读该寄存器清除多主竞争中断,写操作无效 中断清除寄存器(INTCLR) ADDR: 0x40004048 位域 名称 类型 复位值 描述 31:1 REVERSED — — 0 IC RO 0x00 保留 清除中断 读该寄存器清除 TXO,RXU,RXO 和 MST 中断,写操作无效 数据寄存器(DATA) ADDR: 0x40004060 位域 名称 类型 复位值 31:16 REVERSED — — 15:0 DR RO 0x00 描述 保留 数据寄存器 读操作:读取接收 FIFO 缓冲区数据 写操作:向发送 FIFO 缓冲区写数据 88 SWM150 系列 6.12 脉冲宽度调制(PWM)发生器 6.12.1 特性  3 组 PWM 发生器,产生 6 路 PWM 信号  灵活的 PWM 产生方法  自带死区发生器  灵活可控的输出控制模块  丰富的中断机制和 ADC 触发 6.12.2 功能 脉宽调制(PWM)为一种对模拟信号电平进行数字化编码的方法。在脉宽调制中使用 高分辨率计数器来产生方波,通过调整方波的占空比来对模拟信号电平进行编码,通常使用 在开关电源和电机控制中。 PWM 模块由 3 路 PWM 发生器模块 1 组控制模块组成。每路 PWM 发生器模块包含 1 组 PWM 信号发生器,死区发生器和中断/ADC-触发 选择器。而控制模块决定了 PWM 信号 的极性,以及将哪个信号传递到管脚。每组 PWM 发生器模块产生两路 PWM 信号,此两路 PWM 信号可以是独立的信号,也可以是一对插入了死区延迟的互补信号。这些 PWM 发生 模块的输出信号在传递到器件管脚之前由输出控制模块管理。 PWM 模块具有较强的灵活性,可以产生简单的 PWM 信号,也可以产生带死区延迟的 成对 PWM 信号,如供 H 桥驱动电路使用的信号。3 个发生器模块也可产生 3 相全桥所需的 完整 6 通道门控。 PWM 模块每组 PWM 发生器都有一个 16 位定时器,两个比较器,可以产生两路 PWM。 在 PWM 发生器运作时,定时器在不断计数并和两个比较器的值进行比较,可以在和 比较器相等时或者定时器计数值为零、为装载值时对输出的 PWM 产生影响。结构如下图 所示: 89 SWM150 系列 PWM0HCYCA PWM0CYCA pwm_interrupt_ generator_0_a PWM0HOVERI_A PWM0COVERI_A PWMENABLE[0] PWM0DBRISE PWM0MOD pwm_generator_0_a PWM0_ OUT_A 中心对称 dead_zone_ generator_0 互补 普通 pwm_generator_0_b PWM0_ OUT_B PWM0DBFALL PWM0HCYCB PWM0CYCB PWMENABLE[1] pwm_interrupt_ generator_0_b PWM0HOVERI_B PWM0COVERI_B 图 6-19 PWM 结构示意图 PWM 定时器 PWM 定时器输出 3 个信号,这些信号在生成 PWM 信号的过程中使用。一个是方向 信号(在递减计数模式中,该信号始终为低电平,在先递增后递减计数模式中,则是在高低 电平之间切换) 。另外两个信号为零脉冲和装载脉冲。当计数器计数值为 0 时,零脉冲信 号发出一个宽度等于时钟周期的高电平脉冲;当计数器计数值等于装载值时,装载脉冲也发 出一个宽度等于时钟周期的高电平脉冲。 PWM 比较器 PWM 发生器含两个比较器, 用于监控计数器的值。 当比较器的值与计数器的值相等 时,比较器输出宽度为单时钟周期的高电平脉冲。在先递增后递减计数模式中,比较器在递 增和递减计数时都要进行比较,因此必须通过计数器的方向信号来限定。这些限定脉冲在生 成 PWM 信号的过程中使用。如果任一比较器的值大于计数器的装载值,则该比较器永远 不会输出高电平脉冲。 死区发生器 死区发生器仅在互补模式下有效。互补模式下,两路 PWM 信号为一组,丢弃第二路 PWM 信号,并在第一路 PWM 信号基础上产生第二路 PWM 信号,两路信号为互补输出。 从 PWM 发生器产生的两路 PWM 信号被传递到死区发生器。如果死区发生器禁能,则 PWM 信号只简单地通过该模块,不会发生改变。如果死区发生器使能,则可在第一路 PWM 信号 上升沿(前死区)或第二路 PWM 信号上升沿(后死区)产生延迟(也可同时产生),延迟 时间可通过配置 PWMxDBRISE 及 PWMxDBFALL 寄存器进行更改。死区示意图如下图所 示(阴影部分代表死区) 。 90 SWM150 系列 图 6-20 死区发生示意图 PWMA 和 PWMB 是一对高电平有效的信号,并且其中一个信号总是为高电平。但在跳 变处的那段可编程延迟时间除外,都为低电平。这样这两个信号便可用来驱动半 -H 桥 (half-H bridge) , 又由于它们带有死区延迟,因而还可以避免冲过电流(shoot through current) 破坏电力功率器件。 输出控制模块 PWM 发生器模块产生的是两路原始的 PWM 信号,输出控制模块在 PWM 信号进入芯 片管脚之前要对其最后的状态进行控制。 输出控制模块主要有 2 项功能:  输出使能,只有被使能的 PWM 信号才能反映到芯片管脚上  输出反相控制,如果使能,则 PWM 信号输出到管脚时会 180°反相 中断控制单元 PWM 模块能够发出两种情况的中断,分别为高电平结束中断和周期开始中断。中断发 生由中断状态寄存器标识,可以通过中断清除寄存器清除中断状态,不用的中断可由中断屏 蔽寄存器进行屏蔽。 PWM 普通模式配置 普通模式下,每一路 PWM 独立配置,彼此间相互无影响,起始输出为高,波形如下图 所示。 图 6-21 PWM 普通模式波形示意图 普通模式配置流程如下:  写 0x00 至相应的模式寄存器 MOD  设置周期长度寄存器  设置高电平周期寄存器 91 SWM150 系列  设置中断屏蔽寄存器  编写对应的中断服务程序  使能相应的中断  设置 PWM 使能寄存器 PWM 互补模式配置 互补模式下,两路输出为一组,第一路起始输出为高,第二路输出为第一路输出波形的 反向,并可配置死区发生器,波形如下图。 图 6-22 未开启死区的互补模式 图 6-23 开启死区的互补模式 互补模式配置流程如下:  写 0x01 至相应的模式寄存器 MOD  设置周期长度寄存器  设置高电平周期寄存器  设置死区寄存器  设置中断屏蔽寄存器  编写对应的中断服务程序  使能相应的中断  设置 PWM 使能寄存器 PWM 中心对称模式配置 中心对称模式下,每路 PWM 单独使用,两周期为一个对称单元,如下图所示。 92 SWM150 系列 图 6-24 中心对称模式 中心对称模式配置流程如下:  写 0x03 至相应的模式寄存器 MOD  设置周期寄存器  设置高电平周期寄存器  设置中断屏蔽寄存器  编写对应的中断服务程序  使能相应的中断  设置 PWM 使能寄存器 PWM 刹车模块 PWM 模块配置了刹车功能,通过 PWMSHUTDOWN 寄存器相应位进行配置,可应用 于电机控制等领域。具有如下特性:  刹车模块为三组 PWM 共享:可通过配置 PWMSCE 位域进行通道选择,配置指定 通道组响应刹车信号。  触发方式可配置:可通过 PWMSIL 位对触发方式进行配置。当该位置 1 时,高电 平触发刹车。当该位清 0 时,低电平触发刹车。  触发信号具有滤波功能:当采样信号连续三个时钟周期(以 PWM 输入时钟计)满 足触发条件时,刹车被触发,PWM 模块进行响应。  刹车后输出方式可配置:通过 PWMSOL 进行配置,当该位置 1 时,刹车功能触发 后 PWM 模块输出高电平直至刹车取消。当该位置 0 时,刹车功能触发后 PWM 模 块输出低电平直至刹车取消。  刹车取消方式:通过刹车输入端电平反向进行取消。当刹车触发后,输入端输入触 发电平的反向电平并连续稳定三个周期后,刹车取消。若刹车有效信号保持,则 PWM 输出模块不会工作,输出信号始终为 PWMSOL 位设置电平。  刹车响应方式可配置:通过 PWMSOL 进行配置。刹车行为发生后,当该位为 1 时, PWM 模块使能位清 0,同时计数器清 0,PWM 模块不工作,引脚输出指定电平直 至刹车取消。当该位为 0 时,PWM 模块正常工作,取消刹车后,引脚强制输出电 平取消,PWM 模块继续工作。 93 SWM150 系列  刹车中断:刹车被触发后,中断状态寄存器(INTSTATUS)BIT16 位被置 1,PWM 中断被触发。可通过中断清除寄存器(PWMINTCLR)进行清除操作。 PWM 中断服务程序的编写  查询中断状态寄存器 INTSTAT  编写对应的中断处理程序  读中断清除寄存器 INTCLR,清除相应的中断 寄存器映射 PWM BASE:0x40016000 名称 偏移量 类型 复位值 PWM0MOD 0x00 R/W 0x00 PWM0 模式寄存器 PWM0CYCA 0x04 R/W 0x00 PWM0A 路周期长度寄存器 PWM0HCYCA 0x08 R/W 0x00 PWM0A 路高电平长度寄存器 PWM0DBRISE 0x0C R/W 0x00 PWM0 死区上升沿延迟寄存器 PWM0CYCB 0x10 R/W 0x00 PWM0B 路周期长度寄存器 PWM0HCYCB 0x14 R/W 0x00 PWM0B 路高电平长度寄存器 PWM0DBFALL 0x18 R/W 0x00 PWM0 死区下降沿延迟寄存器 RESERVED 0x1C R/W 0x00 保留 PWM1MOD 0x20 R/W 0x00 PWM1 模式寄存器 PWM1CYCA 0x24 R/W 0x00 PWM1A 路周期长度寄存器 PWM1HCYCA 0x28 R/W 0x00 PWM1A 路高电平长度寄存器 PWM1DBRISE 0x2C R/W 0x00 PWM1 死区上升沿延迟寄存器 PWM1CYCB 0x30 R/W 0x00 PWM1B 路周期长度寄存器 PWM1HCYCB 0x34 R/W 0x00 PWM1B 路高电平长度寄存器 PWM1DBFALL 0x38 R/W 0x00 PWM1 死区下降沿延迟寄存器 RESERVED 0x3C — — PWM2MOD 0x40 R/W 0x00 PWM2 模式寄存器 PWM2CYCA 0x44 R/W 0x00 PWM2A 路周期长度寄存器 PWM2HCYCA 0x48 R/W 0x00 PWM2A 路高电平长度寄存器 PWM2DBRISE 0x4C R/W 0x00 PWM2 死区上升沿延迟寄存器 PWM2CYCB 0x50 R/W 0x00 PWM2B 路周期长度寄存器 PWM2HCYCB 0x54 R/W 0x00 PWM2B 路高电平长度寄存器 PWM2DBFALL 0x58 R/W 0x00 PWM2 死区下降沿延迟寄存器 RESERVED 0x5C — — PWMSHUTDO WN 0x60 R/W 0x00 RESERVED 0x64 ~0x7C — — 保留 PWMENABLE 0x80 R/W 0x00 PWM 使能寄存器 PWMINTEN 0x84 R/W 0x00 PWM 中断使能寄存器 94 描述 保留 保留 PWM 刹车控制寄存器 SWM150 系列 名称 偏移量 类型 复位值 描述 PWMINTSTAT 0x88 R/W 0x00 PWM 中断状态寄存器 PWMINTCLR 0x8C R/W 0x00 PWM 中断清除寄存器 PWMINTMAS K 0x90 R/W 0x00 PWM 中断屏蔽寄存器 PWMINTRAW STAT 0x94 R 0x00 PWM 中断初始状态寄存器 PWMINTOF 0x98 R 0x00 PWM 中断溢出标志 6.12.3 寄存器描述 模式寄存器 xMOD ADDR: 0x40016000 位域 名称 类型 复位值 31:2 REVERSED — — 1 中心对称 R/W 0 0 互补模式 R/W 0 描述 保留 中心对称输出模式 0:左对齐输出模式 1:中心对称输出模式 互补输出模式 0:普通输出 1:互补输出 周期长度寄存器 xCYCA ADDR: 0x40016004 位域 名称 类型 复位值 描述 31:16 REVERSED — — 保留 15: 0 A 路周期长度 R/W 0 PWM xA 路周期长度,即一个 PWM 周期包含 PWM 输入时钟的个数 描述 周期长度寄存器 xCYCB ADDR: 0x40016010 位域 名称 类型 复位值 31:16 REVERSED — — 保留 0 PWM xB 路周期长度,即一个 PWM 周期包含 PWM 输入时钟的个数 互补输出时设为 0 15: 0 B 路周期长度 R/W 高电平长度寄存器 xPWM2HCYCA ADDR: 0x40016008 位域 名称 类型 复位值 描述 95 SWM150 系列 31:16 REVERSED 15: 0 A 路高电平长 度 — R/W — 保留 0 PWM xA 路高电平长度,即一个 PWM 周期内 高电平长度(占空比),以 PWM 输入时钟为 单位 高电平长度寄存器 xPWM2HCYCB ADDR: 0x40016014 位域 名称 类型 复位值 31:16 REVERSED — — 保留 0 PWM xB 路高电平长度,即一个 PWM 周期内 高电平长度(占空比),以 PWM 输入时钟为 单位 描述 15: 0 B 路高电平长度 R/W 描述 上升沿死区寄存器 xDBRISE ADDR: 0x4001600C 位域 名称 类型 复位值 31:16 REVERSED — — 保留 15: 0 A 路上升沿死 区长度(前死 区) 0 配置为互补模式时,xA 路 PWM 上升沿向后 延迟长度(以 PWM 输入时钟为单位,仅互补 模式下有效) 描述 R/W 下降沿死区寄存器 DBFALL ADDR: 0x40016018 位域 名称 类型 复位值 31:16 REVERSED — — 保留 15: 0 B 路上升沿死区 长度(后死区) R/W 0 配置为互补模式时,xB 路 PWM 上升沿向后延 迟长度(以 PWM 输入时钟为单位,仅互补模 式下有效) PWM 刹车控制寄存器 PWMSHUTDOWN ADDR: 0x40016060 位域 名称 类型 复位值 31:8 REVERSED — — 7 PWMSDIN R/W 0 6 PWMSDOL R/W 0 5 PWMSDIL R/W 0 描述 保留 0:禁止 1:使能 刹车后输出电平配置位 0:禁止 1:使能 刹车触发条件配置位 0:低电平触发 96 SWM150 系列 1:高电平触发 4 PWMSDM R/W 0 3 PWM2SDC R/W 0 2 PWM1SDC R/W 0 1 PWM0SDC R/W 0 0 PWMSDEN R/W 0 刹车方式配置位(方式说明见 12.3.4 节) 0:方式 A 1:方式 B PWM 2 组刹车使能位 0:禁止 1:使能 PWM 1 组刹车使能位 0:禁止 1:使能 PWM 0 组刹车使能位 0:禁止 1:使能 刹车功能使能位 0:禁止 1:使能 PWM 使能寄存器 ENABLE ADDR: 0x40016080 位域 名称 类型 复位值 描述 31:6 REVERSED — — 保留 5 PWM2B 路 使 能 R/W 0 0:禁止 1:使能 4 PWM2A 路使 能 R/W 0 0:禁止 1:使能 3 PWM1B 路使 能 R/W 0 0:禁止 1:使能 2 PWM1A 路使 能 R/W 0 0:禁止 1:使能 1 PWM0B 路使 能 R/W 0 0:禁止 1:使能 0 PWM0A 路使 能 R/W 0 0:禁止 1:使能 PWM 中断屏蔽寄存器 INTMASK ADDR: 0x40016090 位域 名称 类型 复位值 描述 31:17 REVERSED — — 保留 16 PWM 刹车中断 R/W 0 1:非屏蔽 1:屏蔽 15:14 REVERSED — — 保留 13 PWM2B 路周期 R/W 0 0:非屏蔽 97 SWM150 系列 1:屏蔽 开始中断 12 PWM2A 路周 期开始中断 R/W 0 0:非屏蔽 1:屏蔽 11 PWM1B 路周期 开始中断 R/W 0 0:非屏蔽 1:屏蔽 10 PWM1A 路周 期开始中断 R/W 0 0:非屏蔽 1:屏蔽 9 PWM0B 路周 期开始中断 R/W 0 0:非屏蔽 1:屏蔽 8 PWM0A 路周 期开始中断 R/W 0 0:非屏蔽 1:屏蔽 7:6 REVERSED — — 保留 5 PWM2B 路高电 平结束中断 R/W 0 0:非屏蔽 1:屏蔽 4 PWM2A 路高 电平结束中断 R/W 0 0:非屏蔽 1:屏蔽 3 PWM1B 路高 电平结束中断 R/W 0 0:非屏蔽 1:屏蔽 2 PWM1A 路高 电平结束中断 R/W 0 0:非屏蔽 1:屏蔽 1 PWM0B 路高 电平结束中断 R/W 0 0:非屏蔽 1:屏蔽 0 PWM0A 路高 电平结束中断 R/W 0 0:非屏蔽 1:屏蔽 PWM 中断状态寄存器 INTSTATUS ADDR: 0x40016088 位域 名称 类型 复位值 描述 31:17 REVERSED — — 保留 16 PWM 刹车中断 RO 0 0:无中断发生 1:有中断发生 15:14 REVERSED — — 保留 12 PWM2B 路周 期开始中断 RO 0 0:无中断发生 1:有中断发生 12 PWM2A 路周 期开始中断 RO 0 0:无中断发生 1:有中断发生 11 PWM1B 路周期 开始中断 RO 0 0:无中断发生 1:有中断发生 10 PWM1A 路周 期开始中断 RO 0 0:无中断发生 1:有中断发生 98 SWM150 系列 9 PWM0B 路周 期开始中断 RO 0 0:无中断发生 1:有中断发生 8 PWM0A 路周 期开始中断 RO 0 0:无中断发生 1:有中断发生 7:6 REVERSED — — 保留 5 PWM2B 路高电 平结束中断 RO 0 0:无中断发生 1:有中断发生 4 PWM2A 路高 电平结束中断 RO 0 0:无中断发生 1:有中断发生 3 PWM1B 路高 电平结束中断 RO 0 0:无中断发生 1:有中断发生 2 PWM1A 路高 电平结束中断 RO 0 0:无中断发生 1:有中断发生 1 PWM0B 路高 电平结束中断 RO 0 0:无中断发生 1:有中断发生 0 PWM0A 路高 电平结束中断 RO 0 0:无中断发生 1:有中断发生 PWM 中断清除寄存器 INTCLR ADDR: 0x4001608C 位域 名称 类型 复位值 描述 31:17 REVERSED — — 保留 16 PWM 刹车中断 RO 0 写清除中断状态,读无效 15:14 REVERSED — — 保留 13 PWM2B 路周期 开始中断清除 RO 0 写清除中断状态,读无效 12 PWM2A 路周 期开始中断清 除 RO 0 写清除中断状态,读无效 11 PWM1B 路周 期开始中断清 除 RO 0 写清除中断状态,读无效 10 PWM1A 路周 期开始中断清 除 RO 0 写清除中断状态,读无效 9 PWM0B 路周 期开始中断清 除 RO 0 写清除中断状态,读无效 8 PWM0A 路周 期开始中断清 RO 0 写清除中断状态,读无效 99 SWM150 系列 除 7:6 REVERSED — — 保留 5 PWM2B 路高电 平结束中断清 除 RO 0 写清除中断状态,读无效 4 PWM2A 路高 电平结束中断 清除 RO 0 写清除中断状态,读无效 3 PWM1B 路高 电平结束中断 清除 RO 0 写清除中断状态,读无效 2 PWM1A 路高 电平结束中断 清除 RO 0 写清除中断状态,读无效 1 PWM0B 路高 电平结束中断 清除 RO 0 写清除中断状态,读无效 0 PWM0A 路高 电平结束中断 清除 RO 0 写清除中断状态,读无效 100 SWM150 系列 6.13 模拟数字转换器(ADC) 6.13.1 特性  模拟输入电压: 0~Vref (Max to Vdd)  12-bits 分辨率和 10-bits 精确度保证  多达 8 路单端输入通道  最大 ADC 时钟频率 13MHz  高达 1MSPS 转换速率  四种运作模式:   Single mode:A/D 转换在指定通道完成一次  Single-cycle scan mode: A/D 转换在指定通道完成一个周期(从低数通道到 高数通道)  Continuous scan mode:A/D 转换器连续执行 Single-cycle scan mode 走到软件 停止 A/D 转换  Burst mode:A/D 转换采样和转换指定单个通道,并存入 FIFO 灵活的 A/D 转换开始条件:  软件向 ADCR 寄存器的 ad_en 位写 1  外部 PWM 自动触发  每通道转换结果存储在数据寄存器内,并带有 valid/overrun 标志  转换结果可和指定的值相比较 当转换值和设定值相匹配时,根据用户设定产生中 断请求 6.13.2 功能 模数转换器(ADC)主要用于将连续的模拟电压转换为离散的数字量。 芯片包含一个精度为 12-bit 、包含 8 通道的逐次逼近式模拟—数字转换器 (SAR A/D converter)。其支持四种操作模式: single, burst, single-cycle scan 以及 continuous 扫描模式。 可在 A/D 转换开启前通过软件设定触发方式,还可通过内部 PWM 自动触发。 注:使能 ADC 功能前,模拟输入引脚必须配置为输入类型。 ADC 模块支持四种操作模式,包括单触发模式,Burst 模式,单周期扫描模式以及连续 扫描模式。同时,可与比较器/放大器协同工作,并支持在转换完成后进行比较,并以中断 方式通知核进行处理。结构如下图所示: 101 PWM_OUT2 PWM_OUT4 MUX DELAY LOGIC DELAY LOGIC DELAY LOGIC Control ADF ADRC ADCST DAT7 DAT1 DAT0 ADCMPR ADCMD ADCR APB Bus ADCHER Digatal OVERRUN & VALID PWM_OUT0 ... PWM_ADC PWM_CNT2 PWM_CNT1 PWM_CNT0 SWM150 系列 FIFO[0] FIFO[1] FIFO[2] FIFO[3] FIFO[4] FIFO[5] FIFO[6] FIFO[7] Logics EOC ADC_ON ADC_ST AIN[1] ... AIN[7] ADCMSK[1] 8 to 1 analog MUX AIN[0] A/D Analog macro ADINT ADCMSK[0] Compare Logic CMPINT 图 6-25 ADC 结构示意图 单触发模式 单触发模式主要用于对固定模拟量的转换及监控。在单触发模式下,A/D 转换遵循单 通道模式,其运作流程如下:  当 ADCR 寄存器 AD_EN 置位 1 时,开始 A/D 转换,可通过软件或外部触发输入  当 A/D 转换完成,A/D 转换的数据值将传递给相应通道数据寄存器  A/D 转换完成后,ADCST 寄存器对应 ADF 位将被置 1。若此时 ADCMSK 寄存器 ADF_MSK 位已置 1,则将产生 ADINT 中断请求  A/D 转换期间,AD_EN 位为高. A/D 转换结束, AD_EN 位自动清 0,A/D 转换器 进入 idle 模式 102 SWM150 系列 Burst 模式 在 Burst 模式下, A/D 转换会采样和转换指定的独立通道, 并将采样值存储在 FIFO 中, 具体操作步骤如下:  软件置 ADCR 的 AD_EN 位为 1 或由外部触发输入(PWM), 开始 A/D 转换  当 A/D 转换完成后,结果送入 FIFO,可以从 A/D 数据寄存器中读取  多于 4 个采样时,ADCST 的 ADF 位将置 1。如果此时 ADCMSK 寄存器 ADF_MSK 位置 1,在 A/D 转换完成时就会产生 ADINT 中断请求  AD_EN 保持为 1 时,重复步骤 2 到步骤 3. 当 AD_EN 位清零时,A/D 转换停止, A/D 转换器进入空闲状态 注:在 burst 模式下,如果软件使能多个通道, 最小通道进行转换,其他通道不转换。 单周期扫描模式 在单周期模式下, A/D 将从最小通道向最大通道 进行转换,具体流程如下:  软件置位 ADCR 寄存器的 AD_EN 位或外部触发输入,开始从最小通道的 A/D 转 换  每路 A/D 转换完成后,A/D 转换数值将装载到相应数据寄存器中  当所选择的通道转换完成后,ADCST 的 ADF 位置 1,如果此时 ADCMSK 寄存器 ADF_MSK 位也置 1,在 A/D 转换结束后就会有 ADINT 中断请求。A/D 转换结束, AD_EN 位将自动清 0,A/D 转换器进入 idle 模式。若在 A/D 转换过程中将 AD_EN 清 0,A/D 转换将自动停止,转入 idle 模式 连续扫描模式 连续扫描模式需使能 ADCHE 寄存器的相应位,则 A/D 转换在指定通道进行,最多支 持 8 通道 ADC。操作步骤如下:  软件置位 ADCR 寄存器的 AD_EN 位或由外部触发输入, 开始最低编号通道的 A/D 转换  每路 A/D 转换完成后,A/D 转换数值将装载到相应数据寄存器中  当被选择的通道数都转换完成后,ADCST 寄存器中 ADF 位将被置 1。若此时 ADCMSK 寄存器中 ADF_MSK 位被置 1,则当 A/D 转换完成后,将产生 ADINT 中断请求.,且继续从被使能的最低通道继续采样  只要 AD_EN 位保持为 1, 就重复步骤 2 到 3. 当 AD_EN 位被清 0, A/D 转换停止, A/D 转换器进入空闲状态. 当 AD_EN 清 0, ADC 控制器将完成当前转换, 最低 ADC 的使能通道的结果将不确定 比较模式下转换结果监控 芯片提供比较寄存器 ADCMPR 用以监控 A/D 转换模块指定通道的转换结果值。 可通 过设定该寄存器 CMPCH(通道选择)位和 CMPCOND(比较条件)位监控选定的通道, 103 SWM150 系列 用以检查转换值与指定值 CMPD(比较数值)之间的关系。当比较结果和预设定相匹配,比较 计数器将加 1,当计数器的值和设定值(CMPMATCNT+1)匹配,ADCST 的 CMPF 位将置 1,若此时 ADCMSK 寄存器 CMP_MSK 置 1,将产生 ADINT 中断请求。 中断方式配置 中断电路如下图所示: 图 6-26 ADC 中断示意图 A/D 转换结束时产生 ADF(ADCST 寄存器) 。若 ADF_MSK 位(ADCMSK 寄存器) 置位,将产生 ADINT 中断请求。若 CMP_MSK 位使能,当 A/D 转换结果同 ADCMPR 寄 存器设定值相匹配,将产生 ADINT 中断请求系统可清 CMPF 和 ADF 位,禁止中断请求。 PWM 触发 ADC 采样 芯片具有 PWM 输出上升沿触发 ADC 进行采样功能,并且可延迟触发时间;如果当前 ADC 正处于采样过程中,则会在采样结束后响应 PWM 触发再次进行采样;6 路 PWM 中第 1 路、第 3 路、第 5 路可以触发 ADC 进行采样,分别由寄存器 PWM_ADC 的第 0 位、第 1 位、第 2 位控制;可对 PWM 输出上升沿延迟若干时钟周期再触发 ADC 进行采样,延迟时 间可通过寄存器 PWM_CNT0、PWM_CNT2、PWM_CNT4 进行配置;具体操作步骤如下:  配置 PWM_ADC 寄存器,使能第 0 路(PWM0A)、第 2 路(PWM1A)、第 4 路 (PWM2A)PWM 中的一路或几路触发 ADC 进行采样;  相应的分别配置 PWM_CNT0、PWM_CNT2、PWM_CNT4 寄存器配置延迟采样的 延迟时间;  通道选择如下表: PWM 触发 ADC 进行采样通道选择方式 PA4_EN PA2_EN PA0_EN 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 1 104 ADC_CHANNEL SWM150 系列 1 1 1 0 0 0 0 0 1 1 1 6.13.3 寄存器映射 SAR-ADC BASE:0x40017000 名称 偏移量 类型 复位值 描述 CTRL 0x00 R/W 0 ADC 配置寄存器 DAT0 0x00 R/W 0x00 A/D 数据寄存器 0 DAT 1 0x04 R/W 0x00 A/D 数据寄存器 1 DAT 2 0x08 R/W 0x00 A/D 数据寄存器 2 DAT 3 0x0C R/W 0x00 A/D 数据寄存器 3 DAT 4 0x10 R/W 0x00 A/D 数据寄存器 4 DAT 5 0x14 R/W 0x00 A/D 数据寄存器 5 DAT 6 0x18 R/W 0x00 A/D 数据寄存器 6 DAT 7 0x1C R/W 0x00 A/D 数据寄存器 7 ADDRC 0x20 R/W 0x00 当 burst 模式下,存储最近的 8 次 转化值 ADCHER 0x24 R/W 0x00 通道使能寄存器 ADCR 0x28 R/W 0x00 控制寄存器 ADCMD 0x2C R/W 0x00 ADC 模式寄存器 ADCMPR 0x30 R/W 0x00 ADC 比较寄存器 ADCMSK 0x34 R/W 0x00 ADC 屏蔽寄存器 ADCST 0x38 R/W 0x00 ADC 状态寄存器 PWM_ADC 0x3C R/W 0x00 PWM 触发 ADC 的使能寄存器 PWM_CNT0 0x40 R/W 0x03 第 0 路 PWM 延迟采样延迟时间配 置寄存器 PWM_CNT1 0x44 R/W 0x03 第 2 路 PWM 延迟采样延迟时间配 置寄存器 PWM_CNT2 0x48 R/W 0x03 第 4 路 PWM 延迟采样延迟时间配 置寄存器 6.13.4 寄存器描述 通道数据寄存器 DAT 0~7 ADDR: 0x40017000+0x4*n(n=0~7) 位域 名称 类型 复位值 描述 31:18 REVERSED — — 保留 17 OVERRUN RO 0 本通道数据已满标志位,1 有效,读数据寄存 器后清除 16 VALID RO 0 本通道转换结束,数据可用标志位,1 有效, 读数据寄存器后清除 15:12 REVERSED — — 保留 105 SWM150 系列 位域 名称 类型 复位值 11:0 DATA RO 0x00 描述 相应通道的 AD 转化结果 寄存器 ADDRC ADDR: 0x40017020 位域 名称 类型 复位值 描述 31:12 REVERSED — — 11:0 DATA RO 0x00 Burst 模式下相应通道最近的 8 个 AD 转化结 果 描述 保留 寄存器 ADCHER ADDR: 0x40017024 位域 名称 类型 复位值 31:8 REVERSED — — 7 C_EN7 R/W 0 6 C_EN6 R/W 0 5 C_EN5 R/W 0 4 C_EN4 R/W 0 3 C_EN3 R/W 0 2 C_EN2 R/W 0 1 C_EN1 R/W 0 0 C_EN0 R/W 0 保留 1:AD 转化的第 7 个通道选通 0:AD 转化的第 7 个通道未选通 1:AD 转化的第 6 个通道选通 0:AD 转化的第 6 个通道未选通 1:AD 转化的第 5 个通道选通 0:AD 转化的第 5 个通道未选通 1:AD 转化的第 4 个通道选通 0:AD 转化的第 4 个通道未选通 1:AD 转化的第 3 个通道选通 0:AD 转化的第 3 个通道未选通 1:AD 转化的第 2 个通道选通 0:AD 转化的第 2 个通道未选通 1:AD 转化的第 1 个通道选通 0:AD 转化的第 1 个通道未选通 1:AD 转化的第 0 个通道选通 0:AD 转化的第 0 个通道未选通 寄存器 ADCR ADDR: 0x40017028 位域 名称 类型 复位值 描述 31:2 REVERSED — — 保留 1 AD_ON R/W 0 ADC 上电,1 有效 0 AD_ST R/W 0 ADC 开始信号使能,1 有效 寄存器 ADCMD ADDR: 0x4001702C 位域 名称 类型 复位值 描述 31:4 REVERSED — — 保留 3 MOD_S R/W 0 Single mode: A/D 转换在指定通道完成一次 2 MOD_B R/W 0 Burst mode: A/D 转换 采样和转换指定单个 通道,并存入 FIFO 106 SWM150 系列 位域 名称 类型 复位值 描述 1 MOD_CS R/W 0 Continuous scan mode: A/D 转换器连续执行 Single-cycle scan mode 走到软件停止 A/D 转 换 0 MOD_SS R/W 0 Single-cycle scan mode: A/D 转换在指定通道 完成一个周期(从低数通道到高数通道) 寄存器 ADCMPR ADDR: 0x40017030 位域 名称 类型 复位值 描述 31:28 REVERSED — — 保留 比较数值 此 12 位数值将和指定通道的转换结果相比较, 在 scan 模式下(without imposing a load on software)软件可应用于监控外部模拟输入 pin 电压跃迁 27:16 CMPD R/W 0 15:12 REVERSED — — 11:8 CMPMATCNT R/W 0 7:6 REVERSED — — 5:3 CMPCH R/W 0 2 CMPCOND R/W 0 1 REVERSED — — 保留 比较匹配值 当 指 定 A/D 通 道 的 转 换 值 和 比 较 条 件 CMPCOND[2]相匹配, 内部计数器将相应的 加 1. 当 内 部 计 数 器 的 值 达 到 设 定 值 时 , (CMPMATCNT +1) 硬件将置位 CMPF 位 保留 Compare 通道选择 000 = 选择 通道 0 转换结果 001 = 选择 通道 1 转换结果 010 = 选择 通道 2 转换结果 011 = 选择 通道 3 转换结果 100 = 选择 通道 4 转换结果 101 = 选择 通道 5 转换结果 110 = 选择 通道 6 转换结果 111 = 选择 通道 7 转换结果 比较条件 1 = 设置比较条件即当 12 位 A/D 转换结果 大于或等于 12 位 CMPD(ADCMPRx[27:16]), 内部匹配计数器加 1 0 = 设置比较条件即当 12 位 A/D 转换结果 小于 12 位 CMPD(ADCMPRx[27:16]),内部 匹配计数器加 1 注 : 当 内 部 计 数 器 的 值 达 到 (CMPMATCNT +1), CMPF 置位 保留 107 SWM150 系列 位域 0 名称 CMPEN 类型 复位值 描述 R/W 0 比较使能 1 = 使能比较 0 = 禁止比较 该位置 1 使能 比较 CMPD[11:0] 特定通道 的转换值 当转换数据下载到 ADDR 寄存器 寄存器 ADCMSK ADDR: 0x40017034 位域 名称 类型 复位值 描述 31:2 REVERSED — — 保留 1 CMP_MSK R/W 0 0 ADF_MSK R/W 0 0:屏蔽比较中断 1:未屏蔽比较中断 0:屏蔽转换结束中断 1:未屏蔽转换结束中断 寄存器 ADCST ADDR: 0x40017038 位域 名称 类型 复位值 描述 31:24 REVERSED — — 保留 23:16 OVERRUN RO 0 结束运行标志,每位对应一个通道 15:8 VALID RO 0 数据有效标志位,每位对应一个通道 7:2 REVERSED — — 1 CMPF0 R/W 0 0 ADF R/W 0 保留 比较标志位 选择 A/D 转换通道 结果和 ADCMPR 0 相匹 配 该位置 1. 写 1 清该位 1 = ADDR 转换结果和 ADCMPR0 相匹配 0 = ADDR 转换结果和 ADCMPR0 不匹配 A/D 转换结束标志位 状态标志位 指示 A/D 转换结束. ADF 在下列三个条件时置 1: 1. 单一模式下 A/D 转换结束时 2. 扫描模式下 A/D 在所有指定通道转换结束 时 3. Burst 模式下,FIFO 多于 4 个 samples. 该标志写 1 清零 寄存器 PWM_ADC ADDR: 0x4001703C 位域 名称 类型 复位值 描述 31:3 REVERSED — — 保留 2 PA4_EN R/W 0 第 4 路 PWM 触发 ADC 使能寄存器 1 PA2_EN R/W 0 第 2 路 PWM 触发 ADC 使能寄存器 0 PA0_EN R/W 0 第 0 路 PWM 触发 ADC 使能寄存器 108 SWM150 系列 寄存器 PWM_CNT0 ADDR: 0x40017040 位域 名称 类型 复位值 描述 31:16 REVERSED — — 保留 15:0 PA0_DELAY R/W 0x3 第 0 路 PWM 延迟采样延迟时间配置寄存器, 写入值为延时周期数 描述 寄存器 PWM_CNT1 ADDR: 0x40017044 位域 名称 类型 复位值 31:16 REVERSED — — 保留 15:0 PA0_DELAY R/W 0x3 第 2 路 PWM 延迟采样延迟时间配置寄存器, 写入值为延时周期数 描述 寄存器 PWM_CNT2 ADDR: 0x40017048 位域 名称 类型 复位值 31:16 REVERSED — — 保留 15:0 PA0_DELAY R/W 0x3 第 4 路 PWM 延迟采样延迟时间配置寄存器, 写入值为延时周期数 109 SWM150 系列 6.14 正交编码器(QEI) 6.14.1 特性  三个输入引脚:QEA、QEB 和 INDEX;一个输出引脚:UPDN  可编程输入信号毛刺滤波器  提供脉冲计数和计数方向的正交解码器  16 位向上向下计数器  计数方向状态  ×2 和×4 两种计数模式  索引复位/计数匹配复位模式  通用 16 位计数器(正向计数或反向计数)  QEI/定时器产生的中断  A 相和 B 相输入的交换模式 6.14.2 功能 正交编码器(增量式编码器或光电式编码器)用于检测旋转运动系统的位置和速度,正 交编码器可以用于多种电机的闭环控制,诸如开关磁阻(SR)电机和交流感应电机(ACM) 。 典型的增量式编码器包括一个放置在电机转动轴上的带有开槽的轮子和一个用于检测 开槽的发射/接收装置,通常有三个输出,分别为 A 相、B 相和索引相(INDXE) ,所提供的 信息可被 QEI 接口解码,用来提供电机的运动信息,包括旋转距离和旋转方向,编码盘的 示意图如下图所示。 索引相 A相 B相 图 6-27 增量式正交编码盘示意图 在正交编码器中 A 相(QEA)和 B 相(QEB)的位置关系是唯一的,如果 A 相超前 B 相,那么电机的旋转方向被认为是正向,反之则被认为是反向旋转,索引相作为基准来确定 电机的绝对位置,电机每旋转一圈产生一个索引相脉冲信号,电机旋转时三个信号的相关时 序如下图所示。 110 SWM150 系列 one cycle QEA 正向 旋转 QEB INDEX 01 00 10 11 QEA 反向 旋转 QEB INDEX 11 10 00 01 图 6-28 三相信号正向/反向旋转时序关系 正交编码器接口(QEI)模块提供了与增量式编码器的接口。QEI 模块由数字毛刺滤波 器、滤波分频器、QEI 时钟控制器、换向器和正交编码逻辑组成。正交编码器结构如下图: 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 Pclk 图 6-29 QEI 结构示意图 向上/向下计数器 正交解码器的工作过程如下图所示。 111 Timer clk ctrl TQCS SWM150 系列 jitter QEA QEB PULS POSCNT UPDN + + + + + + + + + - - - - - - 图 6-30 x4 计数模式 工作在 X4 计数模式下,在 QEA、QEB 的上升沿和下降沿处都会计数,计数的方向由 正反转状态 UPDN 决定,当 UPDN 为高电平时,表示电机正转,计数器在每个计数脉冲到 来时累加计数结果;当 UPDN 为低电平时,表示电机反转,计数器在每个计数脉冲到来时 递减。同时图中给出了电机换向旋转时产生抖动时的情况。当电机换向旋转时若产生抖动(在 图中抖动部分为 jitter) ,QEI 模块会根据检测到的计数脉冲情况判断是否产生抖动,在电机 抖动的情况下,计数器不工作,直到电机恢复稳定状态为止。 QEA QEB PULS POSCNT UPDN + + + + + - - - - 图 6-31 x2 计数模式 工作在 X2 计数模式下,在该模式下,计数脉冲只在 QEA 的上升沿和下降沿处产生, QEB 只被用来判断旋转方向。 可编程数字噪声滤波器 数字噪声滤波器用于滤除增量正交编码盘的输入信号噪声,滤波器的时钟速率决定了滤 波器的通带,滤波器的频率越慢将导致滤出的噪声信号频率越低,在 QEI 接口模块的结构 框图(图 6-32)中可以看到,滤波器的时钟来源于分频器模块的产生的时钟 dflt_clk,同时 也可以看到在 QEI 模块中三路输入信号的滤波器是独立的,可以通过滤波器控制寄存器 (DFLTCON)对滤波器进行配置,数字噪声滤波器的结构框图如图 6-33 所示,输入信号通 112 SWM150 系列 过滤波器传播的结果如图 6-33 所示。 multiplexer o_dflt J CK QEn D Pclk Q D Q D Q D Q D Q CK Q CK Q CK Q Q dflt_sel K EN CK CK EN EN EN dflt_clk dflt_en 图 6-32 可编程数字噪声滤波器结构框图 Pclk QEn o_dflt 图 6-33 信号通过滤波器传播 计数器复位模式 在 QEI 模块中支持两种复位模式:索引复位和计数匹配复位。索引复位的方式如图 14-8 所示,在 INDEX 信号到来时,QEI 计数器复位,旋转方向不变时计数器每次都将在索引信 号的同一位置发生复位,正向旋转和反向旋转时的复位位置相对称,将 QEI 模块配置在索 引复位模式下, QEI 模块将会自动检测 INDEX 信号和电机正转/反转时索引信号的复位位置。 计数匹配复位发生在计数器的累加值与预置的目标计数值相等时发生,在电机正向旋转 时,计数器的累加值与最大计数值相等时发生复位,复位后计数器的值被置 0;在电机反向 旋转时,计数器的累加值在等于零时发生复位,复位后计数器的值被复位为预置的最大计数 值,计数匹配复位方式如图 14-9 所示。 QEA QEB INDEX 11 10 00 10 11 01 复位 复位 图 6-34 索引复位模式 113 SWM150 系列 QEA QEB INDEX CNT + + + M 0 + - 0 M 不复位 - 复位 复位 不复位 图 6-35 计数匹配复位模式 定时器模式 当 QEI 模块 QEICON 寄存器的 QEIM置 1 时,QEI 模块为正交解码器工作模式,当 QEIM置 0 时,QEI 模块将处在 16 位定时器的工作模式下工作,通过配置 QEICON 寄存 器的相关位,可以选择定时器的工作时钟,和计数模式(向上计数或向下计数),QEI 模块 的定时器模式和正交解码器模式使用同一个的使能信号和同一个最大计数寄存器 (MAXCNT) 。 6.14.3 寄存器映射 QEI BASE:0x4001D000 名称 偏移量 类型 复位值 描述 QEICON 0x00 R/W 0x00 控制/状态寄存器 POSCNT 0x04 R/W 0x00 QEI 位置计数器/定时器状态寄存器 MAXCNT 0x08 R/W 0x00 QEI 位置计数器/定时器匹配计数寄 存器 DFLTCON 0x0C R/W 0x00 数字滤波器控制寄存器 INTEN 0x10 R/W 0x00 中断使能寄存器 MASKINT 0x14 R/W 0x00 中断状态屏蔽寄存器 CLRINT 0x18 R/W 0x00 清除中断状态寄存器 INTSTATE 0x1C R/W 0x00 中断状态寄存器 OVERFLINT 0x20 R/W 0x00 中断溢出寄存器 6.14.4 寄存器描述 控制/状态寄存器(QEICON) ADDR: 0x4001D000 位域 名称 类型 复位值 31:11 REVERSED — — 10 QEISIDL R/W 0 描述 保留 空闲模式停止位 1:模块暂停工作 0:模块继续工作 114 SWM150 系列 9 INDEX RO 0 8 UPDN R/W 0 7 QEIM R/W 0 6 QEIM R/W 0 5 QEIM R/W 0 4 SWPAB R/W 0 3:2 TQCKPS R/W 0 1 TQCS R/W 0 0 QEPEN R/W 0 索引信号状态位(写无效) 1:索引引脚为高电平 0:索引引脚为低电平 计数方向状态位(仅用于定时器模式) 1:正向计数 0:反向计数 工作模式选择位 1:QEI 解码器模式 0:定时器模式 计数器复位模式选择位 1:索引信号复位 0:计数匹配复位 QEI 计数模式选择位 1:X4 计数模式 0:X2 计数模式 换向选择位 1:A、B 以换向 0:A、B 未换向 定时器时钟分频选择位(仅用于定时器模式) 11: 256 分频 10: 64 分频 01:8 分频 00:不分频 定时器时钟来源选择位(仅用于定时器模式) 1:QEA 引脚(上升沿) 0:内部时钟 QEI 模块使能(QEI、定时器功能) 1:使能 0:禁能 QEI 位置计数器/定时器状态寄存器(POSCNT) ADDR: 0x4001D000 位域 名称 类型 复位值 描述 31:16 REVERSED — — 保留 15:0 POSCNT RO 0 位置计数器/定时器状态 QEI 位置计数器/定时器匹配计数寄存器(MAXCNT) ADDR: 0x4001D000 位域 名称 类型 复位值 描述 31:16 REVERSED — — 保留 15:0 MAXCNT R/W 0 位置计数器/定时器匹配计数值 数字滤波器控制寄存器(DFLTCON) ADDR: 0x4001D000 位域 名称 类型 复位值 31:10 REVERSED — — 描述 保留 115 SWM150 系列 9:7 QECK R/W 0 6 DFLTSELA R/W 0 5 DFLTSELB R/W 0 4 DFLTSELI R/W 0 3 QEAOUT R/W 0 2 QEBOUT R/W 0 1 QEIOUT R/W 0 0 DIVEN R/W 0 滤波分频选择位 111:256 分频 110:128 分频 101:64 分频 100:32 分频 011:16 分频 010:4 分频 001:2 分频 000:不分频 QEA 输入滤波选择位 1:滤波 0:不滤波 QEB 输入滤波选择位 1:滤波 0:不滤波 QEI 输入滤波选择位 1:滤波 0:不滤波 QEA 输入滤波使能 1:使能 0:禁能 QEB 输入滤波使能 1:使能 0:禁能 QEI 输入滤波使能 1:使能 0:禁能 滤波分频器使能 1:使能 0:禁能 中断使能寄存器(INTEN) ADDR: 0x4001D000 位域 名称 类型 复位值 31:4 REVERSED — — 3 INTEN3 R/W 0 2 INTEN2 R/W 0 1 INTEN1 R/W 0 0 INTEN0 R/W 0 描述 保留 计数错误中断使能标志位 1:使能 0:禁能 计数器溢出中断使能标志位 1:使能 0:禁能 计数匹配/定时器中断使能标志位 1:使能 0:禁能 索引信号复位中断使能使能标志位 1:使能 0:禁能 116 SWM150 系列 中断状态屏蔽寄存器(MASKINT) ADDR: 0x4001D000 位域 名称 类型 复位值 31:4 REVERSED — — 3 MASK3 R/W 0 2 MASK2 R/W 0 1 MASK1 R/W 0 0 MASK0 R/W 0 描述 保留 屏蔽计数错误中断标志位 1:未屏蔽 0:已屏蔽 屏蔽计数器溢出中断标志位 1:未屏蔽 0:已屏蔽 屏蔽计数匹配/定时器中断标志位 1:未屏蔽 0:已屏蔽 屏蔽索引信号复位中断标志位 1:未屏蔽 0:已屏蔽 清除中断状态寄存器(CLRINT) ADDR: 0x4001D000 位域 名称 类型 复位值 31:4 REVERSED — — 3 CLR3 R/W 0 2 CLR2 R/W 0 1 CLR1 R/W 0 0 CLR0 R/W 0 描述 保留 清除计数错误中断标志位 1:清除 0:未清除 清除计数器溢出中断标志位 1:清除 0:未清除 清除计数匹配/定时器中断标志位 1:清除 0:未清除 清除索引信号复位中断标志位 1:清除 0:未清除 中断状态寄存器(INTSTATE) ADDR: 0x4001D000 位域 名称 类型 复位值 31:4 REVERSED — — 3 INT3 RO 0 2 INT2 RO 0 描述 保留 计数错误中断标志位 1: 有错误 0:无错误 计数器溢出中断标志位 1:以溢出 0:未溢出 117 SWM150 系列 1 INT1 RO 0 0 INT0 RO 0 计数匹配/定时器中断标志位 1:计数匹配 0:计数未匹配 索引信号复位中断标志位 1:以复位 0:未复位 中断溢出寄存器(OVERFLINT) ADDR: 0x4001D000 位域 名称 类型 复位值 31:12 REVERSED — — 3 FLINT3 RO 0 2 FLINT2 RO 0 1 FLINT1 RO 0 0 FLINT0 RO 0 描述 保留 计数错误中断溢出标志位 1:溢出 0:未溢出 计数器溢出中断溢出标志位 1:溢出 0:未溢出 计数匹配/定时器中断溢出标志位 1:溢出 0:未溢出 索引信号复位中断溢出标志位 1:溢出 0:未溢出 118 SWM150 系列 6.15 比较器/放大器(CMP) 6.15.1 功能 芯片包括 3 路模拟比较器/放大器。根据用户配置的工作模式不同(OPx_MOD[2:0])可 分别配置为比较器或放大器。结构如下图所示: GPIO_INT INN VOUT INP ADC_IN INTERNAL VOLTAGE REFERENCE GENERATOR (OP_COMP_CTL BIT[3:0]) OPx_MODE 图 6-36 比较器/放大器结构示意图 比较器功能描述 当 OPx_MOD[2:1]=10 或 OPx_MOD[2:1]=01 时,比较器/放大器模块工作在比较器 模式。当其正极(cpxinp)输入大于负极(cpxinn)时,结果为逻辑 0,反之为逻辑 1。 每一路比较器可分别配置为 2 种输出模式,分别是:  输出至 n 端所复用 GPIO 引脚对应 EXT 寄存器位(OPx_MOD[2:0]=011)  带有迟滞输出至 n 端所复用 GPIO 引脚对应 EXT 寄存器位(OPx_MOD[2:0]=101) 在两种输出模式中, 比较器 CPx 的输出值会送往 cpxinn 管脚所复用的 gpio 端口。例如, 在使用比较器 0 时,cpxinn 与 PortA8 复用。那么当选择为普通 GPIO 输入模式时,比较器 的输出值会在 gpio 的 PortA8 的输入寄存器(AEXT)观察到;如果配置了 GPIO 模块中的 PortA8 相应中断,比较器 0 的输出变化会触发 PortA8 的中断。 放大器功能描述 当 OPx_MOD[2:1]=11 时,比较器/放大器模块工作在放大器模式。此时片上的放大器 正极(opxinp) 、负极(opxinn)和输出端(opxout)为开环放大器的 3 个端口。可以搭建外 电路以确定放大器的放大倍数。 每一路放大器可分别配置为 2 种输出模式,分别是:  ADC 输入(OPx_MOD[2:0]=110)  片外工作(OPx_MOD[2:0]=111) 当放大器工作在 ADC 输入模式时,放大器的输出端不仅反映在 opxout 引脚上,还会与 119 SWM150 系列 opxout 端所对应的 ADC 输入端相连通,使得读取 ADC 相应的输入端值即可知道放大器的 输出电平。相对的片外工作模式中,放大器的输出只会影响 opxout 引脚电平,而不会关联 到片内其他电路。用户需要使用片外电路对放大器输出值进行处理。 当工作在 ADC 输入模式时,正输入端可以选择使用内部电压基准。内部基准共 16 档 可选。在正输入端使用内部电压基准时,原正输入端引脚可以被切换至数字信号模式正常完 成数字引脚功能。 比较器典型配置过程  配置需使用的比较器管脚使其切换为模拟信号模式,有两种情况:1)比较器的两 个输入都从片外给出,则比较器的正端输入引脚和负端输入引脚都要切换为模拟功 能模式;2)比较器的两个输入只有一个从片外给出,则只有比较器的负端输入引 脚切换为模拟功能模式,且比较器的正端输入引脚必须切换为数字功能模式  如果比较器的两个输入只有一个从片外给出,则比较器的正端输入需要由片内基准 电压提供,片内基准电压可通过片内基准寄存器(OP_PREF[3:0])配置  配置比较器/放大器工作模式寄存器(OPx_MOD[2:0]),选择合适的工作模式  配置负端输入引脚的中断模式,使得当比较器的输出结果符合中断配置时产生引脚 中断 放大器典型配置过程  配置需使用的放大器管脚使其切换为模拟信号模式, 放大器的 OP+、 OP-和 OP_OUT 都必须切换为模拟信号模式  配置比较器/放大器工作模式寄存器(OPx_MOD[2:0]),选择合适的工作模式  如果需要将放大器的输出信号输出给 ADC,则正确配置 ADC 的通道选择寄存器选 中 OPA 的输出引脚作为 ADC 的当前转换通道 6.15.2 寄存器映射 OP_COMP_CTL BASE:0x40000000 名称 偏移量 类型 复位值 描述 OP_ OMP_CTL 0x00 R/W 0x00001110 比较器/放大器配置寄存器 6.15.3 寄存器描述 OP_COMP_CTL ADDR: 0x40000000 位域 名称 类型 复位值 31:15 REVERSED — — 描述 保留 120 SWM150 系列 14:12 OP2_MODE 20:18 001 11 REVERSED — — 10:8 OP1_MODE R/W 001 7 REVERSED — — 6:4 OP0_MODE R/W 001 比较器/放大器 2 工作模式 000:保留 001:关闭比较器/放大器模块 010:放大器关闭,比较器无迟滞,对应路 ADC 接受片外模拟信号 011:放大器关闭,比较器无迟滞,对应路 ADC 不接受片外模拟信号 100:放大器关闭,比较器有迟滞,对应路 ADC 接受片外模拟信号 101:放大器关闭,比较器有迟滞,对应路 ADC 不接受片外模拟信号 110:放大器工作,比较器关闭,对应路 ADC 接受放大器输出的模拟信号 111:放大器工作,比较器关闭,对应路 ADC 不接受模拟信号 保留 比较器/放大器 1 工作模式 000:保留 001:关闭比较器/放大器模块 010:放大器关闭,比较器无迟滞,对应路 ADC 接受片外模拟信号 011:放大器关闭,比较器无迟滞,对应路 ADC 不接受片外模拟信号 100:放大器关闭,比较器有迟滞,对应路 ADC 接受片外模拟信号 101:放大器关闭,比较器有迟滞,对应路 ADC 不接受片外模拟信号 110:放大器工作,比较器关闭,对应路 ADC 接受放大器输出的模拟信号 111:放大器工作,比较器关闭,对应路 ADC 不接受模拟信号 保留 比较器/放大器 0 工作模式 000:保留 001:关闭比较器/放大器模块 010:放大器关闭,比较器无迟滞,对应路 ADC 接受片外模拟信号 011:放大器关闭,比较器无迟滞,对应路 ADC 不接受片外模拟信号 100:放大器关闭,比较器有迟滞,对应路 ADC 接受片外模拟信号 101:放大器关闭,比较器有迟滞,对应路 ADC 不接受片外模拟信号 110:放大器工作,比较器关闭,对应路 ADC 接受放大器输出的模拟信号 111:放大器工作,比较器关闭,对应路 ADC 不接受模拟信号 121 SWM150 系列 3:0 OP_PREF R/W 0000 正输入端内部基准寄存器 0000:0.3v 0001:0.45v 0010:0.6v 0011:0.75v 0100:0.9v 0101:1.05v 0110:1.2v 0111:1.35v 1000:1.5v 1001:1.65v 1010:1.8v 1011:1.95v 1100:2.1v 1101:2.25v 1110:2.4v 1111:2.55v 122 SWM150 系列 6.16 ISP 及 FLASH 操作 6.16.1 特性  支持加密操作;  支持 ISP 程序定制;  支持 FLASH 编程。 6.16.2 功能 ISP 模式 当芯片上电后检测到 B4 引脚持续 5ms 以上的高电平后,将会进入 ISP(在应用编程) 模式。用户通过串口(C0/C1)连接到 PC,通过对应的上位机软件,执行外置 flash 擦除, 片内 SRAM 执行程序及外置 flash 程序更新等操作。 加密方式 加密方式有两种:  封锁 SW 端口:通过在用户程序 0x1C 偏移地址写入 0xABCD1234,则上电后,SW 端口切换为通用 IO,无法通过仿真器访问芯片。  程序下载加密:通过指定的上位机软件,下载前勾选加密选项,则烧录进外部 flash 中的数据为加密后代码,上电后由芯片解密后执行,同时 SW 端口默认为封锁状态。 FLASH 操作 IAP 函数为片内驻留程序,其提供了针对片外 flash 的相关操作,通过寄存器 r0 中所包 含地址传中内容递调用函数编号及参数,同时将结果返回至寄存器 r1 中地址所指向的结果 列表。参数列表最多包含两个参数,占两个字,返回值均占 1 个字。 IAP 函数为 Thumb 代码,驻留地址为 0x100800,建议使用如下方式调用: 定义驻留地址: #define IAP_LOC 0x100801 定义函数指针类型: typedef void (*IAP) (unsigned int * , unsigned int *); 在调用函数内定义变量: unsigned int command[3]; unsigned int result; 声明及设置函数指针 IAP iap_function; iap_function = (IAP) IAP_LOC; 调用语句: iap_function(command,&result); 123 SWM150 系列 调用完成后,在 result 中返回执行结果。调用 IAP 函数时,应保证栈空间剩余 24 个字 节(byte)以上。中断可打断 IAP 函数的调用。 IAP 函数调用编号及说明如下: IAP 命令 命令码 输入参数 返回参数 71 Command[0] = 71 Command[1] = 0/1 (加密选项) Command[2] = 目标地址 Command[3] = 源地址 Command[4] = 拷贝数量 (字) Command[5] = 0/1/2 (操作选项) Command[6] = 跳转地址 (操作 2) IAP_SUCCESS/ IAP_INVALID/ IAP_PARAERR Flash 写 75 Command[0] = 75 Command[1] = 数据源地址 Command[2] = 数据目标地址 Command[3] = 写入 数 量 ( 字 节) Command[4] = 擦除标志位 IAP_SUCCESS/ IAP_INVALID/ IAP_PARAERR/ IAP_EXCERR Flash 擦除 76 除法函数 77 Flash 拷贝跳转 Command[0]= 76 Command[1] = 擦除目标地址 Command[0]= 77 Command[1] = 被除数 Command[2] = 除数 描述 片外 flash 拷贝跳转操作: 将片外 flash 指定地址指定长度 的数据拷贝至片内指定地址, 并选择指定操作。 Command[1]可选择是否加密, 当该数据是加密下载时,需要 将加密选项置 1,非加密时置 0。 Command[5] 可 选 择 拷 贝 后 操 作,0 为无操作,1 为复位芯片, 2 为跳转至 Command[6]指定地 址执行程序。 拷贝以字为单位,即 4 字节的 整数倍。 片外 flash 写操作: 向片外 flash 指定地址写入指定 长度数据,数据起始地址为片 内指定地址。 写入前将擦除目标地址所在 4K 扇区 拷贝以字节为单位,最多支持 64K 字节。 Command[4]为 0 时写入前不执 行擦除操作,为 1 时执行擦除 操作,擦除写入地址所在 4K 扇 区 IAP_SUCCESS/ IAP_INVALID 擦除指定字节所在 4K 扇区 除法计算结果 该调用实现了 32 位有符号数 除法 IAP 参数说明如下: 参数符号 对应值 描述 IAP_SUCCESS IAP_INVALID IAP_PARAERR IAP_EXCERR 0 1 2 3 输出参数,执行成功 输出参数,命令不可用 输出参数,Command 中参数错误 输出参数,执行错误,包括 flash 参数设置错误等原因引起 详细操作请参阅库函数。 124 SWM150 系列 7 典型应用电路 POWER AVDD AVCC 0.1UF DVCC SPI_SS SPI_CLK SPI_MISO SPI_MOSI CS CLK MISO MOSI VDD SPI_DEVICE VSS 1UF AVSS INTERFACE SWD VDD ICE_CLK ICE_DAT NRESET VSS 20P XI 2~32 CRYSTAL MHZ 20P XO RESET R-IN RXD NRST PC COM PORT DVCC 10K T-OUT TXD 0.1UF UART 图 7-1 典型应用电路图 8 电气特性 8.1 绝对最大额定值 表格 8-1 绝对最大额定值 参数 最大值 典型值 最小值 符号 单位 直流电源电压 3.6 3.3 2.7 Vdd-Vss V 晶振频率 48 48 6 1/Tclk MHz 工作温度 85 — -40 Tw ℃ 贮存温度 150 — -50 Ts ℃ 8.2 DC 电气特性 表格 8-2 DC 电气特性( Vdd-Vss = 3.3V, Tw =25℃) 参数 最大值 典型值 最小值 单位 符号 测试条件 工作电压 3.6 3.3 2.7 V Vdd — 电源地 0.8 — 0 V Vss — 模拟工作电压 Vdd — 0 Tw AVdd — 模拟参考电压 AVdd — 0 V Vref — PortA 输入低电压(TTL) 0.8 — Vpal V Vdd = 3.3V 125 SWM150 系列 参数 最大值 典型值 最小值 单位 符号 测试条件 PortA 输入高电压(TTL) 3.6 — 2.0 Vpah V PortA 输入漏电流 1 — -1 Ipalk uA Vdd = 3.3V Vdd = 3.3V 0
SWM150R6T6-50 价格&库存

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

免费人工找货