eric2013 发表于 2023-2-23 02:19:26

H7-TOOL的RTT波形最高速度稳定性测试(2023-02-23)

由于RTT是基于RAM块实现,无法做到像SPI之类的同步控制,所以大家程序中RTT的RAM块疯狂写数据(SWD接口速度远跟不上CPU写入RAM速度)会有RTT不能及时读取的情况,或者读取错误(比如调试器和CPU同时方式一块RAM区)。

但是一般性的应用场景下(中低速下),RTT波形基本是不丢数据或者读取错误的。

【稳定波形测试准备工作】
(1)先保证TOOL供电足,比如USB供电,要保证Power的电压在4.7以上,此贴有详细说明:地址
(2)用TOOL送的硅胶杜邦线或者60cm的屏蔽线均可。

【测试代码】
测试例子,我这里是用的我们V5开发板,STM32F407IGT6。开了一个定时器做发送。
每次发送6字节数据,比如定时器中断时10KHz的话,那么波形速度就是60KB/S


RTT的缓冲大小配置:/*********************************************************************
*
*       Defines, configurable
*
**********************************************************************
*/

#define SEGGER_RTT_MAX_NUM_UP_BUFFERS             (3)   // Max. number of up-buffers (T->H) available on this target    (Default: 3)
#define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS         (3)   // Max. number of down-buffers (H->T) available on this target(Default: 3)

#define BUFFER_SIZE_UP                            (8192)// Size of the buffer for terminal output of target, up to host (Default: 1k)
#define BUFFER_SIZE_DOWN                        (16)    // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16)

#define SEGGER_RTT_PRINTF_BUFFER_SIZE             (64u)    // Size of buffer for RTT printf to bulk-send chars via RTT   (Default: 64)

#define SEGGER_RTT_MODE_DEFAULT                   SEGGER_RTT_MODE_NO_BLOCK_SKIP // Mode for pre-initialized terminal channel (buffer 0)

#define USE_RTT_ASM                               (0)   // Use assembler version of SEGGER_RTT.c when 1

测试代码:
#include "bsp.h"                        /* 底层硬件驱动 */
#include "SEGGER_RTT.h"



/*
*********************************************************************************************************
*      函 数 名: main
*      功能说明: c程序入口
*      形    参:无
*      返 回 值: 错误代码(无需处理)
*********************************************************************************************************
*/
#include "math.h"
float testInput_f32_REF;
float testInput_f32_REF1;
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 = sin(2*3.1415926f*50*i/1024);
                testInput_f32_REF1 = 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, 1000, 0, 0);

      /* 进入主程序循环体 */
      while (1)
      {

      }
}

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


【波形测试】

1KHz中断,每次6字节数据, 基本不出错

https://img.anfulai.cn/bbs/118082/12.gif

5KHz中断,每次6字节数据, 基本不出错

https://img.anfulai.cn/bbs/118082/13.gif

10KHz中断,每次6字节数据, 基本不出错

https://img.anfulai.cn/bbs/118082/14.gif

20KHz中断,每次6字节数据, 一般不出错,不排除有出错的可能

https://img.anfulai.cn/bbs/118082/15.gif

50KHz中断,每次6字节数据, 偶尔会出错

https://img.anfulai.cn/bbs/118082/16.gif

100KHz中断,每次6字节数据, 有时会出错

https://img.anfulai.cn/bbs/118082/17.gif


如果有出错时,效果,中间会有一个数据读取错误:





eric2013 发表于 2023-2-23 02:51:28

更新完毕。

滴滴滴 发表于 2023-2-23 09:16:11

:lol感谢分享

missfox 发表于 2023-2-23 12:30:21

强烈等待新版固件发布,什么时候发:victory:

eric2013 发表于 2023-2-23 15:53:25

missfox 发表于 2023-2-23 12:30
强烈等待新版固件发布,什么时候发

本周末左右发布。
页: [1]
查看完整版本: H7-TOOL的RTT波形最高速度稳定性测试(2023-02-23)