STS servo driver failure

Application : OpenDuck Mini V2

Board connection : AMB82-mini UART1_TX , UART1_RX, GND to Serial Bus Servo Driver Board

Library : STS_Servos v1.3.0 (or SCServo v1.02 )

Code : Examples > STS_Servos > STSCL > ListServos.ino

Error Message:

== Rtl8735b IoT Platform ==

[Normal mode]
BootFromNORFlash
[Start Boot ROM…]
=== Load PARTBL ===
=== Load Done ===
=== Load ISP_IQ ===
[fcs chk pass]
ISP_IQ @ 0x8461080, 0x2ff80, 0x0
mfcs_data version 0x00010001
fcs_data version 0x00010101
=== Process ISP_IQ ===
=== Load Done ===
=== Load BL ===
[Image Start Table @ 0x18200]
=== Load Done ===

== Boot Loader ==
Aug 31 2026:12:40:36
=== Load FCS Para ===
=== Load Done ===
[crc pass]
=== Load ISP_IQ Sensor ===
ISP_IQ @ 0x8461080, 0x2ff80
=== Process ISP_IQ ===
=== Load Done ===
=== Load FW1 ===
FW_ISP_IQ @ 0x8061080, 0x31f80
=== Process FW_ISP_IQ ===
DRAM_TYPE is DDR2 128MB.
ddr_freq = 533
VOE flash @ 0x8093080, 0x82f80
FCS KM_status 0x00002081 err 0x0000200a
Wait KM fcs done 0 us
FCS TM_status 0x003f0000
store fcs data for application
It don’t do the sensor initial process
RAM TM_STATUS 0x00bf1208 err 0x00001208
read fcs_status 0x000000bf
read fcs_status 0x000000bf
=== Process VOE IMG ===
[Image Start Table @ 0x20106200]
RAM Load @ 0x8116100->0x20106200, 0x5724
DDR Load @ 0x811c080->0x70100000, 0x15264
=== FW Load Done ===

Boot Loader <==

== RAM Start ==
Build @ 12:30:26, Aug 31 2026

$8735b>[MISC Err]Pin 0[2] is conflicted

[MISC Err]It’s configured as TPIU/UART now.

[MISC Err]It’s using by peripheral 60000000

[MISC Err]Pin 0[3] is conflicted

[MISC Err]It’s configured as TPIU/UART now.

[MISC Err]It’s using by peripheral 60000000

[UART Err]serial_init err (0x9)
No servo detected

:waving_hand: Thanks for posting!

For documentation, SDK resources, FAQs, and community guidelines, please visit: here

For commercial users, if you would like to have dedicated technical support or to connect with us, please fill in the Private User Form

Happy building with Ameba!


:waving_hand: 感謝您的分享!

如需查閱技術文件、SDK 資源、常見問題及社群指南,請參考: 這裡

若您是商業用戶,希望獲得專屬技術支援或與我們聯繫,請填寫 Private User Form (商業用戶表單)

祝您使用 Ameba 開發順利!

Hi @rkuo2000,

Can you try out using Serial2 instead of Serial1?

Thank you.

Hi @Pammy ,

Serial2 works (Serial1 failed) with Seeed XIAO Bus Servo Driver Board 驅動板 (LeRobot SO101)

SCServo_Ping.ino (no Error message)

STS_Servos_ListServos.ino (has Misc Err, but Ping are successful)


Here’s STS_Servos_ListServos.ino result :

== Rtl8735b IoT Platform ==

[Normal mode]
BootFromNORFlash
[Start Boot ROM…]
=== Load PARTBL ===
=== Load Done ===
=== Load ISP_IQ ===
[fcs chk pass]
ISP_IQ @ 0x8461080, 0x2ff80, 0x0
mfcs_data version 0x00010001
fcs_data version 0x00010101
=== Process ISP_IQ ===
=== Load Done ===
=== Load BL ===
[Image Start Table @ 0x18200]
=== Load Done ===

== Boot Loader ==
Aug 31 2026:12:40:36
=== Load FCS Para ===
=== Load Done ===
[crc pass]
=== Load ISP_IQ Sensor ===
ISP_IQ @ 0x8461080, 0x2ff80
=== Process ISP_IQ ===
=== Load Done ===
=== Load FW1 ===
FW_ISP_IQ @ 0x8061080, 0x31f80
=== Process FW_ISP_IQ ===
DRAM_TYPE is DDR2 128MB.
ddr_freq = 533
VOE flash @ 0x8093080, 0x82f80
FCS KM_status 0x00002081 err 0x0000200a
Wait KM fcs done 0 us
FCS TM_status 0x003f0000
store fcs data for application
It don’t do the sensor initial process
RAM TM_STATUS 0x00bf1208 err 0x00001208
read fcs_status 0x000000bf
read fcs_status 0x000000bf
=== Process VOE IMG ===
[Image Start Table @ 0x20106200]
RAM Load @ 0x8116100->0x20106200, 0x5724
DDR Load @ 0x811c080->0x70100000, 0x15264
=== FW Load Done ===

Boot Loader <==

== RAM Start ==
Build @ 12:30:26, Aug 31 2026

$8735b>
[MISC Err]Pin 3[15] is conflicted

[MISC Err]It’s configured as TPIU/UART now.

[MISC Err]It’s using by peripheral 60000002

[MISC Err]Pin 3[16] is conflicted

[MISC Err]It’s configured as TPIU/UART now.

[MISC Err]It’s using by peripheral 60000002

[UART Err]serial_init err (0x9)
Listing servos:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Any clue of these MISC Err ?

Hi @rkuo2000,

In the current example, Serial2 is initialized first:

Serial2.begin(1000000, SERIAL_8N1);

and then passed to the STS servo library:

servos.init(20, &Serial2);

However, STSServoDriver::init() also calls begin() on the provided serial port internally. Since &Serial2 is passed in, this results in Serial2.begin() being called a second time.

On Ameba Pro2, the first Serial2.begin() configures PD15/PD16 for UART2. When servos.init() attempts to initialize the same UART again, the pin manager detects that PD15/PD16 are already assigned and reports the pin conflict:

[MISC Err]Pin 3[15] is conflicted
[MISC Err]Pin 3[16] is conflicted
[UART Err]serial_init err (0x9)

This also explains why the servo ping may still succeed. The first Serial2.begin() has already initialized UART2 successfully, while the second initialization inside servos.init() triggers the conflict warning.

Try removing:

Serial2.begin(1000000, SERIAL_8N1);

and let STSServoDriver::init() handle the UART initialization.