Get Started

The SANPO robot integration board connects a PC or host controller to CAN and RS485 joint motors. It supports USB, SPI, UART, and Linux SocketCAN, and also provides offline execution, I2C/ADC/UART expansion, and firmware development options.

This document applies to the Standard, CAN-isolated, and RS485-isolated boards based on STM32F407 and shipped with V4 firmware. For the STM32G473 FDCAN upgraded board, see the V6 documentation.

On This Page

Product Overview

The board contains two STM32F407 MCUs and can connect to multiple CAN and RS485 motors at the same time. A PC can connect through USB serial or SocketCAN. A Jetson, Raspberry Pi, or another host controller can connect through SPI.

Item

Specification

Processor

2 × STM32F407

Host interfaces

USB / SPI / UART / SocketCAN

Motor interfaces

4 independent CAN + 4 independent RS485

Motor-system power

0 V to 58 V

Control-system power

USB, 5 V terminal, or host 5 V GPIO

Power outputs

0 V to 58 V / 3.3 V

Transient protection

1.5 kW peak, 93 V clamp voltage

Power and motor connectors

1 XT60 power input; 8 independent XT30 motor connectors

Expansion and debug

I2C / ADC / UART / SWD

The board is suitable for joint-motor debugging, mixed CAN/RS485 control, and product prototyping. It also provides protection for voltage transients that may occur during motor startup, emergency stop, or direction changes.

Separate Motor and Control Power

The XT60 connector supplies the 0 V to 58 V motor system. The control system can be powered through USB, the 5 V terminal, or a host 5 V GPIO. Separating motor and control power reduces the effect of motor startup, emergency stop, and direction changes on the controller. The CAN-isolated and RS485-isolated versions also use isolated transceivers to reduce interaction between bus signals.

Board Connectors

Always follow the silkscreen and connector labels on your board. For the full circuit and MCU pin definitions, see Board Schematic and Pinout.

Board connector diagram

Protocols

Choose the page that matches your host and motor interface:

Use case

Documentation

Control CAN devices from Linux through canX

SocketCAN

Send raw RS485 data directly; leave at least 3 ms of idle time between commands, or use the SANPO protocol for continuous high-rate control

RS485 Raw Passthrough

Control a selected CAN channel through USB serial

SANPO USB to CAN

Control a selected RS485 channel at a high real-time update rate through USB serial

SANPO USB to RS485

Control CAN from a Jetson, Raspberry Pi, or another host through SPI

SANPO SPI to CAN

Control RS485 from a Jetson, Raspberry Pi, or another host through SPI

SANPO SPI to RS485

Debugging Tools

Choose a tool that matches the motor and connection method:

Offline Execution

The board can store a list of commands and execute them at a configured interval without continuous commands from a PC. See Offline Batch Execution for the commands and test procedure.

Firmware Development

Choose one of the following approaches:

Approach

Best for

Developing with the SANPO Firmware

Keep the factory USB, SocketCAN, SPI, CAN, and RS485 functions while adding sensors, I2C, ADC, UART devices, or application logic in STM32CubeIDE or Keil

Developing Custom Firmware

Start from a Keil CAN standard-frame, CAN extended-frame, or RS485 example and implement your own communication and device-control logic

If you only need to add I2C, ADC, UART devices, or custom commands, start with the SANPO firmware development framework. Choose a custom firmware example only when you need full control over the CAN/RS485 protocol and application structure.

See Firmware Update for programming instructions. The two STM32 devices have separate SWD connectors and must be programmed separately. The same firmware can be used on both MCUs when they perform the same function.

Important: Do not perform a full-chip erase. Flash Sector 7 stores factory initialization data. If it is erased, factory initialization must be performed again.

USB Example (PC / Host Debugging)

USB is suitable for PC debugging, online control, and feature validation. After wiring the board, use SANPO Studio, a tool supplied by the motor manufacturer, or your own host application to control CAN or RS485 motors.

  • On Windows, use SANPO Studio, a motor tool, or your own application.

  • On Linux, use USB serial. Firmware V4.6 and later also supports SocketCAN through canX interfaces.

  • Connect the motor to CAN or RS485 according to its protocol.

USB connection example

USB connection example 2

SPI Example (Jetson, Raspberry Pi, and Other Hosts)

SPI is suitable for real-time communication between the board and a Jetson Nano, Raspberry Pi, or another host controller.

  • On Linux hosts, software CS0 and CS1 normally connect to the board connectors marked CS1 and CS2. CS1 accesses STM32 MCU (1), and CS2 accesses STM32 MCU (2).

  • Jetson Nano and Raspberry Pi are examples only. Other hosts can use the same SPI signals.

  • Connect the motor through CAN or RS485 according to its protocol.

SPI connection example

Jetson Nano Wiring

Jetson Nano SPI wiring

Raspberry Pi Wiring

Raspberry Pi SPI wiring