CH554 Manual English

CH554%20manual%20english

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 76

DownloadCH554 Manual English
Open PDF In BrowserView PDF
8-bit enhanced USB microcontroller
CH554, CH553
Manual
Version: 1E
http://wch.cn
Translated to the English by Blinkinlabs

1. Overview

The CH554 chip is an enhanced E8051 core microcontroller compatible with the MCS51 instruction
set. Its 79% instruction is a single-byte single-cycle instruction, and the average instruction speed is 8
to 15 times faster than the standard MCS51.
CH554 supports up to 24MHz system main frequency, built-in 16K program memory ROM and 256
bytes internal iRAM and 1K bytes of on-chip xRAM, xRAM supports DMA direct memory access.
CH554 has built-in ADC analog-to-digital conversion, touch button capacitance detection, 3 groups of
timers and signal capture and PWM, dual asynchronous serial port, SPI and other functional modules,
support USB-Host host mode and USB-Device device mode.
CH553 is a simplified version of CH554, program memory ROM is 10K, on-chip xRAM is 512 bytes,
asynchronous serial port is only UART0, package form is only SOP16, touch button is only 4 channels,
other is the same as CH554, can refer to CH554 manual and data directly.

Model ROM

RAM

Data
Flash

USB
Host

USB
device

Timer PWM UART SPI

CH554 16KB

1280

128

CH553 10KB

768

Full/low Full/low 3
speed
speed

2

2
1

ADC Touch
inputs

master 4
/slave

6
4

The following is an internal block diagram of CH554, for reference only.

2. Features
•

Core: Enhanced E8051 core compatible with MCS51 instruction set, 79% of its instructions are
single-byte single-cycle instructions, the average instruction speed 8-15 times faster than the
standard MCS51, unique XRAM data fast copy instructions, dual DPTR pointer.

•

ROM: 16KB of multiprogrammable non-volatile memory ROM, can be used for program
storage space; or can be divided into 14KB program memory and 2KB boot code BootLoader /
ISP program area.

•

DataFlash: 128 bytes of non-volatile data memory that can be erased many times, and support
overwriting data in bytes.

•

RAM: 256 bytes internal iRAM for fast data staging and stacking; 1KB on-chip xRAM for
large amounts of data staging and DMA direct memory access.

•

USB: embedded USB controller and USB transceiver, support USB-Host host mode and USBDevice device mode, support USB type-C master-slave detection, support USB 2.0 full speed

12Mbps or low speed 1.5Mbps. Support up to 64 bytes of data packets, built-in FIFO, support
for DMA.
•

Timer: 3 timers, T0 / T1 / T2 are standard MCS51 timers.

•

Capture: Timer T2 extended to support 2-way signal capture.

•

PWM: 2 sets of PWM output, PWM1 / PWM2 2 8-bit PWM output.

•

UART: 2 asynchronous serial ports, both support higher communication baud rate, UART0 is a
standard MCS51 serial port.

•

SPI: SPI controller built-in FIFO, the clock frequency up to half the system clock frequency
Fsys, serial data input and output to support simplex multiplexing, support Master / Slave
master-slave mode.

•

ADC: 4-channel 8-bit A / D analog-to-digital converter that supports voltage comparison.

•

Touch-Key: 6-channel capacitance detection, supports up to 15 touch buttons, support for
independent timer interrupt.

•

GPIO: Supports up to 17 GPIO pins (including XI / XO and RST and USB signal pins).

•

Interrupt: Support 14 groups of interrupt sources, including 6 groups of interrupts compatible
with standard MCS51 (INT0, T0, INT1, T1, UART0, T2), and an extended group of 8 interrupts
(SPI0, TKEY, USB, ADC, UART1, PWMX, GPIO, WDOG). GPIO interrupts can be selected
from seven pins.

•

Watch-Dog: 8-bit watchdog timer WDOG can be preset to support the timer interrupt.

•

Reset: Supports 4 kinds of reset signal source, built-in power-on reset, software reset and
watchdog overflow reset, optional pin external input reset.

•

Clock: Built-in 24MHz clock source, can support external crystal through multiplexing GPIO
pin.

•

Power: Built-in 5V to 3.3V low dropout voltage regulator, supporting 5V or 3.3V or even 2.8V
supply voltage. Support low-power sleep, support USB, UART0, UART1, SPI0 and some GPIO
external wake-up.

•

Chip built-in unique ID number.

3. Package

Package

Plastic body width Pitch spacing

Packaging instructions

Order
model

TSSOP-20

4.40mm

173mil

0.65mm

25mil

Thin 20-foot patch

CH554T

SOP-16

3.9mm

150mil

1.27mm

50mil

Standard 16 foot patch

CH554G

MSOP-10

3.0mm

118mil

0.50mm

19.7mil

Tiny 10-foot patch

CH554E

SOP-16

3.9mm

150mil

1.27mm

50mil

Standard 16 foot patch

CH553G

4. Pins
Package

Pin
TSSOP SOP MSOP name
20
16
10

Other function
names
(Left function is
preferred)

Other function description

19

15

9

VCC

VDD

Power input, need external 0.1uF power
decoupling capacitor.

20

16

10

V33

Internal USB Power Regulator Output and
Internal USB Power Input,
When the power supply voltage is less than
3.6V connect VCC input external power
supply,

When the supply voltage is greater than 3.6V
external 0.1uF power decoupling capacitor
18

14

8

GND

VSS

6

6

5

RST

RST/T2EX_/CAP2_

7

-

-

P1.0

8

9

-

P1.1

17

-

-

P1.2

16

-

-

P1.3

2

2

1

P1.4

3

3

2

P1.5

4

4

3

P1.6

5

5

4

P1.7

10

8

-

P3.0

9

7

-

P3.1

1

1

-

P3.2

11

10

-

P3.3

12

11

-

P3.4

13

-

-

P3.5

14

12

6

P3.6

15

13

7

P3.7

Common ground.

Underlined suffix pin is the same name
without underscores pin mapping.
T2/CAP1/TIN0
RST pin built-in pull-down resistor; other
T2EX/CAP2/TIN1
GPIO default pull-up resistor.
/VBUS2/AIN0
RST: External reset input.
T2: Timer / Counter 2 external count input /
XI/RXD_
clock output.
XO/TXD_
T2EX: Timer / Counter 2 Overload / Capture
Input.
T2_/CAP1_/SCS
CAP1, CAP2: Timer / Counter 2 capture
/TIN2/UCC1/AIN1
MOSI/PWM1/TIN3 / inputs 1,2.
TIN0 ~ TIN5: 0 # ~ 5 # channel touch button
UCC2/AIN2
capacitance detection input.
MISO/RXD1/TIN4
AIN0 ~ AIN3: 0 # ~ 3 # channel ADC analog
signal input.
SCK/TXD1/TIN5
UCC1, UCC2: USB type-C bidirectional
PWM1_/RXD
configuration channel.
VBUS1, VBUS2: USB type-C bus voltage
PWM2_/TXD
detection input.
TXD1_/INT0
XI, XO: external crystal oscillator input,
/VBUS1/AIN3
inverting output.
INT1
RXD, TXD: UART0 serial data input, serial
data output.
PWM2/RXD1_/T0
SCS, MOSI, MISO, SCK: SPI0 interface,
T1
SCS is the chip select input, MOSI is the host
output / slave input, MISO is the host input /
UDP
slave output, SCK is the serial clock.
UDM
PWM1, PWM2: PWM1 output, PWM2
output.
RXD1, TXD1: UART1 serial data input,
serial data output.
INT0, INT1: External interrupt 0, External
interrupt 1 input.
T0, T1: Timer 0, Timer 1 external input.
UDM, UDP: D-, D + signal terminal of a
USB host or USB device.
Note: P3.6 and P3.7 internal use V33 as I / O
power supply, so the high level of its input
and output only to V33 voltage does not
support 5V

5. Special Function Registers (SFR)
The following abbreviations may be used in describing the registers in this manual:
Abbreviation

Description

RO

Indicates the type of access: read only

WO

Indicates the type of access: write only

RW

Indicates the type of access: read and write

H

Indicates a hexadecimal number

B

Indicates a binary number

5.1 SFR Introduction and Address Distribution
The CH554 is controlled by special function registers SFR, manages the device, and sets the operating
mode.
The SFR occupies the 80h-FFh address range of the internal data memory space and can only be
accessed by direct address mode instructions. Among them the address is x0h or x8h registers can be
bit-based addressing, so that you can avoid access to a specific bit and modify the value of other bits;
other address non-8 multiple registers can only be accessed by bytes.
Some SFRs write data only in safe mode and read-only states in non-secure mode, for example:
GLOBAL_CFG, CLOCK_CFG, WAKE_CTRL.
Some SFRs have one or more aliases, for example: 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, UEP3_T_LEN / UH_TX_LEN.
The partial address corresponds to multiple independent SFRs, for example: SAFE_MOD / CHIP_ID,
ROM_CTRL / ROM_STATUS.
CH554 contains 8051 standard SFR registers, while adding other device control registers. Specific SFR
see table below.
Table 5.1 Special Function Register Table

SFR

0, 8

1, 9

2, A

3, B

4, C

0xF8

SPI0_STAT

SPI0_DATA

SPI0_CTRL

SPI0_CK_SE
SPI0_S_PRT

SPI0_SETUP

0xF0

B

0xE8

IE_EX

IP_EX

UEP4_1_MOD UEP2_3_MOD UEP0_DMA_
UH_EP_MOD L

UEP0_DMA_
H

UEP1_DMA_
L

UEP1_DMA_
H

0xE0

ACC

US_INT_EN

USB_CTRL

UEP2_DMA_
H

UEP3_DMA_
L

UEP3_DMA_
H

USB_DEV_A
D

UEP2_DMA_
L

5, D

6, E

7, F

RESET_KEEP WDOG_COU
NT

UH_RX_DMA UH_RX_DMA UH_TX_DMA UH_TX_DMA
_L
_H
_L
_H

0xD8

USB_INT_FG

USB_INT_ST

USB_MIS_ST

USB_RX_LE
N

0xD0

PSW

UDEV_CTRL
UHOST_CTR
L

UEP1_CTRL
UH_SETUP

0xC8

T2CON

T2MOD

0xC0

SCON1

SBUF1

0xB8

IP

CLOCK_CFG

0xB0

P3

GLOBAL_CF
G

0xA8

IE

WAKE_CTRL

0xA0

P2

SAFE_MOD
CHIP_ID

XBUS_AUX

0x98

SCON

SBUF

ADC_CFG

0x90

P1

0x88
0x80

UEP0_CTRL

UEP0_T_LEN UEP4_CTRL

UEP4_T_LEN

UEP1_T_LEN UEP2_CTRL
UH_RX_CTR
L

UEP2_T_LEN UEP3_CTRL
UH_EP_PID
UH_TX_CTR
L

UEP3_T_LEN
UH_TX_LEN

RCAP2L

RCAP2H

TL2

TH2

T2CAP1L

T2CAP1H

SBAUD1

TKEY_CTRL

TKEY_DATL

TKEY_DATH

PIN_FUNC

GPIO_IE

PWM_DATA2 PWM_DATA1 PWM_CTRL

PWM_CK_SE ADC_DATA

USB_C_CTRL P1_MOD_OC

P1_DIR_PU

P3_MOD_OC

P3_DIR_PU

TCON

TMOD

TL0

TL1

TH0

ROM_DATA_
L

ROM_DATA_
H

ADC_CTRL

SP

DPL

DPH

ROM_ADDR_ ROM_ADDR_ ROM_CTRL
L
H
ROM_STATU
S

TH1

PCON

Remark: (1), the red text represents bit-by-bit addressing; (2) The following is the corresponding
description of the color box
0xXX

Register address
SPI0 related register
ADC related register
Touch-Key related register
USB related register
Timer / Counter 2 Related Registers
Port setting related register
PWM1 or PWM2 related register
UART1 related register
Flash-ROM related register

5.2 SFR classification and reset value
[section omitted]

5.3 General 8051 Register

Table 5.3.1 General 8051 Register List
Name

Address

B

F0h

00h

A, ACC

D0h

00h

PSW

D0h

00h

GLOBAL_CFG B1h

CHIP_ID

A1h

Description

Reset Value

Global Configuration Register (CH554 Bootloader
Status)

20h

Global Configuration Register (CH554 Application
Status)

00h

Global Configuration Register (CH553 Bootloader
Status)

60h

Global Configuration Register (CH553 Application
Status)

40h

CH554 chip ID number (read only)

54h

CH553 chip ID number (read only)

53h

SAFE_MOD

A1h

Safety Mode Control Register (Write Only)

00h

PCON

87h

Power Control Register (Power-on Reset)

10h

DPH

83h

Data address pointer high 8 bits

00h

DPL

82h

Data address pointer low 8 bits

00h

DPTR

82h

DPL and DPH make up 16 SFRs

0000h

SP

81h

Stack pointer

07h

B register (B):
Bit

Name

[7:0] B

Acc Description
ess

Reset Value

RW Arithmetic operation registers, mainly used for
multiplication and division operations, bitaddressable

00h

Acc Description
ess

Reset Value

RW Arithmetic operation accumulator, bit-addressable

00h

A Accumulator (A, ACC):
Bit

Name

[7:0] AA/ACC

Program Status Register (PSW):

Bit

Name

Acc Description
ess

Reset Value

7

CY

RW Carry flag: When performing arithmetic and logic
0
instructions, it is used to record the carry or borrow
of the most significant bit. When the 8-bit addition is
performed, the most significant bit will be set,
otherwise it will be cleared. When 8-bit subtraction
is performed , If borrow, the bit is set, otherwise
cleared; logic instruction can set or clear this bit

6

AC

RW Auxiliary carry flag: Record addition and subtraction 0
operation, the low 4 to the high 4 carry or borrow,
AC is set, otherwise cleared

5

F0

RW Bit-addressable general purpose flag 0: User
definable, software cleared or set

0

4

RS1

RW Register bank select bit high

0

3

RS0

RW Register bank select bit low

0

2

OV

RW Overflow flag: Addition and subtraction operations,
the result exceeds 8 binary numbers, OV is set to 1,
the flag overflows, otherwise cleared

0

1

F1

RW Bit-addressable general purpose flag 1: Userdefinable, software cleared or set

0

0

P

RO Parity Flag: Records the parity of 1 in Accumulator 0
A after the instruction is executed. If odd, 1 is set, P
is set and if it is even, then 1 is cleared
The state of the processor is saved in the status register PSW and PSW supports bit-wise addressing.
Status words include carry flag, auxiliary carry flag for BCD processing, parity flag, overflow flag, and
RS0 and RS1 for working register bank selection. The area where the working register file is located
can be accessed directly or indirectly.
Table 5.3.2 RS1 and RS0 working register bank selection table
RS1

RS0

Working register group

0

0

Group 0 (00h-07h)

0

1

Group 1 (08h-0Fh)

1

0

Group 2 (10h-17h)

1

1

Group 3 (18h-1Fh)

Table 5.1.3 operation of the flag (X indicates that the flag is related to the operation result)
Opcode

CY

OV

AC

Opcode

CY

ADD

X

X

X

SETB C

1

OV

AC

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

DA A

X

ANL C, /bit X

RRC A

X

ORL C, bit

RLC A

X

ORL C, /bit X

CJNE

X

X
X

Data Address Pointer (DPTR):
Bit

Name

[7:0] DPL

Acc Description
ess

Reset Value

RW Data pointer low byte

00h

[7:0] DPH
RW Data pointer high byte
00h
DPL and DPH form a 16-bit data pointer, DPTR, to access the xRAM data memory or program
memory. The actual DPTR corresponds to two sets of physical 16-bit data pointers, DPTR0 and
DPTR1, dynamically selected by the DPS in XBUS_AUX.
Stack pointer (SP):
Bit

Name

Acc Description
ess

Reset Value

[7:0] SP

RW Stack pointer, mainly used for program calls and
07h
interrupt calls and data in and out of the stack
Stack specific functions: protection of the endpoint and the protection of the site, according to the
principles of management out. When the stack pointer SP automatically increase 1, save the data or
breakpoint information; when the stack pointer to point SP data unit, SP pointer automatically reduced
by 1. The initial value of SP after reset is 07h, and the corresponding default stack storage starts from
08h.

5.4 Special Register
Global Configuration Register (GLOBAL_CFG), writable only in safe mode:
Bit

Name

Acc Description
ess

Reset Value

[7:6] Reserved

RO For CH554, a fixed value of 00

00b

[7:6] Reserved

RO For CH553, a fixed value of 01

01b

5

RO Boot loader status bit, used to distinguish ISP boot
1
program status or application status: Set at power-on

bBOOT_LOAD

and cleared at software reset.
For a chip with an ISP bootloader, this bit is 1 to
indicate that the software has not been reset before,
and is usually the ISP bootloader running after
power-on. A 0 indicates that a software reset has
occurred and is usually the application state
4

bSW_RESET

RW Software reset control bit: Set to cause a software
reset, the hardware automatically cleared

0

3

bCODE_WE

RW Flash-ROM and DataFlash write enable bit:
0
This bit is 0 write-protected; a Flash-ROM and Data
can be rewritten

2

bDATA_WE

RW Flash-ROM DataFlash area write enable bit:
This bit is 0 then write protection; a DataFlash area
can be rewritten

1

bLDO3V3_OFF

