CH549 WCH | Alldatasheet

Document overview

  • Manufacturer or author: Provided By ALLDATASHEET.COM(FREE DATASHEET DOWNLOAD SITE)
  • PDF pages: 65

Technical content

CH549手册 1 8 位增强型USB 单片机CH549、CH548 手册 版本:1A http://wch.cn 1、概述 CH549芯片是一款兼容MCS51指令集的增强型E8051内核单片机,其79%的指令是单字节单周期 指令,平均指令速度比标准MCS51快8~15 倍。 CH549支持最高48MHz系统主频,内置64K程序存储器Flash-ROM和256字节内部iRAM以及2K 字节片内xRAM,xRAM支持DMA直接内存存取。 CH549内置了12位ADC模数转换、电容式触摸按键检测模块、TS温度传感器、内置时钟、3组 定时器和3路信号捕捉、8路PWM、4组异步串口、SPI等功能模块,支持全速和低速USB-Host主机 模式和USB-Device设备模式以及USB PD和type-C。 CH548 是CH549 的简化版,程序存储器ROM 仅32KB,异步串口仅提供UART0 和UART1,其它与 CH549相同,可直接参考CH549手册和资料。 型号 程序ROM 引导ROM xRAM iRAM 非易失 EEPROM USB主机 USB设备 USB PD Type-C 定时 器 信号 捕捉 8 位 PWM 异步 串口 SPI 主 SPI 从 12位 ADC 电容触 摸按键 CH549 60KB+3KB 2048 +256 1KB 全/低速 支持 3 组 3 路 8 路 4 组 2 合1 16路 16通道 CH548 32KB+3KB 2 组 下面为CH549的内部框图,仅供参考。 Pins: GND VDD V33 P00~P07 P10~P17 P20~P27 P30~P37 P40~P46 P50/1/4/5/7 2、特点 Internal Address & Data & DMA Bus E8051 Core Power-on Reset Watch-dog Reset 8-bit Port3 8-bit Port2 USB H/D 5-bit Port5 8-bit Port0 XT OSC 7-bit Port4 SPI0 M/S UART2 UART3 UART0 UART1 iRAM 256B xRAM 2KB Flash-ROM 64KB (Code/EEPROM Data) LDO VolReg 5V->3.3V Internal Oscillator PLL USB-48M XT 8-bit Port1 ADC CMP PWM0 ~PWM7 Timer2 Cap0~2 Timer0 Timer1 USB PD Type-C

CH549手册 2 l Core:增强型E8051 内核,兼容MCS51 指令集,其79%的指令是单字节单周期指令,平均指令 速度比标准MCS51快8~15倍,特有XRAM数据快速复制指令,双DPTR指针。 l ROM:64KB 非易失存储器Flash-ROM,支持10K 次擦写,可以全部用于程序存储空间;或者可 以分为60KB程序存储区和1KB数据存储区EEPROM以及3KB引导代码BootLoader/ISP程序区。 l EEPROM:数据存储区EEPROM 共1K 字节,分为16 个独立块,支持单字节读、单字节写、块写 (1~64字节)、块擦除(64字节)操作,在典型环境下一般支持100K次擦写(非担保)。 l OTP:一次性可编程数据存储区OTP共32字节,支持双字读(4字节)、单字节写。 l RAM:256 字节内部iRAM,可以用于快速数据暂存以及堆栈;2KB 片内xRAM,可以用于大量数 据暂存以及DMA直接内存存取。 l USB:内嵌USB 控制器和USB 收发器,支持USB-Host 主机模式和USB-Device 设备模式,支持 USB 2.0全速12Mbps或者低速1.5Mbps。支持最大64字节数据包,内置FIFO,支持DMA。 l USB PD和type-C:支持USB type-C主从检测,支持USB PD电力传输控制和32位CRC计算, 无需外部软硬件。 l Timer:3组定时器,T0/T1/T2为标准MCS51定时器。 l Capture:定时器T2扩展为支持3 路信号捕捉。 l PWM:8 路PWM输出,支持标准8位数据或者快速6位数据。 l UART:4组异步串口,UART0为标准MCS51串口;UART1/2/3自带通讯波特率设置寄存器。 l SPI:SPI控制器支持Master/Slave主从模式,内置FIFO,时钟频率最高可接近系统主频Fsys 的一半,支持串行数据输入输出单工复用。 l ADC:16通道12位A/D模数转换器,支持多种组合的电压比较。 l Touch-Key:支持16通道电容触摸按键检测,每个ADC 通道都支持触摸按键检测。 l TS:内置简单的温度传感器。 l GPIO:支持最多44个GPIO引脚(含XI和RST以及USB引脚),支持MCS51兼容的准双向模式, 新增高阻输入、推挽输出、开漏输出模式,其中一个引脚支持12V高压开漏输出。 l Interrupt:支持16组中断信号源,包括与标准MCS51兼容的6 组中断(INT0、T0、INT1、T1、 UART0、T2),以及扩展的10组中断(SPI0、INT3、USB、ADC/UART2、UART1、PWMX/UART3、GPIO、 WDOG),其中GPIO中断可以从7个引脚中选择。 l Watch-Dog:8位可预设看门狗定时器WDOG,支持定时中断。 l Reset:支持5 种复位信号源,内置上电复位和多级可调的电源低压检测复位模块,支持软件 复位和看门狗溢出复位,可选引脚外部输入复位。 l Clock:内置24MHz时钟源,可以通过复用GPIO引脚支持外部晶体,内置PLL用于产生USB时 钟和所需频率的系统主频Fsys。 l Power:内置5V到3.3V的低压差电压调整器,用于USB等模块,支持5V或3.3V甚至6V或2.8V 电源电压。 l Sleep:支持低功耗睡眠,支持USB、UART0、UART1、SPI0、比较器以及部分GPIO外部唤醒。 l 芯片内置唯一ID号,支持ID号和校验。 3、封装 封装形式 塑体宽度 引脚间距 封装说明 订货型号 LQFP-48 7*7mm 0.5mm 19.7mil 标准LQFP48脚贴片 CH549L QFN28_4X4 4*4mm 0.4mm 15.7mil 方形无引线28脚 CH549F SOP-16 3.9mm 150mil 1.27mm 50mil 标准的16脚贴片 CH549G LQFP-48 7*7mm 0.5mm 19.7mil 标准LQFP48脚贴片 CH548L SOP-16 3.9mm 150mil 1.27mm 50mil 标准的16脚贴片 CH548G

CH549手册 3 P1.5/MOSI/PWM0_48 P1.6/MISO/RXD1_1 P1.7/SCK/TXD1_/AIN72 P5.7/RST3 P3.0/RXD4 P4.46 P3.1/TXD7 P3.2/INT08 P3.3/INT19 P3.4/T010 P3.5/T111 P3.6/CAP012 P3.7/INT3 13 P4.6/XI 16XO 17GND/VSS 18 P0.3/TXD_/AIN1137 P0.2/RXD_/AIN1038 P0.1/AIN939 P0.0/AIN840 VDD41 V3342 P1.0/T2/CAP1/AIN043 P1.1/T2EX/CAP2/AIN144 P1.2/AIN245 P1.3/AIN346 P1.4/SCS/UCC1/AIN447 P4.3 14P4.2 15 P4.55 P4.1 19 P1.5/UCC2/AIN5 P1.6/VBUS/AIN6 CH549L GND/VSS 14 P5.1/DP 12P5.0/DM 13P1.5/MOSI/PWM0_/UCC2/AIN53 P1.6/MISO/RXD1_/VBUS/AIN64 P1.7/SCK/TXD1_/AIN75 P5.7/RST6 P3.4/T0 9 P2.4/PWM1/T2_/CAP1_ 11 VDD 15V33 16P1.1/T2EX/CAP2/AIN11 P1.4/SCS/UCC1/AIN42 P3.0/RXD7 P3.1/TXD8 P2.2/PWM3/INT0_ 10 CH549G P1.5/MOSI/PWM0_28 P1.6/MISO/RXD1_1 P1.7/SCK/TXD1_/AIN72 P5.7/RST3 P3.0/RXD4 P3.1/TXD5 P3.2/INT06 P3.3/INT17 P3.4/T0 8P3.5/T1 9P4.6/XI 10XO 11 GND/VSS0 P5.5/HVOD 16 P2.2/PWM3/INT0_ 12P2.4/PWM1/T2_/CAP1_ 13P2.6/PWM6/RXD1 14 P2.7/PWM7/TXD1 15 P0.4/RXD2/AIN1222 VDD23 V3324 P1.0/T2/CAP1/AIN025 P1.1/T2EX/CAP2/AIN126 P1.4/SCS/UCC1/AIN427 P1.5/UCC2/AIN5 P1.6/VBUS/AIN6 CH549F 4、引脚 引脚号 引脚 名称 其它功能名称 (左侧功能最优先) 其它功能描述 SOP16 QFN28 LQFP48 15 23 41 VDD VCC I/O电源输入以及内部USB电源调整器的外部电源 输入,需要外接0.1uF电源退耦电容。 16 24 42 V33 V3 内部USB电源调整器输出和内部USB电源输入, 当电源电压小于3.6V时连接VDD输入外部电源, 当电源电压大于3.6V时外接0.1uF电源退耦电容 14 0 18 GND VSS 公共接地端。 - - 40 P0.0 AIN8 AIN8~AIN15:8通道ADC模拟信号/触摸按键输入。 RXD2、TXD2:UART2串行数据输入、串行数据输出。 RXD3、TXD3:UART3串行数据输入、串行数据输出。 - - 39 P0.1 AIN9 - - 38 P0.2 RXD_/AIN10 - - 37 P0.3 TXD_/AIN11 - 22 36 P0.4 RXD2/AIN12 - 21 35 P0.5 TXD2/AIN13 - 20 34 P0.6 RXD3/AIN14 - 19 33 P0.7 TXD3/AIN15 - 25 43 P1.0 T2/CAP1/AIN0 AIN0~AIN7:8通道ADC模拟信号/触摸按键输入。 T2:定时/计数器2的外部计数输入/时钟输出。 T2EX:定时/计数器2 重载/捕捉输入。 CAP1、CAP2:定时/计数器2 的捕捉输入1、2。 1 26 44 P1.1 T2EX/CAP2/AIN1 - - 45 P1.2 AIN2 - - 46 P1.3 AIN3

CH549手册 4 2 27 47 P1.4 SCS/UCC1/AIN4 SCS、MOSI、MISO、SCK:SPI0 接口,SCS 是片选 输入,MOSI 是主机输出/从机输入,MISO 是主机 输入/从机输出,SCK是串行时钟。 UCC1、UCC2:USB type-C双向配置通道。 VBUS:USB type-C总线电压检测输入。 PWM0_、RXD1_、TXD1_:PWM0/RXD1/TXD1引脚映射。 3 28 48 P1.5 MOSI/PWM0_/UCC2 /AIN5 4 1 1 P1.6 MISO/RXD1_/VBUS /AIN6 5 2 2 P1.7 SCK/TXD1_/AIN7 - - 21 P2.0 PWM5 PWM0~PWM7:8通道PWM输出。 INT0_:INT0引脚映射。 T2_/CAP1_:T2/CAP1引脚映射。 T2EX_/CAP2_:T2EX/CAP2引脚映射。 RXD1、TXD1:UART1串行数据输入、串行数据输出。 - - 22 P2.1 PWM4 10 12 23 P2.2 PWM3/INT0_ - - 24 P2.3 PWM2 11 13 25 P2.4 PWM1/T2_/CAP1_ - - 26 P2.5 PWM0/T2EX_/CAP2_ - 14 27 P2.6 PWM6/RXD1 - 15 28 P2.7 PWM7/TXD1 7 4 4 P3.0 RXD RXD、TXD:UART0串行数据输入、串行数据输出。 INT0、INT1:外部中断0、外部中断1 输入。 T0、T1:定时器0、定时器1 外部输入。 CAP0:定时/计数器2 的捕捉输入0。 INT3:外部中断3。 8 5 7 P3.1 TXD - 6 8 P3.2 INT0 - 7 9 P3.3 INT1 9 8 10 P3.4 T0 - 9 11 P3.5 T1 - - 12 P3.6 CAP0 - - 13 P3.7 INT3 - - 20 P4.0 XI、XO:外部晶体振荡输入端、反相输出端。 - - 19 P4.1 - - 15 P4.2 - - 14 P4.3 - - 6 P4.4 - - 5 P4.5 - 10 16 P4.6 XI - 11 17 XO 13 18 32 P5.0 DM/UDM DM、DP:USB主机或USB设备的D-、D+信号端。 12 17 31 P5.1 DP/UDP - - 30 P5.4 ALE/CKO ALE/CKO:伪地址锁存信号输出或者时钟输出。 HVOD:支持12V高电压的开漏输出。 - 16 29 P5.5 HVOD 6 3 3 P5.7 RST 外部复位输入,内置下拉电阻。 5、特殊功能寄存器SFR 本手册中在对寄存器进行描述时可能使用了下列缩写: 缩写词 描述 RO 表示访问类型:只读 WO 表示访问类型:只写,读取的值无效 RW 表示访问类型:可读可写

CH549手册 5 H 以其结束表示16进制数 B 以其结束表示2进制数

5.1 SFR 简介和地址分布

CH549用特殊功能寄存器SFR和xSFR控制、管理设备以及设置工作模式。 SFR 占用内部数据存储空间的80h-FFh 地址范围,只能通过直接地址方式的指令访问。其中地 址为x0h或x8h的寄存器是可以按位寻址的,这样就能避免访问某个具体的位时而修改其他位的值; 其它地址为非8倍数的寄存器只能按字节访问。 部分SFR 仅在安全模式下才能写入数据,而在非安全模式下是只读状态,例如:GLOBAL_CFG、 CLOCK_CFG、WAKE_CTRL、POWER_CFG。 部分 SFR 具有一个或者多个别名,例如:SPI0_CK_SE/SPI0_S_PRE、UDEV_CTRL/UHOST_CTRL、 UEP1_CTRL/UH_SETUP、UEP2_CTRL/UH_RX_CTRL、UEP2_T_LEN/UH_EP_PID、UEP3_CTRL/UH_TX_CTRL、 部分地址对应于多个独立的SFR,例如:SAFE_MOD/CHIP_ID、ROM_CTRL/ROM_STATUS。 CH549包含8051标准SFR所有的寄存器,同时又增加了其他设备控制寄存器。具体SFR见下表。 表5.1 特殊功能寄存器表 0xF8 SPI0_STAT SPI0_DATA SPI0_CTRL SPI0_CK_SE SPI0_S_PRE SPI0_SETUP A_INV RESET_KEEP WDOG_COUNT 0xF0 B TKEY_CTRL ADC_CTRL ADC_CFG ADC_DAT_L ADC_DAT_H ADC_CHAN ADC_PIN 0xE8 IE_EX IP_EX UEP4_1_MOD UEP2_3_MOD UH_EP_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 UH_RX_DMA_L UEP2_DMA_H UH_RX_DMA_H UEP3_DMA_L UH_TX_DMA_L UEP3_DMA_H UH_TX_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 UHOST_CTRL UEP1_CTRL UH_SETUP UEP1_T_LEN UEP2_CTRL UH_RX_CTRL UEP2_T_LEN UH_EP_PID UEP3_CTRL UH_TX_CTRL UEP3_T_LEN UH_TX_LEN 0xC8 T2CON T2MOD RCAP2L RCAP2H TL2 TH2 T2CAP1L T2CAP1H 0xC0 P4 T2CON2 P4_MOD_OC P4_DIR_PU P0_MOD_OC P0_DIR_PU T2CAP0L T2CAP0H 0xB8 IP CLOCK_CFG POWER_CTRL SCON1 SBUF1 SBAUD1 SIF1 0xB0 P3 GLOBAL_CFG GPIO_IE INTX SCON2 SBUF2 SBAUD2 SIF2 0xA8 IE WAKE_CTRL PIN_FUNC P5 SCON3 SBUF3 SBAUD3 SIF3 0xA0 P2 SAFE_MOD CHIP_ID XBUS_AUX PWM_DATA3 PWM_DATA4 PWM_DATA5 PWM_DATA6 PWM_DATA7 0x98 SCON SBUF PWM_DATA2 PWM_DATA1 PWM_DATA0 PWM_CTRL PWM_CK_SE PWM_CTRL2 0x90 P1 USB_C_CTRL P1_MOD_OC P1_DIR_PU P2_MOD_OC P2_DIR_PU P3_MOD_OC P3_DIR_PU 0x88 TCON TMOD TL0 TL1 TH0 TH1 ROM_DATA_HL ROM_DAT_BUF ROM_DATA_HH ROM_BUF_MOD 0x80 P0 SP DPL DPH ROM_ADDR_L ROM_DATA_LL ROM_ADDR_H ROM_DATA_LH ROM_CTRL ROM_STATUS PCON 备注:(1)、红色文本代表可以按位寻址;

