STM32 匿名助手提升电机控制调试效率(下位机代码和上位机操作演示)

news/2025/2/7 4:48:02/

目录

前言

通信协议选择

上位机配置实现

下位机代码实现

通信效果演示

总结


前言

前面介绍了通过VOFA上传变量并显示成波形方便调试的方法,VOFA上传的是浮点,一个浮点需要4个byte才能够表示,这对本就不是很快的串口带来说有不小负担,而且对于定点的MCU上传数据就不友好了,VOFA上传数据的方法参考下面的链接:

STM32 VOFA+串口调试助手提升电机控制调试效率(下位机代码和上位机操作演示)_stm32的串口使用什么软件调试_卡洛斯伊的博客-CSDN博客

这里介绍一下匿名助手如何显示下位机的数据波形,以后的开发中可以根据实际情况和使用习惯选择合适的工具。 

通信协议选择

这里选择灵活格式帧模式,参考软件的协议介绍文档。

实际用的时候因对协议不熟悉,踩不了少坑,这里总结一下:

如下是一帧满足通信协议的数据:

帧头:0xAB 一个字节,固定的,改成其他会通信不成功,显示不了波形

源地址:一个字节,随便写,0x00也行,不影响波形显示

目标地址: 一个字节,随便写,不影响波形显示

功能码:一个字节,这里是0xF1,需要和上位机对应

数据长度:两个字节,低字节在前,如下表示传输的数据有6个

数据内容:如下6-11都是要传的数据长度,一共6个,用来表示3个int16_t的变量。具体看传输变量的数量来定

和校验和附加校验就是通过传输的内容进行计算得到的两个字节的校验

 计算方法如下:

上位机配置实现

这里配置显示三相电流,分别用int16_t 来表示,如上面的协议说明,配置只需要添加数据即可。

 配置好0xF1的数据后,再点小扳手,找到0xF1#0:IA-IC,再点确认就可以正常显示波形了。

 如果没有波形,再点一下右下角的运行按钮

下位机代码实现

 简单定义一个数组,参考通信协议,再定义一个发送函数

static uint8_t tempData[14] = {0xAB,0xFE,0x05,0xF1,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
void UART_Debug(void);

把要传输的数据放到指定位置,简单粗暴,在周期任务里面或者中断里面调用发送函数即可。

void UART_Debug(void)
{uint16_t flen = tempData_NM[4]+tempData_NM[5]*256;uint8_t sumcheck=0;uint8_t addcheck=0;tempData_NM[6] =((int16_t)((Ia_A)*100)&0xFF);tempData_NM[7] =((int16_t)((Ia_A)*100)>>8);tempData_NM[8] =((int16_t)((Hall_Angle)*100)&0xFF);tempData_NM[9] = ((int16_t)((Hall_Angle)*100)>>8);tempData_NM[10] =((int16_t)((Hall_Speed)*10)&0xFF);tempData_NM[11] =((int16_t)((Hall_Speed)*10)>>8);for(uint16_t i=0;i<(flen+6);i++){sumcheck+=tempData_NM[i];addcheck+=sumcheck;}tempData_NM[12]=(uint8_t)sumcheck;tempData_NM[13]=(uint8_t)addcheck;HAL_UART_Transmit_DMA( &huart2, (uint8_t *)tempData_NM, 14);}

通信效果演示

 

匿名助手显示电流波形

总结

VOFA和匿名助手各有优劣,都能支持较高的波特率,这里没有进行详细对比,但对于工程应用来说,只要满足应用需要即可。在此感谢VOFA和匿名的作者分享这些工具,极大提高工程师的开发效率。


http://www.ppmy.cn/news/60294.html

相关文章

PowerJob客户端连接

本文来说下PowerJob客户端连接 文章目录 启动服务端编写示例代码编写自己的处理器启动示例程序任务配置与运行配置任务创建任务执行结果运行结果问题及解决 本文小结 启动服务端 启动服务端&#xff1a;http://127.0.0.1:7700/#/oms/home 编写示例代码 进入示例工程&#xff08…

【C++】三元操作符、创建并初始化C++对象、C++new关键字

C的三元操作符 if的语法糖 例1 #include <iostream> #include <string>static int s_Level 1; static int s_Speed 2;int main() {if (s_Level > 5){s_Speed 10;}else{s_Speed 5;}std::cin.get(); }用三元操作符&#xff1a; s_Speed s_Level > 5 ?…

Vuex从了解到实际运用(一)彻底搞懂什么是Vuex

vuex从了解到实际运用——彻底搞懂什么是vuex 知识回调&#xff08;不懂就看这儿&#xff01;&#xff09;场景复现核心干货什么是vuex全局状态管理使用状态管理工具后的好处vuex的实现原理vuex的组件通信1.多级组件通信2.同级组件通信使用vuex进行组件通信 关于vuex的小结 知识…

揭秘|从帕丽斯·希尔顿引领其帝国进入元宇宙学到的品牌建设经验

你是否曾想过&#xff0c;元宇宙是如何与世界上的知名品牌和名人达成合作的&#xff1f;在本期的文章中&#xff0c;我们邀请了 11:11 媒体的 Web3 和元宇宙总监 Cynthia Miller&#xff0c;一起探讨帕丽斯希尔顿如何通过 Parisland 和 Cryptoween 将她的帝国带入 The Sandbox&…

【C++】string 类的实现

目录 构造函数赋值重载关于浅拷贝 迭代器容量相关reserveresize 修改push_backappendinserterase关于npos 流运算符重载流插入流提取 构造函数 无参数构造和传参构造 通过对参数设置缺省值为空串""同时满足无参构造和传参构造成员 _size 和 _capacity 均是针对有效…

Web端3D轻量化引擎基于PBR渲染——仿真模拟更逼真

HOOPS Communicator在2021版本中&#xff0c;推出了基于PBR&#xff08;Physically Based Rendering&#xff09;的渲染特性以提供更高质量的渲染技术。 PBR将材料表示为一系列方程&#xff0c;这些方程对光如何从表面反射进行建模&#xff0c;再通过GPU上运行的着色器代码进行…

大学生学java编程的就业前景怎么样?我来聊聊自己的见解

今天兴哥想跟大家分享一个话题&#xff0c;就是学java到底好不好找工作。因为我发现很多粉丝朋友&#xff0c;之前可能并不是从事IT行业的&#xff0c;然后想转行来做这一行&#xff0c;或者是有些大四即将面临毕业的老哥&#xff0c;可能大学没有好好学习吧&#xff0c;然后专…

什么是GPT模型,GPT下载和国内镜像

什么是GPT模型&#xff0c;GPT模型是通过预训练的方式&#xff0c;采用无监督学习方式&#xff0c;大量语料输入&#xff0c;经过多次训练后得到模型。它能够自动学习并理解自然语言中的语义、句法和语法信息&#xff0c;并可以用于文本生成、对话系统、情感分析、机器翻译等自…