第一范文网 - 专业文章范例文档资料分享平台

8位USB和RGB-LED MS51单片机CH555手册 - 图文 

来源:用户分享 时间:2025/10/26 18:05:45 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

1

0、说明

USB Keyboard和RGB-LED单片机CH555手册 版本:1D

1、概述

CH555芯片是一款兼容MCS51指令集的USB复合设备E8051内核单片机,其79%的指令是单字节单周期指令,平均指令速度比标准MCS51快8~15倍。

CH555支持最高32MHz系统主频,内置64K程序存储器Flash-ROM和256字节内部iRAM以及8K字节片内xRAM,xRAM支持DMA直接内存存取。

CH555内置了全速复合USB Device设备控制器和收发器,复合USB设备控制器包括一个USB device-hub和三个HID功能子设备。

CH555内置了3*8路PWM,支持384只单色LED或者128组RGB三色LED。 CH555还内置了12位ADC模数转换、内置时钟、3组定时器和2路信号捕捉、双异步串口、SPI、I2C从机等功能模块。

下面为CH555的内部框图,仅供参考。 Flash-ROM 64KB iRAM 256B Timer0 Timer2 UART0 UART1 SPI0 I2C RGB LED SPI1 Slave PWM*3*8 Code/EEPROM Data xRAM 8KB Timer1 Cap1~2 Power-on Reset 1T Internal Address & Data & DMA Bus Watch-dog E8051 Core Reset XT USB-48M D0# D1# D2# Internal 8b ADC 8b 8b 8b 8b 8b HID HID HID 8b 2b X PLL Oscillator P0 P1 P2 P3 P4 P5 USB hub P6 P7 T LDO VolReg 5V->3.3V Pins: GND VDD V33 P00~7 P10~7 P20~7 P30~7 P40~7 P50~7 P60~7 P70 P71

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

l RAM:256字节内部iRAM,可以用于快速数据暂存以及堆栈;8KB片内xRAM,可以用于大量数据暂存以及DMA直接内存存取。

2

l USB:内置USB复合设备控制器和USB收发器,包括一个USB device-hub和三个HID功能子设

备,合计24个USB端点。支持USB 2.0全速12Mbps,内置FIFO,支持64字节数据包和DMA。 l Timer:3组16位定时器,T0/T1/T2为标准MCS51定时器。

l Capture:定时器T2扩展为支持2路信号捕捉,支持前沿触发、后沿触发、周期检测。 l UART:2组异步串口,UART0为标准MCS51串口;UART1自带通讯波特率设置寄存器。

l SPI:2路SPI,内置FIFO,时钟频率最高可接近系统主频Fsys的一半,支持串行数据输入输出单工复用。SPI0控制器支持Master/Slave主从模式;SPI1控制器仅支持Master主模式。 l I2CS:I2C slave从机控制器,支持DMA,用于模拟EEPROM存储器24C。

l RGB LED:通过3*8路PWM和1/16动态扫描支持384只单色LED或者128组RGB三色LED,最高8位亮度PWM支持256级灰度,最高3*8位色彩PWM支持16777216组合色,专用DMA模式支持从Flash-ROM加载预置的固化数据或者从xRAM加载编辑后的数据。 l ADC:14通道12位A/D模数转换器。 l GPIO:LQFP48支持最多45个、LQFP64支持最多58个GPIO引脚(含XI和USB引脚),支持MCS51兼容的准双向模式,新增高阻输入、推挽输出、开漏输出模式。

l Interrupt:支持14组中断信号源,包括与标准MCS51兼容的6组中断(INT0、T0、INT1、T1、UART0、T2),以及扩展的8组中断(SPI0、USB、ADC、UART1、LED/I2C、GPIO、WDOG),其中GPIO中断可以从多个引脚中选择。

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电源电压。内置DC-DC控制器,可控制外置MOS管实现升压。

l Sleep:支持低功耗睡眠,支持USB、UART0、UART1、SPI0以及部分GPIO外部唤醒。 l 芯片内置唯一ID号,支持ID号和校验。

3、封装

363534333231302928272625373839404142434445464748P0.3/TXD_/AIN11P0.4/AIN12P0.5/AIN13P0.6P0.7P6.0/DMP6.1/DPP2.7/TXD1P2.6/RXD1P2.5/T2EX_/CAP2_P2.4/T2_/CAP1_P2.3P0.2/RXD_/AIN10P0.1/SDA0/AIN9P0.0/SCL0/AIN8VDDGND/VSSV33P1.0/T2/CAP1/AIN0P1.1/T2EX/CAP2/AIN1P1.2/INT0_/AIN2P1.3/AIN3P1.4/SCS/AIN4P1.5/MOSI/AIN5CH555LP2.2P2.1P2.0P4.0P4.1P7.1/XO/RST#/ALE_P7.0/XIP4.7P4.6P4.2P4.3P3.7/SCK1242322212019181716151413123456789101112P1.6/MISO/RXD1_/AIN6P1.7/SCK/TXD1_/AIN7P6.4/DCOP3.0/RXDP4.5P4.4P3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1/MOSI1P3.6/MISO13

封装形式 LQFP-48 LQFP-64

4847464544434241403938373635343349505152535455565758596061626364P0.6P0.7P5.0P5.1P5.2P5.3P5.4P5.5P5.6P5.7P2.7/TXD1P2.6/RXD1P2.5/T2EX_/CAP2_P2.4/T2_/CAP1_P2.3P2.2P0.5/AIN13P0.4/AIN12P0.3/TXD_/AIN11P0.2/RXD_/AIN10P0.1/SDA0/AIN9P0.0/SCL0/AIN8VDDGND/VSSV33P1.0/T2/CAP1/AIN0P1.1/T2EX/CAP2/AIN1P1.2/INT0_/AIN2P1.3/AIN3P1.4/SCS/AIN4P1.5/MOSI//AIN5P1.6/MISO/RXD1_/AIN6CH555QP2.1P2.0P4.0P4.1DCOP7.1/XO/RST#/ALE_P7.0/XIGND/VSSVDDP4.7P4.6P4.2P4.3P3.7/SCK1P3.6/MISO1P3.5/T1/MOSI132313029282726252423222120191817塑体宽度 7*7mm 7*7mm

12345678910111213141516P1.7/SCK/TXD1_/AIN7P6.0/DMP6.1/DPP6.2P6.3P6.4/DCOP6.5P6.6P6.7P3.0/RXDP4.5P4.4P3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0引脚间距 0.5mm 0.4mm

封装说明 订货型号 CH555L CH555Q

19.7mil 标准LQFP48脚贴片 15.7mil 标准LQFP64脚贴片

4、引脚

引脚

CH555Q CH555L 名称 55,24 40 引脚号

其它功能名称 (左侧功能最优先)

其它功能描述

I/O电源输入以及内部USB电源调整器的外部电源输入,需要外接0.1uF电源退耦电容。

内部USB电源调整器输出和内部USB电源输入, 当电源电压小于3.6V时连接VDD输入外部电源, 当电源电压大于3.6V时外接0.1uF电源退耦电容 公共接地端。

VDD VCC

57 56,25 54 53 52 51 50 49 48 47

42 41 39 38 37 36 35 34 33 32

V33 V3 GND VSS P0.0 SCL0/AIN8 P0.1 SDA0/AIN9 P0.2 RXD_/AIN10 P0.3 TXD_/AIN11 P0.4 AIN12 P0.5 AIN13 P0.6 P0.7

AIN8~AIN13:6通道ADC模拟信号/触摸按键输入。 RXD_、TXD_:RXD、TXD引脚映射。

SCL0、SDA0:I2CS串行时钟输入、双向串行数据。 P0.0~P0.7任一引脚电平变化支持中断和唤醒。

4

58 59 60 61 62 63 64 1 31 32 33 34 35 36 37 38 10 13 14 15 16 17 18 19 30 29 21 20 12 11 22 23 46 45 44 43 42 41 40 39 2 3 4

43 44 45 46 47 48 1 2 22 23 24 25 26 27 28 29 4 7 8 9 10 11 12 13 21 20 15 14 6 5 16 17 无 无 无 无 无 无 无 无 31 30 无

P1.0 T2/CAP1/AIN0 P1.1 T2EX/CAP2/AIN1 P1.2 INT0_/AIN2 P1.3 AIN3 P1.4 SCS/AIN4 P1.5 MOSI/AIN5 P1.6 MISO/RXD1_/AIN6 P1.7 SCK/TXD1_/AIN7 P2.0 P2.1 P2.2 P2.3

P2.4 T2_/CAP1_ P2.5 T2EX_/CAP2_ P2.6 RXD1 P2.7 TXD1 P3.0 RXD P3.1 TXD P3.2 INT0 P3.3 INT1 P3.4 T0 P3.5 MOSI1/T1 P3.6 MISO1 P3.7 SCK1 P4.0 P4.1 P4.2 P4.3 P4.4 P4.5 P4.6 P4.7 P5.0 P5.1 P5.2 P5.3 P5.4 P5.5 P5.6 P5.7 P6.0 DM P6.1 DP P6.2

DM、DP:USB复合设备的D-、D+信号端。

收发器按USB2.0全内置设计,引脚不能串接电阻。

P5.0~P5.7的I/O电源是V33,输入电压不超过V33。

P4.0~P4.7任一引脚电平变化支持中断和唤醒。 如果P4_LED_KEY对应的位为1,那么有如下特性: 当引脚为输入或双向时支持电流型键盘信号输入, 当引脚为输出时无需串联限流电阻直接驱动LED。 RXD、TXD:UART0串行数据输入、串行数据输出。 INT0、INT1:外部中断0、外部中断1输入。 T0、T1:定时器0、定时器1外部输入。

MOSI1、MISO1、SCK1:SPI1接口,是主机输出,MISO是主机输入,SCK是串行时钟输出。

T2_/CAP1_:T2/CAP1引脚映射。 T2EX_/CAP2_:T2EX/CAP2引脚映射。

RXD1、TXD1:UART1串行数据输入、串行数据输出。 P2.0~P2.3任一引脚电平变化支持中断和唤醒。 AIN0~AIN7:8通道ADC模拟信号/触摸按键输入。 T2:定时/计数器2的外部计数输入/时钟输出。 T2EX:定时/计数器2重载/捕捉输入。

CAP1、CAP2:定时/计数器2的捕捉输入1、2。

SCS、MOSI、MISO、SCK:SPI0接口,SCS是片选输入,MOSI是主机输出/从机输入,MISO是主机输入/从机输出,SCK是串行时钟主机输出/从机输入。

INT0_、RXD1_、TXD1_:INT0/RXD1/TXD1引脚映射。P1.0~P1.3电平变化支持中断和唤醒。

5

5 6 7 8 9 26 27 28

CH555在RGB LED启用后,部分引脚将可选的复用于PWM驱动或者动态扫描驱动。 引脚名称 P4.0~P4.7 P2.0~P2.7 P1.0~P1.7 P7.0~P7.1 P0.0~P0.7 P3.0~P3.7

功能名称 RED0~RED7 GRE0~GRE7 BLU0~BLU7 COM14~COM15 COM16~COM23 COM24~COM31

功能描述

RGB LED红色PWM驱动输出,每位可独立启用或禁用。 RGB LED绿色PWM驱动输出,每位可独立启用或禁用。 RGB LED蓝色PWM驱动输出,每位可独立启用或禁用。 RGB LED动态扫描公共驱动输出,每位可独立启用或禁用。 RGB LED动态扫描公共驱动输出,每位可独立启用或禁用。 RGB LED动态扫描公共驱动输出,每位可独立启用或禁用。

无 3 无 无 无 18 19 无

P6.3 P6.4 DCO P6.5 P6.6 P6.7 P7.0 XI

P7.1 XO/RST#/ALE_ DCO

XI、XO:外部晶体振荡输入端、反相输出端。 ALE_:ALE引脚映射。

RST#:外部复位输入,低电平有效,内置上拉电阻。 DC-DC驱动输出。

DCO:DC-DC驱动输出。

P6.0~P6.7的I/O电源是V33,输入电压不超过V33。 P6.0~P6.7提供独立可控的7.5K上拉电阻到VDD。

5、特殊功能寄存器SFR

本手册中在对寄存器进行描述时可能使用了下列缩写:

缩写词 RO WO RW H B

描述

表示访问类型:只读

表示访问类型:只写,读取的值无效 表示访问类型:可读可写 以其结束表示16进制数 以其结束表示2进制数

5.1 SFR简介和地址分布

CH555用特殊功能寄存器SFR和xSFR控制、管理设备以及设置工作模式。

SFR占用内部数据存储空间的80h-FFh地址范围,只能通过直接地址方式的指令访问。其中地址为x0h或x8h的寄存器是可以按位寻址的,这样就能避免访问某个具体的位时而修改其他位的值;其它地址为非8倍数的寄存器只能按字节访问。

部分SFR仅在安全模式下才能写入数据,而在非安全模式下是只读状态,例如:GLOBAL_CFG、CLOCK_CFG、WAKE_CTRL、POWER_CFG、GPIO_IE。

部分SFR具有一个或者多个别名,例如:SPI0_CK_SE/SPI0_S_PRE、ROM_ADDR_L/ROM_DATA_LL、ROM_ADDR_H/ROM_DATA_LH、ROM_DATA_HL/ROM_DAT_BUF、ROM_DATA_HH/ROM_BUF_MOD。

部分地址对应于多个独立的SFR,例如:SAFE_MOD/CHIP_ID、ROM_CTRL/ROM_STATUS。 CH555包含8051标准SFR所有的寄存器,同时又增加了其他设备控制寄存器。具体SFR见下表。

表5.1.1 内部特殊功能寄存器表SFR

6

SFR

0、8

1、9

SPI0_DATA P7_IO IP_EX T2MOD P4_LED_KEY CLOCK_CFG GLOBAL_CFG WAKE_CTRL SAFE_MOD CHIP_ID SBUF TMOD

2、A

SPI0_CTRL

RCAP2L P4_MOD_OC

3、B

SPI0_CK_SE SPI0_S_PRE ADC_CTRL

RCAP2H P4_DIR_PU

4、C

SPI0_SETUP ADC_DAT_L

TL2 P0_MOD_OC SCON1 SPI1_STAT P5_OE P2_MOD_OC

TH0

5、D

A_INV ADC_DAT_H

TH2 P0_DIR_PU SBUF1 SPI1_DATA P6_IN P2_DIR_PU