CH549手册 6 (2)、以下是颜色框对应说明 寄存器地址 SPI0相关寄存器 ADC相关寄存器 USB相关寄存器 定时/计数器2相关寄存器 端口设置相关寄存器 PWMX相关寄存器 UART1/2/3相关寄存器 定时/计数器0和1相关寄存器 Flash-ROM相关寄存器

5.2 SFR 分类和复位值

表5.2 SFR和xSFR描述和复位值 功能分类 名称 地址 描述 复位值 系统设置 相关寄存器 B F0h B 寄存器 0000 0000b ACC E0h 累加器 0000 0000b A_INV FDh 累加器的高低位倒置值 0000 0000b PSW D0h 程序状态寄存器 0000 0000b GLOBAL_CFG B1h 全局配置寄存器(CH549引导程序状态下) 1110 0000b 全局配置寄存器(CH549应用程序状态下) 1100 0000b 全局配置寄存器(CH548引导程序状态下) 1010 0000b 全局配置寄存器(CH548应用程序状态下) 1000 0000b CHIP_ID A1h CH549芯片ID识别码(只读) 0100 1001b CH548芯片ID识别码(只读) 0100 1000b 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 POWER_CTRL BAh 电源管理配置寄存器 0000 0011b 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 INTX B3h 扩展外部中断控制寄存器 0000 0000b IE A8h 中断使能寄存器 0000 0000b Flash-ROM ROM_DATA_HH 8Fh flash-ROM 数据寄存器高字的高字节(只读) xxxx xxxxb

CH549手册 7 相关寄存器 ROM_DATA_HL 8Eh flash-ROM 数据寄存器高字的低字节(只读) xxxx xxxxb ROM_DATA_HI 8Eh ROM_DATA_HL 和ROM_DATA_HH组成16位SFR xxxxh ROM_BUF_MOD 8Fh flash-ROM 擦写操作的缓冲区模式寄存器 xxxx xxxxb ROM_DAT_BUF 8Eh flash-ROM 擦写操作的数据缓冲寄存器 xxxx xxxxb 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 ROM_DATA_LH 85h flash-ROM 数据寄存器低字的高字节(只读) xxxx xxxxb ROM_DATA_LL 84h flash-ROM 数据寄存器低字的低字节(只读) xxxx xxxxb ROM_DATA_LO 84h ROM_DATA_LL 和ROM_DATA_LH组成16位SFR xxxxh 端口设置 相关寄存器 XBUS_AUX A2h 外部总线辅助设置寄存器 0000 0000b PIN_FUNC AAh 引脚功能选择寄存器 0000 0000b P0_DIR_PU C5h P0 端口方向控制和上拉使能寄存器 1111 1111b P0_MOD_OC C4h P0 端口输出模式寄存器 1111 1111b P4_DIR_PU C3h P4 端口方向控制和上拉使能寄存器 1111 1111b P4_MOD_OC C2h P4 端口输出模式寄存器 1111 1111b P3_DIR_PU 97h P3 端口方向控制和上拉使能寄存器 1111 1111b P3_MOD_OC 96h P3 端口输出模式寄存器 1111 1111b P2_DIR_PU 95h P2 端口方向控制和上拉使能寄存器 1111 1111b P2_MOD_OC 94h P2 端口输出模式寄存器 1111 1111b P1_DIR_PU 93h P1 端口方向控制和上拉使能寄存器 1111 1111b P1_MOD_OC 92h P1 端口输出模式寄存器 1111 1111b P5 ABh P5 端口输入输出寄存器 0010 0000b P4 C0h P4 端口输入输出寄存器 1111 1111b P3 B0h P3 端口输入输出寄存器 1111 1111b P2 A0h P2 端口输入输出寄存器 1111 1111b P1 90h P1 端口输入输出寄存器 1111 1111b P0 80h P0 端口输入输出寄存器 1111 1111b 定时/计数器 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

CH549手册 8 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 T2CAP0H C7h Timer2 捕捉0数据高字节(只读) xxxx xxxxb T2CAP0L C6h Timer2 捕捉0数据低字节(只读) xxxx xxxxb T2CAP0 C6h T2CAP0L 和T2CAP0H组成16位SFR xxxxh T2CON2 C1h Timer2 扩展控制寄存器 0000 0000b PWMX 相关寄存器 PWM_DATA7 A7h PWM7 数据寄存器 xxxx xxxxb PWM_DATA6 A6h PWM6 数据寄存器 xxxx xxxxb PWM_DATA5 A5h PWM5 数据寄存器 xxxx xxxxb PWM_DATA4 A4h PWM4 数据寄存器 xxxx xxxxb PWM_DATA3 A3h PWM3 数据寄存器 xxxx xxxxb PWM_CTRL2 9Fh PWM 扩展控制寄存器 0000 0000b PWM_CK_SE 9Eh PWM 时钟分频设置寄存器 0000 0000b PWM_CTRL 9Dh PWM 控制寄存器 0000 0010b PWM_DATA0 9Ch PWM0 数据寄存器 xxxx xxxxb PWM_DATA1 9Bh PWM1 数据寄存器 xxxx xxxxb PWM_DATA2 9Ah 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 相关寄存器 SIF1 BFh UART1 中断状态寄存器 0000 0000b SBAUD1 BEh UART1 波特率设置寄存器 xxxx xxxxb SBUF1 BDh UART1 数据寄存器 xxxx xxxxb SCON1 BCh UART1 控制寄存器 0100 0000b UART2 相关寄存器 SIF2 B7h UART2 中断状态寄存器 0000 0000b SBAUD2 B6h UART2 波特率设置寄存器 xxxx xxxxb SBUF2 B5h UART2 数据寄存器 xxxx xxxxb SCON2 B4h UART2 控制寄存器 0000 0000b UART3 相关寄存器 SIF3 AFh UART3 中断状态寄存器 0000 0000b SBAUD3 AEh UART3 波特率设置寄存器 xxxx xxxxb SBUF3 ADh UART3 数据寄存器 xxxx xxxxb SCON3 ACh UART3 控制寄存器 0000 0000b ADC/TKEY 相关寄存器 ADC_PIN F7h ADC 引脚数字输入控制寄存器 0000 0000b ADC_CHAN F6h ADC 模拟信号通道选择寄存器 0000 0000b ADC_DAT_H F5h ADC 结果数据的高字节(只读) 0000 xxxxb ADC_DAT_L F4h ADC 结果数据的低字节(只读) xxxx xxxxb

CH549手册 9 ADC_DAT F4h ADC_DAT_L 和ADC_DAT_H组成16位SFR 0xxxh ADC_CFG F3h ADC 配置寄存器 0000 0000b ADC_CTRL F2h ADC 控制和状态寄存器 x000 000xb TKEY_CTRL F1h 触摸按键充电脉冲宽度控制寄存器(只写) 0000 0000b USB 相关寄存器 UEP1_DMA_H EFh 端点1缓冲区起始地址高字节 0000 0xxxb 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 0xxxb 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 UH_EP_MOD EBh USB 主机端点模式控制寄存器 0000 0000b UEP4_1_MOD EAh 端点1、4模式控制寄存器 0000 0000b UEP3_DMA_H E7h 端点3缓冲区起始地址高字节 0000 0xxxb UEP3_DMA_L E6h 端点3缓冲区起始地址低字节 xxxx xxxxb UEP3_DMA E6h UEP3_DMA_L 和UEP3_DMA_H组成16位SFR 0xxxh UH_TX_DMA_H E7h USB 主机发送缓冲区起始地址高字节 0000 0xxxb UH_TX_DMA_L E6h USB 主机发送缓冲区起始地址低字节 xxxx xxxxb UH_TX_DMA E6h UH_TX_DMA_L 和UH_TX_DMA_H组成16位SFR 0xxxh UEP2_DMA_H E5h 端点2缓冲区起始地址高字节 0000 0xxxb UEP2_DMA_L E4h 端点2缓冲区起始地址低字节 xxxx xxxxb UEP2_DMA E4h UEP2_DMA_L 和UEP2_DMA_H组成16位SFR 0xxxh UH_RX_DMA_H E5h USB 主机接收缓冲区起始地址高字节 0000 0xxxb UH_RX_DMA_L E4h USB 主机接收缓冲区起始地址低字节 xxxx xxxxb UH_RX_DMA E4h UH_RX_DMA_L 和UH_RX_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 UH_TX_LEN D7h USB 主机发送长度寄存器 0xxx xxxxb UEP3_CTRL D6h 端点3控制寄存器 0000 0000b UH_TX_CTRL D6h USB 主机发送端点控制寄存器 0000 0000b UEP2_T_LEN D5h 端点2发送长度寄存器 0000 0000b UH_EP_PID D5h USB 主机令牌设置寄存器 0000 0000b UEP2_CTRL D4h 端点2控制寄存器 0000 0000b

CH549手册 10 UH_RX_CTRL D4h USB 主机接收端点控制寄存器 0000 0000b UEP1_T_LEN D3h 端点1发送长度寄存器 0xxx xxxxb UEP1_CTRL D2h 端点1控制寄存器 0000 0000b UH_SETUP D2h USB 主机辅助设置寄存器 0000 0000b UDEV_CTRL D1h USB 设备端口控制寄存器 00xx 0000b UHOST_CTRL D1h USB 主机端口控制寄存器 00xx 0000b USB_C_CTRL 91h USB type-C 配置通道控制寄存器 0000 0000b 5.3 通用8051 寄存器 表5.3.1 通用8051寄存器列表 名称 地址 描述 复位值 A_INV FDh 累加器的高低位倒置值 00h B F0h B 寄存器 00h A、ACC E0h 累加器 00h PSW D0h 程序状态寄存器 00h GLOBAL_CFG B1h 全局配置寄存器(CH549引导程序状态下) E0h 全局配置寄存器(CH549应用程序状态下) C0h 全局配置寄存器(CH548引导程序状态下) A0h 全局配置寄存器(CH548应用程序状态下) 80h CHIP_ID A1h CH549芯片ID识别码(只读) 49h CH548芯片ID识别码(只读) 48h SAFE_MOD A1h 安全模式控制寄存器(只写) 00h 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 位有进位或借 0

CH549手册 11 位,AC置位,否则清零

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 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,用于访问xSFR、xBUS、xRAM数据存储器或者程序存储器, 实际DPTR对应DPTR0和DPTR1两组物理上的16位数据指针,由XBUS_AUX 中的DPS动态选择。 堆栈指针(SP): 位 名称 访问 描述 复位值 [7:0] SP RW 堆栈指针,主要用于程序调用和中断调用以及数据进出栈 07h 堆栈具体功能:保护断点和保护现场,按先入后出的原则进行管理。入栈时SP指针自动加1, 保存数据或断点信息;出栈时取SP指针指向数据单元,SP指针自动减1。SP在复位后的初值是07h, 相应的默认堆栈存储从08h开始。

CH549手册 12 5.4 特有寄存器 累加器的高低位倒置值(A_INV): 位 名称 访问 描述 复位值 [7:0] A_INV RO 累加器的高低位倒置值,位0~位7按位反序的结果, A_INV的位7、位6~位0分别是ACC的位0、位1~位7 00h 全局配置寄存器(GLOBAL_CFG),仅在安全模式下可写: 位 名称 访问 描述 复位值 [7:6] 保留 RO 对于CH549,是固定值11 11b [7:6] 保留 RO 对于CH548,是固定值10 10b 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写允许位: 该位为0 则写保护;为1则Flash-ROM可写可擦 0 2 bDATA_WE RW Flash-ROM的DataFlash区域写允许位: 该位为0 则写保护;为1则DataFlash区域可写可擦 0 1 保留 RO 0 0 bWDOG_EN RW 看门狗复位使能位:该位为0 看门狗只用作定时器;该位 为1允许计时溢出时产生看门狗复位 0 芯片ID识别码(CHIP_ID): 位 名称 访问 描述 复位值 [7:0] CHIP_ID RO 对于CH549,是固定值49h,用于识别芯片 49h [7:0] CHIP_ID RO 对于CH548,是固定值48h,用于识别芯片 48h 安全模式控制寄存器(SAFE_MOD): 位 名称 访问 描述 复位值 [7:0] SAFE_MOD WO 用于进入或者终止安全模式 00h 部分SFR仅在安全模式下才能写入数据,而在非安全模式下总是只读状态。进入安全模式步骤: (1)、向该寄存器写入55h; (2)、接着向该寄存器写入AAh; (3)、此后约13 到23 个系统主频周期都处于安全模式下,该有效期内可以改写一个或多个安全类 SFR 或普通SFR (4)、超出上述有效期后自动终止安全模式 (5)、或者再向该寄存器写任意值可以提前终止安全模式 6、存储器结构 6.1 存储器空间

CH549手册 13 CH549寻址空间分为程序存储空间、内部数据存储空间、外部数据存储空间、只读和OTP空间。 图6.1 存储器结构图 6.2 程序存储空间 程序存储空间共64KB,如图6.1所示,已全部用于flash-ROM,包括保存指令代码的Code Flash 区域、保存非易失数据的Data Flash区域、以及配置信息Configuration Information区域。 Data Flash(EEPROM)地址范围为F000h到F3FFH,支持单字节读(8位)、单字节写(8位)、块 写(1~64字节)、块擦除(64字节)操作,芯片掉电后数据保持不变,也可用作Code Flash。 Code Flash包括低地址区域的应用程序代码和高地址区域的引导程序代码,也可将这两块区域 以及Data Flash合并用于保存单一应用程序代码。 对于CH548,Code Flash的应用程序代码区域仅32KB。 配置信息Configuration Information共16位数据,由编程器根据需要设定,参考表6.1。 表6.2 flash-ROM配置信息描述 位地址 位名称 说明 建议值

15 Code_Protect flash-ROM中的代码和数据保护模式:

0-允许读出;1-禁止编程器读出,程序保密 0/1

14 No_Boot_Load

使能BootLoader引导代码启动模式: 0-从0000h地址的应用程序启动; 1-从F400h地址的引导程序启动

13 En_Long_Reset 使能上电复位期间的额外延时复位:

0-标准短复位;1-宽复位,额外增加44mS复位时间 0 12 En_P5.7_RESET 使能P5.7作为手工复位输入引脚:0-禁止;1-使能RST 1 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 Program Address Space External Data Address Space FFFFH 0800H 07FFH 0000H 2KB on-chip expanded xRAM @xdata (indirect addressing by MOVX) Reserved area @xdata Configuration information ROM_CFG_ADDR Data Flash or Code Flash DATA_FLASH_ADDR Boot Loader Code Flash BOOT_LOAD_ADDR Application Code Flash OTP data 03FH 020H 01FH 000H Read Only information FFFFH FFFEH FFFDH F400H F3FFH F000H EFFFH 0000H

CH549手册 14 11 保留 0 10 保留 0

9 Must_1 (由编程器根据需要自动设定为1) 1

8 Must_0 (由编程器根据需要自动设定为0) 0