RW USB Power Regulator LDO Disable Control:
0
This bit is 0 to allow LDO, can generate 3.3V
voltage from 5V power supply for USB and internal
clock oscillator;
An LDO of 1 disables the V33 pin and must input an
external 3.3V power supply

0

bWDOG_EN

RW Watchdog reset enable bit: This bit is 0 Watchdog is 0
only used as a timer; this bit is 1 to allow watchdog
reset when timing overflow occurs

0

Chip identification code ID (CHIP_ID):
Bit

Name

Acc Description
ess

Reset Value

[7:0] CHIP_ID

RO For CH554, a fixed value of 54h, used to identify the 54h
chip

[7:0] CHIP_ID

RO For CH553, a fixed value of 53h, used to identify the 53h
chip

Safety Mode Control Register (SAFE_MOD):
Bit Name
Acc Description
ess

Reset Value

[7:0] SAFE_MOD

00hh

WO Used to enter or terminate safe mode

Some SFRs write data only in safe mode and always read-only in non-secure mode. Step into safe
mode:
1. Write 55h to this register;
2. Then write AAh to this register;
3. After that, about 13 to 23 system clock cycles are in safe mode, and one or more safety SFRs or
normal SFRs can be overwritten during the valid period.

4. Beyond the validity of the automatic termination of safe mode;
5. Additionally, writing any further value to this register can terminate Safe Mode early.

6. Memory Structure
6.1 memory space
CH554 addressing space is divided into program storage space, internal data storage space, external
data storage space.

Figure 6.1 Memory Block Diagram

6.2 Program Address Space
The total program storage space is 64KB, as shown in Figure 6.1, of which 16KB is for ROM,
including the Code Flash area where the instruction code is stored and the configuration information
Configuration Information area.
Code Flash includes application code for low address areas and boot code for high address areas. You
can also combine these two areas to hold a single application code.
For CH553, the Code Flash application code area is only 10KB.
The ROM is an iFlash ™ process that can be programmed about 200 times with a 5V supply for a
finished blank ROM package.
The Data Flash address range is from C000h to C0FFH (only the address is valid, actually there is one
memory cell every other byte), only supports single-byte (8-bit) read and write operations, and the data
remains unchanged after the chip is powered off. Data Flash supports about 10,000 erasing and writing.
It is recommended to use equalization. It is forbidden to erase more than 10K times for the same
memory unit. If there are more erasing times, it is recommended to use CH559 or CH548/9.
Configuration Information Configuration Information includes four 16-bit data at 3FF8H to 3FFFH
addresses, the last three groups are read-only and provide the chip ID. The configuration data at the
3FF8H address is set by the programmer as needed, refer to Table 6.2.
Table 6.2 flash-ROM configuration information description
Bit

Name

Description

Suggested
Value

15

Code_Protect

Flash-ROM code and data protection mode:
0 - programmer is prohibited to read, the program is
confidential; 1 - allowed to read

0/1

14

No_Boot_Load

Enable BootLoader Boot Code Boot Mode:
0 - application start from 0000h address;
1- Boot from 3800h address started

1

13

En_Long_Reset

Enable additional delay reset during power-on reset:
0- standard short reset; 1-wide reset, an additional
44mS reset time

0

12

En_RST_RESET Enable RST pin as manual reset input pin: 0-disabled; 0
1-enabled RST

[11:10]

Reserved

(Programmed by the programmer automatically set to
00)

00

9

Must_1

(Programmed by the programmer automatically set to
1)

1

8

Must_0

(Programmed by the programmer automatically set to
0)

0

[7:0]

All_1

(Programmed by the programmer automatically set to
FFh)

FFh

6.3 Data Address Space
The total internal data space is 256 bytes, as shown in Figure 6.1, all of which are used for SFR and
iRAM, where iRAM is used for stacking and fast data staging and can be subdivided into working
registers R0-R7, bit variables bdata, bytes Variables data, idata and so on.
External data storage space a total of 64KB, as shown in Figure 6.1, part of the expansion for 1KB chip
xRAM, the remaining reserved area.
For CH553, on-chip expansion of xRAM is only 512 bytes.

6.4 Flash-ROM register
[Section omitted]

6.5 flash-ROM steps
[Section omitted]

6.6 Board Programming and ISP Download
When the configuration information Code_Protect = 1, the code in the flash-ROM and the data in Data
Flash of the CH554 chip can be read and written by the external programmer through the synchronous
serial interface. When the configuration information Code_Protect = 0, the code in the flash-ROM And
Data Flash Data is protected, can not be read out, but can be erased, erase and then re-unlock the code
protection.
When the CH554 chip is preset BootLoader boot program, CH554 can support USB or asynchronous
serial port and other ISP download methods to load the application; but in the absence of a boot
program, CH554 can only be written by an external programmer boot loader Or application. In order to
support board programming, you must temporarily use the 5V supply voltage, and the circuit needs to
reserve four connection pins between the CH554 and the programmer, the minimum necessary
connection pin is three: P1.4, P1.6, P1.7.
Table 6.6.1 Connection Pin with Programmer
Pin

GPIO

Description

RST

RST

Reset control pin in programming state, high level allows programming

SCS

P1.4

Chip Select Input Pin (Required) in Programming State, Default High,
Active Low

SCK

P1.7

Clock input pin in programming state (required)

MISO
P1.6
Data output pin in programming state (required)
Note: The 5V supply voltage must be used temporarily either in board programming or via serial or
USB download.

6.7 Chip Unique ID Number
Each microcontroller has a unique ID number from the factory, which is the chip identification number.
The ID data is 5 bytes and is stored in the address 3FFAH to 3FFFH in the configuration information
Configuration Information area. Of which 3FFBH address for the retention unit, 3FFCH and 3FFEH
address of the two 16-bit data and 3FFAH address 8-bit data into 40-bit chip ID data.
Program space address

ID data description

3FFAh、3FFBh

ID end of the word data, followed by the 40-bit ID number of the
highest byte, reserved bytes

3FFCh、3FFDh

ID first word data, followed by the ID number of the lowest byte,
second low byte

3FFEh、3FFFh

ID sub-word data, followed by the ID number of the next high byte,
high byte

The ID data can be obtained by reading Code Flash. ID number can be used with the download tool for
the target program to be encrypted, the general application, just use the first 32-bit ID number, you can
ignore 3FFAH address 8-bit data.

7. Power Management, Sleep and Reset
7.1 External power input
CH554 chip built-in 5V to 3.3V low dropout voltage regulator supports external 5V or 3.3V or even
2.8V supply voltage input, the two power supply voltage input mode refer to the table below.
External supply voltage

VCC pin voltage: external
voltage 3V ~ 5V

V33 pin voltage: 3.3V internal
voltage

3.3V or 3V
Including less than 3.6V

Input an external 3.3V voltage to
the voltage regulator must be
connected to ground not less
than 0.1uF decoupling capacitor

3.3V external input as the
internal work of the power
supply must be connected to not
less than 0.1uF decoupling
capacitor

5V
Including more than 3.6V

Input external 5V voltage to the
voltage regulator, must be
connected to ground not less
than 0.1uF decoupling capacitor

3.3V internal voltage regulator
output and 3.3V internal power
supply input, must be connected
to ground not less than 0.1uF
decoupling capacitor

After power on or system reset, CH554 is running by default. In the premise of the performance to
meet the requirements, properly reduce the system frequency can reduce power consumption during
operation. When the CH554 does not need to run at all, you can set the PD in PCON to sleep state, and
you can choose external wake-up through USB, UART0, UART1, SPI0 and some GPIOs in sleep
mode.

7.2 Power and Sleep Control Registers
Table 7.2.1 Power and Sleep Control Registers List
Name

Address

Description

Reset Value

WDOG_COUNT FFh

Watchdog counter register

00h

RESET_KEEP

FEh

Reset holding register

00h

WAKE_CTRL

A9h

Sleep wake-up control register

00h

PCON

87h

Power Control Register

10h

Watchdog Count Register (WDOG_COUNT):
Bit

Name

[7:0] WDOG_COUNT

Acc Description
ess

Reset Value

RW Watchdog current count, overflow over 0FFh 00h,
over overflow automatically set interrupt flag
bWDOG_IF_TO is 1

00h

Reset hold register (RESET_KEEP):
Bit

Name

[7:0] RESET_KEEP

Acc Description
ess

Reset Value

RW Reset holding register, the value can be artificially
modified, in addition to power-on reset can be
cleared, any other reset does not affect the value

00h

Sleep Wakeup Control Register (WAKE_CTRL), writable only in Safe Mode:
Bit

Name

Acc Description
ess

Reset Value

7

bWAK_BY_USB

RW USB event wake-up enable, this bit is 0 to disable
wake-up

0

6

bWAK_RXD1_LO

RW UART1 receive input low wake-up enable, this bit is 0
0 to disable wake-up. Select RXD1 or RXD1_ pin
according to bUART1_PIN_X = 0/1

5

bWAK_P1_5_LO

RW P1.5 low wake-up enable, 0 wake-up prohibited

0

4

bWAK_P1_4_LO

RW P1.4 low wake-up enable, 0 wake-up prohibited

0

3

bWAK_P1_3_LO

RW P1.3 low wake-up enable, 0 wake-up prohibited

0

2

bWAK_RST_HI

RW RST high wake-up enable, disable wake-up from 0.

0

1

bWAK_P3_2E_3L

RW P3.2 edge change and P3.3 wake-up enable low,
wake-up from 0 to disable

0

0

bWAK_RXD0_LO

RW UART0 receive input low wake-up enable, disable
wake-up from 0. Select the RXD0 or RXD0_ pin
according to bUART0_PIN_X = 0/1

0

Power Control Register (PCON):
Bit

Name

Acc Description
ess

Reset Value

7

SMOD

RW When using UART1 to generate UART0 baud rate, 0
UART0 mode 1, 2 and 3 communication baud rate is
selected: 0 - slow mode; 1 - fast mode

6

Reserved

RO Reserved

0

5

bRST_FLAG1

RO The chip reset flag high recently

0

4

bRST_FLAG0

RO The chip reset flag low recently

0

3

GF1

RW General flags bit 1: Users can define their own,
software can be cleared or set

0

2

GF0

RW General flags 0: users can define their own, software 0
can be cleared or set

1

PD

RW Sleep mode is enabled, set to sleep after wake-up
hardware automatically cleared

0

0

Reserved

RO Reserved

0

Table 7.2.2 Description of the most recent reset flag of the chip
bRST_FLAG1 bRST_FLAG0 Reset flag description
0

0

Software Reset, Source: bSW_RESET = 1 and (bBOOT_LOAD =
0 or bWDOG_EN = 1)

0

1

Power on reset, source: VCC pin voltage is below detection level

1

0

Watchdog reset, source: bWDOG_EN = 1 and watchdog timeout
expired

1

1

External Pin Manual Reset Source: En_RST_RESET = 1 and RST
Input High

7.3 Reset control
CH554 has 4 reset sources: power-on reset, external reset, software reset, watchdog reset, the latter
three belong to the thermal reset.

7.3.1 Power-on reset
Power-on reset POR by the on-chip voltage detection circuit. The POR circuit continuously monitors
the supply voltage of the VCC pin. A power-on reset is generated when the voltage level is lower than
the detection level Vpot, and the hardware automatically delays Tpor to maintain the reset state. The
CH554 operates after the delay time expires.
Only the power-on reset to make CH554 reload configuration information and reset RESET_KEEP,
other thermal reset does not affect.

7.3.2 External reset
The external reset is generated by the high level applied to the RST pin. The reset process is triggered
when the configuration information En_RST_RESET is 1 and the high level on the RST pin lasts
longer than Trst. When the external high signal is removed, the hardware automatically Trdl delayed to
maintain the reset state, after the end of the delay CH554 0 address from the beginning.

7.3.3 Software reset
The CH554 supports internal software reset to proactively reset the CPU state and rerun without
external intervention. Set the global configuration register bSW_RESET in GLOBAL_CFG to 1 to
reset the software and automatically delay Trdl to maintain the reset state. After the delay expires,
CH554 starts from address 0 and the bSW_RESET bit is automatically cleared by hardware.
When bSW_RESET is set, bRST_FLAG1 / 0 will indicate a software reset after reset if
bBOOT_LOAD = 0 or bWDOG_EN = 1; bRST_FLAG1 / 0 will not be generated if bBOOT_LOAD =
1 and bWDOG_EN = 0 when bSW_RESET is set Reset flag, but to keep the reset flag unchanged.
For the chip with ISP boot program, after the power is reset, the bootloader should be run first. The
program will reset the chip according to the software needed to switch to the application state. This
software reset only causes bBOOT_LOAD to be cleared and does not affect the state of
bRST_FLAG1 / 0 (Due to bBOOT_LOAD = 1 prior to reset), bRST_FLAG1 / 0 still indicates the
power-on reset state when switching to the application state.

7.3.4 Watchdog reset
Watchdog reset generated by watchdog timer timeout. The watchdog timer is an 8-bit counter whose
clock frequency is the system clock frequency of Fsys / 65536. An overflow signal is generated when
0FFh transitions to 00h.

The watchdog timer overflow signal will trigger the interrupt flag bWDOG_IF_TO to 1, which is
automatically cleared when WDOG_COUNT is reloaded or when it enters the corresponding interrupt
service routine.
By writing a different count initial value to WDOG_COUNT, a different timing period Twdc is
achieved. Watchdog timing period Twdc when writing 00h is about 2.8 seconds at 6MHz frequency,
and about 1.4 seconds when writing 80h. Halved at 12MHz clock speed.
If the watchdog timer overflow bWDOG_EN = 1, then the watchdog reset, and automatically delay
Trdl to maintain the reset state, after the end of the delay CH554 0 address from the beginning.
To avoid being reset by watchdog when bWDOG_EN = 1, WDOG_COUNT must be reset in time to
avoid overflow.

8 System Clock
8.1 Clock Block Diagram

Figure 8.1.1 Clock System and Structure
After the internal clock or the external clock is selected as the original clock Fosc, the Fpll highfrequency clock is generated after multiplying the 4xPLL frequency. Finally, the system clock Fsys and
the clock Fusb4x of the USB module are obtained through two sets of frequency divider respectively.
The system clock Fsys is provided directly to the various modules of the CH554.

8.2 Register Description
Table 8.2.1 Clock Control Register List

Name

Address

Description

Reset Value

CLOCK_CFG

B9h

System clock configuration register

83h

System Clock Configuration Register (CLOCK_CFG), writable only in safe mode:
Bit

Name

Acc Description
ess

Reset Value

7

bOSC_EN_INT

RW The internal clock oscillator is enabled. When this
1
bit is 1, the internal clock oscillator is enabled and
the internal clock is selected. When this bit is '0', the
internal clock oscillator is off and the external
crystal oscillator is used to provide the clock

6

bOSC_EN_XT

RW This bit is set to 1 by an external crystal oscillator.
0
The P1.2 / P1.3 pins function as XI / XO and enable
the oscillator. An external crystal or ceramic
oscillator is required between XI and XO. This bit is
set to 0 External oscillator

5

bWDOG_IF_TO

RO Watchdog timer interrupt flag, the bit is 1 indicates 0
an interrupt, triggered by the timer overflow signal;
the bit is 0 means no interruption. This bit is cleared
automatically when the watchdog counter
WDOG_COUNT is reloaded or after entering the
corresponding interrupt service routine

4

bROM_CLK_FAST RW flash-ROM reference clock frequency selection: 0 normal (if Fosc> = 16MHz); 1- accelerated (if Fosc
<16MHz)

0

3

bRST

0

RO RST pin status input bit

[2:0] MASK_SYS_CK_S RW System clock frequency selection, refer to table 8.2.2 011b
EL
below
Table 8.2.2 system frequency selection table
MASK_SYS_CK_SEL System Frequency
Fsys

Fxt relationship with
the crystal frequency

Fsys when Fosc = 24
MHz

000

Fpll / 512

Fxt / 128

187.5KHz

001

Fpll / 128

Fxt / 32

750KHz

010

Fpll / 32

Fxt / 8

3MHz

011

Fpll / 16

Fxt / 4

6MHz

100

Fpll / 8

Fxt / 2

12MHz

101

Fpll / 6

Fxt / 1.5

16MHz

110

Fpll / 4

Fxt / 1

24MHz

111

Fpll / 3

Fxt / 0.75

Reserved, disabled

