一直没有找到这个软件的下载链接,官方也是一直在打转。有需要的同学自取一下,我放到网盘了。发文时最新的版本是1.11版本,后台回复“ ST监视器”获取下载链接。基于cortex arm的调试接口,非侵入不占用MCU资源,直接从内存地址获取全局变量的值,也可以直接写入。STM32CubeMonitor 依赖于 Node-RED。
Node-RED是一款基于流程的可视化编程开发工具。
与其说我们是在学习如何使用STM32CubeMonitor ,不如说我们是要学习如何使用Node-RED。Node-RED 中创建的流程以JSON 格式存储。轻量级运行时环境基于Node.js构建,充分利用了其事件驱动、非阻塞模型。Node.js 的包仓库中拥有超过 225,000 个模块,因此可以轻松扩展调色板节点的范围,从而添加新功能。
类似于小学生学习编程的软件,左边是一些积木模块,在本软件中称为节点,鼠标放到上面可以显示当前节点的提示,可惜都是英文的,不过现在翻译软件这么多,应该难不到你。剩下的就是研究这些节点的功能了,我们只说几个我们用到的,其他的感兴趣的自己研究一下。最上面是ST自己定义的节点,Node-RED具有可扩展性,可以说ST也就是在Node-RED的基础上增加了自己的节点,形成了monitor。
剩下的就是Node-RED自己的节点了,比如说面板上显示图形的一些组件等。如果节点有任何未部署(可以理解为编译)的更改,其上方会显示一个蓝色圆圈。如果配置存在错误,则会显示一个红色三角形,比如下面的myProbe_In。Topic | “这条消息是干什么的” | |
Payload | “这条消息携带了什么数据” | |
双击,找到我们的编译目录里的*.axf文件,axf文件里记录了每个全局变量的地址,然后在弹出的窗口里选择我们要监视的变量。双击stlink节点,然后点后面的铅笔图标,选择我们的jlink。仿真器节点有两个,out发送命令和数据到MCU,in获取变量数据到仿真器。也就是一个写,一个读。 两个按键,一个是start,一个是stop,两个按键显示在我们的图表页面,当点击start按键后,发送一个消息msg.start给变量节点,变量节点告诉仿真器要采集什么数据,如果发生错误则给notification报出来。 stlink采集到的数据后,转换成图表支持的格式,然后显示在chart中。chart前面有一个clear按键,负责清空数据。以上就完成了通过stlink监测mcu数据并显示。最后,点击右上角的部署和仪表盘按键,开始监视自己需要监视的变量吧。 至于为什么放几个节点就可以做到这些功能,那肯定是其他人在下面做了大量的工作,将实现的细节都进行了封装,我们只要拿来用就行了。如果非要问为什么,打破砂锅问到底,那就自己研究一下吧。https://wiki.st.com/stm32mcu/wiki/Category:STM32CubeMonitor
上篇我们说了STM32的触摸功能,那么如果用STM32CubeMonitor监视触摸的性能,我们需要观察哪几个变量呢?Delta:Delta = Ref - Meas,正是我们判断是否产生按下动作的关键。
未触摸:Delta ≈ 0
触摸:Delta 快速增大
强触摸:Delta 更大
通过 Ref,可以判断:
通过Meas能判断:
RefReset:ECS(环境补偿系统)使用的“静态参考值”
RefRest 用来判断:当前环境是不是整体变了(温度、湿度)
运行后的图表如下:
当我们把手指放到触摸按键上时,可以看到Meas和Dalta数值的变化。可以看到我们的Delta差不多在1000位置。
那么我们的触发门限应该设置在600左右,抬起门限为400左移。
而我们的cubeMX默认的设置如下
DETECT_IN_TH=120,DETECT_OUT_TH=110,这显然是不合适的,但是这个值最大只能到255,那么问题在哪呢?
经过排查,问题在我们的硬件,采样电容太大了之后,就需要更长的充电次数,所以Ref和Meas都很大,但是采样电容官方推荐的是47nF,所以这里是不是官方推荐有问题呢?我们改一下这个电容为2.2nF,然后读到的参数如下:
修改之后Delta只能到40左右,而我们的cubeMX设置的是120,所以并不能检测到触摸按键,我们修改一下,检测门限改成40*0.6=24,40*0.4=16,
重新采集数据
又可以检测到触摸按键了。所以,真的不是随便搞搞就行的,不然后面出问题都不知道哪里问题。