[7:3] All_0 (由编程器根据需要自动设定为00000b) 00000b [2:0] LV_RST_VOL (Vpot) 选择电源低压检测复位模块LVR的门限电压(误差4%): 000或001选择2.4V;010选择2.7V;011选择3.0V;100 选择3.6V;101选择4.0V;110选择4.3V;111选择4.6V 000b 6.3 数据存储空间 内部数据存储空间共256字节,如图6.1所示,已全部用于SFR和iRAM,其中iRAM用于堆栈 和快速数据暂存,可细分为工作寄存器R0-R7、位变量bdata、字节变量data、idata等。 外部数据存储空间共64KB,如图6.1所示,除了部分用于2KB片内扩充xRAM,剩余的0800h 到FFFFh地址范围是保留区域。 只读信息和OTP数据各32字节,如图6.1所示,需要通过专用操作实现存取。 6.4 flash-ROM 寄存器 表6.4 flash-ROM操作寄存器列表 名称 地址 描述 复位值 ROM_DATA_HH 8Fh flash-ROM 数据寄存器高字的高字节(只读) xxh ROM_DATA_HL 8Eh flash-ROM 数据寄存器高字的低字节(只读) xxh ROM_DATA_HI 8Eh ROM_DATA_HL 和ROM_DATA_HH组成16位SFR xxxxh ROM_BUF_MOD 8Fh flash-ROM 擦写操作的缓冲区模式寄存器 xxh ROM_DAT_BUF 8Eh flash-ROM 擦写操作的数据缓冲寄存器 xxh 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 ROM_DATA_LH 85h flash-ROM 数据寄存器低字的高字节(只读) xxh ROM_DATA_LL 84h flash-ROM 数据寄存器低字的低字节(只读) xxh ROM_DATA_LO 84h ROM_DATA_LL 和ROM_DATA_LH组成16位SFR xxxxh flash-ROM地址寄存器(ROM_ADDR): 位 名称 访问 描述 复位值 [7:0] ROM_ADDR_H RW flash-ROM 地址高字节 xxh [7:0] ROM_ADDR_L RW flash-ROM 地址低字节 xxh flash-ROM数据寄存器(ROM_DATA_HI、ROM_DATA_LO): 位 名称 访问 描述 复位值 [7:0] ROM_DATA_HH RO flash-ROM 数据寄存器高字(16位)的高字节 xxh [7:0] ROM_DATA_HL RO flash-ROM 数据寄存器高字(16位)的低字节 xxh [7:0] ROM_DATA_LH RO flash-ROM 数据寄存器低字(16位)的高字节 xxh

CH549手册 15 [7:0] ROM_DATA_LL RO flash-ROM 数据寄存器低字(16位)的低字节 xxh flash-ROM擦写操作的缓冲区模式寄存器(ROM_BUF_MOD): 位 名称 访问 描述 复位值 7 bROM_BUF_BYTE RW flash-ROM擦写操作(擦除或编程)的缓冲区模式: 该位为0 选择数据块编程模式,待写数据存放于由 DPTR指向的xRAM中,编程时CH549自动从xRAM依 次取出数据暂存于ROM_DAT_BUF再写入flash-ROM, 支持1字节到64字节数据长度,实际长度 =MASK_ROM_ADR_END-ROM_ADDR_L[5:0]+1; 为1 选择单字节编程或者64字节块擦除模式,待 写数据直接存放于ROM_DAT_BUF中 x 6 保留 RW 保留 x [5:0] MASK_ROM_ADDR RW 在flash-ROM数据块编程模式下,为flash-ROM块 编程操作的结束地址的低6 位(含该地址); 在flash-ROM单字节编程或者64字节块擦除模式 下,为保留,建议为00h xxh flash-ROM擦写操作的数据缓冲寄存器(ROM_DAT_BUF): 位 名称 访问 描述 复位值 [7:0] ROM_DAT_BUF RW flash-ROM 擦写操作的数据缓冲寄存器 xxh flash-ROM控制寄存器(ROM_CTRL): 位 名称 访问 描述 复位值 [7:0] ROM_CTRL WO flash-ROM 控制寄存器 00h flash-ROM状态寄存器(ROM_STATUS): 位 名称 访问 描述 复位值 7 保留 RO 保留 1 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,将目标块中全部数据位变为0: (1)、使能安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (2)、设置全局配置寄存器GLOBAL_CFG开启写使能(bCODE_WE或bDATA_WE对应code或data); (3)、设置地址寄存器ROM_ADDR,写入16位目标地址,实际仅高10位有效; (4)、设置擦写操作的缓冲区模式寄存器ROM_BUF_MOD为80h,选择64字节块擦除模式;

CH549手册 16 (5)、可选,设置擦写操作的数据缓冲寄存器ROM_DAT_BUF为00h; (6)、设置操作控制寄存器ROM_CTRL为0A6h,执行块擦除操作,操作期间程序自动暂停运行; (7)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态;如果 要擦除多个块,则循环(3)、(4)、(5)、(6)、(7)步骤,步骤(3)、(4)、(5)顺序可对调; (8)、再次进入安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (9)、设置全局配置寄存器GLOBAL_CFG开启写保护(bCODE_WE=0,bDATA_WE=0)。 2、单字节写flash-ROM,将目标字节中部分数据位从0 变为1(无法将位数据从1变为0): (1)、使能安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (2)、设置全局配置寄存器GLOBAL_CFG开启写使能(bCODE_WE或bDATA_WE对应code或data); (3)、设置地址寄存器ROM_ADDR,写入16位目标地址; (4)、设置擦写操作的缓冲区模式寄存器ROM_BUF_MOD为80h,选择单字节编程模式; (5)、设置擦写操作的数据缓冲寄存器ROM_DAT_BUF为要写入的字节数据; (6)、设置操作控制寄存器ROM_CTRL为09Ah,执行写操作,操作期间程序自动暂停运行; (7)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态;如果 要写多个数据,则循环(3)、(4)、(5)、(6)、(7)步骤,步骤(3)、(4)、(5)顺序可对调; (8)、再次进入安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (9)、设置全局配置寄存器GLOBAL_CFG开启写保护(bCODE_WE=0,bDATA_WE=0)。 3、块写flash-ROM,将多个目标字节中部分数据位从0 变为1(无法将位数据从1变为0): (1)、使能安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (2)、设置全局配置寄存器GLOBAL_CFG开启写使能(bCODE_WE或bDATA_WE对应code或data); (3)、设置地址寄存器ROM_ADDR,写入16位起始目标地址,例如1357h; (4)、设置擦写操作的缓冲区模式寄存器ROM_BUF_MOD为结束目标地址(含)的低6 位,该结束地 址应该大于或等于ROM_ADDR_L[5:0]起始目标地址,选择数据块编程模式,例如结束地址为 1364h,则ROM_BUF_MOD应该设置为24h(64h&3Fh),计算出数据块的字节数=0Dh; (5)、在xRAM中分配一个按64字节对齐的缓冲区域,例如0580h~05BFh,用起始目标地址的低6 位指定在该缓冲区域中的偏移地址,得到本次数据块编程操作的xRAM 缓冲区起始地址,将 待写数据块从该xRAM 缓冲区起始地址开始存放,并将该xRAM 缓冲区起始地址置入DPTR, 例如DPTR=0580h+(57h&3Fh)=0597h,实际本次编程操作只用到0597h~05A4h地址的xRAM; (6)、设置操作控制寄存器ROM_CTRL为09Ah,执行写操作,操作期间程序自动暂停运行; (7)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态;如果 要写多个数据,则循环(3)、(4)、(5)、(6)、(7)步骤,步骤(3)、(4)、(5)顺序可对调; (8)、再次进入安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (9)、设置全局配置寄存器GLOBAL_CFG开启写保护(bCODE_WE=0,bDATA_WE=0)。 4、读flash-ROM: 直接使用MOVC指令,或通过指向程序存储空间的指针,读取目标地址的code或data。 5、单字节写OTP数据区域,将目标字节中部分数据位从0变为1(无法将位数据从1 变为0): (1)、使能安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (2)、设置全局配置寄存器GLOBAL_CFG开启写使能(bDATA_WE); (3)、设置地址寄存器ROM_ADDR,写入目标地址(20h~3Fh),实际仅低6 位中的高4位有效; (4)、设置擦写操作的缓冲区模式寄存器ROM_BUF_MOD为80h,选择单字节编程模式; (5)、设置擦写操作的数据缓冲寄存器ROM_DAT_BUF为要写入的字节数据; (6)、设置操作控制寄存器ROM_CTRL为099h,执行写操作,操作期间程序自动暂停运行;

CH549手册 17 (7)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态;如果 要写多个数据,则循环(3)、(4)、(5)、(6)、(7)步骤,步骤(3)、(4)、(5)顺序可对调; (8)、再次进入安全模式,SAFE_MOD = 55h;SAFE_MOD = 0AAh; (9)、设置全局配置寄存器GLOBAL_CFG开启写保护(bCODE_WE=0,bDATA_WE=0)。 6、以4 字节为单位读取ReadOnly只读信息区域或者OTP数据区域: (1)、设置地址寄存器ROM_ADDR,写入按4 字节对齐的目标地址(00h~3Fh),实际仅低6位有效; (2)、设置操作控制寄存器ROM_CTRL为08Dh,执行读操作,操作期间程序自动暂停运行; (3)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态; (4)、从flash-ROM数据寄存器ROM_DATA_HI和ROM_DATA_LO中获得4 字节数据。 7、注意事项:对flash-ROM/EEPROM进行擦写操作时,建议只在-20℃~85℃环境温度下进行。如 果在超出上述温度范围时进行编程擦写操作,虽然一般情况下是正常的,但是不排除有降低数据保 持能力TDR和降低擦写次数NEPCE甚至影响数据准确性的可能性。 6.6 在板编程和ISP 下载 当配置信息Code_Protect=0时,CH549芯片flash-ROM中的代码和数据可以由外部的编程器通 过同步串行接口读写;当配置信息Code_Protect=1时,flash-ROM中的代码和数据被保护,无法读 出,但是可以被擦除,擦除后重新上电则解除代码保护。 当CH549芯片被预置了BootLoader引导程序后,CH549可以支持USB或者异步串口等多种ISP 下载方式加载应用程序;但在没有引导程序的情况下,CH549 只能由外部专用编程器写入引导程序 或者应用程序。为了支持在板编程,电路中需要预留CH549与编程器之间的4 根连接引脚,最少的 必要连接引脚是3根:P1.4、P1.6、P1.7。 表6.6.1 与编程器之间的连接引脚 引脚 GPIO 引脚描述 RST P5.7 编程状态下的复位控制引脚(可选),高电平允许进入编程状态 SCS P1.4 编程状态下的片选输入引脚(必要),默认高电平,低电平有效 SCK P1.7 编程状态下的时钟输入引脚(必要) MISO P1.6 编程状态下的数据输出引脚(必要) 6.7 芯片唯一ID 号 每只单片机出厂时都具有唯一ID号,即芯片身份识别号。该ID数据及其校验和共8个字节, 存储于只读信息区域的偏移地址为10h的区域中,具体操作请参考C 语言例子程序。 表6.7.1 芯片ID地址表 偏移地址 ID数据描述 10h、11h ID首字数据,依次是ID号的最低字节、次低字节 12h、13h ID次字数据,依次是ID号的次高字节、高字节 14h、15h ID末字数据,依次是48位ID号的次最高字节、最高字节 16h、17h ID 首字、次字、末字数据的16位累加和,用于ID校验 ID 号可以配合下载工具用于对目标程序进行加密,一般的应用,只需使用到ID号前32位。 6.8 温度传感器TS 的校准信息 温度传感器的校准信息位于只读信息区域的偏移地址为0Ch的区域中。具体操作请参考C 语言 例子程序。

CH549手册 18 7、电源管理、睡眠及复位 7.1 外部电源输入 CH549芯片内置5V到3.3V的低压差电压调整器LDO,产生的3.3V电源用于USB等模块。CH549 支持外部5V或者3.3V甚至2.8V电源电压输入,两种电源电压输入模式参考下表。 外部电源电压 VDD引脚电压:外部电压2.8V~5V V33 引脚电压:内部USB电压3.3V 3.3V或2.8V 包括小于3.6V 输入外部3.3V电压到I/O及电压调整器, 必须对地接不小于0.1uF退耦电容 短接VDD输入作为内部USB电源, 必须对地接不小于0.1uF退耦电容 包括大于3.6V 输入外部5V电压到I/O及电压调整器, 必须对地接不小于0.1uF退耦电容 内部电压调整器3.3V输出 及3.3V内部USB电源输入, 必须对地接不小于0.1uF退耦电容 在电源上电或者系统复位后,CH549 默认处于运行状态。在性能满足要求的前提下,适当降低 系统主频可以降低运行时的功耗。当CH549完全不需要运行时,可以设置PCON中的PD进入睡眠状 态,睡眠状态下可以选择通过USB、UART0、UART1、SPI0以及部分GPIO 进行外部唤醒。 7.2 电源和睡眠控制寄存器 表7.2.1 电源和睡眠控制寄存器列表 名称 地址 描述 复位值 WDOG_COUNT FFh 看门狗计数寄存器 00h RESET_KEEP FEh 复位保持寄存器 00h POWER_CTRL BAh 电源管理配置寄存器 03h 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 电源管理配置寄存器(POWER_CTRL),仅在安全模式下可写: 位 名称 访问 描述 复位值 7 bPWR_DN_MODE RW 选择睡眠下电模式: 该位为0 选择下电/深度睡眠模式,更省电但唤醒慢; 该位为1 选择待机/正常睡眠模式,唤醒快 6 bUSB_PU_RES RW 选择USB上拉电阻的阻值: 该位为0 选择1.5KΩ阻值,用于V33为3.3V的情况; 该位为1 选择7KΩ阻值,用于V33为5V的情况 5 bLV_RST_OFF RW 低压复位检测模块的关闭控制,该位为0 启用电源电 压检测并在低压时产生复位信号;为1 关闭低压检测 0

