# 固件更新
## SANPO原厂固件更新
### 准备工作
1. 准备STLINK(SWD)下载器,连接开发板STLINK接口与电脑
2. 开发板有两个STLINK接口,分别对应两颗STM32F407芯片,需分别更新固件
3. 更新时建议断开开发板外部电源
### 更新步骤
1. **安装工具**
下载并安装ST官方烧录软件:[STM32CubeProgrammer](https://gitcode.com/sanpo/robot/tree/v4/firmware/tools/STM32CubeProgrammer_win64.zip)
2. **获取固件**
下载最新原厂固件:[sanpo_robot_spine_board_firmware-v4-latest.bin](https://gitcode.com/sanpo/robot/tree/v4/firmware/sanpo_spine/Release/sanpo_robot_spine_board_firmware-v4-latest.bin)
3. **烧录固件**
断开开发板外部电源,使用STM32CubeProgrammer将固件刷入开发板(两颗芯片需分别操作)
## MIT Cheetah SPINE固件更新
**推荐方案:** mbed studio工程(需下载mbed-os.zip并解压至工程文件夹)
> 提示:注意文件目录结构不要嵌套多层mbed-os,不然会找不到targets。文件结构推荐 mit_spine_mbed_studio/mbed-os/targets。
**更新步骤**
1. 安装[mbed studio](https://os.mbed.com/studio/)
2. 打开MIT固件源代码工作区
3. 连接STLINK,选择目标芯片:STM32F407VETx
4. 点击Build program编译并烧录
> 另外,如果使用Keil工程,同样需要把mbed-os.zip解压到工程文件夹,不要嵌套多层mbed-os目录。
**操作图示**
- Step 1:
- Step 2:
- Step 3:
- Step 4:
---
## STM32芯片引脚定义
### 芯片1:STM32F407(1)
| 功能接口 | 引脚定义 | 对应STM32芯片引脚 |
| :---------- | :----------: | :---------: |
| ADC接口1 | AD1 | PB0
| ADC接口1 | AD2 | PB1
| 串口1 | TX | PD8
| 串口1 | RX | PD9
| SPI接口 | CS1 | PA15
| SPI接口 | SCK | PC10
| SPI接口 | MISO | PC11
| SPI接口 | MOSI | PC12
| 预留接口 | ESTOP/RSDV | PD0
| IIC接口1 | SCL | PB10
| IIC接口1 | SDA | PB11
| SWD调试接口1 | SWDIO | PA13
| SWD调试接口1 | SWCLK | PA14
| RS485-2 | RX | PC6
| RS485-2 | TX | PC7
| RS485-1 | RX | PB6
| RS485-1 | TX | PB7
| CAN2 | RX | PB12
| CAN2 | TX | PB13
| CAN1 | RX | PB8
| CAN1 | TX | PB9
### 芯片2:STM32F407(2)
| 功能接口 | 引脚定义 | 对应STM32芯片引脚 |
| :---------- | :----------: | :---------: |
| ADC接口2 | AD1 | PB0
| ADC接口2 | AD2 | PB1
| 串口2 | TX | PD8
| 串口2 | RX | PD9
| SPI接口 | CS2 | PA15
| SPI接口 | SCK | PC10
| SPI接口 | MISO | PC11
| SPI接口 | MOSI | PC12
| 预留接口 | ESTOP/RSDV | PD0
| IIC接口2 | SCL | PB10
| IIC接口2 | SDA | PB11
| SWD调试接口2 | SWDIO | PA13
| SWD调试接口2 | SWCLK | PA14
| RS485-3 | RX | PB6
| RS485-3 | TX | PB7
| RS485-4 | RX | PC6
| RS485-4 | TX | PC7
| CAN3 | RX | PB8
| CAN3 | TX | PB9
| CAN4 | RX | PB12
| CAN4 | TX | PB13
## 硬件架构设计
## 电路原理图