你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 871|回复: 3

[其他] STM32CubeMonitor 介绍(二)例程二:实时波形检测

[复制链接]

1347

主题

1124

回帖

0

蝴蝶豆

管理员

最后登录
2020-12-9
发表于 2020-7-27 17:27:31 | 显示全部楼层 |阅读模式

在第一个例程中,我们了解了CubeMonitor的基本用法,包括如何监测/修改变量,如何导入/保存流文件,如何使用debug节点等。
接下来我们通过第二个例程来理解direct和snapshot这两种不同的采样模式,并学习更多的节点的使用。

11.png

这个例程的MCU要完成的工作就是通过GPIO口输出一个PWM波,而我们将用CubeMonitor来实时监控这个PWM波,并且可以调节PWM波的频率和占空比。
在这一部分,我们将学习以下内容:
1.直接读写寄存器
2.对读出的变量值进行后处理
3.添加switch节点过滤输出到chart节点的变量
4.在dashboard中添加文字显示框
5.如何使用snapshot模式进行采样
6.如何保存波形

PWM波输出

22.png

可以通过CubeMX来初始化MCU输出PWM波,上图是例程中使用的配置,如果你使用的是其他的开发板则根据实际使用的定时器和GPIO口进行配置。

33.png

在CubeMX生成的初始化工程代码里面,还需要添加启动PWM波输出的代码,见上图。

变量节点配置

44.png

CubeMonitor部分,我们在第一个例程的基础上进行修改。首先先来修改myVariables变量节点的配置。
这次我们要监测的是PB14引脚输出的PWM波以及PWM波的周期和占空比寄存器配置。而当GPIO口输出PWM波的时候,从它的输入数据寄存器中,可以读到当前的高低电平值,所以这里要输入的监测变量是三个寄存器。
先删除之前添加的变量,再按照图中的步骤修改myVariables变量组,逐个添加要监控的变量地址:
添加变量PB14,地址为GPIOB_IDR寄存器的地址0x48000410
添加变量Period,地址为TIM15_ARR寄存器的地址0x4001402C
添加变量Duty,地址为TIM15_CCR1寄存器的地址0x40014034

555.png

我们还要在程序运行的过程中实时修改PWM波的频率和占空比,也就是TIMER15的自动重载寄存器的值和捕获/比较寄存器的值。所以在myWriteVariables变量节点中,删除之前添加的变量,再修改myWriteVariables变量组,按照图中步骤添加这两个寄存器的地址。
添加变量Period,地址为TIM15_ARR寄存器的地址0x4001402C
添加变量Duty,地址为TIM15_CCR1寄存器的地址0x40014034

66.png

因为PB14这个变量读出来的是PortB端口所有引脚的状态,而我们只想监测PB14这一个引脚的状态,就需要在PB14这个变量中将bit14的值提取出来。在processing节点中,利用post-processing功能,将变量PB14右移14位,其结果定义为一个新的变量PWM1,这个就是我们最终要监测的PWM波的输出。

变量输出配置

77.png

现在Processing节点一共有4组变量输出,但我们只想在最终的点线图上输出PWM1一路变量的实时值。这时就可以利用switch节点来对processing节点的输出进行过滤了。如图在processing节点和chart节点之间添加一个switch节点。在switch节点中配置过滤条件:只有payload的variablename等于PWM1的消息才输出。

88.png

对于processing节点输出中的Period和Duty这两个变量,我们希望在dashboard上显示它们当前的值,所以需要再添加两个”text”文字框节点。文字框节点的输入只需要变量的值,不需要时间戳值。Processing节点输出的消息结构不满足文字框节点的要求,所以我们还需要用”single value”子流程来进行处理,输出单个的数值到文字框节点。在“singlevalue”子流程的配置中指定要输出的变量名就可以了。“single value”子流程实际是由多个节点组成,在编辑窗口点击”编辑流程模板“就可以看到。在CubeMonitor里面,你也可以编辑自己的子流程来实现特定的功能。

99.png

调整dashboard的布局如图所示。

10.png

重新部署运行。

111.png

在Dashboard,点击START按键启动采样。这时就可以看到实时显示的PWM波和自动重载寄存器以及捕获/比较寄存器所配置的值。
在输入框中,可以实时修改自动重载寄存器以及捕获/比较寄存器的值来改变PWM波的周期和占空比。
snapshot

