KeilAssistant - 示波器

介绍KeilAssistant工具,利用KEIL的UVSOCK接口实现实时查看STM32内部数据,集成FFT及谱线校正算法,支持非同步采样下精确分析信号基波和谐波。

         最近使用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谱,右下侧是经过校正后的谐波分析表。

{ "blockman.n04ColorComboPreset": "Classic Light (Gradients)", "editor.inlayHints.enabled": "off", "workbench.colorCustomizations": { "editor.lineHighlightBackground": "#1073cf2d", "editor.lineHighlightBorder": "#9fced11f" }, "editor.wordWrap": "off", "diffEditor.wordWrap": "off", "editor.guides.indentation": false, "editor.guides.bracketPairs": true, "cmake.configureOnOpen": true, "C_Cpp.dimInactiveRegions": false, "highlightwords.colors": [ { "light": "#b3d9ff", "dark": "cyan" }, { "light": "#e6ffb3", "dark": "pink" }, { "light": "#b3b3ff", "dark": "lightgreen" }, { "light": "#ffd9b3", "dark": "magenta" }, { "light": "#ffb3ff", "dark": "cornflowerblue" }, { "light": "#b3ffb3", "dark": "orange" }, { "light": "#ffff80", "dark": "green" }, { "light": "#d1e0e0", "dark": "red" } ], "highlightwords.box": { "light": true, "dark": false }, "highlightwords.defaultMode": 0, "highlightwords.showSidebar": true, "git.openRepositoryInParentFolders": "never", "files.autoGuessEncoding": true, "files.encoding": "gbk", "editor.fontSize": 18, "workbench.editor.enablePreview": false, "editor.rename.enablePreview": false, "notebook.diff.enablePreview": false, "KeilAssistant.MDK.Uv4Path": "C:\\Keilarm\\UV4\\UV4.exe", "files.autoSave": "afterDelay", "git.ignoreMissingGitWarning": true, "SerialTerminal.log.savePath": "c:\\Users\\mysel\\serialTerminal\\terminalLog", "SerialTerminal.script.savePath": "c:\\Users\\mysel\\serialTerminal\\scriptNoteBook", "idf.pythonInstallPath": "C:\\Users\\mysel\\.espressif\\tools\\idf-python\\3.11.2\\python.exe", "idf.hasWalkthroughBeenShown": true, "idf.gitPathWin": "C:\\Users\\mysel\\.espressif\\tools\\idf-git\\2.39.2\\cmd\\git.exe", "idf.espIdfPathWin": "C:\\Users\\mysel\\esp\\v5.4\\esp-idf", "idf.toolsPathWin": "C:\\Users\\mysel\\.espressif", "security.workspace.trust.untrustedFiles": "open", "files.associations": { "*.evue": "html" }, "workbench.colorTheme": "Visual Studio Dark", "[html]": { "editor.defaultFormatter": "vscode.html-language-features" }, "[javascript]": { "editor.defaultFormatter": "vscode.typescript-language-features" }, "makefile.configureOnOpen": true, "git.autofetch": true, "explorer.confirmDelete": false, "continue.showInlineTip": false, "editor.accessibilitySupport": "off", "github.copilot.enable": { "*": false, "plaintext": false, "markdown": false, "scminput": false }, "git.confirmSync": false, "tabnine.experimentalAutoImports": true, "workbench.iconTheme": "vscode-icons", "vue.server.hybridMode": true, } 请帮我修改
06-04
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值