# Firmware Update The board contains two MCUs. Each chip manages two CAN/CAN FD and two RS485 interfaces, so both chips must be programmed separately. ## Firmware Download Download the latest [STM32G0B1 V82 release package](https://gitcode.com/sanpo/robot/blob/main/products/spine/v8/firmware/g0b/release/spine_v8_v82_g0b_release.zip). After extracting it, program `spine_v8_v82_g0b_release.bin` and verify its integrity with the SHA-256 file in the same directory. ## Important Warning **Do not perform a full-chip erase.** High Flash addresses may store device identity, authorization information, communication settings, and offline batch tasks. A full-chip erase deletes this data, and a normal firmware image cannot restore it automatically. Download the firmware starting at `0x08000000`. Use **Download & Verify** or **Program & Verify**. Do not select a full-chip erase. ## Update with STM32CubeProgrammer Prepare an ST-LINK, STM32CubeProgrammer, and the selected release firmware, then follow these steps: 1. Power the board through USB and ensure the voltage is at least 5 V. 2. Connect ST-LINK to the SWD connector of the first MCU. 3. Select `ST-LINK` in STM32CubeProgrammer and connect. 4. Select the `*_release.bin` file in the release directory and set the download address to `0x08000000`. 5. Download and verify directly; do not erase the full chip first. 6. Disconnect ST-LINK, connect it to the second MCU's SWD connector, and repeat steps 3-5. 7. Power-cycle the board. ## Check the Board After Updating Open the USB management serial port for each MCU. Windows normally displays it as `SANPO Studio Management Port`. Send: ```text AT+VER ``` Use `CRLF` as the line ending. The response should match the firmware just programmed, for example: ```text V82 ``` Then query the communication settings: ```text AT+SETFDCAN? AT+SETRS485? AT+SPIMODE? AT+RS485RAWCH? AT+BATAUTO? ``` An update normally preserves existing communication settings, so the values may differ from the factory defaults. If you need to restore communication defaults, send `AT+CFGERASE` only after confirming that it is appropriate for the installed firmware. ## Factory Communication Defaults | Item | Default | | --- | --- | | Classic CAN / CAN FD arbitration phase | 1 Mbit/s | | CAN FD data phase | 5 Mbit/s, BRS enabled | | RS485 | 4 Mbit/s, 1 stop bit, no parity, 8 data bits | | SPI | `SHORT`, 23 bytes per transfer | When the SPI host needs CAN FD, send: ```text AT+SPIMODE=LONG ```