更新文档
parent
6a72046f36
commit
cfac9181c9
|
@ -0,0 +1,49 @@
|
||||||
|
# 固件使用说明
|
||||||
|
|
||||||
|
> 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`
|
||||||
|
|
||||||
|
## 二、编译与烧写
|
||||||
|
### 2.1 编译
|
||||||
|
到`PIBOT`源码包中双击打开`pibot.uvprojx`工程,编译
|
||||||
|
![](https://upload-images.jianshu.io/upload_images/3678585-b70d1e2dfbb71dfa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
|
||||||
|
|
||||||
|
### 2.2 烧写程序
|
||||||
|
**这里我们使用`JLink`烧写程序,连接`JLink`至开发板,开发板上电这里的JLink只需要连接GND SWDIO SWCLK三根线**
|
||||||
|
打开工程选项,切换至Debug标签,选择`JLink`
|
||||||
|
![](https://upload-images.jianshu.io/upload_images/3678585-f4faa6fb614f85e3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
|
||||||
|
|
||||||
|
点击`Settings`按钮,`Port`选择`SW`
|
||||||
|
|
||||||
|
![](https://upload-images.jianshu.io/upload_images/3678585-d00e943421112f2d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
|
||||||
|
|
||||||
|
切换至Flash Download标签,如下图设置
|
||||||
|
|
||||||
|
![](https://upload-images.jianshu.io/upload_images/3678585-ffda6263dd4478be.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
|
||||||
|
|
||||||
|
保存后即可烧写程序
|
||||||
|
|
||||||
|
![](https://upload-images.jianshu.io/upload_images/3678585-6e35f6af95e93451.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
|
||||||
|
|
||||||
|
同时可以看到程序运行指示灯在闪烁表示程序在正常运行了。
|
|
@ -25,25 +25,42 @@
|
||||||
> 完成安装后需要继续安装`Keil.STM32F1xx_DFP.2.2.0.pack`
|
> 完成安装后需要继续安装`Keil.STM32F1xx_DFP.2.2.0.pack`
|
||||||
|
|
||||||
## 二、编译与烧写
|
## 二、编译与烧写
|
||||||
### 2.1 编译
|
|
||||||
到`PIBOT`源码包中双击打开`pibot.uvprojx`工程,编译
|
|
||||||
![](https://upload-images.jianshu.io/upload_images/3678585-b70d1e2dfbb71dfa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
|
|
||||||
|
|
||||||
### 2.2 烧写程序
|
参考文档"1.代码编译和烧写"。
|
||||||
**这里我们使用`JLink`烧写程序,连接`JLink`至开发板,开发板上电这里的JLink只需要连接GND SWDIO SWCLK三根线**
|
|
||||||
打开工程选项,切换至Debug标签,选择`JLink`
|
|
||||||
![](https://upload-images.jianshu.io/upload_images/3678585-f4faa6fb614f85e3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
|
|
||||||
|
|
||||||
点击`Settings`按钮,`Port`选择`SW`
|
## 三、参数配置
|
||||||
|
|
||||||
![](https://upload-images.jianshu.io/upload_images/3678585-d00e943421112f2d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
|
#### 3.1、下位机驱动板配置
|
||||||
|
|
||||||
切换至Flash Download标签,如下图设置
|
小车驱动底板采用是串口通信,核心板接口上支持`USB`通信。小车与`ROS`交互使用的是`uart3`(小车底板上的`micro usb`接口),小车打印log采用是`uart1`(小车底板上的排针)。
|
||||||
|
|
||||||
![](https://upload-images.jianshu.io/upload_images/3678585-ffda6263dd4478be.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
|
#### 3.2 硬件的连接
|
||||||
|
|
||||||
保存后即可烧写程序
|
我们将`Pibot`的核心板的`micro usb`连接到电脑,如果驱动正确的情况下,通过串口调试助手可以打开对应的COM口,如下图所示:
|
||||||
|
|
||||||
![](https://upload-images.jianshu.io/upload_images/3678585-6e35f6af95e93451.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
|
#### 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
|
||||||
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
# 驱动固件的配置与使用
|
|
||||||
|
|
||||||
#### 一、下位机驱动板配置
|
|
||||||
|
|
||||||
小车驱动底板采用是串口通信,核心板接口上支持`USB`通信。小车与`ROS`交互使用的是`uart3`(小车底板上的`micro usb`接口),小车打印log采用是`uart1`(小车底板上的排针)。
|
|
||||||
|
|
||||||
#### 1.1 硬件的连接
|
|
||||||
|
|
||||||
我们将`Pibot`的核心板的`micro usb`连接到电脑,如果驱动正确的情况下,通过串口调试助手可以打开对应的COM口,如下图所示:
|
|
||||||
|
|
||||||
#### 1.2 检查串口通信
|
|
||||||
|
|
||||||
为了测试小车的功能,我们可以在串口发送`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`
|
|
||||||
|
|
||||||
#### 1.3、驱动板的初始化配置
|
|
||||||
|
|
||||||
由于不同的小车的轮子种类和传感器的种类不同,所以需要对小车进行初始化配置。
|
|
||||||
|
|
||||||
打开串口助手,设置115200波特率。下面的命令是配置小车的基本信息的。
|
|
||||||
|
|
||||||
```shell
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ from PyQt5.QtCore import QObject,pyqtSignal
|
||||||
import pb
|
import pb
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
port = "COM9"
|
port = "COM14"
|
||||||
|
|
||||||
pypibot.assistant.enableGlobalExcept()
|
pypibot.assistant.enableGlobalExcept()
|
||||||
# log.enableFileLog(log_dir + "ros_$(Date8)_$(filenumber2).log")
|
# log.enableFileLog(log_dir + "ros_$(Date8)_$(filenumber2).log")
|
||||||
|
|
|
@ -13,7 +13,7 @@ import signal
|
||||||
#port="/dev/pibot"
|
#port="/dev/pibot"
|
||||||
|
|
||||||
#for windows
|
#for windows
|
||||||
port="COM7"
|
port="COM20"
|
||||||
|
|
||||||
pypibot.assistant.enableGlobalExcept()
|
pypibot.assistant.enableGlobalExcept()
|
||||||
#log.enableFileLog(log_dir + "ros_$(Date8)_$(filenumber2).log")
|
#log.enableFileLog(log_dir + "ros_$(Date8)_$(filenumber2).log")
|
||||||
|
|
Loading…
Reference in New Issue