M创动工坊 提供 mcdgf.taobao.com
- 硬件准备
STM32核心板,AS5600磁编码器带线(M创动工坊提供),ST-link,USB线等
- 软件准备
- 安装微软的Vscode,网上很多教程,且有说明书
安装好stlink驱动
- 打开vscode并安装PlatformIO插件。其他的一些中文插件、AI插件等等,根据需要安装
- 打开插件,新建工程
- 重要的设置
- Ini文件设置,这是关键
lib_deps =
askuric/Simple FOC@ 2.3.4
board_build.mcu = stm32f103c6t6
board_upload.maximum_size = 32768
upload_protocol = stlink
debug_tool = stlink
build_flags = -Os
写好后,记得点保存,就开始自动下载库,右下角
设置到这里就结束了。
- 接线
根据程序定义,接线
编码器与STM32接线:
- 编码器的SDA接STM32板子的B7
- 编码器的SCL接B6
- 编码器的VCC接3V3
- 编码器的GND接GND
STM32与ST-Link接线
按STM32和ST-link的丝印接即可
STM32与USB转串口模块接线
这里使用串口2,详见程序内定义。
USB供电,microUSB接口。
到此,线已接完。
- 编程
- 开始编程
打开默认是这样的
- 按arduino格式,写入以下代码,代码就不做注释了,可以直接复制粘贴到AI,如DEEPSEEK上,让它帮忙逐行解析。
#include <Arduino.h>
#include <HardwareSerial.h>
#include <SimpleFOC.h>
// 定义 I2C 引脚
#define I2C_SCL PB6 // SCL 引脚为 PB6
#define I2C_SDA PB7 // SDA 引脚为 PB7
// AS5600 I2C 配置
// MagneticSensorI2C(chip_address, bit_resolution, angle_register_msb, bits_used_msb)
// chip_address: AS5600 的 I2C 地址,通常为 0x36
// bit_resolution: AS5600 为 12 位
// angle_register_msb: AS5600 的 MSB 寄存器地址为 0x0E
// bits_used_msb: MSB 寄存器使用的位数
MagneticSensorI2C as5600 = MagneticSensorI2C(0x36, 12, 0x0E, 4);
// 或者使用 SimpleFOC 提供的快速配置方式
// MagneticSensorI2C as5600 = MagneticSensorI2C(AS5600_I2C);
void setup()
{
// 初始化串口用于调试
Serial2.begin(115200);
// 初始化 I2C,指定 SCL 和 SDA 引脚
Wire.setSCL(I2C_SCL);
Wire.setSDA(I2C_SDA);
Wire.begin();
Wire.setClock(200000); // 设置 I2C 频率为 200kHz
// 初始化 AS5600 传感器
as5600.init();
// 等待传感器初始化完成
delay(1000);
Serial2.println("AS5600 initialized successfully!");
}
void loop()
{
// 更新传感器数据
as5600.update();
// 获取角度(弧度)
float angle = as5600.getAngle();
// 获取角速度(弧度/秒)
float velocity = as5600.getVelocity();
// 打印角度和角速度
Serial2.print("Angle: ");
Serial2.print(angle);
Serial2.print(" rad, Velocity: ");
Serial2.print(velocity);
Serial2.println(" rad/s");
// 稍微延时以便观察
delay(100);
}
- 实现
- 编译烧录
- 插上USB,开始烧录
确定驱动安装正确,设备管理器中,可以看到这两个。
- 烧录成功
- 打开串口监视
到此,测试结束!本文档主要针对M创动工坊淘宝店提供硬件,mcdgf.taobao.com