大家好,我是小麦,实不相瞒,关于串口示波器软件的文章,我之前写过一期了,具体可以看这个项目《一个超赞的开源串口虚拟示波器项目,玩起来!》。

这是一款开源的Qt库,非常简单,容易上手,还能二次开发,所以我就强烈推荐给大家了。

之前发过一篇关于SVPWM的文章《对不起!这篇SVPWM来晚了!》,于是不少读者朋友来询问文中的串口示波器能否共享一下。

        

当然是可以的,这款软件非常古老,但是却出奇地好用,用小而美来形容,丝毫不过分。

这个软件是上学时候,参加智能车比赛的时候用来调试PID的利器,大家之前,在时域上分析时间响应的曲线,就可以完美通过串口示波器工具来显示,如果要采集的数据需要很高的采样频率,可以参考我这篇文章《一款超级好用的虚拟示波器软件》。

随着时间的推移,各种串口示波器软件层出不穷,但是我还是在用这个软件,下面我要开始安利了。

软件功能

这是软件主界面,支持的功能不是很多,但是完全够用了;

主要特性如下:

  • 最多支持四个通道;

  • 支持拖动,缩放波形;

  • 支持将波形数据保存为matlab数据;

  • 支持实时跟踪波形;

下面是我测试SVPWM生成的波形。

移植到所需平台

通常单片机上需要通过串口往PC发送数据,PC接受数据并将接受的数据通过图形显示出来,这中间数据就需要遵循一定规则,即双方约定好通讯协议

所以下面我们来讲一下在硬件上适配通讯协议。

这里是几个文件列表,简单看一下SDS.cSDS.h

先看看头文件SDS.h里的内容,只提供了一个接口,SDS_OutPut_Data,只需要调用这个函数就可以向上位机发送波形了。

#ifndef SDS_H
#define SDS_H
void SDS_OutPut_Data(float S_Out[]);
#endif

我们再看一下SDS.c文件里的内容,这里需要注意的地方是:

#define uart_putchar(x) usart_send_char(x)

这里需要具体实现usart_send_char函数,要适配自己的硬件平台。这里还做了CRC校验,可以看一下CRC_CHECK函数;

以确保串口数据的可靠性。

具体源码如下;

#include "SDS.h"
#include "usart_driver.h"
//#include "uart.h"  //LINK TO UART#define uart_putchar(x) usart_send_char(x)//float SDS_OutData[4] = { 0 };unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT)
{unsigned short CRC_Temp;unsigned char i,j;CRC_Temp = 0xffff;for (i=0;i<CRC_CNT; i++){      CRC_Temp ^= Buf[i%CRC_CNT];for (j=0;j<8;j++) {if (CRC_Temp & 0x01)CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001;elseCRC_Temp = CRC_Temp >> 1;}}return(CRC_Temp);
}void SDS_OutPut_Data(float S_Out[])
{int temp[4] = {0};unsigned int temp1[4] = {0};unsigned char databuf[10] = {0};unsigned char i;unsigned short CRC16 = 0; float SDS_OutData[4];for(i=0;i<4;i++) {SDS_OutData[i%4]=S_Out[i%4];}for(i=0;i<4;i++){temp[i%4]  = (int)SDS_OutData[i%4];temp1[i%4] = (unsigned int)temp[i%4];}for(i=0;i<4;i++) {databuf[(i*2)%10]   = (unsigned char)(temp1[i%4]%256);databuf[(i*2+1)%10] = (unsigned char)(temp1[i%4]/256);}CRC16 = CRC_CHECK(databuf,8);databuf[8] = CRC16%256;databuf[9] = CRC16/256;for(i=0;i<10;i++)uart_putchar(databuf[i%10]);  //LINK TO UART
}

需要实现硬件相关的代码。usart_send_char,本文基于STM32的串口进行测试的,具体代码如下所示;

void usart_send_char(char ch){/* Loop until the end of transmission *///while (USART_GetFlagStatus(COM_PORT, USART_FLAG_TC) == RESET){}while((COM_PORT->SR & USART_FLAG_TC) != USART_FLAG_TC){} USART_SendData(COM_PORT, (uint8_t) ch);
}

最后怎么使用呢?

float user_data[4] = { 0 };
user_data[0] = sv_regs.ccr1;
user_data[1] = sv_regs.ccr2;
user_data[2] = sv_regs.ccr3;
user_data[3] = svpwm.VecSector*1000;
SDS_OutPut_Data(user_data);

大功告成;

公众号后台回复【串口示波器】获取。

—— The End ——

推荐好文  点击蓝色字体即可跳转

☞ 太牛了,国人纯手工自制CPU,耗时半年,用了3000多个晶体管

☞ 一个超级好用的插件—EIDE,在VSCODE下快速创建ARM工程

☞ 如何在GitHub上白嫖代码?先学会Git吧

☞ ARM与RISC-V的恩爱情仇

原创不易,欢迎转发、留言、点赞、分享给你的朋友,感谢您的支持!

长按识别二维码关注我

你点的每个好看,我都认真当成了喜欢