TH1

6、E 7、F

0xF8 SPI0_STAT 0xF0 0xE8 0xE0 0xD8 0xD0 0xC8 0xC0 0xB8 0xB0 0xA8 0xA0 0x98 0x90 0x88 0x80 B IE_EX ACC PSW T2CON P4 IP P3 IE P2 SCON P1 TCON

RESET_KEEP WDOG_COUNT ADC_CHAN

T2CAP1L LED_DMA_L SBAUD1 SPI1_CTRL P6_OUT_PU

LED_STATUS

T2CAP1H LED_DMA_H SIF1 SPI1_CK_SE P6_OE

POWER_CFG I2CS_INT_ST GPIO_IE P5_IN XBUS_AUX

P1_MOD_OC

TL0

I2CX_INT P5_OUT_PU

P1_DIR_PU

TL1

LED_COMMON LED_PIN_OE

P3_MOD_OC

P3_DIR_PU

ROM_DATA_HL ROM_DATA_HH ROM_DAT_BUF ROM_BUF_MOD ROM_CTRL

PCON

P0 SP DPL DPH

ROM_ADDR_L ROM_ADDR_H

ROM_DATA_LL ROM_DATA_LH ROM_STATUS

备注:(1)、红色文本代表可以按位寻址;

(2)、以下是颜色框对应说明

xSFR占用外部数据存储空间的2000H-3FFFH地址范围,实际仅用了2100H-22FFH地址范围中的部分地址。在bXIR_XSFR置1后,MOVX_@R0/R1指令将专用于访问xSFR,部分xSFR将可以模仿外部数据存储空间的页数据pdata特性以别名进行快速访问,别名是在原名称前加一个p字符。例如在C语言中,读写I2CS_CTRL是以DPTR长指针访问2100H-22FFH地址范围中xdata特性的xSFR;读写pI2CS_CTRL是以R0或R1短指针访问00H-FFH地址范围中pdata特性的xSFR。

部分地址对应于多个独立的SFR,例如:Dn_EP6T_L/Dn_RX_LEN,n为0/1/2。

表5.1.2 pdata特性外部特殊功能寄存器表xSFR

寄存器地址 SPI0相关寄存器 SPI1相关寄存器 ADC相关寄存器

定时/计数器2相关寄存器 端口设置相关寄存器 UART1相关寄存器

定时/计数器0和1相关寄存器 I2C相关寄存器 RGB LED PWM相关寄存器 Flash-ROM相关寄存器 USB相关寄存器

7

xSFR 其它 0xE8 0xD0 0、8

ANA_PIN

1、9

PIN_FUNC

2、A

PORT_CFG

3、B

CMP_DCDC

4、C

5、D

6、E

HB_RX_LEN I2CS_DATA D2_EP6T_L D2_RX_LEN D2_EP6RES D1_EP6T_L D1_RX_LEN D1_EP6RES D0_EP6T_L D0_RX_LEN D0_EP6RES

7、F

HB_STATUS HB_ADDR D2_STATUS D2_ADDR D1_STATUS D1_ADDR D0_STATUS D0_ADDR

0xD8 LED_INT_ADJ LED_RED_ADJ LED_GRE_ADJ LED_BLU_ADJ LED_FRA_STA LED_COL_CNT

LED_CTRL HB_EP1T_L HB_EP1RES D2_EP1T_L D2_EP1RES D1_EP1T_L D1_EP1RES D0_EP1T_L D0_EP1RES

LED_CYCLE I2CS_STAT I2CS_CTRL D2_EP2T_L D2_EP2RES D1_EP2T_L D1_EP2RES D0_EP2T_L D0_EP2RES

LED_FRAME USB_IE I2CS_DEV_A D2_EP3T_L D2_EP3RES D1_EP3T_L D1_EP3RES D0_EP3T_L D0_EP3RES

USB_CTRL HB_EP4RES D2_EP_MOD D2_EP4RES D1_EP_MOD D1_EP4RES D0_EP_MOD D0_EP4RES

USB_IF I2CS_ADDR D2_EP5T_L D2_EP5RES D1_EP5T_L D1_EP5RES D0_EP5T_L D0_EP5RES

0x38 HB_EP0T_L 0x30 HB_EP0RES 0x28 D2_EP0T_L 0x20 D2_EP0RES 0x18 D1_EP0T_L 0x10 D1_EP0RES 0x08 D0_EP0T_L 0x00 D0_EP0RES

5.2 SFR/xSFR分类和复位值

表5.2 SFR和xSFR描述和复位值

功能分类

B ACC A_INV PSW

系统设置

相关寄存器 CHIP_ID

DPH DPL DPTR SP WDOG_COUNT RESET_KEEP

时钟、睡眠 POWER_CFG 及电源控制 CLOCK_CFG 相关寄存器 WAKE_CTRL

PCON CMP_DCDC IP_EX

中断控制 IE_EX 相关寄存器 IP

IE GLOBAL_CFG

名称

地址 F0h E0h FDh D0h B1h A1h A1h 83h 82h 82h 81h FFh FEh BAh B9h A9h 87h E9h E8h B8h A8h

B寄存器 累加器

累加器的高低位倒置值 程序状态寄存器

全局配置寄存器(引导程序状态下) 全局配置寄存器(应用程序状态下) 芯片ID识别码(只读) 安全模式控制寄存器(只写) 数据地址指针高8位 数据地址指针低8位 DPL和DPH组成16位SFR 堆栈指针 看门狗计数寄存器

复位保持寄存器(上电复位状态下) 电源管理配置寄存器 系统时钟配置寄存器 睡眠唤醒控制寄存器

电源控制寄存器(上电复位状态下) 扩展中断优先级控制寄存器 扩展中断使能寄存器 中断优先级控制寄存器 中断使能寄存器

描述

复位值 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0010 0000b 0000 0000b 0101 0110b 0000 0000b 0000 0000b 0000 0000b 0000h 0000 0111b 0000 0000b 0000 0000b 0000 0xxxb 1000 0011b 0000 0000b 0001 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b

SAFE_MOD

21EBh 比较器和DC-DC控制寄存器

8

GPIO_IE ROM_DATA_HH ROM_DATA_HL ROM_DATA_HI ROM_BUF_MOD ROM_DAT_BUF

ROM_STATUS

Flash-ROM

ROM_CTRL

相关寄存器

ROM_ADDR_H

ROM_ADDR_L ROM_ADDR ROM_DATA_LH ROM_DATA_LL ROM_DATA_LO XBUS_AUX P7 P0_DIR_PU P0_MOD_OC P4_DIR_PU P4_MOD_OC P4_LED_KEY P6_DIR P6_OUT_PU P6_IN P5_DIR P5_OUT_PU

端口设置

P3_DIR_PU

相关寄存器

P3_MOD_OC

P2_DIR_PU P2_MOD_OC P1_DIR_PU P1_MOD_OC P4 P3 P2 P1 P0 PORT_CFG PIN_FUNC ANA_PIN

定时/计数器0和1

TH1 TH0 P5_IN

B2h 8Fh 8Eh 8Eh 8Fh 8Eh 86h 86h 85h 84h 84h 85h 84h 84h A2h F1h C5h C4h C3h C2h C1h AFh AEh ADh ACh ABh AAh 97h 96h 95h 94h 93h 92h C0h B0h A0h 90h 80h

GPIO中断使能寄存器

flash-ROM数据寄存器高字的高字节(只读) flash-ROM数据寄存器高字的低字节(只读) ROM_DATA_HL和ROM_DATA_HH组成16位SFR flash-ROM擦写操作的缓冲区模式寄存器 flash-ROM擦写操作的数据缓冲寄存器 flash-ROM状态寄存器(只读) flash-ROM控制寄存器(只写) flash-ROM地址寄存器高字节 flash-ROM地址寄存器低字节

ROM_ADDR_L和ROM_ADDR_H组成16位SFR flash-ROM数据寄存器低字的高字节(只读) flash-ROM数据寄存器低字的低字节(只读) ROM_DATA_LL和ROM_DATA_LH组成16位SFR 外部总线辅助设置寄存器 P7端口输入输出寄存器

P0端口方向控制和上拉使能寄存器 P0端口输出模式寄存器

P4端口方向控制和上拉使能寄存器 P4端口输出模式寄存器

P4端口LED限流和键盘模式寄存器 P6端口方向控制寄存器

P6端口输出数据和上拉使能寄存器 P6端口输入寄存器 P5端口方向控制寄存器

P5端口输出数据和上拉使能寄存器 P5端口输入寄存器

P3端口方向控制和上拉使能寄存器 P3端口输出模式寄存器

P2端口方向控制和上拉使能寄存器 P2端口输出模式寄存器

P1端口方向控制和上拉使能寄存器 P1端口输出模式寄存器 P4端口输入输出寄存器 P3端口输入输出寄存器 P2端口输入输出寄存器 P1端口输入输出寄存器 P0端口输入输出寄存器

0000 0000b xxxx xxxxb xxxx xxxxb xxxxh xxxx xxxxb xxxx xxxxb 0000 0000b 0000 0000b xxxx xxxxb xxxx xxxxb xxxxh xxxx xxxxb xxxx xxxxb xxxxh 0000 0000b 00PP 0011b 1111 1111b 1111 1111b 1111 1111b 1111 1111b 0000 0000b 0000 0000b 0000 0000b PPPP PPPPb 0000 0000b 0000 0000b PPPP PPPPb 1111 1111b 1111 1111b 1111 1111b 1111 1111b 1111 1111b 1111 1111b 1111 1111b 1111 1111b 1111 1111b 1111 1111b 1111 1111b 0000 0000b 0000 0000b 0000 0000b xxxx xxxxb xxxx xxxxb

21EAh 端口中断和唤醒配置寄存器 21E9h 引脚功能选择寄存器 21E8h 模拟引脚数字输入禁止寄存器 8Dh 8Ch

Timer1计数高字节 Timer0计数高字节

9

相关寄存器 TL1

TL0 TMOD TCON

SBUF UART0

相关寄存器 SCON

T2CAP1H T2CAP1L T2CAP1 TH2

TL2

定时/计数器

T2COUNT

2相关寄存器

RCAP2H

RCAP2L RCAP2 T2MOD T2CON SPI0_SETUP SPI0_S_PRE

SPI0_CK_SE SPI0

相关寄存器 SPI0_CTRL

SPI0_DATA SPI0_STAT SIF1

SBAUD1 UART1

相关寄存器 SBUF1

SCON1 SPI1_CK_SE

SPI1_CTRL SPI1

相关寄存器 SPI1_DATA

SPI1_STAT ADC_CHAN

ADC_DAT_H

ADC

ADC_DAT_L

相关寄存器

ADC_DAT

ADC_CTRL I2CS_INT_ST I2CX_INT

I2CS_STAT

I2C从机

I2CS_DATA

相关寄存器

I2CS_ADDR

I2CS_DEV_A I2CS_CTRL

8Bh 8Ah 89h 88h 99h 98h CFh CEh CEh CDh CCh CCh CBh CAh CAh C9h C8h FCh FBh FBh FAh F9h F8h BFh BEh BDh BCh B7h B6h B5h B4h F6h F5h F4h F4h F3h BBh B3h

Timer1计数低字节 Timer0计数低字节 Timer0/1方式寄存器 Timer0/1控制寄存器 UART0数据寄存器 UART0控制寄存器

Timer2捕捉1数据高字节(只读) Timer2捕捉1数据低字节(只读) T2CAP1L和T2CAP1H组成16位SFR Timer2计数器高字节 Timer2计数器低字节 TL2和TH2组成16位SFR

计数重载/捕捉2数据寄存器高字节 计数重载/捕捉2数据寄存器低字节 RCAP2L和RCAP2H组成16位SFR Timer2方式寄存器 Timer2控制寄存器 SPI0设置寄存器

SPI0从机模式预置数据寄存器 SPI0时钟分频设置寄存器 SPI0控制寄存器 SPI0数据收发寄存器 SPI0状态寄存器 UART1中断状态寄存器 UART1波特率设置寄存器 UART1数据寄存器 UART1控制寄存器 SPI1时钟分频设置寄存器 SPI1控制寄存器 SPI1数据收发寄存器 SPI1状态寄存器

ADC模拟信号通道选择寄存器 ADC结果数据的高字节(只读) ADC结果数据的低字节(只读)

ADC_DAT_L和ADC_DAT_H组成16位SFR ADC控制和状态寄存器

I2CS从机状态寄存器I2CS_STAT的映射 I2C和RGB LED的中断请求寄存器

xxxx xxxxb xxxx xxxxb 0000 0000b 0000 0000b xxxx xxxxb 0000 0000b xxxx xxxxb xxxx xxxxb xxxxh 0000 0000b 0000 0000b 0000h 0000 0000b 0000 0000b 0000h 0000 0000b 0000 0000b 0000 0000b 0010 0000b 0010 0000b 0000 0010b xxxx xxxxb 0000 1000b 0000 0000b xxxx xxxxb xxxx xxxxb 0000 0000b 0010 0000b 0000 0010b xxxx xxxxb 0000 1000b 0000 0000b 0000 xxxxb xxxx xxxxb 0xxxh x000 000xb 0000 1100b 0000 0000b 0000 1100b xxxx xxxxb xxxx xxxxb 0000 0000b 0000 0x00b

223Ah I2CS从机状态寄存器 2236h I2CS从机数据收发寄存器 2235h I2CS从机数据地址寄存器(只读) 2233h I2CS从机设备地址寄存器 2232h I2CS从机控制寄存器

10

I2CS_DMA_L I2CS_DMA_H D0_EP0RES D0_EP1RES D0_EP2RES D0_EP3RES D0_EP4RES D0_EP5RES

USB

D0_ADDR

功能子设备

D0_EP0T_L

D0

D0_EP1T_L

相关寄存器

D0_EP2T_L

D0_EP3T_L D0_EP_MOD D0_EP5T_L D0_EP6T_L D0_RX_LEN D0_STATUS D1_EP0RES D1_EP1RES D1_EP2RES D1_EP3RES D1_EP4RES D1_EP5RES

USB

D1_ADDR

功能子设备

D1_EP0T_L

D1

D1_EP1T_L

相关寄存器

D1_EP2T_L

D1_EP3T_L D1_EP_MOD D1_EP5T_L D1_EP6T_L D1_RX_LEN D1_STATUS D2_EP0RES

D2_EP1RES

USB

D2_EP2RES

