Feetech STS Driver
Loading...
Searching...
No Matches
Enumerations
sts_registers.h File Reference

: Feetech STS Series Register Map and Instruction Set More...

Go to the source code of this file.

Macros

Protocol Special IDs
#define STS_ID_BROADCAST_SYNC   0xFEU
 
#define STS_ID_BROADCAST_ASYNC   0xFFU
 
Protocol Instructions
#define STS_INST_PING   0x01
 
#define STS_INST_READ   0x02
 
#define STS_INST_WRITE   0x03
 
#define STS_INST_REGWRITE   0x04
 
#define STS_INST_ACTION   0x05
 
#define STS_INST_RESET   0x06
 
#define STS_INST_SYNCREAD   0x82
 
#define STS_INST_SYNCWRITE   0x83
 
EPROM Registers
#define STS_REG_ID   0x05
 
#define STS_REG_BAUDRATE   0x06
 
#define STS_REG_RETURN_DELAY   0x07
 
#define STS_REG_RESPONSE_LEVEL   0x08
 
#define STS_REG_MIN_ANGLE_LIMIT   0x09
 
#define STS_REG_MAX_ANGLE_LIMIT   0x0B
 
#define STS_REG_MAX_TEMP_LIMIT   0x0D
 
#define STS_REG_MAX_VOLT_LIMIT   0x0E
 
#define STS_REG_MIN_VOLT_LIMIT   0x0F
 
#define STS_REG_MAX_TORQUE_LIMIT   0x10
 
#define STS_REG_P_GAIN   0x15
 
#define STS_REG_D_GAIN   0x16
 
#define STS_REG_I_GAIN   0x17
 
#define STS_REG_OFF_OFFSET   0x1F
 
#define STS_REG_OPERATION_MODE   0x21
 
RAM Registers
#define STS_REG_TORQUE_ENABLE   0x28
 
#define STS_REG_ACCELERATION   0x29
 
#define STS_REG_GOAL_POSITION   0x2A
 
#define STS_REG_GOAL_TIME   0x2C
 
#define STS_REG_GOAL_SPEED   0x2E
 
#define STS_REG_LOCK   0x33
 
Feedback Registers
#define STS_REG_PRESENT_POSITION   0x38
 
#define STS_REG_PRESENT_SPEED   0x3A
 
#define STS_REG_PRESENT_LOAD   0x3C
 
#define STS_REG_PRESENT_VOLTAGE   0x3E
 
#define STS_REG_PRESENT_TEMP   0x3F
 
#define STS_REG_ASYNC_WRITE_FLAG   0x40
 
#define STS_REG_STATUS_ERROR   0x41
 
#define STS_REG_MOVING_FLAG   0x42
 
#define STS_REG_TORQUE_LIMIT   0x30
 
Hardware Error Bitmasks (Address 0x41)
#define STS_STATUS_OK   0x00U
 
#define STS_BIT_ERR_VOLTAGE   (1 << 0)
 
#define STS_BIT_ERR_TEMP   (1 << 1)
 
#define STS_BIT_ERR_OVERHEAT   (1 << 2)
 
#define STS_BIT_ERR_LOAD   (1 << 3)
 
Common State Values
#define STS_TORQUE_DISABLE   0x00U
 
#define STS_TORQUE_ENABLE   0x01U
 
Speed Register Bitmasks (Addresses 0x2E and 0x3A)

Masks for parsing target and present speed registers.

#define STS_SPEED_DIRECTION_BIT   0x8000U
 
#define STS_SPEED_MAGNITUDE_MASK   0x7FFFU
 
Load Register Bitmasks (Address 0x2A)

