自动化调参工具:VOFA+可视化参数

介绍

VOFA+是一个精致的数据可视化上位机软件,支持多个数据接口(串口、网口)、自定义数据引擎和定制数据可视化控件,是一个不可多得的自动化调参软件(示波器类似物),个人觉得它将串口调参的功能发挥到了极致

前端

数据引擎和数据接口参数配置:选择FireWater引擎,数据接口选串口,串口配置115200 8N1

在这里插入图片描述

通道数据展示:通道开关+名称+颜色+小数点位置

在这里插入图片描述

可以控制缓冲区里边可视化数据点数:点击红色原点进行波形放大、缩小

在这里插入图片描述

文本展示区,可以实时展示接收+发送内容

在这里插入图片描述

控件

可以点击左侧的控件栏,左键选中控件并拖到波形展示区域

在这里插入图片描述

主窗口支持多个Tab分页,可以将不同的数据分类展示,支持分类的重命名

在这里插入图片描述

绑定

数据通道绑定X轴已经Y轴,只要在控件右键弹出菜单就可以配置X轴、Y轴,其它控件同理

在这里插入图片描述

指定上位机的时间戳为X轴,当然你可以用数据通道指定的X轴(不用上位机的时间戳)

在这里插入图片描述

FireWater数据引擎+串口数据接口为例:使用指定格式输出数据:“%f,%f,%f,%f\n”,只要往printf输出格式化数据就行,以下嵌入式代码用于生成自定义的正弦波数据,printf的参数配置需要和上位机的串口配置一致

// 打印表头
printf("Angle,Sin(x),Cos(x),Sin(x)*Cos(x),Cos(x)*Cos(x)\r\n");

// 生成三角函数数据
float angle = 0.0f;            // 角度(度)
float angleRad;                // 角度(弧度)
float sinVal, cosVal;          // sin(x)和cos(x)值
float sinCosVal, cosSquareVal; // sin(x)*cos(x)和cos(x)*cos(x)值

for(;;) {
    // 每15度输出一次数据
    while(angle <= 360.0f)
    {
        // 转换为弧度
        angleRad = angle * 0.01745329f;  // 0.01745329 = π/180

        // 计算三角函数值
        sinVal = sin(angleRad);
        cosVal = cos(angleRad);
        sinCosVal = sinVal * cosVal;
        cosSquareVal = cosVal * cosVal;

        // 使用指定格式输出数据:"%f,%f,%f,%f\n"
        printf("%f,%f,%f,%f\r\n", sinVal, cosVal, sinCosVal, cosSquareVal);

        // 角度增加15度
        angle += 15.0f;

        // 延时,避免输出太快
        DEVICE_DELAY_US(500);  // 延时100ms
    }
    angle = 0;
}

DSP实现printf函数功能,使用前先初始化SCIA

void initSCI(void)
{
    GPIO_setPinConfig(GPIO_28_SCIRXDA);
    GPIO_setPinConfig(GPIO_29_SCITXDA);
    GPIO_setPadConfig(28, GPIO_PIN_TYPE_STD);
    GPIO_setPadConfig(29, GPIO_PIN_TYPE_STD);

    SCI_disableModule(SCIA_BASE);
    SCI_performSoftwareReset(SCIA_BASE);

    SCI_setConfig(SCIA_BASE, DEVICE_LSPCLK_FREQ, 115200,
                 (SCI_CONFIG_WLEN_8 | SCI_CONFIG_STOP_ONE | SCI_CONFIG_PAR_NONE));

    SCI_disableLoopback(SCIA_BASE);
    SCI_disableFIFO(SCIA_BASE);
    SCI_enableModule(SCIA_BASE);
}

#include <stdio.h>
#include "driverlib/sci.h"

int fputc(int c, register FILE *stream)
{
    SCI_writeCharBlockingNonFIFO(SCIA_BASE, (uint16_t)c);
    while(SCI_getTxFIFOStatus(SCIA_BASE) != SCI_FIFO_TX0);
    return c;
}

波形实时展示效果

在这里插入图片描述

总结

  • 理论上也能支持CAN接口,要是支持CAN就完美了
  • 推荐使用SCI发送中断的方式进行串口数据发送
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下里巴人hywing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值