功能子设备

D2_EP3RES

D2

D2_EP4RES

相关寄存器

D2_EP5RES

D2_EP6RES D1_EP6RES D0_EP6RES

2139h I2CS从机缓冲区起始地址低字节 2138h I2CS从机缓冲区起始地址高字节 2200h USBD0端点0控制寄存器 2201h USBD0端点1控制寄存器 2202h USBD0端点2控制寄存器 2203h USBD0端点3控制寄存器 2204h USBD0端点4控制寄存器 2205h USBD0端点5控制寄存器 2206h USBD0端点6控制寄存器 2207h USBD0设备地址寄存器 2208h USBD0端点0发送长度寄存器 2209h USBD0端点1发送长度寄存器 220Ah USBD0端点2发送长度寄存器 220Bh USBD0端点3发送长度寄存器 220Ch USBD0端点模式控制寄存器 220Dh USBD0端点5发送长度寄存器 220Eh USBD0端点6发送长度寄存器 220Eh USBD0接收长度寄存器(只读) 220Fh USBD0状态寄存器 2210h USBD1端点0控制寄存器 2211h USBD1端点1控制寄存器 2212h USBD1端点2控制寄存器 2213h USBD1端点3控制寄存器 2214h USBD1端点4控制寄存器 2215h USBD1端点5控制寄存器 2216h USBD1端点6控制寄存器 2217h USBD1设备地址寄存器 2218h USBD1端点0发送长度寄存器 2219h USBD1端点1发送长度寄存器 221Ah USBD1端点2发送长度寄存器 221Bh USBD1端点3发送长度寄存器 221Ch USBD1端点模式控制寄存器 221Dh USBD1端点5发送长度寄存器 221Eh USBD1端点6发送长度寄存器 221Eh USBD1接收长度寄存器(只读) 221Fh USBD1状态寄存器 2220h USBD2端点0控制寄存器 2221h USBD2端点1控制寄存器 2222h USBD2端点2控制寄存器 2223h USBD2端点3控制寄存器 2224h USBD2端点4控制寄存器 2225h USBD2端点5控制寄存器 2226h USBD2端点6控制寄存器

xxxx xxxxb 000x xxxxb 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0xxx xxxxb 0xxx xxxxb 0xxx xxxxb 0xxx xxxxb 0000 0000b 00xx xxxxb 00xx xxxxb 0xxx xxxxb 0001 1xxxb 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0xxx xxxxb 0xxx xxxxb 0xxx xxxxb 0xxx xxxxb 0000 0000b 00xx xxxxb 00xx xxxxb 0xxx xxxxb 0001 1xxxb 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b

11

D2_ADDR D2_EP0T_L D2_EP1T_L D2_EP2T_L D2_EP3T_L D2_EP_MOD D2_EP5T_L D2_EP6T_L D2_RX_LEN D2_STATUS HB_EP0RES HB_EP1RES HB_EP4RES HB_ADDR

HB_EP0T_L USB

全局和hub HB_EP1T_L 相关寄存器 USB_IE

USB_CTRL USB_IF HB_RX_LEN HB_STATUS LED_STATUS LED_DMA_H LED_DMA_L LED_DMA LED_PWM_OE LED_COMMON

2227h USBD2设备地址寄存器 2228h USBD2端点0发送长度寄存器 2229h USBD2端点1发送长度寄存器 222Ah USBD2端点2发送长度寄存器 222Bh USBD2端点3发送长度寄存器 222Ch USBD2端点模式控制寄存器 222Dh USBD2端点5发送长度寄存器 222Eh USBD2端点6发送长度寄存器 222Eh USBD2接收长度寄存器(只读) 222Fh USBD2状态寄存器 2230h USBHB端点0控制寄存器 2231h USBHB端点1控制寄存器 2234h USBHB端点4控制寄存器 2237h USBHB设备地址寄存器 2238h USBHB端点0发送长度寄存器 2239h USBHB端点1发送长度寄存器 223Bh USB中断使能寄存器 223Ch USB控制寄存器 223Dh USB中断标志寄存器 223Eh USBHB接收长度寄存器(只读) 223Fh USBHB状态寄存器 F7h C7h C6h C6h A7h A6h

RGB LED状态寄存器

RGB LED缓冲区当前地址高字节 RGB LED缓冲区当前地址低字节 LED_DMA_L和LED_DMA_H组成16位SFR RGB LED驱动PWM引脚使能寄存器 RGB LED驱动COMMON引脚选择寄存器

0000 0000b 0xxx xxxxb 0xxx xxxxb 0xxx xxxxb 0xxx xxxxb 0000 0000b 00xx xxxxb 00xx xxxxb 0xxx xxxxb 0001 1xxxb 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0xxx xxxxb 00xx xxxxb 0010 0000b 0000 011xb 0000 x000b 0xxx xxxxb 0001 1xxxb 0001 xxxxb xxxx xxxxb xxxx xxxxb xxxxh 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b 0000 0000b

LED_COL_CNT 21DDh RGB LED色彩计数器寄存器(只读)

RGB LED

LED_FRA_STA 21DCh RGB LED帧状态寄存器(只读)

相关寄存器

LED_BLU_ADJ 21DBh RGB LED蓝色调节寄存器

LED_GRE_ADJ 21DAh RGB LED绿色调节寄存器 LED_RED_ADJ 21D9h RGB LED红色调节寄存器 LED_INT_ADJ 21D8h RGB LED亮度调节寄存器 LED_FRAME LED_CYCLE LED_CTRL

21D3h RGB LED帧配置寄存器 21D2h RGB LED周期配置寄存器 21D1h RGB LED控制寄存器

5.3 通用8051寄存器

表5.3.1 通用8051寄存器列表

名称 A_INV B A、ACC

地址

FDh 累加器的高低位倒置值 F0h B寄存器 E0h 累加器

描述

复位值 00h 00h 00h

12

PSW GLOBAL_CFG CHIP_ID SAFE_MOD PCON DPH DPL DPTR SP

B寄存器(B):

位 [7:0]

名称 B

访问 RW

描述

算术运算寄存器,主要用于乘法和除法运算,可按位寻址

复位值 00h

D0h 程序状态寄存器 B1h

全局配置寄存器(引导程序状态下) 全局配置寄存器(应用程序状态下)

00h 20h 00h 56h 00h 10h 00h 00h 0000h 07h

A1h 芯片ID识别码(只读) A1h 安全模式控制寄存器(只写) 87h 电源控制寄存器(上电复位状态下) 83h 数据地址指针高8位 82h 数据地址指针低8位 82h DPL和DPH组成16位SFR 81h 堆栈指针

A累加器(A、ACC):

位 [7:0]

名称 A/ACC

访问 RW

描述

算术运算累加器,可按位寻址

复位值 00h

程序状态寄存器(PSW): 位

名称

访问

描述

进位标志位:执行算术运算和逻辑运算指令时,用于记录最高位的进位或者借位;进行8位加法运算时,最高位进位,则该位置位,否则清零;进行8位减法运算时,若借位,则该位置位,否则清零;逻辑指令可使该位置位或清零

辅助进位标志位:记录加减法运算时,低4位向高4位有进位或借位,AC置位,否则清零

可按位寻址的通用标志位0:使用者可自己定义,可软件清零或置位 寄存器组选择位高位 寄存器组选择位低位

溢出标志位:加减法运算时,运算结果超过8位二进制数,则OV置1,标志溢出,否则清0

可按位寻址的通用标志位1:使用者可自己定义,可软件清零或置位 奇偶标志位:记录指令执行后累加器A中1的奇偶性,奇数个1则P置位,偶数个1则P清零

复位值

7 CY RW 0

6 5 4 3 2 1 0

AC F0 RS1 RS0 OV F1 P

RW RW RW RW RW RW RO

0 0 0 0 0 0 0

处理器的状态保存在状态寄存器PSW中,PSW支持按位寻址。状态字中包括进位标志位,用于BCD码处理的辅助进位标志位,奇偶标志位,溢出标志位,还有用于工作寄存器组选择的RS0和RS1。工作寄存器组所在的区域都可以通过直接或者间接方式进行访问。

表5.3.2 RS1和RS0工作寄存器组选择表

RS1 0 0 1

RS0 0 1 0

工作寄存器组 0组(00h-07h) 1组(08h-0Fh) 2组(10h-17h)

13

1

操作 ADD ADDC SUBB MUL DIV DA A RRC A RLC A CJNE

CY X X X 0 0 X X X X

OV X X X X X

1 AC X X X

操作 SETB C CLR C CPL C MOV C, bit ANL C, bit ANL C,/bit ORL C, bit ORL C,/bit

3组(18h-1Fh)

CY 1 0 X X X X X X

OV

AC

表5.3.3 影响标志位的操作(X表示标志位与操作结果有关)

数据地址指针(DPTR):

位 [7:0] [7:0]

名称 DPL DPH

访问 RW RW

数据指针低字节 数据指针高字节

描述

复位值 00h 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开始。

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

保留

Boot loader状态位,用于区分ISP引导程序状态或者应用程序状态:电源上电时置1,软件复位时清0。 对于有ISP引导程序的芯片,该位为1说明从未软件复位过,通常是上电后运行的ISP引导程序状态;该位为0说明已经软件复位过,通常是应用程序状态 软件复位控制位:置1导致软件复位,硬件自动清零 Flash-ROM写允许位:

描述

复位值 00b

5 bBOOT_LOAD RO 1

4 3

bSW_RESET bCODE_WE

RW RW

0 0

14

该位为0则写保护;为1则Flash-ROM可写可擦

2

bDATA_WE

RW

Flash-ROM的DataFlash区域写允许位:

该位为0则写保护;为1则DataFlash区域可写可擦 MOVX_@R0/R1 指令访问范围控制位:

该位为0 允许访问全部xdata区域xRAM/xSFR; 该位为1 则专用于访问xSFR,不能访问xRAM

看门狗复位使能位:该位为0看门狗只用作定时器;该位为1允许计时溢出时产生看门狗复位

0

1 bXIR_XSFR RW 0

0 bWDOG_EN RW 0

安全模式控制寄存器(SAFE_MOD):

位 [7:0]

名称 SAFE_MOD

访问 WO

描述

用于进入或者终止安全模式

复位值 00h

部分SFR仅在安全模式下才能写入数据,而在非安全模式下总是只读状态。进入安全模式步骤: (1)、向该寄存器写入55h; (2)、接着向该寄存器写入AAh;

(3)、此后约13到23个系统主频周期都处于安全模式下,该有效期内可以改写一个或多个安全类

SFR或普通SFR

(4)、超出上述有效期后自动终止安全模式

(5)、或者再向该寄存器写任意值可以提前终止安全模式

6、存储器结构

6.1 存储器空间

CH555寻址空间分为程序存储空间、内部数据存储空间、外部数据存储空间、只读和OTP空间。

图6.1 存储器结构图

15

Internal Data Address Space FFH 80H 7FH 00H

Upper 128 bytes internal RAM (indirect addressing by @R0/R1) Lower 128 bytes internal RAM (direct or indirect addressing)

SFR

(Direct addressing)

OTP data

Read Only information Program Address Space Configuration information

ROM_CFG_ADDR Boot Loader Code Flash

BOOT_LOAD_ADDR Data Flash or Code Flash

DATA_FLASH_ADDR

Application Code Flash

FFFFH FFFEH FFFDH

F400H F3FFH

F000H EFFFH

0000H

03FH 020H 01FH 000H

External Data Address Space FFFFH

4000H 3FFFH

2000H 1FFFH

0000H

Reserved area @xdata xSFR area @xdata

(indirect addressing by MOVX)

8KB on-chip expanded xRAM @xdata (indirect addressing by MOVX)

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合并用于保存单一应用程序代码。

配置信息Configuration Information共16位数据,由编程器根据需要设定,参考表6.1。

表6.2 flash-ROM配置信息描述 位地址 15

位名称 Code_Protect

说明

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

0-允许读出;1-禁止编程器读出,程序保密 使能BootLoader引导代码启动模式: 0-从0000h地址的应用程序启动; 1-从F400h地址的引导程序启动

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

0-标准短复位;1-宽复位,额外增加44mS复位时间 使能P7.1作为手工复位输入引脚:0-禁止;1-使能RST# 保留 保留

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

建议值 0/1

14 No_Boot_Load 1

13 12 11 10 9

En_Long_Reset En_P71_RESET

Must_1

0 0 0 0 1

16

8 [7:3]

Must_0 All_0 LV_RST_VOL (Vpot)

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

选择电源低压检测复位模块LVR的门限电压(误差5%): 000选择2.5V;001选择2.7V;010选择2.9V;011选择3.1V;100选择3.9V;101选择4.1V;110选择4.3V;111选择4.5V

0 00000b [2:0] 000b

6.3 数据存储空间

内部数据存储空间共256字节,如图6.1所示,已全部用于SFR和iRAM,其中iRAM用于堆栈和快速数据暂存,可细分为工作寄存器R0-R7、位变量bdata、字节变量data、idata等。

外部数据存储空间共64KB,如图6.1所示,除了部分用于16KB片内扩充xRAM和xSFR,剩余的4000h到FFFFh地址范围是保留区域。

只读信息和OTP数据各32字节,如图6.1所示,需要通过专用操作实现存取。

6.4 flash-ROM寄存器

表6.4 flash-ROM操作寄存器列表

名称 ROM_DATA_HH ROM_DATA_HL ROM_DATA_HI ROM_BUF_MOD ROM_DAT_BUF ROM_STATUS ROM_CTRL ROM_ADDR_H ROM_ADDR_L ROM_ADDR ROM_DATA_LH ROM_DATA_LL ROM_DATA_LO

地址 8Fh 8Eh 8Eh 8Fh 8Eh 86h 86h 85h 84h 84h 85h 84h 84h

描述

flash-ROM数据寄存器高字的高字节(只读) flash-ROM数据寄存器高字的低字节(只读) ROM_DATA_HL和ROM_DATA_HH组成16位SFR flash-ROM擦写操作的缓冲区模式寄存器 flash-ROM擦写操作的数据缓冲寄存器 flash-ROM状态寄存器(只读) flash-ROM控制寄存器(只写) flash-ROM地址寄存器高字节 flash-ROM地址寄存器低字节

ROM_ADDR_L和ROM_ADDR_H组成16位SFR flash-ROM数据寄存器低字的高字节(只读) flash-ROM数据寄存器低字的低字节(只读) ROM_DATA_LL和ROM_DATA_LH组成16位SFR