CH549手册 19 4 bLDO_3V3_OFF RW USB电源调整器LDO的关闭控制: 该位为0则由VDD电源产生3.3V电压用于USB等模块; 为1则禁用LDO并内部短接V33到VDD 3 bLDO_CORE_VOL RW 内核电压模式: 该位为0 是正常电压模式; 该位为1 是提升电压模式,性能更好,支持更高主频 [2:0] MASK_ULLDO_VOL RW 选择在下电/深度睡眠模式下的数据保持电源电压: 000选择2.0V;001选择1.9V;010选择1.8V; 011选择1.7V;100选择1.6V;101选择1.5V; 110选择1.4V;111选择1.3V 011b 睡眠唤醒控制寄存器(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_P0_3_LO RW P0.3 低电平唤醒使能,为0 禁止唤醒 0 2 bWAK_P57H_INT3L RW P5.7 高电平和INT3低电平唤醒使能,为0 禁止唤醒。 0 1 bWAK_INT0E_P33L RW INT0边沿变化和P3.3低电平唤醒使能,为0禁止唤醒。 其中INT0根据bINT0_PIN_X=0/1选择INT0或INT0_引脚 0 0 bWAK_RXD0_LO RW UART0接收输入低电平唤醒使能,为0 禁止唤醒。 根据bUART0_PIN_X=0/1选择RXD0或RXD0_引脚 0 电压比较器的唤醒使能由bCMP_EN控制,当bCMP_EN为1 时,如果比较器结果反生变化则自动唤醒。 电源控制寄存器(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 芯片最近一次复位标志描述 bRST_FLAG1 bRST_FLAG0 复位标志描述 0 0 软件复位,来源:bSW_RESET=1并且(bBOOT_LOAD=0或bWDOG_EN=1) 0 1 电源上电复位或低压检测复位,来源:VDD引脚电压低于检测电平 1 0 看门狗复位,来源:bWDOG_EN=1并且看门狗超时溢出 1 1 外部引脚手工复位,来源:En_P5.7_RESET=1并且P5.7输入高电平

CH549手册 20 7.3 复位控制 CH549 有5 个复位源:上电复位和电源低压检测复位、外部复位、软件复位、看门狗复位,后 三者属于热复位。 7.3.1 上电复位和电源低压检测复位 上电复位POR由片内上电检测电路产生,并经由硬件自动延时Tpor以保持复位状态,延时结束 后CH549运行。 电源低压检测复位LVR由片内电压检测电路产生。LVR电路持续监控VDD引脚的电源电压,低 于检测电平Vpot时产生低压复位,并由硬件自动延时Tpor以保持复位状态,延时结束后CH549运 只有上电复位和电源低压检测复位才使CH549重新加载配置信息以及清零RESET_KEEP,其它热 复位不影响。 7.3.2 外部复位 外部复位由外加于RST 引脚的高电平产生。当配置信息En_P5.7_RESET为1,并且RST 引脚上 的高电平持续时间大于Trst时触发复位过程。当外加高电平信号撤消后,硬件自动延时Trdl以保 持复位状态,延时结束后CH549从0地址开始执行。 7.3.3 软件复位 CH549 支持内部软件复位,以便不需要外部干预即可主动复位CPU 状态并重新运行。设置全局 配置寄存器GLOBAL_CFG中的bSW_RESET为1,即可软件复位,并且自动延时Trdl以保持复位状态, 延时结束后CH549从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/131072,当计满0FFh转向00h时产生溢出信号。 看门狗定时器溢出信号将触发中断标志bWDOG_IF_TO为1,该中断标志在重新加载WDOG_COUNT 时或者进入相应的中断服务程序时被自动清零。 通过向WDOG_COUNT写入不同的计数初始值,从而实现不同的定时周期Twdc。在12MHz主频下, 写入00h时的看门狗定时周期Twdc约为2.8秒,写入80h时约为1.4秒。 如果看门狗定时器溢出时bWDOG_EN=1,那么产生看门狗复位,并且自动延时Trdl 以保持复位 状态,延时结束后CH549从0地址开始执行。 当bWDOG_EN=1时为了避免被看门狗复位,必须及时重置WDOG_COUNT,避免其溢出。 8、系统时钟 8.1 时钟框图 图8.1.1 时钟系统及结构图

CH549手册 21 系统时钟分频选择 MASK_SYS_CK_SEL 4xPLL倍频器 Fosc x 4 = 96MHz USB时钟分频器 Fpll / 2 = 48MHz 外部晶振XO XI 内部时钟24MHz bOSC_EN_XT USB PWMX 分频器 PWM_CK_SE ADC 分频器 bADC_CLK0/1 UART1/2/3 SPI0 分频器 SPI0_CK_SE xRAM E8051_core T0/T1/T2/UART0/GPIO FlashROM/iRAM/SFR Watch-DOG分频器 除以131072 Fsys Fsys Fpll Fosc bOSC_EN_INT 内部时钟或者外部时钟经过二选一后作为原始时钟Fosc,再经过PLL 倍频后产生Fpll 高频时 钟,最后经过两组分频器分别得到系统时钟Fsys和USB模块的时钟Fusb4x。系统时钟Fsys直接提 供给CH549的各个模块。 8.2 寄存器描述 表8.2.1 时钟控制寄存器列表 名称 地址 描述 复位值 CLOCK_CFG B9h 系统时钟配置寄存器 83h 系统时钟配置寄存器(CLOCK_CFG),仅在安全模式下可写: 位 名称 访问 描述 复位值 7 bOSC_EN_INT RW 内部时钟振荡器使能,该位为1 使能内部时钟振荡器 并且选用内部时钟;该位为0 关闭内部时钟振荡器并 且选用外部晶体振荡器提供时钟

CH549手册 22 6 bOSC_EN_XT RW 外部晶体振荡器使能,该位为1则P4.6/XO引脚作为 XI/XO并启用振荡器,需在XI和XO之间外接石英晶 体或陶瓷振荡器;该位为0 关闭外部振荡器 5 bWDOG_IF_TO RO 看门狗定时器中断标志位,该位为1 表示有中断,由 定时器溢出信号触发;该位为0表示无中断。该位在 重新加载看门狗计数寄存器WDOG_COUNT 时或者进入 相应的中断服务程序后自动清零 [4:3] 保留 RO 保留 00b [2:0] MASK_SYS_CK_SEL RW 系统时钟频率选择,参考下表8.2.2 011b 表8.2.2 系统主频选择表 MASK_SYS_CK_SEL 系统主频Fsys 与晶体频率Fxt关系 当Fosc=24MHz时的Fsys 000b Fpll / 512 Fxt / 128 187.5KHz 001b Fpll / 128 Fxt / 32 750KHz 010b Fpll / 32 Fxt / 8 3MHz 011b Fpll / 8 Fxt / 2 12MHz 100b Fpll / 6 Fxt / 1.5 16MHz 101b Fpll / 4 Fxt / 1 24MHz 110b Fpll / 3 Fxt / 0.75 32MHz 111b Fpll / 2 Fxt / 0.5 48MHz 8.3 时钟配置 CH549 芯片上电后默认使用内部时钟,内部时钟频率是24MHz。可以通过CLOCK_CFG选择内部时 钟或者外部晶体振荡器时钟,如果关闭外部晶体振荡器,那么XI引脚可以作为P4.6普通I/O端口 使用。如果使用外部晶体振荡器提供时钟,那么应该在XI和XO引脚之间跨接晶体,以及分别为XI 和XO引脚对GND连接振荡电容;如果从外部直接输入时钟信号,那么应该从XI引脚输入,XO引脚 悬空。 原始时钟频率Fosc = bOSC_EN_INT ? 24MHz : Fxt PLL 频率Fpll = Fosc * 4 USB 时钟频率Fusb4x = Fpll / 2 系统主频Fsys参考表8.2.2由Fpll分频获得 复位后的默认状态下,Fosc=24MHz,Fpll=96MHz,Fusb4x=48MHz,Fsys=12MHz。 切换到外部晶体振荡器提供时钟的步骤如下: (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,其它位保持不变,切换到外部时钟; (6)、关闭安全模式,向SAFE_MOD写入任意数值提前终止安全模式。 修改系统主频的步骤如下: (1)、进入安全模式,步骤一SAFE_MOD = 55h;步骤二SAFE_MOD = AAh; (2)、向CLOCK_CFG写入新数值;

CH549手册 23 (3)、关闭安全模式,向SAFE_MOD写入任意数值提前终止安全模式。 备注: (1)、如果使用USB模块,那么Fusb4x必须是48MHz;并且在用全速USB时,系统主频Fsys不低于 6MHz;在用低速USB时,系统主频Fsys不低于1.5MHz。 (2)、优先使用较低的系统时钟频率Fsys,从而降低系统动态功耗,并使工作温度范围变宽。 9、中断 CH549芯片支持16组中断信号源,包括与标准MCS51兼容的6组中断:INT0、T0、INT1、T1、 UART0、T2,以及扩展的10组中断:SPI0、INT3、USB、ADC/UART2、UART1、PWMX/UART3、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_INT3 0x003B 7 外部中断3 INT_NO_USB 0x0043 8 USB 中断 INT_NO_ADC INT_NO_UART2 0x004B 9 ADC 中断(当bU2IE=0时); UART2中断(当bU2IE=1时) INT_NO_UART1 0x0053 10 UART1 中断 INT_NO_PWMX INT_NO_UART3 0x005B 11 PWMX中断(当bU3IE=0时); UART3中断(当bU3IE=1时) INT_NO_GPIO 0x0063 12 GPIO 中断 INT_NO_WDOG 0x006B 13 看门狗定时器中断 表9.1.2 中断相关寄存器列表 名称 地址 描述 复位值 IP_EX E9h 扩展中断优先级控制寄存器 00h IE_EX E8h 扩展中断使能寄存器 00h GPIO_IE CFh GPIO中断使能寄存器 00h IP B8h 中断优先级控制寄存器 00h INTX B3h 扩展外部中断控制寄存器 00h IE A8h 中断使能寄存器 00h 中断使能寄存器(IE): 位 名称 访问 描述 复位值

CH549手册 24

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

IE_UART3 RW 当bU3IE=0时是PWMX中断使能位,该位为1 允许PWMX中断;为 0屏蔽。 当bU3IE=1时异步串口3中断使能位,该位为1 允许UART3中断; 为0屏蔽

4 IE_UART1 RW 异步串口1中断使能位,该位为1 允许UART1中断;为0屏蔽 0

3 IE_ADC

IE_UART2 RW 当bU2IE=0时是ADC模数转换中断使能位,该位为1 允许ADC中 断;为0屏蔽。 当bU2IE=1时是异步串口2 中断使能位,该位为1允许UART2中 断;为0屏蔽

2 IE_USB RW USB 中断使能位,该位为1 允许USB中断;为0 屏蔽 0

1 IE_INT3 RW 外部中断3使能位,该位为1 允许INT3中断;为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

CH549手册 25 降沿有效);该位为0 禁止 4 bIE_P1_4_LO RW 该位为1使能P1.4中断(电平模式低电平有效,边沿模式下 降沿有效);该位为0 禁止 0 3 bIE_P0_3_LO RW 该位为1使能P0.3中断(电平模式低电平有效,边沿模式下 降沿有效);该位为0 禁止 0 2 bIE_P5_7_HI RW 该位为1使能P5.7中断(电平模式高电平有效,边沿模式上 升沿有效);该位为0 禁止 0 1 bIE_P4_6_LO RW 该位为1使能P4.6中断(电平模式低电平有效,边沿模式下 降沿有效);该位为0 禁止 0 0 bIE_RXD0_LO RW 该位为1 使能UART0 接收引脚中断(电平模式低电平有效, 边沿 模式 下降沿 有效) ;该位为 0 禁止 。根据 bUART0_PIN_X=0/1选择RXD0或RXD0_引脚 扩展外部中断控制寄存器(INTX): 位 名称 访问 描述 复位值 7 保留 RO 保留 0 6 保留 RO 保留 0 5 bIX3 RW INT3外部中断3 的输入信号极性,该位为0 选择默认极性(低电 平或下降沿触发);该位为1 选择反极性(高电平或上升沿触发) 0 4 保留 RO 保留 0 3 bIE3 RW INT3 外部中断3 的中断请求标志位,进入中断后自动清零 0 2 bIT3 RW INT3外部中断3 的触发方式控制位,该位为0选择外部中断为低 或高电平触发;该位为1选择外部中断为下降或上升边沿触发 0 1 保留 RO 保留 0 0 保留 RO 保留 0 中断优先级控制寄存器(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 bIP_UART3 RW 当bU3IE=0时是PWMX中断优先级控制位。 当bU3IE=1时是UART3中断优先级控制位 0

CH549手册 26 4 bIP_UART1 RW UART1中断优先级控制位 0 3 bIP_ADC bIP_UART2 RW 当bU2IE=0时是ADC中断优先级控制位。 当bU2IE=1时是UART2中断优先级控制位 0 2 bIP_USB RW USB中断优先级控制位 0 1 bIP_INT3 RW 外部中断3的中断优先级控制位 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 意外状态,未知错误 10、I/O端口

10.1 GPIO 简介

CH549 提供最多44 个I/O 引脚,部分引脚具有复用功能。其中,端口P0~P4 的输入和输出都 可以按位寻址。 如果引脚没有被配置成复用功能,则默认是通用I/O引脚状态。作为通用数字I/O使用时,所 有I/O端口都具有真正的“读–修改–写”功能,支持SETB或者CLR等位操作指令独立地改变某些 引脚的方向或者端口电平等。

10.2 GPIO 寄存器

本节所有的寄存器和位以通用格式表示:小写的“n”表示端口的序号(n=0、1、2、3、4),而 表10.2.1 GPIO寄存器列表 名称 地址 描述 复位值 P0 80h P0端口输入输出寄存器 FFh P0_DIR_PU C5h P0端口方向控制和上拉使能寄存器 FFh P0_MOD_OC C4h P0端口输出模式寄存器 FFh P1 90h P1端口输入输出寄存器 FFh P1_DIR_PU 93h P1端口方向控制和上拉使能寄存器 FFh P1_MOD_OC 92h P1端口输出模式寄存器 FFh P2 A0h P2端口输入输出寄存器 FFh P2_DIR_PU 95h P2端口方向控制和上拉使能寄存器 FFh P2_MOD_OC 94h P2端口输出模式寄存器 FFh P3 B0h P3端口输入输出寄存器 FFh P3_DIR_PU 97h P3端口方向控制和上拉使能寄存器 FFh P3_MOD_OC 96h P3端口输出模式寄存器 FFh

CH549手册 27 P4 C0h P4端口输入输出寄存器 FFh P4_DIR_PU C3h P4端口方向控制和上拉使能寄存器 FFh P4_MOD_OC C2h P4端口输出模式寄存器 FFh P5 ABh P5端口输入输出寄存器 20h PIN_FUNC AAh 引脚功能选择寄存器 00h XBUS_AUX A2h 总线辅助设置寄存器 00h Pn 端口输入输出寄存器(Pn): 位 名称 访问 描述 复位值 [7:0] Pn.0~Pn.7 RW Pn.x引脚状态输入和数据输出位,可以按位寻址。 注,P4.7为内部位,写操作必须置1,读操作无意义 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 推挽输出模式,具有对称驱动能力,可以输出或者吸收较大电流 1 0 开漏输出,支持高阻输入,引脚没有上拉电阻 1 1 准双向模式(标准 8051),开漏输出,支持输入,引脚有上拉电阻,当 输出从低电平转高电平时自动驱动2个时钟周期的高电平以加速转换 P1~P4端口支持纯输入或推挽输出以及准双向等模式。各引脚都有可以自由控制的内部上拉电 阻,以及都有连接到VDD和GND的保护二极管。 图10.2.1 是P0 端口的P0.x 引脚和P1 端口的P1.x 引脚的等效原理图,去掉AIN 和ADC_PIN 以及ADC_CHAN之后可以适用于P2、P3、P4端口。 图10.2.1 I/O引脚等效原理图

CH549手册 28 GND Pn_DIR_PU[x] Pn[x] Delay 2 Clock Pn[x] OUT bPn_MOD_OC[x] 10K 70K VCC VCC AIN[x] ADC_CHAN[x]VCC Pn[x] IN VCC bPn_MOD_OC[x] ADC_PIN[x/2] P5 端口输入输出寄存器(P5): 位 名称 访问 描述 复位值 7 P5.7 R0 P5.7 引脚状态输入位 0 6 保留 RO 保留 0 5 P5.5 RW P5.5引脚数据输出位(开漏输出,支持高电压): 该位为0 则输出低电平; 为1则不输出(高阻,支持外部上拉电阻) 4 P5.4 RW P5.4引脚数据输出位: 该位为0 则输出低电平;为1 则输出高电平 0 3 保留 RO 保留 0 2 保留 RO 保留 0 1 P5.1 R0 P5.1 引脚状态输入位,内置有可控的下拉电阻 0 0 P5.0 R0 P5.0 引脚状态输入位,内置有可控的下拉电阻 0

10.3 GPIO 复用与映射

CH549 部分I/O 引脚具有复用功能,上电后默认均为通用I/O 引脚,使能不同功能模块后,相 应引脚被配置成各自功能模块对应的功能引脚。 引脚功能选择寄存器(PIN_FUNC): 位 名称 访问 描述 复位值 7 bPWM0_PIN_X RW PWM0引脚映射使能位,该位为0则PWM0使用P2.5;该位为 1则PWM0使用P1.5 0 6 bIO_INT_ACT R0 GPIO中断请求激活状态: 当bIE_IO_EDGE=0 时,该位为1 表示GPIO 输入有效电平, 将请求中断,为0 表示输入无效电平; 当bIE_IO_EDGE=1时,该位作为边沿中断标志,为1 表示检 测到有效边沿,该位无法软件清零,只能在复位时或电平中 断模式下或进入相应的中断服务程序时被自动清零

CH549手册 29 5 bUART1_PIN_X RW UART1 引脚映射使能位,该位为 0 则 RXD1/TXD1 使用 P2.6/P2.7;该位为1 则RXD1/TXD1使用P1.6/P1.7 0 4 bUART0_PIN_X RW UART0 引脚映射使能位,该位为 0 则 RXD0/TXD0 使用 P3.0/P3.1;该位为1 则RXD0/TXD0使用P0.2/P0.3 0 3 保留 RO 保留 0 2 bINT0_PIN_X RW INT0引脚映射使能位,该位为0则INT0使用P3.2;该位为 1则INT0使用P2.2 0 1 bT2EX_PIN_X RW T2EX/CAP2 引脚映射使能位,该位为0 则T2EX/CAP2 使用 P1.1;该位为1则T2EX/CAP2使用P2.5 0 0 bT2_PIN_X RW T2/CAP1引脚映射使能位,该位为0则T2/CAP1使用P1.0; 该位为1则T2/CAP1使用P2.4 0 表10.3.1 GPIO引脚复用功能列表 GPIO 其它功能:按从左到右的优先顺序 P0[0] AIN8、P0.0 P0[1] AIN9、P0.1 P0[2] RXD_/bRXD_、AIN10、P0.2 P0[3] TXD_/bTXD_、AIN11、P0.3 P0[4] RXD2/bRXD2、AIN12、P0.4 P0[5] TXD2/bTXD2、AIN13、P0.5 P0[6] RXD3/bRXD3、AIN14、P0.6 P0[7] TXD3/bTXD3、AIN15、P0.7 P1[0] T2/bT2、CAP1/bCAP1、AIN0、P1.0 P1[1] T2EX/bT2EX、CAP2/bCAP2、AIN1、P1.1 P1[2] AIN2、P1.2 P1[3] AIN3、P1.3 P1[4] SCS/bSCS、UCC1/bUCC1、AIN4、P1.4 P1[5] MOSI/bMOSI、PWM0_/bPWM0_、UCC2/bUCC2、AIN5、P1.5 P1[6] MISO/bMISO、RXD1_/bRXD1_、VBUS/bVBUS、AIN6、P1.6 P1[7] SCK/bSCK、TXD1_/bTXD1_、AIN7、P1.7 P2[0] PWM5/bPWM5、P2.0 P2[1] PWM4/bPWM4、P2.1 P2[2] PWM3/bPWM3、INT0_/bINT0、P2.2 P2[3] PWM2/bPWM2、P2.3 P2[4] PWM1/bPWM1、T2_/bT2_、CAP1_/bCAP1_、P2.4 P2[5] PWM0/bPWM0、T2EX_/bT2EX_、CAP2_/bCAP2_、P2.5 P2[6] PWM6/bPWM6、RXD1/bRXD1、P2.6 P2[7] PWM7/bPWM7、TXD1/bTXD1、P2.7 P3[0] RXD/bRXD、P3.0 P3[1] TXD/bTXD、P3.1 P3[2] INT0/bINT0、P3.2 P3[3] INT1/bINT1、P3.3 P3[4] T0/bT0、P3.4

CH549手册 30 P3[5] T1/bT1、P3.5 P3[6] CAP0/bCAP0、P3.6 P3[7] INT3/bINT3、P3.7 P4[0] P4.0 P4[1] P4.1 P4[2] P4.2 P4[3] P4.3 P4[4] P4.4 P4[5] P4.5 P4[6] XI、P4.6 P5[0] UDM/bUDM、P5.0 P5[1] UDP/bUDP、P5.1 P5[4] bALE/bCKO、P5.4 P5[5] bHVOD、P5.5 P5[7] RST/bRST、P5.7 上表中所述按从左到右的优先顺序,是指多个功能模块竞争使用该GPIO时的优先顺序。例如, P2.6/P2.7端口被设置用于UART1,如果只需要RXD1,那么P2.7仍可用于更高优先级的PWM7功能。 11、外部总线xBUS CH549不向芯片外部提供总线信号,不支持外部总线,但是可以正常访问片内xRAM。 外部总线辅助设置寄存器(XBUS_AUX): 位 名称 访问 描述 复位值 7 bUART0_TX R0 指示UART0的发送状态,为1 表示正在发送过程中 0 6 bUART0_RX R0 指示UART0的接收状态,为1 表示正在接收过程中 0 5 bSAFE_MOD_ACT R0 指示安全模式状态,为1表示当前正在安全模式下 0 4 bALE_CLK_EN RW ALE 引脚时钟输出使能,该位为1 允许P5.4 输出系统主 频的分频时钟;该位为0禁止输出时钟信号 0 3 bALE_CLK_SEL RW 当bALE_CLK_EN=1时为ALE引脚时钟频率选择: 该位为0 选择12分频;为1 选择4分频 0

3 GF2 RW 当bALE_CLK_EN=0时为通用标志位2:

使用者可自己定义,可软件清零或置位 0 2 bDPTR_AUTO_INC RW 使能在MOVX_@DPTR指令完成后DPTR自动加1 0 1 保留 RO 保留 0

0 DPS RW 双DPTR数据指针选择位:

该位为0 选择DPTR0;该位为1选择DPTR1 0 表11.1 P5.4引脚复用ALE/CKO输出状态表 P5[4] bALE_CLK_EN bALE_CLK_SEL P5.4引脚功能描述 0 0 0 输出低电平(默认) 0 1 0 输出系统主频的12分频时钟信号,即Fsys/12 0 1 1 输出系统主频的4 分频时钟信号,即Fsys/4

1 X X 输出高电平

CH549手册 31 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 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

CH549手册 32 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 的波特率发生器,还具有3 路信号电平捕 捉功能,捕捉计数存储于RCAP2和T2CAP1及T2CAP0寄存器中。 表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 T2CAP0H C7h Timer2 捕捉0数据高字节(只读) xxh T2CAP0L C6h Timer2 捕捉0数据低字节(只读) xxh T2CAP0 C6h T2CAP0L 和T2CAP0H组成16位SFR xxxxh RCAP2H CBh 计数重载/捕捉2 数据寄存器高字节 00h RCAP2L CAh 计数重载/捕捉2 数据寄存器低字节 00h RCAP2 CAh RCAP2L 和RCAP2H组成16位SFR 0000h T2MOD C9h Timer2 方式寄存器 00h

CH549手册 33 T2CON C8h Timer2 控制寄存器 00h T2CON2 C1h 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 3 bT2_CAP_M1 RW Timer2 捕捉模式高位 捕捉模式选择: X0:从下降沿到下降沿 01:从任意沿到任意沿,即电平变化 11:从上升沿到上升沿 2 bT2_CAP_M0 RW Timer2 捕捉模式低位 0

CH549手册 34

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扩展控制寄存器(T2CON2): 位 名称 访问 描述 复位值 [7:4] 保留 RO 保留 0000b 3 bT2_CAP0F RW 当bT2_CAP0_EN=1时,是Timer2捕捉0中断标志,由CAP0 有效边沿触发,需要软件清零 0 2 保留 RO 保留 0 1 保留 RO 保留 0 0 bT2_CAP0_EN RW 当RCLK=0、TCLK=0、CP_RL2=1时的捕捉0 模式使能,该 位为1 启用捕捉0 功能捕捉CAP0 有效边沿;该位为0 禁 用捕捉0 计数重载/捕捉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 Timer2捕捉0数据(T2CAP0): 位 名称 访问 描述 复位值 [7:0] T2CAP0H RO CAP0捕捉到的定时器的高字节 xxh [7:0] T2CAP0L RO CAP0捕捉到的定时器的低字节 xxh

12.3 PWM 相关寄存器

本节PWM_DATA寄存器以通用格式表示:小写的“n”表示端口的序号(n=0~7)。 表12.3.1 PWMX相关寄存器列表 名称 地址 描述 复位值

CH549手册 35 PWM_CK_SE 9Eh PWM 时钟分频设置寄存器 00h PWM_CTRL 9Dh PWM 控制寄存器 02h PWM_CTRL2 9Fh PWM 扩展控制寄存器 00h PWM_DATA0 9Ch PWM0 数据寄存器 xxh PWM_DATA1 9Bh PWM1 数据寄存器 xxh PWM_DATA2 9Ah PWM2 数据寄存器 xxh PWM_DATA3 A3h PWM3 数据寄存器 xxh PWM_DATA4 A4h PWM4 数据寄存器 xxh PWM_DATA5 A5h PWM5 数据寄存器 xxh PWM_DATA6 A6h PWM6 数据寄存器 xxh PWM_DATA7 A7h PWM7 数据寄存器 xxh PWMn数据寄存器(PWM_DATAn): 位 名称 访问 描述 复位值 [7:0] PWM_DATAn RW 存储PWMn当前数据, PWMn输出有效电平的占空比=PWM_DATAn/PWM_CYCLE xxh PWM 控制寄存器(PWM_CTRL): 位 名称 访问 描述 复位值 7 保留 RO 保留 0 6 bPWM1_POLAR RW 控制PWM1 输出极性,该位为0 则默认低电平,高电平有 效;该位为1 则默认高电平,低电平有效 0 5 bPWM0_POLAR RW 控制PWM0 输出极性,该位为0 则默认低电平,高电平有 效;该位为1 则默认高电平,低电平有效 4 bPWM_IF_END RW PWM循环周期结束中断标志位,该位为1 表示有中断,写 1清零或重新加载PWM_DATA0数据时清零 0 3 bPWM1_OUT_EN RW PWM1 输出使能,该位为1使能PWM1输出 0 2 bPWM0_OUT_EN RW PWM0 输出使能,该位为1使能PWM0输出 0 1 bPWM_CLR_ALL RW 该位为1 清空PWM计数和FIFO,需要软件清零 1 0 bPWM_MOD_6BIT RW PWM数据宽度模式: 该位为0 选择8位数据,PWM周期为256; 该位为1 选择6位数据,PWM周期为64 PWM 扩展控制寄存器(PWM_CTRL2): 位 名称 访问 描述 复位值 7 保留 RO 保留 0 6 保留 RO 保留 0 5 bPWM7_OUT_EN RW PWM7输出使能,该位为1使能PWM7输出 0 4 bPWM6_OUT_EN RW PWM6输出使能,该位为1使能PWM6输出 0 3 bPWM5_OUT_EN RW PWM5 输出使能,该位为1使能PWM5输出 0 2 bPWM4_OUT_EN RW PWM4 输出使能,该位为1使能PWM4输出 0 1 bPWM3_OUT_EN RW PWM3 输出使能,该位为1使能PWM3输出 0 0 bPWM2_OUT_EN RW PWM2 输出使能,该位为1使能PWM2输出 0

CH549手册 36 PWM 时钟分频设置寄存器(PWM_CK_SE): 位 名称 访问 描述 复位值 [7:0] PWM_CK_SE RW 设置PWM时钟分频除数 00h

12.4 PWM 功能

CH549提供了8路PWM,可以动态修改PWM的输出占空比,通过简单RC电阻电容进行积分低通 滤波后,即可获得各种输出电压,相当于低速数模转换器DAC。其中,PWM0和PWM1还可以选择反极 性输出以及默认的输出极性为低电平或者高电平。 PWM_CYCLE = bPWM_MOD_6BIT ? 64 : 256 PWMn输出占空比= PWM_DATAn / PWM_CYCLE 在8 位数据模式下支持范围0%到99.6%占空比,在6 位数据模式下支持范围0%到100%占空 比(如果PWM_DATAn数值大于PWM_CYCLE则按100%处理)。 实际应用中,建议允许PWM引脚输出并且设置PWM输出引脚为推挽输出模式。

12.5 Timer 功能

12.5.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位定时/计数器 图12.5.1.1 Timer0/1模式0 模式1:16位定时/计数器 图12.5.1.2 Timer0/1模式1

CH549手册 37 模式2:自动重载8位定时/计数器 图12.5.1.3 Timer0/1模式2 模式3:Timer0分解为两个独立的8位定时/计数器,并借用Timer1的TR1控制位;Timer1通 过是否启动模式3代替被借用的TR1控制位,Timer1进入模式3 则Timer1停止运行。 图12.5.1.4 Timer0模式3 (3)、设置定时/计数器初值TLn和THn(n=0/1)。 (4)、设置TCON中的位TRn(n=0/1)开启或者停止定时/计数器,可以通过位TFn(n=0/1)查询或者通 过中断方式进行检测。

12.5.2 Timer2

Timer2 16位重载定时/计数器模式: (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中断可以获取当前定时/计数器状态。

CH549手册 38 图12.5.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.5.2.2 Timer2 UART0波特率发生器 Timer2信号通道捕捉模式: (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)、设置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 之间的差值,

CH549手册 39 就是两次有效边沿之间的信号宽度。 (8)、如果T2CON 中的位C_T2 为0,并且T2MOD 中的位bT2_CAP1_EN为1,那么将同时使能Timer2 对T2引脚的捕捉功能,当CAP1捕捉完成,T2CAP1L和T2CAP1H会保存当时TL2和TH2的计数 值,并使CAP1F置位,产生中断。 (9)、如果T2CON2 中的位bT2_CAP0_EN 为1,那么将同时使能Timer2 对CAP0引脚的捕捉功能,当 CAP0捕捉完成,T2CAP0L和T2CAP0H会保存当时TL2和TH2的计数值,并使bT2_CAP0F置位, 产生中断。 图12.5.2.3 Timer2捕捉模式 13、通用异步收发器UART

13.1 UART 简介

CH549芯片提供4个全双工的异步串口:UART0~UART3。CH548仅提供UART0和UART1。 UART0 是标准MCS51 串口,其数据接收和发送是通过SBUF 访问物理上分开的收/发寄存器实现 的。写入SBUF的数据装入发送寄存器,对SBUF的读操作则对应于接收缓冲寄存器。 UART1是简化MCS51串口,其数据接收和发送是通过SBUF1访问物理上分开的收/发寄存器实现 的。写入SBUF1 的数据装入发送寄存器,对SBUF1 的读操作则对应于接收缓冲寄存器。UART1 相比 UART0去掉了多机通讯模式和固定波特率,UART1具有独立的波特率发生器。 UART2是在UART1的基础上,增加了一个中断使能位,用于替换ADC中断。 UART3同UART2,也是在UART1的基础上,增加了一个中断使能位,用于替换PWMX中断。

13.2 UART 寄存器

表13.2.1 UART相关寄存器列表 名称 地址 描述 复位值 SBUF 99h UART0 数据寄存器 xxh

CH549手册 40 SCON 98h UART0 控制寄存器 00h SCON1 BCh UART1 控制寄存器 40h SBUF1 BDh UART1 数据寄存器 xxh SBAUD1 BEh UART1 波特率设置寄存器 xxh SIF1 BFh UART1 中断状态寄存器 00h SCON2 B4h UART2 控制寄存器 00h SBUF2 B5h UART2 数据寄存器 xxh SBAUD2 B6h UART2 波特率设置寄存器 xxh SIF2 B7h UART2 中断状态寄存器 00h SCON3 ACh UART3 控制寄存器 00h SBUF3 ADh UART3 数据寄存器 xxh SBAUD3 AEh UART3 波特率设置寄存器 xxh SIF3 AFh UART3 中断状态寄存器 00h

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)

CH549手册 41 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 / 波特率 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 bU1SM0 RW UART1工作方式选择位,该位为0 选择8位数据异步通信;该位为 1选择9位数据异步通信 0 6 保留 RO 保留 1 5 bU1SMOD RW 选择UART1的通讯波特率:0-慢速模式;1-快速模式 0 4 bU1REN RW UART1 允许接收控制位,该位为0 禁止接收;该位为1 允许接收 0 3 bU1TB8 RW 发送数据的第9位,在9位数据模式时,TB8用于写入发送数据的 第9位,可以是奇偶校验位;在8 位数据模式时,TB8忽略 0 2 bU1RB8 RW 接收数据的第9位,在9位数据模式时,RB8用于存放接收数据的 第9位;在8位数据模式时,RB8用于存放接收到的停止位 0 1 bU1TIS WO 写1将预置发送中断标志位为1,读操作总是返回0 0 0 bU1RIS WO 写1将预置接收中断标志位为1,读操作总是返回0 0 UART1波特率由SBAUD1设置产生,根据bU1SMOD的选择分为两种情况: 当bU1SMOD=0时,SBAUD1 = 256 - Fsys / 32 / 波特率;

CH549手册 42 当bU1SMOD=1时,SBAUD1 = 256 - Fsys / 16 / 波特率。 UART1中断状态寄存器(SIF1): 位 名称 访问 描述 复位值 [7:2] 保留 RO 保留 000000b 1 bU1TI RW 发送中断标志位,一个数据字节发送完后由硬件置位,需 要软件写1清零(写0 到该位将被忽略) 0 0 bU1RI RW 接收中断标志位,一个数据字节接收有效后由硬件置位, 需要软件写1 清零(写0到该位将被忽略) 0 注:向中断标志位写1才能清零可以确保只有指定标志位被清零,而不会影响同一寄存器下的其它 中断标志(其它中断标志在该写操作之前有可能已是1,或在该写操作期间有可能变成1)。下同。 UART1数据寄存器(SBUF1): 位 名称 访问 描述 复位值 [7:0] SBUF1 RW UART1数据寄存器,包括发送和接收两个物理上分开的寄存 器。向SBUF1 写数据对应发送数据寄存器;从SBUF1 读数 据对应接收数据寄存器 xxh

13.2.3 UART2寄存器描述

UART2控制寄存器(SCON2): 位 名称 访问 描述 复位值 7 bU2SM0 RW UART2工作方式选择位,该位为0 选择8位数据异步通信;该位为 1选择9位数据异步通信 0 6 bU2IE RW UART2中断使能位,该位为0 禁止请求中断,中断标志可供查询; 该位为1则允许产生中断,并且原ADC中断被禁用,实现替换 0 5 bU2SMOD RW 选择UART2的通讯波特率:0-慢速模式;1-快速模式 0 4 bU2REN RW UART2 允许接收控制位,该位为0 禁止接收;该位为1 允许接收 0 3 bU2TB8 RW 发送数据的第9位,在9位数据模式时,TB8用于写入发送数据的 第9位,可以是奇偶校验位;在8 位数据模式时,TB8忽略 0 2 bU2RB8 RW 接收数据的第9位,在9位数据模式时,RB8用于存放接收数据的 第9位;在8位数据模式时,RB8用于存放接收到的停止位 0 1 bU2TIS WO 写1将预置发送中断标志位为1,读操作总是返回0 0 0 bU2RIS WO 写1将预置接收中断标志位为1,读操作总是返回0 0 UART2波特率由SBAUD2设置产生,根据bU2SMOD的选择分为两种情况: 当bU2SMOD=0时,SBAUD2 = 256 - Fsys / 32 / 波特率; 当bU2SMOD=1时,SBAUD2 = 256 - Fsys / 16 / 波特率。 UART2中断状态寄存器(SIF2): 位 名称 访问 描述 复位值 [7:2] 保留 RO 保留 000000b 1 bU2TI RW 发送中断标志位,一个数据字节发送完后由硬件置位,需 要软件写1清零(写0 到该位将被忽略) 0 0 bU2RI RW 接收中断标志位,一个数据字节接收有效后由硬件置位, 0

CH549手册 43 需要软件写1 清零(写0到该位将被忽略) UART2数据寄存器(SBUF2): 位 名称 访问 描述 复位值 [7:0] SBUF2 RW UART2数据寄存器,包括发送和接收两个物理上分开的寄存 器。向SBUF2 写数据对应发送数据寄存器;从SBUF2 读数 据对应接收数据寄存器 xxh

13.2.4 UART3寄存器描述

UART3控制寄存器(SCON3): 位 名称 访问 描述 复位值 7 bU3SM0 RW UART3工作方式选择位,该位为0 选择8位数据异步通信;该位为 1选择9位数据异步通信 0 6 bU3IE RW UART3中断使能位,该位为0 禁止请求中断,中断标志可供查询; 该位为1则允许产生中断,并且原PWMX中断被禁用,实现替换 0 5 bU3SMOD RW 选择UART3的通讯波特率:0-慢速模式;1-快速模式 0 4 bU3REN RW UART3 允许接收控制位,该位为0 禁止接收;该位为1 允许接收 0 3 bU3TB8 RW 发送数据的第9位,在9位数据模式时,TB8用于写入发送数据的 第9位,可以是奇偶校验位;在8 位数据模式时,TB8忽略 0 2 bU3RB8 RW 接收数据的第9位,在9位数据模式时,RB8用于存放接收数据的 第9位;在8位数据模式时,RB8用于存放接收到的停止位 0 1 bU3TIS WO 写1将预置发送中断标志位为1,读操作总是返回0 0 0 bU3RIS WO 写1将预置接收中断标志位为1,读操作总是返回0 0 UART3波特率由SBAUD3设置产生,根据bU3SMOD的选择分为两种情况: 当bU3SMOD=0时,SBAUD3 = 256 - Fsys / 32 / 波特率; 当bU3SMOD=1时,SBAUD3 = 256 - Fsys / 16 / 波特率。 UART3中断状态寄存器(SIF3): 位 名称 访问 描述 复位值 [7:2] 保留 RO 保留 000000b 1 bU3TI RW 发送中断标志位,一个数据字节发送完后由硬件置位,需 要软件写1清零(写0 到该位将被忽略) 0 0 bU3RI RW 接收中断标志位,一个数据字节接收有效后由硬件置位, 需要软件写1 清零(写0到该位将被忽略) 0 UART3数据寄存器(SBUF3): 位 名称 访问 描述 复位值 [7:0] SBUF3 RW UART3数据寄存器,包括发送和接收两个物理上分开的寄存 器。向SBUF3 写数据对应发送数据寄存器;从SBUF3 读数 据对应接收数据寄存器 xxh

13.3 UART 应用

UART0应用:

CH549手册 44 (1)、选择UART0的波特率发生器,可以选择来自定时器T1或者T2,并配置相应计数器。 (2)、开启定时器T1或者T2。 (3)、设置SCON的SM0、SM1、SM2选择串口0的工作模式。设置REN为1,使能UART0接收。 (4)、可以设置串口中断或者查询RI和TI的中断状态。 (5)、读写SBUF实现串口数据收发,串口接收信号的允许波特率误差不大于 2%。 UART1应用: (1)、根据波特率选择bU1SMOD并设置SBAUD1。 (2)、设置SCON1的bU1SM0选择串口1的工作模式。设置bU1REN为1,使能UART1接收。 (3)、可以设置串口1中断或者查询bU1RI和bU1TI的中断状态(向指定位写1 才能清零)。 (4)、读写SBUF1实现串口1数据收发,串口接收信号的允许波特率误差不大于 2%。 UART2应用(或UART3应用): (1)、根据波特率选择bU2SMOD并设置SBAUD2。 (2)、设置SCON2的bU2SM0选择串口2的工作模式。设置bU2REN为1,使能UART2接收。 (3)、可以查询bU2RI和bU2TI的中断状态(向指定位写1才能清零),或者启用串口2 中断并设置 bU2IE为1替换ADC(对于UART3是PWMX)中断。 (4)、读写SBUF2实现串口2数据收发,串口接收信号的允许波特率误差不大于 2%。 14、同步串行接口SPI

14.1 SPI 简介

CH549芯片提供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

CH549手册 45 6 bS0_IE_FIFO_OV RW 从机模式下FIFO 溢出中断使能位,该位为1 使能FIFO 溢出中断;该位为0则FIFO溢出不产生中断 0 5 bS0_IE_FIRST RW 从机模式下接收首字节完成中断使能位,该位为1则从机 模式下接收到第一个数据字节时触发中断;该位为0则接 收到第一字节时不产生中断 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 有效读写操作时自动清零 0

CH549手册 46 字节接收完成中断标志S0_IF_BYTE SPI0数据收发寄存器(SPI0_DATA): 位 名称 访问 描述 复位值 [7:0] SPI0_DATA RW 包括发送和接收两个物理上分开的FIFO,读操作对应接 收数据FIFO;写操作对应发送数据FIFO,有效读写操作 可以启动一次SPI传输 xxh 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选择,CH549总是在CLK上升沿采样MISO数据。数据传输格式如下图所示。 模式0:bSn_MST_CLK = 0 图14.3.1 SPI模式0 时序图 模式3:bSn_MST_CLK = 1

CH549手册 47 图14.3.2 SPI模式3 时序图

14.4 SPI 配置

14.4.1 SPI主机模式配置

SPI 主机模式下,SCK引脚输出串行时钟,片选输出引脚可以指定为任意I/O引脚。 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个串行时钟之后,即首个数据字节传输交换完毕,CH549得到外部SPI 主机发来的首字节数据(可能是命令码),外部SPI主机交换得到SPI0_S_PRE中的预置数据(可 能是状态值)。寄存器SPI0_S_PRE 的位7 将在SPI 片选有效后的SCK 低电平期间自动加载到 MISO 引脚上,对于SPI模式0,如果CH549预置了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 和触摸按键TKEY

CH549手册 48

15.1 ADC 和CMP 简介

CH549芯片提供12位的模拟数字转换器,包括模数转换器ADC和电压比较器CMP 模块。 该ADC具有16个外部模拟信号输入通道和4 个内部输入通道(参考电压),可以分时采集,支 持0到VDD模拟输入电压范围。 该CMP的正相输入端复用了上述ADC输入,反相输入端具有2个外部模拟信号输入通道和2个 内部参考电压输入通道,可以分时比较,交叉组合超68种,支持0 到VDD模拟输入电压范围。

15.2 ADC 和CMP 寄存器

表15.2.1 ADC相关寄存器列表 名称 地址 描述 复位值 ADC_CTRL F2h ADC 控制和状态寄存器 xxh ADC_CFG F3H ADC 配置寄存器 00h ADC_DAT_H F5h ADC 结果数据的高字节(只读) 0xh ADC_DAT_L F4h ADC 结果数据的低字节(只读) xxh ADC_DAT F4h ADC_DAT_L 和ADC_DAT_H组成16位SFR 0xxxh ADC_CHAN F6h ADC 模拟信号通道选择寄存器 00h ADC_PIN F7h ADC 引脚数字输入控制寄存器 00h ADC 控制和状态寄存器(ADC_CTRL): 位 名称 访问 描述 复位值 7 bCMPDO RO 电压比较器结果同步延时后的输出位,该位是 bCMPO经过与bCMP_IF同步延时后的状态 x 6 bCMP_IF RW 电压比较器结果变化中断标志,该位为1表示电压 比较器的结果发生了变化,写1清零 0 5 bADC_IF RW ADC 转换完成中断标志,该位为1 表示一次ADC 转 换完成,写1 清零或写TKEY_CTRL数据时清零 0 4 bADC_START RW ADC 启动控制位,置1 启动一次ADC 转换,该位在 ADC转换完成后自动清零 0 3 bTKEY_ACT RO 指示触摸按键检测运行状态,为1 表示正在给电容 充电和ADC测量过程中 0 [2:1] 保留 R0 保留 00b 0 bCMPO RO 电压比较器结果实时输出位,该位为0 说明正相输 入端的电压低于反相输入端的电压;该位为1说明 正相输入端的电压高于反相输入端的电压 x ADC 配置寄存器(ADC_CFG): 位 名称 访问 描述 复位值 [7:6] 保留 R0 保留 00b 5 bADC_AIN_EN RW CMP 正相输入端和ADC 输入通道外部AIN 使能位, 该位为1 时由MASK_ADC_CHAN从16 个AIN 中选择 一个;该位为0时禁用外部AIN 4 bVDD_REF_EN RW 内部参考电压使能位,该位为1时由多个串联电阻 对电源分压产生内部参考电压;该位为0时禁用分 压电阻

CH549手册 49 3 bADC_EN RW ADC 模块的电源控制位,该位为0 表示关闭ADC 模 块的电源,进入睡眠状态;该位为1表示开启 0 2 bCMP_EN RW 电压比较器的电源控制位,该位为0表示关闭电压 比较器的电源,进入睡眠状态;该位为1 表示开启, 同时自动启用电压比较器的唤醒功能,睡眠期间如 果比较器结果反生变化则自动唤醒 1 bADC_CLK1 RW ADC 参考时钟频率选择高位 0 0 bADC_CLK0 RW ADC 参考时钟频率选择低位 0 表15.2.2 ADC参考时钟频率选择表 bADC_CLK1 bADC_CLK0 ADC参考时钟频率 完成一次ADC所需时间 适用范围 0 0 750KHz 512 个Fosc周期 Rs<=16KΩ或Cs>=0.08uF 0 1 1.5MHz 256 个Fosc周期 Rs<=8KΩ或Cs>=0.08uF 1 0 3MHz 128 个Fosc周期 VDD>=3V并且 (Rs<=4KΩ或Cs>=0.08uF) 1 1 6MHz 64个Fosc周期 VDD>=4.5V并且 (Rs<=2KΩ或Cs>=0.08uF) 注:VDD指电源电压,Cs指信号源并联电容值,Rs指信号源串联内阻值(采样时间仅3 个参考时钟) ADC 模拟信号通道选择寄存器(ADC_CHAN): 位 名称 访问 描述 复位值 [7:6] MASK_CMP_CHAN RW 电压比较器CMP反相输入端信号通道选择 00b [5:4] MASK_ADC_I_CH RW CMP 正相输入端和ADC输入内部信号通道选择 00b [3:0] MASK_ADC_CHAN RW 当bADC_AIN_EN=1时是CMP正相输入端和ADC输入 外部信号通道选择;当bADC_AIN_EN=0时外部信号 通道关闭 0000b 表15.2.1 电压比较器CMP反相输入端信号通道选择表 bCMP_EN bVDD_REF_EN MASK_CMP_CHAN 选择CMP反相输入端信号通道 0 x xxb 断开信号通道,悬空 1 0 00b 断开信号通道,悬空 1 1 00b 连接到内部参考电压:12.5%的VDD电压 1 0 01b 连接到内部参考电压:100%的VDD电压 1 1 01b 连接到内部参考电压:25%的VDD电压 1 x 10b 连接到外部信号:AIN1(P1.1) 1 x 11b 连接到外部信号:AIN2(P1.2) 表15.2.2 电压比较器CMP正相输入端和ADC输入内部信号通道选择表 bADC_EN bADC_AIN_EN bVDD_REF_EN MASK_ADC_I_CH 选择CMP正相输入端和ADC输入内部信号通道 x x 0 00b 断开内部信号通道,悬空 x x 1 00b 连接到内部参考电压:50%的VDD电压 x x x 01b 连接到内部参考电压:V33电压 x x x 10b 连接到内部参考电压:54.5%的V33电压 1 0 x 11b 连接到内部信号:温度传感器TS,

CH549手册 50 具体操作请参考C 语言例子程序 0 x x 11b 断开内部信号通道,悬空 x 1 x 11b 断开内部信号通道,悬空 表15.2.3 电压比较器CMP正相输入端和ADC输入外部信号通道选择表 bADC_AIN_EN MASK_ADC_CHAN 选择CMP正相输入端和ADC输入外部信号通道 0 xxxxb 断开外部信号通道(AIN0~AIN15),悬空 1 0000b 连接到外部信号:AIN0(P1.0) 1 0001b 连接到外部信号:AIN1(P1.1) 1 0010b 连接到外部信号:AIN2(P1.2) 1 0011b 连接到外部信号:AIN3(P1.3) 1 0100b 连接到外部信号:AIN4(P1.4) 1 0101b 连接到外部信号:AIN5(P1.5) 1 0110b 连接到外部信号:AIN6(P1.6) 1 0111b 连接到外部信号:AIN7(P1.7) 1 1000b 连接到外部信号:AIN8(P0.0) 1 1001b 连接到外部信号:AIN9(P0.1) 1 1010b 连接到外部信号:AIN10(P0.2) 1 1011b 连接到外部信号:AIN11(P0.3) 1 1100b 连接到外部信号:AIN12(P0.4) 1 1101b 连接到外部信号:AIN13(P0.5) 1 1110b 连接到外部信号:AIN14(P0.6) 1 1111b 连接到外部信号:AIN15(P0.7) 电压比较器CMP正相输入端和ADC输入可以只连接内部信号,也可以只连接外部信号,还可以 同时连接内部信号和外部信号。在同时连接内外信号的情况下,内部信号和外部信号将实现互通, 导通电阻为2 个Rsw的串联,内部参考电压(另有其内阻)将通过上述两个Rsw 电阻连接到外部信 号引脚AIN0~AIN15,相当于为信号引脚提供特定电压的上拉电阻。 Ca 是容量为15pF左右的采样电容。R2/R1电阻比值是54.5:45.5。4R/2R/R电阻比值是4:2:1。 ADC 数据寄存器(ADC_DAT): 位 名称 访问 描述 复位值 [7:0] ADC_DAT_H RO ADC采样结果数据的高字节 0xh [7:0] ADC_DAT_L RO ADC采样结果数据的低字节 xxh ADC 引脚数字输入控制寄存器(ADC_PIN): 位 名称 访问 描述 复位值 7 bAIN14_15_DI_DIS RW 禁止AIN14和AIN15端口的数字输入,该位为0 则允许 0 6 bAIN12_13_DI_DIS RW 禁止AIN12和AIN13端口的数字输入,该位为0 则允许 0 5 bAIN10_11_DI_DIS RW 禁止AIN10和AIN11端口的数字输入,该位为0 则允许 0 4 bAIN8_9_DI_DIS RW 禁止AIN8和AIN9端口的数字输入,该位为0则允许 0 3 bAIN6_7_DI_DIS RW 禁止AIN6和AIN7端口的数字输入,该位为0则允许 0 2 bAIN4_5_DI_DIS RW 禁止AIN4和AIN5端口的数字输入,该位为0则允许 0

CH549手册 51 1 bAIN2_3_DI_DIS RW 禁止AIN2和AIN3端口的数字输入,该位为0则允许 0 0 bAIN0_1_DI_DIS RW 禁止AIN0和AIN1端口的数字输入,该位为0则允许 0 Tem Sense AIN0 AIN1 AIN2 AIN3~ AIN12 AIN13 AIN14 AIN15 Rsw V33 GND VDD R GND 01---- MUX 00---- 10---- 11---- R AIN1 AIN2 Rsw Rsw clock sample----- D0~D11 VIN ADC ADC_END IN+ CMP IN- bVDD_REF_EN CMPDO bVDD_REF_EN bCMP_EN MASK_CMP_CHAN SET CLR D 11---- 01---- 10---- MUX 00---- 0000-- 0001— MUX 1110-- 1111-- bADC_AIN_EN MASK_ADC_I_CH MASK_ADC_CHAN bADC_EN bADC_CLK1/0 ADC_DAT GND Itkey sample Fsys/2 CMPO to_interrupt to_wakeup VDD GND charge discharge Fsys/2 timer TKEY_CTRL to_interrupt bADC_START Ca BUF 图15.2.1 ADC/CMP/TKEY结构图(蓝色线为模拟信号) 15.3 触摸按键TKEY 寄存器 表15.3.1 TKEY相关寄存器列表 名称 地址 描述 复位值 TKEY_CTRL F1h 触摸按键充电脉冲宽度控制寄存器 00h 触摸按键充电脉冲宽度控制寄存器(TKEY_CTRL): 位 名称 访问 描述 复位值 [7:0] TKEY_CTRL WO 触摸按键充电脉冲宽度值,仅低7位有效,以2 倍 的系统周期为单位(2/Fsys)计数,计时到则自动 00h

CH549手册 52 启动ADC测量电容上电压

15.4 ADC 和Touch-Key 功能

ADC 采样模式配置步骤: (1)、设置ADC_CFG寄存器中的bADC_EN位为1,开启ADC模块,设置bADC_CLK0/1选择频率。 (2)、设置ADC_CHAN寄存器中的MASK_ADC_CHAN或MASK_ADC_I_CH,选择外部或内部信号通道。 (3)、可选的,清零中断标志bADC_IF。可选的,如果使用中断模式,还需要在此使能中断。 (4)、设置ADC_CTRL寄存器中的bADC_START,启动一次ADC转换。 (5)、等待bADC_START变为0,或者bADC_IF被置1(如果之前已清零),表示ADC转换结束,可通 过ADC_DAT 读取结果数据。该数据是输入电压相对于VDD 电源电压的255 等份的值,例如, 结果数据是47,说明输入电压接近VDD电压的47/255。如果VDD电源电压也不确定,那么可 以另测一个确定的参考电压值,再按比例计算出被测的输入电压值和VDD电源电压值。 (6)、如果再次设置bADC_START则可启动下一次ADC转换。 (7)、如果ADC参考时钟频率较高导致采样时间较短,或者信号源串联内阻值较大,或者电源电压较 低导致Rsw内阻较大,那么有可能Ca采样不到足够的信号电压,影响ADC结果。解决方法是 丢弃第一次ADC数据,立即启动第二次ADC并用其ADC 结果数据,相当于采样两次。 (7)、对精度要求较高时,建议使用前校准,用软件消除固有偏差。 电压比较器模式配置步骤: (1)、设置ADC_CFG寄存器中的bCMP_EN位为1,开启电压比较器模块。 (2)、设置ADC_CHAN寄存器中的MASK_ADC_CHAN 和MASK_CMP_CHAN及MASK_ADC_I_CH,分别选择正 相输入端和反相输入端信号。可以选择AIN0~AIN15与AIN1/AIN2比较、AIN0~AIN15与内部 参考电压比较、AIN1/AIN2与内部参考电压比较等多种组合。 (3)、可选的,清零中断标志bCMP_IF。可选的,如果使用中断模式,还需要在此使能中断。 (4)、任何时候都可查询bCMPO位的状态获得当前比较器的结果。 (5)、如果bCMP_IF变为1,表示比较器的结果发生了变化。 Touch-Key检测步骤: (1)、设置ADC_CFG寄存器中的bADC_EN位为1,开启ADC模块,设置bADC_CLK0/1选择频率。 (2)、设置ADC_CHAN寄存器中的MASK_ADC_CHAN,选择触摸按键信号通道。 (3)、根据触摸按键实际电容大小选择合适的充电脉冲宽度,写入TKEY_CTRL寄存器。简单计算公式 如下(假定触摸按键外部电容Ckey=25pF,假定VDD=5V,假定Fsys=12MHz,粗略计算): count=(Ckey+Cint)*0.7VDD/ITKEY/(2/Fsys)=(25p+15p)*0.35*5*12M/50u=17 TKEY_CTRL=count > 127 ? 127 : count (4)、可选的,如果使用中断模式,还需要在此使能中断。 (5)、当触摸按键电容充电计时到后,CH549自动设置bADC_START启动ADC测量电容上的电压 (6)、等待bTKEY_ACT变为0,或者bADC_IF被置1,表示充电和ADC转换结束,可通过ADC_DAT读 取结果数据。软件再用该数值与之前没有按键时的数值进行比较,根据电容的变化量,判断 该触摸按键是否被按下。 (7)、根据需要转到步骤(2)选择另一个触摸按键信号通道进行检测。 (8)、如果触摸按键实际电容大于40pF或者主频是48MHz和6MHz之一,那么内部自动放电时间有可 能不足,可能需要将所在GPIO输出1uS左右低电平实现对上述电容的充分放电。 上述被选择的外部模拟信号通道,其所在GPIO引脚必须设置为高阻输入模式、或者开漏输出模式并 且处于输出1 的状态(相当于高阻输入),Pn_DIR_PU[x]=0,并且关闭上拉电阻和下拉电阻。

CH549手册 53 16、USB控制器

16.1 USB 控制器简介

CH549内嵌USB控制器和USB收发器,特性如下: (1)、支持USB Host主机功能和USB Device设备功能; (2)、支持USB 2.0全速12Mbps或者低速1.5Mbps; (3)、支持USB控制传输、批量传输、中断传输、同步/实时传输; (4)、支持最大64字节的数据包,内置FIFO,支持中断和DMA。 CH549的USB相关寄存器分为3个部分,部分寄存器是在主机和设备模式下进行复用的。 (1)、USB全局寄存器; (2)、USB设备控制器寄存器; (3)、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 USB_CTRL E2h USB 控制寄存器 0000 0110b USB_DEV_AD E3h USB 设备地址寄存器 0000 0000b USB type-C配置通道控制寄存器(USB_C_CTRL): 位 名称 访问 描述 复位值 7 bUCC_PD_MOD RW 该位为1 使能UCC1和UCC2引脚的USB PD BMC协议输出 模式;为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 bVBUS_PD_EN RW 该位为1 使能VBUS引脚的内部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电流

CH549手册 54 上述USB type-C上拉电阻和下拉电阻独立于Pn_DIR_PU端口方向控制和上拉使能寄存器所控制 的端口上拉电阻,当一引脚用于USB type-C时,应该禁止该引脚对应的端口上拉电阻,建议对该引 脚启用高阻输入模式(避免该引脚输出低电平或者高电平)。 有关USB type-C配置通道的详细控制和输入检测请参考USB type-C应用说明及例程;有关USB PD 电力传输控制以及CRC处理请参考USB PD子程序、应用说明及例程。 USB 中断标志寄存器(USB_INT_FG): 位 名称 访问 描述 复位值

7 U_IS_NAK RO USB设备模式下,该位为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 UIF_HST_SOF RW

USB主机模式下SOF定时中断标志位,该位为1 表示SOF 定时中断,该中断由SOF包传输完成触发;该位为0 表示 无中断。直接位访问清零或写1清零

2 UIF_SUSPEND RW

USB总线挂起或唤醒事件中断标志位,该位为1 表示有中 断,该中断由USB挂起事件或唤醒事件触发;该位为0 表 示无中断。直接位访问清零或写1 清零

1 UIF_TRANSFER RW

USB传输完成中断标志位,该位为1 表示有中断,该中断由 一个USB传输完成触发;该位为0 表示无中断。直接位访 问清零或写1 清零

0 UIF_DETECT RW

USB主机模式下USB设备连接或断开事件中断标志位,该位 为1表示有中断,该中断由检测到USB设备连接或断开触 发;该位为0 表示无中断。直接位访问清零或写1清零

0 UIF_BUS_RST RW

USB设备模式下USB总线复位事件中断标志位,该位为1 表示有中断,该中断由USB总线复位事件触发;该位为0 表示无中断。直接位访问清零或写1清零 USB 中断状态寄存器(USB_INT_ST): 位 名称 访问 描述 复位值 7 bUIS_IS_NAK RO USB设备模式下,该位为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设备模式下当前USB传输事务的端点号,0000表 示端点0;…;1111表示端点15 xxxxb [3:0] MASK_UIS_H_RES R0 USB主机模式下当前USB传输事务的应答PID标识, 0000表示设备无应答或超时;其它值表示应答PID xxxxb

CH549手册 55 bUIS_TOKEN1和bUIS_TOKEN0组成MASK_UIS_TOKEN,用于USB设备模式下标识当前USB传输事 务的令牌PID:00表示OUT包;01表示SOF包;10表示IN包;11表示SETUP包。 USB 杂项状态寄存器(USB_MIS_ST): 位 名称 访问 描述 复位值 7 bUMS_SOF_PRES RO USB主机模式下SOF包预示状态位,该位为1表示将要发 送SOF包,此时如有其它USB 数据包将被自动延后 x 6 bUMS_SOF_ACT RO USB主机模式下SOF包传输状态,该位为1 表示正在发出 SOF包;该位为0 表示发送完成或者空闲 x 5 bUMS_SIE_FREE RO USB协议处理器的空闲状态位,该位为0 表示忙,正在进 行USB传输;该位为1 表示USB空闲。同U_SIE_FREE 1 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 bUMS_DM_LEVEL RO USB主机模式下记录USB设备刚连接到USB端口时的DM 引脚的状态,为0 表示低电平;为1表示高电平。用于判 断全速或低速 0 bUMS_DEV_ATTACH RO USB主机模式下USB设备连接状态位,该位为1 表示端口 已经连接USB设备;该位为0 表示没有 0 USB 接收长度寄存器(USB_RX_LEN): 位 名称 访问 描述 复位值 [7:0] bUSB_RX_LEN RO 当前USB端点接收到的数据的字节数 xxh USB 中断使能寄存器(USB_INT_EN): 位 名称 访问 描述 复位值 7 bUIE_DEV_SOF RW 该位为1 使能USB设备模式接收SOF包中断;为0禁止 0 6 bUIE_DEV_NAK RW 该位为1 使能USB设备模式接收到NAK中断;为0禁止 0 5 保留 RO 保留 0 4 bUIE_FIFO_OV RW 该位为1 使能FIFO溢出中断;该位为0 关闭使能 0 3 bUIE_HST_SOF RW 该位为1 使能USB主机模式SOF定时中断;为0 禁止 0 2 bUIE_SUSPEND RW 该位为1 使能USB总线挂起或唤醒事件中断;为0禁止 0 1 bUIE_TRANSFER RW 该位为1 使能USB传输完成中断;该位为0 禁止 0 0 bUIE_DETECT RW 该位为1使能USB主机模式下USB设备连接或断开事件中 断;该位为0 禁止 0 0 bUIE_BUS_RST RW 该位为1 使能USB设备模式下USB总线复位事件中断;该 位为0禁止 0 USB 控制寄存器(USB_CTRL): 位 名称 访问 描述 复位值 7 bUC_HOST_MODE RW USB 工作模式选择位,该位为0选择USB设备模式 0

CH549手册 56 (DEVICE);该位为1选择USB 主机模式(HOST) 6 bUC_LOW_SPEED RW USB总线信号传输速率选择位,该位为0选择全速12Mbps; 该位为1 选择低速1.5Mbps 0 5 bUC_DEV_PU_EN RW USB设备模式下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_HOST_MODE、bUC_SYS_CTRL1和bUC_SYS_CTRL0组成USB系统控制组合: bUC_HOST_MODE bUC_SYS_CTRL1 bUC_SYS_CTRL0 USB 系统控制描述 0 0 0 禁止USB设备功能,关闭内部上拉电阻 0 0 1 使能USB设备功能,关闭内部上拉,需加外部上拉 0 1 X 使能USB设备功能,启用内部1.5KΩ上拉电阻。 该上拉电阻优先于下拉电阻,也可用于GPIO模式 1 0 0 选择USB主机模式,正常工作状态 1 0 1 选择USB主机模式,强制DP/DM输出SE0状态 1 1 0 选择USB主机模式,强制DP/DM输出J 状态 1 1 1 选择USB主机模式,强制DP/DM输出K 状态/唤醒 USB 设备地址寄存器(USB_DEV_AD): 位 名称 访问 描述 复位值 7 bUDA_GP_BIT RW USB 通用标志位:使用者可自定义,可软件清零或置位 0 [6:0] MASK_USB_ADDR RW 主机模式下是当前操作的USB 设备的地址;设备模式 下是该USB设备的地址 00h 16.3 设备寄存器 在USB设备模式下CH549提供了端点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时,CH549根据bUD_LOW_SPEED在内部为USB总线的DP引脚或者

CH549手册 57 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进行相应的处理。如果事 先设定了各个端点的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 设备物理端口控制寄存器 00xx 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 0xxxb 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 0xxxb 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 0xxxb 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 0xxxb 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复位控制: 位 名称 访问 描述 复位值

CH549手册 58 7 bUD_PD_DIS RW USB设备端口UDP/UDM引脚内部下拉电阻禁用位,该位为1 禁用内部下拉电阻;该位为0 使能内部下拉电阻。该位也 可用于GPIO模式提供下拉电阻 6 保留 RO 保留 0 5 bUD_DP_PIN RO 当前UDP引脚状态,为0表示低电平;为1 表示高电平 x 4 bUD_DM_PIN RO 当前UDM引脚状态,为0表示低电平;为1 表示高电平 x 3 保留 RO 保留 0 2 bUD_LOW_SPEED RW USB设备物理端口低速模式使能位,该位为1 选择1.5Mbps 低速模式;该位为0选择12Mbps全速模式 0 1 bUD_GP_BIT RW USB设备模式通用标志位:使用者可自己定义,可软件清零 或置位 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

CH549手册 59 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 缓冲区模式 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时端点发送;

CH549手册 60 UEPn_DMA+192地址:bUEP_T_TOG=1时端点发送 USB 端点n缓冲区起始地址(UEPn_DMA)(n=0/1/2/3): 位 名称 访问 描述 复位值 [7:0] UEPn_DMA_H RW 端点n缓冲区起始地址高字节,仅低3位有效,高5 位 固定为0 0xh [7:0] UEPn_DMA_L RW 端点n缓冲区起始地址低字节 xxh 注:接收数据的缓冲区的长度 >= min(可能接收到的最大数据包长度 + 2字节,64字节) 16.4 主机寄存器 在USB主机模式下CH549提供了一组双向主机端点,包括一个发送端点OUT和一个接收端点IN, 数据包的最大长度是64字节,支持控制传输、批量传输、中断传输和实时/同步传输。 由主机端点发起的每一个USB事务,在处理结束后总是自动设置中断标志UIF_TRANSFER。应用 程序可以直接查询或在USB中断服务程序中查询并分析中断标志寄存器USB_INT_FG,根据各中断标 志分别进行相应的处理;并且,如果UIF_TRANSFER有效,那么还需要继续分析USB中断状态寄存器 USB_INT_ST,根据当前USB传输事务的应答PID标识MASK_UIS_H_RES进行相应的处理。 如果事先设定了主机接收端点的IN事务的同步触发位bUH_R_TOG,那么可以通过U_TOG_OK或 bUIS_TOG_OK判断当前所接收到的数据包的同步触发位是否与主机接收端点的同步触发位匹配,如 果数据同步,则数据有效;如果数据不同步,则数据应该被丢弃。每次处理完USB发送或者接收中 断后,都应该正确修改相应主机端点的同步触发位,用于同步下次所发送的数据包和检测下次所接 收的数据包是否同步;另外,通过设置bUEP_AUTO_TOG可以实现在发送成功或者接收成功后自动翻 转相应的同步触发位。 USB 主机令牌设置寄存器UH_EP_PID是对USB设备模式下的USB端点2 控制寄存器的复用,用 于设置被操作的目标设备的端点号和本次USB传输事务的令牌PID包标识。SETUP令牌和OUT令牌 所对应的数据由主机发送端点提供,准备发送的数据在UH_TX_DMA缓冲区中,准备发送的数据长度 设置在UH_TX_LEN中;IN令牌所对应的数据由目标设备返回给主机接收端点,接收到的数据存放在 UH_RX_DMA缓冲区中,接收到的数据长度存放在USB_RX_LEN中。 表16.4.1 USB主机相关寄存器列表(标灰受bUC_RESET_SIE复位控制) 名称 地址 描述 复位值 UHOST_CTRL D1h USB 主机物理端口控制寄存器 00xx 0000b UH_SETUP D2h USB 主机辅助设置寄存器 0000 0000b UH_RX_CTRL D4h USB 主机接收端点控制寄存器 0000 0000b UH_EP_PID D5h USB 主机令牌设置寄存器 0000 0000b UH_TX_CTRL D6h USB 主机发送端点控制寄存器 0000 0000b UH_TX_LEN D7h USB 主机发送长度寄存器 0xxx xxxxb UH_EP_MOD EBh USB 主机端点模式控制寄存器 0000 0000b UH_RX_DMA_H E5h USB 主机接收缓冲区起始地址高字节 0000 0xxxb UH_RX_DMA_L E4h USB 主机接收缓冲区起始地址低字节 xxxx xxxxb UH_RX_DMA E4h UH_RX_DMA_L 和UH_RX_DMA_H组成16位SFR 0xxxh UH_TX_DMA_H E7h USB 主机发送缓冲区起始地址高字节 0000 0xxxb UH_TX_DMA_L E6h USB 主机发送缓冲区起始地址低字节 xxxx xxxxb UH_TX_DMA E6h UH_TX_DMA_L 和UH_TX_DMA_H组成16位SFR 0xxxh USB 主机物理端口控制寄存器(UHOST_CTRL) ,受bUC_RESET_SIE复位控制:

CH549手册 61 位 名称 访问 描述 复位值 7 bUH_PD_DIS RW USB主机端口UDP/UDM引脚内部下拉电阻禁用位,该位为1 禁用内部下拉电阻;该位为0 使能内部下拉电阻。该位也 可用于GPIO模式提供下拉电阻 6 保留 RO 保留 0 5 bUH_DP_PIN RO 当前UDP引脚状态,为0表示低电平;为1 表示高电平 x 4 bUH_DM_PIN RO 当前UDM引脚状态,为0表示低电平;为1 表示高电平 x 3 保留 RO 保留 0 2 bUH_LOW_SPEED RW USB主机端口低速模式使能位,该位为1 选择1.5Mbps低速 模式;该位为0选择12Mbps全速模式 0 1 bUH_BUS_RESET RW USB主机端口总线复位控制位,该位为1 强制主机端口输出 USB总线复位;该位为0结束输出 0 0 bUH_PORT_EN RW USB主机端口使能位,该位为0禁用主机端口;该位为1 使能主机端口。当USB设备断开连接时该位自动清零 0 USB 主机辅助设置寄存器(UH_SETUP): 位 名称 访问 描述 复位值 7 bUH_PRE_PID_EN RW 低速前导包PRE PID使能位,该位为1 使能USB主机 通过外部HUB与低速USB设备通讯;为0禁用低速前 导包,USB主机与低速USB设备之间不能有HUB 6 bUH_SOF_EN RW 自动产生SOF包使能位,该位为1由USB主机自动产 生SOF包;为0不自动产生,但可以手工产生 0 [5:0] 保留 RO 保留 00h USB 主机接收端点控制寄存器(UH_RX_CTRL): 位 名称 访问 描述 复位值 7 bUH_R_TOG RW USB主机接收器(处理IN事务)期望的同步触发位,该 位为0表示期望DATA0;为1 表示期望DATA1 0 [6:5] 保留 RO 保留 00b 4 bUH_R_AUTO_TOG RW 自动翻转bUH_R_TOG使能控制位,该位为1 表示在USB 主机接收成功后自动翻转bUH_R_TOG标志;为0 表示 不自动翻转,但可以手动切换 3 保留 RO 保留 0 2 bUH_R_RES RW USB主机接收器对IN事务的响应控制位,为0表示应 答ACK或就绪;为1表示无响应,用于与目标设备的 非端点0 进行实时/同步传输 [1:0] 保留 RO 保留 00b USB 主机令牌设置寄存器(UH_EP_PID): 位 名称 访问 描述 复位值 [7:4] MASK_UH_TOKEN RW 设置本次USB传输事务的令牌PID包标识 0000b [3:0] MASK_UH_ENDP RW 设置本次被操作的目标设备的端点号 0000b USB 主机发送端点控制寄存器(UH_TX_CTRL):

CH549手册 62 位 名称 访问 描述 复位值 7 保留 RO 保留 0 6 bUH_T_TOG RW USB主机发送器(处理SETUP/OUT事务)准备的同步触 发位,该位为0表示发送DATA0;为1表示发送DATA1 0 5 保留 RO 保留 0 4 bUH_T_AUTO_TOG RW 自动翻转bUH_T_TOG使能控制位,该位为1 表示在USB 主机发送成功后自动翻转bUH_T_TOG标志;为0 表示 不自动翻转,但可以手动切换 [3:1] 保留 RO 保留 000b 0 bUH_T_RES RW USB主机发送器对SETUP/OUT事务的响应控制位,为0 表示期望应答ACK或就绪;为1表示期望无响应,用 于与目标设备的非端点0进行实时/同步传输 USB 主机发送长度寄存器(UH_TX_LEN): 位 名称 访问 描述 复位值 [7:0] UH_TX_LEN RW 设置USB主机发送端点准备发送的数据字节数 xxh USB 主机端点模式控制寄存器(UH_EP_MOD): 位 名称 访问 描述 复位值 7 保留 RO 保留 0 6 bUH_EP_TX_EN RW 该位为0 禁止USB主机发送端点发送数据;该位为1 使能USB主机发送端点发送数据(SETUP/OUT) 0 5 保留 RO 保留 0 4 bUH_EP_TBUF_MOD RW USB 主机发送端点数据缓冲区模式控制位 0 3 bUH_EP_RX_EN RO 该位为0 禁止USB主机接收端点接收数据;该位为1 使能USB主机接收端点接收数据(IN) 0 [2:1] 保留 RO 保留 00b 0 bUH_EP_RBUF_MOD RW USB 主机接收端点数据缓冲区模式控制位 0 由bUH_EP_TX_EN和bUH_EP_TBUF_MOD组合控制USB主机发送端点数据缓冲区模式,参考下表。 表16.4.2 主机发送缓冲区模式 bUH_EP_TX_EN bUH_EP_TBUF_MOD 结构描述:以UH_TX_DMA为起始地址 0 x 端点被禁用,未用到UH_TX_DMA缓冲区 1 0 单64字节发送缓冲区(SETUP/OUT) 1 1 双64字节发送缓冲区,通过bUH_T_TOG选择: 当bUH_T_TOG=0时选择前64字节缓冲区; 当bUH_T_TOG=1时选择后64字节缓冲区 由bUH_EP_RX_EN和bUH_EP_RBUF_MOD组合控制USB主机接收端点数据缓冲区模式,参考下表。 表16.4.3 主机接收缓冲区模式 bUH_EP_RX_EN bUH_EP_RBUF_MOD 结构描述:以UH_RX_DMA为起始地址 0 x 端点被禁用,未用到UH_RX_DMA缓冲区 1 0 单64字节接收缓冲区(IN) 1 1 双64字节接收缓冲区,通过bUH_R_TOG选择: 当bUH_R_TOG=0时选择前64字节缓冲区; 当bUH_R_TOG=1时选择后64字节缓冲区

CH549手册 63 USB 主机接收缓冲区起始地址 (UH_RX_DMA): 位 名称 访问 描述 复位值 [7:0] UH_RX_DMA_H RW USB主机接收缓冲区起始地址高字节,仅低3位有效, 高5位固定为0 0xh [7:0] UH_RX_DMA_L RW USB 主机接收缓冲区起始地址低字节 xxh USB 主机接发送冲区起始地址 (UH_TX_DMA): 位 名称 访问 描述 复位值 [7:0] UH_TX_DMA_H RW USB主机发送缓冲区起始地址高字节,仅低3位有效, 高5位固定为0 0xh [7:0] UH_TX_DMA_L RW USB 主机发送缓冲区起始地址低字节 xxh 17、参数 17.1 绝对最大值(临界或者超过绝对最大值将可能导致芯片工作不正常甚至损坏) 名称 参数说明 最小值 最大值 单位 TA 工作时的 环境温度 Fsys<40MHz -40 85 ℃ Fsys=48MHz并且bLDO_CORE_VOL=1(必要时) -40 85 ℃ Fsys=48MHz并且bLDO_CORE_VOL=0 -40 70 ℃ TAROM Flash-ROM/EEPROM擦写操作的环境温度(建议) -20 85 ℃ TS 储存时的环境温度 -55 125 ℃ VDD 电源电压(VDD接电源,GND接地) -0.4 7.0 V V33 内部USB电源电压 -0.4 VDD+0.4 V VIO 输入或者输出引脚上的电压 -0.4 VDD+0.4 V VIOU UDP/UDM引脚上的电压 -0.4 V33+0.4 V VIOHV P5.5/HVOD引脚上的电压 -0.4 15 V 17.2 电气参数5V(测试条件:TA=25℃,VDD=5V,Fsys=12MHz) 名称 参数说明 最小值 典型值 最大值 单位 VDD5 VDD引脚电源电压 V33 仅外接电容 3.7 5 6.5 V V33 内部USB电源调整器 输出电压 ICC48M5 Fsys=48MHz工作时的总电源电流 6.3 7.4 mA ICC12M5 Fsys=12MHz工作时的总电源电流 2.5 3.0 mA ICC750K5 Fsys=750KHz工作时的总电源电流 1.4 1.6 mA ISLP5 待机/正常睡眠后的总电源电流 1.1 1.4 mA ISLP5L bLDO_3V3_OFF=1关闭LDO, 下电/深度睡眠后的总电源电流 3.5 10 uA IADC5 ADC模数转换模块工作电流 200 800 uA ICMP5 电压比较器模块工作电流 100 500 uA ITKEY5 触摸按键电容充电电流 35 50 70 uA VIL5 低电平输入电压 -0.4 1.2 V VIH5 高电平输入电压 2.4 VDD+0.4 V

CH549手册 64 VOL5 低电平输出电压(15mA吸入电流) 0.4 V VOH5 高电平输出电压(6mA输出电流) VDD-0.4 V VOH5U UDP/UDM 高电平输出电压(8mA输出电流) V33-0.4 V VHVOD P5.5/HVOD 引脚上的电压(不输出/高阻) 0 12 13.5 V IIN 无上拉输入端的输入电流 -5 0 5 uA IDN5 带下拉电阻输入端的输入电流 -35 -70 -140 uA IUP5 带上拉电阻输入端的输入电流 35 70 140 uA IUP5X 带上拉输入端由低向高翻转时的输入电流 250 400 600 uA Rsw5 ADC等模块的模拟开关的导通电阻 500 700 1350 Ω Vpot 电源上电复位的门限电压 2.3 4.0 4.6 V 17.3 电气参数3.3V(测试条件:TA=25℃,VDD=V33=3.3V,Fsys=12MHz) 名称 参数说明 最小值 典型值 最大值 单位 VDD3 VDD引脚 电源电压 V33短接到VDD,开启USB 3.0 3.3 3.6 V V33短接到VDD,关闭USB 2.7 3.3 3.6 V ICC48M3 Fsys=48MHz工作时的总电源电流 6.3 7.4 mA ICC12M3 Fsys=12MHz工作时的总电源电流 2.5 3.0 mA ICC750K3 Fsys=750KHz工作时的总电源电流 1.4 1.6 mA ISLP3 待机/正常睡眠后的总电源电流 1.1 1.3 mA ISLP3L bLDO_3V3_OFF=1关闭LDO, 下电/深度睡眠后的总电源电流 1.7 5 uA IADC3 ADC模数转换模块工作电流 180 700 uA ICMP3 电压比较器模块工作电流 70 300 uA ITKEY3 触摸按键电容充电电流 35 50 70 uA VIL3 低电平输入电压 -0.4 0.8 V VIH3 高电平输入电压 1.9 VDD+0.4 V VOL3 低电平输出电压(10mA吸入电流) 0.4 V VOH3 高电平输出电压(4mA输出电流) VDD-0.4 V VOH3U UDP/UDM 高电平输出电压(8mA输出电流) V33-0.4 V VHVOD P5.5/HVOD 引脚上的电压(不输出/高阻) 0 12 13.5 V IIN 无上拉输入端的输入电流 -5 0 5 uA IDN3 带下拉电阻输入端的输入电流 -15 -30 -60 uA IUP3 带上拉电阻输入端的输入电流 15 30 60 uA IUP3X 带上拉输入端由低向高翻转时的输入电流 100 170 250 uA Rsw3 ADC等模块的模拟开关的导通电阻 600 1000 2500 Ω Vpot 电源上电复位的门限电压 2.3 2.7 3.0 V 17.4 时序参数(测试条件:TA=25℃,VDD=5V或VDD=V33=3.3V,Fsys=12MHz) 名称 参数说明 最小值 典型值 最大值 单位 Fxt 外部晶体频率或者XI输入时钟频率 6 24 25 MHz Fosc VDD>=3V时经校准后 的内部时钟频率 TA=-15~65℃ 23.64 24 24.36 MHz TA=-40~85℃ 23.5 24 24.5 MHz Fosc3 VDD<3V时经校准后的内部时钟频率 23.28 24 24.72 MHz Fpll 内部倍频后的PLL频率 24 96 100 MHz

CH549手册 65 Fusb4x 使用USB主机功能时,USB采样时钟频率 47.98 48 48.02 MHz 使用USB设备功能时,USB采样时钟频率 47.04 48 48.96 MHz Fsys 系统主频时钟频率(VDD>=3V) 0.1 12 50 MHz 系统主频时钟频率(VDD<3V) 0.1 12 24 MHz Tpor 电源上电复位延时 8 11 15 mS Trst 从RST外部输入有效复位信号的宽度 70 nS Trdl 热复位延时 20 30 50 uS Twdc 看门狗溢出周期/定时周期的计算公式 131072 * ( 0x100 - WDOG_COUNT ) / Fsys Tusp USB主机模式下检测USB自动挂起时间 2 3 4 mS USB设备模式下检测USB自动挂起时间 4 5 6 mS Twaksb 芯片待机/正常睡眠后唤醒完成时间 0.5 0.8 3 uS Twakdp 芯片下电/深度睡眠后唤醒完成时间 120 200 1000 uS 名称 参数说明 最小值 典型值 最大值 单位 RTS TS温度传感器的测量范围 -40 90 ℃ ATSC 温度传感器经软件校准后的测量误差 ±7 ℃ CTSV 温度传感器的灵敏度(电压/温度系数) 4 5 6 mV/℃ TERPG Flash-ROM/EEPROM 的单次擦写操作时间 2 5 8 mS NEPCE Flash-ROM/EEPROM的擦写次数 (erase/program cycle endurance) 10K 非担保 100K times TDR Flash-ROM/EEPROM的数据保持能力 10 years VESD I/O输入或者输出引脚上的ESD耐压 4K 非担保 8K V 18、修改记录 版本 日期 说明 V0.99 2017.09.27 初版发行 V1.0 2018.03.07 正式版发行 V1.1 2018.11.13 修改A_INV说明,删除例程文件名,修改VDD3,增加INTX