虚拟示波器

为什么叫VOFA+?#

Volt/伏特、Ohm/欧姆、Fala/法拉、Ampere/安培,是电气领域的基础单位,与他们的发明者——4位电子物理学领域的科学巨人,分别同名。

他们的首字母共同构成了VOFA+的名字,作者想向大家传达VOFA+的愿景——在与电气打交道的领域里,如自动化、嵌入式、物联网、机器人等,都能看到VOFA+的身影。同时寓意每一位使用VOFA+的工程师,都可以站在巨人的肩膀上不断创新和探索。

设计理念#

人们为了建立与计算机交互的渠道,发明了命令行,但由于使用命令行要求人们像机器一样思考和发送指令,只有少数专家才能顺畅使用。 直到人们发明了图形界面,以一种感官动物习以为常的操作逻辑,才让更多人有充分发挥计算机优势的能力,推动了人类社会进入了信息时代。

在嵌入式硬件的调试中,尽管效率低下,工程师们还是十年如一日地使用着串口助手、超级终端这种命令行风格的数据收发工具,对硬件进行调试。

以下几个原因限制了硬件工程师在调试中使用图形界面:

  • 对于硬件IO,直接输出字节流,编程难度最低;
  • 如果使用功能相近的行业专用上位机来进行图形化,需要处理复杂的协议;
  • 为了一个临时的调试需求,开发专用上位机,工作量大,得不偿失;
  • 工程师同时懂硬件、又懂软件,可遇不可求。

VOFA+致力于降低图形化调试的门槛:

  • 保留了传统字节流调试助手风格的数据收发功能,以应对非图形化调试需求;
  • 通过直观极简的协议设计和方便快捷的命令绑定,硬件工程师无需处理复杂的协议逻辑,只需以面向串口助手的编程方式,就能获得强大的数据可视化、数据分析、使用控件发送指令的能力;
  • 拥有一个可裁剪的系统,"丰俭由人"。通过添加控件的方式,工程师可以定制一个无限丰富的调试界面;也可以仅仅使用极简的字节流收发界面,无须担忧系统占用繁重;
  • 拥有一个开放、开源的插件系统:
    • 用户可以定制符合自己需求的协议和控件;
    • 通过开源社区的力量,VOFA+的调试生态可以不断发展繁荣。

VOFA+特点概览#

  • 平台支持:WindowsLinuxMacOS
  • 接口支持:串口(超高波特率,稳定支持)、网口(TCP客户端/服务端,UDP);
  • 协议支持:协议为插件,已开源,人人可编写。目前已支持CSV风格的字符串协议,和十六进制浮点数组形式的字节流协议;
  • 控件支持:控件为插件,已开源,人人可编写。目前已支持波形图、按钮、状态灯、图片、滑动条、3D立方控件(可更换模型)等;
    • 2维度与3维,一个也不能拉下;
    • 自主研发的波形控件,支持每通道百万采样点的绘制,性能强劲;
    • 自主研发的波形控件,无缝嵌入了实时直方统计点数可设置的傅里叶变换,可以使用VOFA+进行数据分析。
  • 传统字节流收发调试功能依然支持;
  • 拖拽方式添加控件,交互流畅自然;
  • 快捷的命令、参数绑定系统,发送指令同样优雅。

快速开始

本文目标

本文以FireWater协议为例,教你快速开始第一次波形绘制,让你知道在VOFA+里绘制波形是多么容易的一件事情。

关于协议引擎,您需要注意:

  • 不同协议,字节流收发区打印文本的情况有所不同;
  • 如果您只是想将本软件当成串口助手使用,选择RawData协议,可以保证接收到什么打印什么
  • 请前往 协议引擎章节查看各协议详情。

绘图步骤#

1. 选择调试方式,并设置好参数#

2. 选择firewater协议引擎#

3. 发送数据#

以Arduino的代码为例:

void setup()

{

Serial.begin(115200);

}

float t = 0;

void loop()

{

t += 0.1;

Serial.print("d: %f, %f\n", sin(t), sin(2*t));

delay(100);

}

协议详情

关于协议的详细信息,请前往 协议引擎 章节查看。

4. 添加波形控件并绑定数据#

  • 从控件栏拖出波形图;
  • 右键菜单→绑定Y轴;
  • 保证绿色条拖动到最右,这样波形图显示的才是最新的数据;
  • 点击Auto,保证Y轴量程落在波形最大最小值范围内。