复位值 xxh xxh xxxxh xxh xxh 00h 00h xxh xxh xxxxh xxh xxh xxxxh

flash-ROM地址寄存器(ROM_ADDR):

位 [7:0] [7:0]

名称 ROM_ADDR_H ROM_ADDR_L

访问 RW RW

flash-ROM地址高字节 flash-ROM地址低字节

描述

复位值 xxh xxh

flash-ROM数据寄存器(ROM_DATA_HI、ROM_DATA_LO):

位 [7:0] [7:0] [7:0] [7:0]

名称 ROM_DATA_HH ROM_DATA_HL ROM_DATA_LH ROM_DATA_LL

访问 RO RO RO RO

描述

flash-ROM数据寄存器高字(16位)的高字节 flash-ROM数据寄存器高字(16位)的低字节 flash-ROM数据寄存器低字(16位)的高字节 flash-ROM数据寄存器低字(16位)的低字节

复位值 xxh xxh xxh xxh

flash-ROM擦写操作的缓冲区模式寄存器(ROM_BUF_MOD):

17

名称

访问

描述

flash-ROM擦写操作(擦除或编程)的缓冲区模式: 该位为0选择数据块编程模式,待写数据存放于由DPTR指向的xRAM中,编程时CH555自动从xRAM依次取出数据暂存于ROM_DAT_BUF再写入flash-ROM,支持1字节到64字节数据长度,实际长度=MASK_ROM_ADR_END-ROM_ADDR_L[5:0]+1;

为1选择单字节编程或者64字节块擦除模式,待写数据直接存放于ROM_DAT_BUF中 保留

在flash-ROM数据块编程模式下,为flash-ROM块编程操作的结束地址的低6位(含该地址); 在flash-ROM单字节编程或者64字节块擦除模式下,为保留,建议为00h

复位值

7 bROM_BUF_BYTE RW x

6 保留 RW x

[5:0] MASK_ROM_ADDR RW 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 6 [5:2] 1 0

名称 保留 bROM_ADDR_OK

保留 bROM_CMD_ERR

保留

访问 RO RO RO RO RO

保留

flash-ROM操作地址有效状态位:

该位为0表示参数无效;为1表示地址有效 保留

flash-ROM操作命令错误状态位:

该位为0表示命令有效;为1表示是未知命令或超时 保留

描述

复位值 1 0 0000b 0 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字节块擦除模式; (5)、可选,设置擦写操作的数据缓冲寄存器ROM_DAT_BUF为00h;

(6)、设置操作控制寄存器ROM_CTRL为0A6h,执行块擦除操作,操作期间程序自动暂停运行; (7)、操作完成后程序恢复运行,此时查询状态寄存器ROM_STATUS可以查看此次操作状态;如果

要擦除多个块,则循环(3)、(4)、(5)、(6)、(7)步骤,步骤(3)、(4)、(5)顺序可对调;

18

(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,执行写操作,操作期间程序自动暂停运行;

(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)。

19

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时,CH555芯片flash-ROM中的代码和数据可以由外部的编程器通过同步串行接口读写;当配置信息Code_Protect=1时,flash-ROM中的代码和数据被保护,无法读出,但是可以被擦除,擦除后重新上电则解除代码保护。

当CH555芯片被预置了BootLoader引导程序后,CH555可以支持USB或者异步串口等多种ISP下载方式加载应用程序;但在没有引导程序的情况下,CH555只能由外部专用编程器写入引导程序或者应用程序。为了支持在板编程,电路中需要预留CH555与编程器之间的4根连接引脚,最少的必要连接引脚是3根:P1.4、P1.6、P1.7。

表6.6.1 与编程器之间的连接引脚

引脚 VDD SCS SCK MISO

GPIO VDD P1.4 P1.7 P1.6

引脚描述

编程状态需要控制芯片电源

编程状态下的片选输入引脚(必要),默认高电平,低电平有效 编程状态下的时钟输入引脚(必要) 编程状态下的数据输出引脚(必要)

6.7 芯片唯一ID号

每只单片机出厂时都具有唯一ID号,即芯片身份识别号。该ID数据及其校验和共8个字节,

存储于只读信息区域的偏移地址为10h的区域中,具体操作请参考C语言例子程序。

表6.7.1 芯片ID地址表

偏移地址 10h、11h 12h、13h 14h、15h 16h、17h

ID数据描述

ID首字数据,依次是ID号的最低字节、次低字节 ID次字数据,依次是ID号的次高字节、高字节

ID末字数据,依次是48位ID号的次最高字节、最高字节 ID首字、次字、末字数据的16位累加和,用于ID校验

ID号可以配合下载工具用于对目标程序进行加密,一般的应用,只需使用到ID号前32位。

7、电源管理、睡眠及复位

7.1 外部电源输入

CH555芯片内置5V到3.3V的低压差电压调整器LDO,产生的3.3V电源用于USB等模块。CH555支持外部5V或者3.3V甚至2.8V电源电压输入,两种电源电压输入模式参考下表。 外部电源电压

VDD引脚电压:外部电压2.8V~5V

V33引脚电压:内部USB电压3.3V (注:睡眠时V33自动短接到VDD)

20

3.3V或2.8V 输入外部3.3V电压到I/O及电压调整器, 短接VDD输入作为内部USB电源, 包括小于3.6V 必须对地接不小于0.1uF退耦电容 必须对地接不小于0.1uF退耦电容 5V 输入外部5V电压到I/O及电压调整器, 包括大于3.6V 必须对地接不小于0.1uF退耦电容

内部电压调整器3.3V输出

及3.3V内部USB电源输入, 必须对地接不小于0.1uF退耦电容

在电源上电或者系统复位后,CH555默认处于运行状态。在性能满足要求的前提下,适当降低系统主频可以降低运行时的功耗。当CH555完全不需要运行时,可以设置PCON中的PD进入睡眠状态,睡眠状态下可以选择通过USB、UART0、UART1、SPI0以及部分GPIO 进行外部唤醒。

7.2 电源和睡眠控制寄存器

表7.2.1 电源和睡眠控制寄存器列表

名称 WDOG_COUNT RESET_KEEP POWER_CFG WAKE_CTRL PCON CMP_DCDC

地址 FFh FEh BAh A9h 87h

看门狗计数寄存器 复位保持寄存器 电源管理配置寄存器 睡眠唤醒控制寄存器 电源控制寄存器

描述

复位值 00h 00h 0xh 00h 10h 00h

21EBh 比较器和DC-DC控制寄存器

看门狗计数寄存器(WDOG_COUNT):

位 [7:0]

名称 WDOG_COUNT

访问 RW

描述

看门狗当前计数,计满0FFh转向00h时溢出,溢出时自动设置中断标志bWDOG_IF_TO为1

复位值 00h

复位保持寄存器(RESET_KEEP):

位 [7:0]

名称 RESET_KEEP

访问 RW

描述

复位保持寄存器,数值可以被人为修改,除了上电复位可将其清零之外,其它任何复位都不影响该数值

复位值 00h

电源管理配置寄存器(POWER_CFG),仅在安全模式下可写:

位 7

名称 bPWR_DN_MODE

访问 RW

描述

选择睡眠下电模式:

该位为0选择下电/深度睡眠模式,更省电但唤醒慢; 该位为1选择待机/正常睡眠模式,唤醒快

电压比较器结果实时输出位,该位为0说明输入电压低于参考电压;该位为1说明输入电压高于参考电压 低压复位检测模块的关闭控制,该位为0启用电源电压检测并在低压时产生复位信号;为1关闭低压检测 USB电源调整器LDO的关闭控制(睡眠时自动关闭): 该位为0则由VDD电源产生3.3V电压用于USB等模块; 为1则禁用LDO并内部短接V33到VDD

内核电压模式:

该位为0是正常电压模式;

该位为1是提升电压模式,性能更好,支持更高主频

复位值 0

6 5

bCMP_RESULT bLV_RST_OFF

RO RW

0 0

4 bLDO_3V3_OFF RW 0

3 bLDO_CORE_VOL RW 0

21

选择在下电/深度睡眠模式下的数据保持电源电压: 000-选择1.5V;001-选择1.57V;010-选择1.64V; 011-选择1.71V;100-选择1.78V;101-选择1.85V; 110-选择1.92V;111-选择1.99V。 上述数值仅供参考,不建议修改

[2:0] MASK_ULLDO_VOL RW xxxb

睡眠唤醒控制寄存器(WAKE_CTRL),仅在安全模式下可写: 位 7 6 5 4 3 2 1 0

名称 保留 bWAK_RXD1_LO bWAK_P1_5_LO bWAK_P1_4_LO bWAK_BY_USB bWAK_P3_3_LO bWAK_INT0_EDGE bWAK_RXD0_LO

访问 RO RW RW RW RW RW RW RW

保留

UART1接收输入低电平唤醒使能,为0禁止唤醒。 根据bUART1_PIN_X=0/1选择RXD1或RXD1_引脚 P1.5低电平唤醒使能,为0禁止唤醒 P1.4低电平唤醒使能,为0禁止唤醒 USB事件唤醒使能,该位为0禁止唤醒 P3.3低电平唤醒使能,为0禁止唤醒。 INT0边沿变化唤醒使能,为0禁止唤醒。 根据bINT0_PIN_X=0/1选择INT0或INT0_引脚 UART0接收输入低电平唤醒使能,为0禁止唤醒。 根据bUART0_PIN_X=0/1选择RXD0或RXD0_引脚

描述

复位值 0 0 0 0 0 0 0 0

其它能够唤醒芯片的信号源还有:

当bP4_IE_LEVEL为1时,P4.0~P4.7其中任一引脚的电平变化将唤醒芯片。 当bP2L_IE_LEVEL为1时,P2.0~P2.3其中任一引脚的电平变化将唤醒芯片。 当bP1L_IE_LEVEL为1时,P1.0~P1.3其中任一引脚的电平变化将唤醒芯片。 当bP0_IE_LEVEL为1时,P0.0~P0.7其中任一引脚的电平变化将唤醒芯片。 当En_P71_RESET为1时启用RST#,P7.1引脚的低电平将唤醒并复位芯片。

电源控制寄存器(PCON): 位 7 6 5 4 3 2 1 0

名称 SMOD 保留 bRST_FLAG1 bRST_FLAG0

GF1 GF0 PD 保留

访问 RW RO R0 R0 RW RW RW RO

描述

当用定时器1产生UART0波特率时,选择UART0模式1、2、3的通讯波特率:0-慢速模式;1-快速模式 保留

芯片最近一次复位标志高位 芯片最近一次复位标志低位

通用标志位1:使用者可自己定义,可软件清零或置位 通用标志位0:使用者可自己定义,可软件清零或置位 睡眠模式使能,置1后睡眠,唤醒后硬件自动清零。 强烈建议在睡眠前关闭全局中断(EA=0)。 保留

复位标志描述

软件复位,来源:bSW_RESET=1并且(bBOOT_LOAD=0或bWDOG_EN=1) 电源上电复位或低压检测复位,来源:VDD引脚电压低于检测电平 看门狗复位,来源:bWDOG_EN=1并且看门狗超时溢出

复位值 0 0 0 1 0 0 0 0

表7.2.2 芯片最近一次复位标志描述

bRST_FLAG1 bRST_FLAG0

0 0 1

0 1 0

22

1

1

外部引脚手工复位,来源:En_P71_RESET=1并且P71输入低电平

比较器和DC-DC控制寄存器(CMP_DCDC):

位 7

名称 bDCDC_ACT

访问 RO

描述

DC-DC输出激活状态(只读):

该位为0表示空闲;该位为1表示正在激活驱动 DC-DC输出允许和极性选择:

该位为0则仅DCO引脚输出bDCDC_ACT信号;

该位为1则DCO引脚输出bDCDC_ACT反极性信号,且P6.4引脚输出由P6_OUT_PU[4]控制极性的bDCDC_ACT信号,当P6_OUT_PU[4]=0时输出正极性,当P6_OUT_PU[4]=1时输出反极性

在MASK_CMP_VREF!=000时选择DC-DC控制器的参考频率(实际输出频率最高为参考频率的1/3):

00-关闭DC-DC控制器;01-选择3MHz参考频率;

10-选择1.5MHz参考频率;11-选择750KHz参考频率。

在MASK_CMP_VREF=000时直接控制bDCDC_ACT状态: 00设置bDCDC_ACT=0;01/10/11设置bDCDC_ACT=1 电压比较器的输入电压源选择(正相输入端): 该位为0选择经分压输入VDD电源; 该位为1选择经分压连接模拟输入通道,与ADC共用,由ADC_CHAN选择外部输入引脚,且bADC_EN=1 比较器的参考电压选择(反相输入端):

000-关闭比较器;001-选择内部参考电压,约1.2V; 010-选择3.3V;011-选择5V;100-选择5.4V; 101-选择5.8V;110-选择6.2V;111-选择6.6V

复位值 0

6 bDCDC_PIN RW 0

[5:4] MASK_DCDC_FREQ RW 00b

3 bCMP_PIN RW 0

[2:0] MASK_CMP_VREF RW 000b

该电压比较器CMP的反相输入端由MASK_CMP_VREF选择参考电压,实际是参考电压保持不变,而调节正相输入端的电阻分压比以模拟出相当于对参考电压的选择,由于分压电阻的存在,正相输入端阻抗在50KΩ~150KΩ之间,该CMP一般主要用于电源电压监测和DC-DC控制。

7.3 复位控制

CH555有5个复位源:上电复位和电源低压检测复位、外部复位、软件复位、看门狗复位,后三者属于热复位。

7.3.1 上电复位和电源低压检测复位

上电复位POR由片内上电检测电路产生,并经由硬件自动延时Tpor以保持复位状态,延时结束后CH555运行。

电源低压检测复位LVR由片内电压检测电路产生。LVR电路持续监控VDD引脚的电源电压,低于检测电平Vpot时产生低压复位,并由硬件自动延时Tpor以保持复位状态,延时结束后CH555运行。

只有上电复位和电源低压检测复位才使CH555重新加载配置信息以及清零RESET_KEEP,其它热复位不影响。

7.3.2 外部复位

外部复位由外加于RST#引脚的低电平产生。当配置信息En_P71_RESET为1,并且RST#引脚上

23

的低电平持续时间大于Trst时触发复位过程。当外加低电平信号撤消后,硬件自动延时Trdl以保持复位状态,延时结束后CH555从0地址开始执行。

注意:RST#引脚同时是外部晶体振荡器的XO引脚,需避免长线增加额外电容或者引入干扰。

7.3.3 软件复位

CH555支持内部软件复位,以便不需要外部干预即可主动复位CPU状态并重新运行。设置全局配置寄存器GLOBAL_CFG中的bSW_RESET为1,即可软件复位,并且自动延时Trdl以保持复位状态,延时结束后CH555从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以保持复位状态,延时结束后CH555从0地址开始执行。

当bWDOG_EN=1时为了避免被看门狗复位,必须及时重置WDOG_COUNT,避免其溢出。

8、系统时钟

8.1 时钟框图

24

图8.1.1 时钟系统及结构图

内部时钟或者外部时钟经过二选一后作为原始时钟Fosc,再经过PLL倍频后产生Fpll高频时钟,最后经过两组分频器分别得到系统时钟Fsys和USB模块的时钟Fusb4x。系统时钟Fsys直接提供给CH555的各个模块。

8.2 寄存器描述

表8.2.1 时钟控制寄存器列表

名称 CLOCK_CFG

地址 B9h

系统时钟配置寄存器

描述

复位值 83h

系统时钟配置寄存器(CLOCK_CFG),仅在安全模式下可写:

位 7

名称 bOSC_EN_INT

访问 RW

描述

内部时钟振荡器使能,该位为1使能内部时钟振荡器并且选用内部时钟;该位为0关闭内部时钟振荡器并且选用外部晶体振荡器提供时钟

外部晶体振荡器使能,该位为1则P7.0/P7.1引脚作为XI/XO并启用振荡器,需在XI和XO之间外接石英晶体或陶瓷振荡器;该位为0关闭外部振荡器 看门狗定时器中断标志位,该位为1表示有中断,由

复位值 1

6 5

bOSC_EN_XT bWDOG_IF_TO

RW RO

0 0

25

定时器溢出信号触发;该位为0表示无中断。该位在重新加载看门狗计数寄存器WDOG_COUNT时或者进入相应的中断服务程序后自动清零

[4:3]

表8.2.2 系统主频选择表

MASK_SYS_CK_SEL

000b 001b 010b 011b 100b 101b 110b 111b

系统主频Fsys Fpll / 512 Fpll / 128 Fpll / 32 Fpll / 8 Fpll / 6 Fpll / 4 Fpll / 3 Fpll / 2

与晶体频率Fxt关系

Fxt / 128 Fxt / 32 Fxt / 8 Fxt / 2 Fxt / 1.5 Fxt / 1 Fxt / 0.75 Fxt / 0.5

当Fosc=24MHz时的Fsys

187.5KHz 750KHz 3MHz 12MHz 16MHz 24MHz 32MHz

保留(48MHz仅测试用)

保留

RO RW

保留

系统时钟频率选择,参考下表8.2.2

00b 011b

[2:0] MASK_SYS_CK_SEL

注:建议优先使用32MHz及以下频率,如确实需要48MHz,建议先设置bLDO_CORE_VOL为1。

8.3 时钟配置

CH555芯片上电后默认使用内部时钟,内部时钟频率是24MHz。可以通过CLOCK_CFG选择内部时钟或者外部晶体振荡器时钟,如果关闭外部晶体振荡器,那么XI、XO引脚可以分别作为P7.0、P7.1普通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)、使P7.0(XI)引脚输出低电平(用于对晶振电容放电,确保P7.1不会低电平导致复位)