Masks for parsing present load telemetry. @(

#define STS_LOAD_DIRECTION_BIT   0x0400U
 
#define STS_LOAD_MAGNITUDE_MASK   0x03FF
 

Enumerations

enum  sts_operating_mode_t { STS_MODE_POSITION = 0U , STS_MODE_SPEED = 1U , STS_MODE_PWM = 2U , STS_MODE_STEP = 3U }
 Defines the active internal control algorithm (Operating Mode). Changing the operating mode fundamentally alters how the servo responds to target commands. It rewires the internal control loop . More...
 

Detailed Description

: Feetech STS Series Register Map and Instruction Set

Author
: Grisham Balloo

This header defines the internal memory map and command set for the Feetech STS-series smart servos.

  1. EPROM (0x05 - 0x21): Persistent settings that survive power cycles. Requires unlocking via STS_REG_LOCK to modify.
  2. RAM (0x28 - 0x42): Volatile control and feedback registers updated in real-time. Changes are lost upon power-off.

Macro Definition Documentation

◆ STS_BIT_ERR_LOAD

#define STS_BIT_ERR_LOAD   (1 << 3)

Overload/Stall detected

◆ STS_BIT_ERR_OVERHEAT

#define STS_BIT_ERR_OVERHEAT   (1 << 2)

Over-temperature detected

◆ STS_BIT_ERR_TEMP

#define STS_BIT_ERR_TEMP   (1 << 1)

Internal temperature sensor fault

◆ STS_BIT_ERR_VOLTAGE

#define STS_BIT_ERR_VOLTAGE   (1 << 0)

Voltage outside safety limits

◆ STS_ID_BROADCAST_ASYNC

#define STS_ID_BROADCAST_ASYNC   0xFFU

255: Broadcast to all servos (Wait for ACTION instruction)

◆ STS_ID_BROADCAST_SYNC

#define STS_ID_BROADCAST_SYNC   0xFEU

254: Broadcast to all servos (Execute immediately)

◆ STS_INST_ACTION

#define STS_INST_ACTION   0x05

Trigger buffered RegWrite commands

◆ STS_INST_PING

#define STS_INST_PING   0x01

Check servo online status

◆ STS_INST_READ

#define STS_INST_READ   0x02

Read data from register

◆ STS_INST_REGWRITE

#define STS_INST_REGWRITE   0x04

Buffer write data for Action command

◆ STS_INST_RESET

#define STS_INST_RESET   0x06

Factory reset EPROM parameters

◆ STS_INST_SYNCREAD

#define STS_INST_SYNCREAD   0x82

Read from multiple servos simultaneously

◆ STS_INST_SYNCWRITE

#define STS_INST_SYNCWRITE   0x83

Write to multiple servos simultaneously

◆ STS_INST_WRITE

#define STS_INST_WRITE   0x03

Write data to register

◆ STS_LOAD_DIRECTION_BIT

#define STS_LOAD_DIRECTION_BIT   0x0400U

Bit 10: 0 = CW (Negative), 1 = CCW (Positive)

◆ STS_LOAD_MAGNITUDE_MASK

#define STS_LOAD_MAGNITUDE_MASK   0x03FF

Bits 0-9: Raw load magnitude value

◆ STS_REG_ACCELERATION

#define STS_REG_ACCELERATION   0x29

Acceleration/deceleration ramp

◆ STS_REG_ASYNC_WRITE_FLAG

#define STS_REG_ASYNC_WRITE_FLAG   0x40

Status of buffered RegWrite

◆ STS_REG_BAUDRATE

#define STS_REG_BAUDRATE   0x06

Communication speed selector

◆ STS_REG_D_GAIN

#define STS_REG_D_GAIN   0x16

Differential gain for PID

◆ STS_REG_GOAL_POSITION

#define STS_REG_GOAL_POSITION   0x2A

Target position (2 bytes, 0-4095)

◆ STS_REG_GOAL_SPEED

#define STS_REG_GOAL_SPEED   0x2E

Target movement speed (2 bytes)

◆ STS_REG_GOAL_TIME

#define STS_REG_GOAL_TIME   0x2C

Target movement duration (2 bytes)

◆ STS_REG_I_GAIN

#define STS_REG_I_GAIN   0x17

Integral gain for PID

◆ STS_REG_ID

#define STS_REG_ID   0x05

Servo ID (0-253, 254 for broadcast)

◆ STS_REG_LOCK

#define STS_REG_LOCK   0x33

0: Unlock EPROM, 1: Lock EPROM

◆ STS_REG_MAX_ANGLE_LIMIT

#define STS_REG_MAX_ANGLE_LIMIT   0x0B

CCW angle limit (2 bytes)

◆ STS_REG_MAX_TEMP_LIMIT

#define STS_REG_MAX_TEMP_LIMIT   0x0D

Max temperature threshold (°C)

◆ STS_REG_MAX_TORQUE_LIMIT

#define STS_REG_MAX_TORQUE_LIMIT   0x10

Max output torque (2 bytes)

◆ STS_REG_MAX_VOLT_LIMIT

#define STS_REG_MAX_VOLT_LIMIT   0x0E

Max voltage threshold (0.1V units)

◆ STS_REG_MIN_ANGLE_LIMIT

#define STS_REG_MIN_ANGLE_LIMIT   0x09

CW angle limit (2 bytes)

◆ STS_REG_MIN_VOLT_LIMIT

#define STS_REG_MIN_VOLT_LIMIT   0x0F

Min voltage threshold (0.1V units)

◆ STS_REG_MOVING_FLAG

#define STS_REG_MOVING_FLAG   0x42

1: Moving, 0: Target reached

◆ STS_REG_OFF_OFFSET

#define STS_REG_OFF_OFFSET   0x1F

Center position correction (2 bytes)

◆ STS_REG_OPERATION_MODE

#define STS_REG_OPERATION_MODE   0x21

0: Position, 1: Speed, 2: PWM

◆ STS_REG_P_GAIN

#define STS_REG_P_GAIN   0x15

Proportional gain for PID

◆ STS_REG_PRESENT_LOAD

#define STS_REG_PRESENT_LOAD   0x3C

Current motor load (2 bytes)

◆ STS_REG_PRESENT_POSITION

#define STS_REG_PRESENT_POSITION   0x38

Current encoder position (2 bytes)

◆ STS_REG_PRESENT_SPEED

#define STS_REG_PRESENT_SPEED   0x3A

Current rotational speed (2 bytes)

◆ STS_REG_PRESENT_TEMP

#define STS_REG_PRESENT_TEMP   0x3F

Internal temperature (°C)

◆ STS_REG_PRESENT_VOLTAGE

#define STS_REG_PRESENT_VOLTAGE   0x3E

Current input voltage (0.1V units)

◆ STS_REG_RESPONSE_LEVEL

#define STS_REG_RESPONSE_LEVEL   0x08

0: None, 1: Read commands only, 2: All

◆ STS_REG_RETURN_DELAY

#define STS_REG_RETURN_DELAY   0x07

Delay time before status return (0.5us units)

◆ STS_REG_STATUS_ERROR

#define STS_REG_STATUS_ERROR   0x41

Hardware error

◆ STS_REG_TORQUE_ENABLE

#define STS_REG_TORQUE_ENABLE   0x28

1: Torque On, 0: Free move

◆ STS_REG_TORQUE_LIMIT

#define STS_REG_TORQUE_LIMIT   0x30

Dynamic output torque limit (2 bytes, 0-1000)

◆ STS_SPEED_DIRECTION_BIT

#define STS_SPEED_DIRECTION_BIT   0x8000U

Bit 15: 0 = CCW (Positive), 1 = CW (Negative)

◆ STS_SPEED_MAGNITUDE_MASK

#define STS_SPEED_MAGNITUDE_MASK   0x7FFFU

Bits 0-14: Raw speed magnitude value

◆ STS_STATUS_OK

#define STS_STATUS_OK   0x00U

No hardware errors

◆ STS_TORQUE_DISABLE

#define STS_TORQUE_DISABLE   0x00U

Disable motor torque (free spin)

◆ STS_TORQUE_ENABLE

#define STS_TORQUE_ENABLE   0x01U

Enable motor torque (hold position)

Enumeration Type Documentation

◆ sts_operating_mode_t

Defines the active internal control algorithm (Operating Mode). Changing the operating mode fundamentally alters how the servo responds to target commands. It rewires the internal control loop .

Enumerator
STS_MODE_POSITION 

Absolute position control via PID. Target speed acts as a travel limit.

STS_MODE_SPEED 

Continuous rotation velocity control. Absolute position commands are ignored.

STS_MODE_PWM 

Open-loop voltage control. PID is disabled; servo acts as a standard DC motor.

STS_MODE_STEP 

Relative position control. Moves a specified number of steps from the current location.