222.png

前面采样使用的是direct模式,这种模式下每次采样由PC触发,受PC上其他程序的影响,采样的时间间隔可能会不均匀,有延时。而snapshot模式,是通过运行在MCU的代码进行采样,可以通过定时器中断来保证采样的精确性。采样数据先保存在MCU的内存,再由 CubeMonitor 读出。但snapshot模式需要添加特定的代码到用户程序,这段特定的代码已经包含在CubeMonitor的安装包中。snapshot模式下的采样频率由调用采样函数的频率决定,但建议不要超过1KHz。

333.png

STM32CubeMonitor安装包中有一个snapshot_embedded_SW.zip文件,里面包含了使用snapshot模式时需要用到的MCU代码。
使用snapshot模式时,需要对用户工程做以下修改:
1.将该压缩文件中的C文件和头文件拷贝到用户工程路径下,并将其中的acqTrigger.c和dataAcq.c文件添加到用户工程。
2.在代码中调用DumpTrace函数进行采样,可用timer中断设置需要的采样频率。
3.根据实际设置的采样频率,修改dataAcq.c中的SNP_TRC_TIMESTAMP_BASE_UNIT,SNP_TRC_TIMESTAMP_VALUE和SNP_TRC_BUFFER_SIZE等参数。代码默认每次最多可以采集10个32位的变量。如果需要采集更多的变量,可以调整SNP_TRC_NB_MAX_WORD_VAR的值。
snapshot代码大约需要使用3KB的Flash, 使用SRAM的大小跟采样频率和采样的变量个数有关。

444.png

在该例程中,我们使用TIM16产生定时中断,来调用采样函数Dumptrace。TIM16的初始化代码可以通过CubeMX生成。具体配置见上图。

666.png

然后手动添加启动TIM16的代码,TIM16中断的回调函数以及在主循环中调用采样函数的代码。

777.png

在CubeMonitor上需要做的配置如下:
1.因为snapshot模式下,CubeMonitor需要知道g_traceHeader变量的起始地址,所以需要在variables节点中导入添加了snapshot代码后的可执行文件。这样当选择了snapshot模式后,CubeMonitor就会自动从其中提取出该变量的起始地址。
2.在variables变量节点的配置中,选择snapshot变量采集模式。

888.png

我们还可以利用processing节点中的log功能,将采集的波形数据保存到本地文件。而后在Dashboard中可以随时导入log文件,在图表中显示波形。
这里还有一个小小的诀窍可以在snapshot模式下提高采样频率。在snapshot模式下关闭实时图形显示功能(断开processing节点与chart节点的连接),只开启log功能记录采集的数据。数据采集结束后再在dashboard的chart中导入log文件进行显示。实验下来,采用这种方式使用ST-LINK v2可以到2KHz的采样速度,使用ST-LINK v3可以到4KHz的采样速度。但需要注意的是,当使用超过1KHz的采样速度时,CubeMonitor的点线图中显示的每次采样的时间间隔还是由SNP_TRC_TIMESTAMP_BASE_UNIT 和SNP_TRC_TIMESTAMP_VALUE这两个宏定义决定,最小的时间间隔是1ms,所以这时波形图上显示的时间值是不对的。两个采样点之间的实际时间间隔应根据设定的采样频率计算。

999.png

分别在direct模式和snapshot模式下对同样的PWM波进行采样,从采样结果可以看到,direct模式下每次采样由电脑触发,但受PC端运行的其他程序的影响,每次采样的时间间隔不确定,会有延时。snapshot模式下由运行在MCU上的代码进行采样,可以做到很精确。所以如果对采样的精度有要求,建议使用snapshot模式。


回复

使用道具 举报

0

主题

56

回帖

0

蝴蝶豆

中级会员

最后登录
2020-10-29
发表于 2020-7-27 17:34:55 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

10

回帖

0

蝴蝶豆

初级会员

最后登录
2020-8-27
发表于 2020-7-29 09:18:21 | 显示全部楼层
您好,能否分享一下PPT和示例工程。实在看不见
回复 支持 反对

使用道具 举报

0

主题

1

回帖

0

蝴蝶豆

初级会员

最后登录
2020-9-28
发表于 2020-9-28 10:04:04 | 显示全部楼层
这图片质量眼睛都要看花了,没有原图吗?
回复 支持 反对

使用道具 举报

关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版