P7 = P7 & 0xF0 | 0x06 ; // 启用外部晶振前,P7.0处于低电平,P7.1处于上拉状态 (2)、进入安全模式,步骤一SAFE_MOD = 55h;步骤二SAFE_MOD = AAh;

(3)、用“位或”操作将CLOCK_CFG中的bOSC_EN_XT置1,其它位保持不变,启用晶体振荡器; (4)、延时数毫秒,通常1mS~10mS,等待晶体振荡器工作稳定;

(5)、再次进入安全模式,步骤一SAFE_MOD = 55h;步骤二SAFE_MOD = AAh;

(6)、用“位与”操作将CLOCK_CFG中的bOSC_EN_INT清0,其它位保持不变,切换到外部时钟; (7)、关闭安全模式,向SAFE_MOD写入任意数值提前终止安全模式。

修改系统主频的步骤如下:

(1)、进入安全模式,步骤一SAFE_MOD = 55h;步骤二SAFE_MOD = AAh; (2)、向CLOCK_CFG写入新数值;

(3)、关闭安全模式,向SAFE_MOD写入任意数值提前终止安全模式。

26

备注: (1)、如果使用USB模块,那么Fusb4x必须是48MHz;并且在用USB时,系统主频Fsys不低于6MHz。 (2)、对于要求较高的USB设备应用,建议切换到外部晶体振荡器提供时钟。

(3)、优先使用较低的系统时钟频率Fsys,从而降低系统动态功耗,并使工作温度范围变宽。

9、中断

CH555芯片支持14组中断信号源,包括与标准MCS51兼容的6组中断:INT0、T0、INT1、T1、UART0、T2,以及扩展的8组中断:SPI0、USB、ADC、UART1、LED/I2C、GPIO、WDOG,其中GPIO中断可以从多个I/O引脚中选择。

中断服务程序建议尽量精简,尽量不调用函数和子程序,尽量不读写xdata变量和code常量。

9.1 寄存器描述

表9.1.1 中断向量表

中断源 INT_NO_INT0 INT_NO_TMR0 INT_NO_INT1 INT_NO_TMR1 INT_NO_UART0 INT_NO_TMR2 INT_NO_SPI0 INT_NO_USB

无 INT_NO_ADC INT_NO_UART1

入口地址 中断号 0x0003 0x000B 0x0013 0x001B 0x0023 0x002B 0x0033 0x003B 0x0043 0x004B 0x0053

0 1 2 3 4 5 6 7 8 9 10

外部中断0 定时器0中断 外部中断1 定时器1中断 UART0中断 定时器2中断 SPI0中断 USB中断 保留 ADC中断 UART1中断

中断后根据I2CX_INT数据区分,是以下2个中断的“或”:

RGB LED中断(当bLED_IE_INHIB=1); I2CS中断(当bI2CS_IE_*=1) GPIO中断 看门狗定时器中断

高优先权 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 低优先权

描述

默认优先权顺序

INT_NO_PWM_I2C 0x005B 11

INT_NO_GPIO INT_NO_WDOG

0x0063 0x006B

12 13

表9.1.2 中断相关寄存器列表

名称 IP_EX IE_EX GPIO_IE IP IE

中断使能寄存器(IE): 位

名称

访问

描述

复位值

地址 E9h E8h B2h B8h A8h

扩展中断使能寄存器 GPIO中断使能寄存器 中断优先级控制寄存器 中断使能寄存器

描述

扩展中断优先级控制寄存器

复位值 00h 00h 00h 00h 00h

27

7

EA

RW

全局中断使能控制位,该位为1并且E_DIS为0则允许中断;该位为0屏蔽所有中断请求

全局中断禁用控制位,该位为1屏蔽所有中断请求;该位为0并且EA为1则允许中断。该位通常用于在flash-ROM操作期间临时禁止中断

定时器2中断使能位,该位为1允许T2中断;为0屏蔽 异步串口0中断使能位,该位为1允许UART0中断;为0屏蔽 定时器1中断使能位,该位为1允许T1中断;为0屏蔽 外部中断1使能位,该位为1允许INT1中断;为0屏蔽 定时器0中断使能位,该位为1允许T0中断;为0屏蔽 外部中断0使能位,该位为1允许INT0中断;为0屏蔽

0

6 5 4 3 2 1 0

E_DIS ET2 ES ET1 EX1 ET0 EX0

RW RW RW RW RW RW RW

0 0 0 0 0 0 0

扩展中断使能寄存器(IE_EX): 位 7 6

名称 IE_WDOG IE_GPIO

访问 RW RW RW RW RW RO RW RW

描述

看门狗定时器中断使能位,该位为1允许WDOG中断;为0屏蔽 GPIO中断使能位,该位为1允许GPIO_IE中使能的中断;为0屏蔽GPIO_IE中所有中断

RGB LED、I2CS使能使能位,该位为1允许中断;为0屏蔽 异步串口1中断使能位,该位为1允许UART1中断;为0屏蔽 ADC模数转换中断使能位,该位为1允许ADC中断;为0屏蔽 保留

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

复位值 0 0 0 0 0 0 0 0

5 IE_PWM_I2C 4 3 2 1 0

IE_UART1 IE_ADC 保留 IE_USB IE_SPI0

GPIO中断使能寄存器(GPIO_IE) ,仅在安全模式下可写: 位

名称

访问

描述

GPIO边沿中断模式使能:

该位为0选择电平中断模式,GPIO引脚输入有效电平则bIO_INT_ACT为1并一直请求中断,GPIO输入无效电平时bIO_INT_ACT为0并取消中断请求;

该位为1选择边沿中断模式,GPIO引脚输入有效边沿时产生中断标志bIO_INT_ACT并请求中断,该中断标志无法软件清零,只能在复位时或电平中断模式下或进入相应的中断服务程序时被自动清零

该位为1使能UART1接收引脚中断(电平模式低电平有效,边沿模式下降沿有效);该位为0禁止。根据bUART1_PIN_X=0/1选择RXD1或RXD1_引脚

该位为1使能P1.5中断(电平模式低电平有效,边沿模式下降沿有效);该位为0禁止

该位为1使能P1.4中断(电平模式低电平有效,边沿模式下降沿有效);该位为0禁止

该位为1使能P0.3中断(电平模式低电平有效,边沿模式下降沿有效);该位为0禁止

该位为1使能P5.3、P5.5、P5.7电平变化中断;该位为0

复位值

7 bIE_IO_EDGE RW 0

6 bIE_RXD1_LO RW 0

5 4 3 2

bIE_P1_5_LO bIE_P1_4_LO bIE_P0_3_LO bIE_P5_3X5X7

RW RW RW RW

0 0 0 0

28

禁止

1

bIE_P7_1_LO

RW

当bOSC_EN_XT=0时,该位为1使能P7.1中断(电平模式低电平有效,边沿模式下降沿有效);该位为0禁止 当MASK_CMP_VREF!=000时,该位为1使能电压比较器结果bCMP_RESULT中断(电平模式下低于参考电压有效,边沿模式下从高于参考电压到低于参考电压有效);该位为0禁止 该位为1使能UART0接收引脚中断(电平模式低电平有效,边沿模式下降沿有效);该位为0禁止。根据bUART0_PIN_X=0/1选择RXD0或RXD0_引脚

0

1 bIE_CMP_RES_LO RW 0

0 bIE_RXD0_LO RW 0

其它能够产生GPIO中断的信号源还有:

当bP4_IE_LEVEL为1时,P4.0~P4.7其中任一引脚的电平变化将产生GPIO中断。 当bP2L_IE_LEVEL为1时,P2.0~P2.3其中任一引脚的电平变化将产生GPIO中断。 当bP1L_IE_LEVEL为1时,P1.0~P1.3其中任一引脚的电平变化将产生GPIO中断。 当bP0_IE_LEVEL为1时,P0.0~P0.7其中任一引脚的电平变化将产生GPIO中断。

中断优先级控制寄存器(IP): 位 7 6 5 4 3 2 1 0

名称 PH_FLAG PL_FLAG PT2 PS PT1 PX1 PT0 PX0

访问 RO RO RW RW RW RW RW RW

描述

高优先级中断正在执行标志位 低优先级中断正在执行标志位 定时器2中断优先级控制位 UART0中断优先级控制位 定时器1中断优先级控制位 外部中断1的中断优先级控制位 定时器0中断优先级控制位 外部中断0的中断优先级控制位

复位值 0 0 0 0 0 0 0 0

扩展中断优先级控制寄存器(IP_EX): 位 7 6 5 4 3 2 1 0

IP和IP_EX寄存器用于设定中断优先级,如果某位被置1,则对应的中断源被设定为高优先级;如果某位被清0,则对应的中断源被设为低优先级。对于同级中断源,系统有默认的优先权顺序,默认优先极顺序如表9.1.1所示。其中PH_FLAG和PL_FLAG组合表示当前中断的优先级。

表9.1.3 当前中断优先级状态指示

PH_FLAG 0

PL_FLAG 0

当前无中断

当前中断优先级状态

名称 bIP_LEVEL bIP_GPIO bIP_PWM_I2C bIP_UART1 bIP_ADC 保留 bIP_USB bIP_SPI0

访问 RO RW RW RW RW RO RW RW

描述

当前中断嵌套等级标志位,该位为0则表示无中断或者嵌套2级中断;该位为1则表示当前嵌套1级中断 GPIO中断优先级控制位

RGB LED、I2CS中断优先级控制位 UART1中断优先级控制位 ADC中断优先级控制位 保留

USB中断优先级控制位 SPI0中断优先级控制位

复位值 0 0 0 0 0 0 0 0

29

0 1 1

1 0 1

当前正在执行低优先级中断 当前正在执行高优先级中断 意外状态,未知错误

10、I/O端口

10.1 GPIO简介

CH555提供最多58个I/O引脚,部分引脚具有复用功能。其中,端口P0~P4的输入和输出都可以按位寻址。

如果引脚没有被配置成复用功能,则默认是通用I/O引脚状态。作为通用数字I/O使用时,所有I/O端口都具有真正的“读–修改–写”功能,支持SETB或者CLR等位操作指令独立地改变某些引脚的方向或者端口电平等。

10.2 GPIO寄存器

本节所有的寄存器和位以通用格式表示:小写的“n”表示端口的序号(n=0、1、2、3、4),小写的“m”表示端口的序号(n=5、6),而小写的“x”代表位的序号(x=0、1、2、3、4、5、6、7)。

表10.2.1 GPIO寄存器列表

名称 P0 P0_DIR_PU P0_MOD_OC

P1 P1_DIR_PU P1_MOD_OC

P2 P2_DIR_PU P2_MOD_OC

P3 P3_DIR_PU P3_MOD_OC

P4 P4_DIR_PU P4_MOD_OC P4_LED_KEY P5_IN P5_OUT_PU P5_DIR P6_IN P6_OUT_PU P6_DIR P7 XBUS_AUX PORT_CFG