8.3 Clock Configuration
CH554 chip power on the default use of internal clock, the internal clock frequency is 24MHz. The
internal clock or the external crystal oscillator clock can be selected by CLOCK_CFG, and the X1 and
XO pins can be used as P1.2 and P1.3 normal I / O ports if the external crystal oscillator is turned off.
If an external crystal oscillator is used to provide the clock, the crystal should be bridged between the
XI and XO pins, and the X1 and XO pins should be connected to GND for the oscillation capacitor,
respectively. If a clock signal is input directly from the outside, Pin input, XO pin left open.
The original clock frequency Fosc = bOSC_EN_INT? 24MHz: Fxt
PLL Frequency Fpll = Fosc * 4 = 96MHz
USB clock frequency Fusb4x = Fpll / 2 = 48MHz
System frequency Fsys reference table 8.2.2 obtained by the Fpll frequency
After reset, Fosc = 24MHz, Fpll = 96MHz, Fusb4x = 48MHz, Fsys = 6MHz.
Switch to the external crystal oscillator to provide the clock as follows:
1. Enter safe mode, step one SAFE_MOD = 55h; step two SAFE_MOD = AAh;
2. Set bOSC_EN_XT in CLOCK_CFG to 1 with "bit or" operation, and leave the other bits
unchanged to enable the crystal oscillator;
3. a few milliseconds delay, usually 5mS ~ 10mS, waiting for the crystal oscillator stable;
4. Enter safe mode again, step one SAFE_MOD = 55h; step two SAFE_MOD = AAh;
5. Clear "bOSC_EN_INT" in CLOCK_CFG with "and" and leave the other bits unchanged to
switch to the external clock;
6. Turn off safety mode, write any value to SAFE_MOD and terminate safety mode prematurely.
Modify the system frequency steps are as follows:
1. Enter safe mode, step one SAFE_MOD = 55h; step two SAFE_MOD = AAh;
2. Write a new value to CLOCK_CFG;
3. Turn off safety mode, write any value to SAFE_MOD, and terminate safety mode ahead of
time.
Notes:
1. If the USB module is used, the Fusb4x must be 48MHz. When using full-speed USB, the
system clock speed is not lower than 6MHz. When using low-speed USB, the system clock
speed is not lower than 1.5MHz.
2. Preferentially use a lower system clock frequency, Fsys, to reduce system dynamic power
consumption and widen the operating temperature range.

3. The internal clock oscillator is powered by V33, so V33 voltage changes, especially the low
voltage, affect the internal clock frequency.

9. Interrupts
The CH554 chip supports 14 interrupt sources including 6 groups of interrupts compatible with
standard MCS51: INT0, T0, INT1, T1, UART0, T2 and extended 8 groups of interrupts: SPI0, TKEY,
USB, ADC, UART1, PWMX, GPIO, WDOG, among them GPIO interrupts can choose from 7 I / O
pins.

9.1 Register Description
Table 9.1.1 Interrupt vector table
Source

Address

Number Description

Default Priority

INT_NO_INT0

0x0003

0

External interrupt 0

INT_NO_TMR0

0x000B

1

Timer 0 interrupt

INT_NO_INT1

0x0013

2

External interrupt 1

INT_NO_TMR1

0x001B

3

Timer 1 interrupt

INT_NO_UART0

0x0023

4

UART0 interrupt

INT_NO_TMR2

0x002B

5

Timer 2 interrupt

INT_NO_SPI0

0x0033

6

SPI0 interrupt

INT_NO_TKEY

0x003B

7

Touch-key timer interrupt

INT_NO_USB

0x0043

8

USB interrupt

INT_NO_ADC

0x004B

9

ADC interrupt

High priority
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
Low priority

INT_NO_UART1

0x0053

10

UART1 interupt

INT_NO_PWMX

0x005B

11

PWM1 / PWM2 interrupt

INT_NO_GPIO

0x0063

12

GPIO interrupt

INT_NO_WDOG

0x006B

13

Watchdog timer interrupt

Table 9.1.2 Interrupt Related Registers List
Name

Address

Description

Reset Value

IP_EX

E9h

Extended interrupt priority control register

00h

IE_EX

E8h

Extended interrupt enable register

00h

GPIO_IE

C7h

GPIO interrupt enable register

00h

IP

B8h

Interrupt priority control register

00h

IE

A8h

Interrupt enable register

00h

Interrupt Enable Register (IE):
Bit

Name

Acc Description
ess

Reset Value

7

EA

RW Global interrupt enable control bit, this bit is 1 and 0
E_DIS is 0 to allow interrupt; this bit is 0 to mask all
interrupt requests

6

E_DIS

RW The global interrupt disable control bit, which bit
masks all interrupt requests; this bit is 0 and an EA
of 1 allows interrupts. This bit is normally used to
temporarily disable interrupts during flash-ROM
operations

5

ET2

RW Timer 2 interrupt enable bit, this bit is 1 to allow T2 0
interrupt; 0 mask

4

ES

RW Asynchronous serial 0 interrupt enable bit, this bit is 0
1 to allow UART0 interrupt; 0 mask

3

ET1

RW Timer 1 interrupt enable bit, this bit is 1 to allow T1 0
interrupt; 0 mask

2

EX1

RW External interrupt 1 enable bit, this bit is 1 INT1
interrupt is enabled; 0 is masked

1

ET0

RW Timer 0 interrupt enable bit, this bit is 1 to allow T0 0
interrupt; 0 mask

0

EX0

RW External interrupt 0 enable bit, this bit is 1 to allow
INT0 interrupt; 0 mask

0

0

0

Extended Interrupt Enable Register (IE_EX):
Bit

Name

Acc Description
ess

Reset Value

7

IE_WDOG

RW Watchdog timer interrupt enable bit, this bit is 1 to
allow WDOG interrupt; 0 mask

0

6

IE_GPIO

RW GPIO Interrupt Enable bit, this bit is 1 to enable the
interrupt enabled in GPIO_IE; 0 to mask all
interrupts in GPIO_IE

0

5

IE_PWMX

RW PWM1 / PWM2 interrupt enable bit, this bit is 1 to
enable PWM1 / 2 interrupt;

0

4

IE_UART1

RW Asynchronous serial 1 interrupt enable bit, this bit is 0
1 to allow UART1 interrupt; 0 mask

3

IE_ADC

RW ADC Analog-to-Digital Interrupt Enable bit, this bit 0
is 1 to allow ADC interrupt; 0 mask

2

IE_USB

RW USB interrupt enable bit, this bit is 1 to allow USB
interrupt; 0 mask

0

1

IE_TKEY

RW Touch the Key Timer Interrupt Enable bit, this bit is 0
1 to allow timer interrupt; 0 mask

0

IE_SPI0

RW SPI0 interrupt enable bit, this bit is 1 to allow SPI0
interrupt; 0 mask

0

GPIO Interrupt Enable Register (GPIO_IE):
Bit

Name

Acc Description
ess

Reset Value

7

bIE_IO_EDGE

RW GPIO edge interrupt mode enable:
0
This bit is 0 to select the interrupt mode. When the
GPIO pin is valid, bIO_INT_ACT is 1 and interrupts
are always requested. When the GPIO input is
inactive, bIO_INT_ACT is 0 and the interrupt
request is canceled.
This bit is set to 1 to select the edge interrupt mode.
The GPIO pin will generate an interrupt flag,
bIO_INT_ACT, and request an interrupt when it
enters a valid edge. The interrupt flag can not be
cleared by software. The interrupt flag can only be
cleared during reset or interrupt mode or by entering
the corresponding interrupt service routine Be
automatically cleared

6

bIE_RXD1_LO

RW This bit enables UART1 receive pin interrupts
0
(active low level, falling edge mode); this bit is
disabled. Select the RXD1 or RXD1_ pin according
to bUART1_PIN_X = 0/1

5

bIE_P1_5_LO

RW This bit is set to 1 to enable the P1.5 interrupt (active 0
low in edge mode, falling edge in edge mode); this
bit is set to '0'

4

bIE_P1_4_LO

RW This bit is set to 1 to enable the P1.4 interrupt (active 0
low in edge mode, falling edge in edge mode); this
bit is set to '0'

3

bIE_P1_3_LO

RW This bit is set to 1 to enable the P1.3 interrupt (active 0
low in edge mode, falling edge in edge mode); this
bit is set to '0'

2

bIE_RST_HI

RW This bit is set to 1 to enable the RST interrupt (active 0
high in edge mode, valid on rising edge); this bit is
set to '0'

1

bIE_P3_1_LO

RW This bit is set to 1 to enable the P3.1 interrupt (active 0
low level mode, falling edge mode only); this bit is
set to '0'

0

bIE_RXD0_LO

RW This bit enables UART0 receive pin interrupts (level 0
mode active low, falling edge mode enabled); this bit

is disabled. Select the RXD0 or RXD0_ pin
according to bUART0_PIN_X = 0/1
Interrupt Priority Control Register (IP):
Bit

Name

Acc Description
ess

Reset Value

7

PH_FLAG

RW High-priority interrupt is in progress

0

6

PL_FLAG

RW Low priority interrupt is in progress

0

5

PT2

RW Timer 2 interrupt priority control bit

0

4

PS

RW UART0 interrupt priority control bit

0

3

PT1

RW Timer 1 interrupt priority control bit

0

2

PX1

RW External interrupt 1 interrupt priority control bit

0

1

PT0

RW Timer 0 interrupt priority control bit

0

0

PX0

RW External interrupt 0 interrupt priority control bit

0

Extended Interrupt Priority Control Register (IP_EX):
Bit

Name

Acc Description
ess

Reset Value

7

bIP_LEVEL

RW The current interrupt nesting level flag, the bit is 0
no interrupt or nesting level 2 interrupt; the bit is 1
that the current level of 1 nesting interrupt

0

6

bIP_GPIO

RW GPIO interrupt priority control bit

0

5

bIP_PWMX

RW PWM1 / PWM2 interrupt priority control bit

0

4

bIP_UART1

RW UART1 interrupt priority control bit

0

3

bIP_ADC

RW ADC interrupt priority control bit

0

2

bIP_USB

RW USB interrupt priority control bit

0

1

bIP_TKEY

RW Touch the key timer interrupt priority control bit

0

0

bIP_SPI0

RW SPI0 interrupt priority control bit

0

The IP and IP_EX registers are used to set the interrupt priority. If a bit is set, the corresponding
interrupt source is set to high priority. If a bit is clear, the corresponding interrupt source is set to low
priority . For peer interrupt sources, the system has the default priority order. The default priority order
is shown in Table 9.1.1. The combination of PH_FLAG and PL_FLAG indicates the priority of the
current interrupt.
Table 9.1.3 Current Interrupt Priority Status Indication

PH_FLAG

PL_FLAG

Current interrupt priority status

0

0

No interruption at this time

0

1

Low priority interrupt is currently executing

1

0

High priority interrupt is currently executing

1

1

Unexpected status, unknown error

10. I/O Ports
10.1 Introduction to GPIO
The CH554 provides up to 17 I / O pins and some pins have alternate functions. Among them, the port
P1 and P3 of the input and output can be bit-based addressing. Port P2 is an internal port that is only
used to select xRAM pages for MOVX access with R0 or R1.
If the pin is not configured as an alternate function, the default is the general purpose I / O pin status.
When used as general-purpose digital I / O, all I / O ports have true Read-Modify-Write functions and
support SETB or CLR alphanumeric operation instructions to independently change the orientation or
port level of certain pins.

10.2 GPIO register
All registers and bits in this section are expressed in a common format: lower case "n" indicates port
number (n = 1 or 3) and lower case "x" indicates bit serial number (x = 0,1,2,3, 4,5,6,7).

Name

Address

Description

Reset Value

P1

90h

P1 port input output register

ffh

P1_MOD_OC

92h

P1 port output mode register

ffh

P1_DIR_PU

93h

P1 port direction control and pull-up enable register

ffh

P2

A0h

P2 port output register

ffh

P3

B0h

P3 port input and output registers

ffh

P3_MOD_OC

96h

P3 port output mode register

ffh

P3_DIR_PU

97h

P3 port direction control and pull-up enable register

ffh

PIN_FUNC

C6h

Pin Function Selection Register

80h

XBUS_AUX

A2h

Bus Auxiliary Setup Register

00h

Pn port input / output register (Pn):
Bit

Name

[7:0] Pn.0~Pn.7

Access Description

Reset Value

RW

ffh

Pn.x pin status input and data output bits can be bitaddressed

Pn port output mode register (Pn_MOD_OC):
Bit

Name

Access Description

[7:0] Pn_MOD_OC RW

Pn.x pin output mode setting: 0-push-pull output; 1open drain output

Reset Value
ffh

Pn port direction control and pull-up enable register (Pn_DIR_PU):
Bit

Name

Access Description

[7:0] Pn_DIR_PU

RW

Reset Value

Pn.x pin direction control in push-pull output mode:
ffh
0-input; 1-output;
Pn.x pin pull-up resistor enabled in open-drain output
mode Control:
0 - Pull-up resistor disabled; 1 - Pull-up resistor enabled

The Pn port configuration is implemented by a combination of Pn_MOD_OC [x] and Pn_DIR_PU [x]
as follows.
Table 10.2.2 Port Configuration Register Combination
Pn_MOD_OC

Pn_DIR_PU Description

0

0

High-impedance input mode, there is no pull-up resistor on the pin

0

1

Push-pull output mode, with symmetrical drive capability, can output
or absorb large current

1

0

Open drain output, high impedance input, no pull-up resistor on pin

1

1

Bidirectional mode (standard 8051), open-drain output, support for
input, pull-up resistor on pin, automatically drives 2 clock cycles
high to accelerate conversion when output goes low from low

P1 and P3 ports support pure input or push-pull output and quasi-bidirectional modes. Each pin has an
internal pull-up resistor that is freely controllable, as well as a protection diode connected to VCC and
GND.
Figure 10.2.1 is an equivalent schematic of the P1 pin's P1.x pin. After removing AIN, it can be applied
to P3 port. The figure after VCC changed to V33 for P3.6 and P3.7, that is, P3.6 and P3.7 pull-up or
input or output high only to V33 voltage.

P3.6 and P3.7 Select a standard pull-up resistor (up to V33), a 15KΩ pull-down resistor or a 1.5KΩ
strong pull-up resistor (to V33) for one of the pins. The standard pull-up resistor is only active in
bIOB_IO_EN = 0 ie GPIO mode and is controlled by bit 7, bit 6 of P3_DIR_PU; the pull-down resistor
is controlled by bUD_PD_DIS or bUH_PD_DIS at bUC_RESET_SIE = 0 regardless of bUSB_IO_EN;
the 1.5KΩ pull- Resistor, controlled by bUC_DEV_PU_EN when bUC_RESET_SIE = 0, is
independent of bUSB_IO_EN.

Figure 10.2.1 I / O Pin Equivalent Schematic
[section 10.3 missing in original document]

10.4 GPIO multiplexing and mapping
Some I / O pins of CH554 have alternate functions. After power-on, the default I / O pins are generalpurpose I / O pins. When different function modules are enabled, the corresponding pins are configured
as the corresponding function pins of the respective function modules.
Pin Function Selection Register (PIN_FUNC):

Bit

Name

Acc Description
ess

Reset Value

7

bUSB_IO_EN

RW USB UDP / UDM pin enable bit, this bit is 0 P3.6 /
P3.7 is used for GPIO, P3_DIR_PU control pull-up
resistor is supported, P3_MOD_OC is supported;
this bit is 1 P3.6 / P3.7 is used for UDP / UDM
controlled by USB module, P3_DIR_PU and
P3_MOD_OC are invalid

1

6

bIO_INT_ACT

RO GPIO interrupt request activation status:

0

When bIE_IO_EDGE = 0, this bit is 1, it indicates
the active level of GPIO input, interrupt will be
requested and 0 means invalid input level; when
bIE_IO_EDGE = 1, this bit will be used as edge
interrupt flag, 1 means valid edge detected, This bit
can not be cleared by software and can only be
cleared automatically on reset or in the level
interrupt mode or on entering the corresponding
interrupt service routine
5

bUART1_PIN_X

RW UART1 pin mapping enable bit. When this bit is 0,
RXD1 / TXD1 will use P1.6 / P1.7; if this bit is 1,
RXD1 / TXD1 will use P3.4 / P3.2

0

4

bUART0_PIN_X

RW UART0 pin mapping enable bit, if this bit is 0 then
RXD0 / TXD0 will use P3.0 / P3.1; if this bit is 1
then RXD0 / TXD0 will use P1.2 / P1.3

0

3

bPWM2_PIN_X

RW PWM2 pin mapping enable bit. When this bit is 0,
0
PWM2 will use P3.4. When this bit is 1, PWM2 will
use P3.1

2

bPWM1_PIN_X

RW PWM1 pin mapping enable bit. When this bit is 0,
PWM1 uses P1.5. When this bit is 1, PWM1 uses
P3.0

1

bT2EX_PIN_X

RW T2EX / CAP2 pin mapping enable bit, when this bit 0
is 0 then T2EX / CAP2 will use P1.1; if this bit is 1
then T2EX / CAP2 will use RST

0

bT2_PIN_X

RW T2 / CAP1 pin mapping enable bit. When this bit is
0, T2 / CAP1 will use P1.0. When this bit is 1, T2 /
CAP1 will use P1.4

0

0

Table 10.4.1 GPIO Pin Alternate Function List
GPIO
Other features: From left to right prioritization
RST

RST、bT2EX_、bCAP2_、bRST

P1[0]

T2/bT2、CAP1/bCAP1、TIN0、P1.0

P1[1]

T2EX/bT2EX、CAP2/bCAP2、TIN1、VBUS2、AIN0、P1.1

P1[2]

XI、RXD_/bRXD_、P1.2

P1[3]

XO、TXD_/bTXD_、P1.3

P1[4]

T2_/bT2_、CAP1_/bCAP1_、SCS/bSCS、TIN2、UCC1、AIN1、P1.4

P1[5]

MOSI/bMOSI、PWM1/bPWM1、TIN3、UCC2、AIN2、P1.5

P1[6]

MISO/bMISO、RXD1/bRXD1、TIN4、P1.6

P1[7]

SCK/bSCK、TXD1/bTXD1、TIN5、P1.7

P3[0]

PWM1_/bPWM1_、RXD/bRXD、P3.0

