|
Feetech STS Driver
|
: 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... | |
: Feetech STS Series Register Map and Instruction Set
This header defines the internal memory map and command set for the Feetech STS-series smart servos.
| #define STS_BIT_ERR_LOAD (1 << 3) |
Overload/Stall detected
| #define STS_BIT_ERR_OVERHEAT (1 << 2) |
Over-temperature detected
| #define STS_BIT_ERR_TEMP (1 << 1) |
Internal temperature sensor fault
| #define STS_BIT_ERR_VOLTAGE (1 << 0) |
Voltage outside safety limits
| #define STS_ID_BROADCAST_ASYNC 0xFFU |
255: Broadcast to all servos (Wait for ACTION instruction)
| #define STS_ID_BROADCAST_SYNC 0xFEU |
254: Broadcast to all servos (Execute immediately)
| #define STS_INST_ACTION 0x05 |
Trigger buffered RegWrite commands
| #define STS_INST_PING 0x01 |
Check servo online status
| #define STS_INST_READ 0x02 |
Read data from register
| #define STS_INST_REGWRITE 0x04 |
Buffer write data for Action command
| #define STS_INST_RESET 0x06 |
Factory reset EPROM parameters
| #define STS_INST_SYNCREAD 0x82 |
Read from multiple servos simultaneously
| #define STS_INST_SYNCWRITE 0x83 |
Write to multiple servos simultaneously
| #define STS_INST_WRITE 0x03 |
Write data to register
| #define STS_LOAD_DIRECTION_BIT 0x0400U |
Bit 10: 0 = CW (Negative), 1 = CCW (Positive)
| #define STS_LOAD_MAGNITUDE_MASK 0x03FF |
Bits 0-9: Raw load magnitude value
| #define STS_REG_ACCELERATION 0x29 |
Acceleration/deceleration ramp
| #define STS_REG_ASYNC_WRITE_FLAG 0x40 |
Status of buffered RegWrite
| #define STS_REG_BAUDRATE 0x06 |
Communication speed selector
| #define STS_REG_D_GAIN 0x16 |
Differential gain for PID
| #define STS_REG_GOAL_POSITION 0x2A |
Target position (2 bytes, 0-4095)
| #define STS_REG_GOAL_SPEED 0x2E |
Target movement speed (2 bytes)
| #define STS_REG_GOAL_TIME 0x2C |
Target movement duration (2 bytes)
| #define STS_REG_I_GAIN 0x17 |
Integral gain for PID
| #define STS_REG_ID 0x05 |
Servo ID (0-253, 254 for broadcast)
| #define STS_REG_LOCK 0x33 |
0: Unlock EPROM, 1: Lock EPROM
| #define STS_REG_MAX_ANGLE_LIMIT 0x0B |
CCW angle limit (2 bytes)
| #define STS_REG_MAX_TEMP_LIMIT 0x0D |
Max temperature threshold (°C)
| #define STS_REG_MAX_TORQUE_LIMIT 0x10 |
Max output torque (2 bytes)
| #define STS_REG_MAX_VOLT_LIMIT 0x0E |
Max voltage threshold (0.1V units)
| #define STS_REG_MIN_ANGLE_LIMIT 0x09 |
CW angle limit (2 bytes)
| #define STS_REG_MIN_VOLT_LIMIT 0x0F |
Min voltage threshold (0.1V units)
| #define STS_REG_MOVING_FLAG 0x42 |
1: Moving, 0: Target reached
| #define STS_REG_OFF_OFFSET 0x1F |
Center position correction (2 bytes)
| #define STS_REG_OPERATION_MODE 0x21 |
0: Position, 1: Speed, 2: PWM
| #define STS_REG_P_GAIN 0x15 |
Proportional gain for PID
| #define STS_REG_PRESENT_LOAD 0x3C |
Current motor load (2 bytes)
| #define STS_REG_PRESENT_POSITION 0x38 |
Current encoder position (2 bytes)
| #define STS_REG_PRESENT_SPEED 0x3A |
Current rotational speed (2 bytes)
| #define STS_REG_PRESENT_TEMP 0x3F |
Internal temperature (°C)
| #define STS_REG_PRESENT_VOLTAGE 0x3E |
Current input voltage (0.1V units)
| #define STS_REG_RESPONSE_LEVEL 0x08 |
0: None, 1: Read commands only, 2: All
| #define STS_REG_RETURN_DELAY 0x07 |
Delay time before status return (0.5us units)
| #define STS_REG_STATUS_ERROR 0x41 |
Hardware error
| #define STS_REG_TORQUE_ENABLE 0x28 |
1: Torque On, 0: Free move
| #define STS_REG_TORQUE_LIMIT 0x30 |
Dynamic output torque limit (2 bytes, 0-1000)
| #define STS_SPEED_DIRECTION_BIT 0x8000U |
Bit 15: 0 = CCW (Positive), 1 = CW (Negative)
| #define STS_SPEED_MAGNITUDE_MASK 0x7FFFU |
Bits 0-14: Raw speed magnitude value
| #define STS_STATUS_OK 0x00U |
No hardware errors
| #define STS_TORQUE_DISABLE 0x00U |
Disable motor torque (free spin)
| #define STS_TORQUE_ENABLE 0x01U |
Enable motor torque (hold position)
| enum 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 .