地址 80h C5h C4h 90h 93h 92h A0h 95h 94h B0h 97h 96h C0h C3h C2h C1h AAh ABh ACh ADh AEh AFh F1h A2h 21EAh

描述

P0端口输入输出寄存器

P0端口方向控制和上拉使能寄存器 P0端口输出模式寄存器 P1端口输入输出寄存器

P1端口方向控制和上拉使能寄存器 P1端口输出模式寄存器 P2端口输入输出寄存器

P2端口方向控制和上拉使能寄存器 P2端口输出模式寄存器 P3端口输入输出寄存器

P3端口方向控制和上拉使能寄存器 P3端口输出模式寄存器 P4端口输入输出寄存器

P4端口方向控制和上拉使能寄存器 P4端口输出模式寄存器

P4端口LED限流和键盘模式寄存器 P5端口输入寄存器

P5端口输出数据和上拉使能寄存器 P5端口方向控制寄存器 P6端口输入寄存器

P6端口输出数据和上拉使能寄存器 P6端口方向控制寄存器 P7端口输入输出寄存器 外部总线辅助设置寄存器 端口中断和唤醒配置寄存器

复位值 FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh 00h PPh 00h 00h PPh 00h 00h P3h 00h 00h

30

PIN_FUNC ANA_PIN

21E9h 21E8h

引脚功能选择寄存器 模拟引脚数字输入禁止寄存器

00h 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

Pm端口输入寄存器(Pm_IN):

位 [7:0]

名称 Pm.0~Pm.7

访问 RW

Pm.x引脚状态输入位

描述

复位值 PPh

Pm端口输出数据和上拉使能寄存器(Pm_OUT_PU):

名称

访问

描述

当Pm_DIR[x]=1时是Pm.x引脚输出数据: 0-输出低电平;1-输出高电平。

当Pm_DIR[x]=0时是Pm.x引脚上拉电阻使能控制: 0-禁止上拉电阻;1-使能上拉电阻

复位值 00h

[7:0] Pm_OUT_PU RW

Pm端口方向控制寄存器(Pm_DIR):

位 [7:0]

由Pn_MOD_OC[x]和Pn_DIR_PU[x]组合实现Pn端口的相关配置,具体如下。

表10.2.2 端口配置寄存器组合 Pn_MOD_OC Pn_DIR_PU

0 0 1 1

0 1 0 1

工作模式描述(如用于P4.x仅当P4_LED_KEY[x]=0时)

高阻输入模式,引脚没有上拉和下拉电阻

推挽输出模式,具有对称驱动能力,可以输出或者吸收较大电流 开漏输出,支持高阻输入,引脚没有上拉电阻

准双向模式(标准8051),开漏输出,支持输入,引脚有上拉电阻,当输出从低电平转高电平时自动驱动2个时钟周期的高电平以加速转换

名称 Pm_DIR

访问 RW

Pm.x引脚方向控制: 0-输入;1-输出

描述

复位值 00h

表10.2.3 P4.x端口且P4_LED_KEY[x]=1时配置寄存器组合

31

P4_MOD_OC P4_DIR_PU

0 0 1 1

0 1 0 1

工作模式描述(当P4_LED_KEY[x]=1时)

高阻输入模式,引脚没有上拉和下拉电阻

推挽输出模式,可以输出较大电流,可以吸收受限电流直接驱动LED 开漏输出,支持电流型键盘信号输入,引脚没有上拉电阻

准双向模式(标准8051),开漏输出,支持电流型键盘信号输入,引脚有上拉电阻,当输出从低电平转高电平时自动驱动2个时钟周期的高电平以加速转换

注:电流型键盘信号内置有硬件去干扰,按键之后软件还需要延时至少500nS再采样P4。

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引脚等效原理图

Pn_DIR_PU[x]Pn_MOD_OC[x]VCC55KVCC9KDelay 2 ClockPn[x]OUTVCCPn_MOD_OC[x]ANA_PIN[x/2]Pn[x]IN0//1VCCADC_CHAN[x]GNDAIN[x]Pn[x] 图中电阻值仅供参考,对于P0.0~P0.7和P3.3及P3.4,图中55K应为5K、图中9K应为60K。

表10.2.4 P5.x端口配置寄存器组合

P5_DIR 0 0 1 1

表10.2.5 P6.x端口配置寄存器组合

P6_DIR P6_OUT_PU bUX_DP_PU_EN 0 0 0

0 0 1

0 1 0

工作模式描述

高阻输入模式,引脚有1000K下拉电阻 输入模式,引脚有1.5K上拉电阻,拉到V33 输入模式,引脚有7.5K上拉电阻,拉到VDD。

P5_OUT_PU

0 1 0 1

工作模式描述

高阻输入模式,引脚没有上拉和下拉电阻 输入模式,引脚有7.5K上拉电阻,拉到VDD 推挽输出模式,输出低电平,可吸收较大电流 推挽输出模式,输出高电平,可输出较大电流

32

如果在VDD高于4V、USB启用时进入下电深度睡眠模式,那么睡眠期间必须用此7.5K上拉代替USB的1.5K上拉,睡前先开7.5K、再关1.5K,醒后先开1.5K、再关7.5K

1 1

0 1

推挽输出模式,输出低电平,可吸收较大电流 推挽输出模式,输出高电平,可输出较大电流

P7端口输入输出寄存器(P7): 位 [7:6] 5 4 3 2

名称 保留 bP7_1_IN bP7_0_IN bP7_1_DIR bP7_0_DIR

访问 RO RO RO RW RW

保留

P7.1引脚数据输入位 P7.0引脚数据输入位 P7.1引脚方向控制: 0-输入;1-输出 P7.0引脚方向控制: 0-输入;1-输出

当bP7_1_DIR =1时是P7.1引脚输出数据: 0-输出低电平;1-输出高电平。

当bP7_1_DIR =0时是P7.1引脚上拉电阻使能控制: 0-禁止上拉电阻;1-使能上拉电阻

当bP7_0_DIR =1时是P7.0引脚输出数据: 0-输出低电平;1-输出高电平。

当bP7_0_DIR =0时是P7.0引脚上拉电阻使能控制: 0-禁止上拉电阻;1-使能上拉电阻

描述

复位值 00b P P 0 0

1 bP7_1_OUT_PU RW 1

0 bP7_0_OUT_PU RW 1

表10.2.6 P7.x端口配置寄存器组合

bP7_?_DIR bP7_?_OUT_PU

0 0 1 1 X

0 1 0 1 X

bOSC_EN_XT

0 0 0 0 1

工作模式描述

高阻输入模式,引脚没有上拉和下拉电阻 输入模式,引脚有上拉电阻

推挽输出模式,输出低电平,可吸收较大电流 推挽输出模式,输出高电平,可输出较大电流 P7.0/P7.1作为XI/XO用于外部晶体振荡器

端口中断和唤醒配置寄存器(PORT_CFG): 位 7 6 5 4 [3:0]

名称 bP4_IE_LEVEL bP2L_IE_LEVEL bP1L_IE_LEVEL bP0_IE_LEVEL

保留

访问 RW RW RW RW RO

描述

P4.0~P4.7任一引脚电平变化的中断使能和唤醒使能: 0-禁止中断和唤醒;1-使能中断和唤醒

P2.0~P2.3任一引脚电平变化的中断使能和唤醒使能: 0-禁止中断和唤醒;1-使能中断和唤醒

P1.0~P1.3任一引脚电平变化的中断使能和唤醒使能: 0-禁止中断和唤醒;1-使能中断和唤醒

P0.0~P0.7任一引脚电平变化的中断使能和唤醒使能: 0-禁止中断和唤醒;1-使能中断和唤醒 保留

复位值 0 0 0 0 0000b

33

模拟引脚数字输入禁止寄存器(ANA_PIN): 位 7

名称 bP70_P71_DI_DIS

访问 RW RW RW RW RW RW RW RW

描述

控制P7.0和P7.1数字输入:

0-允许数字输入;1-禁止数字输入以节约功耗 控制AIN12和AIN13数字输入:

0-允许数字输入;1-禁止数字输入以节约功耗 控制AIN10和AIN11数字输入:

0-允许数字输入;1-禁止数字输入以节约功耗 控制AIN8和AIN9数字输入:

0-允许数字输入;1-禁止数字输入以节约功耗 控制AIN6和AIN7数字输入:

0-允许数字输入;1-禁止数字输入以节约功耗 控制AIN4和AIN5数字输入:

0-允许数字输入;1-禁止数字输入以节约功耗 控制AIN2和AIN3数字输入:

0-允许数字输入;1-禁止数字输入以节约功耗 控制AIN0和AIN1数字输入:

0-允许数字输入;1-禁止数字输入以节约功耗

复位值 0 0 0 0 0 0 0 0

6 bAIN12_13_DI_DIS 5 bAIN10_11_DI_DIS 4 3 2 1 0

bAIN8_9_DI_DIS bAIN6_7_DI_DIS bAIN4_5_DI_DIS bAIN2_3_DI_DIS bAIN0_1_DI_DIS

10.3 GPIO复用与映射

CH555部分I/O引脚具有复用功能,上电后默认均为通用I/O引脚,使能不同功能模块后,相应引脚被配置成各自功能模块对应的功能引脚。

引脚功能选择寄存器(PIN_FUNC): 位 7 6

名称 保留 保留

访问 RO RO RW RW

保留 保留

UART1引脚映射使能位,该位为0则RXD1/TXD1使用P2.6/P2.7;该位为1则RXD1/TXD1使用P1.6/P1.7 UART0引脚映射使能位,该位为0则RXD0/TXD0使用P3.0/P3.1;该位为1则RXD0/TXD0使用P0.2/P0.3 GPIO中断请求激活状态:

当bIE_IO_EDGE=0时,该位为1表示GPIO输入有效电平,将请求中断,为0表示输入无效电平;

当bIE_IO_EDGE=1时,该位作为边沿中断标志,为1表示检测到有效边沿,该位无法软件清零,只能在复位时或电平中断模式下或进入相应的中断服务程序时被自动清零 INT0引脚映射使能位,该位为0则INT0使用P3.2;该位为1则INT0使用P1.2

T2EX/CAP2引脚映射使能位,该位为0则T2EX/CAP2使用P1.1;该位为1则T2EX/CAP2使用P2.5

T2/CAP1引脚映射使能位,该位为0则T2/CAP1使用P1.0;该位为1则T2/CAP1使用P2.4

描述

复位值 0 0 0 0

5 bUART1_PIN_X 4 bUART0_PIN_X

3 bIO_INT_ACT R0 0

2 1 0

bINT0_PIN_X bT2EX_PIN_X bT2_PIN_X

RW RW RW

0 0 0

34

表10.3.1 GPIO引脚复用功能列表

GPIO P0[0] P0[1] P0[2] P0[3] P0[4] P0[5] P0[6] P0[7] P1[0] P1[1] P1[2] P1[3] P1[4] P1[5] P1[6] P1[7] P2[0]~P2[3]

P2[4] P2[5] P2[6] P2[7] P3[0] P3[1] P3[2] P3[3] P3[4] P3[5] P3[6] P3[7] P4[0]~P4[7] P5[0]~P5[7]

P6[0] P6[1] P6[2] P6[3] P6[4] P6[5] P6[6] P6[7] P7[0] P7[1]

其它功能:按从左到右的优先顺序

SCL0/bSCL0、AIN8、P0.0 SDA0/bSDA0、AIN9、P0.1 RXD_/bRXD_、AIN10、P0.2 TXD_/bTXD_、AIN11、P0.3 AIN12、P0.4 AIN13、P0.5 P0.6 P0.7

T2/bT2、CAP1/bCAP1、AIN0、P1.0 T2EX/bT2EX、CAP2/bCAP2、AIN1、P1.1 INT0_/bINT0、AIN2、P1.2 AIN3、P1.3

SCS/bSCS、AIN4、P1.4 MOSI/bMOSI、AIN5、P1.5

MISO/bMISO、RXD1_/bRXD1_、AIN6、P1.6 SCK/bSCK、TXD1_/bTXD1_、AIN7、P1.7 P2.0~P2.3

T2_/bT2_、CAP1_/bCAP1_、P2.4 T2EX_/bT2EX_、CAP2_/bCAP2_、P2.5 RXD1/bRXD1、P2.6 TXD1/bTXD1、P2.7 RXD/bRXD、P3.0 TXD/bTXD、P3.1 INT0/bINT0、P3.2 INT1/bINT1、P3.3 T0/bT0、P3.4

MOSI1/bMOSI1、T1/bT1、P3.5 MISO1/bMISO1、P3.6 SCK1/bSCK1、P3.7 P4.0~P4.7 P5.0~P5.7 bDM、P6.0 bDP、P6.1 P6.2 P6.3 bDCO_、P6.4 P6.5 P6.6 P6.7 XI、P7.0

XO、bRST、bALE、P7.1

35

上表中所述按从左到右的优先顺序,是指多个功能模块竞争使用该GPIO时的优先顺序。

11、外部总线xBUS

CH555不向芯片外部提供总线信号,不支持外部总线,但是可以正常访问片内xRAM。

外部总线辅助设置寄存器(XBUS_AUX): 位 7 6 5 4

名称 bUART0_TX bUART0_RX bSAFE_MOD_ACT bALE_CLK_EN

访问 R0 R0 R0 RW

描述

指示UART0的发送状态,为1表示正在发送过程中 指示UART0的接收状态,为1表示正在接收过程中 指示安全模式状态,为1表示当前正在安全模式下 ALE引脚时钟输出使能,该位为1允许选择P7.1(当P5_DIR[2]=0且bP7_1_DIR=1且bOSC_EN_XT=0时)输出系统主频的分频时钟;该位为0禁止输出时钟信号 当bALE_CLK_EN=1时为ALE引脚时钟频率选择: 该位为0选择12分频;为1选择4分频 当bALE_CLK_EN=0时为通用标志位2: 使用者可自己定义,可软件清零或置位 使能在MOVX_@DPTR指令完成后DPTR自动加1 保留

双DPTR数据指针选择位:

该位为0选择DPTR0;该位为1选择DPTR1 表11.1 P7.1引脚复用ALE输出状态表

bALE_CLK_EN bALE_CLK_SEL bP7_1_OUT_PU@P7.1 0 1 1 X

X 0 1 X

X 0 0 1

P7.1被选择的引脚功能描述

默认状态,禁用ALE

输出系统主频的12分频时钟信号Fsys/12 输出系统主频的4分频时钟信号Fsys/4