P3[1]

PWM2_/bPWM2_、TXD/bTXD、P3.1

P3[2]

TXD1_/bTXD1_、INT0/bINT0、VBUS1、AIN3、P3.2

P3[3]

INT1/bINT1、P3.3

P3[4]

PWM2/bPWM2、RXD1_/bRXD1_、T0/bT0、P3.4

P3[5]

T1/bT1、P3.5

P3[6]

UDP/bUDP、P3.6

P3[6]

UDM/bUDM、P3.7

The left-to-right prioritization described in the table above refers to the order in which multiple
functional modules compete for use of the GPIO. For example, P3.0 can still be used for the higher
priority PWM1 output when P3.1 is used for TXD serial transmission.

11. External Bus
The CH554 does not provide a bus signal to the outside of the chip, does not support the external bus,
but can access the on-chip xRAM normally.
External Bus Auxiliary Setup Register (XBUS_AUX):

Bit

Name

Acc Description
ess

Reset Value

7

bUART0_TX

RO Indicates the transmit status of UART0, a 1 indicates 0
that it is transmitting

6

bUART0_RX

RO Indicates the receive status of UART0, a 1 indicates
that it is receiving

5

bSAFE_MOD_ACT RO Indicates the safety mode status, a 1 indicates that it 0
is currently in safety mode

4

Reserved

RO Reserved

0

3

GF2

RW General flag 2: users can define their own, software
can be cleared or set

0

2

bDPTR_AUTO_INC RW Enabled DPTR increments automatically after
MOVX_ @ DPTR instruction completes

0

1

Reserved

RO Reserved

0

0

DPS

RW Dual DPTR Data Pointer Select Bits:
This bit is 0 to select DPTR0; this bit is 1 to select
DPTR1

0

0

12. Timer
12.1 Timer 0/1
Timer0 / 1 is two 16-bit timer / timers configured by TCON and TMOD for Timer0 and Timer1. TCON
is used for the start-up and overflow interrupts of Timer / Counters T0 and T1 as well as external
interrupt control. Each timer is a 16-bit timer unit consisting of two 8-bit registers. Timer 0 high byte
counter is TH0, low byte is TL0; Timer 1 high byte counter is TH1, low byte is TL1. Timer 1 can also
be used as the UART0 baud rate generator.

12.1.1 Timer / Counter 0/1 Related register list
Name

Address

Description

Reset Value

TH1

8Dh

Timer 1 counter high byte

xxh

TH0

8Ch

Timer 0 counter high byte

xxh

TL1

8Bh

Timer 1 counter low byte

xxh

TL0

8Ah

Timer 0 counter low byte

xxh

TMOD

89h

Timer 0/1 mode register

00h

TCON

88h

Timer 0/1 control register

00h

Timer / Counter 0/1 Control Register (TCON):
Bit

Name

Access Description

Reset Value

7

TF1

RW

Timer 1 Overflow interrupt flag, enter the timer 1 interrupt
automatically cleared

0

6

TR1

RW

Timer 1 Start / stop bit, set to start, set or cleared by software 0

5

TF0

RW

Timer 0 Overflow interrupt flag, enter the timer 1 interrupt
automatically cleared

4

TR0

RW

Timer 0 Start / stop bit, set to start, set or cleared by software 0

3

IE1

RW

INT1 External interrupt 1 interrupt request flag, enter the
interrupt automatically cleared

2

IT1

RW

INT1 External interrupt 1 trigger mode control bit, this bit is 0
0 Select the external interrupt is low-level trigger; This bit is
1 Select external interrupt as falling-edge trigger

1

IE0

RW

INT0 External interrupt 1 interrupt request flag, enter the
interrupt automatically cleared

0

IT0

RW

INT0 External interrupt 1 trigger mode control bit, this bit is 0
0 Select the external interrupt is low-level trigger; This bit is
1 Select external interrupt as falling-edge trigger

0

0

0

Timer / Counter 0/1 Mode Register (TMOD):
Bit

Name

Access Description

Reset Value

7

bT1_GATE

RW

Gating enable bit to control whether Timer1 start-up is
affected by external interrupt signal INT1. When this bit
is 0, the operation of timer / event counter 1 is
independent of INT1. When this bit is 1, only the INT1
pin is high and TR1 is 1

0

6

bT1_CT

RW

Timing or counting mode selection bit, this bit is 0
0
working in timing mode; this bit is 1 working in counting
mode, using the falling edge of T1 pin as clock

5

bT1_M1

RW

Timer / Counter 1 Mode Select High

0

4

bT1_M0

RW

Timer / Counter 1 Mode Select Low

0

3

bT0_GATE

RW

Gating enable bit to control whether Timer0 start-up is
affected by external interrupt signal INT0. When this bit
is 0, the operation of timer / event counter 0 is
independent of INT0. When this bit is 1, only the INT0
pin is high and TR0 is 1

0

2

bT0_CT

RW

Timing or counting mode selection bit, this bit is 0
0
working in timing mode; this bit is 1 working in counting
mode, using the falling edge of T0 pin as clock

1

bT0_M1

RW

Timer / Counter 0 Mode Select High

0

0

bT0_M0

RW

Timer / Counter 0 Mode Select Low

0

Table 12.1.2 bTn_M1 and bTn_M0 Selection of Timer n Operating Mode (n = 0, 1)
bTn_M1

bTn_M0

Timer n working mode (n= 0,1)

0

0

Mode 0: 13-bit timer / counter n, counting unit consists of the lower 5 bits of
TLn and THn, the upper 3 bits of TLn are invalid. When the count changes
from 13 bits to 1 bits to 0 bits, set the overflow flag TFn and reset the initial
value

0

1

Mode 1: 16-bit timer / counter n, counting unit consists of TLn and THn.
Count from 16 to 1 for all into all 0, set the overflow flag TFn, and reset the
initial value

1

0

Mode 2: 8-bit reload timer / counter n. The counting unit uses TLn, THn as
the overloaded counting unit. When the count is changed from 8 bits to 1 bits
and all 0s, the overflow flag TFn is set and the initial value is automatically
loaded from THn

1

1

Mode 3: Timer / Counter 0 is divided into two sections, TL0 and TH0, for
Timer / Counter 0, which takes up all Timer0 control bits, while Timer /
Counter0 also uses another 8-bit timer Use, occupy Timer1 TR1, TF1 and
interrupt resources, and Timer1 is still available, but can not use the start
control bit TR1 and overflow flag TF1. If Timer / Event Counter 1 is set,

entering Mode 3 will stop Timer / Counter 1.
Timer n count low byte (TLn) (n = 0, 1):
Bit

Name

[7:0] TLn

Access Description

Reset Value

RW

xxh

Timer n count low byte

Timer n count high byte (THn) (n = 0, 1):
Bit

Name

[7:0] THn

Access Description

Reset Value

RW

xxh

Timer n count high byte

12.2 Timer 2
Timer2 is a 16-bit auto-reload timer configured by the T2CON and T2MOD registers. The upper byte
counter of Timer 2 is TH2 and the lower byte is TL2. Timer2 can be used as UART0 baud rate
generator, but also has 2 signal level capture function, the capture count is stored in the RCAP2 and
T2CAP1 registers.
Table 12.2.1 Timer2 Related Registers List
Name

Address

Description

Reset Value

TH2

CDh

Timer2 counter high byte

00h

TL2

CCh

Timer2 counter low byte

00h

T2COUNT

CCh

TL2 and TH2 form a 16-bit SFR

0000h

T2CAP1H

CFh

Timer2 Capture 1 Data High Byte (Read Only)

xxh

T2CAP1L

CEh

Timer2 Capture 1 Data Low Byte (Read Only)

xxh

T2CAP1

CEh

T2CAP1L and T2CAP1H make up a 16-bit SFR

xxxxh

RCAP2H

CBh

Count Reload / Capture 2 Data Register High Byte

00h

RCAP2L

CAh

Count Reload / Capture 2 Data Register Low Byte

00h

RCAP2

CAh

RCAP2L and RCAP2H make up a 16-bit SFR

0000h

T2MOD

C9h

Timer 2 mode register

00h

T2CON

C8h

Timer 2 control register

00h

Timer/Counter 2 Control Register (T2CON):
Bit

Name

Access Description

7

TF2

RW

Reset Value

When bT2_CAP1_EN = 0, this is the overflow interrupt flag 0
of Timer2. When the Timer2 count changes from 16 to 1, the
overflow flag is set to 1 and needs to be cleared by software;

when RCLK=1 or TCLK=1 , this bit will not be set to 1
7

CAP1F

RW

When bT2_CAP1_EN=1, it is Timer2 Capture 1 interrupt
flag triggered by T2 valid edge and requires software clear

0

6

EXF2

RW

Timer2 external trigger flag, set by T2EX active edge trigger 0
when EXEN2 = 1, requires software clear

5

RCLK

RW

UART0 receive clock select, this bit is 0. Select Timer1
overflow pulse to generate baud rate; this bit is 1 to select
Timer2 overflow pulse to generate baud rate.

0

4

TCLK

RW

UART0 transmit clock selection, this bit is 0. Select Timer1
overflow pulse to generate baud rate; this bit is 1 to select
Timer2 overflow pulse to generate baud rate.

0

3

EXEN2

RW

T2EX trigger enable bit. This bit is 0. Ignore T2EX; this bit
is 1 to enable reload or capture on T2EX active edge.

0

2

TR2

RW

Timer2 start/stop bit, set to start, set or cleared by software

0

1

C_T2

RW

Timer2 clock source select bit, this bit is 0 Use internal
clock; this bit is 1 Use edge count based on falling edge of
T2 pin

0

0

CP_RL2 RW

Timer2 function select bit. This bit should be forced to 0 if
0
RCLK or TCLK is 1. When this bit is 0, Timer2 acts as a
timer/counter, and can automatically reload the initial count
value when the counter overflows or the T2EX level
changes; this bit is 1 to enable Timer2's Capture 2 function to
capture the T2EX active edge.

Timer/Counter 2 Mode Register (T2MOD):
Bit

Name

Access Description

Reset Value

7

bTMR_CLK

RW

The fastest clock mode is enabled for the T0/T1/T2
0
timer that has been selected for the fast clock. If this
bit is set to 1, the system clock frequency Fsys without
frequency division is used as the count clock; if this
bit is 0, the clock frequency is used. This bit has no
effect on the timer that selects the standard clock

6

bT2_CLK

RW

Timer2 internal clock frequency selection bit, this bit 0
is 0 to select the standard clock, timer/counter mode is
Fsys/12, UART0 clock mode is Fsys/4; this bit is 1 to
select fast clock, timer/count mode is Fsys/4
(bTMR_CLK =0) or Fsys (bTMR_CLK=1), UART0
clock mode is Fsys/2 (bTMR_CLK=0) or Fsys
(bTMR_CLK=1)

5

bT1_CLK

RW

Timer1 internal clock frequency selection bit, this bit
is 0. Select the standard clock Fsys/12; select the fast
clock Fsys/4 (bTMR_CLK=0) or Fsys

0

(bTMR_CLK=1)
4

BT0_CLK

RW

Timer0 internal clock frequency selection bit, this bit
is 0. Select the standard clock Fsys/12; select the fast
clock Fsys/4 (bTMR_CLK=0) or Fsys
(bTMR_CLK=1)

0

3

bT2_CAP_M1

RW

0

2

bT2_CAP_M0

RW

Timer2 capture mode high Capture mode selection:
Timer2 capture mode low X0: From falling edge to
falling edge
01: From any edge to any
edge, that is, change in
level
11: From the rising edge
to the rising edge

1

T2OE

RW

0

bT2_CAP1_EN RW

0

Timer2 clock output enable bit. This bit is 0. Disable 0
output. This bit is 1 to enable T2 pin output clock with
half the Timer2 overflow rate.
Capture 1 mode is enabled when RCLK = 0, TCLK =
0, CP_RL2 = 1, C_T2 = 0, and T2OE = 0. This bit is
set to 1 to enable the capture 1 function to capture the
active edge of T2; this bit 0 disables capture 1

0

Counting Reload/Capture 2 Data Registers (RCAP2):
Bit

Name

Access Description

Reset Value

[7:0] RCAP2H

RW

High byte of reload value in timer/counter mode; high 00h
byte of timer captured by CAP2 in capture mode

[7:0] RCAP2L

RW

The low byte of the reload value in timer/counter
mode; the low byte of the timer captured by CAP2 in
capture mode

00h

Timer2 Counter (T2COUNT):
Bit

Name

Access Description

Reset Value

[7:0] TH2

RW

Current counter high byte

00h

[7:0] TL2

RW

Current counter low byte

00h

Timer2 capture 1 data (T2CAP1):
Bit

Name

[7:0] T2CAP1H

Access Description

Reset Value

RO

xxh

High byte of the timer captured by CAP1

[7:0] T2CAP1L

RO

The low byte of the timer captured by CAP1

xxh

12.3 PWM function
CH554 provides two 8-bit PWM, PWM can choose the default output polarity is low or high, you can
dynamically modify the PWM output duty cycle, through a simple RC resistor capacitor integrated
low-pass filter, you can Get a variety of output voltage, equivalent to low-speed digital-to-analog
converter DAC.
PWM1 output duty cycle = PWM_DATA1 / 256, support range 0% to 99.6%.
PWM2 output duty cycle = PWM_DATA2 / 256, support range 0% to 99.6%.
In practice, it is recommended to allow PWM pin output and set the PWM output pin to push-pull
output mode.

12.3.1 PWM1 and PWM2
Table 12.3.1 PWM1 and PWM2 related register list
Name

Address

Description

Reset Value

PWM_CK_SE

9Eh

PWM clock divider setting register

00h

PWM_CTRL

9Dh

PWM control register

02h

PWM_DATA1

9Ch

PWM1 data register

xxh

PWM_DATA2

9Bh

PWM2 data register

xxh

PWM2 Data Register (PWM_DATA2):
Bit Name
Access Description
[7:0] PWM_DATA2 RW

Store the current data of PWM2, PWM2 output active xxh
level duty cycle = PWM_DATA2 / 256

PWM1 Data Register (PWM_DATA1):
Bit Name
Access Description
[7:0] PWM_DATA1 RW

Reset Value

Reset Value

Store the current data of PWM1, PWM1 output active xxh
level duty cycle = PWM_DATA1 / 256

PWM Control Register (PWM_CTRL):
Bit

Name

Access Description

7

bPWM_IE_END

RW

Reset Value

This bit is set to 1 to enable the end of the PWM 0
cycle or to leave the MFM buffer empty

6

bPWM2_POLAR

RW

Control PWM2 output polarity, the bit is 0, the
default low, high effective; the bit is 1, the
default high, low active

0

5

bPWM1_POLAR

RW

Control PWM1 output polarity, the bit is 0, the
default low, high effective; the bit is 1, the
default high, low active

0

4

4 bPWM_IF_END

RW

PWM cycle end interrupt flag bit, this bit is 1
indicates interrupt, write 1 cleared or reload
PWM_DATA1 data cleared

0

3

bPWM2_OUT_EN

RW

PWM2 output enable, setting this bit to 1 enables 0
the PWM2 output

2

bPWM1_OUT_EN

RW

PWM1 output enable, setting this bit to 1 enables 0
the PWM1 output

1

bPWM_CLR_ALL

RW

This bit is set to 1 to clear PWM1 and PWM2
counts and FIFOs and requires software reset

1

0

Reserved

RO

Reserved

0

PWM Clock Divider Setting Register (PWM_CK_SE):
Bit Name
Access Description

Reset Value

[7:0] PWM_CK_SE RW

00h

Set the PWM clock divider

12.4 Timer Function
12.4.1 Timer 0 / 1
1. Set T2MOD to select the internal clock frequency of Timer. If bTn_CLK (n = 0/1) is 0, then the
corresponding clock of Timer0 / 1 is Fsys / 12; if bTn_CLK is 1, select bsMR_CLK = 0 or 1 to
select Fsys / 4 or Fsys as the clock.
2. Set the TMOD configuration Timer work mode.
3. Set timer / counter initial value TLn and THn (n = 0/1).
4. Setting bit TRn (n = 0/1) in TCON Enables or disables the timer, which can be interrogated by
bit TFn (n = 0/1) or by interrupt.
Mode 0:13 bit timer / counter

Figure 12.4.1.1 Timer0 / 1 Mode 0
Mode 1:16 bit timer / counter

Figure 12.4.1.2 Timer0 / 1 Mode 1
Mode 2: Automatic reload of 8-bit timer / counter

Figure 12.4.1.3 Timer0 / 1 Mode 2
Mode 3: Timer0 is split into two independent 8-bit Timer / Counters and borrows the TR1 control bit of
Timer1. Timer1 stops running by entering Start Mode 3 in place of the borrowed TR1 control bit.

Figure 12.4.1.4 Timer0 Mode 3

12.4.2 Timer2
Timer2 16-bit reload timer / counter mode:
1. Set bits RCLK and TCLK in T2CON to 0 to select non-serial port baud rate generator mode.
2. To set bit T2 in C_T2 to 0 to use internal clock, go to step (3); set to 1 to select the falling edge
of T2 pin
As the count clock, skip step (3).
3. Set T2MOD to select the internal clock frequency of Timer. If bT2_CLK is 0, then the clock of
Timer2 is Fsys / 12.
If bT2_CLK is 1, then bsMR_CLK = 0 or 1 selects Fsys / 4 or Fsys as the clock.
4. Set the bit CP_RL2 of T2CON to 0 to select the Timer2 16-bit reload timer function.
5. Set RCAP2L and RCAP2H as reload value after timer overflow, set TL2 and TH2 as initial
value of timer (Generally the same as RCAP2L and RCAP2H), set TR2 to 1 and turn on
Timer2.
6. The current timer / counter status can be retrieved by interrogating TF2 or Timer 2 interrupts.