<think>好的,我现在需要帮助用户解决如何使用VOFA示波器显示STM32F103C8T6生成的PWM波形的问题。首先,我需要确认用户的需求和现有的信息。用户提到了STM32F103C8T6、HAL库生成PWM,以及VOFA示波器的使用。他们可能已经有一些代码基础,但需要将PWM数据发送到VOFA进行可视化。 首先,我应该回顾一下用户提供的引用内容。引用[1]和[2]提到了使用HAL库配置PWM,特别是TIM3和TIM4生成呼吸灯效果。引用[3]提到了PWM控制电机的方法,其中一路保持高电平,另一路使用PWM波。这可能与数据发送的方式相关,比如通过串口发送PWM占空比数据。 接下来,我需要思考如何将STM32的PWM数据传送到VOFA。通常,VOFA通过串口接收数据,所以STM32需要通过UART发送PWM的占空比或频率信息。用户可能需要配置串口,并在代码中定期发送这些数据。然后,VOFA配置相应的串口参数和波形显示设置。 用户可能需要具体的步骤,比如配置串口、编写发送代码、VOFA的设置步骤等。同时,需要注意数据格式,比如使用逗号分隔数值,并添加帧头帧尾,以便VOFA正确解析。例如,使用“data:value1,value2”这样的格式,或者在FireWater模式下使用逗号分隔的数据。 另外,用户可能没有提到是否需要实时监控PWM波形,或者是否需要同时监控多个通道。因此,在回答中应该涵盖单通道和多通道的情况,并给出示例代码。例如,使用sprintf格式化数据并通过HAL_UART_Transmit发送。 还需要考虑可能的错误点,比如串口配置是否正确,波特率是否匹配,VOFA的协议设置是否正确,以及数据是否连续发送导致缓冲区溢出。可能需要建议使用定时器中断来定期发送数据,而不是在循环中频繁发送。 最后,生成的相关问题需要覆盖硬件连接、协议选择、多通道同步显示以及故障排除等方面,帮助用户进一步解决问题。</think>### 如何使用VOFA示波器显示STM32F103C8T6生成的PWM波形 #### 1. **硬件与软件准备** - **硬件连接**:通过串口(如USART1)将STM32F103C8T6与PC连接。PWM信号由TIM通道生成(如PA6对应TIM3_CH1[^2])。 - **软件依赖**:STM32CubeMX配置工程、Keil IDE、VOFA示波器(推荐使用`FireWater`协议)。 #### 2. **STM32配置步骤** **(1) 配置PWM输出** - 在STM32CubeMX中启用TIM3(或其他TIM)的PWM模式,设置频率和分辨率(例如10kHz,分辨率1%-100%)[^1]。 - 生成代码并添加PWM控制逻辑: ```c HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); //启动PWM输出 __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, duty_cycle); //动态修改占空比 ``` **(2) 配置串口通信** - 启用USART1(波特率建议115200),设置为异步模式。 - 添加串口发送函数,将PWM占空比数据发送至PC: ```c uint8_t buffer[20]; float duty = (float)duty_cycle / 100.0; //占空比归一化 sprintf((char*)buffer, "data:%f\r\n", duty); //VOFA兼容格式 HAL_UART_Transmit(&huart1, buffer, strlen((char*)buffer), 100); ``` #### 3. **VOFA示波器设置** 1. **协议配置**:选择`FireWater`协议,设置与STM32相同的波特率。 2. **波形显示**: - 添加控件:点击`+`选择`Waveform`,绑定数据索引(如`data[0]`对应占空比)。 - 设置时间轴范围,例如0-1对应占空比0%-100%。 #### 4. **示例代码(STM32主循环)** ```c while (1) { for (int duty = 0; duty <= 100; duty++) { //呼吸灯效果 __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, duty); sprintf(buffer, "data:%d\r\n", duty); HAL_UART_Transmit(&huart1, buffer, strlen(buffer), 100); HAL_Delay(20); } } ``` #### 5. **验证与调试** - **波形同步**:在VOFA中观察占空比是否与代码设定一致。 - **常见问题**: - 数据未显示:检查串口线连接、波特率匹配性。 - 波形抖动:减少数据发送频率或优化STM32的发送缓冲区。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值