# 固件使用说明

> zhanli : 更新 2023-12-26 ：小车驱动经过验证更新

## 一、注意事项以及环境安装

### 1.1 代码使用注意事项		

​		在目录`STM32`中，`params.mk`指定了部分的宏定义配置。目前实验室购买的两台小车的电机驱动是不同的，一台小车的电机驱动是TB6612FNG，另外一台小车的电机驱动是DRV8870。所以在编译的时候注意对小车的电机驱动芯片进行区分。一般来说简单的区分方式是单芯片的是TB6612，双芯片的是DRV8870。

```makefile
# params.mk
# 定义宏定义
-DMOTOR_DRIVER_TB6612=1
-DMOTOR_DRIVER_DRV8870=2
# 这里指定的是TB6612，如果是8870，则-DMOTOR_DRIVER=MOTOR_DRIVER_DRV8870
-DMOTOR_DRIVER=MOTOR_DRIVER_TB6612 

```
### 1.2 Keil的环境安装

​		`PIBOT\软件工具\软件工具集\MDK520\`目录提供了Keil5的安装包`MDK520.EXE`，安装过程不再赘述。
> [百度云链接](https://pan.baidu.com/s/15Q2ioZ0Vt-2zKLFBYAf-Yg )： 提取码：`owla`   
>
> 完成安装后需要继续安装`Keil.STM32F1xx_DFP.2.2.0.pack`

## 二、编译与烧写

​		参考文档"1.代码编译和烧写"。

## 三、参数配置

#### 3.1、下位机驱动板配置

​		小车驱动底板采用是串口通信，核心板接口上支持`USB`通信。小车与`ROS`交互使用的是`uart3`(小车底板上的`micro usb`接口)，小车打印log采用是`uart1`(小车底板上的排针)。

#### 3.2 硬件的连接

​		我们将`Pibot`的核心板的`micro usb`连接到电脑，如果驱动正确的情况下，通过串口调试助手可以打开对应的COM口，如下图所示：

#### 3.3 检查串口通信

​		为了测试小车的功能，我们可以在串口发送`5a 00 00 5a`命令，这个命令会返回小车的固件版本和构建时间信息。其定义如下所示。如果为我们发送命令后，小车有数据返回则说明串口通信正常。

```c
{
    char version[16]; // 固件版本
    char time[16];    // 构建时间
}
```

- 发送(十六进制): `5a 00 00 5a`
- 接收(十六进制): `5a 00 20 76 32 2e 30 2e  30 00 00 00 00 00 00 00  00 00 00 32 30 32 30 30  31 30 39 2d 6d 33 65 33 00 00 00 d1`

#### 3.4、驱动板的初始化配置

​		由于不同的小车的轮子种类和传感器的种类不同，所以需要对小车进行初始化配置。

​		打开串口助手，设置115200波特率。下面的命令是配置小车的基本信息的。

```shell
# 注意: 下面的指令是针对pibot驱动底盘，其本质是电机减速比、编码器精度灯参数的二进制
5A 01 40 41 00 AF 00 2C 00 0A 40 01 8C 0A 00 00 0A 00 FA 00 32 00 00 00 C8 00 47 5A 00 01 0F 0F 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 81
```

​	