硬汉嵌入式论坛

 找回密码
 立即注册
查看: 392|回复: 8
收起左侧

[问题解答] H7-Tool SEGGER_RTT 波形显示有时连续有时不连续

[复制链接]

2

主题

10

回帖

16

积分

新手上路

积分
16
发表于 2025-10-20 18:26:59 | 显示全部楼层 |阅读模式
H7-Tool SEGGER_RTT  波形显示有时连续有时不连续,使用场景:


1. ADC定时1000HZ采样,打印采样点以及滤波后的点,
2. 中断优先级已是最高,
3. RTT的缓冲区1280,挺大的;之前因为缓冲区小了也有这样的问题,不过这次应该不是

之前能打印出完整的正弦波的,现在中间会断一下,烧录之前的代码也还是这个现象,信号发生器是由H7-Tool产生的,测了信号发生器没有问题;

有什么办法解决吗



1.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119429
QQ
发表于 2025-10-20 20:08:41 | 显示全部楼层
这个问题的核心问题就是上传的点数对不对,测试验证办法如下:




上电后打印几秒,点击这里保存,然后点击浏览按钮,将实时上传的数据,我用matlab绘制下看看,如果正常的话,跟RTT应该关系不大

保险起见,你上电后,先不要立即打印数据,防止缓冲数据填满了,你还没有连接RTT。

上电后优先连接RTT,然后等待几秒后,控制你的程序开始上传8192点或者其他点数停止上传,看看点数对不(点击保存按钮,看实时记录的数据问题就行)。你这个才1KHz速度,不该有问题。

2345.png

这个是我的1K采集实测

MDK调试.gif



回复

使用道具 举报

2

主题

10

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2025-10-21 11:29:00 | 显示全部楼层
谢谢硬汉哥,有空了我来试一下是怎么回事,其实今天间隔了一晚再重新使用,波形就很正确、很好看了;

1. 我将采样点从IAR中导出,用WPS的表格功能绘制了曲线,是个正确的正弦波,采样无问题;
2. 昨天重启了几次电脑都不行,而且开了很多东西,用上位机用起来是有点卡的

今天用的代码依旧是昨天如图的那份;我猜测可能是电脑性能问题,导致RTT接收一直在丢包

2.png
3.png
4.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119429
QQ
发表于 2025-10-21 13:08:25 | 显示全部楼层
IoTH2 发表于 2025-10-21 11:29
谢谢硬汉哥,有空了我来试一下是怎么回事,其实今天间隔了一晚再重新使用,波形就很正确、很好看了;

1. ...

帮你测试了下三路 1K的浮点打印,也正常

MDK调试.gif

我的代码如下,我使用sin函数生成的数据,然后打印的
[C] 纯文本查看 复制代码
/*
*********************************************************************************************************
*
*	模块名称 : 主程序模块。
*	文件名称 : main.c
*	版    本 : V1.0
*	说    明 : 工程调试利器SEGGER的RTT组件,替代串口调试
*	修改记录 : 
*		版本号    日期        作者     说明
*		V1.0    2018-04-12   armfly    首发
*
*	Copyright (C), 2018-2030, 安富莱电子 [url]www.armfly.com[/url]
*
*********************************************************************************************************
*/
#include "bsp.h"			/* 底层硬件驱动 */
#include "SEGGER_RTT.h"



