Motor speed uses INT8, with a range of -127 ~ 127.
Servo angle uses UINT8, with a range of 0 ~ 180°.
Servo pulse width uses UINT16, with a range of 500 ~ 2500 us.
Servo pulse width uses big-endian byte order: the high byte is at the lower address and the low byte is at the higher address.
2. Register Overview
Address/Range
Name
Length
Access
Default
Summary
Details
0x00 ~ 0x03
Motor Speed
4
R/W
Not specified
Four-channel motor speed control
4.1
0x10 ~ 0x11
Servo Angle Control
2
R/W
Not specified
Two-channel servo angle control
4.2
0x20 ~ 0x23
Servo Pulse Control
4
R/W
Not specified
Two-channel servo pulse width control
4.3
3. Address Conventions
3.1 Address Regions
Address/Range
Region
Description
0x00 ~ 0x03
Motor Control
Four motor speeds
0x10 ~ 0x11
Servo Angle Control
Two servo angles
0x20 ~ 0x23
Servo Pulse Control
Two servo pulse widths
3.2 Reserved Addresses
All addresses not listed in Section 2 are undefined in the original protocol and must be treated as Reserved. The host must not read or write these addresses or rely on their returned values or write behavior.
4. Register Details
4.1 Motor Speed
Address
Parameter
Type/Range
Access
Description
0x00
Motor1Speed
INT8, -127 ~ 127
R/W
Motor 1 speed
0x01
Motor2Speed
INT8, -127 ~ 127
R/W
Motor 2 speed
0x02
Motor3Speed
INT8, -127 ~ 127
R/W
Motor 3 speed
0x03
Motor4Speed
INT8, -127 ~ 127
R/W
Motor 4 speed
Positive and negative values select the two rotation directions.
127 and -127 represent the maximum speed in each direction.
0 stops the motor.
4.2 Servo Angle Control
Address
Parameter
Type/Range
Access
Description
0x10
Servo1Angle
UINT8, 0 ~ 180
R/W
Servo 1 target angle in °
0x11
Servo2Angle
UINT8, 0 ~ 180
R/W
Servo 2 target angle in °
Write a value from 0 ~ 180 to set the target angle of a 180° servo.
4.3 Servo Pulse Control
Address
Parameter
Type
Access
Description
0x20
Servo1PulseHighByte
UINT8
R/W
High byte of servo 1 pulse width
0x21
Servo1PulseLowByte
UINT8
R/W
Low byte of servo 1 pulse width
0x22
Servo2PulseHighByte
UINT8
R/W
High byte of servo 2 pulse width
0x23
Servo2PulseLowByte
UINT8
R/W
Low byte of servo 2 pulse width
Combine the pulse width as follows:
pulse_us = (PulseHighByte << 8) | PulseLowByte
The valid range is 500 ~ 2500 us. The default servo control frequency is 50 Hz; 500 ~ 2500 us corresponds to a servo angle of 0 ~ 180°.
For example, to set the servo 1 pulse width to 1500 us:
1500 = 0x05DC
0x20 = 0x05
0x21 = 0xDC
5. Version History
Document Version
Date
Description
V1.0
2026-08-05
Converted the official RoverC-Pro I2C Control Protocol PDF to structured Markdown without changing the protocol