Figure 12.4.2.1 Timer2 16-Bit Reload Timer / Counter
Timer2 clock output mode:
Referring to the 16-bit reload timer / counter mode and setting bit T2OE in T2MOD to 1, the divide-by2 clock of the TF2 frequency output from the T2 pin is enabled.
Timer2 Serial Port 0 Baud Rate Generator Mode:
1. Set bit C_T2 in T2CON to 0 Select to use internal clock, or set to select the falling edge of T2
pin as clock. Set bits RCLK and TCLK in T2CON to 1 or 1 if necessary, Select serial baud rate
generator mode.
2. Set T2MOD to select the internal clock frequency of Timer. If bT2_CLK is 0, then Timer2
clock is Fsys / 4; if bT2_CLK is 1, select bsMR / 2 or Fsys as the clock by bTMR_CLK = 0 or
1.
3. Set RCAP2L and RCAP2H as reload value after timer overflow, set TR2 to 1 and enable
Timer2.

Figure 12.4.2.2 Timer2 UART0 Baud Rate Generator

Timer2 dual channel capture mode:
1. Set bits RCLK and TCLK in T2CON to 0 to select non-serial port baud rate generator mode.
2. Set bit C_T2 in T2CON to 0. Select to use internal clock and go to step (3). Set to 1 to select the
falling edge of T2 pin as the count clock and skip step (3).
3. Set T2MOD to select the internal clock frequency of Timer. If bT2_CLK is 0, then the clock of
Timer2 is Fsys / 12; if bT2_CLK is 1, then bsMR_CLK = 0 or 1 selects Fsys / 4 or Fsys as the
clock.
4. Set the T2MOD bits bT2_CAP_M1 and bT2_CAP_M0 to select the corresponding edge capture
mode.
5. Set bit T2_CONT of CP2 to 1 to select the capture function of Timer2 on the T2EX pin.
6. Set TL2 and TH2 as the initial value of the timer, set TR2 to 1 and enable Timer2.
7. When CAP2 capture is completed, RCAP2L and RCAP2H will save the current TL2 and TH2
count values and set EXF2 to generate an interrupt. The next capture between RCAP2L and
RCAP2H and the last captured RCAP2L and RCAP2H The difference is the signal width
between the two valid edges.
8. If T2CON bit C_T2 is 0 and T2MOD bit bT2_CAP1_EN is 1, the capture function of Timer2
on T2 pin will be enabled. When CAP1 capture is completed, T2CAP1L and T2CAP1H will
save the current TL2 and TH2 The count value, and set CAP1F, resulting in an interrupt.

Figure 12.4.2.3 Timer2 Capture Mode

13. Universal Asynchronous Receiver Transmitter (UART)
13.1 UART Introduction
CH554 chip provides two full duplex asynchronous serial ports: UART0 and UART1. CH553 only
provides UART0.
UART0 is a standard MCS51 serial port, the data is received and sent through the SBUF access
physically separate receive / send registers to achieve. The data written to SBUF is loaded into the
transmit register and the read from SBUF corresponds to the receive buffer register.
UART1 is a simplified MCS51 serial port, the data is received and sent through the SBUF1 access
physically separate receive / send registers to achieve. The data written to SBUF1 is loaded into the
transmit register and the read from SBUF1 corresponds to the receive buffer register. Compared with
UART1, UART1 eliminates the multi-machine communication mode and fixed baud rate. UART1 has
an independent baud rate generator.

13.2 UART Register
Table 13.2.1 UART related register list
Name

Address

Description

Reset Value

SCON

98h

UART0 control register

00h

SBUF

99h

UART0 data register

xxh

SCON1

C0h

UART1 control register

40h

SBUF1

C1h

UART1 data register

xxh

SBAUD1

C2h

UART1 baud rate setting register

xxh

13.2.1 UART0 Register Description
UART0 Control Register (SCON):
Bit

Name

Access Description

Reset Value

7

SM0

RW

UART0 working mode select bit 0, this bit is 0
select 8-bit data asynchronous communication;
this bit is 1 select 9-bit data asynchronous
communication

0

6

SM1

RW

UART0 work mode select bit 1, this bit is 0 to
set a fixed baud rate; this bit is 1 to set variable
baud rate, generated by timer T1 or T2

0

5

SM2

RW

UART0 multi-machine communication control 0
bit:
In modes 2 and 3, when SM2 = 1 when SM2 = 1
when receiving data, RI is not set and reception
is invalid if RB8 is 0; RI is set and reception is

enabled if RB8 is 1; and when SM2 = 0, 0 or 1,
RI is set when receiving data, receiving is valid
In mode 1, if SM2 = 1, reception is only valid if
a valid stop bit is received;
In mode 0, SM2 bit must be set to 0
4

REN

RW

UART0 allows to receive the control bit, this bit 0
is 0 forbidden to receive; This bit is 1 to allow to
receive

3

TB8

RW

The ninth bit of data to be transmitted, in modes 0
2 and 3, TB8 is used to write the ninth bit of the
transmit data, which can be a parity bit. In multimachine communication, TB8 is used to indicate
whether the host sends an address byte or not
Data byte, TB8 = 0 for data, TB8 = 1 for address

2

RB8

RW

The 9th bit of receive data, in mode 2 and 3,
RB8 is used to store the 9th bit of receive data
In mode 1, if SM2 = 0 then RB8 is used to store
the received stop bit
In mode 0, RB8 is not used

0

1

TI

RW

Send interrupt flag, set by hardware after a data
byte is sent, software needs to be cleared

0

0

RI

RW

Receive interrupt flag, set by hardware after a
data byte is received, software reset

0

Table 13.2.1.1 UART0 Operating Mode Selection
SM0

SM1

Description

0

0

Mode 0, shift register mode, fixed baud rate is Fsys / 12

0

1

Mode 1,8-bit asynchronous communication mode, the baud rate variable, generated
by the timer T1 or T2

1

0

Mode 2, 9-bit asynchronous communication mode, the baud rate is Fsys / 128
(SMOD = 0) or Fsys / 32 (SMOD = 1)

1

1

Mode 3, 9 asynchronous communication mode, baud rate variable, generated by the
timer T1 or T2

Under modes 1 and 3, UART0 baud rate is generated by timer T1 when RCLK = 0 and TCLK = 0. T1
should be mode 2 automatic reload 8-bit timer mode, bT1_CT and bT1_GATE must be 0, divided into
the following types of clock conditions.
Table 13.2.1.2 Calculating the UART0 baud rate from T1
bTMR_CLK

bT1_CLK

SMOD

Description

1

1

0

TH1 = 256 - Fsys / 32 / baud rate

1

1

1

TH1 = 256 - Fsys / 16 / baud rate

0

1

0

TH1 = 256 - Fsys / 4 / 32 / baud rate

0

1

1

TH1 = 256 - Fsys / 4 / 16 / baud rate

x

0

0

TH1 = 256 - Fsys / 12 / 32 / baud rate

x

0

1

TH1 = 256 - Fsys / 12 / 16 / baud rate

In modes 1 and 3, UART0 baud rate is generated by Timer T2 when RCLK = 1 or TCLK = 1. T2
should be set to 16-bit auto-reload baud rate generator mode, C_T2 and CP_RL2 must be 0, divided
into the following types of clock conditions.
Table 13.2.1.3 Calculating the UART0 Baud Rate from T2
bTMR_CLK bT2_CLK

Description

1

1

RCAP2 = 65536 - Fsys / 16 / baud rate

0

1

RCAP2 = 65536 - Fsys / 2 / 16 / baud rate

x

0

RCAP2 = 65536 - Fsys / 4 / 16 / baud rate

UART0 Data Register (SBUF):
Bit

Name

[7:0] SBUF

Access Description
RW

Reset Value

UART0 data register, including sending and
xxh
receiving two physically separate registers. Write
data to SBUF corresponding to send data
register; Read data from SBUF corresponding to
receive data register

13.2.2 UART1 Register Description
UART1 Control Register (SCON1):
Bit

Name

Access Description

Reset Value

7

U1SM0

RW

UART1 work mode select bit, this bit is 0 Select 0
8-bit data asynchronous communication; This bit
is 1 Select 9-bit data asynchronous
communication

6

Reserved

RO

Reserved

1

5

U1SMOD

RW

Select UART1 communication baud rate: 0 slow mode; 1 - fast mode

0

4

U1REN

RW

UART1 allows to receive the control bit, this bit 0
is 0 forbidden to receive; This bit is 1 to allow to
receive

3

U1TB8

RW

The 9th bit of data to be transmitted. In 9-bit data 0
mode, TB8 is used to write the 9th bit of the
transmit data and can be a parity bit. In 8-bit data
mode, TB8 is ignored

2

U1RB8

RW

In the 9-bit data mode, RB8 is used to store the
9th bit of receive data. In 8-bit data mode, RB8
is used to store the received stop bits

0

1

U1TI

RW

Send interrupt flag, set by hardware after a data
byte is sent, software needs to be cleared

0

0

U1RI

RW

Receive interrupt flag, set by hardware after a
0
data byte is received, software reset
UART1 baud rate generated by the SBAUD1 settings, according to the choice of U1SMOD is divided
into two cases:
•

When U1SMOD = 0, SBAUD1 = 256 - Fsys / 32 / baud rate

•

When U1SMOD = 1, SBAUD1 = 256 - Fsys / 16 / baud rate

•
UART1 Data Register (SBUF1):
Bit

Name

[7:0] SBUF1

Access Description
RW

Reset Value

UART1 data register, including sending and
xxh
receiving two physically separate registers. Write
data to SBUF1 corresponding to send data
register; read data from SBUF1 corresponding
receive data register

13.3 UART Applications
UART0 Application:
1. Select UART0 baud rate generator, you can choose from the timer T1 or T2, and configure the
corresponding counter.
2. Turn on the timer T1 or T2.
3. Set SCON's SM0, SM1, SM2 select the serial port 0 operating mode. Set REN to 1 to enable
UART0 reception.
4. You can set the serial port interrupt or query RI and TI interrupt status.
5. Read and write SBUF send and receive serial data, serial port receive signal baud rate error of
not more than 2%.

UART1 Application:
1. Select U1SMOD and set SBAUD1 according to the baud rate.
2. Set U1SM0 of SCON1 to select the working mode of serial port 1. Set U1REN to 1 to enable
UART1 reception.
3. You can set the serial port 1 interrupt or query U1RI and U1TI interrupt status.
4. Read and write serial port 1 SBUF1 send and receive data, the serial port receive signal baud
rate error of not more than 2%.

14. Synchronous Serial Interface (SPI)
14.1 Introduction to SPI
CH554 chip provides SPI interface for high-speed synchronous data transfer between peripherals.
1. Support master master mode and slave slave mode;
2. Support mode 0 and mode 3 clock mode;
3. Optional 3-line full-duplex or 2-wire half-duplex mode;
4. Optional MSB high first sent or LSB low first sent;
5. Adjustable clock frequency, up to nearly half of the system clock speed;
6. Built-in 1 byte receive FIFO and 1 byte transmit FIFO;
7. The first byte in the slave mode to support preloading data, easy for the host to get the first byte
immediately return data.

14.2 SPI Register
Table 14.2.1 SPI related register list
Name

Address

Description

Reset Value

SPI0_SETUP

FCh

SPI0 setting register

00h

SPI0_S_PRE

FBh

SPI0 Slave Mode Preset Data Register

20h

SPI0_CK_SE

FBh

SPI0 clock frequency division setting register

20h

SPI0_CTRL

FAh

SPI0 control register

02h

SPI0_DATA

F9h

SPI0 data transceiver register

xxh

SPI0_STAT

F8h

SPI0 status register

08h

SPI0 setting register (SPI0_SETUP):

Bit

Name

Access Description

Reset Value

7

bS0_MODE_SLV

RW

SPI0 master / slave mode select bit. When this
0
bit is 0, SPI0 is master mode. When this bit is 1,
SPI0 is slave mode / device mode

6

bS0_IE_FIFO_OV

RW

FIFO overflow interrupt enable bit in slave
0
mode, this bit enables the FIFO overflow
interrupt by 1; this bit causes the FIFO overflow
without interrupt

5

bS0_IE_FIRST

RW

Interrupt enable bit is received in Slave mode
when the first byte is complete. This bit is 1.
Interrupt is triggered when the first data byte is
received in slave mode. When this bit is 0, no
interrupt is generated when the first byte is
received

0

4

bS0_IE_BYTE

RW

Data byte transfer complete interrupt enable bit,
the bit is 1 to allow byte transfer complete
interrupt; the bit is 0, the byte transfer is
completed without interruption

0

3

bS0_BIT_ORDER

RW

Data byte bit control bit, this bit is 0 MSB high
in the front; this bit is 1 LSB low in the former

0

2

Reserved

RO

Reserved

0

1

bS0_SLV_SELT

RO

Chip select active status bit in slave mode, this
bit is 0 to indicate that it is not currently
selected; this bit indicates that it is currently
selected

0

0

bS0_SLV_PRELOA RO
D

Pre-load data status bit in slave mode, which
indicates that the current pre-load state has not
been transferred after the chip select is valid

0

SPI0 Clock Divider Setting Register (SPI0_CK_SE):
Bit

Name

[7:0] SPI0_CK_SE

Access Description

Reset Value

RW

20h

Set the SPI0 clock division factor in master
mode

SPI0 Slave Mode Preset Data Register (SPI0_S_PRE):
Bit

Name

[7:0] SPI0_S_PRE

Access Description

Reset Value

RW

20h

Load the first transmission data in slave mode
beforehand

SPI0 Control Register (SPI0_CTRL):
Bit

Name

Access Description

Reset Value

7

bS0_MISO_OE

RW

SPI0 MISO output enable control bit, the bit is 1 0
to allow output; this bit is 0 to disable the output

6

bS0_MOSI_OE

RW

SPI0 MOSI output enable control bit, this bit is 1 0
enable output; this bit is 0 disable output

5

bS0_SCK_OE

RW

SPI0 SCK output enable control bit, this bit is 1
enable output; this bit is 0 disable output

4

bS0_DATA_DIR

RW

SPI0 Data Direction Control bit. When this bit is 0
0, the data is output. Only the write FIFO is
validated, an SPI transfer is enabled. When this
bit is 1, data is input. The write or read FIFO is
used as a valid operation to start an SPI transfer

3

bS0_MST_CLK

RW

SPI0 master clock mode control bit, the bit is 0
then mode 0, SCK idle default low; the bit is 1
mode 3, SCK default high

2

bS0_2_WIRE

RW

SPI0 2-wire half-duplex mode enable bit, the bit 0
is 0 3-wire full duplex mode, including SCK,
MOSI, MISO; This bit is 1 2-wire half duplex
mode, including SCK, MISO

1

bS0_CLR_ALL

RW

This bit is cleared to 1 by the SPI0 interrupt flag 1
and FIFO. This bit is cleared by software

0

bS0_AUTO_IF

RW

Enable effective operation through the FIFO
0
Auto-clear byte Receive complete interrupt flag
enable bit, the bit is 1, the FIFO is automatically
cleared when a valid read and write Byte
Completion Interrupt flag S0_IF_BYTE Clear

0

0

SPI0 Data Transceiver Register (SPI0_DATA):
Bit

Name

[7:0] SPI0_DATA

Access Description

Reset Value

RW

xxh

Including sending and receiving two physically
separate FIFOs, reading data into a receive data
FIFO, writing data to a transmit data FIFO, and
valid reads and writes to initiate an SPI transfer

SPI0 Status Register (SPI0_STAT):
Bit

Name

Access Description

Reset Value

7

S0_FST_ACT

RO

This bit is 1 to indicate that the current state is
completed when the first byte is received in
slave mode

0

6

S0_IF_OV

RW

FIFO overflow flag in slave mode. This bit
indicates a 1-out-of-FIFO interrupt. A 0 bit
indicates no interrupt. Direct bit access to clear
or write a clear zero. Interrupt triggered by

0

transmit FIFO empty when bS0_DATA_DIR =
0; triggered by receive FIFO full interrupt when
bS0_DATA_DIR = 1
5

S0_IF_FIRST

RW

The first byte received in slave mode completes 0
the interrupt flag. A 1 bit indicates the first byte
was received. Direct bit access to clear or write a
clear zero

4

S0_IF_BYTE

RW

Data byte transfer completed interrupt flag, the 0
bit is 1 that a byte transfer is complete. Direct bit
access clear or write 1 clear, or cleared by FIFO
valid operation when bS0_AUTO_IF = 1

3

S0_FREE

RO

SPI0 free flag, the bit is 1 that there is no current 1
SPI shift, usually in the data bytes between the
neutral period

2

S0_T_FIFO

RO

SPI0 transmit FIFO counter, valid value is 0 or 1 0

1

Reserved

RO

Reserved

0

0

S0_R_FIFO

RO

SPI0 receive FIFO counter, valid value is 0 or 1

