CH552 WCH | Alldatasheet
Document overview
- Manufacturer or author: Provided By ALLDATASHEET.COM(FREE DATASHEET DOWNLOAD SITE)
- PDF pages: 50
Technical content
CH552手册 1 8 位增强型USB 单片机CH552、CH551 手册 版本:1D http://wch.cn 1、概述 CH552芯片是一款兼容MCS51指令集的增强型E8051内核单片机,其79%的指令是单字节单周期 指令,平均指令速度比标准MCS51快8~15 倍。 CH552 支持最高24MHz系统主频,内置16K 程序存储器ROM 和256 字节内部iRAM 以及1K 字节 片内xRAM,xRAM支持DMA直接内存存取。 CH552内置了ADC模数转换、触摸按键电容检测、3 组定时器和信号捕捉及PWM、双异步串口、 SPI、USB设备控制器和全速收发器等功能模块。 CH551是CH552的简化版,程序存储器ROM为10K,片内xRAM为512字节,异步串口仅UART0, 封装形式仅SOP16,触摸按键仅4通道,并且去掉了ADC模数转换模块和USB type-C模块,其它与 CH552相同,可直接参考CH552手册和资料。 型号 程序ROM RAM DataFlash USB 设备 type-C 定时器 PWM 串口 SPI ADC 触摸按键 CH552 16KB 1280 128 全/低速 可配置 3 组 2 组 2 组 主/从 4 路 6 通道 CH551 10KB 768 无 1 组 无 4 通道 下面为CH552的内部框图,仅供参考。 Pins: GND VCC V33 RST P30~P37 P10~P17 2、特点 l Core:增强型E8051 内核,兼容MCS51 指令集,其79%的指令是单字节单周期指令,平均指令 速度比标准MCS51快8~15倍,特有XRAM数据快速复制指令,双DPTR指针。 l ROM:16KB 容量的可多次编程的非易失存储器ROM,可以全部用于程序存储空间;或者可以分 为14KB程序存储区和2KB引导代码BootLoader/ISP程序区。 l DataFlash:128字节可多次擦写的非易失数据存储器,支持以字节为单位改写数据。 l RAM:256 字节内部iRAM,可以用于快速数据暂存以及堆栈;1KB 片内xRAM,可以用于大量数 Internal Address & Data & DMA Bus Internal Oscillator Power-on Reset Watch-dog Reset ROM 16KB iFlash E8051 Core UART1 UART0 PWM1 PWM2 LDO VolReg 5V->3.3V 4xPLL XT CMP ADC 8-bit Port2 USB Device iRAM 256B xRAM 1KB DataFlash 128B XT OSC SPI0 M/S Timer0 Timer1 Timer2 Cap1/2 Touch Key 8-bit Port3 8-bit Port1
CH552手册 2 P1.5/MOSI/PWM1/TIN3/UCC2/AIN22 P1.6/MISO/RXD1/TIN43 P1.7/SCK/TXD1/TIN54 RST/T2EX_/CAP2_5 GND/VSS 8 P3.6/UDP 6P3.7/UDM 7 VCC/VDD 9V33 10P1.4/T2_/CAP1_/SCS/TIN2/UCC1/AIN11 CH552E P1.5/MOSI/PWM1/TIN3/UCC2/AIN23 P1.6/MISO/RXD1/TIN44 P1.7/SCK/TXD1/TIN55 RST/T2EX_/CAP2_6 P1.0/T2/CAP1/TIN07 P1.1/T2EX/CAP2/TIN1/VBUS2/AIN08 P3.1/PWM2_/TXD9 P3.0/PWM1_/RXD10 GND/VSS 18 VCC/VDD 19V33 20P3.2/TXD1_/INT0/VBUS1/AIN31 P1.4/T2_/CAP1_/SCS/TIN2/UCC1/AIN12 CH552T P1.5/MOSI/PWM1/TIN3/UCC2/AIN23 P1.6/MISO/RXD1/TIN44 P1.7/SCK/TXD1/TIN55 RST/T2EX_/CAP2_6 P1.1/T2EX/CAP2/TIN1/VBUS2/AIN0 9P3.1/PWM2_/TXD7 P3.0/PWM1_/RXD8 GND/VSS 14 P3.3/INT1 10P3.4/PWM2/RXD1_/T0 11P3.6/UDP 12P3.7/UDM 13 VCC/VDD 15V33 16P3.2/TXD1_/INT0/VBUS1/AIN31 P1.4/T2_/CAP1_/SCS/TIN2/UCC1/AIN12 CH552G P1.5/MOSI/PWM1/TIN33 P1.6/MISO/TIN44 P1.7/SCK/TIN55 RST/T2EX_/CAP2_6 P1.1/T2EX/CAP2/TIN1 9P3.1/PWM2_/TXD7 P3.0/PWM1_/RXD8 GND/VSS 14 P3.3/INT1 10P3.4/PWM2/T0 11P3.6/UDP 12P3.7/UDM 13 VCC/VDD 15V33 16P3.2/INT01 P1.4/T2_/CAP1_/SCS/TIN22 CH551G 据暂存以及DMA直接内存存取。 l USB:内嵌USB控制器和USB收发器,支持USB-Device设备模式,支持USB type-C主从检测, 支持USB 2.0全速12Mbps或者低速1.5Mbps。支持最大64字节数据包,内置FIFO,支持DMA。 l Timer:3组定时器,T0/T1/T2为标准MCS51定时器。 l Capture:定时器T2扩展为支持2路信号捕捉。 l PWM:2 组PWM输出,PWM1/PWM2为2路8位PWM输出。 l UART:2组异步串口,都支持更高通讯波特率,UART0为标准MCS51串口。 l SPI:SPI控制器内置FIFO,时钟频率最高可达系统主频Fsys的一半,支持串行数据输入输出 单工复用,支持Master/Slave主从模式。 l ADC:4 通道8位A/D模数转换器,支持电压比较。 l Touch-Key:6通道电容检测,支持最多15个触摸按键,支持独立定时中断。 l GPIO:支持最多17个GPIO引脚(含XI/XO和RST以及USB信号引脚)。 l Interrupt:支持14组中断信号源,包括与标准MCS51兼容的6 组中断(INT0、T0、INT1、T1、 UART0、T2),以及扩展的8 组中断(SPI0、TKEY、USB、ADC、UART1、PWMX、GPIO、WDOG),其 中GPIO中断可以从7个引脚中选择。 l Watch-Dog:8位可预设看门狗定时器WDOG,支持定时中断。 l Reset:支持4 种复位信号源,内置上电复位,支持软件复位和看门狗溢出复位,可选引脚外 部输入复位。 l Clock:内置24MHz时钟源,可以通过复用GPIO引脚支持外部晶体。 l Power:内置5V到3.3V的低压差电压调整器,支持5V或3.3V甚至2.8V电源电压。支持低功 耗睡眠,支持USB、UART0、UART1、SPI0以及部分GPIO外部唤醒。 l 芯片内置唯一ID号。 3、封装 封装形式 塑体宽度 引脚间距 封装说明 订货型号 TSSOP-20 4.40mm 173mil 0.65mm 25mil 薄小型的20脚贴片 CH552T SOP-16 3.9mm 150mil 1.27mm 50mil 标准的16脚贴片 CH552G
CH552手册 3 MSOP-10 3.0mm 118mil 0.50mm 19.7mil 微小型的10脚贴片 CH552E SOP-16 3.9mm 150mil 1.27mm 50mil 标准的16脚贴片 CH551G 4、引脚 引脚号 引脚 名称 其它功能名称 (左侧功能优先) 其它功能描述 TSSOP20 SOP16 MSOP10 19 15 9 VCC VDD 电源输入端,需要外接0.1uF电源退耦电容。 20 16 10 V33 内部USB电源调整器输出和内部USB电源输入, 当电源电压小于3.6V时连接VCC输入外部电源, 当电源电压大于3.6V时外接0.1uF电源退耦电容 18 14 8 GND VSS 公共接地端。 6 6 5 RST RST/T2EX_/CAP2_ 后缀下划线的引脚是无下划线的同名引脚的映射。 RST引脚内置下拉电阻;其它GPIO默认有上拉电阻。 RST:外部复位输入。 T2:定时/计数器2的外部计数输入/时钟输出。 T2EX:定时/计数器2 重载/捕捉输入。 CAP1、CAP2:定时/计数器2 的捕捉输入1、2。 UCC1、UCC2:USB type-C双向配置通道。 VBUS1、VBUS2:USB type-C总线电压检测输入。 XI、XO:外部晶体振荡输入端、反相输出端。 RXD、TXD:UART0串行数据输入、串行数据输出。 SCS、MOSI、MISO、SCK:SPI0接口,SCS是片选输 入,MOSI是主机输出/从机输入,MISO是主机输入 /从机输出,SCK是串行时钟。 PWM1、PWM2:PWM1输出、PWM2输出。 RXD1、TXD1:UART1串行数据输入、串行数据输出。 INT0、INT1:外部中断0、外部中断1 输入。 T0、T1:定时器0、定时器1 外部输入。 UDM、UDP:USB设备的D-、D+信号端。 注:P3.6和P3.7内部使用V33 作为I/O 电源,所 以其输入输出的高电平只能到V33电压,不支持5V 7 - - P1.0 T2/CAP1/TIN0 8 9 - P1.1 T2EX/CAP2/TIN1 /VBUS2/AIN0 17 - - P1.2 XI/RXD_ 16 - - P1.3 XO/TXD_ 2 2 1 P1.4 T2_/CAP1_/SCS /TIN2/UCC1/AIN1 3 3 2 P1.5 MOSI/PWM1/TIN3 /UCC2/AIN2 4 4 3 P1.6 MISO/RXD1/TIN4 5 5 4 P1.7 SCK/TXD1/TIN5 10 8 - P3.0 PWM1_/RXD 9 7 - P3.1 PWM2_/TXD 1 1 - P3.2 TXD1_/INT0 /VBUS1/AIN3 11 10 - P3.3 INT1 12 11 - P3.4 PWM2/RXD1_/T0 13 - - P3.5 T1 14 12 6 P3.6 UDP 15 13 7 P3.7 UDM 5、特殊功能寄存器SFR 本手册中在对寄存器进行描述时可能使用了下列缩写: 缩写词 描述 RO 表示访问类型:只读 WO 表示访问类型:只写,读取的值无效 RW 表示访问类型:可读可写 H 以其结束表示16进制数 B 以其结束表示2进制数
CH552手册 4
5.1 SFR 简介和地址分布
CH552用特殊功能寄存器SFR控制、管理设备以及设置工作模式。 SFR 占用内部数据存储空间的80h-FFh 地址范围,只能通过直接地址方式的指令访问。其中地 址为x0h或x8h的寄存器是可以按位寻址的,这样就能避免访问某个具体的位时而修改其他位的值; 其它地址为非8倍数的寄存器只能按字节访问。 部分SFR 仅在安全模式下才能写入数据,而在非安全模式下是只读状态,例如:GLOBAL_CFG、 CLOCK_CFG、WAKE_CTRL。 部分SFR具有一个或者多个别名,例如:SPI0_CK_SE/SPI0_S_PRE。 部分地址对应于多个独立的SFR,例如:SAFE_MOD/CHIP_ID、ROM_CTRL/ROM_STATUS。 CH552包含8051标准SFR的寄存器,同时又增加了其他设备控制寄存器。具体SFR见下表。 表5.1 特殊功能寄存器表 0xF8 SPI0_STAT SPI0_DATA SPI0_CTRL SPI0_CK_SE SPI0_S_PRE SPI0_SETUP RESET_KEEP WDOG_COUNT 0xF0 B 0xE8 IE_EX IP_EX UEP4_1_MOD UEP2_3_MOD UEP0_DMA_L UEP0_DMA_H UEP1_DMA_L UEP1_DMA_H 0xE0 ACC USB_INT_EN USB_CTRL USB_DEV_AD UEP2_DMA_L UEP2_DMA_H UEP3_DMA_L UEP3_DMA_H 0xD8 USB_INT_FG USB_INT_ST USB_MIS_ST USB_RX_LEN UEP0_CTRL UEP0_T_LEN UEP4_CTRL UEP4_T_LEN 0xD0 PSW UDEV_CTRL UEP1_CTRL UEP1_T_LEN UEP2_CTRL UEP2_T_LEN UEP3_CTRL UEP3_T_LEN 0xC8 T2CON T2MOD RCAP2L RCAP2L TL2 TH2 T2CAP1L T2CAP1H 0xC0 SCON1 SBUF1 SBAUD1 TKEY_CTRL TKEY_DATL TKEY_DATH PIN_FUNC GPIO_IE 0xB8 IP CLOCK_CFG 0xB0 P3 GLOBAL_CFG 0xA8 IE WAKE_CTRL 0xA0 P2 SAFE_MOD CHIP_ID XBUS_AUX 0x98 SCON SBUF ADC_CFG PWM_DATA2 PWM_DATA1 PWM_CTRL PWM_CK_SE ADC_DATA 0x90 P1 USB_C_CTRL P1_MOD_OC P1_DIR_PU P3_MOD_OC P3_DIR_PU 0x88 TCON TMOD TL0 TL1 TH0 TH1 ROM_DATA_L ROM_DATA_H 0x80 ADC_CTRL SP DPL DPH ROM_ADDR_L ROM_ADDR_H ROM_CTRL ROM_STATUS PCON 备注:(1)、红色文本代表可以按位寻址;(2)、以下是颜色框对应说明 寄存器地址 SPI0相关寄存器 ADC相关寄存器 Touch-Key相关寄存器 USB相关寄存器 定时/计数器2相关寄存器 端口设置相关寄存器 PWM1和PWM2相关寄存器 UART1相关寄存器 Flash-ROM相关寄存器
5.2 SFR 分类和复位值
CH552手册 5 表5.2 SFR描述和复位值 功能分类 名称 地址 描述 复位值 系统设置 相关寄存器 B F0h B 寄存器 0000 0000b ACC E0h 累加器 0000 0000b PSW D0h 程序状态寄存器 0000 0000b GLOBAL_CFG B1h 全局配置寄存器(CH552引导程序状态下) 1010 0000b 全局配置寄存器(CH552应用程序状态下) 1000 0000b 全局配置寄存器(CH551引导程序状态下) 1110 0000b 全局配置寄存器(CH551应用程序状态下) 1100 0000b CHIP_ID A1h CH552芯片ID识别码(只读) 0101 0010b CH551芯片ID识别码(只读) 0101 0001b SAFE_MOD A1h 安全模式控制寄存器(只写) 0000 0000b DPH 83h 数据地址指针高8 位 0000 0000b DPL 82h 数据地址指针低8 位 0000 0000b DPTR 82h DPL 和DPH组成16位SFR 0000h SP 81h 堆栈指针 0000 0111b 时钟、睡眠 及电源控制 相关寄存器 WDOG_COUNT FFh 看门狗计数寄存器 0000 0000b RESET_KEEP FEh 复位保持寄存器(上电复位状态下) 0000 0000b CLOCK_CFG B9h 系统时钟配置寄存器 1000 0011b WAKE_CTRL A9h 睡眠唤醒控制寄存器 0000 0000b PCON 87h 电源控制寄存器(上电复位状态下) 0001 0000b 中断控制 相关寄存器 IP_EX E9h 扩展中断优先级控制寄存器 0000 0000b IE_EX E8h 扩展中断使能寄存器 0000 0000b GPIO_IE C7h GPIO 中断使能寄存器 0000 0000b IP B8h 中断优先级控制寄存器 0000 0000b IE A8h 中断使能寄存器 0000 0000b Flash-ROM 相关寄存器 ROM_DATA_H 8Fh flash-ROM 数据寄存器高字节 xxxx xxxxb ROM_DATA_L 8Eh flash-ROM 数据寄存器低字节 xxxx xxxxb ROM_DATA 8Eh ROM_DATA_L 和ROM_DATA_H组成16位SFR xxxxh ROM_STATUS 86h flash-ROM 状态寄存器(只读) 0000 0000b ROM_CTRL 86h flash-ROM 控制寄存器(只写) 0000 0000b ROM_ADDR_H 85h flash-ROM 地址寄存器高字节 xxxx xxxxb ROM_ADDR_L 84h flash-ROM 地址寄存器低字节 xxxx xxxxb ROM_ADDR 84h ROM_ADDR_L 和ROM_ADDR_H组成16位SFR xxxxh 端口设置 相关寄存器 PIN_FUNC C6h 引脚功能选择寄存器 1000 0000b XBUS_AUX A2h 外部总线辅助设置寄存器 0000 0000b P3_DIR_PU 97h P3 端口方向控制和上拉使能寄存器 1111 1111b P3_MOD_OC 96h P3 端口输出模式寄存器 1111 1111b P1_DIR_PU 93h P1 端口方向控制和上拉使能寄存器 1111 1111b P1_MOD_OC 92h P1 端口输出模式寄存器 1111 1111b P3 B0h P3 端口输入输出寄存器 1111 1111b P2 A0h P2 端口输出寄存器 1111 1111b P1 90h P1 端口输入输出寄存器 1111 1111b
CH552手册 6 定时/计数器 0 和1 相关寄存器 TH1 8Dh Timer1 计数高字节 xxxx xxxxb TH0 8Ch Timer0 计数高字节 xxxx xxxxb TL1 8Bh Timer1 计数低字节 xxxx xxxxb TL0 8Ah Timer0 计数低字节 xxxx xxxxb TMOD 89h Timer0/1 方式寄存器 0000 0000b TCON 88h Timer0/1 控制寄存器 0000 0000b UART0 相关寄存器 SBUF 99h UART0 数据寄存器 xxxx xxxxb SCON 98h UART0 控制寄存器 0000 0000b 定时/计数器 2相关寄存器 T2CAP1H CFh Timer2 捕捉1数据高字节(只读) xxxx xxxxb T2CAP1L CEh Timer2 捕捉1数据低字节(只读) xxxx xxxxb T2CAP1 CEh T2CAP1L 和T2CAP1H组成16位SFR xxxxh TH2 CDh Timer2 计数器高字节 0000 0000b TL2 CCh Timer2 计数器低字节 0000 0000b T2COUNT CCh TL2 和TH2组成16位SFR 0000h RCAP2H CBh 计数重载/捕捉2 数据寄存器高字节 0000 0000b RCAP2L CAh 计数重载/捕捉2 数据寄存器低字节 0000 0000b RCAP2 CAh RCAP2L 和RCAP2H组成16位SFR 0000h T2MOD C9h Timer2 方式寄存器 0000 0000b T2CON C8h Timer2 控制寄存器 0000 0000b PWM1和PWM2 相关寄存器 PWM_CK_SE 9Eh PWM 时钟分频设置寄存器 0000 0000b PWM_CTRL 9Dh PWM 控制寄存器 0000 0010b PWM_DATA1 9Ch PWM1 数据寄存器 xxxx xxxxb PWM_DATA2 9Bh PWM2 数据寄存器 xxxx xxxxb SPI0 相关寄存器 SPI0_SETUP FCh SPI0 设置寄存器 0000 0000b SPI0_S_PRE FBh SPI0 从机模式预置数据寄存器 0010 0000b SPI0_CK_SE FBh SPI0 时钟分频设置寄存器 0010 0000b SPI0_CTRL FAh SPI0 控制寄存器 0000 0010b SPI0_DATA F9h SPI0 数据收发寄存器 xxxx xxxxb SPI0_STAT F8h SPI0 状态寄存器 0000 1000b UART1 相关寄存器 SBAUD1 C2h UART1 波特率设置寄存器 xxxx xxxxb SBUF1 C1h UART1 数据寄存器 xxxx xxxxb SCON1 C0h UART1 控制寄存器 0100 0000b ADC 相关寄存器 ADC_DATA 9Fh ADC 数据寄存器 xxxx xxxxb ADC_CFG 9Ah ADC 配置寄存器 0000 0000b ADC_CTRL 80h ADC 控制寄存器 x000 0000b Touch-Key 相关寄存器 TKEY_DATH C5h Touch-Key 数据高字节(只读) 0000 0000b TKEY_DATL C4h Touch-Key 数据低字节(只读) xxxx xxxxb TKEY_DAT C4h TKEY_DATL 和TKEY_DATH组成16位SFR 00xxh TKEY_CTRL C3h Touch-Key 控制寄存器 x000 0000b USB 相关寄存器 UEP1_DMA_H EFh 端点1缓冲区起始地址高字节 0000 00xxb UEP1_DMA_L EEh 端点1缓冲区起始地址低字节 xxxx xxxxb UEP1_DMA EEh UEP1_DMA_L 和UEP1_DMA_H组成16位SFR 0xxxh UEP0_DMA_H EDh 端点0和4缓冲区起始地址高字节 0000 00xxb
CH552手册 7 UEP0_DMA_L ECh 端点0和4缓冲区起始地址低字节 xxxx xxxxb UEP0_DMA ECh UEP0_DMA_L 和UEP0_DMA_H组成16位SFR 0xxxh UEP2_3_MOD EBh 端点2、3模式控制寄存器 0000 0000b UEP4_1_MOD EAh 端点1、4模式控制寄存器 0000 0000b UEP3_DMA_H E7h 端点3缓冲区起始地址高字节 0000 00xxb UEP3_DMA_L E6h 端点3缓冲区起始地址低字节 xxxx xxxxb UEP3_DMA E6h UEP3_DMA_L 和UEP3_DMA_H组成16位SFR 0xxxh UEP2_DMA_H E5h 端点2缓冲区起始地址高字节 0000 00xxb UEP2_DMA_L E4h 端点2缓冲区起始地址低字节 xxxx xxxxb UEP2_DMA E4h UEP2_DMA_L 和UEP2_DMA_H组成16位SFR 0xxxh USB_DEV_AD E3h USB 设备地址寄存器 0000 0000b USB_CTRL E2h USB 控制寄存器 0000 0110b USB_INT_EN E1h USB 中断使能寄存器 0000 0000b UEP4_T_LEN DFh 端点4发送长度寄存器 0xxx xxxxb UEP4_CTRL DEh 端点4控制寄存器 0000 0000b UEP0_T_LEN DDh 端点0发送长度寄存器 0xxx xxxxb UEP0_CTRL DCh 端点0控制寄存器 0000 0000b USB_RX_LEN DBh USB 接收长度寄存器(只读) 0xxx xxxxb USB_MIS_ST DAh USB 杂项状态寄存器(只读) xx10 1000b USB_INT_ST D9h USB 中断状态寄存器(只读) 00xx xxxxb USB_INT_FG D8h USB 中断标志寄存器 0010 0000b UEP3_T_LEN D7h 端点3发送长度寄存器 0xxx xxxxb UEP3_CTRL D6h 端点3控制寄存器 0000 0000b UEP2_T_LEN D5h 端点2发送长度寄存器 0000 0000b UEP2_CTRL D4h 端点2控制寄存器 0000 0000b UEP1_T_LEN D3h 端点1发送长度寄存器 0xxx xxxxb UEP1_CTRL D2h 端点1控制寄存器 0000 0000b UDEV_CTRL D1h USB 设备端口控制寄存器 10xx 0000b USB_C_CTRL 91h USB type-C 配置通道控制寄存器 0000 0000b 5.3 通用8051 寄存器 表5.3.1 通用8051寄存器列表 名称 地址 描述 复位值 B F0h B 寄存器 00h A、ACC E0h 累加器 00h PSW D0h 程序状态寄存器 00h GLOBAL_CFG B1h 全局配置寄存器(CH552引导程序状态下) A0h 全局配置寄存器(CH552应用程序状态下) 80h 全局配置寄存器(CH551引导程序状态下) E0h 全局配置寄存器(CH551应用程序状态下) C0h CHIP_ID A1h CH552芯片ID识别码(只读) 52h CH551芯片ID识别码(只读) 51h SAFE_MOD A1h 安全模式控制寄存器(只写) 00h
CH552手册 8 PCON 87h 电源控制寄存器(上电复位状态下) 10h DPH 83h 数据地址指针高8 位 00h DPL 82h 数据地址指针低8 位 00h DPTR 82h DPL 和DPH组成16位SFR 0000h SP 81h 堆栈指针 07h B 寄存器(B): 位 名称 访问 描述 复位值 [7:0] B RW 算术运算寄存器,主要用于乘法和除法运算,可按位寻址 00h A 累加器(A、ACC): 位 名称 访问 描述 复位值 [7:0] A/ACC RW 算术运算累加器,可按位寻址 00h 程序状态寄存器(PSW): 位 名称 访问 描述 复位值
7 CY RW
进位标志位:执行算术运算和逻辑运算指令时,用于记录最高位的 进位或者借位;进行8 位加法运算时,最高位进位,则该位置位, 否则清零;进行8位减法运算时,若借位,则该位置位,否则清零; 逻辑指令可使该位置位或清零
6 AC RW 辅助进位标志位:记录加减法运算时,低4 位向高4 位有进位或借
位,AC置位,否则清零 0
5 F0 RW 可按位寻址的通用标志位0:使用者可自己定义,可软件清零或置位 0
4 RS1 RW 寄存器组选择位高位 0
3 RS0 RW 寄存器组选择位低位 0
2 OV RW 溢出标志位:加减法运算时,运算结果超过8 位二进制数,则OV置
1,标志溢出,否则清0 0
1 F1 RW 可按位寻址的通用标志位1:使用者可自己定义,可软件清零或置位 0
0 P RO 奇偶标志位:记录指令执行后累加器A中1 的奇偶性,奇数个1 则P
置位,偶数个1则P清零 0 处理器的状态保存在状态寄存器PSW 中,PSW 支持按位寻址。状态字中包括进位标志位,用于 BCD 码处理的辅助进位标志位,奇偶标志位,溢出标志位,还有用于工作寄存器组选择的RS0和RS1。 工作寄存器组所在的区域都可以通过直接或者间接方式进行访问。 表5.3.2 RS1和RS0工作寄存器组选择表 RS1 RS0 工作寄存器组 0 0 0 组(00h-07h) 0 1 1 组(08h-0Fh) 1 0 2 组(10h-17h) 1 1 3 组(18h-1Fh) 表5.3.3 影响标志位的操作(X表示标志位与操作结果有关) 操作 CY OV AC 操作 CY OV AC ADD X X X SETB C 1 ADDC X X X CLR C 0
CH552手册 9 SUBB X X X CPL C X MUL 0 X MOV C, bit X DIV 0 X ANL C, bit X DA A X ANL C,/bit X RRC A X ORL C, bit X RLC A X ORL C,/bit X CJNE X 数据地址指针(DPTR): 位 名称 访问 描述 复位值 [7:0] DPL RW 数据指针低字节 00h [7:0] DPH RW 数据指针高字节 00h DPL 和DPH 组成16 位数据指针DPTR,用于访问xRAM 数据存储器或者程序存储器,实际DPTR 对应DPTR0和DPTR1两组物理上的16位数据指针,由XBUS_AUX 中的DPS动态选择。 堆栈指针(SP): 位 名称 访问 描述 复位值 [7:0] SP RW 堆栈指针,主要用于程序调用和中断调用以及数据进出栈 07h 堆栈具体功能:保护断点和保护现场,按先入后出的原则进行管理。入栈时SP指针自动加1, 保存数据或断点信息;出栈时取SP指针指向数据单元,SP指针自动减1。SP在复位后的初值是07h, 相应的默认堆栈存储从08h开始。 5.4 特有寄存器 全局配置寄存器(GLOBAL_CFG),仅在安全模式下可写: 位 名称 访问 描述 复位值 [7:6] 保留 RO 对于CH552,是固定值10 10b [7:6] 保留 RO 对于CH551,是固定值11 11b 5 bBOOT_LOAD RO Boot loader状态位,用于区分ISP引导程序状态或者应 用程序状态:电源上电时置1,软件复位时清0。 对于有ISP引导程序的芯片,该位为1 说明从未软件复位 过,通常是上电后运行的ISP 引导程序状态;该位为0 说明已经软件复位过,通常是应用程序状态 4 bSW_RESET RW 软件复位控制位:置1 导致软件复位,硬件自动清零 0 3 bCODE_WE RW Flash-ROM和DataFlash写允许位: 该位为0 则写保护;为1则Flash-ROM和Data可改写 0 2 bDATA_WE RW Flash-ROM的DataFlash区域写允许位: 该位为0 则写保护;为1则DataFlash区域可改写 0 1 bLDO3V3_OFF RW USB电源调整器LDO的禁用控制位: 该位为0 则允许LDO,可以由5V电源产生3.3V电压用于 USB和内部时钟振荡器; 为1则禁用LDO,V33引脚必须输入外部的3.3V电源 0 bWDOG_EN RW 看门狗复位使能位:该位为0 看门狗只用作定时器;该位 为1允许计时溢出时产生看门狗复位 0
CH552手册 10 芯片ID识别码(CHIP_ID): 位 名称 访问 描述 复位值 [7:0] CHIP_ID RO 对于CH552,是固定值52h,用于识别芯片 52h [7:0] CHIP_ID RO 对于CH551,是固定值51h,用于识别芯片 51h 安全模式控制寄存器(SAFE_MOD): 位 名称 访问 描述 复位值 [7:0] SAFE_MOD WO 用于进入或者终止安全模式 00h 部分SFR仅在安全模式下才能写入数据,而在非安全模式下总是只读状态。进入安全模式步骤: (1)、向该寄存器写入55h; (2)、接着向该寄存器写入AAh; (3)、此后约13 到23 个系统主频周期都处于安全模式下,该有效期内可以改写一个或多个安全类 SFR 或普通SFR; (4)、超出上述有效期后自动终止安全模式; (5)、或者再向该寄存器写任意值可以提前终止安全模式。 6、存储器结构 6.1 存储器空间 CH552寻址空间分为程序存储空间、内部数据存储空间、外部数据存储空间。 图6.1 存储器结构图
CH552手册 11 6.2 程序存储空间 程序存储空间共64KB,如图6.1所示,其中16KB用于ROM,包括保存指令代码的Code Flash 区域和配置信息Configuration Information区域。 Code Flash包括低地址区域的应用程序代码和高地址区域的引导程序代码,也可将这两块区域 合并用于保存单一应用程序代码。 对于CH551,Code Flash的应用程序代码区域仅10KB。 ROM 是iFlash™工艺,对于空白ROM正式封装后的成品,可以在5V电源下进行约200次编程。 Data Flash地址范围为C000h到C0FFH(仅偶地址有效,实际是每隔一个字节有一个存储单元), 只支持单字节(8位)读和写操作,芯片掉电后数据保持不变。Data Flash支持约1万次擦写,建议 均衡使用,禁止对同一存储单元超过10K次擦写,如有更多擦写次数建议用CH558或CH546/7。 配置信息Configuration Information包括位于3FF8H到3FFFH地址的4组16位数据,后三组 为只读单元,提供芯片ID。位于3FF8H地址的配置数据由编程器根据需要设定,参考表6.2。 表6.2 flash-ROM配置信息描述 位地址 位名称 说明 建议值
15 Code_Protect flash-ROM中的代码和数据保护模式:
0-禁止编程器读出,程序保密;1-允许读出 0/1
14 No_Boot_Load
使能BootLoader引导代码启动模式: 0-从0000h地址的应用程序启动; 1-从3800h地址的引导程序启动 Upper 128 bytes internal RAM (indirect addressing by @R0/R1) SFR (Direct addressing) Lower 128 bytes internal RAM (direct or indirect addressing) FFH 80H 7FH 00H Internal Data Address Space External Data Address Space FFFFH 0400H 03FFH 0000H 1KB on-chip expanded xRAM @xdata (indirect addressing by MOVX) Reserved area @xdata Data Flash DATA_FLASH_ADDR Boot Loader Code Flash BOOT_LOAD_ADDR Reserved area Program Address Space Configuration information ROM_CFG_ADDR Reserved area Application Code Flash FFFFH C100H C0FFH C000H BFFFH 4000H 3FFFH 3FF8H 3FF7H 3800H 37FFH 0000H
CH552手册 12
13 En_Long_Reset 使能上电复位期间的额外延时复位:
0-标准短复位;1-宽复位,额外增加44mS复位时间 0
12 En_RST_RESET 使能RST引脚作为手工复位输入引脚:0-禁止;1-使能RST 0
[11:10] 保留 (由编程器根据需要自动设定为00) 00
9 Must_1 (由编程器根据需要自动设定为1) 1
8 Must_0 (由编程器根据需要自动设定为0) 0
[7:0] All_1 (由编程器根据需要自动设定为FFh) FFh 6.3 数据存储空间 内部数据存储空间共256字节,如图6.1所示,已全部用于SFR和iRAM,其中iRAM用于堆栈 和快速数据暂存,可细分为工作寄存器R0-R7、位变量bdata、字节变量data、idata等。 外部数据存储空间共64KB,如图6.1所示,部分用于1KB片内扩充xRAM,剩余为保留区域。 对于CH551,片内扩充xRAM仅512字节。 6.4 flash-ROM 寄存器 表6.4 flash-ROM操作寄存器列表 名称 地址 描述 复位值 ROM_DATA_H 8Fh flash-ROM 数据寄存器高字节 xxh ROM_DATA_L 8Eh flash-ROM 数据寄存器低字节 xxh ROM_DATA 8Eh ROM_DATA_L 和ROM_DATA_H组成16位SFR xxxxh ROM_STATUS 86h flash-ROM 状态寄存器(只读) 00h ROM_CTRL 86h flash-ROM 控制寄存器(只写) 00h ROM_ADDR_H 85h flash-ROM 地址寄存器高字节 xxh ROM_ADDR_L 84h flash-ROM 地址寄存器低字节 xxh ROM_ADDR 84h ROM_ADDR_L 和ROM_ADDR_H组成16位SFR xxxxh flash-ROM地址寄存器(ROM_ADDR): 位 名称 访问 描述 复位值 [7:0] ROM_ADDR_H RW flash-ROM 地址高字节 xxh [7:0] ROM_ADDR_L RW flash-ROM地址低字节,只支持偶地址, 对于Data Flash,必须将实际偏移地址00H-7FH左移 1位变为偶地址00H/02H/04H…~FEH后再置入 xxh flash-ROM数据寄存器(ROM_DATA): 位 名称 访问 描述 复位值 [7:0] ROM_DATA_H RW flash-ROM 待写数据高字节 xxh [7:0] ROM_DATA_L RW flash-ROM待写数据低字节, 对于DataFlash,是待写数据字节或读出的数据字节 xxh flash-ROM控制寄存器(ROM_CTRL): 位 名称 访问 描述 复位值 [7:0] ROM_CTRL WO flash-ROM 控制寄存器 00h
CH552手册 13 flash-ROM状态寄存器(ROM_STATUS): 位 名称 访问 描述 复位值 7 保留 RO 保留 0 6 bROM_ADDR_OK RO flash-ROM写操作地址有效状态位: 该位为0 表示参数无效;为1 表示地址有效 0 [5:2] 保留 RO 保留 0000b 1 bROM_CMD_ERR RO flash-ROM操作命令错误状态位: 该位为0 表示命令有效;为1 表示是未知命令 0 0 保留 RO 保留 0 6.5 flash-ROM 操作步骤 1、写flash-ROM代码区域,向目标地址写入双字节数据: (1)、如果需要写flash-ROM代码,则必须选择5V电源电压; (2)、使能安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (3)、设置全局配置寄存器GLOBAL_CFG开启写使能(bCODE_WE或bDATA_WE对应code或data); (4)、设置地址寄存器ROM_ADDR,写入16位目标地址(最低位总是0); (5)、设置数据寄存器ROM_DATA,写入16位要写入的数据,步骤(4)、(5)顺序可对调; (6)、设置操作控制寄存器ROM_CTRL为09Ah,执行写操作,操作期间程序自动暂停运行; (7)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态;如果 要写多个数据,则循环(4)、(5)、(6)、(7)步骤; (8)、再次进入安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (9)、设置全局配置寄存器GLOBAL_CFG开启写保护(bCODE_WE=0,bDATA_WE=0)。 2、写Data Flash数据区域,向目标地址写入单字节数据: (1)、使能安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (2)、设置全局配置寄存器GLOBAL_CFG开启写使能(bDATA_WE对应data); (3)、设置地址寄存器ROM_ADDR,写入16位目标地址,实际偏移地址00H-7FH必须左移1位变为 偶地址00H/02H/04H…~FEH后再置入,最终地址依次是C000H/C002H/C004…; (4)、设置数据寄存器ROM_DATA_L,写入8 位要写入的数据,步骤(3)、(4)顺序可对调; (5)、设置操作控制寄存器ROM_CTRL为09Ah,执行写操作,操作期间程序自动暂停运行; (6)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态;如果 要写多个数据,则循环(3)、(4)、(5)、(6)步骤; (7)、再次进入安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (8)、设置全局配置寄存器GLOBAL_CFG开启写保护(bCODE_WE=0,bDATA_WE=0)。 3、读Data Flash数据区域,从目标地址读取单字节数据: (1)、设置地址寄存器ROM_ADDR,写入16位目标地址,实际偏移地址00H-7FH必须左移1位变为 偶地址,最终地址依次是C000H/C002H/C004…; (2)、设置操作控制寄存器ROM_CTRL为08Eh,执行读操作,操作期间程序自动暂停运行; (3)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS中的bROM_CMD_ERR可以查看此 次操作状态;如果命令有效,那么读出的8 位数据将保存在数据寄存器ROM_DATA_L中; (4)、如果要读多个数据,则循环(1)、(2)、(3)步骤。 4、读flash-ROM: 直接使用MOVC指令,或通过指向程序存储空间的指针,读取目标地址的code或data。
CH552手册 14 6.6 在板编程和ISP 下载 当配置信息Code_Protect=1 时,CH552 芯片flash-ROM 中的代码和Data Flash 中的数据可以 由外部的编程器通过同步串行接口读写;当配置信息Code_Protect=0时,flash-ROM中的代码和Data Flash中的数据被保护,无法读出,但是可以被擦除,擦除后重新上电则解除代码保护。 当CH552芯片被预置了BootLoader引导程序后,CH552可以支持USB或者异步串口等多种ISP 下载方式加载应用程序;但在没有引导程序的情况下,CH552 只能由外部专用编程器写入引导程序 或者应用程序。为了支持在板编程,必须临时使用5V电源电压,并且电路中需要预留CH552与编程 器之间的4根连接引脚,最少的必要连接引脚是3根:P1.4、P1.6、P1.7。 表6.6.1 与编程器之间的连接引脚 引脚 GPIO 引脚描述 RST RST 编程状态下的复位控制引脚,高电平允许进入编程状态 SCS P1.4 编程状态下的片选输入引脚(必要),默认高电平,低电平有效 SCK P1.7 编程状态下的时钟输入引脚(必要) MISO P1.6 编程状态下的数据输出引脚(必要) 注:无论是在板编程或者是通过串口或USB下载程序,都必须临时使用5V电源电压。 6.7 芯片唯一ID 号 每只单片机出厂时都具有唯一ID号,即芯片身份识别号。该ID数据共5个字节,存储于配置 信息Configuration Information区域的3FFAH到3FFFH地址。其中3FFBH地址为保留单元,3FFCH 和3FFEH两个地址各16位数据以及3FFAH地址的8位数据合并为40位芯片ID数据。 表6.7.1 芯片ID地址表 程序空间地址 ID数据描述 3FFAh、3FFBh ID末字数据,依次是40位ID号的最高字节、保留字节 3FFCh、3FFDh ID首字数据,依次是ID号的最低字节、次低字节 3FFEh、3FFFh ID次字数据,依次是ID号的次高字节、高字节 该ID数据可以通过读Code Flash的方式获取。ID号可以配合下载工具用于对目标程序进行加 密,一般的应用,只需使用到ID号前32位,即可以忽略3FFAH地址的8 位数据。 7、电源管理、睡眠及复位 7.1 外部电源输入 CH552芯片内置5V到3.3V的低压差电压调整器,支持外部5V或者3.3V甚至2.8V电源电压输 入,两种电源电压输入模式参考下表。 外部电源电压 VCC引脚电压:外部电压3V~5V V33 引脚电压:内部电压3.3V 3.3V或3V 包括小于3.6V 输入外部3.3V电压到电压调整器, 必须对地接不小于0.1uF退耦电容 输入外部3.3V作为内部工作电源, 必须对地接不小于0.1uF退耦电容 包括大于3.6V 输入外部5V电压到电压调整器, 必须对地接不小于0.1uF退耦电容 内部电压调整器3.3V输出 及3.3V内部工作电源输入, 必须对地接不小于0.1uF退耦电容 在电源上电或者系统复位后,CH552 默认处于运行状态。在性能满足要求的前提下,适当降低 系统主频可以降低运行时的功耗。当CH552完全不需要运行时,可以设置PCON中的PD进入睡眠状 态,睡眠状态下可以选择通过USB、UART0、UART1、SPI0以及部分GPIO 进行外部唤醒。
CH552手册 15 7.2 电源和睡眠控制寄存器 表7.2.1 电源和睡眠控制寄存器列表 名称 地址 描述 复位值 WDOG_COUNT FFh 看门狗计数寄存器 00h RESET_KEEP FEh 复位保持寄存器 00h WAKE_CTRL A9h 睡眠唤醒控制寄存器 00h PCON 87h 电源控制寄存器 10h 看门狗计数寄存器(WDOG_COUNT): 位 名称 访问 描述 复位值 [7:0] WDOG_COUNT RW 看门狗当前计数,计满0FFh 转向00h 时溢出,溢出时自 动设置中断标志bWDOG_IF_TO为1 00h 复位保持寄存器(RESET_KEEP): 位 名称 访问 描述 复位值 [7:0] RESET_KEEP RW 复位保持寄存器,数值可以被人为修改,除了上电复位可 将其清零之外,其它任何复位都不影响该数值 00h 睡眠唤醒控制寄存器(WAKE_CTRL),仅在安全模式下可写: 位 名称 访问 描述 复位值 7 bWAK_BY_USB RW USB 事件唤醒使能,该位为0 禁止唤醒 0 6 bWAK_RXD1_LO RW UART1接收输入低电平唤醒使能,该位为0 禁止唤醒。 根据bUART1_PIN_X=0/1选择RXD1或RXD1_引脚 0 5 bWAK_P1_5_LO RW P1.5 低电平唤醒使能,为0 禁止唤醒 0 4 bWAK_P1_4_LO RW P1.4 低电平唤醒使能,为0 禁止唤醒 0 3 bWAK_P1_3_LO RW P1.3 低电平唤醒使能,为0 禁止唤醒 0 2 bWAK_RST_HI RW RST 高电平唤醒使能,为0 禁止唤醒 0 1 bWAK_P3_2E_3L RW P3.2 边沿变化和P3.3低电平唤醒使能,为0禁止唤醒 0 0 bWAK_RXD0_LO RW UART0接收输入低电平唤醒使能,为0 禁止唤醒。 根据bUART0_PIN_X=0/1选择RXD0或RXD0_引脚 0 电源控制寄存器(PCON): 位 名称 访问 描述 复位值
7 SMOD RW 当用定时器1 产生UART0波特率时,选择UART0模式1、
2、3的通讯波特率:0-慢速模式;1-快速模式 0 6 保留 RO 保留 0 5 bRST_FLAG1 R0 芯片最近一次复位标志高位 0 4 bRST_FLAG0 R0 芯片最近一次复位标志低位 1
3 GF1 RW 通用标志位1:使用者可自己定义,可软件清零或置位 0
2 GF0 RW 通用标志位0:使用者可自己定义,可软件清零或置位 0
1 PD RW 睡眠模式使能,置1后睡眠,唤醒后硬件自动清零 0
0 保留 RO 保留 0 表7.2.2 芯片最近一次复位标志描述
CH552手册 16 bRST_FLAG1 bRST_FLAG0 复位标志描述 0 0 软件复位,来源:bSW_RESET=1并且(bBOOT_LOAD=0或bWDOG_EN=1) 0 1 电源上电复位,来源:VCC引脚电压低于检测电平 1 0 看门狗复位,来源:bWDOG_EN=1并且看门狗超时溢出 1 1 外部引脚手工复位,来源:En_RST_RESET=1并且RST输入高电平 7.3 复位控制 CH552有4个复位源:上电复位、外部复位、软件复位、看门狗复位,后三者属于热复位。 7.3.1 上电复位 上电复位POR由片内电压检测电路产生。POR电路持续监控VCC引脚的电源电压,低于检测电 平Vpot时产生上电复位,并由硬件自动延时Tpor以保持复位状态,延时结束后CH552运行。 只有上电复位才使CH552重新加载配置信息以及清零RESET_KEEP,其它热复位不影响。 7.3.2 外部复位 外部复位由外加于RST引脚的高电平产生。当配置信息En_RST_RESET为1,并且RST引脚上的 高电平持续时间大于Trst时触发复位过程。当外加高电平信号撤消后,硬件自动延时Trdl以保持 复位状态,延时结束后CH552从0地址开始执行。 7.3.3 软件复位 CH552 支持内部软件复位,以便不需要外部干预即可主动复位CPU 状态并重新运行。设置全局 配置寄存器GLOBAL_CFG中的bSW_RESET为1,即可软件复位,并且自动延时Trdl以保持复位状态, 延时结束后CH552从0地址开始执行,bSW_RESET位由硬件自动清零。 当bSW_RESET置1时,如果bBOOT_LOAD=0或者bWDOG_EN=1,那么复位后bRST_FLAG1/0将指示 为软件复位;当bSW_RESET置1时,如果bBOOT_LOAD=1并且bWDOG_EN=0,那么bRST_FLAG1/0将不 产生新的复位标志,而是保持前一次的复位标志不变。 对于有ISP引导程序的芯片,电源上电复位后,先运行引导程序,该程序根据需要软件复位芯 片以切换到应用程序状态,此次软件复位只导致bBOOT_LOAD清零,不影响bRST_FLAG1/0的状态(由 于复位前bBOOT_LOAD=1),所以当切换到应用程序状态时,bRST_FLAG1/0仍指示为上电复位状态。 7.3.4 看门狗复位 看门狗复位由看门狗定时器超时溢出时产生。看门狗定时器是8 位计数器,其计数的时钟频率 为系统主频Fsys/65536,当计满0FFh转向00h时产生溢出信号。 看门狗定时器溢出信号将触发中断标志bWDOG_IF_TO为1,该中断标志在重新加载WDOG_COUNT 时或者进入相应的中断服务程序时被自动清零。 通过向WDOG_COUNT写入不同的计数初始值,从而实现不同的定时周期Twdc。在6MHz主频下, 写入00h时的看门狗定时周期Twdc约为2.8秒,写入80h时约为1.4秒。在12MHz主频时减半。 如果看门狗定时器溢出时bWDOG_EN=1,那么产生看门狗复位,并且自动延时Trdl 以保持复位 状态,延时结束后CH552从0地址开始执行。 当bWDOG_EN=1时为了避免被看门狗复位,必须及时重置WDOG_COUNT,避免其溢出。 8、系统时钟 8.1 时钟框图 图8.1.1 时钟系统及结构图
CH552手册 17 系统时钟分频选择 MASK_SYS_CK_SEL 4xPLL倍频器 Fosc X 4 = 96MHz USB时钟分频器 Fpll / 2 = 48MHz 外部晶振 XO XI 内部时钟24MHz bOSC_EN_XT USB ADC 分频选择 bADC_CLK UART1 SPI0 分频器 SPI0_CK_SE PWM1/2 分频器 PWM_CK_SE Touch-Key E8051_core T0/T1/T2/UART0/GPIO iFlashROM/iRAM/SFR Watch-DOG分频器 除以65536 Fsys Fsys Fpll Fosc bOSC_EN_INT xRAM 内部时钟或者外部时钟经过二选一后作为原始时钟Fosc,再经过4xPLL 倍频后产生Fpll 高频 时钟,最后经过两组分频器分别得到系统时钟Fsys和USB模块的时钟Fusb4x。系统时钟Fsys直接 提供给CH552的各个模块。 8.2 寄存器描述 表8.2.1 时钟控制寄存器列表 名称 地址 描述 复位值 CLOCK_CFG B9h 系统时钟配置寄存器 83h 系统时钟配置寄存器(CLOCK_CFG),仅在安全模式下可写: 位 名称 访问 描述 复位值
CH552手册 18 7 bOSC_EN_INT RW 内部时钟振荡器使能,该位为1 使能内部时钟振荡器 并且选用内部时钟;该位为0 关闭内部时钟振荡器并 且选用外部晶体振荡器提供时钟 6 bOSC_EN_XT RW 外部晶体振荡器使能,该位为1则P1.2/P1.3引脚作 为XI/XO并启用振荡器,需在XI和XO之间外接石英 晶体或陶瓷振荡器;该位为0 关闭外部振荡器 5 bWDOG_IF_TO RO 看门狗定时器中断标志位,该位为1 表示有中断,由 定时器溢出信号触发;该位为0表示无中断。该位在 重新加载看门狗计数寄存器WDOG_COUNT 时或者进入 相应的中断服务程序后自动清零 4 bROM_CLK_FAST RW flash-ROM 参考时钟频率选择:0-正常(如果 Fosc>=16MHz);1-加快(如果Fosc<16MHz) 0 3 bRST R0 RST 引脚状态输入位 0 [2:0] MASK_SYS_CK_SEL RW 系统时钟频率选择,参考下表8.2.2 011b 表8.2.2 系统主频选择表 MASK_SYS_CK_SEL 系统主频Fsys 与晶体频率Fxt关系 当Fosc=24MHz时的Fsys 000 Fpll / 512 Fxt / 128 187.5KHz
001 Fpll / 128 Fxt / 32 750KHz
010 Fpll / 32 Fxt / 8 3MHz
011 Fpll / 16 Fxt / 4 6MHz
100 Fpll / 8 Fxt / 2 12MHz
101 Fpll / 6 Fxt / 1.5 16MHz
110 Fpll / 4 Fxt / 1 24MHz
111 Fpll / 3 Fxt / 0.75 保留,禁用 8.3 时钟配置 CH552 芯片上电后默认使用内部时钟,内部时钟频率是24MHz。可以通过CLOCK_CFG选择内部时 钟或者外部晶体振荡器时钟,如果关闭外部晶体振荡器,那么XI和XO引脚可以作为P1.2和P1.3 普通I/O端口使用。如果使用外部晶体振荡器提供时钟,那么应该在XI和XO引脚之间跨接晶体, 以及分别为XI和XO引脚对GND连接振荡电容;如果从外部直接输入时钟信号,那么应该从XI引脚 输入,XO引脚悬空。 原始时钟频率Fosc = bOSC_EN_INT ? 24MHz : Fxt PLL 频率Fpll = Fosc * 4 = 96MHz USB 时钟频率Fusb4x = Fpll / 2 = 48MHz 系统主频Fsys参考表8.2.2由Fpll分频获得 复位后的默认状态下,Fosc=24MHz,Fpll=96MHz,Fusb4x=48MHz,Fsys=6MHz。 切换到外部晶体振荡器提供时钟的步骤如下: (1)、进入安全模式,步骤一SAFE_MOD = 55h;步骤二SAFE_MOD = AAh; (2)、用“位或”操作将CLOCK_CFG中的bOSC_EN_XT置1,其它位保持不变,启用晶体振荡器; (3)、延时数毫秒,通常5mS~10mS,等待晶体振荡器工作稳定; (4)、再次进入安全模式,步骤一SAFE_MOD = 55h;步骤二SAFE_MOD = AAh; (5)、用“位与”操作将CLOCK_CFG中的bOSC_EN_INT清0,其它位保持不变,切换到外部时钟;
CH552手册 19 (6)、关闭安全模式,向SAFE_MOD写入任意数值提前终止安全模式。 修改系统主频的步骤如下: (1)、进入安全模式,步骤一SAFE_MOD = 55h;步骤二SAFE_MOD = AAh; (2)、向CLOCK_CFG写入新数值; (3)、关闭安全模式,向SAFE_MOD写入任意数值提前终止安全模式。 备注: (1)、如果使用USB模块,那么Fusb4x必须是48MHz;并且在用全速USB时,系统主频Fsys不低于 6MHz;在用低速USB时,系统主频Fsys不低于1.5MHz。 (2)、优先使用较低的系统时钟频率Fsys,从而降低系统动态功耗,并使工作温度范围变宽。 (3)、内部时钟振荡器由V33电源供电,所以V33电压变化尤其是电压偏低会影响内部时钟频率。 9、中断 CH552芯片支持14组中断信号源,包括与标准MCS51兼容的6组中断:INT0、T0、INT1、T1、 UART0、T2,以及扩展的8组中断:SPI0、TKEY、USB、ADC、UART1、PWMX、GPIO、WDOG,其中GPIO 中断可以从7个I/O引脚中选择。 9.1 寄存器描述 表9.1.1 中断向量表 中断源 入口地址 中断号 描述 默认优先权顺序 INT_NO_INT0 0x0003 0 外部中断0 高优先权 低优先权 INT_NO_TMR0 0x000B 1 定时器0 中断 INT_NO_INT1 0x0013 2 外部中断1 INT_NO_TMR1 0x001B 3 定时器1 中断 INT_NO_UART0 0x0023 4 UART0 中断 INT_NO_TMR2 0x002B 5 定时器2 中断 INT_NO_SPI0 0x0033 6 SPI0 中断 INT_NO_TKEY 0x003B 7 触摸按键定时器中断 INT_NO_USB 0x0043 8 USB 中断 INT_NO_ADC 0x004B 9 ADC 中断 INT_NO_UART1 0x0053 10 UART1 中断 INT_NO_PWMX 0x005B 11 PWM1/PWM2 中断 INT_NO_GPIO 0x0063 12 GPIO 中断 INT_NO_WDOG 0x006B 13 看门狗定时器中断 表9.1.2 中断相关寄存器列表 名称 地址 描述 复位值 IP_EX E9h 扩展中断优先级控制寄存器 00h IE_EX E8h 扩展中断使能寄存器 00h GPIO_IE C7h GPIO中断使能寄存器 00h IP B8h 中断优先级控制寄存器 00h IE A8h 中断使能寄存器 00h
CH552手册 20 中断使能寄存器(IE): 位 名称 访问 描述 复位值
7 EA RW 全局中断使能控制位,该位为1并且E_DIS为0 则允许中断;该
位为0屏蔽所有中断请求 0
6 E_DIS RW
全局中断禁用控制位,该位为1屏蔽所有中断请求;该位为0并 且EA为1则允许中断。该位通常用于在flash-ROM操作期间临时 禁止中断
5 ET2 RW 定时器2中断使能位,该位为1允许T2中断;为0屏蔽 0
4 ES RW 异步串口0中断使能位,该位为1 允许UART0中断;为0屏蔽 0
3 ET1 RW 定时器1中断使能位,该位为1允许T1中断;为0屏蔽 0
2 EX1 RW 外部中断1使能位,该位为1 允许INT1中断;为0屏蔽 0
1 ET0 RW 定时器0中断使能位,该位为1允许T0中断;为0屏蔽 0
0 EX0 RW 外部中断0使能位,该位为1 允许INT0中断;为0屏蔽 0
扩展中断使能寄存器(IE_EX): 位 名称 访问 描述 复位值
7 IE_WDOG RW 看门狗定时器中断使能位,该位为1允许WDOG中断;为0屏蔽 0
6 IE_GPIO RW GPIO中断使能位,该位为1 允许GPIO_IE中使能的中断;为0屏
蔽GPIO_IE中所有中断 0
5 IE_PWMX RW PWM1/PWM2 中断使能位,该位为1 允许PWM1/2中断;为0屏蔽 0
4 IE_UART1 RW 异步串口1中断使能位,该位为1 允许UART1中断;为0屏蔽 0
3 IE_ADC RW ADC 模数转换中断使能位,该位为1允许ADC中断;为0屏蔽 0
2 IE_USB RW USB 中断使能位,该位为1 允许USB中断;为0 屏蔽 0
1 IE_TKEY RW 触摸按键定时器中断使能位,该位为1 允许定时中断;为0屏蔽 0
0 IE_SPI0 RW SPI0 中断使能位,该位为1 允许SPI0中断;为0屏蔽 0
GPIO中断使能寄存器(GPIO_IE): 位 名称 访问 描述 复位值 7 bIE_IO_EDGE RW GPIO边沿中断模式使能: 该位为 0 选择电平中断模式,GPIO 引脚输入有效电平则 bIO_INT_ACT 为1 并一直请求中断,GPIO 输入无效电平时 bIO_INT_ACT为0 并取消中断请求; 该位为1选择边沿中断模式,GPIO引脚输入有效边沿时产生 中断标志bIO_INT_ACT并请求中断,该中断标志无法软件清 零,只能在复位时或电平中断模式下或进入相应的中断服务 程序时被自动清零 6 bIE_RXD1_LO RW 该位为1 使能UART1 接收引脚中断(电平模式低电平有效, 边沿 模式下 降沿 有效) ;该位为 0 禁止 。根据 bUART1_PIN_X=0/1选择RXD1或RXD1_引脚 5 bIE_P1_5_LO RW 该位为1使能P1.5中断(电平模式低电平有效,边沿模式下 降沿有效);该位为0 禁止 0 4 bIE_P1_4_LO RW 该位为1使能P1.4中断(电平模式低电平有效,边沿模式下 降沿有效);该位为0 禁止 0
CH552手册 21 3 bIE_P1_3_LO RW 该位为1使能P1.3中断(电平模式低电平有效,边沿模式下 降沿有效);该位为0 禁止 0 2 bIE_RST_HI RW 该位为1 使能RST 中断(电平模式高电平有效,边沿模式上 升沿有效);该位为0 禁止 0 1 bIE_P3_1_LO RW 该位为1使能P3.1中断(电平模式低电平有效,边沿模式下 降沿有效);该位为0 禁止 0 0 bIE_RXD0_LO RW 该位为1 使能UART0 接收引脚中断(电平模式低电平有效, 边沿 模式下 降沿 有效) ;该位为 0 禁止 。根据 bUART0_PIN_X=0/1选择RXD0或RXD0_引脚 中断优先级控制寄存器(IP): 位 名称 访问 描述 复位值
7 PH_FLAG RO 高优先级中断正在执行标志位 0
6 PL_FLAG RO 低优先级中断正在执行标志位 0
5 PT2 RW 定时器2中断优先级控制位 0
4 PS RW UART0 中断优先级控制位 0
3 PT1 RW 定时器1中断优先级控制位 0
2 PX1 RW 外部中断1的中断优先级控制位 0
1 PT0 RW 定时器0中断优先级控制位 0
0 PX0 RW 外部中断0的中断优先级控制位 0
扩展中断优先级控制寄存器(IP_EX): 位 名称 访问 描述 复位值 7 bIP_LEVEL RO 当前中断嵌套等级标志位,该位为0 则表示无中断或者嵌套 2级中断;该位为1则表示当前嵌套1 级中断 0 6 bIP_GPIO RW GPIO中断优先级控制位 0 5 bIP_PWMX RW PWM1/PWM2 中断优先级控制位 0 4 bIP_UART1 RW UART1中断优先级控制位 0 3 bIP_ADC RW ADC中断优先级控制位 0 2 bIP_USB RW USB中断优先级控制位 0 1 bIP_TKEY RW 触摸按键定时器中断优先级控制位 0 0 bIP_SPI0 RW SPI0中断优先级控制位 0 IP 和IP_EX寄存器用于设定中断优先级,如果某位被置1,则对应的中断源被设定为高优先级; 如果某位被清 0,则对应的中断源被设为低优先级。对于同级中断源,系统有默认的优先权顺序, 默认优先极顺序如表9.1.1所示。其中PH_FLAG和PL_FLAG组合表示当前中断的优先级。 表9.1.3 当前中断优先级状态指示 PH_FLAG PL_FLAG 当前中断优先级状态 0 0 当前无中断 0 1 当前正在执行低优先级中断 1 0 当前正在执行高优先级中断 1 1 意外状态,未知错误
CH552手册 22 10、I/O端口
10.1 GPIO 简介
CH552提供最多17个I/O引脚,部分引脚具有复用功能。其中,端口P1和P3的输入和输出都 可以按位寻址。端口P2是内部端口,仅用于配合R0或R1进行MOVX存取时选择xRAM页。 如果引脚没有被配置成复用功能,则默认是通用I/O引脚状态。作为通用数字I/O使用时,所 有I/O端口都具有真正的“读–修改–写”功能,支持SETB或者CLR等位操作指令独立地改变某些 引脚的方向或者端口电平等。
10.2 GPIO 寄存器
本节所有的寄存器和位以通用格式表示:小写的“n”表示端口的序号(n=1或3),而小写的“x” 表10.2.1 GPIO寄存器列表 名称 地址 描述 复位值 P1 90h P1端口输入输出寄存器 FFh P1_MOD_OC 92h P1端口输出模式寄存器 FFh P1_DIR_PU 93h P1端口方向控制和上拉使能寄存器 FFh P2 A0h P2端口输出寄存器 FFh P3 B0h P3端口输入输出寄存器 FFh P3_MOD_OC 96h P3端口输出模式寄存器 FFh P3_DIR_PU 97h P3端口方向控制和上拉使能寄存器 FFh PIN_FUNC C6h 引脚功能选择寄存器 80h XBUS_AUX A2h 总线辅助设置寄存器 00h Pn 端口输入输出寄存器(Pn): 位 名称 访问 描述 复位值 [7:0] Pn.0~Pn.7 RW Pn.x引脚状态输入和数据输出位,可以按位寻址 FFh Pn 端口输出模式寄存器(Pn_MOD_OC): 位 名称 访问 描述 复位值 [7:0] Pn_MOD_OC RW Pn.x 引脚输出模式设置:0-推挽输出;1-开漏输出 FFh Pn 端口方向控制和上拉使能寄存器(Pn_DIR_PU): 位 名称 访问 描述 复位值 [7:0] Pn_DIR_PU RW 在推挽输出模式下是Pn.x引脚方向控制: 0-输入;1-输出; 在开漏输出模式下是Pn.x引脚上拉电阻使能控制: 0-禁止上拉电阻;1-使能上拉电阻 FFh 由Pn_MOD_OC[x]和Pn_DIR_PU[x]组合实现Pn端口的相关配置,具体如下。 表10.2.2 端口配置寄存器组合 Pn_MOD_OC Pn_DIR_PU 工作模式描述 0 0 高阻输入模式,引脚没有上拉电阻 0 1 推挽输出模式,具有对称驱动能力,可以输出或者吸收较大电流
CH552手册 23 1 0 开漏输出,支持高阻输入,引脚没有上拉电阻 1 1 准双向模式(标准 8051),开漏输出,支持输入,引脚有上拉电阻,当 输出从低电平转高电平时自动驱动2个时钟周期的高电平以加速转换 P1 和P3 端口支持纯输入或推挽输出以及准双向等模式。各引脚都有可以自由控制的内部上拉 电阻,以及都有连接到VCC和GND的保护二极管。 图10.2.1是P1 端口的P1.x 引脚的等效原理图,去掉AIN 之后可以适用于P3端口。图中VCC 改为V33之后适用于P3.6和P3.7,即P3.6和P3.7的上拉或输入或输出高电平只能到V33电压。 P3.6 和P3.7 可选标准上拉电阻(到V33)、15KΩ下拉电阻、或为其中一引脚提供1.5KΩ强上 拉电阻(到V33)。标准上拉电阻仅在bUSB_IO_EN=0即GPIO模式下有效,由P3_DIR_PU的位7位6 控制;下拉电阻在bUC_RESET_SIE=0时由bUD_PD_DIS控制,与bUSB_IO_EN无关;1.5KΩ强上拉电 阻优先于下拉电阻,在bUC_RESET_SIE=0时由bUC_DEV_PU_EN控制,与bUSB_IO_EN无关。 图10.2.1 I/O引脚等效原理图
10.4 GPIO 复用与映射
CH552 部分I/O 引脚具有复用功能,上电后默认均为通用I/O 引脚,使能不同功能模块后,相 应引脚被配置成各自功能模块对应的功能引脚。 引脚功能选择寄存器(PIN_FUNC): 位 名称 访问 描述 复位值 7 bUSB_IO_EN RW USB UDP/UDM引脚使能位,该位为0则P3.6/P3.7用于GPIO, 支持P3_DIR_PU 控制上拉电阻,支持P3_MOD_OC;该位为1 则P3.6/P3.7 用于UDP/UDM,由USB 模块控制,P3_DIR_PU 和P3_MOD_OC对其无效 6 bIO_INT_ACT R0 GPIO中断请求激活状态: 当bIE_IO_EDGE=0 时,该位为1 表示GPIO 输入有效电平, 将请求中断,为0 表示输入无效电平; 当bIE_IO_EDGE=1时,该位作为边沿中断标志,为1 表示检 测到有效边沿,该位无法软件清零,只能在复位时或电平中
CH552手册 24 断模式下或进入相应的中断服务程序时被自动清零 5 bUART1_PIN_X RW UART1 引脚映射使能位,该位为 0 则 RXD1/TXD1 使用 P1.6/P1.7;该位为1 则RXD1/TXD1使用P3.4/P3.2 0 4 bUART0_PIN_X RW UART0 引脚映射使能位,该位为 0 则 RXD0/TXD0 使用 P3.0/P3.1;该位为1 则RXD0/TXD0使用P1.2/P1.3 0 3 bPWM2_PIN_X RW PWM2引脚映射使能位,该位为0则PWM2使用P3.4;该位为 1则PWM2使用P3.1 0 2 bPWM1_PIN_X RW PWM1引脚映射使能位,该位为0则PWM1使用P1.5;该位为 1则PWM1使用P3.0 0 1 bT2EX_PIN_X RW T2EX/CAP2 引脚映射使能位,该位为0 则T2EX/CAP2 使用 P1.1;该位为1则T2EX/CAP2使用RST 0 0 bT2_PIN_X RW T2/CAP1引脚映射使能位,该位为0则T2/CAP1使用P1.0; 该位为1则T2/CAP1使用P1.4 0 表10.4.1 GPIO引脚复用功能列表 GPIO 其它功能:按从左到右的优先顺序 RST RST、bT2EX_、bCAP2_、bRST P1[0] T2/bT2、CAP1/bCAP1、TIN0、P1.0 P1[1] T2EX/bT2EX、CAP2/bCAP2、TIN1、VBUS2、AIN0、P1.1 P1[2] XI、RXD_/bRXD_、P1.2 P1[3] XO、TXD_/bTXD_、P1.3 P1[4] T2_/bT2_、CAP1_/bCAP1_、SCS/bSCS、TIN2、UCC1、AIN1、P1.4 P1[5] MOSI/bMOSI、PWM1/bPWM1、TIN3、UCC2、AIN2、P1.5 P1[6] MISO/bMISO、RXD1/bRXD1、TIN4、P1.6 P1[7] SCK/bSCK、TXD1/bTXD1、TIN5、P1.7 P3[0] PWM1_/bPWM1_、RXD/bRXD、P3.0 P3[1] PWM2_/bPWM2_、TXD/bTXD、P3.1 P3[2] TXD1_/bTXD1_、INT0/bINT0、VBUS1、AIN3、P3.2 P3[3] INT1/bINT1、P3.3 P3[4] PWM2/bPWM2、RXD1_/bRXD1_、T0/bT0、P3.4 P3[5] T1/bT1、P3.5 P3[6] UDP/bUDP、P3.6 P3[7] UDM/bUDM、P3.7 上表中所述按从左到右的优先顺序,是指多个功能模块竞争使用该GPIO时的优先顺序。例如, 当P3.1用于TXD串口发送时,P3.0仍然可以用于更高优先级的PWM1输出。 11、外部总线 CH552不向芯片外部提供总线信号,不支持外部总线,但是可以正常访问片内xRAM。 外部总线辅助设置寄存器(XBUS_AUX): 位 名称 访问 描述 复位值 7 bUART0_TX R0 指示UART0的发送状态,为1 表示正在发送过程中 0 6 bUART0_RX R0 指示UART0的接收状态,为1 表示正在接收过程中 0
CH552手册 25 5 bSAFE_MOD_ACT R0 指示安全模式状态,为1表示当前正在安全模式下 0 4 保留 RO 保留 0
3 GF2 RW 通用标志位2:使用者可自己定义,可软件清零或置位 0
2 bDPTR_AUTO_INC RW 使能在MOVX_@DPTR指令完成后DPTR自动加1 0 1 保留 RO 保留 0
0 DPS RW 双DPTR数据指针选择位:
该位为0 选择DPTR0;该位为1选择DPTR1 0 12、定时器Timer
12.1 Timer0/1
Timer0/1是2个16位定时/计数器,通过TCON和TMOD来配置Timer0和Timer1,TCON用于定 时/计数器T0和T1的启动控制与溢出中断以及外部中断控制。每个定时器都是由2个8 位寄存器组 成的16位定时单元。定时器0的高字节计数器是TH0,低字节是TL0;定时器1 的高字节计数器是 TH1,低字节是TL1。定时器1还可以作为UART0的波特率发生器。 表12.1.1 Timer0/1相关寄存器列表 名称 地址 描述 复位值 TH1 8Dh Timer1 计数高字节 xxh TH0 8Ch Timer0 计数高字节 xxh TL1 8Bh Timer1 计数低字节 xxh TL0 8Ah Timer0 计数低字节 xxh TMOD 89h Timer0/1 方式寄存器 00h TCON 88h Timer0/1 控制寄存器 00h 定时/计数器0/1控制寄存器(TCON): 位 名称 访问 描述 复位值
7 TF1 RW Timer1 溢出中断标志位,进入定时器1 中断后自动清零 0
6 TR1 RW Timer1 启动/停止位,置1 启动,由软件置位或者清零 0
5 TF0 RW Timer0 溢出中断标志位,进入定时器0 中断后自动清零 0
4 TR0 RW Timer0 启动/停止位,置1 启动,由软件置位或者清零 0
3 IE1 RW INT1外部中断1 的中断请求标志位,进入中断后自动清零 0
2 IT1 RW INT1 外部中断1 触发方式控制位,该位为0 选择外部中断为低
电平触发;该位为1选择外部中断为下降边沿触发 0
1 IE0 RW INT0 外部中断0 的中断请求标志位,进入中断后自动清零 0
0 IT0 RW INT0 外部中断0 触发方式控制位,该位为0 选择外部中断为低
电平触发;该位为1选择外部中断为下降边沿触发 0 定时/计数器0/1方式寄存器(TMOD): 位 名称 访问 描述 复位值 7 bT1_GATE RW 门控使能位,控制Timer1 启动是否受外部中断信号INT1 的影 响。该位为0则定时/计数器1 是否启动与INT1无关;该位为1 则只有INT1引脚为高电平并且TR1为1 时才能启动 6 bT1_CT RW 定时或者计数方式选择位,该位为0工作于定时方式;该位为1 工作于计数方式,使用T1引脚的下降沿作为时钟 0
CH552手册 26 5 bT1_M1 RW 定时/计数器1模式选择高位 0 4 bT1_M0 RW 定时/计数器1模式选择低位 0 3 bT0_GATE RW 门控使能位,控制Timer0 启动是否受外部中断信号INT0 的影 响。该位为0则定时/计数器0 是否启动与INT0无关;该位为1 则只有INT0引脚为高电平并且TR0为1 时才能启动 2 bT0_CT RW 定时或者计数方式选择位,该位为0工作于定时方式;该位为1 工作于计数方式,使用T0引脚的下降沿作为时钟 0 1 bT0_M1 RW 定时/计数器0模式选择高位 0 0 bT0_M0 RW 定时/计数器0模式选择低位 0 表12.1.2 bTn_M1和bTn_M0选择Timern工作模式(n=0、1) bTn_M1 bTn_M0 Timern工作模式(n=0、1) 0 0 模式0:13位定时/计数器n,计数单元由TLn的低5 位和THn组成,TLn的高3 位无效。计数从13位全为1 变成全为0时,设置溢出标志TFn,并需重置初值 0 1 模式1:16 位定时/计数器n,计数单元由TLn 和THn 组成。计数从16 位全为1 变成全为0时,设置溢出标志TFn,并需重置初值 1 0 模式2:8 位重载定时/计数器n,计数单元使用TLn,THn 作为重载计数单元。 计数从8位全为1变成全为0 时,设置溢出标志TFn,并自动从THn加载初值 1 1 模式3:如果是定时/计数器0,那么定时/计数器0被分成2 个部分TL0和TH0, TL0作为8位定时/计数器使用,占用Timer0的全部控制位;而TH0也做另一个 8 位定时器使用,占用Timer1 的TR1、TF1 和中断资源,并且此时Timer1 仍然 可用,只是不能使用启动控制位TR1和溢出标志位TF1。 如果是定时/计数器1,那么进入模式3 将停止定时/计数器1。 Timern计数低字节(TLn)(n=0、1): 位 名称 访问 描述 复位值 [7:0] TLn RW Timern 计数低字节 xxh Timern计数高字节(THn)(n=0、1): 位 名称 访问 描述 复位值 [7:0] THn RW Timern计数高字节 xxh
12.2 Timer2
Timer2是16位自动重载定时/计数器,通过T2CON和T2MOD寄存器进行配置,定时器2的高字 节计数器是TH2,低字节是TL2。Timer2 可以作为UART0 的波特率发生器,还具有2 路信号电平捕 捉功能,捕捉计数存储于RCAP2和T2CAP1寄存器中。 表12.2.1 Timer2相关寄存器列表 名称 地址 描述 复位值 TH2 CDh Timer2 计数器高字节 00h TL2 CCh Timer2 计数器低字节 00h T2COUNT CCh TL2 和TH2组成16位SFR 0000h T2CAP1H CFh Timer2 捕捉1数据高字节(只读) xxh T2CAP1L CEh Timer2 捕捉1数据低字节(只读) xxh T2CAP1 CEh T2CAP1L 和T2CAP1H组成16位SFR xxxxh
CH552手册 27 RCAP2H CBh 计数重载/捕捉2 数据寄存器高字节 00h RCAP2L CAh 计数重载/捕捉2 数据寄存器低字节 00h RCAP2 CAh RCAP2L 和RCAP2H组成16位SFR 0000h T2MOD C9h Timer2 方式寄存器 00h T2CON C8h Timer2 控制寄存器 00h 定时/计数器2控制寄存器(T2CON): 位 名称 访问 描述 复位值
7 TF2 RW
当bT2_CAP1_EN=0时,是Timer2的溢出中断标志,当Timer2 计数从16 位全为1 变成全为0 时,设置该溢出标志为1,需 要软件清零;当RCLK=1或者TCLK=1时,该位不会被置1
7 CAP1F RW 当bT2_CAP1_EN=1时,是Timer2捕捉1 中断标志,由T2有效
边沿触发,需要软件清零 0
6 EXF2 RW Timer2的外部触发标志,当EXEN2=1时由T2EX有效边沿触发
置1,需要软件清零 0
5 RCLK RW UART0 接收时钟选择,该位为0 选择Timer1 溢出脉冲产生波
特率;该位为1选择Timer2溢出脉冲产生波特率 0
4 TCLK RW UART0 发送时钟选择,该位为0 选择Timer1 溢出脉冲产生波
特率;该位为1选择Timer2溢出脉冲产生波特率 0
3 EXEN2 RW T2EX触发使能位,该位为0 忽略T2EX;该位为1使能在T2EX
有效边沿时触发重载或者捕捉 0
2 TR2 RW Timer2 启动/停止位,置1 启动,由软件置位或者清零 0
1 C_T2 RW Timer2 时钟源选择位,该位为0 使用内部时钟;该位为1 使
用基于T2引脚下降沿的边沿计数 0
0 CP_RL2 RW
Timer2功能选择位,如果RCLK或者TCLK为1,则该位应该强 制为0。该位为0则Timer2作为定时/计数器,并且当计数器 溢出或者T2EX 电平变化时能够自动重载计数初值;该位为1 使能Timer2的捕捉2 功能,捕捉T2EX有效边沿 定时/计数器2方式寄存器(T2MOD): 位 名称 访问 描述 复位值 7 bTMR_CLK RW 已选择快速时钟的T0/T1/T2 定时器的最快时钟模式使能,该 位为1 则使用没有分频的系统主频Fsys 作为计数时钟;该位 为0则使用分频时钟。该位对选择标准时钟的定时器没有影响 6 bT2_CLK RW Timer2内部时钟频率选择位,该位为0选标准时钟,定时/计 数模式为Fsys/12,UART0时钟模式为Fsys/4;该位为1 选快 速时 钟,定时 / 计数模 式为 Fsys/4(bTMR_CLK=0) 或 Fsys(bTMR_CLK=1),UART0 时钟模式为 Fsys/2(bTMR_CLK=0) 或Fsys(bTMR_CLK=1) 5 bT1_CLK RW Timer1内部时钟频率选择位,该位为0 选标准时钟Fsys/12; 为1选快速时钟Fsys/4(bTMR_CLK=0)或Fsys(bTMR_CLK=1) 0 4 bT0_CLK RW Timer0内部时钟频率选择位,该位为0 选标准时钟Fsys/12; 为1选快速时钟Fsys/4(bTMR_CLK=0)或Fsys(bTMR_CLK=1) 0
CH552手册 28 3 bT2_CAP_M1 RW Timer2 捕捉模式高位 捕捉模式选择: X0:从下降沿到下降沿 01:从任意沿到任意沿,即电平变化 11:从上升沿到上升沿 2 bT2_CAP_M0 RW Timer2 捕捉模式低位 0
1 T2OE RW Timer2 时钟输出使能位,该位为0 禁止输出;该位为1 使能
T2引脚输出时钟,频率为Timer2溢出速率的一半 0 0 bT2_CAP1_EN RW 当RCLK=0、TCLK=0、CP_RL2=1、C_T2=0、T2OE=0 时的捕捉1 模式使能,该位为1 启用捕捉1 功能捕捉T2 有效边沿;该位 为0禁用捕捉1 计数重载/捕捉2数据寄存器(RCAP2): 位 名称 访问 描述 复位值 [7:0] RCAP2H RW 在定时/计数器模式下是重载值的高字节;在捕捉模式下是 CAP2捕捉到的定时器的高字节 00h [7:0] RCAP2L RW 在定时/计数器模式下是重载值的低字节;在捕捉模式下是 CAP2捕捉到的定时器的低字节 00h Timer2计数器(T2COUNT): 位 名称 访问 描述 复位值 [7:0] TH2 RW 当前计数器高字节 00h [7:0] TL2 RW 当前计数器低字节 00h Timer2捕捉1数据(T2CAP1): 位 名称 访问 描述 复位值 [7:0] T2CAP1H RO CAP1捕捉到的定时器的高字节 xxh [7:0] T2CAP1L RO CAP1捕捉到的定时器的低字节 xxh
12.3 PWM 功能
CH552提供了2路8位PWM,PWM可以选择默认的输出极性为低电平或者高电平,可以动态修改 PWM 的输出占空比,通过简单RC电阻电容进行积分低通滤波后,即可获得各种输出电压,相当于低 速数模转换器DAC。 PWM1输出占空比= PWM_DATA1 / 256,支持范围0%到99.6%。 PWM2输出占空比= PWM_DATA2 / 256,支持范围0%到99.6%。 实际应用中,建议允许PWM引脚输出并且设置PWM输出引脚为推挽输出模式。
12.3.1 PWM1和PWM2
表12.3.1 PWM1和PWM2相关寄存器列表 名称 地址 描述 复位值 PWM_CK_SE 9Eh PWM 时钟分频设置寄存器 00h PWM_CTRL 9Dh PWM 控制寄存器 02h PWM_DATA1 9Ch PWM1 数据寄存器 xxh PWM_DATA2 9Bh PWM2 数据寄存器 xxh
CH552手册 29 PWM2数据寄存器(PWM_DATA2): 位 名称 访问 描述 复位值 [7:0] PWM_DATA2 RW 存储PWM2当前数据, PWM2输出有效电平的占空比=PWM_DATA2/256 xxh PWM1数据寄存器(PWM_DATA1): 位 名称 访问 描述 复位值 [7:0] PWM_DATA1 RW 存储PWM1当前数据, PWM1输出有效电平的占空比=PWM_DATA1/256 xxh PWM 控制寄存器(PWM_CTRL): 位 名称 访问 描述 复位值 7 bPWM_IE_END RW 该位为1 使能PWM循环周期结束或MFM缓冲区空中断 0 6 bPWM2_POLAR RW 控制PWM2 输出极性,该位为0 则默认低电平,高电平有 效;该位为1 则默认高电平,低电平有效 0 5 bPWM1_POLAR RW 控制PWM1 输出极性,该位为0 则默认低电平,高电平有 效;该位为1 则默认高电平,低电平有效 0 4 bPWM_IF_END RW PWM循环周期结束中断标志位,该位为1 表示有中断,写 1清零或重新加载PWM_DATA1数据时清零 0 3 bPWM2_OUT_EN RW PWM2 输出使能,该位为1使能PWM2输出 0 2 bPWM1_OUT_EN RW PWM1 输出使能,该位为1使能PWM1输出 0 1 bPWM_CLR_ALL RW 该位为1 清空PWM1和PWM2计数和FIFO,需要软件清零 1 0 保留 RO 保留 0 PWM 时钟分频设置寄存器(PWM_CK_SE): 位 名称 访问 描述 复位值 [7:0] PWM_CK_SE RW 设置PWM时钟分频除数 00h
12.4 Timer 功能
12.4.1 Timer0/1
(1)、设置T2MOD选择Timer内部时钟频率,如果bTn_CLK(n=0/1)为0,那么Timer0/1对应的时钟 为Fsys/12;如果bTn_CLK为1,那么由bTMR_CLK=0或1选择Fsys/4或者Fsys作为时钟。 (2)、设置TMOD配置Timer的工作模式。 模式0:13位定时/计数器
CH552手册 30 图12.4.1.1 Timer0/1模式0 模式1:16位定时/计数器 图12.4.1.2 Timer0/1模式1 模式2:自动重载8位定时/计数器 图12.4.1.3 Timer0/1模式2 模式3:Timer0分解为两个独立的8位定时/计数器,并借用Timer1的TR1控制位;Timer1通 过是否启动模式3代替被借用的TR1控制位,Timer1进入模式3 则Timer1停止运行。 图12.4.1.4 Timer0模式3 (3)、设置定时/计数器初值TLn和THn(n=0/1)。 (4)、设置TCON中的位TRn(n=0/1)开启或者停止定时/计数器,可以通过位TFn(n=0/1)查询或者通 过中断方式进行检测。
12.4.2 Timer2
Timer2 16位重载定时/计数器模式:
CH552手册 31 (1)、设置T2CON中的位RCLK和TCLK都为0,选择非串口波特率发生器模式。 (2)、设置T2CON中的位C_T2为0选择使用内部时钟,转步骤(3);也可置1选择T2引脚的下降沿 作为计数时钟,跳过步骤(3)。 (3)、设置T2MOD选择Timer内部时钟频率,如果bT2_CLK为0,那么Timer2的时钟为Fsys/12;如 果bT2_CLK为1,那么由bTMR_CLK=0或1选择Fsys/4或者Fsys作为时钟。 (4)、设置T2CON的位CP_RL2为0,选择Timer2的16位重载定时/计数器功能。 (5)、设定RCAP2L 和RCAP2H 为定时器溢出后的重载值,设定TL2 和TH2 为定时器的初值(一般与 RCAP2L和RCAP2H相同),设置TR2为1,开启Timer2。 (6)、通过查询TF2或者定时器2中断可以获取当前定时/计数器状态。 图12.4.2.1 Timer2 16位重载定时/计数器 Timer2时钟输出模式: 参考16 位重载定时/计数器模式,并且再设置T2MOD 中的位T2OE 为1,则使能从T2 引脚输出 TF2 频率的二分频时钟。 Timer2串口0波特率发生器模式: (1)、设置T2CON中的位C_T2为0选择使用内部时钟,也可置1 选择T2引脚的下降沿作为时钟,根 据需要设置T2CON中的位RCLK和TCLK为1 或其中之一为1,选择串口波特率发生器模式。 (2)、设置T2MOD选择Timer内部时钟频率,如果bT2_CLK为0,那么Timer2的时钟为Fsys/4;如 果bT2_CLK为1,那么由bTMR_CLK=0或1选择Fsys/2或者Fsys作为时钟。 (3)、设定RCAP2L和RCAP2H为定时器溢出后的重载值,设置TR2为1,开启Timer2。 图12.4.2.2 Timer2 UART0波特率发生器 Timer2双通道捕捉模式: (1)、设置T2CON中的位RCLK和TCLK都为0,选择非串口波特率发生器模式。
CH552手册 32 (2)、设置T2CON中的位C_T2为0选择使用内部时钟,转步骤(3);也可置1则选择T2引脚的下降 沿作为计数时钟,跳过步骤(3)。 (3)、设置T2MOD选择Timer内部时钟频率,如果bT2_CLK为0,那么Timer2的时钟为Fsys/12;如 果bT2_CLK为1,那么由bTMR_CLK=0或1选择Fsys/4或者Fsys作为时钟。 (4)、设置T2MOD的位bT2_CAP_M1和bT2_CAP_M0选择相应的边沿捕捉模式。 (5)、设置T2CON的位CP_RL2为1,选择Timer2对T2EX引脚的捕捉功能。 (6)、设定TL2和TH2为定时器的初值,设置TR2为1,开启Timer2。 (7)、当CAP2捕捉完成,RCAP2L和RCAP2H会保存当时TL2和TH2的计数值,并使EXF2置位,产生 中断,下一次捕捉到的RCAP2L 和RCAP2H 与上一次捕捉到的RCAP2L 和RCAP2H 之间的差值, 就是两次有效边沿之间的信号宽度。 (8)、如果T2CON 中的位C_T2 为0,并且T2MOD 中的位bT2_CAP1_EN为1,那么将同时使能Timer2 对T2引脚的捕捉功能,当CAP1捕捉完成,T2CAP1L和T2CAP1H会保存当时TL2和TH2的计数 值,并使CAP1F置位,产生中断。 图12.4.2.3 Timer2捕捉模式 13、通用异步收发器UART
13.1 UART 简介
CH552芯片提供2个全双工的异步串口:UART0和UART1。CH551仅提供UART0。 UART0 是标准MCS51 串口,其数据接收和发送是通过SBUF 访问物理上分开的收/发寄存器实现 的。写入SBUF的数据装入发送寄存器,对SBUF的读操作则对应于接收缓冲寄存器。 UART1是简化MCS51串口,其数据接收和发送是通过SBUF1访问物理上分开的收/发寄存器实现 的。写入SBUF1 的数据装入发送寄存器,对SBUF1 的读操作则对应于接收缓冲寄存器。UART1 相比 UART0去掉了多机通讯模式和固定波特率,UART1具有独立的波特率发生器。
13.2 UART 寄存器
表13.2.1 UART相关寄存器列表 名称 地址 描述 复位值 SCON 98h UART0 控制寄存器 00h SBUF 99h UART0 数据寄存器 xxh
CH552手册 33 SCON1 C0h UART1 控制寄存器 40h SBUF1 C1h UART1 数据寄存器 xxh SBAUD1 C2h UART1 波特率设置寄存器 xxh
13.2.1 UART0寄存器描述
UART0控制寄存器(SCON): 位 名称 访问 描述 复位值
7 SM0 RW UART0工作方式选择位0,该位为0 选择8位数据异步通信;该位为
1选择9位数据异步通信 0
6 SM1 RW UART0工作方式选择位1,该位为0 设置固定波特率;该位为1设置
可变波特率,由定时器T1或者T2产生 0
5 SM2 RW
UART0多机通信控制位: 在模式2和3 接收数据时,当SM2=1 时,如果RB8为0,那么RI不 置1,接收无效;如果RB8为1,那么RI置1,接收有效;当SM2=0 时,不管RB8为0 或者1,RI接收数据时都置位,接收有效; 在模式1时,如果SM2=1,那么只有接收到有效的停止位时,接收才 有效; 在模式0时,SM2位必须置0
4 REN RW UART0 允许接收控制位,该位为0 禁止接收;该位为1 允许接收 0
3 TB8 RW
发送数据的第9位,在模式2和3 时,TB8用于写入发送数据的第9 位,可以是奇偶校验位;在多机通信中,用于表示主机发送的是地 址字节还是数据字节,TB8=0为数据,TB8=1为地址
2 RB8 RW
接收数据的第9位,在模式2和3 时,RB8用于存放接收数据的第9 位;在模式1时,如果SM2=0,那么RB8用于存放接收到的停止位; 在模式0时,不使用RB8
1 TI RW 发送中断标志位,一个数据字节发送完后由硬件置位,需要软件清
零 0
0 RI RW 接收中断标志位,一个数据字节接收有效后由硬件置位,需要软件
清零 0 表13.2.1.1 UART0工作模式选择 SM0 SM1 描述 0 0 模式0,移位寄存器方式,波特率固定是Fsys/12 0 1 模式1,8位异步通信方式,波特率可变,由定时器T1或者T2产生 1 0 模式2,9位异步通信方式,波特率是Fsys/128(SMOD=0)或Fsys/32(SMOD=1) 1 1 模式3,9位异步通讯方式,波特率可变,由定时器T1或者T2产生 在模式1 和3 下,当RCLK=0并且TCLK=0时,UART0波特率由定时器T1 产生。应该设置T1 为 模式2自动重载8位定时器模式,bT1_CT和bT1_GATE必须都为0,分为以下几类时钟情况。 表13.2.1.2 由T1产生UART0波特率的计算公式 bTMR_CLK bT1_CLK SMOD 描述 1 1 0 TH1 = 256 - Fsys / 32 / 波特率 1 1 1 TH1 = 256 - Fsys / 16 / 波特率 0 1 0 TH1 = 256 - Fsys / 4 / 32 / 波特率 0 1 1 TH1 = 256 - Fsys / 4 / 16 / 波特率
CH552手册 34 X 0 0 TH1 = 256 - Fsys / 12 / 32 / 波特率 X 0 1 TH1 = 256 - Fsys / 12 / 16 / 波特率 在模式1 和3 下,当RCLK=1或者TCLK=1时,UART0波特率由定时器T2 产生。应该设置T2 为 16 位自动重载波特率发生器模式,C_T2和CP_RL2必须都为0,分为以下几类时钟情况。 表13.2.1.3 由T2产生UART0波特率的计算公式 bTMR_CLK bT2_CLK 描述 1 1 RCAP2 = 65536 - Fsys / 16 / 波特率 0 1 RCAP2 = 65536 - Fsys / 2 / 16 / 波特率 X 0 RCAP2 = 65536 - Fsys / 4 / 16 / 波特率 UART0数据寄存器(SBUF): 位 名称 访问 描述 复位值 [7:0] SBUF RW UART0数据寄存器,包括发送和接收两个物理上分开的寄存 器。向SBUF 写数据对应发送数据寄存器;从SBUF 读数据 对应接收数据寄存器 xxh
13.2.2 UART1寄存器描述
UART1控制寄存器(SCON1): 位 名称 访问 描述 复位值
7 U1SM0 RW UART1工作方式选择位,该位为0选择8 位数据异步通信;该位为1
选择9位数据异步通信 0 6 保留 RO 保留 1
5 U1SMOD RW 选择UART1的通讯波特率:0-慢速模式;1-快速模式 0
4 U1REN RW UART1 允许接收控制位,该位为0 禁止接收;该位为1 允许接收 0
3 U1TB8 RW 发送数据的第9位,在9位数据模式时,TB8用于写入发送数据的第
9位,可以是奇偶校验位;在8位数据模式时,TB8忽略 0
2 U1RB8 RW 接收数据的第9位,在9位数据模式时,RB8用于存放接收数据的第
9位;在8位数据模式时,RB8用于存放接收到的停止位 0
1 U1TI RW 发送中断标志位,一个数据字节发送完后由硬件置位,需要软件清
零 0
0 U1RI RW 接收中断标志位,一个数据字节接收有效后由硬件置位,需要软件
清零 0 UART1波特率由SBAUD1设置产生,根据U1SMOD的选择分为两种情况: 当U1SMOD=0时,SBAUD1 = 256 - Fsys / 32 / 波特率; 当U1SMOD=1时,SBAUD1 = 256 - Fsys / 16 / 波特率。 UART1数据寄存器(SBUF1): 位 名称 访问 描述 复位值 [7:0] SBUF1 RW UART1数据寄存器,包括发送和接收两个物理上分开的寄存 器。向SBUF1 写数据对应发送数据寄存器;从SBUF1 读数 据对应接收数据寄存器 xxh
CH552手册 35
13.3 UART 应用
UART0应用: (1)、选择UART0的波特率发生器,可以选择来自定时器T1或者T2,并配置相应计数器。 (2)、开启定时器T1或者T2。 (3)、设置SCON的SM0、SM1、SM2选择串口0的工作模式。设置REN为1,使能UART0接收。 (4)、可以设置串口中断或者查询RI和TI中断状态。 (5)、读写SBUF实现串口数据收发,串口接收信号的允许波特率误差不大于 2%。 UART1应用: (1)、根据波特率选择U1SMOD并设置SBAUD1。 (2)、设置SCON1的U1SM0选择串口1的工作模式。设置U1REN为1,使能UART1接收。 (3)、可以设置串口1中断或者查询U1RI和U1TI中断状态。 (4)、读写SBUF1实现串口1数据收发,串口接收信号的允许波特率误差不大于 2%。 14、同步串行接口SPI
14.1 SPI 简介
CH552芯片提供SPI接口,用于与外设之间进行高速的同步数据传输。 (1)、支持master主机模式和slave从机模式; (2)、支持模式0和模式3时钟模式; (3)、可选3 线全双工或者2线半双工方式; (4)、可选MSB高位首先发送或者LSB低位首先发送; (5)、时钟频率可调,最高可达系统主频的近一半; (6)、内置1 字节接收FIFO和1字节发送FIFO; (7)、从机模式下支持首字节预加载数据,便于主机在首字节立即获得返回数据。
14.2 SPI 寄存器
表14.2.1 SPI相关寄存器列表 名称 地址 描述 复位值 SPI0_SETUP FCh SPI0 设置寄存器 00h SPI0_S_PRE FBh SPI0 从机模式预置数据寄存器 20h SPI0_CK_SE FBh SPI0 时钟分频设置寄存器 20h SPI0_CTRL FAh SPI0 控制寄存器 02h SPI0_DATA F9h SPI0 数据收发寄存器 xxh SPI0_STAT F8h SPI0 状态寄存器 08h SPI0设置寄存器(SPI0_SETUP): 位 名称 访问 描述 复位值 7 bS0_MODE_SLV RW SPI0主从模式选择位,该位为0则SPI0为主机模式;该 位为1则SPI0为从机模式/设备模式 0 6 bS0_IE_FIFO_OV RW 从机模式下FIFO 溢出中断使能位,该位为1 使能FIFO 溢出中断;该位为0则FIFO溢出不产生中断 0 5 bS0_IE_FIRST RW 从机模式下接收首字节完成中断使能位,该位为1则从机 模式下接收到第一个数据字节时触发中断;该位为0则接 收到第一字节时不产生中断
CH552手册 36 4 bS0_IE_BYTE RW 数据字节传输完成中断使能位,该位为1允许字节传输完 成中断;该位为0 则字节传输完成不产生中断 0 3 bS0_BIT_ORDER RW 数据字节的位序控制位,该位为0则MSB高位在前;该位 为1则LSB低位在前 0 2 保留 RO 保留 0 1 bS0_SLV_SELT R0 从机模式下片选激活状态位,该位为0 表示当前没有被选 中;该位为1 表示当前处于选中状态 0 0 bS0_SLV_PRELOAD R0 从机模式下预加载数据状态位,该位为1表示当前处于片 选有效之后、尚未传输数据之前的预加载状态 0 SPI0时钟分频设置寄存器(SPI0_CK_SE): 位 名称 访问 描述 复位值 [7:0] SPI0_CK_SE RW 主机模式下设置SPI0时钟分频系数 20h SPI0从机模式预置数据寄存器(SPI0_S_PRE): 位 名称 访问 描述 复位值 [7:0] SPI0_S_PRE RW 预先加载从机模式下的首次传输数据 20h SPI0控制寄存器(SPI0_CTRL): 位 名称 访问 描述 复位值 7 bS0_MISO_OE RW SPI0的MISO输出使能控制位,该位为1 允许输出;该位 为0禁止输出 0 6 bS0_MOSI_OE RW SPI0的MOSI输出使能控制位,该位为1 允许输出;该位 为0禁止输出 0 5 bS0_SCK_OE RW SPI0 的SCK 输出使能控制位,该位为1 允许输出;该位 为0禁止输出 0 4 bS0_DATA_DIR RW SPI0数据方向控制位,该位为0则输出数据,仅将写FIFO 作为有效操作,启动一次SPI传输;该位为1则输入数据, 写或读FIFO都作为有效操作,启动一次SPI传输 3 bS0_MST_CLK RW SPI0主机时钟模式控制位,该位为0 则模式0,SCK空闲 时默认低电平;该位为1则模式3,SCK默认高电平 0 2 bS0_2_WIRE RW SPI0 的2 线半双工模式使能位,该位为0 则3 线全双工 方式,包括SCK、MOSI、MISO;该位为1 则2 线半双工方 式,包括SCK、MISO 1 bS0_CLR_ALL RW 该位为1 清空SPI0中断标志和FIFO,需要软件清零 1 0 bS0_AUTO_IF RW 允许通过FIFO 有效操作自动清零字节接收完成中断标志 的使能位,该位为1 则在FIFO 有效读写操作时自动清零 字节接收完成中断标志S0_IF_BYTE SPI0数据收发寄存器(SPI0_DATA): 位 名称 访问 描述 复位值 [7:0] SPI0_DATA RW 包括发送和接收两个物理上分开的FIFO,读操作对应接 收数据FIFO;写操作对应发送数据FIFO,有效读写操作 xxh
CH552手册 37 可以启动一次SPI传输 SPI0状态寄存器(SPI0_STAT): 位 名称 访问 描述 复位值
7 S0_FST_ACT R0 该位为1 表示当前状态是从机模式下接收首字节完成 0
6 S0_IF_OV RW
从机模式下FIFO溢出标志位,该位为1 表示FIFO溢出中 断;该位为0 则无中断。直接位访问清零或写1 清零。当 bS0_DATA_DIR=0 时由发送 FIFO 空触发 中断; 当 bS0_DATA_DIR=1时由接收FIFO满触发中断
5 S0_IF_FIRST RW 从机模式下接收首字节完成中断标志位,该位为1则表示
接收到首字节。直接位访问清零或写1 清零 0
4 S0_IF_BYTE RW
数据字节传输完成中断标志位,该位为1则表示一个字节 传输完成。直接位 访问清零或写 1 清零,或者在 bS0_AUTO_IF=1时通过FIFO有效操作清零
3 S0_FREE R0 SPI0 空闲标志位,该位为1 表示当前没有SPI 移位,通
常是处于数据字节之间的空档期 1
2 S0_T_FIFO R0 SPI0 发送FIFO计数,有效值是0 或者1 0
1 保留 R0 保留 0
0 S0_R_FIFO R0 SPI0 接收FIFO计数,有效值是0 或者1 0
14.3 SPI 传输格式
SPI 主机模式支持模式0 和模式3 两种传输格式,可以通过设置SPI 控制寄存器SPIn_CTRL 中 的位bSn_MST_CLK选择,CH552总是在CLK上升沿采样MISO数据。数据传输格式如下图所示。 模式0:bSn_MST_CLK = 0 图14.3.1 SPI模式0 时序图 模式3:bSn_MST_CLK = 1 图14.3.2 SPI模式3 时序图
14.4 SPI 配置
14.4.1 SPI主机模式配置
SPI 主机模式下,SCK引脚输出串行时钟,片选输出引脚可以指定为任意I/O引脚。
CH552手册 38 SPI0配置步骤: (1)、设置SPI时钟分频设置寄存器SPI0_CK_SE,配置SPI时钟频率。 (2)、设置SPI设置寄存器SPI0_SETUP的位bS0_MODE_SLV为0,配置为主机模式。 (3)、设置SPI控制寄存器SPI0_CTRL的位bS0_MST_CLK,根据需求设置为模式0 或者3。 (4)、设置SPI控制寄存器SPI0_CTRL的位bS0_SCK_OE和bS0_MOSI_OE为1,bS0_MISO_OE位为0, 设置P1端口方向bSCK、bMOSI为输出,bMISO为输入,以及片选引脚为输出。 数据发送过程: (1)、写SPI0_DATA寄存器,向FIFO写入要发送的数据,自动启动一次SPI传输。 (2)、等待S0_FREE为1,说明发送完成,可以继续发送下一字节。 数据接收过程: (1)、写SPI0_DATA寄存器,向FIFO写入任意数据例如0FFh以启动一次SPI传输。 (2)、等待S0_FREE为1,说明接收完成,可以读取SPI0_DATA获得接收到的数据。 (3)、如果之前bS0_DATA_DIR已置1,则上述读操作也会启动下一次SPI传输,否则不启动。
14.4.2 SPI从机模式配置
只有SPI0支持从机模式,从机模式下,SCK引脚用于接收连接的SPI主机的串行时钟。 (1)、设置SPI0设置寄存器SPI0_SETUP的位bS0_MODE_SLV为1,配置为从机模式。 (2)、设置SPI0控制寄存器SPI0_CTRL的位bS0_SCK_OE和bS0_MOSI_OE为0,设置bS0_MISO_OE为 1,设置P1 端口方向bSCK、bMOSI 和bMISO 以及片选引脚都为输入。当SCS 片选有效(低电 平)时,MISO将自动使能输出。同时建议设置MISO引脚为高阻输入模式(P1_MOD_OC[6]=0、 P1_DIR_PU[6]=0),使MISO在片选无效期间不输出,便于共享SPI总线。 (3)、可选的,设置SPI 从机模式预置数据存器SPI0_S_PRE,用于被片选后首次自动加载到缓冲区 中用于对外输出。在8个串行时钟之后,即首个数据字节传输交换完毕,CH552得到外部SPI 主机发来的首字节数据(可能是命令码),外部SPI主机交换得到SPI0_S_PRE中的预置数据(可 能是状态值)。寄存器SPI0_S_PRE 的位7 将在SPI 片选有效后的SCK 低电平期间自动加载到 MISO 引脚上,对于SPI模式0,如果CH552预置了SPI0_S_PRE的位7,那么外部SPI 主机将 在SPI 片选有效但尚未传输数据时,就能够通过查询MISO 引脚得到SPI0_S_PRE 的位7 的预 置值,从而通过仅仅有效一下SPI片选就能获得SPI0_S_PRE的位7 的值。 数据发送过程: 查询S0_IF_BYTE 或者等待中断,在每次SPI 数据字节传输完成后,写SPI0_DATA 寄存器,向 FIFO写入要发送的数据。或者等待S0_FREE从0 变为1,可以继续发送下一字节。 数据接收过程: 查询S0_IF_BYTE 或者等待中断,在每次SPI 数据字节传输完成后,读SPI0_DATA 寄存器,从 FIFO获得接收到的数据。查询S0_R_FIFO可以获知FIFO中是否有剩余字节。 15、模数转换器ADC 和电压比较器(CH551不适用)
15.1 ADC 简介
CH552 芯片提供8 位的模拟数字转换器,包括电压比较器和ADC 模块。该转换器具有4 个模拟 信号输入通道,可以分时采集,支持0到VCC模拟输入电压范围。
CH552手册 39
15.2 ADC 寄存器
表15.2.1 ADC相关寄存器列表 名称 地址 描述 复位值 ADC_CTRL 80h ADC 控制寄存器 x0h ADC_CFG 9AH ADC 配置寄存器 00h ADC_DATA 9Fh ADC 数据寄存器 xxh ADC 控制寄存器(ADC_CTRL): 位 名称 访问 描述 复位值
7 CMPO RO
电压比较器结果输出位,该位为0 说明正相输入端 的电压低于反相输入端的电压;该位为1说明正相 输入端的电压高于反相输入端的电压 x
6 CMP_IF RW 电压比较器结果变化标志,该位为1表示电压比较
器的结果发生了变化,直接位访问清零 0
5 ADC_IF RW ADC 转换完成中断标志,该位为1 表示一次ADC 转
换完成,直接位访问清零 0
4 ADC_START RW ADC 启动控制位,置1 启动一次ADC 转换,该位在
ADC转换完成后自动清零 0
3 CMP_CHAN RW 电压比较器反相输入端选择:0-AIN1;1-AIN3 0
2 保留 R0 保留 0
1 ADC_CHAN1 RW 电压比较器正相输入端和ADC 输入通道选择高位 0
0 ADC_CHAN0 RW 电压比较器正相输入端和ADC 输入通道选择低位 0
表15.2.1 电压比较器CMP正相输入端和ADC输入通道表 ADC_CHAN1 ADC_CHAN0 选择电压比较器正相输入端和ADC输入通道 0 0 AIN0(P1.1) 0 1 AIN1(P1.4) 1 0 AIN2(P1.5) 1 1 AIN3(P3.2) ADC 配置寄存器(ADC_CFG): 位 名称 访问 描述 复位值 [7:4] 保留 R0 保留 0000b
3 ADC_EN RW ADC 模块的电源控制位,该位为0 表示关闭ADC 模
块的电源,进入睡眠状态;该位为1表示开启 0
2 CMP_EN RW 电压比较器的电源控制位,该位为0表示关闭电压
比较器的电源,进入睡眠状态;该位为1 表示开启 0 1 保留 R0 保留 0
0 ADC_CLK RW
ADC 参考时钟频率选择位,该位为0 选择慢时钟, 每次ADC 需384 个Fosc 周期;该位为1 选择快时 钟,每次ADC需96个Fosc周期 ADC 数据寄存器(ADC_DATA):
CH552手册 40 位 名称 访问 描述 复位值 [7:0] ADC_DATA RO ADC采样结果数据 xxh
15.3 ADC 功能
ADC 采样模式配置步骤: (1)、设置ADC_CFG寄存器中的ADC_EN位为1,开启ADC 模块,设置bADC_CLK选择频率。 (2)、设置ADC_CTRL寄存器中的ADC_CHAN1/0,选择输入通道。 (3)、可选的,清零中断标志ADC_IF。可选的,如果使用中断模式,还需要在此使能中断。 (4)、设置ADC_CTRL寄存器中的ADC_START,启动一次ADC转换。 (5)、等待ADC_START变为0,或者ADC_IF被置1(如果之前已清零),表示ADC转换结束,可通过 ADC_DATA读取结果数据。该数据是输入电压相对于VCC 电源电压的255 等份的值,例如,结 果数据是47,说明输入电压接近VCC电压的47/255。如果VCC电源电压也不确定,那么可以 另测一个确定的参考电压值,再按比例计算出被测的输入电压值和VCC电源电压值。 (6)、如果再次设置ADC_START则可启动下一次ADC转换。 电压比较器模式配置步骤: (1)、设置ADC_CFG寄存器中的CMP_EN位为1,开启电压比较器模块。 (2)、设置ADC_CTRL寄存器中的ADC_CHAN1/0和CMP_CHAN,选择正相和反相输入端。 (3)、可选的,清零标志CMP_IF。 (4)、任何时候都可查询CMPO位的状态获得当前比较器的结果。 (5)、如果CMP_IF变为1,表示比较器的结果发生了变化。 上述被选择的模拟信号输入通道,其所在GPIO引脚必须设置为高阻输入模式、或者开漏输出模式并 且处于输出1 的状态(相当于高阻输入),Pn_DIR_PU[x]=0,并且建议关闭上拉电阻和下拉电阻。 16、USB控制器
16.1 USB 控制器简介
CH552内嵌USB控制器和USB收发器,特性如下: (1)、支持USB Device设备功能,支持USB 2.0全速12Mbps或者低速1.5Mbps; (2)、支持USB控制传输、批量传输、中断传输、同步/实时传输; (3)、支持最大64字节的数据包,内置FIFO,支持中断和DMA。 CH552的USB相关寄存器分为2个部分:USB全局寄存器和USB端点寄存器。 16.2 全局寄存器 表16.2.1 USB全局寄存器列表(标灰受bUC_RESET_SIE复位控制) 名称 地址 描述 复位值 USB_C_CTRL 91h USB type-C 配置通道控制寄存器 0000 0000b USB_INT_FG D8h USB 中断标志寄存器 0010 0000b USB_INT_ST D9h USB 中断状态寄存器(只读) 00xx xxxxb USB_MIS_ST DAh USB 杂项状态寄存器(只读) xx10 1000b USB_RX_LEN DBh USB 接收长度寄存器(只读) 0xxx xxxxb USB_INT_EN E1h USB 中断使能寄存器 0000 0000b
CH552手册 41 USB_CTRL E2h USB 控制寄存器 0000 0110b USB_DEV_AD E3h USB 设备地址寄存器 0000 0000b USB type-C配置通道控制寄存器(USB_C_CTRL):(CH551不适用) 位 名称 访问 描述 复位值 7 bVBUS2_PD_EN RW 该位为1 使能VBUS2引脚的内部10K下拉电阻;为0禁止 0 6 bUCC2_PD_EN RW 该位为1 使能UCC2引脚的内部5.1K下拉电阻;为0禁止 0 5 bUCC2_PU1_EN RW 该位是UCC2引脚的内部上拉电阻控制选择高位 0 4 bUCC2_PU0_EN RW 该位是UCC2引脚的内部上拉电阻控制选择低位 0 3 bVBUS1_PD_EN RW 该位为1 使能VBUS1引脚的内部10K下拉电阻;为0禁止 0 2 bUCC1_PD_EN RW 该位为1 使能UCC1引脚的内部5.1K下拉电阻;为0禁止 0 1 bUCC1_PU1_EN RW 该位是UCC1引脚的内部上拉电阻控制选择高位 0 0 bUCC1_PU0_EN RW 该位是UCC1引脚的内部上拉电阻控制选择低位 0 由bUCCn_PU1_EN和bUCCn_PU0_EN选择UCCn引脚内部的上拉电阻。 bUCCn_PU1_EN bUCCn_PU0_EN 选择UCCn引脚内部的上拉电阻 0 0 禁止内部的上拉电阻 0 1 使能内部56KΩ上拉电阻,表示提供默认的USB电流 1 0 使能内部22KΩ上拉电阻,表示可以提供1.5A电流 1 1 使能内部10KΩ上拉电阻,表示可以提供3A电流 上述USB type-C上拉电阻和下拉电阻独立于Pn_DIR_PU端口方向控制和上拉使能寄存器所控制 的端口上拉电阻,当一引脚用于USB type-C时,应该禁止该引脚对应的端口上拉电阻,建议对该引 脚启用高阻输入模式(避免该引脚输出低电平或者高电平)。 有关USB type-C配置通道的详细控制和输入检测请参考USB type-C应用说明及例程。 USB 中断标志寄存器(USB_INT_FG): 位 名称 访问 描述 复位值
7 U_IS_NAK RO 该位为1表示当前USB传输过程中接收到NAK忙响应;该
位为0表示接收到非NAK响应 0
6 U_TOG_OK RO 当前USB传输DATA0/1同步标志匹配状态,该位为1 表示
同步,数据有效;该位为0 表示不同步,数据可能无效 0
5 U_SIE_FREE RO USB协议处理器的空闲状态位,该位为0表示忙,正在进行
USB传输;该位为1表示USB空闲 1
4 UIF_FIFO_OV RW USB FIFO溢出中断标志位,该位为1表示FIFO溢出中断;
该位为0 无中断。直接位访问清零或写1清零 0 3 保留 RO 保留 0
2 UIF_SUSPEND RW
USB总线挂起或唤醒事件中断标志位,该位为1 表示有中 断,该中断由USB挂起事件或唤醒事件触发;该位为0 表 示无中断。直接位访问清零或写1 清零
1 UIF_TRANSFER RW
USB传输完成中断标志位,该位为1 表示有中断,该中断由 一个USB传输完成触发;该位为0 表示无中断。直接位访 问清零或写1 清零
0 UIF_BUS_RST RW
USB总线复位事件中断标志位,该位为1表示有中断,该中 断由USB总线复位事件触发;该位为0 表示无中断。直接 位访问清零或写1 清零
CH552手册 42 USB 中断状态寄存器(USB_INT_ST): 位 名称 访问 描述 复位值 7 bUIS_IS_NAK RO 该位为1表示当前USB传输过程中接收到NAK忙响应。 同U_IS_NAK 0 6 bUIS_TOG_OK RO 当前USB传输DATA0/1同步标志匹配状态,该位为1 表示同步;该位为0表示不同步。同U_TOG_OK 0 5 bUIS_TOKEN1 RO 当前USB传输事务的令牌PID 标识高位 x 4 bUIS_TOKEN0 R0 当前USB传输事务的令牌PID 标识低位 x [3:0] MASK_UIS_ENDP RO 当前USB传输事务的端点号,0000表示端点0;…; 1111表示端点15 xxxxb bUIS_TOKEN1 和bUIS_TOKEN0 组成MASK_UIS_TOKEN,用于标识当前USB 传输事务的令牌PID: 00 表示OUT包;01表示SOF包;10表示IN包;11表示SETUP包。 USB 杂项状态寄存器(USB_MIS_ST): 位 名称 访问 描述 复位值 [7:6] 保留 RO 保留 xxb 5 bUMS_SIE_FREE RO USB 协议处理器的空闲状态位,该位为0表示忙,正 在进行USB传输;该位为1 表示USB空闲。同 U_SIE_FREE 4 bUMS_R_FIFO_RDY RO USB接收FIFO数据就绪状态位,该位为0表示接收 FIFO为空;该位为1 表示接收FIFO非空 0 3 bUMS_BUS_RESET RO USB总线复位状态位,该位为0 表示当前没有USB总 线复位;该位为1 表示当前正在USB总线复位 1 2 bUMS_SUSPEND RO USB挂起状态位,该位为0表示当前有USB活动;该 位为1表示已经有一段时间没有USB活动,请求挂起 0 [1:0] 保留 RO 保留 00b USB 接收长度寄存器(USB_RX_LEN): 位 名称 访问 描述 复位值 [7:0] bUSB_RX_LEN RO 当前USB端点接收到的数据的字节数 xxh USB 中断使能寄存器(USB_INT_EN): 位 名称 访问 描述 复位值 7 bUIE_DEV_SOF RW 该位为1 使能接收SOF包中断;为0禁止 0 6 bUIE_DEV_NAK RW 该位为1 使能接收到NAK中断;为0禁止 0 5 保留 RO 保留 0 4 bUIE_FIFO_OV RW 该位为1 使能FIFO溢出中断;该位为0 关闭使能 0 3 保留 RO 保留 0 2 bUIE_SUSPEND RW 该位为1 使能USB总线挂起或唤醒事件中断;为0禁止 0 1 bUIE_TRANSFER RW 该位为1 使能USB传输完成中断;该位为0 禁止 0 0 bUIE_BUS_RST RW 该位为1 使能USB总线复位事件中断;该位为0 禁止 0 USB 控制寄存器(USB_CTRL):
CH552手册 43 位 名称 访问 描述 复位值 7 保留 RO 保留 0 6 bUC_LOW_SPEED RW USB总线信号传输速率选择位,该位为0选择全速12Mbps; 该位为1 选择低速1.5Mbps 0 5 bUC_DEV_PU_EN RW USB设备使能和内部上拉电阻控制位,该位为1则使能USB 设备传输并且启用内部上拉电阻 0 5 bUC_SYS_CTRL1 RW USB 系统控制高位 0 4 bUC_SYS_CTRL0 RW USB 系统控制低位 0 3 bUC_INT_BUSY RW USB传输完成中断标志未清零前自动暂停使能位,该位为 1则在中断标志UIF_TRANSFER未清零前自动暂停,将自 动应答忙NAK;该位为0则不暂停 2 bUC_RESET_SIE RW USB协议处理器软件复位控制位,该位为1则强制复位USB 协议处理器及大部分USB控制寄存器,需要软件清零 1 1 bUC_CLR_ALL RW 该位为1 清空USB中断标志和FIFO,需要软件清零 1 0 bUC_DMA_EN RW 该位为1 使能USB的DMA和DMA中断;为0 关闭使能 0 由bUC_SYS_CTRL1和bUC_SYS_CTRL0组成USB系统控制组合: bUC_SYS_CTRL1 bUC_SYS_CTRL0 USB 系统控制描述 0 0 禁止USB设备功能,关闭内部上拉电阻 0 1 使能USB设备功能,关闭内部上拉,需加外部上拉 1 X 使能USB设备功能,启用内部1.5KΩ上拉电阻。 该上拉电阻优先于下拉电阻,也可用于GPIO模式 USB 设备地址寄存器(USB_DEV_AD): 位 名称 访问 描述 复位值 7 bUDA_GP_BIT RW USB 通用标志位:使用者可自定义,可软件清零或置位 0 [6:0] MASK_USB_ADDR RW 该USB设备的地址 00h 16.3 端点寄存器 CH552提供了端点0、1、2、3、4共5 组双向端点,所有端点的最大数据包长度都是64字节。 端点0是默认端点,支持控制传输,发送和接收共用一个64字节数据缓冲区。 端点1、端点2、端点3 各包括一个发送端点IN 和一个接收端点OUT,发送和接收各有一个独 立的64字节或者双64字节数据缓冲区,支持控制传输、批量传输、中断传输和实时/同步传输。 端点4 包括一个发送端点IN 和一个接收端点OUT,发送和接收各有一个独立的64 字节数据缓 冲区,支持控制传输、批量传输、中断传输和实时/同步传输。 每组端点都具有一个控制寄存器UEPn_CTRL 和发送长度寄存器UEPn_T_LEN(n=0/1/2/3/4),用 于设定该端点的同步触发位、对OUT事务和IN事务的响应以及发送数据的长度等。 作为USB 设备所必要的USB 总线上拉电阻可以由软件随时设置是否启用,当USB 控制寄存器 USB_CTRL中的bUC_DEV_PU_EN置1时,CH552根据bUD_LOW_SPEED在内部为USB总线的DP引脚或者 DM 引脚连接上拉电阻,并启用USB设备功能。 当检测到USB 总线复位、USB 总线挂起或唤醒事件,或者当USB 成功处理完数据发送或者数据 接收后,USB协议处理器都将设置相应的中断标志并产生中断请求。应用程序可以直接查询或在USB 中断服务程序中查询并分析中断标志寄存器USB_INT_FG,根据UIF_BUS_RST和UIF_SUSPEND进行相 应的处理;并且,如果UIF_TRANSFER有效,那么还需要继续分析USB中断状态寄存器USB_INT_ST, 根据当前端点号MASK_UIS_ENDP和当前事务令牌PID标识MASK_UIS_TOKEN进行相应的处理。如果事
CH552手册 44 先设定了各个端点的OUT 事务的同步触发位bUEP_R_TOG,那么可以通过U_TOG_OK 或bUIS_TOG_OK 判断当前所接收到的数据包的同步触发位是否与该端点的同步触发位匹配,如果数据同步,则数据 有效;如果数据不同步,则数据应该被丢弃。每次处理完USB发送或者接收中断后,都应该正确修 改相应端点的同步触发位,用于同步下次所发送的数据包和检测下次所接收的数据包是否同步;另 外,通过设置bUEP_AUTO_TOG可以实现在发送成功或者接收成功后自动翻转相应的同步触发位。 各个端点准备发送的数据在各自的缓冲区中,准备发送的数据长度是独立设定在 UEPn_T_LEN 中;各个端点接收到的数据在各自的缓冲区中,但是接收到的数据长度都在USB 接收长度寄存器 USB_RX_LEN中,可以在USB接收中断时根据当前端点号区分。 表16.3.1 USB设备端点相关寄存器列表(标灰受bUC_RESET_SIE复位控制) 名称 地址 描述 复位值 UDEV_CTRL D1h USB 设备物理端口控制寄存器 10xx 0000b UEP1_CTRL D2h 端点1控制寄存器 0000 0000b UEP1_T_LEN D3h 端点1发送长度寄存器 0xxx xxxxb UEP2_CTRL D4h 端点2控制寄存器 0000 0000b UEP2_T_LEN D5h 端点2发送长度寄存器 0000 0000b UEP3_CTRL D6h 端点3控制寄存器 0000 0000b UEP3_T_LEN D7h 端点3发送长度寄存器 0xxx xxxxb UEP0_CTRL DCh 端点0控制寄存器 0000 0000b UEP0_T_LEN DDh 端点0发送长度寄存器 0xxx xxxxb UEP4_CTRL DEh 端点4控制寄存器 0000 0000b UEP4_T_LEN DFh 端点4发送长度寄存器 0xxx xxxxb UEP4_1_MOD EAh 端点1、4模式控制寄存器 0000 0000b UEP2_3_MOD EBh 端点2、3模式控制寄存器 0000 0000b UEP0_DMA_H EDh 端点0和4缓冲区起始地址高字节 0000 00xxb UEP0_DMA_L ECh 端点0和4缓冲区起始地址低字节 xxxx xxxxb UEP0_DMA ECh UEP0_DMA_L 和UEP0_DMA_H组成16位SFR 0xxxh UEP1_DMA_H EFh 端点1缓冲区起始地址高字节 0000 00xxb UEP1_DMA_L EEh 端点1缓冲区起始地址低字节 xxxx xxxxb UEP1_DMA EEh UEP1_DMA_L 和UEP1_DMA_H组成16位SFR 0xxxh UEP2_DMA_H E5h 端点2缓冲区起始地址高字节 0000 00xxb UEP2_DMA_L E4h 端点2缓冲区起始地址低字节 xxxx xxxxb UEP2_DMA E4h UEP2_DMA_L 和UEP2_DMA_H组成16位SFR 0xxxh UEP3_DMA_H E7h 端点3缓冲区起始地址高字节 0000 00xxb UEP3_DMA_L E6h 端点3缓冲区起始地址低字节 xxxx xxxxb UEP3_DMA E6h UEP3_DMA_L 和UEP3_DMA_H组成16位SFR 0xxxh USB 设备物理端口控制寄存器(UDEV_CTRL),受bUC_RESET_SIE复位控制: 位 名称 访问 描述 复位值 7 bUD_PD_DIS RW USB设备端口UDP/UDM引脚内部下拉电阻禁用位,该位为1 禁用内部下拉电阻;该位为0 使能内部下拉电阻。该位不 受bUSB_IO_EN控制,也可用于GPIO模式提供下拉电阻 6 保留 RO 保留 0 5 bUD_DP_PIN RO 当前UDP引脚状态,为0表示低电平;为1 表示高电平 x 4 bUD_DM_PIN RO 当前UDM引脚状态,为0表示低电平;为1 表示高电平 x
CH552手册 45 3 保留 RO 保留 0 2 bUD_LOW_SPEED RW USB设备物理端口低速模式使能位,该位为1 选择1.5Mbps 低速模式;该位为0选择12Mbps全速模式 0 1 bUD_GP_BIT RW 设备通用标志位:使用者可自己定义,可软件清零或置位 0 0 bUD_PORT_EN RW USB设备物理端口使能位,该位为1 使能物理端口;该位为 0禁用物理端口 0 端点n控制寄存器(UEPn_CTRL): 位 名称 访问 描述 复位值 7 bUEP_R_TOG RW USB端点n的接收器(处理SETUP/OUT事务)期望的同步触发 位,该位为0 表示期望DATA0;为1表示期望DATA1 0 6 bUEP_T_TOG RW USB端点n的发送器(处理IN事务)准备的同步触发位,该 位为0表示发送DATA0;为1 表示发送DATA1 0 5 保留 RO 保留 0 4 bUEP_AUTO_TOG RW 同步触发位自动翻转使能控制位,该位为1 表示在发送成 功或接收成功后自动翻转相应的同步触发位;为0表示不 自动翻转,但可以手动切换。只支持端点1/2/3 3 bUEP_R_RES1 RW 端点n的接收器对SETUP/OUT事务的响应控制高位 0 2 bUEP_R_RES0 RW 端点n的接收器对SETUP/OUT事务的响应控制低位 0 1 bUEP_T_RES1 RW 端点n的发送器对IN事务的响应控制高位 0 0 bUEP_T_RES0 RW 端点n的发送器对IN事务的响应控制低位 0 由bUEP_R_RES1和bUEP_R_RES0组成的MASK_UEP_R_RES用于控制端点n的接收器对SETUP/OUT 事务的响应方式:00表示应答ACK或就绪;01表示超时/无响应,用于实现非端点0的实时/同步传 输;10表示应答NAK或忙;11表示应答STALL或错误。 由bUEP_T_RES1和bUEP_T_RES0组成的MASK_UEP_T_RES用于控制端点n的发送器对IN事务的 响应方式:00表示应答DATA0/DATA1或数据就绪并期望ACK;01表示应答DATA0/DATA1并期望无响 应,用于实现非端点0的实时/同步传输;10表示应答NAK或忙;11表示应答STALL或错误。 端点n发送长度寄存器(UEPn_T_LEN): 位 名称 访问 描述 复位值 [7:0] bUEPn_T_LEN RW 设置USB端点n准备发送的数据字节数(n=0/1/3/4) xxh bUEP2_T_LEN 设置USB端点2准备发送的数据字节数 00h USB 端点1、4模式控制寄存器(UEP4_1_MOD): 位 名称 访问 描述 复位值 7 bUEP1_RX_EN RW 该位为0 禁止端点1接收;为1使能端点1 接收(OUT) 0 6 bUEP1_TX_EN RW 该位为0 禁止端点1发送;为1使能端点1 发送(IN) 0 5 保留 RO 保留 0 4 bUEP1_BUF_MOD RW 端点1数据缓冲区模式控制位 0 3 bUEP4_RX_EN R0 该位为0 禁止端点4接收;为1使能端点4 接收(OUT) 0 2 bUEP4_TX_EN RW 该位为0 禁止端点4发送;为1使能端点4 发送(IN) 0 [1:0] 保留 RO 保留 00b 由bUEP4_RX_EN和bUEP4_TX_EN组合控制USB端点0 和4的数据缓冲区模式,参考下表。 表16.3.2 端点0 和4 缓冲区模式
CH552手册 46 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收发共用; UEP0_DMA+64地址:端点4 接收; UEP0_DMA+128地址:端点4 发送 USB 端点2、3模式控制寄存器(UEP2_3_MOD): 位 名称 访问 描述 复位值 7 bUEP3_RX_EN RW 该位为0禁止端点3接收;为1使能端点3 接收(OUT) 0 6 bUEP3_TX_EN RW 该位为0禁止端点3发送;为1使能端点3 发送(IN) 0 5 保留 RO 保留 0 4 bUEP3_BUF_MOD RW 端点3数据缓冲区模式控制位 0 3 bUEP2_RX_EN R0 该位为0禁止端点2接收;为1使能端点2 接收(OUT) 0 2 bUEP2_TX_EN RW 该位为0禁止端点2发送;为1使能端点2 发送(IN) 0 1 保留 RO 保留 0 0 bUEP2_BUF_MOD RW 端点2数据缓冲区模式控制位 0 由bUEPn_RX_EN和bUEPn_TX_EN以及bUEPn_BUF_MOD(n=1/2/3)组合分别控制USB端点1、2、3 的数据缓冲区模式,参考下表。其中的双64字节缓冲区模式,USB数据传输时将根据bUEP_*_TOG=0 选择前64字节缓冲区,根据bUEP_*_TOG=1选择后64字节缓冲区,实现自动切换。 表16.3.3 端点n 缓冲区模式(n=1/2/3) bUEPn_RX_EN bUEPn_TX_EN bUEPn_BUF_MOD 结构描述:以UEPn_DMA为起始地址由低向高排列 0 0 x 端点被禁用,未用到UEPn_DMA缓冲区 1 0 0 单64字节接收缓冲区(OUT) 1 0 1 双64字节接收缓冲区,通过bUEP_R_TOG选择 0 1 0 单64字节发送缓冲区(IN) 0 1 1 双64字节发送缓冲区,通过bUEP_T_TOG选择 1 1 0 单64字节接收缓冲区;单64字节发送缓冲区 1 1 1 双64 字节接收缓冲区,通过bUEP_R_TOG 选择;双64 字节发送缓冲区,通过bUEP_T_TOG选择。 全部256字节排列如下: UEPn_DMA+0地址:bUEP_R_TOG=0时端点接收; UEPn_DMA+64地址:bUEP_R_TOG=1时端点接收; UEPn_DMA+128地址:bUEP_T_TOG=0时端点发送; UEPn_DMA+192地址:bUEP_T_TOG=1时端点发送 USB 端点n缓冲区起始地址(UEPn_DMA)(n=0/1/2/3): 位 名称 访问 描述 复位值 [7:0] UEPn_DMA_H RW 端点n缓冲区起始地址高字节,仅低2位有效,高6 位 固定为0 0xh [7:0] UEPn_DMA_L RW 端点n缓冲区起始地址低字节 xxh
CH552手册 47 注:接收数据的缓冲区的长度 >= min(可能接收到的最大数据包长度 + 2字节,64字节) 17、触摸按键Touch-Key
17.1 Touch-Key 简介
CH552 芯片提供了电容检测模块及相关的定时器,具有6 个输入通道,支持电容量范围5pF~ 150pF。自电容方式可以支持最多6个触摸按键,互电容方式可以支持最多15个触摸按键。
17.2 Touch-Key 寄存器
表17.2.1 Touch-Key相关寄存器列表 名称 地址 描述 复位值 TKEY_CTRL C3h Touch-Key 控制寄存器 x0h TKEY_DATH C5h Touch-Key 数据高字节(只读) 00h TKEY_DATL C4h Touch-Key 数据低字节(只读) xxh TKEY_DAT C4h TKEY_DATL 和TKEY_DATH组成16位SFR 00xxh Touch-Key控制寄存器(TKEY_CTRL): 位 名称 访问 描述 复位值 7 bTKC_IF RO 定时中断标志。如果bTKD_CHG=0 则在当前定时周 期结束时自动置1 请求中断,当准备阶段结束时自 动清零,或者通过写 TKEY_CTRL 清零。如果 bTKD_CHG=1则自动清零,不请求中断,跳过当前周 期,然后在下一个周期重新准备和检测,并在下一 个周期结束时自动置1 请求中断 x [6:5] 保留 RO 保留 00b 4 bTKC_2MS RW 电容检测定时器的周期选择:0-1mS;1-2mS。 每周期的前87uS为准备阶段,剩余时间检测阶段。 上述时间是基于Fosc=24MHz时的时间 3 保留 RO 保留 0 2 bTKC_CHAN2 RW 触摸按键电容检测输入选择高位 0 1 bTKC_CHAN1 RW 触摸按键电容检测输入选择中位 0 0 bTKC_CHAN0 RW 触摸按键电容检测输入选择低位 0 由bTKC_CHAN2~bTKC_CHAN0选择触摸按键电容检测输入通道。 bTKC_CHAN2 bTKC_CHAN1 bTKC_CHAN0 选择触摸按键电容检测输入通道 0 0 0 关闭电容检测模块的电源, 仅用作周期为1mS或者2mS的独立定时中断 0 0 1 TIN0(P1.0) 0 1 0 TIN1(P1.1) 0 1 1 TIN2(P1.4) 1 0 0 TIN3(P1.5) 1 0 1 TIN4(P1.6) 1 1 0 TIN5(P1.7) 1 1 1 开启电容检测模块的电源但不连接任何通道
CH552手册 48 Touch-Key数据寄存器(TKEY_DAT): 位 名称 访问 描述 复位值 bTKD_CHG TKEY_DATH[7] RO Touch-Key控制变化标志。该位为1说明TKEY_CTRL在 电容检测阶段被改写,有可能导致TKEY_DAT数据无效, 并且在当前周期结束时将不置bTKC_IF。该位在每个定 时周期的准备阶段结束时自动清零,取数据需屏蔽该位 6 保留 RO 保留 0 [5:0] TKEY_DATH RO Touch-Key 数据高字节。在每个定时周期的准备阶段结 束时自动清零;在电容检测阶段自动计数;在准备阶段 保持数据不变,以便定时中断程序读取 00h [7:0] TKEY_DATL RO Touch-Key 数据低字节。在每个定时周期的准备阶段结 束时自动清零;在电容检测阶段自动计数;在准备阶段 保持数据不变,以便定时中断程序读取 xxh
17.3 Touch-Key 功能
电容检测步骤: (1)、设置TKEY_CTRL寄存器中的bTKC_2MS和bTKC_CHAN2~bTKC_CHAN0,选择周期和输入通道。被 选择的输入通道,其所在GPIO引脚必须设置为高阻输入模式、或者开漏输出模式并且处于输 出1 的状态(相当于高阻输入),Pn_DIR_PU[x]=0。 (2)、清零bTKC_IF并开启中断IE_TKEY等待定时中断,或者通过主动查询bTKC_IF进入中断程序。 (3)、当前通道的电容检测完毕后将自动设置bTKC_IF请求中断,同时进入下一个周期的准备阶段, 并保持TKEY_DAT数据不变约87uS。 (4)、进入中断程序中,首先从TKEY_DAT中读取当前通道的电容数据,并屏蔽最高位bTKD_CHG,该 数据是相对值,与电容量成反比,当触摸按键按下时的数据比未按下时的数据小。 (5)、设置TKEY_CTRL寄存器中的bTKC_2MS和bTKC_CHAN2~bTKC_CHAN0,选择下一个输入通道。该 写操作将自动清零bTKC_IF,结束中断请求。 (6)、用步骤(4)读取的TKEY_DAT数据与之前保存的该通道无按键时的数据比较,判断是否电容变化 和是否有按键被按下。 (7)、中断返回,当下一个通道的电容检测完毕后将转向步骤(3)。 18、参数 18.1 绝对最大值(临界或者超过绝对最大值将可能导致芯片工作不正常甚至损坏) 名称 参数说明 最小值 最大值 单位 TA 工作时的环境温度 -40 85 ℃ TS 储存时的环境温度 -55 125 ℃ VCC 电源电压(VCC接电源,GND接地) -0.4 5.8 V VIO 除P3.6/P3.7之外其它输入或者输出引脚上的电压 -0.4 VCC+0.4 V VIOU P3.6/P3.7输入或者输出引脚上的电压 -0.4 V33+0.4 V 18.2 电气参数5V(测试条件:TA=25℃,VCC=5V,Fsys=6MHz) 名称 参数说明 最小值 典型值 最大值 单位 VCC5 VCC引脚电源电压 V33 仅外接电容 3.7 5 5.5 V V33 内部USB电源调整器输出电压 3.14 3.27 3.4 V
CH552手册 49 ICC24M5 Fsys=24MHz工作时的总电源电流 8 11 mA ICC6M5 Fsys=6MHz工作时的总电源电流 4 6 mA ICC750K5 Fsys=750KHz工作时的总电源电流 2 3 mA ISLP5 睡眠后的总电源电流 0.1 0.2 mA ISLP5L VCC=V33=5V,且选用外部晶体时钟, 且bLDO3V3_OFF=1关闭LDO, 完全睡眠后的总电源电流 0.008 0.02 mA IADC5 ADC模数转换模块工作电流 200 800 uA ICMP5 电压比较器模块工作电流 100 500 uA ITKEY5 触摸按键电容检测模块工作电流 150 250 uA VIL5 低电平输入电压 -0.4 1.2 V VIH5 高电平输入电压 2.4 VCC+0.4 V VOL5 低电平输出电压(12mA吸入电流) 0.4 V VOH5 高电平输出电压(8mA输出电流) VCC-0.4 V VOH5U P3.6/P3.7 高电平输出电压(8mA输出电流) V33-0.4 V IIN 无上拉输入端的输入电流 -5 0 5 uA IDN5 带下拉电阻输入端的输入电流 -35 -70 -140 uA IUP5 带上拉电阻输入端的输入电流 35 70 140 uA IUP5X 带上拉输入端由低向高翻转时的输入电流 250 400 600 uA Vpot 电源上电复位的门限电压 2.1 2.3 2.5 V 18.3 电气参数3.3V(测试条件:TA=25℃,VCC=V33=3.3V,Fsys=6MHz) 名称 参数说明 最小值 典型值 最大值 单位 VCC3 VCC引脚 电源电压 V33短接到VCC,开启USB 3.0 3.3 3.6 V V33短接到VCC,关闭USB 2.7 3.3 3.6 V ICC16M3 Fsys=16MHz工作时的总电源电流 4 6 mA ICC6M3 Fsys=6MHz工作时的总电源电流 2 4 mA ICC750K3 Fsys=750KHz工作时的总电源电流 1 2 mA ISLP3 睡眠后的总电源电流 0.07 0.15 mA ISLP3L bLDO3V3_OFF=1关闭LDO, 完全睡眠后的总电源电流 0.004 0.01 mA IADC3 ADC模数转换模块工作电流 150 500 uA ICMP3 电压比较器模块工作电流 70 300 uA ITKEY3 触摸按键电容检测模块工作电流 130 200 uA VIL3 低电平输入电压 -0.4 0.8 V VIH3 高电平输入电压 1.9 VCC+0.4 V VOL3 低电平输出电压(8mA吸入电流) 0.4 V VOH3 高电平输出电压(5mA输出电流) VCC-0.4 V VOH3U P3.6/P3.7 高电平输出电压(8mA输出电流) V33-0.4 V IIN 无上拉输入端的输入电流 -5 0 5 uA IDN3 带下拉电阻输入端的输入电流 -15 -30 -60 uA IUP3 带上拉电阻输入端的输入电流 15 30 60 uA IUP3X 带上拉输入端由低向高翻转时的输入电流 100 170 250 uA Vpot 电源上电复位的门限电压 2.1 2.3 2.5 V
CH552手册 50 18.4 时序参数(测试条件:TA=25℃,VCC=5V或VCC=V33=3.3V,Fsys=6MHz) 名称 参数说明 最小值 典型值 最大值 单位 Fxt 外部晶体频率或者XI输入时钟频率 6 24 25 MHz Fosc V33=3V ~3.6V时经校准后的内部时钟频率 23.64 24 24.36 MHz Fosc28 V33=2.8V~3V时经校准后的内部时钟频率 23.28 24 24.72 MHz Fosc27 V33=2.7V时经校准后的内部时钟频率 21 24 25 MHz Fpll 内部倍频后的PLL频率 24 96 100 MHz Fusb4x 使用USB设备功能时,USB采样时钟频率 47.04 48 48.96 MHz Fsys 系统主频时钟频率(VCC>=4.4V) 0.1 6 24 MHz 系统主频时钟频率(4.4V>VCC>=3.3V) 0.1 6 16 MHz 系统主频时钟频率(VCC<3.3V) 0.1 6 12 MHz Tpor 电源上电复位延时 9 11 15 mS Trst 从RST外部输入有效复位信号的宽度 70 nS Trdl 热复位延时 30 45 60 uS Twdc 看门狗溢出周期/定时周期的计算公式 65536 * ( 0x100 - WDOG_COUNT ) / Fsys Tusp 检测USB自动挂起时间 4 5 6 mS Twak 芯片睡眠后唤醒完成时间 1 2 10 uS 19、修改记录 版本 日期 说明 V1.0 2016.12.20 初版发行 V1.2 2017.12.16 概述中增加CH552/CH551区别表,修改一些表头形式 V1.3 2018.03.20 1 概述中CH552/1区别表形式修改,修改表18.4, 5.3堆栈指针(SP)修正错别字,6.2增加Data Flash建议 V1.4 2018.08.28 更新18.4中Fosc27