推荐一款我私藏已久的串口示波神器相关推荐

  1. 独乐乐,不如众乐乐。荐6款私藏已久的良心软件

    今天给大家分享6款私藏已久的良心软件,可能有的已经被大众熟知了,但肯定还有小伙伴不知道.话不多说,现在就开始! 1. GeekUninstaller 这是一款100%免费的专业卸载软件,帮助用户删除电 ...

  2. 2款私藏已久的宝藏软件,每一款都是心头之爱

    2款私藏已久的宝藏软件,每一款都是心头之爱 软件一:uBlock Origin uBlock Origin 是一个网页过滤工具,其实也是一个过滤广告的工具.它的下载量超过 800 万次,但大小不到 2 ...

  3. python自学视频教程-私藏已久的7个Python视频教程

    有读者问到有没有Python视频教程,如果你善用搜索引擎的话,网上资源一抓一大把,甚至还有机会接触到国际顶尖大学的计算机视频课程.看视频的好处能跟着老师的思路一起学习,虽然效率没有直接啃书快,但对于看 ...

  4. python教程视频-私藏已久的7个Python视频教程

    有读者问到有没有Python视频教程,如果你善用搜索引擎的话,网上资源一抓一大把,甚至还有机会接触到国际顶尖大学的计算机视频课程.看视频的好处能跟着老师的思路一起学习,虽然效率没有直接啃书快,但对于看 ...

  5. 推荐8个私藏已久的实用网站,每一款都能带来惊喜!

    推荐8个超级好用的网站,每一个都能带给你惊喜! 1.iLovePDF iLovePDF是一个非常强大的PDF处理和PDF转换网站,完全免费,功能丰富.包含丰富的PDF处理工具,比如合并PDF.拆分PD ...

  6. 给大家分享一个私藏已久的Python神器!

    今天给大家推荐一个优质的Python公众号「法纳斯特」,作者:小F. 学习编程是一个比较枯燥的过程,所以小F平常喜欢分享一些有趣.有料的Python原创项目实战.从2018年8月一直到现在,已经更新接 ...

  7. 强烈安利!这个私藏已久的神器!

    今天给大家推荐一个超级神奇,厉害的公众号,这个公众号是我一个IT朋友运营的 他的公众号分享了很多奇葩的干货教程,还有很多神器资源,书单资源免费分享 比如 1.如何通过微信,知道对方位置? 2.如何找回 ...

  8. 五个私藏已久的神奇网站,你想要的全都有

    1⃣️悦音配音 一款非常实用的创作工具,做各种风格的配音,提取你想要的视频文案或音频文案,导入图片,一键生成三联封面,无水印视频下. 2⃣️万有导航 聚合资源网站,一个庞大的资源整合神仙网站,拥有这一 ...

  9. 手机python教程视频教程_私藏已久的7个Python视频教程

    此套视频信息量非常大,我画了个思维导图,除了上面的知识点,还有大量的练习和实践项目. 地址:https://www.bilibili.com/video/av19956343/ 3.20G黑马Pyth ...

  10. 推荐一款 macOS 终端下自动配置系统代理的神器 ZSH-OSX-AutoProxy

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 和其它 Linux 的 DE 一样,macOS 也支持在"系统偏好设置"中设置 HTTP 代理 ...

最新文章

  1. String、Brush、Color 相互转换
  2. mysqL学习之实例
  3. 网络抓包工具 wireshark教程
  4. tooctalstring_Java Long类toOctalString()方法的示例
  5. eda可视化_5用于探索性数据分析(EDA)的高级可视化
  6. 黄哲铿:妙用“缓存”,应对亿级流量峰值(文末赠书)
  7. 分区挂载,mount,blkid
  8. C++ std:: 的坑
  9. thinkcmf apache rewrite文件
  10. 基于javaweb的在线学习系统
  11. tenacity库 重试代码
  12. Netapp 两节点双活VS本地HA
  13. Big Sur 系统无法修改系统文件
  14. 使用VUE组件创建SpreadJS自定义单元格(二)
  15. C++先序和中序确定二叉树
  16. string拼接时去掉最后一个逗号
  17. 小游戏类项目 —— 扫雷
  18. hadoop经典书籍
  19. 服务器收集系统清单,EAS的Linux服务器系统依赖包清单
  20. 新学期,新FLAG —— 大一新生

热门文章

  1. centos7 安装java8
  2. windowsbuilder 的介绍
  3. Unity中使用VideoPlayer控制播放暂停进度条
  4. 发那科机器人六轴放大器保险丝熔断_太仓FANUC发那科机器人免费测试维修{苏州罗韦维修芯片级维修机器人}...
  5. 将GitHub源代码打包成jar包
  6. Symantec Backup Exec 2012修改显示语言
  7. Spring Boot设置上传文件大小
  8. 生鲜水果小程序微信源码完整可用精品
  9. CTD数据库(Comparative Toxicogenomics Database)介绍与使用
  10. 旅游网毕业设计java代码教程_基于JavaWeb技术的旅游网站的设计与实现--毕业论文.doc...