输出高电平

复位值 0 0 0 0

3 3 2 1 0

bALE_CLK_SEL

GF2 bDPTR_AUTO_INC

保留 DPS

RW RW RW RO RW

0 0 0 0 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 TH0 TL1 TL0 TMOD

地址 8Dh 8Ch 8Bh 8Ah 89h

Timer1计数高字节 Timer0计数高字节 Timer1计数低字节 Timer0计数低字节 Timer0/1方式寄存器

描述

复位值 xxh xxh xxh xxh 00h

36

TCON

88h

Timer0/1控制寄存器

00h

定时/计数器0/1控制寄存器(TCON): 位 7 6 5 4 3 2 1 0

名称 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

访问 RW RW RW RW RW RW RW RW

描述

Timer1溢出中断标志位,进入定时器1中断后自动清零 Timer1启动/停止位,置1启动,由软件置位或者清零 Timer0溢出中断标志位,进入定时器0中断后自动清零 Timer0启动/停止位,置1启动,由软件置位或者清零 INT1外部中断1的中断请求标志位,进入中断后自动清零 INT1外部中断1触发方式控制位,该位为0选择外部中断为低电平触发;该位为1选择外部中断为下降边沿触发 INT0外部中断0的中断请求标志位,进入中断后自动清零 INT0外部中断0触发方式控制位,该位为0选择外部中断为低电平触发;该位为1选择外部中断为下降边沿触发

复位值 0 0 0 0 0 0 0 0

定时/计数器0/1方式寄存器(TMOD): 位 7

名称 bT1_GATE

访问 RW

描述

门控使能位,控制Timer1启动是否受外部中断信号INT1的影响。该位为0则定时/计数器1是否启动与INT1无关;该位为1则只有INT1引脚为高电平并且TR1为1时才能启动

定时或者计数方式选择位,该位为0工作于定时方式;该位为1工作于计数方式,使用T1引脚的下降沿作为时钟 定时/计数器1模式选择高位 定时/计数器1模式选择低位

门控使能位,控制Timer0启动是否受外部中断信号INT0的影响。该位为0则定时/计数器0是否启动与INT0无关;该位为1则只有INT0引脚为高电平并且TR0为1时才能启动

定时或者计数方式选择位,该位为0工作于定时方式;该位为1工作于计数方式,使用T0引脚的下降沿作为时钟 定时/计数器0模式选择高位 定时/计数器0模式选择低位

Timern工作模式(n=0、1)

模式0:13位定时/计数器n,计数单元由TLn的低5位和THn组成,TLn的高3位无效。计数从13位全为1变成全为0时,设置溢出标志TFn,并需重置初值 模式1:16位定时/计数器n,计数单元由TLn和THn组成。计数从16位全为1变成全为0时,设置溢出标志TFn,并需重置初值

模式2:8位重载定时/计数器n,计数单元使用TLn,THn作为重载计数单元。计数从8位全为1变成全为0时,设置溢出标志TFn,并自动从THn加载初值 模式3:如果是定时/计数器0,那么定时/计数器0被分成2个部分TL0和TH0,TL0作为8位定时/计数器使用,占用Timer0的全部控制位;而TH0也做另一个8位定时器使用,占用Timer1的TR1、TF1和中断资源,并且此时Timer1仍然可用,只是不能使用启动控制位TR1和溢出标志位TF1。

如果是定时/计数器1,那么进入模式3将停止定时/计数器1。

复位值 0

6 5 4 3

bT1_CT bT1_M1 bT1_M0 bT0_GATE

RW RW RW RW

0 0 0 0

2 1 0

bT0_CT bT0_M1 bT0_M0

RW RW RW

0 0 0

表12.1.2 bTn_M1和bTn_M0选择Timern工作模式(n=0、1)

bTn_M1 bTn_M0 0 0 1

0 1 0

1 1

37

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 TL2 T2COUNT T2CAP1H T2CAP1L T2CAP1 RCAP2H RCAP2L RCAP2 T2MOD T2CON

地址 CDh CCh CCh CFh CEh CEh CBh CAh CAh C9h C8h

Timer2计数器高字节 Timer2计数器低字节 TL2和TH2组成16位SFR Timer2捕捉1数据高字节(只读) Timer2捕捉1数据低字节(只读) T2CAP1L和T2CAP1H组成16位SFR 计数重载/捕捉2数据寄存器高字节 计数重载/捕捉2数据寄存器低字节 RCAP2L和RCAP2H组成16位SFR Timer2方式寄存器 Timer2控制寄存器

描述

复位值 00h 00h 0000h xxh xxh xxxxh 00h 00h 0000h 00h 00h

定时/计数器2控制寄存器(T2CON): 位 7

名称 TF2

访问 RW

描述

当bT2_CAP1_EN=0时,是Timer2的溢出中断标志,当Timer2计数从16位全为1变成全为0时,设置该溢出标志为1,需要软件清零;当RCLK=1或者TCLK=1时,该位不会被置1 当bT2_CAP1_EN=1时,是Timer2捕捉1中断标志,由T2有效边沿触发,需要软件清零

Timer2的外部触发标志,当EXEN2=1时由T2EX有效边沿触发置1,需要软件清零

UART0接收时钟选择,该位为0选择Timer1溢出脉冲产生波特率;该位为1选择Timer2溢出脉冲产生波特率

UART0发送时钟选择,该位为0选择Timer1溢出脉冲产生波特率;该位为1选择Timer2溢出脉冲产生波特率

T2EX触发使能位,该位为0忽略T2EX;该位为1使能在T2EX有效边沿时触发重载或者捕捉

Timer2启动/停止位,置1启动,由软件置位或者清零

复位值 0

7 6 5 4 3 2

CAP1F EXF2 RCLK TCLK EXEN2 TR2

RW RW RW RW RW RW

0 0 0 0 0 0

38

1

C_T2

RW

Timer2时钟源选择位,该位为0使用内部时钟;该位为1使用基于T2引脚下降沿的边沿计数

Timer2功能选择位,如果RCLK或者TCLK为1,则该位应该强制为0。该位为0则Timer2作为定时/计数器,并且当计数器溢出或者T2EX电平变化时能够自动重载计数初值;该位为1使能Timer2的捕捉2功能,捕捉T2EX有效边沿

0

0 CP_RL2 RW 0

定时/计数器2方式寄存器(T2MOD): 位 7

名称 bTMR_CLK

访问 RW

描述

已选择快速时钟的T0/T1/T2定时器的最快时钟模式使能,该位为1则使用没有分频的系统主频Fsys作为计数时钟;该位为0则使用分频时钟。该位对选择标准时钟的定时器没有影响 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)

Timer1内部时钟频率选择位,该位为0选标准时钟Fsys/12;为1选快速时钟Fsys/4(bTMR_CLK=0)或Fsys(bTMR_CLK=1) Timer0内部时钟频率选择位,该位为0选标准时钟Fsys/12;为1选快速时钟Fsys/4(bTMR_CLK=0)或Fsys(bTMR_CLK=1) 捕捉模式选择:

X0:从下降沿到下降沿

01:从任意沿到任意沿,即电平变化

Timer2捕捉模式低位

11:从上升沿到上升沿 Timer2捕捉模式高位

Timer2时钟输出使能位,该位为0禁止输出;该位为1使能T2引脚输出时钟,频率为Timer2溢出速率的一半

当RCLK=0、TCLK=0、CP_RL2=1、C_T2=0、T2OE=0时的捕捉1模式使能,该位为1启用捕捉1功能捕捉T2有效边沿;该位为0禁用捕捉1

复位值 0

6 bT2_CLK RW 0

5 4 3 2 1

bT1_CLK bT0_CLK bT2_CAP_M1 bT2_CAP_M0 T2OE

RW RW RW RW RW

0 0 0 0 0

0 bT2_CAP1_EN RW 0

计数重载/捕捉2数据寄存器(RCAP2):

位 [7:0] [7:0]

名称 RCAP2H RCAP2L

访问 RW RW

描述

在定时/计数器模式下是重载值的高字节;在捕捉模式下是CAP2捕捉到的定时器的高字节

在定时/计数器模式下是重载值的低字节;在捕捉模式下是CAP2捕捉到的定时器的低字节

复位值 00h 00h

Timer2计数器(T2COUNT):

位 [7:0] [7:0]

名称 TH2 TL2

访问 RW RW

当前计数器高字节 当前计数器低字节

描述

复位值 00h 00h

Timer2捕捉1数据(T2CAP1):

39

名称

访问 RO RO

描述

CAP1捕捉到的定时器的高字节 CAP1捕捉到的定时器的低字节

复位值 xxh xxh

[7:0] T2CAP1H [7:0] T2CAP1L

12.3 预留

12.4 预留

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

模式2:自动重载8位定时/计数器

40

图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中断可以获取当前定时/计数器状态。

41

图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。

42

(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置位,产生中断。

C_T2bT2_CAP1_ENTransition DetectorT2T2CAP1LT2CAP1H(8bit)(8bit)bTMR_CLK÷4Fsys01bT2_CAP1_EN1bT2_CLK1001TF2/CAP1FC_T20TL2(8bit)TH2(8bit)÷12T2TR2RCAP2L(8bit)RCAP2H(8bit)Timer2 InterruptTransition DetectorT2EXEXEN2EXF2图12.5.2.3 Timer2捕捉模式

13、通用异步收发器UART

13.1 UART简介

CH555芯片提供2个全双工的异步串口:UART0和UART1。

UART0是标准MCS51串口,其数据接收和发送是通过SBUF访问物理上分开的收/发寄存器实现的。写入SBUF的数据装入发送寄存器,对SBUF的读操作则对应于接收缓冲寄存器。

UART1是简化MCS51串口,其数据接收和发送是通过SBUF1访问物理上分开的收/发寄存器实现的。写入SBUF1的数据装入发送寄存器,对SBUF1的读操作则对应于接收缓冲寄存器。UART1相比UART0去掉了多机通讯模式和固定波特率,UART1具有独立的波特率发生器。

13.2 UART寄存器

表13.2.1 UART相关寄存器列表

名称 SBUF SCON SCON1 SBUF1 SBAUD1 SIF1

地址 99h 98h BCh BDh BEh BFh

UART0数据寄存器 UART0控制寄存器 UART1控制寄存器 UART1数据寄存器 UART1波特率设置寄存器 UART1中断状态寄存器

描述

复位值 xxh 00h 00h xxh xxh 00h

13.2.1 UART0寄存器描述 UART0控制寄存器(SCON):

43

位 7 6

名称 SM0 SM1

访问 RW RW

描述

UART0工作方式选择位0,该位为0选择8位数据异步通信;该位为1选择9位数据异步通信

UART0工作方式选择位1,该位为0设置固定波特率;该位为1设置可变波特率,由定时器T1或者T2产生

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

UART0允许接收控制位,该位为0禁止接收;该位为1允许接收 发送数据的第9位,在模式2和3时,TB8用于写入发送数据的第9位,可以是奇偶校验位;在多机通信中,用于表示主机发送的是地址字节还是数据字节,TB8=0为数据,TB8=1为地址

接收数据的第9位,在模式2和3时,RB8用于存放接收数据的第9位;在模式1时,如果SM2=0,那么RB8用于存放接收到的停止位;在模式0时,不使用RB8

发送中断标志位,一个数据字节发送完后由硬件置位,需要软件清零

接收中断标志位,一个数据字节接收有效后由硬件置位,需要软件清零

表13.2.1.1 UART0工作模式选择

SM0 0 0 1 1

在模式1和3下,当RCLK=0并且TCLK=0时,UART0波特率由定时器T1产生。应该设置T1为模式2自动重载8位定时器模式,bT1_CT和bT1_GATE必须都为0,分为以下几类时钟情况。

表13.2.1.2 由T1产生UART0波特率的计算公式 bTMR_CLK

1 1 0 0 X X

在模式1和3下,当RCLK=1或者TCLK=1时,UART0波特率由定时器T2产生。应该设置T2为16位自动重载波特率发生器模式,C_T2和CP_RL2必须都为0,分为以下几类时钟情况。

表13.2.1.3 由T2产生UART0波特率的计算公式

bT1_CLK 1 1 1 1 0 0

SMOD 0 1 0 1 0 1

描述(当bU1U0X2=1时波特率加倍)

TH1 = 256 - Fsys / 32 / 波特率 TH1 = 256 - Fsys / 16 / 波特率 TH1 = 256 - Fsys / 4 / 32 / 波特率 TH1 = 256 - Fsys / 4 / 16 / 波特率 TH1 = 256 - Fsys / 12 / 32 / 波特率 TH1 = 256 - Fsys / 12 / 16 / 波特率

SM1 0 1 0 1

描述

模式0,移位寄存器方式,波特率固定是Fsys/12

模式1,8位异步通信方式,波特率可变,由定时器T1或者T2产生 模式2,9位异步通信方式,波特率是Fsys/128(SMOD=0)或Fsys/32(SMOD=1) 模式3,9位异步通讯方式,波特率可变,由定时器T1或者T2产生

复位值 0 0

5 SM2 RW 0

4 3

REN TB8

RW RW

0 0

2 RB8 RW 0

1 0

TI RI

RW RW

0 0

44

bTMR_CLK

1 0 X

bT2_CLK 1 1 0

描述(当bU1U0X2=1时波特率加倍)

RCAP2 = 65536 - Fsys / 16 / 波特率 RCAP2 = 65536 - Fsys / 2 / 16 / 波特率 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位数据异步通信

UART1/UART0时钟倍频使能:

0-禁用倍频,主频为Fsys;1-启用倍频,主频为2*Fsys,UART1和UART0所有通讯波特率加倍

选择UART1的通讯波特率:0-慢速模式;1-快速模式

UART1允许接收控制位,该位为0禁止接收;该位为1允许接收 发送数据的第9位,在9位数据模式时,TB8用于写入发送数据的第9位,可以是奇偶校验位;在8位数据模式时,TB8忽略 接收数据的第9位,在9位数据模式时,RB8用于存放接收数据的第9位;在8位数据模式时,RB8用于存放接收到的停止位 写1将预置发送中断标志位为1,读操作总是返回0 写1将预置接收中断标志位为1,读操作总是返回0

复位值 0

6 bU1U0X2 5 bU1SMOD 4 3 2 1 0

bU1REN bU1TB8 bU1RB8 bU1TIS bU1RIS

RW RW RW RW RW WO WO

0 0 0 0 0 0 0

UART1波特率由SBAUD1设置产生,根据bU1SMOD的选择分为几种情况: 当bU1SMOD=0时,SBAUD1 = 256 - Fsys / 32 / 波特率; 当bU1SMOD=1时,SBAUD1 = 256 - Fsys / 16 / 波特率。 当bU1U0X2=1时,上述波特率加倍。

UART1中断状态寄存器(SIF1):

位 [7:2] 1 0

名称 保留 bU1TI bU1RI

访问 RO RW RW

保留

发送中断标志位,一个数据字节发送完后由硬件置位,需要软件写1清零(写0到该位将被忽略)

接收中断标志位,一个数据字节接收有效后由硬件置位,需要软件写1清零(写0到该位将被忽略)

描述

复位值 000000b 0 0

注:向中断标志位写1才能清零可以确保只有指定标志位被清零,而不会影响同一寄存器下的其它中断标志(其它中断标志在该写操作之前有可能已是1,或在该写操作期间有可能变成1)。下同。

UART1数据寄存器(SBUF1):

45

位 [7:0]

名称 SBUF1

访问 RW

描述

UART1数据寄存器,包括发送和接收两个物理上分开的寄存器。向SBUF1写数据对应发送数据寄存器;从SBUF1读数据对应接收数据寄存器

复位值 xxh

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)、根据波特率选择bU1SMOD并设置SBAUD1。