0

14.3 SPI Transfer Format
The SPI master mode supports two transfer formats, mode 0 and mode 3, which can be selected by
setting bit bSn_MST_CLK in the SPI control register SPIn_CTRL, which always samples the MISO
data on the rising edge of CLK. Data transmission format as shown below.
Mode 0: bSn_MST_CLK = 0

Figure 14.3.1 SPI Mode 0 Timing Diagram
Mode 3: bSn_MST_CLK = 1

Figure 14.3.2 SPI Mode 3 Timing Diagram

14.4 SPI Configuration
14.4.1 SPI Master Mode Configuration
In SPI master mode, the SCK pin outputs a serial clock and the chip select output pin can be specified
as any I / O pin. SPI0 configuration steps:
1. Set the SPI clock frequency division setting register SPI0_CK_SE, configure the SPI clock
frequency.
2. Set bit bS0_MODE_SLV of SPI setting register SPI0_SETUP to 0 to configure as master mode.
3. Set bit bS0_MST_CLK in SPI control register SPI0_CTRL and set to mode 0 or 3 according to
the requirement.
4. Set the bits bS0_SCK_OE and bS0_MOSI_OE of the SPI control register SPI0_CTRL to 1 and
the bS0_MISO_OE bit to 0 to set the P1 port direction bSCK, bMOSI to output, bMISO to
input, and chip select to output.
Data transmission process:
1. Write SPI0_DATA register, write to the FIFO to send data, automatically start an SPI transfer.
2. Waiting for S0_FREE to 1, indicating that the transmission is completed, you can continue to
send the next byte.
Data reception process:
1. Write the SPI0_DATA register and write any data such as 0FFh to the FIFO to initiate an SPI
transfer.
2. Wait for S0_FREE to 1, indicating that the reception is completed, SPI0_DATA can be read to
get the received data.
3. If the previous bS0_DATA_DIR has been set, then the above read operation will also start the
next SPI transfer, otherwise it will not start.

14.4.2 SPI Slave Mode Configuration
Only SPI0 supports slave mode. In slave mode, the SCK pin is used to receive the serial clock of the
connected SPI master.
1. Set bit bS0_MODE_SLV of SPI0 setting register SPI0_SETUP to 1 to configure slave mode.
2. Set bits bS0_SCK_OE and bS0_MOSI_OE of SPI0 control register SPI0_CTRL to 0, set
bS0_MISO_OE to 1, set P1 port direction bSCK, bMOSI and bMISO, and chip select pins as
inputs. When the SCS chip select active (low), MISO will automatically enable the output. It is
also recommended to set the MISO pin to high-impedance input mode (P1_MOD_OC [6] = 0,
P1_DIR_PU [6] = 0) to disable MISO output during the chip select period.

3. Optionally, set the SPI slave mode preset data memory SPI0_S_PRE for the first time
automatically loaded into the buffer after being selected for output to the external buffer. After 8
serial clocks, ie the first data byte transfer is completed, the CH554 gets the first byte of data
(possibly the command code) from the external SPI master and the external SPI master
exchanges the preset data in SPI0_S_PRE (possibly Is the status value). Bit 7 of register
SPI0_S_PRE is automatically loaded onto the MISO pin during the SCK low level after the SPI
chip select is asserted. For SPI mode 0, if CH554 is preset to bit 7 of SPI0_S_PRE, the external
SPI master will select on the SPI chip select When data is valid but not yet transmitted, the
value of bit 7 of SPI0_S_PRE can be obtained by querying the MISO pin for bit 7 of the
SPI0_S_PRE, thereby obtaining the value of bit 7 of SPI0_S_PRE by simply validating the SPI
chip select.
Data transmission process:
1. Query S0_IF_BYTE or wait for an interrupt. After each SPI data byte transfer, write the
SPI0_DATA register and write the data to be sent to the FIFO. Or wait for S0_FREE to change
from 0 to 1, you can continue to send the next byte.
Data reception process:
1. Query S0_IF_BYTE or wait for an interrupt. After each SPI data byte transfer completes, read
the SPI0_DATA register and receive the data from the FIFO. Query S0_R_FIFO FIFO can be
found in the remaining bytes.

15. ADC and voltage comparator (ADC)
15.1 Introduction to ADC
The CH554 provides an 8-bit analog-to-digital converter including a voltage comparator and an ADC
module. The converter has four analog signal input channels, can be collected in time, support 0 to
VCC analog input voltage range.

15.2 ADC Register
Table 15.2.1 ADC related register list
Name

Address

Description

Reset Value

ADC_CTRL

80h

ADC control register

x0h

ADC_CFG

9AH

ADC Configuration Register

00h

ADC_DATA

9Fh

ADC data register

xxh

ADC Control Register (ADC_CTRL):
Bit

Name

Access Description

Reset Value

7

CMPO

RO

Voltage Comparator result output bit, this bit is 0 x
Description The voltage at the non-inverting
input is lower than the voltage at the inverting
input. When this bit is 1, the voltage at the noninverting input is higher than the voltage at the
inverting input

6

CMP_IF

RW

Voltage comparator results change flag, the bit is 0
1 that the voltage comparator results have
changed, direct bit access clear

5

ADC_IF

RW

ADC conversion completed interrupt flag, the bit 0
is 1 that an ADC conversion is completed, direct
bit access to clear

4

ADC_START

RW

ADC start-up control bit, set to 1 to start the
ADC conversion. This bit is automatically
cleared after the ADC conversion is completed

0

3

CMP_CHAN

RW

Voltage comparator inverting input selection: 0AIN1; 1-AIN3

0

2

Reserved

RO

Reserved

0

1

ADC_CHAN1

RW

Voltage comparator positive input and ADC
input channel selection high

0

0

ADC_CHAN0

RW

Voltage comparator positive input and ADC
input channel selection low

0

The voltage comparator positive-phase input and ADC channel are selected by ADC_CHAN1 and
ADC_CHAN0.
ADC_CHAN1 ADC_CHAN0 Select the voltage comparator positive input and ADC input
channel
0

0

AIN0(P1.1)

0

1

AIN1(P1.4)

1

0

AIN2(P1.5)

1

1

AIN3(P3.2)

ADC Configuration Register (ADC_CFG):
Bit

Name

Access Description

Reset Value

[7:4] Reserved

RO

Reserved

0000b

3

ADC_EN

RW

ADC module power control bit, the bit is 0 to
turn off the ADC module power to sleep; the bit
is 1 to open

0

2

CMP_EN

RW

Voltage comparator power control bit, the bit is 0 0
to turn off the voltage comparator power to

sleep; the bit is 1 to open
1

Reserved

RO

Reserved

0

0

ADC_CLK

RW

ADC reference clock frequency select bit, this
bit is 0 Select slow clock, 384 Fosc cycles per
ADC; this bit is 1 Select fast clock, each ADC
requires 96 Fosc cycles

0

ADC Data Register (ADC_DATA):
Bit

Name

[7:0] ADC_DATA

Access Description

Reset Value

RO

xxh

ADC sampling result data

15.3 ADC Function
ADC sampling mode configuration steps:
1. Set the ADC_EN bit in the ADC_CFG register to 1, turn on the ADC module, and set the
bADC_CLK selection frequency.
2. Set ADC_CHAN1 / 0 in the ADC_CTRL register to select the input channel.
3. Optionally, clear the interrupt flag ADC_IF. Optionally, if you use interrupt mode, you also
need to enable interrupts there.
4. Set ADC_START in the ADC_CTRL register to start an ADC conversion.
5. Wait for ADC_START to change to 0, or set ADC_IF to 1 (if previously cleared) to indicate that
the ADC conversion is complete and that the result data can be read by ADC_DATA. The data
is an equal 255 input voltage relative to the VCC supply voltage. For example, the resulting
data is 47, indicating that the input voltage is approximately 47/255 VCC. If the VCC power
supply voltage is not certain, then another certain reference voltage value can be measured, and
then the measured input voltage value and the VCC power supply voltage value can be
calculated proportionally.
6. If ADC_START is set again, the next ADC conversion can be started.
Voltage comparator mode configuration steps:
1. Set the CMP_EN bit in the ADC_CFG register to 1 to turn on the voltage comparator module.
2. Set ADC_CHAN1 / 0 and CMP_CHAN in the ADC_CTRL register to select the positive and
negative inputs.
3. Optional, clear flag CMP_IF.
4. The status of the CMPO bit can be queried at any time to get the result of the current
comparator.

5. If CMP_IF is changed to 1, the result of the comparator has changed.
The selected analog signal input channel must have its GPIO pin set to high impedance input mode or
open drain output mode with output 1 (equivalent to high impedance input), and Pn_DIR_PU [x] = 0
and recommended Turn off the pull-up and pull-down resistors.

16. USB controller
16.1 USB Controller Introduction
CH554 embedded USB controller and USB transceiver, the characteristics are as follows:
1. Support USB Host host function and USB Device device function;
2. Support USB 2.0 full speed 12Mbps or low speed 1.5Mbps;
3. Support USB control transfer, bulk transfer, interrupt transfer, synchronous / real-time transfer;
4. Support up to 64 bytes of data packets, built-in FIFO, interrupt support and DMA.
The USB related register of CH554 is divided into 3 parts, some registers are multiplexed in the mode
of the host computer and the apparatus.
1. USB global register;
2. USB device controller register;
3. USB host controller register.

16.2 Global Registers
Table 16.2.1 USB Global Registers List (Standard gray reset by bUC_RESET_SIE)
Name

Address

Description

Reset Value

USB_C_CTRL

91h

USB type-C Configures the channel control register

0000 0000b

USB_INT_FG

D8h

USB interrupt flag register

0010 0000b

USB_INT_ST

D9h

USB Interrupt Status Register (Read Only)

00xx xxxxb

USB_MIS_ST

DAh

USB Miscellaneous Status Register (read only)

Xx10 1000b

USB_RX_LEN

DBh

USB Receive Length Register (read only)

0xxx xxxxb

USB_INT_EN

E1h

USB interrupt enable register

0000 0000b

USB_CTRL

E2h

USB control register

0000 0110b

USB_DEV_AD

E3h

USB device address register

0000 0000b

USB type-C Configuration Channel Control Register (USB_C_CTRL):

Bit

Name

Access Description

Reset Value

7

bVBUS2_PD_EN

RW

This bit is set to 1 to enable the internal 10K
0
pull-down resistor on the VBUS2 pin. Disable to
0

6

bUCC2_PD_EN

RW

This bit is 1 to enable the internal 5.1K pulldown resistor on the UCC2 pin. Disable to 0

0

5

bUCC2_PU1_EN

RW

This bit is the internal pull-up resistor control
select high for the UCC2 pin

0

4

bUCC2_PU0_EN

RW

This bit is the internal pull-up resistor control
select low for the UCC2 pin

0

3

bVBUS1_PD_EN

RW

This bit is set to 1 to enable the internal 10K
pull-down resistor on the VBUS1 pin. 0 is not
allowed

0

2

bUCC1_PD_EN

RW

This bit is set to 1 to enable the internal 5.1K
0
pull-down resistor on the UCC1 pin. Disable to 0

1

bUCC1_PU1_EN

RW

This bit is the internal pull-up resistor control
select high for the UCC1 pin

0

0

bUCC1_PU0_EN

RW

This bit is the internal pull-up resistor control
select low for the UCC1 pin

0

The pull-up resistor internal to the UCCn pin is selected by bUCCn_PU1_EN and bUCCn_PU0_EN.
bUCCn_PU1_EN bUCCn_PU0_EN Select the internal pull-up resistor on the UCCn pin
0

0

Internal pull-up resistor is disabled

0

1

Enable internal 56KΩ pull-up resistor to provide default
USB current

1

0

Enable internal 22KΩ pull-up resistor, said it can provide
1.5A current

1

1

Enable internal 10KΩ pull-up resistor, which can provide
3A current

The above USB type-C pull-up and pull-down resistors are independent of the port pull-up resistors
controlled by the Pn_DIR_PU port direction control and pull-up enable register. When a pin is used for
USB type-C, the pin corresponding to this pin should be disabled As a port pull-up resistor, it is
recommended to enable high-impedance input mode for this pin (to prevent this pin from outputting a
low level or high level).
For detailed control and input detection of USB type-C configuration channels, refer to USB type-C
Application Notes and Routines
USB Interrupt Flag Register (USB_INT_FG):
Bit

Name

Access Description

Reset Value

7

U_IS_NAK

RO

0

In USB device mode, a 1 indicates that a NAK

busy response was received during the current
USB transfer. A 0 indicates that a non-NAK
response was received
6

U_TOG_OK

RO

The current USB transmission DATA0 / 1
0
synchronization flag match status, the bit is 1
that synchronization, the data is valid; the bit is 0
that does not synchronize, the data may be
invalid

5

U_SIE_FREE

RO

USB protocol processor idle status bit, this bit is 1
0 for busy, USB transfer is in progress; this bit is
1 for USB free

4

UIF_FIFO_OV

RW

USB FIFO Overflow Interrupt Flag bit, this bit is 0
1 for FIFO overflow interrupt; this bit is 0 for no
interrupt. Direct bit access to clear or write a
clear zero

3

UIF_HST_SOF

RW

USB host mode SOF timer interrupt flag, the bit 0
is 1, said the SOF timer interrupt, the interrupt is
triggered by the SOF packet transfer is complete;
the bit is 0 means no interruption. Direct bit
access to clear or write a clear zero

2

UIF_SUSPEND

RW

The USB bus suspends or wakes up the event
interrupt flag bit. When this bit is set to 1, it
indicates that there is an interrupt triggered by a
USB suspend event or a wake-up event. A 0
indicates no interruption. Direct bit access to
clear or write a clear zero

0

1

UIF_TRANSFER

RW

The USB Transfer Complete Interrupt Flag bit,
when set to 1, indicates an interrupt that is
triggered by a USB transfer completion; a 0
indicates no interruption. Direct bit access to
clear or write a clear zero

0

0

UIF_DETECT

RW

In USB host mode, the USB device connects or 0
disconnects the event interrupt flag bit. When
this bit is set to 1, it indicates that there is an
interrupt which is triggered by detecting the USB
device being connected or disconnected. A value
of 0 indicates no interruption. Direct bit access to
clear or write a clear zero

0

UIF_BUS_RST

RW

USB device interrupt USB interrupt event flag
0
bit, the bit indicates an interrupt, the interrupt
triggered by the USB bus reset event; the bit is 0
for no interruption. Direct bit access to clear or
write a clear zero

USB Interrupt Status Register (USB_INT_ST):

Bit

Name

Access Description

Reset Value

7

bUIS_IS_NAK

RO

In USB device mode, a 1 indicates that a NAK 0
BUSY response was received during the
current USB transfer. With U_IS_NAK

6

bUIS_TOG_OK

RO

The current USB transmission DATA0 / 1
synchronization flag match status, the bit is 1
that synchronization; the bit is 0 that does not
sync. With U_TOG_OK

5

bUIS_TOKEN1

RO

The Token PID ID of the current USB transfer x
transaction in device mode is high

4

bUIS_TOKEN0

RO

Token PID identification low for current USB
transfer transaction in device mode

[3:0] MASK_UIS_ENDP

RO

USB device mode current USB transfer
xxxxb
transaction endpoint number, 0000 represents
the endpoint 0; ...; 1111 represents the endpoint
15

[3:0] MASK_UIS_H_RES

RO

0

x

USB host mode response to the current USB
xxxxb
transaction PID identification, 0000 means no
response or timeout device; Other values that
the response PID
bUIS_TOKEN1 and bUIS_TOKEN0 make up MASK_UIS_TOKEN for the token PID identifying the
current USB transaction in USB device mode: 00 means OUT packet; 01 means SOF packet; 10 means
IN packet; 11 means SETUP packet.
USB Miscellaneous Status Register (USB_MIS_ST):

Bit

Name

Access Description

Reset Value

7

bUMS_SOF_PRES

RO

USB host mode SOF packet indicates the
status bit, the bit is 1 that will send SOF
packet, at this time if there are other USB
packets will be automatically delayed

x

6

bUMS_SOF_ACT

RO

USB host mode SOF packet transmission
x
status, the bit is 1 SOF packet is being sent;
this bit is 0, said the transmission is complete
or idle

5

bUMS_SIE_FREE

RO

USB protocol processor idle status bit, the bit 1
is 0 for busy, ongoing USB transmission; the
bit is 1 that USB free. With U_SIE_FREE

4

bUMS_R_FIFO_RDY

RO

USB receive FIFO data ready status bit, this 0
bit is 0 indicates that the receive FIFO is
empty; the bit is 1 that the receive FIFO is not

empty
3

bUMS_BUS_RESET

RO

USB bus reset status bit, this bit is 0 that there 1
is no USB bus reset; the bit is 1 that is
currently USB bus reset

2

bUMS_SUSPEND

RO

USB suspend status bit, this bit is 0 indicates 0
that the current USB activity; the bit is 1 that
there has been no USB activity for a period of
time, the request to suspend

1

bUMS_DM_LEVEL

RO

The state of the DM pin when the USB device 0
is connected to the USB port is recorded in
the USB host mode, and 0 indicates a low
level and 1 indicates a high level. Used to
determine full speed or low speed

0

bUMS_DEV_ATTACH RO

USB host mode USB device connection status 0
bit, the bit is 1 that the port has been
connected to the USB device; the bit is 0
means no

