CH578 WCH | Alldatasheet
Document overview
- Manufacturer or author: Provided By ALLDATASHEET.COM(FREE DATASHEET DOWNLOAD SITE)
- PDF pages: 98
Technical content
CH578、CH577 数据手册 V1.0 概述 CH578 是集成BLE 无线通讯的ARM 内核32 位微控制器。片上集成低功耗蓝牙BLE 通讯模块、以 太网控制器及收发器、全速USB 主机和设备控制器及收发器、段式LCD 驱动模块、ADC、触摸按键检 测模块、RTC等丰富的外设资源。 CH577 是CH578 的简化版,用户应用程序存储器FlashROM 仅128KB,去掉了以太网、USB、段式 LCD、ADC等模拟模块,仅保留了数字模块,其它与CH578相同,可直接参考CH578手册和资料。 芯片 型号 用户闪存 +引导闪存 +数据闪存 RAM RTC 时 钟 定 时 器 捕 捉 PWM 串 口 SPI 主 从 BLE 蓝 牙 ADC 及 TS 电容 触摸 按键 PLL 倍 频 以 太 网 USB 主机 设备 段 式 LCD LED 接 口 通 用 I/O 封装 形式 CH578M 160K+4K+2K 14K +2K √ 3 组 3 3+8 2 CH577F 128K+4K+2K 2 2 0 0 × × × × × 20 QFN28 功能(CH578) l 内核Core: - 32位ARM Cortex-M0内核 - 最高40MHz系统主频,最低32KHz主频 l 167K字节非易失存储FlashROM: - 160KB用户应用程序存储区CodeFlash - 2KB用户非易失数据存储区DataFlash - 4KB系统引导程序存储区BootLoader - 1KB系统非易失配置信息存储区InfoFlash - 支持ICP、ISP和IAP,支持OTA无线升级 l 16K字节易失数据存储SRAM: - 14KB双电源供电的睡眠保持存储区RAM14K - 2KB双电源供电的睡眠保持存储区RAM2K l 电源管理和低功耗: - 支持3.3V和2.5V电源,范围2.1V~3.6V - 内置DC-DC转换,0dBm发送功率时电流6mA - 暂停模式Halt:420uA - 睡眠模式Sleep:0.6uA~2.0uA多档 - 下电模式Shutdown:0.2uA~1.3uA多档 - 电池电压低压监控 l 安全特性:AES-128加解密,芯片唯一ID l 蓝牙BLE: - 集成2.4GHz RF收发器和基带及链路控制 - 单端RF接口,无需外部电感,简化板级设计 - 接收灵敏度-93dBm,可编程+3dBm发送功率 - 符合Bluetooth Low Energy 4.2规范 - 在0dBm发送功率时无线通讯距离约100米 - 提供优化的协议栈和应用层API,支持组网 l 以太网Ethernet: - 内置MAC控制器,支持帧过滤,支持DMA - 集成10Mbps收发器PHY,内置50Ω匹配电阻 - 通讯距离200米,支持自动协商,支持节能 l 通用串行总线USB: - 内置USB控制器和DMA,支持64字节数据包 - 集成USB 2.0全速收发器PHY,无需外围 - 支持全/低速的Host主机和Device设备模式 l 实时时钟RTC:支持定时和触发两种模式 l 段式LCD:支持96点(24×4)LCD面板 l 模数转换ADC: - 12位模数转换器,支持差分和单端输入 - 6 路外部模拟信号通道和2 路内部信号 l 触摸按键检测模块TouchKey:6路通道 l 定时器Timer和脉宽调制PWM: - 3 组26位定时器,16MHz主频定时可达4.2S - 3 路捕捉/采样,支持上升沿/下降沿/双边沿 - 3 路26位PWM输出,8路8位PWM输出 l 异步串口UART: - 2 组独立UART,兼容16C550,内置8级FIFO - 23位计数器,最高通讯波特率可达5Mbps - UART0支持Modem,支持硬件自动流控 - UART0支持多机通讯时从机地址自动匹配 l 串行外设接口SPI: - 支持Master和Slave模式 - 内置FIFO,支持DMA - SCK串行时钟频率可达系统主频的一半 l LED点阵屏接口:支持1/2/4路数据线 l 时钟:内置32MHz和32KHz时钟,内置PLL l 温度转感器TS l 通用输入输出端口GPIO: - 40个GPIO,其中4 个支持5V信号输入 - 32个中断输入,32个唤醒输入 l CH578M封装形式:QFN48_5X5 l CH577F封装形式:QFN28_4X4
PB12/SCS_ 11 PB11/TMR2_ 12 PB7/TXD0 14 PB15/MISO_ 8 PA14/MOSI/TXD0_26 VSW4 PA13/SCK027 PA15/MISO/RXD0_25 PB14/MOSI_ 9 PA524 PA423 X32MI 19VINTA 20 PB23/RST# 16 PB10/TMR1_ 13 PA10/X32KI/TMR12 VDCID3 VIO33/VBAT5 PA8/RXD16 PB13/SCK0_ 10 PB22 17 GND0 ANT 21 X32MO 18 VDCIA22 PA11/X32KO/TMR21 PA12/SCS28 PB4/RXD0 15 CH577F PB9/TXD1_7 PB8/RXD1_8 PB16/TIO10 PA9/TXD16 PB12/ET-/SCS_ 14PB11/UD+/TMR2_ 15 PB7/TXD0 17 PB5/DTR 19 PB1/DSR/PWM7 23 PB15/ER+/MISO_ 11 PA14/MOSI/TXD0_/UBUS/AIN444 VSW2 PA13/SCK0/AIN345 PA15/MISO/RXD0_/AIN543 PB14/ER-/MOSI_/PWM10 12 PA5/UCC2/AIN137 PA4/LEDC/UCC1/AIN036 X32MI 32VINTA 33 PB23/RST#/PWM11 25 PB0/CTS/PWM6 24 PA6/PWM438 PB10/UD-/TMR1_ 16 PA10/X32KI/TMR148 VDCID1 VIO33/VBAT3 PB17/TCK9 PA8/RXD15 PA7/PWM54 PB13/ET+/SCK0_ 13 PB22 26PB21 27PB20 28PB19/TMR0_ 29PB18 30 GND0 ANT 34 X32MO 31 VDCIA35 PA0/LED039 PA1/LED140 PA11/X32KO/TMR247 PA12/SCS/AIN246 PA3/TMR0/LED342 PA2/LED241 PB2/RI/PWM8 22 PB3/DCD/PWM9 21 PB4/RXD0 20 PB6/RTS 18 CH578M 第1 章 引脚信息 1.1 引脚排列 图1-1 CH578M(QFN48_5X5)和CH577F(QFN28_4X4)封装引脚排列 1.2 引脚描述
1.2.1 CH578M 的引脚说明
引脚号 引脚 名称 引脚 类型 复用功能 在前优先 功能描述
0 GND 电源
- 公共接地端,电压0V 参考点。
1 VDCID
电源 - 内部数字电路LDO 调整器的电源输入,需外接退耦电容。 启用DC-DC 时建议2.2uF,不启用时建议不小于0.1uF。
2 VSW 电源
- 内部DC-DC 开关输出,启用DC-DC 时必须贴近引脚串接 22uH 电感连接到VDCID,不启用DC-DC 时可以直连VDCID。
3 VIO33
电源 VBAT I/O 和DC-DC 或电池电源输入,需贴近引脚外接退耦电容。 启用DC-DC 时建议2.2uF,不启用DC-DC 时建议不小于1uF。
4 PA7 I/O PWM5 PA7:通用双向数字I/0 引脚。
PWM5:脉宽调制输出通道5。
5 PA8 I/O RXD1 PA8:通用双向数字I/0 引脚。
RXD1:UART1 串行数据输入。
6 PA9 I/O TXD1 PA9:通用双向数字I/0 引脚。
TXD1:UART1 串行数据输出。
7 PB9 I/O/A
TXD1_ /SEG9 PB9:通用双向数字I/0 引脚。 TXD1_:UART1 的TXD1 引脚映射。
8 PB8 I/O/A
RXD1_ /SEG8 PB8:通用双向数字I/0 引脚。 RXD1_:UART1 的RXD1 引脚映射。
9 PB17 I/O/A TCK
/SEG17 PB17:通用双向数字I/0 引脚。 TCK:两线仿真调试接口的串行时钟输入。
10 PB16 I/O/A TIO
/SEG16 PB16:通用双向数字I/0 引脚。 TIO:两线仿真调试接口的串行数据输入输出,内置上拉。
11 PB15 I/O/A
/5VT ER+ /MISO_ /SEG15 PB15:通用双向数字I/0 引脚。 ER+:以太网接收RX+信号。 MISO_:SPI0 的MISO 引脚映射。
12 PB14 I/O/A
/5VT ER- /MOSI_ /PWM10 /SEG14 PB14:通用双向数字I/0 引脚。 ER-:以太网接收RX-信号。 MOSI_:SPI0 的MOSI 引脚映射。 PWM10:脉宽调制输出通道10。
13 PB13 I/O/A
/5VT ET+ /SCK0_ /SEG13 PB13:通用双向数字I/0 引脚。 ET+:以太网发送TX+信号。 SCK0_:SPI0 的SCK 引脚映射。
14 PB12 I/O/A
/5VT ET- /SCS_ /SEG12 PB12:通用双向数字I/0 引脚。 ET-:以太网发送TX-信号。 SCS_:SPI0 的SCS 引脚映射。
15 PB11 I/O/A
/TMR2_ /SEG11 PB11:通用双向数字I/0 引脚。 UD+:USB 总线的D+数据线。 TMR2_:定时器2 的TMR2 引脚映射。
16 PB10 I/O/A
/TMR1_ /SEG10 PB10:通用双向数字I/0 引脚。 UD-:USB 总线的D-数据线。 TMR1_:定时器1 的TMR1 引脚映射。
17 PB7 I/O/A TXD0
/SEG7 PB7:通用双向数字I/0 引脚。 TXD0:UART0 串行数据输出。
18 PB6 I/O/A RTS
/SEG6 PB6:通用双向数字I/0 引脚。 RTS:UART0 的MODEM 输出信号,请求发送。
19 PB5 I/O/A DTR
/SEG5 PB5:通用双向数字I/0 引脚。 DTR:UART0 的MODEM 输出信号,数据终端就绪。
20 PB4 I/O/A RXD0
/SEG4 PB4:通用双向数字I/0 引脚。 RXD0:UART0 串行数据输入。
21 PB3 I/O/A
/PWM9 /SEG3 PB3:通用双向数字I/0 引脚。 DCD:UART0 的MODEM 输入信号,载波检测。 PWM9:脉宽调制输出通道9。
22 PB2 I/O/A
/PWM8 /SEG2 PB2:通用双向数字I/0 引脚。 RI:UART0 的MODEM 输入信号,振铃指示。 PWM8:脉宽调制输出通道8。
23 PB1 I/O/A
/PWM7 /SEG1 PB1:通用双向数字I/0 引脚。 DSR:UART0 的MODEM 输入信号,数据装置就绪。 PWM7:脉宽调制输出通道7。
24 PB0 I/O/A
/PWM6 /SEG0 PB0:通用双向数字I/0 引脚。 CTS:UART0 的MODEM 输入信号,清除发送。 PWM6:脉宽调制输出通道6。
25 PB23 I/O/A
RST# /PWM11 /SEG23 PB23:通用双向数字I/0 引脚。 RST#:外部复位输入,低电平有效,内置上拉电阻。 PWM11:脉宽调制输出通道11。
26 PB22 I/O/A SEG22 PB22:通用双向数字I/0 引脚。
27 PB21 I/O/A SEG21 PB21:通用双向数字I/0 引脚。
28 PB20 I/O/A SEG20 PB20:通用双向数字I/0 引脚。
29 PB19 I/O/A TMR0_
/SEG19 PB19:通用双向数字I/0 引脚。 TMR0_:定时器0 的TMR0 引脚映射。
30 PB18 I/O/A SEG18 PB18:通用双向数字I/0 引脚。
31 X32MO I/A - 高频振荡器HSE 的反相输出端,外接32MHz 晶体的一端。
32 X32MI A - 高频振荡器HSE 的输入端,外接32MHz 晶体的另一端。
33 VINTA 电源 - 内部模拟电路的电源节点,需贴近引脚外接2.2uF 退耦电容。
34 ANT A - RF 射频信号输入输出,建议直连天线。
35 VDCIA 电源 - 内部模拟电路LDO 调整器的电源输入,需外接退耦电容。
建议不小于0.1uF,建议通过磁珠或直连VDCID。
36 PA4 I/O/A
/UCC1 /AIN0 PA4:通用双向数字I/0 引脚。 LEDC:LED 屏接口串行时钟输出。 UCC1:USB type-C 双向配置通道1。 AIN0:ADC 模拟信号输入通道0。
37 PA5 I/O/A UCC2
/AIN1 PA5:通用双向数字I/0 引脚。 UCC2:USB type-C 双向配置通道2。 AIN1:ADC 模拟信号输入通道1。
38 PA6 I/O PWM4 PA6:通用双向数字I/0 引脚。
PWM4:脉宽调制输出通道4。
39 PA0 I/O/A LED0
/COM0 PA0:通用双向数字I/0 引脚。 LED0:LED 屏接口串行数据输出0。
40 PA1 I/O/A LED1
/COM1 PA1:通用双向数字I/0 引脚。 LED1:LED 屏接口串行数据输出1。
41 PA2 I/O/A LED2
/COM2 PA2:通用双向数字I/0 引脚。 LED2:LED 屏接口串行数据输出2。
42 PA3 I/O/A
/LED3 /COM3 PA3:通用双向数字I/0 引脚。 TMR0:定时器0 的捕捉输入0 和PWM 输出通道0。 LED3:LED 屏接口串行数据输出3。
43 PA15 I/O/A
/RXD0_ /AIN5 PA15:通用双向数字I/0 引脚。 MISO:SPI0 串行数据引脚,主机输入/从机输出。 RXD0_:UART0 的RXD0 引脚映射。 AIN5:ADC 模拟信号输入通道5。
44 PA14 I/O/A
/TXD0_ /UBUS /AIN4 PA14:通用双向数字I/0 引脚。 MOSI:SPI0 串行数据引脚,主机输出/从机输入。 TXD0_:UART0 的TXD0 引脚映射。 UBUS:USB type-C 总线电压检测输入。 AIN4:ADC 模拟信号输入通道4。
45 PA13 I/O/A SCK0
/AIN3 PA13:通用双向数字I/0 引脚。 SCK0:SPI0 串行时钟引脚,主机输出/从机输入。 AIN3:ADC 模拟信号输入通道3。
46 PA12 I/O/A SCS
/AIN2 PA12:通用双向数字I/0 引脚。 SCS:SPI0 从机模式下的片选输入,低电平有效。 AIN2:ADC 模拟信号输入通道2。
47 PA11 I/O/A X32KO
/TMR2 PA11:通用双向数字I/0 引脚。 X32KO:低频振荡器的反相输出端,外接32KHz 晶体的一端。 TMR2:定时器2 的捕捉输入2 和PWM 输出通道2。
48 PA10 I/O/A X32KI
/TMR1 PA10:通用双向数字I/0 引脚。 X32KI:低频振荡器的输入端,外接32KHz 晶体的另一端。 TMR1:定时器1 的捕捉输入1 和PWM 输出通道1。
CH578M复用于段式LCD驱动的引脚说明 引脚名称 类型 复用功能 功能描述 PA0~PA3 A COM0~COM3 驱动段式LCD 的各个公共端,根据需要选用部分或全部。 PB0~PB23 A SEG0~SEG23 驱动段式LCD 的各个段,根据需要选用部分或全部。
1.2.2 CH577F 的引脚说明
引脚号 引脚 名称 引脚 类型 复用功能 在前优先 功能描述
0 GND 电源 - 公共接地端,电压0V 参考点。
1 PA11 I/O/A X32KO
/TMR2 PA11:通用双向数字I/0 引脚。 X32KO:低频振荡器的反相输出端,外接32KHz 晶体的一端。 TMR2:定时器2 的捕捉输入2 和PWM 输出通道2。
2 PA10 I/O/A X32KI
/TMR1 PA10:通用双向数字I/0 引脚。 X32KI:低频振荡器的输入端,外接32KHz 晶体的另一端。 TMR1:定时器1 的捕捉输入1 和PWM 输出通道1。
3 VDCID 电源 - 内部数字电路LDO 调整器的电源输入,需外接退耦电容。
启用DC-DC 时建议2.2uF,不启用时建议不小于0.1uF。
4 VSW 电源 - 内部DC-DC 开关输出,启用DC-DC 时必须贴近引脚串接
22uH 电感连接到VDCID,不启用DC-DC 时可以直连VDCID。
5 VIO33 电源 VBAT I/O 和DC-DC 或电池电源输入,需贴近引脚外接退耦电容。
启用DC-DC 时建议2.2uF,不启用DC-DC 时建议不小于1uF。
6 PA8 I/O RXD1 PA8:通用双向数字I/0 引脚。
RXD1:UART1 串行数据输入。
7 PA9 I/O TXD1 PA9:通用双向数字I/0 引脚。
TXD1:UART1 串行数据输出。
8 PB15 I/O
/5VT MISO_ PB15:通用双向数字I/0 引脚。 MISO_:SPI0 的MISO 引脚映射。
9 PB14 I/O
/5VT MOSI_ PB14:通用双向数字I/0 引脚。 MOSI_:SPI0 的MOSI 引脚映射。
10 PB13 I/O
/5VT SCK0_ PB13:通用双向数字I/0 引脚。 SCK0_:SPI0 的SCK 引脚映射。
11 PB12 I/O
/5VT SCS_ PB12:通用双向数字I/0 引脚。 SCS_:SPI0 的SCS 引脚映射。
12 PB11 I/O TMR2_ PB11:通用双向数字I/0 引脚。
TMR2_:定时器2 的TMR2 引脚映射。
13 PB10 I/O TMR1_ PB10:通用双向数字I/0 引脚。
TMR1_:定时器1 的TMR1 引脚映射。
14 PB7 I/O TXD0 PB7:通用双向数字I/0 引脚。
TXD0:UART0 串行数据输出。
15 PB4 I/O RXD0 PB4:通用双向数字I/0 引脚。
RXD0:UART0 串行数据输入。
16 PB23 I/O RST# PB23:通用双向数字I/0 引脚。
RST#:外部复位输入,低电平有效,内置上拉电阻。
17 PB22 I/O - PB22:通用双向数字I/0 引脚。
18 X32MO I/A - 高频振荡器HSE 的反相输出端,外接32MHz 晶体的一端。
19 X32MI A - 高频振荡器HSE 的输入端,外接32MHz 晶体的另一端。
20 VINTA 电源 - 内部模拟电路的电源节点,需贴近引脚外接2.2uF 退耦电容。
21 ANT A - RF 射频信号输入输出,建议直连天线。
22 VDCIA 电源 - 内部模拟电路LDO 调整器的电源输入,需外接退耦电容。
建议不小于0.1uF,建议通过磁珠或直连VDCID。
23 PA4 I/O - PA4:通用双向数字I/0 引脚。
24 PA5 I/O - PA5:通用双向数字I/0 引脚。
25 PA15 I/O MISO
/RXD0_ PA15:通用双向数字I/0 引脚。 MISO:SPI0 串行数据引脚,主机输入/从机输出。 RXD0_:UART0 的RXD0 引脚映射。
26 PA14 I/O MOSI
/TXD0_ PA14:通用双向数字I/0 引脚。 MOSI:SPI0 串行数据引脚,主机输出/从机输入。 TXD0_:UART0 的TXD0 引脚映射。
27 PA13 I/O SCK0 PA13:通用双向数字I/0 引脚。
SCK0:SPI0 串行时钟引脚,主机输出/从机输入。
28 PA12 I/O SCS PA12:通用双向数字I/0 引脚。
SCS:SPI0 从机模式下的片选输入,低电平有效。 (1)、引脚类型: I=TTL/CMOS电平斯密特输入; O=CMOS电平三态输出; A=模拟信号输入或输出; 5VT=支持5V信号电压输入。 (2)、引脚的复用功能及映射根据其优先级在表中按从高到底排列,其中GPIO功能为最低优先级。
第2 章 系统结构及存储器 2.1 系统结构 下图为CH578芯片系统结构框图。 ADC Battery Monitor Temperature Sensor INTAIN0~5 TouchKey Timer*3 Capture/PWM INT*3TMR*3 UART*2 INT*2 RXD*2,CTS TXD*2,RTS SPI INT SCS SCK MISO MOSI Watch-Dog Timer INT PWMx GPIO INT VIO33 RTC PMU INT PA0~PA15, PB0~PB23 CK32K VDDR Flash Control 32bits RISC Core SWD ARM Cortex-M0 INT*n TIO TCK DMA Arbiter DMA USB Ethernet INT INT ET+/ET- ER+/ER- CK60M UD+ UD- CK48M BaseBand BLE RF transceiver INT DMA*2 DMA DMA AES RAM14K RAM2K DMA DMA PLL 480MHZ CK32M CLK Divider CK48M CK60M X32KI X32KO 32KHz Crystal 32KHz RC OSC X32MI X32MO 32MHz Crystal 32MHz RC OSC HCLK Fpll CLK Generator CK32K ANT ULP LDO DC/DC POR LDO LDO MUX VIO33 VBAT VDDR VDCIA LDO POWER SLEEP / WAKE LED INT DMA SYS/AUX LCD Control FlashROM VDDR14K VSW VINTA XT32M PWM4~11 VDDR2K VDCID L & C PGA LCD Drive USB Phy ETH Phy DRIVE WAKE 图2-1A CH578内部结构框图 下图为CH577芯片系统结构框图。
Timer*3 Capture/PWM INT*3TMR*2 UART*2 INT*2 RXD*2 TXD*2 SPI INT SCS SCK MISO MOSI Watch-Dog Timer INT GPIO INT VIO33 RTC PMU INT PA4/5/8~15, PB4/7/10~15 CK32K VDDR Flash Control 32bits RISC Core ARM Cortex-M0 INT*n DMA Arbiter DMA BaseBand BLE RF transceiver INT DMA*2 DMA DMA AES RAM14K RAM2K CK32M CLK Divider X32KI X32KO 32KHz Crystal 32KHz RC OSC X32MI X32MO 32MHz Crystal 32MHz RC OSC HCLK CLK Generator CK32K ANT ULP LDO DC/DC POR LDO LDO MUX VIO33 VBAT VDDR VDCIA LDO POWER SLEEP / WAKE SYS/AUX FlashROM VDDR14K VSW VINTA XT32M VDDR2K VDCID L & C WAKE 图2-1B CH577内部结构框图 2.2 存储器映射 CH578 的寻址空间主要包括CODE 区/FlashROM、DATA 区/SRAM、外设等几个不同区域,详见下图 所示。 对于CH577,图中ETH、USB、LED、LCD、PWMx区域为Reserved。
图2-2 存储器映射图 2.3 存储器映射表 各存储器映射区域地址范围如下表所示: 表2-1 存储器映射区域地址 地址范围 用途 描述 0x00000000-0x0007FFFF 片上CODE区域,非易失存储器 CH578:167KB,FlashROM CH577:135KB,FlashROM 0x00080000-0x20003FFF 保留 - 0x20004000-0x20007FFF 片上DATA区域,易失存储器 16KB,SRAM 0x20008000-0x3FFFFFFF 保留 - 0x40000000-0x4000FFFF 各种外设 多个外设模块 0x40010000-0xDFFFFFFF 保留 - 0xE0000000-0xE000FFFF PPB 内部外设总线区域 0xE0010000-0xFFFFFFFF 保留 - 2.3.1 片上CODE 区域映射表
表2-2 CODE区域地址 地址范围 用途 描述 0x00000000-0x00027FFF CH578 :用户应用程序存储区CodeFlash 160KB 0x00028000-0x0003E7FF CH578 :保留 - 0x00000000-0x0001FFFF CH577 :用户应用程序存储区CodeFlash 128KB 0x00020000-0x0003E7FF CH577 :保留 - 0x0003E800-0x0003EFFF 用户非易失数据存储区DataFlash 2KB 0x0003F000-0x0003FFFF 系统引导程序存储区BootLoader 4KB 0x00040000-0x000403FF 系统非易失配置信息存储区InfoFlash 1KB 0x00040400-0x0007FFFF 保留 - 地址0x00040010的配置信息可以由用户通过工具设置。 表2-3 用户级非易失配置信息说明 位地址 名称 用途 默认值 位2~位0 RESERVED 保留 000b 位3 CFG_RESET_EN RST# 外部手工复位输入引脚使能 0 位4 CFG_DEBUG_EN 两线仿真调试接口使能 0 位5 CFG_LONG_RST 上电复位期间的额外64mS延时复位使能 0 位6 CFG_BOOT_EN 系统引导程序BootLoader使能 1 位7 CFG_ROM_READ FlashROM中的代码和数据保护模式: 0-禁止编程器读出,程序保密;1-允许读出 0 位27~位8 RESERVED 保留 0FFFFh 位31~位28 VALID_SIG 配置信息有效标志,固定值 0101b 2.3.2 片上DATA 区域映射表 表2-4 DATA区域地址 地址范围 用途 描述 0x20004000-0x200077FF 主+辅双电源供电的可独立保持存储区RAM14K 14KB 0x20007800-0x20007FFF 主+辅双电源供电的可独立保持存储区RAM2K 2KB 2.3.3 外设地址分配 CH578主要包含以下外设,每个外设占用一定的地址空间,外设寄存器的实际访问地址为:基地 址+偏移地址。在后续章节中,寄存器的地址有详细说明。下表为各个外设基地址的分配表。 表2-5 外设基地址分配表 外设编号 外设名称 外设基址
1 SYS(PMU/RTC/GPIO等) 0x4000 1000
2 AUX(ADC/TKEY/PLL等) 0x4000 1400
3 FlashROM-Control 0x4000 1800
4 TMR0 0x4000 2000
5 TMR1 0x4000 2400
6 TMR2 0x4000 2800
7 UART0 0x4000 3000
8 UART1 0x4000 3400
9 SPI0 0x4000 4000
10 PWMx(PWM4~PWM11) 0x4000 5000
11 LCD 0x4000 6000
12 LED 0x4000 6400
13 USB 0x4000 8000
14 ETH 0x4000 9000
15 Radio:BLE 0x4000 C000
下表为后续章节寄存器描述中“访问”的解释说明: 表2-6 访问属性说明 缩写词 描述 RF 只读且读取值为固定值,不受复位影响。 RO 只读。 WO 只写,读取值为0 或无效。 RZ 只读,读取完之后自动清0。 WZ 写则清0。 RW 可读可写。 RW1 可读,写1则清0。 WA 只写且仅安全模式下,读取值为0 或无效。 RWA 可读,仅安全模式下可写。 下表为后续章节中使用的缩写解释说明: 表2-7 名词缩写说明 缩写词 描述 HSE 外部高频晶体振荡时钟源(建议32MHz) HSI 内部高频RC时钟振荡源(出厂校准后为32MHz) LSE 外部低频晶体振荡时钟源(建议32KHz) LSI 内部低频RC时钟振荡源(应用软件运行时校准后为32KHz) CK32M 高频时钟源(默认32MHz) CK32K 低频时钟源(默认32KHz) Fpll PLL输出时钟(默认频率为480MHz) HCLK 系统主频时钟 Fsys 系统主频时钟频率 Tsys 系统主频时钟周期(1/Fsys) RAM2K 高地址的2KB SRAM RAM14K 低地址的14KB SRAM 0x 以其开头的数据表示16进制数 H 以其结束的数据表示16进制数 B 以其结束的数据表示2 进制数
第3 章 中断 3.1 中断控制器 系统支持多达15组中断信号源,每个中断请求都有独立的触发和屏蔽控制位,有专用的状态位。 3.2 系统嘀嗒SysTick 校准值 当系统嘀嗒时钟设定为32MHz,系统嘀嗒校准值固定为32000,将产生1mS时间基准。 3.3 中断和异常向量 下表列出了芯片系统的向量表 表3-1 中断向量表 位置 优先 级 优先级 类型 名称 说明 地址 - - - 保留 0x0000_0000 -15 -3 固定 Reset 复位 0x0000_0004 -14 -2 固定 NMI 不可屏蔽中断 0x0000_0008 -13 -1 固定 Hard fault 所有类型的失效 0x0000_000C - - - 保留 - -5 0 可设置 SVCall 通过SWI指令的系统服务调用 0x0000_002C - - - 保留 - -2 1 可设置 PendSV 可挂起系统服务 0x0000_0038 -1 2 可设置 SysTick 系统嘀嗒定时器 0x0000_003C 0 3 可设置 TMR0 TMR0定时器0中断 0x0000_0040 1 4 可设置 GPIO GPIO通用I/O中断 0x0000_0044 2 5 - - 保留 - 3 6 可设置 SPI0 SPI0中断 0x0000_004C 4 7 可设置 BLEL 无线模块的LLE中断 0x0000_0050 5 8 可设置 BLEB 无线模块的BB中断 0x0000_0054 6 9 可设置 USB USB 中断 0x0000_0058 7 10 可设置 ETH 以太网中断 0x0000_005C 8 11 可设置 TMR1 TMR1定时器1中断 0x0000_0060 9 12 可设置 TMR2 TMR2定时器2中断 0x0000_0064 10 13 可设置 UART0 UART0异步串口0 中断 0x0000_0068 11 14 可设置 UART1 UART1异步串口1 中断 0x0000_006C 12 15 可设置 RTC RTC 实时时钟中断 0x0000_0070 13 16 可设置 ADC ADC 中断 0x0000_0074 14 17 - - 保留 - 15 18 可设置 LED LED 屏控制中断 0x0000_007C 16 19 - - 保留 - 17 20 - - 保留 - 18 21 - - 保留 - 19 22 可设置 WDOG_BAT 看门狗定时器中断/电池低电压中断 0x0000_008C
第4 章 系统控制 4.1 复位控制 系统支持 6 种复位形式,分别为电源上电复位 RPOR(real power on reset)、外部手工复位 MR(manual reset)、内部软件复位SR(software reset)、看门狗超时复位WTR(watch-dog time-out reset)、下电模式下唤醒导致的全局复位GRWSM(global reset by waking under shutdown mode)、 常规唤醒导致的局部寄存器复位LRW(local reset by waking)。 寄存器R8_GLOB_RESET_KEEP和RB_ROM_CODE_OFS,只在RPOR和GRWSM复位时被复位,而不受其 它复位形式影响。 下图中时序参数和复位特性参数请参考第19.5节的时序参数表。 4.1.1 电源上电复位RPOR 当电源上电时,芯片内部会产生上电复位并延时以等待电源稳定。下图为上电复位过程。 图 4-1 上电复位 4.1.2 外部手工复位MR 外部手工复位由外部加到RST#引脚的低电平触发,当复位低电平持续时间大于最小复位脉冲宽 度(Trst)时即触发系统进行复位。 图 4-2 外部复位 4.1.3 内部软件复位SR 内部软件复位,用于不需要外部干预而自行复位。设置全局复位配置寄存器(R8_RST_WDOG_CTRL) 的位RB_SOFTWARE_RESET为1,即可实现软件复位。该位会自动清0。
4.1.4 看门狗超时复位WTR 看门狗功能是基于一个8位的递增计数器,计数时钟周期为131072/Fsys。当开启了看门狗超时 复位功能后,一旦此计数器溢出会复位整个系统。 4.1.5 下电模式唤醒后的复位GRWSM 一旦系统进入下电模式(详见电源管理章节)后,在唤醒信号的作用下,系统将有序执行唤醒操 作,唤醒之后系统将执行全局复位,此复位效果类似于上电复位。 4.1.6 常规唤醒操作引起的复位LRW 如果系统是从睡眠模式中被唤醒,则在相关电源准备就绪之后会产生复位,此复位为局部复位, 根据需要对睡眠模式下掉电的寄存器进行有选择的复位。 在睡眠模式下,各功能模块的寄存器分为三类: 第一种是属于需数据保持的功能模块的关键寄存器(例如配置/模式等),睡眠时由辅助电源继 续供电,数据不丢失,睡眠和唤醒对其数据无影响; 第二种是属于需数据保持的功能模块的可再生寄存器(例如计数器、FIFO 等),睡眠时断电, 唤醒后数据是随机数(例如FIFO存储单元)或者被复位(例如FIFO计数器); 第三种是属于无需数据保持的功能模块的寄存器,睡眠时断电,唤醒后数据是随机数(例如 FIFO存储单元)或者被复位(例如FIFO计数器、配置/模式寄存器)。 LRW 就是用于上述后两种被复位的寄存器。 4.2 安全访问 系统某些寄存器的属性是“RWA”或者“WA”,表示当前寄存器为安全访问寄存器,可以直接读取 但是写入需要进入安全访问模式。 先写入R8_SAFE_ACCESS_SIG寄存器0x57; 再写入R8_SAFE_ACCESS_SIG寄存器0xA8; 即可进入安全访问模式,此时可以操作具有“RWA/WA”属性的寄存器,此后约16个系统主频周期(Tsys) 都处于安全模式下,该有效期内可以改写一个或多个安全类寄存器,超出上述有效期后将自动终止安 全模式。或者可提前向R8_SAFE_ACCESS_SIG寄存器写入0x00提前终止安全模式。 4.3 寄存器描述 表4-1 系统控制相关寄存器列表 名称 访问地址 描述 复位值 R8_SAFE_ACCESS_SIG 0x40001040 安全访问标记寄存器 0x00 R8_CHIP_ID 0x40001041 芯片ID寄存器 0x79 R8_SAFE_ACCESS_ID 0x40001042 安全访问ID寄存器 0x04 R8_WDOG_COUNT 0x40001043 看门狗计数器寄存器 0x00 R8_RESET_STATUS 0x40001044 复位状态寄存器 0x01 R8_GLOB_CFG_INFO 0x40001045 全局配置信息状态寄存器 0xEX R8_RST_WDOG_CTRL 0x40001046 看门狗及复位配置寄存器 0x00 R8_GLOB_RESET_KEEP 0x40001047 复位保持寄存器 0x00 R8_CFG_FLASH 0x4000104A FlashROM 配置寄存器 0x0X R32_FLASH_DATA 0x40001800 FlashROM 数据寄存器 0xXXXXXXXX R32_FLASH_ADDR 0x40001804 FlashROM 地址寄存器 0xXXXXXXXX R8_FLASH_COMMAND 0x40001808 FlashROM 命令寄存器 0x00 R8_FLASH_PROTECT 0x40001809 FlashROM 保护控制寄存器 0x00 R16_FLASH_STATUS 0x4000180A FlashROM 状态寄存器 0x0X00
安全访问标记寄存器(R8_SAFE_ACCESS_SIG) 位 名称 访问 描述 复位值 [7:0] R8_SAFE_ACCESS_SIG WO 安全访问标记寄存器。 部分寄存器(访问属性为 RWA)为保护寄 存器,必须进入安全访问模式才能进行 写操作。对该寄存器先写入0x57,再写 入0xA8,即可进入安全访问模式,并且 限时约16个主时钟周期(Tsys),超过则 自动保护。可以写入其它任意值强制直 接退出安全访问模式,回到保护状态。 00h
7 Reserved R0 保留。 0
[6:4] RB_SAFE_ACC_TIMER RO 当前安全访问时间计数。 000b
3 RB_SAFE_ACC_ACT RO
当前安全访问模式状态: 1:未锁定/安全访问模式下,可写; 0:锁定,RWA属性寄存器不可改写。
2 Reserved R0 保留。 0
[1:0] RB_SAFE_ACC_MODE RO 当前安全访问模式状态: 11:安全模式,可写入属性RWA寄存器; 其他:非安全模式。 00b 芯片ID寄存器(R8_CHIP_ID) 位 名称 访问 描述 复位值 [7:0] R8_CHIP_ID RF CH578:固定值78h,用于识别芯片。 CH577:固定值77h,用于识别芯片。 78h 77h 安全访问ID寄存器(R8_SAFE_ACCESS_ID) 位 名称 访问 描述 复位值 [7:0] R8_SAFE_ACCESS_ID RF 固定值04h。 04h 看门狗计数器寄存器(R8_WDOG_COUNT) 位 名称 访问 描述 复位值 [7:0] R8_WDOG_COUNT RW 可预置初值的看门狗计数器,一直自动 递增,可从0xFF循环到0x00再继续。 计数周期 = 131072/Fsys。 00h 复位状态寄存器(R8_RESET_STATUS) 位 名称 访问 描述 复位值 [7:5] Reserved R0 保留。 000b
4 RB_ROM_CODE_OFS RWA
选择用户程序代码在 FlashROM 的起始 偏移地址,该值不受MR、SR或WTR影响, 仅在RPOR和GRWSM有效时才能清零: 0:0x000000; 1:0x008000(跳过ROM中前32KB)。
3 Reserved R0 保留。 0
[2:0] RB_RESET_FLAG RO 最近一次复位状态: 000:软件复位 SR(RB_WDOG_RST_EN=0 时软件复位可产生此状态,否则可复位 001b
但不产生此状态); 001:上电复位RPOR; 010:看门狗超时复位WTR; 011:外部手动复位MR; 101:从下电模式唤醒时的复位GRWSM; 100/110/111:唤醒复位LRW,且此前的 上一次复位分别是SR/WTR/MR。 全局配置信息状态寄存器(R8_GLOB_CFG_INFO) 位 名称 访问 描述 复位值 [7:6] Reserved R0 保留。 11b
5 RB_BOOT_LOADER RO
Bootloader状态: 1:当前处于Bootloader状态; 0:当前处于用户程序状态。
4 RB_CFG_DEBUG_EN RO
两线仿真调试接口使能状态: 1:可仿真调试,可读取FlashROM; 0:禁止仿真调试。
3 RB_CFG_BOOT_EN RO 系统引导程序BootLoader使能状态:
1:已启用; 0:未启用。 1
2 RB_CFG_RESET_EN RO RST#外部手动复位输入使能状态:
1:已启用; 0:未启用。 0
1 Reserved RO 保留。 0
0 RB_CFG_ROM_READ RO
FlashROM代码和数据区保护状态: 1:外部编程器可读; 0:保护,外部不可访问,程序保密。 看门狗及复位配置寄存器(R8_RST_WDOG_CTRL) 位 名称 访问 描述 复位值 [7:5] Reserved RO 保留。 000b
4 RB_WDOG_INT_FLAG RW1
看门狗定时器中断标志: 1:发生了看门狗计数溢出,即检测到 R8_WDOG_COUNT递增0xFF到0x00; 0:看门狗计数未溢出。 标志写1清0,或者重新加载看门狗计 数器值(R8_WDOG_COUNT) 清0,或者执 行__SEV() 清0。
3 Reserved RO 保留。 0
2 RB_WDOG_INT_EN RWA
看门狗定时器中断使能位: 1:使能,看门狗计数溢出后产生中断; 0:关闭看门狗定时器中断。
1 RB_WDOG_RST_EN RWA
看门狗超时复位使能位: 1:使能,看门狗计数溢出后系统复位; 0:仅作为看门狗定时器。 注:此位置1 后软件复位操作将不影响 RB_RESET_FLAG状态。
0 RB_SOFTWARE_RESET WA/
系统软件复位控制,复位后将自动清零: 1:执行系统软件复位; 0:空闲,无动作。
复位保持寄存器(R8_GLOB_RESET_KEEP) 位 名称 访问 描述 复位值 [7:0] R8_GLOB_RESET_KEEP RW 复位保持寄存器,该寄存器值不受手动 复位、软件复位、看门狗复位或者普通 唤醒复位的影响。 00h FlashROM配置寄存器(R8_CFG_FLASH) 位 名称 访问 描述 复位值
7 RB_FLASH_BUSY_EN RWA FlashROM突发访问时忙使能位:
[6:4] Reserved RO 保留。 000b [3:0] RB_CFG_FLASH_X RWA FlashROM配置数据,写入时必须保持原 值不变。 XXXXb FlashROM数据寄存器(R32_FLASH_DATA) 位 名称 访问 描述 复位值 [31:0] R32_FLASH_DATA RW FlashROM 数据寄存器。 XXXXXXXXh FlashROM地址寄存器(R32_FLASH_ADDR) 位 名称 访问 描述 复位值 [31:0] R32_FLASH_ADDR RW FlashROM 地址寄存器。 XXXXXXXXh FlashROM命令寄存器(R8_FLASH_COMMAND) 位 名称 访问 描述 复位值 [7:0] R8_FLASH_COMMAND WO 0x9A:FlashROM编程操作命令; 0xA6:FlashROM扇区擦除操作命令。 00h FlashROM保护控制寄存器(R8_FLASH_PROTECT) 位 名称 访问 描述 复位值 [7:6] RB_ROM_WE_MUST_10 WO 必须写10b,否则无法写入。 10b [5:4] Reserved RO 保留。 00b
3 RB_ROM_CODE_WE RW
FlashROM程序存储区CodeFlash的擦除 /编程使能位: 1:允许擦除/编程; 0:擦写保护。
2 RB_ROM_DATA_WE RW
FlashROM数据存储区DataFlash的擦除 /编程使能位: 1:允许擦除/编程; 0:擦写保护。 [1:0] Reserved RO 保留。 00b FlashROM状态寄存器(R16_FLASH_STATUS) 位 名称 访问 描述 复位值 [15:11] Reserved RO 保留。 00000b [10:9] Reserved RO 保留。 01b
8 RB_ROM_READ_FREE RO
FlashROM代码和数据区保护状态: 1:外部编程器可读; 0:保护,外部不可访问,程序保密。
7 Reserved RO 保留。 0
6 RB_ROM_ADDR_OK RO
FlashROM擦除/编程操作地址有效标志, 操作前后都可以进行确认: 1:地址有效; 0:地址无效。 [5:2] Reserved RO 保留。 0000b
1 RB_ROM_CMD_ERR RO FlashROM命令响应错误:
1:未知命令; 0:命令被接受。 0
0 RB_ROM_CMD_TOUT RO FlashROM操作结果:
1:超时; 0:成功。 0
4.4 Flash-ROM 操作步骤
1.擦除Flash-ROM,将目标扇区中全部数据位变为1: (1)、设置R8_FLASH_PROTECT寄存器,开启擦除/编程使能RB_ROM_DATA_WE或RB_ROM_CODE_WE 位,对应DataFlash或CodeFlash,InfoFlash则需要RB_ROM_DATA_WE和RB_ROM_CODE_WE都开启; (2)、设置地址寄存器R32_FLASH_ADDR,写入32位地址,低8 位无效,一次擦除整块512字节; (3)、设置命令寄存器R8_FLASH_COMMAND,写入0A6H,执行扇区擦除操作,操作期间MCU 自动 暂停运行; (4)、操作完成后程序恢复运行,此时查询状态寄存器R16_FLASH_STATUS 查看此次操作状态; (5)、再次设置R8_FLASH_PROTECT 寄存器,关闭擦除/编程使能控制位(RB_ROM_DATA_WE=0 或 2.写Flash-ROM,将目标字中的部分数据位从1 变为0(无法将位数据从0变为1): (1)、设置R8_FLASH_PROTECT寄存器,开启擦除/编程使能RB_ROM_DATA_WE或RB_ROM_CODE_WE 位,对应DataFlash或CodeFlash,InfoFlash则需要RB_ROM_DATA_WE和RB_ROM_CODE_WE都开启; (2)、设置地址寄存器R32_FLASH_ADDR,写入32位地址,需要4 字节对齐; (3)、设置数据寄存器R32_FLASH_DATA为要写入的4 字节数据; (4)、设置命令寄存器R8_FLASH_COMMAND,写入09AH,执行编程/写操作,操作期间MCU自动暂 停运行; (5)、操作完成后程序恢复运行,此时查询状态寄存器 R16_FLASH_STATUS 查看此次操作状态; (5)、再次设置R8_FLASH_PROTECT 寄存器,关闭擦除/编程使能控制位(RB_ROM_DATA_WE=0 或 3.读Flash-ROM: 通过指向程序存储空间的指针,读取目标地址的code或data。 4.5 芯片唯一ID 号 每个芯片出厂时都具有唯一的ID号,即芯片身份识别号。该ID数据及其校验和共8字节,存储 于芯片内部只读区域中,具体操作请参考例子程序。
第5 章 电源控制 5.1 电源管理 CH578 内置有电源管理单元PMU。系统电源从VIO33 输入,通过内置的多个LDO 电压调整器为系 统的FlashROM、系统的数字电路(包括内核、USB、以太网和LED等)和系统的模拟电路(包括高频 振荡器、PLL、ADC和RF收发器等)提供所需的电源。 正常工作时的电源供电分为两种方式:直接电源和DC-DC转换。在正常工作之外,CH578提供了 4 种低功耗模式:空闲模式、暂停模式、睡眠模式、下电模式。 上电后默认不启用DC-DC,而是提供直通电源,其电压纹波较小。为了降低正常运行时的系统功 耗,可以选择启用DC-DC提升电源能耗利用率,工作电流通常将下降到直通方式的60%左右。 为了降低睡眠时的系统功耗,可以选择关闭系统主LDO,切换成由系统内置的超低功耗ULP-LDO 提供辅助电源。当系统进入睡眠或下电模式时,除了电源管理和RTC寄存器等常供电单元外,系统的 高2KB和14KB的SRAM、内核及所有的外设皆可选择是否维持供电,LSE/LSI可选择是否开启。 VIO33 VBAT Ultra Low Power LDO DC/DC GPIO OSC32K: LSE,LSI RAM14K RF-config/ USB/... Core/Timer/ UART/SPI/ PWM/LCD/... RAM2K PMU/RTC/ Reset/... VDCID VDCIAVSW PWR_COREPWR_RAM2K PWR_RAM14K PWR_EXTEND VINTA I/O ADC, TS, TKEY 32M: HSE, HSI PLL/... RF/... LED/Ethernet HV LDO Flash ROM LCD Vref Flash Control Digital LDO Group Analog LDO Group PWR_DCDC_EN PWR_SYS_EN CLK_*32K_PON Battery Monitor 图5-1 电源系统 5.2 寄存器描述 表5-1 功耗管理相关寄存器列表 名称 访问地址 描述 复位值 R16_SLP_CLK_OFF 0x4000100C 睡眠时钟控制寄存器 0x0000 R8_SLP_CLK_OFF0 0x4000100C 睡眠时钟控制寄存器0 0x00 R8_SLP_CLK_OFF1 0x4000100D 睡眠时钟控制寄存器1 0x00 R8_SLP_WAKE_CTRL 0x4000100E 唤醒事件配置寄存器 0x20
R8_SLP_POWER_CTRL 0x4000100F 外设睡眠电源控制寄存器 0x08 R16_POWER_PLAN 0x40001020 睡眠电源管理寄存器 0x01DF R8_AUX_POWER_ADJ 0x40001022 辅助电源调整控制寄存器 0xXX R8_BAT_DET_CTRL 0x40001024 电池电压检测控制寄存器 0x00 R8_BAT_DET_CFG 0x40001025 电池电压检测配置寄存器 0x01 R8_BAT_STATUS 0x40001026 电池状态寄存器 0x00 睡眠时钟控制寄存器0(R8_SLP_CLK_OFF0) 位 名称 访问 描述 复位值
6 Reserved RO 保留。 0
5 RB_SLP_CLK_UART1 RWA 串口1时钟源:
1:关闭; 0:开启。 0
4 RB_SLP_CLK_UART0 RWA 串口0时钟源:
1:关闭; 0:开启。 0
2 RB_SLP_CLK_TMR2 RWA 定时器2 时钟源:
1:关闭; 0:开启。 0
1 RB_SLP_CLK_TMR1 RWA 定时器1 时钟源:
1:关闭; 0:开启。 0
0 RB_SLP_CLK_TMR0 RWA 定时器0 时钟源:
1:关闭; 0:开启。 0 睡眠时钟控制寄存器1(R8_SLP_CLK_OFF1) 位 名称 访问 描述 复位值
7 RB_SLP_CLK_BLE RWA BLE 控制器时钟源:
1:关闭; 0:开启。 0
6 RB_SLP_CLK_LED RWA LED 控制器时钟源:
1:关闭; 0:开启。 0
5 RB_SLP_CLK_ETH RWA ETH 控制器时钟源:
1:关闭; 0:开启。 0
4 RB_SLP_CLK_USB RWA USB 控制器时钟源:
1:关闭; 0:开启。 0
3 RB_SLP_CLK_LCD RWA LCD 控制器时钟源:
1:关闭; 0:开启。 0
2 RB_SLP_CLK_PWMX RWA PWMx时钟源:
1:关闭; 0:开启。 0
0 RB_SLP_CLK_SPI0 RWA SPI0时钟源:
1:关闭; 0:开启。 0 唤醒事件配置寄存器(R8_SLP_WAKE_CTRL) 位 名称 访问 描述 复位值 [7:6] Reserved RO 保留。 00b
5 RB_SLP_BAT_WAKE RWA 使能电池低压事件唤醒系统:
1:使能; 0:关闭。 1
4 RB_SLP_GPIO_WAKE RWA 使能GPIO事件唤醒系统:
1:使能; 0:关闭。 0
3 RB_SLP_RTC_WAKE RWA 使能RTC事件唤醒系统:
1:使能; 0:关闭。 0
2 Reserved RO 保留。 0
1 RB_SLP_ETH_WAKE RWA 使能以太网事件唤醒系统:
1:使能; 0:关闭。 0
0 RB_SLP_USB_WAKE RWA 使能USB事件唤醒系统:
1:使能; 0:关闭。 0 外设睡眠电源控制寄存器(R8_SLP_POWER_CTRL) 位 名称 访问 描述 复位值 [7:6] Reserved RO 保留。 00b
5 RB_SLP_CLK_RAM2K RWA RAM2K的SRAM 时钟控制:
1:关闭; 0:开启。 0
4 RB_SLP_CLK_RAMX RWA 主SRAM(RAM14K)的时钟控制:
1:关闭; 0:开启。 0
3 RB_SLP_ROM_PWR_DN RWA
在暂停模式下,FlashROM掉电使能: 1:暂停模式下使ROM进入停用状态; 0:暂停模式下使ROM保持待机状态。
1 RB_SLP_ETH_PWR_DN RWA 以太网收发器ETH PHY掉电使能:
1:掉电/禁用; 0:保持供电。 0
0 Reserved RO 保留。 0
睡眠电源管理寄存器(R16_POWER_PLAN) 位 名称 访问 描述 复位值
15 RB_PWR_PLAN_EN RWA/
睡眠电源规划控制使能: 1:开启规划; 0:关闭或结束规划。 开启电源规划,用于稍后进入睡眠或下 电模式时执行,执行后该位自动清0。 [14:11] RB_PWR_MUST_0010 RWA 保留,必须写 0010b。 0000b
10 RB_PWR_DCDC_PRE RWA DC-DC偏置电路使能(即时生效):
1:使能; 0:禁止。 0
9 RB_PWR_DCDC_EN RWA
DC-DC使能位(即时生效): 1:DC-DC使能,直通电源关闭; 0:DC-DC禁止,直通电源开启。
8 RB_PWR_MUST_1 RWA 保留,必须写 1。 1
7 RB_PWR_SYS_EN RWA
系统电源控制(睡眠规划): 1:提供系统电源(在VSW引脚); 0:关闭系统电源,规划将进入睡眠模式 或者下电模式。
6 Reserved RWA 保留,必须写0。 1
5 Reserved RO 保留。 0
4 RB_PWR_RAM14K RWA RAM14K的SRAM供电(睡眠规划):
1:双供电; 0:不用辅助电源。 1
3 RB_PWR_EXTEND RWA USB 和RF配置供电(睡眠规划):
1:双供电; 0:不用辅助电源。 1
2 RB_PWR_CORE RWA 内核和基本外设供电(睡眠规划):
1:双供电; 0:不用辅助电源。 1
1 RB_PWR_RAM2K RWA RAM2K的SRAM供电(睡眠规划):
1:双供电; 0:不用辅助电源。 1
0 Reserved RO 保留。 1
此寄存器除RB_PWR_DCDC_PRE 和RB_PWR_DCDC_EN 之外均为睡眠规划预置,其电源配置在进入低功耗 的睡眠模式和下电模式后生效。 辅助电源调整控制寄存器(R8_AUX_POWER_ADJ) 位 名称 访问 描述 复位值 [7:6] Reserved RO 保留。 00b [5:3] Reserved RWA 保留,写入时必须保持原值不变。 1XXb [2:0] RB_ULPLDO_ADJ RWA 超低功耗LDO 的辅助电源输出电压调节 值(数值仅供参考,不建议修改): XXXb (100b) 电池电压检测控制寄存器(R8_BAT_DET_CTRL) 位 名称 访问 描述 复位值 [7:4] Reserved RO 保留。 0000b
3 RB_BAT_LOW_IE RWA 电池低电压中断使能:
1:使能; 0:关闭。 0
2 RB_BAT_LOWER_IE RWA 电池超低电压中断使能:
1:使能; 0:关闭。 0
0 RB_BAT_DET_EN RWA
电池电压检测功能使能: 1:使能低压检测,同时开启基准电压等 模块,睡眠模式下电流210uA; 0:关闭。 注:如果电池电压达到超低电压检测阈值,且RB_BAT_LOWER_IE和RB_BAT_LOW_IE都使能(正常情况 下只使能其中之一),那么将产生NMI不可屏蔽中断,等效于提高中断优先级。 电池电压检测配置寄存器(R8_BAT_DET_CFG) 位 名称 访问 描述 复位值 [7:2] Reserved RO 保留。 000000b [1:0] RB_BAT_LOW_VTH RWA 设置低电压及超低电压的检测阈值: (超低电压参考阈值,低电压参考阈值) 00:1.97V , 2.25V; 01:2.05V , 2.33V; 10:2.13V , 2.41V; 11:2.21V , 2.49V。 01b 电池状态寄存器(R8_BAT_STATUS) 位 名称 访问 描述 复位值 [7:2] Reserved RO 保留。 000000b
1 RB_BAT_STAT_LOW RO 电池电压处于低电压状态:
1:低于低电压阈值; 0:否。 0
0 RB_BAT_STAT_LOWER RO 电池电压处于超低电压状态: 0
1:低于超低电压阈值; 0:否。 5.3 低功耗模式 在系统复位后,微控制器处于正常运行状态。当MCU不需要运行时,可以选择适当的低功耗模式 来节省功耗。用户需要根据最低电源消耗、最快启动时间和可用唤醒事件等条件,选定一个合适的低 功耗模式。 芯片提供以下4种主要的低功耗模式: l 空闲模式(Idle) 所有外设保持正常供电,内核停止运行,时钟系统运转。检测到唤醒事件后,可以立即唤醒。 l 暂停模式(Halt) 在空闲模式的基础上,时钟系统停止,可将FlashROM 进入停机模式,进一步降低功耗。检测到 唤醒事件后,首先时钟运转,然后唤醒内核运行。 l 睡眠模式(Sleep): 主LDO 关闭,由超低功耗ULP-LDO 维持PMU、内核和基本外设供电,LSE 或LSI 可以选择是否开 启,RAM2K、RAM14K、USB和RF配置可以选择是否维持供电。检测到唤醒事件后,首先主LDO开 启,然后时钟运转,最后唤醒内核,程序继续运行,需要时可以重新设置到更高主频。 l 下电模式(Shutdown): 在睡眠模式的基础上,关闭了内核和基本外设以及USB 和RF 配置,LSE 或LSI 可以选择是否开 启,RAM2K、RAM14K 可以选择是否维持供电。检测到唤醒事件后,PMU 将执行GRWSM 复位,软件 可根据复位标志RB_RESET_FLAG和可选的RAM中的保持数据区分于RPOR。 下表详细描述了几种低功耗模式的特征及唤醒途径: 表5-2 低功耗模式 模式 特征 进入条件 唤醒事件 功耗 空闲模式 Idle 外设均正常供电,内核停止运行, 时钟系统运转,但可以通过外设时 钟控制位选择关闭各外设的时钟。 设置内核控制位SCR=0, 设置唤醒条件后执行 I/O 或 RTC 或 BAT 或 USB 或ETH 1.15mA~ 1.5mA 暂停模式 Halt 外设均正常供电,内核停止运行, 时钟系统停止(PLL/HSE/HSI停止)。 可以选择FlashROM待机或停用。 设置内核控制位SCR=1, 设置唤醒条件后执行 I/O 或 RTC 或 BAT 或 USB 或ETH 420uA~ 470uA 睡眠模式 Sleep 主LDO 关闭,超低功耗ULP-LDO 维 持PMU、内核和基本外设供电, LSE 或 LSI 可以选择是否开启, RAM2K、RAM14K、USB 和RF 配置可 以选择是否维持供电。 设置内核控制位SCR=1, 设置POWER_PLAN, 设置唤醒条件后执行 I/O 或 RTC 或BAT。 芯片唤醒后 会继续运行 0.6uA~ 2.0uA 下电模式 Shutdown 超低功耗LDO维持PMU供电, LSE 或 LSI 可以选择是否开启, RAM2K、RAM14K 可以选择是否维持 供电,用于保持数据。 设置内核控制位SCR=1, 设置POWER_PLAN, 设置唤醒条件后执行 I/O 或 RTC 或BAT。 芯片唤醒后 会自动复位 0.2uA~ 1.3uA 下表描述了几种低功耗模式的详细配置: 表5-3 低功耗模式详细配置示例 规划配置 SYS_EN RAM2K RAM14K CK32K CORE EXTEND 功耗(仅供参考) 维持供电 的功能 系统电源 VSW 数据区 2KB 数据区 14KB LSE/LSI二选一 RTC 唤醒 M0内核和 基本外设 USB 和 RF配置 PMU 和RTC寄存器 常供电,约0.2uA 下电模式 常用配置 0 0 0 0 0 0 0.2uA 0 1 0 0 0 0 0.5uA 0 0 0 1 0 0 0.5uA~0.6uA
0 1 0 1 0 0 0.8uA~0.9uA 睡眠模式 常用配置 0 1 0 0 1 0 0.6uA 0 1 0 1 1 0 0.9uA~1.0uA 0 0 1 0 1 0 1.1uA 0 0 1 1 1 0 1.4uA~1.5uA 0 1 1 1 1 1 1.8uA~2.0uA
5.4 DC-DC 操作步骤
启用DC-DC电源模式(启用前需确认外部硬件电路上存在DC-DC所需的电感和电容) (1)、进入安全访问模式:寄存器R8_SAFE_ACCESS_SIG先写入0x57,再写入0xA8; (2)、打开DC-DC偏置电路:将寄存器R16_POWER_PLAN的RB_PWR_DCDC_PRE置1; (3)、延时至少10uS; (4)、再次进入安全访问模式:寄存器R8_SAFE_ACCESS_SIG先写入0x57,再写入0xA8; (5)、打开DC-DC电源:将寄存器R16_POWER_PLAN的RB_PWR_DCDC_EN置1,启用DC-DC。 关闭DC-DC,切换到直通电源模式 (1)、进入安全访问模式:寄存器R8_SAFE_ACCESS_SIG先写入0x57,再写入0xA8;
第6 章 系统时钟及RTC 6.1 系统时钟简介 以下几种不同的时钟源可被选择来驱动系统时钟HCLK(Fsys) — HSE或HSI原始时钟CK32M。 — HSE或HSI之分频。 — 内部PLL(默认480MHz)分频。 — LSE或LSI原始时钟CK32K。 任意一个时钟源都可以被独立地启动或关闭,由此可以优化系统功耗。 6.1.1 时钟结构 Fsys 图6-1A CH578时钟树框图
图6-1B CH577时钟树框图 上图是系统内部的时钟树结构,其中的RTC和LCD功能使用的是32KHz时钟源CK32K,所以使用 这些功能必须打开低频时钟;USB和以太网的数据传输依靠PLL分频后产生的时钟源;其他的外设驱 动时钟以及数字控制逻辑由系统时钟或者再分频驱动。
6.2 RTC 简介
实时时钟(RTC)是一个独立的定时器,包含一组连续计数的计数器。在相应软件配置下,可提 供简单日历功能。修改计数器的值可以重新设置当前的时间和日期。 RTC 寄存器与PMU一样常供电,在系统复位或从低功耗模式唤醒后,RTC的设置和时间维持不变。 6.2.1 主要特性 l 可配置2种模式: — 定时模式:软件可选择固定周期时间(定时)产生中断通知。 — 触发模式:匹配一个软件预设的目标闹钟时间,产生中断通知。 l 3 组16位计数器,提供了CK32K原始周期、2 秒周期、1 天周期的计数。 6.3 寄存器描述 表6-1 时钟及振荡器控制相关寄存器列表 名称 访问地址 描述 复位值 R16_CLK_SYS_CFG 0x40001008 系统时钟配置寄存器 0x05
R8_HFCK_PWR_CTRL 0x4000100A 高频时钟模块电源控制寄存器 0x0C R16_INT32K_TUNE 0x4000102C 内部32KHz时钟校准寄存器 0x0200 R8_XT32K_TUNE 0x4000102E 外部32KHz时钟谐振控制寄存器 0xC3 R8_CK32K_CONFIG 0x4000102F 32KHz 振荡器配置寄存器 0xX2 R8_INT32M_CALIB 0x4000104C 内部32MHz时钟校准寄存器 0xXX R8_XT32M_TUNE 0x4000104E 外部32MHz时钟谐振控制寄存器 0x31 R16_OSC_CAL_CNT 0x40001050 振荡器频率校准计数值寄存器 0xXXXX R8_OSC_CAL_CTRL 0x40001052 振荡器频率校准控制寄存器 0x02 R8_PLL_CONFIG 0x4000104B PLL 配置寄存器 0xX0 R8_RTC_FLAG_CTRL 0x40001030 RTC 标志和控制寄存器 0x30 R8_RTC_MODE_CTRL 0x40001031 RTC 模式配置寄存器 0x02 R32_RTC_TRIG 0x40001034 RTC 触发数值寄存器 0x00000000 R16_RTC_CNT_32K 0x40001038 RTC 基于32768Hz计数值寄存器 0xXXXXXXXX R16_RTC_CNT_2S 0x4000103A RTC 以2S为单位的计数值寄存器 0xXXXXXXXX R32_RTC_CNT_DAY 0x4000103C RTC 以天为单位的计数值寄存器 0x0000XXXX 系统时钟配置寄存器(R16_CLK_SYS_CFG) 位 名称 访问 描述 复位值
15 RB_XO_DI RO X32MO 引脚的输入状态采样值。 0
[14:10] Reserved RO 保留。 00000b
9 RB_CLK_OSC32M_XT RWA
CK32M(32MHz)时钟源选择位: 1:外部32MHz振荡器; 0:内部32MHz振荡器。
8 Reserved RO 保留。 0
[7:6] RB_CLK_SYS_MOD RWA HCLK系统时钟源模式选择: 00:CK32M(默认32MHz)进行分频; 01:PLL(默认480MHz)进行分频; 10:CK32M(默认32MHz)作为HCLK; 11:CK32K(默认32KHz)作为HCLK。 00b [4:0] RB_CLK_PLL_DIV RWA HCLK 输出时钟分频系数,0 代表16。 00101b 计算: Fck32m = RB_CLK_OSC32M_XT ? XT_32MHz : RC_32MHz; Fck32k = RB_CLK_OSC32K_XT ? XT_32KHz : RC_32KHz; Fpll = Fck32m * 15 = 480MHz; Fsys = RB_CLK_SYS_MOD[1] ? ( RB_CLK_SYS_MOD[0] ? Fck32k : Fck32m ) : ( ( RB_CLK_SYS_MOD[0] ? Fpll : Fck32m ) / RB_CLK_PLL_DIV ); 上电默认值Fsys = Fck32m / RB_CLK_PLL_DIV = 32MHz / 5 = 6.4MHz; Fsys范围: 32KHz,1MHz~16MHz,32MHz,15MHz~44MHz 高频时钟模块电源控制寄存器(R8_HFCK_PWR_CTRL) 位 名称 访问 描述 复位值 [7:6] Reserved RWA 保留,必须写00。 00b
4 RB_CLK_PLL_PON RWA CH578:PLL电源控制位:
1:上电; 0:掉电。 0
4 Reserved RO CH577 :保留。 0
3 RB_CLK_INT32M_PON RWA 内部32MHz振荡器电源控制位: 1
1:上电; 0:掉电。
2 RB_CLK_XT32M_PON RWA 外部32MHz振荡器电源控制位:
1:上电; 0:掉电。 1 [1:0] Reserved RO 保留。 00b 内部32KHz时钟校准寄存器(R16_INT32K_TUNE) 位 名称 访问 描述 复位值 [15:10] Reserved RO 保留。 000000b [9:0] RB_INT32K_TUNE RWA 内部RC 32KHz时钟频率校准值。 1000000000b 外部32KHz时钟谐振控制寄存器(R8_XT32K_TUNE) 位 名称 访问 描述 复位值 [7:4] RB_XT32K_C_LOAD RWA 选择与外部32KHz 晶体匹配的内置负载 电容(可能影响RTC时钟精度): 0000:内置负载电容量为2pF; 其它: 电容量 = RB_XT32K_C_LOAD + 12pF, 0001b~1111b分别对应约13pF~27pF。 根据所用晶体参数选择。 1100b [3:2] Reserved RO 保留。 00b [1:0] RB_XT32K_I_TUNE RWA 外部32KHz振荡器偏置电流选择: 00:70%额定电流;01:额定电流; 10:140%额定电流;11:200%额定电流。 11b 32KHz振荡器配置寄存器(R8_CK32K_CONFIG) 位 名称 访问 描述 复位值
7 RB_32K_CLK_PIN RO 32KHz 时钟引脚状态(异步信号)。 X
[6:3] Reserved RO 保留。 0000b
2 RB_CLK_OSC32K_XT RWA
CK32K(32KHz)时钟源选择位: 1:外部32KHz振荡器; 0:内部32KHz振荡器。
1 RB_CLK_INT32K_PON RWA 内部32KHz振荡器电源控制位:
1:上电; 0:掉电。 1
0 RB_CLK_XT32K_PON RWA 外部32KHz振荡器电源控制位:
1:上电; 0:掉电。 0 内部32MHz时钟校准寄存器(R8_INT32M_CALIB) 位 名称 访问 描述 复位值 [7:0] R8_INT32M_CALIB RWA 内部RC 32MHz时钟频率校准值。 XXXXXXXXb 外部32MHz时钟谐振控制寄存器(R8_XT32M_TUNE) 位 名称 访问 描述 复位值 [6:4] RB_XT32M_C_LOAD RWA 选择与外部32MHz 晶体匹配的内置负载 电容(可能影响无线通讯): 电容量 = RB_XT32M_C_LOAD * 2 + 10pF, 000b~111b分别对应约10pF~24pF。 根据所用晶体参数选择,常用为111b。 011b
[3:2] Reserved RO 保留。 00b [1:0] RB_XT32M_I_BIAS RWA 外部32MHz振荡器偏置电流选择: 00:75%额定电流;01:额定电流; 10:125%额定电流;11:150%额定电流。 01b 振荡器频率校准计数值寄存器(R16_OSC_CAL_CNT) 位 名称 访问 描述 复位值 [15:12] Reserved RO 保留。 0000b [11:0] RB_OSC_CAL_CNT RO 对5 个CK32K 周期基于系统主频的计数 值,用于校准内部32KHz振荡器频率。 XXXh 振荡器频率校准控制寄存器(R8_OSC_CAL_CTRL) 位 名称 访问 描述 复位值 [7:2] Reserved RO 保留。 000000b
1 RB_OSC_CNT_HALT RO 振荡器频率校准计数器计数状态位:
1:正在暂停计数;0:正在计数中。 1
0 RB_OSC_CNT_EN RWA 振荡器频率校准计数器使能位:
1:使能计数; 0:禁止计数。 0 PLL 配置寄存器(R8_PLL_CONFIG) 位 名称 访问 描述 复位值
7 RB_PLL_LOCKED RO PLL 锁定状态:
1:正在锁定; 0:当前没有锁定。 X [6:2] Reserved RO 保留。 00000b [1:0] RB_PLL_CFG_DAT RWA PLL 配置参数。 00b RTC 标志和控制寄存器(R8_RTC_FLAG_CTRL) 位 名称 访问 描述 复位值
7 RB_RTC_TRIG_FLAG RO RTC 触发模式激活标志。 0
6 RB_RTC_TMR_FLAG RO RTC 定时模式激活标志。 0
5 RB_RTC_TRIG_CLR RW
禁用触发模式时,此位固定为1。 使能触发模式时,写1 清零触发模式激 活标志RB_RTC_TRIG_FLAG并自动清0。
4 RB_RTC_TMR_CLR RW
禁用定时模式时,此位固定为1。 使能定时模式时,写1 清零定时模式激 活标志RB_RTC_TMR_FLAG并自动清0。 [3:0] Reserved RO 保留。 0000b RTC 模式配置寄存器(R8_RTC_MODE_CTRL) 位 名称 访问 描述 复位值
7 RB_RTC_LOAD_HI RWA
写1 将加载RTC 计数器高字,加载后自 动清0。将R32_RTC_TRIG(实际仅低14
6 RB_RTC_LOAD_LO RWA
写1 将加载RTC 计数器低字,加载后自 动清0。将R32_RTC_TRIG 高16 位加载 到 R16_RTC_CNT_2S;将 R32_RTC_TRIG 低16位加载到R16_RTC_CNT_32K。
5 RB_RTC_TRIG_EN RWA RTC 触发模式使能位: 0
1:使能; 0:禁用。
4 RB_RTC_TMR_EN RWA RTC 定时模式使能位:
1:使能; 0:禁用。 0
3 RB_RTC_IGNORE_B0 RWA 触发模式下忽略比较匹配值的最低位:
1:忽略最低位; 0:比较最低位。 0 [2:0] RB_RTC_TMR_MODE RWA RTC 定时模式固定周期(定时)选择: 010:0.5S; 011:1S; 100:2S; 101:4S; 110:8S; 111:16S。 010b RTC 触发数值寄存器(R32_RTC_TRIG) 位 名称 访问 描述 复位值 [31:0] R32_RTC_TRIG RWA RTC 触发模式下的预设匹配数值,其高 16 位和低16 位分别与R16_RTC_CNT_2S 和R16_RTC_CNT_32K进行匹配。 与RB_RTC_LOAD_LO 及RB_RTC_LOAD_HI 配合,用于更新RTC计数器当前值。 0000h 注:预设匹配数值不是直接写入目标时间,涉及简单计算,请参考后面的说明。 RTC 基于32768Hz计数值寄存器(R16_RTC_CNT_32K) 位 名称 访问 描述 复位值 [15:0] R16_RTC_CNT_32K RO RTC 基于32768Hz计数值寄存器。 XXXXh RTC 以2S为单位的计数值寄存器(R16_RTC_CNT_2S) 位 名称 访问 描述 复位值 [15:0] R16_RTC_CNT_2S RO RTC 以2S为单位的当前计数值。 XXXXh RTC 以天为单位的计数值寄存器(R32_RTC_CNT_DAY) 位 名称 访问 描述 复位值 [31:16] Reserved RO 保留。 0000h [15:14] Reserved RO 保留。 00b [13:0] R32_RTC_CNT_DAY RO RTC 以天为单位的当前计数值。 XXXXXXXXXXXXXXb 6.4 功能描述及配置
6.4.1 RTC 计数器初始化
(1)、设置R32_RTC_TRIG寄存器数值,将RB_RTC_LOAD_HI置位,即可将R32_RTC_TRIG寄存器的数值 加载到R32_RTC_CNT_DAY寄存器中; (2)、设置R32_RTC_TRIG寄存器数值,将RB_RTC_LOAD_LO置位,即可将R32_RTC_TRIG寄存器的高低 各16位数值分别加载到R16_RTC_CNT_2S寄存器和R16_RTC_CNT_32K寄存器。
6.4.2 RTC 时钟源切换为LSE 晶振
(1)、确认X32KI和X32KO所在的GPIO引脚没有设置为输出,没有设置上拉和下拉电阻,只有晶体; (2)、配置R8_CK32K_CONFIG寄存器,置RB_CLK_XT32K_PON为1,开启外部32KHz晶体振荡器; (3)、建议先置RB_XT32K_I_TUNE为最大,等待晶体振荡器稳定(约数百mS)后再改为额定电流;
(4)、配置R8_CK32K_CONFIG寄存器,置RB_CLK_OSC32K_XT为1,要求时钟源切换到晶体振荡器; (5)、等待至少半个32KHz时钟周期,通常16uS,真正完成时钟源的切换。
6.4.3 RTC 定时功能
(1)、配置R8_RTC_MODE_CTRL寄存器,设置RB_RTC_TMR_MODE选择合适的定时周期,置RB_RTC_TMR_EN 为1,打开RTC定时功能; (2)、达到定时周期后,会产生RTC定时激活标志RB_RTC_TMR_FLAG及中断,查询R8_RTC_FLAG_CTRL 寄存器,置位RB_RTC_TMR_CLR可清零标志。
6.4.4 RTC 触发功能
(1)、在R32_RTC_TRIG寄存器中设置好目标匹配数值,计算和操作步骤: 以当前时间R32_RTC_CNT_32K(高16 位R16_RTC_CNT_2S和低16 位R16_RTC_CNT_32K)加上间 隔时间DelayTime(单位S),计算出目标时间数值,T32 = R32_RTC_CNT_32K + DelayTime * 32768, 如果( T32 & 0xFFFF ) != 0,那么T32 = T32 + 0x10000, 如果T32 >= 43200 * 0x10000,那么T32 = T32 - 43200 * 0x10000, 将T32写入R32_RTC_TRIG寄存器中,完成匹配数值设定; (2)、配置R8_RTC_MODE_CTRL寄存器,置RB_RTC_TRIG_EN为1,打开RTC触发功能; (3)、当RTC当前计数值R16_RTC_CNT_2S和R16_RTC_CNT_32K分别与R32_RTC_TRIG预设的高和低16 位匹配时,产生RTC触发激活标志RB_RTC_TRIG_FLAG及中断,置位RB_RTC_TRIG_CLR可清零标志。 (4)、如果RTC 已经过校时,那么可以支持目标绝对时间触发,由目标年/月/日/时/分/秒/毫秒计算 出目标时间数值T32,其它步骤同上。具体可参考评估板例子程序。 6.4.5 用HSE 校准内部32K 时钟LSI 参考评估板例子程序
第7 章 通用I/O 和复用功能
7.1 GPIO 简介
芯片提供了2组GPIO端口PA和PB,共40个通用输入输出引脚,部分引脚具有中断、复用及映 射功能。 每个GPIO端口有一个32位方向配置寄存器R32_Px_DIR,一个32位引脚输入寄存器R32_Px_PIN, 一个32位数据输出寄存器R32_Px_OUT,一个32位数据复位寄存器R32_Px_CLR,一个32位上拉电阻 配置寄存器R32_Px_PU,一个32位下拉电阻/驱动能力配置寄存器R32_Px_PD_DRV。 PA 端口中,PA[0]~PA[15]位有效,对应芯片上16 个GPIO 引脚;PB 端口中,PB[0]~PB[23]位 有效,对应芯片上24个GPIO引脚;其中32个I/O管脚PA[0]~PA[15]、PB[0]~PB[15]具有中断功 能,并可实现睡眠唤醒功能。 每个I/O端口位可以自由编程,但是I/O端口寄存器必须按8位、16位或者32位字访问。如果 引脚的复用功能没有开启,则默认作为通用I/O口使用。 下图是GPIO内部结构框图: GND I/O 50K R32_Px_PU VIO33 50K Q Q SET CLR D CK Data_Bus Write R32_Px_OUT R32_Px_DIR Write R32_Px_CLR RESET R32_Px_PD_DRV R32_Px_PIN VIO33 GND Read R32_Px_OUT R8_ADC_CHANNEL AIN[x] GND R32_Px_PD_DRV 图7-1 I/O内部结构框图 7.2 外部中断/唤醒 芯片的32个I/O管脚PA[0]~PA[15]、PB[0]~PB[15])具有中断功能,并可实现睡眠唤醒。 为了使用外部中断,端口位必须配置成输入模式。并提供4 种触发模式:高电平、低电平、上升 沿、下降沿。 唤醒功能需要打开端口位的中断使能R16_Px_INT_EN,并开启寄存器R8_SLP_WAKE_CTRL中的GPIO 唤醒控制位RB_SLP_GPIO_WAKE。
7.3 GPIO 的复用与重映射
7.3.1 复用功能 部分I/O 引脚具有复用功能,上电后默认所有I/O 引脚均为通用I/O 功能,启用各功能模块后, 相应的原GPIO引脚被配置成各自功能模块对应的功能引脚。 如果一个管脚复用多个功能,并且多个功能都已开启,那么复用功能的优先级顺序请参考1.2节 引脚描述的“复用功能”列表中功能顺序。 例如:PA15 脚复用为MISO/TXD0_,则MISO 的功能优先,TXD0_功能最低。这样可以在多个复用 功能中,将功能优先级最低的部分不需使用的引脚启用相对更高优先级的复用功能。 下表列出了部分用于外设模块的功能引脚的GPIO配置。 表7-1 定时器x TMR0/1/2引脚 功能配置 GPIO配置 TMRx 输入捕捉通道x 输入(浮空输入/上拉输入/下拉输入) 输出PWM通道x 推挽输出 表7-2 UARTx UART0/1引脚 功能配置 GPIO配置 TXDx 串口发送x 推挽输出 RXDx 串口接收x 上拉输入(推荐)或浮空输入 RTS,DTR MODEM信号输出或RS485控制 推挽输出 CTS,DSR,RI,DCD MODEM信号输入 上拉输入(推荐)或浮空输入 表7-3 SPI SPI0引脚 功能配置 GPIO配置 SCK 主模式时钟输出 推挽输出 从模式时钟输入 输入(浮空输入/上拉输入/下拉输入) MOSI 全双工模式-主模式 推挽输出 全双工模式-从模式 输入(浮空输入/上拉输入/下拉输入) 半双工模式-主模式 未用到,可做通用I/O 半双工模式-从模式 未用到,可做通用I/O MISO 全双工模式-主模式 输入(浮空输入/上拉输入/下拉输入) 全双工模式-从模式 输入(推荐上拉,片选后自动切为推挽输出) 或推挽输出(禁止用于总线连接方式) 半双工模式-主模式 输入或推挽输出,手工切换 半双工模式-从模式 输入(推荐上拉,片选后自动切为推挽输出) SCS 主模式片选输出 推挽输出(可换用其它引脚) 从模式片选输入 上拉输入(推荐)或浮空输入 表7-4 ADC ADC 采样通道引脚 功能配置 GPIO配置 AINx 模拟数字转换输入通道 浮空输入 表7-5 USB USB 信号引脚 功能配置 GPIO配置 USB_DM 连接到内部USB收发器 浮空输入 USB_DP 连接到内部USB收发器 浮空输入 表7-6 以太网 以太网信号引脚 功能配置 GPIO配置
ET+/ET- 连接到内部以太网收发器 浮空输入 ER+/ER- 连接到内部以太网收发器 浮空输入 7.3.2 功能引脚重映射 为了使外设功能的同时利用率达到最优,可以通过设置R16_PIN_ALTERNATE功能引脚重映射寄存 器把一些功能引脚重新映射到其他引脚上。 表7-7 复用功能重映射引脚 外设功能引脚 默认所在的GPIO引脚 重映射到的GPIO引脚 SPI0 PA[12]/PA[13]/PA[14]/PA[15] PB[12]/PB[13]/PB[14]/PB[15] RXD1/TXD1 PA[8]/PA[9] PB[8]/PB[9] RXD0/TXD0 PB[4]/PB[7] PA[15]/PA[14] TMR2/PWM2/CAP2 PA[11] PB[11] TMR1/PWM1/CAP1 PA[10] PB[10] TMR0/PWM0/CAP0 PA[3] PB[19] 7.4 寄存器描述 表7-8 GPIO相关寄存器列表 名称 访问地址 描述 复位值 R16_PIN_ALTERNATE 0x40001018 功能引脚重映射寄存器 0x0000 R16_PIN_ANALOG_IE 0x4000101A 外设模拟管脚配置寄存器 0x0000 R16_PA_INT_EN 0x40001090 PA 端口中断使能寄存器 0x0000 R16_PB_INT_EN 0x40001092 PB 端口中断使能寄存器 0x0000 R16_PA_INT_MODE 0x40001094 PA 端口中断模式配置寄存器 0x0000 R16_PB_INT_MODE 0x40001096 PB 端口中断模式配置寄存器 0x0000 R16_PA_INT_IF 0x4000109C PA 端口中断标志寄存器 0x0000 R16_PB_INT_IF 0x4000109E PB 端口中断标志寄存器 0x0000 R32_PA_DIR 0x400010A0 PA 端口方向配置寄存器 0x00000000 R32_PA_PIN 0x400010A4 PA 端口引脚输入寄存器 0x0000XXXX R32_PA_OUT 0x400010A8 PA 端口数据输出寄存器 0x00000000 R32_PA_CLR 0x400010AC PA 端口数据复位寄存器 0x00000000 R32_PA_PU 0x400010B0 PA 端口上拉电阻配置寄存器 0x00000000 R32_PA_PD_DRV 0x400010B4 PA 端口下拉/驱动配置寄存器 0x00000000 R32_PB_DIR 0x400010C0 PB 端口方向配置寄存器 0x00000000 R32_PB_PIN 0x400010C4 PB 端口引脚输入寄存器 0x00XXXXXX R32_PB_OUT 0x400010C8 PB 端口数据输出寄存器 0x00000000 R32_PB_CLR 0x400010CC PB 端口数据复位寄存器 0x00000000 R32_PB_PU 0x400010D0 PB 端口上拉电阻配置寄存器 0x00000000 R32_PB_PD_DRV 0x400010D4 PB 端口下拉/驱动配置寄存器 0x00000000 功能引脚重映射寄存器(R16_PIN_ALTERNATE) 位 名称 访问 描述 复位值 [15:12] Reserved RO 保留。 0000b [11:9] Reserved RO 保留。 000b
8 RB_PIN_SPI0 RW SPI0功能引脚映射选择位:
1:SCK0_/SCS_/MOSI_/MISO_映射到 0
PB[12]/PB[13]/PB[14]/PB[15]; 0:SCK0/SCS/MOSI/MISO映射到 PA[12]/PA[13]/PA[14]/PA[15]。
5 RB_PIN_UART1 RW
UART1功能引脚映射选择位: 1:RXD1_/TXD1_映射到PB[8]/PB[9]; 0:RXD1/TXD1映射到PA[8]/PA[9]。
4 RB_PIN_UART0 RW
UART0功能引脚映射选择位: 1:RXD0_/TXD0_映射到PA[15]/PA[14]; 0:RXD0/TXD0映射到PB[4]/PB[7]。
2 RB_PIN_TMR2 RW
TM2 功能引脚映射选择位: 1:TMR2_/PWM2_/CAP2_映射到PB[11]; 0:TMR2/PWM2/CAP2映射到PA[11]。
1 RB_PIN_TMR1 RW
TM1 功能引脚映射选择位: 1:TMR1_/PWM1_/CAP1_映射到PB[10]; 0:TMR1/PWM1/CAP1映射到PA[10]。
0 RB_PIN_TMR0 RW
TM0 功能引脚映射选择位: 1:TMR0_/PWM0_/CAP0_映射到PB[19]; 0:TMR0/PWM0/CAP0映射到PA[3]。 外设模拟管脚配置寄存器(R16_PIN_ANALOG_IE) 位 名称 访问 描述 复位值
15 RB_PIN_ADC4_5_IE RW
ADC/TKEY 4/5通道引脚数字输入禁用: 1:关闭PA14-15数字输入,可节约功耗; 0:打开数字输入。
14 RB_PIN_ADC2_3_IE RW
ADC/TKEY 2/3通道引脚数字输入禁用: 1:关闭PA12-13数字输入,可节约功耗; 0:打开数字输入。
13 RB_PIN_XT32K_IE RW
32KHz晶振LSE引脚数字输入禁用: 1:关闭PA10-11数字输入,可节约功耗; 0:打开数字输入。
12 Reserved RO 保留。 0
11 Reserved RO 保留。 0
10 RB_PIN_ADC0_1_IE RW
ADC/TKEY 0/1通道引脚数字输入禁用: 1:关闭PA4-5数字输入,可节约功耗; 0:打开数字输入。
9 Reserved RO 保留。 0
7 RB_PIN_USB_IE RW
USB 引脚数字输入禁用: 1:关闭PB10-11数字输入,可节约功耗; 0:打开数字输入。
6 RB_PIN_ETH_IE RW
ETH 引脚数字输入禁用: 1:关闭PB12-15数字输入,可节约功耗; 0:打开数字输入。
5 RB_PIN_SEG20_23_IE RW
LCD 20-23段引脚数字输入禁用: 1:关闭PB20-23数字输入,可节约功耗; 0:打开数字输入。
4 RB_PIN_SEG16_19_IE RW
LCD 16-19段引脚数字输入禁用: 1:关闭PB16-19数字输入,可节约功耗; 0:打开数字输入。
3 RB_PIN_SEG12_15_IE RW
LCD 12-15段引脚数字输入禁用: 1:关闭PB12-15数字输入,可节约功耗; 0:打开数字输入。
2 RB_PIN_SEG8_11_IE RW
LCD 8-11段引脚数字输入禁用: 1:关闭PB8-11数字输入,可节约功耗; 0:打开数字输入。
1 RB_PIN_SEG4_7_IE RW
LCD 4-7段引脚数字输入禁用: 1:关闭PB4-7数字输入,可节约功耗; 0:打开数字输入。
0 RB_PIN_SEG0_3_IE RW
LCD 0-3段引脚数字输入禁用: 1:关闭PB0-3数字输入,可节约功耗; 0:打开数字输入。 注:如果引脚用于模拟功能(ADC/TouchKey/USB/ETH/LCD),建议将该引脚的数字输入功能关闭,即 设置数字输入禁用,从而可以降低功耗,并有利于减少干扰。 PA 端口中断使能寄存器(R16_PA_INT_EN) 位 名称 访问 描述 复位值 [15:0] R16_PA_INT_EN RW PA引脚中断使能位: 1:使能相应中断; 0:禁止相应中断。 0000h PB 端口中断使能寄存器(R16_PB_INT_EN) 位 名称 访问 描述 复位值 [15:0] R16_PB_INT_EN RW PB引脚中断使能位: 1:使能相应中断; 0:禁止相应中断。 0000h PA 端口中断模式配置寄存器(R16_PA_INT_MODE) 位 名称 访问 描述 复位值 [15:0] R16_PA_INT_MODE RW PA引脚中断模式选择位: 1:边沿触发; 0:电平触发。 0000h PB 端口中断模式配置寄存器(R16_PB_INT_MODE) 位 名称 访问 描述 复位值 [15:0] R16_PB_INT_MODE RW PB引脚中断模式选择位: 1:边沿触发; 0:电平触发。 0000h PA 端口中断标志寄存器(R16_PA_INT_IF) 位 名称 访问 描述 复位值 [15:0] R16_PA_INT_IF RW1 PA引脚中断标志位,写1清零: 1:有中断; 0:无中断。 0000h PB 端口中断标志寄存器(R16_PB_INT_IF) 位 名称 访问 描述 复位值
[15:0] R16_PB_INT_IF RW1 PB引脚中断标志位,写1清零: 1:有中断; 0:无中断。 0000h PA 端口方向配置寄存器(R32_PA_DIR) 位 名称 访问 描述 复位值 [31:16] Reserved RO 保留。 0000h [15:8] R8_PA_DIR_1 RW PA 引脚当前输入输出方向配置: 1:引脚为输出模式; 0:引脚为输入模式。 00h [7:0] R8_PA_DIR_0 RW 00h PA 端口引脚输入寄存器(R32_PA_PIN) 位 名称 访问 描述 复位值 [31:16] Reserved RO 保留。 0000h [15:8] R8_PA_PIN_1 RO PA引脚当前电平状态(仅在R32_PA_DIR 对应位为0时,该位值有效): 1:引脚输入高电平; 0:引脚输入低电平。 XXh [7:0] R8_PA_PIN_0 RO XXh PA 端口数据输出寄存器(R32_PA_OUT) 位 名称 访问 描述 复位值 [31:16] Reserved RO 保留。 0000h [15:8] R8_PA_OUT_1 RW 方向寄存器R32_PA_DIR对应位为1 时: 控制PA引脚输出电平状态: 1:输出高电平;0:输出低电平。 方向寄存器R32_PA_DIR对应位为0 时: 控制PA引脚中断极性选择: 1:高电平/上升沿;0:低电平/下降沿。 00h [7:0] R8_PA_OUT_0 RW 00h PA 端口数据复位寄存器(R32_PA_CLR) 位 名称 访问 描述 复位值 [31:16] Reserved RO 保留。 0000h [15:8] R8_PA_CLR_1 WZ PA 数据寄存器复位控制: 1:R32_PA_OUT对应位数据清0; 0:无影响。 00h [7:0] R8_PA_CLR_0 WZ 00h PA 端口上拉电阻配置寄存器(R32_PA_PU) 位 名称 访问 描述 复位值 [31:16] Reserved RO 保留。 0000h [15:8] R8_PA_PU_1 RW PA引脚上拉电阻使能控制: 1:启用上拉电阻;0:关闭上拉电阻。 00h [7:0] R8_PA_PU_0 RW 00h PA 端口下拉/驱动配置寄存器(R32_PA_PD_DRV) 位 名称 访问 描述 复位值 [31:16] Reserved RO 保留。 0000h [15:8] R8_PA_PD_DRV_1 RW 方向寄存器R32_PA_DIR对应位为0 时: PA引脚下拉电阻使能控制: 1:启用下拉电阻;0:关闭下拉电阻。 00h
[7:0] R8_PA_PD_DRV_0 RW 方向寄存器R32_PA_DIR对应位为1 时: PA引脚电流驱动能力选择: 1:20mA级别;0:5mA级别。 00h PB 端口方向配置寄存器(R32_PB_DIR) 位 名称 访问 描述 复位值 [31:24] Reserved RO 保留。 00h [23:16] R8_PB_DIR_2 RW PB引脚当前输入输出方向配置: 1:引脚为输出模式; 0:引脚为输入模式。 00h [15:8] R8_PB_DIR_1 RW 00h [7:0] R8_PB_DIR_0 RW 00h PB 端口引脚输入寄存器(R32_PB_PIN) 位 名称 访问 描述 复位值 [31:24] Reserved RO 保留。 00h [23:16] R8_PB_PIN_2 RO PB 引脚当前电平状态(仅在R32_PB_DIR 对应位为0时,该位值有效): 1:引脚输入高电平; 0:引脚输入低电平。 XXh [15:8] R8_PB_PIN_1 RO XXh [7:0] R8_PB_PIN_0 RO XXh PB 端口数据输出寄存器(R32_PB_OUT) 位 名称 访问 描述 复位值 [31:24] Reserved RO 保留。 00h [23:16] R8_PB_OUT_2 RW 方向寄存器R32_PB_DIR对应位为1 时: 控制PB引脚输出电平状态: 1:输出高电平;0:输出低电平。 00h [15:8] R8_PB_OUT_1 RW 方向寄存器R32_PB_DIR对应位为1 时: 控制PB引脚输出电平状态: 1:输出高电平;0:输出低电平。 方向寄存器R32_PB_DIR对应位为0 时: 控制PB引脚中断极性选择: 1:高电平/上升沿;0:低电平/下降沿。 00h [7:0] R8_PB_OUT_0 RW 00h PB 端口数据复位寄存器(R32_PB_CLR) 位 名称 访问 描述 复位值 [31:24] Reserved RO 保留。 00h [23:16] R8_PB_CLR_2 WZ PB数据寄存器复位控制: 1:R32_PB_OUT对应位数据清0; 0:无影响。 00h [15:8] R8_PB_CLR_1 WZ 00h [7:0] R8_PB_CLR_0 WZ 00h PB 端口上拉电阻配置寄存器(R32_PB_PU) 位 名称 访问 描述 复位值 [31:24] Reserved RO 保留。 00h [23:16] R8_PB_PU_2 RW PB引脚上拉电阻使能控制: 1:启用上拉电阻;0:关闭上拉电阻。 00h [15:8] R8_PB_PU_1 RW 00h [7:0] R8_PB_PU_0 RW 00h PB 端口下拉/驱动配置寄存器(R32_PB_PD_DRV)
位 名称 访问 描述 复位值 [31:24] Reserved RO 保留。 00h [23:16] R8_PB_PD_DRV_2 RW 方向寄存器R32_PB_DIR对应位为0 时: PB引脚下拉电阻使能控制: 1:启用下拉电阻;0:关闭下拉电阻。 方向寄存器R32_PB_DIR对应位为1 时: PB引脚电流驱动能力选择: 1:20mA级别;0:5mA级别。 00h [15:8] R8_PB_PD_DRV_1 RW 00h [7:0] R8_PB_PD_DRV_0 RW 00h
7.5 GPIO 引脚模式配置
每个GPIO都可以配置成5种模式,具体见下表: 表7-9 端口配置表 模式 R32_Px_DIR R32_Px_PU R32_Px_PD_DRV 浮空输入/高阻输入/模拟输入 0 0 0 带上拉电阻的输入 0 1 0 带下拉电阻的输入 0 0 1 推挽输出,驱动能力5mA级别 1 X 0 推挽输出,驱动能力20mA级别 1 X 1
第8 章 通用定时器TMRx
8.1 TMRx 简介
芯片提供了3个26位定时器,TMR0、TMR1和TMR2,最长定时时间为2^26个时钟周期。它适用 于多种场合,包括测量输入信号脉冲长度(输入捕捉)或者产生输出波形(PWM),另外TMR1和TMR2 支持DMA功能。每个定时器都是完全独立的,可以一起同步操作。 8.1.1 主要特性 l 3 个26位定时器,每个定时器定时时间最大为2^26个时钟周期。 l 支持定时器中断,其中TMR1和TMR2支持DMA及中断。 l 支持捕捉功能,测量输入脉冲长度或周期。 l 捕捉功能可设置为电平变化捕捉和高或低电平保持时间捕捉功能。 l 支持26位PWM功能,可动态调整PWM占空比设置。 8.2 寄存器描述 表8-1 TMR0相关寄存器列表 名称 访问地址 描述 复位值 R8_TMR0_CTRL_MOD 0x40002000 模式设置寄存器 0x02 R8_TMR0_INTER_EN 0x40002002 中断使能寄存器 0x00 R8_TMR0_INT_FLAG 0x40002006 中断标志寄存器 0x00 R8_TMR0_FIFO_COUNT 0x40002007 FIFO 计数寄存器 0x0X R32_TMR0_COUNT 0x40002008 当前计数值寄存器 0x0XXXXXXX R32_TMR0_CNT_END 0x4000200C 计数终值设置寄存器 0x0XXXXXXX R32_TMR0_FIFO 0x40002010 FIFO 寄存器 0x0XXXXXXX 表8-2 TMR1相关寄存器列表 名称 访问地址 描述 复位值 R8_TMR1_CTRL_MOD 0x40002400 模式设置寄存器 0x02 R8_TMR1_CTRL_DMA 0x40002401 DMA 控制寄存器 0x00 R8_TMR1_INTER_EN 0x40002402 中断使能寄存器 0x00 R8_TMR1_INT_FLAG 0x40002406 中断标志寄存器 0x00 R8_TMR1_FIFO_COUNT 0x40002407 FIFO 计数寄存器 0x0X R32_TMR1_COUNT 0x40002408 当前计数值寄存器 0x0XXXXXXX R32_TMR1_CNT_END 0x4000240C 计数终值寄存器 0x0XXXXXXX R32_TMR1_FIFO 0x40002410 FIFO 寄存器 0x0XXXXXXX R16_TMR1_DMA_NOW 0x40002414 DMA 当前缓冲区地址 0x0000XXXX R16_TMR1_DMA_BEG 0x40002418 DMA 起始缓冲区地址 0x0000XXXX R16_TMR1_DMA_END 0x4000241C DMA 结束缓冲区地址 0x0000XXXX 表8-3 TMR2相关寄存器列表 名称 访问地址 描述 复位值 R8_TMR2_CTRL_MOD 0x40002800 模式设置寄存器 0x02 R8_TMR2_CTRL_DMA 0x40002801 DMA 控制寄存器 0x00 R8_TMR2_INTER_EN 0x40002802 中断使能寄存器 0x00 R8_TMR2_INT_FLAG 0x40002806 中断标志寄存器 0x00
R8_TMR2_FIFO_COUNT 0x40002807 FIFO 计数寄存器 0x0X R32_TMR2_COUNT 0x40002808 当前计数值寄存器 0x0XXXXXXX R32_TMR2_CNT_END 0x4000280C 计数终值寄存器 0x0XXXXXXX R32_TMR2_FIFO 0x40002810 FIFO 寄存器 0x0XXXXXXX R16_TMR2_DMA_NOW 0x40002814 DMA 当前缓冲区地址 0x0000XXXX R16_TMR2_DMA_BEG 0x40002818 DMA 起始缓冲区地址 0x0000XXXX R16_TMR2_DMA_END 0x4000281C DMA 结束缓冲区地址 0x0000XXXX 模式设置寄存器(R8_TMRx_CTRL_MOD) (x=0/1/2) 位 名称 访问 描述 复位值 [7:6] RB_TMR_CAP_EDGE RW 捕捉模式下,选择捕捉触发方式: 00:不触发; 01:捕捉任何边沿变化之间的时间; 10:捕捉下降沿到下降沿之间时间; 11:捕捉上升沿到上升沿之间时间。 00b [7:6] RB_TMR_PWM_REPEAT RW PWM 模式下,选择数据重复方式: 00:重复1次;01:重复4 次; 10:重复8次;11:重复16次。 00b
4 RB_TMR_CAP_COUNT RW RB_TMR_MODE_IN=1输入模式的子模式:
1:计数模式; 0:捕捉模式。 0
4 RB_TMR_OUT_POLAR RW
PWM 模式下,输出极性设置位: 1:默认高电平,低电平有效; 0:默认低电平,高电平有效。
3 RB_TMR_OUT_EN RW 定时器输出使能位:
1:输出使能; 0:输出禁止。 0
2 RB_TMR_COUNT_EN RW 定时器计数使能位:
1:使能计数; 0:停止计数。 0
1 RB_TMR_ALL_CLEAR RW 定时器的FIFO/计数器/中断标志清零:
1:强制清空和清零; 0:不清。 1
0 RB_TMR_MODE_IN RW
定时器模式设置位: 1:输入模式(捕捉模式或计数模式); 0:定时模式或PWM模式。 中断使能寄存器(R8_TMRx_INTER_EN) (x=0/1/2) 位 名称 访问 描述 复位值 [7:5] Reserved RO 保留。 000b
4 RB_TMR_IE_FIFO_OV RW
FIFO溢出(捕捉模式FIFO满或PWM模 式FIFO空)中断使能位: 1:使能中断; 0:禁止中断。
3 RB_TMR_IE_DMA_END RW DMA 结束中断使能位(仅TMR1/2支持):
1:使能中断; 0:禁止中断。 0
2 RB_TMR_IE_FIFO_HF RW
FIFO使用过半(捕捉模式FIFO>=4或PWM 模式FIFO<4)中断使能位: 1:使能中断; 0:禁止中断。
1 RB_TMR_IE_DATA_ACT RW
数据激活(捕捉模式指每次捕捉到新数 据,PWM模式指数值触发导致有效电平 结束)中断使能位:
1:使能中断; 0:禁止中断。
0 RB_TMR_IE_CYC_END RW
周期结束(捕捉模式指超时,PWM模式 和定时模式指周期结束)中断使能位: 1:使能中断; 0:禁止中断。 中断标志寄存器(R8_TMRx_INT_FLAG) (x=0/1/2) 位 名称 访问 描述 复位值 [7:5] Reserved RO 保留。 000b
4 RB_TMR_IF_FIFO_OV RW1
FIFO溢出(捕捉模式FIFO满或PWM模 式FIFO空)标志位,写1清零: 1:已溢出; 0:未溢出。
3 RB_TMR_IF_DMA_END RW1 DMA 完成标志位,写1 清零:
1:已完成; 0:未完成。 0
2 RB_TMR_IF_FIFO_HF RW1
FIFO使用过半(捕捉模式FIFO>=4或PWM 模式FIFO<4)标志位,写1 清零: 1:FIFO使用已过半; 0:FIFO使用未过半。
1 RB_TMR_IF_DATA_ACT RW1
数据激活(捕捉模式指每次捕捉到新数 据,PWM模式指数值触发导致有效电平 结束)标志位,写1清零: 1:产生/用了数据;0:未产生/未用。
0 RB_TMR_IF_CYC_END RW1
周期结束(捕捉模式指超时,PWM模式 和定时模式指周期结束)标志位,写1 清零: 1:超时/周期结束;0:未超时/未结束。 FIFO计数寄存器(R8_TMRx_FIFO_COUNT) (x=0/1/2) 位 名称 访问 描述 复位值 [7:0] R8_TMRx_FIFO_COUNT RO FIFO 内数据计数,最大值8。 0x0X 当前计数值寄存器(R32_TMRx_COUNT) (x=0/1/2) 位 名称 访问 描述 复位值 [31:0] R32_TMRx_COUNT RO 计数器当前计数值。 0XXXXXXXh 计数终值设置寄存器(R32_TMRx_CNT_END) (x=0/1/2) 位 名称 访问 描述 复位值 [31:0] R32_TMRx_CNT_END RW 定时器模式下,一个定时周期时钟数; PWM 模式下,PWM单周期总时钟数; 捕捉模式下,捕捉超时时钟数。 仅低26位有效,最大值67108863。 0XXXXXXXh FIFO寄存器(R32_TMRx_FIFO) (x=0/1/2) 位 名称 访问 描述 复位值 [31:0] R32_TMRx_FIFO RO/ WO FIFO数据寄存器,仅低26位有效。 0XXXXXXXh DMA 控制寄存器(R8_TMRx_CTRL_DMA) (x=1/2)(仅TMR1/2支持) 位 名称 访问 描述 复位值
[7:3] Reserved RO 保留。 00000b
2 RB_TMR_DMA_LOOP RW
DMA 地址循环功能使能位: 1:使能地址循环;0:禁止地址循环。 如果使能DMA地址循环,当DMA地址增 加到设置的末尾地址时,自动循环指向 设置的首地址。
0 RB_TMR_DMA_ENABLE RW DMA 功能使能位:
1:使能DMA; 0:禁止DMA。 0 DMA 当前缓冲区地址(R16_TMRx_DMA_NOW) (x=1/2) 位 名称 访问 描述 复位值 [15:0] R16_TMRx_DMA_NOW RO DMA 数据缓冲区当前地址。 可用于计算已转换次数,计算方法: COUNT=(TMR_DMA_NOW-TMR_DMA_BEG)/4。 XXXXh DMA 起始缓冲区地址(R16_TMRx_DMA_BEG) (x=1/2) 位 名称 访问 描述 复位值 [15:0] R16_TMRx_DMA_BEG RW DMA 数据缓冲区起始地址,仅低15位有 效,地址必须4字节对齐。 XXXXh DMA 结束缓冲区地址(R16_TMRx_DMA_END) (x=1/2) 位 名称 访问 描述 复位值 [15:0] R16_TMRx_DMA_END RW DMA 数据缓冲区结束地址(不含),仅低 15位有效,地址必须4字节对齐。 XXXXh 8.3 功能描述及配置 8.3.1 定时、计数功能 芯片的每个定时器都支持最长定时时间2^26 个时钟周期,执行增量计数模式。如果系统时钟周 期为32MHz,则最长定时时间为:31.25nS*2^26≈2S。每个定时器都有独立的中断。 定时功能操作步骤如下: (1)、将RB_TMR_ALL_CLEAR置位,清零R32_TMRx_COUNT和中断标志等; (2)、设置寄存器R32_TMRx_CNT_END为需要定时的时间值; 具体计算方法为:Time = Tsys * R32_TMRx_CNT_END; (3)、清零RB_TMR_ALL_CLEAR,清零RB_TMR_MODE_IN对应定时模式; (4)、可选步骤,设置R8_TMRx_INTER_EN寄存器,置位RB_TMR_IE_CYC_END可打开定时周期中断; (5)、将R8_TMRx_CTRL_MOD寄存器的RB_TMR_COUNT_EN置位,启动定时器计数; (6)、当计数到R32_TMRx_COUNT 等于R32_TMRx_CNT_END 时,定时完成。此时R8_TMRx_INT_FLAG 的
8.3.2 PWM 功能
芯片的每个定时器均具有PWM功能。其中TMR1和TMR2的PWM功能支持DMA数据加载。PWM可设 置默认输出极性为高电平或低电平,同一数据重复输出次数可选为1,4,8 或16 次,该重复功能结 合DMA可以用于模仿DAC的效果。PWM输出有效电平的最短时间单位为1个系统时钟,可动态修改PWM 的占空比,模仿出特殊波形。
PWM 操作步骤如下: (1)、将RB_TMR_ALL_CLEAR置位,清空和清零R32_TMRx_FIFO和中断标志等; (2)、设置PWM总周期寄存器R32_TMRx_CNT_END,该值应该不小于R32_TMRx_FIFO寄存器中的值; (3)、配置R8_TMRx_CTRL_MOD,清零RB_TMR_ALL_CLEAR,清零RB_TMR_MODE_IN对应PWM模式,通过 RB_TMR_OUT_POLAR选择输出极性,根据需要通过RB_TMR_PWM_REPEAT选择同一数据重复次数; (4) 、设置数据寄存器R32_TMRx_FIFO,最小值为0,对应占空比0%,最大值同R32_TMR_CNT_END, 对应占空比100%,占空比计算:R32_TMRx_FIFO/R32_TMRx_CNT_END。TMR1和TMR2可通过DMA加载连 续动态数据,结合同一数据重复输出次数,可以模仿出特殊波形; (5)、配置R8_TMRx_CTRL_MOD,置位RB_TMR_COUNT_EN启动计数和RB_TMR_OUT_EN允许PWM输出; (6)、将PWM对应的I/O引脚设置为输出; (7)、可选步骤,如果需要启用中断则设置相应的中断使能寄存器位; (8)、PWM一个周期完成后,如果开启中断则当RB_TMR_IF_DATA_ACT或RB_TMR_IF_CYC_END置位后会 触发硬件中断; (9)、更新R32_TMRx_FIFO中数据可以动态改变PWM的占空比,建议通过DMA加载。 例如:设置RB_TMR_OUT_POLAR位为0,R32_TMRx_FIFO 为6,R32_TMRx_CNT_END为18,则产生PWM 的基本时序图如下所示,其占空比为:R32_TMRx_FIFO / R32_TMRx_CNT_END = 1/3 图8-1 PWM输出时序图 如果RB_TMR_PWM_REPEAT设置为00则表示上述过程重复1次,01表示重复4次,10表示重复8 次,11表示重复16次。重复之后再加载FIFO中的下一个数据继续。 8.3.3 捕捉功能 芯片的每个定时器都具备捕捉功能,其中TMR1和TMR2的捕捉功能支持DMA数据存储。捕捉模式 可以选择任何边沿触发开始至任何边沿触发结束、上升沿触发开始至上升沿触发结束、下降沿触发开 始至下降沿触发结束三种模式。以下为捕捉触发模式说明表: 表8-5 捕捉触发模式说明表 捕捉模式选择位 RB_TMR_CATCH_EDGE 触发方式 图示 00 不捕捉 无 01 边沿触发 边沿至边沿 10 下降沿至下降沿
11 上升沿至上升沿 边沿触发模式下有2种触发状态,可以捕捉高电平宽度或低电平宽度。数据寄存器R32_TMRx_FIFO 的有效数据的最高位(位25)为1 表示捕捉到的是高电平,为0 表示捕捉到的是低电平。如果连续 多组数据的位25都是1(或0),说明该高(或低)电平的宽度超过超时值,需多组合并累计。 下降沿至下降沿、上升沿至上升沿触发模式下,可以捕捉一个输入变化周期。数据寄存器 R32_TMRx_FIFO的有效数据的最高位(位25)为0表示正常采样到一个周期,为1则表示输入变化周 期超过超时值R32_TMRx_CNT_END,需加上后一组数据累计为单个输入变化周期。 具体说明如下图所示: 图8-2 以系统时钟计数捕捉周期 如上图所示,每个时钟周期内采样一次: 当RB_TMR_CATCH_EDGE=01b时,设置为边沿触发采样,采样到的时间宽度为3、3、10; 当RB_TMR_CATCH_EDGE=10b时,设置为下降沿至下降沿采样,采样到的时间宽度为13; 当RB_TMR_CATCH_EDGE=11b时,设置为上升沿至上升沿采样,采样到的时间宽度为6。 捕捉模式操作步骤: (1)、将RB_TMR_ALL_CLEAR置位,清空和清零R32_TMRx_FIFO和中断标志等; (2)、将捕捉对应的I/O引脚方向设置为输入; (3)、在R32_TMRx_CNT_END中设定合理的捕捉超时时间,可用于在输入信号长时间无变化时产生超时 中断,也可以在输入信号无变化超时后,产生超时数据(数据的位25为1,低25位可向后累计); (4)、配置R8_TMRx_CTRL_MOD,置位RB_TMR_MODE_IN对应捕捉模式,通过RB_TMR_CAP_EDGE选择捕 捉的边沿方式,将R8_TMRx_CTRL_MOD的RB_TMR_COUNT_EN置1,使能计数; (5)、可选步骤,如果需要启用中断则设置相应的中断使能寄存器位; (6)、如果需要采用DMA方式保存捕捉的数据,需要设置寄存器R16_TMRx_DMA_BEG为存储捕捉数据缓 冲区的首地址,设置寄存器R16_TMRx_DMA_END为存储捕捉数据缓冲区的结束地址(不含),并设置 R8_TMRx_CTRL_DMA的RB_TMR_DMA_ENABLE为1,使能DMA功能; (7)、将R8_TMRx_CTRL_MOD的RB_TMR_ALL_CLEAR清零,启动捕捉功能; (8)、每次捕捉到数据,RB_TMR_IF_DATA_ACT都会置1,如果开启中断则会触发硬件中断,捕捉到的 数据默认存放在R32_TMRx_FIFO中,如果开启DMA,则捕捉到的数据会自动存放在DMA设置的数据缓 冲区中。
第9 章 通用异步收发器UART
9.1 UART 简介
芯片提供了2 组全双工的异步串口,UART0/1。支持全双工和半双工串口通讯,其中UART0 提供 发送状态引脚用于切换RS485,并且支持MODEM调制解调器信号CTS、DSR、RI、DCD、DTR、RTS。 9.1.1 主要特性 l 兼容16C550异步串口并且有所增强。 l 支持5、6、7或者8个数据位以及1或者2 个停止位。 l 支持奇、偶、无校验、空白0、标志1 等校验方式。 l 可编程通讯波特率,最高达5Mbps波特率。 l 内置8个字节的FIFO先进先出缓冲器,支持4个FIFO触发级。 l UART0支持MODEM调制解调器信号CTS、DSR、RI、DCD、DTR、RTS。 l UART0支持硬件流控制信号CTS和RTS自动握手和自动传输速率控制,兼容TL16C550C。 l 支持串口帧错误检测、支持Break线路间隔检测。 l 支持全双工和半双工串口通讯,UART0提供发送状态引脚用于切换RS485。 9.2 寄存器描述 表9-1 UART0相关寄存器列表 名称 访问地址 描述 复位值 R8_UART0_MCR 0x40003000 调制解调器MODEM控制寄存器 0x00 R8_UART0_IER 0x40003001 中断使能寄存器 0x00 R8_UART0_FCR 0x40003002 FIFO 控制寄存器 0x00 R8_UART0_LCR 0x40003003 线路控制寄存器 0x00 R8_UART0_IIR 0x40003004 中断识别寄存器 0x01 R8_UART0_LSR 0x40003005 线路状态寄存器 0x60 R8_UART0_MSR 0x40003006 调制解调器MODEM状态寄存器 0xX0 R8_UART0_RBR 0x40003008 接收缓冲寄存器 0xXX R8_UART0_THR 0x40003008 发送保持寄存器 0xXX R8_UART0_RFC 0x4000300A 接收FIFO计数寄存器 0x00 R8_UART0_TFC 0x4000300B 发送FIFO计数寄存器 0x00 R16_UART0_DL 0x4000300C 波特率除数锁存器 0xXX R8_UART0_DIV 0x4000300E 预分频除数寄存器 0xXX R8_UART0_ADR 0x4000300F 从机地址寄存器 0xFF 表9-2 UART1相关寄存器列表 名称 访问地址 描述 复位值 R8_UART1_MCR 0x40003400 调制解调器MODEM控制寄存器 0x00 R8_UART1_IER 0x40003401 中断使能寄存器 0x00 R8_UART1_FCR 0x40003402 FIFO 控制寄存器 0x00 R8_UART1_LCR 0x40003403 线路控制寄存器 0x00 R8_UART1_IIR 0x40003404 中断识别寄存器 0x01 R8_UART1_LSR 0x40003405 线路状态寄存器 0x60 R8_UART1_RBR 0x40003408 接收缓冲寄存器 0xXX R8_UART1_THR 0x40003408 发送保持寄存器 0xXX
R8_UART1_RFC 0x4000340A 接收FIFO计数寄存器 0x00 R8_UART1_TFC 0x4000340B 发送FIFO计数寄存器 0x00 R16_UART1_DL 0x4000340C 波特率除数锁存器 0xXX R8_UART1_DIV 0x4000340E 预分频除数寄存器 0xXX 调制解调器MODEM控制寄存器(R8_UARTx_MCR)(x=0/1) 位 名称 访问 描述 复位值
7 RB_MCR_HALF RW
半双工收发模式控制(仅UART0支持): 1:进入半双工收发模式,发送优先,不 发送时为接收; 0:禁止半双工模式。
6 RB_MCR_TNOW RW
DTR 引脚输出正在发送状态使能(仅 UART0支持): 1:将正在发送指示状态输出到 DTR 引 脚,可以用于控制RS485收发切换; 0:DTR引脚为正常功能。
5 RB_MCR_AU_FLOW_EN RW
CTS 和RTS硬件自动流控使能(仅UART0 支持): 1:启用CTS和RTS硬件自动流控; 0:禁用CTS和RTS硬件自动流控。 流控模式下,如果此位为1,那么仅在 检测到CTS引脚输入有效(低电平有效) 时串口才继续发送下一个数据,否则暂 停串口发送,当此位为1 时的CTS 输入 状态变化不会产生MODEM 状态中断。如 果此位为1 并且RTS 为1,那么当接收 FIFO空时,串口会自动有效RTS引脚(低 电平有效),直到接收的字节数达到FIFO 的触发点时,串口才自动无效RTS引脚, 并能够在接收FIFO空时再次有效RTS引 脚。使用硬件自动流控,可将己方的CTS 引脚接到对方的RTS 引脚,并将己方的 RTS 引脚送到对方的CTS引脚。
4 RB_MCR_LOOP RW
内部回路的测试模式使能(仅UART0 支 持): 1:使能内部回路的测试模式; 0:禁止内部回路的测试模式。 在内部回路的测试模式下,串口所有对 外输出引脚均为无效状态,TXD 内部返 回到RXD,RTS 内部返回到CTS,DTR 内 部返回到DSR,OUT1内部返回到RI,OUT2 内部返回到DCD。
3 RB_MCR_OUT2
RB_MCR_INT_OE RW 串口的中断请求输出控制位: 1:允许发出请求; 0:禁止。 0
2 RB_MCR_OUT1 RW
用户自定义MODEM 控制位(仅UART0 支 持),没有连接实际输出引脚: 1:置高; 0:置低。
1 RB_MCR_RTS RW RTS信号输出电平控制(仅UART0支持):
1:RTS信号输出有效(低电平); 0
0:RTS信号输出高电平(默认)。
0 RB_MCR_DTR RW
DTR信号输出电平控制(仅UART0支持): 1:DTR信号输出有效(低电平); 0:DTR信号输出高电平(默认)。 中断使能寄存器(R8_UARTx_IER)(x=0/1) 位 名称 访问 描述 复位值
7 RB_IER_RESET WZ 串口软件复位控制位,自动清零:
1:软件复位该串口;0:正常工作。 0
6 RB_IER_TXD_EN RW 串口TXD引脚输出使能位:
1:使能引脚输出;0:禁止引脚输出。 0
5 RB_IER_RTS_EN RW RTS 引脚输出使能位(仅UART0支持):
1:使能引脚输出;0:禁止引脚输出。 0
4 RB_IER_DTR_EN RW DTR 引脚输出使能位(仅UART0支持):
1:使能引脚输出;0:禁止引脚输出。 0
3 RB_IER_MODEM_CHG RW
调制解调器输入状态变化中断使能位 (仅UART0支持): 1:使能中断; 0:禁止中断。
2 RB_IER_LINE_STAT RW 接收线路状态中断使能位:
1:使能中断; 0:禁止中断。 0
1 RB_IER_THR_EMPTY RW 发送保持寄存器空中断使能位:
1:使能中断; 0:禁止中断。 0
0 RB_IER_RECV_RDY RW 接收数据中断使能位:
1:使能中断; 0:禁止中断。 0 FIFO控制寄存器(R8_UARTx_FCR)(x=0/1) 位 名称 访问 描述 复位值 [7:6] RB_FCR_FIFO_TRIG RW 接收 FIFO 的中断和硬件流控制的触发 点选择: 00:1字节; 01:2字节; 10:4字节; 11:7字节。 用来设置接收 FIFO 的中断和硬件流控 制的触发点,例如:10对应4 个字节, 即接收满4 个字节产生接收数据可用的 中断,并在使能硬件流控制时自动无效 RTS 引脚。 00b [5:3] Reserved RO 保留。 000b
2 RB_FCR_TX_FIFO_CLR WZ
发送FIFO数据清空使能位,自动清零: 1:清空发送FIFO的数据(不含TSR); 0:不清空发送FIFO的数据。
1 RB_FCR_RX_FIFO_CLR WZ
接收FIFO数据清空使能位,自动清零: 1:清空接收FIFO的数据(不含RSR); 0:不清空接收FIFO的数据。
0 RB_FCR_FIFO_EN RW
FIFO使能位: 1:启用8字节FIFO;0:禁用FIFO。 禁用FIFO后为16C450兼容模式,相当 于FIFO只有一个字节(RECV_TG1=0、 RECV_TG0=0、FIFO_EN=1),建议启用。
线路控制寄存器(R8_UARTx_LCR)(x=0/1) 位 名称 访问 描述 复位值
7 RB_LCR_DLAB
RB_LCR_GP_BIT RW 串口通用位,用户自定义。 0
6 RB_LCR_BREAK_EN RW 强制产生BREAK线路间隔使能位:
1:强制产生; 0:不产生。 0 [5:4] RB_LCR_PAR_MOD RW 奇偶校验位格式选择: 00:奇校验; 01:偶校验; 10:标志位(MARK,置1); 11:空白位(SPACE,清0)。 仅当RB_LCR_PAR_EN位为1 时有效。 00b
3 RB_LCR_PAR_EN RW
奇偶校验位使能位: 1:允许发送时产生和接收时校验奇偶校 验位; 0:无奇偶校验位。
2 RB_LCR_STOP_BIT RW 停止位格式设置位:
0:一个停止位; 1:两个停止位。 0 [1:0] RB_LCR_WORD_SZ RW 串口数据长度选择: 00:5个数据位; 01:6个数据位; 10:7个数据位; 11:8个数据位。 00b 中断识别寄存器(R8_UARTx_IIR)(x=0/1) 位 名称 访问 描述 复位值 [7:6] RB_IIR_FIFO_ID RO 串口FIFO启用状态位: 11:FIFO已启用; 00:FIFO未启用。 00b [5:4] Reserved R0 保留。 00b [3:0] RB_IIR_INT_MASK RO 则表示有中断产生,需要读取后判断中 断源。具体请参看表9-5。 0000b
0 RB_IIR_NO_INT RO 串口无中断标志位:
1:无中断; 0:有中断。 1 中断识别寄存器R8_UARTx_IIR 的RB_IIR_NO_INT 位以及RB_IIR_INT_MASK的每一个位所表示的 含义如下表所示: 表9-5 IIR寄存器中RB_IIR_INT_MASK含义 IIR寄存器位 优先 级 中断类型 中断源 清中断 方法 IID3 IID2 IID1 NOINT 0 0 0 1 无 没有中断产生 没有中断 1 1 1 0 0 总线地址匹配 接收到1 个数据是串口总线地址,且该地 址与预置从机值相匹配或是广播地址。 (仅UART0支持) 读IIR 或禁用多 机模式 0 1 1 0 1 接收线路状态 OVER_ERR 、PAR_ERR、FRAM_ERR、BREAK_ERR 读LSR 0 1 0 0 2 接收数据可用 接收到的字节数达到FIFO的触发点。 读RBR 1 1 0 0 2 接收数据超时 超过4个数据时间未收到下一数据。 读RBR 0 0 1 0 3 THR 寄存器空 发 送 保 持 寄 存器 空 , 或 者 , RB_IER_THR_EMPTY位从0变1 触发。 读IIR 或写THR 0 0 0 0 4 MODEM 输入变化 △CTS、△DSR、△RI、△DCD置1 触发。 读MSR
线路状态寄存器(R8_UARTx_LSR)(x=0/1) 位 名称 访问 描述 复位值
7 RB_LSR_ERR_RX_FIFO RO
接收FIFO错误标志位: 1:接收FIFO中存在至少一个PAR_ERR、 FRAM_ERR或BREAK_ERR错误; 0:接收FIFO中不存在错误。
6 RB_LSR_TX_ALL_EMP RO
发送保持寄存器THR 和发送移位寄存器 TSR 全空标志位: 1:两者全空; 0:两者非全空。
5 RB_LSR_TX_FIFO_EMP RO 发送FIFO空标志位:
1:发送FIFO空; 0:发送FIFO非空。 1
4 RB_LSR_BREAK_ERR RZ BREAK线路间隔检测标志位:
1:检测到BREAK; 0:未检测到BREAK。 0
3 RB_LSR_FRAME_ERR RZ
数据帧错误标志位: 1:表示正在从接收FIFO 中读取的数据 存在帧错误,缺少有效的停止位; 0:当前读取的数据帧没有错误。
2 RB_LSR_PAR_ERR RZ
接收数据奇偶校验错误标志位: 1:表示正在从接收FIFO 中读取的数据 存在奇偶校验错; 0:当前读取的数据奇偶校验正确。
1 RB_LSR_OVER_ERR RZ 接收FIFO缓冲区溢出标志位:
1:已溢出; 0;未溢出。 0
0 RB_LSR_DATA_RDY RO
接收FIFO中有接收到的数据标志位: 1:FIFO中有数据;0:无数据。 读取FIFO中所有数据后,该位自动清0。 调制解调器MODEM状态寄存器(R8_UART0_MSR)(仅UART0支持) 位 名称 访问 描述 复位值
7 RB_MSR_DCD RO
DCD 引脚状态位: 1:DCD引脚有效(低电平); 0:DCD引脚无效(高电平)。 X
6 RB_MSR_RI RO
RI引脚状态位: 1:RI引脚有效(低电平); 0:RI引脚无效(高电平)。 X
5 RB_MSR_DSR RO
DSR 引脚状态位: 1:DSR引脚有效(低电平); 0:DSR引脚无效(高电平)。 X
4 RB_MSR_CTS RO
CTS 引脚状态位: 1:CTS引脚有效(低电平); 0:CTS引脚无效(高电平)。 X
3 RB_MSR_DCD_CHG RZ DCD 引脚输入状态变化标志位:
1:发生过变化; 0:无变化。 0
2 RB_MSR_RI_CHG RZ RI引脚输入状态变化标志位:
1:发生过变化; 0:无变化。 0
1 RB_MSR_DSR_CHG RZ DSR 引脚输入状态变化标志位:
1:发生过变化; 0:无变化。 0
0 RB_MSR_CTS_CHG RZ CTS 引脚输入状态变化标志位:
1:发生过变化; 0:无变化。 0
接收缓冲寄存器(R8_UARTx_RBR)(x=0/1) 位 名称 访问 描述 复位值 [7:0] R8_UARTx_RBR RO 数据接收缓冲寄存器。 如果LSR的DATA_RDY位为1,则可以从 该寄存器读取接收到的数据; 如果FIFO_EN 为1,则从串口移位寄存 器RSR 接收到的数据首先被存放于接收 FIFO中,然后通过该寄存器读出。 XXh 发送保持寄存器(R8_UARTx_THR)(x=0/1) 位 名称 访问 描述 复位值 [7:0] R8_UARTx_THR WO 发送保持寄存器。 包括发送FIFO,用于写入准备发送的数 据;如果FIFO_EN 为1,则写入的数据 首先被存放于发送FIFO中,然后通过发 送移位寄存器TSR逐个输出。 XXh 接收FIFO计数寄存器(R8_UARTx_RFC)(x=0/1) 位 名称 访问 描述 复位值 [7:0] R8_UARTx_RFC RO 当前接收FIFO中数据计数。 00h 发送FIFO计数寄存器(R8_UARTx_TFC)(x=0/1) 位 名称 访问 描述 复位值 [7:0] R8_UARTx_TFC RO 当前发送FIFO中数据计数。 00h 波特率除数锁存器(R16_UARTx_DL)(x=0/1) 位 名称 访问 描述 复位值 [15:0] R16_UARTx_DL RW 16位除数用于计算波特率。 公式:除数 = 串口内部基准时钟Fuart / 16 / 所需通讯波特率。 例:如果串口内部基准时钟 Fuart 为 1.8432MHz,所需波特率为9600bps,则 除数=1843200/16/9600=12。 XXXXh 预分频除数寄存器(R8_UARTx_DIV)(x=0/1) 位 名称 访问 描述 复位值 [7:0] R8_UARTx_DIV RW 用于计算串口的内部基准时钟,低7位 有效。 公式:除数 = Fsys * 2 / 串口内部基 准时钟,最大值127。 XXh 从机地址寄存器(R8_UART0_ADR)(仅UART0支持) 位 名称 访问 描述 复位值 [7:0] R8_UART0_ADR RW 串口0多机通讯时的从机地址: FFh:不使用; 其他:从机地址。 0FFh
R8_UART0_ADR 预置本机作为从机时的地址,用于在多机通讯时自动比较接收到的地址,并在地 址匹配或者在接收到广播地址0FFH 时产生中断,同时允许接收后续数据包。在地址没有匹配之前不 接收任何数据,开始发送数据后或者重写R8_UART0_ADR 寄存器后停止接收任何数据,直到下次地址 再次匹配或者接收到广播地址时再允许接收。 R8_UART0_ADR为0FFH时或者RB_LCR_PAR_EN=0时,禁用总线地址自动比较功能。 R8_UART0_ADR不为0FFH并且RB_LCR_PAR_EN=1时,启用总线地址自动比较功能,同时应该配置 下述参数:RB_LCR_WORD_SZ 为11b 以选择8 个数据位方式,对于地址字节为MARK 的情况(即数据字 节的位9 为0),应设置RB_LCR_PAR_MOD 为10b,对于地址字节为SPACE 的情况(即数据字节的位9 9.3 功能描述及配置 UART0/1输出引脚都是3.3V LVCMOS电平。异步串口方式下引脚包括:数据传输引脚和MODEM联 络信号引脚(仅UART0支持)。数据传输引脚包括:TXD 引脚和RXD引脚,默认都是高电平;MODEM联 络信号引脚包括:CTS 引脚、DSR 引脚、RI 引脚、DCD 引脚、DTR 引脚、RTS 引脚,默认都是高电平。 所有这些MODEM联络信号都可以作为通用I/O引脚,由应用程序控制并定义其用途。 2 组UART 各自拥有独立的收发缓冲区及8 字节FIFO,支持单工、半双工或者全双工异步串行通 讯。串行数据包括1个低电平起始位,5、6、7或8个数据位,0个或者1个附加校验位或者标志位, 1 个或者2 个高电平停止位,支持奇校验/偶校验/标志校验/空白校验。串口发送信号的波特率误差 小于0.5%,串口接收信号的允许波特率误差不大于2%。 9.3.1 波特率计算 1) 计算串口内部基准时钟Fuart,设置R8_UARTx_DIV寄存器,最大值127,通常写入1。 2) 计算波特率,设置R16_UARTx_DL寄存器。 波特率公式 = Fsys * 2 / R8_UARTx_DIV / 16 / R16_UARTx_DL。 9.3.2 串口发送 串口发送的“THR 寄存器空”中断UART_II_THR_EMPTY 是指当前发送FIFO 空。当读取IIR 寄存 器后,该中断被清除,或者当向THR写入下一个数据后,该中断也能被清除。如果仅仅是向THR写入 一个字节,那么由于该字节很快被转移到发送移位寄存器TSR中开始发送,所以很快会再次产生发送 THR 寄存器空中断的请求,此时可以写入下一个准备发送的数据。当TSR寄存器中的数据被全部移出 后,串口发送才真正完成,此时LSR寄存器的RB_LSR_TX_ALL_EMP位变为1有效。 在中断触发方式下,当收到串口发送保持寄存器THR 空的中断后,如果已使能FIFO,那么可以 向THR寄存器及FIFO一次写入最多8字节,然后控制器会按顺序自动发送;如果禁止FIFO,那么一 次只能写入一个字节;如果没有数据需要发送,那么可以直接退出(之前读取IIR时已经自动清除中 断)。 在查询方式下,可以根据LSR寄存器的RB_LSR_TX_FIFO_EMP位判断发送FIFO是否为空,当此位 为1 则可以向THR寄存器及FIFO写入数据,如果使能FIFO,那么一次可以写入最多8 个字节。 也可读取R8_UARTx_TFC寄存器判断当前FIFO中待发送的剩余数据个数,如果不等于8,则可继 续向FIFO中写入待发送数据,这种方式可以节约填充时间。 9.3.3 串口接收 串口接收数据可用中断UART_II_RECV_RDY 是指接收FIFO 中的已有数据字节数已经到或超过由 FCR 寄存器的RB_FCR_FIFO_TRIG设置选择的FIFO 触发点。当从RBR 读取数据使FIFO 字数低于FIFO 触发点时,该中断被清除。 串口接收数据超时中断UART_II_RECV_TOUT 是指接收FIFO 中至少有一个字节的数据,并且从上 一次串口接收到数据和从上一次被系统取走数据开始,已经等待了相当于接收4 个数据的时间。当再
次接收到一个新的数据后,该中断被清除,或者当单片读取一次RBR 寄存器后,该中断也能被清除。 当接收FIFO全空时,LSR寄存器的RB_LSR_DATA_RDY位为0,当接收FIFO中有数据时,RB_LSR_DATA_RDY 位为1有效。 在中断触发方式下,当收到串口接收数据超时的中断后,可以读取R8_UARTx_RFC 寄存器查询当 前FIFO 中剩余数据计数,直接读取全部数据,或者不断查询LSR 寄存器的RB_LSR_DATA_RDY,如果 此位有效则读数据,直到此位无效。当收到串口接收数据可用的中断后,可以先从RBR寄存器一次性 读取RB_FCR_FIFO_TRIG设定字节个数的数据,或者也可以根据RB_LSR_DATA_RDY位和R8_UARTx_RFC 寄存器读取当前FIFO中所有数据。 在查询方式下,可以根据LSR 寄存器的RB_LSR_DATA_RDY 位判断接收FIFO 是否为空,或读取 R8_UARTx_RFC寄存器获取当前FIFO中数据计数,来获取串口接收的所有数据。 9.3.4 硬件流控制 硬件流控制包括自动 CTS(RB_MCR_AU_FLOW_EN 置 1)和自动 RTS(RB_MCR_AU_FLOW_EN 和 RB_MCR_RTS都置1)。 如果使能自动CTS,那么CTS引脚在串口发送数据之前必须有效。串口发送器在发送下一个数据 之前会检测CTS引脚,当CTS引脚状态有效时,发送器发送下一个数据。为了使发送器停止发送后面 的数,CTS引脚必须在当前发送的最后一个停止位的中间时刻之前被无效。自动CTS功能减少了向系 统申请的中断。当使能硬件流控制后,由于控制器会根据CTS引脚状态自动控制发送器,所以CTS引 脚电平的改变不会触发MODEM 中断。如果使能自动RTS,那么仅当FIFO 中有足够空间接收数据时才 使RTS引脚输出有效,而在接收FIFO满时使RTS引脚输出无效。如果接收FIFO中的数据被全部取走 或清空,那么RTS引脚输出有效。当到达接收FIFO的触发点时(接收FIFO中已有字节数不少于FCR 寄存器的RB_FCR_FIFO_TRIG设定的字节数),RTS引脚输出无效,并且允许对方发送器在RTS引脚无 效后再发送一个另外的数据。一旦接收FIFO 被取空数据,RTS 引脚就会自动重新有效,从而使对方 的发送器恢复发送。如果自动 CTS 和自动 RTS 都被使能(MCR 寄存器的 RB_MCR_AU_FLOW_EN 和 RB_MCR_RTS都为1),那么当己方的RTS引脚连接对方的CTS引脚时,除非己方的接收FIFO中有足够 的空间,否则对方不会发送数据。因此,通过这种硬件流控制,可以避免串口接收时的FIFO 溢出和 超时错误。
第10 章 串行外设接口SPI
10.1 SPI 简介
SPI 是一种全双工串行接口,总线上连接有一个主机和若干从机,同一时刻,仅有一对主从在通 讯。通常SPI 接口由4 个引脚组成:SPI 片选引脚SCS、SPI 时钟引脚SCK、SPI 串行数据引脚MISO (主机输入/从机输出引脚)和SPI串行数据引脚MOSI(主机输出/从机输入引脚)。 10.1.1 主要特性 芯片提供SPI接口,特性如下: l 支持主机模式(Master)和从机模式(Slave)。 l 兼容串行外设接口(SPI)规范。 l 支持模式0和模式3数据传输方式。 l 8 位数据传输方式,数据位序可选:字节低位在前或者高位在前。 l 时钟频率最高可达系统主频Fsys的一半。 l 8 字节FIFO。 l 从机模式支持首字节为命令模式或数据流模式。 l 支持DMA,数据传输效率更高。 10.2 寄存器描述 表10-1 SPI0相关寄存器列表 名称 访问地址 描述 复位值 R8_SPI0_CTRL_MOD 0x40004000 SPI0 模式控制寄存器 0x02 R8_SPI0_CTRL_CFG 0x40004001 SPI0 配置寄存器 0x00 R8_SPI0_INTER_EN 0x40004002 SPI0 中断使能寄存器 0x00 R8_SPI0_CLOCK_DIV R8_SPI0_SLAVE_PRE 0x40004003 SPI0主机模式时钟分频寄存器 SPI0从机模式预置数据寄存器 0x10 R8_SPI0_BUFFER 0x40004004 SPI0 数据缓冲区 0xXX R8_SPI0_RUN_FLAG 0x40004005 SPI0 工作状态寄存器 0x00 R8_SPI0_INT_FLAG 0x40004006 SPI0 中断标志寄存器 0x40 R8_SPI0_FIFO_COUNT 0x40004007 SPI0 收发FIFO计数寄存器 0x00 R16_SPI0_TOTAL_CNT 0x4000400C SPI0 收发数据总长度寄存器 0x0000 R8_SPI0_FIFO 0x40004010 SPI0 数据FIFO寄存器 0xXX R8_SPI0_FIFO_COUNT1 0x40004013 SPI0 收发FIFO计数寄存器 0x00 R16_SPI0_DMA_NOW 0x40004014 SPI0 DMA 缓冲区当前地址 0xXXXX R16_SPI0_DMA_BEG 0x40004018 SPI0 DMA 缓冲区起始地址 0xXXXX R16_SPI0_DMA_END 0x4000401C SPI0 DMA 缓冲区结束地址 0xXXXX SPI 模式控制寄存器(R8_SPI0_CTRL_MOD) 位 名称 访问 描述 复位值
7 RB_SPI_MISO_OE RW
MISO引脚输出使能位(可在2 线模式数 据线切换方向使用): 1:MISO输出使能;0:MISO输出禁止。
6 RB_SPI_MOSI_OE RW MOSI引脚输出使能位:
1:MOSI输出使能;0:MOSI输出禁止。 0
5 RB_SPI_SCK_OE RW SCK 引脚输出使能位:
1:SCK输出使能;0:SCK输出禁止。 0
4 RB_SPI_FIFO_DIR RW
FIFO方向设置位: 1:输入模式(指示接收数据); 0:输出模式(指示发送数据)。
3 RB_SPI_SLV_CMD_MOD RW
从机模式下首字节方式选择: 1:首字节命令模式; 0:数据流模式。 在首字节命令模式下,当接收到SPI片 选有效后的首字节数据后,将视为命令
3 RB_SPI_MST_SCK_MOD RW
主机模式时钟空闲方式选择: 1:模式3(空闲时SCK为高电平); 0:模式0(空闲时SCK为低电平)。
2 RB_SPI_2WIRE_MOD RW
从机模式2线或3线SPI模式选择: 1:2线模式/半双工(SCK/MISO); 0:3 线模式/全双工(SCK/MOSI/MISO)。
1 RB_SPI_ALL_CLEAR RW SPI 的FIFO/计数器/中断标志清零:
1:强制清空和清零; 0:不清。 1
0 RB_SPI_MODE_SLAVE RW 主从模式选择:
1:从机模式; 0:主机模式。 0 SPI 配置寄存器(R8_SPI0_CTRL_CFG) 位 名称 访问 描述 复位值
6 RB_SPI_MST_DLY_EN RW
主机模式下输入延迟使能: 1:使能,用于SPI时钟接近Fsys一半 等高速应用; 0:禁止,常规应用。
5 RB_SPI_BIT_ORDER RW SPI 数据位序选择:
1:低位在前; 0:高位在前。 0
4 RB_SPI_AUTO_IF RW
使能访问BUFFER/FIFO时自动清除标志 1:使能; 0:禁止。
2 RB_SPI_DMA_LOOP RW
DMA 地址循环功能使能位: 1:使能地址循环;0:禁止地址循环。 如果使能DMA 地址循环,当DMA 地址增 加到设置的末尾地址时,自动循环指向 设置的首地址。
1 Reserved R0 保留。 0
0 RB_SPI_DMA_ENABLE RW DMA 功能使能位:
1:使能DMA; 0:禁止DMA。 0 SPI 中断使能寄存器(R8_SPI0_INTER_EN) 位 名称 访问 描述 复位值
7 RB_SPI_IE_FST_BYTE RW
从机模式的首字节命令模式下,首字节 接收中断使能位: 1:使能接收到第一个字节中断; 0:禁止接收到第一个字节中断。
[6:5] Reserved R0 保留。 00b
4 RB_SPI_IE_FIFO_OV RW
FIFO溢出(接收时FIFO满或发送时FIFO 空)中断使能位: 1:使能中断; 0:禁止中断。
3 RB_SPI_IE_DMA_END RW DMA 结束中断使能位:
1:使能中断; 0:禁止中断。 0
2 RB_SPI_IE_FIFO_HF RW FIFO使用过半中断使能位:
1:使能中断; 0:禁止中断。 0
1 RB_SPI_IE_BYTE_END RW SPI 单字节传输完成中断使能位:
1:使能中断; 0:禁止中断。 0
0 RB_SPI_IE_CNT_END RW SPI 全部字节传输完成中断使能位:
1:使能中断; 0:禁止中断。 0 SPI 主机模式时钟分频寄存器(R8_SPI0_CLOCK_DIV) 位 名称 访问 描述 复位值 [7:0] R8_SPI_CLOCK_DIV RW 主机模式分频系数,最小值为2。 Fsck = 系统主频Fsys / 分频系数。 10h SPI 从机模式预置数据寄存器(R8_SPI0_SLAVE_PRE) 位 名称 访问 描述 复位值 [7:0] R8_SPI0_SLAVE_PRE RW 从机模式下,预置的首个返回数据。 用于接收首字节数据后的返回数据。 10h SPI 数据缓冲区(R8_SPI0_BUFFER) 位 名称 访问 描述 复位值 [7:0] R8_SPI0_BUFFER RW SPI 数据发送和接收缓冲区。 XXh SPI 工作状态寄存器(R8_SPI0_RUN_FLAG) 位 名称 访问 描述 复位值
7 RB_SPI_SLV_SELECT RO 从机模式被片选状态位:
1:正被选中; 0:没有被片选。 0
6 RB_SPI_SLV_CS_LOAD RO
从机模式被片选后首次加载状态位: 0:尚未加载或者已完成。
5 RB_SPI_FIFO_READY RO
FIFO准备就绪状态位: 1:FIFO就绪(R16_SPI0_TOTAL_CNT非 0,且接收时FIFO未满或发送时FIFO不 空); 0:FIFO未准备好。
4 RB_SPI_SLV_CMD_ACT RO
从机模式下命令接收完成状态位,即交 换完首字节数据: 1:指示刚刚交换完成的是首字节; 0:首字节尚未交换或不是首字节。 [3:0] Reserved R0 保留。 0000b SPI 中断标志寄存器(R8_SPI0_INT_FLAG) 位 名称 访问 描述 复位值
7 RB_SPI_IF_FST_BYTE RW1 从机模式下,接收到首字节标志位: 0
1:已接收到首字节;0:未接收到。
6 RB_SPI_FREE RO 当前SPI空闲状态位:
1:当前SPI空闲;0:当前SPI非空闲。 1
4 RB_SPI_IF_FIFO_OV RW1
FIFO溢出(接收时FIFO满或发送时FIFO 空)标志位,写1 清零: 1:FIFO溢出; 0:FIFO未溢出。
3 RB_SPI_IF_DMA_END RW1 DMA 完成标志位,写1 清零:
1:已完成; 0:未完成。 X
2 RB_SPI_IF_FIFO_HF RW1
FIFO使用过半(接收时FIFO>=4或发送 时FIFO<4)标志位,写1清零: 1:FIFO使用已过半; 0:FIFO使用未过半。
1 RB_SPI_IF_BYTE_END RW1 SPI 单字节传输完成标志位,写1 清零:
1:单字节传输完成;0:传输未完成。 0
0 RB_SPI_IF_CNT_END RW1
SPI 全部字节传输完成标志位,写1 清 1:全部字节传输完成;0:传输未完成。 SPI 收发FIFO计数寄存器(R8_SPI0_FIFO_COUNT) 位 名称 访问 描述 复位值 [7:0] R8_SPI0_FIFO_COUNT RW 当前FIFO中字节计数。 00h SPI 收发FIFO计数寄存器(R8_SPI0_FIFO_COUNT1) 位 名称 访问 描述 复位值 [7:0] R8_SPI0_FIFO_COUNT1 RW 当前FIFO中字节计数。 同R8_SPI0_FIFO_COUNT。 00h SPI 收发数据总长度寄存器(R16_SPI0_TOTAL_CNT) 位 名称 访问 描述 复位值 [15:0] R16_SPI0_TOTAL_CNT RW 主机模式下SPI数据收发总字节数,低 12位有效。在使用DMA时一次最多可以 收发4095个字节。不支持从机模式。 0000h SPI 数据FIFO寄存器(R8_SPI0_FIFO) 位 名称 访问 描述 复位值 [7:0] R8_SPI0_FIFO RO/ WO 数据FIFO寄存器。 XXh 寄存器R8_SPI0_BUFFER和R8_SPI0_FIFO均为SPI数据相关寄存器,主要区别在于: 读R8_SPI0_BUFFER是取自SPI最近一次交换到的数据,不影响FIFO和R8_SPI0_FIFO_COUNT, 主机模式下写R8_SPI0_BUFFER是直接发送该字节,从机模式下写操作未定义; 读R8_SPI0_FIFO是取自FIFO中最早交换到的数据,将减少FIFO和R8_SPI0_FIFO_COUNT, 写R8_SPI0_FIFO是将数据暂存到FIFO中,在从机模式下由外部SPI主机决定何时取走,在主机 模式下当R16_SPI0_TOTAL_CNT非0时自动启动发送。 SPI0 DMA缓冲区当前地址(R16_SPI0_DMA_NOW) 位 名称 访问 描述 复位值 [15:0] R16_SPI0_DMA_NOW RW DMA 数据缓冲区当前地址。 XXXXh
可用于计算已转换次数,计算方法: COUNT=SPI0_DMA_NOW-SPI0_DMA_BEG。 SPI0 DMA缓冲区起始地址(R16_SPI0_DMA_BEG) 位 名称 访问 描述 复位值 [15:0] R16_SPI0_DMA_BEG RW DMA 数据缓冲区起始地址,仅低15位有 效。 XXXXh SPI0 DMA缓冲区结束地址(R16_SPI0_DMA_END) 位 名称 访问 描述 复位值 [15:0] R16_SPI0_DMA_END RW DMA 数据缓冲区结束地址(不含),仅低 15位有效。 XXXXh
10.3 SPI 传输格式
SPI 支持模式0和模式3两种传输格式,通过设置R8_SPI0_CTRL_MOD的RB_SPI_MST_SCK_MOD进 行选择。 数据传输格式如下图所示: 模式0:RB_SPI_MST_SCK_MOD = 0 MSB 6 5 4 3 2 1 LSB MSB 1 2 3 4 5 6 7 8 6 5 4 3 2 1 LSB MSB* Cycle CLK MOSI MISO 模式0时序图 图10-1 SPI模式0传输格式 模式3:RB_SPI_MST_SCK_MOD = 1 MSB 6 5 4 3 2 1 LSB 1 2 3 4 5 6 7 8 6 5 4 3 2 1 LSB Cycle CLK MOSI MISO 模式3时序图 MSBLSB* 图10-2 SPI模式3传输格式
10.4 SPI 配置
10.4.1 SPI 主机模式
SPI 主机模式下,在SCK引脚产生串行时钟,片选引脚可以指定为任意I/O引脚。 配置步骤: (1)、设置R8_SPI0_CLOCK_DIV,配置SPI时钟频率; (2)、设置R8_SPI0_CTRL_MOD的RB_SPI_MODE_SLAVE为0,配置SPI为主机模式; (3)、设置R8_SPI0_CTRL_MOD的RB_SPI_MST_SCK_MOD,选择时钟空闲模式0或模式3;
(4)、设置R8_SPI0_CTRL_MOD的RB_SPI_FIFO_DIR配置FIFO方向,为1 则FIFO用于接收,为0则 FIFO用于发送。 设置GPIO方向配置寄存器(R32_PA/PB_DIR)使MOSI引脚和SCK引脚为输出,MISO引脚为输入; (6)、2 线模式下SCK不变,RB_SPI_MOSI_OE=0,不用MOSI,由MISO 半双工实现输入(同3 线模式, RB_SPI_MISO_OE=0且引脚置为输入)和输出(RB_SPI_MISO_OE=1 且引脚置为输出),手工切换方向; (7)、可选步骤,如果启用DMA,那么需将收发缓冲区起始地址写入R16_SPI_DMA_BEG,结束地址(不 含)写入R16_SPI_DMA_END,建议在设置完RB_SPI_FIFO_DIR 后再置位RB_SPI_DMA_ENABLE,如果确 认R16_SPI0_TOTAL_CNT为0,那么也可在此先设置RB_SPI_DMA_ENABLE为1,使能DMA功能。 数据发送过程: (1)、设置RB_SPI_FIFO_DIR为0,当前FIFO方向为输出; (2)、写R16_SPI0_TOTAL_CNT寄存器,设置要发送的数据长度; (3)、写R8_SPI0_FIFO寄存器,向FIFO中写入要发送的数据,如果R8_SPI0_FIFO_COUNT小于FIFO 容量则可以继续写FIFO,如果是启用DMA,则由DMA自动加载FIFO完成此步骤; (4)、只要R16_SPI0_TOTAL_CNT非0并且FIFO中有数据,SPI主机就会自动发送数据,否则暂停; (5)、等待R16_SPI0_TOTAL_CNT寄存器为0,说明数据发送完成,如果只发送一字节,也可以查询等 待RB_SPI_FREE为空闲、或等待R8_SPI0_FIFO_COUNT为0。 数据接收过程: (1)、设置RB_SPI_FIFO_DIR为1,当前FIFO方向为输入; (2)、写R16_SPI0_TOTAL_CNT寄存器,设置要接收的数据长度; (3)、只要R16_SPI0_TOTAL_CNT非0并且FIFO未满,SPI主机就会自动接收数据,否则暂停; (4)、等待R8_SPI0_FIFO_COUNT寄存器不为0,则说明接收到返回数据,读取R8_SPI0_FIFO中的值 即为接收到的数据,如果是启用DMA,则由DMA自动读取FIFO完成此步骤。
10.4.2 SPI 从机模式
SPI0支持从机模式,在从机模式下,SCK引脚用于接收外部连接的SPI主机的串行时钟。 配置步骤: (1)、设置R8_SPI0_CTRL_MOD的RB_SPI_MODE_SLAVE为1,配置SPI0为从机模式; (2)、根据需要设置R8_SPI0_CTRL_MOD的RB_SPI_SLV_CMD_MOD,选择从机首字节模式或数据流模式; (3)、设置R8_SPI0_CTRL_MOD的RB_SPI_FIFO_DIR,配置FIFO方向,为1则FIFO用于接收,为0 则 FIFO用于发送; 设置GPIO方向配置寄存器(R32_PA/PB_DIR)使MOSI引脚、SCK引脚和SCS引脚为输入,MISO引脚为 输入(支持总线下多个从机连接,被片选后MISO会自动切换为输出,也支持一主一从)或输出(仅 用于一主一从对连)。在SPI从机模式下MISO的I/O引脚方向,除了能够由GPIO方向配置寄存器设 为输出之外,还支持SPI片选有效期间自动切换为输出,但其输出数据由RB_SPI_MISO_OE选择,为 1 时输出SPI数据,为0时输出GPIO数据输出寄存器的数据。建议,设置MISO引脚为输入,使MISO 在片选无效时不输出,便于多机操作时共享SPI总线; (5)、可选的,设置SPI0从机模式预置数据寄存器R8_SPI0_SLAVE_PRE,用于被片选后首次自动加载 到缓冲区中用于对外输出。当8 个时钟过去之后(即首个数据字节在主从双方之间交换完毕),控制 器得到外部SPI 主机发来的首字节数据(命令码),外部SPI 主机交换得到R8_SPI0_SLAVE_PRE中的 预置数据(状态值)。R8_SPI0_SLAVE_PRE 的位7 将在SPI 片选有效后的SCK 低电平期间自动加载到 MISO引脚上,对于SPI模式0(CLK默认为低电平),如果预置了R8_SPI0_SLAVE_PRE的位7,那么外 部SPI主机将在SPI片选有效但尚未传输数据时,就能够通过查询MISO引脚得到R8_SPI0_SLAVE_PRE 的位7的预置值,从而通过仅仅有效一下SPI片选就能快速获得R8_SPI0_SLAVE_PRE的位7的值(通 常是向主机提供一个忙状态,便于主机快速查询); (6)、可选步骤,如果启用DMA,那么需将收发缓冲区起始地址写入R16_SPI_DMA_BEG,结束地址(不
含)写入R16_SPI_DMA_END,必须在设置完RB_SPI_FIFO_DIR后才能置位RB_SPI_DMA_ENABLE。 数据发送过程: (1)、设置R8_SPI0_CTRL_MOD的RB_SPI_FIFO_DIR为0,当前FIFO方向为输出; (2)、可选步骤,如果启用DMA,那么需设置RB_SPI_DMA_ENABLE为1,使能DMA 功能; (3)、将多个发送数据写入到FIFO 寄存器R8_SPI0_FIFO 中,由外部SPI 主机决定何时取走,如果是 启用DMA,则由DMA自动加载FIFO完成此步骤; (4)、查询R8_SPI0_FIFO_COUNT,如果未满则继续向FIFO写入待发送的数据。 数据接收过程: (1)、设置R8_SPI0_CTRL_MOD的RB_SPI_FIFO_DIR为1,当前FIFO方向为输入; (2)、可选步骤,如果启用DMA,那么需设置RB_SPI_DMA_ENABLE为1,使能DMA 功能; (3)、查询R8_SPI0_FIFO_COUNT,如果不空则说明已接收到数据,通过读取R8_SPI0_FIFO取走数据, 如果是启用DMA,则由DMA自动读取FIFO完成此步骤; (4)、单个字节的数据接收,也可以不使用FIFO,可以直接读取R8_SPI0_BUFFER。
第11 章 PWM
11.1 PWM 控制器简介
除了定时器提供的4路26位PWM输出之外,CH578还提供了8路8位PWM输出(PWM4~PWM11), 占空比可调,PWM周期固定可选8种周期,操作简单。 11.2 寄存器描述 表11-1 PWMx相关寄存器列表 名称 访问地址 描述 复位值 R8_PWM_OUT_EN 0x40005000 PWMx输出使能寄存器 0x00 R8_PWM_POLAR 0x40005001 PWMx输出极性配置寄存器 0x00 R8_PWM_CONFIG 0x40005002 PWMx配置控制寄存器 0x0X R8_PWM_CLOCK_DIV 0x40005003 PWMx时钟分频寄存器 0x00 R32_PWM4_7_DATA 0x40005004 PWM4/5/6/7数据保持寄存器 0xXXXXXXXX R8_PWM4_DATA 0x40005004 PWM4数据保持寄存器 0xXX R8_PWM5_DATA 0x40005005 PWM5数据保持寄存器 0xXX R8_PWM6_DATA 0x40005006 PWM6数据保持寄存器 0xXX R8_PWM7_DATA 0x40005007 PWM7数据保持寄存器 0xXX R32_PWM8_11_DATA 0x40005008 PWM8/9/10/11数据保持寄存器 0xXXXXXXXX R8_PWM8_DATA 0x40005008 PWM8数据保持寄存器 0xXX R8_PWM9_DATA 0x40005009 PWM9数据保持寄存器 0xXX R8_PWM10_DATA 0x4000500A PWM10数据保持寄存器 0xXX R8_PWM11_DATA 0x4000500B PWM11数据保持寄存器 0xXX PWMx输出使能寄存器(R8_PWM_OUT_EN) 位 名称 访问 描述 复位值
7 RB_PWM11_OUT_EN RW PWM11输出使能位:
1:使能; 0:禁止。 0
6 RB_PWM10_OUT_EN RW PWM10输出使能位:
1:使能; 0:禁止。 0
5 RB_PWM9_OUT_EN RW PWM9输出使能位:
1:使能; 0:禁止。 0
4 RB_PWM8_OUT_EN RW PWM8输出使能位:
1:使能; 0:禁止。 0
3 RB_PWM7_OUT_EN RW PWM7输出使能位:
1:使能; 0:禁止。 0
2 RB_PWM6_OUT_EN RW PWM6输出使能位:
1:使能; 0:禁止。 0
1 RB_PWM5_OUT_EN RW PWM5输出使能位:
1:使能; 0:禁止。 0
0 RB_PWM4_OUT_EN RW PWM4输出使能位:
1:使能; 0:禁止。 0 PWMx输出极性配置寄存器(R8_PWM_POLAR) 位 名称 访问 描述 复位值
7 RB_PWM11_POLAR RW
PWM11输出极性控制位: 1:默认高电平,低有效; 0:默认低电平,高有效。
6 RB_PWM10_POLAR RW
PWM10输出极性控制位: 1:默认高电平,低有效; 0:默认低电平,高有效。
5 RB_PWM9_POLAR RW
PWM9输出极性控制位: 1:默认高电平,低有效; 0:默认低电平,高有效。
4 RB_PWM8_POLAR RW
PWM8输出极性控制位: 1:默认高电平,低有效; 0:默认低电平,高有效。
3 RB_PWM7_POLAR RW
PWM7输出极性控制位: 1:默认高电平,低有效; 0:默认低电平,高有效。
2 RB_PWM6_POLAR RW
PWM6输出极性控制位: 1:默认高电平,低有效; 0:默认低电平,高有效。
1 RB_PWM5_POLAR RW
PWM5输出极性控制位: 1:默认高电平,低有效; 0:默认低电平,高有效。
0 RB_PWM4_POLAR RW
PWM4输出极性控制位: 1:默认高电平,低有效; 0:默认低电平,高有效。 PWMx配置控制寄存器(R8_PWM_CONFIG) 位 名称 访问 描述 复位值
7 RB_PWM10_11_STAG_EN RW PWM10/11交错输出使能位:
1:交错输出; 0:独立输出。 0
6 RB_PWM8_9_STAG_EN RW PWM8/9交错输出使能位:
1:交错输出; 0:独立输出。 0
5 RB_PWM6_7_STAG_EN RW PWM6/7交错输出使能位:
1:交错输出; 0:独立输出。 0
4 RB_PWM4_5_STAG_EN RW PWM4/5交错输出使能位:
1:交错输出; 0:独立输出。 0 [3:2] RB_PWM_CYC_MOD RW PWM 数据宽度选择: 00:8位数据宽度;01:7位数据宽度; 10:6位数据宽度;11:5位数据宽度。 00b
1 RB_PWM_STAG_ST RO
PWM 交错标志位: 1:指示PWM5/7/9/11被允许输出; 0:指示PWM4/6/8/10被允许输出; X
0 RB_PWM_CYCLE_SEL RW
PWM 周期选择,和PWM数据宽度匹配: 1:255/127/63/31个时钟周期; 0:256/128/64/32个时钟周期。 PWMx时钟分频寄存器(R8_PWM_CLOCK_DIV) 位 名称 访问 描述 复位值 [7:0] R8_PWM_CLOCK_DIV RW PWM 基准时钟分频系数。 00h
Fpwm = Fsys / R8_PWM_CLOCK_DIV。 PWM 数据保持寄存器组1(R32_PWM4_7_DATA) 位 名称 访问 描述 复位值 [31:24] R8_PWM7_DATA RW PWM7 数据保持寄存器。 XXb [23:16] R8_PWM6_DATA RW PWM6 数据保持寄存器。 XXb [15:8] R8_PWM5_DATA RW PWM5 数据保持寄存器。 XXb [7:0] R8_PWM4_DATA RW PWM4 数据保持寄存器。 XXb PWM 数据保持寄存器组2(R32_PWM8_11_DATA) 位 名称 访问 描述 复位值 [31:24] R8_PWM11_DATA RW PWM11 数据保持寄存器。 XXb [23:16] R8_PWM10_DATA RW PWM10 数据保持寄存器。 XXb [15:8] R8_PWM9_DATA RW PWM9 数据保持寄存器。 XXb [7:0] R8_PWM8_DATA RW PWM8 数据保持寄存器。 XXb
11.3 PWM 配置
(1)、设置寄存器R8_PWM_CLOCK_DIV,配置PWM的基准时钟频率; (2)、设置PWM输出极性配置寄存器R8_PWM_POLAR,配置对应PWMx的输出极性; (3)、设置PWM配置控制寄存器R8_PWM_CONFIG,设置PWM的模式、数据位宽、周期; (4)、设置PWM输出使能寄存器R8_PWM_OUT_EN,开启对应的PWMx输出使能; (5)、根据需要的占空比计算出数据,写入对应的数据保持寄存器R8_PWMx_DATA; (6)、设置PWM4-PWM11中所需的PWM引脚方向为输出,可选地,设置相应I/O的驱动能力; (7)、根据需要更新R8_PWMx_DATA中的数据,更新输出占空比。 调整R8_PWMx_DATA寄存器可修改输出PWM的占空比,占空比计算公式: Ncyc = RB_PWM_CYCLE_SEL ? (2^n-1) : (2^n) (其中n=数据位宽),Ncyc结果在63~256之间。 PWMx输出有效电平的占空比 = R8_PWMx_DATA / Ncyc * 100% PWMx输出频率Fpwmout = Fpwm / Ncyc = Fsys / R8_PWM_CLOCK_DIV / Ncyc 如果需要通过PWM产生直流信号,那么可以PWMx输出端使用R/C等电路滤波,建议用时间常数 远大于 4 / Fpwmout的两级RC,或时间常数远大于 100 / Fpwmout的一级RC。
第12 章 LED 屏控制器
12.1 LED 控制器简介
CH578芯片提供了LED屏控制卡接口,内置2字节FIFO,支持DMA 和中断,节约CPU 处理时间, 支持1/2/4 路数据线接口。 12.2 寄存器描述 表12-1 LED相关寄存器列表 名称 访问地址 描述 复位值 R8_LED_CTRL_MOD 0x40006400 LED 模式配置寄存器 0x02 R8_LED_CLOCK_DIV 0x40006401 LED 串行时钟分频寄存器 0x10 R8_LED_STATUS 0x40006404 LED 状态寄存器 0xX0 R16_LED_FIFO 0x40006408 LED 数据FIFO寄存器 0xXXXX R16_LED_DMA_CNT 0x40006410 LED DMA 剩余计数寄存器 0x0000 R16_LED_DMA_MAIN 0x40006414 LED 主缓冲区DMA地址 0xXXXX R16_LED_DMA_AUX 0x40006418 LED 辅助缓冲区DMA地址 0xXXXX LED 模式配置寄存器(R8_LED_CTRL_MOD) 位 名称 访问 描述 复位值 [7:6] RB_LED_CHAN_MOD RW LED 通道模式选择: 00:LED0,单通道输出; 01:LED0/1,双通道输出; 10:LED0~3,4 通道输出; 11:LED0~3,4通道输出,其中LED2/3 通道数据来源辅助缓冲区。 00b
5 RB_LED_IE_FIFO RW
FIFO计数过半中断使能: 1:FIFO计数<=2中断触发; 0:禁止中断。
4 RB_LED_DMA_EN RW LED DMA功能和DMA中断使能:
1:使能; 0:禁止。 0
3 RB_LED_OUT_EN RW LED 信号输出使能:
1:使能; 0:禁止。 0
2 RB_LED_OUT_POLAR RW
LED 数据输出极性控制位: 1:反相,数据0输出1,数据1输出0; 0:直通,数据0输出0,数据1输出1。
1 RB_LED_ALL_CLEAR RW LED 的FIFO/计数器/中断标志清零:
1:强制清空和清零; 0:不清。 1
0 RB_LED_BIT_ORDER RW LED 串行数据位序选择:
1:低位在前; 0:高位在前。 0 LED 串行时钟分频寄存器(R8_LED_CLOCK_DIV) 位 名称 访问 描述 复位值 [7:0] R8_LED_CLOCK_DIV RW LED 输出时钟分频系数。 LEDC频率 = Fsys / R8_LED_CLOCK_DIV。 10h
LED 状态寄存器(R8_LED_STATUS) 位 名称 访问 描述 复位值
7 RB_LED_IF_DMA_END RW1
DMA 完成标志位,写1 清零或者写 R16_LED_DMA_CNT清零: 1:已完成; 0:未完成。
6 RB_LED_FIFO_EMPTY RO FIFO空状态位:
1:FIFO空; 0:FIFO中有数据。 1
5 RB_LED_IF_FIFO RW1
FIFO计数过半中断标志位,写1清零或 者写R16_LED_FIFO清零:
4 RB_LED_CLOCK O 当前LED时钟信号电平状态:
1:高电平; 0:低电平。 X [2:0] RB_LED_FIFO_COUNT RO 当前FIFO中字节计数值,一定偶数。 000b LED 数据FIFO寄存器(R16_LED_FIFO) 位 名称 访问 描述 复位值 [15:0] R16_LED_FIFO WO LED 数据FIFO入口,16位写入。 XXXXb LED DMA剩余计数寄存器(R16_LED_DMA_CNT) 位 名称 访问 描述 复位值 [15:0] R16_LED_DMA_CNT RW LED_DMA_MAIN主缓冲区当前DMA剩余字 (16位)计数,DMA启动后自动递减, 仅低12位有效。不包括辅助缓冲区。 0000b LED 主缓冲区DMA地址(R16_LED_DMA_MAIN) 位 名称 访问 描述 复位值 [15:0] R16_LED_DMA_MAIN RW 主缓冲区DMA起始地址/当前地址,预设 初值后,自动递增,必须2 字节对齐。 XXXXb LED 辅助缓冲区DMA地址(R16_LED_DMA_AUX) 位 名称 访问 描述 复位值 [15:0] R16_LED_DMA_AUX RW 辅助缓冲区DMA起始地址/当前地址,预 设初值后,自动递增,必须2 字节对齐。 XXXXb
12.3 LED 配置
(1)、设置R8_LED_CLOCK_DIV选择LED输出时钟频率; (2)、设置R16_LED_DMA_MAIN指向准备输出数据的缓冲区,即主缓冲区; (3)、如果选择LED通道模式3,那么还要设置R16_LED_DMA_AUX指向辅助缓冲区; (4)、设置R8_LED_CTRL_MOD,选择通道模式、输出极性、位顺序、启用中断和DMA功能等; (5)、设置LEDC和必要的LED0~LED3引脚方向为输出,可选地,设置相应I/O的驱动能力; (6)、设置DMA计数寄存器R16_LED_DMA_CNT,启动DMA发送,或者用写FIFO的方式发送数据。
第13 章 段式LCD 13.1 段式LCD 控制简介 CH578芯片提供了段式LCD控制器接口,可支持96个点(24×4)LCD面板。支持驱动电压可调, 扫描频率可调,支持1/2 duty、1/3 duty、1/4 duty和1/3 bias、1/2 bias规格LCD。 13.2 寄存器描述 表13-1 LCD相关寄存器列表 名称 访问地址 描述 复位值 R8_LCD_CTRL_MOD 0x40006000 LCD 模式配置寄存器 0x00 R32_LCD_RAM0 0x40006004 LCD 数据寄存器组0 0x00000000 R32_LCD_RAM1 0x40006008 LCD 数据寄存器组1 0x00000000 R32_LCD_RAM2 0x4000600C LCD 数据寄存器组2 0x00000000 LCD 模式配置寄存器(R8_LCD_CTRL_MOD) 位 名称 访问 描述 复位值
7 RB_LCD_V_SEL WO
LCD 驱动电压选择: [6:5] RB_LCD_SCAN_CLK RW LCD 扫描时钟频率选择: 00:256Hz; 01:512Hz; 10:1KHz; 11:128Hz。 00b [4:3] RB_LCD_DUTY RW LCD 驱动duty选择: 00:1/2 duty (COM0-COM1); 01:1/3 duty (COM0-COM2); 10:1/4 duty (COM0-COM3)。 00b
2 RB_LCD_BIAS RW LCD 驱动bias选择位:
1:1/3 bias; 0:1/2 bias。 0
1 RB_LCD_POWER_ON RW LCD 模拟电路使能位:
1:使能; 0:关闭。 0
0 RB_SYS_POWER_ON RW LCD 逻辑电路使能位:
1:使能; 0:关闭。 0 LCD 数据寄存器组0(R32_LCD_RAM0) 位 名称 访问 描述 复位值 [31:0] R32_LCD_RAM0 RW SEG0-SEG7 段的数据,每段4 位。 00000000h LCD 数据寄存器组1(R32_LCD_RAM1) 位 名称 访问 描述 复位值 [31:0] R32_LCD_RAM1 RW SEG8-SEG15 段的数据,每段4 位。 00000000h LCD 数据寄存器组2(R32_LCD_RAM2) 位 名称 访问 描述 复位值 [31:0] R32_LCD_RAM2 RW SEG16-SEG23 段的数据,每段4位。 00000000h
13.3 段式LCD 配置 (1)、选择并打开32KHz时钟源; (2)、设置将要用到的LCD驱动管脚为浮空输入,可选,设置R16_PIN_ANALOG_IE以节约系统功耗, 注意,外部复位RST#复用了LCD驱动管脚SEG23,如果要使用SEG23,则要取消外部复位功能; (3)、向LCD数据寄存器R32_LCD_RAM0/1/2加载要显示的段码数据; (4)、配置R8_LCD_CTRL_MOD,设置驱动电压、扫描频率、bias、duty等参数,并将RB_LCD_POWER_ON 和RB_SYS_POWER_ON置位,开启段式LCD驱动; (5)、可以随时更新LCD数据寄存器中的数据,改变显示内容。
第14 章 无线通讯 14.1 简介 芯片集成BLE低功耗2.4-GHz无线通讯模块,包括RF收发器、基带和链路控制以及天线匹配网 络。内部提供一百多个寄存器用于调节参数和控制过程及状态,本手册不对寄存器作详细介绍,只列 出部分应用层常用的寄存器,无线通讯底层操作主要以子程序库提供应用支持。 主要特性: l 集成2.4GHz射频收发器、BaseBand基带和LLE链路控制。 l 支持低功耗蓝牙BLE,符合Bluetooth Low Energy 4.2规范。 l 单端RF接口,无需外部电感和电容匹配滤波网络,简化板级设计。 l 接收灵敏度-93dBm。 l 可编程-20dBm到+3dBm发送功率,支持动态调整。 l 在0dBm发送功率时使用PCB板载天线的无线通讯距离约100米。 l 使用内置DC-DC转换后,0dBm发送功率时电流6mA多。 l 支持AES加解密。 l 支持DMA。 l 提供优化的协议栈和应用层API,支持组网。
14.2 LLE 模块
LLE 模块支持自动收发模式和手动收发模式,5 组独立的硬件定时器,可控制收发数据任意一过 程的时间点。 14.2.1 寄存器描述 表14-1 LLE模块相关寄存器列表 名称 偏移地址 描述 复位值 R32_LLE_CTRL_CMD 0x4000C200 LLE 命令 0x00000000 R32_LLE_CTRL_CFG 0x4000C204 LLE 配置 0x00000F01 R32_LLE_STATUS 0x4000C208 LLE 状态 0x00000000 R32_LLE_INT_EN 0x4000C20C LLE 中断使能 0x00003F1F R32_LLE_CTRL_MOD 0x4000C250 LLE 模式控制 0x00000011 14.2.2 功能及配置 初始化流程: (1)、设置R32_LLE_CTRL_MOD寄存器,写入58H,配置为LLE模式,并且开启电源,使能DMA和 BB 模块功能。 (2)、设置R32_LLE_CTRL_CFG寄存器,配置LLE为自动收发数据模式,手动收发数据模式。 CMD_RX使用:设置当前模式为接收,手动模式下接收完成之后自动清0,自动模式下会一直循 环收发的流程,可通过CMD_STOP或CMD_SHUT停止。 CMD_TX使用:设置当前模式为发送,手动模式下发送完成之后自动清0,自动模式下会一直循 环发收的流程,可通过CMD_STOP或CMD_SHUT停止。 CMD_STOP使用:自动发送模式下,在帧间隔期间CMD_STOP置1,将会清零CMD_TX状态跳转至 LLE_IDLE,软件无法直接清零CMD_TX状态。自动接收模式下,在帧间隔期间CMD_STOP 置1,将会清零CMD_TX状态跳转至LLE_IDLE,软件无法直接清零CMD_RX状态。 CMD_SHUT使用:CMD_SHUT置位后,CMD_TX/CMD_RX/CMD_STOP/CMD_SHUT将会全部清零,同时
LLE的状态机复位。
14.3 DMA 模块
控制器共有2组DMA,每组DMA有两个通道。DMA0的两个通道分别用于发送数据和接收数据,DMA2 的两个通道用于自动模式,在自动发送模式中,可以同时配置发送DMA的地址和接收DMA的地址,这 样在帧间隔期间不需要再进行配置。 14.3.1 寄存器描述 表14-2 DMA模块相关寄存器列表 名称 偏移地址 描述 复位值 R32_DMA0_CTRL_CFG 0x4000C008 DMA0 配置寄存器 0x00002000 R32_DMA2_CTRL_CFG 0x4000C00C DMA2 配置寄存器 0x00002000 R32_DMA0_TX_SRC 0x4000C010 DMA0源地址, 用于配置发送数据起始地址 0x00000000 R32_DMA2_TX_SRC 0x4000C014 DMA2源地址,自动接收模式, 用于配置发送数据起始地址 0x00000000 R32_DMA0_RX_DST 0x4000C018 DMA0目的地址, 用于配置接收数据起始地址 0x00000000 R32_DMA2_RX_DST 0x4000C01C DMA2目的地址,自动发送模式, 用于配置接收数据起始地址 0x00000000 14.3.2 功能及配置 发送操作流程: (3)、设置R32_DMA0_CTRL_CFG寄存器的IRQMASK为1。 (5)、自动模式下,设置R32_DMA2_CTRL_CFG寄存器的IRQMASK为1。 接收操作流程: (2)、设置R32_DMA0_CTRL_CFG寄存器的IRQMASK为1。 (5)、自动模式下,设置R32_DMA2_CTRL_CFG寄存器的IRQMASK为1。
14.4 BB 模块
14.4.1 寄存器描述 表14-3 BB模块相关寄存器列表 名称 偏移地址 描述 复位值 R32_BB_CTRL_CFG 0x4000C100 BB 配置寄存器 0x000822A7 R32_BB_TXCRC_INIT 0x4000C104 发送CRC初始值配置寄存器 0x0056BC9B R32_BB_TXACCS_ADDR 0x4000C108 发送接入地址配置寄存器 0x8E89BED6 R32_BB_RXCRC_INIT 0x4000C10C 接收CRC初始值配置寄存器 0x0056BC9B R32_BB_RXACCS_ADDR 0x4000C110 接收接入地址配置寄存器 0x8E89BED6
R32_BB_CTRL_TX 0x4000C12C 发送控制寄存器 0x00010008 R32_BB_RSSI_ST 0x4000C130 BB 接收信号质量状态 0x00000000 R32_BB_INT_EN 0x4000C134 BB 中断使能 0x00000003 R32_BB_INT_ST 0x4000C138 BB 中断状态 0x00000000 14.4.2 功能及配置 数据白化可配置,发送、接收AA可配置,发送、接收CRC初值可配置,可配置通信频道。 发送数据配置: (1)、配置发送接入地址。 (2)、配置发送CRC初始值。 (3)、配置发送数据的通信频道。 接收数据配置: (1)、配置接收接入地址。 (2)、配置接收CRC初始值。 (3)、配置接收数据的通信频道。
14.5 AES 模块
14.5.1 寄存器描述 表14-4 AES模块相关寄存器列表 名称 偏移地址 描述 复位值 R32_AES_CTRL_CCMMOD 0x4000C300 AES 模式寄存器 0x00000060 R32_AES_CCMINT_EN 0x4000C304 AES 中断寄存器 0x00000000 R32_AES_CCMVT_INIT0 0x4000C308 AES CCM 模式初始矢量值 0x00000000 R32_AES_CCMVT_INIT1 0x4000C30C AES CCM 模式初始矢量值 0x00000000 R32_AES_PKT_CNT0 0x4000C310 AES CCM 模式数据包计数值 0x00000000 R32_AES_PKT_CNT0 0x4000C314 AES CCM 模式数据包计数值 0x00000000 R32_AES_DATA0 0x4000C318 AES 数据寄存器 0x00000000 R32_AES_DATA1 0x4000C31C AES 数据寄存器 0x00000000 R32_AES_DATA2 0x4000C320 AES 数据寄存器 0x00000000 R32_AES_DATA3 0x4000C324 AES 数据寄存器 0x00000000 R32_AES_KEY0 0x4000C328 AES 加密密钥寄存器0 0x00000000 R32_AES_KEY1 0x4000C32C AES 加密密钥寄存器1 0x00000000 R32_AES_KEY2 0x4000C330 AES 加密密钥寄存器2 0x00000000 R32_AES_KEY3 0x4000C334 AES 加密密钥寄存器3 0x00000000 R32_AES_KEY4 0x4000C338 AES 加密密钥寄存器4 0x00000000 R32_AES_KEY5 0x4000C33C AES 加密密钥寄存器5 0x00000000 R32_AES_KEY6 0x4000C340 AES 加密密钥寄存器6 0x00000000 R32_AES_KEY7 0x4000C344 AES 加密密钥寄存器7 0x00000000 R32_AES_RAND0 0x4000C348 AES 随机值 0x96906220 R32_AES_RAND1 0x4000C34c AES 随机值 0x8A3BBF80 R32_AES_RAND2 0x4000C350 AES 随机值 0xB5625304 R32_AES_RAND3 0x4000C354 AES 随机值 0x2A43B7E8 具体的应用请基于BLE协议栈库使用,并参考提供的BLE应用示例。
第15 章 模数转换器ADC
15.1 ADC 简介
CH578芯片提供一个12位逐次逼近型模拟数字转换器ADC,提供多达8 个通道,支持6 个外部信 号源和2 个内部信号源。 15.1.1 主要特性 l 12 位分辨率。 l 6 个外部电压采样通道、内部的温度检测通道、内部的电池电压检测通道。 l 单端输入模式和差分输入模式检测。 l 采样时钟频率可选。 l ADC 输入电压范围0V~VIO33。 l 可选PGA,提供增益调节选择。 l 可选输入缓冲器BUF,支持高阻信号源。 15.1.2 功能描述 下图为一个ADC模块的框图。 图15-1 ADC结构图 15.2 寄存器描述 表15-1 ADC相关寄存器列表 名称 访问地址 描述 复位值 R8_ADC_CHANNEL 0x40001058 ADC 输入通道选择寄存器 0x0F R8_ADC_CFG 0x40001059 ADC 配置寄存器 0xA0 R8_ADC_CONVERT 0x4000105A ADC 转换控制寄存器 0x00 R8_TEM_SENSOR 0x4000105B 温度传感器控制寄存器 0x04 R16_ADC_DATA 0x4000105C ADC 数据寄存器 0x0XXX R8_ADC_INT_FLAG 0x4000105E ADC 中断标志寄存器 0x00 ADC 输入通道选择寄存器(R8_ADC_CHANNEL)
位 名称 访问 描述 复位值 [7:4] Reserved RO 保留。 0000b [3:0] RB_ADC_CH_INX RW ADC 通道索引号,共8 个通道: 00h-05h:外部信号通道AIN0~AIN5; 06h/0Eh:电池电压VBAT; 07h/0Fh:内置温度传感器TS。 1111b ADC 配置寄存器(R8_ADC_CFG) 位 名称 访问 描述 复位值 [7:6] RB_ADC_CLK_DIV RW ADC 时钟频率选择: 00:基于CK32M的10分频,3.2MHz; 01:基于CK32M的12分频,2.67MHz; 10:基于CK32M的6分频,5.33MHz; 11:基于CK32M的8分频,4MHz。 实际采样速率约为时钟频率的1/16。 10b [5:4] RB_ADC_PGA_GAIN RW ADC 的输入PGA增益选择: 00:-12dB,1/4倍; 01:-6dB,1/2倍; 10:0dB,1 倍,无增益; 11:6dB,2 倍。 10b
3 RB_ADC_OFS_TEST RW
ADC 偏移误差测试模式: 1:测试模式(仅通道1支持); 0:正常模式。
2 RB_ADC_DIFF_EN RW ADC 通道信号输入模式:
1:差分输入; 0:单端输入。 0
1 RB_ADC_BUF_EN RW ADC 输入缓冲器BUF使能:
1:开启; 0:关闭。 0
0 RB_ADC_POWER_ON RW ADC 模块电源使能控制:
1:使能; 0:关闭。 0 表15-2 PGA增益选择与输入电压范围表 PGA 增益选择 由ADC转换后的数据 计算被采样的电压Vi 理论可测 电压上限 理论可测电压范围 (假定Vref=1.05V) 建议实际可用 测量电压范围 -12dB(1/4倍) (ADC/512-3)*Vref 5*Vref -0.2V ~ VIO33+0.2V 2.9V ~ VIO33 -6dB(1/2倍) (ADC/1024-1)*Vref 3*Vref -0.2V ~ 3.15V 1.9V ~ 3V 0dB(1倍) (ADC/2048)*Vref 2*Vref 0V ~ 2.1V 0V ~ 2V ADC:ADC转换后的数字量,即R16_ADC_DATA。 Vref:内部模拟电路的电源节点VINTA的实际电压值,通常为1.05V±0.015V。 说明:较低的电压如果进行负增益(信号减小)后采样,可能将会导致一段电压范围内误差大; 而较高的电压如果经过正增益(信号放大)后采样,可能将会导致ADC转换值溢出,因此建议根据被 测信号电压范围选择合理的增益模式。 默认建议开启输入缓冲器,只有当外部信号源内阻小于1KΩ时,才可以关闭输入缓冲器进行ADC。 当采用差分输入时,建议关闭输入缓冲器。当用于TouchKey检测时,必须开启输入缓冲器,且 建议选择0dB(优先)或-6dB两种增益之一。 ADC 转换控制寄存器(R8_ADC_CONVERT) 位 名称 访问 描述 复位值
7 RB_ADC_EOC_X RO ADC 转换结束标志(异步信号):
1:完成; 0:进行中。 0
5 RB_TKEY_CHG_ACT RO TouchKey电容充电状态:
1:电容充电中; 0:没有在充电。 0
4 RB_TKEY_ACTION RO
TouchKey操作状态: 1:充电或放电或ADC转换中; 0:空闲状态。
3 RB_TKEY_PWR_ON RW TouchKey模块电源使能控制:
1:使能; 0:关闭。 0 [2:1] Reserved RO 保留。 00b
0 RB_ADC_START RW ADC 转换启动控制及状态,自动清零:
1:开始转换/正在转换;0:停止转换。 0 温度传感器控制寄存器(R8_TEM_SENSOR) 位 名称 访问 描述 复位值
7 RB_TEM_SEN_PWR_ON RW TS温度传感器电源使能控制:
1:使能; 0:关闭。 0 [6:3] Reserved RW 保留。 0000b [2:0] RB_TEM_SEN_CALIB RW TS 温度传感器校准值,需保持不变。 100b ADC 数据寄存器(R16_ADC_DATA) 位 名称 访问 描述 复位值 [15:12] Reserved RW 保留。 0000b [11:0] RB_ADC_DATA RO ADC 转换后的数据。 XXXh ADC 中断标志寄存器(R8_ADC_INT_FLAG) 位 名称 访问 描述 复位值
7 RB_ADC_IF_EOC RO
ADC 转换完成中断标志。 对寄存器R8_ADC_CONVERT进行写操作 可清零此标志。 [6:0] Reserved RW 保留。 0000000b
15.3 ADC 配置
15.3.1 外部通道采样 (1)、设置R8_ADC_CFG的RB_ADC_POWER_ON为1 开启ADC,通过RB_ADC_CLK_DIV选择采样频率,通 过RB_ADC_BUF_EN和RB_ADC_PGA_GAIN启用输入缓冲器及选择信号增益等; (2)、设置R8_ADC_CHANNEL寄存器,选择外部或内部信号通道; (3)、设置R8_ADC_CONVERT寄存器,置位RB_ADC_START,启动ADC转换; (4)、查询等待RB_ADC_START自动清零或者等待RB_ADC_IF_EOC置1,表示转换完成,可以读取 R16_ADC_DATA获取12位ADC转换数据,时间足够时建议再次转换并丢弃首次ADC 数据; (5)、重复2、3、4步骤,可以继续采样另一通道或者下一组数据。 (6)、单次ADC转换周期:ADC采样(4个时钟) + 转换时间(12个时钟)≈ 16 个Tadc,连续ADC 时还要加上1 个时间间隔,其中,Tadc = Tsys @ RB_ADC_CLK_DIV。 (7)、如果使用差分输入: 使能差分,选择0#通道:实际是对AIN0(正端)和AIN2(负端)的电压进行差分转换;
使能差分,选择1#通道:实际是对AIN1(正端)和AIN3(负端)的电压进行差分转换; ADC 转换后的结果,如果数据大于0x800表示差分正端的电压高于差分负端的电压;如果数据 小于0x800表示差分正端的电压低于差分负端的电压。以PGA增益选择0dB为例,理论可测电 压范围为-1.05V~1.05V,0x400表示差分正端的电压低于差分负端的电压约0.5 个Vref。 15.3.2 温度传感器采样 (1)、设置R8_TEM_SENSOR寄存器的RB_TEM_SEN_PWR_ON为1 开启温度传感器,设置R8_ADC_CHANNEL 为15,选择温度传感器信号连接到ADC输入; (2)、设置RB_ADC_POWER_ON为1开启ADC,清零RB_ADC_DIFF_EN,设置RB_ADC_CLK_DIV,设置 RB_ADC_BUF_EN为1,设置RB_ADC_PGA_GAIN为0dB增益; (3)、设置R8_ADC_CONVERT寄存器,置位RB_ADC_START为1,启动ADC转换; (4)、查询等待RB_ADC_START自动清零或者等待RB_ADC_IF_EOC置1,读取R16_ADC_DATA获取12位 ADC 转换数据,精度要求较高时,建议重复3和4步骤多次,计算ADC数据的平均值; (5)、根据电压与温度换算关系得到温度值,具体请参考评估板例子程序。
第16 章 触摸按键Touch-Key
16.1 Touch-Key 简介
CH578芯片提供了电容检测模块,配合ADC模块使用,可以实现电容类触摸按键检测功能。共6 个输入通道,支持触摸按键电容值范围10pF~100pF。 16.2 寄存器描述 表16-1 TouchKey相关寄存器列表 名称 访问地址 描述 复位值 R8_TKEY_CTRL 0x4000105A TouchKey 控制寄存器 0x00 R8_TKEY_CNT 0x4000105F TouchKey 充放电时间配置寄存器 0x00 寄存器R8_TKEY_CTRL是R8_ADC_CONVERT的别名。 TouchKey控制寄存器(R8_TKEY_CTRL) 位 名称 访问 描述 复位值
7 RB_ADC_EOC_X RO ADC 转换结束标志。
1:完成; 0:进行中。 0 1:电容充电中; 0:没有在充电。 0 TouchKey操作状态: 1:充电或放电或ADC转换中; 0:空闲状态。 1:使能; 0:关闭。 0 [2:1] Reserved RO 保留。 00b 1:开始转换/正在转换;0:停止转换。 0 TouchKey充放电时间配置寄存器(R8_TKEY_CNT) 位 名称 访问 描述 复位值 [7:0] R8_TKEY_CNT W0 Touch-Key充放电周期数(以Tsys计)。 完整8位是充电周期数。 建议不小于0x10。 放电周期数根据充电周期数自动产生。 当充电周期数小于128 时,放电周期数 为8;当充电周期数大于或等于128时, 放电周期数为14。 00h
16.3 Touch-Key 配置
(1)、设置RB_ADC_POWER_ON为1开启ADC,清零RB_ADC_DIFF_EN,设置RB_ADC_CLK_DIV,设置 RB_ADC_BUF_EN为1,设置RB_ADC_PGA_GAIN为0dB或-6dB增益,后者用于更小电容; (2)、设置R8_TKEY_CTRL的RB_TKEY_PWR_ON为1,启用TouchKey模块; (3)、设置R8_ADC_CHANNEL选择目标按键所在通道;
(4)、可选的,如果使用中断方式,那么必须写R8_TKEY_CTRL以清零RB_ADC_IF_EOC,同步骤2; (5)、估算目标按键电容,计算其充电时间,将充电周期数写入R8_TKEY_CNT寄存器,计算: 充电周期数R8_TKEY_CNT = ( Ckey + 5pF寄生 ) * Vkey / Ikey / Tsys, (其中,0dB增益时Vkey建议1.6V,-6dB增益时Vkey建议2.4V,Ikey约为35uA) 假定触摸按键外部电容Ckey=35pF,Fsys=16MHz,那么R8_TKEY_CNT=29, 当计算结果小于16时用16,在110与128之间时用128; (6)、查询等待RB_TKEY_ACTION为0(或者,如果之前清零过则可等待RB_ADC_IF_EOC置1),读取 R16_ADC_DATA获取12位ADC转换数据,与同一通道的历次数值比较,分析判断出按键是否按下,建 议用软件分析去除干扰; (7)、重复3、4、5、6步骤,可以继续检测下一通道的按键。 (8)、如果使用中断方式,那么将在中断服务程序中重复以下4个步骤:6 读取数据和判断、4或2清 中断标志、3选择通道、5启动检测。
第17 章 USB 控制器
17.1 USB 控制器简介
CH578芯片内嵌USB主从控制器及收发器,特性如下: l 支持USB Host主机功能和USB Device设备功能。 l 支持USB2.0全速12Mbps或者低速1.5Mbps。 l 支持USB控制传输、批量传输、中断传输、同步/实时传输。 l 支持最大64字节的数据包,内置FIFO,支持中断和DMA。 17.2 寄存器描述 USB 相关寄存器分为3个部分,部分寄存器是在主机和设备模式下进行复用的。 (1)、USB全局寄存器 (2)、USB设备控制寄存器 (3)、USB主机控制寄存器 17.2.1 全局寄存器描述 表17-1 USB相关寄存器列表(标灰受RB_UC_RESET_SIE复位控制) 名称 访问地址 描述 复位值 R8_USB_TYPE_C_CTRL 0x40008038 USB type-C 配置寄存器 0x00 R8_USB_CTRL 0x40008000 USB 控制寄存器 0x06 R8_USB_INT_EN 0x40008002 USB 中断使能寄存器 0x00 R8_USB_DEV_AD 0x40008003 USB 设备地址寄存器 0x00 R32_USB_STATUS 0x40008004 USB 状态寄存器 0xXX20XXXX R8_USB_MIS_ST 0x40008005 USB 杂项状态寄存器 0xXX R8_USB_INT_FG 0x40008006 USB 中断标志寄存器 0x20 R8_USB_INT_ST 0x40008007 USB 中断状态寄存器 0xXX R8_USB_RX_LEN 0x40008008 USB 接收长度寄存器 0xXX USB type-C配置寄存器(R8_USB_TYPE_C_CTRL) 位 名称 访问 描述 复位值
7 RB_UTCC_GP_BIT RW USB 通用标志位,用户自定义。 0
6 RB_UCC2_PD_EN RW UCC2引脚的内部5.1K下拉电阻: 1:使能; 0:禁止。 0 [5:4] RB_UCC2_PU_EN RW UCC2引脚内部上拉电阻控制位: 00:禁止内部上拉电阻; 01:开启内部36K上拉,提供默认USB电 10:开启内部12K上拉,可提供1.5A电流; 11:开启内部4.7K上拉,可提供3A电流。 00b
3 RB_VBUS_PD_EN RW VBUS引脚内部10K下拉电阻:
1:使能; 0:禁止。 0 2 RB_UCC1_PD_EN RW UCC1引脚的内部5.1K下拉电阻: 1:使能; 0:禁止。 0 [1:0] RB_UCC1_PU_EN RW UCC1引脚内部上拉电阻控制位: 00:禁止内部上拉电阻; 00b
01:开启内部36K上拉,提供默认USB电 10:开启内部12K上拉,可提供1.5A电流; 11:开启内部4.7K上拉,可提供3A电流。 上述USB type-C上拉电阻和下拉电阻独立于GPIO端口方向控制和上拉电阻使能寄存器所控制的 端口上拉电阻,当一引脚用于USB type-C 时,应该禁止该引脚对应的端口上拉电阻,建议对该引脚 启用高阻输入模式(避免该引脚输出低电平或者高电平)。 USB 控制寄存器(R8_USB_CTRL) 位 名称 访问 描述 复位值
7 RB_UC_HOST_MODE RW
USB 工作模式选择位: 1:主机模式(HOST); 0:设备模式(DEVICE)。
6 RB_UC_LOW_SPEED RW USB 总线信号传输速率选择位:
1:1.5Mbps; 0:12Mbps。 0
5 RB_UC_DEV_PU_EN RW
USB 设备模式下,USB设备使能和内部上 拉电阻控制位,为1则使能USB设备传 输并且启用内部上拉电阻。 [5:4] MASK_UC_SYS_CTRL RW 见下表配置USB系统。 00b
3 RB_UC_INT_BUSY RW
USB 传输完成中断标志未清零前自动暂 停使能位: 1:在中断标志UIF_TRANSFER 未清零前 自动暂停,设备模式下自动应答忙NAK, 主机模式下自动暂停后续传输; 0:不暂停。
2 RB_UC_RESET_SIE RW
USB 协议处理器软件复位控制位: 1:强制复位USB协议处理器(SIE),需 要软件清零; 0:不复位。
1 RB_UC_CLR_ALL RW USB 的FIFO和中断标志清零:
1:强制清空和清零; 0:不清。 1
0 RB_UC_DMA_EN RW
USB 的DMA和DMA中断控制位: 1:使能DMA功能和DMA中断; 0:关闭DMA。 由RB_UC_HOST_MODE和MASK_UC_SYS_CTRL组成USB系统控制组合: RB_UC_HOST_MODE MASK_UC_SYS_CTRL USB 系统控制描述 0 00 禁止USB设备功能,关闭内部上拉电阻。 0 01 使能USB设备功能,关闭内部上拉电阻,需加外部上拉。 0 1x 使能USB设备功能,启用内部1.5K上拉电阻。该上拉 电阻优先于下拉电阻,也可用于GPIO模式。 1 00 USB 主机模式,正常工作状态。 1 01 USB 主机模式,强制DP/DM输出SE0状态。 1 10 USB 主机模式,强制DP/DM输出J 状态。 1 11 USB 主机模式,强制DP/DM输出K 状态/唤醒。 USB 中断使能寄存器(R8_USB_INT_EN) 位 名称 访问 描述 复位值
7 RB_UIE_DEV_SOF RW USB 设备模式,接收SOF包中断:
1:使能中断; 0:禁止中断。 0
6 RB_UIE_DEV_NAK RW USB 设备模式,接收到NAK中断:
1:使能中断; 0:禁止中断。 0
4 RB_UIE_FIFO_OV RW FIFO溢出中断:
1:使能中断; 0:禁止中断。 0
3 RB_UIE_HST_SOF RW USB 主机模式,SOF定时中断:
1:使能中断; 0:禁止中断。 0
2 RB_UIE_SUSPEND RW USB 总线挂起或唤醒事件中断:
1:使能中断; 0:禁止中断。 0
1 RB_UIE_TRANSFER RW USB 传输完成中断:
1:使能中断; 0:禁止中断。 0 RB_UIE_DETECT RW USB 主机模式,USB设备连接或断开事件 中断: 1:使能中断; 0:禁止中断。 RB_UIE_BUS_RST RW USB 设备模式,USB总线复位事件中断: 1:使能中断; 0:禁止中断。 0 USB 设备地址寄存器(R8_USB_DEV_AD) 位 名称 访问 描述 复位值
7 RB_UDA_GP_BIT RW USB 通用标志位,用户自定义。 0
[6:0] MASK_USB_ADDR RW 主机模式:当前操作的USB设备地址; 设备模式:该USB自身地址。 0000000b USB 杂项状态寄存器(R8_USB_MIS_ST) 位 名称 访问 描述 复位值
7 RB_UMS_SOF_PRES RO
USB 主机模式下SOF包预示状态位: 1:将要发送SOF包,此时如有其它USB 数据包将被自动延后; 0:无SOF包发送。 X
6 RB_UMS_SOF_ACT RO
USB 主机模式下SOF包传输状态位: 1:正在发出SOF包; 0:发送完成或者空闲。 X
5 RB_UMS_SIE_FREE RO
USB 协议处理器的空闲状态位: 1:协议器空闲; 0:忙,正在进行USB传输。
4 RB_UMS_R_FIFO_RDY RO
USB 接收FIFO数据就绪状态位: 1:接收FIFO非空; 0:接收FIFO为空。
3 RB_UMS_BUS_RESET RO
USB 总线复位状态位: 1:当前USB总线处于复位态; 0:当前USB总线处于非复位态。 X
2 RB_UMS_SUSPEND RO
USB 挂起状态位: 1:USB总线处于挂起态,有一段时间没 有USB活动; 0:USB总线处于非挂起态。
1 RB_UMS_DM_LEVEL RO USB 主机模式下,设备刚连入USB 端口 0
是DM引脚的电平状态,用于判断速度: 1:高电平/低速; 0:低电平/全速。
0 RB_UMS_DEV_ATTACH RO
USB 主机模式下端口的USB 设备连接状 态位: 1:端口已经连接USB设备; 0:端口没有USB设备连接。 USB 中断标志寄存器(R8_USB_INT_FG) 位 名称 访问 描述 复位值
7 RB_U_IS_NAK RO
USB 设备模式下,NAK响应状态位: 1:当前USB传输过程中回应NAK; 0:无NAK响应。
6 RB_U_TOG_OK RO
当前USB传输DATA0/1同步标志匹配状 态位: 1:同步; 0:不同步。
5 RB_U_SIE_FREE RO
USB 协议处理器空闲状态位: 1:USB空闲; 0:忙,正在进行USB传输。
4 RB_UIF_FIFO_OV RW USB FIFO溢出中断标志位,写1清零:
1:FIFO溢出触发; 0:无事件。 0
3 RB_UIF_HST_SOF RW
USB 主机模式下SOF 定时中断标志位, 写1 清零: 1:SOF包传输完成触发;0:无事件。
2 RB_UIF_SUSPEND RW
USB 总线挂起或唤醒事件中断标志位, 写1 清零: 1:USB挂起事件或唤醒事件触发; 0:无事件。
1 RB_UIF_TRANSFER RW USB 传输完成中断标志位,写1清零:
1:一个USB传输完成触发;0:无事件。 0 RB_UIF_DETECT RW USB 主机模式下USB 设备连接或断开事 件中断标志位,写1清零: 1:检测到USB设备连接或断开触发; 0:无事件。 RB_UIF_BUS_RST RW USB 设备模式下USB 总线复位事件中断 标志位,写1 清零: 1:USB总线复位事件触发; 0:无事件。 USB 中断状态寄存器(R8_USB_INT_ST) 位 名称 访问 描述 复位值
7 RB_UIS_IS_NAK RO
USB 设备模式下,NAK 响应状态位,同 RB_U_IS_NAK: 1:当前USB传输过程中回应NAK; 0:无NAK响应。
6 RB_UIS_TOG_OK RO
当前USB传输DATA0/1同步标志匹配状 1:同步; 0:不同步。 [5:4] MASK_UIS_TOKEN RO 设备模式下,当前USB传输事务的令牌 XXb
PID 标识。 [3:0] MASK_UIS_ENDP RO 设备模式下,当前USB 传输事务的端点 号。 XXXXb MASK_UIS_H_RES RO 主机模式下,当前USB 传输事务的应答 PID 标识,0000表示设备无应答或超时; 其它值表示应答PID。 XXXXb MASK_UIS_TOKEN用于USB 设备模式下标识当前USB 传输事务的令牌PID:00 表示OUT 包;01 表 示SOF包;10表示IN包;11表示SETUP包。 MASK_UIS_H_RES 仅在主机模式下有效。在主机模式下,若主机发送OUT/SETUP 令牌包时,则该 PID 是握手包ACK/NAK/STALL,或者是设备无应答/超时。若主机发送IN 令牌包,则该PID 是数据包 的PID(DATA0/DATA1)或者握手包PID。 USB 接收长度寄存器(R8_USB_RX_LEN) 位 名称 访问 描述 复位值 [7:0] R8_USB_RX_LEN RO 当前USB端点接收的数据字节数。 XXh 17.2.2 设备寄存器描述 在USB设备模式下,芯片提供了端点0、1、2、3、4 共5组双向端点,所有端点的最大数据包长 度都是64字节。 端点0是默认端点,支持控制传输,发送和接收共用一个64字节数据缓冲区。 端点1、端点2、端点3各自包括一个发送端点IN和一个接收端点OUT,发送和接收各有一个独立的 64 字节或者双64字节数据缓冲区,支持批量传输、中断传输和实时/同步传输。 端点4包括一个发送端点IN和一个接收端点OUT,发送和接收各有一个独立的64字节数据缓冲 区,支持批量传输、中断传输和实时/同步传输。 每组端点都具有一个控制寄存器R8_UEPn_CTRL和发送长度寄存器R8_UEPn_T_LEN(n=0/1/2/3/4), 用于设定该端点的同步触发位、对OUT事务和IN事务的响应以及发送数据的长度等。 作为USB设备所必要的USB总线上拉电阻可以由软件随时设置是否启用,当USB 控制寄存器 R8_USB_CTRL中的RB_UC_DEV_PU_EN置1时,控制器根据RB_UD_LOW_SPEED的速度设置,在内部为USB 总线的DP/DM引脚连接上拉电阻,并启用USB设备功能。 当检测到USB总线复位、USB总线挂起或唤醒事件,或者当USB成功处理完数据发送或者数据接 收后,USB协议处理器都将设置相应的中断标志,如果中断使能打开,还会产生相应的中断请求。应 用程序可以直接查询或在USB中断服务程序中查询并分析中断标志寄存器R8_USB_INT_FG,根据 RB_UIF_BUS_RST和RB_UIF_SUSPEND进行相应的处理;并且,如果RB_UIF_TRANSFER有效,那么还需 要继续分析USB中断状态寄存器R8_USB_INT_ST,根据当前端点号MASK_UIS_ENDP和当前事务令牌PID 标识MASK_UIS_TOKEN进行相应的处理。如果事先设定了各个端点的OUT事务的同步触发位 RB_UEP_R_TOG,那么可以通过RB_U_TOG_OK 或者RB_UIS_TOG_OK判断当前所接收到的数据包的同步 触发位是否与该端点的同步触发位匹配,如果数据同步,则数据有效;如果数据不同步,则数据应该 被丢弃。每次处理完USB发送或者接收中断后,都应该正确修改相应端点的同步触发位,用于下次所 发送的数据包或者下次所接收的数据包是否同步检测;另外,设置RB_UEP_AUTO_TOG可以实现在发送 成功或者接收成功后自动翻转相应的同步触发位。 各个端点准备发送的数据在各自的缓冲区中,准备发送的数据长度是独立设定在R8_UEPn_T_LEN 中;各个端点接收到的数据在各自的缓冲区中,但是接收到的数据长度都在USB 接收长度寄存器 R8_USB_RX_LEN中,可以在USB接收中断时根据当前端点号区分。 表17-2 USB设备相关寄存器列表(标灰受RB_UC_RESET_SIE复位控制) 名称 访问地址 描述 复位值 R8_UDEV_CTRL 0x40008001 USB 设备物理端口控制寄存器 0xX0 R8_UEP4_1_MOD 0x4000800c 端点1/4模式控制寄存器 0x00
R8_UEP2_3_MOD 0x4000800d 端点2/3模式控制寄存器 0x00 R16_UEP0_DMA 0x40008010 端点0缓冲区起始地址 0xXXXX R16_UEP1_DMA 0x40008014 端点1缓冲区起始地址 0xXXXX R16_UEP2_DMA 0x40008018 端点2缓冲区起始地址 0xXXXX R16_UEP3_DMA 0x4000801c 端点3缓冲区起始地址 0xXXXX R8_UEP0_T_LEN 0x40008020 端点0发送长度寄存器 0xXX R8_UEP0_CTRL 0x40008022 端点0控制寄存器 0x00 R8_UEP1_T_LEN 0x40008024 端点1发送长度寄存器 0xXX R8_UEP1_CTRL 0x40008026 端点1控制寄存器 0x00 R8_UEP2_T_LEN 0x40008028 端点2发送长度寄存器 0xXX R8_UEP2_CTRL 0x4000802a 端点2控制寄存器 0x00 R8_UEP3_T_LEN 0x4000802c 端点3发送长度寄存器 0xXX R8_UEP3_CTRL 0x4000802e 端点3控制寄存器 0x00 R8_UEP4_T_LEN 0x40008030 端点4发送长度寄存器 0xXX R8_UEP4_CTRL 0x40008032 端点4控制寄存器 0x00 USB 设备物理端口控制寄存器(R8_UDEV_CTRL) 位 名称 访问 描述 复位值
7 RB_UD_PD_DIS RW
USB 设备端口 UD+/UD-引脚内部下拉电 阻控制位: 1:禁用内部下拉;0:使能内部下拉。 可用于GPIO模式提供下拉电阻。
5 RB_UD_DP_PIN RO 当前UD+引脚状态:
1:高电平; 0:低电平。 X
4 RB_UD_DM_PIN RO 当前UD-引脚状态:
1:高电平; 0:低电平。 X
2 RB_UD_LOW_SPEED RW
USB 设备物理端口低速模式使能位: 1:选择1.5Mbps低速模式; 0:选择12Mbps低速模式。
1 RB_UD_GP_BIT RW USB 设备模式通用标志位,用户自定义。 0
0 RB_UD_PORT_EN RW USB 设备物理端口使能位:
1:使能物理端口;0:禁用物理端口。 0 端点1/4模式控制寄存器(R8_UEP4_1_MOD) 位 名称 访问 描述 复位值 0:禁止端点1接收。 0 0:禁止端点1发送。 0
4 RB_UEP1_BUF_MOD RW 端点1数据缓冲区模式控制位。 0
0:禁止端点4接收。 0 0:禁止端点4发送。 0 [1:0] Reserved RO 保留。 0
bUEP4_RX_EN和bUEP4_TX_EN组合配置USB端点0和4 的数据缓冲区模式,具体参考下表: 表17-3 端点0和4缓冲区模式 bUEP4_RX_EN bUEP4_TX_EN 描述:以UEP0_DMA为起始地址由低向高排列 0 0 端点0单64字节收发共用缓冲区(IN和OUT)。 1 0 端点0单64字节收发共用缓冲区;端点4单64字节接收缓冲区(OUT)。 0 1 端点0单64字节收发共用缓冲区;端点4单64字节发送缓冲区(IN)。 1 1 端点0单64字节收发共用缓冲区;端点4单64字节接收缓冲区(OUT); 端点4单64字节接收缓冲区(IN)。总共192字节排列如下: UEP0_DMA+0地址:端点0收发共用缓冲区64字节起始地址; UEP0_DMA+64地址:端点4 接收缓冲区64字节起始地址; UEP0_DMA+128地址:端点4 发送缓冲区64字节起始地址。 端点2/3模式控制寄存器(R8_UEP2_3_MOD) 位 名称 访问 描述 复位值 0:禁止端点3接收。 0 0:禁止端点3发送。 0
4 RB_UEP3_BUF_MOD RW 端点3数据缓冲区模式控制位。 0
0:禁止端点2接收。 0 0:禁止端点2发送。 0
0 RB_UEP2_BUF_MOD RW 端点2数据缓冲区模式控制位。 0
由RB_UEPn_RX_EN和RB_UEPn_TX_EN以及RB_UEPn_BUF_MOD(n=1/2/3)组合分别配置USB端点1、 2、3的数据缓冲区模式,具体参考下表。其中,在双64字节缓冲区模式下,USB 数据传输时将根据 RB_UEP_*_TOG=0选择前64字节缓冲区,根据RB_UEP_*_TOG=1选择后64字节缓冲区,设置 RB_UEP_AUTO_TOG=1可实现自动切换。 表17-4 端点n缓冲区模式(n=1/2/3) RB_UEPn_ RX_EN RB_UEPn_ TX_EN RB_UEPn_ BUF_MOD 描述:以R16_UEPn_DMA为起始地址由低向高排列 0 0 X 端点被禁用,未用到R16_UEPn_DMA缓冲区。 1 0 0 单64字节接收缓冲区(OUT)。 1 0 1 双64字节接收缓冲区(OUT),由RB_UEP_R_TOG选择。 0 1 0 单64字节发送缓冲区(N)。 0 1 1 双64字节发送缓冲区(IN),由RB_UEP_T_TOG选择。 1 1 0 单64字节接收缓冲区(OUT),单64字节发送缓冲区(IN)。 1 1 1 双64字节接收缓冲区(OUT),通过RB_UEP_R_TOG选择, 双64字节发送缓冲区(IN),通过RB_UEP_T_TOG选择。 全部256字节排列如下: UEPn_DMA+0地址:RB_UEP_R_TOG=0时端点接收地址; UEPn_DMA+64地址:RB_UEP_R_TOG=1时端点接收地址; UEPn_DMA+128地址:RB_UEP_T_TOG=0时端点发送地址; UEPn_DMA+192地址:RB_UEP_T_TOG=1时端点发送地址。
端点n缓冲区起始地址(R16_UEPn_DMA) (n=0/1/2/3) 位 名称 访问 描述 复位值 [15:0] R16_UEPn_DMA RW 端点n缓冲区起始地址。 低15位有效,地址必须4字节对齐。 XXXXh 注:接收数据的缓冲区的长度 >= min(可能收到的最大数据包长度 + 2字节,64字节)。 端点n发送长度寄存器(R8_UEPn_T_LEN) (n=0/1/2/3/4) 位 名称 访问 描述 复位值 [7:0] R8_UEPn_T_LEN RW 设置USB端点n准备发送的数据字节数。 XXh 端点n控制寄存器(R8_UEPn_CTRL) (n=0/1/2/3/4) 位 名称 访问 描述 复位值
7 RB_UEP_R_TOG RW
USB 端点n 的接收器(处理OUT 事务) 期望的同步触发位: 1:期望DATA1; 0:期望DATA0。
6 RB_UEP_T_TOG RW
USB 端点n的发送器(处理IN事务)准 备的同步触发位: 1:发送DATA1; 0:发送DATA0。
4 RB_UEP_AUTO_TOG RW
同步触发位自动翻转使能控制位: 1:数据发送或接收成功后自动翻转相应 的同步触发位; 0:不自动翻转,可以手动切换。 只支持端点1/2/3。 [3:2] MASK_UEP_R_RES RW 端点n的接收器对OUT事务的响应控制: 00:应答ACK; 01:超时/无响应,用于非端点0的实时 /同步传输; 10:应答NAK或忙; 11:应答STALL或错误。 00b [1:0] MASK_UEP_T_RES RW 端点n的发送器对IN事务的响应控制: 00:DATA0/DATA1数据就绪并期望ACK; 01:应答DATA0/DATA1 并期望无响应, 用于非端点0 的实时/同步传输; 10:应答NAK或忙; 11:应答STALL或错误。 00b 17.2.3 主机寄存器描述 在USB主机模式下,芯片提供了一组双向主机端点,包括一个发送端点OUT和一个接收端点IN, 数据包的最大长度是64字节,支持控制传输、中断传输、批量传输和实时/同步传输。 主机端点发起的每一个USB事务,在处理结束后总是自动设置RB_UIF_TRANSFER中断标志。应用 程序可以直接查询或在USB中断服务程序中查询并分析中断标志寄存器R8_USB_INT_FG,根据各中断 标志分别进行相应的处理;并且,如果RB_UIF_TRANSFER有效,那么还需要继续分析USB中断状态寄 存器R8_USB_INT_ST,根据当前USB传输事务的应答PID标识MASK_UIS_H_RES进行相应的处理。 如果事先设定了主机接收端点的IN事务的同步触发位RB_UH_R_TOG,那么可以通过RB_U_TOG_OK 或者RB_UIS_TOG_OK判断当前所接收到的数据包的同步触发位是否与主机接收端点的同步触发位匹 配,如果数据同步,则数据有效;如果数据不同步,则数据应该被丢弃。每次处理完USB发送或者接
收中断后,都应该正确修改相应主机端点的同步触发位,用于同步下次所发送的数据包和检测下次所 接收的数据包是否同步;另外,通过设置RB_UH_T_AUTO_TOG 和RB_UH_R_AUTO_TOG可以实现在发送 成功或接收成功后自动翻转相应的同步触发位。 USB 主机令牌设置寄存器R8_UH_EP_PID用于设置被操作的目标设备的端点号和本次USB传输事 务的令牌PID包标识。SETUP令牌和OUT令牌所对应的数据由主机发送端点提供,准备发送的数据在 R16_UH_TX_DMA缓冲区中,准备发送的数据长度设置在R16_UH_TX_LEN中;IN令牌所对应数据由目标 设备返回给主机接收端点,接收到数据存放R16_UH_RX_DMA缓冲区中,接收到的数据长度存放在 R8_USB_RX_LEN中。 表17-5 USB主机相关寄存器列表(标灰受RB_UC_RESET_SIE复位控制) 名称 访问地址 描述 复位值 R8_UHOST_CTRL 0x40008001 USB 主机物理端口控制寄存器 0xX0 R8_UH_EP_MOD 0x4000800d USB 主机端点模式控制寄存器 0x00 R16_UH_RX_DMA 0x40008018 USB 主机接收缓冲区起始地址 0xXXXX R16_UH_TX_DMA 0x4000801c USB 主机发送缓冲区起始地址 0xXXXX R8_UH_SETUP 0x40008026 USB 主机辅助设置寄存器 0x00 R8_UH_EP_PID 0x40008028 USB 主机令牌设置寄存器 0x00 R8_UH_RX_CTRL 0x4000802a USB 主机接收端点控制寄存器 0x00 R8_UH_TX_LEN 0x4000802c USB 主机发送长度寄存器 0xXX R8_UH_TX_CTRL 0x4000802e USB 主机发送端点控制寄存器 0x00 USB 主机物理端口控制寄存器(R8_UHOST_CTRL) 位 名称 访问 描述 复位值
7 RB_UH_PD_DIS RW
USB 主机端口 UD+/UD-引脚内部下拉电 阻控制位: 1:禁用内部下拉;0:使能内部下拉。 可用于GPIO模式提供下拉电阻。
5 RB_UH_DP_PIN RO 当前UD+引脚状态:
1:高电平; 0:低电平。 X
4 RB_UH_DM_PIN RO 当前UD-引脚状态:
1:高电平; 0:低电平。 X
2 RB_UH_LOW_SPEED RW
USB 主机端口低速模式使能位: 1:选择1.5Mbps低速模式; 0:选择12Mbps全速模式。
1 RB_UH_BUS_RESET RW
USB 主机模式总线复位控制位: 1:强制输出USB总线复位; 0:结束输出。
0 RB_UH_PORT_EN RW
USB 主机端口使能位: 1:使能主机端口;0:禁用主机端口。 当USB设备断开连接时,该为自动清0。 USB 主机端点模式控制寄存器(R8_UH_EP_MOD) 位 名称 访问 描述 复位值
6 RB_UH_EP_TX_EN RW 主机发送端点发送(SETUP/OUT)使能位:
1:使能端点发送; 0
0:禁止端点发送。
4 RB_UH_EP_TBUF_MOD RW 主机发送端点发送数据缓冲区模式控制
位。 0
3 RB_UH_EP_RX_EN RW
主机接收端点接收(IN)使能位: 1:使能端点接收; 0:禁止端点接收。 [2:1] Reserved RO 保留。 00b
0 RB_UH_EP_RBUF_MOD RW USB 主机接收端点接收数据缓冲区模式
控制位。 0 由RB_UH_EP_TX_EN和RB_UH_EP_TBUF_MOD组合控制主机发送端点数据缓冲区模式,参考下表。 表17-6 主机发送缓冲区模式
0 X 端点被禁用,未用到R16_UH_TX_DMA缓冲区。
1 0 单64字节发送缓冲区(SETUP/OUT)。 1 1 双64字节发送缓冲区,通过RB_UH_T_TOG选择: 当RB_UH_T_TOG=0时选择前64字节缓冲区; 当RB_UH_T_TOG=1时选择后64字节缓冲区。 由RB_UH_EP_RX_EN和RB_UH_EP_RBUF_MOD组合控制主机接收端点数据缓冲区模式,参考下表。 表17-7 主机接收缓冲区模式
0 X 端点被禁用,未用到R16_UH_RX_DMA缓冲区。
1 0 单64字节接收缓冲区(IN)。 1 1 双64字节接收缓冲区,通过RB_UH_R_TOG选择: 当RB_UH_R_TOG=0时选择前64字节缓冲区; 当RB_UH_R_TOG=1时选择后64字节缓冲区。 USB 主机接收缓冲区起始地址(R16_UH_RX_DMA) 位 名称 访问 描述 复位值 [15:0] R16_UH_RX_DMA RW 主机端点数据接收缓冲区起始地址。 低15位有效,地址必须4字节对齐。 XXXXb USB 主机发送缓冲区起始地址(R16_UH_TX_DMA) 位 名称 访问 描述 复位值 [15:0] R16_UH_TX_DMA RW 主机端点数据发送缓冲区起始地址。 低15位有效,地址必须4字节对齐。 XXXXb USB 主机辅助设置寄存器(R8_UH_SETUP) 位 名称 访问 描述 复位值
7 RB_UH_PRE_PID_EN RW
低速前导包PRE PID使能位: 1:使能,用于通过外部HUB与低速USB 设备通讯。 0:禁用低速前导包。
6 RB_UH_SOF_EN RW
自动产生SOF包使能位: 1:主机自动产生SOF包; 0:不自动产生,但可手工产生。 [5:0] Reserved RO 保留。 000000b
USB 主机令牌设置寄存器(R8_UH_EP_PID) 位 名称 访问 描述 复位值 [7:4] MASK_UH_TOKEN RW 设置本次USB 传输事务的令牌PID 包标 识。 0000b [3:0] MASK_UH_ENDP RW 设置本次被操作的目标设备的端点号。 0000b USB 主机接收端点控制寄存器(R8_UH_RX_CTRL) 位 名称 访问 描述 复位值
7 RB_UH_R_TOG RW
USB 主机接收器(处理IN事务)期望的 同步触发位: 1:期望DATA1; 0:期望DATA0。 [6:5] Reserved RO 保留。 00b
4 RB_UH_R_AUTO_TOG RW
同步触发位自动翻转使能控制位: 1:数据接收成功后自动翻转相应的期待 同步触发位(RB_UH_R_TOG); 0:不自动翻转,可以手动切换。
2 RB_UH_R_RES RW
主机接收器对IN事务的响应控制位: 1:无响应,用于非0 端点的实时/同步 传输; 0:应答ACK。 [1:0] Reserved RO 保留。 00b USB 主机发送长度寄存器(R8_UH_TX_LEN) 位 名称 访问 描述 复位值 [7:0] R8_UH_TX_LEN RW 设置USB 主机发送端点准备发送的数据 字节数。 XXh USB 主机发送端点控制寄存器(R8_UH_TX_CTRL) 位 名称 访问 描述 复位值
6 RB_UH_T_TOG RW
USB 主机发送器(处理SETUP/OUT事务) 准备的同步触发位: 1:表示发送DATA1;0:表示发送DATA0。
4 RB_UH_T_AUTO_TOG RW
同步触发位自动翻转使能控制位: 1:数据发送成功后自动翻转相应的同步 触发位(RB_UH_T_TOG); 0:不自动翻转,可以手动切换。 [3:1] Reserved RO 保留。 000b
0 RB_UH_T_RES RW
USB 主机发送器对SETUP/OUT 事务的响 应控制位: 1:期望无响应,用于非0 端点的实时/ 同步传输; 0:期望应答ACK。
第18 章 以太网控制器ETH 18.1 以太网控制器简介 CH578 芯片集成了以太网控制器MAC 和PHY 以及DMA,兼容IEEE802.3协议。内部DMA 传输数据 和接收数据到系统RAM 中。PHY 物理层是一个10Mbit/S 的以太网络收发器,提供部分网络PHY 寄存 器,可以设置发送和接收性能。 网络底层操作主要以子程序库提供应用支持,对寄存器不作详细介绍。主要特性: l 支持全双工和半双工。 l 支持短包填充设置。 l 支持CRC设置和填充。 l 支持巨型帧接收。 l 支持不同的过滤模式组合。 l 支持pause帧发送和设置。 l 支持自动协商机制。 l 支持DMA,用于发送和接收数据。 l PHY收发器兼容10BASE-T,发送模块支持节能模式。 l 内置50欧姆传输阻抗匹配电阻,也可选择外接。 l 提供由IEEE分配的全球唯一MAC地址。 18.2 寄存器描述 表18-1 以太网控制器相关寄存器列表 名称 偏移地址 描述 复位值 R8_ETH_EIE 0x40009003 中断使能寄存器 0x00 R8_ETH_EIR 0x40009004 中断标志寄存器 0x00 R8_ETH_ESTAT 0x40009005 状态寄存器 0x00 R8_ETH_ECON2 0x40009006 PHY 模拟参数设置寄存器 0x06 R8_ETH_ECON1 0x40009007 收发控制寄存器 0x00 R32_ETH_TX 0x40009008 发送DMA控制寄存器 0xXXXXXXXX R16_ETH_ETXST 0x40009008 发送DMA缓存起始地址寄存器 0xXXXX R16_ETH_ETXLN 0x4000900A 发送长度寄存器 0xXXXX R32_ETH_RX 0x4000900C 接收DMA控制寄存器 0x00000000 R16_ETH_ERXST 0x4000900C 接收DMA缓冲起始地址寄存器 0x0000 R16_ETH_ERXLN 0x4000900E 接收长度寄存器 0x0000 R32_ETH_HTL 0x40009010 Hash 表低字节寄存器 0x484EA033 R32_ETH_HTH 0x40009014 Hash 表高字节寄存器 0x5000EF97 R32_ETH_MACON 0x40009018 接收过滤设置寄存器 0x10000000 R8_ETH_ERXFCON 0x40009018 接收包过滤控制寄存器 0x00 R8_ETH_MACON1 0x40009019 Mac 层流控制寄存器 0x00 R8_ETH_MACON2 0x4000901A Mac 层封包控制寄存器 0x00 R8_ETH_MABBIPG 0x4000901B 最小包间间隔寄存器 0x10 R32_ETH_TIM 0x4000901C 流控制暂停帧时间寄存器 0xXXXXXXXX R16_ETH_EPAUS 0x4000901C 流控制暂停帧时间寄存器 0xXXXX R16_ETH_MAMXFL 0x4000901E 最大接收包长度寄存器 0x0000 R16_ETH_MIRD 0x40009020 MII 读数据寄存器 0x1100 R32_ETH_MIWR 0x40009024 MII 写寄存器 0x00000000 R8_ETH_MIREGADR 0x40009024 MII 地址寄存器 0x00
R8_ETH_MISTAT 0x40009025 MII 状态寄存器 0x00 R16_ETH_MIWR 0x40009026 MII 写数据寄存器 0x0000 R32_ETH_MAADRL 0x40009028 MAC 地址低字节寄存器 0xXXXXXXXX R16_ETH_MAADRH 0x4000902C MAC 地址高字节寄存器 0xXXXX 中断使能寄存器(R8_ETH_EIE) 位 名称 访问 描述 复位值
7 RB_ETH_EIE_INTIE RW 以太网络中断使能:
0:关闭中断; 1:开启中断。 0
6 RB_ETH_EIE_RXIE RW 接收完成中断使能:
0:关闭中断; 1:开启中断。 0
4 RB_ETH_EIE_LINKIE RW Link变化中断使能:
0:关闭中断; 1:开启中断。 0
3 RB_ETH_EIE_TXIE RW 发送完成中断使能:
0:关闭中断; 1:开启中断。 0
2 RB_ETH_EIE_R_EN50 RW 内置的50欧姆阻抗匹配电阻使能:
0:片内电阻断开;1:片内电阻连接。 0
1 RB_ETH_EIE_TXERIE RW 发送错误中断使能:
0:关闭中断; 1:开启中断。 0
0 RB_ETH_EIE_RXERIE RW 接收错误中断使能:
0:关闭中断; 1:开启中断。 0 中断标志寄存器(R8_ETH_EIR) 位 名称 访问 描述 复位值
6 RB_ETH_EIR_RXIF RW1 接收完成标志。 0
4 RB_ETH_EIR_LINKIF RW1 Link 变化标志。 0
3 RB_ETH_EIR_TXIF RW1 发送完成标志。 0
1 RB_ETH_EIR_TXERIF RW1 发送错误标志。 0
0 RB_ETH_EIR_RXERIF RW1 接收错误标志。 0
状态寄存器(R8_ETH_ESTAT) 位 名称 访问 描述 复位值
7 RB_ETH_ESTAT_INT RW1 中断。 0
6 RB_ETH_ESTAT_BUFER RW1 Buffer 错误。 0
5 RB_ETH_ESTAT_RXCRCER RO 接收CRC出错。 0
4 RB_ETH_ESTAT_RXNIBBLE RO 接收nibble错误。 0
3 RB_ETH_ESTAT_RXMORE RO 接收超过设定最大数据包。 0
2 RB_ETH_ESTAT_RXBUSY RO 接收进行中。 0
1 RB_ETH_ESTAT_TXABRT RO 发送被MCU打断。 0
PHY 模拟参数设置寄存器(R8_ETH_ECON2) 位 名称 访问 描述 复位值
[7:4] Reserved RO 保留。 0000b [3:1] RB_ETH_ECON2_RX RB_ETH_ECON2_MUST RW 保留,必须写入 011。 011b
0 RB_ETH_ECON2_TX RW 发送端节能驱动控制:
0:额定驱动; 1:节能驱动。 0 收发控制寄存器(R8_ETH_ECON1) 位 名称 访问 描述 复位值
7 RB_ETH_ECON1_TXRST RW 发送模块复位:
0:不复位; 1:复位发送模块。 0
6 RB_ETH_ECON1_RXRST RW 接收模块复位:
0:不复位; 1:复位接收模块。 0 [5:4] Reserved RO 保留。 00b
3 RB_ETH_ECON1_TXRTS RW 发送开始,发送完成后自动清零:
1:启动发送; 0:无动作。 0
2 RB_ETH_ECON1_RXEN RW 接收使能控制:
0:关闭接收; 1:开启接收。 0 [1:0] Reserved RO 保留。 00b 发送DMA缓存地址寄存器(R16_ETH_ETXST) 位 名称 访问 描述 复位值 [15:0] R16_ETH_ETXST RW 发送DMA缓冲区起始地址。 低15位有效,地址必须4字节对齐。 XXXXh 发送长度(R16_ETH_ETXLN) 位 名称 访问 描述 复位值 [15:0] R16_ETH_ETXLN RW 发送长度。 XXXXh 接收DMA缓冲地址寄存器(R16_ETH_ERXST) 位 名称 访问 描述 复位值 [15:0] R16_ETH_ERXST RW 接收DMA缓冲区起始地址。 低15位有效,地址必须4字节对齐。 XXXXh 接收长度寄存器(R16_ETH_ERXLN) 位 名称 访问 描述 复位值 [15:0] R16_ETH_ERXLN RO 接收长度。 0000h Hash表低字节寄存器(R32_ETH_HTL) 位 名称 访问 描述 复位值 [31:24] R8_ETH_EHT3 RW Hash Table 字节3。 48h [23:16] R8_ETH_EHT2 RW Hash Table 字节2。 4Eh [15:8] R8_ETH_EHT1 RW Hash Table 字节1。 A0h [7:0] R8_ETH_EHT0 RW Hash Table 字节0。 33h Hash表高字节寄存器(R32_ETH_HTH) 位 名称 访问 描述 复位值 [31:24] R8_ETH_EHT7 RW Hash Table 字节7。 50h
[23:16] R8_ETH_EHT6 RW Hash Table 字节6。 00h [15:8] R8_ETH_EHT5 RW Hash Table 字节5。 EFh [7:0] R8_ETH_EHT4 RW Hash Table 字节4。 97h 接收过滤设置寄存器(R8_ETH_ERXFCON) 位 名称 访问 描述 复位值
7 RB_ETH_ERXFCON_UCEN RW
目标地址匹配过滤设置: 0:不使用该过滤条件; 1:RB_ETH_ERXFCON_ANDOR=0 目标地址 匹配将被接收,RB_ETH_ERXFCON_ANDOR =1目标地址不匹配将被过滤。
6 RB_ETH_ERXFCON_ANDOR RW
过滤条件AND和OR设置: 0:任一过滤条件满足包均被接收; 1:所有过滤条件都满足包才被接收。
5 RB_ETH_ERXFCON_CRCEN RW
CRC 校验过滤设置: 0:不使用该过滤条件; 1:RB_ETH_ERXFCON_ANDOR=0 CRC 校验 正确将被接收,RB_ETH_ERXFCON_ANDOR =1 CRC校验错将被过滤。
4 Reserved RO 保留。 0
3 RB_ETH_ERXFCON_MPEN RW
魔法包过滤设置: 0:不使用该过滤条件; 1:RB_ETH_ERXFCON_ANDOR=0 魔法包将 被接收,RB_ETH_ERXFCON_ANDOR=1非魔 法包将被过滤。
2 RB_ETH_ERXFCON_HTEN RW
hash表匹配过滤设置: 0:不使用该过滤条件; 1:RB_ETH_ERXFCON_ANDOR=0 hash表匹 配将被接收,RB_ETH_ERXFCON_ANDOR =1 hash表不匹配将被过滤。
1 RB_ETH_ERXFCON_MCEN RW
组播包匹配过滤设置: 0:不使用该过滤条件; 1:RB_ETH_ERXFCON_ANDOR=0 组播包匹 配将被接收,RB_ETH_ERXFCON_ANDOR=1 组播包不匹配将被过滤。
0 RB_ETH_ERXFCON_BCEN RW
广播包匹配过滤设置: 0:不使用该过滤条件; 1:RB_ETH_ERXFCON_ANDOR=0 广播包将 被接收,RB_ETH_ERXFCON_ANDOR=1非广 播包将被过滤。 Mac 层流控制寄存器(R8_ETH_MACON1) 位 名称 访问 描述 复位值 [7:6] Reserved RO 保留。 00b [5:4] RB_ETH_MACON1_FCEN RW pause帧设置,全双工下有效: 00:停止发送暂停帧; 01:发送一次暂停帧,然后停止发送; 10:周期性发送暂停帧; 11:发送0 timer暂停帧,然后停止发 00b
3 RB_ETH_MACON1_TXPAUS RW 发送pause帧使能控制:
0:不发送pause帧;1:使能发送。 0
2 RB_ETH_MACON1_RXPAUS RW 接收pause帧使能:
0:不接收pause帧;1:使能接收。 0
1 RB_ETH_MACON1_PASSALL RW
控制帧设置: 0:控制帧将被过滤; 1:没被过滤的控制帧将写入缓存。
0 RB_ETH_MACON1_MARXEN RW MAC 层接收使能:
0:MAC不接收数据;1:MAC接收使能。 0 Mac 层封包控制寄存器(R8_ETH_MACON2) 位 名称 访问 描述 复位值 [7:5] RB_ETH_MACON2_PADCFG RW 短包填充设置: 7:所有短包填充0 至64 字节,再4 字节CRC; 6:不填充短包; 5:检测到字段为8100h的VLAN网络包 自动填充0 至64字节,否则短包填充 60字节0,填充后再4 字节CRC; 4:不填充短包; 3:所有短包填充0 至64 字节,再4 字节CRC; 2:不填充短包; 1:所有短包填充0 至60 字节,再4 字节CRC; 0:不填充短包。 000b
4 RB_ETH_MACON2_TXCRCEN RW 发送添加CRC控制:
0:硬件不填充CRC;1:硬件填充CRC。 0
3 RB_ETH_MACON2_PHDREN RW 特殊4字节不参与CRC校验。 0
2 RB_ETH_MACON2_HFRMEN RW 允许接收巨型帧:
0:不允许接收巨型帧;1:允许接收。 0
0 RB_ETH_MACON2_FULDPX RW 以太网络通讯模式:
0:半双工; 1:全双工。 0 最小包间间隔寄存器(R8_ETH_MABBIPG) 位 名称 访问 描述 复位值 [6:0] R8_ETH_MABBIPG RW 最小包间间隔字节数。 0010000b 流控制暂停帧时间寄存器(R16_ETH_EPAUS) 位 名称 访问 描述 复位值 [15:0] R16_ETH_EPAUS RW 流控制暂停帧时间。 XXXXh 最大接收包长度寄存器(R16_ETH_MAMXFL) 位 名称 访问 描述 复位值 [15:0] R16_ETH_MAMXFL RW 最大接收包长度。 0000h
MII 读数据寄存器(R16_ETH_MIRD) 位 名称 访问 描述 复位值 [15:0] R16_ETH_MIRD RW MII 读数据寄存器。 1100h MII 地址寄存器(R8_ETH_MIREGADR) 位 名称 访问 描述 复位值 [7:5] Reserved RO 保留。 000b [4:0] RB_ETH_MIREGADR_MIRDL RW PHY 寄存器地址。 00000b MII 状态寄存器(R8_ETH_MISTAT) 位 名称 访问 描述 复位值 [7:1] Reserved RO 保留。 0000000b
0 R8_ETH_MII_STA RO MII 寄存器操作状态:
1:写MII寄存器;0:读MII 寄存器 0 MII 写数据寄存器(R16_ETH_MIWR) 位 名称 访问 描述 复位值 [15:0] R16_ETH_MIWR WO MII 写数据寄存器。 0000h MAC 地址寄存器(R32_ETH_MAADRL、R16_ETH_MAADRH) 位 名称 访问 描述 复位值 [31:0] R32_ETH_MAADRL RW MAC Address 字节1~4。 XXXXXXXXh [15:0] R16_ETH_MAADRH RW MAC Address 字节5~6。 XXXXh 18.3 操作指南 1.初始化 (1)、配置安全寄存器进入安全模式,打开以太网络的时钟和电源; (4)、设置缓存; 2.发送数据 3.接收数据 (2)、使用中断或查询到接收完成状态; 具体的应用请基于以太网协议栈库使用,并参考提供的网络应用示例。
第19 章 参数 19.1 绝对最大值 临界或者超过绝对最大值将可能导致芯片工作不正常甚至损坏。 表19-1 绝对最大值参数表 名称 参数说明 最小值 最大值 单位 TA 工作时的环境温度 -40 85 ℃ TS 储存时的环境温度 -40 105 ℃ VIO33 系统电源电压(VIO33接电源,GND接地) -0.4 3.9 V VIO 输入或者输出引脚上的电压 -0.4 VIO33+0.4 V VIO5 支持5V耐压的输入或者输出引脚上的电压 -0.4 5.5 V VDCI VDCID/VDCIA 引脚上的电压(如果用外置DC-DC) -0.4 VIO33+0.4 V VXCK X32MI/X32MO/启用LSE后的PA10/PA11的电压 -0.3 1.4 V 19.2 电气参数 测试条件:TA=25℃,VIO33=3.3V,Fsys=16MHz。 表19-2 电气参数表 名称 参数说明 最小值 典型值 最大值 单位 VIO33 系统电源电压 2.1 3.3 3.6 V ICC8 直通方式 静态电源电流 Fsys=8M 1.3 1.5 mA ICC16 Fsys=16M 1.6 1.9 mA ICC32 Fsys=32M 2.3 2.8 mA IDDC8 启用内置DC-DC后 静态电源电流 Fsys=8M 0.8 1.1 mA IDDC16 Fsys=16M 1.0 1.3 mA IDDC32 Fsys=32M 1.5 1.8 mA VIL GPIO低电平输入电压 0 0.9 V VIH GPIO高电平输入电压 2.0 VIO33 V VIL5 支持5V耐压的GPIO低电平输入电压 0 0.9 V VIH5 支持5V耐压的GPIO高电平输入电压 2.0 5.0 V VOL 低电平输出电压(5mA/20mA吸入电流) 0 0.3 0.4 V VOH 高电平输出电压(5mA/20mA输出电流) VIO33-0.4 VIO33-0.3 VIO33 V IIN GPIO浮空输入端的输入电流 -3 0 3 uA IUP GPIO 内置上拉电阻的输入端的输入电流 25 60 90 uA IDN GPIO 内置下拉电阻的输入端的输入电流 -90 -60 25 uA Vref VINTA引脚的电压(ADC参考电压) 1.035 1.05 1.065 V Vdci VDCID引脚在启用DC-DC后的电压 1.33 1.37 1.43 V 19.3 低功耗模式功耗 测试条件:TA=25℃,VIO33=3.3V,Fsys=16MHz。 表19-3 低功耗参数表(仅供参考,与温度相关) 低功耗模式 最小值 典型值 最大值 单位 空闲模式,开启各模块时钟组合 1.15 1.2 1.6 mA 空闲模式,关闭所有睡眠时钟 1.15 mA
暂停模式,FlashROM待机 470 uA 暂停模式,FlashROM停用 420 uA 睡眠模式,多种组合,参考表5-3 0.6 2.0 uA 睡眠模式,PMU+内核+RAM2K,GPIO唤醒,无RTC 0.6 uA 下电模式,多种组合,参考表5-3 0.2 1.3 uA 下电模式,仅PMU,GPIO唤醒后复位,无RTC 0.2 uA 表19-4 各模块电流(仅供参考,与温度相关) 名称 参数说明 最小值 典型值 最大值 单位 IDD(RAM2K) RAM2K:2KB SRAM 0.3 uA IDD(RAM14K) RAM14K:14KB SRAM 0.8 uA IDD(LSI) 内部LSI振荡器 0.3 uA IDD(LSE) 外部LSE振荡器 0.4 uA IDD(HSI) 内部HSI振荡器 160 uA IDD(HSE) 外部HSE振荡器 100 200 300 uA IDD(BM) 电池低压监控BM模块(暂停模式下) 3 uA IDD(PLL) 内部PLL振荡器 1.0 mA IDD(ADC) ADC模块 0.27 mA IDD(TKEY) TouchKey模块 0.08 mA IDD(TS) 温度传感器TS模块 0.1 mA IDD(USB) USB模块 非发送状态 1.2 1.6 2.0 mA 发送状态 3 mA IDD(ETH) 以太网ETH模块 非发送状态 2.2 2.6 3.0 mA 连续发送:额定驱动 75 100 mA 连续发送:节能驱动 56 75 mA IDD(BLE) BLE 蓝牙 接收 直通电源 11 mA 启用DC-DC 6 mA -20dBm 发送功率 直通电源 4 mA 启用DC-DC 2 mA 0dBm 发送功率 直通电源 10 mA 启用DC-DC 5 mA +3dBm 发送功率 直通电源 16 mA 启用DC-DC 8 mA 19.4 时钟源 表19-5 高速振荡器HSI和HSE 名称 参数说明 最小值 典型值 最大值 单位 FHSI 内部HSI振荡器频率 32 MHz AHSI HSI振荡器精度 TSUHSI 内部HSI振荡器启动到稳定时间 0.2 1 uS FHSE 外部HSE振荡器频率(关闭无线通讯时) 24 32 36 MHz TSUHSE 外部HSE振荡器启动到稳定时间 200 500 1200 uS 表19-6 低速振荡器LSI和LSE
名称 参数说明 最小值 典型值 最大值 单位 FLSIR 内部LSI振荡器频率(校准前) 20K 32K 48K Hz FLSI 内部LSI频率(应用软件运行时校准后) 32700 32768 32836 Hz ALSI LSI振荡器精度 (软件校准后) TSULSI 内部LSI振荡器启动到稳定时间 40 100 uS TSULSE 外部LSE振荡器启动到稳定时间 150 450 1000 mS 表19-7 PLL特性 名称 参数说明 最小值 典型值 最大值 单位 FPLL PLL倍频输出时钟(CK32M * 15倍) 480 MHz TPLLLK PLL锁相时间 1 3 mS 19.5 时间参数 测试条件:TA=25℃,VIO33=3.3V,Fsys=6.4MHz。 表19-8 时间参数 名称 参数说明 最小值 典型值 最大值 单位 Trpor 电源上电复位RPOR后的复位延时 11 15 20 mS Trst RST#有效信号宽度 100 nS Tmr 外部复位MR后的复位延时 2 8 18 uS Tsr 软件复位SR后的复位延时 2 8 18 uS Twtr 看门狗复位WTR后的复位延时 10 12 18 uS TWAK 从低功耗状态 退出的唤醒时间 空闲模式 0.6 0.8 1.6 uS 暂停模式,ROM待机 0.7 1.0 2.0 uS 暂停模式,ROM停用 9 11 15 uS 睡眠模式 300 330 400 uS 下电模式 350 380 450 uS 注:上表中延时参数均是基于Tsys的倍数,降低主频将增加延时。 上表中延时参数是基于使用内部HSI时钟源,如果睡眠期间使用外部HSE时钟源,那么表中暂停 模式/睡眠模式/下电模式的延时参数TWAK均会额外再增加约1.5mS(启动到稳定)。 19.6 其它参数 测试条件:TA=25℃,VIO33=3.3V,Fsys=16MHz。 表19-9 其它参数 名称 参数说明 最小值 典型值 最大值 单位 RTS TS温度传感器的测量范围 -40 90 ℃ ATSC 温度传感器经软件校准后的测量误差 ±6 ℃ TFRER Flash-ROM的单次扇区擦除操作时间 1.1 1.4 2.4 mS TFRPG Flash-ROM的单次字编程操作时间 22 27 36 uS NEPCE Flash-ROM的擦写次数 erase/program cycle endurance 5~45℃ 100K 800K(非担保) times -40~85℃ 30K 100K (非担保) TDR Flash-ROM的数据保持能力 10 years VESD I/O 输入或者输出 引脚上的ESD耐压 天线ANT 2K 4K (非担保) V I/O引脚:PA和PB 4K 6K (非担保) V
第20 章 封装 芯片封装 封装形式 塑体宽度 引脚间距 封装说明 订货型号 QFN28 4*4mm 0.4mm 15.7mil 方形无引线28脚 CH577F QFN48 5*5mm 0.35mm 13.8mil 方形无引线48脚 CH578M 说明:尺寸标注的单位是mm(毫米),引脚中心间距是标称值,除此之外的尺寸误差不大于±0.2mm。
第21 章 修改记录 版本 日期 说明 V0.9 2018.09.06 初版发行 V1.0 2018.11.22 正式版发行 http://wch.cn