(2)、设置SCON1的bU1SM0选择串口1的工作模式。设置bU1REN为1,使能UART1接收。 (3)、可以设置串口1中断或者查询bU1RI和bU1TI的中断状态(向指定位写1才能清零)。 (4)、读写SBUF1实现串口1数据收发,串口接收信号的允许波特率误差不大于 2%。

14、同步串行接口SPI

14.1 SPI简介

CH555芯片提供2组SPI接口,用于与外设之间进行高速的同步数据传输。 SPI0特性:

(1)、支持master主机模式和slave从机模式; (2)、支持模式0和模式3时钟模式;

(3)、可选3线全双工或者2线半双工方式;

(4)、可选MSB高位首先发送或者LSB低位首先发送; (5)、时钟频率可调,最高可达系统主频的一半; (6)、内置1字节接收FIFO和1字节发送FIFO;

(7)、从机模式下支持首字节预加载数据,便于主机在首字节立即获得返回数据。 SPI1特性:

(1)、只支持master主机模式,MSB高位首先发送; (2)、支持模式0和模式3时钟模式;

(3)、可选3线全双工或者2线半双工方式; (4)、时钟频率可调,最高可达系统主频的一半;

14.2 SPI寄存器

表14.2.1 SPI相关寄存器列表

名称 SPI0_SETUP SPI0_S_PRE SPI0_CK_SE SPI0_CTRL SPI0_DATA

地址 FCh FBh FBh FAh F9h

SPI0设置寄存器

SPI0从机模式预置数据寄存器 SPI0时钟分频设置寄存器 SPI0控制寄存器 SPI0数据收发寄存器

描述

复位值 00h 20h 20h 02h xxh

46

SPI0_STAT SPI1_CK_SE SPI1_CTRL SPI1_DATA SPI1_STAT

F8h B7h B6h B5h B4h

SPI0状态寄存器 SPI1时钟分频设置寄存器 SPI1控制寄存器 SPI1数据收发寄存器 SPI1状态寄存器

08h 20h 02h xxh 08h

SPI0设置寄存器(SPI0_SETUP): 位 7 6

名称 bS0_MODE_SLV bS0_IE_FIFO_OV

访问 RW RW

描述

SPI0主从模式选择位,该位为0则SPI0为主机模式;该位为1则SPI0为从机模式/设备模式

从机模式下FIFO溢出中断使能位,该位为1使能FIFO溢出中断;该位为0则FIFO溢出不产生中断

从机模式下接收首字节完成中断使能位,该位为1则从机模式下接收到第一个数据字节时触发中断;该位为0则接收到第一字节时不产生中断

数据字节传输完成中断使能位,该位为1允许字节传输完成中断;该位为0则字节传输完成不产生中断

数据字节的位序控制位,该位为0则MSB高位在前;该位为1则LSB低位在前 保留

从机模式下片选激活状态位,该位为0表示当前没有被选中;该位为1表示当前处于选中状态

从机模式下预加载数据状态位,该位为1表示当前处于片选有效之后、尚未传输数据之前的预加载状态

复位值 0 0

5 bS0_IE_FIRST RW 0

4 3 2 1

bS0_IE_BYTE bS0_BIT_ORDER

保留 bS0_SLV_SELT

RW RW RO R0 R0

0 0 0 0 0

0 bS0_SLV_PRELOAD

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 6 5 4

名称 bS0_MISO_OE bS0_MOSI_OE bS0_SCK_OE bS0_DATA_DIR

访问 RW RW RW RW

描述

SPI0的MISO输出使能控制位,该位为1允许输出;该位为0禁止输出

SPI0的MOSI输出使能控制位,该位为1允许输出;该位为0禁止输出

SPI0的SCK输出使能控制位,该位为1允许输出;该位为0禁止输出

SPI0数据方向控制位,该位为0则输出数据,仅将写FIFO作为有效操作,启动一次SPI传输;该位为1则输入数据,

复位值 0 0 0 0

47

写或读FIFO都作为有效操作,启动一次SPI传输

3

bS0_MST_CLK

RW

SPI0主机时钟模式控制位,该位为0则模式0,SCK空闲时默认低电平;该位为1则模式3,SCK默认高电平 SPI0的2线半双工模式使能位,该位为0则3线全双工方式,包括SCK、MOSI、MISO;该位为1则2线半双工方式,包括SCK、MISO

该位为1清空SPI0中断标志和FIFO,需要软件清零 允许通过FIFO有效操作自动清零字节接收完成中断标志的使能位,该位为1则在FIFO有效读写操作时自动清零字节接收完成中断标志S0_IF_BYTE

0

2 1 0

bS0_2_WIRE bS0_CLR_ALL bS0_AUTO_IF

RW RW RW

0 1 0

SPI0数据收发寄存器(SPI0_DATA):

位 [7:0]

名称 SPI0_DATA

访问 RW

描述

包括发送和接收两个物理上分开的FIFO,读操作对应接收数据FIFO;写操作对应发送数据FIFO,有效读写操作可以启动一次SPI传输

复位值 xxh

SPI0状态寄存器(SPI0_STAT): 位 7

名称 S0_FST_ACT

访问 R0

描述

该位为1表示当前状态是从机模式下接收首字节完成 从机模式下FIFO溢出标志位,该位为1表示FIFO溢出中断;该位为0则无中断。直接位写0清零或寄存器对应位写1清零。当bS0_DATA_DIR=0时由发送FIFO空触发中断;当bS0_DATA_DIR=1时由接收FIFO满触发中断

从机模式下接收首字节完成中断标志位,该位为1则表示接收到首字节。直接位写0清零或寄存器对应位写1清零 数据字节传输完成中断标志位,该位为1则表示一个字节传输完成。直接位写0清零或寄存器对应位写1清零,或者在bS0_AUTO_IF=1时通过FIFO有效操作清零 SPI0空闲标志位,该位为1表示当前没有SPI移位,通常是处于数据字节之间的空档期 SPI0发送FIFO计数,有效值是0或者1 保留

SPI0接收FIFO计数,有效值是0或者1

复位值 0

6 S0_IF_OV RW 0

5 S0_IF_FIRST RW 0

4 S0_IF_BYTE RW 0

3 2 1 0

S0_FREE S0_T_FIFO 保留 S0_R_FIFO

R0 R0 R0 R0

1 0 0 0

14.2.2 SPI1寄存器描述

SPI1状态寄存器(SPI1_STAT):

位 [7:5] 4

名称 保留 bS1_IF_BYTE

访问 RO RW

保留

数据字节传输完成中断标志位,该位为1则表示一个字节传输完成。直接位写0清零或寄存器对应位写1清零,或者在bS1_AUTO_IF=1时通过FIFO有效操作清零 SPI1空闲标志位,该位为1表示当前没有SPI移位,通常是处于数据字节之间的空档期

描述

复位值 000b 0

3 bS1_FREE R0 1

48

[2:0]

保留

RO

保留

000b

SPI1数据收发寄存器(SPI1_DATA):

位 [7:0]

名称 SPI1_DATA

访问 RW

描述

实际是SPI数据移位寄存器,读用于接收数据,写用于发送数据,有效读写操作可以启动一次SPI传输

复位值 xxh

SPI1控制寄存器(SPI1_CTRL): 位 7 6 5

名称 bS1_MISO_OE

保留 bS1_SCK_OE

访问 RW RO RW

描述

SPI1的MISO1输出使能控制位,该位为1允许输出;该位为0禁止输出 保留

SPI1的SCK1输出使能控制位,该位为1允许SCK1输出,如果bS1_2_WIRE=0,那么将同时允许MOSI1输出使能;该位为0禁止输出

SPI1数据方向控制位,该位为0则输出数据,仅将写SPI1_DATA作为有效操作,启动一次SPI传输;该位为1则输入数据,写或读SPI1_DATA都作为有效操作,启动一次SPI传输

SPI1时钟模式控制位,该位为0则模式0,SCK1空闲时默认低电平;该位为1则模式3,SCK1默认高电平 SPI1的2线半双工模式使能位,该位为0则3线全双工方式,包括SCK1、MOSI1、MISO1;该位为1则2线半双工方式,包括SCK1、MISO1

该位为1清空SPI1中断标志和FIFO,需要软件清零 允许通过SPI1_DATA有效操作自动清零字节接收完成中断标志的使能位,该位为1则在SPI1_DATA有效读写操作时自动清零字节接收完成中断标志bS1_IF_BYTE

复位值 0 0 0

4 bS1_DATA_DIR RW 0

3 bS1_MST_CLK RW 0

2 1 0

bS1_2_WIRE bS1_CLR_ALL bS1_AUTO_IF

RW RW RW

0 1 0

SPI1时钟分频设置寄存器(SPI1_CK_SE):

位 [7:0]

名称 SPI1_CK_SE

访问 RW

设置SPI1时钟分频系数

描述

复位值 20h

14.3 SPI传输格式

SPI主机模式支持模式0和模式3两种传输格式,可以通过设置SPI控制寄存器SPIn_CTRL中的位bSn_MST_CLK选择,CH555总是在CLK上升沿采样MISO数据。数据传输格式如下图所示。

模式0:bSn_MST_CLK = 0

图14.3.1 SPI模式0时序图

49

模式3:bSn_MST_CLK = 1

图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从机模式配置

从机模式下,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个串行时钟之后,即首个数据字节传输交换完毕,CH555得到外部SPI主机发来的首字节数据(可能是命令码),外部SPI主机交换得到SPI0_S_PRE中的预置数据(可能是状态值)。寄存器SPI0_S_PRE的位7将在SPI片选有效后的SCK低电平期间自动加载到MISO引脚上,对于SPI模式0,如果CH555预置了SPI0_S_PRE的位7,那么外部SPI主机将在SPI片选有效但尚未传输数据时,就能够通过查询MISO引脚得到SPI0_S_PRE的位7的预置值,从而通过仅仅有效一下SPI片选就能获得SPI0_S_PRE的位7的值。

数据发送过程:

查询S0_IF_BYTE或者等待中断,在每次SPI数据字节传输完成后,写SPI0_DATA寄存器,向

50

FIFO写入要发送的数据。或者等待S0_FREE从0变为1,可以继续发送下一字节。

数据接收过程:

查询S0_IF_BYTE或者等待中断,在每次SPI数据字节传输完成后,读SPI0_DATA寄存器,从FIFO获得接收到的数据。查询S0_R_FIFO可以获知FIFO中是否有剩余字节。

15、模数转换器ADC

15.1 ADC和CMP简介

CH555芯片提供12位的模拟数字转换器,包括模数转换器ADC和电压比较器CMP模块。 该ADC具有14个外部模拟信号输入通道和2个内部输入通道(参考电压),可以分时采集,支持0到VDD模拟输入电压范围。

该CMP的正相输入端有两种输入选择:当bCMP_PIN=1时选择经电阻分压连接到上述ADC模拟输入通道;当bCMP_PIN=0时选择经电阻分压输入VDD电源。反相输入端由MASK_CMP_VREF选择参考电压,该CMP一般主要用于电源电压监测和DC-DC控制,参考7.2节。

15.2 ADC寄存器

表15.2.1 ADC相关寄存器列表

名称 ADC_CTRL ADC_DAT_H ADC_DAT_L ADC_DAT ADC_CHAN

地址 F3h F5h F4h F4h F6h

ADC控制和状态寄存器 ADC结果数据的高字节(只读) ADC结果数据的低字节(只读)

ADC_DAT_L和ADC_DAT_H组成16位SFR ADC模拟信号通道选择寄存器

描述

复位值 xxh 0xh xxh 0xxxh 00h

ADC控制和状态寄存器(ADC_CTRL):

位 [7:6] 5 4 3 2 1 0

表15.2.2 ADC参考时钟频率选择表

bADC_CLK1 bADC_CLK0 ADC参考时钟频率 完成一次ADC所需时间

0 0 1

0 1 0

750KHz 1.5MHz 3MHz

512个Fosc周期 256个Fosc周期 128个Fosc周期

适用范围

Rs<=20KΩ或Cs>=0.08uF Rs<=10KΩ或Cs>=0.08uF VDD>=3V并且

(Rs<=5KΩ或Cs>=0.08uF)

名称 保留 bADC_IF bADC_START bADC_EN 保留 bADC_CLK1 bADC_CLK0

访问 R0 RW RW RW R0 RW RW

保留

ADC转换完成中断标志,该位为1表示一次ADC转

换完成,写1清零或写ADC_CHAN数据时清零 ADC启动控制位,置1启动一次ADC转换,该位在ADC转换完成后自动清零

ADC模块的电源控制位,该位为0表示关闭ADC模块的电源,进入睡眠状态;该位为1表示开启 保留

ADC参考时钟频率选择高位 ADC参考时钟频率选择低位

描述

复位值 00b 0 0 0 0 0 0

搜索更多关于: 8位USB和RGB-LED MS51单片机CH555手册 - 的文档
8位USB和RGB-LED MS51单片机CH555手册 - 图文 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8n2sc1ela87f1wl0k4bu3bj0w6iip0013nu_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top