USB Receive Length Register (USB_RX_LEN):
Bit

Name

[7:0] bUSB_RX_LEN

Access Description

Reset Value

RO

xxh

The current number of bytes of data received
by the USB endpoint

USB Interrupt Enable Register (USB_INT_EN):

Bit

Name

Access Description

Reset Value

7

bUIE_DEV_SOF

RW

This bit is set to 1 to enable USB device mode
receive SOF packet interrupt; disable to 0

0

6

bUIE_DEV_NAK

RW

This bit is 1 Enable USB Device Mode Receive
NAK interrupt; 0 disable

0

5

Reserved

RO

Reserved

0

4

bUIE_FIFO_OV

RW

This bit enables a FIFO overflow interrupt. This 0
bit is set to 0 to disable

3

bUIE_HST_SOF

RW

This bit is 1 to enable USB host mode SOF timer 0
interrupt;

2

bUIE_SUSPEND

RW

This bit is 1 to enable USB bus suspend or wake 0
event interrupt; 0 is disabled

1

bUIE_TRANSFER

RW

This bit is 1 to enable USB transfer complete
interrupt; this bit is 0 disable

0

0

bUIE_DETECT

RW

This bit is set to 1 to enable USB device
0
connection or disconnect event interrupt in USB
host mode;

0

bUIE_BUS_RST

RW

This bit is set to 1 to enable the USB bus event
interrupt in USB device mode; this bit is
disabled

0

USB Control Register (USB_CTRL):
Bit

Name

Access Description

Reset Value

7

bUC_HOST_MODE RW

USB operation mode select bit, this bit is 0 to
0
select USB device mode (DEVICE); this bit is 1
to select USB host mode (HOST)

6

bUC_LOW_SPEED RW

USB bus signal transmission rate select bit, this
bit is 0 to select full speed 12Mbps; this bit is 1
to select low speed 1.5Mbps

5

bUC_DEV_PU_EN RW

USB device enable and internal pull-up resistor 0
control bits in USB device mode, setting this bit
to 1 enables USB device transfer and enables the
internal pull-up resistor

5

bUC_SYS_CTRL1

RW

USB system control high

0

4

bUC_SYS_CTRL0

RW

USB system control low

0

3

bUC_INT_BUSY

RW

USB transfer complete interrupt flag is not
0
cleared before the automatic pause enable bit, the
bit is 1 in the interrupt flag UIF_TRANSFER not
cleared before automatically suspended for the
device mode will automatically busy NAK, for
the host mode will automatically suspend
subsequent transmission; the Bit 0 is not
suspended

2

bUC_RESET_SIE

RW

USB protocol processor software reset control
1
bit, the bit is forced to reset the USB protocol
processor and most of the USB control registers,
the need to clear the software

1

bUC_CLR_ALL

RW

This bit is cleared by 1 to clear the USB interrupt 1
flag and FIFO and requires software reset

0

bUC_DMA_EN

RW

This bit is 1 to enable USB DMA and DMA
interrupts; 0 is disabled

0

0

Composed of bUC_HOST_MODE, bUC_SYS_CTRL1, and bUC_SYS_CTRL0 USB system control
combination:
bUC_HOST_MODE bUC_SYS_CTRL1 bUC_SYS_CTRL0 USB system control description

0

0

0

Disable USB device function, turn
off the internal pull-up resistor

0

0

1

Enable USB device function, turn
off internal pull-up, need to add
external pull-up

0

1

X

Enable USB device function,
enable internal 1.5KΩ pull-up
resistor. This pull-up resistor takes
precedence over the pull-down
resistor and can also be used in
GPIO mode

1

0

0

Select USB host mode, normal
working condition

1

0

1

Select USB host mode, force DP /
DM output SE0 state

1

1

0

Select USB host mode, force the
DP / DM output J state

1

1

1

Select USB host mode, force DP /
DM output K state / wake up

USB Device Address Register (USB_DEV_AD):
Bit

Name

Access Description

Reset Value

7

bUDA_GP_BIT

RW

USB universal flag: Users can customize,
software can be cleared or set

0

[6:0] MASK_USB_ADDR

RW

Host mode is the address of the current
operating USB device; Device mode is the
address of the USB device

00h

16.3 Device Register
In USB device mode, CH554 provides 5 groups of bidirectional endpoints of 0, 1, 2, 3 and 4, and the
maximum data packet length of all endpoints is 64 bytes.
Endpoint 0 is the default endpoint that supports control transfers, sending and receiving share a 64-byte
data buffer.
Endpoint 1, Endpoint 2 and Endpoint 3 each include a transmit endpoint IN and a receive endpoint
OUT, each having an independent 64-byte or double 64-byte data buffer for sending and receiving,
supporting control transfers, bulk transfers, interrupt transfers and Real-time / synchronous
transmission

Endpoint 4 includes a transmit endpoint IN and a receive endpoint OUT, sending and receiving each
have a separate 64-byte data buffer, support control transfer, bulk transfer, interrupt transfer and realtime / synchronous transfer.
Each set of endpoints has a control register, UEPn_CTRL, and a transmit length register,
UEPn_T_LEN (n = 0/1/2/3/4), for setting the synchronization trigger bit for this endpoint, responding
to OUT transactions and IN transactions, and sending data Length and so on.
The USB bus pull-up resistor necessary as a USB device can be set by the software at any time. When
the bUC_DEV_PU_EN in the USB control register USB_CTRL is set to 1, the CH554 internally pulls
up the DP pin or the DM pin of the USB bus according to bUD_LOW_SPEED Resistor and enable
USB device function.
After detecting the USB bus reset, USB bus suspend or wake-up event, or USB successfully finishes
sending data or receiving data, the USB protocol processor will set the corresponding interrupt flag and
generate an interrupt request. The application can directly query or query and analyze the interrupt flag
register USB_INT_FG in the USB interrupt service routine and perform the corresponding processing
according to UIF_BUS_RST and UIF_SUSPEND; and if the UIF_TRANSFER is valid, the USB
interrupt status register USB_INT_ST needs to be further analyzed, and according to the current
endpoint number MASK_UIS_ENDP and the current transaction token PID identifier
MASK_UIS_TOKEN for the appropriate treatment. If the synchronization trigger bit bUEP_R_TOG of
the OUT transaction of each endpoint is set in advance, whether the synchronization trigger bit of the
currently received data packet matches the synchronization trigger bit of the endpoint can be
determined by U_TOG_OK or bUIS_TOG_OK. If the data is synchronized, the data Effective; if the
data is not synchronized, the data should be discarded. After each processing USB send or receive
interrupt, it should correctly modify the corresponding endpoint synchronization trigger bit, used to
synchronize the next data packet sent and detect the next received data packet is synchronized; In
addition, by setting bUEP_AUTO_TOG Achieve the success of the transmission or receive success
automatically flip the corresponding synchronization trigger bit.
The data to be sent by each endpoint is in its own buffer, the length of the data to be sent is set
independently in UEPn_T_LEN; the data received by each endpoint is in its own buffer, but the
received data length is within the USB receive length Register USB_RX_LEN, USB receiver can be
interrupted according to the current endpoint number distinction.
Table 16.3.1 USB Device Related Registers List (Standard gray reset by bUC_RESET_SIE)
Name

Address

Description

Reset Value

UDEV_CTRL

D1h

USB device physical port control register

10xx 0000b

UEP1_CTRL

D2h

Endpoint 1 control register

0000 0000b

UEP1_T_LEN

D3h

Endpoint 1 send length register

0xxx xxxxb

UEP2_CTRL

D4h

Endpoint 2 control register

0000 0000b

UEP2_T_LEN

D5h

Endpoint 2 send length register

0000 0000b

UEP3_CTRL

D6h

Endpoint 3 control register

0000 0000b

UEP3_T_LEN

D7h

Endpoint 3 send length register

0xxx xxxxb

UEP0_CTRL

DCh

Endpoint 0 control register

0000 0000b

UEP0_T_LEN

DDh

Endpoint 0 send length register

0xxx xxxxb

UEP4_CTRL

DEh

Endpoint 4 control register

0000 0000b

UEP4_T_LEN

DFh

Endpoint 4 send length register

0xxx xxxxb

UEP4_1_MOD

EAh

Endpoint 1, 4 mode control register

0000 0000b

UEP2_3_MOD

EBh

Endpoint 2, 3 mode control register

0000 0000b

UEP0_DMA_H

EDh

Endpoint 0 and 4 buffer start address high byte

0000 00xxb

UEP0_DMA_L

ECh

Endpoint 0 and 4 buffer start address low byte

xxxx xxxxb

UEP0_DMA

ECh

UEP0_DMA_L and UEP0_DMA_H form a 16-bit SFR 0xxxh

UEP1_DMA_H

DFh

Endpoint 1 buffer start address high byte

0000 00xxb

UEP1_DMA_L

EEh

Endpoint 1 buffer start address low byte

xxxx xxxxb

UEP1_DMA

EEh

UEP1_DMA_L and UEP1_DMA_H form a 16-bit SFR 0xxxh

UEP2_DMA_H

E5h

Endpoint 2 buffer start address high byte

0000 00xxb

UEP2_DMA_L

E4h

Endpoint 2 buffer start address low byte

xxxx xxxxb

UEP2_DMA

E4h

UEP2_DMA_L and UEP2_DMA_H form a 16-bit SFR 0xxxh

UEP3_DMA_H

E7h

Endpoint 3 buffer start address high byte

0000 00xxb

UEP3_DMA_L

E6h

Endpoint buffer start address low byte

xxxx xxxxb

UEP3_DMA

E6h

UEP3_DMA_L and UEP3_DMA_H form a 16-bit SFR 0xxxh

USB Device Physical Port Control Register (UDEV_CTRL), controlled by bUC_RESET_SIE Reset:
Bit

Name

Access Description

Reset Value

7

bUD_PD_DIS

RW

USB Device Port UDP / UDM Pin Internal
1
Pull-down Resistor Disable bit. This bit
disables the internal pull-down resistor.
Setting this bit to 0 enables the internal pulldown resistor. This bit is not controlled by
bUSB_IO_EN and can also be used to provide
pull-down resistors in GPIO mode

6

Reserved

RO

Reserved

5

bUD_DP_PIN

RO

Current UDP pin state, 0 means low; 1 means x
high

4

bUD_DM_PIN

RO

Current UDM pin state, 0 for low; 1 for high

x

3

Reserved

RO

Reserved

0

2

bUD_LOW_SPEED

RW

USB device physical port low speed mode

0

0

enable bit, this bit is 1 to select 1.5Mbps low
speed mode; this bit is 0 to select 12Mbps full
speed mode
1

bUD_GP_BIT

RW

USB device mode common flag: the user can 0
define their own, software can be cleared or
set

0

bUD_PORT_EN

RW

USB device physical port enable bit, this bit is 0
1 to enable the physical port; this bit is 0 to
disable the physical port

Endpoint n Control Register (UEPn_CTRL):
Bit Name
Access Description

Reset Value

7

bUEP_R_TOG

RW

The desired synchronization trigger for the
0
receiver of the USB endpoint n (handling
SETUP / OUT transactions), which indicates
that DATA0 is expected; a value of 1 indicates
the expected DATA1

6

bUEP_T_TOG

RW

USB endpoint n transmitter (processing IN
transaction) to prepare the synchronization
trigger bit, the bit is 0 to send DATA0; 1 to
send DATA1

0

5

Reserved

RO

Reserved

0

4

bUEP_AUTO_TOG

RW

Synchronous trigger bit automatically flip
0
enable control bit, the bit is 1, said the success
of the transmission or receive the appropriate
flip automatically flip the corresponding
trigger bit; 0 means not automatically flip, but
you can manually switch. Only endpoints
1/2/3 are supported

3

bUEP_R_RES1

RW

The receiver of endpoint n controls the
SETUP / OUT transaction in response to a
high order

0

2

bUEP_R_RES0

RW

The receiver of endpoint n controls the
SETUP / OUT transaction in response to the
low order

0

1

bUEP_T_RES1

RW

The response of the sender of endpoint n to IN 0
transaction is high

0

bUEP_T_RES0

RW

The response of the sender of endpoint n to
the IN transaction is controlled low

0

MASK_UEP_R_RES consisting of bUEP_R_RES1 and bUEP_R_RES0 Controls how the receiver of
endpoint n responds to the SETUP / OUT transaction: 00 for ACK or Ready; 01 for timeout / no
response for real-time / synchronous transfer of non-endpoint 0; 10 means answering NAK or busy; 11
means answering STALL or error.

MASK_UEP_T_RES, consisting of bUEP_T_RES1 and bUEP_T_RES0, is used to control how the
sender of endpoint n responds to an IN transaction: 00 means DATA0 / DATA1 or data ready and
expected ACK; 01 means DATA0 / DATA1 is acknowledged and expect no response for non- Endpoint
0 real-time / synchronous transmission; 10 means NAK or busy; 11 means STALL or error.
[remainder of 16.3 omitted]

16.4 Host Register
In USB host mode, the CH554 provides a set of bidirectional host endpoints including a transmit
endpoint OUT and a receive endpoint IN. The maximum packet length is 64 bytes and supports control
transfers, bulk transfers, interrupt transfers, and real-time / synchronous transfers.
Each USB transaction initiated by the host endpoint automatically sets the interrupt flag,
UIF_TRANSFER, at the end of processing. The application can directly query or query and analyze the
interrupt flag register USB_INT_FG in the USB interrupt service routine, and perform corresponding
processing according to each interrupt flag. Moreover, if the UIF_TRANSFER is valid, the USB
interrupt status register USB_INT_ST needs to be further analyzed, and the current USB The reply
transaction identifier MASK_UIS_H_RES of the transaction is processed accordingly.
If a host receives the synchronization trigger bit bUH_R_TOG of the IN transaction of the receiving
endpoint, it can determine whether the synchronization trigger bit of the currently received data packet
matches the synchronization trigger bit of the host receiving endpoint by using U_TOG_OK or
bUIS_TOG_OK. If the data is synchronized, The data is valid; if the data is out of sync, the data should
be discarded. After each processing USB send or receive interrupt, should correct the corresponding
host endpoint synchronization trigger bit, used to synchronize the next data packet sent and detect the
next received data packet is synchronized; In addition, by setting bUEP_AUTO_TOG Can be achieved
after the success of the transmission or receive the success of the corresponding automatic flip
synchronization trigger bit.
The USB host token setting register UH_EP_PID is a multiplexing of USB endpoint 1 control registers
in USB device mode and is used to set the endpoint number of the target device to be operated and the
Token PID packet identifier of this USB transfer transaction. Data corresponding to the SETUP token
and the OUT token are provided by the host sending endpoint. The data to be sent is in the
UH_TX_DMA buffer and the data length to be sent is set in UH_TX_LEN. The data corresponding to
the IN token is returned by the target device to the host Receiving endpoint, the received data is stored
in the UH_RX_DMA buffer and the received data length is stored in USB_RX_LEN.
Table 16.4.1 USB Host Related Registers List (Standard gray reset by bUC_RESET_SIE)
Name

Address Description

Reset Value

UHOST_CTRL

D1h

USB host physical port control register

10xx 0000b

UH_SETUP

D2h

USB Host Auxiliary Setting Register

0000 0000b

UH_RX_CTRL

D4h

USB host receive endpoint control register

0000 0000b

UH_EP_PID

D5h

USB host token setting register

0000 0000b

UH_TX_CTRL

D6h

USB host sends endpoint control register

0000 0000b

UH_TX_LEN

D7h

USB host send length register

0xxx xxxxb

UH_EP_MOD

EBh

USB host endpoint mode control register

0000 0000b

UH_RX_DMA_H E5h

USB host receive buffer start address high byte

0000 00xxb

UH_RX_DMA_L E4h

USB host receive buffer start address low byte

xxxx xxxxb

UH_RX_DMA

The 16-bit SFRs are composed of UH_RX_DMA_L and 0xxxh
UH_RX_DMA_H

E4h

UH_TX_DMA_H E7h

USB host send buffer start address high byte

0000 00xxb

UH_TX_DMA_L

E6h

USB host send buffer start address low byte

Xxxx xxxxb

UH_TX_DMA

E6h

The 16-bit SFR consists of UH_TX_DMA_L and
UH_TX_DMA_H

0xxxh

USB host physical port control register (UHOST_CTRL), reset control by bUC_RESET_SIE:
Bit Name
Access Description
Reset Value
7

bUH_PD_DIS

RW

USB Host Port UDP / UDM Pin Internal Pull- 1
down Resistor Disable bit. This bit disables
the internal pull-down resistor. Setting this bit
to 0 enables the internal pull-down resistor.
This bit is not controlled by bUSB_IO_EN
and can also be used to provide pull-down
resistors in GPIO mode

6

Reserved

RO

Reserved

5

bUH_DP_PIN

RO

Current UDP pin state, 0 means low; 1 means x
high

4

bUH_DM_PIN

RO

Current UDM pin state, 0 for low; 1 for high

x

3

Reserved

RO

Reserved

0

2

bUH_LOW_SPEED

RW

USB host physical port low speed mode
0
enable bit, this bit is 1 to select 1.5Mbps low
speed mode; this bit is 0 to select 12Mbps full
speed mode

1

bUH_BUS_RESET

RW

USB host port bus reset control bit, this bit is
1 to force the host port to output USB bus
reset; this bit is 0 to end output

