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

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
CSM32RV20 TSSOP20

CSM32RV20 TSSOP20

  • 厂商:

    CSM(南京中科微)

  • 封装:

    TSSOP20_6.5X4.4MM

  • 描述:

    CSM32RV20 是一款基于 RISC-V 核的低功耗 MCU 芯片,TSSOP20,32MHZ,4KB

  • 数据手册
  • 价格&库存
CSM32RV20 TSSOP20 数据手册
CSM32RV20 CSM32RV20 芯片手册 Rev1.8 2022/04/27 1 / 191 CSM32RV20 1 简介 CSM32RV20 是一款基于 RISC-V 核的低功耗 MCU 芯片。 ● 内置 RISC-V RV32IMAC 内核(2.6 CoreMark/MHz); ● 最高 32MHz 工作频率; ● 内置 4kB 的 SRAM; ● 内置 8B 的 ALWAYS 寄存器,能在掉电模式 2 下保存数据; ● 内置 4~40kB 的嵌入式 FLASH,512B 的 NVM,至少能擦写 10 000 次; ● 内置 2 个 SPI MASTER; ● 内置 1 个 I2C MASTER; ● 内置 4 个 UART 支持最高 1Mbps; ● 内置 2 个 TIMER,每个 TIMER 支持 4 路互补 PWM 输出; ● 内置 1 个快速的高精度 13/14/15/16bit ADC,集成 1.2V 高精度基准; ● 宽 ADC 输入电压范围:0 ~ VDD(VDD ≤ 4.8V); ● ADC 支持 11 个输入通道,最多支持 9 个触摸按键; ● 内置 3 个快速比较器; ● 内置低压检测模块; ● 内置 RF 检测模块; ● 最多支持 30 个 GPIO 和 16 个外部中断; ● 内置硬件看门狗; ● 内置 1 个 RTC,在掉电模式 2 下不工作; ● 支持 4 种低功耗模式,最低功耗小于 1uA(看门狗工作); ● 内置 32 位真随机数发生器; ● 支持串口和无线 ISP 在线升级(无线 ISP 需外接 Si24R1); ● 支持 cJTAG 2 线调试接口; ● 工作电压范围:1.8 ~ 5.5V; ● 支持 4x4mm QFN32、TSSOP20 和 3x3mm QFN20 封装。 Rev1.8 2022/04/27 2 / 191 CSM32RV20 32 31 30 29 28 27 26 25 1 24 2 23 3 22 4 21 CSM32RV20 5 20 6 19 7 18 8 17 9 10 11 12 13 14 15 16 图 1-1 管脚信息图(4x4 mm QFN32) 表 1-1 管脚信息表(4x4 mm QFN32) 序号 端口 I/O 1 PB1 IO - 2 PB0 IO - 3 PA15 IO TIM2_CH4N/TX4/ EXTI[15] RF 检测 4 PA14 IO ADC_TRI/TIM2_CH4/RX4/ EXTI[14] - 5 PA13 IO TIM2_CH3N/EXTI[13] 电压输出 REFN 6 PA12 IO TIM2_CH3/EXTI[12] PGA 输入 7 PA11 IO TIM2_BKIN/TIM2_CH2N/TX3/EXTI[11] 电压输出 REFP 8 PA10 IO TIM1_BKIN/TIM2_CH2/RX3/EXTI[10] ADC_IN9 9 PA9 IO TIM1_CH1/TX/TIM2_CH1N/EXTI[9] ADC_IN8 10 PA8 IO SDA/RX/TIM2_CH1/EXTI[8] ADC_IN7 11 NRST I 外部复位,低电平复位 - 12 PA7 IO SCL/MOSI/TIM1_CH4N/EXTI[7] ADC_IN6 13 PA6 IO TX1/MISO/TIM1_CH4/EXTI[6] ADC_IN5 14 PA5 IO RX1/SCK/TIM1_CH3N/EXTI[5] ADC_IN4 15 PA4 IO MOSI/TIM1_CH1IN/TIM1_CH3/TX2/EXTI[4] ADC_IN3 16 PA3 IO MISO/TIM1_CH1N/TIM1_CH2N/RX2/EXTI[3] ADC_IN2 17 PA2 IO SCK/TIM1_CH1/TIM1_CH2/EXTI[2] - 18 PA1 IO TMSC/SDA/TIM1_CH1N/EXTI[1] - 19 PA0 IO TCKC/SCL/TIM1_CH1/EXTI[0] - 20 VDD S 电源 - 21 PB13 IO - OSC_OUT 22 PB12 IO - OSC_IN 23 PB11 IO - COMP3- 24 PB10 IO - COMP3+ Rev1.8 2022/04/27 复用功能 额外功能 3 / 191 CSM32RV20 25 PB9 IO - COMP2- 26 PB8 IO - COMP2+ 27 PB7 IO - COMP1- 28 PB6 IO - COMP1+ 29 PB5 IO - - 30 PB4 IO SPI2_MISO - 31 PB3 IO SPI2_MOSI - 32 PB2 IO SPI2_SCK - 注:S:电源供电引脚;I:输入;O:输出;I/O:输入/输出; 地接在封装外壳的底部金属片上,必须接地。 Rev1.8 2022/04/27 4 / 191 CSM32RV20 PA15 1 20 PB12 PA14 2 19 PB13 PA13 3 18 VDD PA12 4 17 VSS PA11 5 16 PA0 CSM32RV20 PA10 6 15 PA1 PA9 7 14 PA2 PA8 8 13 PA3 PA7 9 12 PA4 PA6 10 11 PA5 图 1-2 管脚信息图(TSSOP 20) 表 1-2 管脚信息表(TSSOP 20) 序号 端口 I/O 复用功能 额外功能 1 PA15 IO TIM2_CH4N/TX4/ EXTI[15] RF 检测 2 PA14 IO ADC_TRI/TIM2_CH4/RX4/ EXTI[14] - 3 PA13 IO TIM2_CH3N/EXTI[13] 电压输出 REFP 4 PA12 IO TIM2_CH3/EXTI[12] PGA 输入 5 PA11 IO TIM2_BKIN/TIM2_CH2N/TX3/EXTI[11] 电压输出 REFN 6 PA10 IO TIM1_BKIN/TIM2_CH2/RX3/EXTI[10] ADC_IN9 7 PA9 IO TIM1_CH1/TX/TIM2_CH1N/EXTI[9] ADC_IN8 8 PA8 IO SDA/RX/TIM2_CH1/EXTI[8] ADC_IN7 9 PA7 IO SCL/MOSI/TIM1_CH4N/EXTI[7] ADC_IN6 10 PA6 IO TX1/MISO/TIM1_CH4/EXTI[6] ADC_IN5 11 PA5 IO RX1/SCK/TIM1_CH3N/EXTI[5] ADC_IN4 12 PA4 IO MOSI/TIM1_CH1IN/TIM1_CH3/TX2/EXTI[4] ADC_IN3 13 PA3 IO MISO/TIM1_CH1N/TIM1_CH2N/RX2/EXTI[3] ADC_IN2 14 PA2 IO SCK/TIM1_CH1/TIM1_CH2/EXTI[2] - 15 PA1 IO TMSC/SDA/TIM1_CH1N/EXTI[1] - 16 PA0 IO TCKC/SCL/TIM1_CH1/EXTI[0] - 17 VSS S 地 - 18 VDD S 电源 - 19 PB13 O - OSC_OUT 20 PB12 I - OSC_IN 注:S:电源供电引脚;I:输入;O:输出;I/O:输入/输出; Rev1.8 2022/04/27 5 / 191 CSM32RV20 PA1 PA2 PA3 PA4 PA5 20 19 18 17 16 1 15 PA6 2 14 PA7 CSM32RV20 3 13 PA8 4 12 PA9 5 11 PA10 6 PB8 7 PA13 8 PA14 9 PA12 10 PA11 图 1-3 管脚信息图(3x3 mm QFN20) 表 1-3 管脚信息表(3x3 mm QFN20) 序号 端口 I/O 复用功能 额外功能 1 PA0 IO TCKC/SCL/TIM1_CH1/EXTI[0] - 2 VDD S 电源 - 3 PB13 IO - OSC_OUT 4 PB12 IO - OSC_IN 5 PB9 IO - COMP2- 6 PB8 IO - COMP2+ 7 PA13 IO TIM2_CH3N/EXTI[13] 电压输出 REFN 8 PA14 IO ADC_TRI/TIM2_CH4/RX4/ EXTI[14] - 9 PA12 IO TIM2_CH3/EXTI[12] PGA 输入 10 PA11 IO TIM2_BKIN/TIM2_CH2N/TX3/EXTI[11] 电压输出 REFP 11 PA10 IO TIM1_BKIN/TIM2_CH2/RX3/EXTI[10] ADC_IN9 12 PA9 IO TIM1_CH1/TX/TIM2_CH1N/EXTI[9] ADC_IN8 13 PA8 IO SDA/RX/TIM2_CH1/EXTI[8] ADC_IN7 14 PA7 IO SCL/MOSI/TIM1_CH4N/EXTI[7] ADC_IN6 15 PA6 IO TX1/MISO/TIM1_CH4/EXTI[6] ADC_IN5 16 PA5 IO RX1/SCK/TIM1_CH3N/EXTI[5] ADC_IN4 17 PA4 IO MOSI/TIM1_CH1IN/TIM1_CH3/TX2/EXTI[4] ADC_IN3 18 PA3 IO MISO/TIM1_CH1N/TIM1_CH2N/RX2/EXTI[3] ADC_IN2 19 PA2 IO SCK/TIM1_CH1/TIM1_CH2/EXTI[2] - 20 PA1 IO TMSC/SDA/TIM1_CH1N/EXTI[1] - 注:S:电源供电引脚;I:输入;O:输出;I/O:输入/输出; 地接在封装外壳的底部金属片上,必须接地。 Rev1.8 2022/04/27 6 / 191 CSM32RV20 目 录 1 简介......................................................................................................................... 2 目 录............................................................................................................................ 7 2 存储器和总线架构............................................................................................... 14 2.1 系统架构................................................................................................. 14 2.2 存储器映射............................................................................................. 14 2.3 嵌入式 SRAM ........................................................................................ 15 2.4 嵌入式 FLASH ....................................................................................... 15 2.5 嵌入式 ROM .......................................................................................... 16 2.6 DATA_ALWAYS .................................................................................. 16 3 低功耗模式........................................................................................................... 17 3.1 低功耗模式的进入和退出..................................................................... 17 3.1.1 进入低功耗模式.............................................................................. 17 3.1.2 退出低功耗模式.............................................................................. 17 3.2 低功耗寄存器......................................................................................... 18 3.2.1 低功耗模式寄存器(LPMODE) ................................................. 18 3.2.2 低功耗标志寄存器(LPRST_FLAG) ......................................... 19 4 复位和时钟控制................................................................................................... 20 4.1 复位......................................................................................................... 20 4.2 软复位寄存器(SRST) ....................................................................... 20 4.3 时钟......................................................................................................... 20 4.3.1 功能介绍.......................................................................................... 21 4.4 时钟控制寄存器..................................................................................... 21 4.4.1 外设使能寄存器(CMU_PER_EN) ............................................ 22 4.4.2 时钟源选择寄存器(CMU_CLK_SEL) ..................................... 22 4.4.3 时钟分频寄存器(CMU_CLK_DIV) ......................................... 23 4.4.4 时钟源开关寄存器(CLK_SRC_EN) ......................................... 24 4.4.5 时钟状态寄存器(CMU_OSC_SR) ............................................ 24 4.4.6 RCOSC 频率选择(RCOSC_SEL) ............................................. 25 4.5 CMU 寄存器映射 .................................................................................. 25 5 通用和复用功能 I/O ............................................................................................ 26 5.1 GPIO 功能描述 ...................................................................................... 26 5.1.1 主要功能.......................................................................................... 26 5.1.2 输入配置.......................................................................................... 29 5.1.3 输出配置.......................................................................................... 30 5.1.4 复用功能配置.................................................................................. 31 5.1.5 模拟功能配置.................................................................................. 31 5.2 GPIOA 寄存器描述 ............................................................................... 32 5.2.1 GPIOA 模式控制寄存器(GPIOA_MODER) ............................ 32 5.2.2 GPIOA 输出控制寄存器(GPIOA_OTYPER) .......................... 33 5.2.3 GPIOA 输入模式控制寄存器(GPIOA_ITYPER) .................... 35 Rev1.8 2022/04/27 7 / 191 CSM32RV20 6 5.2.4 GPIOA 上下拉控制寄存器(GPIOA_PUPDR) ......................... 36 5.2.5 GPIOA 性能控制寄存器(GPIOA_SDR) .................................. 38 5.2.6 GPIOA 中断模式寄存(GPIOA_LPMR) ................................... 40 5.2.7 GPIOA 外部中断采集使能寄存器(GPIOA_INTER) .............. 40 5.2.8 GPIOA 输入数据寄存器(GPIOA_IDR) ................................... 41 5.2.9 GPIOA 输出数据寄存器(GPIOA_ODR) .................................. 41 5.2.10 GPIOA 写使能控制寄存器(GPIOA_BSR) .............................. 42 5.2.11 GPIOA 复用控制寄存器高位(GPIOA_AFRH) ....................... 42 5.2.12 GPIOA 复用控制寄存器低位(GPIOA_AFRL) ........................ 43 5.3 GPIOA 寄存器映射 ............................................................................... 44 5.4 GPIOB 寄存器描述................................................................................ 45 5.4.1 GPIOB 模式控制寄存器(GPIOB_MODER) ............................ 45 5.4.2 GPIOB 输出控制寄存器(GPIOB_OTYPER) ........................... 46 5.4.3 GPIOB 输入模式控制寄存器(GPIOB_ITYPER)..................... 48 5.4.4 GPIOB 上下拉控制寄存器(GPIOB_PUPDR) .......................... 49 5.4.5 GPIOB 性能控制寄存器(GPIOB_SDR) ................................... 51 5.4.6 GPIOB 输入数据寄存器(GPIOB_IDR) .................................... 52 5.4.7 GPIOB 输出数据寄存器(GPIOB_ODR) .................................. 53 5.4.8 GPIOB 读写使能控制寄存器(GPIOB_BSR) ........................... 53 5.4.9 GPIOB 复用控制寄存器高位(GPIOB_AFRH) ........................ 54 5.4.10 GPIOB 复用控制寄存器低位(GPIOB_AFRL) ........................ 55 5.5 GPIOB 寄存器映射................................................................................ 56 中断....................................................................................................................... 57 6.1 中断简介................................................................................................. 57 6.2 CLIC 寄存器 .......................................................................................... 58 6.2.1 CLIC 中断等待寄存器(clicintip) .............................................. 58 6.2.2 CLIC 中断使能寄存器(clicintie)............................................... 59 6.2.3 CLIC 中断配置寄存器(clicintcfg) ............................................ 59 6.2.4 CLIC 配置寄存器(cliccfg)......................................................... 59 6.3 CLIC 寄存器映射 .................................................................................. 60 6.4 外部中断(EXTI) ............................................................................... 60 6.4.1 EXTI 介绍 ....................................................................................... 60 6.4.2 外部中断输入状态寄存器(EXTI_ISR) .................................... 61 6.4.3 外部中断输入使能寄存器(EXTI_IEN) .................................... 61 6.5 EXTI 寄存器映射 .................................................................................. 62 6.6 中断操作................................................................................................. 62 6.6.1 中断的进入和退出.......................................................................... 62 6.6.2 中断等级和优先级.......................................................................... 62 6.7 中断控制状态寄存器............................................................................. 63 6.7.1 机器状态寄存器(mstatus) ......................................................... 63 6.7.2 机器异常向量寄存器(mtvec) .................................................... 63 6.7.3 机器模式中断使能寄存器(mie)................................................ 64 Rev1.8 2022/04/27 8 / 191 CSM32RV20 7 8 9 6.7.4 机器模式中断等待寄存器(mip) ............................................... 65 6.7.5 机器模式异常原因寄存器(mcause).......................................... 65 6.7.6 机器模式异常向量表(mtvt) ...................................................... 67 6.7.7 中断入口地址和中断使能(mnxti) ............................................ 67 6.7.8 机器模式中断状态寄存器(mintstatus) ..................................... 68 6.7.9 机器模式 Scratch 寄存器(mscratch) ......................................... 68 6.7.10 机器异常 PC 寄存器(mepc) ............................................... 68 6.7.11 机器模式异常值寄存器(mtval) ......................................... 69 6.8 中断状态寄存器映射............................................................................. 69 实时时钟(RTC) ............................................................................................... 71 7.1 RTC 介绍 ................................................................................................ 71 7.2 寄存器说明............................................................................................. 71 7.2.1 机器模式计时器寄存器(mtime) ............................................... 71 7.2.2 机器模式计时器比较值寄存器(mtimecmp) ............................ 72 7.3 寄存器映射............................................................................................. 73 看门狗................................................................................................................... 74 8.1 独立看门狗............................................................................................. 74 8.1.1 简介.................................................................................................. 74 8.1.2 IWDG 寄存器描述 .......................................................................... 75 8.1.3 IWDG 寄存器映射 .......................................................................... 76 高级定时器(TIMER1&TIMER2)................................................................... 77 9.1 简介......................................................................................................... 77 9.2 主要特性................................................................................................. 77 9.3 框图......................................................................................................... 78 9.4 功能描述................................................................................................. 78 9.4.1 时基单元.......................................................................................... 78 9.4.2 计数器模式...................................................................................... 80 9.4.3 重复向下计数器.............................................................................. 88 9.4.4 时钟选择.......................................................................................... 89 9.4.5 捕获/比较通道 ................................................................................ 91 9.4.6 输入捕获模式.................................................................................. 92 9.4.7 PWM 输入模式 ............................................................................... 93 9.4.8 强制输出模式.................................................................................. 94 9.4.9 输出比较模式.................................................................................. 94 9.4.10 PWM 模式 ....................................................................................... 95 9.4.11 互补输出和死区插入............................................................... 98 9.4.12 刹车功能................................................................................... 99 9.4.13 六步 PWM 产生 ..................................................................... 101 9.4.14 单脉冲模式............................................................................. 102 9.4.15 定时器输入异或功能............................................................. 104 9.4.16 与霍尔传感器的接口............................................................. 104 9.4.17 定时器和外部触发的同步..................................................... 105 Rev1.8 2022/04/27 9 / 191 CSM32RV20 TIMERx 寄存器描述 ........................................................................... 108 9.5.1 控制寄存器(TIMERx_CR1) .................................................... 108 9.5.2 滤波寄存器(TIMERx_ICF) ..................................................... 111 9.5.3 中断使能寄存器(TIMERx_DIER) .......................................... 112 9.5.4 状态寄存器(TIMERx_SR) ...................................................... 113 9.5.5 事件产生寄存器(TIMERx_EGR) ........................................... 115 9.5.6 捕获/比较模式寄存器 1(TIMERx_CCMR1) ......................... 116 9.5.7 捕获/比较模式寄存器 2(TIMERx_CCMR2) ......................... 118 9.5.8 捕获/比较使能寄存器(TIMERx_CCER)................................ 119 9.5.9 计数寄存器(TIMERx_CNT) ................................................... 122 9.5.10 分频寄存器(TIMERx_PSC) ............................................. 122 9.5.11 自动重装载寄存器(TIMERx_ARR) ................................ 122 9.5.12 重复计数寄存器(TIMERx_RCR) .................................... 123 9.5.13 捕获/比较寄存器 1(TIMERx_CCR1) .............................. 124 9.5.14 捕获/比较寄存器 2(TIMERx_CCR2) .............................. 124 9.5.15 捕获/比较寄存器 3(TIMERx_CCR3) .............................. 125 9.5.16 捕获/比较寄存器 4(TIMERx_CCR4) .............................. 125 9.5.17 刹车和死区寄存器(TIMERx_BDTR) ............................. 126 9.5.18 Timer 时钟使能寄存器(TIMER_CLKEN) ............................. 128 9.6 TIM1&TIM2 寄存器映射 .................................................................... 128 10 自动唤醒(WUP)..................................................................................... 130 10.1 简介....................................................................................................... 130 10.2 寄存器描述........................................................................................... 130 10.2.1 wup 数据寄存器(wup_data) .................................................... 130 10.2.2 wup 中断使能寄存器(wup_irq_en)......................................... 130 10.2.3 wup 中断寄存器(wup_irq) ...................................................... 131 10.3 寄存器映射........................................................................................... 131 11 模拟/数字转换(ADC) ............................................................................ 132 11.1 简介....................................................................................................... 132 11.2 功能描述............................................................................................... 132 11.3 寄存器描述........................................................................................... 134 11.3.1 ADC 状态寄存器(ADC_ISR) ................................................. 134 11.3.2 ADC 中断控制寄存器(ADC_IER) ......................................... 134 11.3.3 ADC 控制寄存器(ADC_CR) .................................................. 135 11.3.4 ADC 通道选择寄存器(ADC_SEL)......................................... 135 11.3.5 ADC 数据寄存器(ADC_DR) .................................................. 136 11.3.6 ADC 通用控制寄存器(ADC_CCR)........................................ 136 11.3.7 ADC 分辨率寄存器(ADC_CFG) ............................................ 138 11.4 寄存器映射........................................................................................... 139 12 I2C 接口....................................................................................................... 140 12.1 介绍....................................................................................................... 140 12.1.1 主要特点................................................................................. 140 9.5 Rev1.8 2022/04/27 10 / 191 CSM32RV20 功能描述............................................................................................... 140 I2C 寄存器描述.................................................................................... 143 12.3.1 状态寄存器(I2C_STATUS) ............................................. 143 12.3.2 控制寄存器(I2C_CTRL) .................................................. 143 12.3.3 数据寄存器(I2C_DATA) ................................................. 144 12.4 寄存器映射........................................................................................... 145 串行外设接口(SPI1) .............................................................................. 146 13.1 简介....................................................................................................... 146 13.1.1 主要特征................................................................................. 146 13.2 功能描述............................................................................................... 146 13.3 寄存器描述........................................................................................... 149 13.3.1 控制寄存器(SPI1_CTRL)................................................. 149 13.3.2 数据寄存器(SPI1_DATA) ................................................ 150 13.3.3 状态寄存器(SPI1_STATUS) ............................................ 150 13.4 寄存器映射........................................................................................... 150 串行外设接口(SPI2) .............................................................................. 152 14.1 简介....................................................................................................... 152 14.1.1 主要特征........................................................................................ 152 14.2 功能描述............................................................................................... 152 14.3 寄存器描述........................................................................................... 153 14.3.1 控制寄存器(SPI2_CTRL)................................................. 153 14.3.2 数据寄存器(SPI2_DATA) ................................................ 154 14.3.3 状态寄存器(SPI2_STATUS) ............................................ 154 14.4 寄存器映射........................................................................................... 155 异步收发器(UART) ............................................................................... 156 15.1 简介....................................................................................................... 156 15.1.1 主要特性................................................................................. 156 15.2 功能描述............................................................................................... 156 15.3 UART 的引脚映射 ............................................................................... 157 15.4 寄存器描述........................................................................................... 157 15.4.1 控制寄存器(UART_CTRL) ............................................. 158 15.4.2 数据寄存器(UART_DATA) ............................................ 158 15.4.3 波特率自适应配置寄存器(AUTOBPS_CONFIG) ......... 159 15.4.4 波特率自适应结果寄存器(AUTOBPS_RESULT) ......... 160 15.5 寄存器映射........................................................................................... 160 低压检测(LV) ........................................................................................ 161 16.1 简介....................................................................................................... 161 16.2 寄存器描述........................................................................................... 161 16.2.1 低压检测中断使能寄存器(LV_IRQ_EN) ....................... 161 16.2.2 低压检测中断寄存器(LV_IRQ) ...................................... 161 16.2.3 低压阈值寄存器(LV_TH) ................................................ 162 16.3 寄存器映射........................................................................................... 162 12.2 12.3 13 14 15 16 Rev1.8 2022/04/27 11 / 191 CSM32RV20 17 18 19 20 21 22 23 24 随机数生成模块(RANDGEN) .............................................................. 163 17.1 简介....................................................................................................... 163 17.2 寄存器描述.................................................................................... 163 17.3 寄存器映射........................................................................................... 164 比较器(COMP) ...................................................................................... 165 18.1 简介....................................................................................................... 165 18.2 寄存器描述........................................................................................... 165 18.2.1 比较器控制寄存器(COMP_CTRL) ................................. 165 18.2.2 比较器中断寄存器(COMP_IRQ) .................................... 166 18.2.3 比较器结果寄存器(COMP_RESULT) ............................ 167 18.3 寄存器映射........................................................................................... 167 UART 波特率自适应(TRIM) ................................................................ 169 19.1 简介....................................................................................................... 169 19.2 寄存器描述........................................................................................... 169 19.2.1 配置寄存器(TRIM_CLK_CFG) ....................................... 169 19.2.2 结果寄存器(TRIM_CLK_RESULT) ............................... 170 19.2.3 标志寄存器(TRIM_CLK_FLAG) .................................... 170 19.3 使用方法............................................................................................... 171 19.3.1 波特率自适应......................................................................... 171 FLASH/NVM 烧录 ..................................................................................... 172 20.1 FLASH/NVM 主要特性 ...................................................................... 172 20.2 FLASH/NVM 映射 .............................................................................. 172 20.2.1 NVM 操作 ..................................................................................... 173 20.2.2 FLASH 读写保护 .......................................................................... 174 20.3 FLASH/NVM 烧录 .............................................................................. 174 Debug 支持 .................................................................................................. 176 21.1 概述....................................................................................................... 176 21.2 cJTAG 调试接口 .................................................................................. 176 RISC-V 内核 ............................................................................................... 177 芯片电子签名.............................................................................................. 178 23.1 芯片版本号(VersionSize) ............................................................... 178 23.2 MCUID ................................................................................................. 178 电气参数...................................................................................................... 180 24.1 参数条件............................................................................................... 180 24.1.1 最大和最小值......................................................................... 180 24.1.2 典型值..................................................................................... 180 24.1.3 电源供电方案......................................................................... 180 24.1.4 电流消耗测量......................................................................... 180 24.2 绝对最大额定值................................................................................... 181 24.3 操作条件............................................................................................... 181 24.3.1 一般操作条件......................................................................... 181 24.3.2 内部系统时钟源参数............................................................. 182 Rev1.8 2022/04/27 12 / 191 CSM32RV20 24.3.3 外部时钟源参数..................................................................... 182 24.3.4 I/O 端口参数 ................................................................................. 183 24.3.5 ADC 参数 ..................................................................................... 184 24.3.6 低压检测阈值......................................................................... 184 25 封装信息...................................................................................................... 185 25.1 芯片丝印样式....................................................................................... 188 25.2 芯片丝印字母的详细说明................................................................... 188 26 版本信息...................................................................................................... 190 27 技术支持与联系方式.................................................................................. 191 Rev1.8 2022/04/27 13 / 191 CSM32RV20 2 存储器和总线架构 2.1 系统架构 FLASH NVM RISC-V Core FLASH Interface ROM SRAM BUS DATA_ALWAYS I2C UART1 TIMER1 SPI1 SPI2 TIMER2 GPIOA/B RAND ADC IWDG TRIM EXTI CMU LV WUP UART2 UART3 UART4 COMP1 COMP2 COMP3 LPMODE 图 2-1 系统架构 2.2 存储器映射 表 2-1 存储器映射 Base Top Attr Description Notes 0x0000_0100 0x0000_0FFF RWX Debug Debug Address Space 0x0200_0000 0x01FF_FFFF RW CLIC On Core Complex Devices 0x2000_0000 0x2000_9FFF RWX CODE 40kB FLASH Program Space 0x2001_0000 0x2001_03FF RWX NVM 512B NVM(可以保存用户数据) 0x2002_0000 0x2002_0FFF RWX DATA 4kB SRAM 0x2002_8000 0x2002_8007 RWX DATA_ALWAYS 掉电模式 2 下保存数据 Rev1.8 2022/04/27 14 / 191 CSM32RV20 Base Top Attr Description Notes 0x2100_0000 0x2100_17FF RWX CODE Bootloader ROM 0x3000_0004 0x3000_000F RW I2C 0x3000_0010 0x3000_0017 RW UART1 0x3000_0018 0x3000_005F RW TIMER1 0x3000_0060 0x3000_006B RW SPI1 0x3000_0070 0x3000_007B RW SPI2 0x3000_0098 0x3000_0103 RW TIMER2 0x3000_0200 0x3000_026F RW GPIOA/B 0x3000_0238 0x3000_023F RW RANDGEN 0x3000_0280 0x3000_0297 RW ADC 0x3000_02A0 0x3000_02AB RW IWDG 0x3000_02C0 0x3000_02C7 RW EXTI 0x3000_02E0 0x3000_02F7 RW CMU 0x3000_e0330 0x3000_0333 RW LV 0x3000_0600 0x3000_0607 RW LPMODE 0x3000_0610 0x3000_061B RW WUP 0x3000_0700 0x3000_0707 RW UART2 0x3000_0800 0x3000_0807 RW UART3 0x3000_0900 0x3000_0907 RW UART4 0x3000_0B00 0x3000_0D0B RW COMP1/2/3 Peripherals Peripherals 2.3 嵌入式 SRAM 芯片内置了一个 4K 字节的 SRAM。支持字节、半字(16 位)或全字(32 位)访问。SRAM 的起始地址是 0x2002_0000。 2.4 嵌入式 FLASH FLASH 主要特性: ● 10K×32 位(40K 字节)主存储空间; ● 每个扇区 512 字节; ● 1 个 NVM,512 字节; ● 支持在线读写,可用来保存用户数据; ● 支持字节、半字(16 位)或全字(32 位)读,按 8 位写; ● FLASH 读/编程/擦除操作; ● 读写保护。 Rev1.8 2022/04/27 15 / 191 CSM32RV20 2.5 嵌入式 ROM 芯片内置的 ROM,用于存储引导程序。 2.6 DATA_ALWAYS DATA_ALWAYS 存储器能在掉电模式 2 下保存数据。每次读写占用 12 个 系统时钟周期,且只能按字写。除此之外,MCU 都为单周期执行,无总线延 迟。 地址(HEX) 复位值 功能 0x2002_8000 任意值 专用存储器,只有断电才会丢失数据 0x2002_8004 任意值 专用存储器,只有断电才会丢失数据 Rev1.8 2022/04/27 16 / 191 CSM32RV20 3 低功耗模式 在系统或电源复位以后,微控制器处于运行状态。运行状态下默认使用 RCOSC 为 MCU 提供时钟执行程序代码。当 MCU 不需继续运行时,可以利用多 个低功耗模式来节省功耗,例如等待某个外部中断时。根据最低电源消耗,最快 速启动时间和可用唤醒源的需求,选取一个最佳的折中方案来帮助用户选定一个 低功耗模式。 CSM32RV20 有四种低功耗模式: ● 待机模式(内核停止,外设仍可运行); ● 睡眠模式(除 3K 时钟外,所有的时钟都可以停止); ● 掉电模式 1(见表 3-1); ● 掉电模式 2(见表 3-1,IO 保持掉电前状态)。 此外,在运行模式下,可以通过以下方式降低功耗: ● 降低系统时钟; ● 关闭未被使用的外设的时钟; ● 合理配置 I/O。 表 3-1 低功耗模式一览表 工作模式 LPMODE LDO LPLDO RCOSC OSC 3K[1] 唤醒 待机模式 2’b00 ON ON ON ON ON 任意中断、看门狗与复位 睡眠模式 2’b01 ON ON OFF OFF ON 任意中断、看门狗与复位 掉电模式 1 2’b10 OFF ON OFF OFF ON 任意中断、看门狗与复位 掉电模式 2 2’b11 OFF OFF OFF OFF ON 任意中断、看门狗与复位 [1] 3K 指的是在 MCU 内部低速时钟,其频率为 3kHz,且无法关闭; 3.1 低功耗模式的进入和退出 3.1.1 进入低功耗模式 配置 LPMODE 寄存器后执行 WFI 指令,如果当前没有中断,可以直接进 入低功耗模式。如果当前有中断,且中断使能,MCU 无法进入低功耗模式,继 续执行 WFI 指令之后的程序。 3.1.2 退出低功耗模式 为了成功退出低功耗模式,需要在执行 WFI 指令之前使能用于唤醒的中断, Rev1.8 2022/04/27 17 / 191 CSM32RV20 并且使能对应的 clicintie(CLIC Interrupt Enable)寄存器。当执行 WFI 指令并成 功进入低功耗模式后,如果已经打开了中断总使能(mstatus.MIE=1),当使能的 中断产生后,MCU 唤醒跳到中断处理函数处继续执行。如果没有打开中断总使 能(mstatus.MIE=0),当使能的中断产生后,MCU 唤醒,从 WFI 指令的下一条 指令继续运行。 待机模式唤醒消耗的时间最少,但功耗较大。 进入睡眠模式后,OSC 和 RCOSC 振荡电路均被关闭,能够进一步降低功 耗。当使能的中断产生后,根据时钟来源的不同,需要几个到几百个时钟后, 才可以继续执行。 进入掉电模式 2 后,OSC 和 RCOSC 振荡电路均被关闭,数字电源关闭, FLASH 进入深度待机模式,此模式功耗最小。当使能的中断产生后,芯片立即 被唤醒至少要过 160us 后,芯片复位,用户程序重新开始运行。 在掉电模式 2 下,RAM 和寄存器的值会丢失,DATA_ALWAYS 存储器的 值能保留。外部复位引脚和看门狗复位可以退出低功耗模式,LPMODE 复位值 为 0,芯片重新运行。 3.2 低功耗寄存器 3.2.1 低功耗模式寄存器(LPMODE) 地址:0x3000_0600 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 Lpmode Reserved RW 位 标记 功能描述 31:2 Reserved 保留位 1:0 lpmode 2’b00:待机模式; 2’b01:睡眠模式; 2’b10:掉电模式 1; 2’b11:掉电模式 2。 注:LPMODE 寄存器还包含一组镜像寄存器。当芯片收到干扰导致寄存 器和镜像寄存器的值不一致时,芯片会复位,重新执行 Rev1.8 2022/04/27 18 / 191 CSM32RV20 3.2.2 低功耗标志寄存器(LPRST_FLAG) 地址:0x3000_0604 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 lprst_flag Reserved R 位 标记 功能描述 31:1 Reserved 保留位 芯片从掉电模式 2 被唤醒,重新复位标志位。 0 lprst_flag 1:复位由掉电模式 2 唤醒产生; 0:复位由其他方式产生 Rev1.8 2022/04/27 19 / 191 CSM32RV20 复位和时钟控制 4 4.1 复位 复位将所有寄存器置为它们的复位状态。 当发生以下任一事件时,产生一个系统复位: 1. NRST 引脚上的低电平(外部复位); 2. 独立看门狗计数溢出(IWDG 复位); 3. 软件复位(SRST); 4. 芯片上电复位; 5. 进入低功耗模式中的掉电模式 2 之后唤醒的复位。 4.2 软复位寄存器(SRST) 地址:0x3000_0360 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 srst Reserved RW 位 标记 功能描述 31:1 Reserved 保留位 0 srst 写 1 软复位,系统复位 4.3 时钟 ● 自动过滤晶振起振时的时钟抖动; ● 外设时钟和 MCU 时钟可以独立配置时钟源; ● 外设时钟与 MCU 时钟可以独立配置分频系数,降低系统工作频率节约功耗; ● 内置分频器支持 1:1 ~ 1:31,占空比为 50%; ● 支持无毛刺时钟切换。 Rev1.8 2022/04/27 20 / 191 CSM32RV20 4.3.1 功能介绍 4.3.1.1 时钟架构 rtc_clk_div[4:0] mcu_clk_src[1:0] RCOSC OSC rcosc_en 00 osc_en 01 mcu_clk_div[4:0] 分频 (1:2-1:31) RTC 分频 (1:1-1:31) MCU 分频 (1:1-1:8) ADC 10 3K per_clk_src[1:0] 00 01 per_clk_div[4:0] adc_clk_div[1:0] per_en 10 分频 (1:1-1:31) PER 图 4-1 时钟架构 Clock 模块一共有三个时钟源,分别是内部高速振荡器(RCOSC),外部晶 振(OSC)和内部低速时钟(3K)。每个时钟都支持 1:1 ~ 1:31 分频,并支持单 独把 OSC 和 RCOSC 时钟源切断用以降低功耗。每一个模块的时钟输入都支持 选择任意一个时钟源。 4.3.1.2 看门狗时钟 内部独立工作的看门狗时钟来自于(3K)时钟,这个时钟不能被关闭。一旦 看门狗被打开,除非复位,不能被关闭;芯片支持上电复位启动看门狗,在 FLASH 下载程序时配置。 4.3.1.3 时钟模块的控制 ● 在复位之后,默认选择 RCOSC 为当前的系统时钟; ● 当外设或者 MCU 选中某个时钟源时,被选时钟源不能被关闭; ● 切换时钟源时应该首先确认需要被切换的时钟源是否已稳定,否则无法完成切换; ● RTC 的时钟频率应该小于 MCU 时钟频率的 1/2。 4.4 时钟控制寄存器 基地址:0x3000_02E4. Rev1.8 2022/04/27 21 / 191 CSM32RV20 4.4.1 外设使能寄存器(CMU_PER_EN) 偏移地址:0x00 复位值:0x0000_0001 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 per_en Reserved RW 位 标记 功能描述 31:1 Reserved 保留位 0 per_en 外设时钟使能位,0:关闭外设时钟 1:使能外设时钟 4.4.2 时钟源选择寄存器(CMU_CLK_SEL) 偏移地址:0x04 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 per_clk_src mcu_clk_src RW RW Reserved 位 标记 功能描述 31:4 Reserved 保留位 外设时钟选择: 00:外设时钟源来自内部高速时钟 RCOSC; 3:2 per_clk_src 01:外设时钟源来自外部高速晶振 OSC; 10:外设时钟来自内部低速时钟 3K; 11:MCU 时钟来源选择 00:MCU 时钟来自于内部高速时钟 RCOSC; 1:0 mcu_clk_src 01:MCU 时钟来自于外部高速晶振 OSC; 10:MCU 时钟来自于内部低速时钟 3K; 11:- Rev1.8 2022/04/27 22 / 191 CSM32RV20 4.4.3 时钟分频寄存器(CMU_CLK_DIV) 偏移地址:0x08 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 7 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 rtc_clk_div per_clk_div mcu_clk_div RW RW RW Reserved 位 标记 功能描述 31:15 Reserved 保留位 RTC 时钟分频系数: 0000x:RTC clock is divided by 2;0001x:RTC clock is divided by 2; 0010x:RTC clock is divided by 4;0011x:RTC clock is divided by 6; 0100x:RTC clock is divided by 8;0101x:RTC clock is divided by 10; 0110x:RTC clock is divided by 12;0111x:RTC clock is divided by 14; 14:10 rtc_clk_div 1000x:RTC clock is divided by 16;1001x:RTC clock is divided by 18; 1010x:RTC clock is divided by 20;1011x:RTC clock is divided by 22; 1100x:RTC clock is divided by 24;1101x:RTC clock is divided by 26; 1110x:RTC clock is divided by 28;1111x:RTC clock is divided by 30 注:x 为 0 或 1。 外设时钟分频系数: 00000:peripheral clock is not divided; 00001:peripheral clock is not divided; 00010:peripheral clock is divided by 2; 9:5 per_clk_div 00011:peripheral clock is divided by 3; 00100:peripheral clock is divided by 4; 00101:peripheral clock is divided by 5; …….. 11111:peripheral clock is divided by 31 MCU 时钟分频系数 00000:MCU clock is not divided; 00001:MCU clock is not divided; 00010:MCU clock is divided by 2; 4:0 mcu_clk_div 00011:MCU clock is divided by 3; 00100:MCU clock is divided by 4; 00101:MCU clock is divided by 5; …….. 11111:MCU clock is divided by 31 Rev1.8 2022/04/27 23 / 191 CSM32RV20 4.4.4 时钟源开关寄存器(CLK_SRC_EN) 偏移地址:0x0C 复位值:0x0000_0002 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 rcosc_en osc_en RW RW Reserved 15 14 13 12 11 10 9 8 7 Reserved 位 标记 功能描述 31:2 Reserved 保留位 RCOSC 开关 0:关闭 RCOSC; 1 1:打开 RCOSC。 当 RCOSC 作为系统内部时钟输入的时候,即使 rcosc_en 配置成 0 也不会 rcosc_en 关闭当前的时钟信号输入,直到内部时钟被切换成其他时钟源之后,rcosc 才会被关闭 晶振(OSC)开关 0 osc_en 0:晶振关闭; 1:晶振打开 4.4.5 时钟状态寄存器(CMU_OSC_SR) 偏移地址:0x10 复位值:0x0000_0009 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 osc_st rcosc_st MCU_clk_st per_clk_st R R R R Reserved 位 标记 功能描述 31:8 Reserved 保留位 7 osc_st OSC 的工作状态 0:OSC 时钟未稳定;1:OSC 时钟已稳定 6 rcosc_st RCOSC 的工作状态 0:RCOSC 时钟未稳定;1:RCOSC 时钟已稳定 MCU 的时钟来源选择状态寄存器 001:RCOSC 在为 MCU 提供时钟; 5:3 mcu_clk_st 010:OSC 在为 MCU 提供时钟; 100:内部 3K 时钟为 MCU 提供时钟 外设的时钟来源选择状态寄存器 2:0 per_clk_st Rev1.8 2022/04/27 001:RCOSC 在为外设提供时钟; 24 / 191 CSM32RV20 位 标记 功能描述 010:OSC 在为外设提供时钟; 100:内部 3K 时钟为外设提供时钟 4.4.6 RCOSC 频率选择(RCOSC_SEL) 地址:0x3000_0E00 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 rcosc_sel Reserved RW 位 标记 功能描述 31:1 Reserved 保留位 0 rcosc_sel RCOSC 时钟频率选择, 0:RCOSC 频率 16MHz; 1:RCOSC 频率 32MHz 4.5 CMU 寄存器映射 CMU 寄存器列表 基地址:0x3000_02E4 寄存器 偏移量 寄描述 CMU_PER_EN 0x00 外设时钟使能控制寄存器 CMU_CLK_SEL 0x04 时钟来源选择 CMU_CLK_DIV 0x08 时钟分频比 CLK_SRC_EN 0x0C 时钟源使能 CMU_OSC_SR 0x10 OSC 时钟状态寄存器 RCOSC_SEL - RCOSC 频率选择 Rev1.8 2022/04/27 25 / 191 CSM32RV20 5 通用和复用功能 I/O GPIO 是用户可配置的通用 IO,每一个 GPIO 口都可以独立配置成输入输 出、外设复用功能或模拟功能。GPIOA0~15 对应 PA0~PA15,GPIOB0~13 对应 PB0~PB13。 5.1 GPIO 功能描述 5.1.1 主要功能 ● 输出状态:上拉、下拉功能,开源输出,开漏输出和推挽输出; ● 掉电模式 2 下,IO 会保持掉电前的状态不变; ● GPIO 的输出可以来自于 GPIO 的 ODR 寄存器或者外设功能输出; ● 输入状态:悬空输入,上拉、下拉输入; ● 输入的数据会被存入 GPIO 的 IDR 寄存器或者外设数据输入; ● 支持模拟功能数据传输; ● 外设功能接口可选; ● 可以灵活的为每一个 GPIO 选择对应的输入口; ● IO 模式由 GPIO_MODER 寄存器选择输入模式、输出模式、复用模式和模拟模式。 5.1.1.1 复用功能 本芯片的外部 IO 和内部模块的连接复用器被 GPIOA_AFRH 和 GPIOA_AFRL 寄存器控制,写寄存器 GPIO_MODER[MODERx] = 2’b10 将 GPIOx 配置成复用功能,可以灵活的将内部模块的端口映射到 PAD 上。 每一个 IO 都有一个拆分器把复用功能连通,通过 GPIO_AFRL 和 GPIO_AFRH 两个寄存器来控制具体复用到哪个功能,复用详情见表 5-1。 在复位之后,复用控制器会默认把 PAD 连接到 AF0 功能上,串口 1 支持 ISP。 表 5-1 GPIO 复用功能表 Pin Name AF0 AF0_DI R AF1 AF1_DI R PA0 TCKC I SCL IO PA1 TMSC IO SDA IO Rev1.8 2022/04/27 AF2 TIMER1_ CH1 TIMER1_ 26 / 191 AF2 _DIR IO O AF3 AF3 _DIR CSM32RV20 Pin Name AF0 AF0_DI R AF1 AF1_DI AF2 R AF2 _DIR AF3 AF3 _DIR CH1N PA2 PA3 PA4 PA5 PA6 SPI1 _SCK SPI1_ MISO SPI1_ MOSI UART1 RX1 UART1 TX1 O I O I O PA7 SCL IO PA8 SDA IO TIMER PA9 1_ O CH1 TIM1_ CH1 TIM1_ CH1N TIM1_ CH1N SPI1_ SCK SPI1_ MISO SPI1_ MOSI UART1_ RX UART1_ TX O O O O I O IO 1_ CH2 TIMER1_ CH2N TIMER1_ CH3 TIMER1_ CH3N TIMER1_ CH4 TIMER1_ CH4N TIMER2_ CH1 TIMER2 O TIMER PA10 TIMER1_ I O I O O _CH1N TIMER2_ CH2 BKIN TIMER PA11 2_ TIMER2_ CH2N BKIN PA12 - - PA13 - - PA14 TIMER2_ CH3 TIMER2_ CH3N ADC_ TIMER2_ TRI CH4 TIMER2_ PA15 CH4N IO O IO UART2 RX2 UART2 TX2 IO O O IO O O O O O UART3 RX3 UART3 TX3 IO O O O IO O UART4 RX4 UART4 TX4 IO O PB0 - - - - - - - - PB1 - - - - - - - - O - - - - - - O - - - - - - I - - - - - - PB2 PB3 PB4 SPI2_ SCK SPI2_ MOSI SPI2_ MISO Rev1.8 2022/04/27 27 / 191 CSM32RV20 Pin Name PB5 …….. PB13 AF0_DI AF0 R AF1_DI AF1 R AF2 AF2 _DIR AF3 AF3 _DIR - - - 注:I:输入;O:输出;I/O:输入/输出; 5.1.1.2 模拟功能 IO 功能由 GPIO_MODER 寄存器配置。使用 ADC、COMP 等模块时需要 配置 IO 为模拟模式 GPIO_MODER[MODERx] = 2’b11,支持模拟功能数据传 输。 表 5-2 GPIO 模拟功能表 模拟模式 引脚 I/O PA3 I ADC_IN2(ADC 通道) PA4 I ADC_IN3(ADC 通道) PA5 I ADC_IN4(ADC 通道) PA6 I ADC_IN5(ADC 通道) PA7 I ADC_IN6(ADC 通道) PA8 I ADC_IN7(ADC 通道) PA9 I PA10 I PA11 O 电压输出 REFP PA12 I PGA 输入 PA13 O 电压输出 REFN PA14 O 保留 PA15 I RF 检测输入 PB6 I COMP1+ PB7 I COMP1- PB8 I COMP2+ PB9 I COMP2- PB10 I COMP3+ PB11 I COMP3- PB12 I XC1,OSC 输入 备注 (GPIO 配置) ADC_IN8(ADC 通道) ADC 外部基准高电压端 ADC_IN9(ADC 通道) Rev1.8 2022/04/27 ADC 外部基准低电压端 仅能拉电流 仅能灌电流 28 / 191 CSM32RV20 模拟模式 引脚 I/O PB13 I 备注 (GPIO 配置) XC2,OSC 输出 注:I:输入;O:输出;I/O:输入/输出; 5.1.2 输入配置 当一个 IO 口被配置成输入模式(GPIO_MODER[MODERx] = 2’b00)时, 1. 输出寄存器会被关闭; 2. 施密特触发器打开; 3. 上拉下拉控制口会根据 GPIO_PUPDR 寄存器进行配置; 4. 每个 AHB 周期,输入的数据会被输入寄存器刷新一次; 5. 每个寄存器代表一个 IO 口的输入值。 GPIO_IDRx read GPIO_MODER[MODERx]=00 GPIO_PUPDR[PUPDRx]=01 GPIO_ODRx GPIO_BSRx read/write IO GPIO_PUPDR[PUPDRx]=10 GND1 图 5-1 GPIO 输入配置原理图 当 GPIO 被设置为输入模式时,可被用作外部中断。EXTI[15:0]对应 GPIOA15 ~ 0。中断的使能和屏蔽及触发方式的设置可以在 GPIOA_LPMR 和 GPIOA_INTER 中设置。 表 5-3 GPIO 输入功能表 输入模式 引脚 I/O PA0 I EXTI[0] PA1 I EXTI[1] PA2 I EXTI[2] PA3 I EXTI[3] PA4 I EXTI[4] Rev1.8 2022/04/27 (GPIO 配置) 29 / 191 备注 CSM32RV20 输入模式 引脚 I/O PA5 I EXTI[5] PA6 I EXTI[6] PA7 I EXTI[7] PA8 I EXTI[8] PA9 I EXTI[9] PA10 I EXTI[10] PA11 I EXTI[11] PA12 I EXTI[12] PA13 I EXTI[13] PA14 I EXTI[14] PA15 I EXTI[15] 备注 (GPIO 配置) 5.1.3 输出配置 当一个 IO 口被设置成输出模式(GPIO_MODER[MODERx] = 2’b01)时, 1. 输出数据寄存器会被打开; 2. 施密特触发器输入模式打开; 3. 上拉、下拉控制口会根据 GPIO_PUPDR 寄存器进行配置; 4. 每个 AHB 周期,IO 端口的数据会被输入寄存器刷新一次; 5. 每个写周期,都会把输出寄存器里面的数据送到 IO 口上; read GPIO_IDRx 6.当开漏和开源输出都关闭时,为推挽输出。 GPIO_MODER[MODERx]=00 GPIO_BSRx read/write GPIO_ODRx GPIO_PUPDR[PUPDRx]=01 IO GPIO_MODER [MODERx]=01 GPIO_PUPDR[PUPDRx]=10 GND1 图 5-2 GPIO 输出配置原理图 Rev1.8 2022/04/27 30 / 191 CSM32RV20 5.1.4 复用功能配置 当配置成复用功能(GPIO_MODER[MODERx] = 2’b10)时, 1. 出数据寄存器被芯片内部的模块端口驱动; 2. 口的输入输出方向被模块内部的控制信号决定; 3. 施密特触发器输入模式被激活; GPIO_IDRx 4. 模块的上拉、下拉不再受 GPIO_PUPDR 控制,而是受到与之相连的模块决定。 read GPIO_MODER[MODERx]=10 GPIO_BSRx read/write GPIO_ODRx GPIO_PUPDR[PUPDRx]=01 IO GPIO_MODER [MODERx]=10 GPIO_PUPDR[PUPDRx]=10 GND1 图 5-3 GPIO 复用功能配置原理图 5.1.5 模拟功能配置 当配置成模拟功能时(GPIO_MODER[MODERx] = 2’b11) 1. 输出数据寄存器会被关闭; 2. 施密特触发器会被关闭,输入数据总为 0。 analog_data GPIO_IDRx Res read GPIO_MODER[MODERx]=11 GPIO_PUPDR[PUPDRx]=01 GPIO_ODRx GPIO_BSRx read/write IO GPIO_MODER[MODERx]=11 GPIO_PUPDR[PUPDRx]=10 GND1 Rev1.8 2022/04/27 31 / 191 CSM32RV20 图 5-4 GPIO 模拟功能配置原理图 5.2 GPIOA 寄存器描述 5.2.1 GPIOA 模式控制寄存器(GPIOA_MODER) 偏移地址:0x00 复位值:0x3A00_000A 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 MODER15 MODER14 MODER13 MODER12 MODER11 MODER10 MODER9 MODER8 RW RW RW RW RW RW RW RW 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 MODER7 MODER6 MODER5 MODER4 MODER3 MODER2 MODER1 MODER0 RW RW RW RW RW RW RW RW 位 标记 功能描述 GPIOA15 端口控制位 31:30 MODER15 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA14 端口控制位 29:28 MODER14 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA13 端口控制位 27:26 MODER13 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA12 端口控制位 25:24 MODER12 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA11 端口控制位 23:22 MODER11 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA10 端口控制位 21:20 MODER10 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA9 端口控制位 19:18 17:16 MODER9 MODER8 Rev1.8 2022/04/27 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA8 端口控制位 32 / 191 CSM32RV20 位 标记 功能描述 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA7 端口控制位 15:14 MODER7 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA6 端口控制位 13:12 MODER6 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA5 端口控制位 11:10 MODER5 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA4 端口控制位 9:8 MODER4 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA3 端口控制位 7:6 MODER3 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA2 端口控制位 5:4 MODER2 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA1 端口控制位 3:2 MODER1 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 GPIOA0 端口控制位 1:0 MODER0 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能。 5.2.2 GPIOA 输出控制寄存器(GPIOA_OTYPER) 偏移地址:0x04 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 7 6 5 4 3 2 1 0 OSx RW 15 14 13 12 11 10 9 8 ODx RW Rev1.8 2022/04/27 33 / 191 CSM32RV20 位 标记 31 OS15 功能描述 GPIOA15 开源控制位 0:开源功能关闭; 1:开源功能打开 GPIOA14 开源控制位 30 OS14 0:开源功能关闭; 1:开源功能打开 GPIOA13 开源控制位 29 OS13 0:开源功能关闭; 1:开源功能打开 GPIOA12 开源控制位 28 OS12 27 OS11 0:开源功能关闭; 1:开源功能打开 GPIOA11 开源控制位 0:开源功能关闭; 1:开源功能打开 GPIOA10 开源控制位 26 OS10 0:开源功能关闭; 1:开源功能打开 GPIOA9 开源控制位 25 OS9 0:开源功能关闭; 1:开源功能打开 GPIOA8 开源控制位 24 OS8 0:开源功能关闭; 1:开源功能打开 GPIOA7 开源控制位 23 OS7 0:开源功能关闭; 1:开源功能打开 GPIOA6 开源控制位 22 OS6 21 OS5 0:开源功能关闭; 1:开源功能打开 GPIOA5 开源控制位 0:开源功能关闭; 1:开源功能打开 GPIOA4 开源控制位 20 OS4 0:开源功能关闭; 1:开源功能打开 GPIOA3 开源控制位 19 OS3 0:开源功能关闭; 1:开源功能打开 GPIOA2 开源控制位 18 OS2 0:开源功能关闭; 1:开源功能打开 GPIOA1 开源控制位 17 OS1 0:开源功能关闭; 1:开源功能打开 GPIOA0 开源控制位 16 OS0 15 OD15 0:开源功能关闭; 1:开源功能打开 GPIOA15 开漏控制位 0:开漏功能关闭; 1:开漏功能打开 GPIOA14 开漏控制位 14 OD14 0:开漏功能关闭; 1:开漏功能打开。 GPIOA13 开漏控制位 13 OD13 0:开漏功能关闭; 1:开漏功能打开 GPIOA12 开漏控制位 12 OD12 0:开漏功能关闭; 11 OD11 Rev1.8 2022/04/27 1:开漏功能打开 GPIOA11 开漏控制位 34 / 191 CSM32RV20 位 标记 功能描述 0:开漏功能关闭; 1:开漏功能打开 GPIOA10 开漏控制位 10 OD10 0:开漏功能关闭; 1:开漏功能打开 GPIOA9 开漏控制位 9 OD9 0:开漏功能关闭; 1:开漏功能打开 GPIOA8 开漏控制位 8 OD8 0:开漏功能关闭; 1:开漏功能打开 GPIOA7 开漏控制位 7 OD7 6 OD6 0:开漏功能关闭; 1:开漏功能打开 GPIOA6 开漏控制位 0:开漏功能关闭; 1:开漏功能打开 GPIOA5 开漏控制位 5 OD5 0:开漏功能关闭; 1:开漏功能打开 GPIOA4 开漏控制位 4 OD4 0:开漏功能关闭; 1:开漏功能打开 GPIOA3 开漏控制位 3 OD3 0:开漏功能关闭; 1:开漏功能打开 GPIOA2 开漏控制位 2 OD2 0:开漏功能关闭; 1:开漏功能打开 GPIOA1 开漏控制位 1 OD1 0 OD0 0:开漏功能关闭; 1:开漏功能打开 GPIOA0 开漏控制位 0:开漏功能关闭; 1:开漏功能打开 注:当开漏和开源输出功能都关闭时,IO 被设置为推挽输出。 5.2.3 GPIOA 输入模式控制寄存器(GPIOA_ITYPER) 偏移地址:0x08 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 CSx RW 位 标记 15 CS15 14 CS14 Rev1.8 2022/04/27 功能描述 设置 GPIOA15 的输入模式 0:施密特触发器模式; 设置 GPIOA14 的输入模式 35 / 191 1:CMOS 输入模式 CSM32RV20 位 标记 功能描述 0:施密特触发器模式; 13 CS13 12 CS12 11 CS11 10 CS10 9 CS9 8 CS8 7 CS7 6 CS6 5 CS5 4 CS4 3 CS3 2 CS2 1 CS1 0 CS0 1:CMOS 输入模式 设置 GPIOA13 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA12 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA11 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA10 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA9 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA8 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA7 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA6 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA5 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA4 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA3 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA2 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA1 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOA0 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 5.2.4 GPIOA 上下拉控制寄存器(GPIOA_PUPDR) 偏移地址:0x0C 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 PUPDR15 PUPDR14 PUPDR13 PUPDR12 PUPDR11 PUPDR10 PUPDR9 PUPDR8 RW RW RW RW RW RW RW RW 15 14 13 Rev1.8 2022/04/27 12 11 10 9 8 7 36 / 191 6 5 4 3 2 1 0 CSM32RV20 PUPDR7 PUPDR6 PUPDR5 PUPDR4 PUPDR3 PUPDR2 PUPDR1 PUPDR0 RW RW RW RW RW RW RW RW 位 标记 功能描述 GPIOA15 端口配置成上拉还是下拉 31:30 PUPDR15 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA14 端口配置成上拉还是下拉 29:28 PUPDR14 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA13 端口配置成上拉还是下拉 27:26 PUPDR13 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA12 端口配置成上拉还是下拉 25:24 PUPDR12 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA11 端口配置成上拉还是下拉 23:22 PUPDR11 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA10 端口配置成上拉还是下拉 21:20 PUPDR10 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA9 端口配置成上拉还是下拉 19:18 PUPDR9 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA8 端口配置成上拉还是下拉 17:16 PUPDR8 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA7 端口配置成上拉还是下拉 15:14 PUPDR7 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA6 端口配置成上拉还是下拉 13:12 PUPDR6 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA5 端口配置成上拉还是下拉 11:10 PUPDR5 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA4 端口配置成上拉还是下拉 9:8 7:6 PUPDR4 PUPDR3 Rev1.8 2022/04/27 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA3 端口配置成上拉还是下拉 37 / 191 CSM32RV20 位 标记 功能描述 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA2 端口配置成上拉还是下拉 5:4 PUPDR2 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA1 端口配置成上拉还是下拉 3:2 PUPDR1 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOA0 端口配置成上拉还是下拉 1:0 PUPDR0 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 5.2.5 GPIOA 性能控制寄存器(GPIOA_SDR) 偏移地址:0x10 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 7 6 5 4 3 2 1 0 SRx RW 15 14 13 12 11 10 9 8 DRx RW 位 标记 31 SR15 功能描述 GPIOA15 对应的 PAD 的压摆率 1:快速压摆率; 0:低速压摆率 GPIOA14 对应的 PAD 的压摆率 30 SR14 1:快速压摆率; 0:低速压摆率 GPIOA13 对应的 PAD 的压摆率 29 SR13 1:快速压摆率; 28 SR12 0:低速压摆率 GPIOA12 对应的 PAD 的压摆率 1:快速压摆率; 0:低速压摆率 GPIOA11 对应的 PAD 的压摆率 27 SR11 1:快速压摆率; 0:低速压摆率 GPIOA10 对应的 PAD 的压摆率 26 SR10 1:快速压摆率; 0:低速压摆率 GPIOA9 对应的 PAD 的压摆率 25 SR9 1:快速压摆率; Rev1.8 2022/04/27 0:低速压摆率 38 / 191 CSM32RV20 位 标记 24 SR8 功能描述 GPIOA8 对应的 PAD 的压摆率 1:快速压摆率; 0:低速压摆率 GPIOA7 对应的 PAD 的压摆率 23 SR7 1:快速压摆率; 0:低速压摆率 GPIOA6 对应的 PAD 的压摆率 22 SR6 1:快速压摆率; 0:低速压摆率 GPIOA5 对应的 PAD 的压摆率 21 SR5 20 SR4 1:快速压摆率; 0:低速压摆率 GPIOA4 对应的 PAD 的压摆率 1:快速压摆率; 0:低速压摆率 GPIOA3 对应的 PAD 的压摆率 19 SR3 1:快速压摆率; 0:低速压摆率 GPIOA2 对应的 PAD 的压摆率 18 SR2 1:快速压摆率; 0:低速压摆率 GPIOA1 对应的 PAD 的压摆率 17 SR1 1:快速压摆率; 0:低速压摆率 GPIOA0 对应的 PAD 的压摆率 16 SR0 1:快速压摆率; 0:低速压摆率 GPIOA15 对应的 PAD 的驱动能力 15 DR15 14 DR14 1:高驱动能力; 0:低驱动能力 GPIOA14 对应的 PAD 的驱动能力 1:高驱动能力; 0:低驱动能力 GPIOA13 对应的 PAD 的驱动能力 13 DR13 1:高驱动能力; 0:低驱动能力 GPIOA12 对应的 PAD 的驱动能力 12 DR12 1:高驱动能力; 0:低驱动能力 GPIOA11 对应的 PAD 的驱动能力 11 DR11 1:高驱动能力; 0:低驱动能力 GPIOA10 对应的 PAD 的驱动能力 10 DR10 1:高驱动能力; 0:低驱动能力 GPIOA9 对应的 PAD 的驱动能力 9 DR9 8 DR8 1:高驱动能力; 0:低驱动能力 GPIOA8 对应的 PAD 的驱动能力 1:高驱动能力; 0:低驱动能力 GPIOA7 对应的 PAD 的驱动能力 7 DR7 1:高驱动能力; 0:低驱动能力 GPIOA6 对应的 PAD 的驱动能力 6 DR6 1:高驱动能力; 0:低驱动能力 GPIOA5 对应的 PAD 的驱动能力 5 DR5 1:高驱动能力; 4 DR4 Rev1.8 2022/04/27 0:低驱动能力 GPIOA4 对应的 PAD 的驱动能力 39 / 191 CSM32RV20 位 标记 功能描述 1:高驱动能力; 0:低驱动能力 GPIOA3 对应的 PAD 的驱动能力 3 DR3 1:高驱动能力; 0:低驱动能力 GPIOA2 对应的 PAD 的驱动能力 2 DR2 1:高驱动能力; 0:低驱动能力 GPIOA1 对应的 PAD 的驱动能力 1 DR1 1:高驱动能力; 0:低驱动能力 GPIOA0 对应的 PAD 的驱动能力 0 DR0 1:高驱动能力; 0:低驱动能力 5.2.6 GPIOA 中断模式寄存(GPIOA_LPMR) 偏移地址:0x14 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 LPMR15 LPMR14 LPMR13 LPMR12 LPMR11 LPMR10 LPMR9 LPMR8 W W W W W W W W 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 LPMR7 LPMR6 LPMR5 LPMR4 LPMR3 LPMR2 LPMR1 LPMR0 W W W W W W W W 位 标记 功能描述 GPIOAx 对应 PAD 的外部中断检测控制位 31:0 LPMRx[2x + 1: 2x]:MODE1,MODE0 LPMRx 00:高电平检测; 01:下降沿检测; 10:上升沿检测; 11:低电平检测 5.2.7 GPIOA 外部中断采集使能寄存器(GPIOA_INTER) 偏移地址:0x18 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 INT_EN RW Rev1.8 2022/04/27 40 / 191 CSM32RV20 位 标记 功能描述 GPIOAx 对应 PAD 的外部中断检测使能位 15:0 INT_EN 0:不接收来自 PAD 的外部中断输入; 1:接收来自 PAD 的外部中断输入 5.2.8 GPIOA 输入数据寄存器(GPIOA_IDR) 偏移地址:0x1C 复位值:0x0000_0000 31 30 29 28 27 26 25 24 19 18 17 16 Reserved 23 22 21 20 Reserved 15 14 13 12 11 10 9 8 IDR15 IDR14 IDR13 IDR12 IDR11 IDR10 IDR9 IDR8 R R R R R R R R 7 6 5 4 3 2 1 0 IDR7 IDR6 IDR5 IDR4 IDR3 IDR2 IDR1 IDR0 R R R R R R R R 位 标记 功能描述 15:0 IDRx GPIOAx 的接收数据输入 5.2.9 GPIOA 输出数据寄存器(GPIOA_ODR) 偏移地址:0x20 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 ODRx RW 位 标记 功能描述 15:0 ODRx GPIOAx 的接收数据输出控制位 Rev1.8 2022/04/27 41 / 191 CSM32RV20 5.2.10 GPIOA 写使能控制寄存器(GPIOA_BSR) 偏移地址:0x24 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 BR BR BR BR BR BR BR BR BR BR BR BR BR BR BR BR 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 W W W W W W W W W W W W W W W W 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 BS BS BS BS BS BS BS BS BS BS BS BS BS BS BS BS 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 W W W W W W W W W W W W W W W W 位 标记 功能描述 清除端口 x 的位 y(y = 0…15) 这些位只能写入并只能以字(16 位)的形式操作 31:16 0:对于对应的 ODRy 位不产生影响; BRx 1:清除对应的 ODRy 位为 0。 注:如果同时设置了 BSy 和 BRy 的对应位,BSy 位起作用 设置端口 x 的位 y(y = 0…15) 这些位只能写入并只能以字(16 位)的形式操作 15:0 BSx 0:对于对应的 ODRy 位不产生影响; 1:设置对应的 ODRy 位为 1 5.2.11 GPIOA 复用控制寄存器高位(GPIOA_AFRH) 偏移地址:0x28 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 AFSEH15[3:0] AFSEH14[3:0] AFSEH13[3:0] AFSEH12[3:0] RW RW RW RW 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 AFSEH11[3:0] AFSEH10[3:0] AFSEH9[3:0] AFSEH8[3:0] RW RW RW RW 位 标记 功能描述 31:28 AFSEH15[3:0] 对应的 GPIOA15 的复用功能选择寄存器 Rev1.8 2022/04/27 42 / 191 16 0 CSM32RV20 位 标记 功能描述 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA14 的复用功能选择寄存器 27:24 AFSEH14[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA13 的复用功能选择寄存器 23:20 AFSEH13[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA12 的复用功能选择寄存器 19:16 AFSEH12[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA11 的复用功能选择寄存器 15:12 AFSEH11[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA10 的复用功能选择寄存器 11:8 AFSEH10[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA9 的复用功能选择寄存器 7:4 AFSEH9[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA8 的复用功能选择寄存器 3:0 AFSEH8[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 5.2.12 GPIOA 复用控制寄存器低位(GPIOA_AFRL) 偏移地址:0x2C 复位值:0x0000_0000 31 15 30 29 28 27 26 25 24 23 22 21 20 19 18 17 AFSEL7[3:0] AFSEL6[3:0] AFSEL5[3:0] AFSEL4[3:0] RW RW RW RW 14 13 12 11 10 9 8 7 6 5 4 3 2 1 AFSEL3[3:0] AFSEL2[3:0] AFSEL1[3:0] AFSEL0[3:0] RW RW RW RW 位 标记 31:28 AFSEL7[3:0] 功能描述 对应的 GPIOA7 的复用功能选择寄存器 Rev1.8 2022/04/27 0000:AF0; 0001:AF1; 43 / 191 16 0 CSM32RV20 位 标记 功能描述 0010:AF2; 0011:AF3 对应的 GPIOA6 的复用功能选择寄存器 27:24 AFSEL6[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA5 的复用功能选择寄存器 23:20 AFSEL5[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA4 的复用功能选择寄存器 19:16 AFSEL4[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA3 的复用功能选择寄存器 15:12 AFSEL3[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA2 的复用功能选择寄存器 11:8 AFSEL2[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA1 的复用功能选择寄存器 7:4 AFSEL1[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOA0 的复用功能选择寄存器 3:0 AFSEL0[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 5.3 GPIOA 寄存器映射 GPIOA 寄存器列表 基地址:0x3000_0200 寄存器 偏移地址 寄存器描述 GPIOA_MODER 0x00 GPIOA 模式控制寄存器 GPIOA_OTYPER 0x04 GPIOA 输出控制寄存器 GPIOA_ITYPER 0x08 GPIOA 输入控制寄存器 GPIOA_PUPDR 0x0C GPIOA 上拉下拉控制寄存器 GPIOA_SDR 0x10 GPIOA 性能控制寄存器 GPIOA_LPMR 0x14 GPIOA 外部中断检测控制寄存器 GPIOA_INTER 0x18 GPIOA 外部中断使能控制寄存器 GPIOA_IDR 0x1C GPIOA 输入数据寄存器 GPIOA_ODR 0x20 GPIOA 输出数据寄存器 GPIOA BSR 0x24 GPIOA 写使能控制寄存器 GPIOA_AFRH 0x28 GPIOA 复用控制寄存器高位 Rev1.8 2022/04/27 44 / 191 CSM32RV20 GPIOA_AFRL GPIOA 复用控制寄存器低位 0x2C 5.4 GPIOB 寄存器描述 5.4.1 GPIOB 模式控制寄存器(GPIOB_MODER) 偏移地址:0x00 复位值:0x0F00_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 MODER13 MODER12 MODER11 MODER10 MODER9 MODER8 RW RW RW RW RW RW Reserved 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 MODER7 MODER6 MODER5 MODER4 MODER3 MODER2 MODER1 MODER0 RW RW RW RW RW RW RW RW 位 标记 功能描述 31:28 Reserved 保留位 GPIOB13 端口控制位 27:26 MODER13 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 GPIOB12 端口控制位 25:24 MODER12 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 GPIOB11 端口控制位 23:22 MODER11 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 GPIOB10 端口控制位 21:20 MODER10 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 GPIOB9 端口控制位 19:18 MODER9 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 GPIOB8 端口控制位 17:16 MODER8 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 GPIOB7 端口控制位 15:14 MODER7 Rev1.8 2022/04/27 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 45 / 191 CSM32RV20 位 标记 功能描述 GPIOB6 端口控制位 13:12 MODER6 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 GPIOB5 端口控制位 11:10 MODER5 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 GPIOB4 端口控制位 9:8 MODER4 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 GPIOB3 端口控制位 7:6 MODER3 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 GPIOB2 端口控制位 5:4 MODER2 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 GPIOB1 端口控制位 3:2 MODER1 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 GPIOB0 端口控制位 1:0 MODER0 00:输入模式; 01:输出模式; 10:复用功能; 11:模拟功能 5.4.2 GPIOB 输出控制寄存器(GPIOB_OTYPER) 偏移地址:0x04 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 OSx Reserved RW 15 14 13 12 11 10 9 8 7 ODx Reserved RW 位 标记 功能描述 31:30 Reserved 保留位 29 OS13 GPIOB13 开源控制位 0:开源功能关闭; 28 OS12 Rev1.8 2022/04/27 1:开源功能打开 GPIOB12 开源控制位 46 / 191 CSM32RV20 位 标记 功能描述 0:开源功能关闭; 1:开源功能打开 GPIOB11 开源控制位 27 OS11 0:开源功能关闭; 1:开源功能打开 GPIOB10 开源控制位 26 OS10 0:开源功能关闭; 1:开源功能打开 GPIOB9 开源控制位 25 OS9 0:开源功能关闭; 1:开源功能打开 GPIOB8 开源控制位 24 OS8 23 OS7 0:开源功能关闭; 1:开源功能打开 GPIOB7 开源控制位 0:开源功能关闭; 1:开源功能打开 GPIOB6 开源控制位 22 OS6 0:开源功能关闭; 1:开源功能打开 GPIOB5 开源控制位 21 OS5 0:开源功能关闭; 1:开源功能打开 GPIOB4 开源控制位 20 OS4 0:开源功能关闭; 1:开源功能打开 GPIOB3 开源控制位 19 OS3 0:开源功能关闭; 1:开源功能打开 GPIOB2 开源控制位 18 OS2 17 OS1 0:开源功能关闭; 1:开源功能打开 GPIOB1 开源控制位 0:开源功能关闭; 1:开源功能打开 GPIOB0 开源控制位 16 OS0 0:开源功能关闭; 15:14 Reserved 13 OD13 1:开源功能打开 保留位 GPIOB13 开漏控制位 0:开漏功能关闭; 1:开漏功能打开 GPIOB12 开漏控制位 12 OD12 0:开漏功能关闭; 1:开漏功能打开 GPIOB11 开漏控制位 11 OD11 0:开漏功能关闭; 1:开漏功能打开 GPIOB10 开漏控制位 10 OD10 9 OD9 0:开漏功能关闭; 1:开漏功能打开 GPIOB9 开漏控制位 0:开漏功能关闭; 1:开漏功能打开 GPIOB8 开漏控制位 8 OD8 0:开漏功能关闭; 1:开漏功能打开 GPIOB7 开漏控制位 7 OD7 0:开漏功能关闭; 6 OD6 Rev1.8 2022/04/27 1:开漏功能打开 GPIOB6 开漏控制位 47 / 191 CSM32RV20 位 标记 功能描述 0:开漏功能关闭; 1:开漏功能打开 GPIOB5 开漏控制位 5 OD5 0:开漏功能关闭; 1:开漏功能打开 GPIOB4 开漏控制位 4 OD4 0:开漏功能关闭; 1:开漏功能打开 GPIOB3 开漏控制位 3 OD3 0:开漏功能关闭; 1:开漏功能打开 GPIOB2 开漏控制位 2 OD2 1 OD1 0:开漏功能关闭; 1:开漏功能打开 GPIOB1 开漏控制位 0:开漏功能关闭; 1:开漏功能打开 GPIOB0 开漏控制位 0 OD0 0:开漏功能关闭; 1:开漏功能打开 注:当开漏和开源输出功能都关闭时,IO 被设置为推挽输出。 5.4.3 GPIOB 输入模式控制寄存器(GPIOB_ITYPER) 偏移地址:0x08 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 CSx Reserved RW 位 标记 功能描述 15:14 Reserved 保留位 13 CS13 12 CS12 11 CS11 10 CS10 9 CS9 8 CS8 Rev1.8 2022/04/27 设置 GPIOB13 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOB12 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOB11 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOB10 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOB9 的输入模式 0:施密特触发器模式; 设置 GPIOB8 的输入模式 48 / 191 1:CMOS 输入模式 CSM32RV20 位 标记 功能描述 0:施密特触发器模式; 7 CS7 6 CS6 5 CS5 4 CS4 3 CS3 2 CS2 1 CS1 0 CS0 1:CMOS 输入模式 设置 GPIOB7 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOB6 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOB5 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOB4 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOB3 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOB2 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOB1 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 设置 GPIOB0 的输入模式 0:施密特触发器模式; 1:CMOS 输入模式 5.4.4 GPIOB 上下拉控制寄存器(GPIOB_PUPDR) 偏移地址:0x0C 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 PUPDR13 PUPDR12 PUPDR11 PUPDR10 PUPDR9 PUPDR8 RW RW RW RW RW RW Reserved 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 PUPDR7 PUPDR6 PUPDR5 PUPDR4 PUPDR3 PUPDR2 PUPDR1 PUPDR0 RW RW RW RW RW RW RW RW 位 标记 功能描述 31:28 Reserved 保留位 GPIOB13 端口配置成上拉还是下拉 27:26 PUPDR13 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOB12 端口配置成上拉还是下拉 25:24 PUPDR12 00:不上拉也不下拉; Rev1.8 2022/04/27 49 / 191 01:上拉; CSM32RV20 位 标记 功能描述 10:下拉; 11:保留位 GPIOB11 端口配置成上拉还是下拉 23:22 PUPDR11 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOB10 端口配置成上拉还是下拉 21:20 PUPDR10 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOB9 端口配置成上拉还是下拉 19:18 PUPDR9 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOB8 端口配置成上拉还是下拉 17:16 PUPDR8 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOB7 端口配置成上拉还是下拉 15:14 PUPDR7 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOB6 端口配置成上拉还是下拉 13:12 PUPDR6 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOB5 端口配置成上拉还是下拉 11:10 PUPDR5 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOB4 端口配置成上拉还是下拉 9:8 PUPDR4 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOB3 端口配置成上拉还是下拉 7:6 PUPDR3 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOB2 端口配置成上拉还是下拉 5:4 PUPDR2 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOB1 端口配置成上拉还是下拉 3:2 PUPDR1 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 GPIOB0 端口配置成上拉还是下拉 1:0 PUPDR0 Rev1.8 2022/04/27 00:不上拉也不下拉; 01:上拉; 10:下拉; 11:保留位 50 / 191 CSM32RV20 5.4.5 GPIOB 性能控制寄存器(GPIOB_SDR) 偏移地址:0x10 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 SRx Reserved RW 15 14 13 12 11 10 9 8 7 DRx Reserved RW 位 标记 功能描述 31:30 Reserved 保留位 29 SR13 GPIOB13 对应的 PAD 的压摆率 1:快速压摆率; 0:低速压摆率 GPIOB12 对应的 PAD 的压摆率 28 SR12 1:快速压摆率; 27 SR11 0:低速压摆率 GPIOB11 对应的 PAD 的压摆率 1:快速压摆率; 0:低速压摆率 GPIOB10 对应的 PAD 的压摆率 26 SR10 1:快速压摆率; 0:低速压摆率 GPIOB9 对应的 PAD 的压摆率 25 SR9 1:快速压摆率; 0:低速压摆率 GPIOB8 对应的 PAD 的压摆率 24 SR8 1:快速压摆率; 0:低速压摆率 GPIOB7 对应的 PAD 的压摆率 23 SR7 1:快速压摆率; 0:低速压摆率 GPIOB6 对应的 PAD 的压摆率 22 SR6 1:快速压摆率; 21 SR5 0:低速压摆率 GPIOB5 对应的 PAD 的压摆率 1:快速压摆率; 0:低速压摆率 GPIOB4 对应的 PAD 的压摆率 20 SR4 1:快速压摆率; 0:低速压摆率 GPIOB3 对应的 PAD 的压摆率 19 SR3 1:快速压摆率; 0:低速压摆率 GPIOB2 对应的 PAD 的压摆率 18 SR2 1:快速压摆率; 0:低速压摆率 GPIOB1 对应的 PAD 的压摆率 17 SR1 1:快速压摆率; 16 SR0 Rev1.8 2022/04/27 0:低速压摆率 GPIOB0 对应的 PAD 的压摆率 51 / 191 CSM32RV20 位 标记 功能描述 1:快速压摆率; 15:14 Reserved 13 DR13 0:低速压摆率 保留位 GPIOB13 对应的 PAD 的驱动能力 1:高驱动能力; 0:低驱动能力 GPIOB12 对应的 PAD 的驱动能力 12 DR12 1:高驱动能力; 0:低驱动能力 GPIOB11 对应的 PAD 的驱动能力 11 DR11 1:高驱动能力; 0:低驱动能力 GPIOB10 对应的 PAD 的驱动能力 10 DR10 9 DR9 1:高驱动能力; 0:低驱动能力 GPIOB9 对应的 PAD 的驱动能力 1:高驱动能力; 0:低驱动能力 GPIOB8 对应的 PAD 的驱动能力 8 DR8 1:高驱动能力; 0:低驱动能力 GPIOB7 对应的 PAD 的驱动能力 7 DR7 1:高驱动能力; 0:低驱动能力 GPIOB6 对应的 PAD 的驱动能力 6 DR6 1:高驱动能力; 0:低驱动能力 GPIOB5 对应的 PAD 的驱动能力 5 DR5 1:高驱动能力; 0:低驱动能力 GPIOB4 对应的 PAD 的驱动能力 4 DR4 3 DR3 1:高驱动能力; 0:低驱动能力 GPIOB3 对应的 PAD 的驱动能力 1:高驱动能力; 0:低驱动能力 GPIOB2 对应的 PAD 的驱动能力 2 DR2 1:高驱动能力; 0:低驱动能力 GPIOB1 对应的 PAD 的驱动能力 1 DR1 1:高驱动能力; 0:低驱动能力 GPIOB0 对应的 PAD 的驱动能力 0 DR0 1:高驱动能力; 0:低驱动能力 5.4.6 GPIOB 输入数据寄存器(GPIOB_IDR) 偏移地址:0x1C 复位值:0x0000_0000 31 30 29 28 27 26 25 24 19 18 17 16 Reserved 23 22 21 20 Reserved Rev1.8 2022/04/27 52 / 191 CSM32RV20 15 14 13 12 11 10 9 8 IDR13 IDR12 IDR11 IDR10 IDR9 IDR8 R R R R R R Reserved 7 6 5 4 3 2 1 0 IDR7 IDR6 IDR5 IDR4 IDR3 IDR2 IDR1 IDR0 R R R R R R R R 位 标记 功能描述 13:0 IDRx GPIOBx 的接收数据输入 5.4.7 GPIOB 输出数据寄存器(GPIOB_ODR) 偏移地址:0x20 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 ODRx Reserved RW 位 标记 功能描述 13:0 ODRx GPIOBx 的接收数据输出控制位 5.4.8 GPIOB 读写使能控制寄存器(GPIOB_BSR) 偏移地址:0x24 复位值:0x0000_0000 31 30 Reserved 15 14 Reserved Rev1.8 2022/04/27 29 28 27 26 25 24 23 22 21 20 19 18 17 16 BR BR BR BR BR BR BR BR BR BR BR BR BR BR 13 12 11 10 9 8 7 6 5 4 3 2 1 0 W W W W W W W W W W W W W W 13 12 11 10 9 8 7 6 5 4 3 2 1 0 BS BS BS BS BS BS BS BS BS BS BS BS BS BS 13 12 11 10 9 8 7 6 5 4 3 2 1 0 W W W W W W W W W W W W W W 53 / 191 CSM32RV20 位 标记 功能描述 31:30 Reserved 保留位 清除端口 x 的位 y(y = 0…15) 这些位只能写入并只能以字(16 位)的形式操作。 29:16 0:对于对应的 ODRy 位不产生影响; BRx 1:清除对应的 ODRy 位为 0。 注:如果同时设置了 BSy 和 BRy 的对应位,BSy 位起作用 15:14 Reserved 保留位 设置端口 x 的位 y(y = 0…15) 这些位只能写入并只能以字(16 位)的形式操作。 13:0 BSx 0:对于对应的 ODRy 位不产生影响; 1:设置对应的 ODRy 位为 1 5.4.9 GPIOB 复用控制寄存器高位(GPIOB_AFRH) 偏移地址:0x28 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 AFSEH13[3:0] AFSEH12[3:0] RW RW 16 Reserved 15 14 13 12 11 10 9 8 7 6 5 3 2 1 AFSEH11[3:0] AFSEH10[3:0] AFSEH9[3:0] AFSEH8[3:0] RW RW RW RW 位 标记 功能描述 31:24 Reserved 保留位 对应的 GPIOB13 的复用功能选择寄存器 23:20 AFSEH13[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOB12 的复用功能选择寄存器 19:16 AFSEH12[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOB11 的复用功能选择寄存器 15:12 AFSEH11[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOB10 的复用功能选择寄存器 11:8 4 AFSEH10[3:0] Rev1.8 2022/04/27 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 54 / 191 0 CSM32RV20 位 标记 功能描述 对应的 GPIOB9 的复用功能选择寄存器 7:4 AFSEH9[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOB8 的复用功能选择寄存器 3:0 AFSEH8[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 5.4.10 GPIOB 复用控制寄存器低位(GPIOB_AFRL) 偏移地址:0x2C 复位值:0x0000_0000 31 15 位 30 29 28 27 26 25 24 23 22 21 AFSEL4[3:0] RW RW RW RW 14 13 12 11 10 9 8 7 6 5 7:4 2 1 AFSEL1[3:0] AFSEL0[3:0] RW RW RW RW 标记 功能描述 AFSEL7[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 AFSEL6[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 AFSEL5[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 AFSEL4[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 AFSEL3[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOB2 的复用功能选择寄存器 11:8 3 AFSEL2[3:0] 对应的 GPIOB3 的复用功能选择寄存器 15:12 4 AFSEL3[3:0] 对应的 GPIOB4 的复用功能选择寄存器 19:16 17 AFSEL5[3:0] 对应的 GPIOB5 的复用功能选择寄存器 23:20 18 AFSEL6[3:0] 对应的 GPIOB6 的复用功能选择寄存器 27:24 19 AFSEL7[3:0] 对应的 GPIOB7 的复用功能选择寄存器 31:28 20 AFSEL2[3:0] AFSEL1[3:0] Rev1.8 2022/04/27 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOB1 的复用功能选择寄存器 55 / 191 16 0 CSM32RV20 位 标记 功能描述 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 对应的 GPIOB0 的复用功能选择寄存器 3:0 AFSEL0[3:0] 0000:AF0; 0001:AF1; 0010:AF2; 0011:AF3 5.5 GPIOB 寄存器映射 GPIOB 寄存器列表 基地址:0x3000_0240 寄存器 偏移地址 描述 GPIOB_MODER 0x00 GPIOB 模式控制寄存器 GPIOB_OTYPER 0x04 GPIOB 输出控制寄存器 GPIOB_ITYPER 0x08 GPIOB 输入控制寄存器 GPIOB_PUPDR 0x0C GPIOB 上拉下拉控制寄存器 GPIOB_SDR 0x10 GPIOB 性能控制寄存器 GPIOB_IDR 0x1C GPIOB 输入数据寄存器 GPIOB_ODR 0x20 GPIOB 输出数据寄存器 GPIOB_BSR 0x24 GPIOB 写使能控制寄存器 GPIOB_AFRH 0x28 GPIOB 复用控制寄存器高位 GPIOB_AFRL 0x2C GPIOB 复用控制寄存器低位 Rev1.8 2022/04/27 56 / 191 CSM32RV20 6 中断 6.1 中断简介 MCU RISC-V 核 有 一 个 局 部 中 断 控 制 器 CLIC ( Core-Local Interrupt Controller)。CLIC 可以产生机器模式计时器中断(Machine Timer Interrupt)、 机器模式软件中断(Machine Software Interrupt)两个标准 RISC-V 架构定义的中 断类型。除了这两个标准 RISC-V 架构定义的中断,CLIC 还定义了 32 个中断源 作为本地中断/局部中断(Local Interrupt)来处理,用于连接到外部设备,设置相 应寄存器即可接受外设的输入信号作为中断。处理器可以通过 CLIC 接收到这 32 个外部设备的中断以及上述两个标准 RISC-V 架构定义的中断。每个中断都有相 应的 Interrupt ID 号,上述 32 个中断源 ID 为 16 ~ 47,其中 16 ~3 0,32 ~ 35 与 40 ~ 47 有外设连接,31、39 无外设连接。Interrupt ID 号可参见下面表格。 表 6-1 内核中断及其 Interrupt ID Rev1.8 2022/04/27 ID(十进制) 说明 2-0 - 3 机器模式软件中断(Machine Software Interrupt) 6-4 - 7 机器模式计时器中断(Machine Timer Interrupt) 10 - 8 - 11 机器模式外部中断(Machine External Interrupt) 12 CLIC 软件中断 15 - 13 - 16 SPI1 中断 17 SPI2 中断 18 LV 中断 19 UART1 收发中断(TX/RX) 20 I2C 等待中断 21 I2C 错误中断 22 Timer1 Break 中断 23 Timer1 Updata 中断 24 Timer1 Capture Compare 中断 25 Timer1 Trigger and Commutation 中断 26 Timer2 Break 中断 27 Timer2 Updata 中断 28 Timer2 Capture Compare 中断 57 / 191 CSM32RV20 ID(十进制) 说明 29 Timer2 Trigger and Commutation 中断 30 ADC 中断 31 - 32 WUP 唤醒中断 33 UART2(TX/RX)中断 34 UART3(TX/RX)中断 35 UART4(TX/RX)中断 36 比较器 1 中断 37 比较器 2 中断 38 比较器 3 中断 39 - 40 EXTI[0]外部中断 41 EXTI[1]外部中断 42 EXTI[2]外部中断 43 EXTI[3]外部中断 44 EXTI[4]外部中断 45 EXTI[9:5]外部中断 46 EXTI[15:10]外部中断 47 RF 检测中断 6.2 CLIC 寄存器 基址:0x0280_0000 6.2.1 CLIC 中断等待寄存器(clicintip) 偏移地址:Interrupt ID(十六进制) 复位值:0x0000_0000 7 6 5 4 3 2 1 0 clicintip Reserved RW 位 标记 功能描述 7:1 Reserved 保留位 0 clicintip 表明相应 Interrupt ID 的中断的等待状态 Rev1.8 2022/04/27 若置 1,说明当前有相应 Interrupt ID 的中断正在等待 58 / 191 CSM32RV20 6.2.2 CLIC 中断使能寄存器(clicintie) 偏移地址:0x400 + Interrupt ID(十六进制) 复位值:0x0000_0000 7 6 5 4 3 2 1 0 clicintie Reserved RW 位 标记 功能描述 7:1 Reserved 保留位 0 clicintie 可用于屏蔽与使能相应 Interrupt ID 的中断 写 0 屏蔽中断;写 1 使能中断 6.2.3 CLIC 中断配置寄存器(clicintcfg) 偏移地址:0x800 + Interrupt ID(十六进制) 复位值:0x0000_0000 7 6 5 4 3 2 1 0 clicintcfg Reserved RW 位 标记 功能描述 设 置 相 应 Interrupt ID 中 断 的 抢 占 级 别 ( pre-emption level ) 与 优 先 级 (priority)。clicintcfg 中总共有两位可以指定如何编码给定中断的抢占级 别与优先级。确定抢占级别的实际位数是由 CLIC 配置寄存器 cliccfg 中的 7:5 nlbit 位决定的,如果寄存器 cliccfg 中的 nlbits 的值小于 2,则剩余最小有效 clicintcfg 实现位以给定的抢占级别编码优先级。如果将寄存器 cliccfg 中的 nlbits 的 值设置为 0,则所有的中断的级别(level)为 15,并且 2 位都被用于设置优 先级。 4:0 保留位 Reserved 6.2.4 CLIC 配置寄存器(cliccfg) 偏移地址:0xC00 复位值:0x0000_0000 7 6 5 4 3 2 1 0 nmbits nlbits nvbits R RW RW Reserved Rev1.8 2022/04/27 59 / 191 CSM32RV20 位 标记 功能描述 7 Reserved 保留位 6:5 nmbits 不可写,读为 0 4:1 nlbits 设置 nlbits 可以确定寄存器 clicintcfg 中用于级别的位数与用于优先级的位 数。CLIC 可最多支持 256 个抢占级别,需要 8 位去编码所有 16 个级别 当 mvbits 被置位,选择硬件向量使能。在 CLIC Direct 模式下,nvbits 允许 选定的中断向量化。在 CLIC Direct 模式下,若 nvbits = 1,则启动选择中断 向量化。clicintcfg 最小有效实现位(位 5)控制对应中断的向量行为。在 0 nvbits CLIC Direct 模式下,nvbits 与 clicintcfg 的相关位会被置 1,则中断会按照 mtvt CSR 中断向量表所说明的向量化。这允许一些中断跳转到 mtvec CSR 保存的公共基地址,其他中断则被硬件向量化 6.3 CLIC 寄存器映射 CLIC 寄存器列表 基地址:0x0200_0000 寄存器 偏移地址 描述 msip 0x0000 机器模式软件中断等待寄存器 mtimecmp 0x4000 机器模式计时器比较值寄存器 mtime 0xBFF8 机器模式计时器寄存器 CLIC 寄存器列表 基地址:0x0280_0000 寄存器 偏移地址 描述 clicintip 0x000 CLIC 中断等待寄存器 clicintie 0x400 CLIC 中断使能寄存器 clicintcfg 0x800 CLIC 中断配置寄存器 cliccfg 0xC00 CLIC 配置寄存器 6.4 外部中断(EXTI) 6.4.1 EXTI 介绍 外部中断控制器支持 17 个外部中断,每个中断均设有状态位,每个中断都 有独立的触发和屏蔽设置。 外部中断第 1 位到第 16 位中断的使能和屏蔽及触发方式的设置可以在 GPIOA_LPMR 和 GPIOA_INTER 中设置。EXTI[15:0]对应 GPIOA15 ~ 0。 Rev1.8 2022/04/27 60 / 191 CSM32RV20 第 17 位为 RF 检波模块 RF 检测的中断,需要 GPIOA15 设置成模拟模式, 从 PA15 接收检测射频信号,信号强度超过特定值,会产生中断信号,若此中断 使能则该中断会传给 MCU。 6.4.2 外部中断输入状态寄存器(EXTI_ISR) 基址:0x3000_02C0 偏移地址:0x00 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 exti_caw_irq Reserved r0_w1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 exti_isr[15:0] r0_w1 位 标记 功能描述 31:17 Reserved 保留位 16 exti_caw_irq RF 检测中断状态,1:产生 RF 中断,写 1 可清除中断 外部中断中断状态 1:产生相应位的外部中断,对相应位写 1 可以清除相应的外部中断 第 0 位寄存 GPIOA0 的中断状态; 15:0 exti_isrx 第 1 位寄存 GPIOA1 的中断状态; … 第 15 位寄存 GPIOA15 的中断状态; 6.4.3 外部中断输入使能寄存器(EXTI_IEN) 基址:0x3000_02C0 偏移地址:0x04 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 exti_ien Reserved RW 15 14 13 12 11 10 9 8 7 6 Reserved Rev1.8 2022/04/27 61 / 191 5 4 3 2 1 0 CSM32RV20 位 标记 功能描述 31:17 Reserved 保留位 16 exti_ien 外部 RF 检测中断输入使能,1:使能 RF 检测中断 15:0 Reserved 保留位 6.5 EXTI 寄存器映射 EXTI 寄存器列表 基地址:0x3000_02C0 寄存器 偏移地址 描述 EXTI_ISR 0x00 外部中断输入状态寄存器 EXTI_IEN 0x04 外部中断输入使能寄存器 6.6 中断操作 6.6.1 中断的进入和退出 当产生中断时: a) mstatus.MIE 的值被复制到 mcause.MPIE,mstatus.MIE 被清零,有效阻隔中断; b) 在 CLIC 模式中,中断等级被复制到 mcause.MPIL 寄存器; c) 根据 mstatus.MPP 判断特权模式; d) 当前 PC 被复制到 mepc 寄存器,之后 pc 变为 mtvec.MODE 设定的值。 此时,如果没有使能中断,将由软件控制。可以通过写 mstatus.MIE 重新使 能中断或者执行 MRET 指令退出中断处理。当执行了 MRET 指令后: a) 特权模式按照 mstatus.MPP 设置; b) 在 CLIC 模式中,中断等级按照 mcause.MPIL 设置; c) mstatus.MIE 按照 mcause.MPIE 设置; d) PC 按照 mepc 设置。 此时,由软件控制。CSR 相关的寄存器在 6.8 章节中描述。 6.6.2 中断等级和优先级 在任何时候,hart 都以具有中断级别的特权模式运行。hart 的当前中断等级 可在 mintstatus 寄存器查看。然而,当前特权模式对 hart 上运行的软件是不可见 的。 Rev1.8 2022/04/27 62 / 191 CSM32RV20 在每个特权模式下,CLIC 架构支持最多 256 个中断等级。其中,较高的中 断级可以抢占较低的中断级别。中断等级 0 对应于在中断处理程序之外的常规指 令。CLIC 还支持给已定的中断等级编程优先级,用于在同一中断级别上对挂起 和启用的中断进行优先排序。在一个给定的中断级别上,优先级最高的中断被优 先处理。如果有多个挂起并启用的中断具有相同的最高优先级,ID 号最高的中 断被优先处理。 抢占等级(pre-emption levels)和每个等级的优先级数目可以通过 clicintcfg 寄存器和 cliccfg.nlbits 寄存器配置。 6.7 中断控制状态寄存器 6.7.1 机器状态寄存器(mstatus) 12 11 10 9 8 MPP 7 6 5 4 MPIE 3 2 0 MIE Reserved Reserved RW 1 Reserved RW RW 位 标记 功能描述 12:11 MPP 预特权模式寄存器 10:8 Reserved 保留位 7 MPIE 预中断使能寄存器 6:4 Reserved 保留位 3 MIE 中断使能寄存器,中断的总开关,设置为 0 不会进入中断处理 2:0 Reserved 保留位 通过设置 mstatus.MIE 可以使能中断总开关,通过设置机器中断使能(mie) 可以设置每个中断的独立开关。 注意:在 CLIC 模式下,mstatus.MPP 和 mstatus.MPIE 可以通过 mcause 寄 存器操作。 6.7.2 机器异常向量寄存器(mtvec) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 BASE WARL 15 14 13 12 11 10 9 8 7 BASE Rev1.8 2022/04/27 63 / 191 MODE CSM32RV20 WARL 位 标记 WARL 功能描述 中断向量基址 在 CLINT 直接模式下操作需要 4 字节对齐; 31:2 BASE 在 CLINT 矢量模式下操作需要 128 字节对齐; 在 CLIC 模式下运行需要至少 64 字节对齐 MODE 设置中断进程的模式 0x00:直接(Direct)模式,所有异步中断和同步异常设置 PC 为 BASE; 0x01:向量(Vectored)模式,异常设置 pc 为 BASE,中断设置 pc 为 BASE + 4 × mcause.EXCCODE; 1:0 MODE 0x02:CLIC 直接模式(CLIC Direct),所有中断和异常设置 PC 为 BASE; 0x03:CLIC 向量模式(CLIC Vectored),异步中断设置 PC 为 mtvt + mcause.EXCCODE × 4; 注:在非 CLIC 模式中,仅支持处理软件、计时器和外部中断 1) 直接(Direct)模式:此模式下,所有同步异常和异步中断使用 mtvec.BASE 地址。 在中断处理过程中,软件需要读 mcause 寄存器来确定中断的来源; 2) 向量(Vectored)模式:此模式下,PC 指针被设置为 mtvec.BASE + 4 × exception code。例如,当机器 timer 中断发生后,PC 指针被设置为 mtvec.BASE + 0x1C。一 般来说,中断向量表由跳转指令占据,到专门的中断处理处执行。此模式下 BASE 必须是 64 字节对齐; 3) CLIC 直接模式(CLIC Direct):此模式下,处理器跳转到 mtevc 设置的地址处执行。 此模式下 BASE 必须是 64 字节对齐; 4) CLIC 向量模式(CLIC Vectored):此模式下,处理器转换到特权模式并设置 mcause.MINHV。之后做取址操作,地址为 mtvt + 4 ×mcause.EXCCODE。如果取 址成功,处理器会清除 handler address 低位,并将 PC 设置为这个 handler address。 之后会清除 mcause.MINHV。 同步例外(exception)总是陷入 mtvec.BASE 在机器模式中。 6.7.3 机器模式中断使能寄存器(mie) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 MEIE Reserved 7 MTIE Reserved RW Rev1.8 2022/04/27 8 MSIE Reserved RW 64 / 191 Reserved RW CSM32RV20 MIE 寄存器独立设置每个中断是否使能 位 标记 功能描述 31:12 Reserved 保留位 11 MEIE 机器模式软件中断使能 10:8 Reserved 保留位 7 MTIE 机器模式计时器中断使能 6:4 Reserved 保留位 3 MSIE 机器模式外部中断使能 2:0 Reserved 保留位 在 CLIC 模式中,mie 寄存器被硬件置 0,并且独立的中断使能由 clicintip[i] 控制。 6.7.4 机器模式中断等待寄存器(mip) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 MEIP Reserved 7 MTIP Reserved MSIP Reserved RO RO Reserved RO MIP 寄存器独立设显示哪个中断在等待 位 标记 功能描述 31:12 Reserved 保留位 11 MEIE 机器模式软件中断等待 10:8 Reserved 保留位 7 MTIE 机器模式计时器中断等待 6:4 Reserved 保留位 3 MSIE 机器模式外部中断等待 2:0 Reserved 保留位 在 CLIC 模式中,mip 寄存器被硬件置 0,并且独立的中断使能由 clicintip[i] 控制。 6.7.5 机器模式异常原因寄存器(mcause) mcause 寄存器显示中断的来源。当中断产生时,mcause 最高位变为 1,低 Rev1.8 2022/04/27 65 / 191 CSM32RV20 位显示中断的 ID。比如机器 timer 中断会使 mcause 被置为 0x8000_0007。mcasue 也被用于显示同步异常来源,此时最高位被置为 0。 在 CLIC 模式,mcasue 显示更多信息。 31 30 29 Interrupt MINHV 28 MPP 27 26 25 24 23 22 21 20 MPIE 19 18 17 16 2 1 0 MPIL Reserved WARL WLRL 15 14 WLRL 13 12 WLRL 11 WLRL 10 9 8 7 6 5 4 3 Exception Code Reserved WLRL 位 标记 功能描述 31 Interrupt 1:trap 由中断产生 30 MINHV 只支持 CLIC 模式 29:28 MPP 预中断特权模式,和 mstatus.mpp 相同,只支持 CLIC 模式 27 MPIE 预中断使能,和 mstatus.mpie 相同,只支持 CLIC 模式 26:24 Reserved 保留位 23:16 MPIL 预中断等级,只支持 CLIC 模式 15:10 Reserved 保留位 9:0 Exception Code 显示上次异常代码 0:其它 中断异常代码 interrupt 异常代码 描述 1 0–2 保留 1 3 机器模式软件中断使能 1 4–6 保留 1 7 机器模式计时器中断使能 1 8 – 10 保留 1 11 机器模式外部中断使能 1 12 CLIC 软件中断使能 1 13 – 15 保留 1 16 CLIC 本地中断 0 1 17 CLIC 本地中断 1 1 18 – 31 … 1 48 CLIC 本地中断 32 0 0 指令地址未对齐 Rev1.8 2022/04/27 66 / 191 CSM32RV20 0 1 指令存取错误 0 2 非法指令 0 3 断点 0 4 装载地址未对齐 0 5 装载错误 0 6 Store/AMO 地址未对齐 0 7 Store/AMO 存取错误 0 8 – 10 保留 0 11 Environment call from M-mode 0 ≥ 12 保留 6.7.6 机器模式异常向量表(mtvt) mtvt 寄存器保存着用于 CLIC 向量中断的机器异常向量基址。mtvt 允许重 定位向量表。BASE 必须是 64 字节对齐。 在 CLIC 模式,mcasue 显示更多信息。 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 BASE WARL 15 14 13 12 11 10 9 8 7 BASE Reserved WARL 位 标记 功能描述 31:6 BASE CLIC 向量表的基址 5:0 Reserved 保留位 6.7.7 中断入口地址和中断使能(mnxti) mnxti 可以被软件用来处理下一个等级超过已保存(保存在 mcause.PIL 里) 中断,且不需要完整耗费的中断的关断和内容存取。CSRRSI/CSRRCI 指令可以 操作 mnxti 寄存器。读这个寄存器返回 mtvt 的地址,如果返回值是 0,说明没有 合适的中断需要处理。当写这个寄存器时,mcause 的异常编码寄存器和 mintstatus Rev1.8 2022/04/27 67 / 191 CSM32RV20 的 mil 寄存器将会更新为新的寄存器等级。 在中断处理中,mnxti 寄存器一般在初始化 mcause 和 mepc 寄存器之后使用。 6.7.8 机器模式中断状态寄存器(mintstatus) Mintstatus 为每个支持的特权模式保存中断级别。 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 MIL Reserved WIRL 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 位 标记 功能描述 31:24 MIL 机器模式中断等级 23:0 Reserved 保留位 6.7.9 机器模式 Scratch 寄存器(mscratch) 在 CLIC 模式,mcasue 显示更多信息。 31 30 29 28 27 26 25 24 23 mscratch WLRL 15 14 13 12 11 10 9 8 7 mscratch WLRL 位 标记 功能描述 31:0 mscratch 被用于保存一个指向机器模式硬件线程本地的上下文空间的指针,并在 一个 M-mode 自陷处理函数入口处,与一个用户寄存器进行交换 6.7.10 机器异常 PC 寄存器(mepc) Mepc 寄存器永远不能保存一个导致指令地址非对齐异常的 pc 值。 31 30 29 Rev1.8 2022/04/27 28 27 26 25 24 23 68 / 191 22 21 20 19 18 17 16 CSM32RV20 mepc WR 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 22 21 20 19 18 17 16 6 5 4 3 2 1 0 mepc WR 位 标记 功能描述 31:0 mepc 产生异常的指令地址 pc 值 6.7.11 机器模式异常值寄存器(mtval) 31 30 29 28 27 26 25 24 23 mtval WLRL 15 14 13 12 11 10 9 8 7 mtval WLRL 位 标记 功能描述 31:0 mtval 用于存储发生异常的指令和地址 6.8 中断状态寄存器映射 中断状态寄存器列表 寄存器 偏移地址 描述 mstatus 0x300 机器状态寄存器 mie 0x304 机器中断使能寄存器 mtvec 0x305 机器异常入口基地址寄存器 mtvt 0x307 机器模式异常向量表 mepc 0x341 机器模式异常 PC 寄存器 mcause 0x342 机器模式异常原因寄存器 mtval 0x343 机器模式异常值寄存器 mip 0x344 机器模式中断等待寄存器 mnxti 0x345 中断入口地址和中断使能 mintstatus 0x346 机器模式中断状态寄存器 mscratch 0x340 机器模式 Scratch 寄存器 Rev1.8 2022/04/27 69 / 191 CSM32RV20 注:RISC-V 架构中的定义的 CSR 寄存器需要使用特殊的 CSR 指令进行访问,如果需要在 C/C++程序中使用 CSR 寄存器,只能采用内嵌汇编(CSR 指令)的方式,才能对 CSR 寄 存器进行操作。以下是在 C 语言中调用 RISC-V 的 CSR 读或者写汇编指令访问 CSR 寄存 器的实例,代码如下: #define read_csr(reg) ({ unsigned long __tmp; \ asm volatile ("csrr %0, " #reg : "=r"(__tmp)); \ __tmp; }) 定义以上宏,在 C 语言中直接调用此宏即相当于读取指 CSR 寄存器的值,譬如 C 语言 “value=read_csr(mstatus)”即相当于读取 mstatus 寄存器的值将其赋值给变量 value 中。 Rev1.8 2022/04/27 70 / 191 CSM32RV20 实时时钟(RTC) 7 7.1 RTC 介绍 RTC 通常以固定不变的低速时钟运行,因此可以提供时间参考,所以被称为 实时时钟。实时时钟是一个独立的定时器,RTC 模块拥有连续计数的计数器,在 相应软件配置下,可提供计时的功能。 MCU 的主要时钟输入为:时钟(clock)、rtc_toggle。时钟用来驱动总线和 调试接口。通常,rtc_toggle 连接到实时时钟或作为平台的基本时钟输入频率。时 钟输入频率之间的关系如下:clock > (2 × rtc_toggle)。 MCU 有一个计时器,该计时器有两个寄存器,mtime 和 mtimecmp。Mtime 寄存器用于反映当前计时器的计数值,mtimecmp 用于设置计时器比较值。在 MCU 核中,采用 rtc_toggle 输入作为这个实时计数器。rtc_toggle 可以通过在 mtime 寄存器中确定实时计数器计数值来确定。rtc_toggle 用于计时时,频率不需 要很高。rtc_toggle 必须严格地以上述公式描述的频率范围运行,即它必须严格 地小于时钟频率的一半。此外,rtc_toggle 的频率必须保持不变,并且必须可以通 过软件设置来修改这个频率。 当 RTC 时钟来源为 3K 或 RCOSC 时,时钟精度由 3K 和 RCOSC 决定。 7.2 寄存器说明 基址:0x0200_0000 7.2.1 机器模式计时器寄存器(mtime) 偏移地址:0xBFF8 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 mtime_lo RW 15 14 13 12 11 10 9 8 7 mtime_lo RW 位 标记 功能描述 31:0 mtime_lo 反映当前计时器的低 32 位计数值 Rev1.8 2022/04/27 71 / 191 CSM32RV20 偏移地址:0xBFFF 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 mtime_hi RW 15 14 13 12 11 10 9 8 7 mtime_hi RW 位 标记 功能描述 31:0 mtime_hi 反映当前计时器的高 32 位计数值 7.2.2 机器模式计时器比较值寄存器(mtimecmp) 偏移地址:0x4000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 mtimecmp_lo RW 15 14 13 12 11 10 9 8 7 mtimecmp_lo RW 位 标记 功能描述 配置计时器的比较值低 32 位 当 mtime 中的计数值大于或者等于 mtimecmp 中设置的比较值时,计时器 31:0 便会产生计时器中断。计时器中断会一直拉高,直到软件重新写 mtimecmp mtimecmp_lo 寄存器的值,使得其比较值大于 mtime 中的值,从而将计时器中断清除。 注:当 mie 寄存器中的 MTIE 被设置才会使能此中断。 偏移地址:0x4004 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 mtimecmp_hi RW 15 14 13 12 11 10 9 8 7 mtimecmp_hi RW Rev1.8 2022/04/27 72 / 191 CSM32RV20 位 标记 功能描述 31:0 mtimecmp_hi 配置计时器的比较值高 32 位 7.3 寄存器映射 RTC 寄存器列表 基地址:0x0200_0000 寄存器 偏移地址 描述 mtime 0xBFF8 机器模式计时器寄存器 mtimecmp 0x4000 机器模式计时器比较值寄存器 Rev1.8 2022/04/27 73 / 191 CSM32RV20 8 看门狗 8.1 独立看门狗 8.1.1 简介 独立的看门狗(IWDG)是由低速时钟 3K 来驱动的,因此即使主时钟出现 故障,它也会保持活动状态。独立看门狗最适合应用于需要看门狗独立于主程 序之外,能够完全独立工作,并且对时间精度要求很低的场合。看门狗可以上 电启动或用户程序启动,上电启动看门狗需要在下载程序时设置。 8.1.1.1 主要特征 ● 一旦开启看门狗,计数器会一直运行; ● 在独立看门狗工作条件下,计数器计到 0x00000 时,产生复位信号; ● 在所有低功耗模式下,独立看门狗的计数器仍会工作,计数器计到 0x00000 时,会 产生复位信号; ● 可通过写 IWDG 寄存器或者 FLASH 下载程序时设置两种方式打开 IWDG。 8.1.1.2 功能描述 在键值寄存器(IWDG_KR)中写入 0xCCCC,开始启用独立看门狗。此时 计数器开始从其复位值 0x3FFFF 递减计数。当计数器计数到尾值 0x00000 时, 会产生一个复位信号(IWDG_RESET)。 无论何时,只要在键值寄存器(IWDG_KR)中写入 0xAAAA,自动重装载 寄存器(IWDG_RLR)中的值就会被重新加载到计数器,从而避免产生看门狗复 位。 如果主程序异常,无法正确喂狗,会导致系统复位。 8.1.1.3 寄存器访问保护 IWDG_RLR 寄存器具有写保护功能。要修改这个寄存器的值,必须先向 IWDG_KR 寄存器中写入 0x5555,然后等待一个指令周期。以不同的值写入这个 寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入 0xAAAA) 也会启动写保护功能。 Rev1.8 2022/04/27 74 / 191 CSM32RV20 状态寄存器指示递减计数器是否正在被更新。 8.1.2 IWDG 寄存器描述 基址:0x3000_02A0 键值寄存器(IWDG_KR) 8.1.2.1 偏移地址:0x00 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 key W 位 标记 功能描述 31:16 Reserved 保留位 键值(只写寄存器,读出值为 0x0000) 1.软件必须以一定的间隔写入 0xAAAA,否则,当计数器为 0 时,看门 狗会产生复位; 15:0 key 2.写入 0x5555 之后等待一个指令周期,然后可以写 IWDG_RLR 寄存 器; 3.写入 0xCCCC 启动看门狗工作 重装载寄存器(IWDG_RLR) 8.1.2.2 偏移地址:0x04 复位值:0x0003_FFFF 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 RL Reserved RW 15 14 13 12 11 10 9 8 7 RL RW Rev1.8 2022/04/27 75 / 191 6 5 4 3 2 1 0 CSM32RV20 位 标记 功能描述 31:18 Reserved 保留位 看门狗计数器重装载值(Watchdog counter reload value) 1.具有写保护功能; 2.用于定义看门狗计数器的重装载值,每当向 IWDG_KR 寄存器写入 17:0 0xAAAA 时,重装载值会被传送到计数器中,随后计数器从这个值开始递 RL 减计数; 3.只有当 IWDG_SR 寄存器中的 RVU 位为 0 时,才能对此寄存器进行修 改,读出的值才有效。 8.1.2.3 状态寄存器(IWDG_SR) 偏移地址:0x08 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 count_ens RVU R R Reserved 15 14 13 12 11 10 9 8 7 Reserved 位 标记 功能描述 31:2 Reserved 保留位 1 count_ens IWDG 计数器工作状态位,1:IWDG 计数器正在计数中 看门狗计数器重装载值更新(Watchdog counter reload value update) 1.此位由硬件置 1 来表示重装载值的更新正在进行中; 0 RVU 2.当看门狗计数器重装载值更新完成后,此位会被硬件清零; 3.重装载值只有在 RVU 位被清零后才可被更改。 8.1.3 IWDG 寄存器映射 寄存器列表 基地址:0x3000_02A0 寄存器 偏移地址 描述 IWDG_KR 0x00 IWDG 键值寄存器 IWDG_RLR 0x04 IWDG 重装载寄存器 IWDG_SR 0x08 IWDG 状态寄存器 Rev1.8 2022/04/27 76 / 191 CSM32RV20 9 高级定时器(TIMER1&TIMER2) 9.1 简介 CSM32RV20 拥有两个高级定时器 TIMER1 和 TIMER2。二者的功能相同并 且是完全同步的,可以同步操作。 高级控制定时器(TIMERx)由一个 16 位的自动装载计数器组成,它由一个 可编程预分频器驱动。 它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输 出波形(输出比较,PWM,嵌入死区时间的互补 PWM 等)。使用定时器预分频 器和外设时钟分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调 节。 9.2 主要特性 TIMERx 定时器的功能包括: ● 16 位向上,向下,向上/向下自动装载计数器; ● 16 位可编程预分频器,计数器时钟频率的分频系数为 1 ~ 65535 之间的任意数值; ● 4 个独立通道: − 输入捕获; − 输出比较; − PWM 生成(边缘或中间对齐模式); − 单脉冲模式输出; − 死区时间可编程的互补输出。 ● 在指定数目的计数器周期之后更新定时器寄存器; ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态; ● 如下列事件发生,则产生中断: − 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发); − 触发事件(计数器启动,停止,初始化或者由内部/外部触发计数); − 输入捕获; − 输出比较; − 刹车信号输入。 Rev1.8 2022/04/27 77 / 191 CSM32RV20 9.3 框图 图 9-1 高级定时器框图 9.4 功能描述 9.4.1 时基单元 可编程高级控制定时器的主要部分是一个 16 位计数器和与其相关的自动装 Rev1.8 2022/04/27 78 / 191 CSM32RV20 载寄存器。这个计数器可以向上计数、向下计数或者向上向下双向计数。此计数 器时钟由预分频器分频得到。计数器、自动装载寄存器和预分频器寄存器可以由 软件读写,即使计数器还在运行,读写仍然有效。 时基单元包含: ● 计数器寄存器(TIMERx_CNT); ● 预分频器寄存器(TIMERx_PSC); ● 自动装载寄存器(TIMERx_ARR); ● 周期计数寄存器(TIMERx_RCR)。 自动装载寄存器是预先装载的。写或读自动重装载寄存器将访问预装载寄存 器。根据在 TIMERx_CR1 寄存器中的自动预装载使能位(ARPE)的设置,预装 载寄存器的内容被永久地或在每次产生 UEV 更新事件时传送到影子寄存器。当 计数器达到溢出条件(向下计数时的下溢条件)并当 TIMERx_CR1 寄存器中的 UDIS 位等于 0 时,产生更新事件。更新事件也可以由软件产生,随后会详细描 述每一种配置下更新事件的产生。 计 数 器 由 预 分 频 器 的 时 钟 输 出 CK_CNT 驱 动 , 仅 当 设 置 了 计 数 器 TIMERx_CR1 寄存器中的计数器使能位(CEN)时,CK_CNT 才有效(有关更多 的计数器使能的细节,请参见控制器的从模式描述)。 注:真正的计数器使能信号 CNT_EN 是在 CEN 的一个时钟周期后被设置。 预分频器描述 预分频器可以将计数器的时钟频率按 1 到 65536 之间的任意值分频。它是基 于一个(在 TIMERx_PSC 寄存器中的)16 位寄存器控制的 16 位计数器。因为这 个控制寄存器带有缓冲器,它能够在工作时被改变。新的预分频器的参数在下一 次更新事件到来时被采用。 CK_PSC CNT_EN Timer clock = CK_CNT Counter register F7 F8 F9 FA FB FC 00 01 02 03 Update event(UEV) Prescaler control register 0 1 Write a new value in TIM1_PSC Prescal buffer 0 prescaler counter 0 Rev1.8 2022/04/27 1 0 79 / 191 1 0 1 0 1 0 1 CSM32RV20 图 9-2 当预分频器的参数从 1 变到 2 时,计数器的时序图 CK_PSC CNT_EN Timer clock = CK_CNT Counter register F7 F8 F9 FA FB FC 00 01 02 Update event(UEV) Prescaler control register 0 3 Write a new value in TIM1_PSC Prescal buffer 0 prescaler counter 0 3 0 1 2 3 0 1 2 3 图 9-3 当预分频器的参数从 1 变到 4 时,计数器的时序图 9.4.2 计数器模式 向上计数模式 在向上计数模式中,计数器从 0 计数到自动加载值(TIMERx_ARR 计数器 的内容),然后重新从 0 开始计数并且产生一个计数器溢出事件。 如果使用了周期计数功能,在向上计数达到设置的周期计数次数 (TIMERx_RCR)时,将产生更新事件(UEV);否则每次直到计数器溢出才会 产生更新事件。 在 TIMERx_EGR 寄存器中设置 UG 位(通过软件方式或者使用从模式控制 器)也同样可以产生一个更新事件。 通过软件置 TIM1_CR1 寄存器中的 UDIS 位为 1,将选择禁止更新事件;这 样可以避免在向预装载寄存器中写入新值时更新影子寄存器。在 UDIS 位被清成 0 之前,将没有更新事件产生。即使这样,在应该产生更新事件时,计数器仍会 被清 0,同时预分频器的计数也被清 0(但预分频器的数值不变)。此外,如果 TIMERx_CR1 寄存器中的 URS 位(更新请求选择)被置 0,设置 UG 位将产生 一个更新事件 UEV,但硬件不设置 UIF 标志(即不产生中断)。这是为了避免 在捕获模式下清除计数器时,同时产生更新和捕获中断。 当发生一个更新事件,所有的寄存器都被更新,硬件同时(依据 URS 位) Rev1.8 2022/04/27 80 / 191 03 CSM32RV20 设置更新标志位(TIMERx_SR 寄存器中的 UIF 位)。 ● 周期计数器被重新加载为 TIMERx_RCR 寄存器的内容; ● 自动装载影子寄存器被重新置入预装载寄存器的值(TIMERx_ARR); ● 预分频器的缓冲区被置入预分频器寄存器的值(TIMERx_PSC 寄存器的内容)。 下图给出一些例子,当 TIMER1_ARR = 0x36 时计数器在不同时钟频率下 的动作。 CK_PSC CNT_EN Timer clock = CK_CNT Counter register 31 32 33 34 35 36 00 01 02 03 04 05 06 07 Counter overflow Update event (UEV) Update interrupt flag (UIF) 图 9-4 计数器时序图,内部时钟分频因子为 1 CK_PSC CNT_EN Timer clock = CK_CNT 31 Counter register 0034 0035 0036 0000 0001 Counter overflow Update event (UEV) Update interrupt flag (UIF) 图 9-5 计数器时序图,内部时钟分频因子为 2 Rev1.8 2022/04/27 81 / 191 0002 0003 04 05 32 07 06 33 CSM32RV20 CK_PSC CNT_EN 0036 Timer clock = CK_CNT Counter register 0035 0036 0000 0001 31 0003 04 05 32 07 33 Counter overflow Update event (UEV) Update interrupt flag (UIF) 图 9-6 计数器时序图,内部时钟分频因子为 4 CK_PSC CNT_EN Timer clock = CK_CNT Counter register 31 32 33 34 35 36 00 01 02 03 04 05 06 07 Counter overflow Update event (UEV) Update interrupt flag (UIF) Auto-reload register FF 36 Write a new value in TIM1_ARR 图 9-7 计数器时序图,当 ARPE = 0 时的更新事件(TIMER1_ARR 没有预装入) Rev1.8 2022/04/27 82 / 191 0002 06 CSM32RV20 CK_PSC CNT_EN Timer clock = CK_CNT Counter register F0 F1 F2 F3 F4 F5 00 01 02 03 04 05 06 07 Counter overflow Update event (UEV) Update interrupt flag (UIF) Auto-reload preload register Auto-reload shadow register FF 36 36 FF Write a new value in TIM1_ARR 图 9-8 计数器时序图,当 ARPE = 1 时的更新事件(预装入了 TIMER1_ARR) Write a new va 向下计数模式 在向下模式中,计数器从自动装入的值(TIMERx_ARR 计数器的值)开始 向下计数到 0,然后从自动装入的值重新开始并且产生一个计数器向下溢出事件。 如果使用周期计数器,当向下计数重复了周期计数寄存器(TIMERx_RCR) 中设定的次数后,将产生更新事件(UEV),否则每次计数器下溢时就会产生更 新事件。在 TIMERx_EGR 寄存器中设置 UG 位(通过软件方式或者使用从模式 控 制 器 ) 也 同 样 可 以 产 生 一 个 更 新 事 件 。 UEV 事 件 可 以 通 过 软 件 设 置 TIMERx_CR1 寄存器中的 UDIS 位被禁止。这样可以避免在向预装载寄存器中写 入新值时更新影子寄存器。这样 UDIS 位被写成 0 之前不会产生更新事件。然而, 计数器仍会从当前自动加载值重新开始计数,并且预分频器的计数器重新从 0 开 始(但预分频器的速率不能被修改)。此外,如果设置了 TIMERx_CR1 寄存器 中的 URS 位(更新请求选择)为 0,设置 UG 位将产生一个更新事件 UEV 但不 设置 UIF 标志(因此不产生中断),这是为了避免在发生捕获事件并清除计数器 时,同时产生更新和捕获中断。当发生更新事件时,所有的寄存器都被更新,并 且(根据 URS 位的设置)更新标志位(TIM1_SR 寄存器中的 UIF 位)也被设置。 ● 周期计数器被重置为 TIMERx_RCR 寄存器中的内容; ● 当前的自动加载寄存器被更新为预装载值(TIMERx_ARR 寄存器中的内容)。 注:自动装载在计数器重载入之前被更新,因此下一个周期将是预期的值。 Rev1.8 2022/04/27 83 / 191 CSM32RV20 以下的图显示一些当 TIMER1_ARR = 0x36 时计数器在不同时钟频率下的操 作例子。 CK_PSC CNT_EN Timer clock = CK_CNT Counter register 05 04 03 02 01 00 36 35 34 33 32 31 30 2F Counter underflow (cnt_udf) Update event (UEV) Update interrupt flag (UIF) 图 9-9 计数器时序图,内部时钟分频因子为 1 CK_PSC CNT_EN Timer clock = CK_CNT 31 Counter register 0002 0001 0000 0036 0035 0034 Counter underflow Update event (UEV) Update interrupt flag (UIF) 图 9-10 计数器时序图,内部时钟分频因子为 2 Rev1.8 2022/04/27 84 / 191 0033 04 05 32 07 06 33 CSM32RV20 CK_PSC CNT_EN 0036 Timer clock = CK_CNT Counter register 0001 0000 0036 0035 31 0003 04 05 32 07 33 Counter underflow Update event (UEV) Update interrupt flag (UIF) 图 9-11 计数器时序图,内部时钟分频因子为 4 CK_PSC CNT_EN Timer clock = CK_CNT Counter register 05 04 03 02 01 00 36 35 34 33 32 31 30 2F Counter underflow Update event (UEV) Update interrupt flag (UIF) Auto-reload register FF 36 Write a new value in TIM1_ARR 图 9-12 计数器时序图,当 ARPE = 0 时的更新事件(TIMER1_ARR 没有预装入) 中央对齐模式(向上/向下计数) 在中央对齐模式中,计数器从 0 开始计数到自动加载的值(TIMERx_ARR 寄存器的内容)- 1,产生一个计数器溢出事件,然后向下计数到 1 并且产生一个 计数器 下溢 事件 ;然 后再从 0 开 始重 新 计数。 在这 个模 式下 , 不能 写入 TIMERx_CR1 中的 DIR 方向位。 更新事件可以产生在每一次计数上溢和每一次计数下溢,也可以通过(软件 或者使用从模式控制器)设置 TIMERx_EGR 寄存器中的 UG 位来产生更新事件。 Rev1.8 2022/04/27 85 / 191 0002 06 CSM32RV20 此时,计数器重新从 0 开始计数,预分频器也重新从 0 开始计数。UEV 事件可 以通过软件设置 TIMERx_CR1 寄存器中的 UDIS 位被禁止。这样可以避免在向 预装载寄存器中写入新值时更新影子寄存器,这样 UDIS 位被写成 0 之前不会产 生更新事件。然而,计数器仍会根据当前自动重加载的值,继续向上或向下计数。 此外,如果设置了 TIMERx_CR1 寄存器中的 URS 位(更新请求选择),设 置 UG 位将产生一个更新事件 UEV 但不设置 UIF 标志(因此不产生中断),这 是为了避免在发生捕获事件并清除计数器时,同时产生更新和捕获中断。 当发生更新事件时,所有的寄存器都被更新,并且(根据 URS 位的设置) 更新标志位(TIMERx_SR 寄存器中的 UIF 位)也被设置。 ● 周期计数器被重置为 TIMERx_RCR 寄存器中的内容; ● 当前的自动加载寄存器被更新为预装载值(TIMERx_ARR 寄存器中的内容)。 注:如果因为计数器溢出而产生更新,自动重装载将在计数器重载入之前被 更新,因此下一个周期将是预期的值(计数器被装载为新的值)。 以下的图显示一些计数器在不同时钟频率下的操作的例子: CK_PSC CNT_EN Timer clock = CK_CNT Counter register 04 03 02 01 00 01 02 03 04 05 06 05 04 03 Counter underflow (cnt_udf) Counter underflow Update event (UEV) Update interrupt flag (UIF) Note:Here,center-aligned mode 1 is used 图 9-13 计数器时序图,内部时钟分频因子为 1,TIMER1_ARR = 0x06 Rev1.8 2022/04/27 86 / 191 CSM32RV20 CK_PSC CNT_EN Timer clock = CK_CNT Counter register 0003 0002 0001 0000 0001 0002 0003 31 04 05 32 07 06 33 Counter underflow Update event (UEV) Update interrupt flag (UIF) 图 9-14 计数器时序图,内部时钟分频因子为 2,TIMER1_ARR = 0x06 CK_PSC CNT_EN 0036 Timer clock = CK_CNT Counter register 0034 0035 0036 0035 31 0003 04 05 32 07 33 Counter overflow Update event (UEV) Update interrupt flag (UIF) Note:Here,center-aligned mode 2 or 3 is used with an UIF on overflow 图 9-15 计数器时序图,内部时钟分频因子为 4,TIMER1_ARR = 0x36 Rev1.8 2022/04/27 87 / 191 0002 06 CSM32RV20 CK_PSC CNT_EN Timer clock = CK_CNT Counter register 06 05 04 03 02 01 00 01 02 03 04 05 06 07 Counter underflow Update event (UEV) Update interrupt flag (UIF) Auto-reload preload register Auto-reload shadow register FD 36 36 FD Write a new value in TIM1_ARR 图 9-16 计数器时序图,ARPE = 1 时的更新事件(计数器下溢) CK_PSC CNT_EN Timer clock = CK_CNT Counter register F7 F8 F9 FA FB FC 36 35 34 33 32 31 30 2F Counter overflow Update event (UEV) Update interrupt flag (UIF) Auto-reload preload register FD Auto-reload shadow register FD 36 36 Write a new value in TIM1_ARR 图 9-17 计数器时序图,ARPE = 1 时的更新事件(计数器溢出) 9.4.3 重复向下计数器 章节 9.4.1 时基单元解释了计数器上溢/下溢时更新事件(UEV)是如何产生 的,然而事实上更新事件只能在重复计数器达到 0 的时候才会产生。这对于产生 Rev1.8 2022/04/27 88 / 191 CSM32RV20 PWM 信号非常有用。 这意味着在每发生 N + 1 次计数上溢或下溢时,数据从预装载寄存器传输到 影子寄存器(TIMERx_ARR 自动重载入寄存器,TIMERx_PSC 预装载寄存器, 还有在比较模式下的捕获/比较寄存器),N 是 TIMERx_RCR 周期计数寄存器中 的值。 重复向下计数器在下述任一条件成立时递减: ● 向上计数模式下每次计数器上溢; ● 向下计数模式下每次计数器下溢; ● 中央对齐模式下每次计数器上溢和下溢。 虽然这样将 PWM 的最大循环周期限制为 128,但它能够在每个 PWM 周期 更新 2 次占空比。在中央对齐模式下,因为波形是对称的,如果每个 PWM 周期 中仅刷新一次比较寄存器,则最大的分辨率为 2×Tck。 重复向下计数器是自动加载的,重复速率由 TIMERx_RCR 寄存器的值定义。 当更新事件由软件产生(通过设置 TIMERx_EGR 中的 UG 位)或者通过硬件的 从模式控制器产生时,无论重复向下计数器的值是多少,都会立即发生更新事件, 并且 TIMERx_RCR 寄存器中的内容被重载入到重复向下计数器中。 9.4.4 时钟选择 计数器时钟可由下列时钟源提供: ● 内部时钟(CK_INT); ● 外部时钟模式:外部输入脚。 内部时钟源(CK_INT) 如果从模式控制器被禁止(SMS = 000),则 CEN、DIR(TIMERx_CR1 寄 存器中)和 UG 位(TIMERx_EGR 寄存器中)成为实际上的控制位并且只能被 软件修改(UG 位除外,该位仍会被自动清除)。一旦 CEN 位被写成 1,预分频 器的时钟就由内部时钟 CK_INT 提供。 Rev1.8 2022/04/27 89 / 191 CSM32RV20 Internal clock CEN=CNT_EN UG CNT_INIT Counter clock=CK_CNT=CK_PSC Counter register 31 32 33 34 35 36 00 01 02 03 04 05 06 07 图 9-18 一般模式下的控制电路,内部时钟分频因子为 1 外部时钟源模式 当 TIMERx_CR1 寄存器中的 SMS = 111 时,此模式被选中。计数器可以在 选定输入的上每个上升沿或下降沿计数。 TIMERx_CR1 TS[1:0] TI1F_ED TI2 边沿 检测器 滤波器 IC2F[3:0] TI2上升沿 TI2下降沿 0 1 TI1FP1 TI2FP1 ITR 00 01 10 11 外部时钟 模式1 CK_INT CK_PSC 内部时钟 模式 CC2P TIMERx_ICF TIMERx_CCER SMS[2:0] TIMERx_CR1 图 9-19 TI2 外部时钟连接例子 例如,要配置向上计数器在 T12 输入端的上升沿计数,使用下列步骤: 1. 配置 TIMERx_CCMR1 寄存器 CC2S = 01,配置通道 2 检测 TI2 输入的上升沿; 2. 配置 TIMERx_ICF 寄存器的 IC2F[3:0],选择输入滤波器带宽(如果不需要滤波器, 保持 IC2F = 0000); 3. 配置 TIMERx_CCER 寄存器的 CC2P = 0,选定上升沿极性; 4. 配置 TIMERx_CR1 寄存器的 SMS = 111,选择定时器外部时钟模式 1; 5. 配置 TIMERx_CR1 寄存器中的 TS = 10,选定 TI2 作为触发输入源; 6. 设置 TIMERx_CR1 寄存器的 CEN = 1,启动计数器。 当 TI2 上出现上升沿,计数器计数一次,且 TIF 标志被设置。在 TI2 的上升 沿和计数器实际时钟之间的延时取决于在 TI2 输入端的重新同步电路。 Rev1.8 2022/04/27 90 / 191 CSM32RV20 TI2 CNT_EN 0036 计 数 器 时 钟 =CK_CNT=CK_PSC 计数器寄存器 34 35 36 0035 31 0003 04 05 32 07 33 TIF 写 入 TIF=0 图 9-20 外部时钟模式 1 下的控制电路 9.4.5 捕获/比较通道 每一个捕获/比较通道是围绕着一个捕获/比较寄存器(包含影子寄存器)构 成的,包括捕获的输入部分(包含数字滤波和多路复用)和输出部分(包含比较 器和输出控制)。 输入部分对相应的 TIx 输入信号采样,并产生一个滤波后的信号 TIxF。然 后,一个带极性选择的边缘监测器产生一个信号(TIxFPx),它可以作为从模式 控制器的输入触发或者作为捕获控制。该信号先进行预分频(ICxPS)再进入到 捕获寄存器。 TI1F_ED 到从模式控制器 TI1 fDTS 滤波器 递减计数器 IC2F[3:0] TIMERx_CCMR1 TI1F 边沿 检测器 TI1F上升沿 TI1F下降沿 0 1 CC1P/CC1NP TI1FP1 TI2FP1 01 10 TRC 11 (自从模式控制器) IC1 TIMERx_CCER TI2F上升沿 0 (自通道2) CC1S[1:0] TIMERx_CCMR1 TI2F下升沿 1 (自通道2) 图 9-21 捕获/比较通道(通道 1 输入部分) 输出部分产生一个中间波形 OCxRef(高有效)作为基准,链的末端决定最 终输出信号的极性。 Rev1.8 2022/04/27 91 / 191 0002 06 CSM32RV20 CNT>CCR1 CNT=CCR1 输出模式 控制器 “0”x0 0 01 1 OC1_DT OC1REF 死区 发生器 OC1 11 CC1P TIMERx_CCER OC1N_DT 11 10 输出使能 电路 0 “0”x0 OC1M[2:0] 输出使能 电路 1 OC1N TIMERx_CCMR1 DTG[7:0] TIMERx_BDTR CC1NE CC1E TIMERx_CCER CC1NP TIMERx_CCER CC1NE MOE OSSI CC1E TIMERx_CCER OSSR TIMERx_BDTR 图 9-22 捕获/比较通道的输出部分 9.4.6 输入捕获模式 在输入捕获模式下,当检测到 ICx 信号上相应的边沿后,计数器的当前值被 锁存到捕获/比较寄存器(TIMERx_CCRx)中。当发生捕获事件时,相应的 CCxIF 标志(TIMERx_SR 寄存器)被置 1,如果开放了中断操作,则将产生中断请求。 如 果 发 生 捕 获 事 件 时 CCxIF 标 志 已 经 为 高 , 那 么 重 复 捕 获 标 志 CCxOF (TIMERx_SR 寄存器)被置 1。写 CCxIF = 0 可清除 CCxIF,或读取存储在 TIMERx_CCRx 寄存器中的捕获数据也可清除 CCxIF。写 CCxOF = 0 可清除 CCxOF。 以下例子说明如何在 TI1 输入的上升沿时捕获计数器的值到 TIMERx_CCR1 寄存器中,步骤如下: ● 选 择 有 效 输 入 端 : TIMERx_CCMR1 必 须 连 接 到 TI1 输 入 , 所 以 写 入 TIMERx_CCMR1 寄存器中的 CC1S = 01,只要 CC1S 不为 00,通道就会被配置为 输入,并且 TIMERx_CCMR1 寄存器变为只读; ● 根据输入信号的特点,配置输入滤波器为所需的带宽(即输入为 TIx 时,输入滤波 器控制位是 TIMERx_ICF 寄存器中的 ICxF 位)。假设输入信号在最多 5 个内部时 钟周期的时间内抖动,我们须配置滤波器的带宽长于 5 个时钟周期;因此我们可 以(以 fDTS 频率)连续采样 8 次,以确认在 TI1 上一次进行了真实的边沿变换, 即在 TIMERx_ICF 寄存器中写入 IC1F = 0011; ● 选择 TI1 通道的有效转换边沿,在 TIMERx_CCER 寄存器中写入 CC1P = 0(上升 沿); ● 设置 TIMERx_CCER 寄存器的 CC1E = 1,允许捕获计数器的值被传送到捕获寄存 器中; ● 如果需要,通过设置 TIMERx_DIER 寄存器中的 CC1IE 位允许相关中断请求。 当发生一个输入捕获时: Rev1.8 2022/04/27 92 / 191 CSM32RV20 ● 产生有效的电平转换时,计数器的值被传送到 TIMERx_CCR1 寄存器; ● CC1IF 标志被设置(中断标志),当发生至少 2 个连续的捕获,且 CC1IF 未曾被清 除时,CC1OF 也被置 1; ● 如设置了 CC1IE 位,则会产生一个中断。 为了处理捕获溢出,建议在读出捕获溢出标志之前读取数据,这是为了避免 丢失在读出捕获溢出标志之后和读取数据之前可能产生的捕获溢出信息。 设置 TIMERx_EGR 寄存器中相应的 CCxG 位,可以通过软件产生输入捕获 中断请求。 9.4.7 PWM 输入模式 该模式是输入捕获模式的一个特例,除下列区别外,操作与输入捕获模式相 同: ● 两个 ICx 信号被映射至同一个 TIx 输入; ● 这两个 ICx 信号为边沿有效,但是极性相反; ● 其中一个 TIxFP 信号被作为触发输入信号,而从模式控制器被配置成复位模式。例 如,你需要测量输入到 TI1 上的 PWM 信号的长度(TIMERx_CCR1 寄存器)和占 空比(TIMERx_CCR2 寄存器),具体步骤如下: ─ 选择 TIMERx_CCR1 的有效输入:置 TIMERx_CCMR1 寄存器的 CC1S = 01(选 中 TI1); ─ 选择 TI1FP1 的有效极性(用来捕获数据到 TIMERx_CCR1 中和清除计数器):置 CC1P = 0(上升沿有效); ─ 选择 TIMERx_CCR2 的有效输入:置 TIMERx_CCMR1 寄存器的 CC2S = 10(选 中 TI1); ─ 选择 TI1FP2 的有效极性(捕获数据到 TIMERx_CCR2):置 CC2P = 1(下降沿有 效); ─ 选择有效的触发输入信号: 置 TIMERx_CR1 寄存器中的 TS = 2’b01 (选择 TI1FP1) ; ─ 配置从模式控制器为复位模式:置 TIMERx_CR1 中的 SMS = 100; ─ 使能捕获:置 TIMERx_CCER 寄存器中 CC1E = 1 且 CC2E = 1。 TI1 TIM1_CNT 0004 0000 0001 0002 0004 IC1捕获周期测量 IC2捕获脉冲宽度测量 0002 图 9-23 PWM 输入模式时序 Rev1.8 2022/04/27 0000 0004 TIM1_CCR1 TIM1_CCR2 0003 93 / 191 1 4 3 CSM32RV20 因为只有 TI1FP1 和 TI2FP2 连到了从模式控制器,所以 PWM 输入模式只能 使用 TIMERx_CH1/TIMERx_CH2 信号。 9.4.8 强制输出模式 在输出模式(TIMERx_CCMRx 寄存器中 CCxS = 00)下,输出比较信号 (OCxREF 和相应的 OCx/OCxN)能够直接由软件强置为有效或无效状态,而不 依赖于输出比较寄存器和计数器间的比较结果。 置 TIMERx_CCMRx 寄存器中相应的 OCxM = 101,即可强置输出比较信号 (OCxREF/OCx)为有效状态。这样 OCxREF 被强置为高电平(OCxREF 始终为 高电平有效),同时 OCx 得到 CCxP 极性相反的信号。 例如:CCxP = 0(OCx 高电平有效),则 OCx 被强置为高电平。置 TIMERx_CCMRx 寄存器中的 OCxM = 100,可强置 OCxREF 信号为低。 该模式下,在 TIMERx_CCRx 影子寄存器和计数器之间的比较仍然在进行, 相应的标志也会被修改。因此仍然会产生相应的中断请求。这将会在下面的输出 比较模式一节中介绍。 9.4.9 输出比较模式 此项功能是用来控制一个输出波形,或者指示一段给定的时间已经到时。 当计数器与捕获/比较寄存器的内容相同时,输出比较功能做如下操作: ● 将 输 出 比 较 模 式 ( TIMERx_CCMRx 寄 存 器 中 的 OCxM 位 ) 和 输 出 极 性 (TIMERx_CCER 寄存器中的 CCxP 位) 定义的值输出到对应的引脚上。 在比较匹配时, 输出引脚可以保持它的电平(OCxM = 000)、被设置成有效电平(OCxM = 001)、被 设置成无效电平(OCxM = 010)或进行翻转(OCxM = 011); ● 设置中断状态寄存器中的标志位(TIMERx_SR 寄存器中的 CCxIF 位); ● 若使能了相应的中断位(TIMERx_DIER 寄存器中的 CCxIE 位),则产生一个中断。 TIMERx_CCMRx 中的 OCxPE 位选择 TIMERx_CCRx 寄存器是否需要使用 预装载寄存器。 在输出比较模式下,更新事件 UEV 对 OCxREF 和 OCx 输出没有影响。同 步的精度可以达到计数器的一个计数周期。输出比较模式(在单脉冲模式下)也 能用来输出一个单脉冲。 输出比较模式的配置步骤: 1. 选择计数器时钟(内部,外部,预分频器); 2. 将相应的数据写入 TIMERx_ARR 和 TIMERx_CCRx 寄存器中; Rev1.8 2022/04/27 94 / 191 CSM32RV20 3. 如果要产生一个中断请求,设置 CCxIE 位; 4. 选择输出模式,例如: ─ 要求计数器与 CCRx 匹配时翻转 OCx 的输出引脚,设置 OCxM = 011; ─ 置 OCxPE = 0 禁用预装载寄存器; ─ 置 CCxP = 0 选择极性为高电平有效; ─ 置 CCxE = 1 使能输出。 5. 设置 TIMERx_CR1 寄存器的 CEN 位启动计数器 TIMERx_CCRx 寄存器能够在任何 时候通过软件进行更新以控制输出波形,条件是未使用预装载寄存器(OCxPE = 0,否则 TIMERx_CCRx 的影子寄存器只能在发生下一次更新事件时被更新)。下图给出了一个例子。 0039 TIM1_CNT 003A 003B B200 B201 0 1 在CC1R寄存器中写入B201h 003A TIM1_CCR1 B201 '1' OC1REF=OC1 CCR1上检测到匹配 如果使能了中断,则产生中断 图 9-24 输出比较模式,翻转 OC1 9.4.10 PWM 模式 脉冲宽度调制模式可以产生一个由 TIMERx_ARR 寄存器确定频率、由 TIMERx_CCRx 寄存器确定占空比的信号。 在 TIMERx_CCMRx 寄存器中的 OCxM 位写入 110(PWM 模式 1)或 111 (PWM 模式 2),能够独立地设置每个 OCx 输出通道产生一路 PWM。必须通 过设置 TIMERx_CCMRx 寄存器的 OCxPE 位使能相应的预装载寄存器,最后还 要设置 TIMERx_CR1 寄存器的 ARPE 位,(在向上计数或中心对称模式中)使 能自动重装载的预装载寄存器。 仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因 此在计数器开始计数之前,必须通过设置 TIMERx_EGR 寄存器中的 UG 位来初 始化所有的寄存器。 OCx 的极性可以通过软件在 TIMERx_CCER 寄存器中的 CCxP 位设置,它 可以设置为高电平有效或低电平有效。OCx 的输出使能通过(TIMERx_CCER 和 TIMERx_BDTR 寄存器中)CCxE、CCxNE、MOE、OSSI 和 OSSR 位的组合控 制。详见 TIMERx_CCER 寄存器的描述。 在 PWM 模式(模式 1 或模式 2)下,TIMERx_CNT 和 TIMERx_CCRx 始终 在进行比较,(依据计数器的计数方向)以确定是否符合 TIMERx_CCRx ≤ Rev1.8 2022/04/27 95 / 191 4 3 CSM32RV20 TIMERx_CNT 或者 TIMERx_CNT ≤ TIMERx_CCRx。根据 TIMERx_CR1 寄存 器中 CMS 位的状态,定时器能够产生边沿对齐的 PWM 信号或中央对齐的 PWM 信号。 PWM 边沿对齐模式 ● 向上计数配置 当 TIMERx_CR1 寄存器中的 DIR 位为低的时候执行向上计数。下面是一个 PWM 模式 1 的例子。当 TIMERx_CNT < TIMERx_CCRx 时,PWM 参考信号 OCxREF 为高,否则为低。如果 TIMERx_CCRx 中的比较值大于自动重装载值 (TIMERx_ARR),则 OCxREF 保持为 1。如果比较值为 0,则 OCxREF 保持为 0。下图为 TIMERx_ARR=8 时边沿对齐的 PWM 波形实例。 CNT register CCRx=4 0 1 2 3 4 5 6 7 8 0 1 4 3 2 1 0 1 0 1 2 3 4 5 6 7 8 0 1 4 3 2 1 0 1 0 1 2 3 4 5 6 7 8 0 1 4 3 2 1 0 1 0 1 2 3 4 5 6 7 8 0 1 4 3 2 1 0 1 OCxREF CCxIF CNT register OCxREF CCRx=8 CCxIF CNT register '1' CCRx>8 OCxREF CCxIF CNT register OCxREF '0' CCRx=0 CCxIF 图 9-25 边沿对齐的 PWM 波形(ARR=8) ● 向下计数配置 当 TIMERx_CR1 寄存器的 DIR 位为高时执行向下计数。在 PWM 模式 1 下, 当 TIMERx_CNT > TIMERx_CCRx 时参考信号 OCxREF 为低,否则为高。如果 TIMERx_CCRx 中的比较值大于 TIMERx_ARR 中的自动重装载值,则 OCxREF 保持为 1。该模式下不能产生 0%的 PWM 波形。 Rev1.8 2022/04/27 96 / 191 CSM32RV20 PWM 中央对齐模式 当 TIMERx_CR1 寄存器中的 CMS 位不为 00 时为中央对齐模式(所有其他 的配置对 OCxREF/OCx 信号都有相同的作用)。根据不同的 CMS 位设置,比较 标志可以在计数器向上计数、在计数器向下计数、或在计数器向上和向下计数时 被置 1。注意不要用软件修改 TIMERx_CR1 寄存器中的计数方向位(DIR)。 下图给出了一些中央对齐的 PWM 波形的例子 ● TIMx_ARR = 8; ● PWM 模式 1; ● TIMx_CR1 寄存器的 CMS = 01,在中央对齐模式 1 下,当计数器向下计数时设置 比较标志。 CNT寄存器 0 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 0 1 OCxREF CCRx=4 CCRx=7 OCxREF CMS=10或CMS=11 CCxIF CCRx=8 1 OCxREF CMS=01 CMS=10 CMS=11 CCxIF OCxREF 1 CCRx>8 CMS=01 CMS=10 CMS=11 CCxIF OCxREF 0 CCRx=0 CCxIF CMS=01 CMS=10 CMS=11 图 9-26 中央对齐的 PWM 波形(APR=8) 使用中央对齐模式的提示: ● 进入中央对齐模式时,使用当前的向上/向下计数配置;即,计数器的计数方向取决 于 TIMx_CR1 寄存器中 DIR 位的当前值。此外,软件不能同时修改 DIR 和 CMS 位; ● 在中央对齐模式下运行时,不推荐对计数器进行改写,因为这会产生不可预知的结 Rev1.8 2022/04/27 97 / 191 CSM32RV20 果。特别地: ─ 如果写入计数器的值大于自动重加载的值(TIMERx_CNT > TIMERx_ARR),则 方向不会被更新。即,向上计数的计数器在该情况下会继续向上计数,其他同理; ─ 如果将 0 或者 TIMERx_ARR 的值写入计数器,方向会被更新,但不会产生更新事 件 UEV。 ● 使用中央对齐模式最保险的方法,就是在启动计数器之前产生一个软件更新(设置 TIMERx_EGR 位中的 UG 位),并且不要在计数进行过程中修改计数器的值。 9.4.11 互补输出和死区插入 高级控制定时器能够输出两路互补信号,并且能够管理输出的瞬时关断和接 通。这段时间通常被称为死区,用户应该根据连接的输出器件和它们的特性(电 平转换的延时、电源开关的延时等)来调整死区时间。配置 TIMERx_CCER 寄存 器中的 CCxP 和 CCxNP 位,可以为每一个输出独立地选择极性(主输出 OCx 或 互补输出 OCxN)。 互补信号 OCx 和 OCxN 通过下列控制位的组合进行控制:TIMERx_CCER 寄存器的 CCxE 和 CCxNE 位,TIMERx_BDTR 和 TIMERx_CR1 寄存器中的 MOE、 OISx、OISxN、OSSI 和 OSSR 位,详见表 9-1。特别地,在转换到 IDLE 状态时 (MOE 下降到 0)时,死区会被激活。 同时设置 CCxE 和 CCxNE 位将插入死区,如果存在刹车电路,则还要设置 MOE 位。每一个通道都有一个 8 位的死区发生器。参考信号 OCxREF 可以产生 2 路输出 OCx 和 OCxN。如果 OCx 和 OCxN 为高位有效: ● OCx 输出信号与参考信号相同,只是它的上升沿相对于参考信号的上升沿有一个延 迟; ● OCxN 输出信号与参考信号相反,只是它的上升沿相对于参考信号的下降沿有一个 延迟。如果延迟大于当前有效的输出宽度(OCx 或者 OCxN),则不会产生相应 的脉冲。下列几张图显示了死区发生器的输出信号和当前参考信号 OCxREF 之间 的关系。(假设 CCxP = 0、CCxNP = 0、MOE = 1、CCxE = 1 并且 CCxNE = 1)。 OCxREF dealy OCx OCxN 图 9-27 带死区插入的互补输出 Rev1.8 2022/04/27 98 / 191 CSM32RV20 OCxREF dealy OCx OCxN 图 9-28 死区波形延迟大于负脉冲 OCxREF OCx dealy OCxN 图 9-29 死区波形延迟大于正脉冲 每一个通道的死区延时都是相同的,是由 TIMERx_BDTR 寄存器中的 DTG 位编程配置的。 重定向 OCxREF 到 OCx 或 OCxN 在输出模式下(强置、输出比较或 PWM),通过配置 TIMx_CCER 寄存器 的 CCxE 和 CCxNE 位,OCxREF 可以被重定向到 OCx 或者 OCxN 的输出。这 个功能可以在互补输出处于无效电平时,在某个输出上送出一个特殊的波形(例 如 PWM 或者静态有效电平)。另一个作用是,让两个输出同时处于无效电平, 或处于有效电平和带死区的互补输出状态。 注:当只使能 OCxN(CCxE = 0,CCxNE = 1)时,OCx 和 OCxN 不互补相。 当 OCxREF 有效时 OCxN 立即变高。例如,如果 CCxNP = 0,则 OCxN = OCxREF。 另一方面,当 OCx 和 OCxN 都被使能时(CCxE = CCxNE = 1),当 OCxREF 为 高时 OCx 有效;而 OCxN 相反,当 OCxREF 低时 OCxN 变为有效。 9.4.12 刹车功能 当使用刹车功能时,依据相应的控制位(TIMERx_BDTR 寄存器中的 MOE、 OSSI 和 OSSR 位,TIMERx_CR1 寄存器中的 OISx 和 OISxN 位),输出使能信 Rev1.8 2022/04/27 99 / 191 CSM32RV20 号和无效电平都会被修改。但无论何时,OCx 和 OCxN 输出不能在同一时间同 时处于有效电平上。详见表 9-1。 当发生刹车时(在刹车输入端出现选定的电平),有下述动作: ● MOE 位被异步地清除,将输出置于无效状态、空闲状态或者复位状态(由 OSSI 位 选择); ● 一旦 MOE = 0,每一个输出通道输出由 TIMx_CR1 寄存器中的 OISx 位设定的电平 决定。如果 OSSI = 0,则定时器释放使能输出,否则使能输出始终为高; ● 当使用互补输出时: ─ 输出首先被置于复位状态即无效的状态(取决于极性); ─ 如果定时器的时钟依然存在,死区生成器将会重新生效,在死区之后根据 OISx 和 OISxN 位指示的电平驱动输出端口。即使在这种情况下,OCx 和 OCxN 也不能被 同时驱动到有效的电平。注:因为重新同步 MOE,死区时间比通常情况下长一些 (大约 2 个 ck 的时钟周期); ─ 如果 OSSI = 0,定时器释放使能输出,否则保持使能输出;或一旦 CCxE 与 CCxNE 之一变高时,使能输出变为高。 ● 如果设置了 TIMERx_DIER 寄存器中的 BIE 位,当刹车状态标志(TIMx_SR 寄存 器中的 BIF 位)为 1 时,则产生一个中断; ● 如果设置了 TIMERx_BDTR 寄存器中的 AOE 位,在下一个更新事件 UEV 时 MOE 位被自动置位;这可以用来进行整形。否则,MOE 始终保持低直到被再次置 1;这个特 性也可以被用在安全方面,你可以把刹车输入连到电源驱动的报警输出、热敏传感器或 者其他安全器件上。 刹车由 BKI 输入产生,它的有效极性是可编程的,且由 TIMERx_BDTR 寄 存器中的 BKE 位开启。除了刹车输入和输出管理,刹车电路中还实现了写保护 以保证应用程序的安全。它允许用户冻结几个配置参数(死区长度,OCx/OCxN 极 性 和 被 禁 止 的 状 态 , OCxM 配 置 , 刹 车 使 能 和 极 性 ) 。 用 户 可 以 通 过 TIMERx_BDTR 寄存器中的 LOCK 位,从三级保护中选择一种。在 MCU 复位后 LOCK 位只能被修改一次。 下图显示响应刹车的输出实例。 Rev1.8 2022/04/27 100 / 191 CSM32RV20 刹车(MOE=1→ 0) OCxREF OCx (OCxN未使用,CCxP=0,OISx=1) OCx (OCxN未使用,CCxP=0,OISx=0) OCx (OCxN未使用,CCxP=1,OISx=1) OCx (OCxN未使用,CCxP=1,OISx=0) OCx 延迟 延迟 延迟 OCxN (CCxE=1,CCxP=0,OISx=0,CCxNE=1,CCxNP=0,OISxN=1) OCx OCxN 延迟 延迟 延迟 (CCxE=1,CCxP=0,OISx=1,CCxNE=1,CCxNP=1,OISxN=1) OCx 延迟 OCxN (CCxE=1,CCxP=0,OISx=0,CCxNE=0,CCxNP=0,OISxN=1) OCx 延迟 OCxN (CCxE=1,CCxP=0,OISx=1,CCxNE=0,CCxNP=0,OISxN=0) OCx OCxN (CCxE=1,CCxP=0,CCxNE=0,CCxNP=0,OISx=OISxN=0) 图 9-30 响应刹车的输出 9.4.13 六步 PWM 产生 当在一个通道上需要互补输出时,预装载位有 OCxM、CCxE 和 CCxNE。在 发生 COM 换相事件时,这些预装载位被传送到影子寄存器位。用户可以预先设 置好下一步骤的配置,并在同一个时刻同时修改所有通道的配置。COM 可以通 过设置 TIMERx_EGR 寄存器的 COM 位由软件产生,或在 TRGI 上升沿由硬件 Rev1.8 2022/04/27 101 / 191 CSM32RV20 产生。当发生 COM 事件时会设置一个标志位(TIMERx_SR 寄存器中的 COMIF 位),这时如果已设置了 TIMERx_DIER 寄存器的 COMIE 位,则产生一个中断。 下图显示当发生 COM 事件时,三种不同配置下 OCx 和 OCxN 输出。 (CCRX) 计数器 (CNT) OCxREF 写 入 COM=1 COM事 件 CCxE=1 写 入 OCxM=100 CCxNE=0 OCxM=100(强 制 无 效 ) 示例1 CCxE=1 CCxNE=0 OCxM=100 OCx OCxN 示例2 OCx CCxE=1 CCxNE=0 OCxM=100(强 制 无 效 ) 写 入 CCxNE=1 和 OCxM=101 CCxE=1 CCxNE=0 OCxM=101 OCxN 示例3 OCx CCxE=1 CCxNE=0 OCxM=100(强 制 无 效 ) 写 入 CCxNE=0 和 OCxM=100 CCxE=1 CCxNE=0 OCxM=100 OCxN 图 9-31 产生六步 PWM,使用 COM 的例子(OSSR=1) 9.4.14 单脉冲模式 单脉冲模式(OPM)是前述众多模式的一个特例。这种模式允许计数器响应 一个激励,并在一个程序可控的延时之后产生一个脉宽可被程序控制的脉冲。 可以通过从模式控制器启动计数器,在输出比较模式或者 PWM 模式下产生 波形。设置 TIMERx_CR1 寄存器中的 OPM 位应选择单脉冲模式,这样可以让计 数器自动地在产生下一个更新事件 UEV 时停止。仅当比较值与计数器的初始值 不同时,才能产生一个脉冲。启动之前(当定时器正在等待触发),必须如下配 置: ● 向上计数方式:计数器 CNT < CCRx ≤ ARR(特别地,CCRx > 0); Rev1.8 2022/04/27 102 / 191 CSM32RV20 ● 向下计数方式:计数器 CNT > CCRx。 TI2 OC1REF OC1 TIM1_ARR TIM1_CCR1 0 tdelay tpulse t 图 9-32 单脉冲模式的例子 例如,你需要在从 TI2 输入脚上检测到一个上升沿开始,延迟 tDELAY 之后, 在 OC1 上产生一个长度为 tPULSE 的正脉冲。 假定 TI2FP2 作为触发 1: ● 置 TIMERx_CCMR1 寄存器中的 CC2S = 01,把 TI2FP2 映像到 TI2; ● 置 TIMERx_CCER 寄存器中的 CC2P = 0,使 TI2FP2 能够检测上升沿; ● 置 TIMERx_CR1 寄存器中的 TS = 2’b10,TI2FP2 作为从模式控制器的触发 (TRGI) ● 置 TIMERx_CR1 寄存器中的 SMS = 110(触发模式),TI2FP2 被用来启动计数器, OPM 的波形由写入比较寄存器的数值决定(要考虑时钟频率和计数器预分频器); ● tDELAY 由 TIMx_CCR1 寄存器中的值定义; ● tPULSE 由自动装载值和比较值之间的差值定义(TIMERx_ARR -TIMERx_CCR1); ● 假定当发生比较匹配时要产生从 0 到 1 的波形,当计数器达到预装载值时要产生一 个从 1 到 0 的波形;首先要置 TIMERx_CCMR1 寄存器的 OC1M = 111,进入 PWM 模式 2;根据需要有选择地使能预装载寄存器:置 TIMERx_CCMR1 中的 OC1PE = 1 和 TIMERx_CR1 寄存器中的 ARPE;然后在 TIMERx_CCR1 寄存器中填写比 较值,在 TIMERx_ARR 寄存器中填写自动装载值,设置 UG 位来产生一个更新事 件,然后等待在 TI2 上的一个外部触发事件。本例中,CC1P = 0。 在这个例子中,TIMERx_CR1 寄存器中的 DIR 和 CMS 位应该置低。因为只 需要一个脉冲,所以必须设置 TIMERx_CR1 寄存器中的 OPM = 1,在下一个更 新事件时停止计数。 Rev1.8 2022/04/27 103 / 191 CSM32RV20 9.4.15 定时器输入异或功能 TIMERx_CR1 寄存器中的 TI1S 位,允许通道 1 的输入滤波器连接到一个异 或 门 的 输 出 端 , 异 或门 的 3 个 输 入 端 为 TIMERx_CH1 、 TIMERx_CH2 和 TIMERx_CH3。异或输出能够被用于所有定时器的输入功能,如触发或输入捕获。 9.4.16 与霍尔传感器的接口 使用定时器 TIMER1 产生 PWM 信号来驱动马达,另一个定时器作为“接口 定时器”与霍尔传感器相连。3 个定时器输入引脚(TIMERx_CH1、TIMERx_CH2 和 TIMERx_CH3)通过异或门连接到 TI1 输入通道(通过将 TIMERx_CR1 寄存 器中的 TI1S 位置 1 来选择),并由接口定时器进行捕获。 从模式控制器配置为复位模式;从输入为 TI1F_ED。因而,每次 3 个输入中 有一个输入变化时,计数器会从 0 开始重新计数。这样将产生由霍尔输入的任何 变化而触发的时基。 在接口定时器上,捕获/比较通道 1 配置为捕获模式,捕获信号 TRC。捕获 值对应于输入上两次变化的间隔时间,可提供与电机转速相关的信息。 接口定时器可用于在输出模式下产生脉冲,以通过触发 COM 事件更改定时 器各个通道的配置。TIMER1 定时器用于生成电机驱动 PWM 信号。为此,必须 对接口定时器通道进行编程,以便在编程的延迟过后产生正脉冲(在输出比较或 PWM 模式中)。该脉冲通过 TRGO 输出发送到另一个定时器。 示例:霍尔输入与一个 TIMER2 定时器相连接,要求每次任一霍尔输入上发 生变化后的一个指定时刻,改变定时器 TIMER1 的 PWM 配置。 ● 置 TIMER2_CR1 寄存器的 TI1S 位为 1, 使 3 个定时器输入经过异或运算后进入 TI1 输入通道; ● 时基编程:向 TIMER2_ARR 写入其最大值 16’hffff(计数器必须通过 TI1 的变化清 零)。设置预分频器,以得到最大计数器周期,该周期长于传感器上两次变化的间 隔时间; ● 将通道 1 编程为捕获模式(选择 TRC):配置 TIMER2_CCMR1 寄存器的 CC1S = 2’b11。如果需要,还可以编程数字滤波器; ● 将通道 2 编程为 PWM2 模式,并具有所需延迟:置 TIMERx_CCMR1 寄存器的 OC2M = 3’b111,CC2S = 2’b00; ● 选择 OC2REF 作为 TRGO 上的触发输出: 置 TIMER2_CR1 寄存器的 MMS = 3’b101, TS = 2’b11。 在定时器 TIMER1 中,必须选择正确的 ITR 输入作为触发输入,定时器编 Rev1.8 2022/04/27 104 / 191 CSM32RV20 程为可产生 PWM 信号,捕获/比较控制信号进行预装载(TIMER2_CR1 寄存器 的 CCPC = 1),并且 COM 事件由触发输入控制(TIMER2_CR1 寄存器中 CCUS = 1)。发生 COM 事件后,在 PWM 控制位(CCxE、OCxM)中写入下一步的配 置,此操作可在由 OC2REF 上升沿产生的中断子程序中完成。 图 9-33 霍尔传感器接口的例子 9.4.17 定时器和外部触发的同步 TIMERx 定时器能够在多种模式下和一个外部的触发同步:复位模式、门控 模式和触发模式。 从模式:复位模式 在发生一个触发输入事件时,计数器和它的预分频器能够重新被初始化;同 时,如果 TIMERx_CR1 寄存器的 URS 位为低,还产生一个更新事件 UEV;然 Rev1.8 2022/04/27 105 / 191 CSM32RV20 后所有的预装载寄存器(TIMERx_ARR,TIMERx_CCRx)都会被更新。 在以下的例子中,TI1 输入端的上升沿导致向上计数器被清零: ● 配置通道 1 以检测 TI1 的上升沿。配置输入滤波器的带宽(在本例中,不需要任何 滤波器,因此保持 IC1F = 0000)。触发操作中不使用捕获预分频器,所以不需要 配置。CC1S 位只选择输入捕获源,即 TIMERx_CCMR1 寄存器中 CC1S = 01。置 TIMERx_CCER 寄存器中 CC1P = 0 以确定极性(只检测上升沿); ● 置 TIMERx_CR1 寄存器中 SMS = 100,配置定时器为复位模式;置 TIMERx_CR1 寄存器中 TS = 2’b01,选择 TI1 作为输入源; ● 置 TIMERx_CR1 寄存器中 CEN = 1,启动计数器。 计数器开始依据内部时钟计数,然后正常运转直到 TI1 出现一个上升沿;此 时,计数器被清零然后从 0 重新开始计数。同时,触发标志(TIMERx_SR 寄存 器中的 TIF 位)被设置。 下图显示当自动重装载寄存器 TIMERx_ARR = 0x36 时的动作。在 TI1 上升 沿和计数器的实际复位之间的延时取决于 TI1 输入端的重同步电路。 TI1 UG 计 数 器 时 钟 =ck_cnt=ck_psc 计数器寄存器 30 31 32 33 34 35 36 00 01 02 03 04 00 01 02 03 TIF 图 9-34 复位模式下的控制电路 从模式:门控模式 按照选中的输入端电平使能计数器。 在如下的例子中,计数器只在 TI1 为低时向上计数: ● 配置通道 1 以检测 TI1 上的低电平。配置输入滤波器带宽(本例中,不需要滤波, 所以保持 IC1F = 0000)。触发操作中不使用捕获预分频器,所以不需要配置。CC1S 位 用 于 选 择 输 入 捕 获 源 , 置 TIMERx_CCMR1 寄 存 器 中 CC1S = 01 。 置 TIMERx_CCER 寄存器中 CC1P = 1 以确定极性(只检测低电平); ● 置 TIMERx_CR1 寄存器中 SMS = 101,配置定时器为门控模式;置 TIMERx_CR1 寄存器中 TS = 2’b01,选择 TI1 作为输入源; ● 置 TIMERx_CR1 寄存器中 CEN = 1,启动计数器。在门控模式下,如果 CEN = 0, Rev1.8 2022/04/27 106 / 191 CSM32RV20 则计数器不能启动,不论触发输入电平如何。 只要 TI1 为低,计数器开始依据内部时钟计数,一旦 TI1 变高则停止计数。 当计数器开始或停止时都设置 TIMERx_SR 中的 TIF 标置。TI1 上升沿和计数器 实际停止之间的延时取决于 TI1 输入端的重同步电路。 TI1 cnt_en 计 数 器 时 钟 =ck_cnt=ck_psc 计数器寄存器 30 31 32 33 35 36 37 34 38 TIF write TIF=0 图 9-35 门控模式下的控制电路 从模式:触发模式 输入端上选中的事件使能计数器。在下面的例子中,计数器在 TI2 输入的上 升沿开始向上计数: ● 配置通道 2 检测 TI2 的上升沿。配置输入滤波器带宽(本例中,不需要任何滤波器, 保持 IC2F = 0000)。触发操作中不使用捕获预分频器,不需要配置。CC2S 位只 用于选择输入捕获源, 置 TIMERx_CCMR1 寄存器中 CC2S = 01。 置 TIMERx_CCER 寄存器中 CC2P = 1 以确定极性(只检测低电平); ● 置 TIMERx_CR1 寄存器中 SMS = 110,配置定时器为触发模式;置 TIMERx_CR1 寄存器中 TS = 2’b10,选择 TI2 作为输入源。 当 TI2 出现一个上升沿时,计数器开始在内部时钟驱动下计数,同时设置 TIF 标志。 TI2 cnt_en 计 数 器 时 钟 =ck_cnt=ck_psc 计数器寄存器 34 35 TIF 图 9-36 触发器模式下的控制电路 Rev1.8 2022/04/27 107 / 191 36 37 38 CSM32RV20 9.5 TIMERx 寄存器描述 TIM1 基址:0x3000_0018 TIM2 基址:0x3000_0098 9.5.1 控制寄存器(TIMERx_CR1) 偏移地址:0x00 复位值:0x0000_0000 31 30 29 28 27 MMS Reserved 26 25 24 TS Reserved RW 23 22 21 RW 20 19 18 17 16 TI1S SMS CCUS CCPC OIS4N OIS4 RW RW RW RW RW RW 9 8 15 14 13 12 11 10 OIS3N OIS3 OIS2N OIS2 OIS1N OIS1 CKD RW RW RW RW RW RW RW 7 6 5 4 3 2 1 0 ARPE CMS DIR OPM URS UDIS CEN RW RW RW RW RW RW RW 位 标记 功能描述 31 Reserved 保留位 100:比较 – OC1REF 信号被用于作为触发输出(TRGO) ; 30:28 MMS 101:比较 – OC2REF 信号被用于作为触发输出(TRGO) ; 110:比较 – OC3REF 信号被用于作为触发输出(TRGO) ; 111:比较 – OC4REF 信号被用于作为触发输出(TRGO) 27:26 Reserved 保留位 触发选择,选择用于同步计数器的触发输入。 00:TI1 的边沿检测器,TI1 的上/降沿均有效(TI1F_ED) ; 25:24 TS 01:滤波后的定时器输入 1(TI1FP1) ; 10:滤波后的定时器输入 2(TI2FP2) ; 11:ITR(timer1 中选择的是 timer2 的 TRGO,timer2 中选择的是 timer1 的 TRGO) 23 TI1S Rev1.8 2022/04/27 TI1S:TI1 选择 0:TIM1_CH1 管脚连到 TI1 输入; 108 / 191 CSM32RV20 1:TIMx_CH1、TIMx_CH2 和 TIMx_CH3 管脚经异或后连到 TI1 输入 当选择了外部信号,触发信号(TRGI)的有效边沿与选中的外部输入极 性关。 100:复位模式:选中的触发输入(TRGI)的上升沿重新初始化计数器, 并且产生一个更新寄存器的信号; 101:门控模式:当触发输入(TRGI)为高时,计数器的时钟开启。一旦 触发输入变为低,则计数器停止(但不复位)。计数器的启动和停止都是 22:20 SMS 受控的; 110:触发模式 – 计数器在触发输入 TRGI 的上升沿启动(但不复位), 只有计数器的启动是受控的; 111:外部时钟模式 1 – 选中的触发输入(TRGI)的上升沿驱动计数器 注:如果 TI1F_ED 被选为触发输入(TS = 00)时,不要使用门控模式。 这是因为 TI1F_ED 在每次 TI1F 变化时输出一个脉冲,然而门控模式是要 检查触发输入的电平。 捕获/比较控制更新选择 0:如果捕获/比较控制位是预装载的(CCPC=1),只能通过设置 COM 位 19 CCUS 更新它们; 1:如果捕获/比较控制位是预装载的(CCPC=1),可以通过设置 COM 位 或 TRGI 上的一个上升沿更新它们。 注:该位只对具有互补输出的通道起作用。 捕获/比较预装载控制位 0:CCxE,CCxNE 和 OCxM 位不是预装载的; 18 CCPC 1:CCxE,CCxNE 和 OCxM 位是预装载的;设置该位后,它们只在设置 了 COM 位后被更新。 注:该位只对具有互补输出的通道起作用。 输出空闲状态 1(OC4N 输出)。 0:当 MOE = 0 时,死区后 OC4N = 0; 17 OIS4N 1:当 MOE = 0 时,死区后 OC4N = 1。 注:已经设置了 LOCK(TIMER1_BKR 寄存器)级别 1、2 或 3 后,该位不 能被修改。 输出空闲状态 1(OC4 输出)。 0:当 MOE = 0 时,如果实现了 OC4N,则死区后 OC4 = 0; 16 OIS4 1:当 MOE = 0 时,如果实现了 OC4N,则死区后 OC4 = 1。 注:已经设置了 LOCK(TIMER1_BKR 寄存器)级别 1、2 或 3 后,该位 不能被修改。 输出空闲状态 1(OC3N 输出)。 0:当 MOE = 0 时,死区后 OC3N = 0; 15 OIS3N 1:当 MOE = 0 时,死区后 OC3N = 1。 注:已经设置了 LOCK(TIMER1_BKR 寄存器)级别 1、2 或 3 后,该位 不能被修改。 14 OIS3 Rev1.8 2022/04/27 输出空闲状态 1(OC3 输出)。 0:当 MOE = 0 时,如果实现了 OC3N,则死区后 OC3 = 0; 109 / 191 CSM32RV20 1:当 MOE = 0 时,如果实现了 OC3N,则死区后 OC3 = 1。 注:已经设置了 LOCK(TIMER1_BKR 寄存器)级别 1、2 或 3 后,该位 不能被修改。 输出空闲状态 1(OC2N 输出)。 0:当 MOE = 0 时,死区后 OC2N = 0; 13 OIS2N 1:当 MOE = 0 时,死区后 OC2N = 1。 注:已经设置了 LOCK(TIMER1_BKR 寄存器)级别 1、2 或 3 后,该位 不能被修改。 输出空闲状态 1(OC2 输出)。 0:当 MOE = 0 时,如果实现了 OC2N,则死区后 OC2 = 0; 12 OIS2 1:当 MOE = 0 时,如果实现了 OC2N,则死区后 OC2 = 1。 注:已经设置了 LOCK(TIMER1_BKR 寄存器)级别 1、2 或 3 后,该位 不能被修改。 输出空闲状态 1(OC1N 输出)。 0:当 MOE = 0 时,死区后 OC1N = 0; 11 OIS1N 1:当 MOE = 0 时,死区后 OC1N = 1。 注:已经设置了 LOCK(TIMER1_BKR 寄存器)级别 1、2 或 3 后,该位 不能被修改。 输出空闲状态 1(OC1 输出)。 0:当 MOE = 0 时,如果实现了 OC1N,则死区后 OC1 = 0; 10 OIS1 1:当 MOE = 0 时,如果实现了 OC1N,则死区后 OC1 = 1。 注:已经设置了 LOCK(TIMER1_BKR 寄存器)级别 1、2 或 3 后,该位 不能被修改。 时钟分频因子 这 2 位定义在定时器时钟(CK_INT)频率与数字滤波器(Tix)使用的采 样频率之间的分频比例。 9:8 CKD 00:tDTS = tCK_INT; 01:tDTS = 2 × tCK_INT; 10:tDTS = 4 × tCK_INT; 11:保留 自动重装载预装载允许位 7 ARPE 0:TIMERx_ARR 寄存器没有缓冲; 1:TIMERx_ARR 寄存器被装入缓冲器 选择中央对齐模式 00:边沿对齐模式。计数器依据方向位(DIR)向上或向下计数; 01:中央对齐模式 1。计数器交替地向上和向下计数。配置为输出的通道 (TIMERx_CCMRx 寄存器中 CCxS=00)的输出比较中断标志位,只在计 6:5 CMS 数器向下计数时被设置; 10:中央对齐模式 2。计数器交替地向上和向下计数。配置为输出的通道 (TIMERx_CCMRx 寄存器中 CCxS=00)的输出比较中断标志位,只在计 数器向上计数时被设置; 11:中央对齐模式 3。计数器交替地向上和向下计数。配置为输出的通道 Rev1.8 2022/04/27 110 / 191 CSM32RV20 (TIMERx_CCMRx 寄存器中 CCxS = 00)的输出比较中断标志位,在计 数器向上和向下计数时均被设置; 注:在计数器开启时(CEN=1),不允许从边沿对齐模式转换到中央对齐 模式。 方向 0:计数器向上计数; DIR 4 1:计数器向下计数。 注:当计数器配置为中央对齐模式或编码器模式时,该位为只读。 单脉冲模式 OPM 3 0:在发生更新事件时,计数器不停止; 1:在发生下一次更新事件(清除 CEN 位)时,计数器停止 更新请求源 软件通过该位选择 UEV 事件的源 0:如果允许产生更新中断,则下述任一事件产生一个更新中断: URS 2 − 计数器溢出/下溢 − 设置 UG 位 − 从模式控制器产生的更新; 1:如果允许产生更新中断,则只有计数器溢出/下溢产生一个更新中断 禁止更新 软件通过该位允许/禁止 UEV 事件的产生 0:允许 UEV。更新(UEV)事件由下述任一事件产生: − 计数器上溢/下溢 − 设置 UG 位 UDIS 1 − 从模式控制器产生的更新 被缓存的寄存器被装入它们的预装载值; 1:禁止 UEV。不产生更新事件,影子寄存器(ARR,PSC,CCRx)保持 它们的值。如果设置了 UG 位或从模式控制器发出了一个硬件复位,则计 数器和预分频器被重新初始化 允许计数器 0:禁止计数器; 1:开启计数器。 CEN 0 注:在软件设置了 CEN 位后,外部时钟、门控模式和编码器模式才能工 作。触发模式可以自动地通过硬件设置 CEN 位。在单脉冲模式下,当发 生更新事件时,CEN 被自动清除。 9.5.2 滤波寄存器(TIMERx_ICF) 偏移地址:0x04 复位值:0x0000_0000 31 30 29 Rev1.8 2022/04/27 28 27 26 25 24 23 111 / 191 22 21 20 19 18 17 16 CSM32RV20 Reserved 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 IC4F[3:0] IC3F[3:0] IC2F[3:0] IC1F[3:0] RW RW RW RW 位 标记 功能描述 31:16 Reserved 保留位 15:12 IC4F[3:0] 输入捕获 4 滤波器 11:8 IC3F[3:0] 输入捕获 3 滤波器 7:4 IC2F[3:0] 输入捕获 2 滤波器 0 输入捕获 1 滤波器 这几位定义了 TI1 输入的采样频率及数字滤波器长度。数字滤波器由一个 事件计数器组成, 它记录到 N 个事件后会产生一个输出的跳变: 0000:无滤波器,以 fDTS 采样; 0001:采样频率 fSAMPLING=fCK_INT,N=2; 0010:采样频率 fSAMPLING=fCK_INT,N=4; 0011:采样频率 fSAMPLING=fCK_INT,N=8; 0100:采样频率 fSAMPLING=fDTS/2,N=6; 0101:采样频率 fSAMPLING=fDTS/2,N=8; 0110:采样频率 fSAMPLING=fDTS/4,N=6; 3:0 IC1F[3:0] 0111:采样频率 fSAMPLING=fDTS/4,N=8; 1000:采样频率 fSAMPLING=fDTS/8,N=6; 1001:采样频率 fSAMPLING=fDTS/8,N=8; 1010:采样频率 fSAMPLING=fDTS/16,N=5; 1011:采样频率 fSAMPLING=fDTS/16,N=6; 1100:采样频率 fSAMPLING=fDTS/16,N=8; 1101:采样频率 fSAMPLING=fDTS/32,N=5; 1110:采样频率 fSAMPLING=fDTS/32,N=6; 1111:采样频率 fSAMPLING=fDTS/32,N=8。 注:在现在的芯片版本中,当 ICxF[3:0]=1,2 或 3 时,公式中的 fDTS 由 CK_INT 替代。 9.5.3 中断使能寄存器(TIMERx_DIER) 偏移地址:0x08 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 Reserved Rev1.8 2022/04/27 112 / 191 20 19 18 17 16 CSM32RV20 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 BIE TIE COMIE CC4IE CC3IE CC2IE CC1IE UIE RW RW RW RW RW RW RW RW Reserved 位 标记 功能描述 31:8 Reserved 保留位 允许刹车中断 7 BIE 0:禁止刹车中断; 1:允许刹车中断 允许触发中断 6 TIE 0:禁止触发中断; 1:允许触发中断 允许 COM 中断 5 COMIE 0:禁止 COM 中断; 1:允许 COM 中断 允许捕获/比较 4 中断 4 0:禁止捕获/比较 4 中断; CC4IE 1:允许捕获/比较 4 中断 允许捕获/比较 3 中断 3 0:禁止捕获/比较 3 中断; CC3IE 1:允许捕获/比较 3 中断 允许捕获/比较 2 中断 2 0:禁止捕获/比较 2 中断; CC2IE 1:允许捕获/比较 2 中断 允许捕获/比较 1 中断 1 0:禁止捕获/比较 1 中断; CC1IE 1:允许捕获/比较 1 中断 允许更新中断 0 UIE 0:禁止更新中断; 1:允许更新中断 9.5.4 状态寄存器(TIMERx_SR) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 7 6 5 4 3 2 1 0 BIF TIF CO CC CC CC CC MIF 4IF 3IF 2IF 1IF Reserved 15 14 13 12 11 10 9 8 CC CC CC CC 4OF 3OF 2OF 1OF Reserved Rev1.8 2022/04/27 113 / 191 UIF CSM32RV20 RW RW 位 标记 功能描述 31:12 Reserved 保留位 11 CC4OF 10 CC3OF 9 CC2OF RW RW RW RW RW RW RW RW RW RW 捕获/比较 4 过捕获标记 参见 CC1OF 描述 捕获/比较 3 过捕获标记 参见 CC1OF 描述 捕获/比较 2 过捕获标记 参见 CC1OF 描述 捕获/比较 1 过捕获标记 仅当相应的通道被配置为输入捕获时,该标记可由硬件置 1。写 0 可清除 8 CC1OF 该位。 0:无过捕获产生; 1:CC1IF 置 1 时,计数器的值已经被捕获到 TIMERx_CCR1 寄存器。 刹车中断标记 一旦刹车输入有效,由硬件对该位置 1。如果刹车输入无效,则该位可由 7 BIF 软件清 0。 0:无刹车事件产生; 1:刹车输入上检测到有效电平 触发器中断标记 当发生触发事件(当从模式控制器处于除门控模式外的其它模式时,在 TRGI 输入端检测到有效边沿,或或门控模式下的任一边沿)时由硬件对该 6 TIF 位置 1。该位由软件清 0。 0:无触发器事件产生; 1:触发器中断等待响应 COM 中断标记 一旦产生 COM 事件(当 CCxE、CCxNE、OCxM 已被更新),该位由硬 5 COMIF 件置 1。该位由软件清 0。 0:无 COM 事件产生; 1:COM 中断等待响应 捕获/比较 4 中断标记 4 CC4IF 3 CC3IF 2 CC2IF 参考 CC1IF 描述 捕获/比较 3 中断标记 参考 CC1IF 描述 捕获/比较 2 中断标记 参考 CC1IF 描述 捕获/比较 1 中断标记 如果通道 CC1 配置为输出模式: 1 CC1IF 当计数器值与比较值匹配时该位由硬件置 1,但在中心对称模式下除外 (参考 TIMER1_CR1 寄存器的 CMS 位)。该位由软件清 0。 0:无匹配发生; Rev1.8 2022/04/27 114 / 191 CSM32RV20 位 标记 功能描述 1:TIM1_CNT 的值与 TIM1_CCR1 的值匹配。 如果通道 CC1 配置为输入模式: 当捕获事件发生时该位由硬件置 1,该位由软件清 0 或通过 TIMERx_CCR1 清 0。 0:无输入捕获产生; 1:输入捕获产生并且计数器值已装入 TIMERx_CCR1(在 IC1 上检测到 与所选极性相同的边沿) 更新中断标记 当产生更新事件时该位由硬件置 1。该位由软件清 0。 0:无更新事件产生; 1:更新事件等待响应。当寄存器被更新时该位由硬件置 1: − 若 TIMERx_CR1 寄存器的 UDIS = 0,当 REP_CNT = 0 时产生更新事件 0 UIF (重复向下计数器上溢或下溢时); − 若 TIMERx_CR1 寄存器的 UDIS = 0、URS = 0,当 TIMERx_EGR 寄存 器的 UG=1 时产生更新事件(软件对 CNT 重新初始化); − 若 TIMERx_CR1 寄存器的 UDIS = 0、URS = 0,当 CNT 被触发事件重 初始化时产生更新事件 9.5.5 事件产生寄存器(TIMERx_EGR) 偏移地址:0x10 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 1 0 Reserved 15 14 13 12 11 10 9 8 7 6 5 4 3 2 BG TG COMG CC4G CC2G CC1G UG W W W W W W W Reserved 位 标记 功能描述 31:8 Reserved 保留位 产生刹车事件 该位由软件置 1,用于产生一个刹车事件,由硬件自动清 0。 7 BG 0:无动作; 1:产生一个刹车事件。此时 MOE = 0、BIF =1。 产生触发事件 该位由软件置 1,用于产生一个触发事件,由硬件自动清 0. 6 TG 0:无动作; 1:产生一个触发事件。此时 TIF =1。 Rev1.8 2022/04/27 115 / 191 CSM32RV20 捕获/比较事件,产生控制更新 该位由软件置 1,由硬件自动清 0。 5 COMG 0:无动作; 1:当 CCPC = 1,允许更新 CCxE、CCxNE、OCxM 位。 注:该位只对有互补输出的通道有效 产生捕获/比较 4 事件 4 CC4G 3 CC3G 2 CC2G 参考 CC1G 描述 产生捕获/比较 3 事件 参考 CC1G 描述 产生捕获/比较 2 事件 参考 CC1G 描述 产生捕获/比较 1 事件 该位由软件置 1,用于产生一个捕获/比较事件,由硬件自动清 0。 0:无动作; 1:在通道 CC1 上产生一个捕获/比较事件: 1 若通道 CC1 配置为输出: CC1G 设置 CC1IF=1,若开启对应的中断,则产生相应的中断。 若通道 CC1 配置为输入: 当前的计数器值捕获至 TIMERx_CCR1 寄存器,设置 CC1IF = 1,若开启 对应的中断,则产生相应的中断。若 CC1IF 已经为 1,则设置 CC1OF = 1 产生更新事件 该位由软件置 1,由硬件自动清 0。 0:无动作; 0 UG 1:重新初始化计数器,并产生一个更新事件。注意预分频器的计数器也 被清 0(但是预分频系数不变)。若在中心对称模式下或 DIR = 0(向上计 数)则计数器被清 0,若 DIR = 1(向下计数)则计数器取 TIMERx_ARR 的值。 9.5.6 捕获/比较模式寄存器 1(TIMERx_CCMR1) 偏移地址:0x14 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 6 5 4 19 18 17 16 1 0 Reserved 15 14 13 OC2M RES 11 10 OC2PE [2:0] RW 位 12 标记 Rev1.8 2022/04/27 9 8 7 CC2S RES RW [1:0] OC1M RES RW 功能描述 116 / 191 3 2 OC1PE [2:0] RW CC1S RES RW [1:0] RW CSM32RV20 31:15 RES 保留位 14:12 OC2M[2:0] 输出比较 2 模式 11 OC2PE 输出比较 2 预装载使能 10 RES 保留位 捕获/比较 2 选择。 该位定义通道的方向(输入/输出),及输入脚的选择: 00:CC2 通道被配置为输出; 01:CC2 通道被配置为输入,IC2 映射在 TI2 上; 9:8 CC2S[1:0] 10:CC2 通道被配置为输入,IC2 映射在 TI1 上; 11:CC2 通道被配置为输入,IC2 映射在 TRC 上。此模式仅工作在内部触 发器输入被选中时(由 TIMERx_CR1 寄存器的 TS = 2’b11)。 注:CC2S 仅在通道关闭时(TIMERx_CCER 寄存器的 CC2E = 0)才是可 写的。 7 RES 保留位 输出比较 1 模式 该位定义了输出参考信号 OC1REF 的动作,而 OC1REF 决定了 OC1、 OC1N 的值。OC1REF 是高电平有效,而 OC1、OC1N 的有效电平取决于 CC1P、CC1NP 位。 000:冻结。输出比较寄存器 TIMERx_CCR1 与计数器 TIMERx_CNT 间的 比较对 OC1REF 不起作用; 001:匹配时设置通道 1 为有效电平。当计数器 TIMx_CNT 的值与捕获/比 较寄存器 1(TIMERx_CCR1)相同时,强制 OC1REF 为高; 010:匹配时设置通道 1 为无效电平。当计数器 TIMERx_CNT 的值与捕获/ 比较寄存器 1(TIMERx_CCR1)相同时,强制 OC1REF 为低; 011:翻转。当 TIMERx_CCR1 = TIMERx_CNT 时,翻转 OC1REF 的电平; 100:强制为无效电平。强制 OC1REF 为低; 6:4 OC1M[2:0] 101:强制为有效电平。强制 OC1REF 为高; 110:PWM 模式 1-在向上计数时,一旦 TIMERx_CNT < TIMERx_CCR1 时通道 1 为有效电平,否则为无效电平;在向下计数时,一旦 TIM1_CNT > TIM1_CCR1,通道 1 变为无效电平(OC1REF = 0),否则变为有效电平 (OC1_REF = 1); 111:PWM 模式 2-在向上计数时,一旦 TIMERx_CNT < TIMERx_CCR1, 通道 1 变为无效电平,否则变为有效电平;在向下计数时,一旦 TIMERx_CNT > TIMERx_CCR1,通道 1 变为有效电平,否则变为无效电 平。 注 1:一旦 LOCK 级别设为 3(TIMx_BDTR 寄存器中的 LOCK 位)并且 CC1S = 00(该通道配置成输出)则该位不能被修改。 注 2:在 PWM 模式 1 或 PWM 模式 2 中,只有当比较结果改变了或在输出 比较模式中从冻结模式切换到 PWM 模式时,OC1REF 电平才改变。 输出比较 1 预装载使能 3 OC1PE 0:禁止 TIMERx_CCR1 寄存器的预装载功能,可随时写 TIMERx_CCR1 寄存器,且新值马上起作用; Rev1.8 2022/04/27 117 / 191 CSM32RV20 1:开启 TIMERx_CCR1 寄存器的预装载功能,读写操作仅对预装载寄存器 操作,TIMERx_CCR1 的预装载值在更新事件到来时被载入当前寄存器中。 注 1:一旦 LOCK 级别设为 3(TIMERx_BDTR 寄存器中的 LOCK 位)并 且 CC1S = 00(该通道配置成输出)则该位不能被修改。 注 2:仅在单脉冲模式下,可以在未确认预装载寄存器情况下使用 PWM 模式,否则其动作不确定 2 保留位 RES 捕获/比较 1 选择。 该位定义通道的方向(输入/输出),及输入脚的选择: 00:CC1 通道被配置为输出; 01:CC1 通道被配置为输入,IC1 映射在 TI1 上; 1:0 10:CC1 通道被配置为输入,IC1 映射在 TI2 上; CC1S[1:0] 11:CC1 通道被配置为输入,IC1 映射在 TRC 上。此模式仅工作在内部触 发器输入被选中时(TIMERx_CR1 寄存器的 TS = 2’b11)。 注:CC1S 仅在通道关闭时(TIMERx_CCER 寄存器的 CC1E = 0)才是可 写的。 9.5.7 捕获/比较模式寄存器 2(TIMERx_CCMR2) 偏移地址:0x18 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 6 5 4 19 18 17 16 1 0 Reserved 15 14 13 12 11 10 OC4M 9 8 7 CC4S [2:0] RW 2 OC3M OC4PE RES 3 CC3S OC3PE RES RW [1:0] RES RW 位 标记 功能描述 31:15 RES 保留位 14:12 OC4M[2:0] 输出比较 4 模式 11 OC4PE 输出比较 4 预装载使能 10 RES 保留位 [2:0] RW RES RW [1:0] RW 捕获/比较 4 选择。 该位定义通道的方向(输入/输出),及输入脚的选择: 00:CC4 通道被配置为输出; 9:8 CC4S[1:0] 01:CC4 通道被配置为输入,IC4 映射在 TI4 上; 10:CC4 通道被配置为输入,IC4 映射在 TI3 上; 11:CC4 通道被配置为输入,IC4 映射在 TRC 上。此模式仅工作在内部触 Rev1.8 2022/04/27 118 / 191 CSM32RV20 发器输入被选中时(TIMERx_CR1 寄存器的 TS = 2’b11)。 注:CC4S 仅在通道关闭时(TIMERx_CCER 寄存器的 CC4E = 0)才是可 写的 7 RES 保留位 6:4 OC3M[2:0] 输出比较 3 模式 3 OC3PE 输出比较 3 预装载使能 2 RES 保留位 捕获/比较 3 选择。 这 2 位定义通道的方向(输入/输出),及输入脚的选择: 00:CC3 通道被配置为输出; 01:CC3 通道被配置为输入,IC3 映射在 TI3 上; 1:0 CC3S[1:0] 10:CC3 通道被配置为输入,IC3 映射在 TI4 上; 11:CC3 通道被配置为输入,IC3 映射在 TRC 上。此模式仅工作在内部触 发器输入被选中时(由 TIMERx_CR1 寄存器的 TS = 2’b11)。 注:CC3S 仅在通道关闭时(TIMERx_CCER 寄存器的 CC3E = 0)才是可 写的 9.5.8 捕获/比较使能寄存器(TIMERx_CCER) 偏移地址:0x1C 复位值:0x0000_0000 31 30 29 28 27 26 25 24 19 18 17 16 Reserved 23 22 21 20 Reserved 15 14 13 12 11 10 9 8 CC4NP CC4NE CC4P CC4E CC3NP CC3NE CC3P CC3E RW RW RW RW RW RW RW RW 7 6 5 4 3 2 1 0 CC2NP CC2NE CC2P CC2E CC1NP CC1NE CC1P CC1E RW RW RW RW RW RW RW RW 位 标记 功能描述 31:16 Reserved 保留位 15 CC4NP 输入/捕获 4 互补输出极性。参考 CC1NP 的描述。 14 CC4NE 输入/捕获 4 互补输出使能。参考 CC1NE 的描述。 13 CC4P 输入/捕获 4 输出极性。参考 CC1P 的描述。 12 CC4E 输入/捕获 4 输出使能。参考 CC1E 的描述。 11 CC3NP 输入/捕获 3 互补输出极性。参考 CC1NP 的描述。 10 CC3NE 输入/捕获 3 互补输出使能。参考 CC1NE 的描述。 Rev1.8 2022/04/27 119 / 191 CSM32RV20 位 标记 功能描述 9 CC3P 输入/捕获 3 输出极性。参考 CC1P 的描述。 8 CC3E 输入/捕获 3 输出使能。参考 CC1E 的描述。 7 CC2NP 输入/捕获 2 互补输出极性。参考 CC1NP 的描述。 6 CC2NE 输入/捕获 2 互补输出使能。参考 CC1NE 的描述。 5 CC2P 输入/捕获 2 输出极性。参考 CC1P 的描述。 4 CC2E 输入/捕获 2 输出使能。参考 CC1E 的描述。 输入/捕获 1 互补输出极性 0:OC1N 高电平有效; 3 1:OC1N 低电平有效。 CC1NP 注:一旦 LOCK 级别(TIMERx_BDTR 寄存器中的 LCCK 位)设为 3 或 2 且 CC1S = 00(通道配置为输出)则该位不能被修改。 输入/捕获 1 互补输出使能 0:关闭-OC1N 禁止输出,因此 OC1N 的输出电平依赖于 MOE,OSSI, 2 OSSR,OIS1,OIS1N,CC1E 位的值。 CC1NE 1:开启-OC1N 信号输出到对应的输出引脚,其输出电平依赖于 MOE, OSSI,OSSR,OIS1,OIS1N,CC1E 位的值。 输入/捕获 1 输出极性 CC1 通道配置为输出: 0:OC1 高电平有效; 1:OC1 低电平有效。 CC1 通道配置为输入: 1 该位选择是 IC1 还是 IC1 的反相信号作为触发或捕获信号。 CC1P 0:不反相-发生在 IC1 的上升沿;当用作外部触发器时,IC1 不反相。 1:反相-捕获发生在 IC1 的下降沿;当用作外部触发器时,IC1 反相。 注:一旦 LOCK 级别(TIMERx_BDTR 寄存器中的 LCCK 位)设为 3 或 2,则该位不能被修改 输入/捕获 1 输出使能 CC1 通道配置为输出: 0:关闭-OC1 禁止输出,因此 OC1 的输出电平依赖于 MOE,OSSI,OSSR, OIS1,OIS1N,CC1NE 位的值; 0 1:开启-OC1 信号输出到对应的输出引脚,其输出电平依赖于 MOE,OSSI, CC1E OSSR,OIS1,OIS1N,CC1NE 位的值。 CC1 通道配置为输入: 该位决定了计数器的值是否能捕获入 TIMERx_CCR1 寄存器。 0:捕获禁止; 1:捕获使能 表 9-1 带刹车功能的互补输出通道 OCx 和 OCxN 的控制位 控制位 输出状态 MOE OSSI OSSR CCxE CCxNE 1 x 0 0 0 OCx 输出状态 输出禁止(与定时器断开) OCx = 0,OCx_EN = 0 Rev1.8 2022/04/27 120 / 191 OCxN 输出状态 输出禁止(与定时器断开) CSM32RV20 输出禁止(与定时器断开) 0 0 1 OCxREF + 极性, OCxN = OCxREF xor CCxNP OCx = 0,OCx_EN = 0 OCxN_EN = 1 OCxREF + 极性, 0 1 0 OCx_EN = 1 0 1 1 1 1 0 1 0 0 1 1 输出禁止(与定时器断开) OCx = OCxREF xor CCxP OCxN = 0,OCxN_EN = 0 OCxREF + 极性 + 死区, OCxREF 反相 + 极性 + 死区 OCx_EN=1 OCxN_EN = 1 输出禁止(与定时器断开) 输出禁止(与定时器断开) OCx = CCxP,OCx_EN = 0 OCxN = CCxNP,OCxN_EN = 0 关闭状态(输出使能且为无 OCxREF + 极性, 效电平) OCxN = OCxREF xor CCxNP OCx = CCxP,OCx_EN = 1 OCxN_EN = 1 OCxREF + 极性, 关闭状态(输出使能且为无效电 OCx = OCxREF xor CCxP 平) OCx_EN = 1 OCxN = CCxNP,OCxN_EN = 1 OCxREF + 极性 + 死区 OCxREF 反相 + 极性 + 死区 OCx_EN = 1 OCxN_EN = 1 1 0 1 0 1 0 0 0 输出禁止(与定时器断开) 0 0 1 异步地:OCx = CCxP,OCx_EN = 0,OCxN = CCxNP, 0 1 0 OCxN_EN = 0;若存在时钟:经过一个死区时间后 OCx = OISx, 0 1 1 OCxN = OISxN,假设 OISx 与 OISxN 并不都对应 OCx 和 OCxN 的 0 0 有效电平 1 0 1 关闭状态(输出使能且为无效电平) 1 1 0 异步地:OCx = CCxP,OCx_EN = 1,OCxN = CCxNP, 1 x OCxN_EN = 1;若存在时钟:经过一个死区时间后 OCx = OISx, 1 1 1 OCxN = OISxN,假设 OISx 与 OISxN 并不都对应 OCx 和 OCxN 的 有效电平 Rev1.8 2022/04/27 121 / 191 CSM32RV20 9.5.9 计数寄存器(TIMERx_CNT) 偏移地址:0x20 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 7 6 5 4 3 2 1 0 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 CNT RW 位 标记 功能描述 31:16 Reserved 保留位 15:0 CNT 计数器的值 9.5.10 分频寄存器(TIMERx_PSC) 偏移地址:0x24 复位值:0x0000_0000 31 30 29 28 27 26 25 24 Reserved 15 14 13 12 11 10 9 8 7 PSC RW 位 标记 功能描述 31:16 Reserved 保留位 预分频器的值 计数器的时钟频率(CK_CNT)等于 fCK_PSC /(PSC[15:0] + 1)。 15:0 PSC PSC 包含了当更新事件产生时装入当前预分频器寄存器的值;更新事件包 括计数器被 TIM_EGR 的 UG 位清 0 或被工作在复位模式的从控制器清 0。 9.5.11 自动重装载寄存器(TIMERx_ARR) 偏移地址:0x28 复位值:0x0000_0000 Rev1.8 2022/04/27 122 / 191 CSM32RV20 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 ARR RW 位 标记 功能描述 31:16 Reserved 保留位 自动重装载的值 ARR 包含了将要装载入实际的自动重装载寄存器的值。 15:0 ARR 详细参考 9.4.1:时基单元有关 ARR 的更新和动作。 当自动重装载的值为空时,计数器不工作。 9.5.12 重复计数寄存器(TIMERx_RCR) 偏移地址:0x2C 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 REP Reserved RW 位 标记 功能描述 31:8 Reserved 保留位 周期计数器的值 开启了预装载功能后,这些位允许用户设置比较寄存器的更新速率(即周 期性地从预装载寄存器传输到当前寄存器);如允许产生更新中断,则会 同时影响产生更新中断的速率。 每次向下计数器 REP_CNT 达到 0,会产生一个更新事件并且计数器 7:0 REP REP_CNT 重新从 REP 值开始计数。由于 REP_CNT 只有在周期更新事件 UEV 发生时才重载 REP 值,因此对 TIMERx_RCR 寄存器写入的新值只在 下次周期更新事件发生时才起作用。 这意味着在 PWM 模式中,(REP+1)对应着: - 在边沿对齐模式下,PWM 周期的数目; - 在中心对称模式下,PWM 半周期的数目。 Rev1.8 2022/04/27 123 / 191 CSM32RV20 9.5.13 捕获/比较寄存器 1(TIMERx_CCR1) 偏移地址:0x30 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 CCR1 RW 位 标记 功能描述 31:16 Reserved 保留位 捕获/比较 1 的值 若 CC1 通道配置为输出: CCR1 包含了装入当前捕获/比较 1 寄存器的值(预装载值)。 如果在 TIMERx_CCMR1 寄存器(OC1PE 位)中未选择预装载特性,其始 15:0 终装入当前寄存器中。否则,只有当更新事件发生时,此预装载值才装入当 CCR1 前捕获/比较 1 寄存器中。当前捕获/比较寄存器包含了与计数器 TIMERx_CNT 比较的值,并且在 OC1 端口上输出信号。 若 CC1S 通道配置为输入: CCR1 包含了由上一次输入捕获 1 事件(IC1)传输的计数器值。 9.5.14 捕获/比较寄存器 2(TIMERx_CCR2) 偏移地址:0x34 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 CCR2 RW 位 标记 功能描述 捕获/比较 2 的值 若 CC2 通道配置为输出: 15:0 CCR2 CCR2 包含了装入当前捕获/比较 2 寄存器的值(预装载值)。 如果在 TIMERx_CCMR2 寄存器(OC2PE 位)中未选择预装载特性,其始 Rev1.8 2022/04/27 124 / 191 CSM32RV20 终装入当前寄存器中。否则,只有当更新事件发生时,此预装载值才装入 当前捕获/比较 2 寄存器中。当前捕获/比较寄存器包含了与计数器 TIMERx_CNT 比较的值,并且在 OC 端口上输出信号。 若 CC2S 通道配置为输入: CCR2 包含了由上一次输入捕获 2 事件(IC2)传输的计数器值。 9.5.15 捕获/比较寄存器 3(TIMERx_CCR3) 偏移地址:0x38 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 CCR3 RW 位 标记 功能描述 捕获/比较 3 的值 若 CC3 通道配置为输出: CCR3 包含了装入当前捕获/比较 3 寄存器的值(预装载值)。 如果在 TIMERx_CCMR3 寄存器(OC3PE 位)中未选择预装载特性,其始 15:0 终装入当前寄存器中。否则,只有当更新事件发生时,此预装载值才装入 CCR3 当前捕获/比较 3 寄存器中。当前捕获/比较寄存器包含了与计数器 TIMERx_CNT 比较的值,并且在 OC 端口上输出信号。 若 CC3S 通道配置为输入: CCR3 包含了由上一次输入捕获 3 事件(IC3)传输的计数器值。 9.5.16 捕获/比较寄存器 4(TIMERx_CCR4) 偏移地址:0x3C 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 CCR4 RW Rev1.8 2022/04/27 125 / 191 CSM32RV20 位 标记 功能描述 捕获/比较 4 的值 若 CC4 通道配置为输出: CCR4 包含了装入当前捕获/比较 4 寄存器的值(预装载值)。 如果在 TIMERx_CCMR4 寄存器(OC4PE 位)中未选择预装载特性,其始 15:0 终装入当前寄存器中。否则,只有当更新事件发生时,此预装载值才装入 CCR4 当前捕获/比较 3 寄存器中。当前捕获/比较寄存器包含了与计数器 TIMERx_CNT 比较的值,并且在 OC 端口上输出信号。 若 CC4 通道配置为输入: CCR4 包含了由上一次输入捕获 4 事件(IC4)传输的计数器值。 9.5.17 刹车和死区寄存器(TIMERx_BDTR) 偏移地址:0x40 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 7 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 MOE AOE BKP BKE OSSR OSSI LOCK DTG RW RW RW RW RW RW RW RW 位 标记 功能描述 31:16 Reserved 保留位 9 8 主输出使能 一旦刹车输入有效,该位被硬件异步清 0。根据 AOE 位的值,可由软件清 0 或自动置 1。它仅对配置为输出通道有效。 15 MOE 0:禁止 OC 和 OCN 输出或强制为空闲状态; 1:如果设置了相应的使能位(TIMERx_CCER 寄存器的 CCxE、CCxNE 位),则开启 OC 和 OCN 输出 自动输出使能 0:MOE 只能被软件置 1; 14 AOE 1:MOE 能被软件置 1 或在下一个更新事件自动置 1(如果刹车输入无效)。 注:一旦 LOCK 级别(TIMERx_BDTR 寄存器中的 LOCK 位)设为 1,则 该位不能被修改。 刹车输入极性 0:刹车输入低电平有效; 13 BKP 1:刹车输入高电平有效。 注:一旦 LOCK 级别(TIMERx_BDTR 寄存器中的 LOCK 位)设为 1,则 Rev1.8 2022/04/27 126 / 191 CSM32RV20 位 标记 功能描述 该位不能被修改。 刹车功能使能 0:禁止刹车输入(BRK 及 BRK_ACTH); 12 BKE 1:开启刹车输入(BRK 及 BRK_ACTH)。 注:一旦 LOCK 级别(TIMERx_BDTR 寄存器中的 LOCK 位)设为 1,则 该位不能被修改。 运行模式下“关闭状态”选择 (该位用于当 MOE = 1 时配置为输出模式且具有互补输出的通道。没有互 补输出的定时器中不存在 OSSR 位。) 有关详细参考 OC/OCN 使能的详细说明(9.5.8 节,捕获/比较使能寄存器 (TIMERx_CCER))。 11 OSSR 0:当定时器不工作时,禁止 OCx/OCxN 输出(OCx/OCxN 使能输出信号等 于 0); 1:当定时器不工作时,一旦 CCxE = 1 或 CCxNE = 1,开启 OCx/OCxN 输 出并输出无效电平。OCx/OCxN 使能输出信号等于 1。 注:一旦 LOCK 级别(TIMERx_BDTR 寄存器中的 LOCK 位)设为 2,则 该位不能被修改。 空闲模式下“态”选择 该位用于当 MOE = 0 且通道设为输出时。 参 考 OCx/OCxN 使 能 的 详细说 明 ( 12.5.9 节 , 捕获/ 比 较使 能 寄存 器 (TIMERx_CCER))。 0:当定时器不工作时,禁止 OCx/OCxN 输出(OCx/OCxN 使能输出信号等 10 OSSI 于 0); 1:当定时器不工作时,一旦 CCxE = 1 或 CCxNE = 1,OCx/OCxN 首先输 出其空闲电平。OC/OCN 使能输出信号等于 1。 注:一旦 LOCK 级别(TIMERx_BDTR 寄存器中的 LOCK 位)设为 2,则 该位不能被修改。 锁定设置 该位为防止软件错误而提供写保护。 00:锁定关闭,寄存器无写保护; 01:锁定级别 1,不能写入 TIMERx_BDTR 寄存器的 DTG/BKE/BKP/AOE 位、TIMERx_CR2 寄存器的 OISx/OISxN 位; 10:锁定级别 2,不能写入锁定级别 1 中的各位,也不能写入 CC 极性位 9:8 LOCK ( 一 旦 相 关 通 道 通 过 CCxS 位 设 为 输 出 , TIMERx_CCER 寄 存 器 的 CCxP/CCNxP 位)以及 OSSR/OSSI 位; 11:锁定级别 3,不能写入锁定级别 2 中的各位,也不能写入 CC 控制位 (一旦 相关通 道通过 CCxS 位设为 输出, TIMERx_CCMRx 寄存器的 OCxM/OCxPE 位)。 注:在系统复位后,只能写一次 LOCK 位,一旦写入 TIMERx_BDTR 寄存 器,则其内容冻结直至复位。 7:0 DTG Rev1.8 2022/04/27 死区发生器设置 127 / 191 CSM32RV20 位 标记 功能描述 这些位定义了插入互补输出之间的死区持续时间。假设 DT 表示其持续时 间: DTG[7:5] = 0xx => DT = DTG[7:0] × Tdtg,Tdtg = TDTS; DTG[7:5] = 10x => DT = (64+DTG[5:0])× Tdtg,Tdtg = 2 × TDTS; DTG[7:5] = 110 => DT = (32+DTG[4:0]) × Tdtg,Tdtg = 8 × TDTS; DTG[7:5] = 111 => DT = (32+DTG[4:0]) × Tdtg,Tdtg = 16 × TDTS; 例:若 TDTS = 125ns (8MHZ),可能的死区时间为: 0 到 15875ns,若步长时间为 125ns; 16us 到 31750ns,若步长时间为 250ns; 32us 到 63us,若步长时间为 1us; 64us 到 126us,若步长时间为 2us。 注:一旦 LOCK 级别(TIMERx_BDTR 寄存器中的 LOCK 位)设为 1、2 或 3,则这些位不能被修改。 9.5.18 Timer 时钟使能寄存器(TIMER_CLKEN) 绝对地址:0x3000_0100 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 timer2_clken_reg Reserved timer1_clken_reg Reserved RW 位 标记 功能描述 31:9 Reserved 保留位 8 timer2_clken_reg 7:1 Reserved 0 timer1_clken_reg RW timer2 时钟的控制位 0:关闭 timer2 的时钟,1:开启 timer2 的时钟 保留位 timer1 时钟的控制位 0:关闭 timer1 的时钟,1:开启 timer1 的时钟 9.6 TIM1&TIM2 寄存器映射 TIMER1 寄存器列表 基地址:0x3000_0018 寄存器 偏移地址 描述 TIMER1_CR1 0x00 控制寄存器 Rev1.8 2022/04/27 128 / 191 CSM32RV20 TIMER1_ICF 0x04 滤波寄存器 TIMER1_IER 0x08 中断使能寄存器 TIMER1_SR 0x0C 状态寄存器 TIMER1_EGR 0x10 事件产生寄存器 TIMER1_CCMR1 0x14 捕获/比较模式寄存器 1 TIMER1_CCMR2 0x18 捕获/比较模式寄存器 2 TIMER1_CCER 0x1C 捕获/比较使能寄存器 TIMER1_CNT 0x20 计数寄存器 TIMER1_PSC 0x24 预分频寄存器 TIMER1_ARR 0x28 自动重装载寄存器 TIMER1_RCR 0x2C 重复向下计数器寄存器 TIMER1_CCR1 0x30 捕获/比较寄存器 1 TIMER1_CCR2 0x34 捕获/比较寄存器 2 TIMER1_CCR3 0x38 捕获/比较寄存器 3 TIMER1_CCR4 0x3C 捕获/比较寄存器 4 TIMER1_BDTR 0x40 刹车/死区寄存器 寄存器 偏移地址 描述 TIMER2_CR1 0x00 控制寄存器 TIMER2_ICF 0x04 滤波寄存器 TIMER2_IER 0x08 中断使能寄存器 TIMER2_SR 0x0C 状态寄存器 TIMER2_EGR 0x10 事件产生寄存器 TIMER2_CCMR1 0x14 捕获/比较模式寄存器 1 TIMER2_CCMR2 0x18 捕获/比较模式寄存器 2 TIMR2_CCER 0x1C 捕获/比较使能寄存器 TIMERE2_CNT 0x20 计数寄存器 TIMER2_PSC 0x24 预分频寄存器 TIMER2_ARR 0x28 自动重装载寄存器 TIMER2_RCR 0x2C 重复向下计数器寄存器 TIMER2_CCR1 0x30 捕获/比较寄存器 1 TIMER2_CCR2 0x34 捕获/比较寄存器 2 TIMER2_CCR3 0x38 捕获/比较寄存器 3 TIMER2_CCR4 0x3C 捕获/比较寄存器 4 TIMER2_BDTR 0x40 刹车/死区寄存器 TIMER_CLKEN 0x68 时钟使能寄存器 TIM2 寄存器列表 基地址:0x3000_0098 Rev1.8 2022/04/27 129 / 191 CSM32RV20 10 自动唤醒(WUP) 10.1 简介 WUP 模块是唤醒模块,时钟来源 3K,每隔 0.3ms 计数一次,当 wup_data = 0 时,不工作,无 irq 产生。wup_data 不等于 0 时每隔(wup_data+1)个时钟周 期产生一个 irq,计数器重新装载 wup_data 的值。可以用于低功耗模式的唤醒等。 10.2 寄存器描述 10.2.1 wup 数据寄存器(wup_data) 偏移地址:0x00 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 wup_data RW 位 标记 功能描述 31:16 Reserved 保留位 15:0 wup_data 唤醒数据寄存器,wup_data 实际上是一个向下计数器 wup 模块是唤醒模块,实质是一个向下计数器。时钟来源 3k,每隔 0.3ms 计 数一次,当 wup_data = 0 不计数,否则每隔(wup_data+1)个时钟周期产生一个 中断。当使能了中断后,可以用于 pmu 的唤醒。来自 pmu 的复位不会使 irq 复 位。 10.2.2 wup 中断使能寄存器(wup_irq_en) 偏移地址:0x04 复位值:0x0000_0000 Rev1.8 2022/04/27 130 / 191 CSM32RV20 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 wup_irq_en Reserved RW 位 标记 功能描述 31:1 Reserved 保留位 0 wup_irq_en wup 中断使能位,1:使能,0:不使能。 10.2.3 wup 中断寄存器(wup_irq) 偏移地址:0x08 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 wup_irq Reserved RW 位 标记 功能描述 31:1 Reserved 保留位 0 wup_irq 中断标志位,1:产生中断,0:没有中断,写 0 清除中断。 当使能了中断后可以用于 pmu 的唤醒,来自 pmu 的复位不会使 irq 复位 10.3 寄存器映射 WUP 寄存器列表 基地址:0x3000_0610 寄存器 偏移地址 描述 wup_data 0x00 WUP 数据寄存器 wup_irq_en 0x04 WUP 中断使能寄存器 wup_irq 0x08 WUP 中断寄存器 Rev1.8 2022/04/27 131 / 191 CSM32RV20 11 模拟/数字转换(ADC) 11.1 简介 CSM32RV20 内置了 1 个快速、高精度 ADC,内部集成高精度 1.2 V 基准 源,支持 13/14/15/16 位分辨率,在分辨率和转换速度之间得到平衡。ADC 工作 时,VDD 电压要求大于 2.5 V。 注:1)推荐用户使用 ADC 时,将 ADC_CCR[5]写 1,否则会增大功耗; 2)分辨率出厂初始化,用户不可更改。 11.2 功能描述 ⚫ 分辨率为 13 位,需 29 个 ADC 时钟周期完成一次转换 ⚫ 分辨率为 14 位,需 45 个 ADC 时钟周期完成一次转换 ⚫ 分辨率为 15 位,需 77 个 ADC 时钟周期完成一次转换 ⚫ 分辨率为 16 位,需 141 个 ADC 时钟周期完成一次转换 ⚫ ADC 转换完成之后自动产生中断 ⚫ ADC 时钟与总线时钟具有相同的时钟源,支持 1/2/4/8 分频 ⚫ ADC 采样时钟推荐 4 MHz,最高不超过 8 MHz ⚫ 支持单次模式和连续模式 ⚫ 连续模式下转换间隔可编程 ⚫ 支持软件触发和 GPIO 触发 ⚫ 可测量电压范围为 0 ~ VDD(VDD < 4.8 V) ⚫ 支持外部基准 ⚫ 11 个测量通道可选,最多支持 9 个触摸按键 ⚫ 支持待测量电压乘以 1/4 Rev1.8 2022/04/27 132 / 191 CSM32RV20 BUS adc_clk_div REG CMU PATA 0 1 PA3 PA4 PA5 PA6 PA7 PA8 PA9 PA10 GPIO_MODERx=11 VDD adc_cha_sel ADC_CLK adc_scale 2 3 4 5 6 7 8 9 10 11 0 1/4 1 ref_select VP_IO VN_IO vrefcs sample & compensate 1 0 tri_sel 1.214-0 0 1 2 1.7-0.498 sw_start PGA_O GPIOx_AFRH14=1 GPIO_MODERx=11 PA12 PA14 3 VIN_PGA PGA adc_gain[2:0] 0 PA11 REFN POS 1 NEG gpio_start_mode REF PA13 REFP 图 11-1 ADC 简图 adc_on置1后ADC开启,可以开始转换;在ADC在进入转换前,需要一段稳 定时间tSTAB。当ADC进入转换状态时,adc_state位将置位;sw_start位写1将触发 ADC进入转换。转换时间(用户程序设定的采样时间)结束后,eoc中断标志位 拉高,ADC的转换结果将存储在ADC_DR寄存器中。注意信号从HCLK时钟域传 输到ADCCLK时钟域时需要重新同步,从而产生延时。 HCLK ADCCLK adc_on tSTAB adc_on _Acknowledge sw_start sw_start _Acknowledge ADC转换 ADC 总转换时间 eoc ADC_DR 上次转换值 图 11-2 ADC 时序图 Rev1.8 2022/04/27 133 / 191 本次转换值 CSM32RV20 11.3 寄存器描述 11.3.1 ADC 状态寄存器(ADC_ISR) 基地址:0x3000_0280 偏移地址:0x00 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 5 4 3 2 1 0 eoc adc_state adc_ready RC R R Reserved 15 14 13 12 11 10 9 8 7 6 Reserved 位 标记 功能描述 31:3 Reserved 保留位 ADC 转换工作是否完成的标志位 0:转换尚未完成; eoc 2 1:转换采集已完成。 对其写 0 清除中断,读数据寄存器也可清除中断 adc_state 1 ADC 转换的工作状态标志位 1:ADC 正在转换; 0:ADC 处于空闲状态 ADC 开启状态标志位 adc_ready 0 1:ADC 处于开启状态; 0:ADC 处于关闭状态。 adc_on 开启 5 us,电源稳定后 adc_ready 拉高 11.3.2 ADC 中断控制寄存器(ADC_IER) 偏移地址:0x04 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 eocie Reserved Reserved RW Rev1.8 2022/04/27 134 / 191 CSM32RV20 位 标记 功能描述 31:3 Reserved 保留位 当前 ADC 的中断使能位 eocie 2 0:ADC 不会产生中断传给 CLIC; 1:ADC 会在 EOC 信号被拉高的时候产生中断传给 CLIC 1:0 保留位 Reserved 11.3.3 ADC 控制寄存器(ADC_CR) 偏移地址:0x08 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 sw_start Reserved RW 位 标记 功能描述 31:1 Reserved 保留位 ADC 软件触发控制位 单次模式:写 1 开始转换,1 次转换完成后自动清零同时产生中断和更新 0 ADC_DR,写 0 提前结束。 sw_start 连续模式:写 1 开始转换,转换完成后产生中断和更新 ADC_DR 并开始 下一次转换,写 0 结束转换。 11.3.4 ADC 通道选择寄存器(ADC_SEL) 偏移地址:0x0C 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 adc_cha_sel Reserved RW 位 标记 Rev1.8 2022/04/27 功能描述 135 / 191 CSM32RV20 31:4 保留位 Reserved 通道选择 下列情况 GPIO 需配置模拟模式(GPIO_MODEx = 2’b11) 0000:测量内部 PTAT 电压值,可用于芯片温度采集; 0001:保留; 0010:测量通道 PA3; 0011:测量通道 PA4; 0100:测量通道 PA5; 3:0 adc_cha_sel 0101:测量通道 PA6; 0110:测量通道 PA7; 0111:测量通道 PA8; 1000:测量通道 PA9; 1001:测量通道 PA10; 1010:测量外部热敏电阻 NTC 中 PGA 输入,需配置 PA11/PA12/PA13; 1011:VDD,选择此通道时,ADC_CCR[19]必须配置为 1; 其他:保留。 11.3.5 ADC 数据寄存器(ADC_DR) 偏移地址:0x10 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 7 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 data Reserved R 位 标记 功能描述 31:15 Reserved 保留位 14:0 data ADC 采集到的数据,当 eoc 信号被拉高的时候,软件可以从这个寄存器中 读取 ADC_CFG[adc_bits_ctrl]控制相应分辨率的数据。 11.3.6 ADC 通用控制寄存器(ADC_CCR) 偏移地址:0x14 Rev1.8 2022/04/27 136 / 191 CSM32RV20 复位值:0x0000_0080 31 30 29 28 27 26 25 24 23 22 14 13 12 vrefcs ref_select RW RW Reserved 21 20 19 18 17 adc_scale 16 15 pga_gain Reserved Reserved RW 10 9 8 RW 7 6 5 4 3 2 1 del adc_clk_div shd_vsample gpio_start_mode tri_sel adc_mode adc_on RW RW RW RW RW RW RW 位 标记 功能描述 31:22 Reserved 保留位 21:20 Reserved 必须为 00 选择 ADC 内部通道增益 19 adc_scale 0:选择 1; 1:选择 1/4,输入电压乘以 1/4,使检测电压在量程范围内 用于测量 PGA 输入 PGA 运算放大器输入为 PA12(需要设置成模拟模式) 000:运算放大器增益为 1(默认); 001:运算放大器增益为 2; 18:16 pga_gain 010:运算放大器增益为 4; 011:运算放大器增益为 8; 100:运算放大器增益为 16; 101:运算放大器增益为 32; 110:运算放大器增益为 64; 111:运算放大器增益为 128 15:14 Reserved 13 vrefcs 12 ref_select 保留位 选择内部基准电压来源 1:基准为 1.214 V ~ 0; 0:基准为 1.7 V ~ 0.498 V 选择内部或者外部基准 1:外部基准; 0: 内部基准 ADC 连续转换模式下相邻两次转换之间的延迟 0000:不延迟; 0001:20 个 ADC clock; 11:8 delay_sel 0010:21 个 ADC clock; … 1111:214 个 ADC clock ADC 时钟分频选择位 7:6 adc_clk_div 00:不分频; 01:2 分频; 10:4 分频; 注:推荐在 adc_on 为 0 时设置 adc_clk_div。 Rev1.8 2022/04/27 137 / 191 11:8 分频。 CSM32RV20 5 保留 Reserved gpio 触发模式选择 0:GPIO 上升沿触发 单次模式:上升沿触发一次; gpio_start_mode 4 连续模式:上升沿触发,下降沿结束采样。 1:GPIO 下降沿触发 单次模式:下降沿触发一次; 连续模式:下降沿触发,上升沿结束采样 ADC 触发信号来源选择 00:ADC_CR[0]软件触发控制 ADC 转换; 3:2 tri_sel 01/10:保留; 11:GPIO 触发 ADC 转换 ADC 采样模式 1 adc_mode 0 adc_on 0:单次模式 1:连续模式 ADC 电源开关 0:关闭 ADC 1:开启 ADC 11.3.7 ADC 分辨率寄存器(ADC_CFG) 地址:0x3000_0410 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 adc_bits_ctrl 18 17 16 1 0 adc_data Reserved R 15 RW 14 13 12 11 10 9 8 7 6 adc_data RW 位 标记 功能描述 ADC 分辨率控制位 11:ADC 分辨率 16 位,数据 15 位; 31:30 adc_bits_ctrl 10:ADC 分辨率 15 位,数据 14 位; 01:ADC 分辨率 14 位,数据 13 位; 00:ADC 分辨率 13 位,数据 12 位 29:21 Reserved 保留位 20:0 adc_data ADC 数据,以补码形式存放 Rev1.8 2022/04/27 138 / 191 5 4 3 2 CSM32RV20 11.4 寄存器映射 ADC 寄存器列表 基地址:0x3000_0280 寄存器 偏移地址 描述 ADC_ISR 0x00 ADC 状态寄存器 ADC_IER 0x04 ADC 中断使能寄存器 ADC_CR 0x08 ADC 控制寄存器 ADC_SEL 0x0C ADC 通道选择寄存器 ADC_DR 0x10 ADC 数据寄存器 ADC_CCR 0x14 ADC 通用控制寄存器 ADC_CFG 0x3000_0410 ADC 分辨率寄存器 Rev1.8 2022/04/27 139 / 191 CSM32RV20 12 I2C 接口 12.1 介绍 I2C 总线接口是单片机与串行 I2C 总线之间的接口。它提供主设备功能,并 控制所有 I2C 总线特定的排序、协议、仲裁和定时。它支持标准模式(达到 100 kHz)和快速模式(达到 400 kHz)。 12.1.1 主要特点 ● 并行总线/I2C 总线协议转换器 ● I2C 主设备功能 − 产生时钟 − 产生起始和停止信号 ● 产生和检测 7 位地址和广播呼叫 ● 支持不同的通讯速度 − 标准速度(高至 100 kHz) − 快速(高至 400 kHz) ● 状态标志: − 发送器/接收器模式标志 − 字节发送结束标志 − I2C 总线忙标志 ● 错误标志 − 主模式时的仲裁丢失 − 地址/数据传输后的应答(ACK)错误 − 检测到起始和停止错位 ● 2 个中断向量 − 1 个中断用于地址/数据通讯成功 − 1 个中断用于出错 12.2功能描述 主模式时,I2C 接口启动数据传输并产生时钟信号。串行数据传输总是以起 始条件开始和停止条件结束。只有在总线处于“非忙”状态时,数据传输才能开 Rev1.8 2022/04/27 140 / 191 CSM32RV20 始。在数据传输期间,只要时钟线为高电平,数据线都必须保持稳定,否则数据 线上的任何变化都被当作“启动”或“停止”信号。图 12-1 是被定义的总线状 态。 (D) SCL (A) (D) (D) (B) (C) (A) 数据在此期间变化 I/O SDA 启动信号 停止信号 图 12-1 I2C 二线制串行总线 I2C 主要有以下 A,B,C,D 四段的工作状态: (1)总线非忙状态(A 段):该段内的数据线(SDA)和时钟线(SCL)都保持高电 平。 (2)启动数据传输(B 段):当时钟线(SCL)为高电平状态时,数据线(SDA)由 高电平变为低电平的下降沿被认为是“启动”信号。只有出现“启动”信号后,其 它的命令才有效。 (3)停止数据传输(C 段):当时钟线(SCL)为高电平状态时,数据线(SDA)由 低电平变为高电平的上升沿被认为是“停止”信号。随着“停止”信号的出现,所 有的外部操作都结束。 (4)数据有效(D 段):在出现“启动”信号后,在时钟线(SCL)为高电平状态时, 数据线是稳定的,这时数据线的状态就是要传送的数据。数据线(SDA)上数据的 改变必须在时钟线为低电平期间完成,每位数据占用一个时钟脉冲。每个数据传 输都是由“启动”信号开始,结束于“停止”信号。 (5)应答信号:在接收到一个字节的数据后,通常需要发出一个应答信号。 在发出 一个字节的数据后,通常需要接收一个应答信号。发送方在应答时钟脉冲期间释 放 SDA 线,接收方拉低 SDA 线,并且在 SCL 的高脉冲期间保持为 0,如图 12-2 所示。I2C 读写控制器必须有产生一个与这个应答位相联系的额外的时钟脉冲。在 读操作中,读写控制器对 I2C 完成的最后一个字节不产生应答位,但是会有一个 结束信号。 SCL 1 2 3 4 5 6 7 8 9 SDAO by Transmitter SDAO by Receiver 应答时钟脉冲 图 12-2 I2C 总线上应答时序图 写操作配置步骤: Rev1.8 2022/04/27 141 / 191 CSM32RV20 1) 通过 fm 位,定义数据传输的频率。 2) 通过 I2C_CTRL[i2c_clkdiv]选择是否分频,I2C_CTRL[i2c_saddr]定义从机地址。 3) I2C_CTRL[i2c_r_wn] = 0 被定义为写操作;I2C_CTRL[i2c_maddr]定义存储单元地 址,I2C_CTRL[i2c_data]定义要发送的数据。 发送方:满足启动条件后,从 SDA 线先后串行写入 I2C_CTRL[i2c_saddr], I2C_CTRL[i2c_r_wn] = 0 写 操 作 , 应 答 , I2C_CTRL[i2c_maddr], 应 答 和 I2C_CTRL[i2c_data]、应答,最后是停止信号。参考图 12-3 I2C 写数据时序图。 每次应答只有收到接收方正确回复应答信号才会继续往下执行,否则一直在 等待接收方的应答。 数据发送完成后 i2c_busy 标志将被置位,如果设置 I2C_CTRL 寄存器中的 i2c_ready_en 位,将产生中断。 读操作配置步骤: 1) 通过 fm 位,定义数据传输的频率。 2) 通 过 I2C_CTRL[i2c_clkdiv] 选 择 是 否 分 频 , I2C_CTRL[i2c_saddr] 定 义 从 机地址。 3) I2C_CTRL[i2c_r_wn] = 0 被定义为写操作,I2C_CTRL[i2c_r_wn] = 1 被定义为读操 作;I2C_CTRL[i2c_maddr]定义存储单元地址,读取 I2C_CTRL[i2c_data]数据。 满 足 启 动 条 件 后 , 从 SDA 线 先 后 串 行 写 入 I2C_CTRL[i2c_saddr] , I2C_CTRL[i2c_r_wn] = 0 写操作,应答信号,I2C_CTRL[i2c_maddr],应答。重新 启动,I2C_CTRL[i2c_saddr],I2C_CTRL[i2c_r_wn] = 1 读操作,应答。接收方回 复读取的数据 I2C_CTRL[i2c_data],非应答,最后是停止信号。参考图 12-4 和图 12-5。 数据接收完成后 i2c_busy 标志将被置位,如果设置 I2C_CTRL 寄存器中的 i2c_ready_en 位,将产生中断。读 I2C_DATA 寄存器时,I2C 设备返回接收到的 数据。读 I2C_DATA 寄存器将清除 i2c_ready 位。 在数据传输过程中,若没有应答或产生其他错误,i2c_error 标志将被置位, 如果设置 I2C_CTRL 寄存器中的 i2c_error_en 位,将产生中断。图 12-2 是 I2C 应 答时序图,图 12-3 和图 12-4 分别是 I2C 的写数据和读指定地址数据的时序图。 SCL 1 2 8 9 10 从机地址 1 2 8 9 存储单元地址 1 2 8 数据 SDA_master 写 ACK ACK SDA_slave 图 12-3 I2C 写数据时序图 Rev1.8 2022/04/27 142 / 191 ACK CSM32RV20 SCL 1 8 2 10 9 2 1 从机地址 8 2 1 9 存储单元地址 8 从机地址 SDA_master 写 读 启动 ACK ACK SDAI_slave 图 12-4 SCL I2C 读指定地址数据的时序图 1 1 8 1 9 8 2 从机地址 SDA_master 读 ACK 停止 数据 SDA_slave 非ACK 图 12-5 I2C 读指定地址数据的时序图 2(时序接着上图) 12.3 I2C 寄存器描述 基址:0x3000_0004 12.3.1 状态寄存器(I2C_STATUS) 偏移地址:0x00 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 6 i2c_error Reserved i2c_ready Reserved RW 位 标记 功能描述 16:5 Reserved 保留位 4 i2c_error 错误标志位;1:i2c 发生错误,0:正常工作 3:1 Reserved 保留位 0 i2c_ready 中断标志位;1:操作完成,0:正在进行操作 RW 12.3.2 控制寄存器(I2C_CTRL) 偏移地址:0x04 复位值:0x0000_0000 31 Rev1.8 2022/04/27 30 29 28 27 143 / 191 26 25 24 CSM32RV20 Reserved 23 22 21 20 19 18 17 16 10 9 8 i2c_error_en i2c_ready_en RW RW 1 0 Reserved 15 14 13 12 11 i2c_clkdiv Reserved Reserved RW 7 6 5 4 3 2 fm i2c_saddr RW RW 位 标记 功能描述 31:13 Reserved 保留位 12 i2c_clkdiv 0:不分频; 11:10 Reserved 保留位 9 i2c_error_en i2c_error 标志位使能端,0:关闭中断,1:开启中断 8 i2c_ready_en i2c_ready 标志位使能端,0:关闭中断,1:开启中断 7 fm 时钟频率,0:100KHZ 6:0 i2c_saddr 从机地址 1:二分频 1:400KHZ 12.3.3 数据寄存器(I2C_DATA) 偏移地址:0x08 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 i2c_r_wn Reserved RW 15 14 13 12 11 10 9 7 6 5 4 3 i2c_maddr i2c_data RW RW 位 标记 功能描述 31:17 Reserved 保留位 16 i2c_r_wn 0:写操作; 15:8 i2c_maddr 存储单元地址 7:0 i2c_data i2c 数据 Rev1.8 2022/04/27 8 1:读操作 144 / 191 2 1 0 CSM32RV20 12.4 寄存器映射 I2C 寄存器列表 基地址:0x3000_0004 寄存器 偏移地址 描述 I2C_STATUS 0x00 I2C 状态寄存器 I2C_CTRL 0x04 I2C 控制寄存器 I2C_DATA 0x08 I2C 数据寄存器 Rev1.8 2022/04/27 145 / 191 CSM32RV20 13 串行外设接口(SPI1) 13.1 简介 SPI,是 Serial Peripheral Interface 的缩写,顾名思义就是串行外围设备接口。 串行外设接口(SPI)允许芯片与外部设备以半/全双工、同步、串行方式通信。 此接口仅支持主模式,这种工作模式下,它要为外部从设备提供通信时钟(SCK)。 接口还能以多主配置方式工作。 它可用于多种用途,包括可选第三根双向数据线的双线单工同步传输,或使 用 CRC 校验的可靠通信。 13.1.1 主要特征 ● 3 线全双工同步传输 ● 8 位传输帧格式 ● 支持多主模式 ● 8 个主模式波特率预分频系数 ● 可编程的时钟极性和相位 ● 可编程的数据顺序,MSB 在前 ● 可触发中断的专用发送和接收标志 ● SPI 总线忙状态标志 13.2 功能描述 通常,SPI 通过 4 个引脚和外部设备相连。 ● MISO:主入/从出数据口。此脚可以被用来在从模式中发送数据,在主模式中接收 数据。 ● MOSI:主出/从入数据口。此脚可以用来在主模式时发送数据,在从模式时接收数 据。 ● SCK:SPI 主设备输出串行时钟,SPI 从设备输入串行时钟。 ● CSN:由 GPIO 模拟。选择主/从模式的可选引脚。SPI 主设备和从设备分别通信时, 该引脚起到依次片选各个从设备的作用,以避免发生数据线冲突。从设备的 CSN 输入可以由主设备上的标准 I/O 端口驱动。如果使能 SPI,则 SPI 工作在主设备, Rev1.8 2022/04/27 146 / 191 CSM32RV20 CSN 引脚用作输出,并输出低电平。 通信总是由主设备发起。主设备通过 MOSI 脚把数据发送给从设备,从设备 通过 MISO 引脚回传数据。这意味全双工通信的数据输出和数据输入是用同一个 时钟信号同步的;时钟信号由主设备通过 SCK 脚提供。 使用 SPI_CTRL 寄存器的 CPOL 和 CPHA 位,组合成四种可能的时序关系。 CPOL(时钟极性)位控制在没有数据传输时时钟的空闲状态电平,此位对主模 式和从模式下的设备都有效。如果 CPOL 被复位,SCK 引脚在空闲状态保持低 电平;如果 CPOL 被置位,SCK 引脚在空闲状态保持高电平。 如果 CPHA(时钟相位)位被置位,SCK 时钟的第二个边沿(CPOL 位为 0 时就是下降沿,CPOL 位为 1 时就是上升沿)进行数据位的采样。数据在第一个 时钟边沿被锁存。如果 CPHA 位被复位,SCK 时钟的第一边沿(CPOL 位为 0 时 就是下降沿,CPOL 位为 1 时就是上升沿)进行数据位采样。数据在第二个时钟 边沿被锁存。 CPOL 时钟极性和 CPHA 时钟相位的组合选择数据捕捉的时钟边沿。图 131、图 13-4 显示了 SPI 传输的 4 种 CPHA 和 CPOL 位组合。 1 2 3 4 5 6 7 8 9 10 SCK(CPOL=0) CSN 时钟前沿采样 CPHA=0 MISO Bit0 Bit1 Bit2 Bit3 Bit5 Bit4 Bit6 Bit7 时钟后沿输出 MOSI Bit0 Bit1 Bit2 Bit4 Bit3 Bit5 Bit6 Bit7 图 13-1 spi 模式 0 时序图 1 2 3 4 5 6 7 8 9 10 SCK(CPOL=0) CSN CPHA=1 时钟后沿采样 MISO Bit0 Bit1 Bit2 Bit3 MOSI Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit6 Bit7 时钟前沿输出 Bit4 图 13-2 spi 模式 1 时序图 Rev1.8 2022/04/27 147 / 191 Bit5 CSM32RV20 1 2 3 4 5 6 7 8 9 10 SCK(CPOL=1) CSN CPHA=0 时钟前沿采样 MISO BIT1 BIT0 BIT3 BIT2 BIT5 BIT4 BIT6 BIT7 时钟后沿输出 BIT0 MOSI BIT1 BIT2 图 13-3 1 2 3 BIT4 BIT3 BIT6 BIT5 BIT7 spi 模式 2 时序图 4 5 6 7 8 9 10 SCK(CPOL=1) CSN CPHA=1 时钟后沿采样 MISO BIT0 BIT1 BIT2 BIT3 BIT4 BIT5 BIT6 BIT7 时钟前沿输出 MOSI BIT0 BIT1 BIT2 BIT3 BIT4 BIT5 BIT6 BIT7 图 13-4 spi 模式 3 时序图 在主配置时,串行时钟在 SCK 脚产生。MOSI 脚是数据输出,而 MISO 脚 是数据输入。 配置例程: 1. 通过 SPI_CTRL[smctrl 3:smctrl 0]定义串行时钟波特率。 2. 选择 CPOL 和 CPHA 位,定义数据传输和串行时钟间的相位关系。 3. 通过 SPI_CTRL[smctrl 5:smctrl 4]位选择是否开启 SPI。 数据发送过程: 当一字节写进发送缓冲器时,发送过程开始。 在发送第一个数据位时,数据字被并行地传入移位寄存器,而后串行地移出到 MOSI 脚 上;MSB 在先。数据从发送缓冲器传输到移位寄存器时 spi_int 标志将被置位,如果设置 SPI_CTRL[spi_int_en] = 1,将产生中断。 数据接收过程: 对于接收器来说,当数据传输完成时: ● 移位寄存器里的数据传送到接收缓冲器,并且 spi_int 标志被置位。 ● 如果设置 SPI_CTRL[spi_int_en] = 1,则产生中断。 读 SPI_DATA 寄存器时,SPI 设备返回接收到的数据字。 Rev1.8 2022/04/27 148 / 191 CSM32RV20 13.3 寄存器描述 基址:0x3000_0060 13.3.1 控制寄存器(SPI1_CTRL) 偏移地址:0x00 复位值:0x0000_0000 31 30 29 28 27 26 25 24 18 17 16 10 9 8 Reserved 23 22 21 20 19 Reserved 15 14 13 12 11 spi_int_en Reserved RW 7 6 5 CPOL CPHA smctrl5 RW RW RW 4 3 2 1 smctrl4 smctrl3 smctrl2 smctrl1 smctrl0 RW RW RW RW RW 位 标记 功能描述 15:9 Reserved 保留位 8 spi_int_en spi1 中断使能。0:关闭中断,1:开启中断 7 CPOL 时钟极性 0:SCK 默认低电平 1: SCK 默认高电平 时钟相位 6 CPHA 0:时钟前沿采样,时钟后延输出 1:时钟前沿输出,时钟后延采样 5:4 smctrl[5:4] 01:使能 SPI; 00:关闭 SPI 从时钟到 SPI 时钟的分频数 0000:cclk/2; 0001:cclk/2; 0010:cclk/4; 3:0 smctrl[3:0] 0011:cclk/8; 0100:cclk/16; 0101:cclk/32; 0110:cclk/64; 其它:cclk/64 Rev1.8 2022/04/27 149 / 191 0 CSM32RV20 13.3.2 数据寄存器(SPI1_DATA) 偏移地址:0x04 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 7 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 spi_data Reserved RW 位 标记 功能描述 31:8 Reserved 保留位 7:0 spi_data SPI 数据写发送的数据/读接收的数据 13.3.3 状态寄存器(SPI1_STATUS) 偏移地址:0x08 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 spi_int Reserved spi_busy Reserved RW 位 标记 功能描述 31:5 Reserved 保留位 4 spi_int spi1 中断标志位,1:spi 操作完成。写 0 清中断 3:1 Reserved 保留位 0 spi_busy spi1 工作标志位,1:正在进行操作; 13.4 寄存器映射 SPI1 寄存器列表 基地址:0x3000_0060 寄存器 偏移地址 寄存器描述 SPI1_CTRL 0x00 SPI1 控制寄存器 Rev1.8 2022/04/27 150 / 191 0:操作完成或未操作 R CSM32RV20 SPI1_DATA 0x04 SPI1 数据寄存器 SPI1_STATUS 0x08 SPI1 状态寄存器 Rev1.8 2022/04/27 151 / 191 CSM32RV20 14 串行外设接口(SPI2) 14.1 简介 SPI2 除了具有 SPI1 的功能以外,还能作为无线 ISP 接口,无线 ISP 需外接 Si24R1。和 Si24R1 通信时,CE 和 CSN 分别由 PB0、PB1 模拟。 GPIOB_MODER[MODER0]=2'b01 GPIOB_MODER[MODER1]=2'b01 PB0 CE PB1 CSN CSM24RV20 GPIOB_MODER[MODER2]=2'b10 GPIOB_MODER[MODER3]=2'b10 GPIOB_MODER[MODER4]=2'b10 Si24R1 PB2 SCK PB3 MOSI PB4 MISO 图 14-1 SPI 通信接口 14.1.1 主要特征 ● 3 线全双工同步传输 ● 8 位传输帧格式 ● 支持多主模式 ● 8 个主模式波特率预分频系数(最大为 fPCLK/2) ● 可编程的时钟极性和相位 ● 可编程的数据顺序,MSB 在前 ● 可触发中断的专用发送和接收标志 ● SPI 总线忙状态标志 ● 作为无线 ISP 接口 14.2 功能描述 通常,SPI 通过 4 个引脚和外部设备相连。 ● MISO:主入/从出数据口。此脚可以被用来在从模式中发送数据,在主模式中接收 数据。 ● MOSI:主出/从入数据口。此脚可以用来在主模式时发送数据,在从模式时接收数 据。 ● SCK:SPI 主设备输出串行时钟,SPI 从设备输入串行时钟。 Rev1.8 2022/04/27 152 / 191 CSM32RV20 ● CSN:由 R1_CSN 控制 1 2 3 4 5 6 7 8 9 10 SCK(CPOL=0) CSN 时钟前沿采样 CPHA=0 时钟后沿输出 MISO Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 MOSI Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 图 14-2 spi 模式 0 时序图 在主配置时,串行时钟在 SCK 脚产生。MOSI 脚是数据输出,而 MISO 脚 是数据输入。 14.3 寄存器描述 基址:0x3000_0070 14.3.1 控制寄存器(SPI2_CTRL) 偏移地址:0x00 复位值:0x0000_0000 31 30 29 28 27 26 25 24 18 17 16 10 9 8 Reserved 23 22 21 20 19 Reserved 15 14 13 12 11 spi_int_en Reserved RW 7 6 5 CPOL CPHA smctrl5 RW RW RW 4 3 2 1 smctrl4 smctrl3 smctrl2 smctrl1 smctrl0 RW RW RW RW RW 位 标记 功能描述 31:9 Reserved 保留位 8 spi_int_en Spi2 中断使能。0:关闭中断; 7 CPOL 1:开启中断 时钟极性 0:SCK 默认低电平; 1: SCK 默认高电平 时钟相位 6 CPHA 0:时钟前沿采样,时钟后延输出; 1:时钟前沿输出,时钟后延采样 5:4 smctrl[5:4] Rev1.8 2022/04/27 01:使能 SPI; 00:关闭 SPI 153 / 191 0 CSM32RV20 从时钟到 SPI 时钟的分频数 0000:cclk/2; 0001:cclk/2; 0010:cclk/4; 3:0 smctrl[3:0] 0011:cclk/8; 0100:cclk/16; 0101:cclk/32; 0110:cclk/64; 其它:cclk/64 14.3.2 数据寄存器(SPI2_DATA) 偏移地址:0x04 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 7 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 spi_data Reserved RW 位 标记 功能描述 31:8 Reserved 保留位 7:0 spi_data SPI 数据写发送的数据/读接收的数据 14.3.3 状态寄存器(SPI2_STATUS) 偏移地址:0x08 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 spi_int Reserved spi_busy Reserved RW 位 标记 功能描述 31:5 Reserved 保留位 4 spi_int spi2 中断标志位,1:spi 操作完成。写 0 清中断 3:1 Reserved 保留位 0 spi_busy spi2 工作标志位,1:正在进行操作 Rev1.8 2022/04/27 154 / 191 0:操作完成或未操作 R CSM32RV20 14.4 寄存器映射 SPI2 寄存器列表 基地址:0x3000_0070 寄存器 偏移量 描述 SPI2_CTRL 0x00 SPI2 控制寄存器 SPI2_DATA 0x04 SPI2 数据寄存器 SPI2_STATUS 0x08 SPI2 状态寄存器 Rev1.8 2022/04/27 155 / 191 CSM32RV20 15 异步收发器(UART) 15.1 简介 通用异步收发器(UART)提供了一种灵活的方法来与使用工业标准 NRZ 异 步串行数据格式的外部设备之间进行全双工数据交换。UART 利用分数波特率发 生器提供宽范围的波特率选择。 芯片内置四个 UART,UART1 支持 ISP 下载程序。 15.1.1 主要特性 ● 全双工的,异步通信 ● NRZ 标准格式 ● 分数波特率发生器系统 ● 支持波特率自适应 ● 可编程数据字长度(8 位或 9 位) ● 单线半双工通信 ● 单独的发送器和接收器使能位 ● 检测标志 ● 传输结束标志 ● 多处理器通信 15.2 功能描述 串口由 S0CON 控制,而实际传输的数据则在 S0BUF 寄存器中读取或写入。 传输速度(波特率)是通过配置 uartdiv 来选择的。 1) 同步模式,固定波特率。 2) 8 位 UART 数据模式,波特率可变。 3) 9 位 UART 数据模式,波特率可变。 表 15-1 常用速率 uartdiv 值对应表(fCK = 16Mhz,fck 为总线时钟) 序号 波特率(Kpbs) uartdiv 1 2.4 0x1A0B 2 9.6 0x0683 3 19.2 0x0341 Rev1.8 2022/04/27 156 / 191 CSM32RV20 序号 波特率(Kpbs) uartdiv 4 57.6 0x0116 5 115.2 0x008B 6 230.4 0x0045 7 460.8 0x0023 8 921.6 0x0011 9 1228.8 0x000D 串口支持波特率自适应,通过测出 RX 引脚上接收信号的波特率并将其配置 到波特率寄存器中实现。使用方法如下: 1) 配置 MCU 和外设使用同一个时钟来源; (设置时钟源选择寄存器(CMU_CLK_SEL),选择 MCU 和外设的时钟源。) 2) 配置 baudtrim = 1,trim_en 写 0; 3) 配置 baudtrim = 1,trim_en 写 1; 4) RX 接收 UART 帧,帧中的低电平只能是 1 位宽; 5) 等到 trim_en 变为 0,读出 trim_clk_result 的结果; 6) 使用 trim_clk_result 作为 uart 的波特率设置。 15.3 UART 的引脚映射 引脚 描述 复用配置 PA6 TX1 AF0(默认) PA5 RX1 AF0(默认) PA4 TX2 AF3 PA3 RX2 AF3 PA11 TX3 AF3 PA10 RX3 AF3 PA15 TX4 AF3 PA14 RX4 AF3 UART1 UART2 UART3 UART4 15.4 寄存器描述 UART1 基址:0x3000_0010 UART2 基址:0x3000_0700 UART3 基址:0x3000_0800 UART4 基址:0x3000_0900 波特率自适应基址:0x3000_0380 Rev1.8 2022/04/27 157 / 191 CSM32RV20 15.4.1 控制寄存器(UART_CTRL) 偏移地址:0x00 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 tx_int_en rx_int_en tx_busy Reserved 15 14 13 12 22 21 20 19 18 17 16 1 0 uartdiv Res 11 10 RW RW RW 9 8 7 RW 6 5 4 uartdiv s0_con RW RW 位 标记 功能描述 31:26 Reserved 保留位 25 tx_int_en 发送中断使能位,0:关闭中断,1:开启中断 24 rx_int_en 接收中断使能位,0:关闭中断,1:开启中断 23 tx_busy 发射忙,1:正在发射 22 Res 保留位 21:8 uartdiv 3 2 波特率设置位,21:12 表示整数,11:8 表示小数, Tx/ Rx baud = fCK/(16 * uartdiv) ,uartdiv = uartdiv[13:4] + uart[3:0]/16; 7:6:uart 模式选择 00:模式 0,移位寄存器,波特率是 cclk/12; 01:模式 1,8 位数据,波特率由 uartdiv 控制; 10/11:模式 2,9 位数据,波特率由 uartdiv 控制 5:多处理器通信使能端 4:串口接收使能,0:关闭接收; 1:打开接收 3:发送数据 bit8:在模式 2 和模式 3,传输 9 位数据时,对应于发送数据 第 9 位的状态,由软件控制 7:0 s0_con 2:接收数据 bit8:在模式 2 和模式 3,传输 9 位数据时,对应于接收数据 第 9 位的状态 1:发送中断标志,标志着串口发送数据的完成。在模式 0 的第 8 位数据 结束时或者在其他模式中停止位开始前被用硬件置 1,该位必须由软件写 1 清除 0:接收中断标志,在完成接收数据后由硬件置 1。在模式 0 的第 8 位数据 结束时或者在其他模式中停止位开始前被用硬件置 1,该位由软件写 1 清 除,不清除接收中断不能继续接收。 15.4.2 数据寄存器(UART_DATA) 偏移地址:0x04 Rev1.8 2022/04/27 158 / 191 CSM32RV20 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 7 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 uart_datain Reserved RW 位 标记 功能描述 31:8 Reserved 保留位 7:0 uart_datain 写发送数据/读接收到的数据 15.4.3 波特率自适应配置寄存器(AUTOBPS_CONFIG) 地址:0x3000_0380 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 trim_en Reserved baudtrim Reserved RW uart_rx_sel Reserved RW Reserved RW 位 标记 功能描述 31:9 Reserved 保留位 8 trim_en 启动波特率自适应,0:关闭,1:启动。trim 结束后硬件自动清零 7 Reserved 保留位 6 baudtrim 1:使能波特率适应功能,能够计算 uart 外部输入的波特率 5:3 Reserved 保留位 00:选择的时钟 uart1 的 rx; 01:选择的时钟 uart2 的 rx; 2:1 uart_rx_sel 10:选择的时钟 uart3 的 rx; 11:选择的时钟 uart4 的 rx。 注意:baudtrim 设置为 0 时,uart_rx_sel 的设置才生效 0 Reserved Rev1.8 2022/04/27 保留位 159 / 191 CSM32RV20 15.4.4 波特率自适应结果寄存器(AUTOBPS_RESULT) 地址:0x3000_0384 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 trim_clk_result Reserved R 位 标记 功能描述 31:14 Reserved 保留位 13:0 trim_clk_result trim 结束后显示为结果 15.5 寄存器映射 Uart1 基地址:0x3000_0010 Uart2 基地址:0x3000_0700 Uart3 基地址:0x3000_0800 Uart4 基地址:0x3000_0900 寄存器 偏移地址 描述 UARTx_CTRL 0x00 UART 控制寄存器 UARTx_DATA 0x04 UART 数据寄存器 波特率自适应寄存器基地址:0x3000_0380 寄存器 偏移地址 描述 AUTOBPS_CONFIG 0x00 波特率自适应配置寄存器 AUTOBPS_RESULT 0x04 波特率自适应结果寄存器 Rev1.8 2022/04/27 160 / 191 CSM32RV20 16 低压检测(LV) 16.1 简介 低压检测模块检测电源电压,电压较低时,低压检测中断变高,如果使能了 中断,中断可以传递到 CLIC 产生欠压中断。 16.2 寄存器描述 16.2.1 低压检测中断使能寄存器(LV_IRQ_EN) 地址:0x3000_0330 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 lv_irq_en Reserved RW 位 标记 功能描述 31:1 Reserved 保留位 0 lv_irq_en 低压检测中断使能,1:使能,0:不使能 16.2.2 低压检测中断寄存器(LV_IRQ) 地址:0x3000_0334 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 lv_irq Reserved R Rev1.8 2022/04/27 161 / 191 CSM32RV20 位 标记 功能描述 31:1 Reserved 保留位 0 lv_irq 低压检测中标志位,1:产生低压中断,0:未产生中断。当电源电压高于 设定阈值时,硬件自动清除该中断标志。 16.2.3 低压阈值寄存器(LV_TH) 地址:0x3000_0400 复位值:0xFFFF_FF5E 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 3 2 1 0 lv_th Reserved Reserved WR 15 14 13 12 11 10 9 8 7 6 5 4 Reserved 位 标记 功能描述 31:29 Reserved 保留位 28:25 lv_th 低压阈值控制字参考第 24 章 24.3.6 节 24:0 Reserved 保留位 注: (1) lv_th 禁止修改,即必须先读寄存器的值,在读出值的基础上只改 变 lv_th 位,然后写回。 (2) 电源电压在比较阈值点反复波动时,除了会产生低压中断还可能会产生异常中断。 如果需要避免该异常中断,在第一次进入低压中断时将上表阈值调高一档。 16.3 寄存器映射 LV 寄存器列表 基地址:0x3000_0330 寄存器 偏移地址 描述 LV_IRQ_EN 0x00 低压检测中断使能寄存器 LV_IRQ 0x04 低压检测中断寄存器 LV_TH 0x3000_0400 低压阈值寄存器 Rev1.8 2022/04/27 162 / 191 CSM32RV20 17 随机数生成模块(RANDGEN) 17.1 简介 RANDGEN 是一个生成真随机数的模块,生成之后会产生对应的标志位。指 示软件去对应的空间读取对应的数据。 17.2 寄存器描述 17.2.1 随机数生成控制寄存器(RDGCR) 偏移地址:0x38 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 5 4 3 2 1 0 data_rdy rand_en R RW Reserved 15 14 13 12 11 10 9 8 7 6 Reserved 位 标记 功能描述 31:2 Reserved 保留位 1 data_rdy 0 rand_en Rev1.8 2022/04/27 状态标志位,1:随机数已经生成完毕,可以随时读取随机数。 data_rdy 只能通过复位清零。 随机数生成使能位,1:使能; 163 / 191 0:不使能 CSM32RV20 17.2.2 随机数生成数据寄存器(RDGDR) 偏移地址:0x40 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 rand_data R 15 14 13 12 11 10 9 8 7 rand_data R 位 标记 功能描述 生成的随机数 31:0 rand_data 第一次将 rand_en 写 1 之后,32 个 3K 时钟周期以后硬件将 data_rdy 置 1,以后只要 rand_en 为 1,在每个 3K 时钟周期都会更新一次随机数 17.3 寄存器映射 RANDGEN 寄存器列表 基地址:0x3000_0238 寄存器 偏移地址 寄存器描述 RDGCR 0x38 随机数生成控制寄存器 RDGDR 0x40 随机数数据寄存器 Rev1.8 2022/04/27 164 / 191 CSM32RV20 18 比较器(COMP) 18.1 简介 芯片内置了三个独立比较器,当使用比较器的时候需要将相应的 GPIO 口配 置为模拟模式。 comp1_result PB6 comparator1 & S1 PB7 Vref1 S2 Vref2 S3 Vref3 S4 Vref4 S5 Interrupt EN comp2_result PB8 comparator2 PB9 & S1 Vref1 S2 Vref2 S3 Vref3 S4 Vref4 S5 Interrupt EN comp3_result PB10 comparator3 & S1 PB11 Vref1 S2 Vref2 S3 Vref3 S4 Vref4 S5 EN 图 18-1 比较器框图 18.2 寄存器描述 COMP1 基址:0x3000_0B00 COMP2 基址:0x3000_0C00 COMP3 基址:0x3000_0D00 18.2.1 比较器控制寄存器(COMP_CTRL) 偏移地址:0x00 复位值:0x0000_0070 Rev1.8 2022/04/27 165 / 191 Interrupt CSM32RV20 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 5 4 3 2 1 0 ref_io_sel ratio_sel int_en mode1 mode0 RW RW RW RW RW Reserved 15 14 13 12 11 10 9 8 7 6 Reserved 位 标记 功能描述 31:7 Reserved 保留位 负端来源选择和使能 : ref_io_sel 6:4 0 0 0 pad 0 0 1 0.3 V 接入; 0 1 0 0.6 V 接入; 0 1 1 0.9 V 接入; 1 0 0 1.2 V 接入; 1 0 1 比较器关断; 1 1 0 比较器关断; 1 1 1 比较器关断(默认) ; 接入; 速率选择 1:比较器的最高工作速度为 2MHz; ratio_sel 3 速率选择 0:比较器的最高工作速度为 1MHz; 高速时比较器会有更高的功耗。 int_en 2 0:不使能 比较器中断使能,1:使能; 中断边沿选择 00:高电平检测; mode[1:0] 1:0 01:下降沿检测; 10:上升沿检测; 11:低电平检测; 18.2.2 比较器中断寄存器(COMP_IRQ) 偏移地址:0x04 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 Reserved Rev1.8 2022/04/27 166 / 191 irq CSM32RV20 RW 位 标记 功能描述 31:1 Reserved 保留位 0 irq 比较器中断,1:产生比较器中断,写 1 清除中断 18.2.3 比较器结果寄存器(COMP_RESULT) 偏移地址:0x08 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 result Reserved RW 位 标记 功能描述 31:1 Reserved 保留位 0 result 比较器结果,1:高于 ref_io_sel 选择电压 18.3 寄存器映射 COMP1 寄存器列表 基地址:0x3000_0B00 寄存器 偏移地址 描述 COMP1_CTRL 0x00 比较器控制寄存器 COMP1_IRQ 0x04 比较器中断寄存器 COMP1_RESULT 0x08 比较器结果寄存器 COMP2 寄存器列表 基地址:0x3000_0C00 寄存器 偏移地址 描述 COMP1_CTRL 0x00 比较器控制寄存器 COMP1_IRQ 0x04 比较器中断寄存器 COMP1_RESULT 0x08 比较器结果寄存器 Rev1.8 2022/04/27 167 / 191 CSM32RV20 COMP3 寄存器列表 基地址:0x3000_0D00 寄存器 偏移地址 描述 COMP1_CTRL 0x00 比较器控制寄存器 COMP1_IRQ 0x04 比较器中断寄存器 COMP1_RESULT 0x08 比较器结果寄存器 Rev1.8 2022/04/27 168 / 191 CSM32RV20 19 UART 波特率自适应(TRIM) 19.1 简介 UART 波特率自适应模块通过计算 RX 低电平长度来计算 UART 的波特率。 在测量波特率时,RX 的低电平宽度必须为 1 bit。 19.2 寄存器描述 19.2.1 配置寄存器(TRIM_CLK_CFG) 地址:0x3000_0380 复位值:0x0000_0000 31 30 29 28 27 26 25 24 18 17 16 10 9 8 Reserved 23 22 21 20 19 Reserved 15 14 13 12 11 trim_en Reserved 7 6 5 4 RW 3 baudtrim Reserved Reserved RW 2 1 uart_rx_sel trim_clk_sel RW RW 位 标记 功能描述 31:9 Reserved 保留位 8 trim_en 调使能,0:关闭; 1:打开。trim 结束后硬件自动清零 7 Reserved 保留位 6 baudtrim 1:选择波特率适应功能 5:3 Reserved 保留位 00:选择的时钟 UART1 的 rx 01:选择的时钟 UART2 的 rx 2:1 uart_rx_sel 10:选择的时钟 UART3 的 rx 11:选择的时钟 UART4 的 rx 注意:baudtrim 设置为 0 时,uart_rx_sel 的设置才生效。 0 trim_clk_sel Rev1.8 2022/04/27 1:选择被测的时钟为 3k,0:选择被测的时钟为 RC 169 / 191 0 CSM32RV20 19.2.2 结果寄存器(TRIM_CLK_RESULT) 地址:0x3000_0384 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 trim_clk_result Reserved R 位 标记 功能描述 31:14 Reserved 保留位 13:0 trim_clk_result trim 结束后显示为结果 测波特率:trim_clk_result 即为波特率 19.2.3 标志寄存器(TRIM_CLK_FLAG) 地址:0x3000_0388 复位值:0x0000_0000 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 Reserved 15 14 13 12 11 10 9 8 7 trim_clk_flag Reserved R 位 标记 功能描述 31:30 Reserved 保留位 0 trim_clk_flag Rev1.8 2022/04/27 trim 结束后标志 1:trim 已结束,0:正在进行 trim 或者没有进行 trim 170 / 191 CSM32RV20 19.3 使用方法 19.3.1 波特率自适应 1. 配置 MCU 和外设使用同一个时钟来源; (设置时钟源选择寄存器(CMU_CLK_SEL),选择 MCU 和外设的时钟源相同) 2. 配置 baudtrim = 1,trim_en 写 0; 3. 配置测试串口号(uart_rx_sel); 4. 配置 baudtrim = 1,trim_en 写 1; 5. 主机发送 0x7F; 6. RX 接收 UART 帧,帧中低电平只能是 1 位宽; 7. 等到 trim_en 变为 0,读出 trim_clk_result 的结果; 8. 使用 trim_clk_result 作为 UART 的波特率设置。 Rev1.8 2022/04/27 171 / 191 CSM32RV20 20 FLASH/NVM 烧录 CSM32RV20 配 置 了 40kBytes FLASH + 512bytes NVM , 起 始 地 址 为 0x2000_0000,本部分介绍了其特性、功能和操作。 20.1 FLASH/NVM 主要特性 ⚫ 10K×32 位(40K 字节)主存储空间 ⚫ 每个扇区 512 字节 ⚫ 1 个 NVM,512 字节,用户可操作 ⚫ 按 32 位读,按 8 位写 ⚫ FLASH/NVM 编程/擦除操作 ⚫ 读写保护 20.2 FLASH/NVM 映射 表 20-1 展示了 FLASH/NVM 存储器的地址分配。 表 20-1 FLASH/NVM 存储器地址映射 块 名字 存储地址 大小 行0 0x2000_0000 – 0x2000_00FF 256 字节 行1 0x2000_0100 – 0x2000_01FF 256 字节 行0 0x2000_0200 – 0x2000_02FF 256 字节 行1 0x2000_0300 – 0x2000_03FF 256 字节 扇区 2 0x2000_0400 – 0x2000_05FF 512 字节 扇区 3 0x2000_0600 – 0x2000_07FF 512 字节 扇区 4 0x2000_0800 – 0x2000_09FF 512 字节 · · · · · · · · · 0x2000_9E00 – 0x2000_9FF7 504 字节 0x2000_9FF8 – 0x2000_9FFF 保留 0x2001_0000 – 0x2001_01FF 512 字节 扇区 0 扇区 1 FLASH 扇区 79 NVM 其中,主存储空间用于存储用户程序,可以通过 cJTAG 或者 UART 接口对 其编程。用户程序可以在线读写 512 字节 NVM。 Rev1.8 2022/04/27 172 / 191 CSM32RV20 20.2.1 NVM 操作 CSM32RV20 配备了 512 字节的 NVM 供用户存储自定义数据,提供了扇区 的用户程序操作函数:flash_operation(),函数的入口地址为 0x2100_0fe2,用户 程序可通过声明函数指针调用该函数,实现对 NVM 和主扇区操作,关于函数的 定义如下: uint8_t flash_operation(uint8_t code, uint16_t addr, uint8_t *p, uint16_t num,uint8_t clk) 参数和返回值描述: code:功能码,用于选择读,写,擦除功能; addr:读/编程的起始地址,0-0x9ffc; *p:数组指针; num :待操作字节数,1-128 clk:flash 时钟,一般默认 0 返回值:0,成功; 1) 非法地址; 2) 待操作数大于剩余字节数; 3) 数组指针为 NULL; 4) 操作码错误。 注:执行读/写操作前需对数组越界检查。 功能码 code 的描述如表 20-2 所示。 表 20-2 功能码 code 描述 操作 代码 描述 Erase_sector 1 擦除指定 n 个主扇区 Erase_NVM 2 擦除 NVM Erase_chip 3 擦除整个芯片(用户禁止使用,会擦掉整个主扇区,造成死机) Write_bytes 4 写 n 字节到 flash(地址要 4 字节对齐,一次操作只能在一个 row 内, 一个扇区分为 4 个 row,每个 row 有 128 字节) Read_bytes 5 从主扇区读 n 字节(地址要 4 字节对齐) 写 n 字节到 NVM(地址要 4 字节对齐,一次操作只能在一个 row 内, Write_NVM 6 NVM 分为 4 个 row,每个 row 有 128 字节) Read_NVM Rev1.8 2022/04/27 7 从 NVM 读 n 字节(地址要 4 字节对齐) 173 / 191 CSM32RV20 定义函数指针示例: #define MY_FLASH_OPEREATION_Addr 0x21000fe2 uint8_t (*my_flash_operation)(uint8_t code, uint16_t addr, uint8_t *p, uint16_t num,uint8_t clk); my_flash_operation = MY_FLASH_OPEREATION_Addr; 20.2.2 FLASH 读写保护 FLASH 存储器能够保护用户程序防止外部读写访问。通过上位机软件或 IDE 软件设置。 20.3 FLASH/NVM 烧录 用可以通过两种方法下载用户程序至 CSM32RV20: 1) 通 过 编 程 上 位 机 软 件 : CSM32RV20 于 ROM 中 存 放 了 引 导 程 序 , 通 过 串 口与编程上位机通信。用户正确连接串口的 TX1/RX1 引脚后即可通过上位机进行 编程; 电脑 用户使用环境 UART1 TX RX RX TX 上位机 图 20-1 2) MCU CSM32RV20 MCU 与上位机连接 通过 cJTAG 接口:CSM32RV20 配备了 2-线 cJTAG 接口用于调试和编程,用户连 接调试器和 MCU 的调试接口:TCKC 和 TMSC 引脚,通过 IDE 软件进行编程, 关于 cJTAG 接口的描述详见 21 Debug 支持,调试和编程的详细操作流程详见 CSM Studio IDE Manual。 Rev1.8 2022/04/27 174 / 191 CSM32RV20 电脑 用户使用环境 cJTAG IDE软件 调试器 J-Link等 TMSC TMSC/PA1 TCKC TCKC/PA0 图 20-2 MCU 与 cJTAG 连接 Rev1.8 2022/04/27 175 / 191 MCU CSM32R20 CSM32RV20 21 Debug 支持 21.1 概述 CSM32RV20 围绕 32 位 RISC-V 内核构建,该内核包含 JTAG 调试传输模块 (debug transport module,DTM),支持使用单个外部工业标准 1149.1 JTAG 接 口测试和调试系统。DTM 支持交互式调试和最多 4 个硬件断点。JTAG 调试接 口由一个工业标准 2-线 cJTAG 接口驱动。 21.2 cJTAG 调试接口 CSM32RV20 内核内嵌了 cJTAG 适配器,提供了由两个信号组成的接口: TCKC 和 TMSC。许多调试器可以同时支持传统的 JTAG 和新的 cJTAG。使用时 将调试探针的 TCKC 和 TMSC 引脚与 MCU 相对应的引脚相连,支持在线调试 和下载,具体操作详见 CSM Studio IDE Manual。 表 21-1 cJTAG 调试接口引脚 cJTAG 引脚名 cJTAG 调试端口 引脚分配 类型 调试分配 TMSC IO 数据输入/输出 PA1 TCKC I 时钟 PA0 cJTAG 的 2 个引脚默认复用为调试接口,若不使用 cJTAG 则用户可以将其 复用为通用 I/O,详见 5 通用和复用功能 I/O。 Rev1.8 2022/04/27 176 / 191 CSM32RV20 22 RISC-V 内核 内置 32 位 RISC-V 核,采用两级流水线,支持 IMAC 指令。RISC-V 相关请 参照[1][2]。 [1] A. Waterman and K. Asanovic, Eds., The RISC-V Instruction Set Manual, Volume I: UserLevel ISA, Version 2.2, May 2017. [Online]. Available: https://riscv.org/specifications/ [2] The RISC-V Instruction Set Manual Volume II: Privileged Architecture Version 1.10, May 2017. [Online]. Available: https://riscv.org/specifications/ Rev1.8 2022/04/27 177 / 191 CSM32RV20 23 芯片电子签名 电子签名包含 VersionSize 和 MCUID,可以通过 cJTAG、编程上位机或 MCU (用户程序)读取,包含出厂编写的识别数据。 23.1 芯片版本号(VersionSize) VersionID 寄存器包含芯片版本信息和 FLASH 容量信息。 地址:0x3000_0430 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 version R 15 14 13 12 11 10 9 8 7 version size R R 位 标记 功能描述 31:8 version 本芯片的版本号 本芯片中 FLASH 容量的大小 0000_0001:4k; 0000_0010:8k; size 7:0 0000_0011:12k; ………. 0000_1010:40k 23.2 MCUID MCUID 为出厂唯一 ID。 地址:0x3000_0420 复位值:ID 值 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 6 5 4 3 2 1 0 mcuid R 15 14 13 12 11 10 9 8 7 mcuid Rev1.8 2022/04/27 178 / 191 CSM32RV20 R 位 标记 功能描述 31:0 mcuid 本颗 mcu 芯片的 ID 号 Rev1.8 2022/04/27 179 / 191 CSM32RV20 24 电气参数 24.1 参数条件 除非特别说明,所有电压均以 VSS 为参考。 24.1.1 最大和最小值 除非特别说明,所有最大值和最小值在最坏的环境温度、供电电压和时钟频 率下得到保证。 基于特性结果、设计模拟和/或技术特性的数据在表脚注中指明,未在生产 中进行测试。最小值和最大值样本测试。 24.1.2 典型值 除非另有说明,典型数据基于 TA = 25 摄氏度,VDD = 3.3 V。仅作为设计指 南。 24.1.3 电源供电方案 CSM32RV20 有一个电源引脚和地(底部焊盘)。 VCC 10Ω VDD 4.7uF 100nF VSS(Die) 图 24-1 电源供电方案 24.1.4 电流消耗测量 电流消耗测量如图 24-2 所示。 Rev1.8 2022/04/27 180 / 191 CSM32RV20 IDD VDD 电流测量 图 24-2 电流消耗测量 24.2 绝对最大额定值 临界或超过绝对最大额定值将可能导致芯片工作异常甚至损坏。 表 24-1 绝对最大额定值表 符号 VDD -VSS VIN (1) (1) 参数 最小值 最大值 单位 外部主供电电压 -0.3 5.8 V 引脚输入电压 -0.3 5.8 V 2000 V 150 ℃ VESD(HBM) (1) 静电放电电压(人体模型) TS 存储温度 -55 注:1. 设计参数 24.3 操作条件 24.3.1 一般操作条件 表 24-2 一般操作条件 符号 参数 条件 最小 标准 最大 单位 fRC 内部系统时钟频率 Ta=25℃,VDD =3.3 V 10 16/32 34 MHz fOSC 外部晶振时钟频率 Ta=25℃,VDD =3.3 V 4 16/32 32 MHz f3K 内部 3K 时钟频率 Ta=25℃,VDD =3.3 V 1.8 3 8 KHz VDD 标准操作电压 使用 ADC 2.5 3.3 5 未使用 ADC 1.8 3.3 5.5 - 3.3 - mA - 5.7 - mA - 2.9 - mA - 4.2 - mA 标准工作电流 标准工作电流 IDD 标准工作电流 标准工作电流 Rev1.8 2022/04/27 V 外设关闭,3K OSC 和看门狗工 作,16MHZ RCOSC 外设关闭,3K OSC 和看门狗工 作,32MHZ RCOSC 外设关闭,3K OSC 和看门狗工 作,16MHZ 晶振 外设关闭,3K OSC 和看门狗工 作,32MHZ 晶振 181 / 191 CSM32RV20 外设关闭,3K OSC 和看门狗工 待机模式 作,SRAM 保持 - 1.6 - mA - 364 - uA - 3.5 - uA - 1 - uA 外设关闭,3K OSC 和看门狗工 睡眠模式 作,SRAM 保持 外设关闭,3K OSC 和看门狗工 掉电模式 1 作,SRAM 保持 掉电模式 2 外设关闭,3K OSC 和看门狗工作 注:1. 没有特别说明,Ta=25℃,VDD=3.3V 条件下参数。 24.3.2 内部系统时钟源参数 RCOSC 的频率能够通过寄存器修调,寄存器为绝对地址 0x3000_0404 下的 低 9 位.随着修调字的递增,频率递减,递减幅度为 0.4% . 注意:除了频率修调字,其他位禁止修改. 表 24-2 内部系统时钟参数 符号 参数 fCLK 频率 TRIM 微调步进 条件 最小 标准 最大 单位 - - 10 16/32 34 MHz 16M - - 0.4 - % 32M - - 0.4 - % Ta= -40℃ ~ 125℃ 16M ACC 振荡器精度 32M Ta= -20℃ ~ 85℃ ±4 - 起振时间 - - % Ta= 25℃ ±1 % Ta= -40℃ ~ 125℃ ±8 % Ta= -20℃ ~ 85℃ - Ta= 25℃ tsu ±3 % Ta=25℃,VDD =3.3 V ±5 - ±1 - 1 % % - us 24.3.3 外部时钟源参数 外部时钟源使用低成本晶振:4 ~ 32 MHz ±60 ppm。 使用时,GPIOB12/13 应配置为模拟功能;晶振引脚在未设置为模拟功能时, 外部晶振被关闭且输入输出引脚用作标准 I/O。 晶振负载电容推荐高质量外部陶瓷电容,容值在 5 pF 至 20 pF 范围内 (C1 = C2 = 15 pF 为典型值,实际使用请参考晶振的数据手册)。 Rev1.8 2022/04/27 182 / 191 CSM32RV20 片内电路 OSC_IN OSC_OUT Y1 16MHz C1 C2 图 24-3 使用 16 MHz 晶振时典型应用图 表 24-3 晶振参数表 符号 参数 fCLK 时钟频率 VDD 最小 标准 最大 单位 Ta=25℃,VDD =3.3 V 4 16/32 32 MHz - uA - ms 5.5 V 晶振稳定后 IVDD(1) 条件 3.3 V 电流 113 C1 = C2 = 15 pF 81 - 1.8 V tSU(1) 起振时间 3.3 V 66 C1 = C2 = 15 pF - 0.6 注:1.为设计参数 24.3.4 I/O 端口参数 通用输入输出参数 表 24-4 I/O 直流参数 符号 参数 VDD 条件 5V VIH I/O 输入高电压 3.3 V 最小 - 2.0 3.3 V - V 0.8 ×VDD 5V I/O 输入低电压 单位 0.7 ×VDD 1.8 V VIL 最大 0.3 ×VDD - - 1.8 V 0.3×VDD V 0.2 ×VDD 施密特触发器 VHYS 迟滞 5/3.3/1.8 V - 0.1 ×VDD - V IIH I/O 输入高电流 5/3.3/1.8 V - - +1 μA IIL I/O 输入低电流 5/3.3/1.8 V - -1 - μA 高驱动 Imin = 16mA 5V VOH I/O 输出高电压 低驱动 Imin = 8mA VDD-0.8 高驱动 Imin = 8mA 3.3 V 低驱动 Imin = 4mA 2.4 V 高驱动 Imin = 4mA 1.8 V VOL I/O 输出低电压 5V 3.3 V Rev1.8 2022/04/27 低驱动 Imin = 2mA 高驱动 Imin = 16mA 低驱动 Imin = 8mA 高驱动 Imin = 8mA 183 / 191 VDD-0.45 0.5 V 0.4 CSM32RV20 符号 参数 条件 VDD 最小 最大 单位 低驱动 Imin = 4mA 高驱动 Imin = 4mA 1.8 V 0.45 低驱动 Imin = 2mA Rpup 上拉电阻 5/3.3/1.8 V - 20 100 KOhm Rpdn 下拉电阻 5/3.3/1.8 V - 20 100 KOhm CIN I/O 输入电容 5/3.3/1.8 V - - 10 pF 注:以上为设计参数 24.3.5 ADC 参数 符号 参数 条件 最小 标准 最大 单位 16bit 36.62 uV/LSB 15bit 73.24 uV/LSB 14bit 146.48 uV/LSB 13bit 292.97 uV/LSB 16bit 35.25 us 转换时间(ADC 时 15bit 19.25 us 钟 4MHz) 14bit 11.25 us 13bit 7.25 us ±3.5 mV 分辨率 VRES TCONV 测量误差 VERR(1) 备注 2~128 仅 INGAIN 输入通道增益 1/4 1 支持 PA11 128 输入 VINRANG 输入电压范围 VDD≤ 0 VDD 4.8V 时钟频率 fCLK 4 8 注 1. 输入 1/4 增益,内部基准 0~1.2V,VDD=3.3V,16 位分辨率 24.3.6 低压检测阈值 lv_th 阈值电压(v) 0000 1.755 0001 1.865 0010 1.969 0011 2.077 0100 2.173 0101 2.268 0110 2.374 0111 2.49 1000 2.579 Rev1.8 2022/04/27 184 / 191 MHz CSM32RV20 1001 2.671 1010 2.774 1011 2.879 1100 2.996 1101~1111 欠压电路关断 注:阈值电压误差±50mv 25 封装信息 CSM32RV20 采用 4x4 mm QFN32、TSSOP20 或者 3x3mm QFN20 封装。 图 25-1 QFN32 封装 尺寸 单位 D E D2 E2 A A1 4.10 4.10 2.90 2.90 0.80 0.05 A3 B (4.00) (4.00) (2.80) (2.80) (0.75) (0.02) 3.90 3.90 2.70 2.70 0.70 0.00 Rev1.8 2022/04/27 185 / 191 L (0.20) - Z 0.30 0.50 REF REF (0.30) BSC 0.15 y 0.35 0.40 REF 注:所有尺寸均为毫米 K 0.25 0.203 mm e 0.25 CSM32RV20 图 25-2 TSSOP20 封装 尺寸 符号 mm 最小 典型 最大 A 1.00 - 1.10 A1 0.05 - 0.15 A3 0.39 - 0.40 b 0.20 - 0.2800 b1 0.2 0.22 0.24 c 0.1 - 0.19 c1 0.10 - 0.15 D 6.40 6.45 6.50 E 6.25 6.40 6.55 E1 - 4.35 4.40 L 0.50 0.60 0.7000 e 0.55 0.6500 0.75 L2 R 0.25NSC 0.09 - L1 - 1.0REF θ1 0° - 8° S 0.20 - - 注:所有尺寸均为毫米 Rev1.8 2022/04/27 186 / 191 CSM32RV20 图 25-3 3x3mm QFN20 封装 Rev1.8 2022/04/27 187 / 191 CSM32RV20 25.1 芯片丝印样式 CSM32RV20 E77Q6 623AW01 . 注:MCU 芯片打印规则共分四行,其中: 第一行为芯片型号; 第二行为不同版本属性的说明; 第三行为周记,为我公司通用规则; 第四行为标注 pin1 位置的圆点。 25.2 芯片丝印字母的详细说明 CS M 32 RV 20 E 7 7 公司名 MCU 系列 平台 规格 引脚数量 程序容量 ADC 分辩率 封装类型 温度范围 引脚数量规则 引脚数 2 3 5 6 8 10 12 14 16 代号 1 2 3 4 5 6 7 8 A 引脚数 20 24 28 32 40 44 48 64 代号 B C D E F G H J 程序容量:单位 kByte 程序容量 1 2 4 8 16 32 40 64 128 256 512 代号 1 2 3 4 5 6 7 8 A B C Rev1.8 2022/04/27 188 / 191 Q 6 CSM32RV20 ADC:单位 bits ADC 分辨率 8 10 12 13 14 15 16 18 20 24 代号 1 2 3 4 5 6 7 8 A B 封装类型: 封装类型 SOP TSSOP LQFP QFN 代号 S T L Q 温度范围: 温度范围 -40~85℃ -40~105℃ -40~125℃ 代号 6 7 8 Rev1.8 2022/04/27 189 / 191 CSM32RV20 26 版本信息 版本 修订日期 修订内容摘要 Rev1.0 2021/9/24 初稿 Rev1.1 2021/11/16 修改独立看门狗 IWDG_RLR 寄存器的写描述:在向 IWDG_KR 寄存器中 写入 0x5555 之后必须等待一个指令周期才能写 IWG_RLR 寄存器。 Rev1.2 2021/12/3 修改联系方式 Rev1.3 2022/01/13 1) 补充 ADC 通道描述; 2) 更新 NVM 操作描述。 Rev1.4 2022/03/01 增加 3x3mm QFN20 封装。 Rev1.5 2022/04/07 1) 修改表 1-1/1-2/1-3 中的 PA8 描述错误; 2) 修改图 14-1 标注错误。 Rev1.6 2022/04/07 更新图 24-1。 Rev1.7 2022/04/12 修改时钟分频寄存器 rtc_clk_div 描述。 Rev1.8 2022/04/27 1) 修改表 24-4 中 VIL 描述; 2) 修改表 20-1 中 FLASH 地址描述。 Rev1.8 2022/04/27 190 / 191 CSM32RV20 27 技术支持与联系方式 南京中科微电子有限公司 技术支持中心 电话:025-68517780 地址:南京市玄武区徐庄软件园研发三区 B 栋 201 销售 手机:18961759481 邮箱:sales@csmic.ac.cn 技术支持 手机:13645157034 邮箱:supports@csmic.ac.cn 网址:http://www.csm-ic.com Rev1.8 2022/04/27 191 / 191
CSM32RV20 TSSOP20 价格&库存

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

免费人工找货