最近使用STM32开发一个测量系统,想将ADC采集的数据绘制波形来分析波形及其信噪比,无赖串口的传输速度太低了,USB接口硬件上又没有引出。无意中发现KEIL的UVSOCK接口居然对外开放了全部服务,这也就意味着可以在keil调试过程中通过UVSOCK来访问单片机内部的数据,为了调试方便索性就开发了KeilAssistant工具,用于调试过程中方便的查看单片机内部的数据,顺便集成了FFT和简单的谱线校正算法,即便是非同步采样也能比较准确的分析出信号的基波和谐波的频率、幅度和相位。
KeilAssistant使用python + QT 开发,pyinstaller 打包,打包环境是win64 环境,因此该软件只能在win64下工作,而且由于pyinstaller直接在Anaconda下打包导致最后输出文件过大压缩后都接近400MB,等我有时间了在去优化一下打包环境以减小最终发布版本的体积。
首先需要打开Keil的UVSOCK功能,Edit->Configuration->Other,勾选Enable, Port默认即可,重启Keil。
KeilAssistant(链接:https://pan.baidu.com/s/1dIOzeeld3eKypHPX8QHH9g 提取码:1zjy)下载后不需要安装,直接解压缩打开KeilAssistant.exe即可打开如下图,
- IP默认本机即可;Port若没有修改默认4823即可;
- 变量就是需要查看的数组名字,也可以是值指针,值得注意的是只有处于当前生命周期的变量才可以访问,即如果你查看的是全局变量,那么你随时可以访问,如果是局部变量,那么你必须要设置合适断点使得该变量目前正处于当前生命周期,然后才可以被成功访问。图片中DATA的C语言定义是 float DATA[2048];float在STM32里面占4个字节,因此读取DATA数组全部数据需要从DATA地址开始读取8192字节。
- 变量类型,字节序视情况设置;
- 采样频率指DATA数组数据获得时的采样频率,该值不影响数据波形的读取与可视化,但是会影响FFT频率轴的数值。
- 自动读取为0时表示单次读取,大于0表示以此为周期循环读取数据。
设置好后便可以按下+按钮添加一个需要读取的变量,可以添加多个需要读取的变量,鼠标右击可以删除不想读取的变量。
一切设置完毕后即可点击启动按钮开始读取变量数据,并实时的绘制其波形和FFT谱,右下侧是经过校正后的谐波分析表。
来源:CSDN
作者:keyoushide
链接:https://blog.csdn.net/keyoushide/article/details/104733884