产品订购信息 Part NO. 工作电压 FLASH SRAM I/O ADC Timer 封装类型 HW2181FHNQ 2.2V~3.6V 36KB 8KB bit X 15ch 8-bit X 5 QFN48 地址 : 中国上海市龙漕路 299 号天华信息科技园 2A 楼 5 层邮

Size: px
Start display at page:

Download "产品订购信息 Part NO. 工作电压 FLASH SRAM I/O ADC Timer 封装类型 HW2181FHNQ 2.2V~3.6V 36KB 8KB bit X 15ch 8-bit X 5 QFN48 地址 : 中国上海市龙漕路 299 号天华信息科技园 2A 楼 5 层邮"

Transcription

1 2.4G SOC HW2181 数据手册 产品简介 数据手册 产品规格 上海东软载波微电子有限公司 2016 年 2 月 3 日 V0.9 1/280

2 产品订购信息 Part NO. 工作电压 FLASH SRAM I/O ADC Timer 封装类型 HW2181FHNQ 2.2V~3.6V 36KB 8KB bit X 15ch 8-bit X 5 QFN48 地址 : 中国上海市龙漕路 299 号天华信息科技园 2A 楼 5 层邮编 : support@essemi.com 电话 : 传真 : 网址 : 版权所有 上海东软载波微电子有限公司本资料内容为上海东软载波微电子有限公司在现有数据资料基础上慎重且力求准确无误编制而成, 本资料中所记载的实例以正确的使用方法和标准操作为前提, 使用方在应用该等实例时请充分考虑外部诸条件, 上海东软载波微电子有限公司不担保或确认该等实例在使用方的适用性 适当性或完整性, 上海东软载波微电子有限公司亦不对使用方因使用本资料所有内容而可能或已经带来的风险或后果承担任何法律责任 基于使本资料的内容更加完善等原因, 上海东软载波微电子有限公司未经预告的修改权 使用方如需获得最新的产品信息, 请随时用上述联系方式与上海东软载波微电子有限公司联系 V0.9 2/280

3 修订历史 版本 修改日期 更改概要 V 初版 V 删除 BOR 3V 以上设置 V0.9 3/280

4 目录 第 1 章 芯片简介 概述 系统框图 管脚分配图 QFN48 封装 管脚说明 管脚说明 MCU 复用管脚对照 内部连线 芯片悬空脚注意事项 第 2 章 MCU 系统控制及操作特性 系统控制保护 概述 特殊功能寄存器 系统电源 结构框图 芯片供电电源 系统复位 概述 结构框图 复位时序图 外部复位 MRSTN 参考 特殊功能寄存器 低电压监测 (LVD) 概述 特殊功能寄存器 系统低功耗操作模式 概述 普通睡眠模式 深度睡眠模式 睡眠模式的唤醒 FLASH 存储器等待功能 特殊功能寄存器 系统时钟 概述 结构框图 功能说明 特殊功能寄存器 系统时钟应用说明 中断和异常处理 中断和异常 V0.9 4/280

5 中断和异常向量的分配 中断向量表的重映射 特殊功能寄存器 系统控制块 (SCB) 概述 特殊功能寄存器 系统定时器 (SYSTICK) 概述 特殊功能寄存器 配置字软件控制 定时器 (T16N/T32N) 同步启动关停控制 概述 特殊功能寄存器 第 3 章 MCU 存储器资源 内部存储器地址映射 FLASH 存储器 芯片配置字 程序区 FLASH 自编程操作 (IAP) 数据存储器 (SRAM) SRAM 地址映射 SRAM 位带扩展 外设寄存器 外设寄存器映射 外设位带扩展 系统控制单元 (SCU) 寄存器列表 GPIO 寄存器列表 IAP 寄存器列表 ADC 寄存器列表 RTC 寄存器列表 WDT 寄存器列表 T16N0/T16N1/T16N2/T16N3 寄存器列表 T32N0 寄存器列表 UART0/UART1 寄存器列表 EUART0 寄存器列表 SPI0/ SPI1 寄存器列表 I2C0 寄存器列表 内核寄存器 系统定时器 (SYSTICK) 寄存器列表 中断控制器 (NVIC) 寄存器列表 系统控制块 (SCB) 寄存器列表 第 4 章 MCU 输入输出端口 (GPIO) 概述 结构框图 V0.9 5/280

6 4. 3 外部端口中断 外部按键中断 Buzz 输出 特殊功能寄存器 第 5 章 MCU 外设 定时器 / 计数器 位定时器 / 计数器 T16N(T16N0/ T16N1/ T16N2/ T16N3) 位定时器 / 计数器 T32N(T32N0) 通用异步接收 / 发送器 (UART0/ UART1) 概述 结构框图 UART 数据格式 UART 异步发送器 UART 异步接收器 UART 发送调制功能 UART 红外唤醒功能 UART 端口极性 UART 自动波特率检测 UART 空闲帧检测 UART 发送暂停和接收暂停 特殊功能寄存器 UART 应用说明 增强型通用异步接收 / 发送器 (EUART0) 概述 结构框图 EUART 端口复用 普通 UART 通讯模式 通讯模式的异步接收器和发送器 通讯模式的数据格式 通讯模式的自动重发功能 通讯模式的自动重收功能 特殊功能寄存器 EUART 应用说明 SPI 同步串口通讯控制器 (SPI0 /SPI1) 概述 结构框图 SPI 通讯模式 SPI 数据格式 SPI 帧位宽 SPI 同步发送器 SPI 同步接收器 SPI 通讯控制 SPI 延迟接收功能 SPI 数据帧发送间隔功能 V0.9 6/280

7 特殊功能寄存器 SPI 应用说明 I2C 总线串口通讯控制器 (I2C0) 概述 结构框图 I2C 总线基本原理 I2C 通讯端口配置 I2C 时基定时器与 16 倍速采样器 I2C 通讯发送器 I2C 通讯接收器 I2C 通讯控制 特殊功能寄存器 I2C 应用说明 模数转换器 (ADC) 概述 结构框图 ADC 基本配置 ADC 高精度参考电压 ADC 数据转换 自动转换比较功能 特殊功能寄存器 实时时钟 (RTC) 概述 RTC 写保护 时间日期设置 RTC 中断源 特殊功能寄存器 RTC 应用说明 看门狗定时器 (WDT) 概述 特殊功能寄存器 第 6 章 RF 收发器 工作模式控制 POWER DOWN 模式 SLEEP 模式 IDLE 模式 TX 模式 RX 模式... 2 第 7 章 RF 收发器 帧结构 PTX 发送数据帧结构 PRX 发送 ACK 帧结构... 4 第 8 章 RF 收发器 链路控制方式 硬件链路控制方式 软件链路控制方式... 5 第 9 章 RF 收发器 多 PIPE 逻辑通道... 6 V0.9 7/280

8 第 10 章 RF 收发器 自动响应 ACK 与自动重传 ART ACK 不带 ACK PAYLOAD ACK 带 ACK PAYLOAD... 7 第 11 章 RF 收发器 数据与控制接口 FIFO 中断 硬件链路控制中断 软件链路控制中断 SPI 通信接口 SPI 帧格式 寄存器访问时序 FIFO 访问时序 SPI 时序参数 第 12 章 RF 收发器 其它功能与设置 RF 收发器复位 频点设置 自动频偏校正 (AFC) 软件频偏校正 前导码指示 RSSI 功能 载波检测指示 (Carrier Detect) 功能 FEC CRC SCRAMBLE 功能 第 13 章 RF 收发器 寄存器 寄存器列表 寄存器说明 第 14 章 RF 收发器 术语解释 第 15 章 封装尺寸图 封装尺寸图 第 16 章 典型应用原理图 典型应用原理图 设计应用注意事项 第 17 章 电气特性 芯片操作条件 MCU 电气特性 功耗参数 芯片输入端口特性 系统时钟规格 ADC 模块特性 内部时钟源特性 BOR 模块特性 LVD 模块特性 RF 收发器电气特性 功耗参数 通讯基本参数 V0.9 8/280

9 发射机参数 接收机参数 振荡器参数 振荡器参数 V0.9 9/280

10 第 1 章芯片简介 1. 1 概述 HW2181 是一款高集成度的 2.4GHZ ISM 频段无线 SOC 芯片, 可应用于无线航模 智能家居 以及其它无线数据传输和远程控制等领域 片上集成高性能 低功耗的 RF 收发器和 32 位 MCU 片上 RF 收发器的外围电路简单, 只需少数外围被动器件即可构成完整的 2.4G 无线收发系统 RF 收发器发射功率最大可以到 8dBm, 接收灵敏度可达到 -96dBm@250Kbps -91dBm@1Mbps 片上 MCU 内部集成 32 位 ARM Cortex-M0 CPU 内核, 具备 36KB 的 Flash 程序存储空间 芯片特性 : 工作条件 工作电压范围 :2.2V ~ 3.6V 工作温度范围 :-40 ~ 85 封装形式 QFN48 MCU 特性 : 内核 ARM Cortex-M0 32 位嵌入式处理器内核 支持 SWD 串行调试接口, 支持 2 个监视点 (watchpoint) 和 4 个断点 (breakpoint) 内嵌向量中断控制器 NVIC 支持唤醒中断控制器 WIC NVIC 包含一个不可屏蔽中断 NMI 内置 1 个 SysTick 系统定时器 存储资源 36K 字节 FLASH 存储器 - 支持 ISP 在线串行编程 - 支持两组 ISP 编程接口可选择 - 支持 IAP 在应用中编程, 可选取部分区域作为数据存储使用 - 支持 FLASH 编程代码加密保护 8K 字节 SRAM 存储器 - SRAM 存储空间及外设寄存器地址空间支持位带 (BIT BAND) 扩展 I/O 端口 本芯片最多支持 41 个端口, 外部可用 35 个端口 - 外部 PA 端口 22 个 (PA0~PA9 PA18~PA20 PA23~PA31) - 外部 PB 端口 13 个 (PB0~PB8 PB10~PB13) - 内连端口 6 个 (PA11~PA16) 定时器 / 计数器 T16N0:16 位定时器 / 计数器, 带预分频器, 扩展输入捕捉 / 输出调制功能 T16N1:16 位定时器 / 计数器, 带预分频器, 扩展输入捕捉 / 输出调制功能 V0.9 10/280

11 T16N2:16 位定时器 / 计数器, 带预分频器, 扩展输入捕捉 / 输出调制功能 T16N3:16 位定时器 / 计数器, 带预分频器, 扩展输入捕捉 / 输出调制功能 T32N0:32 位定时器 / 计数器, 带预分频器, 扩展输入捕捉 / 输出调制功能 UART 通信接口 支持二路 UART 通信接口 UART0,UART1 支持全 / 半双工异步通信模式 支持传输波特率可配置 支持 8 级发送 / 接收缓冲器 支持 7/8/9 位数据格式可配 支持奇偶校验功能可配, 支持硬件自动奇偶校验位判断 支持空闲帧检测 支持接收帧错误标志 溢出标志 奇偶校验错误标志 支持数据接收和发送中断 支持 PWM 调制输出, 且 PWM 占空比线性可调 支持接收端口支外唤醒功能 支持 UART 输入输出通讯端口极性可配置 EUART 通信接口 支持一路 EUART 通信接口 EUART0 兼容 UART 通信接口, 可配置为普通 UART 模式 扩展支持异步半双工接收 / 发送 (7816 模式 ) 扩展支持 8 位数据位和 1 位奇偶校验位 (7816 模式 ) 扩展支持自动重发重收模式 (7816 模式 ) 扩展支持可配置内部时钟输出 (7816 模式 ) 扩展支持双通道通讯可配置 (7816 模式 ) I2C 通信接口 支持一路通信接口 I2C0 支持主控和从动模式 支持标准 I2C 总线协议, 最高传输速率 400K bit/s 支持 7 位寻址方式 约定数据从最高位开始接收 / 发送 支持数据接收和发送中断 SCL/SDA 端口支持推挽 / 开漏模式, 开漏时必须使能内部弱上拉或使用外部上拉电阻 SCL 端口支持时钟线自动下拉等待请求功能 SPI 通信接口 支持二路通信接口 SPI0,SPI1(SPI0 内部和 RF 收发器相连, 外部只有 SPI1 可用 ) V0.9 11/280

12 支持主控模式和从动模式 支持 4 种通信数据格式 支持 4 级接收 / 发送缓冲器 支持数据接收和发送中断 ADC 模拟数字转换器 支持 12 位分辨率, 有效精度为 10 位 支持 16 通道模拟输入端 ( 可用 15 通道,AN4 未引出 ) 支持参考电压源可选择 支持中断产生 支持转换结果比较 支持定时触发 ADC 转换 复位 内嵌上电复位电路 POR 内嵌掉电复位电路 BOR 支持外部复位 时钟 外部晶体振荡器可配置, 支持低速振荡器 32KHz 和高速振荡器 1~20MHz, 可配置为系统时钟源 内部 4MHz 或 16MHz RC 振荡器 (HRC) 可配置为系统时钟源, 出厂前已校准 ( 全温度, 全电压范围内频率精度为 ±3%) 内部 32KHz RC 振荡器 (LRC) 作为 WDT 时钟源, 可配置为系统时钟源 支持 PLL 倍频, 时钟源可选择, 最大可倍频至 48MHz, 可配置为系统时钟源 硬件看门狗 时钟源可选择 支持低功耗模式下唤醒 超时计数溢出可选择触发中断或复位 低功耗特性 待机电流 :Ivdd < 编程及调试接口 支持在线编程 (ISP) 接口 支持编程代码加密保护 RF 收发器特性 : 通讯特性 使用国际通用的 2.4GHz ISM 工作频段 2402MHz~2483MHz 支持 GFSK 调制方式 支持 250Kbps/1Mbps 两种数据速率 V0.9 12/280

13 支持数字 RSSI 测量 支持 4 PIPE 多逻辑通道传输 接收机灵敏度 (0.1%BER) -91dBm@1Mbps -96dBm@250Kbps 发射机输出功率 支持发射机输出功率手动或自动控制 :-35dBm ~ +8dBm 功耗特性 发射机输出功率在 0dBm 时, 芯片功耗约为 19mA 接收机工作时, 芯片功耗约为 22mA IDLE 模式电流约为 2.0mA SLEEP 模式电流约为 15uA POWER DOWN 模式下电流约为 1.5uA 时钟电路 支持 12/16/20MHz(+/-60ppm) 石英晶体振荡器 V0.9 13/280

14 1. 2 系统框图 HW2181 的整体系统框图如下图所示 : MCU PA PB Clock Reset Interrupt SCU GPIO X 41 36K Bytes FLASH CORTEX-M0 AHB AHB-APB Bridge 8K Bytes SRAM APB WDT X 1 RTC X 1 12Bit ADC X 16ch IRQ SPI RF Transceiver RFP RFN APB SPI X 2 16Bit Timer X 4 32Bit Timer X 1 UART X 2 EUART X 1 I2C X 1 CE XTALP XTALN 图 1-1 系统内部结构框图 V0.9 14/280

15 1. 3 管脚分配图 QFN48 封装 PA25/MISO1/TXD0/T16N1_1 16 PA24/MOSI1/RXD0/T16N1_0 15 PA23 14 PA20/CLKO1/T16N0_0 13 PA19/T16N3_1/SDA VDD_RF XTALP XTALN VDD_PA RFP RFN VDD_IF VDD_RF VDD_RF VDD18 CE PA18/T16N3_0/SCL0 PB12/MRSTN PB11/OSC1O PB10/OSC1I GND PB8/T32N0_0/OSC2I/AN3 PB7/E0TX1/E0CK1/AN2 PB6/E0RX1/E0IO1/AN1 PB5/E0TX0/E0CK0/AN0 PB4/E0RX0/E0IO0 PB3/T16N0_1/SDA0 PB2/T16N0_0/SCL0 PB1/T32N0_1/TXD1/T16N3_ PB13/T16N1_0/BUZ/AN5 37 PB0/T32N0_0/RXD1/T16N3_0 VDD 38 PA31/MOSI1/TXD1 PA0/T16N1_1/AVREFN/BUZ/AN6/ISCK0 39 PA30/MISO1/RXD1 PA1/BUZ/AVREFP/AN7/ISDA0 40 PA29/SCK1/T16N2_1 PA2/T32N0_0/NSS1/AN8/T16N0_BK 41 PA28/NSS1/T16N2_0 PA3/T32N0_1/SCK1/AN9/T16N1_BK PA4/SCL0/MISO1/AN GND_PAD PA27/NSS1/TXD0/T16N3_BK PA26/SCK1/RXD0/T16N2_BK PA5/SDA0/MOSI1/AN11 44 PA6/T16N0_0/AN12 45 PA7/T16N0_1/AN13 46 PA8/RXD1/T16N1_0/AN14 47 PA9/TXD1/T16N1_1/AN15/CLKO0 48 图 1-2 QFN48 封装顶视图 (TopView) V0.9 15/280

16 1. 4 管脚说明 管脚说明 管脚编号 管脚名称 管脚功能 管脚说明 1 VDDRF 射频电源 RF 收发器电源输入 (2.5V ~ 3.6V) 2 XTALP 模拟输入 RF 收发器外接晶振的输入端 3 XTALN 模拟输出 RF 收发器外接晶振的输出端 4 VDDPA 模拟电源输出 RF 收发器内置的 1.8V 功放电源输出 5 RFP 射频端 RF 收发器射频端接口 6 RFN 射频端 RF 收发器射频端接口 7 VDDIF 模拟电源输出 RF 收发器内置的 1.8V 模拟电源输出 8 VDDRF 射频电源 RF 收发器电源输入 (2.5V ~ 3.6V) 9 VDDRF 射频电源 RF 收发器电源输入 (2.5V ~ 3.6V) 10 VDD18 模拟电源输出 RF 收发器内置的 1.8V 数字电源输出 RF 收发器片选信号输入, 内部已经和一个 GPIO 互 11 CE 数字输入 连 ( 高电平有效, 低电平为全芯片复位 ) 外部需要 外接滤波电容, 降低外部干扰 12 PA18/T16N3_0/SCL0 通用输入输出 MCU 通用 IO 口, 可复用为 I2C PWM 等 13 PA19/T16N3_1/SDA0 通用输入输出 MCU 通用 IO 口, 可复用为 I2C PWM 等 14 PA20/CLKO1/T16N0_0 通用输入输出 MCU 通用 IO 口, 可复用为 PWM 等 15 PA23 通用输入输出 MCU 通用 IO 口 16 PA24/MOSI1/RXD0/T16N1_0 通用输入输出 MCU 通用 IO 口, 可复用为 SPI UART PWM 等 17 PA25/MISO1/TXD0/T16N1_1 通用输入输出 MCU 通用 IO 口, 可复用为 SPI UART PWM 等 18 PA26/SCK1/RXD0/T16N2_BK 通用输入输出 MCU 通用 IO 口, 可复用为 SPI UART PWM 等 19 PA27/NSS1/TXD0/T16N3_BK 通用输入输出 MCU 通用 IO 口, 可复用为 SPI UART PWM 等 20 PA28/NSS1/T16N2_0 通用输入输出 MCU 通用 IO 口, 可复用为 SPI PWM 等 21 PA29/SCK1/T16N2_1 通用输入输出 MCU 通用 IO 口, 可复用为 SPI PWM 等 22 PA30/MISO1/RXD1 通用输入输出 MCU 通用 IO 口, 可复用为 SPI UART 等 23 PA31/MOSI1/TXD1 通用输入输出 MCU 通用 IO 口, 可复用为 SPI UART 等 24 PB0/T32N0_0/RXD1/T16N3_0 通用输入输出 MCU 通用 IO 口, 可复用为 UART PWM 等 25 PB1/T32N0_1/TXD1/T16N3_1 通用输入输出 MCU 通用 IO 口, 可复用为 UART PWM 等 26 PB2/T16N0_0/SCL0 通用输入输出 MCU 通用 IO 口, 可复用为 SPI PWM 等 27 PB3/T16N0_1/SDA0 通用输入输出 MCU 通用 IO 口, 可复用为 SPI I2C PWM 等 28 PB4/E0RX0/E0IO0 通用输入输出 MCU 通用 IO 口, 可复用为 SPI 等 29 PB5/E0TX0/E0CK0/AN0 通用输入输出 MCU 通用 IO 口, 可复用为 SPI ADC 等 30 PB6/E0RX1/E0IO1/AN1 通用输入输出 MCU 通用 IO 口, 可复用为 ADC 等 31 PB7/E0TX1/E0CK1/AN2 通用输入输出 MCU 通用 IO 口, 可复用为 ADC 等 V0.9 16/280

17 32 PB8/T32N0_0/OSC2I/AN3 通用输入输出 MCU 通用 IO 口, 可复用为 PWM ADC 等 33 GND 地线 MCU 数字地 34 PB10/OSC1I 通用输入输出 MCU 通用 IO 口, 可复用为外部晶振输入 35 PB11/OSC1O 通用输入输出 MCU 通用 IO 口, 可复用为外部晶振输出 36 PB12/MRSTN 通用输入输出 MCU 通用 IO 口, 可复用为外部复位输入 37 PB13/T16N1_0/BUZ/AN5 通用输入输出 MCU 通用 IO 口, 可复用为 PWM ADC 等 38 VDD MCU 电源 MCU 电源输入 (2.5V ~ 3.6V) 39 PA0/T16N1_1/AVREFN/BUZ/AN6/ISCK0 通用输入输出 MCU 通用 IO 口, 可复用为 PWM 编程等 40 PA1/BUZ/AVREFP/AN7/ISDA0 通用输入输出 MCU 通用 IO 口, 可复用为 ADC 编程等 41 PA2/T32N0_0/NSS1/AN8/T16N0_BK 通用输入输出 MCU 通用 IO 口, 可复用为 PWM SPI ADC 等 42 PA3/T32N0_1/SCK1/AN9/T16N1_BK 通用输入输出 MCU 通用 IO 口, 可复用为 PWM SPI ADC 等 43 PA4/SCL0/MISO1/AN10 通用输入输出 MCU 通用 IO 口, 可复用为 I2C SPI ADC 等 44 PA5/SDA0/MOSI1/AN11 通用输入输出 MCU 通用 IO 口, 可复用为 I2C SPI ADC 等 45 PA6/T16N0_0/AN12 通用输入输出 MCU 通用 IO 口, 可复用为 PWM ADC 等 46 PA7/T16N0_1/AN13 通用输入输出 MCU 通用 IO 口, 可复用为 PWM ADC 等 47 PA8/RXD1/T16N1_0/AN14 通用输入输出 MCU 通用 IO 口, 可复用为 PWM ADC 等 48 PA9/TXD1/T16N1_1/AN15/CLKO0 通用输入输出 MCU 通用 IO 口, 可复用为 PWM ADC 等 芯片底部中央的 PAD 必须接地, 包括 RF 和数字地, GND_ PAD 地线 建议 PCB 设计时在 PAD 上放置几个接地过孔, 保证 良好的接地 表 1-1 管脚说明表 MCU 复用管脚对照 PIN NAME (FUN0(D)) FUN1(D) FUN2(D) FUN3(D) FUN4(A) PB0 T32N0_0 RXD1 T16N3_0 - PB1 T32N0_1 TXD1 T16N3_1 - PB2 T16N0_0 禁止 SCL0 - PB3 T16N0_1 禁止 SDA0 - PB4 E0RX0/E0IO0 禁止 - - PB5 E0TX0/E0CK0 禁止 - AIN0 PB6 E0RX1/E0IO1 - - AIN1 PB7 E0TX1/E0CK1 - - AIN2 PB8/OSC2I - - T32N0_0 AIN3 PB9 禁止 禁止 禁止 禁止 PB10/OSC1I PB11/ OSC1O V0.9 17/280

18 PB12/MRSTN PB13 T16N1_0 BUZ - AIN5 PA0/ISCK0 T16N1_1 - BUZ AVREFN/ AIN6 PA1/ISDA0 BUZ - - AVREFP/ AIN7 PA2 T16N0_BK T32N0_0 NSS1 AIN8 PA3 T16N1_BK T32N0_1 SCK1 AIN9 PA4 SCL0 - MISO1 AIN10 PA5 SDA0 - MOSI1 AIN11 PA6 - T16N0_0 - AIN12/ LVD_IN PA7 - T16N0_1 - AIN13 PA8 RXD1 T16N1_0 - AIN14 PA9 TXD1 T16N1_1 CLKO0 AIN15 PA10 禁止 禁止 禁止 禁止 PA11 禁止 禁止 禁止 禁止 PA12* 禁止 禁止 MISO0 禁止 PA13* 禁止 禁止 MOSI0 禁止 PA14* NSS0 禁止 禁止 禁止 PA15* SCK PA16 禁止 禁止 禁止 禁止 PA17 禁止 禁止 禁止 禁止 PA18 T16N3_0 SCL0 - - PA19 T16N3_1 SDA0 - - PA20 - CLKO1 T16N0_0 - PA21 禁止 禁止 禁止 禁止 PA22 禁止 禁止 禁止 禁止 PA23 禁止 PA24 MOSI1 RXD0 T16N1_0 - PA25 MISO1 TXD0 T16N1_1 - PA26 SCK1 T16N2_BK RXD0 - PA27 NSS1 T16N3_BK TXD0 - PA28 - NSS1 T16N2_0 - PA29 - SCK1 T16N2_1 - PA30 - MISO1 RXD1 - PA31 - MOSI1 TXD1 - 表 1-2 复用管脚对照表 注 1:FUNx(D) 表示数字端口 ;FUNx(A) 表示模拟端口 注 2:PA12~PA15 是内部连线, 必须设置为 SPI0 功能 注 3:PA11 PA16 是内部连线, PA10 PA17 PA21 PA22 PB9 为悬空脚, 必须设置为 GPIO V0.9 18/280

19 内部连线 MCU 和 RF 收发器的数字接口是直接内部连接的, 二者连接关系如下表所示 : 序号 RF 收发器 (I/O) MCU(I/O) 说明 1 CSN(I) PA14(O) RF 收发器 SPI 的片选输入口 ( 低有效 ), 内部与 MCU 的 PA14 相连,PA14 必须设置为 SPI0 片选功能, 即 NSS0(FUN1) 2 SCK(I) PA15(O) RF 收发器 SPI 的时钟输入口, 内部与 MCU 的 PA15 相连,PA15 必须设置为 SPI0 时钟功能, 即 SCK0(FUN1) 3 MOSI(I) PA13(O) RF 收发器 SPI 的输入口, 内部与 MCU 的 PA13 相连,PA13 必须设置为 SPI0 的数据输出功能, 即 MOSI0(FUN3) 4 MISO(O) PA12(I) RF 收发器 SPI 的输出口, 内部与 MCU 的 PA12 相连,PA13 必须设置为 SPI0 的数据输入功能, 即 MISO0(FUN3) 5 IRQ(O) PA11 (I) RF 收发器中断输出口 ( 有效电平可通过寄存器 PKT_HINT_PORITY 配置 ), 内部与 MCU 的 PA11 相连, PA11 必须设置为 GPIO( 即 FUN0) 输入口, 并使能中断 PINT3 6 CE(I) PA16(O) RF 收发器芯片使能输入口, 内部与 MCU 的 PA16 相连, PA16 必须设置为 GPIO( 即 FUN0) 输出口 外部需加滤波电容, 电容推荐值为 150pF, 可根据应用环境调整大小表 1-3 内部连线 芯片悬空脚注意事项 需要注意芯片内部 MCU 悬空脚在初始化编程时, 应该设置为输出低电平, 以保证芯片的正常 工作 悬空脚的说明如下表所示 : 序号 悬空管脚名 设置状态 1 PA10 必须设置为 GPIO, 即 FUN0, 并输出低电平 2 PA17 必须设置为 GPIO, 即 FUN0, 并输出低电平 3 PA21 必须设置为 GPIO, 即 FUN0, 并输出低电平 4 PA22 必须设置为 GPIO, 即 FUN0, 并输出低电平 5 PB9 必须设置为 GPIO, 即 FUN0, 并输出低电平 表 1-4 芯片悬空管脚说明表 V0.9 19/280

20 第 2 章 MCU 系统控制及操作特性 2. 1 系统控制保护 概述由于系统控制寄存器的访问操作会影响整个芯片的运行状态, 为避免误操作导致芯片运行不正常, 芯片提供系统设置保护寄存器 修改系统控制单元前, 必须先关闭写保护, 操作完成后应当重新使能写保护, 使芯片安全运行 特殊功能寄存器 系统设置保护寄存器 (SCU_PROT) 偏移地址 :00 H 复位值 : _ _ _ B PROT - bit31-1 W PROT bit0 R/W 对 SCU_PROT<31:0> 写 0x55AA6996 时, 位 PROT 为 0; 写其它值时位 PROT 为 1 SCU 写保护位 0: 写保护关闭 1: 写保护使能 注 1: 只有以字方式对 SCU_PROT 寄存器写入 0x55AA6996 才能关闭写保护, 其他任何对 SCU_PROT 寄存器的写操作都将使能写保护功能 注 2:SCU_PROT 保护的寄存器为 SCU_NMICON,SCU_PWRC,SCU_FAULTFLAG,SCU_FLASHWAIT, SCU_SOFTCFG,SCU_LVDCON,SCU_CCM,SCU_PLLLKCON,SCU_TIMEREN,SCU_TIMERDIS, SCU_SCLKEN0,SCU_SCLKEN1,SCU_PCLKEN,SCU_WAKEUPTIME 2. 2 系统电源 结构框图 V0.9 20/280

21 ADC VDD 2.2V~5.5V 1.5V Logic & Memory VSS 图 2-1 系统电源结构框图 芯片供电电源 芯片供电电源为 VDD, 与其对应的是芯片的参考地 VSS 数字电源给 GPIO 端口,ADC 等供电, 内部 1.5V 电压给数字逻辑,Flash SRAM 等供电 2. 3 系统复位 概述 支持 POR 上电复位 支持 BOR 低电压监测复位 支持 MRSTN 外部端口复位 支持 WDT 看门狗溢出复位 支持 Cortex-M0 调试接口软件复位 结构框图 V0.9 21/280

22 MCU_CLK PWRTEB BOREN 低电压检测 上电检测 BOR POR 系RESET 统1024 个芯片 140ms 上电定时器 MRSTN WDT_RST 振荡器时钟周期定时器 POR/BOR 复稳定等待定 位时器 Cortex-M0 软件复位 图 2-2 系统复位电路结构框图 复位时序图 工作电压 VDD 0V RESET T filter 140ms 1024 个 MCU_CLK 图 2-3 上电复位时序示意图 VDD 工作电压低电压检测阈值 0V T filter RESET 140ms 1024 个 MCU_CLK 图 2-4 掉电复位时序示意图 外部复位 MRSTN 参考 VDD D1 DIODE R1 R2 MRSTN 管脚 C1 图 2-5 MRSTN 复位参考电路图 1 注 : 采用 RC 复位, 其中 47KΩ R1 100KΩ, 电容 C1=(0.1μF),R2 为限流电阻,0.1KΩ R2 1KΩ V0.9 22/280

23 VDD VDD R1 Q1 PNP R4 MRSTN 管脚 R2 R3 C1 图 2-6 MRSTN 复位参考电路图 2 注 : 采用 PNP 三极管复位, 通过 R1(2KΩ) 和 R2(10KΩ) 分压作为基极输入, 发射极接 VDD, 集电极一路通 过 R3(20KΩ) 接地, 另一路通过 R4(1KΩ) 和 C1(0.1μF) 接地,C1 另一端作为 MRSTN 输入 特殊功能寄存器 复位寄存器 (SCU_PWRC) 偏移地址 :08 H 复位值 : _ _ _xxxxxxxx B CFG_ POR_L SOFT_ MR WDTR BOR PORRST POR POR RST OST RSTF STF STF F F RCF F - bit 配置字读取 CFG_RST bit8 R/W 0: 无读取配置字发生 1: 读取配置字发生 POR 丢失标志位 POR_LOST bit7 R/W 0: 无 POR 丢失 1: 有 POR 丢失 软件复位标志位 SOFT_RSTF bit6 R/W 0: 无软件复位 1: 有软件复位 MRSTN 复位标志位 MRSTF bit5 R/W 0: 无 MRSTN 复位 1: 有 MRSTN 复位 WDTRSTF bit4 R/W WDT 复位标志位 V0.9 23/280

24 BORF bit3 R/W PORRSTF bit2 R/W PORRCF bit1 R/W PORF bit0 R/W 0: 无 WDT 复位 1: 有 WDT 复位 BOR 复位标志位 0: 无 BOR 复位 1: 有 BOR 复位 PORRST 复位标志位 0: 无 PORRST 复位 1: 有 PORRST 复位 PORRC 复位标志位 ( 内部测试用, 用户无需关心此位 ) 0: 无 PORRC 复位 1: 有 PORRC 复位 POR 复位标志位 ( 内部测试用, 用户无需关心此位 ) 0: 无 POR 复位 1: 有 POR 复位 2. 4 低电压监测 (LVD) 概述芯片内置 LVD 低电压监测模块, 可监测 VDD 电压或 LVD_IN 模拟通道电压 LVD 模块监测 LVD_IN 模拟通道时, 阈值电压为 1.2V 触发条件可选择掉电触发或上电触发, 触发后产生 LVD 中断标志, 当 LVD 中断使能开启时产生 LVD 中断请求 在睡眠模式下此中断可唤醒芯片 特殊功能寄存器 低电压监测控制寄存器 (SCU_LVDCON) 偏移地址 :28 H 复位值 : _ _ _ B LVDO IFS<2:0> IE IF VS<3:0> FLTEN EN bit31-16 LVD 输出状态位 LVDO bit15 R 0: 被监测电压高于电压阈值 1: 被监测电压低于电压阈值 bit14-13 LVD 中断标志产生模式选择位 IFS<2:0> bit12-10 R/W 000:LVDO 上升沿产生中断 001:LVDO 下降沿产生中断 V0.9 24/280

25 010:LVDO 高电平产生中断 011:LVDO 低电平产生中断 1xx:LVDO 变化 ( 上升或下降沿 ) 产生中断 IE bit9 R/W LVD 中断使能位 IF bit8 R/W LVD 中断标志位 0: 未发生 LVD 触发事件 1: 发生 LVD 触发事件边沿模式产生中断标志时, 可以写 1 清除标志 ; 电平模式产生中断标志时, 该标志只读, 触发电平消失后, 中断标志自动清零 VS<3:0> bit7-4 R/W LVD 触发电压 ( 电压为设计值 ) 0000:2.0V 0001:2.1V 0010:2.2V 0011:2.4V 0100:2.6V 0101:2.8V 0110:3.0V 0111:3.6V 1000:4.0V 1001:4.6V 1010:2.3V 1011,,1100,1101,1110: 1111: 监测 LVD_IN, 阈值电压 1.2V bit3-2 FLTEN bit1 R/W LVD 滤波使能位 EN bit0 R/W LVD 使能位 注 1: 对 SCU_LVDCON 寄存器进行写操作前, 需要设置 SCU_PROT 寄存器, 关闭写保护 2. 5 系统低功耗操作模式 概述配置外设时钟控制寄存器 SCU_PCLKEN, 可分别关闭芯片各个外设功能模块电路的时钟, 使该部分电路功耗降到最低 通过 WFI 指令, 可使芯片进入休眠状态, 配置 SCB_SCR 寄存器的 SLEEPDEEP 位, 可选 V0.9 25/280

26 择休眠状态为睡眠模式或深度睡眠模式 芯片进入休眠状态后, 所有 I/O 端口将保持进入休眠前的状态 为了降低功耗, 所有 I/O 端口都应保持为高电平或低电平, 同时避免输入端口悬空而产生漏电流, 可通过弱上拉或下拉将悬空的输入端口固定为高电平或低电平 芯片进入休眠状态后, 时钟工作状态参考下表 : 时钟睡眠模式深度睡眠模式 XTAL 工作 ( 若使能 ) 工作或关闭 HRC 工作 ( 若使能 ) 工作或关闭 LRC 工作工作表 2-1 低功耗模式时钟状态表 普通睡眠模式在普通睡眠模式下, 芯片内核时钟停止, 指令停止运行 可通过复位或中断唤醒普通睡眠模式 芯片进入普通睡眠模式的步骤如下 : 配置休眠状态选择位 SLEEPDEEP=0; 运行等待中断 (WFI) 指令, 进入睡眠模式 在普通睡眠模式下外设功能模块继续运行, 并可能产生中断使内核处理器恢复运行 普通睡眠模式下不访问存储器系统, 相关控制器和内部总线 在普通睡眠模式下, 内核处理器的状态和寄存器, 外设寄存器和内部 SRAM 的值都会保持, 端口的逻辑电平也会保持睡眠前的状态 深度睡眠模式在深度睡眠模式下, 芯片内核时钟停止, 指令停止运行 可通过复位或中断唤醒深度睡眠模式 芯片进入深度睡眠模式的步骤如下 : 配置休眠状态选择位 SLEEPDEEP=1; 运行等待中断 (WFI) 指令, 进入深度睡眠模式 在深度睡眠模式下, 外设功能模块都停止工作 深度睡眠模式下不访问存储器系统, 相关控制器和内部总线 在深度睡眠模式下, 内核处理器的状态和寄存器, 外设寄存器和内部 SRAM 的值都会保持, 端口的逻辑电平也会保持深度睡眠前的状态 在进入深度睡眠模式前, 通过系统唤醒时间控制寄存器 (SCU_WAKEUPTIME) 的深度睡眠模式时钟控制位 (MOSC_EN) 来选择主晶振 XTAL PLL HRC 和时钟滤波器 CLKFLT 等时钟模块是否关闭 选择时钟模块关闭时 ( 即 MOSC_EN=0), 可降低深度睡眠模式下系统的功耗, 但同时也增大了唤醒时所需要的时间 睡眠模式的唤醒芯片可通过以下事件从睡眠状态唤醒, 并执行下一条指令或进入中断处理程序 如果是中断 V0.9 26/280

27 唤醒且该中断已使能, 则唤醒后立即进入中断处理程序, 否则执行休眠时的下一条指令 普通睡眠模式唤醒 : 所有中断均可以唤醒普通睡眠模式芯片复位唤醒普通睡眠模式 深度睡眠模式唤醒 : 外部端口中断 PINTx 可以唤醒深度睡眠模式外部端口中断 KINT 可以唤醒深度睡眠模式 RTC 中断可唤醒深度睡眠模式 LVD 中断可唤醒深度睡眠模式 WDT 中断唤醒深度睡眠模式 ( 工作于 LRC 时钟源 ) ADC 中断唤醒深度睡眠模式 ( 工作于 LRC 时钟源 ) 芯片复位唤醒深度睡眠模式 FLASH 存储器等待功能 FLASH 存储器的访问频率对芯片功耗影响较大, 降低其访问频率, 可降低芯片功耗 可以通过降低系统时钟频率来降低 FLASH 存储器的访问频率, 但这同时也会降低芯片外设模块的工作速率 芯片支持增加 FLASH 存储器等待时间的设置, 在不降低系统时钟频率的前提下, 降低 FLASH 存储器取指令或数据的频率, 从而降低芯片整体功耗 配置 SCU_FLASHWAIT 寄存器的 ACCT <3:0>, 可设定 FLASH 访问的等待时间 特殊功能寄存器 FLASH 访问等待时间寄存器 (SCU_FLASHWAIT) 偏移地址 :20 H 复位值 : _ _ _ B ACCT<3:0> - bit FLASH 读取访问等待时间设置位 0:1TCLK 完成 FLASH 读取 ACCT<3:0> bit3-0 R/W 1:2TCLK 2:3TCLK... F:16TCLK 注 1: 对 SCU_FLASHWAIT 寄存器进行写操作前, 需要设置 SCU_PROT 寄存器, 关闭写保护 V0.9 27/280

28 注 2:TCLK 时钟周期与芯片系统时钟周期相同 2. 6 系统时钟 概述芯片系统有四个可选时钟源 外部时钟源支持两种模式, 即高速模式 HS(1~20MHz) 和低速模式 LP(32KHz) 支持 2 组外部晶振管脚选择 内部高频 RC 时钟源 HRC, 支持 4MHz/16MHz 时钟输出 内部低频 RC 时钟源 LRC, 支持 32KHz 时钟输出 内部集成锁相环电路 PLL,PLL 时钟源输入频率支持 32KHz 或 4MHz,PLL 输出时钟频率支持 32MHZ 或 48MHz 系统时钟支持 1~128 分频 支持 2 组 IO 端口可输出系统时钟频率 外部时钟停振检测, 支持停振后自动切换至 LRC 时钟并产生中断 PLL 失锁检测, 支持 PLL 失锁后自动切换至使用 PLL 前的时钟源并产生中断 系统时钟分频前滤波, 支持 4/5/7/9/12/18/24/31ns 滤波时间选择, 由芯片配置字 CFG_WORD2 进行配置 芯片系统时钟源的选择方式, 见如下描述 : 1) 系统时钟为外部时钟源 : 设置 CFG_WORD0 配置字的 CFG_OSC=0( 或设置 CFG_OSC=1, 并设置 SCU_SCLKEN0 寄存器的 CLK_SEL=2, 设置 SCU_SCLKEN1 寄存器的 XTAL_EN=1), 选择外部晶振时钟 ; 设置该配置字的 CFG_OSC_PIN, 选择晶振管脚, 设置 CFG_WORD2 配置字的 CFG_OSCMD 和 CFG_ OSC_RES, 选择高速 HS 模式或低速 LP 模式 ; 设置 SCU_SCLKEN1 寄存器的 PLL_EN=0 2) 系统时钟为内部时钟源 HRC 16MHz: 设置 CFG_WORD0 配置字的 CFG_OSC=1, INTOSC_SEL=0; 设置 SCU_SCLKEN0 寄存器的 CLK_SEL=0; 设置 SCU_SCLKEN1 寄存器的 PLL_EN=0 3) 系统时钟为内部时钟源 HRC 4MHz: 设置 CFG_WORD0 配置字的 CFG_OSC=1, INTOSC_SEL=1; 设置 SCU_SCLKEN0 寄存器的 CLK_SEL=0; 设置 SCU_SCLKEN1 寄存器的 PLL_EN=0 4) 系统时钟为内部时钟源 LRC 32KHz: 设置 CFG_WORD0 配置字的 CFG_OSC=1; 设置 SCU_SCLKEN0 寄存器的 CLK_SEL=1; 设置 SCU_SCLKEN1 寄存器的 PLL_EN=0 5) 系统时钟为内部时钟源 PLL 倍频时钟 : 设置 CFG_WORD0 配置字的 CFG_OSC=1; 设置 SCU_SCLKEN0 寄存器的 CLK_SEL=0; 设置 SCU_SCLKEN1 寄存器的 PLL_REF_SEL, 选择 PLL 输入时钟源, 设置 PLL_48M_SEL, 选择 PLL 输出时钟频率, 设置 PLL_EN=1 V0.9 28/280

29 结构框图 V0.9 29/280

30 CFG_OSCMD[3:0] CFG_OSC_PIN OSC1I OSC2I OSC1O OSC2O CFG_OSC_PIN 32KHz, 1~24MHz 外部振荡电路 XTAL 4MHz/16MHz 内部振荡器 HRC CCM PLL 32/48 MHz PLL_MUX 分频器 SYSCLK_DIV<2:0> 2 分频 4 分频 8 分频 SYS_CLK 16 分频 32 分频 64 分频 128 分频 32KHz 时钟振荡器 LRC WDT_32K WDT 看门狗模块 CLK_SEL[1:0] PLL_REF_SEL/PLL_48M_SEL FCLK SCLK HCLK PCLK DCLK 生成器 DCLK FCLK for Cortex M0 系统定时器 SysTick HCLK AHB 总线,MEMORY PCLK 16 位定时器 T16N0~T16N3 32 位定时器 T32N0 RTC 定时器 RTC 串口通讯 UART0/UART1 增强型串口 EUART0 模数转换器 ADC LCD 显示驱动模块 异步时钟 异步时钟 OSC_CLK LRC_32K OSC_CLK OSC_CLK LRC_32K LRC_32K OSC_CLK OSC_CLK CLKFLT_BY clkflt PLL_EN 图 2-7 系统时钟电路结构框图 功能说明 外部时钟 XTAL 外部振荡器可通过 PB8 PB9( 内部悬空未连 ) 或 PB10 PB11 其中一组管脚串接晶振工作, 通过芯片配置字 CFG_OSC_PIN 进行选择 当 CFG_OSC_PIN 为 0 时 : 晶振输入管脚为 PB8, 输出管脚为 PB9 CFG_OSC_PIN 为 1 时 : 晶振输入管脚为 PB10, 输出管脚为 PB11 只要外部振荡器模块使能后(XTAL_EN=1 或 CFG_OSC=0), 对应的 IO 即被用作模拟端口, 数字输入输出禁止 外部时钟源支持两种模式, 即高速模式 HS(1~20MHZ) 和低速模式 LP(32KHZ) 当 CFG_OSC_RES=1111b 时 : 外部振荡器工作在低速模式, 建议使用 KHZ 晶振 CFG_OSC_RES=0010b 时 : 外部振荡器工作在高速模式, 建议使用 1~20MHZ 晶振 同时根据选择的不同晶振频率需配置 CFG_OSCMD, 详情可参考测试经验值 V0.9 30/280

31 当使用外部振荡器时, 需外接匹配电容 XTAL 振荡器电路示意图如下 : C1 OSCxI XCLK_IN C2 RS OSCxO Rf XTAL_EN 图 2-8 XTAL 振荡器电路结构示意图 注 1: 电阻 RS 为可选配置 注 2:C1 和 C2 为晶振匹配电容, 根据所使用的晶振, 电容参考取值范围为 15~33pF, 建议兆级振荡器匹配 15pf 电容 当 CFG_OSC=0 时 : 芯片上电工作时钟为 XTAL, 此时 XTAL_EN 无效 关闭外部振荡器需配置 MOSC_EN=0, 在进入深睡眠模式时系统自动关闭 当 CFG_OSC=1 时 : 芯片上电工作时钟为内部高速时钟 HRC, 需软件配置方可使用外部时钟 详情可参考外部时钟操作例程 该配置下, 当 MOSC_EN=0, 芯片进入深睡眠模式时,XTAL 会自动关闭, 被唤醒后,XTAL 会自动打开 ; 当 MOSC_EN=1, 芯片进入深睡眠模式时,XTAL 不会关闭 当系统时钟为外部时钟时, 不建议关闭 XTAL_EN 如果关闭 XTAL_EN, 系统时钟会自动切换至 LRC 外部时钟低功耗模式仅当外部时钟处于低速状态时有效 外部时钟高速状态时, 外部时钟一直处于高功耗模式, 无法对 XTAL_LP 清 内部高速时钟 HRC 芯片可选择 4MHz 或 16MHz 作为内部高速时钟 全温度范围内 HRC 频率精度在 ±3% 当 INTOSC_SEL=0 时 :HRC 频率为 16MHz 当 INTOSC_SEL=1 时 :HRC 频率为 4MHz 当 CFG_OSC=0 时 : 芯片内部高速时钟不工作 当 CFG_OSC=1 时 : 芯片上电工作时钟为内部高速时钟 HRC, 可通过 HRC_EN 关闭 当系统时钟为内部高速时钟时, 不建议关闭 HRC_EN 如果关闭 HRC_EN, 系统时钟会自动切换至 LRC 若 HRC_EN=1: 当 MOSC_EN=0, 芯片进入深睡眠模式时,HRC 时钟会自动关断, 被唤醒后,HRC 时钟会自动使能 ; 当 MOSC_EN=1, 芯片进入深睡眠模式时,HRC 时钟不会关闭 内部低速时钟 LRC 芯片支持内部低速时钟 LRC( 频率为 32KHz), 且无法关闭 全温度范围内,LRC 频率精度在 ±40% 内部低速时钟可供系统 WDT RTC 等模块使用 对于时钟频率精度要求高的模块不建议使用 LRC 作为时钟源 V0.9 31/280

32 锁相环 PLL PLL 时钟输入可选择 XTAL(32.768KHZ 4MHZ 8MHZ 16MHZ),HRC(4MHZ 16MHZ), LRC (32KHz) 当 PLL_REF_SEL=0 或 1 时 :HRC 必须配置为 4MHZ,PLL 输入时钟源即为 HRC4M 当 PLL_48M_SEL=0 时 :PLL 倍频系数为 8 倍,PLL 输出时钟为 32MHZ 当 PLL_48M_SEL=1 时 :PLL 倍频系数为 12 倍,PLL 输出时钟为 48MHZ 当 PLL_REF_SEL=2 时 :HRC 必须配置为 16MHZ,PLL 输入时钟源为 HRC16M 的 4 分频 当 PLL_48M_SEL=0 时 :PLL 倍频系数为 8 倍,PLL 输出时钟为 32MHZ 当 PLL_48M_SEL=1 时 :PLL 倍频系数为 12 倍,PLL 输出时钟为 48MHZ 当 PLL_REF_SEL=3 时 :PLL 输入时钟源为 LRC32KHZ 当 PLL_48M_SEL=0 时 :PLL 倍频系数为 1024 倍,PLL 输出时钟为 MHZ 当 PLL_48M_SEL=1 时 :PLL 倍频系数为 1536 倍,PLL 输出时钟为 MHZ 当 PLL_REF_SEL=4 时 :XTAL 必须配置为 4MHZ, PLL 输入时钟源为 XTAL 时钟 当 PLL_48M_SEL=0 时 :PLL 倍频系数为 8 倍,PLL 输出时钟为 32MHZ 当 PLL_48M_SEL=1 时 :PLL 倍频系数为 12 倍,PLL 输出时钟为 48MHZ 当 PLL_REF_SEL=5 时 :XTAL 必须配置为 8MHZ, PLL 输入时钟源为 XTAL8M 的 2 分频 当 PLL_48M_SEL=0 时 :PLL 倍频系数为 8 倍,PLL 输出时钟为 32MHZ 当 PLL_48M_SEL=1 时 :PLL 倍频系数为 12 倍,PLL 输出时钟为 48MHZ 当 PLL_REF_SEL=6 时 :XTAL 必须配置为 16MHZ, PLL 输入时钟源为 XTAL16M 的 4 分频 当 PLL_48M_SEL=0 时 :PLL 倍频系数为 8 倍,PLL 输出时钟为 32MHZ 当 PLL_48M_SEL=1 时 :PLL 倍频系数为 12 倍,PLL 输出时钟为 48MHZ 当 PLL_REF_SEL=7 时 :PLL 输入时钟源为 XTAL 32KHZ 当 PLL_48M_SEL=0 时 :PLL 倍频系数为 1024 倍,PLL 输出时钟为 MHZ 当 PLL_48M_SEL=1 时 :PLL 倍频系数为 1536 倍,PLL 输出时钟为 MHZ PLL 模块使用时, 建议关闭 PLL_BYLOCK, 当 PLL 失锁后, 系统会自动切换至使用 PLL 前的时钟源 ( 由 CLK_SEL 决定 ) 并产生中断 如果使能 PLL_BYLOCK, 当 PLL 失锁后, 系统仍使用 PLL 时钟, 可能会导致系统错误 在使用 PLL 时钟源输入时, 必须等时钟输入源稳定后才能使用 详情可参考 PLL 操作例程 当 PLL_EN=1 时, 若 MOSC_EN=0, 芯片进入深睡眠模式时,PLL 会自动关闭 被唤醒后,PLL 会自动打开 ; 当 MOSC_EN=1 芯片进入深睡眠模式时,PLL 不会关闭 时钟输出 CLKO 芯片支持 2 路 IO 端口输出时钟信号 其中 CLKO0 端口支持高频时钟输出,CLKO1 端口支持高频时钟 128 分频输出 使用时需配置相应端口的 GPIO_PxFUNCy 寄存器, 使能管脚的时钟输出功能 当使用高频时钟输出时, 需使能管脚大电流驱动模式 外部时钟停振检测 CCM 外部时钟停振检测模块使能必须同时满足以下条件 : 1. CFG_WORD2 配置字的外部停振检测使能位 CFG_CCMEN=1 V0.9 32/280

33 2. SCU_CCM 寄存器的外部停振检测软件使能位 EN=1 3. 时钟源选择为外部时钟 即 SCU_SCLKEN0 寄存器的 CLK_SEL=2 或 CFG_WORD0 配置字的 CFG_OSC=0 注意 : 1. 当 PLL 时钟源输入使用的是外部时钟, 但是以上 3 个条件没有任何一个满足时, 外部时钟停振检测模块不工作 2. 当外部时钟停振检测开始工作后, 当 MOSC_EN=0 时, 芯片进入深睡眠模式会关闭外部时钟源导致外部时钟停振, 此类情况不会触发时钟停振标志 外部时钟停振检测开始工作后, 当检测到外部时钟停振, 系统时钟会自动切换至 LRC 时钟, 同时会置起中断标志位 当芯片进入停振中断后, 需立即操作 CLK_SEL 把系统时钟切换至 LRC 或 HRC, 同时关闭外部时钟使能位 XTAL_EN, 如果使用 PLL, 则还需要关闭 PLL 模块 PLL_MUX 和 PLL_EN 当排查系统问题后, 必须再次通过软件配置使能外部时钟 详情可参考外部时钟停振检测例程 时钟滤波 CLKFLT 芯片支持系统时钟分频前滤波 滤波时间通过配置字 CFG_CLKFLT 来设定 系统时钟滤波使能操作时, 必须先使能 SCU_WAKEUPTIME 寄存器的系统时钟滤波器使能位 CLKFLT_EN=1, 然后再不旁路 CLKFLT, 即 SCU_SCLKEN0 寄存器的 CLKFLT_BY 8 h55 当需要关闭滤波时, 必须先旁路 CLKFKT, 即 CLKFLT_BY=8 h55, 然后再通过 CLKFLT_EN=0 来关闭时钟滤波器 详情可见时钟滤波例程 若 CLKFLT_EN=1: 当 MOSC_EN=0 时芯片进入深睡眠模式时,CLKFLT 会自动关断, 而当深睡眠唤醒后,CLKFLT 会自动打开 ; 当 MOSC_EN=1, 芯片进入深睡眠模式时,CLKFLT 不会关断 为保证系统可靠性, 除深睡眠模式外, 不建议关闭 CLKFLT 睡眠模式时钟状态在普通睡眠模式下, 芯片内核时钟停止, 外设时钟正常运行, 芯片时钟源正常工作 在普通睡眠模式下, 内核处理器的状态和寄存器, 外设寄存器和内部 SRAM 的值都会保持, 端口的逻辑电平也会保持睡眠前的状态 浅睡眠模式在浅睡眠模式下, 芯片内核时钟停止工作,PCLK 正常运行, 芯片时钟源正常工作 深睡眠模式在深睡眠模式下, 芯片内核时钟停止工作,PCLK 停止运行 1. MOSC_EN=0: 除 LRC 时钟源正常运行外,XTAL HRC PLL 和 CLKFLT 模块全部关断 外设模块除选择使用 LRC 时钟能正常工作, 其它全部停止工作 ( 异步唤醒功能正常工作 ) 当芯片唤醒后,XTAL HRC PLL CLKFLT 自动打开 2. MOSC_EN=1: 时钟源正常运行,PLL 模块 CLKFLT 正常工作 外设模块除选择使 V0.9 33/280

34 用 LRC XTAL 时钟能正常工作, 其它全部停止工作 ( 异步唤醒功能正常工作 ) 特殊功能寄存器 系统时钟控制寄存器 0(SCU_SCLKEN0) 偏移地址 :40 H 复位值 : _ _ _ B CLKOUT1_SEL<1:0> CLKOUT0_SEL<1:0> CLKFLT_BY<7:0> SYSCLK_DIV PLL_MUX XTAL_LP CLK_SEL<1:0> - bit CLKO1 选择位 0时钟输出 CLKOUT1_SEL<1:0> bit27-26 R/W 01: 系统时钟输出 (128 分频 ) 10:LRC 时钟输出 11:HRC 时钟输出 (128 分频 ) CLKO0 选择位 0时钟输出 CLKOUT0_SEL<1:0> bit R/W 01: 系统时钟输出 10:LRC 时钟输出 11:HRC 时钟输出 CLKFLT 旁路控制位 8 h55:clkflt 旁路 CLKFLT_BY<7:0> bit R/W 其它 : 不旁路 CLKFLT CLKFLT 为系统时钟滤波器, 为保证系统稳定 性, 不建议旁路 CLKFLT - bit 系统时钟后分频选择位 000:1:1 001:1:2 010:1:4 SYSCLK_DIV<2:0> bit R/W 011:1:8 100:1:16 101:1:32 110:1:64 111:1:128 - bit 时钟倍频选择位 PLL_MUX bit8 R/W 0: 使用原始时钟 ( 由 CLK_SEL 选择的时钟 ) 1: 使用倍频时钟 - bit V0.9 34/280

35 XTAL_LP bit2 - CLK_SEL<1:0> bit1-0 R/W 外部时钟低功耗模式使能位 0: 使能 ( 仅低速模式有效 ) 1: 禁止时钟源选择位 ( 仅在配置字 CFG_OSC=1 时有效 ) 00:HRC 时钟 4/16MHz 01:LRC 时钟 32KHZ 10:XTAL 时钟 (HS,LP 模式请参考配置位 CFG_OSCMD 和 CFG_OSC_RES) 11:HRC 时钟 4/16MHz 注 1: 对 SCU_SCLKEN0 寄存器进行写操作前, 需要设置 SCU_PROT 寄存器, 关闭写保护 系统时钟控制寄存器 1(SCU_SCLKEN1) 偏移地址 :44 H 复位值 : _ _ _ B PLL_RDY HRC_RDY XTAL_RDY PLL_BYLOCK PLL_EN PLL_48M_SEL PLL_REF_SEL<2:0> HRC_EN XTAL_EN - bit PLL_RDY bit18 R PLL 时钟振荡模式稳定标志位 0: 不稳定 1: 稳定 HRC_RDY bit17 R 内部时钟振荡模式稳定标志位 0: 不稳定 1: 稳定 XTAL_RDY bit16 R 外部时钟振荡模式稳定标志位 0: 不稳定 1: 稳定 - bit PLL_BYLOCK bit13 R/W PLL LOCK 信号旁路控制位 0: 关闭 ( 不旁路 ) ( 旁路 ) PLL_EN bit12 R/W PLL 倍频使能控制位 0: 关闭 ( 使能前需确认 PLL_REF_SEL 所选择的时钟是否稳定 ) PLL_48M_SEL bit11 R/W PLL 输出时钟选择位 0: 输出 32MHz 时钟 V0.9 35/280

36 1: 输出 48MHz 时钟 PLL_REF_SEL<2:0> bit10-8 R/W PLL 输入时钟选择位 000: 内部 4MHz 时钟 010: 内部 16MHz 时钟 011: 内部 LRC 时钟 ( 约 32KHz) 100: 外部 4MHz 时钟 101: 外部 8MHz 时钟 110: 外部 16MHz 时钟 111: 外部 32KHz 时钟 - bit HRC_EN bit1 R/W 内部时钟振荡电路控制位 XTAL_EN bit0 R/W 外部时钟振荡电路控制位 ( 仅在配置字 CFG_OSC=1 时有效 ) 注 1: 对 SCU_SCLKEN1 寄存器进行写操作前, 需要设置 SCU_PROT 寄存器, 关闭写保护 外设时钟控制寄存器 (SCU_PCLKEN) 偏移地址 :48 H 复位值 : _ _ _ B I2C0_ EN SPI1_EN SPI0_EN EUART0 _EN UART1_ EN UART0_ EN T32N 0_EN T16N3_ EN T16N2 _EN T16N1_E N T16N0_E N WDT_E N N RTC_E N ADC_E N IAP_E N GPIO_EN SCU_EN - bit I2C0_EN bit28 R/W I2C0 时钟使能位 - bit SPI1_EN bit 25 R/W SPI1 时钟使能位 SPI0_EN bit 24 R/W SPI0 时钟使能位 V0.9 36/280

37 - bit EUART0_EN bit 20 R/W EUART0 时钟使能位 - bit UART1_EN bit 17 R/W UART1 时钟使能位 UART0_EN bit 16 R/W UART0 时钟使能位 - bit T32N0_EN bit 12 R/W T32N0 时钟使能位 T16N3_EN bit 11 R/W T16N3 时钟使能位 T16N2_EN bit 10 R/W T16N2 时钟使能位 T16N1_EN bit 9 R/W T16N1 时钟使能位 T16N0_EN bit 8 R/W T16N0 时钟使能位 WDT_EN bit 7 R/W WDT 时钟使能位 bit 6 R/W RTC_EN bit 5 R/W RTC 时钟使能位 ADC_EN bit 4 R/W ADC 时钟使能位 - bit IAP_EN bit 2 R/W FLASH_IAP 时钟使能位 GPIO_EN bit 1 R/W GPIO 时钟使能位 V0.9 37/280

38 SCU_EN bit 0 R/W SCU 时钟使能位 注 1: 对 SCU_PCLKEN 寄存器进行写操作前, 需要设置 SCU_PROT 寄存器, 关闭写保护 注 2: 使能某外设时钟之前需要先使能 SCU 时钟, 即 SCU_PCLKEN 寄存器 SCU_EN 位设置为 1 以 WDT 时钟配置为例 : LDR R0, =SCU_PCLKEN LDR R0, =0X STR R1, [R0] LDR R1, =0X STR R1, [R0] ; 首先使能 SCU 时钟 ; 使能 SCU 和 WDT 时钟 系统唤醒时间控制寄存器 (SCU_WAKEUPTIME) 偏移地址 :4C H 复位值 : _ _ _ B LDOLP_VOSEL<2:0> - FLASHPW_PD CLKFLT_EN MOSC_EN WAKEUPTIME<11:0> - bit LDO deepsleep 模式下电压输出选择位 000:1.5V LDOLP_VOSEL<2:0> bit18-16 W 100:1.4V 010:1.3V 001:1.2V 其他 : 1.4V - bit FLASH 电源控制位 FLASHPW_PD bit14 W 0: 开启 1: 关断 (sleep 下可关断 FLASH 电源 ) 系统时钟 20ns 滤波器使能位 CLKFLT_EN bit13 R/W 深度睡眠模式时钟控制位 0: 深度睡眠模式下, 自动关闭 HRC PLL XTAL MOSC_EN bit12 R/W 和时钟滤波器 1: 深度睡眠模式下, 使能 HRC PLL XTAL 和 时钟滤波器 WAKEUPTIME<11:0> bit11-0 R/W 唤醒时间控制位 V0.9 38/280

39 Tmclk* WAKEUPTIME 注 1: 对 SCU_WAKEUPTIME 寄存器进行写操作前, 需要设置 SCU_PROT 寄存器, 关闭写保护 注 2: 建议 deepsleep 模式下, 且芯片配置字 LDO_HPW 位为 0 时 ( 关闭高功耗模式 ), 可通过配置 LDOLP_VOSEL 寄存器适当选取 LDO 的输出电压, 降低系统功耗 注 3: 深度睡眠模式下, 当 MOSC_EN 为 1 时,HRC PLL XTAL 和时钟滤波器还必须各自的控制位 HRC_EN PLL_EN XTAL_EN 和 CLKFLT_EN 为 1 时, 才实际被使能 注 4: 若需在 sleep 模式下关闭 FLASH 电源, 在进入 sleep 模式前, 先对 FLASHPW_PD 位软件写 1, 进入 sleep 模式后,FLASH 电源将被自动关闭, 芯片退出 sleep 模式后再自动开启 FLASH 电源 外部时钟检测控制寄存器 (SCU_CCM) 偏移地址 :54 H 复位值 : _ _ _ B FLAG IF IFS<2:0> IE EN - bit CCM 停振检测标志位 R FLAG bit16 0: 晶振未停振 1: 晶振停振 - bit CCM 中断标志位 0: 未发生 CCM 触发事件 IF bit8 R/W 1: 发生 CCM 触发事件边沿模式产生中断标志时, 可以写 1 清除标志 ; 电平模式产生中断标志时, 该标志只读, 触发电平消失 后, 中断标志自动清零 CCM 中断标志产生模式选择位 000:CCM_FLAG 上升沿产生中断 IFS<2:0> bit7-5 R/W 001:CCM_FLAG 下降沿产生中断 010:CCM_FLAG 高电平产生中断 011:CCM_FLAG 低电平产生中断 1xx:CCM_FLAG 变化 ( 上升或下降沿 ) 产生中断 外部时钟停振中断使能位 IE bit 4 R/W 0: 中断禁止 1: 中断使能 - bit 外部时钟检测使能位 ( 仅在配置位 CFG_CCMEN=1 时 EN bit0 R/W 有效 ) V0.9 39/280

40 PLL 锁定中断控制寄存器 (SCU_PLLLKCON) 偏移地址 :30 H 复位值 : _ _ _ B LK_FLAG IF LK_IFS<2:0> IE - bit PLL 锁定检测标志位 R LK_FLAG bit16 0:PLL 未锁定 1:PLL 锁定 - bit IF bit8 R/W PLL 中断标志位 0: 未发生 PLL 锁定标志触发事件 1: 发生 PLL 锁定标志触发事件边沿模式产生中断标志时, 可以写 1 清除标志 ; 电平模式产生中断标志时, 该标志只读, 触发电平消失后, 中断标志自动清零 - bit7 - - LK_IFS<2:0> bit6-4 R/W PLL 锁定标志产生模式选择位 000:PLL 锁定标志上升沿产生中断 001:PLL 锁定标志下降沿产生中断 010:PLL 锁定标志高电平产生中断 011:PLL 锁定标志低电平产生中断 1xx:PLL 锁定标志变化 ( 上升或下降沿 ) 产生中断 - bit IE bit0 R/W PLL 锁定中断使能位 系统时钟应用说明以下操作都已关闭系统保护寄存器 SCU_PROT, 且使能了 SCU 时钟使能位 CLKEN_SCU 外部时钟 XTAL 使用外部时钟 : SWITCH_XTAL PROC PUSH {LR} LDR R0, =SCU_SCLKEN1 V0.9 40/280

41 LDR R1, [R0] LDR R2, =0X01 ORRS R1, R1, R2 STR R1, [R0] ; 使能 XTAL_EN WAIT_XTAL_FLAG LDR R0, =SCU_SCLKEN1 LDR R1, [R0] LDR R2, =0X TST R1, R2 BEQ WAIT_XTAL_FLAG ; 等待 XTAL_RDY ; 如果是低速时钟并想进入低功耗模式 LDR R0,=SCU_SCLKEN0 LDR R1,=0X02 STRB R1, [R0] ; 使能低功耗模式 POP ALIGN LTORG ENDP {PC} 内部高速时钟 HRC 使用内部高速时钟 : SWITCH_HRC PROC PUSH {LR} LDR R0, =SCU_SCLKEN1 LDR R1, [R0] LDR R2, =0X02 ORRS R1, R1, R2 STR R1, [R0] ; 使能 HRC_EN WAIT_HRC_FLAG LDR R0, =SCU_SCLKEN1 LDR R1, [R0] LDR R2, =0X TST R1, R2 BEQ WAIT_HRC_FLAG ; 等待 HRC_RDY LDR R0,=SCU_SCLKEN0 LDRB R1,[R0] LDR R2, =0XFC ANDS R1, R1, R2 STRB R1, [R0] ; 系统时钟选用 HRC POP {PC} ALIGN LTORG ENDP V0.9 41/280

42 内部低速时钟 LRC 使用内部低速时钟 : SWITCH_LRC PROC PUSH {LR} LDR R0,=SCU_SCLKEN0 LDRB R1,[R0] LDR R2, =0XFC ANDS R1, R1, R2 LDR R2,=0X01 ORRS R1,R1,R2 STRB R1, [R0] ; 系统时钟选用 LRC POP {PC} ALIGN LTORG ENDP 锁相环 PLL 使用 PLL 前必须先使能 PLL 时钟输入源时钟使能位, 且等待输入时钟源稳定 以 PLL 输入时钟选择为外部 16MHZ 时钟, 输出时钟源为 48MHZ 为例 : SWITCH_XTAL16M_PLL48M PROC PUSH {LR} LDR R0, =SCU_SCLKEN1 LDR R1, [R0] LDR R2, =0X01 ORRS R1, R1, R2 STR R1, [R0] ; 使能 XTAL_EN, 注意这里外插晶振必须是 16M WAIT_XTAL_FLAG LDR R0, =SCU_SCLKEN1 LDR R1, [R0] LDR R2, =0X TST R1, R2 BEQ WAIT_XTAL_FLAG ; 等待 XTAL_RDY LDR R0,=SCU_SCLKEN1 LDR R1,=0X1E ; 配置 PLL 输入时钟选择, STRB R1,[R0,#0X01] ; 禁止 PLL LOCK 旁路, 使能 PLL 模块 WAIT_PLL_FLAG LDR R0, =SCU_SCLKEN1 LDR R1, [R0] LDR R2, =0X TST R1, R2 BEQ WAIT_PLL_FLAG ; 等待 PLL_RDY LDR R0, =SCU_SCLKEN0 LDR R1, [R0] LDR R2, =0X0100 V0.9 42/280

43 ORRS R1, R1, R2 STR R1, [R0] ; 系统时钟选用 PLL 倍频时钟 POP {PC} ALIGN LTORG ENDP 关闭 PLL: POWER_OFF_PLL PROC PUSH {LR} LDR R0, =SCU_SCLKEN0 LDRB R1, [R0, #0X01] LDR R2, =0XFE ANDS R1, R1, R2 STRB R1, [R0, #0X01] ; 系统时钟选用原时钟 LDR R0, =SCU_SCLKEN1 LDRB R1, [R0, #0X01] LDR R2, =0X0F ANDS R1, R1, R2 STRB R1, [R0, #0X01] ; 关断 PLL 模块 POP {PC} ALIGN LTORG ENDP 时钟滤波 CLKFLT 使用 CLKFLT: POWER_ON_CFT PROC PUSH {LR} LDR R0, =SCU_WAKEUPTIME LDRB R1, [R0, #0X01] LDR R2, =0X02 ORRS R1, R1, R2 STRB R1, [R0, #0X01] ; 使能 CLKFLT_EN LDR R0, =SCU_SCLKEN0 LDRB R1, =0X55 STRB R1, [R0, #0X02] ; 系统时钟选用滤波后时钟 POP {PC} ALIGN LTORG ENDP 关闭 CLKFLT: POWER_OFF_CFT PROC V0.9 43/280

44 PUSH {LR} LDR R0, =SCU_SCLKEN0 LDRB R1, =0X00 STRB R1, [R0, #0X02] ; 系统时钟选用滤波前时钟 LDR R0, =SCU_WAKEUPTIME LDRB R1, [R0, #0X01] LDR R2, =0XFD ANDS R1, R1, R2 STRB R1, [R0, #0X01] ; 关闭 CLKFLT_EN POP {PC} ALIGN LTORG ENDP 2. 7 中断和异常处理 中断和异常 Cortex-M0 内核支持嵌套向量中断控制器 NVIC(Nested Vectored Interrupt Controller), 具体功能如下 : 支持中断嵌套支持中断向量支持中断优先级动态调整支持中断可屏蔽对 Cortex-M0 内核来说, 打断程序正常执行流程的事件均称之为异常, 中断也是其中一种异常 为便于理解, 本文档将内核的中断等事件称为异常, 将外设模块的中断称为中断 异常 / 中断优先级操作说明 : 操作类型抢占末尾连锁返回迟来 描述产生条件 :ISR 或线程正在执行时, 出现新的优先级更高的异常 / 中断 操作结果 : 如果当前处于线程状态, 则产生异常 / 中断挂起中断 ; 如果当前处于 ISR 状态, 则产生中断嵌套, 处理器自动保存工作状态并压栈 产生条件 : 当前 ISR 执行结束, 正在返回时, 出现新的优先级更高的异常 / 中断 操作结果 : 跳过出栈操作, 处理新的异常 / 中断 产生条件 : 当前 ISR 执行结束, 正在返回时, 没有出现新的优先级更高的异常 / 中断 操作结果 : 执行出栈操作, 并将处理器状态恢复为进入 ISR 之前的状态 产生条件 : 当前 ISR 执行开始, 正在保存时, 出现新的优先级更高的异常 / 中断 操作结果 : 处理器转去处理优先级更高的异常 / 中断 表 2-2 异常 / 中断优先级操作类型说明说明表 V0.9 44/280

45 注 1:ISR Interrupt Service Routine, 中断服务程序 异常 / 中断优先级 : 编号 类型 优先级 简介 0 N/A N/A 没有异常在运行 1 复位 -3( 最高 ) 复位 2 NMI -2 不可屏蔽中断 ( 来自外设 NMI 中断输入 ) 3 Hard Fault -1 所有被禁用的 Fault, 都将升级为 Hard Fault 4~10 NA - 11 SVC 可编程控制 系统服务调用 12~13 NA - 14 PendSV 可编程控制 为系统设备而设的 可悬挂请求 15 SysTick 可编程控制 系统定时计数器 16 IRQ0 可编程控制 外设中断 0 17 IRQ1 可编程控制 外设中断 1 47 IRQ31 可编程控制 外设中断 31 表 2-3 异常 / 中断优先级列表 Cortex-M0 支持如下异常 / 中断 : NMI 中断 Hard Fault 异常 SVC 异常 PendSV 异常 SysTick 异常 和 32 个外设中断 请求 IRQ0~IRQ31 其中 Hard Fault 异常 SVC 异常 PendSV 异常 SysTick 异常为 Cortex-M0 内核异常源, 只受 Cortex-M0 内核控制, 而 NMI 中断与 32 个 IRQ 可由芯片配置控制 虽然 Cortex-M0 对 NMI 不支持中断使能位, 但为了防止芯片上电初始化完成前, 误产生 NMI 中断源, 而误进中断, 芯片提供了 NMI 使能位 NMIEN, 可在 NMI 中断源配置完成后再设置 NMIEN=1 对于 32 个 IRQ,Cortex-M0 内核提供 32 个 IRQ 使能位, 可对每个中断请求独立控制 配置 NVIC_ISER 和 NVIC_ICER 中断控制寄存器可使能或禁止 IRQ 配置 NVIC_PR0~NVIC_PR7 优先级控制寄存器, 可设置 IRQ0~IRQ31 的中断优先级 如果 同时产生多个 IRQ 请求, 则最先响应优先级最高的 IRQ; 如果同时产生多个相同最高优先级 的 IRQ 请求, 则按照中断向量分配表, 最先响应向量表编号最低的 IRQ, 即如果同时产生中 断优先级相同的 IRQ0 与 IRQ1, 则先响应 IRQ 中断和异常向量的分配 编号 类型 功能 说明 0~15 异常 Cortex-M0 内核异常, 包括 NMI 不可屏蔽中断 16 IRQ0 PINT0 中断 外部端口中断 0 17 IRQ1 PINT1 中断 外部端口中断 1 18 IRQ2 PINT2 中断 外部端口中断 2 19 IRQ3 PINT3 中断 外部端口中断 3 20 IRQ4 PINT4 中断 外部端口中断 4 V0.9 45/280

46 21 IRQ5 PINT5 中断 外部端口中断 5 22 IRQ6 PINT6 中断 外部端口中断 6 23 IRQ7 PINT7 中断 外部端口中断 7 24 IRQ8 T16N0 中断 16 位定时器 / 计数器 0 中断 25 IRQ9 T16N1 中断 16 位定时器 / 计数器 1 中断 26 IRQ10 T16N2 中断 16 位定时器 / 计数器 2 中断 27 IRQ11 T16N3 中断 16 位定时器 / 计数器 3 中断 28 IRQ12 T32N0 中断 32 位定时器 / 计数器 0 中断 29 IRQ13 Reserved 预留 30 IRQ14 Reserved 预留 31 IRQ15 Reserved 预留 32 IRQ16 WDT 中断 看门狗中断 33 IRQ17 RTC 中断 实时时钟中断 34 IRQ18 KINT 中断 外部按键输入中断 35 IRQ19 ADC 中断 模数转换中断 36 IRQ20 Reserved 预留 37 IRQ21 LVD 中断 低电压检测中断 38 IRQ22 PLLLK 中断 PLL 失锁中断 39 IRQ23 UART0 中断 UART0 中断 40 IRQ24 UART1 中断 UART1 中断 41 IRQ25 EUART0 中断 EUART0 中断 42 IRQ26 Reserved 预留 43 IRQ27 SPI0 中断 SPI0 中断 44 IRQ28 SPI1 中断 SPI1 中断 45 IRQ29 I2C0 中断 I2C0 中断 46 IRQ30 Reserved 预留 47 IRQ31 CCM 中断 停振检测中断 表 2-4 IRQ 分配列表 中断向量表的重映射 Cortex-M0 内核本身并不支持中断向量表的重映射, 在 HR8P506 芯片中有两个特殊功能寄 存器 中断向量表重映射使能寄存器 和 中断向量表偏移寄存器, 可以支持中断向量表 的重映射 具体的使用方式可参考 Flash 自编程 (IAP) 相关章节的描述 特殊功能寄存器 不可屏蔽中断控制寄存器 (SCU_NMICON) 偏移地址 :04 H 复位值 : _ _ _ B V0.9 46/280

47 NMICS<4:0> NMIEN - bit NMICS<4:0> bit5-1 R/W NMI 不可屏蔽中断选择位 00000:IRQ :IRQ :IRQ31 NMIEN bit0 R/W NMI 不可屏蔽中断使能位 注 1: 对 SCU_NMICON 寄存器进行写操作前, 需要设置 SCU_PROT 寄存器, 关闭写保护 中断向量表重映射使能寄存器 (SCU_TBLREMAPEN) 偏移地址 :60 H 复位值 : _ _ _ B EN bit31-1 EN bit0 R/W 中断向量表重映射使能 0: 中断向量表位于 Flash Memory 的 0 地址开始的一段空间 ( 默认状态 ); 目前共支持 48 个向量, 因此, 这段空间的大小为 192 字节 ; 1: 中断向量表位于 中断向量表偏移寄存器 指定的地址开始的 192 字节空间 中断向量表偏移寄存器 (SCU_TBLOFF) 偏移地址 :64 H 复位值 : _ _ _ B TBLOFF<31:16> TBLOFF<15:8> TBLOFF<7:0> TBLOFF<31:0> bit31-0 R/W 中断向量表偏移地址该寄存器存放重映射后的中断向量表所在的起始地址, 中 V0.9 47/280

48 断向量表重映射使能寄存器 为 1 时有效 高 24 位 TBLOFF<31:8> 可读可写, 但低 8 位 TBLOFF<7:0> 只读, 不可写, 且读取时返回全零 注 : 该地址为起始地址是有要求的 : 必须先求出系统中共有多少个向量, 再把这个数字向上增大到是 2 的整次幂, 而起始地址必须对齐到后者的边界上 如果一共有 32 个中断, 则共有 32+16( 系统异常 )=48 个向量, 向上增大到 2 的整次幂后值为 64, 因此地址地址必须能被 64 4=256 整除, 从而合法的起始地址可以是 :0x000, 0x100,0x200 等 硬件错误标志寄存器 (SCU_FAULTFLAG) 偏移地址 :0C H 复位值 : _ _ _ B FLAG2 FLAG1 FLAG0 - bit FLAG2 bit2 R/W 硬件错误 2 标志位 0: 未发生在异常区域进行写入操作 1: 发生在异常区域进行写入操作 ( 硬件自动置 1, 软件写 1 清除 ) FLAG1 bit1 R/W 硬件错误 1 标志位 0: 未发生在异常区域进行取指操作 1: 发生在异常区域进行取指操作 ( 硬件自动置 1, 软件写 1 清除 ) FLAG0 bit0 R/W 硬件错误 0 标志位 0: 未发生读指令代码为空 1: 发生读指令代码为空 ( 硬件自动置 1, 软件写 1 清除 ) 注 1: 读指令代码为空表示 Cortex-M0 内核读 Flash 内指令时读到的值为 FFFFFFFF H 注 2: 清除硬件错误标志位时, 需要设置 SCU_PROT 寄存器, 关闭写保护 IRQ0~31 置中断请求使能寄存器 (NVIC_ISER) 偏移地址 :00 H 复位值 : _ _ _ B SETENA<31:16> V0.9 48/280

49 SETENA<15:0> SETENA<31:0> bit31-0 R/W IRQx 使能位 0: 中断禁止 1: 中断使能软件写 1 使能中断请求, 写 0 无效 注 : 对 NVIC_ISER 寄存器中的各 IRQx 使能位, 写 0 无效, 写 1 才使能中断请求 ; 读操作时, 实际是读取 IRQx 中 断使能的状态, 读取的值为 1 表示中断使能, 为 0 表示中断禁止 IRQ0~31 清中断请求使能寄存器 (NVIC_ICER) 偏移地址 :80 H 复位值 : _ _ _ B CLRENA <31:16> CLRENA <15:0> CLRENA<31:0> bit31-0 R/W IRQx 禁止位 0: 中断禁止 1: 中断使能软件写 1 禁止中断请求, 写 0 无效 注 : 对 NVIC_ICER 寄存器中的各 IRQx 禁止位, 写 0 无效, 写 1 才禁止中断请求 ; 读操作时, 实际是读取 IRQx 中断使能的状态, 读取的值为 1 表示中断使能, 为 0 表示中断禁止 IRQ0~31 置中断挂起寄存器 (NVIC_ISPR) 偏移地址 :00 H 复位值 : _ _ _ B SETPEND <31:16> SETPEND <15:0> SETPEND<31:0> bit31-0 R/W 置 IRQx 挂起位 0: 中断未挂起 1: 中断挂起软件写 1 挂起中断, 写 0 无效 注 : 对 NVIC_ISPR 寄存器中的各 IRQx 挂起位, 写 0 无效, 写 1 才挂起中断 ; 读操作时, 实际是读取 IRQx 中断挂 V0.9 49/280

50 起的状态, 读取的值为 1 表示中断挂起, 为 0 表示中断未挂起 IRQ0~31 清中断挂起寄存器 (NVIC_ICPR) 偏移地址 :80 H 复位值 : _ _ _ B CLRPEND <31:16> CLRPEND <15:0> CLRPEND<31:0> bit31-0 R/W 清 IRQx 挂起位 0: 中断未挂起 1: 中断挂起软件写 1 清除中断挂起, 写 0 无效 注 : 对 NVIC_ICPR 寄存器中的各 IRQx 清挂起位, 写 0 无效, 写 1 才清除中断挂起 ; 读操作时, 实际是读取 IRQx 中断挂起的状态, 读取的值为 1 表示中断挂起, 为 0 表示中断未挂起 IRQ0~3 优先级控制寄存器 (NVIC_PR0) 偏移地址 :00 H 复位值 : _ _ _ B PRI_3<1:0> PRI_2<1:0> PRI_1<1:0> PRI_0<1:0> PRI_3<1:0> bit31-30 R/W IRQ3 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_2<1:0> bit23-22 R/W IRQ2 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_1<1:0> bit15-14 R/W IRQ1 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_0<1:0> bit7-6 R/W IRQ0 优先级设置位 00: 最高优先级 V0.9 50/280

51 - bit : 最低优先级 IRQ4~7 优先级控制寄存器 (NVIC_PR1) 偏移地址 :04 H 复位值 : _ _ _ B PRI_7<1:0> PRI_6<1:0> PRI_5<1:0> PRI_4<1:0> PRI_7<1:0> bit31-30 R/W IRQ7 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_6<1:0> bit23-22 R/W IRQ6 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_5<1:0> bit15-14 R/W IRQ5 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_4<1:0> bit7-6 R/W IRQ4 优先级设置位 00: 最高优先级 11: 最低优先级 - bit IRQ8~11 优先级控制寄存器 (NVIC_PR2) 偏移地址 :08 H 复位值 : _ _ _ B PRI_11<1:0> PRI_10<1:0> PRI_9<1:0> PRI_8<1:0> PRI_11<1:0> bit31-30 R/W IRQ11 优先级设置位 00: 最高优先级 11: 最低优先级 - bit V0.9 51/280

52 PRI_10<1:0> bit23-22 R/W IRQ10 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_9<1:0> bit15-14 R/W IRQ9 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_8<1:0> bit7-6 R/W IRQ8 优先级设置位 00: 最高优先级 11: 最低优先级 - bit IRQ12~15 优先级控制寄存器 (NVIC_PR3) 偏移地址 :0C H 复位值 : _ _ _ B PRI_15<1:0> PRI_14<1:0> PRI_13<1:0> PRI_12<1:0> PRI_15<1:0> bit31-30 R/W IRQ15 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_14<1:0> bit23-22 R/W IRQ14 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_13<1:0> bit15-14 R/W IRQ13 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_12<1:0> bit7-6 R/W IRQ12 优先级设置位 00: 最高优先级 11: 最低优先级 - bit IRQ16~19 优先级控制寄存器 (NVIC_PR4) 偏移地址 :10 H 复位值 : _ _ _ B V0.9 52/280

53 PRI_19<1:0> PRI_18<1:0> PRI_17<1:0> PRI_16<1:0> PRI_19<1:0> bit31-30 R/W IRQ19 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_18<1:0> bit23-22 R/W IRQ18 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_17<1:0> bit15-14 R/W IRQ17 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_16<1:0> bit7-6 R/W IRQ16 优先级设置位 00: 最高优先级 11: 最低优先级 - bit IRQ20~23 优先级控制寄存器 (NVIC_PR5) 偏移地址 :14 H 复位值 : _ _ _ B PRI_23<1:0> PRI_22<1:0> PRI_21<1:0> PRI_20<1:0> PRI_23<1:0> bit31-30 R/W IRQ23 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_22<1:0> bit23-22 R/W IRQ22 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_21<1:0> bit15-14 R/W IRQ21 优先级设置位 00: 最高优先级 11: 最低优先级 V0.9 53/280

54 - bit PRI_20<1:0> bit7-6 R/W IRQ20 优先级设置位 00: 最高优先级 11: 最低优先级 - bit IRQ24~27 优先级控制寄存器 (NVIC_PR6) 偏移地址 :18 H 复位值 : _ _ _ B PRI_27<1:0> PRI_26<1:0> PRI_25<1:0> PRI_24<1:0> PRI_27<1:0> bit31-30 R/W IRQ27 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_26<1:0> bit23-22 R/W IRQ26 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_25<1:0> bit15-14 R/W IRQ25 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_24<1:0> bit7-6 R/W IRQ24 优先级设置位 00: 最高优先级 11: 最低优先级 - bit IRQ28~31 优先级控制寄存器 (NVIC_PR7) 偏移地址 :1C H 复位值 : _ _ _ B PRI_31<1:0> PRI_30<1:0> PRI_29<1:0> PRI_28<1:0> PRI_31<1:0> bit31-30 R/W IRQ31 优先级设置位 00: 最高优先级 V0.9 54/280

55 11: 最低优先级 - bit PRI_30<1:0> bit23-22 R/W IRQ30 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_29<1:0> bit15-14 R/W IRQ29 优先级设置位 00: 最高优先级 11: 最低优先级 - bit PRI_28<1:0> bit7-6 R/W IRQ28 优先级设置位 00: 最高优先级 11: 最低优先级 - bit 系统控制块 (SCB) 概述 系统控制块提供芯片内核系统实现的状态信息, 并对内核系统工作进行控制 特殊功能寄存器 SCB_CPUID 寄存器 (SCB_CPUID) 偏移地址 :00 H 复位值 : _ _ _ B IMPLEMENTER<7:0> VARIANT<3:0> CONSTANT<3:0> PARTNO<11:0> REVISION<3:0> IMPLEMENTER<7:0> bit31-24 R VARIANT<3:0> bit23-20 R CONSTANT<3:0> bit19-16 R PARTNO<11:0> bit15-4 R REVISION<3:0> bit3-0 R 处理器实现者编号 0x41,ARM 主版本号 R=0x0, 作为 rnpn 版本编号格式中的主要编号处理器构架 0xC,ARMv6-M 处理器分类号 0xC20,Cortex-M0 次版本号 P=0x0, 作为 rnpn 版本编号格式中的次要编号 V0.9 55/280

56 中断控制和状态寄存器 (SCB_ICSR) 偏移地址 :04 H 复位值 : _ _ _ B NMIPENDSET PENDSTSET PENDSTCLR ISRPENDDING VECTPENDING<5:4> VECTPENDING<3:0> VECTACTIVE<5:0> 寄存器名称 中断控制和状态寄存器 (SCB_ICSR) 地址 E000ED04 H 复位值 _ _ _ B NMIPENDSET bit31 R/W NMI 中断挂起控制位 0: 不置 NMI 中断挂起 1: 置 NMI 中断挂起 - bit PENDSTSET bit26 R/W 置 SysTick 异常挂起位 0: 无效 1: 置 SysTick 异常挂起 PENDSTCLR bit25 W 清 SysTick 异常挂起位 0: 无效 1: 清除 SysTick 异常挂起 - bit ISRPENDDING bit22 R 中断挂起标志位 0: 无中断挂起 1: 有中断挂起 - bit VECTPENDING bit17-12 R 当前的挂起中, 优先级最高的异常 / 中断号 0x0: 无挂起异常 / 中断非 0: 当前被挂起的异常 / 中断中, 优先级最高的异常 / 中断号 - bit VECTACTIVE bit5-0 R 当前被处理的异常 / 中断号 0x0: 线程 (Thread) 模式非 0: 当前被处理的异常 / 中断号 应用中断和复位控制寄存器 (SCB_AIRCR) 偏移地址 :0C H 复位值 : _ _ _ B VECTKEY<15:0> V0.9 56/280

57 ENDIANNESS SYSRESET REQ VECTCLR ACTIVE 保 留 VECTKEY<15:0> bit31-16 W 向量关键码位只能写 0x05FA, 其它无效 ENDIANNESS bit15 R 存储器数据格式选择位 0: 小端格式 1: 大端格式 bit14-3 SYSRESETREQ bit2 W 系统复位请求位 0: 无效 1: 请求系统复位, 复位后自动清零 VECTCLRACTIVE bit1 W 异常 / 中断状态清除位该位只能写 0; 写 1 会产生 HardFault 异常 bit0 注 1: 寄存器 SCB_AIRCR 只能进行字写入, 且高半字只能写入 0x05FA, 否则对该寄存器的写入操作无效 系统控制寄存器 (SCB_SCR) 偏移地址 :10 H 复位值 : _ _ _ B SEVONP SLEEP SLEEP END DEEP ONEXIT bit31-5 SEVONPEND bit4 R/W 中断被挂起时, 是否作为唤醒事件的选择位 0: 中断被挂起时, 不作为唤醒事件 1: 中断被挂起时, 作为唤醒事件 bit3 SLEEPDEEP bit2 R/W 休眠模式选择位 0: 睡眠模式 1: 深度睡眠模式 SLEEPONEXIT bit1 R/W 从 ISR 中断处理程序返回到线程模式时, 是否进入休眠状态的选择位 0: 不进入休眠状态 1: 进入休眠状态 bit0 V0.9 57/280

58 配置和控制寄存器 (SCB_CCR) 偏移地址 :14 H 复位值 : _ _ _ B STKALIGN UNALIGN_TRP bit31-10 STKALIGN bit9 R 非堆栈对齐标志位读取始终为 1, 指示异常入口 8 字节堆栈对齐 bit8-4 UNALIGN_TRP bit3 R 字或半字访问操作的非对齐故障标志位读取始终为 1, 指示非对齐访问产生硬故障 bit2-0 系统处理程序优先级寄存器 2(SCB_SHPR2) 偏移地址 :1C H 复位值 : _ _ _ B PRI_11<1:0> PRI_11<1:0> bit31-30 R/W SVCall( 异常编号 11) 的优先级设置位 bit29-0 系统处理程序优先级寄存器 3(SCB_SHPR3) 偏移地址 :20 H 复位值 : _ _ _ B PRI_15<1:0> PRI_14<1:0> PRI_15<1:0> bit31-30 R/W SysTick( 异常编号 15) 的优先级设置位 bit29-24 PRI_14<1:0> bit23-22 R/W PendSV( 异常编号 14) 的优先级设置位 bit21-0 V0.9 58/280

59 2. 9 系统定时器 (SYSTICK) 概述 SysTick 是一个系统递减计数器, 配置 SYST_RVR 寄存器, 可设定计数初值 当 SysTick 计数为 0 时,COUNTFLAG 状态位置 1, 并重载 SYST_RVR 中的计数初值 在处理器调试停机时,SysTick 停止计数 在计数过程中, 如果将 SYST_RVR 寄存器设置为 0, 则计数器递减计数到 0 后, 停止计数 SysTick 的当前计数值可以通过读 SYST_CVR 寄存器获得 如果写 SYST_CVR 寄存器, 则将该寄存器清零, 并且将 COUNTFLAG 位清 0, 写操作不会触发 SysTick 异常事件 访问 SysTick 寄存器时, 需使用字操作方式 配置 SysTick 计数器的步骤如下 : 1. 设置计数器重装值寄存器 SYST_RVR 2. 清除计数器当前值寄存器 SYST_CVR 3. 设置控制和状态寄存器 SYST_CSR 特殊功能寄存器 SYSTICK 控制和状态寄存器 (SYST_CSR) 偏移地址 :10 H 复位值 : _ _ _ B COUNTFLAG CLKSOURCE TICKINT ENABLE bit31-17 COUNTFLAG bit16 R SYSTICK 递减计数到零的标志位 0; 未计数到 0 1: 计数到 0 该位读操作后清 0, 或写 SYST_CVR 寄存器清 0 bit15-3 CLKSOURCE bit2 R/W SYSTICK 时钟源选择位 0: 基准时钟 1: 处理器时钟 TICKINT bit1 R/W SYSTICK 异常挂起使能位 0: 计数到 0 时, 不产生异常挂起 1: 计数到 0 时, 产生异常挂起 ENABLE bit0 R/W SYSTICK 计数器使能位 注 1: 处理器时钟为芯片内核工作时钟 HCLK, 时钟频率与系统时钟频率相同 注 2:SYSTICK 基准时钟, 实际是处理器时钟 3 分频后的时钟, 频率为 FHCLK/3 V0.9 59/280

60 SYSTICK 重装值寄存器 (SYST_RVR) 偏移地址 :14 H 复位值 : _ _ _ B RELOAD<23:16> RELOAD<15:0> bit31-24 RELOAD<23:0> bit23-0 R/W SYSTICK 计数器重载值计数范围 0x00_0001~0xFF_FFFF 如果为 0, SysTick 不计数 SYSTICK 重装值寄存器 (SYST_CVR) 偏移地址 :18 H 复位值 : _ _ _ B CURRENT <23:16> CURRENT<15:0> bit31-24 CURRENT<23:0> bit23-0 R/W SYSTICK 计数器当前值读取时返回 SysTick 计数器的当前值 写入任何值都会将该寄存器清零, 同时还会清零 COUNTFLAG 标志位 SYSTICK 校准值寄存器 (SYST_CALIB) 偏移地址 :1C H 复位值 : _ _ _ B NOREF SKEW TENMS<23:16> TENMS<15:0> NOREF bit31 R 基准时钟标志位 0: 不提供基准时钟 V0.9 60/280

61 1: 提供基准时钟 SKEW bit30 R TENMS 校准值是否准确的标志位 0:TENMS 校准值准确 1:TENMS 校准值不准确 bit29-24 TENMS<23:0> bit23-0 R/W SYSTICK 校准值读取为 0 时, 表示校准值未知 配置字软件控制 在芯片配置字的 CFG_BORV<1:0> 为 11 时, 可通过软件配置该寄存器来控制 BOR 电压点 当掉电复位使能时, 即芯片配置字 CFG_BOREN 位为 1, 电源电压低于 BORV<3:0> 设定的电压, 将产生掉电复位 系统配置软件控制寄存器 (SCU_SOFTCFG) 偏移地址 :24 H 复位值 : _ _ _ B BORV<3:0> - bit BORV<3:0> bit3-0 R/W BOR 电压点选择 ( 仅在配置字 CFG_BORV=11 时有效 ) 0000:1.7V 0001:2.0V 0010:2.1V 0011:2.2V 0100:2.3V 0101:2.4V 0110:2.5V 0111:2.6V 1000:2.8V 1001:3.0V 1010: 1011: 1100: 1101: 1110: 1111: V0.9 61/280

62 2. 11 定时器 (T16N/T32N) 同步启动关停控制 概述通过 SCU_TIMEREN 和 SCU_TIMERDIS 控制寄存器, 可以选择性同时启动或关停 T16N/T32N 定时器 可用于需要各个 TIMER 同时启动或关停的运用 对于其它应用, 仍然可使用各个 TIMER 自身的 T16N_CON0 或 T32N_CON0 寄存器的 EN 控制位来使能或关停 TIMER 对各 TIMER 工作的控制,SCU_TIMEREN 和 SCU_TIMERDIS 控制寄存器的优先级高于 T16N_CON0 和 T32N_CON0 寄存器的 EN 控制位, 并且 SCU_TIMEREN 控制寄存器的优先级高于 SCU_TIMERDIS 特殊功能寄存器 SCU_TIMEREN 使能控制寄存器 (SCU_TIMEREN) 偏移地址 :34 H 复位值 :xxxxxxxx_ xxxxxxxx _ xxxxxxxx _ xxxxxxxx B T32N0EN T16N3EN T16N2EN T16N1EN T16N0EN - Bit T32N0EN bit8 R/W T32N0 使能位 - bit T16N3EN bit3 R/W T16N3 使能位 T16N2EN bit2 R/W T16N2 使能位 T16N1EN bit1 R/W T16N1 使能位 T16N0EN bit0 R/W T16N0 使能位 SCU_TIMERDIS 使能控制寄存器 (SCU_TIMERDIS) 偏移地址 :38 H V0.9 62/280

63 复位值 :xxxxxxxx_ xxxxxxxx _ xxxxxxxx _ xxxxxxxx B T32N0DIS T16N3DIS T16N2DIS T16N1DIS T16N0DIS - bit T32N0DIS bit8 R/W T32N0 关停位 0: 保持运行 1: 关停 - bit T16N3DIS bit3 R/W T16N3 关停位 0: 保持运行 1: 关停 T16N2DIS bit2 R/W T16N2 关停位 0: 保持运行 1: 关停 T16N1DIS bit1 R/W T16N1 关停位 0: 保持运行 1: 关停 T16N0DIS bit0 R/W T16N0 关停位 0: 保持运行 1: 关停 V0.9 63/280

64 第 3 章 MCU 存储器资源 3. 1 内部存储器地址映射芯片内部存储器包括程序存储器, 数据存储器, 外设寄存器和系统内核寄存器, 各存储器区域的地址映射关系如下图所示, 图中对系统内核寄存器区域的地址映射进行了详细描述 0xFFFF_FFFF 0xFFFF_FFFF 0xE00F_FFFF System Reserved Rom Ttable Reserved 0xE000_0000 0xDFFF_FFFF Reserved 0xA000_0000 0x9FFF_FFFF Reserved 0xFFF0_0000 0xFFEF_FFFF Reserved 0xFFE0_0000 0xFFDF_FFFF Reserved 0xFFD0_0000 0xFFCF_FFFF 0xE00F_F000 0xF00F_DFFF Reserved 0xE000_F000 0xE000_EFFF SCS System Control Space 0xE000_E000 0xE000_DFFF Reserved 0xE000_EFFF Debug Control 0xE000_ED00 NVIC 0xE000_E100 0x6000_0000 0x5FFF_FFFF Peripheral 0x4000_0000 0x3FFF_FFFF SRAM 0x2000_0000 0x1FFF_FFFF Code 0x0000_0000 0xE040_0000 0xE03F_FFFF Reserved 0xE020_0000 0xE01F_FFFF Reserved 0xE010_0000 0xE00F_FFFF Internal Private Peripheral Bus 0xE000_0000 Bank:512MB 0xE000_3000 0xE000_2FFF BP Breakpoint Unit 0xE000_2000 0xE000_1FFF DWT Data Watchpoint Unit 0xE000_1000 0xE000_0FFF Reserved 0xE000_0000 Bank:1MB 0xE000_3000 Reserved 0xE000_E020 SysTick Timer 0xE000_E010 Reserved 0xE000_E000 Bank:4KB 图 3-1 内部存储系统分配示意图 3. 2 FLASH 存储器 芯片配置字 芯片配置字位于 FLASH 存储器的信息区, 用户可在 ISP 编程时进行设置 芯片的各种功能 配置由芯片配置字和各功能相关寄存器共同设置完成 芯片配置字包括 OSC 振荡器工作模 式的选择 WDT 使能控制 低电压复位使能控制 BOR 电压选择等 配置字名称 CFG_WORD0 地址 H - bit3-0 - 内外部时钟选择位 CFG_OSC bit4 0: 选择外部晶体振荡器 1: 时钟模式通过软件选择 ( 默认 ) XTAL 晶振管脚选择位 CFG_OSC_PIN bit5 0: 分布在 PB8,PB9 1: 分布在 PB10,PB11( 默认 ) INTOSC_SEL bit6 内部时钟输出频率选择位 0: 选择 16MHz V0.9 64/280

65 CFG_PWRTEB bit7 CFG_BORV bit 9-8 CFG_BOREN bit10 CFG_MRST bit DEBUG_S bit13 CFG_DEBUG bit : 选择 4MHz( 默认 ) 上电 140ms 延时使能位 0: 使能 ( 默认 ) 1: 禁止掉电复位电压选择位 00: 01:2.5V 10:2.1V 11:1.7V ( 默认, 软件可控制 ) 掉电复位使能位 ( 默认 ) MRST 管脚复用配置位 00:GPIO 功能其他 :MRST 功能 ( 默认 ) SWD 调试管脚选择位 0:PA14 和 PA15 端口作为调试管脚 ( 内连 RF, 不可用 ) 1:PA0 和 PA1 端口作为调试管脚 ( 默认 ) SWD 调试模式使能位 0X: 禁止 10: 使能强制 DEBUG 模式 该模式下 DEBUG_S 配置位所选定的 IO 被强制作为 SWD 调试端口 1默认 DEBUG 模式 ( 默认 ) 未做编程的芯片, 该值为 11 该模式下, 可经 DEBUG_S 选定的 SWD 端口进入 SWD 调试模式, 但若用户改变所选用 SWD 端口为输出端口, 则可导致调试连接失败 配置字名称 地址 CFG_LOAD bit 0 CFG_WDTEN bit1 WDTINTEN bit 2 WDTWIN bit 4-3 CFG_WORD C H 校准字取值控制位该位仅供芯片测试使用, 需固定为 1, 禁止用户写 0, 否则会导致模拟模块的校准值错误 WDT 硬件看门狗使能位 ( 默认 ) WDT 看门狗中断使能位 ( 默认 ) WDT 喂狗窗口选择位 00:0-25% WDT 复位周期 01:0-50% WDT 复位周期 10:0-75% WDT 复位周期 V0.9 65/280

66 11:100% WDT 复位周期 ( 默认 ) WDTRL bit7-5 上电复位 WDT 重载值选择位 000:0x0000_0200( 选择 WDT 时钟源, 对应时间约 16ms) 001:0x0000_0400( 选择 WDT 时钟源, 对应时间约 32ms) 010:0x0000_1000( 选择 WDT 时钟源, 对应时间约 128ms) 011:0x0000_4000( 选择 WDT 时钟源, 对应时间约 512ms) 100:0x0000_8000( 选择 WDT 时钟源, 对应时间约 1s) 101:0x0001_0000( 选择 WDT 时钟源, 对应时间约 2s) 110:0x0002_0000( 选择 WDT 时钟源, 对应时间约 4s) 111:0x0004_0000( 选择 WDT 时钟源, 对应时间约 8s)( 默认 ) FWPS bit12-8 FLASH 地址单元写保护控制位 00000: 地址单元 (0000_0000H~0000_07FFH) 写保护 00001: 地址单元 (0000_0000H~0000_0FFFH) 写保护 00010: 地址单元 (0000_0000H~0000_17FFH) 写保护 00011: 地址单元 (0000_0000H~0000_1FFFH) 写保护 10000: 地址单元 (0000_0000H~0000_87FFH) 写保护 1xxx1: 地址单元 (0000_0000H~0000_8FFFH) 写保护 ( 默认 ) FWPEB bit13 FLASH 自编程操作 (IAP) 写保护区使能位 0: 使能 1: 禁止 ( 默认 ) LDO_HPW bit14 内部 LDO 高功耗控制位 0:Deep Sleep 模式下关闭高功耗模式 1: 高功耗模式始终打开 ( 默认 ) - bit15 配置字名称地址 CFG_CLKFLT CFG_FLASH_W bit2-0 bit3 CFG_WORD H CLKFLT 滤波时间选择位 000:Typ 4ns 001 Typ 5ns 010 Typ 7ns( 默认 ) 011 Typ 9ns 100 Typ 12ns 101 Typ 18ns 110 Typ 24ns 111 Typ 31ns FLASH 读取等待时间控制位 0: 由软件控制 1:3 个周期 ( 默认 ) V0.9 66/280

67 CFG_FLASH_HRD CFG_IAP CFG_CCMEN SYS_TM CFG_OSCMD CFG_ OSC_RES bit4 bit5 bit6 bit7 bit11-8 bit15-12 读取 FLASH OE 缩短控制位 ( 默认 ) 读取 IAP 操作超时控制位 1: 主频大于 24MHz 操作条件 ( 默认 ) 0: 主频小于 24MHz 操作条件外部停振检测使能位 ( 默认 ) 系统测试使能位 ( 仅供测试使用, 在芯片应用时禁止使能 ) 0: 使能 1: 禁止 ( 默认 ) XTAL 振荡器工作模式选择位 ( 默认 4 b1000) 0010~1111: 高速振荡器 (1~20MHz) 0000~0001: 低速振荡器 (32KHz) XTAL 振荡器工作模式选择位 2( 默认 4 b0010) 0010: 高速振荡器 (1~20MHz) 1111: 低速振荡器 (32KHz) 程序区 FLASH 芯片内部的程序存储器 FLASH 总容量为 36K 字节, 地址范围为 0000_0000 H ~0000_8FFF H, 共分 36 页, 每页 1K 字节 FLASH 存储器支持至少 10 万次擦写次数,10 年以上的数据保持时间 芯片支持通过 IAP 模块对程序存储器 FLASH 进行编程 页擦除操作, 其中字地址单元编程时间约为 20us, 页擦除时间约为 2ms 芯片支持在 SWD 调试模式下对 Flash 进行编程 擦除 读取等操作, 需将配置字 CFG_WORD0(0010_0004 H ) 的 bit15 写为 自编程操作 (IAP) 芯片内部 FLASH 存储器, 支持应用中自编程操作 IAP(In-Application Programming) IAP 概述 支持 FLASH 数据保护, 进行 IAP 操作前需先进行解锁, 去除相关寄存器的写保护 支持程序存储器 FLASH 全擦除模式 ( 仅在 SWD 调试时有效 ) 和页擦除模式 支持字编程模式, 每个字包含 4 个字节 IAP 操作过程中可软件禁止全局中断 ; 也可使能中断, 将中断向量表和中断服务程序 (ISR) 复制到 SRAM, 通过设置中断向量表重映射使能寄存器 SCU_TBLREMAPEN 和中断向量表偏移寄存器 SCU_TBLOFF 可调用 SRAM 中的 ISR 来响应中断 IAP 操作进入擦除或编程状态后,IAP 自动上锁, 进入 FLASH 保护状态, 下次 IAP 操作前需重新解锁 IAP 自编程操作程序需放在芯片的 SRAM 中执行, 并在程序中对 FLASH 擦除或编程结果 V0.9 67/280

68 进行校验 芯片内置 IAP 自编程硬件固化模块, 在 IAP 自编程操作程序中可以调用这些自编程固化模块, 以减少 SRAM 中的 IAP 操作代码量 IAP 操作流程 IAP 操作请求流程首先通过 IAP 控制寄存器, 置位访问 FLASH 请求信号, 查询得到允许应答 再进行对应的 IAP 操作,IAP 操作是指 FLASH 全擦除, 页擦除和编程三种操作 操作完成后清除 FLASH 请求信号, 查询应答信号也被清零后, 结束本次 FLASH 的访问操作 具体流程图如下所示 : 开始 设置 IAP_UL, 对 IAP 解锁 FLASH_REQ=1 FLASH_ACK=1? N Y IAP 操作 FLASH_REQ=0 FLASH_ACK=0? N Y 结束 图 3-2 IAP 操作请求流程图 IAP 全擦除操作流程 IAP 全擦除操作只在芯片调试模式使能时有效, 即将配置字 CFG_WORD0(0010_0004 H ) 的 bit15 写 1 时有效 V0.9 68/280

69 开始 设置 IAP_UL, 对 IAP 解锁 设置 IAP_TRIG 为 0x000051AE, 选择全擦除模式 BSY = 1? Y N 是否超时? N ERASE_END =1? Y 结束 N Y 出错处理 图 3-3 IAP 全擦除操作流程图 IAP 页擦除操作流程 开始 设置 IAP_UL, 对 IAP 解锁 设置 IAPPA, 选择页地址 设置 IAP_TRIG 为 0x00005EA1, 选择页擦除模式 设置 IAP_UL 对 IAP 解锁 BSY = 1? Y N 是否超时? N Y 设置 IAP_UL, 对 IAP 解锁 ERASE_END =1? N 出错处理 Y Y N 连续擦除下一页? N 完成? Y 结束 图 3-4 IAP 页擦除操作流程图 IAP 编程操作流程 V0.9 69/280

70 开始 设置 IAP_UL, 对 IAP 解锁 设置 IAP_ADDR, 写入编程地址 设置 IAP_DATA, 写入编程数据 设置 IAP_UL IAP 解锁 设置 IAP_TRIG 为 0x00005DA2, 选择编程模式 N Y 设置 IAP_UL, 对 IAP 解锁 N 下一单元跨页? BSY = 1? N Y 超时? Y PROG_END =1? N 出错处理 Y Y N 连续编程下一单元? N 完成? Y 结束 图 3-5 IAP 编程操作流程图 IAP 自编程硬件固化模块芯片内置 IAP 自编程固化模块, 由硬件电路实现, 在 IAP 自编程操作程序中可以调用这些自编程固化模块, 以减少 SRAM 中的 IAP 操作代码量 IAP 自编程硬件固化模块支持单页擦除, 单字编程和多字编程, 分别由如下 IAP 操作函数来实现 : 单页擦除函数 (IAP_PageErase) 入口地址 : 保存在 0x 单元内参数输入 :R0- 擦除页的首地址参数输出 :R0- 函数执行状态 (R0=1 为成功,R0=0 为失败 ) 单字编程函数 (IAP_WordProgram) 入口地址 : 保存在 0x 单元内参数输入 :R0- 编程的 Flash 地址,R1- 编程数据参数输出 :R0- 函数执行状态 (R0=1 为成功,R0=0 为失败 ) 多字编程函数 (IAP_WordsProgram) 入口地址 : 保存在 0x 单元内参数输入 :R0- 编程的 Flash 首地址,R1- 放在 SRAM 空间的编程数据首地址,R2- 编程数据长度,R3- 当编程到页首时是否先进行页擦除 (R3 非零为擦除,R3=0 为不擦除 ) V0.9 70/280

71 参数输出 :R0- 函数执行状态 (R0=1 为成功,R0=0 为失败 ) 特殊功能寄存器 IAP 解锁寄存器 (IAP_UL) 偏移地址 :10 H 复位值 : _ _ _ B UL<31:16> UL<15:0> UL<31:0> bit31-0 R/W IAP 解锁 : 写入 0x0000_00A5; IAP 上锁 : 进行如下任一操作均可上锁写入其它值 ; 写 IAP 触发寄存器 IAP_TRIG,IAP 自动上锁 ; 写地址,IAP 上锁 ; IAP 软件复位后,IAP 上锁 注 1:IAP 上锁后, 处于写保护状态的寄存器为 IAP_CON,IAP_ADDR,IAP_DATA,IAP_TRIG 注 2: 写地址,IAP 上锁, 是指对 H~40000BFF H 空间中未定义的地址单元, 进行写操作时,IAP 上锁 IAP 控制寄存器 (IAP_CON) 偏移地址 :00 H 复位值 : _ _ _ B FLASH_FAIL FLASH_ACK FLASH_REQ RST EN - bit IAP 访问 FLASH 地址失败标志位 FLASH_FAIL bit7 R 0:IAP 未访问 FLASH 地址保护区 1:IAP 访问 FLASH 地址保护区 - bit6 R/W - FLASH 应答信号 FLASH_ACK bit5 R 0: 不允许访问 1: 允许 IAP 访问 FLASH 存储器 FLASH_REQ bit4 R/W IAP 访问 FLASH 的请求信号 0: 无请求 V0.9 71/280

72 1:IAP 请求访问 FLASH 存储器 - bit RST bit1 W IAP 软件复位 0: 读取时始终为 0 1: 复位 EN bit0 R/W IAP 使能位 注 1: 对 IAP_CON 寄存器进行写操作前, 需要先设置 IAP_UL 寄存器, 对 IAP 解锁, 去除写保护 IAP 地址寄存器 (IAP_ADDR) 偏移地址 :04 H 复位值 : _ _ _ B IFREN IAPPA<5:0> IAPCA<7:0> - bit IFREN bit20 R/W IAP 信息区使能 0: 不允许 IAP 操作 FLASH_INFO 区 1: 允许 IAP 操作 FLASH_INFO 区 - bit IAPPA<5:0> bit15-10 R/W IAP 页地址 ( 擦除模式 ) 1)0x00~0x23: 共 36 页, 对应的地址范围 0x0000_0000~0x0000_8FFF 2) 操作 FLASH INFO 区时,IAPPA 无效 IAPCA<7:0> bit9-2 R/W IAP 单元地址 1) 擦除模式下, 单元地址无效 2) 编程模式下 : 操作非 FLASH INFO 区时,IAPCA 为当前页中被编程单元的相对地址, 每页 256 个单元, 每单元 4 个字节 编程前需保证该单元已经被擦除操作 FLASH INFO 区时, 仅 IAPCA[5:0] 有效,INFO 区共包括 64 个单元, 每单元 4 个字节 - bit 注 1: 对 IAP_ADDR 寄存器进行写操作前, 需要先设置 IAP_UL 寄存器, 对 IAP 解锁, 去除写保护 注 2: 完成页擦除后,IAPPA 自动 +1; 注 3: 完成单元编程后,IAPCA 自动 +1; 由于 IAPCA 只在当前页中进行单元寻址, 所以跨页编程时, 必须重新填写 IAPPA, 指定下一页地址 V0.9 72/280

73 IAP 数据寄存器 (IAP_DATA) 偏移地址 :08 H 复位值 : _ _ _ B DATA<31:16> DATA<15:0> DATA<31:0> bit31-0 R/W IAP 单元数据 注 1: 对 IAP_DATA 寄存器进行写操作前, 需要先设置 IAP_UL 寄存器, 对 IAP 解锁, 去除写保护 触发寄存器 (IAP_TRIG) 偏移地址 :0C H 复位值 : _ _ _ B TRIG<31:16> TRIG<15:0> TRIG<31:0> bit31-0 R/W IAP 操作命令 ( 写入该寄存器后,IAP 重新上锁 ) 0x0000_51AE: 全擦除 ( 仅在 SWD 调试时有效 ) 0x0000_5EA1: 页擦除 ( 擦除 INFO 区时, 必须先执行全擦除操作, 否则无效 ) 0x0000_5DA2: 编程模式其它 : 无操作 ( IAP 完成后, 硬件自动更改为无操作 ) 注 1: 对 IAP_TRIG 寄存器进行写操作前, 需要先设置 IAP_UL 寄存器, 对 IAP 解锁, 去除写保护 IAP 状态寄存器 (IAP_STA) 偏移地址 :14 H 复位值 : _ _ _ B TIMEOUT_ERR PROG_END ERASE_END BSY - bit TIMEOUT_ERR bit3 R/W IAP 超时错误标志位 0: 写 0 清除, 触发 IAP_TRIG 自动清除, V0.9 73/280

74 PROG_END bit2 R/W ERASE_END bit1 R/W BSY bit0 R 或 IAP 软件复位清除 1:IAP 操作超时 IAP 编程结束标志位 0: 写 0 清除, 触发 IAP_TRIG 自动清除, 或 IAP 软件复位清除 1: 当前单元编程完成 IAP 页擦除结束标志位 0: 写 0 清除, 触发 IAP_TRIG 自动清除, 或 IAP 软件复位清除 1: 当前页擦除完成 IAP 工作状态位 0: 空闲,IAP 软件复位可将该位清零 1:IAP 操作正在进行中 注 1:IAP_STA 寄存器的 TIMEOUT_ERR 为 1 时, 硬件自动清零 IAP_CON 寄存器的 EN 位 3. 3 数据存储器 (SRAM) 芯片内部集成 8K 字节数据存储器 SRAM, 地址范围为 2000_0000 H ~2000_1FFF H SRAM 地址映射 V0.9 74/280

75 0xFFFF_FFFF System 0x3FFF_FFFF 0xE000_0000 0xDFFF_FFFF Reserved SRAM bitband 0xA000_0000 0x9FFF_FFFF Reserved 0x2200_0000 0x21FF_FFFF 0x6000_0000 0x5FFF_FFFF Peripheral 0x4000_0000 0x3FFF_FFFF SRAM 0x2000_0000 0x1FFF_FFFF FLASH 0x0000_0000 Reserved 0x2000_2000 0x2000_1FFF 8K Bytes SRAM 0x2000_0000 图 3-6 SRAM 映射图 SRAM 位带扩展 SRAM 支持位带扩展, 可使用普通的加载和存储指令对单比特进行读写操作 通过位带扩展, 除可在起始地址为 0x4000_0000 的空间访问 SRAM 外, 还可在起始地址为 0x4200_0000 的位带扩展区以单比特方式访问 SRAM 位带扩展区把每个比特扩展为一个 32-bit 的字, 通过访问这些字可达到访问原始比特的目的 对于 SRAM 的某个 bit, 如果它所在字节地址为 A, 位序号为 N(0 N 7), 则该 bit 在 SRAM 位带扩展后的地址为 : AliasAddress_A_N = 0x2200_ ( A 0x2000_0000) x 32 + N x 外设寄存器 外设寄存器映射 V0.9 75/280

76 Peripheral Device Peripheral bitband 0x4200_0000~0x5FFF_FFFF 0xFFFF_FFFF 0xE000_0000 0xDFFF_FFFF 0x6000_0000 0x5FFF_FFFF 0x4000_0000 0x3FFF_FFFF 0x2000_0000 0x1FFF_FFFF 0x0000_0000 System Reserved Peripheral SRAM Code Reserved I2C0 Reserved SPI1 SPI0 Reserved EUART0 UART1 UART0 Reserved T32N0 Reserved T16N3 T16N2 T16N1 T16N0 WDT LCD/LED RTC ADC0 Reserved Flash Interface GPIO SCU 图 3-7 外设存储器分配示意图 0x4000_9400~0x41FF_FFFF 0x4000_9000~0x4000_93FF 0x4000_8C00~0x4000_8FFF 0x4000_8400~0x8400_8BFF 0x4000_8000~0x4000_83FF 0x4000_7400~0x4000_7FFF 0x4000_7000~0x4000_73FF 0x4000_6400~0x4000_67FF 0x4000_6000~0x4000_63FF 0x4000_4400~0x4000_5FFF 0x4000_4000~0x4000_43FF 0x4000_3000~0x4000_3FFF 0x4000_2C00~0x4000_2FFF 0x4000_2800~0x4000_2BFF 0x4000_2400~0x4000_27FF 0x4000_2000~0x4000_23FF 0x4000_1C00~0x4000_1FFF 0x4000_1800~0x4000_1BFF 0x4000_1400~0x4000_17FF 0x4000_1000~0x4000_13FF 0x4000_0C00~0x4000_0FFF 0x4000_0800~0x4000_0BFF 0x4000_0400~0x4000_07FF 0x4000_0000~0x4000_03FF 注 1:Reserved 寄存器区域为只读, 读出值为 H 外设位带扩展外设支持位带扩展, 可使用普通的加载和存储指令对单比特进行读写操作 通过位带扩展, 除可在 0x4000_0000 起始的空间访问外设外, 还可在起始地址为 0x4200_0000 的位带扩展区以单比特方式访问外设 位带扩展区把每个比特扩展为一个 32-bit 的字, 通过访问这些字可达到访问原始比特的目的 对于外设寄存器的某一位, 如果它所在字节地址为 A, 位序号为 N(0 N 7), 则该位在外设位带扩展后的地址为 : AliasAddress_A_N = 0x4200_ ( A 0x4000_0000) x 32 + N x 4 V0.9 76/280

77 系统控制单元 (SCU) 寄存器列表 系统控制单元 (SCU) 寄存器名称寄存器偏移地址寄存器描述 SCU 基地址 :4000_0000 H SCU_PROT 0000 H 系统设置保护寄存器 SCU_NMICON 0004 H 不可屏蔽中断控制寄存器 SCU_PWRC 0008 H 复位寄存器 SCU_FAULTFLAG 000C H 硬件错误标志寄存器 SCU_FLASHWAIT 0020 H FLASH 访问等待时间寄存器 SCU_SOFTCFG 0024 H 系统配置软件控制寄存器 SCU_LVDCON 0028 H LVD 控制寄存器 SCU_CCM 002C H 外部时钟检测控制寄存器 SCU_PLLLKCON 0030 H PLL 锁定中断控制寄存器 SCU_TIMEREN 0034 H TIMER 使能控制寄存器 SCU_TIMERDIS 0038 H TIMER 关停控制寄存器 SCU_SCLKEN H 系统时钟控制寄存器 0 SCU_SCLKEN H 系统时钟控制寄存器 1 SCU_PCLKEN 0048 H 外设时钟控制寄存器 SCU_WAKEUPTIME 004C H 系统唤醒时间控制寄存器 SCU_TBLREMAPEN 0060 H 中断向量表重映射使能寄存器 SCU_TBLOFF 0064 H 中断向量表偏移寄存器 GPIO 寄存器列表 GPIO 寄存器列表 寄存器名称寄存器偏移地址寄存器描述 GPIO 基地址 :4000_0400 H GPIO_PAPORT 0000 H PA 端口状态寄存器 GPIO_PADATA 0004 H PA 端口数据寄存器 GPIO_PADATABSR 0008 H PA 输出置位寄存器 GPIO_PADATABCR 000C H PA 输出清零寄存器 GPIO_PADATABRR 0010 H PA 输出翻转寄存器 GPIO_PADIR 0014 H PA 端口方向控制寄存器 GPIO_PADIRBSR 0018 H PA 端口方向置位寄存器. GPIO_PADIRBCR 001C H PA 端口方向清零寄存器 GPIO_PADIRBRR 0020 H PA 端口方向翻转寄存器 GPIO_PAFUNC H PA[7:0] 端口复用选择寄存器 GPIO_PAFUNC H PA[15:8] 端口复用选择寄存器 GPIO_PAFUNC2 002C H PA[23:16] 端口复用选择寄存器 V0.9 77/280

78 GPIO_PAFUNC H PA[31:24] 端口复用选择寄存器 GPIO_PAINEB 0034 H PA 端口输入控制寄存器 GPIO_PAODE 0038 H PA 端口开漏控制寄存器 GPIO_PAPUE 003C H PA 端口弱上拉使能寄存器 GPIO_PAPDE 0040 H PA 端口弱下拉使能寄存器 GPIO_PADS 0044 H PA 端口驱动电流控制寄存器 GPIO_PBPORT 0080 H PB 端口状态寄存器 GPIO_PBDATA 0084 H PB 端口数据寄存器 GPIO_PBDATABSR 0088 H PB 端口输出置位寄存器 GPIO_PBDATABCR 008C H PB 端口输出清零寄存器 GPIO_PBDATABRR 0090 H PB 端口输出翻转寄存器 GPIO_PBDIR 0094 H PB 端口方向控制寄存器 GPIO_PBDIRBSR 0098 H PB 端口方向置位寄存器 GPIO_PBDIRBCR 009C H PB 端口方向清零寄存器 GPIO_PBDIRBRR 00A0 H PB 端口方向翻转寄存器 GPIO_PBFUNC0 00A4 H PB[7:0] 端口复用选择寄存器 GPIO_PBFUNC1 00A8 H PB[13:8] 端口复用选择寄存器 GPIO_PBINEB 00B4 H PB 端口输入控制寄存器 GPIO_PBODE 00B8 H PB 端口开漏控制寄存器 GPIO_PBPUE 00BC H PB 端口弱上拉使能寄存器 GPIO_PBPDE 00C0 H PB 端口弱下拉使能寄存器 GPIO_PBDS 00C4 H PB 端口驱动电流控制寄存器 GPIO_PINTIE 0300 H PINT 中断使能寄存器 GPIO_PINTIF 0304 H PINT 中断标志寄存器 GPIO_PINTSEL 0308 H PINT 中断源选择寄存器 GPIO_PINTCFG 030C H PINT 中断配置寄存器 GPIO_KINTIE 0310 H KINT 中断使能寄存器 GPIO_KINTIF 0314 H KINT 中断标志寄存器 GPIO_KINTSEL 0318 H KINT 中断源选择寄存器 GPIO_KINTCFG 031C H KINT 中断配置寄存器 GPIO_IOINTFLTS 0330 H 端口中断 20ns 滤波器分配控制寄存器 GPIO_TMRFLTSEL 0340 H TMR 输入端口 20ns 滤波器分配控制寄存器 GPIO_SPIFLTSEL 0344 H SPI 输入端口 20ns 滤波器分配控制寄存器 GPIO_TXPWM 0380 H 脉宽调制寄存器 GPIO_BUZC 0384 H 蜂鸣器计数控制寄存器 IAP 寄存器列表 IAP 寄存器列表 寄存器名称寄存器偏移地址寄存器描述 IAP 基地址 :4000_0800 H V0.9 78/280

79 IAP_CON 0000 H IAP 控制寄存器 IAP_ADDR 0004 H IAP 地址寄存器 IAP_DATA 0008 H IAP 数据寄存器 IAP_TRIG 000C H IAP 触发寄存器 IAP_UL 0010 H IAP 解锁寄存器 IAP_STA 0014 H IAP 状态寄存器 ADC 寄存器列表 ADC 寄存器列表 寄存器名称寄存器偏移地址寄存器描述 IAP 基地址 :4000_1000 H ADC_DR 0000 H ADC 转换值寄存器 ADC_CON H ADC 控制寄存器 0 ADC_CON H ADC 控制寄存器 1 ADC_CHS 000C H ADC 通道选择寄存器 ADC_IE 0010 H ADC 中断使能寄存器 ADC_IF 0014 H ADC 中断标志寄存器 ADC_ACPC 0028 H ADC 自动转换比较控制寄存器 ADC_ACPCMP 0030 H ADC 自动转换比较阈值寄存器 ADC_ACPMEAN 0034 H ADC 自动转换均值数据寄存器 ADC_VREFCON 0040 H ADC 参考控制寄存器 RTC 寄存器列表 RTC 寄存器列表 寄存器名称寄存器偏移地址寄存器描述 RTC 基地址 :4000_1400 H RTC_CON 0000 H RTC 控制寄存器 RTC_CAL 0004 H RTC 调校寄存器 RTC_WA 0008 H RTC 周闹钟寄存器 RTC_DA 000C H RTC 日闹钟寄存器 RTC_HMS 0010 H RTC 时分秒寄存器 RTC_YMDW 0014 H RTC 年月日周寄存器 RTC_IE 0018 H RTC 中断使能寄存器 RTC_IF 001C H RTC 中断标志寄存器 RTC_WP 0020 H RTC 写保护寄存器 WDT 寄存器列表 V0.9 79/280

80 WDT 寄存器列表 寄存器名称寄存器偏移地址寄存器描述 WDT 基地址 :4000_1C00 H WDT_LOAD 0000 H WDT 计数器装载值寄存器 WDT_VALUE 0004 H WDT 计数器当前值寄存器 WDT_CON 0008 H WDT 控制寄存器 WDT_INTCLR 000C H WDT 中断标志清除寄存器 WDT_RIS 0010 H WDT 中断标志寄存器 WDT_LOCK 0100 H WDT 访问使能寄存器 WDT_ITCR 0300 H WDT 测试寄存器, 仅供测试使用 WDT_ITOP 0304 H WDT 测试寄存器, 仅供测试使用 注 :WDT_ITCR 和 WDT_ITOP 寄存器仅供测试使用, 禁止用户对其进行写操作, 否则可能会导致芯片工作异常 T16N0/T16N1/T16N2/T16N3 寄存器列表 T16N 寄存器列表 寄存器名称寄存器偏移地址寄存器描述 T16N0 基地址 :4000_2000 H T16N1 基地址 :4000_2400 H T16N2 基地址 :4000_2800 H T16N3 基地址 :4000_2C00 H T16N_CNT H T16N 计数值寄存器 0 T16N_CNT H T16N 计数值寄存器 1 T16N_PRECNT 0008 H T16N 预分频器计数值寄存器 T16N_PREMAT 000C H T16N 预分频器计数匹配寄存器 T16N_CON H T16N 控制寄存器 0 T16N_CON H T16N 控制寄存器 1 T16N_CON H T16N 控制寄存器 2 T16N_IE 0020 H T16N 中断使能寄存器 T16N_IF 0024 H T16N 中断标志寄存器 T16N_PDZ 0028 H T16N 调制模式死区宽度寄存器 T16N_PTR 002C H T16N 调制模式 ADC 触发寄存器 T16N_MAT H T16N 计数匹配寄存器 0 T16N_MAT H T16N 计数匹配寄存器 1 T16N_MAT H T16N 计数匹配寄存器 2 T16N_MAT3 003C H T16N 计数匹配寄存器 3 T16N_TOP H T16NCNT0 计数峰值寄存器 0 T16N_TOP H T16NCNT1 计数峰值寄存器 1 V0.9 80/280

81 T32N0 寄存器列表 T32N 寄存器列表 寄存器名称寄存器偏移地址寄存器描述 T32N0 基地址 :4000_4000 H T32N_CNT 0000 H T32N 计数值寄存器 T32N_CON H T32N 控制寄存器 0 T32N_CON H T32N 控制寄存器 1 T32N_PRECNT 0010 H T32N 预分频器计数值寄存器 T32N_PREMAT 0014 H T32N 预分频器计数匹配寄存器 T32N_IE 0018 H T32N 中断使能寄存器 T32N_IF 001C H T32N 中断标志寄存器 T32N_MAT H T32N 计数匹配寄存器 0 T32N_MAT H T32N 计数匹配寄存器 1 T32N_MAT H T32N 计数匹配寄存器 2 T32N_MAT3 002C H T32N 计数匹配寄存器 UART0/UART1 寄存器列表 UART 寄存器列表 寄存器名称寄存器偏移地址寄存器描述 UART0 基地址 :4000_6000 H UART1 基地址 :4000_6400 H UART_CON H UART 控制寄存器 0 UART_CON H UART 控制寄存器 1 UART_BRR 0010 H UART 波特率寄存器 UART_STA 0014 H UART 状态寄存器 UART_IE 0018 H UART 中断使能寄存器 UART_IF 001C H UART 中断标志寄存器 UART_TBW 0020 H UART 发送数据写入寄存器 UART_RBR 0024 H UART 接收数据读取寄存器 UART_TB H UART 发送缓冲寄存器 0 UART_TB H UART 发送缓冲寄存器 1 UART_TB H UART 发送缓冲寄存器 2 UART_TB3 004C H UART 发送缓冲寄存器 3 UART_TB H UART 发送缓冲寄存器 4 UART_TB H UART 发送缓冲寄存器 5 UART_TB H UART 发送缓冲寄存器 6 UART_TB7 005C H UART 发送缓冲寄存器 7 UART_RB H UART 接收缓冲寄存器 0 UART_RB H UART 接收缓冲寄存器 1 V0.9 81/280

82 UART_RB H UART 接收缓冲寄存器 2 UART_RB3 006C H UART 接收缓冲寄存器 3 UART_RB H UART 接收缓冲寄存器 4 UART_RB H UART 接收缓冲寄存器 5 UART_RB H UART 接收缓冲寄存器 6 UART_RB7 007C H UART 接收缓冲寄存器 EUART0 寄存器列表 EUART 寄存器列表 寄存器名称寄存器偏移地址寄存器描述 EUART0 基地址 :4000_7000 H EUART_CON H EUART 控制寄存器 0 EUART_CON H EUART 控制寄存器 1 EUART_CON H EUART 控制寄存器 2 EUART_BRR 0010 H EUART 波特率寄存器 EUART_IE 0018 H EUART 中断使能寄存器 EUART_IF 001C H EUART 中断标志寄存器 EUART_TBW 0020 H EUART 发送数据写入寄存器 EUART_RBR 0024 H EUART 接收数据读取寄存器 EUART_TB H EUART 发送缓冲寄存器 0/1 EUART_TB H EUART 发送缓冲寄存器 2/3 EUART_RB H EUART 接收缓冲寄存器 0/1 EUART_RB23 004C H EUART 接收缓冲寄存器 2/ SPI0/ SPI1 寄存器列表 SPI 寄存器列表 寄存器名称寄存器偏移地址寄存器描述 SPI0 基地址 :4000_8000 H SPI1 基地址 :4000_8400 H SPI_CON 0000 H SPI 控制寄存器 SPI_TBW 0008 H SPI 发送数据写入寄存器 SPI_RBR 000C H SPI 接收数据读取寄存器 SPI_IE 0010 H SPI 中断使能寄存器 SPI_IF 0014 H SPI 中断标志寄存器 SPI_TB 0018 H SPI 发送缓冲寄存器 SPI_RB 001C H SPI 接收缓冲寄存器 SPI_STA 0020 H SPI 状态寄存器 SPI_CKS 0024 H SPI 波特率设置寄存器 V0.9 82/280

83 I2C0 寄存器列表 I2C 寄存器列表 寄存器名称寄存器偏移地址寄存器描述 I2C0 基地址 :4000_9000 H I2C_CON 0000 H I2C 控制寄存器 I2C_MOD 0004 H I2C 工作模式寄存器 I2C_IE 0008 H I2C 中断使能寄存器 I2C_IF 000C H I2C 中断标志寄存器 I2C_TBW 0010 H I2C 发送数据写入寄存器 I2C_RBR 0014 H I2C 接收数据读取寄存器 I2C_TB 0018 H I2C 发送缓冲寄存器 I2C_RB 001C H I2C 接收缓冲寄存器 I2C_STA 0020 H I2C 状态寄存器 3. 5 内核寄存器 系统定时器 (SYSTICK) 寄存器列表 系统定时器 (SYSTICK) 寄存器名称 寄存器偏移地址 寄存器描述 SYSTICK 基地址 :E000_E000 H SYST_CSR 0010 H SYSTICK 控制 / 状态寄存器 SYST_RVR 0014 H SYSTICK 重装值寄存器 SYST_CVR 0018 H SYSTICK 当前值寄存器 SYST_CALIB 001C H SYSTICK 校准值寄存器 中断控制器 (NVIC) 寄存器列表 中断控制器 (NVIC) 寄存器名称 寄存器偏移地址 寄存器描述 NVIC 基地址 :E000_E100 H NVIC_ISER 0000 H IRQ0~31 置中断请求使能寄存器 NVIC_ICER 0080 H IRQ0~31 清中断请求使能寄存器 NVIC_ISPR 0100 H IRQ0~31 置中断挂起寄存器 NVIC_ICPR 0180 H IRQ0~31 清中断挂起寄存器 NVIC_PR H IRQ0~3 优先级控制寄存器 V0.9 83/280

84 NVIC_PR H IRQ4~7 优先级控制寄存器 NVIC_PR H IRQ8~11 优先级控制寄存器 NVIC_PR3 030C H IRQ12~15 优先级控制寄存器 NVIC_PR H IRQ16~19 优先级控制寄存器 NVIC_PR H IRQ20~23 优先级控制寄存器 NVIC_PR H IRQ24~27 优先级控制寄存器 NVIC_PR7 031C H IRQ28~31 优先级控制寄存器 系统控制块 (SCB) 寄存器列表 系统控制块 (SCB) 寄存器名称寄存器偏移地址寄存器描述 SCB 基地址 :E000_ED00 H SCB_CPUID 0000 H SCB_CPUID 寄存器 SCB_ICSR 0004 H 中断控制和状态寄存器 SCB_AIRCR 000C H 应用中断和复位控制寄存器 SCB_SCR 0010 H 系统控制寄存器 SCB_CCR 0014 H 配置和控制寄存器 SCB_SHPR2 001C H 系统处理程序优先级寄存器 2 SCB_SHPR H 系统处理程序优先级寄存器 3 V0.9 84/280

85 V0.9 85/280

86 第 4 章 MCU 输入输出端口 (GPIO) 4. 1 概述 本芯片支持两组 GPIO 端口, 最多支持共 46 个 I/O 管脚 所有 I/O 端口都是 TTL 施密特输入和 CMOS 输出驱动 ( 可配置为开漏输出 ), 每个 I/O 端口的复用功能和工作模式由端口复用选择寄存器 (GPIO_PxFUNCy) 配置 当 I/O 端口配置为通用数字 I/O 功能时, 其输出状态由端口方向控制寄存器 (GPIO_PxDIR) 配置, 输入状态由相应的端口输入控制寄存器 (GPIO_PxINEB) 配置 当 I/O 端口处于输出状态时, 其电平由端口数据寄存器 (GPIO_PxDATA) 决定,1 为高电平,0 为低电平 ; 当 I/O 端口处于输入状态时, 其电平状态可通过读取端口状态寄存器 (PxPORT) 获得 端口输出电平支持位操作 将 GPIO 输出置位寄存器 (GPIO_PxDATABSR) 相应位写 1, 可将相应位的 GPIO 端口设置为高电平 ; 将 GPIO 输出清零寄存器 (GPIO_PxDATABCR) 相应位写 1, 可将相应位的 GPIO 端口设置为低电平 ; 将 GPIO 输出翻转寄存器 (GPIO_PxDATABRR) 相应位写 1, 可将相应位的 GPIO 端口电平取反 端口方向控制支持位操作 将 GPIO 端口方向置位寄存器 (GPIO_PxDIRBSR) 相应位写 1, 可将相应位的 GPIO 端口设置为输入 ; 将 GPIO 端口方向清零寄存器 (GPIO_PxDIRBCR) 相应位写 1, 可将相应位的 GPIO 端口设置为输出 ; 将 GPIO 输出翻转寄存器 (GPIO_PxDIRBRR) 相应位写 1, 可将相应位的 GPIO 端口方向取反 当 I/O 端口配置为复用功能时, 作为芯片外设功能模块的复用端口, 其输出状态仍需通过端口方向控制寄存器 (GPIO_PxDIR) 进行配置, 输入状态仍需通过相应的端口输入控制能寄存器 (GPIO_PxINEB) 进行配置 每个 I/O 端口均支持开漏输出, 由相应的端口开漏输出使能寄存器 (GPIO_PxODE) 控制开漏输出是否使能 每个 I/O 端口均支持弱上拉或弱下拉, 由相应的端口输入弱上拉使能寄存器 (GPIO_PxPUE) 控制其弱上拉功能是否使能, 由相应的端口输入弱下拉使能寄存器 (GPIO_PxPDE) 控制其弱下拉功能是否使能 每个 I/O 端口均支持电流驱动能力可配置, 由相应的端口驱动电流控制寄存器 (GPIO_PxDS) 选择 I/O 端口的输出驱动能力, 可选择为强电流驱动 I/O 端口, 或者普通驱动 I/O 端口 V0.9 86/280

87 4. 2 结构框图 Px 中断 系统时钟地址总线 读数据总线写数据总线 控制总线 IO 逻辑 IO 输出 IO 控制 IO 输入弱上拉控制 VDD VDD VDD Px 外设使能外设输出外设输入 IOMUX 数模选择模拟输入模拟输出 图 4-1 IO 端口电流结构图 4. 3 外部端口中断支持全部 IO 口外部端口中断, 分成 8 组, 每组对应一个 IRQ, 并可通过 GPIO_PINTCFG 寄存器的 PINTx 位配置各外部中断触发方式 触发方式配置为高电平或低电平时, 中断标志只有在触发电平翻转后, 才可通过对 GPIO_PINTIF 寄存器的相应位写 1 来清除 GPIO_PINTIE 寄存器的输入屏蔽使能位 PMASKx, 可对外部端口中断输入进行屏蔽, 屏蔽位使能时, 对应的中断输入源就被屏蔽了, 不会产生中断和标志位 GPIO_PINTIE 寄存器的外部端口中断使能位 PINTIEx, 可对每个外部端口中断标志 PINTIFx 是否触发外部端口中断请求, 进行配置 PINTx_SEL PINTx_CFG PINTx_IN0 PINTIEx PINTx_IN1 PINTx_IN2 PINTx_IN3 PINTx_IN4 PINTx_IN5 中断 PORT 选择 PINTx_IN PINTx 中断产生电路 PINTIFx IRQ_PINTx PINTx_MASK 图 4-2 外部端口中断电路结构示意图 PINTx SEL0 SEL1 SEL2 SLE3 SEL4 SEL5 PINT0 PA0 PA8 PA16 PA24 PB0 PB8 PINT1 PA1 PA9 PA17 PA25 PB1 PB9 PINT2 PA2 PA10 PA18 PA26 PB2 PB10 PINT3 PA3 PA11 PA19 PA27 PB3 PB11 PINT4 PA4 PA12 PA20 PA28 PB4 PB12 V0.9 87/280

88 PINT5 PA5 PA13 PA21 PA29 PB5 PB13 PINT6 PA6 PA14 PA22 PA30 PB6 - PINT7 PA7 PA15 PA23 PA31 PB7 - 表 4-1 PINT 选择对应列表 4. 4 外部按键中断 支持 1 个 8 输入外部按键中断 (KINT), 8 个按键输入为 KINT0_IN~KINT7_IN, 其中任意一个按键输入都可以触发按键中断, 每个按键输入可以从 6 个 I/O 端口中选择一个作为其输入源 输入屏蔽使能位 KMASKx, 可对每个输入源 KINTx_IN 进行屏蔽 屏蔽使能时, 不论 KINTx_IN 输入如何变化, 中断标志 KINTIFx 均保持不变 ; 屏蔽使能时, 可通过端口中断配置寄存器位 KINTx_CFG, 对各个按键输入 KINTx 进行配置, 选择中断的有效触发边沿或电平 按键中断使能位 KINTIEx, 可对每个按键标志 KINTIFx 是否触发按键中断请求, 进行配置 GPIO_KINTCFG 寄存器的按键中断配置位 KINTx, 可对每个输入源的触发方式进行配置, 根据端口电平变化的不同状态, 触发中断 切换输入源触发方式时, 需先屏蔽输入源, 避免误产生中断 ; 或先禁止按键中断, 并在切换完成后, 对中断标志进行清零, 然后再使能按键中断 KINTx_SEL KINTx_IN0 KINTx_CFG KINTIEx KINTx_IN1 KINTx_IN2 KINTx_IN3 KINTx_IN4 KINTx_IN5 按键中断 PORT 选择 KINTx_IN KMASKx KINTFx 按键标志产生电路 KINTIFx IRQ_KINT 图 4-3 外部按键中断电路结构示意图 KINTx SEL0 SEL1 SEL2 SLE3 SEL4 SEL5 KINT0 PA0 PA8 PA16 PA24 PB0 PB8 KINT1 PA1 PA9 PA17 PA25 PB1 PB9 KINT2 PA2 PA10 PA18 PA26 PB2 PB10 KINT3 PA3 PA11 PA19 PA27 PB3 PB11 KINT4 PA4 PA12 PA20 PA28 PB4 PB12 KINT5 PA5 PA13 PA21 PA29 PB5 PB13 KINT6 PA6 PA14 PA22 PA30 PB6 - KINT7 PA7 PA15 PA23 PA31 PB Buzz 输出 Buzz 输出可用于驱动蜂鸣器等音频发声器件 GPIO_BUZC 控制寄存器用于使能 Buzz 和设定其输出信号的频率 Buzz 信号频率为 : V0.9 88/280

89 Fbuz = FPCLK/ (2*(BUZ_LOAD+1)) 由 GPIO_PAFUNCx 和 GPIO_PBFUNCx 寄存器来设定 Buzz 信号直接输出至 PA0,PA1 或 PB13 Buzz 的固定频率输出信号还可被 UART0 的输出信号 TXD0 调制为 TXPWM0 信号或被 EUART0 的输出信号 E0TX0 调制为 TXPWM1 信号, 并送至相应输出端口上 可通过 TX0PLV 和 TX1PLV 控制位设定为高电平调制还是低电平调制 当 GPIO_TXPWM 寄存器的 TX0PS 控制位为 2 b11 时,TXPWM0 调制信号可输出至 TXD0 T16N0OUT0 T16N0OUT1 或 Buz 管脚 ( 由 GPIO_TXPWM 寄存器的 TXPWM0_Sx 选取 ) 当 GPIO_TXPWM 寄存器的 TX1PS 控制位为 2 b11 时,TXPWM1 调制信号可输出至 E0TX0 T16N1OUT0 T16N1OUT1 或 Buz 管脚 ( 由 GPIO_TXPWM 寄存器的 TXPWM1_Sx 选取 ) E0TX0 或 TXD0 Buzz 信号 TXPWM0 或 TXPWM1 图 4-4 Buzz 高电平调制输出波形图 E0TX0 或 TXD0 Buzz 信号 TXPWM0 或 TXPWM1 图 4-5 Buzz 低电平调制输出波形图 4. 6 特殊功能寄存器 PA 端口状态寄存器 (GPIO_PAPORT) 偏移地址 :00 H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B PORT<31:16> PORT<15:0> PORT<31:0> bit 31-0 R PA 端口输入 / 输出电平 0: 低电平 V0.9 89/280

90 1: 高电平 PA 端口数据寄存器 (GPIO_PADATA) 偏移地址 :04 H 复位值 : _ _ _ B DATA<31:16> DATA<15:0> DATA<31:0> bit 31-0 R/W PA 端口输出寄存器 0: 输出低电平 1: 输出高电平 PA 输出置位寄存器 (GPIO_PADATABSR) 偏移地址 :08 H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DATABSR<31:16> DATABSR<15:0> DATABSR<31:0> bit 31-0 W PA 输出置位选择 0: 不改变输出电平 1: 相应端口输出高电平 PA 端口输出清零寄存器 (GPIO_PADATABCR) 偏移地址 : 0C H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DATABCR <31:16> DATABCR <15:0> DATABCR<31:0> bit 31-0 W PA 输出清零选择 0: 不改变输出电平 1: 相应端口输出低电平 V0.9 90/280

91 PA 端口输出翻转寄存器 (GPIO_PADATABRR) 偏移地址 : 10 H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DATABRR <31:16> DATABRR <15:0> DATABRR<31:0> bit 31-0 W PA 输出翻转选择 0: 不改变输出电平 1: 相应端口输出翻转 PA 端口方向控制寄存器 (GPIO_PADIR) 偏移地址 : 14 H 复位值 : _ _ _ B DIR <31:16> DIR <15:0> DIR<31:0> bit R/W PA 端口方向控制位 0: 输出 1: 非输出 ( 若 GPIO_PAINEB 对应位为 0, 则可作为数字输入端口使用 若需使能模拟通道功能, GPIO_PAINEB 和 GPIO_PADIR 对应位都应设置为 1) PA 端口方向置位寄存器 (GPIO_PADIRBSR) 偏移地址 : 18 H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DIRBSR<31:16> DIRBSR<15:0> DIRBSR<31:0> bit 31-0 W PA 端口方向置位选择 0: 不改变 GPIO_PADIR 值 1: 对应 GPIO_PADIR 设置为 1 V0.9 91/280

92 PA 端口方向清零寄存器 (GPIO_PADIRBCR) 偏移地址 : 1C H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DIRBCR<31:16> DIRBCR<15:0> DIRBCR<31:0> bit 31-0 W PA 端口方向清零选择 0: 不改变 GPIO_PADIR 的值 1: 对应 GPIO_PADIR 设置为 0 PA 端口方向翻转寄存器 (GPIO_PADIRBRR) 偏移地址 : 20 H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DIRBRR<31:16> DIRBRR<15:0> DIRBRR<31:0> bit 31-0 W PA 端口方向翻转选择 0: 不改变 GPIO_PADIR 的值 1: 对应 GPIO_PADIR 值翻转 PA[7:0] 端口复用选择寄存器 (GPIO_PAFUNC0) 偏移地址 :24 H 复位值 : _ _ _ B PA7<1:0> PA6<1:0> PA5<1:0> PA4<1:0> PA3<1:0> PA2<1:0> PA1<1:0> PA0<1:0> bit31-30 PA7 复用选择位 00:FUN0 PA7<1:0> bit29-28 R/W 01:FUN1 10:FUN2 11:FUN3 bit27-26 PA6<1:0> bit25-24 R/W PA6 复用选择位 V0.9 92/280

93 00~11:FUN0~FUN3 bit23-22 PA5<1:0> bit21-20 R/W PA5 复用选择位 00~11:FUN0~FUN3 bit19-18 PA4<1:0> bit17-16 R/W PA4 复用选择位 00~11:FUN0~FUN3 bit15-14 PA3<1:0> bit13-12 R/W PA3 复用选择位 00~11:FUN0~FUN3 bit11-10 PA2<1:0> bit9-8 R/W PA2 复用选择位 00~11:FUN0~FUN3 bit7-6 PA1<1:0> bit5-4 R/W PA1 复用选择位 00~11:FUN0~FUN3 bit3-2 PA0<1:0> bit1-0 R/W PA0 复用选择位 00~11:FUN0~FUN3 PA[15:8] 端口复用选择寄存器 (GPIO_PAFUNC1) 偏移地址 :28 H 复位值 : _ _ _ B PA15<1:0> PA14<1:0> PA13<1:0> PA12<1:0> PA11<1:0> PA10<1:0> PA9<1:0> PA8<1:0> bit31-30 PA15<1:0> bit29-28 R/W PA15 复用选择位 0 01:SCK0(FUN1) 10~11: 禁止 bit27-26 PA14 复用选择位 0 bit25-24 R/W <1:0> 01:NSS0(FUN1) 10~11: 禁止 bit23-22 PA13<1:0> bit21-20 R/W PA13 复用选择位 00~1 V0.9 93/280

94 11:MOSI0(FUN3) bit19-18 PA12<1:0> bit17-16 R/W PA12 复用选择位 00~1 11:MISO0(FUN3) bit15-14 PA11<1:0> bit13-12 R/W PA11 复用选择位 00:FUN0 01~11: 禁止 bit11-10 PA10<1:0> bit9-8 R/W PA10 复用选择位 00:FUN0 01~11: 禁止 bit7-6 PA9<1:0> bit5-4 R/W PA9 复用选择位 00~11:FUN0~FUN3 bit3-2 PA8<1:0> bit1-0 R/W PA8 复用选择位 00~11:FUN0~FUN3 PA[23:16] 端口复用选择寄存器 (GPIO_PAFUNC2) 偏移地址 :2C H 复位值 : _ _ _ B PA23<1:0> PA22<1:0> PA21<1:0> PA20<1:0> PA19<1:0> PA18<1:0> PA17<1:0> PA16<1:0> bit31-30 PA23<1:0> bit29-28 R/W PA23 复用选择位 00:FUN0 01: 禁止 10:FUN2 11:FUN3 bit27-26 PA22<1:0> bit25-24 R/W PA22 复用选择位 00:FUN0 01~11: 禁止 bit23-22 PA21<1:0> bit21-20 R/W PA21 复用选择位 00:FUN0 V0.9 94/280

95 01~11: 禁止 bit19-18 PA20<1:0> bit17-16 R/W PA20 复用选择位 00~11:FUN0~FUN3 bit15-14 PA19<1:0> bit13-12 R/W PA19 复用选择位 00~11:FUN0~FUN3 bit11-10 PA18<1:0> bit9-8 R/W PA18 复用选择位 00~11:FUN0~FUN3 bit7-6 PA17<1:0> bit5-4 R/W PA17 复用选择位 00:FUN0 01~11: 禁止 bit3-2 PA16<1:0> bit1-0 R/W PA16 复用选择位 00:FUN0 01~11: 禁止 PA[31:24] 端口复用选择寄存器 (GPIO_PAFUNC3) 偏移地址 :30 H 复位值 : _ _ _ B PA31<1:0> PA30<1:0> PA29<1:0> PA28<1:0> PA27<1:0> PA26<1:0> PA25<1:0> PA24<1:0> bit31-30 PA31 复用选择位 00:FUN0 PA31<1:0> bit29-28 R/W 01:FUN1 10:FUN2 11:FUN3 bit27-26 PA30<1:0> bit25-24 R/W PA30 复用选择位 00~11:FUN0~FUN3 bit23-22 PA29<1:0> bit21-20 R/W PA29 复用选择位 00~11:FUN0~FUN3 bit19-18 PA28<1:0> bit17-16 R/W PA28 复用选择位 V0.9 95/280

96 00~11:FUN0~FUN3 bit15-14 PA27<1:0> bit13-12 R/W PA27 复用选择位 00~11:FUN0~FUN3 bit11-10 PA26<1:0> bit9-8 R/W PA26 复用选择位 00~11:FUN0~FUN3 bit7-6 PA25<1:0> bit5-4 R/W PA25 复用选择位 00~11:FUN0~FUN3 bit3-2 PA24<1:0> bit1-0 R/W PA24 复用选择位 00~11:FUN0~FUN3 注 1:PA2/PA3/PA27/PA26 中只能有一个可配置为 PWM 输出的刹车控制信号, 优级为 :PA2>PA3>PA27>PA26, 例如一旦 PA3 设置为 PWM 输出刹车控制信号, 则 PA27 和 PA26 不可再配置为 PWM 输出刹车控制信号 注 2:GPIO_PAFUNCx 寄存器仅用于端口的数字输入输出功能选择 使用端口的模拟功能时, 需要设置 GPIO_PADIR 和 GPIO_PAINEB 寄存器的对应位为 1 来关闭端口数字功能的输入和输出 PA 端口输入控制寄存器 GPIO_PAINEB 偏移地址 :34 H 复位值 : _ _ _ B INEB<31:16> INEB<15:0> INEB<31:0> bit31-0 R/W 端口数字输入功能使能位 0: 开启 1: 关断 PA 端口开漏控制寄存器 GPIO_PAODE 偏移地址 :38 H 复位值 : _ _ _ B ODE<31:16> ODE<15:0> ODE<31:0> bit31-0 R/W 端口输出开漏使能位 V0.9 96/280

97 , 端口为推挽输出, 端口为开漏输出 PA 端口弱上拉使能寄存器 (GPIO_PAPUE) 偏移地址 :3C H 复位值 : _ _ _ B PUE <31:16> PUE <15:0> PUE<31:0> bit31-0 R/W 端口弱上拉使能位 PA 端口弱下拉使能寄存器 (GPIO_PAPDE) 偏移地址 :40 H 复位值 : _ _ _ B PDE <31:16> PDE <15:0> PDE<31:0> bit31-0 R/W 端口弱下拉使能位 PA 端口驱动电流控制寄存器 (GPIO_PADS) 偏移地址 :44 H 复位值 : _ _ _ B DS <31:16> DS <15:0> DS<31:0> bit31-0 R/W 端口输出驱动能力选择位 0: 普通电流驱动 1: 强电流驱动 V0.9 97/280

98 PB 端口状态寄存器 (GPIO_PBPORT) 偏移地址 :80 H 复位值 : _ _00xxxxxx _xxxxxxxx B PORT<13:0> - bit PORT<13:0> bit13-0 R PB 端口输入 / 输出电平 0: 低电平 1: 高电平 PB 端口数据寄存器 (GPIO_PBDATA) 偏移地址 :84 H 复位值 : _ _ _ B DATA<13:0> - bit DATA<13:0> bit13-0 R/W PB 端口输出电平 0: 输出低电平 1: 输出高电平 PB 端口输出置位寄存器 (GPIO_PBDATABSR) 偏移地址 :88 H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DATABSR<13:0> - bit DATABSR<13:0> bit13-0 W PB 输出置位选择 0: 不改变输出电平 1: 相应端口输出高电平 V0.9 98/280

99 PB 端口输出清零寄存器 (GPIO_PBDATABCR) 偏移地址 :8C H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DATABCR<13:0> - bit DATABCR<13:0> bit13-0 W PB 输出清零选择 0: 不改变输出电平 1: 相应端口输出低电平 PB 端口输出翻转寄存器 (GPIO_PBDATABRR) 偏移地址 :90 H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DATABRR<13:0> - bit DATABRR<13:0> bit13-0 W PB 输出翻转选择 0: 不改变输出电平 1: 相应端口输出翻转 PB 端口方向控制寄存器 (GPIO_PBDIR) 偏移地址 :94 H 复位值 : _ _ _ B DIR<13:0> - bit DIR<13:0> bit13-0 R/W PB 端口方向控制位 0: 输出 1: 输入 ( 若 GPIO_PBINEB 对应位为 0, 则可作为数字输入端口使用 若需使能模拟通道功能, V0.9 99/280

100 GPIO_PBINEB 和 GPIO_PBDIR 对应位都应设置为 1) PB 端口方向置位寄存器 (GPIO_PBDIRBSR) 偏移地址 :98 H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DIRBSR<13:0> - bit DIRBSR<13:0> bit13-0 W PB 端口方向置位选择 0: 不改变 GPIO_PBDIR 值 1: 对应 GPIO_PBDIR 设置为 1 PB 端口方向清零寄存器 (GPIO_PBDIRBCR) 偏移地址 :9C H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DIRBCR<13:0> - bit DIRBCR<13:0> bit13-0 W PB 端口方向清零选择 0: 不改变 GPIO_PBDIR 值 1: 对应 GPIO_PBDIR 设置为 0 PB 端口方向翻转寄存器 (GPIO_PBDIRBRR) 偏移地址 :A0 H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DIRBRR<13:0> - bit DIRBRR<13:0> bit13-0 W PB 端口方向翻转选择 0: 不改变 GPIO_PBDIR 值 V /280

101 1: 对应 GPIO_PBDIR 翻转 PB[7:0] 端口复用选择寄存器 (GPIO_PBFUNC0) 偏移地址 :A4 H 复位值 : _ _ _ B PB7<1:0> PB6<1:0> PB5<1:0> PB4<1:0> PB3<1:0> PB2<1:0> PB <1:0> PB0<1:0> bit31-30 PB7<1:0> bit29-28 R/W PB7 复用选择位 00:FUN0 01:FUN1 10:FUN2 11:FUN3 bit27-26 PB6<1:0> bit25-24 R/W PB6 复用选择位 00~11:FUN0~FUN3 bit23-22 PB5<1:0> bit21-20 R/W PB5 复用选择位 00~01:FUN0~FUN1 1 11:FUN3 bit19-18 PB4<1:0> bit17-16 R/W PB4 复用选择位 00~01:FUN0~FUN1 1 11:FUN3 bit15-14 PB3<1:0> bit13-12 R/W PB3 复用选择位 00~01:FUN0~FUN1 1 11:FUN3 bit11-10 PB2<1:0> bit9-8 R/W PB2 复用选择位 00~01:FUN0~FUN1 1 11:FUN3 bit7-6 PB1<1:0> bit5-4 R/W PB1 复用选择位 V /280

102 00~01:FUN0~FUN1 1 11:FUN3 bit3-2 PB0<1:0> bit1-0 R/W PB0 复用选择位 00~11:FUN0~FUN3 PB[15:8] 端口复用选择寄存器 (GPIO_PBFUNC1) 偏移地址 :A8 H 复位值 : _ _ _ B PB13<1:0> PB12<1:0> PB11<1:0> PB10<1:0> PB9<1:0> PB8<1:0> bit31-22 PB13<1:0> bit21-20 R/W PB13 复用选择位 00:FUN0 01:FUN1 10:FUN2 11:FUN3 bit19-18 PB12<1:0> bit17-16 R/W PB12 复用选择位 00~11:FUN0~FUN3 bit15-14 PB11<1:0> bit13-12 R/W PB11 复用选择位 00~11:FUN0~FUN3 bit11-10 PB10<1:0> bit9-8 R/W PB10 复用选择位 00~11:FUN0~FUN3 bit7-6 PB9<1:0> bit5-4 R/W PB9 复用选择位 00:FUN0 01~11: 禁止 bit3-2 PB8<1:0> bit1-0 R/W PB8 复用选择位 00~11:FUN0~FUN3 注 : GPIO_PBFUNCx 仅用于端口的数字输入输出功能选择 使用 PB 端口的模拟功能时, 需要设置 GPIO_PBDIR 和 GPIO_PBINEB 寄存器的对应位为 1 来关闭端口数字功能的输入和输出 V /280

103 PB 端口输入控制寄存器 (GPIO_PBINEB) 偏移地址 :B4 H 复位值 : _ _ _ B INEB<13:0> - bit INEB<13:0> bit13-0 R/W 端口数字输入功能使能位 0: 开启 1: 关断 PB 端口开漏控制寄存器 (GPIO_PBODE) 偏移地址 :B8 H 复位值 : _ _ _ B ODE<13:0> - bit ODE<13:0> bit13-0 R/W 端口输出开漏使能位, 端口为推挽输出, 端口为开漏输出 PB 端口弱上拉使能寄存器 (GPIO_PBPUE) 偏移地址 :BC H 复位值 : _ _ _ B PUEN<13:0> - bit PUEN<13:0> bit13-0 R/W 端口弱上拉使能位 V /280

104 PB 端口弱下拉使能寄存器 (GPIO_PBPDE) 偏移地址 :C0 H 复位值 : _ _ _ B PDEN<13:0> - bit PDEN<13:0> bit13-0 R/W 端口弱下拉使能位 PB 端口驱动电流控制寄存器 (GPIO_PBDS) 偏移地址 :C4 H 复位值 : _ _ _ B DS<13:0> - bit DS<13:0> bit13-0 R/W 端口输出驱动能力选择位 0: 普通电流驱动 1: 强电流驱动 PINT 中断使能寄存器 (GPIO_PINTIE) 偏移地址 :00 H 复位值 : _ _ _ B PMASK<7:0> PINTIE<7:0> bit31-16 PMASK<7:0> bit15-8 R/W PINTx 中断源屏蔽控制位 0: 不屏蔽 1: 屏蔽 PINTIE<7:0> bit7-0 R/W PINTx 使能位 V /280

105 PINT 中断标志寄存器 (GPIO_PINTIF) 偏移地址 :04 H 复位值 : _ _ _ B PINTIF<7:0> - bit PINTIF<7:0> bit7-0 R/W GPIO 外部中断标志位 0: 无中断 1: 有中断软件写 1 清除中断标志位, 写 0 无效 注 : 对 GPIO_PINTIF 寄存器中的各中断标志位, 写 0 无效, 写 1 才能清除标志位 ; 读操作时, 读取的值为 1 表示有中断发生 PINT0~7 中断源选择寄存器 (GPIO_PINTSEL) 偏移地址 :08 H 复位值 : _ _ _ B PINT7<2:0> PINT6<2:0> PINT5<2:0> PINT4<2:0> PINT3<2:0> PINT2<2:0> PINT1<2:0> PINT0<2:0> bit31 PINT7 输入选择位 PINT7<2:0> bit30-28 R/W 000~101:SEL0~SEL5 其余 : SEL0 bit27 PINT6 输入选择位 PINT6<2:0> bit26-24 R/W 000~101:SEL0~SEL5 其余 : SEL0 bit23 PINT5<2:0> bit22-20 R/W PINT5 输入选择位 000~101:SEL0~SEL5 V /280

106 其余 : SEL0 bit19 PINT4<2:0> bit18-16 R/W PINT4 输入选择位 000~101:SEL0~SEL5 其余 : SEL0 bit15 PINT3<2:0> bit14-12 R/W PINT3 输入选择位 000~101:SEL0~SEL5 其余 : SEL0 bit11 PINT2<2:0> bit10-8 R/W PINT2 输入选择位 000~101:SEL0~SEL5 其余 : SEL0 bit7 PINT1<2:0> bit6-4 R/W PINT1 输入选择位 000~101:SEL0~SEL5 其余 : SEL0 bit3 PINT0<2:0> bit2-0 R/W PINT0 输入选择位 000~101:SEL0~SEL5 其余 : SEL0 PINT 中断配置寄存器 (GPIO_PINTCFG) 偏移地址 :0C H 复位值 : _ _ _ B PINT7<2:0> PINT6<2:0> PINT5<2:0> PINT4<2:0> PINT3<2:0> PINT2<2:0> PINT1<2:0> PINT0<2:0> bit31 PINT7<2:0> bit30-28 R/W PINT7 配置位参见 GPIO_PINTCFG 详情 bit27 PINT6<2:0> bit26-24 R/W PINT6 配置位参见 GPIO_PINTCFG 详情 bit23 PINT5<2:0> bit22-20 R/W PINT5 配置位参见 GPIO_PINTCFG 详情 bit19 V /280

107 PINT4<2:0> bit18-16 R/W PINT4 配置位参见 GPIO_PINTCFG 详情 bit15 PINT3<2:0> bit14-12 R/W PINT3 配置位参见 GPIO_PINTCFG 详情 bit11 PINT2<2:0> bit10-8 R/W PINT2 配置位参见 GPIO_PINTCFG 详情 bit7 PINT1<2:0> bit6-4 R/W PINT1 配置位参见 GPIO_PINTCFG 详情 bit3 PINT0<2:0> bit2-0 R/W PINT0 配置位参见 GPIO_PINTCFG 详情 寄存器名称 PINTCFG<2:0> bit 2-0 R/W GPIO_PINTCFG 详情 GPIO_PINTCFG 配置位 000: 上升沿触发中断 001: 下降沿触发中断 010: 高电平触发中断 011: 低电平触发中断 1xx: 上升沿和下降沿均触发中断 KINT 中断使能寄存器 (GPIO_KINTIE) 偏移地址 :10 H 复位值 : _ _ _ B KMASK<7:0> KINTIE<7:0> bit31-16 KMASK<7:0> bit15-8 R/W KINx 按键输入屏蔽控制位 0: 不屏蔽 1: 屏蔽 KINTIE<7:0> bit7-0 R/W KINTx 中断使能位 KINT 中断标志寄存器 (GPIO_KINTIF) V /280

108 偏移地址 :14 H 复位值 : _ _ _ B KINTIF<7:0> - bit KINTIF<7:0> bit7-0 R/W GPIO 按键中断标志位 0: 无中断 1: 有中断软件写 1 清除中断标志位, 写 0 无效 注 : 对 GPIO_KINTIF 寄存器中的各中断标志位, 写 0 无效, 写 1 才能清除标志位 ; 读操作时, 读取的值为 1 表示 有中断发生 KINT0~7 中断源选择寄存器 (GPIO_KINTSEL) 偏移地址 :18 H 复位值 : _ _ _ B KINT7<2:0> KINT6<2:0> KINT5<2:0> KINT4<2:0> KINT3<2:0> KINT2<2:0> KINT1<2:0> KINT0<2:0> bit31 KINT7 输入选择位 KINT7<2:0> bit30-28 R/W 000~101:SEL0~SEL5 其余 : SEL0 bit27 KINT6 输入选择位 KINT6<2:0> bit26-24 R/W 000~101:SEL0~SEL5 其余 : SEL0 bit23 KINT5 输入选择位 KINT5<2:0> bit22-20 R/W 000~101:SEL0~SEL5 其余 : SEL0 bit19 KINT4 输入选择位 KINT4<2:0> bit18-16 R/W 000~101:SEL0~SEL5 其余 : SEL0 bit15 V /280

109 KINT3<2:0> bit14-12 R/W KINT3 输入选择位 000~101:SEL0~SEL5 其余 : SEL0 bit11 KINT2<2:0> bit10-8 R/W KINT2 输入选择位 000~101:SEL0~SEL5 其余 : SEL0 bit7 KINT1<2:0> bit6-4 R/W KINT1 输入选择位 000~101:SEL0~SEL5 其余 : SEL0 bit3 KINT0<2:0> bit2-0 R/W KINT0 输入选择位 000~101:SEL0~SEL5 其余 : SEL0 KINT 中断配置寄存器 (GPIO_KINTCFG) 偏移地址 :1C H 复位值 : _ _ _ B KINT7<2:0> KINT6<2:0> KINT5<2:0> KINT4<2:0> KINT3<2:0> KINT2<2:0> KINT1<2:0> KINT0<2:0> bit31 KINT7<2:0> bit30-28 R/W KINT7 配置位参见 GPIO_KINTCFG 详情 bit27 KINT6<2:0> bit26-24 R/W KINT6 配置位参见 GPIO_KINTCFG 详情 bit23 KINT5<2:0> bit22-20 R/W KINT5 配置位参见 GPIO_KINTCFG 详情 bit19 KINT4<2:0> bit18-16 R/W KINT4 配置位参见 GPIO_KINTCFG 详情 bit15 KINT3<2:0> bit14-12 R/W KINT3 配置位参见 GPIO_KINTCFG 详情 bit11 KINT2<2:0> bit10-8 R/W KINT2 配置位 V /280

110 参见 GPIO_KINTCFG 详情 bit7 KINT1<2:0> bit6-4 R/W KINT1 配置位参见 GPIO_KINTCFG 详情 bit3 KINT0<2:0> bit2-0 R/W KINT0 配置位参见 GPIO_KINTCFG 详情 寄存器名称 GPIO_KINTCFG bit 2-0 R/W GPIO_KINTCFG 详情 GPIO_KINTCFG 配置位 000: 上升沿触发中断 001: 下降沿触发中断 010: 高电平触发中断 011: 低电平触发中断 1xx: 上升沿和下降沿均触发中断 端口中断 20ns 滤波器分配控制寄存器 (GPIO_IOINTFLTS) 偏移地址 :30 H 复位值 : _ _ _ B FLT_S<7:0> - bit FLT_S<7:0> bit7-0 R/W 端口中断 20ns 滤波器分配控制位 0: 用于 PINT 中断信号源的滤波 1: 用于 KINT 中断信号源的滤波 TMR 输入端口 20ns 滤波器分配控制寄存器 (GPIO_TMRFLTSEL) 偏移地址 :40 H 复位值 : _ _ _ B FLT3_SEL<3:0> FLT2_SEL<3:0> FLT1_SEL<3:0> FLT0_SEL<3:0> - bit FLT3_SEL<3:0> bit15-12 R/W TMR FLT3 滤波器控制位 4 h0:t16n0_0 使用 TMR_FLT3 V /280

111 FLT2_SEL<3:0> bit11-8 R/W FLT1_SEL<3:0> bit7-4 R/W FLT0_SEL<3:0> bit3-0 R/W 4 h1:t16n0_1 使用 TMR_FLT3 4 h2:t16n1_0 使用 TMR_FLT3 4 h3:t16n1_1 使用 TMR_FLT3 4 h4:t16n2_0 使用 TMR_FLT3 4 h5:t16n2_1 使用 TMR_FLT3 4 h6:t16n3_0 使用 TMR_FLT3 4 h7:t16n3_1 使用 TMR_FLT3 4 h8:t32n0_0 使用 TMR_FLT3 4 h9:t32n0_1 使用 TMR_FLT3 其它 : 预留 TMR FLT2 滤波器控制位 4 h0:t16n0_0 使用 TMR_FLT2 4 h1:t16n0_1 使用 TMR_FLT2 4 h2:t16n1_0 使用 TMR_FLT2 4 h3:t16n1_1 使用 TMR_FLT2 4 h4:t16n2_0 使用 TMR_FLT2 4 h5:t16n2_1 使用 TMR_FLT2 4 h6:t16n3_0 使用 TMR_FLT2 4 h7:t16n3_1 使用 TMR_FLT2 4 h8:t32n0_0 使用 TMR_FLT2 4 h9:t32n0_1 使用 TMR_FLT2 其它 : 预留 TMR FLT1 滤波器控制位 4 h0:t16n0_0 使用 TMR_FLT1 4 h1:t16n0_1 使用 TMR_FLT1 4 h2:t16n1_0 使用 TMR_FLT1 4 h3:t16n1_1 使用 TMR_FLT1 4 h4:t16n2_0 使用 TMR_FLT1 4 h5:t16n2_1 使用 TMR_FLT1 4 h6:t16n3_0 使用 TMR_FLT1 4 h7:t16n3_1 使用 TMR_FLT1 4 h8:t32n0_0 使用 TMR_FLT1 4 h9:t32n0_1 使用 TMR_FLT1 其它 : 预留 TMR FLT0 滤波器控制位 4 h0:t16n0_0 使用 TMR_FLT0 4 h1:t16n0_1 使用 TMR_FLT0 4 h2:t16n1_0 使用 TMR_FLT0 4 h3:t16n1_1 使用 TMR_FLT0 4 h4:t16n2_0 使用 TMR_FLT0 4 h5:t16n2_1 使用 TMR_FLT0 4 h6:t16n3_0 使用 TMR_FLT0 4 h7:t16n3_1 使用 TMR_FLT0 4 h8:t32n0_0 使用 TMR_FLT0 V /280

112 4 h9:t32n0_1 使用 TMR_FLT0 其它 : 预留 SPI 输入端口 20ns 滤波器分配控制寄存器 (GPIO_SPIFLTSEL) 偏移地址 :44 H 复位值 : _ _ _ B FLT_SEL<3:0> - bit FLT_SEL<3:0> bit3-0 R/W SPI FLT 滤波器控制位 1:SPI1 使用该滤波器 0:SPI0 使用该滤波器 脉宽调制寄存器 (GPIO_TXPWM) 偏移地址 :80 H 复位值 : _ _ _ B TX1 TX1 TX1 TX1 保 TX1 TX1PS< TX0 TX0 TX0 TX0_ TX0PL TX0PS<1:0> _S3 _S2 _S1 _S0 留 PLV 1:0> _S3 _S2 _S1 S0 V - bit TX1_S3 bit15 R/W TXPWM1 调制输出使能端 ( 仅在 TXPWM0_S3=0 时有效 ) 0:BUZ 管脚正常输出 1:BUZ 管脚为 TXPWM1 输出 TX1_S2 bit14 R/W TXPWM1 调制输出使能端 0:T16N1OUT1 管脚正常输出 1:T16N1OUT1 管脚为 TXPWM1 输出 TX1_S1 bit13 R/W TXPWM1 调制输出使能端 0:T16N1OUT0 管脚正常输出 1:T16N1OUT0 管脚为 TXPWM1 输出 TX1_S0 bit12 R/W TXPWM1 调制输出使能端 0:E0TX0 管脚正常输出 1:E0TX0 管脚为 TXPWM1 输出 - bit V /280

113 TX1PLV bit10 R/W TXPWM1 调制电平选择位 0: 低电平调制 (E0TX0 与 TX1PS 所选取的脉冲信号进行硬件或操作 ) 1: 高电平调制 (E0TX0 与 TX1PS 所选取的脉冲信号进行硬件与操作 ) TX1PS<1:0> bit9-8 R/W TXPWM1 调制 PWM 脉冲选择位 00: 调制禁止 01: 与 T16N1OUT0 进行调制 10: 与 T16N1OUT1 进行调制 11: 与 BUZ 进行调制 TX0_S3 bit7 R/W TXPWM0 调制输出使能端 0:BUZ 管脚正常输出 1:BUZ 管脚为 TXPWM0 输出 TX0_S2 bit6 R/W TXPWM0 调制输出使能端 0:T16N0OUT1 管脚正常输出 1:T16N0OUT1 管脚为 TXPWM0 输出 TX0_S1 bit5 R/W TXPWM0 调制输出使能端 0:T16N0OUT0 管脚正常输出 1:T16N0OUT0 管脚为 TXPWM0 输出 TX0_S0 bit4 R/W TXPWM0 调制输出使能端 0:TXD0 管脚正常输出 1:TXD0 管脚为 TXPWM0 输出 - bit3 - - TX0PLV bit2 R/W TXPWM0 调制电平选择位 0: 低电平调制 (TXD0 与 TX0PS 所选取的脉冲信号进行硬件或操作 ) 1: 高电平调制 (TXD0 与 TX0PS 所选取的脉冲信号进行硬件与操作 ) TX0PS<1:0> bit1-0 R/W TXPWM0 调制 PWM 脉冲选择位 00: 调制禁止 01: 与 T16N0OUT0 进行调制 10: 与 T16N0OUT1 进行调制 11: 与 BUZ 进行调制 BUZ 控制寄存器 (GPIO_BUZC) 偏移地址 :84 H 复位值 : _ _ _ B BUZ_LOAD<19:8> BUZ_LOAD<7:0> BUZEN V /280

114 - bit BUZ_LOAD<19:0> bit27-8 R/W BUZ 计数装载值寄存器 BUZ 信号频率的计算公式为 : FPCLK/ (2*(BUZ_LOAD+1)) - bit BUZEN bit0 R/W BUZ 使能位 V /280

115 第 5 章 MCU 外设 5. 1 定时器 / 计数器 位定时器 / 计数器 T16N(T16N0/ T16N1/ T16N2/ T16N3) 概述 1 个 8 位可配置预分频器, 分频时钟作为 T16N_CNT0/1 定时 / 计数时钟 预分频时钟源可选 :PCLK 或 T16NxCKy 预分频计数器可由 T16N_PRECNT 寄存器设定预设值 分频比由寄存器 T16N_PREMAT 设定 2 个 16 位可配置定时 / 计数寄存器 T16N_CNT0/1 T16N_CNT1 仅在独立调制工作模式或 T16N_CNT1 峰值触发 ADC 转换被使 能时可用 2 个 16 位峰值寄存器 T16N_TOP0/1 T16N_CNT0/1 计数值达到峰值时被清零 在调制工作模式下, 若使能 ADC 触发功能,T16N_CNT0/1 计数值达到峰值时 可分别产生 ADC 转换触发信号 支持定时 / 计数工作模式 支持 4 组 16 位计数匹配寄存器 T16N_MATy, 计数匹配后支持下列操作 : 产生中断 支持 T16N_CNT0 计数寄存器三种操作 : 保持, 清 0 或继续计数 支持 T16NxOUTy 端口四种操作 : 保持, 清 0, 置 1 或取反 支持输入捕捉工作模式 捕捉边沿可配置 捕捉次数可配置 支持调制工作模式 通过对匹配寄存器进行配置, 同时设置匹配后端口输出特性, 可得到相应的 PWM 输出 支持调制过程触发 ADC 转换 匹配 0 匹配 1 匹配 2 匹配 3 及峰值 0 与 T16N_CNT0 计数值匹配触发 峰值 1 与 T16N_CNT1 计数值匹配触发 两路 PWM 可配置为独立 / 同步 / 互补等三种模式 独立模式,T16NxOUTy 输出不同的 PWM 波形 同步模式,T16NxOUTy 输出相同 PWM 波形 互补模式,T16NxOUTy 输出互补 PWM 波形 互补模式下死区时间宽度可配置 V /280

116 支持刹车控制 可通过 GPIO_PAFUNCx 寄存器来选取 PA2(T16N0_BK), PA3 (T16N1_BK), PA26(T16N2_BK) 或 PA27(T16N3_BK), 其中任意一个作为外部刹车信号, 有效刹车极性可配置 刹车输出电平可配置 结构框图 T16N_MATy ADC T16N_TOPy 数值比较器 T16NxOUTy PCLK T16NxCKy M U X T16N_PREMAT T16N_CNTy T16NxINy 捕捉选择 T16N_MATy 图 5-1 T16N 电路结构框图 T16N 定时 / 计数功能设置 T16N_CON0 寄存器的 MOD<1:0>=00 或 01, 使 T16N 工作在定时 / 计数模式 设置 T16N_CON0 寄存器的 EN=1, 使能 T16N, 计数值寄存器 T16N_CNTy 从预设值开始累加计数 设置 T16N_CON0 寄存器的 CS, 选择计数时钟源 时钟源为内部时钟 PCLK 时, 为定时模式 ; 时钟源为外部时钟 T16NxCKy 端口输入时, 为计数模式 设置 T16N_CON0 寄存器的 SYNC, 选择外部时钟 T16NxCKy 是否被内部时钟 PCLK 同步 当选择外部时钟被同步时, 为同步计数模式, 否则为异步计数模式 同步计数模式时, T16NxCKy 端口输入的高 / 低电平脉宽均必须大于 2 个 PCLK 时钟周期 设置 T16N_CON0 寄存器的 EDGE, 选择外部时钟计数方式 : 上升沿计数, 下降沿计数, 或上升 / 下降沿均计数, 其中上升 / 下降沿均计数只适用于同步计数模式 设置 T16N_CON0 寄存器的 MATyS, 选择计数匹配后 T16N_CNTy 计数值寄存器的工作状态 MATyS<1:0>=00: 当 T16N_CNTy 计数值匹配 T16N_MATy 时, 继续累加计数, 不产生中断, 当计数到 0xFFFF 后, 下一次累加计数溢出,T16N_CNTy 的值为 0x0000, 并产生中断, 重新开始累加计数 MATyS<1:0>=01: 当 T16N_CNTy 计数值匹配 T16N_MATy 时, 计数值将保持, 即在下一个计数时钟 ( 经过预分频之后的时钟 ) 到来时,T16N_CNTy 不再累加计数, 只产生中断 MATyS<1:0>=10: 当 T16N_CNTy 计数值匹配 T16N_MATy 时, 计数值在下一个计数时钟 ( 经过预分频之后的时钟 ) 到来时被清 0, 并产生中断, 重新开始累加计数 V /280

117 MATyS<1:0>=11: 当 T16N_CNTy 计数值匹配 T16N_MATy 时, 继续累加计数, 并在下一个计数时钟 ( 经过预分频之后的时钟 ) 到来时, 产生中断, 当计数到 0xFFFFH, 下一次累加计数溢出,T16N_CNTy 的值为 0x0000, 并产生中断, 重新开始累加计数 如果 T16N_CNT0 的计数值匹配 T16N_MAT0/1/2/3, 当 T16N_CON1 寄存器的 MOE0=1 时,T16NxOUT0 端口输出翻转 ; 当 MOE1=1 时,T16NxOUT1 端口输出翻转 可选择 T16NxOUT0/1 端口同时输出 举例说明 :T16N_CNTy 计数值匹配 T16N_MATy 后的工作方式 T16N_MAT0<15:0>=0x0002,T16N_CON0 寄存器的 MAT0S<1:0>=00, 继续计数, 不产生中断 T16N_MAT1<15:0>=0x0004,T16N_CON0 寄存器的 MAT1S<1:0>=11, 继续计数, 产生中断 ; T16N_MAT2<15:0>=0x0006,T16N_CON0 寄存器的 MAT2S<1:0>=10, 清 0, 产生中断, 重新计数 预分频设置为 1:1, 采用内部 PCLK 时钟源 计数匹配功能示意图如下所示 : MAT1IF MAT2IF PCLK T16N_CNTy 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0000 0x0001 图 5-2 T16N 计数匹配功能示意图 T16N 输入捕捉功能设置 T16N_CON0 寄存器的 MOD<1:0>=10, 使 T16N 工作在捕捉模式 在捕捉模式下 T16N_CNT1 不可使用 在捕捉工作模式下, 需设置 T16N_CON0 寄存器的 CS<1:0>=00, 使 T16N_CNT0 采用内部 PCLK 时钟源计数 ; 并且设置 T16N_CON0 寄存器的 MATyS<1:0>=00, 计数匹配不影响 T16N_CNT0 的工作 在捕捉工作模式下, 对端口 T16NxIN0 和 T16NxIN1 的状态进行检测 当 T16NxIN0 端口的状态变化符合所设定的捕捉事件时, 将 T16N_CNT0 和 T16N_PRECNT 的当前值分别装载到 T16N_MAT0 和 T16N_MAT2 寄存器中, 产生 T16N 的 CAP0IF 中断 通过使能 T16N_CON1 寄存器的 CAPL0 可在 CAP0IF 中断时将 T16N_CNT0 和 T16N_PRECNT 清零 ; 若 CAPL0 为零, 则计数器继续累加 当 T16NxIN1 端口的状态变化符合所设定的捕捉事件时, 将 T16N_CNT0 和 T16N_PRECNT 的当前值分别装载到 T16N_MAT1 和 T16N_MAT3 寄存器中, 产生 T16N 的 CAP1IF 中断 通过使能 T16N_CON1 寄存器的 CAPL1 可在 CAP1IF 中断时将 T16N_CNT0 和 T16N_PRECNT 清零 ; 若 CAPL1 为零, 则计数器继续累加 当 T16N_CNT0 计数直到溢出时, 仍未检测到设定的捕捉事件,T16N_CNT0 的值被清零, 并重新开始累加计数 V /280

118 设置 T16N_CON1 寄存器的 CAPPE 和 CAPNE, 可选择 T16NxIN0 和 T16NxIN1 端口信号的捕捉事件 选择捕捉上升沿 : 只设置 CAPPE 为 1; 选择捕捉下将沿 : 只设置 CAPNE 为 1; 选择捕捉上升沿 / 下降沿 : 设置 CAPPE 为 1,TCAPNE 为 1 设置 TT16N_CON1 寄存器的 CAPIS0, 选择 T16NxIN0 是否作为捕捉输入端口 ; 设置 CAPIS1, 选择 T16NxIN1 是否作为捕捉输入端口 ; 可同时选择两个端口作为捕捉输入端口 设置 T16N_CON1 寄存器的 TCAPT, 可选择捕捉事件发生的次数 举例说明 : 捕捉 T16NxIN0 端口上升沿 / 下降沿, 捕捉 8 次 ; 预分频设置为 1:1 T16N_CON0 寄存器的 MOD<1:0>=10,CS<1:0>=00,MAT0S<1:0>=00, T16N_CON1 寄存器的 CAPPE=1,CAPNE=1,CAPIS=1, CAPT<3:0>=0111 CAP0IF CAP0IF T16NxIN0 PCLK 0x0000 0x0000 0x0000 T16N_CNT0 T16N_MAT0 0x0000 Load Event Load Event 0x0000 0x0000 0x0000 T16N_PRECNT T16N_MAT2 0x0000 Load Event Load Event 图 5-3 T16N 捕捉功能示意图在捕捉工作模式下, 修改 T16N 预分频器计数匹配寄存器 T16N_PREMAT 时, 预分频器计数不会被清零 因此, 首次捕捉可以从一个非零预分频器计数开始 当捕捉事件匹配发生时, 产生的中断标志位必须通过软件清除, 并及时读取捕捉到 T16N_MATy 寄存器的值, 在下一次捕捉事件发生时,T16N_MATy 寄存器会装载为新的计数值 T16N 输出调制功能设置 T16N_CON0 寄存器的 MOD<1:0>=11, 使 T16N 工作在调制模式 在调制工作模式下, 需设置 T16N_CON0 寄存器的 CS<1:0>=00, 使 T16N_CNT 采用内部 PCLK 时钟源计数 V /280

119 设置 T16N_CON1 寄存器的 MOE0, 选择 T16NxOUT0 是否使能为匹配输出端口, 使能时启用 T16N_MAT0/1 匹配寄存器和 T16N_CNT0 进行匹配 ; 设置设置 T16N_CON1 寄存器的 MOE1, 选择 T16NxOUT1 是否使能为匹配输出端口, 使能时启用 T16N_MAT2/3 匹配寄存器和 T16N_CNT0 或 T16N_CNT1(PWM 独立工作模式 ) 进行匹配 设置 T16N_CON2 寄存器的 MOMy, 选择计数匹配发生时, 对 T16NxOUT0/1 端口的影响 : 保持, 清 0, 置 1, 取反 两路 PWM 可配置为独立 / 同步 / 互补等三种模式 : 独立模式,T16NxOUTy 输出不同的 PWM 波形 其中 T16N_CNT0 匹配 T16N_MAT0/1, 控制 T16NxOUT0 输出 ; 而 T16N_CNT1 匹配 T16N_MAT2/3, 控制 T16NxOUT1 输出 同步模式,T16NxOUTy 输出相同 PWM 波形 ; 互补模式,T16NxOUTy 输出互补 PWM 波形 互补模式下死区时间宽度可配置 调制工作模式下支持匹配 0 匹配 1 匹配 2 匹配 3 峰值 0 及峰值 1 触发 ADC: 匹配 0 匹配 1 匹配 2 匹配 3 峰值 0 与 T16N_CNT0 计数值匹配, 匹配时产生 ADC 触发信号 ; 峰值 1 与 T16N_CNT1 计数值匹配, 匹配时产生 ADC 触发信号 举例说明 : 同步模式, 在 T16NxOUT0 和 T16NxOUT1 端口, 产生双边 PWM 波形 T16N_CON1 寄存器中 : MOE0=1,MOE1=1;T16NxOUT0 和 T16NxOUT1 匹配输出端口使能 ; MOM0<1:0>=10;T16N_MAT0 匹配,T16NxOUT0 输出高电平 ; MOM1<1:0>=01;T16N_MAT1 匹配,T16NxOUT0 输出低电平 ; MOM2<1:0>=10;T16N_MAT2 匹配,T16NxOUT1 输出高电平 ; MOM3<1:0>=01;T16N_MAT3 匹配,T16NxOUT1 输出低电平 ; T16N_MAT0 = 0x0002;T16N_MAT1 = 0x0004; T16N_MAT2 = 0x0006;T16N_MAT3 = 0x0008; T16N_CON0 寄存器中 : MOD<1:0>=11;T16N 设置为调制输出 MAT0S<1:0>=11;T16N_CNT 继续计数, 并产生中断 MAT1S<1:0>=11;T16N_CNT 继续计数, 并产生中断 MAT2S<1:0>=11;T16N_CNT 继续计数, 并产生中断 MAT3S<1:0>=10;T16N_CNT 清 0, 并产生中断 V /280

120 MAT0IF MAT1IF MAT2IF MAT3IF PCLK T16N_CNT 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0000 T16NxOUT0 T16NxOUT1 图 5-4 T16N 输出调制功能示意图 特殊功能寄存器 T16N 计数值寄存器 (T16N_CNT0) 偏移地址 :00 H 复位值 : _ _ _ B CNT0<15:0> - bit CNT0<15:0> bit 15-0 R/W T16N_CNT0 计数值 注 1:T16N_CNT0 可使用所有的 T16N 的 T16N_MATy 寄存器, 但在计数器被设置为捕捉模式, 即 T16N_CON0 寄存器中 MOD=0x2 时,T16N_CNT0 只能使用 T16N_MAT0/1; 而 T16N_CNT1 任何情况下仅可使用 T16N_MAT2/3 T16N 计数值寄存器 (T16N_CNT1) 偏移地址 :04 H 复位值 : _ _ _ B CNT1<15:0> - bit CNT1<15:0> bit 15-0 R/W T16N_CNT1 计数值 V /280

121 T16N 预分频器计数值寄存器 (T16N_PRECNT) 偏移地址 :08 H 复位值 : _ _ _ B PRECNT<7:0> - bit PRECNT<7:0> bit7-0 R/W T16N 预分频器计数值 T16N 预分频器计数比例寄存器 (T16N_PREMAT) 偏移地址 :0C H 复位值 : _ _ _ B PREMAT<7:0> - bit PREMAT<7:0> bit7-0 R/W 预分频比例设置位 00: 预分频 1:1 01: 预分频 1:2 02: 预分频 1:3 FE: 预分频 1:255 FF: 预分频 1:256 T16N 控制寄存器 0(T16N_CON0) 偏移地址 :10 H 复位值 : _ _ _ B ASYWEN MAT3S<1:0> MAT2S<1:0> MAT1S<1:0> MAT0S<1:0> MOD<1:0> EDGE<1:0> SYNC CS<1:0> EN bit 31~17 ASYWEN bit 16 R/W 外部时钟异步计数模式下, 对计数器的写使能位 写 T16N_CNT0 和 T16N_PRECNT, 如果强制写, 有可能写操作不成功 ( 为避免对计数器的写操作错误, 不 V /280

122 建议用户对该位写 0) 写 T16N_CNT0 和 T16N_PRECNT MAT3S<1:0> bit 15~14 R/W T16N_CNT0 匹配 T16N_MAT3 后的工作模式选择位 00:T16N_CNT0 继续计数, 不产生中断 01:T16N_CNT0 保持, 产生中断 10:T16N_CNT0 清 0 并重新计数, 产生中断 11:T16N_CNT0 继续计数, 产生中断 MAT2S<1:0> bit 13~12 R/W T16N_CNT0 匹配 T16N_MAT2 后的工作模式选择位 00:T16N_CNT0 继续计数, 不产生中断 01:T16N_CNT0 保持, 产生中断 10:T16N_CNT0 清 0 并重新计数, 产生中断 11:T16N_CNT0 继续计数, 产生中断 MAT1S<1:0> bit 11~10 R/W T16N_CNT0 匹配 T16N_MAT1 后的工作模式选择位 00:T16N_CNT0 继续计数, 不产生中断 01:T16N_CNT0 保持, 产生中断 10:T16N_CNT0 清 0 并重新计数, 产生中断 11:T16N_CNT0 继续计数, 产生中断 MAT0S<1:0> bit 9~8 R/W T16N_CNT0 匹配 T16N_MAT0 后的工作模式选择位 00:T16N_CNT0 继续计数, 不产生中断 01:T16N_CNT0 保持, 产生中断 10:T16N_CNT0 清 0 并重新计数, 产生中断 11:T16N_CNT0 继续计数, 产生中断 MOD<1:0> bit 7~6 R/W 工作模式选择位 00: 定时 / 计数模式 01: 定时 / 计数模式 10: 捕捉模式 11: 调制模式 EDGE<1:0> bit 5~4 R/W 外部时钟计数边沿选择位 00: 上升沿计数 01: 下降沿计数 10: 上升沿 / 下降沿均计数 ( 仅同步计数模式 ) 11: 上升沿 / 下降沿均计数 ( 仅同步计数模式 ) SYNC bit 3 R/W 外部时钟同步使能位 0: 不同步外部时钟 T16NxCKy, 为异步计数模式 1: 通过 PCLK 对外部时钟 T16NxCKy 同步, 为同步计数模式, 外部时钟的高 / 低电平均至少保持 2 个 PCLK 时钟周期 CS<1:0> bit 2~1 R/W T16N 计数时钟源选择位 00: 内部时钟 PCLK 01: 外部时钟 T16NxCK0 10: 外部时钟 T16NxCK1 11: 内部时钟 PCLK V /280

123 EN bit 0 R/W T16N 使能位 注 1:PCLK 为芯片内部外设模块时钟源, 时钟频率与芯片系统时钟频率相同 T16N 控制寄存器 1(T16N_CON1) 偏移地址 :14 H 复位值 : _ _ _ B 停留 停留 CAPL1 CAPL0 CAPT<3:0> CAPIS1 CAPIS0 CAPNE CAPPE - bit CAPL1 bit9 R/W 捕捉 1 重载计数器使能位 CAPL0 bit8 R/W 捕捉 0 重载计数器使能位 CAPT<3:0> bit7-4 R/W 捕捉次数控制位 0: 捕捉 1 次后, 产生装载动作 1: 捕捉 2 次后, 产生装载动作 2: 捕捉 3 次后, 产生装载动作 F: 捕捉 16 次后, 产生装载动作 CAPIS1 bit3 R/W 捕捉输入端口 T16NxIN1 使能位 CAPIS0 bit2 R/W 捕捉输入端口 T16NxIN0 使能位 CAPNE bit1 R/W 下降沿捕捉使能位 CAPPE bit0 R/W 上升沿捕捉使能位 T16N 控制寄存器 2(T16N_CON2) V /280

124 偏移地址 :18 H 复位值 : _ _ _ B PWMBK F PWMB KP1 PWMBK P0 PWMBK L1 PWMBK L0 PWMBK E1 PWMBK E0 MOM3<1: 0> MOM2<1: 0> MOM1<1: 0> MOM0<1:0> PWMD ZE PWMM OD POL1 POL0 MOE1 MOE PWMBKF bit24 R/W PWM 刹车事件标志位 0: 未发生刹车事件 1: 发生刹车事件,PWM 端口输出刹车电平 ; 软件写 1 清零, 清零后 PWM 端口输出恢复正常 PWMBKP1 bit23 R/W PWM 通道 1 刹车信号极性选择位 0: 高电平刹车 1: 低电平刹车 PWMBKP0 bit22 R/W PWM 通道 0 刹车信号极性选择位 0: 高电平刹车 1: 低电平刹车 bit PWMBKL1 bit19 R/W PWM 通道 1 刹车输出电平选择位 0: 输出低电平 1: 输出高电平 PWMBKL0 bit18 R/W PWM 通道 0 刹车输出电平选择位 0: 输出低电平 1: 输出高电平 PWMBKE1 bit17 R/W PWM 通道 1 刹车使能位 PWMBKE0 bit16 R/W PWM 通道 0 刹车使能位 MOM3<1:0> bit15-14 R/W T16N_MAT3 匹配后的端口 1 工作模式选择位 00: 匹配端口保持 01: 匹配端口清 0 10: 匹配端口置 1 11: 匹配端口取反 MOM2<1:0> bit13-12 R/W T16N_MAT2 匹配后的端口 1 工作模式选择位 00: 匹配端口保持 01: 匹配端口清 0 10: 匹配端口置 1 11: 匹配端口取反 V /280

125 MOM1<1:0> bit11-10 R/W T16N_MAT1 匹配后的端口 0 工作模式选择位 00: 匹配端口保持 01: 匹配端口清 0 10: 匹配端口置 1 11: 匹配端口取反 MOM0<1:0> bit9-8 R/W T16N_MAT0 匹配后的端口 0 工作模式选择位 00: 匹配端口保持 01: 匹配端口清 0 10: 匹配端口置 1 11: 匹配端口取反 - Bit PWMDZE bit5 R/W PWM 互补模式死区使能位 PWMMOD bit4 R/W PWM 模式选择位 0x: 独立 10: 同步 11: 互补 POL1 bit3 R/W T16NxOUT1 输出极性选择位 0: 正极性 1: 反极性 POL0 bit2 R/W T16NxOUT0 输出极性选择位 0: 正极性 1: 反极性 MOE1 bit1 R/W 输出端口 1 使能位 MOE0 bit0 R/W 输出端口 0 使能位 注 1: 刹车信号可通过 GPIO_PAFUNCx 寄存器配置为 PA2/PA3/PA27/PA26 中的其中一个, 而且只能选一个 T16N 中断使能寄存器 (T16N_IE) 偏移地址 :20 H 复位值 : _ _ _ B PBK1IE PBK0IE CAP1IE CAP0IE TOP1IE TOP0IE MAT3IE MAT2IE MAT1IE MAT0IE - bit V /280

126 PBK1IE bit9 R/W PBK0IE bit8 R/W CAP1IE bit7 R/W CAP0IE bit6 R/W TOP1IE bit5 R/W TOP0IE bit4 R/W MAT3IE bit3 R/W MAT2IE bit2 R/W MAT1IE bit1 R/W MAT0IE bit0 R/W PWM 通道 1 刹车中断使能位 PWM 通道 0 刹车中断使能位 输入端口 T16NxIN1 捕捉中断使能位 输入端口 T16NxIN0 捕捉中断使能位 T16N_CNT1 匹配计数峰值中断使能位 T16N_CNT0 匹配计数峰值中断使能位 匹配 3 中断使能位 匹配 2 中断使能位 匹配 1 中断使能位 匹配 0 中断使能位 T16N 中断标志寄存器 (T16N_IF) 偏移地址 :24 H 复位值 : _ _ _ B PBK1IF PBK0IF CAP1IF CAP0IF TOP1IF TOP0IF MAT3IF MAT2IF MAT1IF MAT0IF - bit PBK1IF bit9 R/W PWM 通道 1 刹车中断标志位 0: 无刹车中断 V /280

127 PBK0IF bit8 R/W CAP1IF bit7 R/W CAP0IF bit6 R/W TOP1IF bit5 R/W TOP0IF bit4 R/W MAT3IF bit3 R/W MAT2IF bit2 R/W MAT1IF bit1 R/W MAT0IF bit0 R/W 1: 通道 1 刹车事件产生软件写 1 清除标志位, 写 0 无效 PWM 通道 0 刹车中断标志位 0: 无刹车中断 1: 通道 0 刹车事件产生软件写 1 清除标志位, 写 0 无效输入端口 1 捕捉成功中断标志位 0: 输入端口 1 捕捉未成功 1: 输入端口 1 捕捉成功软件写 1 清除标志位, 写 0 无效输入端口 0 捕捉成功中断标志位 0: 输入端口 0 捕捉未成功 1: 输入端口 0 捕捉成功软件写 1 清除标志位, 写 0 无效 T16N_CNT1 匹配计数峰值中断标志位 0: 未匹配 1: 匹配峰值软件写 1 清除标志位, 写 0 无效 T16N_CNT0 匹配计数峰值中断标志位 0: 未匹配 1: 匹配峰值软件写 1 清除标志位, 写 0 无效匹配 3 中断标志位 0: 计数器值与匹配寄存器 3 不相等 1: 计数器值与匹配寄存器 3 相等软件写 1 清除标志位, 写 0 无效匹配 2 中断标志位 0: 计数器值与匹配寄存器 2 不相等 1: 计数器值与匹配寄存器 2 相等软件写 1 清除标志位, 写 0 无效匹配 1 中断标志位 0: 计数器值与匹配寄存器 1 不相等 1: 计数器值与匹配寄存器 1 相等软件写 1 清除标志位, 写 0 无效匹配 0 中断标志位 0: 计数器值与匹配寄存器 0 不相等 1: 计数器值与匹配寄存器 0 相等软件写 1 清除标志位, 写 0 无效 注 1: 在定时 / 计数, 捕捉, 调制模式下, 均可对计数器 T16N_CNT0 值与匹配寄存器 T16N 的 T16N_MATy 值比较是否相等 但在 PWM 调制模式下若设置为独立模式, 即 PWMMOD=2 b0x, 则计数器 T16N_CNT0 值与 T16N_MAT0 和 T16N_MAT1 比较 ; 计数器 T16N_CNT1 值与 T16N_MAT2 和 T16N_MAT3 比较 注 2:T16N 中断禁止时, 如果满足条件仍会置起对应的中断标志位, 只是不会产生中断请求 V /280

128 注 3: 对 T16N_IF 寄存器的各中断标志位, 写 0 无效, 写 1 才能清除标志位 ; 读操作时, 读取的值为 1 表示有中断发生 注 4: 刹车使能时即 PWMBKE0 或 PWMBKE1 置 1,T16N_IF 寄存器中 PBK0IF 或 PBK1IF 在刹车事件产生时才被置 1 PWM 调制模式死区宽度寄存器 (T16N_PDZ) 偏移地址 :28 H 复位值 : _ _ _ B PDZ<7:0> - bit PDZ<7:0> bit7-0 R/W PWM 调制模式死区宽度寄存器 0x00: 死区为 1 个计数周期 0x01: 死区为 2 个计数周期 0xFF: 死区为 256 个计数周期 PWM 调制模式 ADC 触发寄存器 (T16N_PTR) 偏移地址 :2C H 复位值 : _ _ _ B P1TOP1 TRE P1MAT3T RE P1MAT2 TRE P0TOP0T RE P0MAT1TRE P0MAT0TR E - bit P1TOP1TRE bit7 R/W PWM 通道 1 峰值 1 触发使能 触发 ADC 转换 P1MAT3TRE bit6 R/W PWM 通道 1 匹配 3 触发使能 触发 ADC 转换 P1MAT2TRE bit5 R/W PWM 通道 1 匹配 2 触发使能 触发 ADC 转换 - bit4 - - V /280

129 P0TOP0TRE bit3 R/W PWM 通道 0 峰值 0 触发使能 触发 ADC 转换 P0MAT1TRE bit2 R/W PWM 通道 0 匹配 1 触发使能 触发 ADC 转换 P0MAT0TRE bit1 R/W PWM 通道 0 匹配 0 触发使能 触发 ADC 转换 - bit0 - - T16N 计数匹配寄存器 0(T16N_MAT0) 偏移地址 :30 H 复位值 : _ _ _ B MAT0<15:0> - bit MAT0<15:0> bit15-0 R/W T16N 计数匹配值 0 T16N 计数匹配寄存器 1(T16N_MAT1) 偏移地址 :34 H 复位值 : _ _ _ B MAT1<15:0> - bit MAT1<15:0> bit15-0 R/W T16N 计数匹配值 1 T16N 计数匹配寄存器 2(T16N_MAT2) 偏移地址 :38 H 复位值 : _ _ _ B V /280

130 MAT2<15:0> - bit MAT2<15:0> bit15-0 R/W T16N 计数匹配值 2 T16N 计数匹配寄存器 3(T16N_MAT3) 偏移地址 :3C H 复位值 : _ _ _ B MAT3<15:0> - bit MAT3<15:0> bit15-0 R/W T16N 计数匹配值 3 T16N_CNT0 计数峰值寄存器 0(T16N_TOP0) 偏移地址 :40 H 复位值 : _ _ _ B TOP0<15:0> - bit TOP0<15:0> bit15-0 R/W T16N_CNT0 计数峰值寄存器 0 T16N_CNT1 计数峰值寄存器 1(T16N_TOP1) 偏移地址 :44 H 复位值 : _ _ _ B TOP1<15:0> - bit TOP1<15:0> bit15-0 R/W T16N_CNT1 计数峰值寄存器 1 V /280

131 T16N 应用说明芯片支持 4 个 16 位定时器 / 计数器, 分别为 T16N0,T16N1,T16N2 和 T16N 位定时器 / 计数器 T32N(T32N0) 概述 1 个 8 位可配置预分频计数器, 所产生分频时钟作为 T32N_CNT 计数器的定时或计数时钟 预分频时钟源可选 :PCLK 或 T32NxCKy 预分频计数器可由 T32N_PRECNT 寄存器设定计数初值 分频比由 T32N_PREMAT 寄存器设定 1 个 32 位可配置定时 / 计数寄存器 T32N_CNT 可配置定时 / 计数工作模式 支持 4 组 32 位计数匹配寄存器 T32N_MATy, 计数匹配后支持下列操作 : 产生中断 支持 T32N_CNT 计数寄存器三种操作 : 保持, 清 0, 或继续计数 支持 T32NxOUTy 端口四种操作 : 保持, 清 0, 置 1, 或取反 支持输入捕捉功能 支持捕捉边沿可配置 支持捕捉次数可配置 支持输出调制功能 PWM 结构框图 T32N_MATy 数值比较器 T32NxOUTy PCLK T32NxCKy M U X 预分频 T32N_CNT T32NxINy 捕捉选择 T32N_MATy 图 5-5 T32N 电路结构框图 T32N 定时 / 计数功能 设置 T32N_CON0 寄存器的 MOD<1:0> =00 或 01, 时 T32N 工作在定时 / 计数模式 V /280

132 设置 T32N_CON0 寄存器的 EN=1, 使能 T32N, 计数值寄存器 T32N_CNT 从预设值开始累加计数 设置 T32N_CON0 寄存器的 CS, 选择择计数时钟源 时钟源为内部时钟 PCLK 时, 为定时模式 ; 时钟源为外部时钟 T32NxCKy 端口输入时, 为计数模式 设置 T32N_CON0 寄存器的 SYNC, 选择外部时钟 T32NxCKy 是否被内部时钟 PCLK 同步 当选择外部时钟被同步时, 为同步计数模式, 否则为异步计数模式 同步计数模式时, T32NxCKy 端口输入的高 / 低电平脉宽均必须大于 2 个 PCLK 时钟周期 设置 T32N_CON0 寄存器的 EDGE, 选择外部时钟计数方式 : 上升沿计数, 下降沿计数, 或上升 / 下降沿均计数, 其中上升 / 下降沿均计数只适用于同步计数模式 设置 T32N_CON0 寄存器的 MATyS, 选择计数匹配后 T32N_CNT 计数值寄存器的工作状态 MATyS<1:0>=00: 当 T32N_CNT 计数值匹配 T32N_MATy 时, 继续累加计数, 不产生中断, 当计数到 0xFFFFFFFF 后, 下一次累加计数溢出,T32N_CNT 的值为 0x , 并产生中断, 重新开始累加计数 MATyS<1:0>=01: 当 T32N_CNT 计数值匹配 T32N_MATy 时, 计数值将保持, 即在下一个计数时钟 ( 经过预分频之后的时钟 ) 到来时,T32N_CNT 不再累加计数, 只产生中断 MATyS<1:0>=10: 当 T32N_CNT 计数值匹配 T32N_MATy 时, 计数值在下一个计数时钟 ( 经过预分频之后的时钟 ) 到来时被清 0, 并产生中断, 重新开始累加计数 MATyS<1:0>=11: 当 T32N_CNT 计数值匹配 T32N_MATy 时, 继续累加计数, 并在下一个计数时钟 ( 经过预分频之后的时钟 ) 到来时, 产生中断, 当计数到 0xFFFFFFFF 后, 下一次累加计数溢出,T32N_CNT 的值为 0x , 并产生中断, 重新开始累加计数 当 MOE0=1 时, 如果 T32N_CNT 的计数值匹配 T32N_MAT0/1/2/3,T32NxOUT0 端口输出翻转 举例说明 :T32N_CNT 计数值匹配 T32N_MATy 后的工作方式 T32N_CON0 寄存器中 MAT0<31:0>=0x , MAT0S<1:0>=00, 继续计数, 不产生中断 ; MAT1<31:0>=0x , MAT1S<1:0>=11, 继续计数, 产生中断 ; MAT2<31:0>=0x , MAT2S<1:0>=10, 清 0, 产生中断, 重新计数 预分频设置为 1:1, 采用内部 PCLK 时钟源 计数匹配功能示意图如下所示 : MAT1IF MAT2IF PCLK T32N_CNT 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0000 0x0001 图 5-6 T32N 计数匹配功能示意图 V /280

133 T32N 输入捕捉功能设置 T32N_CON0 寄存器的 MOD<1:0>=10, 使 T32N 工作在捕捉模式 在捕捉工作模式下, 需设置 T32N_CON0 寄存器的 CS<1:0>=00, 使 T32N_CNT 采用内部 PCLK 时钟源计数 ; 并且设置 T32N_CON0 寄存器的 MATyS<1:0>=00, 计数匹配不影响 T32N_CNT 的工作 在捕捉工作模式下, 对端口 T32NxIN0 和 T32NxIN1 的状态进行检测 当 T32NxIN0 端口的状态变化符合所设定的捕捉事件时, 将 T32N_CNT 和 T32N_PRECNT 的当前值分别装载到 T32N_MAT0 和 T32N_MAT2 寄存器中, 产生 T32N_IF 的 CAP0IF 中断, 通过使能 T32N_CON1 寄存器的 CAPL0 可将 T32N_CNT 和 T32N_PRECNT 清零, 或者禁止 CAPL0 继续计数 当 T32NxIN1 端口的状态变化符合所设定的捕捉事件时, 将 T32N_CNT 和 T32N_PRECNT 的当前值分别装载到 T32N_MAT1 和 T32N_MAT3 寄存器中, 产生 T32N_IF 的 CAP1IF 中断, 通过使能 T32N_CON1 寄存器的 CAPL1 可将 T32N_CNT 和 T32N_PRECNT 清零, 或者禁止 CAPL1 继续计数 当 T32N_CNT 计数直到溢出时, 仍未检测到设定的捕捉事件,T32N_CNT 的值被清零, 并重新开始累加计数 设置 T32N_CON1 寄存器的 CAPPE 和 CAPNE, 可选择 T32NxIN0 和 T32NxIN1 端口信号的捕捉事件 : 捕捉上升沿, 捕捉下降沿, 捕捉上升沿 / 下降沿 设置 T32N_CON1 寄存器的 CAPIS0, 选择 T32NxIN0 是否作为捕捉输入端口 ; 设置 CAPIS1, 选择 T32NxIN1 是否作为捕捉输入端口 ; 可同时选择两个端口作为捕捉输入端口 T32N_CON1 寄存器中设置 CAPT, 可选择捕捉事件发生的次数 当 MOE0=1 时, 如果 T32NxIN0 端口捕捉事件发生,T32NxOUT0 端口输出翻转 ; 当 MOE1=1 时, 如果 T32NxIN1 端口捕捉事件发生,T32NxOUT1 端口输出翻转 举例说明 : 当捕捉 T32NxIN0 端口上升沿 / 下降沿, 捕捉 8 次 ; 预分频设置为 1:1 T32N_CON0 寄存器中 MOD<1:0>=10, CS<1:0>=00, MAT0S<1:0>=00, T32N_CON0 寄存器中 CAPPE=1; CAPNE=1, CAPIS=1, CAPT<3:0>=0111 V /280

134 CAPIF CAPIF T32N0IN1 PCLK 0x0000_0000 0x0000_0000 0x0000_0000 T32N_CNT T32N_MAT0 0x0000 Load Event Load Event 图 5-7 T32N 捕捉功能示意图 在捕捉工作模式时, 修改 T32N 预分频器计数匹配寄存器 T32N_PREMAT 时, 预分频器计数不会被清零 因此, 首次捕捉可以从一个非零预分频器计数开始 当捕捉事件匹配发生时, 产生的中断标志位必须通过软件清除, 并及时读取捕捉到的 T32N_MATy 寄存器的值, 在下一次捕捉事件发生时,T32N_MATy 寄存器会装载为新的计数值 T32N 输出调制功能 T32N_CON0 寄存器中设置 MOD<1:0>=11, 使 T32N 工作在调制模式 在调制工作模式下, 需设置 T32N_CON0 寄存器中 CS<1:0>=00, 使 T32N_CNT 采用内部 PCLK 时钟源计数 T32N_CON1 寄存器中设置 MOE0, 选择 T32NxOUT0 是否使能为匹配输出端口, 使能时启用 T32N_MAT0/1 匹配寄存器和 T32N_CNT 进行匹配 ; 设置 MOE1, 选择 T32NxOUT1 是否使能为匹配输出端口, 使能时启用 T32N_MAT2/3 匹配寄存器和 T32N_CNT 进行匹配 设置 MOMy, 选择计数匹配发生时, 对 T32NxOUT 端口的影响 : 保持, 清 0, 置 1, 取反 举例说明 : 在 T32NxOUT0 和 T32NxOUT1 端口, 产生双边 PWM 波形 MOE0=1, MOE1=1;T32NxOUT0 和 T32NxOUT1 匹配输出端口使能 ; MOM0<1:0>=10;T32N_MAT0 匹配,T32NxOUT0 输出高电平 ; MOM1<1:0>=01;T32N_MAT1 匹配,T32NxOUT0 输出低电平 ; MOM2<1:0>=10;T32N_MAT2 匹配,T32NxOUT1 输出高电平 ; MOM3<1:0>=01;T32N_MAT3 匹配,T32NxOUT1 输出低电平 ; MAT0 = 0x ;T32N_MAT1 = 0x ; MAT2 = 0x ;T32N_MAT3 = 0x ; MOD<1:0>=11;T32N 设置为调制输出 MAT0S<1:0>=11;T32N_CNT 继续计数, 并产生中断 MAT1S<1:0>=11;T32N_CNT 继续计数, 并产生中断 MAT2S<1:0>=11;T32N_CNT 继续计数, 并产生中断 V /280

135 MAT3S<1:0>=10;T32N_CNT 清 0, 并产生中断 MAT0IF MAT1IF MAT2IF MAT3IF PCLK T32N_CNT 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0000 T32NxOUT0 T32NxOUT1 图 5-8 T32N 输出调制功能示意图 特殊功能寄存器 T32N 计数值寄存器 (T32N_CNT) 偏移地址 :00 H 复位值 : _ _ _ B CNT<31:16> CNT<15:0> CNT<31:0> bit 31-0 R/W T32N 计数值 T32N 控制寄存器 0(T32N_CON0) 偏移地址 :04 H 复位值 : _ _ _ B ASYNCWREN MAT3S<1:0> MAT2S<1:0> MAT1S<1:0> MAT0S<1:0> MOD<1:0> EDGE<1:0> SYNC CS<1:0> EN - bit ASYNC_WREN bit16 R/W 外部时钟异步计数模式下, 对计数器的写使能位 写 T32N_CNT 和 T32N_PRECNT, 如果强制写, 有可能写操作不成功 ( 为避免对计数器的写操作错误, 不建议用户对该位写 0) 写 T32N_CNT 和 T32N_PRECNT MAT3S<1:0> bit15-14 R/W T32N_CNT 匹配 T32N_MAT3 后的工作模式选择位 V /280

136 MAT2S<1:0> bit13-12 R/W MAT1S<1:0> bit11-10 R/W MAT0S<1:0> bit9-8 R/W MOD<1:0> bit7-6 R/W EDGE<1:0> bit5-4 R/W SYNC bit3 R/W CS<1:0> bit2-1 R/W EN bit0 R/W 00:T32N_CNT 继续计数, 不产生中断 01:T32N_CNT 保持, 产生中断 10:T32N_CNT 清 0 并重新计数, 产生中断 11:T32N_CNT 继续计数, 产生中断 T32N_CNT 匹配 T32N_MAT2 后的工作模式选择位 00:T32N_CNT 继续计数, 不产生中断 01:T32N_CNT 保持, 产生中断 10:T32N_CNT 清 0 并重新计数, 产生中断 11:T32N_CNT 继续计数, 产生中断 T32N_CNT 匹配 T32N_MAT1 后的工作模式选择位 00:T32N_CNT 继续计数, 不产生中断 01:T32N_CNT 保持, 产生中断 10:T32N_CNT 清 0 并重新计数, 产生中断 11:T32N_CNT 继续计数, 产生中断 T32N 匹配 T32N_MAT0 后的工作模式选择位 00:T32N_CNT 继续计数, 不产生中断 01:T32N_CNT 保持, 产生中断 10:T32N_CNT 清 0 并重新计数, 产生中断 11:T32N_CNT 继续计数, 产生中断工作模式选择位 00: 定时 / 计数模式 01: 定时 / 计数模式 10: 捕捉模式 11: 调制模式外部时钟计数边沿选择位 00: 上升沿计数 01: 下降沿计数 10: 上升沿 / 下降沿均计数 ( 仅同步计数模式 ) 11: 上升沿 / 下降沿均计数 ( 仅同步计数模式 ) 外部时钟同步使能位 0: 不同步外部时钟 T32NxCKy, 为异步计数模式 1: 通过 PCLK 对外部时钟 T32NxCKy 同步, 为同步计数模式, 外部时钟的高 / 低电平均至少保持 2 个 PCLK 时钟周期 T32N 计数时钟源选择位 00: 内部时钟 PCLK 01: 外部时钟 T32NxCK0 时钟输入 10: 外部时钟 T32NxCK1 时钟输入 11: 内部时钟 PCLK T32N 使能位 V /280

137 T32N 控制寄存器 1(T32N_CON1) 偏移地址 :08 H 复位值 : _ _ _ B MOM3<1:0> MOM2<1:0> MOM1<1:0> MOM0<1:0> MOE1 MOE0 CAPL1 CAPL0 CAPT<3:0> CAPIS1 CAPIS0 CAPNE CAPPE T32N_MAT3 匹配后的端口 1 工作模式选择位 00: 匹配端口保持 MOM3<1:0> bit31-30 R/W 01: 匹配端口清 0 10: 匹配端口置 1 11: 匹配端口取反 T32N_MAT2 匹配后的端口 1 工作模式选择位 00: 匹配端口保持 MOM2<1:0> bit29-28 R/W 01: 匹配端口清 0 10: 匹配端口置 1 11: 匹配端口取反 T32N_MAT1 匹配后的端口 0 工作模式选择位 00: 匹配端口保持 MOM1<1:0> bit27-26 R/W 01: 匹配端口清 0 10: 匹配端口置 1 11: 匹配端口取反 T32N_MAT0 匹配后的端口 0 工作模式选择位 00: 匹配端口保持 MOM0<1:0> bit25-24 R/W 01: 匹配端口清 0 10: 匹配端口置 1 11: 匹配端口取反 - bit 输出端口 1 使能位 MOE1 bit17 R/W 输出端口 0 使能位 MOE0 bit16 R/W - bit 捕捉 1 重载计数器使能位 CAPL1 bit9 R/W 捕捉 0 重载计数器使能位 CAPL0 bit8 R/W CAPT<3:0> bit7-4 R/W 捕捉次数控制位 V /280

138 CAPIS1 bit3 R/W CAPIS0 bit2 R/W CAPNE bit1 R/W CAPPE bit0 R/W 0: 捕捉 1 次后, 产生装载动作 1: 捕捉 2 次后, 产生装载动作 2: 捕捉 3 次后, 产生装载动作 F: 捕捉 16 次后, 产生装载动作捕捉输入端口 1 使能位 捕捉输入端口 0 使能位 下降沿捕捉使能位 上升沿捕捉使能位 T32N 预分频器计数值寄存器 (T32N_PRECNT) 偏移地址 :10 H 复位值 : _ _ _ B PRECNT<7:0> - bit PRECNT<7:0> bit7-0 R/W T32N 预分频器计数值 T32N 预分频器计数比例寄存器 (T32N_PREMAT) 偏移地址 :14 H 复位值 : _ _ _ B PREMAT<7:0> - bit PREMAT<7:0> bit7-0 R/W 预分频比例设置 00: 预分频 1:1 V /280

139 01: 预分频 1:2 02: 预分频 1:3 FE: 预分频 1:255 FF: 预分频 1:256 T32N 中断使能寄存器 (T32N_IE) 偏移地址 :18 H 复位值 : _ _ _ B CAP1IE CAP0IE IE MAT3IE MAT2IE MAT1IE MAT0IE - bit CAP1IE bit6 R/W 输入端口 1 捕捉中断使能位 CAP0IE bit5 R/W 输入端口 0 捕捉中断使能位 IE bit4 R/W 匹配 0xFFFFFFFF 中断使能位 MAT3IE bit3 R/W 匹配 3 中断使能位 MAT2IE bit2 R/W 匹配 2 中断使能位 MAT1IE bit1 R/W 匹配 1 中断使能位 MAT0IE bit0 R/W 匹配 0 中断使能位 T32N 中断标志寄存器 (T32N_IF) 偏移地址 :1C H 复位值 : _ _ _ B V /280

140 CAP1IF CAP0IF IF MAT3IF MAT2IF MAT1IF MAT0IF - bit CAP1IF bit6 R/W 输入端口 1 捕捉成功中断标志位 0: 输入端口 1 捕捉未成功 1: 输入端口 1 捕捉成功软件写 1 清除标志位, 写 0 无效 CAP0IF bit5 R/W 输入端口 0 捕捉成功中断标志位 0: 输入端口 0 捕捉未成功 1: 输入端口 0 捕捉成功软件写 1 清除标志位, 写 0 无效 IF bit4 R/W 匹配 0xFFFFFFFF 中断标志位 0: 计数器值不等于 0xFFFFFFFF 1: 计数器值等于 0xFFFFFFFF 软件写 1 清除标志位, 写 0 无效 MAT3IF bit3 R/W 匹配 3 中断标志位 0: 计数器值与匹配寄存器 3 不相等 1: 计数器值与匹配寄存器 3 相等软件写 1 清除标志位, 写 0 无效 MAT2IF bit2 R/W 匹配 2 中断标志位 0: 计数器值与匹配寄存器 2 不相等 1: 计数器值与匹配寄存器 2 相等软件写 1 清除标志位, 写 0 无效 MAT1IF bit1 R/W 匹配 1 中断标志位 0: 计数器值与匹配寄存器 1 不相等 1: 计数器值与匹配寄存器 1 相等软件写 1 清除标志位, 写 0 无效 MAT0IF bit0 R/W 匹配 0 中断标志位 0: 计数器值与匹配寄存器 0 不相等 1: 计数器值与匹配寄存器 0 相等软件写 1 清除标志位, 写 0 无效 注 1: 在定时 / 计数, 捕捉, 调制模式下, 均可对计数器 T32N_CNT 值与匹配寄存器 T32N_MATy 值比较是否相等 注 2:T32N 中断禁止时, 如果满足条件仍会置起对应的中断标志位, 只是不会产生中断请求 注 3: 对 T32N_IF 寄存器的各中断标志位, 写 0 无效, 写 1 才能清除标志位 ; 读操作时, 读取的值为 1 表示有中断发生 T32N 计数匹配寄存器 0(T32N_MAT0) 偏移地址 :20 H 复位值 : _ _ _ B V /280

141 MAT0<31:16> MAT0<15:0> MAT0<31:0> bit31-0 R/W T32N 计数匹配值 0 T32N 计数匹配寄存器 1(T32N_MAT1) 偏移地址 :24 H 复位值 : _ _ _ B MAT1<31:16> MAT1<15:0> MAT1<31:0> bit31-0 R/W T32N 计数匹配值 1 T32N 计数匹配寄存器 2(T32N_MAT2) 偏移地址 :28 H 复位值 : _ _ _ B MAT2<31:16> MAT2<15:0> MAT2<31:0> bit31-0 R/W T32N 计数匹配值 2 T32N 计数匹配寄存器 3(T32N_MAT3) 偏移地址 :2C H 复位值 : _ _ _ B MAT3<31:16> MAT3<15:0> MAT3<31:0> bit31-0 R/W T32N 计数匹配值 T32N 应用说明 芯片支持 1 个 32 位定时器 / 计数器 T32N0 V /280

142 5. 2 通用异步接收 / 发送器 (UART0/ UART1) 概述 支持异步接收和异步发送 支持内置波特率发生器, 支持 4 位小数波特率和 12 位整数波特率 兼容 RS-232/RS-442/RS-485 的通讯接口 支持全 / 半双工通讯模式 异步接收器 支持独立的接收移位寄存器支持硬件自动波特率检测支持 8 级接收缓冲器支持 7/8/9 位数据格式可配, 支持奇偶校验功能可配支持硬件自动奇偶校验位判断支持空闲帧检测 支持接收 FIFO 中断, 字节满中断 半字满中断 字满中断 全满中断 支持 3 类接收错误中断, 接收 FIFO 溢出错误 奇偶校验错误 帧结束错误 异步发送器 支持独立的发送移位寄存器支持 8 级发送 FIFO 支持 7/8/9 位数据格式可配, 支持奇偶校验功能可配支持 1/2 位结束位可配支持硬件自动产生发送奇偶校验位支持发送 FIFO 中断, 字节空中断 半字空中断 字空中断 全空中断支持发送 FIFO 写入错误中断 支持 PWM 调制输出, 且 PWM 占空比线性可调 支持 UART 输入输出通讯端口极性可配置 UART 接收端口支持红外唤醒功能 结构框图 V /280

143 发送器 TXD APB_UART 波特率时钟 接收器 RXD 图 5-9 UART 电路结构图 UART 数据格式 UART 通讯每帧数据由 1 位起始位,7/8/9 位数据位 可配置奇偶校验位和停止位组成 UART_CON0 寄存器的中配置 TXMOD 和 RXMOD 选择发送和接收的数据格式 配置 TXFS 选择发送 1 位或 2 位停止位 接收数据时, 只判断第 1 位停止位, 若不为高电平则产生 帧错误 中断标志 在没有数据传输时, 通讯端口处于高电平状态 帧数据格式如下图所示 : 帧 D0 D1 D2 D3 D4 D5 D6 P SP SP 起始位 数据码 校验位 停止位 图 5-10 UART 7 位数据格式 帧 D0 D1 D2 D3 D4 D5 D6 D7 P SP SP 起始位 数据码 校验位 停止位 图 5-11 UART 8 位数据格式 帧 D0 D1 D2 D3 D4 D5 D6 D7 D8 SP SP 起始位 数据码 图 5-12 UART 9 位数据格式 停止位 数据发送和接收时, 均是低位在前, 高位在后, 即先发送或接收数据的 LSB 通过发送数据 寄存器 UART_TBW 写入发送的数据, 通过接收数据寄存器 UART_RBR 读取接收的数据 V /280

144 UART 异步发送器发送数据时, 起始位 START 和停止位 STOP 由芯片硬件电路自动产生, 用户只需要配置相应的 I/O 端口复用功能 ; 配置 UxBRR 和 UART_CON0 寄存器的 BCS, 设定传输波特率 ; UART_CON0 寄存器中配置 TXMOD, 选择发送的数据格式 ; 配置 TXFS, 选择发送的停止位数 ; 配置 TXEN, 使能数据发送 ; 将要发送的数据写入发送数据寄存器 UART_TBW, 就可以开始数据的异步发送 如果数据格式支持奇偶校验位, 硬件电路会根据相应的数据位产生校验位, 在数据位后自动发送校验位 配置 UART_CON0 寄存器的 TXP, 可选择发送端口极性 选择为正极性时, 发送端口的数据与被发送数据一致 ; 选择为负极性时, 发送端口的数据与被发送数据相反, 即被发送数据位为 1 时, 发送端口的数据位为 0 支持 8 级发送缓冲器 TB0~TB7 和 1 级发送移位寄存器, 可进行数据的连续发送, 直到发送缓冲器和移位寄存器全空, 最多可连续写入和发送 9 帧数据, 配置 UART_CON0 寄存器的 TXFS 可选择相邻两帧数据发送的时间间隔 发送缓冲器 TBy 为只读寄存器, 只能通过发送数据寄存器 UART_TBW 写入 发送数据寄存器 UART_TBW 为一个虚拟地址单元, 物理上不存在实际的寄存器电路, 写该寄存器地址单元时, 实际上是将发送数据写入到发送缓冲器 TBy 中, 再传输到发送移位寄存器, 通过发送端口 TXx 进行数据发送 发送数据寄存器 UART_TBW 支持 3 种写入方式 : 字节写入, 半字写入和字写入 当发送数据为 7 位和 8 位数据格式时 : 字节方式写入 UART_TBW 时, 发送数据被写入到发送缓冲器 TB7; 半字方式写入 UART_TBW 时, 发送数据被同时写入到发送缓冲器 TB7 和 TB6, 其中低字节存放在 TB6 中 ; 字方式写入 UART_TBW 时, 发送数据被同时写入到发送缓冲器 TB7,TB6,TB5 和 TB4, 其中低字节存放在 TB4 中 当发送数据为 9 位数据格式时 : 只能以半字或字方式写入 UART_TBW, 且发送数据均被写入到发送缓冲器 TB7 发送数据从写入到发送到端口的数据流示意图如下所示 : UART_TBW TB7 TB6 TB1 TB0 发送移位寄存器 TXx 端口 图 5-13 UART 发送数据流示意图 当发送缓冲器 TBy 被写入数据时, 硬件自动置起 UART_TBy 寄存器的空满标志 TBFFy=1, 当发送缓冲器 TBy 的数据移到下一级缓冲器或发送移位寄存器后, 硬件自动清除空满标志 TBFFy 当缓冲器 TB7 的发送空满标志 TBFF7 为 1 时, 表示 8 级发送缓冲器和发送移位寄存器均满, 此时如果仍继续写入 UART_TBW, 则会置起写发送缓冲溢出中断标志 TBWOIF, 同时新写入的数据无效, 缓冲器数据仍保持 当字节写操作地址非最低字节, 或半字写操作地址非低半字时, 则会置起写发送缓冲错误中断标志 TBWEIF, 同时新写入的数据无效, 缓冲器数据仍保持 当发送端口正在发送数据时, 会置起发送状态位 TXBUSY=1, 当 8 级发送缓冲器和发送移位寄存器均空时, 会置起 UART_IF 寄存器的发送完成中断标志 TCIF, 并清除发送状态位 TXBUSY=0, 表示当前的数据发送进程结束 支持发送缓冲器空中断, 配置 UART_CON1 寄存器中 TBIM, 可选择中断模式 V /280

145 TBIM<1:0>=00, 为字节空产生中断, 即发送缓冲器 TB7 为空时, 会置起 UART_IF 寄存器的发送缓冲器空中断标志 TBIF; TBIM<1:0>=01, 为半字空产生中断, 即发送缓冲器 TB7 和 TB6 均为空时, 会置起 UART_IF 寄存器的发送缓冲器空中断标志 TBIF; TBIM<1:0>=10, 为字空产生中断, 即发送缓冲器 TB7~TB4 均为空时, 会置起 UART_IF 寄存器的发送缓冲器空中断标志 TBIF; TBIM<1:0>= 11, 为全空产生中断, 即发送缓冲器 TB7~TB0 均为空时, 会置起 UART_IF 寄存器的发送缓冲器空中断标志 TBIF 配置 UART_CON0 寄存器中 TBCLR, 可将写入发送缓冲器的全部数据清空, 同时清除 UART_TBy 寄存器的各发送缓冲器 TBy 的空满标志 TBFFy=0 被清空的发送缓冲器中的数据将不会被发送, 但移位寄存器中的数据仍将会被发送 UART_CON0 寄存器中配置 TRST, 可将异步发送器软件复位, 复位后 : 禁止数据发送 TXEN=0; 禁止 UART_IE 寄存器中发送相关中断 TBIE=0,TBWEIE=0; 复位 UART_IF 寄存器的相关中断标志为默认值 TBIF=1,TBWEIF=0; 清除发送忙标志 TXBUSY=0; 清除各发送缓冲器空满标志 TBFFy=0 发送数据的操作流程图示例如下 : 开始 配置 I/O 端口复用功能 配置异步发送器 : BCS,UART_BRR, TXMOD,TXFS,TBIM 使能 TXEN 写 UART_TBW TXBUSY=0 或 TBIF=1? N Y N 发送完成 Y 禁止 TXEN 结束 图 5-14 UART 发送数据操作流程图示例 V /280

146 UART 异步接收器接收数据时, 配置相应的 I/O 端口复用功能 ; 配置 UART_BRR 寄存器和 UART_CON1 寄存器的 BCS, 设定传输波特率 ; 配置 RXMOD, 选择接收的数据格式 ; 配置 RXEN, 使能数据接收, 就可以开始数据的异步接收 如果数据格式支持奇偶校验位, 硬件电路会自动判断奇偶校验位是否正确, 若不正确则会置起 UART_IF 寄存器的奇偶校验错误中断标志 PEIF 如果接收到的第 1 位停止位不为高电平, 则会置起 UART_IF 寄存器的帧错误中断标志 FEIF UART_CON0 寄存器中配置 RXP, 可选择接收端口极性 选择为正极性时, 接收端口的数据即作为接收数据 ; 选择为负极性时, 接收端口的数据取反后, 作为接收数据, 即接收端口的数据位为 1 时, 接收的数据位为 0 支持 8 级接收缓冲器 RB0~RB7 和 1 级接收移位寄存器, 可进行数据的连续接收, 直到接收缓冲器和移位寄存器全满, 最多可连续接收 9 帧数据, 再执行数据读取操作 读取接收数据寄存器 UART_RBR, 可得到接收的数据, 对应的接收缓冲器清除 UART_RBy 寄存器的满标志 RBFFy; 也可以读取接收缓冲器 RBy 得到接收的数据, 但不会清除满标志 RBFFy 接收数据寄存器 UART_RBR 为一个虚拟地址单元, 物理上不存在实际的寄存器电路, 读该寄存器地址单元时, 实际上是读取接收缓冲器 RBy 中的数据 接收数据寄存器 UART_RBR 支持 3 种读取方式 : 字节读取, 半字读取和字读取 当接收数据为 7 位和 8 位数据格式时 : 字节方式读取 UART_RBR 时, 实际是读取接收缓冲器 RB0 的数据 ; 半字方式读取 UART_RBR 时, 实际是同时读取接收缓冲器 RB0 和 RB1 的数据, 其中 RB0 中的数据为低字节 ; 字方式读取 UART_RBR 时, 实际是同时读取接收缓冲器 RB0,RB1,RB2 和 RB3, 其中 RB0 中的数据为低字节 当接收数据为 9 位数据格式时 : 只能以半字或字方式读取 UART_RBR, 且均是读取接收缓冲器 RB0 的数据 接收数据从接收端口到各级缓冲器的数据流示意图如下所示 : UART_RBR RB0 RB1 RB6 RB7 接收移位寄存器 RXx 端口 图 5-15 UART 接收数据流示意图接收缓冲器 RBy 的数据移到下一级缓冲器后, 会清除其接收满标志 RBFFy 当 8 级接收缓冲器和 1 级接收移位寄存器均满时, 如果再次接收到数据起始位, 会置起接收数据溢出中断标志 ROIF, 同时不会接收新数据, 缓冲器数据仍保持 当 8 级接收缓冲器和接收移位寄存器均空时, 会清除接收忙标志 RXBUSY, 表示当前无数据接收 支持接收缓冲器满中断, 配置 UART_CON1 寄存器的 RBIM, 可选择中断模式 RBIM<1:0>=00, 为字节满产生中断, 即接收缓冲器 RB0 为满时, 会置起 UART_IF 寄存器的中断标志 RBIF; RBIM<1:0>=01, 为半字满产生中断, 即接收缓冲器 RB0 和 RB1 均为满时, 会置起 UART_IF 寄存器的中断标志 RBIF; RBIM<1:0>=10, 为字满产生中断, 即接收缓冲器 RB0~RB3 均为满时, 会置起 UART_IF 寄存器的中断标志 RBIF; V /280

147 RBIM<1:0>= 11, 为全满产生中断, 即接收缓冲器 RB0~RB7 均为满时, 会置起 UART_IF 寄存器的中断标志 RBIF 配置 UART_CON0 寄存器 RBCLR, 可将接收缓冲器接收到的全部数据清空, 同时清除各接收缓冲器满标志 RBFFy=0, 已经在接收过程中的数据将不受影响 配置 UART_CON0 寄存器 RRST, 可将异步接收器软件复位, 复位后 : 禁止数据接收 RXEN=0;UART_IE 寄存器中禁止接收相关中断 RBIE=0,ROIE=0,FEIE=0,PEIE=0; UART_IF 寄存器中复位相关中断标志为默认值 RBIF=0,ROIF=0,FEIF=0,PEIF=0; 清除接收忙标志 RXBUSY=0; 清除各接收缓冲器满标志 RBFFy=0; 清除各接收缓冲器错误标志 FEy=0,PEy=0 接收数据的操作流程图示例如下 : 开始 配置 I/O 端口复用功能 配置异步接收器 : BCS,UART_BRR, RXMOD,RBIM 使能 RXEN RBIF=1? N Y 读取 UART_RBR N 接收完成 Y 禁止 RXEN 结束 图 5-16 UART 接收数据操作流程图示例 UART 发送调制功能发送调制模式是将 UART 传输到发送端口的信号电平, 由 T16N 产生的 PWM 信号源或 BUZ 信号进行调制后, 再从发送端口 TXx 输出 配置 TXxPS, 可配置 UART 调制模式 配置 GPIO_TXPWM 寄存器的 TXxPLV, 选择发送端口 TXx 被调制的信号电平 配置 TXx_S0 V /280

148 TXx_S1 TXx_S2 和 TXx_S3, 使能调制信号输出到端口 UART 调制功能使用的 PWM 信号源, 由 T16N 或 BUZ 提供 配置 TXxPS, 可选择与 TXx 输出端口进行调制的 PWM 信号源 TXx 原始信号 T16Nx PWM 信号 TXx 端口调制输出 图 5-17 TXx 高电平调制输出波形图 TXx 原始信号 T16Nx PWM 信号 TXx 端口调制输出 图 5-18 TXx 低电平调制输出波形图 UART 红外唤醒功能芯片支持 UART 接收端口的红外唤醒功能, 需要通过软件控制实现 使能 UART 接收复用端口 RXx 的外部端口中断 PINT 功能, 通过端口的 PINT 中断实现芯片的红外唤醒功能 对中断和唤醒的具体控制操作, 可参考外部端口中断和睡眠模式, 唤醒模式的相关章节描述 UART 端口极性配置 UART_CON0 寄存器 TXP 和 RXP, 可分别选择发送端口 TXx 和接收端口 RXx 的正负极性 选择为正极性时,UART 端口数据与传输的数据一致 ; 选择为负极性时,UART 端口数据与传输的数据相反 UART 自动波特率检测接收数据时, 配置 UART_CON0 寄存器的 BDEN 可使能自动波特率检测功能, 配置 UART_CON1 寄存器的 BDM 可选择自动波特率检测的模式 UART_CON1 寄存器中 BDM<1:0>=00, 选择模式 1, 接收数据流需以二进制 1 开始 ( 即接收数据的最低位为 1 B ), UART 检测起始位波特率 ; BDM<1:0>=01, 选择模式 2, 接收数据流需以二进制 10 开始 ( 即接收数据的最低两位为 01 B ), UART 检测起始位和数据第一位波特率 ; BDM<1:0>=10, 选择模式 3, 接收数据流需以二进制 1111_1110 开始 ( 即接收第一帧数据为 V /280

149 7F H ), UART 检测起始位及前 7 个数据位波特率 ; BDM<1:0>=11, 选择模式 4, 接收数据流需以二进制 1010_1010 开始 ( 即接收第一帧数据为 55 H ), UART 检测起始位及前 7 个数据位波特率 检测完成后, 硬件自动清除 BDEN 关闭自动波特率检测功能 若检测成功将更新波特率寄存器 UART_BRR, 并将这一帧数据写入接收缓冲器中, 用户可从接收缓冲器中读取该数据 ; 若检测超时, 将置起 UART_IF 寄存器的波特率检测错误中断标志 BDEIF=1, 但波特率寄存器将不会被更新, 接收缓冲器不会写入新的数据 若接收的数据格式为 7 位数据或者 7 位数据之后的校验位不固定为 0 时, 模式 3 和模式 4 将不适用, 必须选择模式 1 和模式 2 其它接收的数据格式只要满足各模式起始字符, 即可任意配置 自动波特率检测不受初始配置的波特率值影响, 但需要根据应用条件, 配置合适的波特率时钟预分频选择位 BCS RX RXEN BDEN BDM 0x3 UART_BRR XX A B BDCNT 0x00 A B B+1 RBFF0 软件读取 UART_RBR RB0 XX 图 5-19 自动波特率检测时序示意图 0x55 RX RXEN BDEN BDM 0x3 UART_BRR XX A BDCNT 0x00 A 0xFFFF 0x00 BDEIF 软件清零 图 5-20 自动波特率检测错误时序示意图 UART 空闲帧检测 V /280

150 接收数据时, 配置 UART_CON0 寄存器的 IDEN 可使能空闲帧检测功能, 配置 UART_CON1 寄存器的 IDM 可选择空闲帧检测的模式 IDM<1:0>=00, 将检测连续 10 个比特位空闲 ; IDM<1:0>=01, 将检测连续 11 个比特位空闲 ; IDM<1:0>=10, 将检测连续 12 个比特位空闲 ; IDM<1:0>=11, 将检测连续 13 个比特位空闲 当检测到空闲帧后, 将置起 UART_IF 寄存器的接收空闲帧中断标志位 IDIF=1 硬件在接收 到数据之后才会触发空闲帧检测, 使能空闲帧检测功能后若接收数据线始终为空闲, 则不会影响接收空闲帧中断标志位 RX IDEN RXEN 10 bits 10 bits 10 bits IDM XX 0x0 IDIF 软件清零 RB0 XX 图 5-21 空闲帧检测时序示意图 0x UART 发送暂停和接收暂停配置 TXI 可暂停发送数据,TXx 端口将相应为空闲电平, 发送缓冲器中的数据将保持不变 若此时正在发送数据, 则待当前帧数据发送完成后才会被暂停 配置 RXI 可暂停接收数据, 接收缓冲器中的数据将保持不变 若此时正在接收数据, 则该一帧数据将被丢弃, 不会写入接收缓冲器中 接收被暂停后, 不会影响接收数据的校验位判断和接收空闲帧检测 特殊功能寄存器 UART 控制寄存器 0(UART_CON0) 偏移地址 :00 H 复位值 : _ _ _ B RXP RXMOD<3:0> IDEN BDEN RXI RBCLR RRST RXEN TXFS TXP TXMOD<3:0> TXI TBCLR TRST TXEN bit31-29 RXP bit28 R/W 接收端口极性选择位 V /280

151 0: 正极性 ( 标准 UART 极性 ) 1: 负极性 ( 反向 UART 极性 ) RXMOD<3:0> bit27-24 R/W 接收数据格式选择位 0000:8 位数据 0010:9 位数据 0100:7 位数据 1000:8 位数据 + 偶校验位 1001:8 位数据 + 奇校验位 1010:8 位数据 + 固定 :8 位数据 + 固定 :7 位数据 + 偶校验位 1101:7 位数据 + 奇校验位 1110:7 位数据 + 固定 :7 位数据 + 固定 1 其他 : 未用 bit23-22 IDEN bit21 R/W 空闲帧检测使能位 BDEN bit20 R/W 自动波特率检测使能位 RXI bit19 R/W 接收暂停功能使能位 RBCLR bit18 W 接收缓冲器清除 0: 读取时始终为 0 1: 清除接收缓冲器 RRST bit17 W 接收器软件复位 0: 读取时始终为 0 1: 软件复位 RXEN bit16 R/W 接收使能位 bit15-14 TXFS bit13 R/W 发送帧停止位选择位 0:1 位停止位 1:2 位停止位 TXP bit12 R/W 发送端口极性选择位 0: 正极性 ( 标准 UART 极性 ) 1: 负极性 ( 反向 UART 极性 ) TXMOD<3:0> bit11-8 R/W 发送数据格式选择位 0000:8 位数据 V /280

152 0010:9 位数据 0100:7 位数据 1000:8 位数据 + 偶校验位 1001:8 位数据 + 奇校验位 1010:8 位数据 + 固定 :8 位数据 + 固定 :7 位数据 + 偶校验位 1101:7 位数据 + 奇校验位 1110:7 位数据 + 固定 :7 位数据 + 固定 1 其他 : 未用 bit7-4 TXI bit3 R/W 发送暂停功能使能位 TBCLR bit2 W 发送缓冲器清除 0: 读取时始终为 0 1: 清除发送缓冲器 TRST bit1 W 发送器软件复位 0: 读取时始终为 0 1: 软件复位 TXEN bit0 R/W 发送使能位 UART 控制寄存器 1(UART_CON1) 偏移地址 :04 H 复位值 : _ _ _ B IDM<1:0> BDM<1:0> BCS<2:0> RBIM<1:0> TBIM<1:0> bit31-18 空闲帧检测模式选择位 00: 连续 10 个比特空闲 IDM<1:0> bit17-16 R/W 01: 连续 11 个比特空闲 10: 连续 12 个比特空闲 11: 连续 13 个比特空闲 bit15-14 BDM<1:0> bit13-12 R/W 自动波特率模式选择位 00: 模式 1 V /280

153 01: 模式 2 10: 模式 3 11: 模式 4 bit11 BCS<2:0> bit10-8 R/W 波特率时钟预分频选择位 000: 波特率时钟关闭 001:PCLK 010:PCLK/2 011:PCLK/4 1xx:PCLK/8 bit7-6 RBIM<1:0> bit5-4 R/W 接收缓冲满中断模式选择位 00: 字节满产生中断 ( 缓冲器数据多于 1 个字节 ) 01: 半字满产生中断 ( 缓冲器数据多于 2 个字节 ) 10: 字满产生中断 ( 缓冲器数据多于 4 个字节 ) 11: 全满产生中断 ( 缓冲器数据满 ) bit3-2 TBIM<1:0> bit1-0 R/W 发送缓冲空中断模式选择位 00: 字节空产生中断 ( 缓冲器 1 个字节以上为空 ) 01: 半字空产生中断 ( 缓冲器 2 个字节以上为空 ) 10: 字空产生中断 ( 缓冲器 4 个字节以上为空 ) 11: 全空产生中断 ( 缓冲器全部为空 ) 注 1:UART_CON1 寄存器中 BDM 模式操作方式如下 : 模式 1: 数据流以二进制 1 开始 ( 即接收数据的最低位为 1 B), 检测起始位波特率 ; 模式 2: 数据流以二进制 10 开始 ( 即接收数据的最低两位为 01 B), 检测起始位及数据第一位波特率 ; 模式 3: 数据流以二进制 1111_1110 开始 ( 即接收数据 7F H), 检测起始位及前 7 个数据位 ; 模式 4: 数据流以二进制 1010_1010 开始 ( 即接收数据 55 H), 检测起始位及前 7 个数据位 注 2: 若接收的数据的格式为 7 位数据或者 7 位数据之后的校验位不固定为 0 时, 模式 3 和模式 4 将不适用, 必须选择模式 1 和模式 2 其他接收数据格式只要满足各模式起始字符, 可任意配置 UART 波特率寄存器 (UART_BRR) 偏移地址 :10 H 复位值 : _ _ _ B BRINT<11:0> BRFRA<3:0> bit31-16 BRINT<11:0> bit15-4 R/W 传输波特率整数位 BRFRA<3:0> bit3-0 R/W 传输波特率小数位 V /280

154 注 1: 当 UART_BRR 表示为 16 位无符号数, 其中 4 位小数位,12 位整数位, 其数值表示的是 UART 波特率分频数, 例如 0x0104( 十进制为 260) 则表示为分频数 BRRDIV=260/16=16.25 注 2: 当 UART_BRR 表示的波特率分频数小于 1.0 时, 则硬件固定为 BRRDIV=1.0 注 3:UART 传输波特率计算公式如下 : Fpclk BAUD = 16 n BRRDIV 其中 Fpclk 为系统时钟频率,n 为波特率时钟预分频数, 由 UART_CON1 寄存器中 BCS<2:0> 决定 BCS<2:0>=001 时 :n = 1; BCS<2:0>=010 时 :n = 2; BCS<2:0>=011 时 :n = 4; BCS<2:0>=1xx 时 :n = 8 UART 状态寄存器 (UART_STA) 偏移地址 :14 H 复位值 : _ _ _ B PER3 FER3 PER2 FER2 PER1 FER1 PER0 FER0 RXBUSY RBOV RBPTR<3:0> TXBUSY TBOV TBPTR<3:0> bit31-24 当前读取的 BYTE3 校验错误位 PER3 bit23 R 0: 正确 1: 错误 当前读取的 BYTE3 帧格式错误位 FER3 bit22 R 0: 正确 1: 错误 当前读取的 BYTE2 校验错误位 PER2 bit21 R 0: 正确 1: 错误 当前读取的 BYTE2 帧格式错误位 FER2 bit20 R 0: 正确 1: 错误 当前读取的 BYTE1 校验错误位 PER1 bit19 R 0: 正确 1: 错误 当前读取的 BYTE1 帧格式错误位 FER1 bit18 R 0: 正确 1: 错误 PER0 bit17 R 当前读取的 BYTE0 校验错误位 0: 正确 V /280

155 1: 错误 FER0 bit16 R 当前读取的 BYTE0 帧格式错误位 0: 正确 1: 错误 bit15-14 RXBUSY bit13 R 接收状态位 0: 接收空闲 1: 正在接收 RBOV bit12 R 接收缓冲器溢出状态位 0: 未溢出 1: 溢出 RBPTR<3:0> bit11-8 R 接收缓冲器中数据字节数 0000:0 字节 1000:8 字节 bit7-6 TXBUSY bit5 R 发送状态位 0: 发送空闲 1: 正在发送 TBOV bit4 R 发送缓冲器溢出状态位 0: 未溢出 1: 溢出 TBPTR<3:0> bit3-0 R 发送缓冲器中数据字节数 0000:0 字节 1000:8 字节 UART 中断使能寄存器 (UART_IE) 偏移地址 :18 H 复位值 : _ _ _ B RBROIE RBREIE BDEIE PEIE FEIE ROIE IDIE RBIE TBWOIE TBWEIE TCIE TBIE bit31-30 读接收缓冲溢出中断使能位 RBROIE bit29 R/W 读接收缓冲错误中断使能位 RBREIE bit28 R/W V /280

156 BDEIE bit27 R/W 波特率检测错误中断使能位 PEIE bit26 R/W 接收校验错误中断使能位 FEIE bit25 R/W 接收帧错误中断使能位 ROIE bit24 R/W 接收数据溢出中断使能位 bit23-18 IDIE bit17 R/W 接收空闲帧中断使能位 RBIE bit16 R/W 接收缓冲器满中断使能位 bit15-10 TBWOIE bit9 R/W 写发送缓冲溢出中断使能位 TBWEIE bit8 R/W 写发送缓冲错误中断使能位 bit7-2 TCIE bit1 R/W 发送完成中断使能位 TBIE bit0 R/W 发送缓冲器空中断使能位 UART 中断标志寄存器 (UART_IF) 偏移地址 :1C H 复位值 : _ _ _ B RBROIF RBREIF BDEIF PEIF FEIF ROIF IDIF RBIF TBWOIF TBWEIF TCIF TBIF V /280

157 bit31-30 RBROIF bit29 R/W 读接收缓冲溢出中断标志位 0: 读接收缓冲未溢出 1: 读接收缓冲溢出软件写 1 清除标志位, 写 0 无效 RBREIF bit28 R/W 读接收缓冲错误中断标志位 0: 读接收缓冲未错误 1: 读接收缓冲错误软件写 1 清除标志位, 写 0 无效 BDEIF bit27 R/W PEIF bit26 R/W FEIF bit25 R/W 波特率检测错误中断标志位 0: 波特率检测未错误 1: 波特率检测错误软件写 1 清除标志位, 写 0 无效接收校验错误中断标志位 0: 接收校验正常 1: 接收校验错误软件写 1 清除标志位, 写 0 无效接收帧错误中断标志位 0: 接收帧正常 1: 接收帧错误软件写 1 清除标志位, 写 0 无效 ROIF bit24 R/W 接收数据溢出中断标志位 0: 未溢出 1: 溢出软件写 1 清除标志位, 写 0 无效 bit23-18 IDIF bit17 R/W 接收空闲帧中断标志位 0: 未接收到空闲帧 1: 接收到空闲帧软件写 1 清除标志位, 写 0 无效 RBIF bit16 R 接收缓冲器满中断标志位 0: 非满 1: 满 ( 满足 RBIM 所选择的条件 ) bit15-10 TBWOIF bit9 R/W TBWEIF bit8 R/W 写发送缓冲溢出中断标志位 0: 写发送缓冲未溢出 1: 写发送缓冲溢出软件写 1 清除标志位, 写 0 无效写发送缓冲错误中断标志位 0: 写发送缓冲未错误 1: 写发送缓冲错误软件写 1 清除标志位, 写 0 无效 V /280

158 bit7-2 TCIF bit1 R/W TBIF bit0 R 发送完成中断标志位 0: 发送未完成 1: 发送已完成软件写 1 清除标志位, 写 0 无效发送缓冲器空中断标志位 0: 非空 1: 空 ( 满足 TBIM 所选择的条件 ) 注 1:UART 中断禁止时, 如果满足条件仍会置起对应的中断标志位, 只是不会产生中断请求 注 2: 对 UART_IF 寄存器中的各中断标志位, 写 0 无效, 写 1 才能清除标志位 ; 读操作时, 读取的值为 1 表示有中 断发生 UART 发送数据写入寄存器 (UART_TBW) 偏移地址 :20 H 复位值 :XXXXXXXX_XXXXXXXX_XXXXXXXX_XXXXXXXX B TBW<31:16> TBW<15:0> TBW<31:0> bit31-0 W 写入的发送数据字节写入时 : 仅允许对 UART_TBW<7:0> 写入半字写入时 : 仅允许对 UART_TBW<15:0> 写入字写入时 : 对 UART_TBW<31:0> 写入 UART 接收数据读取寄存器 (UART_RBR) 偏移地址 :24 H 复位值 : _ _ _ B RBR<31:16> RBR<15:0> RBR<31:0> bit31-0 R 读取的接收数据字节读取时 : 仅允许对 UART_RBR<7:0> 读取半字读取时 : 仅允许对 UART_RBR<15:0> 读取字读取时 : 对 UART_RBR<31:0> 读取 V /280

159 UART 发送缓冲寄存器 0(UART_TB0) 偏移地址 :40 H 复位值 : _ _ _ B TBFF0 TP0 TB0<8:0> bit31-14 TBFF0 bit13 R 发送缓冲器 0 空满标志位 0: 空 1: 满 TP0 bit12 R 发送的奇偶校验位发送缓冲器 0 对应的奇偶校验位 bit11-9 TB0<8:0> bit8-0 R 发送缓冲器 0 数据 UART 发送缓冲寄存器 1(UART_TB1) 偏移地址 :44 H 复位值 : _ _ _ B TBFF1 TP1 TB1<8:0> bit31-14 TBFF1 bit13 R 发送缓冲器 1 空满标志位 0: 空 1: 满 TP1 bit12 R 发送的奇偶校验位发送缓冲器 1 对应的奇偶校验位 bit11-9 TB1<8:0> bit8-0 R 发送缓冲器 1 数据 UART 发送缓冲寄存器 2(UART_TB2) 偏移地址 :48 H 复位值 : _ _ _ B V /280

160 TBFF2 TP2 TB2<8:0> bit31-14 TBFF2 bit13 R 发送缓冲器 2 空满标志位 0: 空 1: 满 TP2 bit12 R 发送的奇偶校验位发送缓冲器 2 对应的奇偶校验位 bit11-9 TB2<8:0> bit8-0 R 发送缓冲器 2 数据 UART 发送缓冲寄存器 3(UART_TB3) 偏移地址 :4C H 复位值 : _ _ _ B TBFF3 TP3 TB3<8:0> bit31-14 TBFF3 bit13 R 发送缓冲器 3 空满标志位 0: 空 1: 满 TP3 bit12 R 发送的奇偶校验位发送缓冲器 3 对应的奇偶校验位 bit11-9 TB3<8:0> bit8-0 R 发送缓冲器 3 数据 UART 发送缓冲寄存器 4(UART_TB4) 偏移地址 :50 H 复位值 : _ _ _ B TBFF4 TP4 TB4<8:0> bit31-14 TBFF4 bit13 R 发送缓冲器 4 空满标志位 0: 空 1: 满 V /280

161 TP4 bit12 R 发送的奇偶校验位发送缓冲器 4 对应的奇偶校验位 bit11-9 TB4<8:0> bit8-0 R 发送缓冲器 4 数据 UART 发送缓冲寄存器 5(UART_TB5) 偏移地址 :54 H 复位值 : _ _ _ B TBFF5 TP5 TB5<8:0> bit31-14 TBFF5 bit13 R 发送缓冲器 5 空满标志位 0: 空 1: 满 TP5 bit12 R 发送的奇偶校验位发送缓冲器 5 对应的奇偶校验位 bit11-9 TB5<8:0> bit8-0 R 发送缓冲器 5 数据 UART 发送缓冲寄存器 6(UART_TB6) 偏移地址 :58 H 复位值 : _ _ _ B TBFF6 TP6 TB6<8:0> bit31-14 TBFF6 bit13 R 发送缓冲器 6 空满标志位 0: 空 1: 满 TP6 bit12 R 发送的奇偶校验位发送缓冲器 6 对应的奇偶校验位 bit11-9 TB6<8:0> bit8-0 R 发送缓冲器 6 数据 V /280

162 UART 发送缓冲寄存器 7(UART_TB7) 偏移地址 :5C H 复位值 : _ _ _ B TBFF7 TP7 TB7<8:0> bit31-14 TBFF7 bit13 R 发送缓冲器 7 空满标志位 0: 空 1: 满 TP7 bit12 R 发送的奇偶校验位发送缓冲器 7 对应的奇偶校验位 bit11-9 TB7<8:0> bit8-0 R 发送缓冲器 7 数据 UART 接收缓冲寄存器 0(UART_RB0) 偏移地址 :60 H 复位值 : _ _ _ B PE0 FE0 RBFF0 RP0 RB0<8:0> bit31-16 PE0 bit15 R 接收缓冲器 0 数据校验错误标志位 0: 正确 1: 错误 FE0 bit14 R 接收缓冲器 0 数据帧错误标志位 0: 正确 1: 错误 RBFF0 bit13 R 接收缓冲器 0 空满标志位 0: 空 1: 满 RP0 bit12 R 接收的奇偶校验位接收缓冲器 0 对应的奇偶校验位 bit11-9 RB0<8:0> bit8-0 R 接收缓冲器 0 数据 V /280

163 UART 接收缓冲寄存器 1(UART_RB1) 偏移地址 :64 H 复位值 : _ _ _ B PE1 FE1 RBFF1 RP1 RB1<8:0> bit31-16 PE1 bit15 R 接收缓冲器 1 数据校验错误标志位 0: 正确 1: 错误 FE1 bit14 R 接收缓冲器 1 数据帧错误标志位 0: 正确 1: 错误 RBFF1 bit13 R 接收缓冲器 1 空满标志位 0: 空 1: 满 RP1 bit12 R 接收的奇偶校验位接收缓冲器 1 对应的奇偶校验位 bit11-9 RB1<8:0> bit8-0 R 接收缓冲器 1 数据 UART 接收缓冲寄存器 2(UART_RB2) 偏移地址 :68 H 复位值 : _ _ _ B PE2 FE2 RBFF2 RP2 RB2<8:0> bit31-16 PE2 bit15 R 接收缓冲器 2 数据校验错误标志位 0: 正确 1: 错误 FE2 bit14 R 接收缓冲器 2 数据帧错误标志位 0: 正确 1: 错误 RBFF2 bit13 R 接收缓冲器 2 空满标志位 0: 空 1: 满 V /280

164 RP2 bit12 R 接收的奇偶校验位接收缓冲器 2 对应的奇偶校验位 bit11-9 RB2<8:0> bit8-0 R 接收缓冲器 2 数据 UART 接收缓冲寄存器 3(UART_RB3) 偏移地址 :6C H 复位值 : _ _ _ B PE3 FE3 RBFF3 RP3 RB3<8:0> bit31-16 PE3 bit15 R 接收缓冲器 3 数据校验错误标志位 0: 正确 1: 错误 FE3 bit14 R 接收缓冲器 3 数据帧错误标志位 0: 正确 1: 错误 RBFF3 bit13 R 接收缓冲器 3 空满标志位 0: 空 1: 满 RP3 bit12 R 接收的奇偶校验位接收缓冲器 3 对应的奇偶校验位 bit11-9 RB3<8:0> bit8-0 R 接收缓冲器 3 数据 UART 接收缓冲寄存器 4(UART_RB4) 偏移地址 :70 H 复位值 : _ _ _ B PE4 FE4 RBFF4 RP4 RB4<8:0> bit31-16 PE4 bit15 R 接收缓冲器 4 数据校验错误标志位 0: 正确 1: 错误 V /280

165 FE4 bit14 R 接收缓冲器 4 数据帧错误标志位 0: 正确 1: 错误 RBFF4 bit13 R 接收缓冲器 4 空满标志位 0: 空 1: 满 RP4 bit12 R 接收的奇偶校验位接收缓冲器 4 对应的奇偶校验位 bit11-9 RB4<8:0> bit8-0 R 接收缓冲器 4 数据 UART 接收缓冲寄存器 5(UART_RB5) 偏移地址 :74 H 复位值 : _ _ _ B PE5 FE5 RBFF5 RP5 RB5<8:0> bit31-16 PE5 bit15 R 接收缓冲器 5 数据校验错误标志位 0: 正确 1: 错误 FE5 bit14 R 接收缓冲器 5 数据帧错误标志位 0: 正确 1: 错误 RBFF5 bit13 R 接收缓冲器 5 空满标志位 0: 空 1: 满 RP5 bit12 R 接收的奇偶校验位接收缓冲器 5 对应的奇偶校验位 bit11-9 RB5<8:0> bit8-0 R 接收缓冲器 5 数据 UART 接收缓冲寄存器 6(UART_RB6) 偏移地址 :78 H 复位值 : _ _ _ B V /280

166 PE6 FE6 RBFF6 RP6 RB6<8:0> bit31-16 PE6 bit15 R 接收缓冲器 6 数据校验错误标志位 0: 正确 1: 错误 FE6 bit14 R 接收缓冲器 6 数据帧错误标志位 0: 正确 1: 错误 RBFF6 bit13 R 接收缓冲器 6 空满标志位 0: 空 1: 满 RP6 bit12 R 接收的奇偶校验位接收缓冲器 6 对应的奇偶校验位 bit11-9 RB6<8:0> bit8-0 R 接收缓冲器 6 数据 UART 接收缓冲寄存器 7(UART_RB7) 偏移地址 :7C H 复位值 : _ _ _ B PE7 FE7 RBFF7 RP7 RB7<8:0> bit31-16 PE7 bit15 R 接收缓冲器 7 数据校验错误标志位 0: 正确 1: 错误 FE7 bit14 R 接收缓冲器 7 数据帧错误标志位 0: 正确 1: 错误 RBFF7 bit13 R 接收缓冲器 7 空满标志位 0: 空 1: 满 RP7 bit12 R 接收的奇偶校验位接收缓冲器 7 对应的奇偶校验位 bit11-9 RB7<8:0> bit8-0 R 接收缓冲器 7 数据 V /280

167 UART 应用说明芯片支持 2 个通用异步接收 / 发送器为 UART0,UART1 UART 的发送脉宽调制模式, 使用 T16N 或 BUZ 产生的 PWM 脉冲进行调制, 然后通过 TXx 端口输出调制后的信号, 与 PWM 脉冲本身是否通过 T16NxOUT0 和 T16NxOUT1 端口或 BUZ 端口输出无关, 所以对 T16N 或 BUZ 的输出调制模式, 即使芯片不支持其 I/O 端口复用功能, 仍可以在正确配置后, 产生 PWM 脉冲分别对 TX0,TX1 输出端口的信号进行调制 5. 3 增强型通用异步接收 / 发送器 (EUART0) 概述 配置为普通 UART 模式, 与 UART 功能完全兼容 配置为 7816 模式, 支持 7816 通讯协议 支持异步接收器 / 发送器支持半双工通讯模式支持 8 位数据位和 1 位奇偶校验位数据传输格式支持自动重发重收功能支持可配置内部时钟输出支持双通道通讯可配置 结构框图 APB_EUART EUART 发送器 EUART 接收器 MUX ExTX0/ExCK0 ExTX1/ExCK1 ExRX0/ExIO0 ExRX1/ExIO1 波特率时钟电路 图 5-22 EUART 电路结构框图 EUART 端口复用 EUART 复用端口普通 UART 模式 7816 模式 ExTXy/ExCKy ExTXy ExCKy ExRXy/ExIOy ExRXy ExIOy 配置相应 I/O 端口的复用功能为 EUART 通讯端口复用功能 EUART_CON2 寄存器中 配置 MOD=0, 选择普通 UART 模式, 通讯端口的复用功能为 ExTXy 和 ExRXy V /280

168 配置 MOD=1, 选择 7816 模式, 通讯端口的复用功能为 ExCKy 和 ExIOy EUART 模块支持两个独立的内部时钟输出端口 (ExCK0 和 ExCK1) 配置 CKyE, 可使能 ExCKy 时钟端口, 输出芯片内部时钟, 配置 CKS<1:0>, 可选择输出的时钟源 EUART 模块支持两个数据端口 (ExIO0 和 ExIO1), 这两个数据端口可分时复用, 构成通讯双通道 配置 CHS, 可选择通讯时使用的 ExIOy 数据端口 普通 UART 通讯模式 EUART 模块配置为普通 UART 通讯模式后, 除不支持发送脉宽调制外, 其它功能与 UART 模块一致, 可参考与前面章节的相关内容, 此处不再描述 通讯模式的异步接收器和发送器 7816 模式为半双工通讯方式, 该模式下 EUART_CON0 寄存器中 RXEN 与 TXEN 使能位无效, 由 EUART_CON2 寄存器的 IOC 端口方向控制位交替使能接收器和发送器, 并发送或接收 ACK 应答信号, 同时控制 ExIOy 端口的输入输出状态 配置 IOC=1,EUART 发送数据, 接收 ACK 应答信号 发送数据时, 依次发送起始位 (1bit), 数据位 (8bit, 先发低位, 后发高位 ), 校验位 (1bit); 然后接收 ACK 应答信号 当对连续两帧数据进行背靠背发送时, 两帧数据间的间隔必须大于一定的时间, 该时间称为保护时间, 由通讯双方事先约定 配置 EUART_CON2 寄存器的 ETUS<7:0>, 可选择保护时间 每帧数据发送完成后,EUART 均会接收应答信号 EUART_CON2 寄存器中读取 RNACK, 可判断是否接收到 ACK 应答信号, 其中 1 为 ACK,0 为 NACK 如果在保护时间内未接收到应答信号, 还会置起 NACK 中断标志 RNAIF 配置 IOC=0,EUART 接收数据, 发送 ACK 应答信号 接收数据时, 先等待起始位, 再依次接收数据位 (8bit, 先收低位, 后收高位 ), 校验位 (1bit); 然后判断校验位是否正确, 正确则发送 ACK 应答, 否则发送 NACK, 其中 ACK=1,NACK=0 配置 TNAS<1:0>, 可选择 NACK 电平的宽度 配置 PS, 可选择数据的奇偶校验方式 发送时, 硬件电路自动计算发送数据的奇偶校验位并发送 接收时, 硬件电路自动对接收的数据进行奇偶校验, 如果校验错误, 会置起 EUART_IF 寄存器的奇偶校验错误中断标志 PEIF 支持 4 级发送缓冲器 TB0,TB1,TB2,TB3 和 1 级发送移位寄存器 发送缓冲器 TBy 为只读寄存器, 只能通过发送数据寄存器 EUART_TBW 写入 对异步发送器, 数据从写入到发送到端口的数据流示意图如下所示 : EUART_TBW TB0 TB1 TB2 TB3 发送移位寄存器 ExIOy 端口 图 通讯模式发送数据流示意图 支持 4 级接收缓冲器 RB0,RB1,RB2,RB3 和 1 级接收移位寄存器 可通过读取接收数据 寄存器 EUART_RBR, 得到接收的数据 对异步接收器, 数据从接收端口到各级缓冲器的数据流示意图如下所示 : V /280

169 EUART_RBR RB0 RB1 RB2 RB3 接收移位寄存器 ExIOy 端口 图 通讯模式接收数据流示意图 配置 EUART_CON2 寄存器的 ERST, 可将 7816 通讯模块软件复位, 复位后 : 禁止数据传输 EUART_CON0 寄存器中 TXEN=0,RXEN=0;EUART_IE 寄存器中禁止各中断 TBIE=0, TBWEIE=0,RBIE=0,ROIE=0,FEIE=0,PEIE=0,RNAIE=0;EUART_IF 寄存器中复位相关中断标志为默认值 TBIF=1,BWEIF=0,RBIF=0,ROIF=0,FEIF=0,PEIF=0,RNAIF=0; 清除发送状态标志 TXBUSY=0, 清除接收状态标志 RXBUSY=0; 置起各发送缓冲器空标志 TBEFy=1; 清除各接收缓冲器满标志 RBFFy=0; 清除各接收缓冲器错误标志 FEy=0,PEy= 通讯模式的数据格式 7816 模式通讯数据帧为 8 位数据位和 1 位奇偶校验位, 支持两种数据传输格式, 正向约定数据格式和反向约定数据格式 配置 EUART_CON2 寄存器的 DAS=0, 选择正向约定数据格式 实际发送的数据与写入到寄存器 EUART_TBW 的数据一致 举例说明正向约定数据格式 : 以字节方式向 EUART_TBW 写入数据 0x50, 传输到发送移位寄存器的值为 0x50, 并对 0x50 计算奇偶校验位,ExIOy 端口发送的数据序列依次为 0( 起始位 ) 校验位 同理, 如果 ExIOy 端口收到的数据是 0x50, 则读取寄存器 EUART_RBR, 得到的数据为 0x50 配置 EUART_CON2 寄存器的 DAS=1, 选择反向约定数据格式 实际发送的数据, 是将写入到寄存器 EUART_TBW 的数据, 先高低位互换再取反后的数据 举例说明反向约定数据格式 : 以字节方式向 EUART_TBW 写入数据 0x50, 二进制格式为 , 高低位互换后为 , 再取反后为 , 所以传输到发送移位寄存器的值为 0xF5, 并对 0xF5 计算奇偶校验位,ExIOy 端口发送的数据序列依次为 0( 起始位 ) 校验位 同理, 如果 ExIOy 端口收到的数据是 0xF5 时, 则读取寄存器 EUART_RBR, 得到的数据为 0x 通讯模式的自动重发功能 7816 模式支持数据自动重发功能 配置 EUART_CON2 寄存器的 ARTE=0, 禁止自动重发, 当收到 NACK( 即应答信号电平为 0) 时, 置起 NACK 中断标志 RNAIF, 且 RNACK=1, 然后继续发送下一个数据帧, 并在发送完成后, 根据 ACK 的状态更新 RNACK 位, 但中断标志 RNAIF 始终保持为 1, 直到 EUART 软件复位或通过软件将该标志清 0 举例说明禁止自动重发时的数据传输过程 : 发送移位寄存器中的数据为 0x55, 发送缓冲器 TB3 中的数据为 0xAA 如果数据 0x55 发送成功, 收到 ACK 应答, 则 NACK 中断标志 RNAIF=0, 且 RNACK=0, 然后继续发送数据 0xAA, 并根据发送结果更新 RNAIF 和 RNACK; 如果数据 0x55 发送失败, 未收到 ACK 应答, 则 NACK 中断标志 RNAIF=1, 且 RNACK=1, 然后继续发送数据 0xAA, 并根据发送结果更新 RNACK, 但无论数据 0xAA 发送成功与否, 中断标志 RNAIF 均保持为 1 配置 EUART_CON2 寄存器的 ARTE=1, 使能自动重发, 当收到 NACK( 即应答信号电平为 0) 时, 自动重发前一帧数据, 每次重发均会影响 RNACK, 但不会影响 NACK 中断标志 RNAIF, V /280

170 配置 ARTS<1:0>, 可选择重发的次数 在数据重发过程中, 若某次重发后, 收到 ACK( 即应答信号电平为 1), 则停止重发 若重发次数达到设置的上限后, 数据发送依然失败, 则停止重发, 同时后续未发送的数据也被终止, 置起自动重发失败中断标志 ARTEIF, 清除发送状态标志 TXBUSY 举例说明使能自动重发时的数据传输过程 : 发送移位寄存器中的数据为 0x55, 发送缓冲器 TB3 中的数据为 0xAA, 重发次数为 2 次 如果数据 0x55 发送失败, 则发送移位寄存器中的数据依然是 0x55, 发送缓冲器 TB3 中的数据依然是 0xAA,NACK 中断标志 RNAIF=1, 且 RNACK=1,ARTEIF=0,TXBUSY=1 然后重发第 1 次, 如果收到 ACK 应答, 则 RNACK=0, RNAIF 仍保持为 1,ARTEIF=0,TXBUSY=1, 并继续发送数据 0xAA; 如果收到 NACK, 则 RNACK=1,RNAIF 保持为 1,ARTEIF=0,TXBUSY=1, 并重发第 2 次 如果第 2 次重发依然失败, 则停止重发,RNACK=1,RNAIF 保持为 1,ARTEIF=1,TXBUSY=0, 并不再继续发送数据 0xAA 通讯模式的自动重收功能 7816 模式支持数据自动重收功能 EUART_CON2 寄存器中配置 ARRE=0, 禁止自动重收, 无论接收数据的奇偶校验值是否与校验位相符, 均会在保护时间内发送 ACK( 即应答信号电平为 1) 配置 ARRE=1, 使能自动重收, 当接收数据的奇偶校验值与校验位不符时, 会在保护时间内发送 NACK( 即应答信号电平为 0) 如果发送方支持重发功能, 在收到 NACK 后会重发前一帧数据 特殊功能寄存器 EUART 控制寄存器 0(EUART_CON0) 偏移地址 :00 H 复位值 : _ _ _ B RXP RXMOD<3:0> RBCLR RRST RXEN TXFS TXP TXMOD<3:0> TBCLR TRST TXEN bit31-29 接收端口极性选择 RXP bit28 R/W 0: 正极性 ( 标准 UART 极性 ) 1: 负极性 ( 反向 UART 极性 ) 接收数据格式选择位 0000:8 位数据 RXMOD<3:0> bit27-24 R/W 0010:9 位数据 0100:7 位数据 1000:8 位数据 + 偶校验位 1001:8 位数据 + 奇校验位 V /280

171 1010:8 位数据 + 固定 :8 位数据 + 固定 :7 位数据 + 偶校验位 1101:7 位数据 + 奇校验位 1110:7 位数据 + 固定 :7 位数据 + 固定 1 其他 : 未用 bit23-19 RBCLR bit18 W 接收缓冲器清除 0: 读取时始终为 0 1: 清除接收缓冲器 RRST bit17 W 接收器软件复位 0: 读取时始终为 0 1: 软件复位 RXEN bit16 R/W 接收使能位 bit15-14 TXFS bit13 R/W 发送帧停止位选择 0:1 位停止位 1:2 位停止位 TXP bit12 R/W 发送端口极性选择 0: 正极性 ( 标准 UART 极性 ) 1: 负极性 ( 反向 UART 极性 ) TXMOD<3:0> bit11-8 R/W 发送数据格式选择位 0000:8 位数据 0010:9 位数据 0100:7 位数据 1000:8 位数据 + 偶校验位 1001:8 位数据 + 奇校验位 1010:8 位数据 + 固定 :8 位数据 + 固定 :7 位数据 + 偶校验位 1101:7 位数据 + 奇校验位 1110:7 位数据 + 固定 :7 位数据 + 固定 1 其他 : 未用 bit7-3 TBCLR bit2 W 发送缓冲器清除 0: 读取时始终为 0 1: 清除发送缓冲器 TRST bit1 W 发送器软件复位 0: 读取时始终为 0 V /280

172 TXEN bit0 R/W 1: 软件复位发送使能位 EUART 控制寄存器 1(EUART_CON1) 偏移地址 :04 H 复位值 : _ _ _ B RXBUSY TXBUSY BCS<2:0> RBIM <1:0> TBIM<1:0> TBIM<1:0> bit1-0 R/W 发送缓冲空中断模式选择位 00: 字节空产生中断 ( 缓冲器 1 个字节以上为空 ) 01: 半字空产生中断 ( 缓冲器 2 个字节以上为空 ) 1x: 全空产生中断 ( 缓冲器 4 字节全部为空 ) bit3-2 RBIM <1:0> bit5-4 R/W 接收缓冲满中断模式选择位 00: 字节满产生中断 ( 缓冲器数据多于 1 个字节 ) 01: 半字满产生中断 ( 缓冲器数据多于 2 个字节 ) 1x: 全满产生中断 ( 缓冲器数据 4 字节全满 ) bit7-6 BCS<2:0> bit10-8 R/W 波特率时钟预分频选择位 000: 波特率时钟关闭 001:PCLK 010:PCLK/2 011:PCLK/4 1xx:PCLK/8 bit15-11 TXBUSY bit16 R 发送状态位 0: 发送空闲 1: 正在发送 RXBUSY bit17 R 接收状态位 0: 接收空闲 1: 正在接收 bit31-18 EUART 控制寄存器 2(EUART_CON2) 偏移地址 :08 H 复位值 : _ _ _ B V /280

173 TXFEND RNACK BGTE ETUS<7:0> CKS<1:0> ARTS<1:0> TNAS<1:0> ARRE ARTE PS DAS IOC CHS CK1E CK0E ERST MOD bit31-30 TXFEND bit29 R/W 发送停止位完成标志位 0: 未完成 1: 发送完成 RNACK bit28 R/W 接收 NACK 状态位 0: 未收到 1: 接收到 Bit27-25 BGTE bit24 R/W 数据块保护时间使能位 (22ETU) ETUS<7:0> bit23-16 R/W ETU 保护时间选择位 0:2 个 ETU 时间 1:3 个 ETU 时间 255:257 个 ETU 时间 CKS<1:0> bit15-14 R/W ECKx 输出时钟源选择位 00:UBC 01:UBC/2 10:UBC/4 11:UBC/8 ARTS<1:0> bit13-12 R/W 自动重发次数选择位 00: 重发 1 次 01: 最多重发 2 次 10: 最多重发 3 次 11: 连续重发, 直到数据发送正确为止 TNAS<1:0> bit11-10 R/W 发送 NACK 信号宽度的选择位 00:1 个 ETU 01:1.5 个 ETU 1x:2 个 ETU ARRE bit9 R/W 自动重收使能位 ARTE bit8 R/W 自动重发使能位 PS bit7 R/W 奇偶校验选择位 0: 奇校验 V /280

174 DAS bit6 R/W IOC bit5 R/W CHS bit4 R/W CK1E bit3 R/W CK0E bit2 R/W ERST bit1 W MOD bit0 R/W 1: 偶校验数据格式选择位 0: 正向约定 1: 反向约定 EIO 端口方向控制位 0: 接收数据, 发送应答 1: 发送数据, 接收应答 EIO 通讯通道选择位 0:ExIO0 端口 1:ExIO1 端口 ECK1 端口使能位 ECK0 端口使能位 7816 通讯模块软件复位 0: 读取时始终为 0 1: 软件复位 7816 通讯模式选择 0: 普通 UART 模式 1:7816 模式 注 1:UBC 为波特率预分频时钟, 由 BCS[2:0] 进行选择 EUART 波特率寄存器 (EUART_BRR) 偏移地址 :10 H 复位值 : _ _ _ B BRR<10:0> bit31-11 BRR<10:0> bit10-0 R/W 传输波特率设置位,7816 通讯模式同样需要设置波特率 注 1:EUART 传输波特率计算公式如下 : BCS<2:0>=001 时 :Fpclk/(( BRR+1)*16); BCS<2:0>=010 时 :Fpclk/(( BRR+1)*32); BCS<2:0>=011 时 :Fpclk/(( BRR+1)*64); BCS<2:0>=1xx 时 :Fpclk/(( BRR+1)*128) V /280

175 EUART 中断使能寄存器 (EUART_IE) 偏移地址 :18 H 复位值 : _ _ _ B RBREIE PEIE FEIE ROIE RBIE RNAIE ARTEIE TBWEIE TCIE TBIE bit31-29 读接收缓冲错误中断使能位 RBREIE bit28 R/W bit27 接收校验错误中断使能位 PEIE bit26 R/W 接收帧错误中断使能位 FEIE bit25 R/W 接收数据溢出中断使能位 ROIE bit24 R/W bit23-17 接收缓冲器满中断使能位 RBIE bit16 R/W bit15-14 接收到错误信号中断使能位 RNAIE bit13 R/W 自动重发失败中断使能位 ARTEIE bit12 R/W bit11-9 写发送缓冲错误中断使能位 TBWEIE bit8 R/W bit7-2 发送完成中断使能位 TCIE bit1 R/W V /280

176 TBIE bit0 R/W 发送缓冲器空中断使能位 EUART 中断标志寄存器 (EUART_IF) 偏移地址 :1C H 复位值 : _ _ _ B RBREIF PEIF FEIF ROIF RBIF RNAIF ARTEIF TBWEIF TCIF TBIF bit31-29 RBREIF bit28 R/W 读接收缓冲错误中断标志位 0: 读接收缓冲未错误 1: 读接收缓冲错误软件写 1 清除标志位, 写 0 无效 bit27 PEIF bit26 R/W FEIF bit25 R/W 接收校验错误中断标志位 0: 接收校验正常 1: 接收校验错误软件写 1 清除标志位, 写 0 无效接收帧错误中断标志位 0: 接收帧正常 1: 接收帧错误软件写 1 清除标志位, 写 0 无效 ROIF bit24 R/W 接收数据溢出中断标志位 0: 未溢出 1: 溢出软件写 1 清除标志位, 写 0 无效 bit23-17 RBIF bit16 R 接收缓冲器满中断标志位 0: 非满 1: 满 ( 满足 UxRBIM 所选择的条件 ) bit15-14 RNAIF bit13 R/W 接收到错误信号中断标志位 0: 未接收到空闲帧 1: 接收到空闲帧软件写 1 清除标志位, 写 0 无效 ARTEIF bit12 R/W 自动重发失败中断标志位 0: 自动重发未失败 V /280

177 1: 自动重发失败软件写 1 清除标志位, 写 0 无效 bit11-9 TBWEIF bit8 R/W 写发送缓冲错误中断标志位 0: 写发送缓冲未错误 1: 写发送缓冲错误软件写 1 清除标志位, 写 0 无效 bit7-2 TCIF bit1 R/W TBIF bit0 R 发送完成中断标志位 0: 发送未完成 1: 发送已完成软件写 1 清除标志位, 写 0 无效发送缓冲器空中断标志位 0: 非空 1: 空 ( 满足 UxTBIM 所选择的条件 ) 注 1:EUART 中断禁止时, 如果满足条件仍会置起对应的中断标志位, 只是不会产生中断请求 注 2: 对 EUART_IF 寄存器中的各中断标志位, 写 0 无效, 写 1 才能清除标志位 ; 读操作时, 读取的值为 1 表示有 中断发生 EUART 发送数据写入寄存器 (EUART_TBW) 偏移地址 :20 H 复位值 : _ _ _ B TBW<31:16> TBW<15:0> TBW<31:0> bit31-0 W 写入的发送数据字节写入时 : 仅允许对 TBW<7:0> 写入半字写入时, 仅允许对 TBW<15:0> 写入字写入时 : 对 TBW<31:0> 写入 EUART 接收数据读取寄存器 (EUART_RBR) 偏移地址 :24 H 复位值 : _ _ _ B RBR<<31:16> RBR<<15:0> V /280

178 RBR<31:0> bit31-0 R 读取的接收数据字节读取时 : 仅允许对 RBR<7:0> 读取半字读取时 : 仅允许对 RBR<15:0> 读取字读取时 : 对 RBR<31:0> 读取 EUART 发送缓冲寄存器 0/1(EUART_TB01) 偏移地址 :40 H 复位值 : _ _ _ B TBEF1 TP1 TB1<8:0> TBEF0 TP0 TB0<8:0> bit31-30 TBEF1 bit29 R 发送缓冲器 1 空标志位 0: 满 1: 空 TP1 bit28 R 发送的奇偶校验位发送缓冲器 1 对应的奇偶校验位 bit27-25 TB1<8:0> bit24-16 R 发送缓冲器 1 bit15-14 TBEF0 bit13 R 发送缓冲器 0 空标志位 0: 满 1: 空 TP0 bit12 R 发送的奇偶校验位发送缓冲器 0 对应的奇偶校验位 bit11-9 TB0<8:0> bit8-0 R 发送缓冲器 0 EUART 发送缓冲寄存器 2/3(EUART_TB23) 偏移地址 :44 H 复位值 : _ _ _ B TBEF3 TP3 TB3<8:0> TBEF2 TP2 TB2<8:0> bit31-30 TBEF3 bit29 R 发送缓冲器 3 空标志位 V /280

179 0: 满 1: 空 TP3 bit28 R 发送的奇偶校验位发送缓冲器 3 对应的奇偶校验位 bit27-25 TB3<8:0> bit24-16 R 发送缓冲器 3 bit15-14 TBEF2 bit13 R 发送缓冲器 2 空标志位 0: 满 1: 空 TP2 bit12 R 发送的奇偶校验位发送缓冲器 2 对应的奇偶校验位 bit11-9 TB2<8:0> bit8-0 R 发送缓冲器 2 EUART 接收缓冲寄存器 0/1(EUART_RB01) 偏移地址 :48 H 复位值 : _ _ _ B PE1 FE1 RBFF1 RP1 RB1<8:0> PE0 FE0 RBFF0 RP0 RB0<8:0> 接收缓冲器 1 数据校验错误标志位 PE1 bit31 R 0: 正确 1: 错误 接收缓冲器 1 数据帧错误标志位 FE1 bit30 R 0: 正确 1: 错误 接收缓冲器 1 满标志位 RBFF1 bit29 R 0: 空 1: 满 RP1 bit28 R 接收的奇偶校验位接收缓冲器 1 对应的奇偶校验位 bit27-25 RB1<8:0> bit24-16 R 接收缓冲器 1 接收缓冲器 0 数据校验错误标志位 PE0 bit15 R 0: 正确 1: 错误 接收缓冲器 0 数据帧错误标志位 FE0 bit14 R 0: 正确 1: 错误 V /280

180 RBFF0 bit13 R 接收缓冲器 0 满标志位 0: 空 1: 满 RP0 bit12 R 接收的奇偶校验位接收缓冲器 0 对应的奇偶校验位 bit11-9 RB0<8:0> bit8-0 R 接收缓冲器 0 EUART 接收缓冲寄存器 2/3(EUART_RB23) 偏移地址 :4C H 复位值 : _ _ _ B PE3 FE3 RBFF3 RP3 RB3<8:0> PE2 FE2 RBFF2 RP2 RB2<8:0> 接收缓冲器 3 数据校验错误标志位 PE3 bit31 R 0: 正确 1: 错误 接收缓冲器 3 数据帧错误标志位 FE3 bit30 R 0: 正确 1: 错误 接收缓冲器 3 满标志位 RBFF3 bit29 R 0: 空 1: 满 RP3 bit28 R 接收的奇偶校验位接收缓冲器 3 对应的奇偶校验位 bit27-25 RB3<8:0> bit24-16 R 接收缓冲器 3 接收缓冲器 2 数据校验错误标志位 PE2 bit15 R 0: 正确 1: 错误 接收缓冲器 2 数据帧错误标志位 FE2 bit14 R 0: 正确 1: 错误 接收缓冲器 2 满标志位 RBFF2 bit13 R 0: 空 1: 满 RP2 bit12 R 接收的奇偶校验位接收缓冲器 2 对应的奇偶校验位 bit11-9 RB2<8:0> bit8-0 R 接收缓冲器 2 V /280

181 EUART 应用说明 芯片支持 1 个增强型通用异步接收 / 发送器 EUART SPI 同步串口通讯控制器 (SPI0 /SPI1) 概述 支持主控模式 从动模式 支持 4 种数据传输格式 支持主控模式通讯时钟速率可配置 支持 1 到 8 位帧位宽选择 支持 4 级发送缓冲器和 4 级接收缓冲器 支持发送和接收缓冲器空 / 满中断 支持接收数据溢出中断 发送数据写错误中断 从动模式的发送数据错误中断 支持从动模式的片选变化中断 主控模式的空闲状态中断 支持主控模式延迟接收 支持主控模式发送间隔需要注意的是, 本芯片支持 2 个 SPI 同步串口通讯控制器, 为 SPI0 与 SPI1, 其中,SPI0 内部和 RF 收发器相连, 外部只有 SPI1 可用 结构框图 APB_SPI 传输时钟产生电路 数据传输电路 MUX SCKx MISOx MOSIx NSSx 图 5-25 SPI 电路结构框图 SPI 通讯模式 SPI 支持主控和从动两种通讯模式, 配置 SPI_CON 寄存器的 MS 位, 可选择通讯模式 通讯时钟端口为 SCKx, 从动模式下的片选信号端口为 NSSx, 数据输出端口 MISOx, 数据输入端口 MOSIx, 主控模式下可使用普通 I/O 端口作为片外从设备的片选信号端口, 数据输出端口 MOSIx, 数据输入端口 MISOx 具体见下表所示: SPI 通讯端口 SPI 主控模式 SPI 从动模式 SCKx 支持 支持 MOSIx 支持 支持 MISOx 支持 支持 V /280

182 NSSx 支持 SPI 数据格式配置 SPI_CON 寄存器的 DFS, 可选择 SPI 通讯数据格式, 数据发送和接收时, 均是高位在前, 低位在后 如果是发送数据在先, 接收数据在后, 输出端口 MOSIx( 或 MISOx) 会在第一个 SCKx 时钟边沿, 输出数据的 MSB 位 ; 反之输出端口 MOSIx( 或 MISOx) 在第一个 SCKx 时钟边沿之前, 输出数据的 MSB 位 以下以 SPI 从动通讯模式为例, 对数据通讯时序进行说明 SPI_CON 寄存器中 DFS<1:0> = 00, 上升沿发送 ( 先 ), 下降沿接收 ( 后 ): NSSx SCKx MOSIx MSB MSB-1 LSB MISOx MSB MSB-1 LSB+1 LSB LSB MOSIx????? 图 5-26 SPI 时钟上升沿发送, 下降沿接收波形示意图 DFS<1:0> = 01, 下降沿发送 ( 先 ), 上升沿接收 ( 后 ): NSSx SCKx MOSIx MSB MSB-1 LSB MOSOx MSB MSB-1 LSB+1 LSB LSB MOSIx????? 图 5-27 SPI 时钟下降沿发送, 上升沿接收波形示意图 DFS<1:0> = 10, 上升沿接收 ( 先 ), 下降沿发送 ( 后 ): NSSx SCKx MOSIx MSB MSB-1 LSB+1 LSB MOSOx MSB MSB-1 LSB+1 LSB MOSIx????? V /280

183 图 5-28 SPI 时钟上升沿接收, 下降沿发送波形示意图 DFS<1:0> = 11, 下降沿接收 ( 先 ), 上升沿发送 ( 后 ): NSSx SCKx MOSIx MSB MSB-1 LSB MISOx MSB MSB-1 LSB+1 LSB LSB MOSIx????? 图 5-29 SPI 时钟下降沿接收, 上升沿发送波形示意图 SPI 帧位宽 SPI 传输帧位宽可变, 配置 SPI_CON 寄存器的 DW<2:0>, 可以设置传输帧位宽为 1~8 位 SPI 模块支持同步发送器与同步接收器, 容量均为 4 个字节, 采用以下对齐方式 : SPI 帧位宽 1~8 时, 发送 / 接收缓冲器采用字节对齐, 每一级缓冲器中存储一帧数据,SPI 同步发送器或者同步接收器中最多可缓冲 4+1 帧数据 ; 以上对齐方式均采用低位对齐, 以上 +1 为移位寄存器中存储的一帧数据, 下文中将做详细介绍 SPI 同步发送器支持 4 级发送缓冲器 TB0,TB1,TB2,TB3 和 1 级发送移位寄存器, 可进行数据的连续发送, 直到发送缓冲器和移位寄存器全空, 最多可连续写入和发送 5 帧数据 发送缓冲器 TBy 为只读寄存器, 只能通过发送数据寄存器 SPI_TBW 写入 发送数据寄存器 SPI_TBW 为一个虚拟地址单元, 物理上不存在实际的寄存器电路, 写该寄存器地址单元时, 实际上是将发送数据写入到发送缓冲器 TBy 中, 再传输到发送移位寄存器, 通过发送数据端口 MOSIx( 或 MISOx) 进行数据发送 发送数据寄存器 SPI_TBW 支持 3 种写入方式 : 字节写入, 半字写入和字写入 字节方式写入 SPI_TBW 时, 发送数据被写入到发送缓冲器 TB0; 半字方式写入 SPI_TBW 时, 发送数据被同时写入到发送缓冲器 TB0 和 TB1, 其中低字节存放在 TB1 中 ; 字方式写入 SPI_TBW 时, 发送数据被同时写入到发送缓冲器 TB0,TB1,TB2 和 TB3, 其中低字节存放在 TB3 中 发送数据从写入到发送到端口的数据流示意图如下所示 ( 以主控模式为例 ): SPI_TBW TB0 TB1 TB2 TB3 发送移位寄存器 MOSIx 端口 图 5-30 SPI 发送数据流示意图 支持发送缓冲器空中断, 配置 SPI_IE 寄存器的 TBIM, 可选择中断模式 TBIM<1:0>=00, 为字节空产生中断, 即发送缓冲器 TB0 为空时,SPI_IF 寄存器会置起中断 V /280

184 标志 TBIF; TBIM<1:0>=01, 为半字空产生中断, 即发送缓冲器 TB0 和 TB1 均为空时,SPI_IF 寄存器会置起中断标志 TBIF; TBIM<1:0>=10, 为字空产生中断, 即发送缓冲器 TB0,TB1,TB2 和 TB3 均为空时,SPI_IF 寄存器会置起中断标志 TBIF 支持发送数据寄存器 SPI_TBW 误写中断, 当对 SPI_TBW 的写入方式, 与发送缓冲器 TBy 的空闲状态冲突时, 或写入操作访问错误时,SPI_IF 寄存器会置起误写中断标志 TBWEIF SPI 同步接收器支持 4 级接收缓冲器 RB0,RB1,RB2,RB3 和 1 级接收移位寄存器, 可进行数据的连续接收, 直到接收缓冲器和移位寄存器全满, 最多可连续接收 5 帧数据, 再执行数据读取操作 读取接收数据寄存器 SPI_RBR, 可得到接收的数据,SPI_STA 寄存器中对应的接收缓冲器清除满标志 RBFFy; 也可以读取接收缓冲器 RBy 得到接收的数据, 但不会清除满标志 RBFFy 接收数据寄存器 SPI_RBR 为一个虚拟地址单元, 物理上不存在实际的寄存器电路, 读该寄存器地址单元时, 实际上是读取接收缓冲器 RBy 中的数据 接收数据寄存器 SPI_RBR 支持 3 种读取方式 : 字节读取, 半字读取和字读取 字节方式读取 SPI_RBR 时, 实际是读取接收缓冲器 RB0 的数据 ; 半字方式读取 SPI_RBR 时, 实际是同时读取接收缓冲器 RB0 和 RB1 的数据, 其中 RB0 中的数据为低字节 ; 字方式读取 SPI_RBR 时, 实际是同时读取接收缓冲器 RB0,RB1,RB2 和 RB3, 其中 RB0 中的数据为低字节 接收数据从接收端口到各级缓冲器的数据流示意图如下所示 ( 以主控模式为例 ): SPI_RBR RB0 RB1 RB2 RB3 接收移位寄存器 MOSIx 端口 图 5-31 SPI 接收数据流示意图 同步接收器的接收顺序如下 : 当同步接收器全空时, 接收移位寄存器的数据自动移入 RB0; 仅 RB1~ RB3 空时, 接收移位寄存器的数据自动移入 RB1; 仅 RB2~ RB3 空时, 接收移位寄存器的数据自动移入 RB2; 仅 RB2~ RB3 空时, 接收移位寄存器的数据自动移入 RB3 接收缓冲器 RBy 的数据移到下一级缓冲器后, 会清除其接收满标志 RBFFy 当 4 级接收缓冲器和 1 级接收移位寄存器均满时, 如果再次接收到数据位,SPI_IF 寄存器中会置起接收数据溢出中断标志 ROIF, 同时不会接收新数据, 缓冲器数据仍保持 支持接收缓冲器满中断, 配置 SPI_IE 寄存器的 RBIM, 可选择中断模式 RBIM<1:0>=00, 为字节满产生中断, 即接收缓冲器 RB0 为满时,SPI_IF 寄存器中会置起中断标志 RBIF; RBIM<1:0>=01, 为半字满产生中断, 即接收缓冲器 RB0 和 RB1 均为满时,SPI_IF 寄存器中会置起中断标志 RBIF; V /280

185 RBIM<1:0>=10, 为字满产生中断, 即接收缓冲器 RB0,RB1,RB2 和 RB3 均为满时,SPI_IF 寄存器中会置起中断标志 RBIF SPI 通讯控制配置 SPI 通讯模式, 数据格式 ; 对主控制模式, 还需配置 SPI_CKS, 设定传输时钟速率, 并选择是否使能接收延迟和发送间隔, 对从动模式, 传输时钟由主机方提供 ;SPI_CON 寄存器中配置 EN 和 REN, 使能数据发送和接收 ; 将要发送的数据写入发送数据寄存器 SPI_TBW, 就可以开始数据的发送, 读取接收数据寄存器 SPI_RBR, 可以获得接收到的数据 SPI 主控模式下, 发送缓冲器和发送移位寄存器中的数据发送完毕后, 进入空闲状态, SPI_STA 寄存器中会置起空闲标志 IDLE, 并且 SPI_IF 寄存器中产生空闲中断标志 IDIF SPI 从动模式下, 如果发送缓冲器 TBy 和发送移位寄存器均为空时, 又收到主机提供的通讯时钟, 则 SPI_IF 寄存器中会置起发送错误中断标志 TEIF SPI 从动模式, 支持片选信号变化中断, 配置 SPI_IE 寄存器的 NSSIE, 可使能该中断 配置 SPI_CON 寄存器的 RST 位, 可将 SPI 通讯模块软件复位, 复位后 : 禁止数据通讯 EN=0; SPI_IE 寄存器中禁止相关中断 TBIE=0,TBWEIE=0,RBIE=0,TEIE=0,ROIE=0,IDIE=0, NSSIE=0;SPI_IF 寄存器中复位相关中断标志为默认值 TBIF=1,TBWEIF=0,RBIF=0, TEIF=0,ROIF=0,IDIF=0,NSSIF=0;SPI_STA 寄存器中置起空闲标志 IDLE=1; 置起各发送缓冲器空标志 TBEFy=1; 清除各接收缓冲器满标志 RBFFy= SPI 延迟接收功能 SPI 通讯时, 是利用时钟的上升 / 下降沿分别对数据的发送和接收进行同步 正常通讯时, 对主机接收数据来说, 从机送出的数据应在半个时钟周期内, 到达主机接收端口, 否则会造成主机接收数据的丢失 SPI 主控模式支持延迟接收功能, 配置 SPI_CON 寄存器的 DRE, 可使能该功能, 主机会再延迟半个时钟周期, 在下一个发送时钟边沿处, 进行数据的接收采集 所以延迟接收功能使能后, 从机发送端口和主机接收端口之间的线路延时, 最大可接近 1 个通讯时钟周期 举例说明 SPI 延迟接收功能 :SPI_CON 寄存器中 DFS<1:0>=00, 上升沿发送 ( 先 ), 下降沿接收 ( 后 ) NSSx SCKx MISOx MSB MSB-1 LSB+1 (????) MOSIx MSB MSB-1 LSB+1 MISOx????????? MISOx MSB LSB+2 LSB+1 LSB (????) LSB LSB V /280

186 图 5-32 SPI 延迟接收功能波形示意图 SPI 数据帧发送间隔功能 SPI 主控模式支持数据帧发送间隔功能, 配置 SPI_CON 寄存器的 TME, 可使能该功能, 配置 TMP, 可设定发送间隔周期 当使能 SPI 数据帧发送间隔功能时, 每帧数据发送完成后, 会等待预先设定的发送间隔时间, 再发送下一帧数据 特殊功能寄存器 SPI 控制寄存器 (SPI_CON) 偏移地址 :00 H 复位值 : _ _ _ B RXCLR TXCLR DW<2:0> TMP<5:0> TMS TME DFS<1:0> DRE REN MS RST EN RXCLR bit31 W SPI 接收缓冲器清空控制位 0: 无效 1: 清空接收缓冲器 TXCLR bit30 W SPI 发送缓冲器清空控制位 0: 无效 1: 清空发送缓冲器 bit29-27 DW<2:0> bit26-24 R/W SPI 发送帧位宽 (1~8 位 ) 一帧数据位宽为 DW<2:0>+1 位 TMP<5:0> bit23-18 R/W SPI 帧发送间隔周期设置位 ( 仅主控模式支持 ) 详细说明见备注 TMS bit17 R SPI 帧发送间隔状态标志位 ( 仅主控模式支持 ) 0: 非发送间隔状态 1: 发送间隔状态 TME bit16 R/W SPI 帧发送间隔使能位 ( 仅主控模式支持 ) bit15-8 DFS<1:0> bit7-6 R/W SPI 通讯数据格式 00: 上升沿发送 ( 先 ), 下降沿接收 ( 后 ) 01: 下降沿发送 ( 先 ), 上升沿接收 ( 后 ) 10: 上升沿接收 ( 先 ), 下降沿发送 ( 后 ) 11: 下降沿接收 ( 先 ), 上升沿发送 ( 后 ) V /280

187 DRE bit5 R/W SPI 延迟接收使能位 ( 仅主控模式支持 ) bit4 REN bit3 R/W SPI 接收使能位 ( 需 EN 同时使能 ) MS bit2 R/W SPI 通讯模式选择位 0: 主控模式 1: 从动模式 RST bit1 W SPI 软件复位 0: 读取时始终为 0 1: 软件复位, 自动清零 EN bit0 R/W SPI 通讯使能位 (SPI 通讯使能, 但仅使能数据发送 ) 注 1:SPI 帧发送间隔周期计算公式如下 : TSCKx * (1 + TMP), 即时间间隔为 1~64 个通讯时钟周期 TSCKx 注 2: 由于不同的通讯数据格式对端口的初始电平要求是不同的 ( 参见上面各通讯波形示意图 ), 因此若无法确定使能 SPI 之前的 SPI 端口的初始值, 必须先配置通讯数据格式控制位, 对 SPI 端口初始电平进行自动设置 ; 然后再通过对 SPI_CON 寄存器的 EN 和 REN 置 1 来使能 SPI 即 SPI_CON 寄存器需要分两次写入, 否则易产生通信错误 SPI 发送数据写入寄存器 (SPI_TBW) 偏移地址 :08 H 复位值 : _ _ _ B TBW<31:16> TBW<15:0> TBW<31:0> bit31-0 W 写入的发送数据字节写入时 : 仅允许对 TBW<7:0> 写入半字写入时 : 仅允许对 TBW<15:0> 写入字写入时 : 对 TBW<31:0> 写入 SPI 接收数据读取寄存器 (SPI_RBR) 偏移地址 :0C H 复位值 : _ _ _ B V /280

188 RBR<31:16> RBR<15:0> RBR<31:0> bit31-0 R 读取的接收数据字节读取时 : 仅允许对 RBR<7:0> 读取半字读取时 : 仅允许对 RBR<15:0> 读取字读取时 : 对 RBR<31:0> 读取 SPI 中断使能寄存器 (SPI_IE) 偏移地址 :10 H 复位值 : _ _ _ B RBIM<1:0> TBIM<1:0> TBWEIE NSSIE IDIE ROIE TEIE RBIE TBIE bit31-12 SPI 接收缓冲器满中断模式选择位 00:RB0 满产生中断 RBIM<1:0> bit11-10 R/W 01:RB0 与 RB1 满产生中断 10:RB0~ RB3 全满产生中断 11: SPI 发送缓冲器空中断模式选择位 00:TB0 空产生中断 TBIM<1:0> bit9-8 R/W 01:TB0 与 TB1 空产生中断 10:TB0~TB3 全空产生中断 11: bit7 SPI 发送数据写错误中断使能位 TBWEIE bit6 R/W SPI 片选变化中断使能位 ( 仅从动模式支持 ) NSSIE bit5 R/W SPI 空闲状态中断使能位 ( 仅主控模式支持 ) IDIE bit4 R/W SPI 接收数据溢出中断使能位 ROIE bit3 R/W TEIE bit2 R/W SPI 发送数据错误中断使能位 ( 仅从动模式支持 ) V /280

189 RBIE bit1 R/W TBIE bit0 R/W SPI 接收缓冲器满中断使能位 SPI 发送缓冲器空中断使能位 SPI 中断标志寄存器 (SPI_IF) 偏移地址 :14 H 复位值 : _ _ _ B TBWEIF NSSIF IDIF ROIF TEIF RBIF TBIF bit31-7 SPI 发送数据写错误中断标志位 0: 未发生写错误 1: 发生写错误, 可能会出现下列错误 : 对 SPI_TBW 字写入时,SPI_TBy 未全空 ; TBWEIF bit6 R/W 对 SPI_TBW 半字写入时,SPI_TBy 未半空 ; 对 SPI_TBW 字节写入时,SPI_TBy 全满 ; 对 SPI_TBW<31:16> 进行半字写入 ; 对 SPI_TBW<31:8> 进行字节写入 软件写 1 清除标志位, 写 0 无效 SPI 片选变化中断标志位 ( 仅从动模式支持 ) NSSIF bit5 R/W 0: 片选信号未发生变化 1: 片选信号发生变化 软件写 1 清除标志位, 写 0 无效 SPI 空闲中断标志位 ( 仅主控模式支持 ) 0: 未进入空闲状态 IDIF bit4 R/W 1: 进入空闲状态 软件写 1 清除标志位, 写 0 无效 ; 或软件写寄存器 SPI_TBW 清除标志位 SPI 接收数据溢出中断标志位 ROIF bit3 R/W 0: 未溢出 1: 溢出 软件写 1 清除标志位, 写 0 无效 TEIF bit2 R/W SPI 发送错误中断标志位 ( 仅从动模式支持 ) 0: 未发生发送错误 V /280

190 RBIF bit1 R TBIF bit0 R 1: 发生发送错误 : 发送缓冲器和发送移位寄存器全空时, 又收到主控方提供的通讯时钟软件写 1 清除标志位, 写 0 无效 SPI 接收缓冲器满中断标志位读 SPI_RBR 可清除中断标志 SPI 发送缓冲器空中断标志位写 SPI_TBW 可清除中断标志 注 1:SPI 中断禁止时, 如果满足条件仍会置起对应的中断标志位, 只是不会产生中断请求 注 2: 对 SPI_IF 寄存器中的各中断标志位, 写 0 无效, 写 1 才能清除标志位 ; 读操作时, 读取的值为 1 表示有中断 发生 SPI 发送缓冲寄存器 (SPI_TB) 偏移地址 :18 H 复位值 : _ _ _ B TB3<7:0> TB2<7:0> TB1<7:0> TB0<7:0> TB3<7:0> bit31-24 R 发送数据缓冲器 3 TB2<7:0> bit23-16 R 发送数据缓冲器 2 TB1<7:0> bit15-8 R 发送数据缓冲器 1 TB0<7:0> bit7-0 R 发送数据缓冲器 0 SPI 接收缓冲寄存器 (SPI_RB) 偏移地址 :1C H 复位值 : _ _ _ B RB3<7:0> RB2<7:0> RB1<7:0> RB0<7:0> RB3 bit31-24 R 接收数据缓冲器 3 RB2 bit23-16 R 接收数据缓冲器 2 RB1 bit15-8 R 接收数据缓冲器 1 RB0 bit7-0 R 接收数据缓冲器 0 SPI 状态寄存器 (SPI_STA) V /280

191 偏移地址 :20 H 复位值 : _ _ _ B IDLE RBFF3 RBFF2 RBFF1 RBFF0 TBEF3 TBEF2 TBEF1 TBEF0 NSS bit31-17 IDLE bit16 R SPI 空闲标志位 ( 仅主控模式支持 ) 0: 非空闲状态 1: 空闲状态 RBFF3 bit15 R RB3 满标志位 0: 空 1: 满 RBFF2 bit14 R RB2 满标志位 0: 空 1: 满 RBFF1 bit13 R RB1 满标志位 0: 空 1: 满 RBFF0 bit12 R RB0 满标志位 0: 空 1: 满 TBEF3 bit11 R TB3 空标志位 0: 满 1: 空 TBEF2 bit10 R TB2 空标志位 0: 满 1: 空 TBEF1 bit9 R TB1 空标志位 0: 满 1: 空 TBEF0 bit8 R TB0 空标志位 0: 满 1: 空 NSS bit7 R SPI 片选标志位 ( 仅从动模式支持 ) 0: 选中 1: 未选中 bit6-0 SPI 波特率设置寄存器 (SPI_CKS) 偏移地址 :24 H V /280

192 复位值 : _ _ _ CKS<9:0> CKS<9:0> bit9-0 R/W SPI 通讯时钟设置位 ( 仅主控模式支持 ) SPI 通讯波特特率计算公式如下 : CKS<9:0>=0x000 时 :FPCLK; CKS<9:0>=0x001~0x3FF 时 :FPCLK/(CKS * 2) bit31-10 注 1:SPI 通讯时钟特率计算公式如下,SPI_CKS 寄存器中 : CKS<9:0>=0x000 时 :FPCLK; CKS<9:0>=0x001~0x3FF 时 :FPCLK/(CKS * 2) SPI 应用说明芯片支持 2 个 SPI 同步串口通讯控制器, 为 SPI0 与 SPI1, 其中,SPI0 内部和 RF 收发器相连, 外部只有 SPI1 可用 为保证 SPI 的正常通信,SPI 的配置需遵循如下要求 : 1) 选择 SPI 使用 20ns 滤波器时,SPI 的通讯时钟频率必须小于 20Mz, 如果频率要求较高且芯片通讯工作环境理想无干扰, 则可尝试禁止滤波器 2)SPI 的帧位宽与 SPI_CKS 寄存器 CKS 的配置存在以下关系 : 当 SPI 帧位宽选择 5~8 位时,CKS >= 0; 当 SPI 帧位宽选择 2~4 位时,CKS >= 1; 当 SPI 帧位宽选择 1 位时,CKS > 2 3) 由于不同的通讯数据格式对端口的初始电平要求是不同的 ( 参见上面各通讯波形示意图 ), 因此若无法确定使能 SPI 之前的 SPI 端口的初始值, 必须先配置通讯数据格式控制位, 对 SPI 端口初始电平进行自动设置 ; 然后再通过对 SPI_CON 寄存器的 EN 和 REN 置 1 来使能 SPI, 即对 SPI_CON 寄存器分两步写入 5. 5 I2C 总线串口通讯控制器 (I2C0) 概述 支持单主控模式支持自动重复寻呼功能支持自动发送 停止位 功能支持数据应答延迟功能支持数据帧传输间隔功能 V /280

193 支持软件触发 起始位 支持软件触发 停止位 支持软件触发数据接收, 接收模式可配 支持从动模式支持 7 位从机地址可配支持从机地址匹配中断标志支持接收 停止位 中断标志支持时钟线自动下拉等待请求功能支持自动发送 未应答 功能 支持 4 级发送缓冲器和 4 级接收缓冲器 通讯端口 SCLx 和 SDAx, 均支持输出模式可配置 : 推挽输出或开漏输出 通讯端口 SCLx 和 SDAx 支持 16 倍速采样器可配置 支持发送和接收缓冲器空 / 满中断 支持起始位中断 停止位中断 支持接收数据溢出中断 发送数据写错误中断 结构框图 传输状态控制电路 16 倍速采样器 SCLx APB_I2C 数据传输电路 16 倍速采样器 SDAx 通讯端口主从选择 图 5-33 I2C 电路结构框图 V /280

194 I2C 总线基本原理 I2C 通讯协议 I2C 总线通讯协议, 读写操作示意图如下所示 : 启动信号 启动信号 寻呼从机地址 + 写操作 寻呼从机地址 + 读操作 应答信号 应答信号 主控器 数据字节 1 应答信号 从动器 主控器 数据字节 1 应答信号 从动器 数据字节 2 数据字节 2 应答信号 应答信号 停止信号 停止信号 图 5-34 I2C 总线通讯协议示意图 I2C 通讯由主控器发起, 发送启动信号 S 控制总线, 发送停止信号 P 释放总线 I2C 总线上可以同时有多个主控器 ( 前提是每个主控器都支持多主机仲裁机制 ), 并至少需要一个从动器, 且每一个从动器都必须有一个独立且唯一的寻呼地址 主控器在发送启动信号后, 紧接着发送寻呼从机地址和读写控制位 读写控制位 R/ W, 用于通知从动器数据传送的方向, 0 表示由主控器向从动器 写 数据, 1 表示由主控器向从动器 读 数据 I2C 通讯协议支持应答机制, 即发送方每传送一个字节的数据 ( 包括寻呼地址 ), 接收方必须反馈一个应答信号 (ACK 或 NACK), 发送方再根据应答信号进行下一步的操作 如果主控器和从动器的时钟端口 (SCL) 都使用输出开漏设计, 且主控器支持时钟线等待请求操作, 那么从动器可以在时钟线为低电平时下拉时钟线, 使主控器等待从动器, 直到从动器释放时钟线 I2C 通讯时, 每个数据字节在传输时都是高位在前, 低位在后 I2C 通讯时, 数据线 SDA 的数据信号电平, 只在时钟线 SCL 的低电平期间变化, 在 SCL 高电平期间应保持稳定 如果 SDA 电平在 SCL 高电平期间变化, 则会触发起始位或停止位, 由高到低变化触发起始位, 由低到高变化触发停止位 I2C 数据传输格式 I2C 通讯时, 根据从动器的具体设计规格, 确定实际的数据传输格式 以下只介绍一种常用的 I2C 通讯数据传输格式 : V /280

195 S Slave Address W ACK Memory Address ACK DATA0 ACK 7 位寻呼从动器地址 片内访问单元地址 写入数据 0 DATA1 ACK DATAn ACK (NACK) P 主控器接收 主控器发送 写入数据 1 写入数据 n 图 5-35 I2C 主控器写入从动器数据示意图 S Slave Address W ACK Memory Address ACK 7 位寻呼从动器地址 片内访问单元地址 R-S Slave Address R ACK DATA0 ACK 7 位寻呼从动器地址 读取数据 0 DATA1 ACK DATAn NACK P 读取数据 1 读取数据 n 主控器接收 主控器发送 图 5-36 I2C 主控器读取从动器数据示意图 I2C 通讯端口配置 I2C 通讯端口 SCLx 和 SDAx, 均支持推挽输出和开漏输出两种模式, 配置 I2C_CON 寄存器的 SCLOD 和 SDAOD, 可分别进行选择 推挽输出是 I/O 端口的标准输出, 输出数据 0 和 1 时,I/O 端口电平也分别为 0 和 1 对推挽输出模式, 存在端口电平冲突的风险 例如 : 当主控器输出 0, 而从动器输出 1 时, 会发生端口信号电平冲突, 导致端口状态不确定 开漏输出是 I2C 总线协议中的标准模式, 可以避免端口电平冲突问题 开漏输出端口的示意图如下所示 : V /280

196 VDD SDA 数据线 SCL 时钟线 SCL1_OUT SDA1_OUT SCL2_OUT SDA2_OUT SCL_IN SDA_IN SCL_IN SDA_IN 主控器 从动器 图 5-37 开漏输出端口示意图 开漏输出端口的高电平由 I2C 总线的上拉电阻提供, 而低电平由主控器与从动器共同决定 任何一方都可以将总线电平下拉到 0, 但只有当双方都释放总线后, 总线电平才能被上拉 到 I2C 时基定时器与 16 倍速采样器 通讯端口 SCLx 和 SDAx 支持 16 倍采样器, 配置 I2C_CON 寄存器的 SCLSE,SDASE 可 使能两个端口的采样器 I2C 时基定时器的计数周期, 作为 16 倍速采样器的采样周期 在 I2C 主控模式下,I2C 时基定时器还用于提供通讯传输波特率 如果需要使用 16 倍速采样器, 或使用 I2C 主控模式, 均必须使能 I2C 时基定时器 配置 I2C_CON 寄存器的 TJE, 可使能该时基定时器, 配 TJP, 可设定时基定时周期 I2C 主控模式下, 总线端口信号的时序参数如下 : 参数名称 参数符号 使能 16 倍速采样器 禁止 16 速倍采样器 启动 / 重启动位建立时间 TSU:S > Tosc x (TJP+1) x 12 Tosc x (TJP+1) x 8 启动 / 重启动位保持时间 THD:S > Tosc x (TJP+1) x 12 Tosc x (TJP+1) x 8 停止位建立时间 TSU:P > Tosc x (TJP+1) x 12 Tosc x (TJP+1) x 8 停止位保持时间 THD:P > Tosc x (TJP+1) x 12 Tosc x (TJP+1) x 8 数据 / 应答位建立时间 TSU:DA > Tosc x (TJP+1) x 4 Tosc x (TJP+1) x 4 数据 / 应答位保持时间 THD:DA > Tosc x (TJP+1) x 8 Tosc x (TJP+1) x 4 通讯时钟高电平脉宽 THIGH Tosc x (TJP+1) x 12 Tosc x (TJP+1) x 8 通讯时钟低电平脉宽 TLOW Tosc x (TJP+1) x 12 Tosc x (TJP+1) x 8 表 5-1 I2C 总线端口信号的时序参数列表 V /280

197 TSU:S TSU:DA THD:P SDAx THD:DA SCLx THD:S THIGH TLOW TSU:P 图 5-38 I2C 总线端口信号的波形示意图使能 16 倍速采样器后, 采样器对 I2C 总线进行采样, 而 I2C 总线由于上拉电阻的作用, 开始时的电平是不稳定的, 当 I2C 总线电平稳定后, 采样器的输出才能稳定 因此, 这段不稳定的时间将造成 I2C 传输波特率的下降, 下降程度取决于总线电平上升边沿的时间 I2C 主控模式下, 传输波特率计算公式如下 (Fosc 为系统时钟频率 ): 使能通讯端口的 16 倍速采样器时 :FSCL=Fosc / ((TJP+1) x 24); 禁止通讯端口的 16 倍速采样器时 :FSCL=Fosc / ((TJP+1) x 16) I2C 通讯发送器支持 4 级发送缓冲器 TB0,TB1,TB2,TB3 和 1 级发送移位寄存器, 可进行数据的连续发送, 直到发送缓冲器和移位寄存器全空, 最多可连续写入和发送 5 帧数据 发送缓冲器 TBy 为只读寄存器, 只能通过发送数据寄存器 I2C_TBW 写入 发送数据寄存器 I2C_TBW 为一个虚拟地址单元, 物理上不存在实际的寄存器电路, 写该寄存器地址单元时, 实际上是将发送数据写入到发送缓冲器 TBy 中, 再传输到发送移位寄存器, 通过数据端口 SDAx 进行数据发送 发送数据寄存器 I2C_TBW 支持 3 种写入方式 : 字节写入, 半字写入和字写入 字节方式写入 I2C_TBW 时, 发送数据被写入到发送缓冲器 TB0; 半字方式写入 I2C_TBW 时, 发送数据被同时写入到发送缓冲器 TB0 和 TB1, 其中低字节存放在 TB1 中 ; 字方式写入 I2C_TBW 时, 发送数据被同时写入到发送缓冲器 TB0,TB1,TB2 和 TB3, 其中低字节存放在 TB3 中 发送数据从写入到发送到端口的数据流示意图如下所示 : I2C_TBW TB0 TB1 TB2 TB3 发送移位寄存器 SDAx 端口 图 5-39 I2C 发送数据流示意图 支持发送缓冲器空中断, 配置 I2C_IE 寄存器的 TBIM, 可选择中断模式 TBIM<1:0>=00, 为字节空产生中断, 即发送缓冲器 TB0 为空时, 会置起 I2C_IF 寄存器的中断标志 TBIF; TBIM<1:0>=01, 为半字空产生中断, 即发送缓冲器 TB0 和 TB1 均为空时, 会置起 I2C_IF 寄存器的中断标志 TBIF; TBIM<1:0>=10, 为字空产生中断, 即发送缓冲器 TB0,TB1,TB2 和 TB3 均为空时, 会 V /280

198 置起 I2C_IF 寄存器的中断标志 TBIF 支持发送数据寄存器 I2C_TBW 误写中断, 当对 I2C_TBW 的写入方式, 与发送缓冲器 TBy 的空闲状态冲突时, 或写入操作访问错误时, 会置起 I2C_IF 寄存器误写中断标志 TBWEIF I2C 通讯接收器支持 4 级接收缓冲器 RB0,RB1,RB2,RB3 和 1 级接收移位寄存器, 可进行数据的连续接收, 直到接收缓冲器和移位寄存器全满, 最多可连续接收 5 帧数据, 再执行数据读取操作 读取接收数据寄存器 I2C_RBR, 可得到接收的数据,I2C_STA 寄存器中对应的接收缓冲器清除满标志 RBFFy; 也可以读取接收缓冲器 RBy 得到接收的数据, 但不会清除满标志 RBFFy 接收数据寄存器 I2C_RBR 为一个虚拟地址单元, 物理上不存在实际的寄存器电路, 读该寄存器地址单元时, 实际上是读取接收缓冲器 RBy 中的数据 接收数据寄存器 I2C_RBR 支持 3 种读取方式 : 字节读取, 半字读取和字读取 字节方式读取 I2C_RBR 时, 实际是读取接收缓冲器 RB0 的数据 ; 半字方式读取 I2C_RBR 时, 实际是同时读取接收缓冲器 RB0 和 RB1 的数据, 其中 RB0 中的数据为低字节 ; 字方式读取 I2C_RBR 时, 实际是同时读取接收缓冲器 RB0,RB1,RB2 和 RB3, 其中 RB0 中的数据为低字节 接收数据从数据端口到各级缓冲器的数据流示意图如下所示 : I2C_RBR RB0 RB1 RB2 RB3 接收移位寄存器 SDAx 端口 图 C 接收数据流示意图 接收缓冲器 RBy 的数据移到下一级缓冲器后, 会清除其接收满标志 RBFFy 当 4 级接收缓冲器和 1 级接收移位寄存器均满时, 会立即置起接收数据溢出中断标志 I2C_IF 寄存器中 ROIF, 同时不会接收新数据 支持接收缓冲器满中断,I2C_IE 寄存器种配置 RBIM, 可选择中断模式 RBIM<1:0>=00, 为字节满产生中断, 即接收缓冲器 RB0 为满时, 会置起 I2C_IF 寄存器的中断标志 RBIF; RBIM<1:0>=01, 为半字满产生中断, 即接收缓冲器 RB0 和 RB1 均为满时, 会置起 I2C_IF 寄存器的中断标 RBIF; RBIM<1:0>=10, 为字满产生中断, 即接收缓冲器 RB0,RB1,RB2 和 RB3 均为满时, 会置起 I2C_IF 寄存器的中断标志 RBIF I2C 通讯控制配置 I2C_CON 寄存器的 RST, 可将 I2C 通讯模块软件复位, 复位后 : 禁止数据通讯 EN=0; I2C_IE 寄存器中禁止相关中断 SRIE=0,SPIE=0,TBIE=0,TBWEIE=0,RBIE=0,TEIE=0, ROIE=0,NAIE=0;I2C_IF 寄存器中复位相关中断标志为默认值 SRIF=0,SPIF=0, TBIF=1,TBWEIF=0,RBIF=0,TEIF=0,ROIF=0,NAIF=0; 置起空闲标志 IDLE=1; V /280

199 置起各发送缓冲器空标志 TBEFy=1; 清除各接收缓冲器满标志 RBFFy= I2C 起始位配置 SRT, 可触发 I2C 发送起始位, 启动或重启动一次传输操作, 发送寻呼从动器地址 起始位波形图如下 : SDAx SCLx S START ADRRESS R/W ACK 图 5-41 I2C 起始位波形图 I2C 主控模式, 支持自动寻呼功能 配置 I2C_MOD 寄存器的 SRAE, 可使能自动寻呼功能,I2C 主控器会自动判断 地址应答 位, 若该 地址应答 位为未应答 NACK, 则自动发送起始位, 重启动本次地址寻呼操作, 并且直到接收到应答 ACK 才停止继续重启动 在芯片应用时, 使能 I2C 自动寻呼功能前, 需确保被寻呼的地址是真实存在的, 否则会造成主控器芯片持续重启动地址寻呼 举例说明自动寻呼功能 : 芯片通过 I2C 向 EEPROM 器件写入数据时, 存在写等待时间 在 EEPROM 存储器本身写数据期间, 主控器芯片寻呼该器件时, 将收到未应答 NACK 可有两种方法解决 EEPROM 写数据期间的地址寻呼问题 : 一种是主控器芯片设定寻呼间隔, 在 EEPROM 数据写操作完成后, 再寻呼该器件 ; 另一种是主控器芯片启动自动寻呼功能, 持续寻呼该器件, 直到收到应答 ACK 为止 SDAx SCLx S S START ADRRESS R/W ACK START ADRRESS R/W ACK 图 5-42 I2C 自动寻呼波形图 I2C 停止位配置 I2C_MOD 寄存器的 SPT, 可触发 I2C 发送停止位, 结束本次传输操作 停止位波形图如下 : V /280

200 SDAx SCLx START ADRRESS R/W ACK 图 5-43 I2C 停止位波形图 P STOP I2C 主控模式, 支持自动结束功能 配置 I2C_MOD 寄存器的 SPAE, 可使能自动结束功能, 在发送 NACK 或接收 NACK 后, 自动发送停止位, 结束本次不成功的传输操作 自动结束功能的优先级小于自动寻呼功能 I2C 应答延迟功能 I2C 的主控模式, 支持应答延迟功能, 配置 I2C_MOD 寄存器的 ADE, 可使能该功能, 配置 ADLY, 可设定应答延迟的时间 应答延迟功能使能后,I2C 主控器将延迟发送通讯时钟 SCLx 的应答位脉冲 当从动器不能按照正常数据的通讯速率, 对应答位进行接收和发送时, 主控器可使能应答延迟功能, 并根据从动器的具体设计规格, 设定应答延迟时间 举例说明 I2C 应答延迟功能 :I2C_MOD 寄存器中 ADLY<2:0>=001, 延迟时间为 1 个 TSCLx, 通讯波形示意图如下 : SDAx SCLx *TSCLx 9 1.5*TSCLx DATA ACK DATA ACK 图 5-44 I2C 应答延迟功能波形示意图 I2C 数据帧传输间隔功能 I2C 主控模式, 支持数据帧传输间隔功能, 配置 I2C_MOD 寄存器的 TIS, 可使能该功能, 并设定间隔的时间 数据帧传输间隔时间设定后, 在当前数据帧的应答位脉冲之后,I2C 主控器将延迟一段设定的时间, 再发送下一个数据帧的通讯脉冲 当从动器不能及时读取接收到的数据, 或准备好发送的数据时, 主控器可根据从动器的具体设计规格, 设定数据帧的传输间隔 举例说明 I2C 数据帧传输间隔功能 :I2C_MOD 寄存器中 TIS<3:0>=0001, 间隔时间为 1 个 TSCLx, 通讯波形示意图如下 : V /280

201 SDAx SCLx *TSCLx *TSCLx DATA ACK DATA ACK 图 5-45 I2C 数据帧传输间隔功能波形示意图 I2C 时钟线自动下拉等待请求功能 I2C 从动模式, 支持时钟线自动下拉等待请求功能, 配置 I2C_MOD 寄存器的 CSE, 可使能该功能 为实现 I2C 时钟线的下拉等待请求功能, 还需配置 I2C_CON 寄存器的 SCLOD, 将通讯端口 SCLx 选择为开漏输出模式, 通过上拉电阻提供高电平, 使从动器可对时钟线下拉控制, 使主控器等待 在通常情况下, 从动器处于释放时钟线的状态, 时钟线 SCLx 完全由主控器控制 但当从动器出现异常情况, 短时间内无法继续进行数据传输时, 从动器可以在时钟线 SCLx 为低电平时输出 0( 不可以在高电平时输出 0, 否则会破坏数据传输过程 ), 强行使 SCLx 保持低电平, 使主控器进入通讯等待状态, 直到从动器释放时钟线 时钟线下拉等待请求波形示意图如下 : 主控器 从动器 主控器释放时钟线 从动器下拉时钟线 从动器释放时钟线 SCLx 图 5-46 I2C 时钟线下拉等待波形示意图 I2C 从动模式下, 时钟自动下拉等待请求功能使能后, 当接收到本芯片寻呼地址和读操作位时, 如果 I2C 的发送缓冲器和发送移位寄存器全空, 则会自动将时钟线下拉 ; 当接收到本芯片寻呼地址和写操作位时, 如果 I2C 的接收缓冲器和接收移位寄存器全满, 则会自动将时钟线下拉 I2C 自动发送未应答功能 I2C 从动模式, 支持自动发送未应答 NACK 功能, 配置 I2C_MOD 寄存器的 ANAE, 可使能该功能 从动器使能自动发送未应答功能时, 不会强制控制时钟线, 适用于通讯端口 SCLx 选择为推挽输出或开漏输出模式两种情况 I2C 从动模式下, 自动发送未应答 NACK 功能使能后, 当接收到本芯片寻呼地址和读操作位时, 如果 I2C 的发送缓冲器和发送移位寄存器全空, 则会自动发送未应答 NACK; 当接 V /280

202 收到本芯片寻呼地址和写操作位时, 如果 I2C 的接收缓冲器和接收移位寄存器全满, 则会 自动发送未应答 NACK, 通知主控器重新通讯 特殊功能寄存器 I2C 控制寄存器 (I2C_CON) 偏移地址 :00 H 复位值 : _ _ _ B SA<6:0> RW TJP<7:0> TJE SDASE SCLSE SDAOD SCLOD RST EN bit31-24 SA<6:0> bit23-17 R/W 从机地址位主控模式 : 触发 启动 / 重启动 操作时, 自动发送从动模式 : 接收到 启动 / 重启动 后用于匹配比较 I2C 读写控制位 0: 写操作 RW bit16 1: 读操作 R/W 主控模式 : 该位可读可写, 触发 启动 / 重启动 操作时, 自动发送该位从动模式 : 该位只可读, 从机地址匹配后, 硬件自动根据接收到的控制位值, 更新该位 TJP<7:0> bit15-8 R/W I2C 时基定时周期设置位 00~FF: 分别为 1~256 个 TPCLK TJE bit7 R/W I2C 时基定时器使能位 bit6 SDASE bit5 R/W SDAx 端口 16 倍速采样使能位 SCLSE bit4 R/W SCLx 端口 16 倍速采样使能位 SDAOD bit3 R/W SDAx 端口输出模式选择位 0: 推挽输出 1: 开漏输出 SCLOD bit2 R/W SCLx 端口输出模式选择位 0: 推挽输出 V /280

203 RST bit1 W EN bit0 R/W 1: 开漏输出 I2C 软件复位 0: 读取时始终为 0 1: 软件复位, 自动清零 I2C 通讯使能位 I2C 工作模式寄存器 (I2C_MOD) 偏移地址 :04 H 复位值 : _ _ _ B TAS BLD RDT SPT SRT TIS<3:0> ADE ADLY<2:0> SPAE SRAE ANAE CSE RDM<2:0> MS bit31-25 I2C 发送应答设置位 ( 仅从动模式支持 ) TAS bit24 R/W 0: 发送 ACK 1: 发送 NACK bit23-20 I2C 总线释放功能控制位 ( 仅主控模式支持 ) 0: 无效 BLD bit19 R/W 1:SDAx 端口为高电平,SCLx 端口发送 8 个时钟 该功能需配合 I2C 起始位和停止位使用, 达到 释放时钟线和数据线的目的 I2C 接收数据触发位 ( 仅主控模式支持 ) RDT bit18 R/W 0: 无效 1: 开始发送通讯时钟, 接收数据, 由 RDM<2:0> 配置接收数据模式 I2C 停止位触发位 ( 仅主控模式支持 ) SPT bit17 R/W 0: 无效 1: 触发停止位 I2C 起始位触发位 ( 仅主控模式支持 ) SRT bit16 R/W 0: 无效 1: 触发起始位, 产生起始位发送完成中断标志 I2C 数据帧传输间隔设置位 ( 仅主控模式支持 ) TIS<3:0> bit15-12 R/W ~1111: 分别为 1~15 个 I2C 通讯时钟周期 ADE bit11 R/W I2C 应答延迟使能位 ( 仅主控模式支持 ) V /280

204 ADLY<2:0> bit10-8 R/W SPAE bit7 R/W SRAE bit6 R/W ANAE bit5 R/W CSE bit4 R/W RDM<2:0> bit3-1 R/W MS bit0 R/W I2C 应答延迟时间设置位 ( 仅主控模式支持 ) 000:0.5 个 I2C 通讯时钟周期 001:1 个 I2C 通讯时钟周期 010:1.5 个 I2C 通讯时钟周期 011:2 个 I2C 通讯时钟周期 100:2.5 个 I2C 通讯时钟周期 101:3 个 I2C 通讯时钟周期 110:3.5 个 I2C 通讯时钟周期 111:4 个 I2C 通讯时钟周期 I2C 自动结束使能位 ( 仅主控模式支持 ) ( 当发送或接收 NACK 后, 自动发送停止位, 优先级小于 SRAE) I2C 自动寻呼使能位 ( 仅主控模式支持 ) ( 若寻呼地址的应答位为 NACK, 则自动重启动本次寻呼操作 ) I2C 自动发送未应答使能位 ( 仅从动模式支持 ) I2C 时钟线自动下拉等待请求使能位 ( 仅从动模式支持 ) I2C 接收模式选择位 ( 仅主控模式支持 ) 000: 接收 1 字节, 发送 ACK 001: 接收 1 字节, 发送 NACK 010: 连续接收 2 字节, 每个字节发送 ACK 011: 连续接收 2 字节, 前 1 字节发送 ACK, 后 1 字节, 发送 NACK 100: 连续接收 4 字节, 每个字节发送 ACK 101: 连续接收 4 字节, 前 3 字节发送 ACK, 后 1 字节, 发送 NACK 110: 连续接收, 每个字节发送 ACK 111: 完成该字节接收, 发送 NACK I2C 通讯模式选择位 0: 主控模式 1: 从动模式 I2C 中断使能寄存器 (I2C_IE) 偏移地址 :08 H V /280

205 复位值 : _ _ _ B TIDLEIE RBIM<1:0> TBIM<1:0> TBWEIE NAIE ROIE TEIE RBIE TBIE SPIE SRIE bit31-13 TIDLEIE bit12 R/W I2C 发送空闲中断使能位 RBIM<1:0> bit11-10 R/W I2C 接收缓冲器满中断模式选择位 00: 字节满产生中断 01: 半字满产生中断 10: 字满产生中断 11: TBIM<1:0> bit9-8 R/W I2C 发送缓冲器空中断模式选择位 00: 字节空产生中断 01: 半字空产生中断 10: 字空产生中断 11: TBWEIE bit7 R/W I2C 发送数据写错误中断使能位 NAIE bit6 R/W I2C 未应答 NACK 中断使能位 ROIE bit5 R/W I2C 接收数据溢出中断使能位 TEIE bit4 R/W I2C 发送数据错误中断使能位 RBIE bit3 R/W I2C 接收缓冲器满中断使能位 TBIE bit2 R/W I2C 发送缓冲器空中断使能位 SPIE bit1 R/W I2C 停止位中断使能位 SRIE bit0 R/W I2C 起始位中断使能位 V /280

206 I2C 中断状态寄存器 (I2C_IF) 偏移地址 :0C H 复位值 : _ _ _ B TIDLEIF TBWEIF NAIF ROIF TEIF RBIF TBIF SPIF SRIF bit31-13 I2C 发送空闲中断标志位 TIDLEIF bit12 R/W 0: 未产生空闲中断 1: 空闲中断标志 软件写 1 清除标志位, 写 0 无效 bit11-8 I2C 发送数据写错误中断标志位 0: 未发生写错误 1: 发生写错误, 可能会出现下列错误 : 对 I2C_TBW 字写入时,TBy 未全空 ; TBWEIF bit7 R/W 对 I2C_TBW 半字写入时,TBy 未半空 ; 对 I2C_TBW 字节写入时,TBy 全满 ; 对 I2C_TBW<31:16> 进行半字写入 ; 对 I2C_TBW<31:8> 进行字节写入 软件写 1 清除标志位, 写 0 无效 I2C 未应答中断标志位 0: 未产生未应答 NACK NAIF bit6 R/W 1: 产生未应答 NACK I2C 接收或发送 NACK 位后, 产生中断标志 软件写 1 清除标志位, 写 0 无效 I2C 接收数据溢出中断标志位 ROIF bit5 R/W 0: 未溢出 1: 溢出 软件写 1 清除标志位, 写 0 无效 I2C 发送错误中断标志位 0: 未发生发送错误 TEIF bit4 R/W 1: 发生发送错误 : 发送缓冲器和发送移位寄存器全空 时, 又收到主控方提供的通讯时钟 软件写 1 清除标志位, 写 0 无效 I2C 接收缓冲器满中断标志位 RBIF bit3 R 0: 非满 1: 满 V /280

207 TBIF bit2 R SPIF bit1 R/W SRIF bit0 R/W I2C 发送缓冲器空中断标志位 0: 非空 1: 空 I2C 停止位中断标志位 0: 未产生停止位 1: 产生停止位主控模式 : 发送停止位后产生中断标志 从动模式 : 接收停止位后产生中断标志 软件写 1 清除标志位, 写 0 无效 I2C 起始位中断标志位 0: 未产生起始位 1: 产生起始位主控模式 : 如果禁止自动寻呼, 发送完 起始位 + 地址 + 接收应答位后 产生中断标志 如果使能自动寻呼, 发送完 起始位 + 地址 + 接受应答位, 并且应答位为 ACK 时, 产生中断标志 从动模式 : 接收到 起始位 + 地址位, 且地址匹配, 发送应答位后, 产生中断标志 软件写 1 清除标志位, 写 0 无效 注 : 对 I2C_IF 寄存器中的各中断标志位, 写 0 无效, 写 1 才能清除标志位 ; 读操作时, 读取的值为 1 表示有中断发生 I2C 发送数据写入寄存器 (I2C_TBW) 偏移地址 :10 H 复位值 : _ _ _ B TBW<31:16> TBW<15:0> TBW<31:0> bit31-0 W 写入的发送数据字节写入时 : 仅允许对 TBW<7:0> 写入半字写入时 : 仅允许对 TBW<15:0> 写入字写入时 : 对 TBW<31:0> 写入 I2C 接收数据读取寄存器 (I2C_RBR) 偏移地址 :14 H 复位值 : _ _ _ B RBR<31:16> V /280

208 RBR<15:0> RBR<31:0> bit31-0 R 读取的接收数据字节读取时 : 仅允许对 RBR<7:0> 读取半字读取时 : 仅允许对 RBR<15:0> 读取字读取时 : 对 RBR<31:0> 读取 I2C 发送缓冲寄存器 (I2C_TB) 偏移地址 :18 H 复位值 : _ _ _ B TB3<7:0> TB2<7:0> TB1<7:0> TB0<7:0> TB3<7:0> bit31-24 R 发送数据缓冲器 3 TB2<7:0> bit23-16 R 发送数据缓冲器 2 TB1<7:0> bit15-8 R 发送数据缓冲器 1 TB0<7:0> bit7-0 R 发送数据缓冲器 0 I2C 接收缓冲寄存器 (I2C_RB) 偏移地址 :1C H 复位值 : _ _ _ B RB3<7:0> RB2<7:0> RB1<7:0> RB0<7:0> RB3<7:0> bit31-24 R 接收数据缓冲器 3 RB2<7:0> bit23-16 R 接收数据缓冲器 2 RB1<7:0> bit15-8 R 接收数据缓冲器 1 RB0<7:0> bit7-0 R 接收数据缓冲器 0 I2C 状态寄存器 (I2C_STA) 偏移地址 :20 H 复位值 : _ _ _ B IDLE ACK V /280

209 RBFF3 RBFF2 RBFF1 RBFF0 TBEF3 TBEF2 TBEF1 TBEF0 bit31-18 IDLE bit17 R I2C 空闲标志位 0: 非空闲状态 1: 空闲状态 ACK bit16 R I2C 应答位 0: 应答 ACK 1: 未应答 NACK RBFF3 bit15 R RB3 满标志位 0: 空 1: 满 RBFF2 bit14 R RB2 满标志位 0: 空 1: 满 RBFF1 bit13 R RB1 满标志位 0: 空 1: 满 RBFF0 bit12 R RB0 满标志位 0: 空 1: 满 TBEF3 bit11 R TB3 空标志位 0: 满 1: 空 TBEF2 bit10 R TB2 空标志位 0: 满 1: 空 TBEF1 bit9 R TB1 空标志位 0: 满 1: 空 TBEF0 bit8 R TB0 空标志位 0: 满 1: 空 bit I2C 应用说明 芯片支持 1 个 I2C 总线串口通讯控制器 I2C0 I2C 总线在连续发送数据的应用中, 利用发送空闲标志 (TIDLEIF) 进入中断的方式进行数据发送时, 要注意以下 2 点 : 1) 主控模式下, 在主程序中设置 Memory Address 之后, 发送空闲标志 (TIDLEIF) 置 1 V /280

210 并触发中断, 在中断服务程序中, 将数据写入 I2C_TBW 中, 并开始发送数据 ; 2) 从动模式下, 必须在主程序中等待 I2C_STA 寄存器的 IDLE 置 1 之后, 将以 Memory Address 为起始地址的第一个数据写入 I2C_TBW 中 当主机发送读命令后, 发送空闲标志 (TIDLEIF) 置 1 并触发中断, 在中断服务程序中发送数据 在主机读完数据后, 必须发送 STOP 位, 否则, 若要直接再次 START 读操作, 可能导致数据发送错误 I2C_IE 寄存器的 TBIM( 发送缓冲器中断模式选择位 ) 会影响 TIDLEIF, 因此, 对于字节发送或半字发送, 在 I2C 开始发送数据时最好使用字空产生中断模式 (TBIM=2 b10), 否则容易出错 如果使用字节空 (TBIM=2 b00) 或者半字空 (TBIM=2 b01) 中断模式, 则第一次发送的数据必须将 I2C_TBW 的四个字节填满 使用发送空闲标志 (ITIDLEIF) 的好处在于, 在 I2C 发送空闲中断使能位 (TIDLEIE) 有效的情况下, 只需清除发送空闲标志位 (TIDLEIF), 即可达到连续发送数据的目的 5. 6 模数转换器 (ADC) 概述 支持 12 位采样精度 采样速率最高支持 500ksps (kilo-samples per second) 支持 16 个模拟输入端 ( 可用 15 个,AIN4 未引出 ) 支持 12 位转换结果 支持 ADC 中断, 可唤醒睡眠模式 ( 仅在时钟源为 LRC 时唤醒 ) 支持正负向参考电压可配置 支持转换时钟可配置 支持自动转换比较功能 结构框图 ADVREFP ADVREFN APB_ADC ADC_DR 转换时钟选择器 模数转换器 通道选择 AIN0 AIN1 AIN2 AIN3 AIN12 AIN13 AIN14 AIN15 ADC 控制寄存器 图 5-47 ADC 内部结构图 ADC 基本配置 将端口配置为 ADC 模拟输入通道的方式如下 : 配置 GPIO_PxINEB 寄存器, 关断该端口的数字输入 ; 配置 GPIO_PxDIR 寄存器, 关断该 V /280

211 端口的数字输出 配置 ADC_CHS 寄存器的 CHS<4:0>, 选择相应的 ADC 模拟通道 ADC 正常工作时必须使能的控制位 :ADC_VREFCON 寄存器的 VREF_EN 和 IREF_EN, ADC_CON0 寄存器的 EN,ADC_CON1 寄存器的 VCMBUF_EN ADC 高精度参考电压 ADC 提供一个高精度内部 1.8V 或者 2.6V 的参考源, 用作 ADC 的参考电压 ADC 正常工作 时必须使能 VREF_EN 与 IREF_EN 该模块使用 CHOP 技术将有效提高 ADC 的精度 参 考模块使能 VREF_EN, 同时需打开 CHOP_CLK 时钟, 并配置 CHOP_CLK 时钟 详情请 参考 ADC_VREFCON 控制寄存器 CHOP_EN 使能, 可提高 ADC 参考电压产生电路的 Bandgap 的电流镜匹配度 CHOP_EN1 使能, 可消除提高 ADC 参考电压产生电路的模拟运算放大器的直流偏置和低频 1/f 噪声 CHOP_EN 和 CHOP_EN1 都使能时,ADC 参考电压需要长达约 20ms 的建立时间, 若无法 接受该建立时间, 则必须禁止 CHOP_EN 和 CHOP_EN1, 不提高 ADC 参考电压源精度, 此时的建立时间约 50us CHOP_CLK 由 PCLK 时钟分频产生, 分频比由 CHOP_CLK_DIV 设定 CHOP_CLK 推荐 值在 256KHz 左右, 如 PCLK 为 48MHz 时,CHOP_CLK_DIV 设置为 110(128 分频 ), 即 CHOP_CLK 频率为 375KHz 还可通过设置 CHOP_CLK_SEL 对 CHOP_CLK 再分频, 建 议值为 101, 即 8 分频 ADC 数据转换 配置 ADC_CHS 寄存器的 CHS<4:0>, 可选择 ADC 模拟通道 ; 配置 ADC_CON1 寄存器的 CLKS, 可选择工作时钟源 ; 配置 CLKDIV<2:0>, 可选择时钟源预分频 ; 配置 VREFP<1:0>, 可选择正向参考电压, 配置 VREFN, 可选择负向参考电压, 当 VREFP<1:0> 为 01 时, 必须 开启 VRBUF_EN; 配置 ADC_CON0 寄存器的 EN, 使能 ADC; 最后配置 TRIG, 启动 A/D 转换, 转换完成后, 硬件电路自动将 TRIG 清零 ADC 在每次转换完成后, 会产生 ADC_IF 寄存器的中断标志 IF, 需软件清零 ; 启动下一次 A/D 转换时, 需重新配置 TRIG AD 采样时间可选择硬件或软件控制, 默认为硬件自动控制 转换时间为 12 个 ADC 时钟 ADC 最快采样速率为 500Ksps, 通过配置 ADC_CON1 寄存器的 CLKS 和 CLKDIV 寄存器 来产生合适的 ADC 时钟, 避免超出 ADC 所支持的最高采样速率 500ksps V /280

212 ADCLK SMPS EN Tog* SAMPON 12Tadclk TRIG 采样时间 转换时间 IF 软件清零 ADC_DR 原数据 新数据 图 5-48 ADC 数据转换时序示意图 (ADC_CON1 寄存器的 SMPS=0, 软件控制采样 ) ADCLK SMPS EN Tog* 12Tadclk TRIG 采样时间 转换时间 IF 软件清零 ADC_DR 原数据 新数据 图 5-49 ADC 数据转换时序示意图 (ADC_CON1 寄存器的 SMPS=1, 硬件控制采样 ) 注 1:Tog>0; 注 2:AD 转换时钟周期 Tadclk, 可通过 ADC_CON1 寄存器的 CLKS 和 CLKDIV<2:0> 配置不同的频率 ADC 应用例程 1: 启动一次 A/D 转换 LDR R0, = ADC_VREFCON ; 使能 VREF_EN 与 IREF_EN, 选择 2.6V LDR R1, =0X07 STR R1, [R0] LDR R0, =ADC_CON1 ; A/D 时钟源选择 PCLK 的 32 分频, 选择内部 参考电压 VREF 2.6V 为正向参考电压,VREF BUF 使能, 选择硬件控制采样时间,VCM BUF 使能 且为高速模式,AD 转换高速使能 LDR R1, =0X STR R1, [R0] LDR R0, =ADC_CHS ; 选择 AIN3 LDR R1, =0X03 STR R1, [R0] LDR R0, =ADC_CON0 ; 使能 ADC V /280

213 LDR R1, =0X01 STR R1, [R0] LDR R0, =ADC_CON0 ; A/D 转换 LDR R1, =0X03 STR R1, [R0] WAIT4IF LDR R0, =ADC_IF ; 等待 ADC 中断 LDR R1, =0X01 TST R0, R1 BEQ WAIT4IF STR R1, [R0] ; 清零 ADC 中断 LDR R0, =ADC_CON0 ; 关闭 ADC LDR R1, =0X00 STR R1, [R0] 自动转换比较功能芯片提供自动转换比较功能, 可自动完成多次 AD 转换并计算出均值, 并根据所设定的阈值进行比较产生相应的中断, 均值和每次转换出的结果均可读 配置 ADC_CON0 寄存器的 ACP_EN 为 1 时, 对 TRIG 写 1 则启动连续自动转换比较功能, 并固定为硬件控制采样时间, 对 SMPS 写 0 无效 启动此功能前必须提前完成下面配置 : 配置 ADC_CON1 寄存器的 ST 可设置采样时间, 建议采样时间大于 1us 配置 ADC_ACPC 寄存器的 TIMES, 可设置单次溢出时间内的采样转换次数 配置 OVFL_TIMES, 可设置溢出时间, 每次溢出后自动计算平均值, 保存在 ADC_ACPMEAN 中, 如果 ADC_CON0 寄存器的 EN 关闭, 则自动清零 若溢出时间已到, 但采样转换次数未满, 则直到完成所有转换次数才启动下一个溢出时间计算 配置 ADC_ACPC 寄存器的 CLKS 可选择此模块的工作时钟源, 为 PCLK 或者 LRC(32KHz) 溢出时钟的时钟源为此时钟源的 256 分频 如果需要在芯片睡眠模式下, 自动转换比较模块仍保持工作, 则在进入睡眠模式之前, 需要将工作时钟设置为 LRC, 并配置 CLKS 选择 A/D 时钟源为 LRC, 否则进入睡眠模式后此模块不能正常工作 配置 ADC_ACPCMP 寄存器的 CMP_MIN, 设置自动比较的低阈值, 如果 ADC_ACPMEAN 寄存器的 MEAN_DATA 小于等于此阈值, 则中断标志 ACPMINIF 置 1 配置 ADC_ACPCMP 寄存器的 CMP_MAX, 设置自动比较的高阈值, 如果 ADC_ACPMEAN 寄存器的 MEAN_DATA 大于等于此阈值, 则中断标志 ACPMAXIF 置 1 ADC 应用例程 2: 启动一次 A/D 自动转换 LDR R0, = ADC_VREFCON ; 使能 VREF_EN 与 IREF_EN, 选择 2.6V LDR R1, =0X07 STR R1, [R0] LDR R0, =ADC_CON1 ; A/D 时钟源选择 PCLK 的 32 分频, 选择内部 参考电压 VREF 2.6V 为正向参考电压,VREF BUF 使能, 选择硬件控制采样时间,VCM BUF 使能 且为高速模式,AD 转换高速使能 V /280

214 LDR R1, =0X STR R1, [R0] LDR R0, =ADC_CHS ; 选择 AIN3 LDR R1, =0X03 STR R1, [R0] LDR ADC_IE, =0X07 LDR ADC_ACPCMP, =0X ; 设置自动比较的高 / 低阈值 LDR ADC_ACPC, =0x001801F ;ACP 模块工作时钟为 LRC, 每次溢 出时间内自动转换 8 次, 溢出时间为 32x Tacp LDR R0, =ADC_CON0 ; 使能 ADC 与自动转换比较功能 LDR R1, =0X05 STR R1, [R0] LDR R0, =ADC_CON0 ; 启动 A/D 转换 LDR R1, =0X07 STR R1, [R0] 特殊功能寄存器 ADC 参考控制寄存器 (ADC_VREFCON) 偏移地址 :40 H 复位值 : _ _ _ B CHOP_CLK_DIV<2:0> FILTERCLK_S EL<1:0> 保 留 CHOP_CLK_SEL<2:0> CHOP _EN1 CHOP_E N IREF_ EN VREF_ SEL VREF_EN bit31-19 CHOP CLK 时钟源预分频选择位 000 = 关闭 001 = 1:4 010 = 1:8 CHOP_CLK_DIV <2:0> bit18-16 R/W 011 = 1: = 1: = 1: = 1: = 1:256 bit15-14 输出滤波时钟选择位 FILTERCLK_SEL<1:0> bit :256K 10:128K V /280

215 01:64K 00:32K bit11 CHOP_CLK_SEL<2:0> bit10-8 R/W CHOP_CLK 输入分频选择位 000:CHOP_CLK 256 分频 001:CHOP_CLK 128 分频 010:CHOP_CLK 64 分频 011:CHOP_CLK 32 分频 100:CHOP_CLK 16 分频 101:CHOP_CLK 8 分频 111,110: ( 建议选择 101, 即 8 分频 ) bit7-5 CHOP_EN1 bit4 R/W OP CHOP CLK 使能控制位 CHOP_EN bit3 R/W 电流 CHOP CLK 使能控制位 IREF_EN bit2 R/W IREF 使能控制位 VREF_SEL bit1 R/W 内部 VREFP 电压选择控制位 0:1.8V 1:2.6V VREF_EN bit0 R/W 内部 VREFP 使能控制位 注 1:A/D 正常工作时必须开启 VREF_EN 与 IREF_EN ADC 转换值寄存器 (ADC_DR) 偏移地址 :00 H 复位值 : _ _ _ B DR<11:0> bit31-12 DR<11:0> bit11-0 R A/D 转换结果 V /280

216 ADC 控制寄存器 0(ADC_CON0) 偏移地址 :04 H 复位值 : _ _ _ B ACP_EN TRIG EN bit31-3 ACP_EN bit2 R/W A/D 自动转换比较功能使能位 0: 关闭 1: 启动 TRIG bit1 R/W A/D 转换状态位 0:A/D 未进行转换, 或 A/D 转换已完成 ( 硬件清 0, 且硬件清 0 优先 ) 1:A/D 转换正在进行, 该位置 1 启动 A/D 转换 SMPS 为 0 时,TRIG 的写操作失效 ( 由硬件根据 SMPON 软件采样和 ADC 转换过程进行控制 ), 且不能将其读出作为 ADC 转换完成的标志 EN bit0 R/W A/D 转换使能位 (ACP_EN 为 1 时, 该位无效 ) 注 1:TRIG 软件只能写 1, 且写 1 后硬件自动清零 注 2: 关闭 SMPON 时, TRIG 与 ADC_IF 寄存器的 IF 位均可作为转换完成标志 而开启 SMPON 时, 仅 ADC_IF 寄存器的 IF 位可作为转换完成标志 建议无论 SMPON 是否开启, 均通过 ADC_IF 寄存器的 IF 位来判断 ADC 是否转换完成 ADC 控制寄存器 1(ADC_CON1) 偏移地址 :08 H 复位值 : _ _ _ B VCMBUF_HS VCMBUF_EN ST<4:0> 保 留 HSE N SMPON SMPS VRBUF_EN VREFN VREFP<1:0> CLKS CLKDIV<2:0> bit31-26 VCMBUF_HS bit25 R/W ADC 共模电压 VCM BUF 高速模式使能控制位 0:, 仅作测试使用 V /280

217 VCMBUF_EN bit24 R/W ADC 共模电压 VCM BUF 使能控制位 bit23-21 ST<1:0> bit20-16 R/W A/D 采样时间选择位 ( 硬件控制有效 ) 采样时间 :ST*2+1 个 Tadclk bit15 HSEN bit14 R/W AD 转换速度控制位 0:, 仅作测试使用 1: 高速 SMPON bit13 R/W A/D 采样软件控制位 (ACP_EN 为 1 时, 该位无效 ) 0: 关闭 AD 采样 1: 启动 AD 采样 SMPS bit12 R/W A/D 采样模式选择位 (ACP_EN 为 1 时, 固定为 1) 0: 软件控制 1: 硬件控制 VRBUF_EN bit11 R/W VREF BUF 使能位 VREFN bit10 R/W A/D 负向参考电压选择位 0: 内部地电压 VSS 1: 外部参考电压 AVREFN VREFP<1:0> bit9-8 R/W A/D 正向参考电压选择位 00: 选择 AD 的工作电压 01: 选择内部参考电压 VREFP( 2.6V 或 1.8V), AVREFP 端口复用作普通 I/O 端口 10: 选择内部参考电压 VREFP( 2.6V 或 1.8V), AVREFP 端口输出内部参考电压 VREF 11: 外部参考电压 AVREFP, 该电压不能高于 AD 的工作电压 bit7-4 CLKS bit3 R/W A/D 时钟源选择位 0:PCLK 1:LRC(32KHz) CLKDIV<2:0> bit2-0 R/W A/D 时钟源预分频选择位 000 = 1:1 001 = 1:2 010 = 1:4 V /280

218 011 = 1:8 100 = 1: = 1: = 1: = 1:256 注 1: 选择内部参考电压 VREF 2.6V 或 1.8V 作为 ADC 正向参考电压时, VRBUF_EN 必须置 1; 注 2:ADC 工作时 VCMBUF_HS,VCMBUF_EN,HSEN 均必须置 1; 注 3:ADC 使用其工作电压 (VREFP=2 b00), 或外部参考电压 (VREFP=2 b11), 作为参考电压时, 最大转换时钟频率为 4MHz, 使用内部参考电压作为参考电压时 (VREFP=2 b01 或 2 b10), 最大转换时钟频率为 2MHz ADC 通道选择寄存器 (ADC_CHS) 偏移地址 :0C H 复位值 : _ _ _ B VDD5_FLAG_EN CHS<4:0> bit31-9 VDD 检测控制 ( 如果应用系统中 VDD 电压会小 VDD5_FLAG_EN bit8 R/W 于 3.7V, 则需使能该位,ADC 硬件电路根据 VDD 电压进行自调整, 以保证 ADC 的可靠性 ) bit7-5 A/D 模拟通道选择位 00000: 通道 0(AIN0) 00001: 通道 1(AIN1) 00010: 通道 2(AIN2) 00011: 通道 3(AIN3) 00100: 通道 4(AIN4) 00101: 通道 5(AIN5) CHS<4:0> bit4-0 R/W 00110: 通道 6(AIN6) 00111: 通道 7(AIN7) 01000: 通道 8(AIN8) 01001: 通道 9(AIN9) 01010: 通道 10(AIN10) 01011: 通道 11(AIN11) 01100: 通道 12(AIN12) 01101: 通道 13(AIN13) V /280

219 01110: 通道 14(AIN14) 01111: 通道 15(AIN15) 其它 : 通道关闭 ADC 中断使能寄存器 (ADC_IE) 偏移地址 :10 H 复位值 : _ _ _ B ACPOVIE ACPMAXIE ACPMINIE IE bit31-4 ACPOVIE bit3 ADC 自动转换溢出中断使能位 ACPMAXIE bit2 R/W ADC 自动转换高阈值超出中断使能位 ACPMINIE bit1 R/W ADC 自动转换低阈值超出中断使能位 IE bit0 R/W ADC 中断使能位 ADC 中断标志寄存器 (ADC_IF) 偏移地址 :14 H 复位值 : _ _ _ B ACPOVIF ACPMAXIF ACPMINIF IF bit31-4 ACPOVIF bit3 R/W ADC 自动转换溢出中断标志位 0: 自动转换的溢出时间未到 1: 自动转换的溢出时间已到 ( 由硬件置 1, 软件清除 ) 软件写 1 清除标志位, 写 0 无效 ACPMAXIF bit2 R/W ADC 自动转换高阈值超出中断标志位 V /280

220 ACPMINIF bit1 R/W IF bit0 R/W 0: 均值结果到达高阈值 1: 均值结果大于或等于高阈值 ( 由硬件置 1, 软件清除 ) 软件写 1 清除标志位, 写 0 无效 ADC 自动转换低阈值超出中断标志位 0: 均值结果没有到达最低阈值 1: 均值结果小于或等于低阈值 ( 由硬件置 1, 软件清除 ) 软件写 1 清除标志位, 写 0 无效 ADC 中断标志位 0: 正在进行转换 1:A/D 转换完成 ( 由硬件置 1, 软件清除 ) 软件写 1 清除标志位, 写 0 无效 注 1:ADC 中断禁止时, 如果满足条件仍会置起对应的中断标志位, 只是不会产生中断请求 注 2: 对 ADC_IF 寄存器中的各中断标志位, 写 0 无效, 写 1 才能清除标志位 ; 读操作时, 读取的值为 1 表示有中 断发生 ADC 自动转换比较控制寄存器 (ADC_ACPC) 偏移地址 :28 H 复位值 : _ _ _ B CLKS TIMES<1:0> OVFL_TIME<11:0> bit31-21 ACP 溢出时钟的时钟源选择位 CLKS bit20 R/W 0:PCLK 1:LRC(32KHz) bit19-18 自动转换比较次数选择位 ( 基于由 OVFL_TIME 设定的时间段内 ) TIMES<1:0> bit17-16 R/W 00:1 次 01:2 次 10:4 次 11:8 次 bit15-12 每次自动转换比较的溢出时间, 可配置范 OVFL_TIME<11:0> bit11-0 R/W 围为 0~19, 计数时钟源为 ACP_CLKS 的 256 分频, 计数时钟周期为 Tacp, 分 别对应如下溢出时间 : V /280

221 0:1 xtacp 1:2 x Tacp 2:3 x Tacp 9C3 H :2500xTacp 注 1: 配置 OVFL_TIME 的值必须大于一次 A/D 采样与转换时间 ADC 自动转换比较阈值寄存器 (ADC_ACPCMP) 偏移地址 :30 H 复位值 : _ _ _ B CMP_MAX<11:0> CMP_MIN<11:0> bit31-28 CMP_MAX<11:0> bit R/W 自动比较高阈值 bit15-12 CMP_MIN<11:0> bit 11-0 R/W 自动比较低阈值 ADC 自动转换数据寄存器 (ADC_ACPMEAN) 偏移地址 :34 H 复位值 : _ _ _ B MEAN_DATA <11:0> bit31-12 MEAN_DATA<11:0> bit 11-0 R 自动转换结果的均值 5. 7 实时时钟 (RTC) 概述 仅 POR 上电复位有效, 支持程序写保护, 有效避免系统干扰对时钟造成的影响 采用外部 KHz 晶体振荡器作为 RTC 精确计时的时钟源 ; 如果应用系统对 RTC 计时精度要求不高, 还可选用内部 LRC 作为时钟源 ; 如果应用系统将 RTC 作为普通计数器使用, 还可选用 PCLK 或 PCLK 的 256 分频作为时钟源 可进行高精度数字校正, 配合温补算法实现温度补偿功能, 提供高精度计时 时钟调校提供两种时间精度, 调校范围为 ±384ppm( 或 ±128ppm), 可实现最大时 V /280

222 间精度为 ±1.5 ppm( 或 ±0.5ppm) 时间计数 ( 实现小时 分钟和秒 ) 和日历计数 ( 实现年 月 日和星期 ), BCD 格式 提供 5 个可编程定时中断 提供 2 个可编程日历闹钟 提供一路可配置时钟输出 自动闰年识别, 有效期到 2099 年 12 小时和 24 小时模式设置可选 低功耗设计 : 工作电压为 3.6V 时模块工作电流典型值为 1.5μA ( 最大值为 3μA) RTC 写保护为避免程序的异常运行对 RTC 模块的误操作,RTC 写保护寄存器 RTC_WP 用于阻止程序对 RTC 模块其它寄存器的误写 ( 不包括 RTC_WP 寄存器本身 ) RTC_WP 寄存器为虚拟寄存器 要对 RTC 模块其它寄存器进行写操作时, 需先对 RTC_WP 寄存器写 0x55AAAA55, 之后可对 RTC 模块其它寄存器进行连续写操作 对 RTC_WP 寄存器写入其他值重新进入写保护状态, 写保护状态下对其他寄存器进行的写操作将被忽略 可通过读 RTC_WP 寄存器确认 RTC 模块是否处于写保护状态, 读出值为 0x55AAAA55, 表示当前可对 RTC 模块其它寄存器进行一次写操作 ; 读出值为 0x 表示 RTC 模块处于写保护状态 RTC_WP 寄存器无其它读出值 时间日期设置由于 APB 总线时钟与 RTC 时间计数器时钟异步, 因此 RTC 时间计数器不能直接读写, 只能通过缓冲器进行读写 RTC 时分秒寄存器 RTC_HMS 和 RTC 年月日周寄存器 RTC_YMDW 用于 RTC 时间计数器的写入和读取 这两个寄存器只是读写缓冲器, 而不是时间计数器本身 读时间计数器的操作步骤如下 : 1) 配置读写选择位 TMWR=0, 选择时间计数器读操作 ; 2) 配置读写触发位 TMUP=1, 触发读操作 ; 3) 读操作完成后, 时间计数器的值被分别读出到 RTC_HMS 和 RTC_YMDW, 并且 TMUP 位自动清零 写时间计数器的操作步骤如下 ( 复位或上一次时间计数器读 / 写操作完成后 ): 1) 配置 12/24 小时模式选择位 HSWI; 2) 写入设置值到 RTC_HMS 和 / 或 RTC_YMDW 寄存器 ; 3) 配置读写选择位 TMWR=1, 选择时间计数器写操作 ; 4) 配置读写触发位 TMUP=1, 触发写操作 ; 5) 写操作完成后,RTC_HMS 和 RTC_YMDW 寄存器更新过的设置值被写入时间计数器, 并且 TMUP 位自动清零 注 1: 写时间计数器操作是将从复位或上一次读操作完成后, 更新过的 RTC_HMS 和 / 或 RTC_YMDW 寄存器的内 容写入相应时间计数器, 而对应于未更新字段的时间计数器不受写入影响 V /280

223 注 2: 当 TMUP 位为 1 时, 可通过将 TMWR 清零提前中止当前的写操作 被中止的写操作结果不确定 时间和日期寄存器数据格式采用 BCD 编码 秒计数范围从 00 到 59, 进位到分钟后从 59 变为 00 分钟计数范围从 00 到 59, 进位到小时后从 59 变为 00 小时计数范围根据控制 位 RTCHSWI 的设置选择 12/24 小时模式, 进位后从 PM11 到 AM12 或 AM11 到 PM12, 或 23 到 00 星期计数器为循环移位寄存器, 设置时对相应星期位写 1, 其它位均写 0 日计数按照每月最后一天加 1 进位到下月, 日计数范围按月分为 : 一 三 五 七 八 十 十二月从 1 到 31; 四 六 九 十一月从 1 到 30; 二月 ( 普通年份 ) 从 1 到 28; 二月 ( 闰年 ) 从 1 到 29; 月计数范围从 1 到 12, 进位到年后从 12 变为 1 年计数范围从 00 到 99(00,04,08,,92,96 为闰年 ),99 后不再进位到 00 12/24 小时模式对照表如下 : 24 小时模式 12 小时模式 24 小时模式 12 小时模式 (AM12) 01(AM1) 02(AM2) 03(AM3) 04(AM4) 05(AM5) 06(AM6) 07(AM7) 08(AM8) 09(AM9) 10(AM10) 11(AM11) (PM12) 21(PM1) 22(PM2) 23(PM3) 24(PM4) 25(PM5) 26(PM6) 27(PM7) 28(PM8) 29(PM9) 30(PM10) 31(PM11) 表 /24 小时模式对照表 V /280

224 RTC 中断源 RTC 模块共有 7 个中断源, 即 : 周闹钟中断 WAFG 日闹钟中断 DAFG 5 个周期中断月 日 时 分 秒中断每个中断源都有独立的使能位, 使能位影响该中断是否产生 IRQ 中断请求, 而不影响中断功能 即关闭相应中断使能, 标志位仍可用于相应功能查询 当有多个中断使能时, 各中断经过 或 逻辑产生 IRQ 中断请求 即任何一个被使能的中断产生中断事件时, 均产生 IRQ 中断请求, 且只有将所有的产生中断事件的中断标志清零后,IRQ 中断请求才解除 特殊功能寄存器 RTC 写保护寄存器 (RTC_WP) 偏移地址 :20 H 复位值 : _ _ _ B WP<31:16> WP<15:0> WP<31:0> bit31-0 R/W 0x0000_0000:RTC 模块写保护 0x55AA_AA55:RTC 模块可进行一次写操作 ( 写操作完成后自动恢复到写保护状态 ) RTC 控制寄存器 (RTC_CON) 偏移地址 :00 H 复位值 : _ _ _ B PON XST CLKS<1:0> HSWI TMWR TMUP - bit RTC 上电复位标志位 ( 软件只能将该位清 0) PON bit7 R/W 0: 实时时钟正常工作 1: 监测到 RTC 上电复位 ( 必须软件清 0 后,RTC 才能开始工作 ) XST bit6 R 振荡器停振监测标志位 0: 振荡器持续工作正常 V /280

225 1: 振荡器有停振现象发生 CLKS<1:0> bit5-4 R/W RTC 时钟源选择位 ( 必须在写时间数据前设置 ) 00: KHz 振荡器时钟源 (RTC 精确计时 ) 01:LRC 时钟源 (RTC 非精确计时 ) 10:PCLK/256(RTC 用作普通计数器 ) 11:PCLK(RTC 用作普通计数器 ) - bit3 - - HSWI bit2 R/W 12/24 小时模式选择位 ( 必须在写时间数据前设置 ) 0:12 小时模式 1:24 小时模式 TMWR bit1 R/W 时间计数器读写选择位 0: 时间计数器读出操作 1: 时间计数器写入操作 TMUP bit0 R/W 时间计数器读写触发位 ( 程序只能写 1, 读写完成后自动清零 ) 0: 时间计数器读写操作已完成 1: 时间计数器正在进行读写操作 注 1:RTC 模块上电复位后一直处于复位状态, 只有将 PON 位清零后,RTC 才进入工作状态 注 2: 为保证精度, 建议 RTCCLKS 值设置为 00, 即选用外部 KHz 晶振 ; 对于低精度要求的运用, 可选用 LRC 时钟源 只有将 RTC 用作普通的 Timer 时, 可将 RTCCLKS 设置为 10 或 11 时 RTC 调校寄存器 (RTC_CAL) 偏移地址 :04 H 复位值 : _ _ _ B CLKC COCR<2:0> DEV CALF<7:0> - bit RTC 输出脉冲端口使能位 CLKC bit12 R/W ( 端口需复用为 RTCO, 输出脉冲 ) RTC 输出脉冲频率选择位 000:32KHz 001:1024Hz COCR<2:0> bit11-9 R/W 010:32Hz 011:1Hz 100: 校正后 1Hz 时钟输出 111~101: V /280

226 DEV bit8 R/W 调校模式选择位 0: 每 20 秒调校一次 ( 秒数字分别为 时 ) 1: 每 60 秒调校一次 ( 秒数字为 00 时 ) CALF<7:0> bit7-0 R/W RTC 调校值 注 1: 如果 CALF<6:1>=000000, 则调校增 / 减量为 0; 如果 CALF<7>=0, 则递增调校, 增量为 ((CALF<6:0>) - 1) x 2; 如果 CALF<7>=1, 则递减调校, 减量为 ((~CALF<6:0>) + 1) x 2 注 2: 如果 RTCDEV=0, 则调校时间步长为 3.051ppm, 调校范围为 -384ppm~384ppm, 最高时间精度为 ±1.5ppm; 如果 RTCDEV=1, 则调校时间步长为 1.017ppm, 调校范围为 -128ppm~128ppm, 最高时间精度为 ±0.5ppm RTC 周闹钟寄存器 (RTC_WA) 偏移地址 :08 H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B WW6 WW5 WW4 WW3 WW2 WW1 WW0 WH20 WH10 WH08 WH04 WH02 WH01 WM40 WM20 WM10 WM08 WM04 WM02 WM01 bit31-23 WW6 bit22 R/W 周六闹钟位 WW5 bit21 R/W 周五闹钟位 WW4 bit20 R/W 周四闹钟位 WW3 bit19 R/W 周三闹钟位 WW2 bit18 R/W 周二闹钟位 WW1 bit17 R/W 周一闹钟位 WW0 bit16 R/W 周日闹钟位 bit15-14 WH20 bit13 R/W 24 小时模式 :20 小时位 12 小时模式 :1 代表 pm;0 代表 am WH10 bit12 R/W 10 小时位 WH08 bit11 R/W 8 小时位 WH04 bit10 R/W 4 小时位 WH02 bit9 R/W 2 小时位 WH01 bit8 R/W 1 小时位 bit7 WM40 bit6 R/W 40 分钟位 WM20 bit5 R/W 20 分钟位 WM10 bit4 R/W 10 分钟位 WM08 bit3 R/W 8 分钟位 V /280

227 WM04 bit2 R/W 4 分钟位 WM02 bit1 R/W 2 分钟位 WM01 bit0 R/W 1 分钟位 RTC 日闹钟寄存器 (RTC_DA) 偏移地址 :0C H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B DH20 DH10 DH08 DH04 DH02 DH01 DM40 DM20 DM10 DM08 DM04 DM02 DM01 bit31-14 DH20 bit13 R/W 24 小时模式 :20 小时位 12 小时模式 :1 代表 pm;0 代表 am DH10 bit12 R/W 10 小时位 DH08 bit11 R/W 8 小时位 DH04 bit10 R/W 4 小时位 DH02 bit9 R/W 2 小时位 DH01 bit8 R/W 1 小时位 bit7 DM40 bit6 R/W 40 分钟位 DM20 bit5 R/W 20 分钟位 DM10 bit4 R/W 10 分钟位 DM08 bit3 R/W 8 分钟位 DM04 bit2 R/W 4 分钟位 DM02 bit1 R/W 2 分钟位 DM01 bit0 R/W 1 分钟位 RTC 时分秒寄存器 (RTC_HMS) 偏移地址 :10 H 复位值 : _xxxxxxxx_xxxxxxxx _xxxxxxxx B H20 H10 H08 H04 H02 H01 M20 M10 M08 M04 M02 M01 S40 S20 S10 S08 S04 S02 S01 - bit H20 bit21 R/W 24 小时模式 :20 小时位 12 小时模式 :1 代表 pm;0 代表 am V /280

228 H10 bit20 R/W 10 小时位 H08 bit19 R/W 8 小时位 H04 bit18 R/W 4 小时位 H02 bit17 R/W 2 小时位 H01 bit16 R/W 1 小时位 - bit M40 bit14 R/W 40 分钟位 M20 bit13 R/W 20 分钟位 M10 bit12 R/W 10 分钟位 M08 bit11 R/W 8 分钟位 M04 bit10 R/W 4 分钟位 M02 bit9 R/W 2 分钟位 M01 bit8 R/W 1 分钟位 - bit7 - - S40 bit6 R/W 40 秒位 S20 bit5 R/W 20 秒位 S10 bit4 R/W 10 秒位 S08 bit3 R/W 8 秒位 S04 bit2 R/W 4 秒位 S02 bit1 R/W 2 秒位 S01 bit0 R/W 1 秒位 V /280

229 RTC 年月日周寄存器 (RTC_YMDW) 偏移地址 :14 H 复位值 :xxxxxxxx_xxxxxxxx_xxxxxxxx _xxxxxxxx B Y80 Y40 Y20 Y10 Y08 Y04 Y02 Y01 MN10 MN08 MN04 MN02 MN01 D20 D10 D08 D04 D02 D01 W06 W05 W04 W03 W02 W01 W00 Y80 bit31 R/W 80 年位 Y40 bit30 R/W 40 年位 Y20 bit29 R/W 20 年位 Y10 bit28 R/W 10 年位 Y08 bit27 R/W 8 年位 Y04 bit26 R/W 4 年位 Y02 bit25 R/W 2 年位 Y01 bit24 R/W 1 年位 - bit MN10 bit20 R/W 10 月位 MN08 bit19 R/W 8 月位 MN04 bit18 R/W 4 月位 MN02 bit17 R/W 2 月位 MN01 bit16 R/W 1 月位 - bit D20 bit13 R/W 20 日位 D10 bit12 R/W 10 日位 D08 bit11 R/W 8 日位 D04 bit10 R/W 4 日位 D02 bit9 R/W 2 日位 D01 bit8 R/W 1 日位 - bit7 - - W06 bit6 R/W 星期六位 W05 bit5 R/W 星期五位 W04 bit4 R/W 星期四位 W03 bit3 R/W 星期三位 W02 bit2 R/W 星期二位 W01 bit1 R/W 星期一位 W00 bit0 R/W 星期日位 RTC 中断使能寄存器 (RTC_IE) 偏移地址 :18 H V /280

230 复位值 : _ _ _ B WALE DALE MONIE DAYIE HORIE MINIE SCDIE bit31-10 WALE bit9 R/W 周闹钟使能位 DALE bit8 R/W 日闹钟使能位 bit7-5 MONIE bit4 R/W 月中断使能位 DAYIE bit3 R/W 日中断使能位 HORIE bit2 R/W 时中断使能位 MINIE bit1 R/W 分中断使能位 SCDIE bit0 R/W 秒中断使能位 RTC 中断标志寄存器 (RTC_IF) 偏移地址 :1C H 复位值 : _ _ _ B WAFG DAFG MONIF DAYIF HORIF MINIF SCDIF bit31-10 周闹钟标志位 WAFG bit9 R/W 0: 闹钟事件不匹配 1: 闹钟事件匹配 V /280

231 软件写 1 清除标志位, 写 0 无效 DAFG bit8 R/W 日闹钟标志位 0: 闹钟事件不匹配 1: 闹钟事件匹配软件写 1 清除标志位, 写 0 无效 bit7-5 MONIF bit4 R/W 月中断标志位 ( 中断周期为每月第一天 00 小时 00 分钟 00 秒 ) 0: 未产生月中断 1: 产生月中断软件写 1 清除标志位, 写 0 无效 DAYIF bit3 R/W 日中断标志位 ( 中断周期为每天 ) 0: 未产生日中断 1: 产生日中断软件写 1 清除标志位, 写 0 无效 HORIF bit2 R/W 时中断标志位 ( 中断周期为每小时 ) 0: 未产生小时中断 1: 产生小时中断软件写 1 清除标志位, 写 0 无效 MINIF bit1 R/W 分中断标志位 ( 中断周期为每分钟 ) 0: 未产生分钟中断 1: 产生分钟中断软件写 1 清除标志位, 写 0 无效 SCDIF bit0 R/W 秒中断标志位 ( 中断周期为每秒 ) 0: 未产生秒中断 1: 产生秒中断软件写 1 清除标志位, 写 0 无效 注 : 对 RTC_IF 寄存器中的各中断标志位, 写 0 无效, 写 1 才能清除标志位 ; 读操作时, 读取的值为 1 表示有中断 发生 RTC 应用说明 暂无特别说明 V /280

232 5. 8 看门狗定时器 (WDT) 概述当配置字 CFG_WORD1 配置为 硬件看门狗使能 时, 即 CFG_WDTEN 位配置为 1, 软件不可配置 WDT_LOAD 寄存器 上电复位后看门狗立即启动 (WDT 使用 32KHz LRC 时钟计数 ),WDT 载入 CFG_WORD1 配置字中 WDTRL 参数对应的计数初值的 1/4, 并进行递减计数, 计数到 0 时, 窗口计数器加 1, 并在下一计数时钟到来时, 计数器再次载入 WDTRL 参数对应的计数初值的 1/4, 并继续递减计数 当窗口计数器计数到 2 时 (WDT 累计计数为 WDTRL 的一半 ),WDT 产生中断标志 当窗口计数器计数到 4(WDT 累计计数等于 WDTRL) 之前, 没有在相应的喂狗窗口期进行喂狗动作,WDT 模块将产生复位信号 软件只能读写 WDT_LOCK 写 WDT_INTCLR, 其他 WDT 相关特殊功能寄存器不再可写, 只能读取, 读 WDT_LOAD 得到的值为 WDTRL 参数对应的计数初值, 读 WDT_CON 将返回 0x0000_000F 当配置字 CFG_WORD1 配置为 硬件看门狗禁止 时, 即 CFG_WDTEN 位配置为 0, 上电看门狗不启动, 但软件可配置看门狗使能, 且软件可配置 WDT_LOAD 寄存器 当配置为 软件看门狗使能 时, 即软件配置 WDT_CON 寄存器的 WDTEN 为 1,WDT 计数器载入 WDT_LOAD 寄存器值的 1/4, 开始递减计数, 当计数到 0 时, 窗口计数器加 1, 并在下一个计数时钟到来时, 计数器再次载入 WDT_LOAD 寄存器值的 1/4, 并继续递减计数 当窗口计数器计数到 2 时 (WDT 累计计数为 WDT_LOAD 的一半 ),WDT 产生中断标志 当窗口计数器计数到 4(WDT 累计计数等于 WDT_LOAD) 之前, 没有在相应的喂狗窗口期进行喂狗动作, 则 WDT 模块将产生复位信号 配置 WDTCLKS, 可以选择计数时钟源 ; 配置 WDT_LOAD 寄存器, 可设置计数初值 ; 读取 WDT_VALUE, 可得到 WDT 当前计数值 写入装载值寄存器 WDT_LOAD 时, 计数器当前值寄存器被清 0 在喂狗窗口期写 WDT_INTCLR 会导致 WDT 重新载入计数初值, 并重新进行递减计数 在喂狗窗口期外写 WDT_INTCLR 会导致产生 WDT 复位 喂狗窗口期的定义参考 芯片配置字 WDT 模块支持寄存器写保护, 配置寄存器 WDT_LOCK=0x1ACCE551, 可去除 WDT 寄存器的写保护状态, 进行被保护寄存器的写操作, 否则无法对被保护寄存器写入 特殊功能寄存器 WDT 计数器装载值寄存器 (WDT_LOAD) 偏移地址 :00 H 复位值 : _ _ _ B LOAD<31:16> LOAD<15:0> V /280

233 LOAD<31:0> bit31-0 W WDT 计数器重载值 计数范围 0x0000_0001~0xFFFF_FFFF 如果为 0,WDT 不计 数 WDT 计数器当前值寄存器 (WDT_VALUE) 偏移地址 :04 H 复位值 : _ _ _ B VALUE<31:16> VALUE<15:0> VALUE bit31-0 R WDT 计数器当前值 读取时返回 WDT 计数器的当前计数值 WDT 控制寄存器 (WDT_CON) 偏移地址 :08 H 复位值 : _ _ _ B CLKS RSTEN IE EN bit31-4 CLKS bit3 R/W WDT 计数时钟选择位 0:PCLK 1:LRC 时钟 ( 约 32KHz) RSTEN bit2 R/W WDT 复位使能位,WDT 计数到 0 时, 产生复位信号, 将芯片复位 IE bit1 R/W WDT 中断使能位,WDT 计数到 0 时, 产生中断标志 EN bit0 R/W WDT 模块使能位 WDT 中断标志清除寄存器 (WDT_INTCLR) 偏移地址 :0C H V /280

234 复位值 : _ _ _ B INTCLR<31:16> INTCLR<15:0> INTCLR<31:0> bit31-0 W WDT 中断标志清 0 位 对 WDT_INTCLR 寄存器进行任意写操作,WDT 中断标志位 均被清零, 计数器重载 WDT_LOAD 寄存器值, 继续递减计数 WDT 中断标志寄存器 (WDT_RIS) 偏移地址 :10 H 复位值 : _ _ _ B WDTIF bit31-1 WDTIF bit0 R WDT 中断标志位 0: 未产生中断 1:WDT 计数器计数到 0, 产生中断写寄存器 WDT_INTCLR, 可清除 WDT 中断标志位 WDT 访问使能寄存器 (WDT_LOCK) 偏移地址 :00 H 复位值 : _ _ _ B LOCK bit31-1 W LOCK bit0 R/W 对 WDT_LOCK<31:0> 写 0x1ACCE551 时, 位 LOCK 为 0; 写其它值时位 LOCK 为 1 WDT 寄存器保护状态位 0:WDT 寄存器处于未保护状态 1:WDT 寄存器处于保护状态对 WDT_LOCK 寄存器写入 0x1ACCE551, 被保护的寄存器处于未保护状态 ; 写入其它值, 处于保护状态 V /280

235 注 1:WDT_LOCK 寄存器为只写 32 位寄存器, 其中仅 LOCK 位可读, 该寄存器必须使用字操作访问方式 注 2:WDT_LOCK 保护的寄存器为 WDT_LOAD,WDT_CON,WDT_INTCLR V /280

236 第 6 章 RF 收发器 工作模式控制 RF 收发器各工作模式之间的切换控制如下图所示 : DBUS_TXEN/ DBUS_RXEN WAKE UP ~PD_CTRL SLEEP no DBUS_TXEN/ DBUS_RXEN IDLE PD_CTRL POWER DOWN ACK received fsm_tx_finish fsm_txen fsm_rxen fsm_rx_finish no CRC error NACK and re-transmit TX PACKAGE RX PACKAGE packet error RX ACK auto_ack auto_ack TX ACK 6. 1 POWER DOWN 模式 图 6-1 RF 收发器工作模式控制示意图 在此模式下除了低功耗数字 LDO 电源工作外, 所有模拟模块关闭, 寄存器状态保持并可读写 ( 但 FIFO 不可操作, 中断标志不可清 ),RF 收发器整体功耗约为 1.5uA 设置寄存器 PD_CTRL( 寄存器 MISC0 的 Bit15) 为高可以进入 POWER DOWN 模式, 如果设置为低则退出 POWER DOWN 模式 ( 引脚 CE 需保持为高电平 ) RF 收发器从 POWER DOWN 模式退出进入 IDLE 模式后若无收发要求将自动进入 SLEEP 模式 6. 2 SLEEP 模式 在此模式下低功耗数字 LDO 电源与晶体振荡器工作, 但是晶体振荡器的缓冲器未使能, 片内 V0.1 1/280

237 数字电路无时钟, 寄存器状态保存并可读写 ( 但 FIFO 不可操作, 中断标志不可清 ), 使用 12MHz 晶体振荡器时,RF 收发器整体功耗约为 15uA 当 RF 收发器没有收发要求关闭 DBUS_TXEN( 寄存器 TRCTL 的 Bit8)/DBUS_RXEN( 寄存器 TRCTL 的 Bit7) 时, 自动从 IDLE 模式进入 SLEEP 模式, 当有收发请求时开启 DBUS_TXEN/DBUS_RXEN,RF 收发器从 SLEEP 模式恢复至 IDLE 模式后进入 TX/RX 工作模式 6. 3 IDLE 模式 在此模式下数字 LDO 电源工作在正常模式, 晶体振荡器工作, 晶体振荡器的缓冲器使能, 片内数字电路有系统时钟, 但是 PLL 电路和收发器未工作, 使用 12MHz 晶体振荡器时,RF 收发器整体功耗小于 2mA RF 收发器收发完成后自动从 TX/RX 模式进入 IDLE 模式 6. 4 TX 模式 当使能 RF 收发器 DBUS_TXEN 并且发送 FIFO 处于有效状态后,RF 收发器进入 TX 模式 在发送完成之后,RF 收发器进入 IDLE 模式, 关闭 DBUS_TXEN 后,RF 收发器进入 SLEEP 模式 6. 5 RX 模式 当使能 RF 收发器 DBUS_RXEN 并且接收 FIFO 处于有效状态后,RF 收发器进入 RX 模式 若 FIFO 为占用状态不满足接收条件时,RF 收发器进入 IDLE 模式, 关闭 DBUS_RXEN 后, RF 收发器进入 SLEEP 模式 注 : FIFO 处于有效状态指 FIFO 配置寄存器 FIFO0CTRL/FIFO1CTRL 中所填 PIPE(PRX_FIFOn_PIPE), 与当前 收取帧的 PIPE 地址匹配且 PRX_FIFOn_OCPY = 1 V0.1 2/280

238 第 7 章 RF 收发器 帧结构 7. 1 PTX 发送数据帧结构 Preamble PIPE Address Trailer Package Control PAYLOAD CRC16/8 PID NOACK 图 7-1 PTX 发送数据帧结构示意图 Preamble 支持 2,4,6 16bytes, 长度可通过寄存器 PREAMBLE_LEN(PKTCTRL 寄存器的 Bit15-Bit13) 配置 PIPE Address(Syncword) 支持 16/32/48bits, 长度可通过寄存器 SYNCWORD_LEN ( PKTCTRL 寄存器的 Bit12-Bit11) 配置 支持 4 路数据通道,PIPE Address 可通过寄存器 0x40~0x47 配置 Trailer 支持 4~18bits, 长度可通过 TRAILER_LEN(PKTCTRL 寄存器的 Bit10-Bit8) 配置 PID PID 长度为 2bits, 发送时由硬件自动产生 PTX 每发送一次新的数据包 PID 将自动加 1 PRX 针对当前接收的 PIPE 地址, 依据 PID 与 CRC 值确定当前包为新接收包或重传包 ( 重传包会被丢弃 ) PTX 若重发超时, 在下一次重新发送时 PID 不累加 NOACK 此指示位用于当 ACK 功能使能时,PTX 告知 PRX 当前包无需 ACK 的特例情况 可以通过 PTX_FIFOn_NOACK(FIFOnCTRL 寄存器的 Bit4) 进行设置 PAYLOAD 硬件链路控制方式下, 每级 FIFO 最大支持 63bytes 的 PAYLOAD,FIFO 的第一个 byte 代表 PAYLOAD 的长度 软件链路控制方式下,PAYLOAD 的长度由主控 MCU 芯片决定 CRC 硬件链路控制方式下, 支持 CRC16 与 CRC8 两种模式, 可通过 CRC_SEL(MISC1 寄存器的 Bit14) 配置 CRC16 生成多项式为 :x^16+x^12+x^5+1 V0.1 3/280

239 CRC8 生成多项式为 :x^8+x^2+x+1 软件链路控制方式下不支持硬件 CRC 功能 7. 2 PRX 发送 ACK 帧结构 PRX 发送的 ACK 帧结构示意图如下所示 : Preamble PIPE Address Trailer PAYLOAD CRC16/8 图 7-2 PRX 发送 ACK 帧结构示意图若 ACK 带 ACK PAYLOAD 功能未使能, 则 PRX 只返回 Preamble 与 PIPE Address 两部分 若 ACK 带 ACK PAYLOAD 功能使能, 则 PRX 返回 Preamble PIPE Address Trailer PAYLOAD 与 CRC Preamble PIPE Address Trailer PAYLOAD 与 CRC 的配置方式见 3.1 节 PTX 发送数据帧结构内的描述 V0.1 4/280

240 第 8 章 RF 收发器 链路控制方式 RF 收发器支持硬件链路控制通信与软件链路控制通信方式, 可通过寄存器 PACK_LENGTH_EN(MISC1 寄存器的 Bit12) 进行配置 详细收发流程与操作请参考 应用笔记 _HW2000_User_Guide 数据包收发章节的内容 8. 1 硬件链路控制方式 当设置 PACK_LENGTH_EN 为 1 时,RF 收发器处于硬件链路控制通信模式 此模式支持两级收发 FIFO, 每级 FIFO 最大支持 63bytes PAYLOAD, 并具有 PAYLOAD 的自动硬件 CRC 校验功能 支持 ACK 功能,ACK 帧是否带 ACK PAYLOAD 功能可配 硬件链路控制方式下所填 FIFO 的第一个 byte 代表该级 FIFO 中的 PAYLOAD 的长度 ( 需大于 0),PRX 可依据存放收取 PAYLOAD 的 FIFO 中的第一个 byte 值确定所需读取 PAYLOAD 的长度 8. 2 软件链路控制方式 当设置 PACK_LENGTH_EN 为 0 时,RF 收发器处于软件链路控制通信模式 此模式只支持 FIFO0 一级 FIFO, 不支持 ACK 与硬件 CRC 校验功能 软件链路模式适用于需要发送较长 PAYLOAD 长度 (>63 bytes) 的场合, 主控 MCU 芯片需依据 FIFO 的半空与半满标志配合收发流程 通过配置 FW_HW_TERM_EN 控制位 (MISC1 寄存器的 Bit11), 可以选择不同的 PTX 停止发送条件 : FW_HW_TERM_EN = 1 时,FIFO0 的读写指针相同时状态机自动停止发送数据 ; FW_HW_TERM_EN = 0 时,PTX 循环发送 FIFO0 内部的数据, 由主控 MCU 芯片关闭 DBUS_TXEN 来决定何时停止发送数据, 该方式可方便用于测试 PTX 连续发送模式下的性能指标 V0.1 5/280

241 PIPE0 HW2181 数据手册 第 9 章 RF 收发器 多 PIPE 逻辑通道 RF 收发器支持 4 个数据 PIPE 逻辑通道, 即 PIPE0~PIPE3, 每个 PIPE 都有各自的物理地址, 默认 PIPE0/PIPE1 使能 各 PIPE 地址配置详见寄存器 0x40~0x47 描述 各 PIPE 使能,ACK 功能与 ACK 带 PAYLOAD 功能使能详见 PIPECTRL 寄存器描述 以使用 PIPE0 逻辑通道通讯为例,PIPECTRL 寄存器配置如下 : 若不使能 ACK 功能 P0_EN = 1 ;P0_ACK_EN = 0 ;P0_ACKPAYLOAD_EN = 0 若使能 ACK 不带 PAYLOAD 功能 P0_EN = 1 ;P0_ACK_EN = 1 ;P0_ACKPAYLOAD_EN = 0 若使能 ACK 带 PAYLOAD 功能 P0_EN = 1 ;P0_ACK_EN = 1 ;P0_ACKPAYLOAD_EN = 1 PRX 可支持与 4 个不同 PIPE 地址的 PTX 通讯 为确保 PRX 能回复 ACK 至正确的 PTX, PRX 在收到数据帧之后会保存所接收的 PIPE 地址并在回复 ACK 时用作 PIPE 发送地址 图 9-1 所示为 4 路 PIPE 通讯示意图,4 路 PIPE 都具有独立的 PIPE 地址 PRX 可分时进行不同 PIPE 的相关通讯, 但在一路 PIPE 完整收发流程完成之前,PRX 不会与另一路 PIPE 地址的 PTX 通讯 当多路 PTX 与 1 路 PRX 通讯时, 设置各 PTX 的 AUTO_RX_ACK_TIME 寄存器值 (MISC2 寄存器的 Bit7-Bit0) 可以有效避免各个 PIPE 之间的干扰 PTX1 PTX2 PTX0 PIPE1 PTX3 PIPE2 PIPE3 PRX PIPE0 ADDR: 0xe7e7e7e7e7e7 PIPE1 ADDR: 0xc2c2c2c2c2c2 PIPE2 ADDR: 0xc2c2c2c2c258 PIPE3 ADDR: 0xc2c2c2c2c2a7 图 路 PIPE 通讯示意图 V0.1 6/280

242 第 10 章 RF 收发器 自动响应 ACK 与自动重传 ART ACK 不带 ACK PAYLOAD 当 PTX 与 PRX 同时使能当前通信 PIPE 的 ACK 功能后 (PIPECTRL 寄存器中的 Pn_EN = 1 并且 Pn_ACK_EN = 1 ), PRX 在接收 CRC 完成后由 RX 模式自动切换为 TX 模式发送 ACK 帧,PTX 在发送 CRC 完成后由 TX 模式自动切换为 RX 模式等待接收 ACK 帧 PTX 在接收 ACK 完成 PRX 在发送 ACK 完成后置起相应的 FIFO 中断标志位 ( 详见图 11-3) PTX 如果在 AUTO_RX_ACK_TIME 时间内没有成功接收到 PRX 发送的 ACK 信号, PTX 将自动重传上一帧数据包 如重传次数超过设定次数 RE_TX_TIMES(MISC0 寄存器的 Bit11-Bit8 ), INT 寄存器中的 INTn 中断标志位与 FIFO 发送指示位 PTX_FIFOn_FAIL(FIFOnCTRL 寄存器的 Bit15) 将同时置 1 指示发送失败 ( 详见图 11-4 至图 11-6) PRX 在接收 CRC 完成后若出现 CRC 错误将不切换 RX 模式而等待自动重收 ( 详见图 11-7) 在 ACK 功能使能时, 通过配置 PTX_FIFOn_NOACK 控制位可告知 PRX 当前发送帧无需自动 ACK ACK 带 ACK PAYLOAD 当 PTX 与 PRX 同时使能当前通信 PIPE 的 ACK 带 ACK PAYLOAD 功能后 (Pn_EN = 1,Pn_ACK_EN = 1 并且 Pn_ACKPAYLOAD_EN = 1 ),PRX 在发送 ACK 的过程中自动从满足条件的 ACK FIFO 中取出 ACK PAYLOAD 进行发送 ACK FIFO 的第一个 byte 代表 ACK PAYLOAD 的长度, 填写值需大于 0 PTX 在接收到 ACK PAYLOAD 后将数据填入满足条件的 ACK FIFO 中, 并置起该 ACK FIFO 的相应状态指示位 (INT 寄存器中的 ACKINTn FIFOn_ACK_POS 和 ACKINTn_W_ACKPAY,ACKFIFOnCTRL 寄存器中的 PTX_ACKFIFOn_PIPE) ACK FIFO 的操作流程与 DATA FIFO 的流程基本一致 若 PRX 无满足条件的 ACK FIFO, 在发送 ACK 帧时将自动忽略发送 ACK PAYLOAD 与 CRC 环节,PTX 在接收 ACK 帧时会检测到长度为 0 的 ACK PAYLOAD 而自动忽略接收 CRC 环节 PTX 若检测到收取的 ACK PAYLOAD 有 CRC 错误, 将由 RX 模式转入 TX 模式进行重发 如重传次数超过设定次数 RE_TX_TIMES,PTX_FIFOn_FAIL 将置 1 指示发送失败 注 : 满足条件的 ACK FIFO 指 ACK FIFO 配置寄存器 ACKFIFO0CTRL/ACKFIFO1CTRL 中所填 PIPE (PRX_ACKFIFOn_PIPE), 与当前收取帧的 PIPE 地址匹配且 PRX_ACKFIFOn_OCPY = 1 V0.1 7/280

243 第 11 章 RF 收发器 数据与控制接口 FIFO RF 收发器支持两级 DATA FIFO( 每级 64bytes) 与两级 ACK FIFO( 每级 32bytes) DATA FIFO 用于存放收发的 PAYLOAD 数据, 其访问地址为 0x32 与 0x33,ACK FIFO 用于存放收发的 ACK PAYLOAD 数据, 其访问地址为 0x34 与 0x35 TX FIFO TX DATA FIFO0/ ACKFIFO0 FIFO1/ ACKFIFO1 DATA TX FIFO Controller Control RX FIFO Controller Control SPI Interface RX FIFO RX DATA FIFO0/ ACKFIFO0 FIFO1/ ACKFIFO1 DATA 图 11-1 FIFO 控制示意图 对于 PTX, 在发送 PAYLOAD 前可以通过 SPI 向 DATA FIFO 内填写数据, 在发送过程中 DATA FIFO 的读取权限交于内部状态机, 在发送过程中禁止 SPI 接口读 DATA FIFO 操作 ; 对于 PRX, 在接收 PAYLOAD 过程中 DATA FIFO 的写入权限交于内部状态机, 在此过程中禁止 SPI 接口写 DATA FIFO 操作 类似的, 若使能 ACK 带 PAYLOAD 功能, 对于 PRX, 在 ACK PAYLOAD 发送前可以通过 SPI 向 ACK FIFO 内填写数据, 在发送过程中 ACK FIFO 的读取权限交于内部状态机, 在发送过程中禁止 SPI 接口读 ACK FIFO 操作 ; 对于 PTX, 在接收 ACK PAYLOAD 过程中 ACK FIFO 的写入权限交于内部状态机, 在此过程中禁止 SPI 接口写 ACK FIFO 操作 V0.1 8/280

244 11. 2 中断 硬件链路控制中断 ACK 不使能中断在 ACK 不使能情况下,PTX 在发送完成后置起相应的发送 FIFO 中断标志位 INTn, 同样 PRX 在接收完成后置起相应的接收 FIFO 中断标志位 ( 如图 11-2 所示 ) Tx finish IRQ: INT0(PID=0) Tx finish IRQ: INT1(PID=1) PTX TX:PID=0(f:FIFO0) TX:PID=1(f:FIFO1) PRX RX(t:FIFO0) RX(t:FIFO1) Package received IRQ:INT0(PID=0) Package received IRQ:INT1(PID=1) 图 11-2 ACK 不使能情况中断示意图 ACK 使能不带 ACK PAYLOAD 中断在 ACK 使能不带 ACK PAYLOAD 情况下, 若 PTX 发送来自 FIFOn 的 PAYLOAD, 在接收 ACK 成功后, 对应的中断标志位 INTn 将置 1 若 PRX 在成功接收后将 PAYLOAD 填入 FIFOn,PRX 在返回 ACK 完成后对应的中断标志位 INTn 将置 1 ( 如图 11-3 所示 ) Ack received IRQ: INT0(PID=0) PTX TX:PID=0(f:FIFO0) RX PRX RX(t:FIFO0) ACK:PID0 ACK transmitted IRQ:INT0(PID=0) 图 11-3 ACK 使能不带 ACK PAYLOAD 中断示意图 V0.1 9/280

245 图 11-4 至图 11-6 所示为可能出现的收发不成功情况,PTX 在发送完成后切换为接收 ACK 状态, 若在等待 ACK 时间内 (AUTO_RX_ACK_TIME) 没有收到有效 ACK 信号, 将再次切换为自动重传 PRX 在接收成功后会判断收取的 PID, 若收取的 PID 与 CRC 与前一次相同, 将视为重收包, 不再出中断 ( 只返回 ACK) Ack received IRQ:INT0(PID=0) PTX TX:PID=0(f:FIFO0) RX TX:PID=0(f:FIFO0) RX auto_rx_ack_time[7:0] PRX RX(t:FIFO0) ACK:PID0 ACK transmitted IRQ:INT0(PID=0) 图 11-4 PTX 自动重传情况 1 中断示意图 Ack received IRQ:INT0(PID=0) PTX TX:PID=0(f:FIFO0) RX TX:PID=0(f:FIFO0) RX auto_rx_ack_time[7:0] PRX RX(t:FIFO0) ACK:PID0 RX(discard) ACK:PID0 ACK transmitted IRQ:INT0(PID=0) PID=0 PID&CRC unchanged Package detected as copy of the previous 图 11-5 PTX 自动重传情况 2 中断示意图 V0.1 10/280

246 PTX_FIFO0_FAIL = 1 IRQ:FIFO0_INT(PID=0) PTX TX:PID=0(f:FIFO0) RX TX:PID=0(f:FIFO0) RX TX:PID=0(f:FIFO0) RX auto_rx_ack_time[7:0] PRX RX(t:FIFO0) ACK:PID0 RX(discard) ACK:PID0 RX(discard) ACK:PID0 ACK transmitted IRQ:INT0(PID=0) PID=0 PID&CRC unchanged Package detected as copy of the previous PID=0 PID&CRC unchanged Package detected as copy of the previous 图 11-6 PTX 自动重传情况 3 中断示意图 ( 重发超时, 重发次数为 2) 注 1: 自动重传次数设置 RE_TX_TIMES 需大于 1 注 2: 若 PTX 在 RE_TX_TIMES 次数内未接收到 ACK,PTX 在置起中断 INTn 的同时 PTX_FIFOn_FAIL 将置 1 注 3: 若 PTX 重传超时, 在发送下一帧时 PID 较上一次保持不变 注 4: 重收弃包功能只在 ACK 使能的情况下有效 Ack received IRQ:INT0(PID=0) PTX TX:PID=0(f:FIFO0) RX TX:PID=0(f:FIFO0) RX auto_rx_ack_time[7:0] PRX RX(t:FIFO0) RX(t:FIFO0) ACK:PID0 Package CRC error Re-rx ACK transmitted IRQ:INT0(PID=0) 图 11-7 PRX 自动重收中断示意图图 11-7 所示为 PRX 自动重收的情况,PRX 在接收到数据包之后若检测 CRC 有误将不返回 ACK 而切换至自动重收, 直至收到正确的数据包并返回 ACK 之后置起中断标志 PTX 在 AUTO_RX_ACK_TIME 时间内无法接收有效 ACK 将自动重传 ACK 使能带 ACK PAYLOAD 中断在 ACK 带 ACK PAYLOAD 情况下, 若 PTX 从 FIFOn 中发送 PAYLOAD 之后成功接收 ACK PAYLOAD 后填入 ACK_FIFOn, 对应的中断标志位 INTn 与 ACK_INTn 将置 1 若 PRX 从 ACKFIFOn 中返回 ACK PAYLOAD, 在下一次收到新包后 ( 同一 PIPE PID 发生变化 ), 对应的中断标志位 ACK_INTn 将置 1 ( 如图 11-8 所示 ) V0.1 11/280

247 ACK received IRQ: INT0(PID=0) ACK_INT0(ACKPAY0) ACK received IRQ:INT1(PID=1) ACK_INT1(ACKPAY1) PTX TX:PID=0(f:FIFO0) RX(t:ACK_FIFO0) TX:PID=1(f:FIFO1) RX(t:ACK_FIFO1) PRX RX(t:FIFO0) ACK:PID0 pay0 (f:ack_fifo0) RX(t:FIFO1) ACK:PID1 pay1 (f:ack_fifo1) ACK transmitted IRQ:INT0(PID=0) New package received IRQ:ACK_INT0(PID=1) ACK transmitted IRQ:INT1(PID=1) 图 11-8 ACK 带 ACK PAYLOAD 情况中断示意图 Ack received, ackpayload CRC error, re-transmit Ack received IRQ:INT0(PID=0) ACK_INT0(ACKPAY0) PTX TX:PID=0(f:FIFO0) RX(t:ACK_FIFO0) TX:PID=0(f:FIFO0) RX(t:ACK_FIFO0) TX:PID=1(f:FIFO0) PRX RX(t:FIFO0) ACK:PID0 pay0 (f:ack_fifo0) RX(discard) ACK:PID0 pay0 (f:ack_fifo0) RX(t:FIFO0) ACK transmitted IRQ:INT0(PID=0) PID=0 PID&CRC unchanged Package detected as copy of the previous New Package received IRQ:ACKINT0(PID=1) 图 11-9 PTX 接收 ACK CRC ERROR 情况中断示意图 PTX 接收到 ACK PAYLOAD 之后若检测到 CRC 错误, 将进行重发, 不置起中断 ( 如图 11-9 所示 ) Ack received IRQ:INT0(PID=0) ACK_INT0 (ACKINT0_W_ACKPAY = 0) Ack received IRQ:INT0(PID=0) ACK_INT0 (ACKINT0_W_ACKPAY = 1) PTX TX:PID=0(f:FIFO0) RX(t:ACK_FIFO0) TX:PID=1(f:FIFO0) RX(t:ACK_FIFO0) TX:PID=2(f:FIFO0) PRX RX(t:FIFO0) ACK:PID0 RX(t:FIFO0) ACK:PID1 pay0 (f:ack_fifo0) RX(t:FIFO0) Package received IRQ:INT0(PID=0) No ackpayload ACK transmitted IRQ:INT0(PID=1) New package received IRQ:INT0(PID=2) ACKINT0 图 PRX 无满足条件 ACK PAYLOAD 发送情况中断示意图 V0.1 12/280

248 PRX 若无满足条件的 ACK FIFO, 将忽略发送 ACK PAYLOAD,PTX 检测到长度为 0 的 ACK PAYLOAD, 置起 ACK_INT0 ( 假设 ACK FIFO0 满足接收状态 ) 的同时将 ACKINT0_W_ACKPAY 状态位置 0, 指示此次中断无 ACK PAYLOAD PRX 在下一次即使接收到的 PID 发生变化也不置起 ACKINT0 中断 ( 如图 所示 ) 软件链路控制中断软件链路控制情况下 PTX 的 IRQ 引脚指示发送状态, 发送完成后 IRQ 电平翻转 PRX 在接收到可相关的 PIPE 地址后置中断标志位 INTn, 可通过中断标志清零寄存器或 SPI 读取接收 FIFOn 自动清相应的中断 INTn( 如图 所示 ) Tx finish IRQ: fsm_tx_state(pid=0) PTX TX:PID=0(f:FIFO0) PRX RX(t:FIFO0) PIPE Address Match IRQ:INT0(PID=0) 图 软件链路控制方式下中断示意图 SPI 通信接口 RF 收发器支持 4 线 SPI 通信接口, 支持 SLEEP 模式下对寄存器的读写操作, 支持 FIFO 连 读连写 SPI 帧格式 V0.1 13/280

249 R/W SLAVE ADDRESS DATA 读写 / 只读 (1bit) 7bit 访问地址 N byte 数据 命令帧 数据帧 图 SPI 帧格式 其中 8bit 命令帧首位为读写控制位, 0 为只读操作, 1 为读写操作 ( 读取某寄存器值的同时可以写入值 ), 后 7 位为读写地址位 SPI 数据帧按 SPI 接口访问对象不同有所区别, 如果 SPI 访问内部寄存器则数据帧固定为 2bytes, 如果 SPI 访问 FIFO( 寄存器地址 :0x32,0x33,0x34,0x35), 在非连读连写情况下为 1byte( 内部 FIFO 数据宽度 ), 在连读连写情况下数据长度由主设备访问长度决定 数据格式为高位 (MSB) 在前, 低位 (LSB) 在后 寄存器访问时序 SPI 接口读写寄存器操作时序如图 与图 所示 CSN SCK MOSI MISO 1 A6 A5 A4 A3 A2 A1 A0 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 D`15 D`14 D`13 D`12 D`11 D`10 D`9 D`8 D`7 D`6 D`5 D`4 D`3 D`2 D`1 D`0 图 SPI 写寄存器时序 注 : 写寄存器时 MISO 送出的 D x 为所访问寄存器的原始值 CSN SCK MOSI MISO 0 A6 A5 A4 A3 A2 A1 A0 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 图 SPI 读寄存器时序 FIFO 访问时序 FIFO 支持连续读写操作, 最小单位为 1byte,SPI 接口读写 FIFO 操作时序如图 与图 所示 CSN SCK MOSI MISO 1 A6 A5 A4 A3 A2 A1 A0 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 N Byte 图 SPI 写 FIFO 时序 V0.1 14/280

250 CSN SCK MOSI 0 A6 A5 A4 A3 A2 A1 A0 MISO D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 N Byte 图 SPI 读 FIFO 时序 SPI 时序参数 Tss TchTcl Tsh Tsw CSN SCK MOSI 0 A6 A5 A4 A3 A2 A1 A0 MISO 图 SPI 时序参数示意图 Symbol Parameter T(ns) Tss Select setup time 20 Tcl Clock low time 62.5 Tch Clock high time 62.5 Tsh Select hold time 40 Tsw Select high period 125 表 11-1 SPI 时序参数 V0.1 15/280

251 第 12 章 RF 收发器 其它功能与设置 RF 收发器复位 RF 收发器共提供三个复位源, 分别为上电 POR 复位 片选引脚 CE 复位 SFT_RST 软件复位 上电 POR 复位 片选引脚 CE 复位为全芯片复位, 软件复位只复位芯片内部各状态信号, 内部寄存器状态保持 需要注意的是, 由于 MCU 复位唤醒时间比 RF 复位唤醒时间短, 所以,MCU 复位唤醒后需要进行适当延时, 再对 RF 收发器进行 SPI 操作 频点设置在数据收发时, 收发两端的频点设置必须一致 可使用的频点范围是 2402MHz ~ 2483MHz, 频点间隔为 1MHz, 共 82 个可用频点 频点可以通过信道号寄存器 PLL_CH_NO 设置, 最终发送或接收的频点值为 RF_FREQ_BASE + PLL_CH_NO(MHz) 注 : 需在使能发送或接收之前完成频点设置 自动频偏校正 (AFC) 在无线收发器的两端, 由于晶振 工作环境等因素的影响, 使得收发两端的频率会有一定的偏差 RF 收发器在接收数据时提供了自动频偏校正的功能 (AFC), 寄存器 AFC_MCTRL (MISC2 寄存器的 Bit14) 为 AFC 功能使能控制位 软件频偏校正除硬件自身提供的 AFC 功能之外,RF 收发器还给软件提供了频偏校正的接口 寄存器 RF_FREQ_FRACTION(FOCCFG 寄存器的 Bit11-Bit0) 用于填写频偏的补偿值, 该寄存器具体设置的计算公式如下 : RF_FREQ_FRACTION = round(f dev /(2048*10 6 )), 频率补偿的精度约为 250Hz 其中 f dev = 目标频点 - 实际频点 (Hz) 对于接收端,RF 收发器提供了硬件评估的频偏指示寄存器 FREQ_ESTIMATION(STATUS0 寄存器的 Bit9-Bit0, 二进制补码 ), 该寄存器的数据和实际频偏频率 f dev 的对应关系如下 : 当 250kbps 数据速率时 : f dev = FREQ_ESTIMATION/(1024*10 6 )(Hz) 当 1Mbps 数据速率时 : f dev = FREQ_ESTIMATION/(256*10 6 )(Hz) 用户可依据频偏指示寄存器 FREQ_ESTIMATION 的值推算 f dev, 完成对频偏补偿寄存器 RF_FREQ_FRACTION 的配置 前导码指示数据包以 0101 序列作为整个数据包的前导,RF 收发器可以通过检测收到的连续 01 数据的个数作为数据包前导序列的指示, 具体需要检测的 01 数据个数可以通过设置寄存器 PREAMBLE_NUM(FOCCFG 寄存器的 Bit15-Bit12) 确定 如果 RF 收发器检测到有效的前导序列, 寄存器 PQT(STATUS0 寄存器 Bit11) 指示为高电平 V0.1 16/280

252 12. 6 RSSI 功能在接收模式时, 芯片会评估天线端接收到的信号能量的大小, 该数值会保存在寄存器 RSSI 中 RSSI 的读数单位是 dbm, 数据的格式为二进制补码形式的有符号数 推荐在数据包地址相关完成后 (STATUS1 寄存器中的 PIPE_ADDR_MATCH 为 1 ) 读取 RSSI 的数值 RSSI 值与输入功率对应关系详见 应用笔记 _HW2000_User_Guide RSSI 章节的内容 载波检测指示 (Carrier Detect) 功能 RF 收发器支持载波检测功能, 即在接收模式时,RF 收发器会监控带内的接收信号能量, 当接收信号能量大于设置的域值, 并保持一定时间 (>8us) 后,RF 收发器会给出载波检测指示信号 载波指示的能量域值可以通过 CDTH 寄存器设置, 当输入信号能量超过 CD_TH1 设置, 并且保持超过 8us 后, 载波检测指示位 CD 会置高, 如果信号能量降低并小于 CD_TH2 的设置, 载波检测指示位将立刻复位 CD_TH1 和 CD_TH2 设置时的具体单位为 dbm, 数据格式为二进制补码形式的符号数 CD_TH1 与 CD_TH2 的设置方法 : 1. 在接收灵敏度点读取 RSSI 寄存器值 ; 2.CD_TH1 的设置值为 RSSI 2dBm; 3.CD_TH2 的设置值为 RSSI 5dBm 推荐使用 应用笔记 _HW2000_User_Guide 寄存器初始化设置章节给定的 CD 阈值 FEC CRC SCRAMBLE 功能 RF 收发器支持数据自动的 FEC 纠错码功能, 码率 R 为 2/3 使用 FEC 可以纠正传输中的传输错误, 可以提高系统在低信噪比环境下传输成功率, 但 FEC 会增加冗余数据, 增加数据包的传送时间 可以通过配置寄存器 FEC_TYPE(PKTCTRL 寄存器 Bit5-Bit4) 使能 FEC 硬件链路控制模式下 CRC 算法由硬件实现,CRC 移位寄存器初始值可通过寄存器 CRC_INIT_DATA(MISC1 寄存器 Bit7-Bit0) 设置 支持 CRC16 与 CRC8 两种模式, 可通过 CRC_SEL 配置 CRC16 生成多项式为 :x 16 +x 12 +x 5 +1 CRC8 生成多项式为 :x 8 +x 2 +x+1 RF 收发器支持数据的扰码功能, 以增强长 0 或长 1 类型数据的传输能力 可以通过寄存器 SCRAMBLE_ON ( MISC1 寄存器 Bit13 ) 开启扰码功能, 扰码种子可通过寄存器 SCRAMBLE_DATA(MISC0 寄存器 Bit6-Bit0) 设置 扰码区域为 PAYLOAD-CRC 其基本数据流为: V0.1 17/280

253 Data_in D D D D D D D Wdata_out 图 12-1 数据扰码生成器 V0.1 18/280

254 第 13 章 RF 收发器 寄存器 寄存器列表 地址 寄存器名称 功能说明 复位值 0x20 PKTCTRL 数据包配置寄存器 0x5000 0x21 TRCTL 发送接收使能寄存器 0x0000 0x22 CHANNR Channel 设置寄存器 0x1830 0x23 MISC0 配置寄存器 0 0x0300 0x24 FOCCFG 频率偏差补偿寄存器 0x4000 0x25 FREQBASE 起始频点设置寄存器 0x0962 0x28 THRES 阈值设置寄存器 0x2103 0x29 MISC1 配置寄存器 1 0x1800 0x2A MISC2 配置寄存器 2 0xC07D 0x2C CDTH CD 阈值设置寄存器 0x8883 0x2D RSSI 接收信号能量指示寄存器 - 0x2E STATUS0 状态寄存器 0-0x30 STATUS1 状态寄存器 1-0x32 FIFO0DATA FIFO0 访问寄存器 - 0x33 FIFO1DATA FIFO1 访问寄存器 - 0x34 ACKFIFO0DATA ACKFIFO0 访问寄存器 - 0x35 ACKFIFO1DATA ACKFIFO1 访问寄存器 - 0x36 FIFO0CTRL FIFO0 配置寄存器 0x008E 0x37 FIFO1CTRL FIFO1 配置寄存器 0x008E 0x38 ACKFIFO0CTRL ACKFIFO0 配置寄存器 0x0E80 0x39 ACKFIFO1CTRL ACKFIFO1 配置寄存器 0x0E80 0x3A FIFOSTATUS FIFO 状态寄存器 - 0x3B CLEAR FIFO 指针寄存器 - 0x3C PIPECTRL PIPE 设置寄存器 0x3000 0x3D INT 中断寄存器 - 0x40 P0ADDR0 PIPE0 地址低 16bits 0xE7E7 0x41 P0ADDR1 PIPE0 地址中间 16bits 0xE7E7 0x42 P0ADDR2 PIPE0 地址高 16bits 0xE7E7 0x43 P1ADDR0 PIPE1 地址低 16bits 0xC2C2 0x44 P1ADDR1 PIPE1 地址中间 16bits 0xC2C2 0x45 P1ADDR2 PIPE1 地址高 16bits 0xC2C2 0x46 P2ADDR PIPE2 地址低 8bits 0xxx58 0x47 P3ADDR PIPE3 地址低 8bits 0xxxA7 表 13-1 寄存器列表 V0.1 19/280

255 13. 2 寄存器说明 寄存器 数据包配置寄存器 PKTCTRL 地址 0x20 复位值 0x5000 位名称 位 读写 位说明 1 0 PREAMBLE_LEN 15:13 R/W Preamble 长度设置 000:2bytes 001:4bytes 010: 6 bytes : 16 bytes 00: 16 bits SYNCWORD_LEN 12:11 R/W 01: 32 bits Syncword 长度设置 10: 48 bits 11: reserved 000:4bits 001: 6bits TRAILER_LEN 10:8 R/W Trailer 长度设置 111: 18 bits Trailer 长度 = 设置值 *2 + 4(bits) 00: NRZ law data PACK_TYPE 7:6 R/W 01: Manchester data type 数据编码方式选择 10: 8bit/10bit line code 11: Interleave data type 00: NO FEC FEC_TYPE 5:4 R/W FEC 功能使能位 10: FEC23 others: reserved - 3:0 - - 表 13-2 PKTCTRL 寄存器说明 寄存器 发送接收使能寄存器 TRCTL 地址 0x21 复位值 0x0000 位名称 位 读写 位说明 : DBUS_TXEN 8 R/W 发送使能 使能 不使能 ( 与接收使能不能同时为 1 ) DBUS_RXEN 7 R/W 接收使能 ( 与发送使能不能同时为 1 ) 使能 不使能 - 6: 表 13-3 TRCTL 寄存器说明 V0.1 20/280

256 寄存器 Channel 设置寄存器 CHANNR 地址 0x22 复位值 0x1830 位名称 位 读写 位说明 : REF_FQ 13:9 R/W 参考时钟的频率 (MHz) 12M 晶振 : M 晶振 : M 晶振 : : PLL_CH_NO 6:0 R/W RF channel number The on-air frequency: F = RF_FREQ_BASE + PLL_CH_NO 表 13-4 CHANNR 寄存器说明 寄存器 配置寄存器 MISC0 地址 0x23 复位值 0x0300 位名称 位 读写 位说明 1 0 PD_CTRL 15 R/W POWER DOWN 使能 不使能 模式使能信号 (RF 收发器进入 POWER DOWN 模式后寄存器状态保持并可读写, 但 FIFO 不可操作, 中断标志不可清 ) SFT_RST 14 R/W 软件复位使能信号 ( 不复位寄存器值 ) 使能 不使能 - 13: RE_TX_TIMES 11:8 R/W PTX 自动重发次数 (ACK 功能使能后有效 ) 注 : 设置值需大于 1 MISO_TRI_OPT 7 R/W SPI 片选为高电平时, MISO 引脚状态配置 MISO 引脚输出使能 MISO 引脚输出不使能, 为高阻态 SCRAMBLE_DATA 6:0 R/W 扰码种子 - 表 13-5 MISC0 寄存器说明 寄存器地址 频率偏差补偿寄存器 FOCCFG 0x24 V0.1 21/280

257 复位值 0x4000 位名称 位 读写 位说明 1 0 PREAMBLE_NUM 15:12 R/W 接收检测 Preamble 长度 检测长度为 preamble_num*2 (bits) RF_FREQ_FRACTION 11:0 R/W 频率偏差补偿寄存器 详见 9.4 节 表 13-6 FOCCFG 寄存器说明 寄存器 地址 复位值 起始频点设置寄存器 FREQBASE 0x25 0x0962 位名称位读写位说明 : RF_FREQ_BASE 11:0 R/W 起始频点设置 (MHz) 表 13-7 FREQBASE 寄存器说明 射频工作频率范围为 2402~2483MHz, 设置值需配合 PLL_CH_NO 寄存器设置值, 使 工作频率在支持频段范围内 寄存器 阈值设置寄存器 THRES 地址 0x28 复位值 0x2103 位名称 位 读写 位说明 1 0 EMPTY_THRES 15:11 R/W FIFO0 半空阈值 - ( 软件链路控制模式使用 ) FULL_THRES 10:6 R/W FIFO0 半满阈值 - ( 软件链路控制模式使用 ) SYNC_THRES 5:0 R/W 同步字允许错误个数阈值 - 表 13-8 THRES 寄存器说明 V0.1 22/280

258 寄存器 配置寄存器 MISC1 地址 0x29 复位值 0x1800 位名称 位 读写 位说明 CRC_SEL 14 R/W CRC 选择控制 CRC8 CRC16 SCRAMBLE_ON 13 R/W 扰码功能使能位 使能 不使能 PACK_LENGTH_EN 12 R/W 链路控制模式选择 硬件链路控制 软件链路控制 FW_HW_TERM_EN 11 R/W 当 FIFO0 的读写指由主控 MCU 硬件链路控制模式下针相等时自动停止决定发送关闭 PTX 发送停止模式配置发送时刻 PKT_HINT_PORITY 10 R/W 中断引脚有效电平配置 低电平有效 高电平有效 - 9: CRC_INIT_DATA 7:0 R/W CRC 移位寄存器初始值 - 表 13-9 MISC1 寄存器说明 寄存器 配置寄存器 MISC2 地址 0x2A 复位值 0xC07D 位名称 位 读写 位说明 1 0 RATE 15 R/W 发送速率选择 1Mbps 250Kbps AFC_MCTRL 14 R/W AFC 功能控制 使能 不使能 - 13:9 - - ACKTIME_ADJUST_ON 8 R/W AUTO_RX_ACK_TIME 寄存器设置时间乘 2 使能 不使能 等待 ACK 的时间为 AUTO_RX_ACK_TIME 7:0 R/W 在 ACK 使能情况下, PTX 由发送切换为接收后等待 ACK 的时间 寄存器设置值 寄存器设置值 推荐的设置值为 preamble_length(bits)+100@1mbps preamble_length(bits)+52@250kbps 表 MISC2 寄存器说明 寄存器 CD 阈值设置寄存器 CDTH 地址 0x2C 复位值 0x8883 位名称 位 读写 位说明 1 0 CD_TH1 15:8 R/W CD 的高域值 详见 12.7 节 CD_TH2 7:0 R/W CD 的低域值 表 CDTH 寄存器说明 V0.1 23/280

259 寄存器 接收信号能量指示寄存器 RSSI 地址 0x2D 复位值 - 位名称 位 读写 位说明 : RSSI 7:0 R RSSI 值 (dbm) 详见 12.6 节 表 RSSI 寄存器说明 寄存器 状态寄存器 STATUS0 地址 0x2E 复位值 - 位名称 位 读写 位说明 : PQT 11 R Preamble 检测标志 发现有效 Preamble 未发现有效 Preamble CD 10 R carrier detect 标志 发现有效载波 未发现有效载波 FREQ_ESTIMATION 9:0 R 频率偏差的估计值 详见 12.4 节 表 STATUS0 寄存器说明 寄存器 状态寄存器 STATUS1 地址 0x30 复位值 - 位名称 位 读写 位说明 : PIPE_ADDR_MATCH 7 R 同步字接收成功标志接收完成后硬件清 0 同步成功 同步不成功 FSM_TX_STATE 5 R 状态机当前发送状态指示位 状态机处于发送状态 状态机不处于发送状态 - 4: 表 STATUS1 寄存器说明 V0.1 24/280

260 寄存器 FIFO0 访问寄存器 FIFO0DATA 地址 0x32 复位值 - 位名称 位 读写 位说明 : FIFO0DATA 7:0 R/W FIFO0 访问寄存器 (MCU 芯片以 byte 为单位访问 FIFO) FIFO 读写操作详见 章节 表 FIFO0DATA 寄存器说明 寄存器 FIFO1 访问寄存器 FIFO1DATA 地址 0x33 复位值 - 位名称 位 读写 位说明 : FIFO1DATA 7:0 R/W FIFO1 访问寄存器 (MCU 芯片以 byte 为单位访问 FIFO) FIFO 读写操作详见 章节 表 FIFO1DATA 寄存器说明 寄存器 ACKFIFO0 访问寄存器 ACKFIFO0DATA 地址 0x34 复位值 - 位名称 位 读写 位说明 : ACKFIFO0 访问寄存器 ACKFIFO0DATA 7:0 R/W (MCU 芯片以 byte 为单位访问 ACKFIFO) FIFO 读写操作详见 章节 表 ACKFIFO0DATA 寄存器说明 寄存器 ACKFIFO1 访问寄存器 ACKFIFO1DATA 地址 0x35 复位值 - 位名称 位 读写 位说明 : ACKFIFO1 访问寄存器 ACKFIFO1DATA 15:0 R/W (MCU 芯片以 byte 为单位访问 ACKFIFO) FIFO 读写操作详见 章节 表 ACKFIFO1DATA 寄存器说明 V0.1 25/280

261 寄存器 FIFO0 配置寄存器 FIFO0CTRL 地址 0x36 复位值 0x008E 位名称 位 读写 位说明 1 0 PTX_FIFO0_FAIL 15 R 重发超时信号, 用于区分发送中断置起时 PTX 状态 (PTX 清 INT0 硬件自动清 0 ) 重发超时 重发未超时 PRX 接收存于 FIFO0 中的 PRX_CRC_ERR0 13 R PAYLOAD CRC 错误 CRC 正确 CRC 错误指示位 PRX_FEC23_ERR0 12 R 存于 FIFO0 的接收 PAYLOAD FEC 错误 FEC 正确 FEC2/3 错误指示位 PRX_FIFO0_PIPE 11:9 R PRX 接收存于 FIFO0 中的 PAYLOAD 数据所属 PIPE 000: PIPE0 001: PIPE1 010: PIPE2 011: PIPE3 Others: 无效 PRX_FIFO0_OCPY 8 R PRX FIFO0 数据填写完成信号 ( 清中断 INT0 后硬件 PRX FIFO0 被占用 PRX FIFO0 未被占用 清 0 ) FIFO0_EN 7 R/W FIFO0 使能位 使能 不使能 - 6: 告知 PRX 从 FIFO0 发送的 PTX_FIFO0_NOACK 4 R/W PAYLOAD 无需 ACK 控制 NOACK ACK 位 ( ACK 功能使能时有效 ) PTX_FIFO0_PIPE 3:1 R/W PTX FIFO0 中的 PAYLOAD 数据所属 PIPE 000: PIPE0 001: PIPE1 010: PIPE2 011: PIPE3 Others: 无效 PTX_FIFO0_OCPY 0 R/W PTX FIFO0 数据填写完成信号 ( 软件清 0 ) PTX FIFO0 被占用 PTX FIFO0 未被占用 表 FIFO0CTRL 寄存器说明 V0.1 26/280

262 寄存器 FIFO1 配置寄存器 FIFO1CTRL 地址 0x37 复位值 0x008E 位名称 位 读写 位说明 1 0 PTX_FIFO1_FAIL 15 R 重发超时信号, 用于区分发送中断置起时 PTX 状态 (PTX 清 INT1 硬件自动清 0 ) 重发超时 重发未超时 PRX 接收存于 FIFO1 中的 PRX_CRC_ERR1 13 R PAYLOAD CRC 错误 CRC 正确 CRC 错误指示位 PRX_FEC23_ERR1 12 R 存于 FIFO1 的接收 PAYLOAD FEC 错误 FEC 正确 FEC2/3 错误指示位 PRX_FIFO1_PIPE 11:9 R PRX 接收存于 FIFO1 中的 PAYLOAD 数据所属 PIPE 000: PIPE0 001: PIPE1 010: PIPE2 011: PIPE3 Others: 无效 PRX_FIFO1_OCPY 8 R PRX FIFO1 数据填写完成信号 ( 清中断 INT1 后硬件 PRX FIFO1 被占用 PRX FIFO1 未被占用 清 0 ) FIFO1_EN 7 R/W FIFO1 使能位 使能 不使能 - 6: 告知 PRX 从 FIFO1 发送的 PTX_FIFO1_NOACK 4 R/W PAYLOAD 无需 ACK 控制 NOACK ACK 位 ( ACK 功能使能时有效 ) PTX_FIFO1_PIPE 3:1 R/W PTX FIFO1 中的 PAYLOAD 数据所属 PIPE 000: PIPE0 001: PIPE1 010: PIPE2 011: PIPE3 Others: 无效 PTX_FIFO1_OCPY 0 R/W PTX FIFO1 数据填写完成信号 ( 软件清 0 ) PTX FIFO1 被占用 PTX FIFO1 未被占用 表 FIFO1CTRL 寄存器说明 V0.1 27/280

263 寄存器 ACKFIFO0 配置寄存器 ACKFIFO0CTRL 地址 0x38 复位值 0x0E80 位名称 位 读写 位说明 : : PIPE0 PRX_ACKFIFO0_PIPE 11:9 R/W PRX ACKFIFO0 中 ACK PAYLOAD 数据所属 PIPE 001: PIPE1 010: PIPE2 011: PIPE3 Others: 无效 PRX_ACKFIFO0_OCPY 8 R/W PRX ACKFIFO0 数据填写完成信号 ( 软件清 0 ) PRX ACKFIFO0 被占用 PRX ACKFIFO0 未被占用 ACKFIFO0_EN 7 R/W ACKFIFO0 使能位 使能 不使能 - 6: PTX 接收存于 PTX_ACKCRC_ERR0 4 R ACKFIFO0 的 CRC 错误 CRC 正确 ACK PAYLOAD CRC 错误指示位 PTX_ACKFIFO0_PIPE 3:1 R PTX 接收存于 ACKFIFO0 中 ACK PAYLOAD 数据所属 PIPE 000: PIPE0 001: PIPE1 010: PIPE2 011: PIPE3 Others: 无效 PTX_ACKFIFO0_OCPY 0 R PTX ACKFIFO0 数据填写完成信号 ( 清中断 ACK_INT0 后硬件清 0 ) PTX ACKFIFO0 被占用 PTX ACKFIFO0 未被占用 表 ACKFIFO0CTRL 寄存器说明 V0.1 28/280

264 寄存器 ACKFIFO1 配置寄存器 ACKFIFO1CTRL 地址 0x39 复位值 0x0E80 位名称 位 读写 位说明 : : PIPE0 PRX_ACKFIFO1_PIPE 11:9 R/W PRX ACKFIFO1 中 ACK PAYLOAD 数据所属 PIPE 001: PIPE1 010: PIPE2 011: PIPE3 Others: 无效 PRX_ACKFIFO1_OCPY 8 R/W PRX ACKFIFO1 数据填写完成信号 ( 软件清 0 ) PRX ACKFIFO1 被占用 PRX ACKFIFO1 未被占用 ACKFIFO1_EN 7 R/W ACKFIFO1 使能位 使能 不使能 - 6: PTX 接收存于 PTX_ACKCRC_ERR1 4 R ACKFIFO1 的 CRC 错误 CRC 正确 ACK PAYLOAD CRC 错误指示位 PTX_ACKFIFO1_PIPE 3:1 R PTX 接收存于 ACKFIFO1 中 PAYLOAD 数据所属的 PIPE 000: PIPE0 001: PIPE1 010: PIPE2 011: PIPE3 Others: 无效 PTX_ACKFIFO1_OCPY 0 R PTX ACKFIFO1 数据填写完成信号 ( 清中断 ACK_INT1 后硬件清 0 ) PTX ACKFIFO1 被占用 PTX ACKFIFO1 未被占用 表 ACKFIFO1CTRL 寄存器说明 V0.1 29/280

265 寄存器 FIFO 状态寄存器 FIFOSTATUS 地址 0x3A 复位值 - 位名称 位 读写 位说明 : FIFO0_HALF_FULL 9 R 接收 FIFO0 半满指示位 半满 未半满 FIFO0_HALF_EMPTY 8 R 发送 FIFO0 半空指示位 半空 未半空 - 7: ACKFIFO1_ OCPY 5 R ACKFIFO1 状态指示位 ACKFIFO1 被占用 ACKFIFO1 未被占用 ACKFIFO0_ OCPY 4 R ACKFIFO0 状态指示位 ACKFIFO0 被占用 ACKFIFO0 未被占用 FIFO1_ OCPY 3 R FIFO1 状态指示位 FIFO1 被占用 FIFO1 未被占用 FIFO0_ OCPY 2 R FIFO0 状态指示位 FIFO0 被占用 FIFO0 未被占用 - 1: 表 FIFOSTATUS 寄存器说明 寄存器 FIFO 指针寄存器 CLEAR 地址 0x3B 复位值 - 位名称 位 读写 位说明 1 0 CLR_W_PTR 15 W FIFO 写指针清 0 信号 ( 不可在接收 FIFO 写指针清 0 无效操作 PAYLOAD 时使用 ) CLR_W_ACKPTR 14 W ACKFIFO 写指针清 0 信号 ( 不可在接收 ACK PAYLOAD 时使用 ) ACK FIFO 写指针清 0 无效操作 FIFO0_WR_PTR 13:8 R FIFO0 写指针 - CLR_R_PTR 7 W FIFO 读指针清 0 信号 ( 不可在发送 FIFO 读指针清 0 无效操作 PAYLOAD 时使用 ) CLR_R_ACKPTR 6 W ACK FIFO 读指针清 0 信号 ( 不可在发送 ACK PAYLOAD 时使用 ) ACK FIFO 读指针清 0 无效操作 FIFO0_RD_PTR 5:0 R FIFO0 读指针 - 表 CLEAR 寄存器说明 V0.1 30/280

266 寄存器 PIPE 设置寄存器 PIPECTRL 地址 0x3C 复位值 0x3000 位名称 位 读写 位说明 1 0 P3_EN 15 R/W PIPE3 使能信号 使能 不使能 P2_EN 14 R/W PIPE2 使能信号 使能 不使能 P1_EN 13 R/W PIPE1 使能信号 使能 不使能 P0_EN 12 R/W PIPE0 使能信号 使能 不使能 - 11:8 - P3_ACKPAYLOAD_EN 7 R/W PIPE3 ACK 带 使能 不使能 PAYLOAD 使能信号 P2_ACKPAYLOAD_EN 6 R/W PIPE2 ACK 带 使能 不使能 PAYLOAD 使能信号 P1_ACKPAYLOAD_EN 5 R/W PIPE1 ACK 带 使能 不使能 PAYLOAD 使能信号 P0_ACKPAYLOAD_EN 4 R/W PIPE0 ACK 带 使能 不使能 PAYLOAD 使能信号 P3_ACK_EN 3 R/W PIPE3 ACK 使能信号 使能 不使能 P2_ACK_EN 2 R/W PIPE2 ACK 使能信号 使能 不使能 P1_ACK_EN 1 R/W PIPE1 ACK 使能信号 使能 不使能 P0_ACK_EN 0 R/W PIPE0 ACK 使能信号 使能 不使能 表 PIPECTRL 寄存器说明 V0.1 31/280

267 寄存器 中断寄存器 INT 地址 0x3D 复位值 - 位名称 位 读写 位说明 1 0 ACKINT1_CLR 15 W ACKINT1 标志位清 0 信号 清 0 无效操作 ACKINT1_PID 14:13 R ACKINT1 为 1 时 PID 指示位 PTX: 指示当 ACKINT1 为 1 时,ACKFIFO1 接收到的 ACK PAYLOAD 所对应的 PID PRX: 指示当 ACKINT1 为 1 时,ACKFIFO1 上一次成功发送的 ACK PAYLOAD 所对应的 PID ACKFIFO1 中断标志位 PTX: ACKFIFO1 接 ACK PAYLOAD 后置 1 PRX: PRX 在接收到新包 ACKINT1 12 R 的 PID 发生变化时置 1 发生中断 未发生中断 表明前一次从 ACKFIFO1 中发送的 ACK PAYLOAD 发送成功 ( 具体详见 11.2 节 ) ACKINT0_CLR 11 W ACKINT0 标志位清 0 信号 清 0 无效操作 ACKINT0_PID 10:9 R ACKINT0 为 1 时 PID 指示位 PTX: 指示当 ACKINT0 为 1 时,ACKFIFO0 接收到的 ACK PAYLOAD 所对应的 PID PRX: 指示当 ACKINT0 为 1 时,ACKFIFO0 上一次成功发送的 ACK PAYLOAD 所对应的 PID ACKFIFO0 中断标志位 PTX: ACKFIFO0 接 ACK PAYLOAD 后置 1 PRX: PRX 在接收到新包 ACKINT0 8 R 的 PID 发生变化时置 1 发生中断 未发生中断 表明前一次从 ACKFIFO0 中发送的 ACK PAYLOAD 发送成功 ( 具体详见 11.2 节 ) INT1_CLR 7 W INT1 标志位清 0 信号 清 0 无效操作 PTX 从 FIFO1 发包之后接收的 ACK PAYLOAD 存放 V0.1 32/280

268 的 ACK FIFO FIFO1_ACK_POS 6 R ( 只针对 PTX, 并且 ACKFIFO1 ACKFIFO0 ACKINT1 = 1, ACKINT1_W_ACKPAY = 1 时有效 ) ACKINT1 是否带 ACK PAYLOAD 指示位 ACK 带 ACK 不带 ACKINT1_W_ACKPAY 5 R ( 只针对 PTX, 并且 PAYLOAD PAYLOAD ACKINT1 = 1 时有效 ) INT1 4 R FIFO1 中断标志位 PTX: 发送完成或发送超时 PRX: 接收完成 发送 ACK 发生中断 未发生中断 完成或 SFD 匹配 ( 具体详见 16.2 节 ) INT0_CLR 3 W INT0 标志位清 0 信号 清 0 无效操作 PTX 从 FIFO0 发包之后接收的 ACK PAYLOAD 存放的 ACK FIFO FIFO0_ACK_POS 2 R ( 只针对 PTX, 并且 ACKFIFO1 ACKFIFO0 ACKINT0 = 1, ACKINT0_W_ACKPAY = 1 时有效 ) ACKINT0 是否带 ACK PAYLOAD 指示位 ACK 带 ACK 不带 ACKINT0_W_ACKPAY 1 R ( 只针对 PTX, 并且 PAYLOAD PAYLOAD ACKINT0 = 1 时有效 ) FIFO0 中断标志位 PTX: 发送完成或发送超时 INT0 0 R PRX: 接收完成 发送 ACK 发生中断 未发生中断 完成或 SFD 匹配 ( 具体详见 16.2 节 ) 表 INT 寄存器说明 V0.1 33/280

269 寄存器名称 PIPE0 地址寄存器 P0ADDR0 地址 0x40 复位值 0xE7E7 位名称 位 读写 位说明 1 0 P0_ADDR[15:0] 15:0 R/W PIPE0 syncword 地址 - 表 P0ADDR0 寄存器说明 寄存器名称 PIPE0 地址寄存器 P0ADDR1 地址 0x41 复位值 0xE7E7 位名称 位 读写 位说明 1 0 P0_ADDR[31:16] 15:0 R/W PIPE0 syncword 地址 - 表 P0ADDR1 寄存器说明 寄存器名称 PIPE0 地址寄存器 P0ADDR2 地址 0x42 复位值 0xE7E7 位名称 位 读写 位说明 1 0 P0_ADDR[47:32] 15:0 R/W PIPE0 syncword 地址 - 表 P0ADDR2 寄存器说明 寄存器名称 PIPE1 地址寄存器 P1ADDR0 地址 0x43 复位值 0xC2C2 位名称 位 读写 位说明 1 0 P1_ADDR[15:0] 15:0 R/W PIPE1 syncword 地址 - 表 P1ADDR0 寄存器说明 寄存器名称 PIPE1 地址寄存器 P1ADDR1 地址 0x44 复位值 0xC2C2 位名称 位 读写 位说明 1 0 P1_ADDR[31:16] 15:0 R/W PIPE1 syncword 地址 - 表 P1ADDR1 寄存器说明 V0.1 34/280

270 寄存器名称 PIPE1 地址寄存器 P1ADDR2 地址 0x45 复位值 0xC2C2 位名称 位 读写 位说明 1 0 P1_ADDR[47:32] 15:0 R/W PIPE1 syncword 地址 - 表 P1ADDR2 寄存器说明 寄存器名称 PIPE2 地址寄存器 P2ADDR 地址 0x46 复位值 0xxx58 位名称 位 读写 位说明 : PIPE2 syncword 地址低 8 位 PIPE2 地址总长度可通过寄存 P2_ADDR[7:0] 7:0 R/W 器 SYNCWORD_LEN 配置 : - 16bit : {P1_ADDR[15:8],P2_ADDR} 32bit : {P1_ADDR[31:8],P2_ADDR} 48bit : {P1_ADDR[47:8],P2_ADDR} 表 P2ADDR 寄存器说明 寄存器名称 PIPE3 地址寄存器 P3ADDR 地址 0x47 复位值 0xxxA7 位名称 位 读写 位说明 : PIPE3 syncword 地址低 8 位 PIPE3 地址总长度可通过寄存 P3_ADDR[7:0] 7:0 R/W 器 SYNCWORD_LEN 配置 : - 16bit : {P1_ADDR[15:8],P3_ADDR} 32bit : {P1_ADDR[31:8],P3_ADDR} 48bit : {P1_ADDR[47:8],P3_ADDR} 表 P3ADDR 寄存器说明 V0.1 35/280

271 第 14 章 RF 收发器 术语解释 RF 收发器的术语, 请参考下表 : Term ACK ART PTX PRX TX RX ISM GFSK PID CE IRQ CSN SCK MOSI MISO Description Acknowledgement Auto Re-Transmit Primary TX Primary RX Transmit Receive Industrial-Scientific-Medical Gaussian Frequency Shift Keying Packet Identity Bits Chip Enable Interrupt Request Chip Select NOT Serial Clock Master Out Slave In Master In Slave Out 表 19-1 术语解释 V0.1 36/280

272 第 15 章封装尺寸图 封装尺寸图 图 15-1 QFN48 封装尺寸图 V0.1 37/280

273 16. 1 典型应用原理图 第 16 章典型应用原理图 图 21-1 典型应用原理图 设计应用注意事项 (1)GND_PAD 脚必须接地 (2) 芯片内部 RF 和 MCU 的电源分别是 VDDRF 和 VDD, 二者在内部是不连的, 所以需要在外部连接到电源上 (3)CE 脚外接电容推荐值为 150pF, 可根据实际应用的不同选取不同的值 V0.1 38/280

产品订购信息 Part NO. 工作电压 FLASH SRAM I/O Timer RTC UART SPI I2C ADC 封装类型 16-bit HW2181FHNQ 2.2V ~3.6V 36KB 8KB 35 4, 32-bit bit 15ch QFN48 1 地址

产品订购信息 Part NO. 工作电压 FLASH SRAM I/O Timer RTC UART SPI I2C ADC 封装类型 16-bit HW2181FHNQ 2.2V ~3.6V 36KB 8KB 35 4, 32-bit bit 15ch QFN48 1 地址 2.4G SOC HW2181 数据手册 产品简介 数据手册 产品规格 上海东软载波微电子有限公司 2018 年 10 月 10 日 V1.0 1/308 产品订购信息 Part NO. 工作电压 FLASH SRAM I/O Timer RTC UART SPI I2C ADC 封装类型 16-bit HW2181FHNQ 2.2V ~3.6V 36KB 8KB 35 4, 32-bit 1 2

More information

东软载波 MCU 芯片使用注意事项 关于芯片的上 / 下电东软载波 MCU 芯片具有独立电源管脚 当 MCU 芯片应用在多电源供电系统时, 应先对 MCU 芯片上电, 再对系统其他部件上电 ; 反之, 下电时, 先对系统其他部件下电, 再对 MCU 芯片下电 若操作顺序相反则可能导致芯片内部元件过压

东软载波 MCU 芯片使用注意事项 关于芯片的上 / 下电东软载波 MCU 芯片具有独立电源管脚 当 MCU 芯片应用在多电源供电系统时, 应先对 MCU 芯片上电, 再对系统其他部件上电 ; 反之, 下电时, 先对系统其他部件下电, 再对 MCU 芯片下电 若操作顺序相反则可能导致芯片内部元件过压 32 位 MCU ES8P5086/ES8P5088 数据手册 产品简介 数据手册 产品规格 上海东软载波微电子有限公司 2018 年 9 月 11 日 V1.2 1/278 东软载波 MCU 芯片使用注意事项 关于芯片的上 / 下电东软载波 MCU 芯片具有独立电源管脚 当 MCU 芯片应用在多电源供电系统时, 应先对 MCU 芯片上电, 再对系统其他部件上电 ; 反之, 下电时, 先对系统其他部件下电,

More information

32位MCU

32位MCU 32 位 MCU HR8P506 数据手册 产品简介 数据手册 产品规格 上海东软载波微电子有限公司 2016 年 1 月 27 日 V1.0 1/309 东软载波 MCU 芯片使用注意事项 关于芯片的上 / 下电 东软载波 MCU 芯片具有独立电源管脚 当 MCU 芯片应用在多电源供电系统时, 应先对 MCU 芯片上电, 再对系统其他部件上电 ; 反之, 下电时, 先对系统其他部件下电, 再对 MCU

More information

东软载波 MCU 芯片使用注意事项 关于芯片的上 / 下电东软载波 MCU 芯片具有独立电源管脚 当 MCU 芯片应用在多电源供电系统时, 应先对 MCU 芯片上电, 再对系统其他部件上电 ; 反之, 下电时, 先对系统其他部件下电, 再对 MCU 芯片下电 若操作顺序相反则可能导致芯片内部元件过压

东软载波 MCU 芯片使用注意事项 关于芯片的上 / 下电东软载波 MCU 芯片具有独立电源管脚 当 MCU 芯片应用在多电源供电系统时, 应先对 MCU 芯片上电, 再对系统其他部件上电 ; 反之, 下电时, 先对系统其他部件下电, 再对 MCU 芯片下电 若操作顺序相反则可能导致芯片内部元件过压 32 位 MCU HR8P506 数据手册 产品简介 数据手册 产品规格 上海东软载波微电子有限公司 2016 年 10 月 8 日 V1.1 1/305 东软载波 MCU 芯片使用注意事项 关于芯片的上 / 下电东软载波 MCU 芯片具有独立电源管脚 当 MCU 芯片应用在多电源供电系统时, 应先对 MCU 芯片上电, 再对系统其他部件上电 ; 反之, 下电时, 先对系统其他部件下电, 再对 MCU

More information

东软载波 MCU 芯片使用注意事项 关于芯片的上 / 下电东软载波 MCU 芯片具有独立电源管脚 当 MCU 芯片应用在多电源供电系统时, 应先对 MCU 芯片上电, 再对系统其他部件上电 ; 反之, 下电时, 先对系统其他部件下电, 再对 MCU 芯片下电 若操作顺序相反则可能导致芯片内部元件过压

东软载波 MCU 芯片使用注意事项 关于芯片的上 / 下电东软载波 MCU 芯片具有独立电源管脚 当 MCU 芯片应用在多电源供电系统时, 应先对 MCU 芯片上电, 再对系统其他部件上电 ; 反之, 下电时, 先对系统其他部件下电, 再对 MCU 芯片下电 若操作顺序相反则可能导致芯片内部元件过压 32 位 MCU HR8P506 数据手册 产品简介 数据手册 产品规格 上海东软载波微电子有限公司 2018 年 9 月 11 日 V1.8 1/317 东软载波 MCU 芯片使用注意事项 关于芯片的上 / 下电东软载波 MCU 芯片具有独立电源管脚 当 MCU 芯片应用在多电源供电系统时, 应先对 MCU 芯片上电, 再对系统其他部件上电 ; 反之, 下电时, 先对系统其他部件下电, 再对 MCU

More information

上海海尔集成电路有限公司

上海海尔集成电路有限公司 32 位 MCU HR8P287 数据手册 ARM Cortex TM -M0 内核 产品简介 数据手册 产品规格 上海东软载波微电子有限公司 2016 年 1 月 15 日 V1.0 1/218 使用注意事项 关于芯片的上 / 下电本公司系列芯片具有独立电源管脚 当芯片应用在多电源供电系统时, 应保证芯片与所连系统其它部件同步上电, 或先对芯片上电, 再对所连系统其它部件上电 ; 反之, 下电时,

More information

基于 ARM Cortex-M0 的 ES32F065x 系列 MCU 内核 ARM 32 位 Cortex-M0 CPU 最高频率可达 48MHz 存储 最大 256K Byte FLASH 存储器 最大 32K Byte SRAM 数据存储电源 复位 芯片工作电压范围 : 2.2V 5.5V P

基于 ARM Cortex-M0 的 ES32F065x 系列 MCU 内核 ARM 32 位 Cortex-M0 CPU 最高频率可达 48MHz 存储 最大 256K Byte FLASH 存储器 最大 32K Byte SRAM 数据存储电源 复位 芯片工作电压范围 : 2.2V 5.5V P 32 位 MCU ES32F0654 ES32F0653 产品简介 产品简介 数据手册 参考手册 上海东软载波微电子有限公司 2018-11-20 V1.0 1/22 基于 ARM Cortex-M0 的 ES32F065x 系列 MCU 内核 ARM 32 位 Cortex-M0 CPU 最高频率可达 48MHz 存储 最大 256K Byte FLASH 存储器 最大 32K Byte SRAM

More information

基于 ARM Cortex-M0 的 ES32F033x 系列 MCU 内核 ARM 32 位 Cortex-M0 CPU 最高频率可达 48MHz 存储 最大 256K Byte FLASH 存储器 最大 32K Byte SRAM 数据存储电源 复位 芯片工作电压范围 : 2.2V VDD 5.

基于 ARM Cortex-M0 的 ES32F033x 系列 MCU 内核 ARM 32 位 Cortex-M0 CPU 最高频率可达 48MHz 存储 最大 256K Byte FLASH 存储器 最大 32K Byte SRAM 数据存储电源 复位 芯片工作电压范围 : 2.2V VDD 5. 32 位 MCU ES32F0334 产品简介 产品简介 数据手册 参考手册 上海东软载波微电子有限公司 2018-11-20 V1.0 1/18 基于 ARM Cortex-M0 的 ES32F033x 系列 MCU 内核 ARM 32 位 Cortex-M0 CPU 最高频率可达 48MHz 存储 最大 256K Byte FLASH 存储器 最大 32K Byte SRAM 数据存储电源 复位

More information

SMART 7P 0 HR7P OTPMCU A/D I/O OTP ROM RAM HR7P HR7P HR7PPMB MSOP0 7+input HR7PPSC HR7PPSD SOP SOP6 +input input HR7PERB SSOP0 7

SMART 7P 0 HR7P OTPMCU A/D I/O OTP ROM RAM HR7P HR7P HR7PPMB MSOP0 7+input HR7PPSC HR7PPSD SOP SOP6 +input input HR7PERB SSOP0 7 上海东软载波微电子有限公司 SMART www.essemi.com SMART 7P 0 HR7P OTPMCU A/D I/O OTP ROM RAM HR7P HR7P HR7PPMB MSOP0 7+input 06 6 6 HR7PPSC HR7PPSD SOP SOP6 +input 06 6 +input 06 6 6 6 HR7PERB SSOP0 7+input 06 6 6 HR7PESC

More information

2 PIC PIC 1 / CPU PIC MCU PIC RC

2 PIC PIC 1 / CPU PIC MCU PIC RC 2 PIC PIC 1 /... 2-2 2... 2-3 3... 2-4 4... 2-4 5... 2-4 6 CPU... 2-5 7 PIC MCU... 2-6 8 PIC16... 2-6 9... 2-7 10... 2-7 11 RC... 2-7 12... 2-8 13... 2-8 14 NOP... 2-9 15 PMD... 2-9 16... 2-10 17 WDTWDT...

More information

FM1935X智能非接触读写器芯片

FM1935X智能非接触读写器芯片 FM33A0xx MCU 2017. 05 2.0 1 (http://www.fmsh.com/) 2.0 2 ... 3 1... 4 1.1... 4 1.2... 4 1.3... 5 1.3.1... 5 1.3.2... 5 1.4... 8 1.4.1 LQFP100... 8 1.4.2 LQFP80... 9 1.4.3... 9 2... 15 2.1 LQFP100... 15

More information

FM1935X智能非接触读写器芯片

FM1935X智能非接触读写器芯片 FM3316/3315 MCU 2017.06 FM3316/3315 MCU 2.21 (http://www.fmsh.com/) FM3316/3315 MCU 2.22 ... 3 1... 4 2... 5 2.1... 5 2.2... 5 2.3... 6 2.3.1... 6 2.3.2... 6 2.4... 9 2.5... 10 2.5.1 LQFP64... 10 2.5.2

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

上海东软载波微电子有限公司 SMART

上海东软载波微电子有限公司 SMART 上海东软载波微电子有限公司 SMART www.essemi.com SMART 7P 0 HR7P/ES7P OTPMCU A/D I/O OTP ROM RAM ES7P7x ES7P7PSD SOP +input 0 ES7P7PSF SOP0 7+input 0 ES7P7PRF SSOP0 7+input 0 EEPROM MHz 0 ~.V ~.V MHz, KHz MHz 0 ~.V

More information

修订历史 版本修订日期修改概要 V 初版 地址 : 中国上海市龙漕路 299 号天华信息科技园 2A 楼 5 层邮编 : 电话 : 传真 : 网址 :

修订历史 版本修订日期修改概要 V 初版 地址 : 中国上海市龙漕路 299 号天华信息科技园 2A 楼 5 层邮编 : 电话 : 传真 : 网址 : 文档编号 :AN1005 上海东软载波微电子有限公司 应用笔记 2.4GHz Antenna Reference Design V1.0 1/15 修订历史 版本修订日期修改概要 V1.0 2018-10-8 初版 地址 : 中国上海市龙漕路 299 号天华信息科技园 2A 楼 5 层邮编 :200235 E-mail:support@essemi.com 电话 :+86-21-60910333 传真

More information

設計目標規格書

設計目標規格書 ARM Cortex -M0 32 位 微 控 制 器 NuMicro M051 系 列 技 术 参 考 手 册 - 1 - 版 本 V2.0 目 录 1 概 述 11 2 特 征 12 3 框 图 16 4 选 型 表 17 5 管 脚 配 置 18 5.1 QFN 33 pin 18 5.2 LQFP 48 pin 19 5.3 管 脚 描 述 20 6 功 能 描 述 23 6.1 ARM Cortex

More information

XNS104 产品说明书 AD 型 2.4G 高速无线收发单片机概述 2.4GHz 高速无线收发单片机 XNS104 是一个带 12 位 ADC, 以 OTP 为程序存储基础, 带 2.4G 高速无线收发芯片的单片机 无线收发单元工作在 GHz 世界通用 ISM 频段, 它集

XNS104 产品说明书 AD 型 2.4G 高速无线收发单片机概述 2.4GHz 高速无线收发单片机 XNS104 是一个带 12 位 ADC, 以 OTP 为程序存储基础, 带 2.4G 高速无线收发芯片的单片机 无线收发单元工作在 GHz 世界通用 ISM 频段, 它集 XNS104 产品说明书 AD 型 2.4G 高速无线收发单片机概述 2.4GHz 高速无线收发单片机 XNS104 是一个带 12 位 ADC, 以 OTP 为程序存储基础, 带 2.4G 高速无线收发芯片的单片机 无线收发单元工作在 2.400--2.483GHz 世界通用 ISM 频段, 它集成射频收发通路 频率发生器 晶体振荡器 调制解调器等功能模块, 并且支持一对多组网和带 ACK 的通信模式

More information

GW2A 系列 FPGA 产品 GW2A-18 器件 Pinout Version History 日期 版本 2016/8/ /9/ /11/ /2/ /6/ /6/ /8

GW2A 系列 FPGA 产品 GW2A-18 器件 Pinout Version History 日期 版本 2016/8/ /9/ /11/ /2/ /6/ /6/ /8 Version History 日期 版本 2016/8/4 1.00 2016/9/2 1.01 2016/11/29 1.02 2017/2/16 1.03 2017/6/9 1.04 2018/6/27 1.05 2018/8/8 1.06 新增 MG196 PBGA256S 封装信息 ; 修改 SSPI 模式的配置功能 ; 增加 QN88 封装信息 2019/3/27 1.07 增加电源供电要求

More information

USB解决方案.ppt

USB解决方案.ppt USB USB? RS232 USB USB HID U modem ADSL cable modem IrDA Silabs USB CP210x USB UART USB RS-232 USB MCU 15 USB 12 FLASH MCU 3 USB MCU USB MCU C8051F32x 10 ADC 1.5%, Vref CPU 25MIPS 8051 16KB Flash -AMUX

More information

第十四章 STC单片机比较器原理及实现

第十四章 STC单片机比较器原理及实现 第 14 章 STC 单片机比较器 原理及实现 何宾 2015.02 1 本章主要内容 STC 单片机比较器结构 STC 单片机比较器寄存器组 STC 单片机比较器应用 2 STC 单片机比较器结构 STC15W 系列单片机内置了模拟比较器 对于 STC15W201S STC15W404S, 以及 STC15W1K16S 系 列单片机的比较器内部结构 3 STC 单片机比较器结构 S T C 15W

More information

SN32F240

SN32F240 SN32F240B 系列 用户参考手册 SN32F248B/247B/246B/2451B SONiX 32 位 Cortex-M0 单片机 SONiX 公司保留对以下所有产品在可靠性, 功能和设计方面的改进作进一步说明的权利 SONiX 不承担由本手册所涉及的产品或电路的运用和使用所引起的任何责任,SONiX 的产品不是专门设计来应用于外科植入 生命维持和任何 SONiX 产品的故障会对个体造成伤害甚至死亡的领域

More information

Tel: , Fax: STR-15 STR bps 2400bps 4800bps 9600bps STR : 500mW 2.ISM 433

Tel: , Fax: STR-15 STR bps 2400bps 4800bps 9600bps STR : 500mW 2.ISM 433 Tel:086-21-50807785, 50273226 Fax:086-21-50807785-807 http://www.sendbow.com TEL +86-021-50273226 50807785 13816690692 FAX:+86-021-50807785-807 167 E-mail:mailto:technology@sendbow.com web:http://www.sendbow.com

More information

上海海尔集成电路有限公司

上海海尔集成电路有限公司 文档编号 :AN2007 上海东软载波微电子有限公司 用户手册 ES-PDS 原型开发系统 V1.0 1/19 修订历史 版本修订日期修改概要 V1.0 2019-4-2 初版 地址 : 中国上海市龙漕路 299 号天华信息科技园 2A 楼 5 层邮编 :200235 E-mail:support@essemi.com 电话 :+86-21-60910333 传真 :+86-21-60914991

More information

版权声明 龙芯 免责声明 据 龙芯 2 Building No.2, Loongson Industrial Park, Zhongguancun Environmental Protection Park (Tel) (Fax)

版权声明 龙芯 免责声明 据 龙芯 2 Building No.2, Loongson Industrial Park, Zhongguancun Environmental Protection Park (Tel) (Fax) 2018 9 29 龙芯 版权声明 龙芯 免责声明 据 龙芯 2 Building No.2, Loongson Industrial Park, Zhongguancun Environmental Protection Park (Tel) 010-62546668 (Fax) 010-62600826 阅读指南 龙芯 1C101 处理器数据手册 龙芯 1C101 修订历史 序号 更新日期 版本号

More information

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe   Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L 1 SH88F516 8051 64K FLASH 1024 EEPROM SH88F516 JET51 S-Lab Keil µ vision ISP51 Keil µ vision ISP51 ISP51 PC RS232 MCU SH88F516 SH88F516 1.1 SH88F516 1.1 SH88F516 SH88Fxx: QFP44, DIP40 RAM Flash E2 ADC

More information

128K Flash EPROM 的程序?\(Bank=64K\) 切?

128K Flash EPROM 的程序?\(Bank=64K\) 切? 应用说明 华邦 8 位单片机 (8051 内核 ) 应用说明 华邦 8 位单片机 (8051 内核 ) ANSC-UC08-0007 目录 - 1. 应用说明 :...4 1.1...4 1.2 相关寄存器介绍...4 1.2.1 串行口控制寄存器 (SCON)... 4 1.2.2 串行数据缓冲寄存器 (SBUF)... 5 1.2.3 串行口控制 1 (SCON1)... 5 1.2.4 串行数据接收缓冲

More information

产品订购信息 型号 HW2000NF HW2000SD HW2000RD 封装 QFN20 SOP16 SSOP16 HW2000CZ Dice( 裸片 ) : 中国上海市龙漕路 299 号天华信息科技园 2A 楼 5 层邮编 : 电话

产品订购信息 型号 HW2000NF HW2000SD HW2000RD 封装 QFN20 SOP16 SSOP16 HW2000CZ Dice( 裸片 ) : 中国上海市龙漕路 299 号天华信息科技园 2A 楼 5 层邮编 : 电话 2.4G Transceiver HW2000 数据手册 产品简介 数据手册 产品规格 上海东软载波微电子有限公司 2015 年 9 月 16 日 V1.3 1/54 产品订购信息 型号 HW2000NF HW2000SD HW2000RD 封装 QFN20 SOP16 SSOP16 HW2000CZ Dice( 裸片 ) : 中国上海市龙漕路 299 号天华信息科技园 2A 楼 5 层邮编 :200235

More information

SPMC75F2413A_EVM_使用说明_V1.2.doc

SPMC75F2413A_EVM_使用说明_V1.2.doc SPMCFA EVM V. - Jan 0, 00 http://www.sunplusmcu.com ................ SPMCFA........... EEPROM.... I/O............ LED.... LED.... RS-........0............ EVM................ 0.....0..... SPMCFA EVM SPMCFA

More information

杭州言曼科技有限公司 CB01 子卡说明文档 ( 对外发布 ) CB01 子卡说明文档 ( 对外发布 ) 版本 (1.0) 目录 1. CB01 单机版和系统版区别 CB01 标配版本和低成本区别 CB01 结构信息

杭州言曼科技有限公司 CB01 子卡说明文档 ( 对外发布 )   CB01 子卡说明文档 ( 对外发布 ) 版本 (1.0) 目录 1. CB01 单机版和系统版区别 CB01 标配版本和低成本区别 CB01 结构信息 CB01 子卡说明文档 ( 对外发布 ) 版本 (1.0) 目录 1. CB01 单机版和系统版区别... 2 2. CB01 标配版本和低成本区别... 2 3. CB01 结构信息... 3 4. CB01 功耗信息... 3 5. LED 显示... 3 6. 按键... 4 7. 拨码开关... 4 8. USB 串口 - 型号 :CP2102... 4 9. 输入时钟... 4 10. I2C

More information

SD3101 带 UART 和 I 2 C 的三差分通道计量 SOC 特点 高精度 ADC,24 位数据输出, 输入增益可选 和 16,3 个差分或 5 个伪差分通道, 可测量信号的真有效值 瞬时值和频率 8 位 RISC 低功耗 MCU,49 条指令,6 级堆栈, 在 2.097MHz

SD3101 带 UART 和 I 2 C 的三差分通道计量 SOC 特点 高精度 ADC,24 位数据输出, 输入增益可选 和 16,3 个差分或 5 个伪差分通道, 可测量信号的真有效值 瞬时值和频率 8 位 RISC 低功耗 MCU,49 条指令,6 级堆栈, 在 2.097MHz 带 UART 和 I C 的三差分通道计量 SOC 特点 高精度 ADC, 位数据输出, 输入增益可选 8 和 6, 个差分或 个伪差分通道, 可测量信号的真有效值 瞬时值和频率 8 位 RISC 低功耗 MCU, 条指令,6 级堆栈, 在.0MHz 工作时钟,MCU 部分在.V 工作电压下电流典型值为 00uA;kHz 时钟待机模式下工作电流为.6uA, 休眠模式电流小于 ua 6k Bytes

More information

<4D F736F F D20C9EEDBDACAD0B6ABB3CFD0C5B5E7D7D3BFC6BCBCD3D0CFDEB9ABCBBEBDE9C9DCBCB0BFE2B4E6>

<4D F736F F D20C9EEDBDACAD0B6ABB3CFD0C5B5E7D7D3BFC6BCBCD3D0CFDEB9ABCBBEBDE9C9DCBCB0BFE2B4E6> 台湾合泰 HOLTEK 型号品牌封装说明 HT7022A-1#-SOT89 HOLTEK SOT89 2.2V N 沟开漏电压监测器 HT7022A-1-TO92 HOLTEK TO92 2.2V N 沟开漏电压监测器 HT7024A-1#-SOT89 HOLTEK SOT89 2.4V N 沟开漏电压监测器 HT7024A-1-TO92 HOLTEK TO92 2.4V N 沟开漏电压监测器 HT7027A-1#-SOT89

More information

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示 实验题目 : 串行接口芯片 8251 实验目的 : 1. 掌握 8251 的工作方式及应用 2. 了解有关串口通讯的知识 串行接口芯片 8251 3. 掌握使用 8251 实现双机通讯的软件编程和电路连接 实验设备 : IA-32 架构的微机系统及应用教学平台两套 实验原理 : 1. 8251 的基本性能 性能 : 8251 是可编程的串行通信接口, 可以管理信号变化范围很大的串行数据通信 有下列基本

More information

第 卷 第 期 年 月 半 导 体 学 报! " # $%&'%' $!&' #% #$1 /#1 $'! / ?/ ?/ / 3 0,?/ ) * +!!! '!,!! -. & ' $! '! 4% %&1)/1(7%&)03 (% )

第 卷 第 期 年 月 半 导 体 学 报!  # $%&'%' $!&' #% #$1 /#1 $'! / ?/ ?/ / 3 0,?/ ) * +!!! '!,!! -. & ' $! '! 4% %&1)/1(7%&)03 (% ) 第 卷 第 期 年 月!"# $%&'%' $!&'#%#$1/#1 $'! /18103 2?/03101?/18103 /3 0,?/0301.13 )*+!!! '!,!! -.&' $!'! 4%%&1)/1(7%&)03(%)%&,%*(1&0)%$-0*,%30)17*1*)0(+1(1+&1*+*),)1; &113(%44(10&.0701&0-&00*/)%;()1%-1+%&0)0*1*)%

More information

33023A.book(31026A_cn.fm)

33023A.book(31026A_cn.fm) 26 第 26 章看门狗定时器与休眠模式 目录 看门狗定时器与休眠模式 本章包括下面一些主要内容 : 26.1 简介... 26-2 26.2 控制寄存器... 26-3 26.3 看门狗定时器 (WDT) 的操作... 26-4 26.4 休眠省电模式... 26-7 26.5 初始化... 26-9 26.6 设计技巧... 26-10 26.7 相关应用笔记... 26-11 26.8 版本历史...

More information

Arduino 1-1 Arduino 1-2 Arduino 1-3 Arduino IDE

Arduino 1-1 Arduino 1-2 Arduino 1-3 Arduino IDE Arduino 1-1 Arduino 1-2 Arduino 1-3 Arduino IDE Arduino 01 02 03 04 05 06 07 08 1-1 Arduino 2005 Massimo Banzi David Cuartielles David Mellis Arduino Arduino Arduino CC Arduino Arduino Arduino Arduino

More information

HW2000 数据手册 2.4G Transceiver HW2000 数据手册 产品简介 数据手册 产品规格 上海东软载波微电子有限公司 2019 年 3 月 14 日 V1.1 1/51 版权所有 上海东软载波微电子有限公司

HW2000 数据手册 2.4G Transceiver HW2000 数据手册 产品简介 数据手册 产品规格 上海东软载波微电子有限公司 2019 年 3 月 14 日 V1.1 1/51 版权所有 上海东软载波微电子有限公司 2.4G Transceiver HW2000 数据手册 产品简介 数据手册 产品规格 上海东软载波微电子有限公司 2019 年 3 月 14 日 V1.1 1/51 产品订购信息 型号 HW2000NF HW2000SD HW2000RD 封装 QFN20 SOP16 SSOP16 HW2000CZ Dice( 裸片 ) : 中国上海市龙漕路 299 号天华信息科技园 2A 楼 5 层邮编 :200235

More information

Microsoft Word - ha0283s_HT32F125x_ClockMonitor&Frequency

Microsoft Word - ha0283s_HT32F125x_ClockMonitor&Frequency HT32F125x 时钟监控和时钟变频 文件编码 :HA0283S 概述 简介本手册介绍了有关 HT32F125x 单片机的时钟故障检测和系统变频 HT32F125x 系列正是支持这些功能的单片机 时钟监控电路可以用来检测外部高速晶振 HSE 的时钟故障 如果 HSE 时钟出现故障, 它将被除能, 内部高速 RC 振荡器 HSI 将自动切换为系统时钟源 更多细节请参考章节 "HSE 时钟故障检测 "

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 STC 单片机比较器原理及实现 主讲 : 何宾 Email:hebin@mail.buct.edu.cn 2016.03 STC 单片机比较器结构 STC15W 系列单片机内置了模拟比较器 对于 STC15W201S STC15W404S, 以及 STC15W1K16S 系列单片机的比较器内部结 构 STC 单片机比较器结构 从图中可以看出, 比较器正端输入 CMP+ 的输入电压来自单片机的 P5.5

More information

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x 115 AVR W.V. Awdrey ATMEL AVR PIC AVR PIC AVR RISC AVR PIC AVR AVR AVR AVR AVR ATtiny15 AVR AVR AVR RAM ROM 121 116 122 ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r31 3 16 X Y Z 6-1 118 7 0

More information

目 录

目 录 1 Quick51...1 1.1 SmartSOPC Quick51...1 1.2 Quick51...1 1.3 Quick51...2 2 Keil C51 Quick51...4 2.1 Keil C51...4 2.2 Keil C51...4 2.3 1 Keil C51...4 2.4 Flash Magic...9 2.5 ISP...9 2.6...10 2.7 Keil C51...12

More information

PCM-3386用户手册.doc

PCM-3386用户手册.doc PCM-3386 BBPC-4x86 10/100M PC/104 (Lanry technology Co. Ltd. Zhuhai) 38 1012836 (Address: Room 1012,Linhai Building,No. 38,west of Shihua Road,Zhuhai City,Guangdong Province,China) (post code)519015 (phone)0756-3366659

More information

控制器 EtherCAT EtherCAT EtherCAT 接下一个电机驱动模块 (X4) 接下一个电机驱动模块 (X5) X11 IN X4 IN X3 OUT X5 IN X6 OUT X2 X1 X4 IN X3 OUT X5 IN X6 OUT X2 X1 SYS STA DC BUS D

控制器 EtherCAT EtherCAT EtherCAT 接下一个电机驱动模块 (X4) 接下一个电机驱动模块 (X5) X11 IN X4 IN X3 OUT X5 IN X6 OUT X2 X1 X4 IN X3 OUT X5 IN X6 OUT X2 X1 SYS STA DC BUS D 控制器 thert thert thert 接下一个电机驱动模块 () 接下一个电机驱动模块 () 电机驱动模块 电机驱动模块 电源模块 接下一个电机驱动模块 () 接下一个电机驱动模块 () 接下一个电机驱动模块 () 接下一个电机驱动模块 () X 0 X 0 4 /RK /RK 注 注 制动电阻阻值 Ω Φ 80: 适用电机驱动模块型号 8-M-XXXX--XX Φ : 适用电机驱动模块型号

More information

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi MICROCHIP EVM Board : APP001 1-1. APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pin 16 I/O Extension Interface 1-2. APP001 Block_A Block_B

More information

MSP430X1XX 系列微控制器具有以下特征 结构框图 超低功耗结构体系 A 额定工作电流在 1MHz V 工作电压 C11X P11X 和 E11X 为 V 从备用模式唤醒为 6 S 丰富的中断能力减少了查询的需要灵活强大的处理能力源操作数有七种寻址模

MSP430X1XX 系列微控制器具有以下特征 结构框图 超低功耗结构体系 A 额定工作电流在 1MHz V 工作电压 C11X P11X 和 E11X 为 V 从备用模式唤醒为 6 S 丰富的中断能力减少了查询的需要灵活强大的处理能力源操作数有七种寻址模 新一代超低功耗 16 位单片机 TI MSP430 系列 美国 TI 公司的 MSP430 系列单片机可以分为以下几个系列 X1XX X3XX X4XX 等等 而且 在不断发展 从存储器角度 又可分为 ROM C 型 OTP P 型 EPROM E 型 Flash Memory F 型 系列的全部成员均为软件兼容 可以方便地在系列各型号间移植 MSP430 系列单片机 的 MCU 设计成适合各种应用的

More information

設計目標規格書

設計目標規格書 ARM Cortex -M0 32 位微控制器 NuMicro M051 DN/DE 系列 产品简介 The information described in this document is the exclusive intellectual property of Nuvoton Technology Corporation and shall not be reproduced without

More information

設計目標規格書

設計目標規格書 ARM Cortex -M0 32 位 微 控 制 器 NuMicro M051 BN 系 列 M052/M054 系 列 规 格 书 - 1 - 版 本 V1.01 目 录 1 概 述 7 2 特 征 8 3 方 块 图 12 4 选 型 表 13 5 管 脚 配 置 14 5.1 QFN 33 pin 14 5.2 LQFP 48 pin 15 5.3 管 脚 描 述 16 6 功 能 描 述

More information

DESCRIPTION

DESCRIPTION 集成 12-BIT ADC 的 8 位 MCU 特点 电源和复位 上电复位电路 (POR) 输入 / 输出 4 级可选的欠压复位电路 (BOR) 18 个 I/O 端口, 其中 P2.2 只能开漏输出 8 级可选低压检测 (LVD) 外围设备 LDO 给内核供电, 支持低功耗掉电模式 7 路键盘输入, 可唤醒 PD 模式 看门狗定时器 (WDT) 4 路外部中断输入, 可唤醒 PD 模式 CPU 12

More information

SD3102 带显示驱动 I 2 C 和按键的单差分通道计量 SOC 特点 高精度 ADC,24 位数据输出, 输入增益可选 和 16, 单差分通道, 可测量信号的真有效值和瞬时值 8 位 RISC 低功耗 MCU,49 条指令,6 级堆栈, 在 2.048MHz 工作时钟,MCU 部分

SD3102 带显示驱动 I 2 C 和按键的单差分通道计量 SOC 特点 高精度 ADC,24 位数据输出, 输入增益可选 和 16, 单差分通道, 可测量信号的真有效值和瞬时值 8 位 RISC 低功耗 MCU,49 条指令,6 级堆栈, 在 2.048MHz 工作时钟,MCU 部分 带显示驱动 I C 和按键的单差分通道计量 SOC 特点 高精度 ADC, 位数据输出, 输入增益可选 8 和 6, 单差分通道, 可测量信号的真有效值和瞬时值 8 位 RISC 低功耗 MCU,9 条指令,6 级堆栈, 在.08MHz 工作时钟,MCU 部分在.V 工作电压下电流典型值为 00uA;kHz 时钟待机模式下工作电流为 7.6uA, 休眠模式电流小于 ua 6k Byts OTP 程序存储器,5

More information

Cerris IROS

Cerris IROS 上海海栎创微电子有限公司 CSM212/216/224 数据手册 具有专用电容检测模块的 8 位单片机 Rev: V1.2 www.hynitron.com CSM212/216/224 是一款具有高性能精简指令集且集成电容触控功能的 EERPOM 型 8051 单片机 此单 片机集成有硬件触控 CDC 模块, 可多次编程的 EEPROM 存储器和常用通讯接口, 为各种触摸按键的应用 提供了一种简单而又有效的实现方法

More information

STM32 for sensorless vector control

STM32 for sensorless vector control STM32 PMSM FOC Shanghai, March,2008 Agenda STM32 FOC Clark Parke Circle limitation Mar 08 1 Agenda / Hall PMSM PLL MC_State_observer_param.h Mar 08 2 Agenda MC_Control_param.h / PI Mar 08 3 Plan STM32

More information

中文手册

中文手册 PCC-3428 PC/104 1. PCC-3428 1.1 PCC-3428 90mm 96mm ST CPU STPC Atlas Atlas CPU 486 DX/DX2 CPU DX2 133MHz Atlas 2D LCD/CRT 100MHz SDRAM 64MBytes PCC-3428 10/100Mbps DOC EIDE USB PC/104 ST STPC Atlas STPC

More information

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC LCD PIC 单片机解决方案 集成 LCD 驱动器模块的 PIC 单片机 www.microchip.com/lcd ,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC,

More information

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica CP Chip Power ARM Cortex-M3 (STM32F) ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplication and hardware

More information

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0 SH79F6431 1. SH79F6431 1T 8051 FLASH SH79F JET51 Keil µ vision JTAG 1.1. SH79F6431 LQFP64 1.2. (Target Board) SH79F6431 1 V 1.0 1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F6431 1 2 1 B. 1(VCC/GND)

More information

MENU SYD8821: Ultra Low Power Bluetooth 4.2 Single Mode SoC General Description Key Features Applications Key Para

MENU SYD8821: Ultra Low Power Bluetooth 4.2 Single Mode SoC General Description Key Features Applications Key Para SYD8821: Ultra Low Power Bluetooth 4.2 Single Mode SoC 1.1 General Description The SYD8821 is a low power and high performance 2.4GHz Bluetooth Low Energy SoC. SYD8821 integrates all Bluetooth smart devices

More information

STC90C51RC-cn.pdf

STC90C51RC-cn.pdf STC90.STC90C5RC/RD+ STC90C5RC/RD+ 805 5.5V - 3.3V 3.6V - 2.0V V 040MHz080MHz48MHz 4K / 8K / 3K / 6K / 32K / 40K/ 48K/ 56K/ 6K 28052RAM I/O35/39P/P2/P3/P4805I/OP0 I/O ISP/ IAP RxD/P3.0, TxD/P3. EEPROM MAX80

More information

《手机维修原理及维修实例详解》目录

《手机维修原理及维修实例详解》目录 1 IC MP3 MP4 2 CPU MP3 MP4 13M 1 LCD 2 13MHz 3 CONTACT SERVICE T SIM MP3 MP4 2 4 FLASH ROM EEPROM RAM SIM CPU CPU RST CPU FLASH Flash CE CS Flash DE WE RST Flash Flash FLASH EEPROM Phone Locked CON-TACTSERVICE

More information

PowerPoint Presentation

PowerPoint Presentation DALI 介绍 Digital Addressable Lighting Interface Mar 2017 DALI DALI: 数字地址化照明接口 (Digital Addressable Lighting Interface) 2 System structure example 3 DALI 2 the Standard IEC-62386 命令 DALI 协议定义双字节指令集, 指令分为标准指令和专用指令两大类

More information

Electrical and Optical Clock Data Recovery Solutions - Data Sheet

Electrical and Optical Clock Data Recovery Solutions - Data Sheet 32 GBd N1076A 32 GBd N1077A / 64 GBd N1076B 64 GBd N1078A / 64 GBd NRZ PAM4 O/E < 100 fs RMS JSA PLL ...3...4...4...5 /...6...8...11 N1076A...12 N1076B DCA-M...13 N1077A...15 N1078A DCA-M...17...21...

More information

FM3318产品手册

FM3318产品手册 FM3316/3313/3312 低功耗 MCU 芯片 简单 2017. 09 FM3316/3313/3312 低功耗 MCU 芯片 1 本资料是为了让用户根据用途选择合适的上海复旦微电子集团股份有限公司 ( 以下简称复旦微电子 ) 的产品而提供的参考资料, 不转让属于复旦微电子或者第三者所有的知识产权以及其他权利的许可 在使用本资料所记载的信息最终做出有关信息和产品是否适用的判断前, 请您务必将所有信息作为一个整体系统来进行评价

More information

DS_MM32P021_Ver1.9.0

DS_MM32P021_Ver1.9.0 产品手册 Datasheet MM32P021 32 位基于 ARM Cortex M0 核心的微控制器 版本 :1.9.0 保留不通知的情况下, 更改相关资料的权利 目录 1. 总介... 5 1.1 概述... 5 1.2 产品特性... 5 2. 规格说明... 6 2.1 器件对比... 6 2.2 功能简述... 6 3. 引脚定义... 7 3.1 引脚配置... 7 3.2 引脚描述...

More information

ESP32-WROOM URL Wi-Fi Wi-Fi Bluetooth SIG 2018

ESP32-WROOM URL Wi-Fi Wi-Fi Bluetooth SIG 2018 ESP32-WROOM-32 2.6 2018 www.espressif.com ESP32-WROOM-32 www.espressif.com/zh-hans/subscribe www.espressif.com/zh-hans/certificates URL Wi-Fi Wi-Fi Bluetooth SIG 2018 1 1 2 3 2.1 3 2.2 3 2.3 Strapping

More information

2 14 PORTC.1 PORTB.3 PORTA.2/T0 GND PORTB.2 PORTA.0 PORTC.3 PORB.0/OSCO PORTB.1/OSCI PORTC.0 PORTC.2 SH69P21 /SOP PORTA

2 14 PORTC.1 PORTB.3 PORTA.2/T0 GND PORTB.2 PORTA.0 PORTC.3 PORB.0/OSCO PORTB.1/OSCI PORTC.0 PORTC.2 SH69P21 /SOP PORTA 1K 4 SH6610C 4 OTP ROM 1K X 16 RAM 88 X 4-24 - 64 2.4V-5.5V - fosc = 30kHz - 4MHz, = 2.4V - 5.5V - fosc = 4MHz - 8MHz, = 4.5V - 5.5V 11 CMOS I/O 4 ( ) 8 / - 0 PORTA.0 ( / / ) - 0 - PORTB ( ) ( ) - 32.768kHz,

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

ESP32-WROOM-32D ESP32-WROOM-32U URL Wi-Fi Wi-Fi Bluetooth SIG 208

ESP32-WROOM-32D ESP32-WROOM-32U     URL Wi-Fi Wi-Fi Bluetooth SIG 208 ESP32-WROOM-32D & ESP32-WROOM-32U.7 208 www.espressif.com ESP32-WROOM-32D ESP32-WROOM-32U www.espressif.com/zh-hans/subscribe www.espressif.com/zh-hans/certificates URL Wi-Fi Wi-Fi Bluetooth SIG 208 2

More information

STM32F05x training in Prague - DAY1

STM32F05x training in Prague - DAY1 Cortex-M0 内核 Cortex-M 系列处理器 跨越传统单片机 8/16/32 位的界限 跨越所用应用的无缝架构 每个产品都针对超低功耗做了优化, 且易于使用 Cortex-M0 Cortex-M3 Cortex-M4 8/16-bit applications 16/32-bit applications 32-bit/DSC applications 程序和开发工具都兼容 Cortex-M

More information

Applications

Applications 概述 FM1905 是 24 点 内存映象和多功能的 LCD 驱动器,FM1905 的软件配置特性使它适用于多种 LCD 应用场合, 包括 LCD 模块和显示子系统 用于连接主控制器和 FM1905 的管脚只有 3 条,FM1905 还有一个节电命令用于降 低系统功耗 特点 工作电压 3.0 ~5.0V 内嵌 256KHz RC 振荡器 可外接 32KHz 晶片或 256KHz 频率源输入 可选 1/2

More information

untitled

untitled 计 IC 规 书 2015/09/23 1 13 1.0 内.. 3.. 3 路 图.. 4 说.. 5.. 6.. 7.. 8 LCD.. 9 应 路图..10 标图..11 流 图..12 订单..13 订..13 2015/09/23 2 13 1.0 TCP310 数 计 路 键 选择 /(/ 切换 ) 单 1.5V 关闭 内 压检测 TCP310A1.30 ± 0.05V TCP310B1.25

More information

DATASHEET SEARCH SITE ==

DATASHEET SEARCH SITE == , STC 89 1280 8/16/32/64k IAP SRAM ISP P0 8 P1 8051 E 2 PROM + P2 IAP STC Data Flash P4.0P4.3 P3 MAX810 I/O P4 A/D UART A / D 3 STC 89 P I I E 2 P 4 S A ROM EMI P P STC 89C51 RC 4K 512 2K STC 89C52 RC

More information

Microsoft Word - CSU8RP3119移动电源方案.doc

Microsoft Word - CSU8RP3119移动电源方案.doc 文件编码 :APN-CSU-P-3119-001 单芯片移动电源方案手册 REV 1.0.0 通讯地址 : 深圳市南山区蛇口南海大道 1079 号花园城数码大厦 A 座 9 楼邮政编码 :518067 公司电话 :+(86 755)86169257 传真 :+(86 755)86169057 公司网站 :www.chipsea.com 第 1 页, 共 7 页 版本历史 历史版本. 修改内容 版本日期

More information

Microsoft Word - Delta Controller ASCII_RTU_SC

Microsoft Word - Delta Controller ASCII_RTU_SC Delta Controller ASCII/RTU ( 适用台达变频器 伺服驱动器 PLC 温度控制器 ) 人机默认值通讯速率 :9600, 7, None, 2 (ASCII); 9600, 8, None, 2 (RTU) 控制器站号 :1 控制区 / 状态区 :None/None 控制器接线的说明 Delta Servo a. RS-232(DOP-A/AE/AS, DOP-B 系列适用 )

More information

16位A/D转换器

16位A/D转换器 16 位 A/D 转换器 anyh 是双竞公司新推出的 16 位 A/D 转换器, 具有两个全差分输入通道, 可用于测量低频模拟信号 这种器件带有增益可编程放大器, 可通过软件编程来直接测量传感器输出的各种微小信号 具有分辨率高 动态范围广 自校准等特点, 因而非常适合于工业控制 仪表测量等领域 16 位 A/D 转换器 1. 概述 是双竞公司新推出的 16 位 A/D 转换器, 具有两个全差分输入通道,

More information

ESP3-WROVER URL Wi-Fi Wi-Fi Bluetooth SIG 08

ESP3-WROVER     URL Wi-Fi Wi-Fi Bluetooth SIG 08 ESP3-WROVER.0 08 www.espressif.com ESP3-WROVER www.espressif.com/zh-hans/subscribe www.espressif.com/zh-hans/certificates URL Wi-Fi Wi-Fi Bluetooth SIG 08 3. 3. 4.3 Strapping 5 3 7 3. CPU 7 3. Flash SRAM

More information

Microsoft Word - FM17522_ps_chs - new.doc

Microsoft Word - FM17522_ps_chs - new.doc FM17522 通用 非接触读写器芯片 2016.10 FM17522 非接触读写器芯片 版本 1.4 1 本资料是为了让用户根据用途选择合适的上海复旦微电子集团股份有限公司 ( 以下简称复旦微电子 ) 的产品而提供的参考资料, 不转让属于复旦微电子或者第三者所有的知识产权以及其他权利的许可 在使用本资料所记载的信息最终做出有关信息和产品是否适用的判断前, 请您务必将所有信息作为一个整体系统来进行评价

More information

HT46R47 f SYS =4MHz 3.3~5.5V f SYS =8MHz 4.5~5.5V 13 位双向输入 / 输出口 1 个与输入 / 输出共用引脚的外部中断输入 8 位带溢出中断的可编程定时 / 计数器 具有 7 级预分频器 石英晶体或 RC 振荡器 位的程序存储器 P

HT46R47 f SYS =4MHz 3.3~5.5V f SYS =8MHz 4.5~5.5V 13 位双向输入 / 输出口 1 个与输入 / 输出共用引脚的外部中断输入 8 位带溢出中断的可编程定时 / 计数器 具有 7 级预分频器 石英晶体或 RC 振荡器 位的程序存储器 P HT46R/47R/48R/49R 系列 选型指南 HT46R22 f SYS =4MHz 3.3~5.5V f SYS =8MHz 4.5~5.5V 19 位双向输入 / 输出口 1 个与输入 / 输出口线共用的外部输入 16 位具有 7 级预分频带溢出中断的可编程定时 / 计数器 内置石英晶体或 RC 振荡器 2048 14 位的程序存储器 PROM 64 8 位的数据存储器 RAM 支持发声的

More information

<463A5C CC9E4C6B55CB7A2C9E45CCBB5C3F7CAE95C D E3029CBB5C3F7CAE92E777073>

<463A5C CC9E4C6B55CB7A2C9E45CCBB5C3F7CAE95C D E3029CBB5C3F7CAE92E777073> 1. 概述 HS2303-PT 产品说明书 Ver 1.0 HS2303-PT 是一款低成本 高速度 高抗干扰, 带射频传输的 8 位 CMOS 制造的单片机 工作电压在 2.0~3.6V 之间, 电池供电时, 能保证绝大多数电池在电量完全耗尽前仍能正常使用 ; 正常工作温度范围在 -20 ~70 之间 单片机基于 RISC 架构, 仅有 35 条指令 除程序跳转需要两个周期外, 其余所有的指令都是单周期指令

More information

ETA104 数据采集模块数据手册

ETA104 数据采集模块数据手册 Emtronix ETA104 数据采集模块数据手册 1. 概述 1.1 ETA104 介绍 ETA104 模拟数据采集模块 ( 下文简称 :ETA104 模块 ) 是基于英创公司 SBC840 工控应用底板 符合 DM5028 标准应用扩展模块 ETA104 模块上的模数转换功能, 采用 ADS7871 模拟信号转换芯片, 占用 ESMARC 工控主板的 SPI 总线进行通讯, 最高可实现 48K

More information

, , STC11F01-35C-SOP16 RMB 1.99 STC10F04-35C-LQFP44 R MB 2. 99 , STC12C5A08AD-35C-LQFP44,RMB 7.5 , STC12C5201AD-SOP16,RMB 2.49 STC12C5202AD-LQFP32,RMB 3.99 0.1uF 0.1uF 0.1uF STC 89 E 2 PROM Data Flash

More information

芯片主要特性:

芯片主要特性: 超低功耗高性能 2.4GHz GFSK 无线收发芯片 主要特性 工作在 2.4GHz ISM 频段 调制方式 :GFSK/FSK 数据速率 :2Mbps/1Mbps/250Kbps 超低关断功耗 :0.7uA 超低待机功耗 :15uA 快速启动时间 : 130uS 内部集成高 PSRR LDO 宽电源电压范围 :1.9-3.6V 宽数字 I/O 电压范围 :1.9-5.25V 低成本晶振 :16MHz±60ppm

More information

×××芯片用户手册

×××芯片用户手册 用户手册 通讯地址 : 深圳市南山区蛇口南海大海 1079 号花园城数码大厦 A 座 9 楼邮政编码 :518057 公司电话 :+(86 755)86169257 传真 :+(86 755)86169057 公司网站 :www.chipsea.com 第 1 页, 共 13 页 历史修改记录 历史修改记录 时间 记录 版本号 2012-12-19 更换新 LOGO, 重新发布 1.0 第 2 页,

More information

单片机应用编程技巧(专家:邓宏杰)

单片机应用编程技巧(专家:邓宏杰) 编 者 注 : 本 文 件 为 电 子 工 程 专 辑 网 站 编 辑 部 原 创, 电 子 工 程 专 辑 享 有 本 文 章 完 全 著 作 权, 如 需 转 载 该 文 章, 必 须 经 过 电 子 工 程 专 辑 网 站 编 辑 部 同 意 联 系 电 子 工 程 专 辑 网 站 编 辑 部, 请 发 信 至 eetcol@globalsources.com 单 片 机 应 用 编 程 技

More information

EFM8BB Microcontroller Family Highest Performance Value MCUs

EFM8BB Microcontroller Family  Highest Performance Value MCUs 独特解决方案满足低功耗应用 Alan Pang 2016-Aug-24 为什么低功耗很重要? 环保 更好的用户体验 节约成本 在某些应用更换电池不切实际 3 低功耗要求 简单的电池供电设备 加密设备 穿戴装置 4 总线供电的网络设备 工业传感器 / 监控器 EFM32 Pearl & Jade Gecko 处理器和内存 Cortex-M4 with FPU or Cortex-M3 Up to 40

More information

Geniitek -MV10 振动传感器模块 特性 3 轴加速度振动信号检测 加速度量程可选 (±2g ±4g ±8g ±16g) 加速度阈值报警 采样率高达 5 khz UART 通讯接口 超小尺寸 (10mm*10mm*2mm) 低功耗 待机模式

Geniitek -MV10 振动传感器模块 特性 3 轴加速度振动信号检测 加速度量程可选 (±2g ±4g ±8g ±16g) 加速度阈值报警 采样率高达 5 khz UART 通讯接口 超小尺寸 (10mm*10mm*2mm) 低功耗  待机模式 Geniitek -MV10 振动传感器模块 特性 3 轴加速度振动信号检测 加速度量程可选 (±2g ±4g ±8g ±16g) 加速度阈值报警 采样率高达 5 khz UART 通讯接口 超小尺寸 (10mm*10mm*2mm) 低功耗 (

More information

CM ZT1

CM ZT1 Spansion 模拟和微控制器产品 本文档包含有关 Spansion 模拟和微控制器产品的信息 尽管本文档内有原来开发该产品规格的公司名称 富士通 或 Fujitsu, 该产品将由 Spansion 提供给现有客户和新客户 规格的延续本文档内容并不因产品供应商的改变而有任何修改 文档内容的其他更新, 均为改善文档而进行, 并已记录在文档更改摘要 日后如有需要更改文档, 其更改内容也将记录在文档更改摘要

More information

2 12

2 12 SHENZHEN BRILLIANT CRYSTAL TECHNOLOGIC CO.,LTD. The specification for the following models Graphic LCM serial communication control board CB001 PROPOSED BY APPROVED Design Approved TEL:+86-755-29995238

More information

Microsoft Word - mcu-an z-10.doc

Microsoft Word - mcu-an z-10.doc 富士通微电子 ( 上海 ) 有限公司应用笔记 MCU-AN-500007-Z-10 F²MC-8FX 家族 8 位微控制器 MB95200H/210H 系列 外部中断 应用笔记 变更履历 变更履历 日期作者修正记录 2008-03-20 Levi Zhang V1.0, 第一版 本手册共 22 页 1. 本文档记载的产品信息及规格说明如有变动, 恕不预先通知 如需最新产品信息和 / 或规格说明, 联系富士通销售代表或富士通授权分销商

More information

, STC11F01-35C-SOP16 RMB 1.99 STC10F04-35C-LQFP44 R MB 2. 99

, STC11F01-35C-SOP16 RMB 1.99 STC10F04-35C-LQFP44 R MB 2. 99 , STC11F01-35C-SOP16 RMB 1.99 STC10F04-35C-LQFP44 R MB 2. 99 , STC12C5A08AD-35C-LQFP44,RMB 7.5 , STC12C5201AD-SOP16,RMB 2.49 STC12C5202AD-LQFP32,RMB 3.99 , , 0.1uF STC 89LE58 RD+ 32K 1280 16K+ 0.1uF

More information

untitled

untitled 计 IC 规 书 2017/06/19 1 13 1.0 内.. 3.. 3 路 图.. 4 说.. 5.. 6.. 7.. 8 LCD.. 9 应 路图..10 标图..11 流 图..12 订单..13 订..13 2017/06/19 2 13 1.0 TCP316 数 计 路 键 选择 /(/ 切换 ) 单 1.5V 关闭 内 压检测 TCP316A1.30 ± 0.05V TCP316B1.25

More information

Microsoft Word - mcu-an z-11.doc

Microsoft Word - mcu-an z-11.doc 富士通微电子 ( 上海 ) 有限公司应用笔记 MCU-AN-500007-Z-11 F²MC-8FX 家族 8 位微控制器 MB95200H/210H 系列 外部中断 应用笔记 外部中断 V1.1 变更履历 变更履历 日期作者修正记录 2008-03-20 Levi Zhang V1.0, 第一版 2008-07-18 Levi.Zhang V1.1, 在第 6 章更多信息中添加 URL; 更新了一些样本程式

More information

SPHE8202R Design Guide Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provi

SPHE8202R Design Guide Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provi SPHE8202R Design Guide V2.0 JUN, 2007 19, Innovation First Road Science Park Hsin-Chu Taiwan 300 R.O.C. Tel: 886-3-578-6005 Fax: 886-3-578-4418 Web: www.sunplus.com SPHE8202R Design Guide Important Notice

More information

DK 通道带自校正功能的容性触摸感应器 概述 DK712 触摸感应器可以用平均电容值作为基准检测感应点的电容变化 它可以通过任何非导电介质来感应电容变化 这样感应模块就可以很好的跟水和灰尘隔离 DK712 有更强的抗干扰性和更好的一致性 特点 带自校正功能的 12 通道感应芯片 可以通过

DK 通道带自校正功能的容性触摸感应器 概述 DK712 触摸感应器可以用平均电容值作为基准检测感应点的电容变化 它可以通过任何非导电介质来感应电容变化 这样感应模块就可以很好的跟水和灰尘隔离 DK712 有更强的抗干扰性和更好的一致性 特点 带自校正功能的 12 通道感应芯片 可以通过 概述 DK712 触摸感应器可以用平均电容值作为基准检测感应点的电容变化 它可以通过任何非导电介质来感应电容变化 这样感应模块就可以很好的跟水和灰尘隔离 DK712 有更强的抗干扰性和更好的一致性 特点 带自校正功能的 12 通道感应芯片 可以通过任何非导电介质感应 按键触摸 通过一个外部电容调整灵敏度 感应按键的 PCB 走线长度不同不会导致灵敏度不同 四位 BCD 码输出 I2C 接口 工作电压范围

More information

untitled

untitled FBC0409 V1.0 1.0 05.06.22 SIA 2005 SIA SIA SIA SIA SIA 114 86-24-23970133 HTTP://WWW.SIA.CN YANG@SIA.CN 2 ...5...5...6 PIN...6...7 1 CPU...8 2...8 4...8 5 DMA...9 7....9 8...9 9...10 A...10 B...10...11.

More information

MPW 项目简介

MPW 项目简介 概述 TM1621 是内存映象和多功能的 LCD 驱动器,TM1621 的软件配置特性使它适用于多种 LCD 应用场合, 包括 LCD 模块和显示子系统 用于连接主控制器和 TM1621 的管脚只有 4 或 5 条,TM1621 还有一个节电命令用于降低系统功耗 功能特性 工作电压 2.4~ 5.2V 内嵌 256KHz RC 振荡器 可外接 32KHz 晶片或 256KHz 频率源输入 可选 1/2

More information

电子技术基础 ( 第 版 ) 3. 图解单相桥式整流电路 ( 图 4-1-3) 电路名称电路原理图波形图 整流电路的工作原理 1. 单相半波整流电路 u 1 u u sin t a t 1 u 0 A B VD I A VD R B

电子技术基础 ( 第 版 ) 3. 图解单相桥式整流电路 ( 图 4-1-3) 电路名称电路原理图波形图 整流电路的工作原理 1. 单相半波整流电路 u 1 u u sin t a t 1 u 0 A B VD I A VD R B 直流稳压电源 第 4 章 4.1 整流电路及其应用 学习目标 1. 熟悉单相整流电路的组成, 了解整流电路的工作原理. 掌握单相整流电路的输出电压和电流的计算方法, 并能通过示波器观察整流电路输出电压的波形 3. 能从实际电路中识读整流电路, 通过估算, 能合理选用整流元器件 4.1.1 认识整流电路 1. 图解单相半波整流电路 ( 图 4-1-1) 电路名称电路原理图波形图 4-1-1. 图解单相全波整流电路

More information

adsd

adsd HS8108 电脑开关电源控制器 概述 : HS8108 是 PWM 开关电源控制器, 主要用于台式 PC( 个人电脑 ) 的开关电源部分 HS8108 能够提供开关电源所有的控制和保护功能 : PWM 脉宽调制及推挽输出, 具有过压 欠压 过流 过功耗 远程控制 AC 掉电保护等功能, 两个内嵌的精密 431 调节器用作稳定 5V 辅助电源和 33V 输出电压, 内嵌的精密振荡器可以保证各种延时的精确性

More information

<4D F736F F D20CBABC1FA DA3A8BAACB6C1D0B44D31A3A9C4A3BFE9D7CAC1CF B0E62E646F63>

<4D F736F F D20CBABC1FA DA3A8BAACB6C1D0B44D31A3A9C4A3BFE9D7CAC1CF B0E62E646F63> SL-1356MOD-SU 射 频 卡 读 写 模 块 使 用 说 明 一. 概 述 双 龙 公 司 针 对 支 付 系 统 公 共 交 通 门 禁 锁 具 设 备 管 理 二 代 身 份 证 等 行 业 推 出 SL-1356MOD-SU 射 频 卡 读 写 模 块 该 模 块 全 面 支 持 ISO14443 A/B -1-2 -3-4 标 准, 适 用 于 读 写 各 种 符 合 ISO14443

More information