Purpose of writing

Introduction to SPINE

  The MIT’s Cheetah quadruped robot is a project from the Massachusetts Institute of Technology’s Biomechatronics Lab, renowned for its outstanding speed, agility, and stability. A key component in its hardware architecture is the SPINE (Serial Peripheral Interface Network Extension) board, which acts as a protocol converter, transforming the SPI (Serial Peripheral Interface) communication protocol of the UPboard (a computing platform usually responsible for processing advanced control algorithms and decision-making logic) into the CAN (Controller Area Network) protocol required for motor control.

  The SPI protocol is a common serial communication protocol used for communication between microcontrollers and various peripheral devices, such as sensors or other control modules. It conducts data exchange in a high-speed, synchronous, full-duplex manner, suitable for applications demanding high-speed data transmission.

  The CAN protocol is a message-oriented protocol designed for communication between microcontrollers and devices, especially in complex systems like automobiles. It provides a highly reliable communication mechanism, capable of handling sophisticated error detection and conflict resolution mechanisms, ensuring the reliability and timeliness of data transmission in electronic systems.

  In the hardware architecture of the Cheetah quadruped robot, the SPINE board serves to bridge these two different communication protocols, allowing the control algorithms based on the UPboard to send instructions via the SPI protocol. These instructions are then converted by the SPINE board and transmitted to the robot’s motors in the form of the CAN protocol.

Existing Problems

  In 2016, MIT open-sourced their SPINE board hardware design. Dami Technology Co., Ltd., a domestic company, copied this open-source design with minor adjustments and produced their own version of the SPINE to sell. To reduce costs and facilitate production, they made the following changes to the original design:

  1. Changed the external high-speed crystal oscillator frequency from 12M to 8M.
  2. Replaced the STM32F446ZET6, which has more Flash size and GPIO numbers, with STM32F446RCT6.
  3. Removed the interface and chip that were default soldered for the remote control.

  However, they did not make corresponding adjustments to MIT’s publicly released open-source code, leading to a series of issues after code modification. Moreover, they shipped the boards without pre-installed code for testing, resulting in disappointingly low product yields that depended heavily on luck.

  To address the above issues, this guide provides instructions for reliable programming and testing of the SPINE 8M version.

Test Environment

Item Specification
Host Processor Architecture AMD64/x86
Host Software System WINDOWS 7/8/10/11
MCU Programmer Model ST-LINK v2/v3 or J-Link/DAP (This guide does not provide instructions for these)
SPINE Board Version Dami SPINE 8M
Host Programming Software STM32 ST-LINK Utility v4.6.0

Test Steps

  The STM32 ST-LINK Utility (STSW-LINK004) provides an easy-to-use and efficient environment for reading, writing, and verifying storage devices, offering extensive functionality for programming STM32 internal memory (flash, RAM, OTP, etc.), external memory, verifying programming content (checksum, during and post-programming verification, comparison with file), and automating STM32 programming.

  We need this software to read and program the modified FLASH area of the chip.

  Official download link

  Mirror download link

  For convenience, a copy of the software is mirrored in a storage bucket. Please do not distribute this link as it has a monthly traffic limit of 100G. Alternatively, you can click on the download link at the beginning of the article to download all the necessary files.

  After downloading, you will get setup.exe (from the official link) or STM32 ST-LINK Utility v4.6.0.exe (from the mirror link). Double-click to start the installation.

image-center

Figure 1 Installation of ST-LINK Utility

3. Download the Stable SPINE 8M Firmware

  To ensure that the code downloaded into the chip is correct and unaffected by the compiler or code versions, a binary file has been compiled. This binary file’s code version has been thoroughly tested, and the compilation environment is stable and controlled. Programming this binary file into the hardware ensures that we can correctly and reliably test the SPINE 8M hardware.

  Binary firmware download link

  After downloading, you will receive the Spine8M.bin file. Alternatively, you can click the download link at the beginning of the article to download all necessary files.

  Open the ST-LINK Utility software and enter the main interface.

Image centered

Figure 2 ST-LINK Utility Main Interface

  Consulting the manual, we know that the STM32F446RCT6 has a FLASH capacity of 256kb. Therefore, we should change the size in the top-left corner from 0x1000 to 0x40000.

  All STM32 have a 32-bit width, and the user FLASH starting address is always 0x08000000, so these do not need to be changed.

Image centered

Figure 3 ST-LINK Utility Address, Size, and Width Settings

  After modifying the parameters as shown above, insert the ST-LINK into the STM32’s SWD programming and debugging port. Click “Connect to the target”.

Image centered

Figure 4 ST-LINK Utility Connecting to the Chip

  If an error “No ST-LINK detected” appears, please replug the ST-LINK or check if it is damaged.

Image centered

Figure 5 ST-LINK Utility Connection Error 1

  If an error “Can not connect to target!” appears, please check the connection between the ST-LINK and the STM32 SWD.

Image centered

Figure 6 ST-LINK Utility Connection Error 2

  If everything is normal, the corresponding STM32 chip’s FLASH data should be read and displayed.

Image centered

Figure 7 ST-LINK Utility Successful Connection

  Next, select Target > Program & Verify…

Image centered

Figure 8 Select Target > Program & Verify…

  Select the recently downloaded Spine8M.bin, confirm other settings are correct, and then click Start to begin programming.

Image centered

Figure 9 Programming the Firmware into the Chip

  After the download completes, wait a few seconds and disconnect if there are no error messages. Following the fourth step, program the second chip, then connect to the Upboard and follow the content in the Arcdog Software repository to test the SPINE.

Updated: