推荐一款我私藏已久的串口示波神器
大家好,我是小麦,实不相瞒,关于串口示波器软件的文章,我之前写过一期了,具体可以看这个项目《一个超赞的开源串口虚拟示波器项目,玩起来!》。
这是一款开源的Qt库,非常简单,容易上手,还能二次开发,所以我就强烈推荐给大家了。
之前发过一篇关于SVPWM的文章《对不起!这篇SVPWM来晚了!》,于是不少读者朋友来询问文中的串口示波器能否共享一下。
当然是可以的,这款软件非常古老,但是却出奇地好用,用小而美来形容,丝毫不过分。
这个软件是上学时候,参加智能车比赛的时候用来调试PID
的利器,大家之前,在时域上分析时间响应的曲线,就可以完美通过串口示波器工具来显示,如果要采集的数据需要很高的采样频率,可以参考我这篇文章《一款超级好用的虚拟示波器软件》。
随着时间的推移,各种串口示波器软件层出不穷,但是我还是在用这个软件,下面我要开始安利了。
软件功能
这是软件主界面,支持的功能不是很多,但是完全够用了;
主要特性如下:
最多支持四个通道;
支持拖动,缩放波形;
支持将波形数据保存为matlab数据;
支持实时跟踪波形;
下面是我测试SVPWM生成的波形。
移植到所需平台
通常单片机上需要通过串口往PC发送数据,PC接受数据并将接受的数据通过图形显示出来,这中间数据就需要遵循一定规则,即双方约定好通讯协议。
所以下面我们来讲一下在硬件上适配通讯协议。
这里是几个文件列表,简单看一下SDS.c
和SDS.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的恩爱情仇
原创不易,欢迎转发、留言、点赞、分享给你的朋友,感谢您的支持!
长按识别二维码关注我
你点的每个好看,我都认真当成了喜欢
推荐一款我私藏已久的串口示波神器相关推荐
- 独乐乐,不如众乐乐。荐6款私藏已久的良心软件
今天给大家分享6款私藏已久的良心软件,可能有的已经被大众熟知了,但肯定还有小伙伴不知道.话不多说,现在就开始! 1. GeekUninstaller 这是一款100%免费的专业卸载软件,帮助用户删除电 ...
- 2款私藏已久的宝藏软件,每一款都是心头之爱
2款私藏已久的宝藏软件,每一款都是心头之爱 软件一:uBlock Origin uBlock Origin 是一个网页过滤工具,其实也是一个过滤广告的工具.它的下载量超过 800 万次,但大小不到 2 ...
- python自学视频教程-私藏已久的7个Python视频教程
有读者问到有没有Python视频教程,如果你善用搜索引擎的话,网上资源一抓一大把,甚至还有机会接触到国际顶尖大学的计算机视频课程.看视频的好处能跟着老师的思路一起学习,虽然效率没有直接啃书快,但对于看 ...
- python教程视频-私藏已久的7个Python视频教程
有读者问到有没有Python视频教程,如果你善用搜索引擎的话,网上资源一抓一大把,甚至还有机会接触到国际顶尖大学的计算机视频课程.看视频的好处能跟着老师的思路一起学习,虽然效率没有直接啃书快,但对于看 ...
- 推荐8个私藏已久的实用网站,每一款都能带来惊喜!
推荐8个超级好用的网站,每一个都能带给你惊喜! 1.iLovePDF iLovePDF是一个非常强大的PDF处理和PDF转换网站,完全免费,功能丰富.包含丰富的PDF处理工具,比如合并PDF.拆分PD ...
- 给大家分享一个私藏已久的Python神器!
今天给大家推荐一个优质的Python公众号「法纳斯特」,作者:小F. 学习编程是一个比较枯燥的过程,所以小F平常喜欢分享一些有趣.有料的Python原创项目实战.从2018年8月一直到现在,已经更新接 ...
- 强烈安利!这个私藏已久的神器!
今天给大家推荐一个超级神奇,厉害的公众号,这个公众号是我一个IT朋友运营的 他的公众号分享了很多奇葩的干货教程,还有很多神器资源,书单资源免费分享 比如 1.如何通过微信,知道对方位置? 2.如何找回 ...
- 五个私藏已久的神奇网站,你想要的全都有
1⃣️悦音配音 一款非常实用的创作工具,做各种风格的配音,提取你想要的视频文案或音频文案,导入图片,一键生成三联封面,无水印视频下. 2⃣️万有导航 聚合资源网站,一个庞大的资源整合神仙网站,拥有这一 ...
- 手机python教程视频教程_私藏已久的7个Python视频教程
此套视频信息量非常大,我画了个思维导图,除了上面的知识点,还有大量的练习和实践项目. 地址:https://www.bilibili.com/video/av19956343/ 3.20G黑马Pyth ...
- 推荐一款 macOS 终端下自动配置系统代理的神器 ZSH-OSX-AutoProxy
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 和其它 Linux 的 DE 一样,macOS 也支持在"系统偏好设置"中设置 HTTP 代理 ...
最新文章
- String、Brush、Color 相互转换
- mysqL学习之实例
- 网络抓包工具 wireshark教程
- tooctalstring_Java Long类toOctalString()方法的示例
- eda可视化_5用于探索性数据分析(EDA)的高级可视化
- 黄哲铿:妙用“缓存”,应对亿级流量峰值(文末赠书)
- 分区挂载,mount,blkid
- C++ std:: 的坑
- thinkcmf apache rewrite文件
- 基于javaweb的在线学习系统
- tenacity库 重试代码
- Netapp 两节点双活VS本地HA
- Big Sur 系统无法修改系统文件
- 使用VUE组件创建SpreadJS自定义单元格(二)
- C++先序和中序确定二叉树
- string拼接时去掉最后一个逗号
- 小游戏类项目 —— 扫雷
- hadoop经典书籍
- 服务器收集系统清单,EAS的Linux服务器系统依赖包清单
- 新学期,新FLAG —— 大一新生
热门文章
- centos7 安装java8
- windowsbuilder 的介绍
- Unity中使用VideoPlayer控制播放暂停进度条
- 发那科机器人六轴放大器保险丝熔断_太仓FANUC发那科机器人免费测试维修{苏州罗韦维修芯片级维修机器人}...
- 将GitHub源代码打包成jar包
- Symantec Backup Exec 2012修改显示语言
- Spring Boot设置上传文件大小
- 生鲜水果小程序微信源码完整可用精品
- CTD数据库(Comparative Toxicogenomics Database)介绍与使用
- 旅游网毕业设计java代码教程_基于JavaWeb技术的旅游网站的设计与实现--毕业论文.doc...