/*
*********************************************************************************************************
*	函 数 名: main
*	功能说明: c程序入口
*	形    参:无
*	返 回 值: 错误代码(无需处理)
*********************************************************************************************************
*/
#include "math.h"
float testInput_f32_REF[1024];
float testInput_f32_REF1[1024];
int main(void)
{
	uint32_t i = 0;
	/*
		由于ST固件库的启动文件已经执行了CPU系统时钟的初始化,所以不必再次重复配置系统时钟。
		启动文件 startup_stm32f4xx.s 会调用 system_stm32f4xx.c 中的 void SystemInit(void)。
		SystemInit()函数配置了CPU主时钟频率、内部Flash访问速度和可选的外部SRAM FSMC初始化。

		安富莱STM32-V5开发板主晶振是25MHz, 内部PLL倍频到168MHz。如果需要更改主频,可以修改下面的文件:
		\User\bsp_stm32f4xx\system_stm32f4xx.c
		文件开头的几个宏是PLL倍频参数,修改这些宏就可以修改主频,无需更改硬件。
	*/

	bsp_Init();		/* 硬件初始化 */

	bsp_StartAutoTimer(0, 1);	/* 启动1个100ms的自动重装的定时器 */
	
    for(i=0; i<1024; i++)
	{
		testInput_f32_REF[i] = sin(2*3.1415926f*50*i/1024);
		testInput_f32_REF1[i] = sin(2*3.1415926f*20*i/1024);
	}
	
	/* 配置通道0,上行配置*/
	SEGGER_RTT_ConfigUpBuffer(0, "RTTUP", NULL, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP);
	
	/* 配置通道0,下行配置*/	
	SEGGER_RTT_ConfigDownBuffer(0, "RTTDOWN", NULL, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP);
	
	bsp_SetTIMforInt(TIM6, 10000, 0, 0); 
	
	/* 进入主程序循环体 */
	while (1)
	{
		
	}
}

/*
*********************************************************************************************************
*	函 数 名: TIM6_DAC_IRQHandler
*	功能说明: TIM6中断服务程序。
*	形    参: 无
*	返 回 值: 无
*********************************************************************************************************
*/
uint32_t j = 0;
char buf[64];
void TIM6_DAC_IRQHandler( void )
{
	if(TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)
	{
		j++;
//		sprintf(buf, "%f, %f, %f\r\n", testInput_f32_REF[j],testInput_f32_REF[j],testInput_f32_REF[j]);
		sprintf(buf, "%f\r\n", testInput_f32_REF[j]);
		SEGGER_RTT_WriteString(0, buf);
		if(j==1024) j=0;
		TIM_ClearITPendingBit(TIM6, TIM_IT_Update);
	}
}

/***************************** 安富莱电子 [url]www.armfly.com[/url] (END OF FILE) *********************************/


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119429
QQ
发表于 2025-10-21 13:10:18 | 显示全部楼层
针对你当前的电脑,如果的是旧版TOOL或者BASE 版TOOL可以使用2.25版固件和上位机,你是这个版本看看在你这个电脑上波形展示效果怎么样


使用这个版本上位机更新固件,然后用这个版本上位机就可以测试

h7toolPC_release(V2.2.5).7z (50.32MB)
回复

使用道具 举报

2

主题

10

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2025-11-4 10:45:47 | 显示全部楼层
今天测了一下,RTT的接收点数是正确的,也就是没有发生丢包问题

问题应该是定在上位机这个显示波形的界面会不对,有时正确,有时不正确的

1. 打印1024个点,点数正确
2. 间隔1ms一直打印,随机截取连续的一段,使用WPS生成的数据波形,形状正确,如图5
3. 更换2.2.5版本,依旧是这个现象,如图6,2.3.1版本也是这个现象
5.png
6.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119429
QQ
发表于 2025-11-4 11:02:56 | 显示全部楼层
IoTH2 发表于 2025-11-4 10:45
今天测了一下,RTT的接收点数是正确的,也就是没有发生丢包问题

问题应该是定在上位机这个显示波形的界 ...

测试波形的时候去掉时间戳,然后上位机和固件都用2.2.5测试。
回复

使用道具 举报

2

主题

10

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2025-11-4 11:22:09 | 显示全部楼层
把"时间戳"功能关闭后,波形正常,
开启后,波形有很多毛刺,2.25和2.31都是这个现象
不过能打出正常波形就够用了,感谢硬汉哥支持
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119429
QQ
发表于 2025-11-4 11:34:49 | 显示全部楼层
IoTH2 发表于 2025-11-4 11:22
把"时间戳"功能关闭后,波形正常,
开启后,波形有很多毛刺,2.25和2.31都是这个现象
不过能打出正常波形 ...

时间戳得去掉,因为时间戳也是来自TOOL本身输出给上位机的。会影响波形打印。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-11-21 21:46 , Processed in 0.045766 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表