0

bUH_PORT_EN

RW

USB Host Port Enable bit, this bit disables the 0
host port by 0; this bit enables the host port by
1. This bit is automatically cleared when the
USB device is disconnected

USB Host Auxiliary Setup Register (UH_SETUP):
Bit Name
Access Description

0

0

Reset Value

7

bUH_PRE_PID_EN

RW

Low Preamble Packet PRE PID enable bit,
0
this bit is 1 Enable USB host to communicate
with low-speed USB device through external
HUB; Disable low-speed leading packet to 0,
HUB not between USB host and low-speed
USB device

6

bUH_SOF_EN

RW

Automatically generated SOF packet enable
bit, the bit is automatically generated by the
USB host SOF packet; 0 is not automatically
generated, but can be generated by hand

0

RO

Reserved

00h

[5:0] Reserved

USB Host Receive Endpoint Control Register (UH_RX_CTRL):
Bit Name
Access Description
7

bUH_R_TOG

Reset Value

RW

USB host receiver (handling IN transaction) 0
expected synchronization trigger bit, the bit is
0 indicates the expected DATA0; 1 indicates
the expected DATA1

[6:5] Reserved

RO

Reserved

4

bUH_R_AUTO_TOG

RW

Automatically turn bUH_R_TOG enable
0
control bit, the bit is 1 that the USB host
automatically flip the bUH_R_TOG flag after
receiving the success; 0 means that does not
automatically flip, but you can manually
switch

3

Reserved

RO

Reserved

2

bUH_R_RES

RW

USB host receiver response to IN transaction 0
control bit, 0 means ACK or Ready; 1 means
no response for non-endpoint 0 with the target
device for real-time / synchronous
transmission

RO

Reserved

[1:0] Reserved

00b

0

00b

USB Host Token Setting Register (UH_EP_PID):
Bit

Name

Access Description

Reset Value

[7:4] MASK_UH_TOKEN

RW

Set the Token PID packet identifier of this
USB transfer transaction

0000b

[3:0] MASK_UH_ENDP

RW

Set the endpoint number of the target device
to be operated this time

0000b

USB Host Transmit Endpoint Control Register (UH_TX_CTRL):

Bit

Name

Access Description

Reset Value

7

Reserved

RO

Reserved

0

6

bUH_T_TOG

RW

USB host transmitter (processing SETUP /
0
OUT transaction) to prepare the
synchronization trigger bit, the bit is 0 to send
DATA0; 1 to send DATA1

5

Reserved

RO

Reserved

0

4

bUH_T_AUTO_TOG

RW

Automatically flip bUH_T_TOG enable
control bit, the bit is 1 means that the USB
host automatically sends the bUH_T_TOG
flag after it is successfully sent; 0 means it
does not automatically flip, but it can be
manually switched

0

[3:1] Reserved

RO

Reserved

000b

0

RW

The USB host transmitter's response control 0
bit to the SETUP / OUT transaction, 0 to
indicate expected response ACK or ready; 1 to
indicate no response expected, for real-time /
synchronous transfer with non-endpoint 0 of
the target device

bUH_T_RES

USB Host Transmit Length Register (UH_TX_LEN):
Bit

Name

[7:0] UH_TX_LEN

Access Description

Reset Value

RW

xxh

Set the number of bytes of data to be sent by
the USB host to send the endpoint

USB Host Endpoint Mode Control Register (UH_EP_MOD):
Bit

Name

Access Description

Reset Value

7

Reserved

RO

Reserved

0

6

bUH_EP_TX_EN

RW

This bit is 0 to disable the USB host from
0
sending data to the endpoint. This bit is set to
1 to enable the USB host to send data to the
endpoint (SETUP / OUT)

5

Reserved

RO

Reserved

0

4

bUH_EP_TBUF_MOD

The USB host sends the endpoint data buffer
mode control bit

0

3

bUH_EP_RX_EN

This bit is 0 to disable USB host receive
endpoint receive data; this bit is 1 to enable
USB host receive endpoint receive data (IN)

0

[2:1] Reserved
0

RO

Reserved

00b

bUH_EP_RBUF_MOD RW

The USB host receives the endpoint data
0
buffer mode control bit
The combination of bUH_EP_TX_EN and bUH_EP_TBUF_MOD controls the USB host to send
endpoint data buffer mode, refer to the following table.
Table 16.4.2 Host Transmit Buffer Modes
bUH_EP_TX_EN bUH_EP_TBUF_MOD Structure Description: Starting address
UH_TX_DMA
0

x

Endpoints are disabled and no UH_TX_DMA buffer is
used

1

0

Single 64-byte send buffer (SETUP / OUT)

1

1

Double 64 bytes send buffer, select by bUH_T_TOG:
Select the first 64 bytes of buffer when bUH_T_TOG
= 0;
When bUH_T_TOG = 1, select the last 64 bytes of
buffer
The combination of bUH_EP_RX_EN and bUH_EP_RBUF_MOD controls the USB host receive
endpoint data buffer mode, refer to the following table.
Table 16.4.3 Host Receive Buffer Modes
bUH_EP_RX_EN bUH_EP_RBUF_MOD Structure Description: Starting address
UH_RX_DMA
0

x

Endpoints are disabled and no UH_RX_DMA buffer
is used

1

0

Single 64-byte send buffer (IN)

1

1

Double 64 bytes send buffer, select by bUH_R_TOG:
Select the first 64 bytes of buffer when bUH_R_TOG
= 0;
When bUH_R_TOG = 1, select the last 64 bytes of
buffer

USB host receive buffer start address (UH_RX_DMA):
Bit

Name

Access Description

Reset Value

[7:0] UH_RX_DMA_H

RW

USB host receiver buffer high byte start
address, only the lower 2 effective, high 6
fixed to 0

0xh

[7:0] UH_RX_DMA_L

RO

USB host receive buffer start address low byte xxh

USB host then send red zone start address (UH_TX_DMA):

Bit

Name

Access Description

Reset Value

[7:0] UH_TX_DMA_H

RW

USB host send buffer high byte start address,
only the lower 2 effective, high 6 fixed to 0

0xh

[7:0] UH_TX_DMA_L

RO

USB host send buffer start address low byte

xxh

17. Touch-Key
17.1 Introduction to Touch-Key
CH554 chip provides capacitance detection module and related timers, with 6 input channels,
supporting capacitance range 5pF ~ 150pF. Self capacitance mode can support up to 6 touch keys,
mutual capacitance mode can support up to 15 touch keys.

17.2 Touch-Key register
Table 17.2.1 Touch-Key related register list
Name

Address Description

Reset Value

TKEY_CTRL

C3h

Touch-Key control register

x0h

TKEY_DATH

C5h

Touch-Key Data High Byte (Read Only)

00h

TKEY_DATL

C4h

Touch-Key Data Low Byte (Read Only)

xxh

TKEY_DAT

C4h

TKEY_DATL and TKEY_DATH form a 16-bit SFR

00xxh

Touch-Key Control Register (TKEY_CTRL):
Bit Name
Access Description
7

Reset Value

bTKC_IF

RW

Timer interrupt flag. If bTKD_CHG = 0, the x
request interrupt is automatically set at the
end of the current timing period,
automatically cleared when the preparation
phase ends, or cleared by writing
TKEY_CTRL. Auto-clear if bTKD_CHG = 1,
do not request interrupts, skip the current
cycle, then re-prepare and detect on the next
cycle, and set the request interrupt
automatically at the end of the next cycle

[6:5] Reserved

RO

Reserved

00b

4

RW

Capacitor detection timer cycle selection: 01mS; 1-2mS. The first 87uS per cycle is the
preparation phase and the remaining time
detection phase. The above time is based on
the time when Fosc = 24 MHz

0

bTKC_2MS

3

Reserved

RO

Reserved

0

2

bTKC_CHAN2

RW

Touch the button Capacitor Detection Input
Select Low

0

1

bTKC_CHAN1

RW

Touch the button Capacitor Detection Input
Select High

0

0

bTKC_CHAN0

RW

Touch the button Capacitor Detection Input
Select Low

0

By bTKC_CHAN2 ~ bTKC_CHAN0 select the touch button capacitance detection input channel.
bTKC_CHAN2 bTKC_CHAN1 bTKC_CHAN0 Select the touch button capacitance detection
input channel
0

0

0

Turn off the power of the capacitance detection
module and only serve as a separate timer
interrupt with a period of 1mS or 2mS

0

0

1

TIN0(P1.0)

0

1

0

TIN1(P1.1)

0

1

1

TIN2(P1.4)

1

0

0

TIN3(P1.5)

1

0

1

TIN4(P1.6)

1

1

0

TIN5(P1.7)

1

1

1

Turn on the power detection module but do not
connect any channels

Touch-Key Data Register (TKEY_DAT):
Bit Name
Access Description

Reset Value

7

bTKD_CHG
TKEY_DATH[7]

RO

Touch-Key control change flag. This bit is 1
to indicate that TKEY_CTRL has been
rewritten during the capacitance detection
phase. This may invalidate the TKEY_DAT
data and will not set bTKC_IF at the end of
the current cycle. This bit is automatically
cleared at the end of the preparation phase of
each timing period. The data needs to be
masked

0

6

Reserved

RO

Reserved

0

[5:0] TKEY_DATH

RO

Touch-Key data high byte. Cleared
00h
automatically at the end of the preparation
phase of each timing period; counted
automatically during the capacitance detection
phase; held unchanged during the preparation
phase so that the timing interrupt routine reads

[7:0] TKEY_DATL

RO

Touch-Key data low byte. Cleared
xxh
automatically at the end of the preparation
phase of each timing period; counted
automatically during the capacitance detection
phase; held unchanged during the preparation
phase so that the timing interrupt routine reads

17.3 Touch-Key function
Capacitance detection steps:
1. Set bTKC_2MS and bTKC_CHAN2 ~ bTKC_CHAN0 in TKEY_CTRL register, select the
period and input channel. The selected input channel, its GPIO pin must be set to high
impedance input mode, or open drain output mode and in output 1 state (equivalent to high
impedance input), Pn_DIR_PU [x] = 0.
2. Clear bTKC_IF and start the interrupt IE_TKEY Wait for the timer interrupt, or through active
query bTKC_IF interrupt program.
3. The bTKC_IF request interrupt will be automatically set after the current channel capacitance
detection is completed, and the preparation phase of the next cycle will be entered at the same
time, and the TKEY_DAT data will remain unchanged for about 87uS
4. Into the interrupt program, first read the current channel capacitance data from TKEY_DAT,
and shield the highest bTKD_CHG, the data is relative value, and the capacitance is inversely
proportional to the data when the touch button is pressed than not pressed Under the data is
small.
5. Set bTKC_2MS and bTKC_CHAN2 ~ bTKC_CHAN0 in the TKEY_CTRL register to select
the next input channel. This write will automatically clear bTKC_IF to complete the interrupt
request.
6. Compare the TKEY_DAT data read in step (4) with the previously saved data of the channel
without the key to determine whether the capacitance is changed and whether any key is
pressed.
7. The interrupt is returned, and when the capacitance of the next channel is detected, it will go to
step (3).

18. Parameters
18.1 ABSOLUTE MAXIMUM (Critical or Exceeds Absolute
Maximum will probably cause the chip to malfunction or even be
damaged)
Name

Parameter Description

Min

Max

Unit

TA

System frequency Fsys less than 28MHz ambient
temperature when working

-40

85

℃ 

TA32M

System frequency Fsys greater than 28MHz ambient
temperature when working

-20

70

℃ 

TS

Ambient temperature when stored

-55

125

℃ 

VCC

Power supply voltage (VCC power supply, GND ground)

-0.4

5.8

V

VIO

Voltage on other input or output pins other than P3.6 /
P3.7

-0.4

VCC+0.4 V

VIOU

P3.6 / P3.7 Input or output pin voltage

-0.4

V33+0.4

V

18.2 Electrical Specifications 5V (Test Conditions: TA = 25 ° C,
VCC = 5V, Fsys = 6MHz)
Name

Parameter Description

VCC5
V33

Typical Max

Unit

VCC pin supply voltage V33 connected to external 3.7
capacitor

5

5.5

V

Internal USB power regulator output voltage

3.14

3.27

3.4

V

ICC24M5 Fsys = total supply current at 24MHz operation

8

11

mA

ICC6M5

4

6

mA

2

3

mA

Fsys = Total operating current at 6MHz operation

ICC750K Fsys = total supply current at 750KHz operation
5

Mind

ISLP5

Total power supply current after sleep

0.1

.02

mA

ISLP5L

VCC = V33 = 5V, and choose the external crystal
clock, and bLDO3V3_OFF = 1 turn off the LDO,
the total power supply current after a complete sleep

0.008

0.02

mA

IADC5

ADC analog-digital conversion module operating
current

200

800

uA

ICMP5

Voltage comparator module operating current

100

500

uA

ITKEY5

Touch button capacitance detection module
operating current

150

250

uA

VIL5

Low level input voltage

-0.4

1.2

V

VIH5

High level input voltage

2.4

VCC+0.4 V

VOL5

Low level output voltage (12mA sink current)

VOH5

High level output voltage (8mA output current)

VCC0.4

V

VOH5U

P3.6 / P3.7 high level output voltage (8mA output
current)

V33-0.4

V

0.4

V

IIN

No pull-up input input current

-5

0

0

uA

IDN5

Input current with pull-down resistor input

-35

-70

-140

uA

IUP5

Input current with pull-up resistor input

35

70

140

uA

IUP5X

With pull-up input from low to high flip input
current

250

400

600

uA

Vpot

Power-on reset threshold voltage

2.1

2.3

2.5

V

18.3 Electrical Specifications 3.3V (Test Conditions: TA = 25 ° C,
VCC = V33 = 3.3V, Fsys = 6MHz)
Name

Parameter Description

Min

VCC3

VCC pin
V33 shorted to VCC, USB enabled 3.0
supply voltage V33 shorted to VCC, USB disabled 2.7

Typical Max

Unit

3.3

3.6

V

3.3

3.6

V

ICC16M3 Fsys = total supply current at 16MHz operation

4

6

mA

ICC6M3

2

4

mA

1

2

mA

Fsys = Total operating current at 6MHz operation

ICC750K Fsys = total supply current at 750KHz operation
3
ISLP3

Total power supply current after sleep

0.07

.15

mA

ISLP3L

VCC = V33 = 5V, and choose the external crystal
clock, and bLDO3V3_OFF = 1 turn off the LDO,
the total power supply current after a complete sleep

0.004

0.01

mA

IADC3

ADC analog-digital conversion module operating
current

150

500

uA

ICMP3

Voltage comparator module operating current

70

300

uA

ITKEY3

Touch button capacitance detection module
operating current

130

200

uA

VIL3

Low level input voltage

-0.4

0.8

V

VIH3

High level input voltage

1.9

VCC+0.4 V

VOL3

Low level output voltage (12mA sink current)

VOH3

High level output voltage (8mA output current)

VCC0.4

V

VOH3U

P3.6 / P3.7 high level output voltage (8mA output
current)

V33-0.4

V

IIN

No pull-up input input current

-5

0

5

uA

IDN3

Input current with pull-down resistor input

-15

-30

-60

uA

IUP3

Input current with pull-up resistor input

15

30

60

uA

0.4

V

IUP3X

With pull-up input from low to high flip input
current

100

170

250

uA

Vpot

Power-on reset threshold voltage

2.1

2.3

2.5

V

18.4 Timing Parameters (Test Conditions: TA = 25 ° C, VCC = 5V
or VCC = V33 = 3.3V, Fsys = 6MHz)
Name

Parameter Description

Min

Typical Max

Unit

Fxt

External crystal frequency or XI input clock
frequency

6

24

24

MHz

Fosc

Calibrated internal clock frequency at 3=3V to 3.6V 23.64

24

24.36

MHz

Fosc28

Calibrated internal clock frequency when
V33=2.8V~3V

23.28

24

24.72

MHz

Fosc27

Calibrated internal clock frequency at V33=2.7V

21

24

25

MHz

Fpll

Internally multiplied PLL frequency

24

96

100

MHz

Fusb4x

USB sampling clock frequency when using the USB 47.98
host function

48

48.02

MHz

USB sampling clock frequency when using USB
device function

47.04

48

48.96

MHz

System frequency clock frequency (VCC> = 4.4V)

0.1

6

24

MHz

System frequency clock frequency (4.4V> VCC> =
3.3V)

0.1

6

16

MHz

System frequency clock frequency (VCC <3.3V)

0.1

6

12

MHz

Tpor

Power on reset delay

9

11

15

mS

Trst

Enter the width of the valid reset signal from outside 70
RST

Trdl

Thermal reset delay

30

Twdc

Watchdog overflow period / timing period
calculation formula

65536 * ( 0x100 - WDOG_COUNT
) / Fsys

Tusp

USB host mode to detect USB auto-suspend time

2

3

4

mS

Detects USB auto-suspend time in USB device
mode

4

5

6

mS

Wakeup completion time after chip sleep

1

2

10

uS

Fsys

Twak

nS
45

60

uS



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.4
Linearized                      : No
Page Count                      : 76
Language                        : en-US
Creator                         : Writer
Producer                        : LibreOffice 6.0
Create Date                     : 2018:10:16 23:55:25+08:00
EXIF Metadata provided by EXIF.tools

Navigation menu