在实际项目中,很多时候,我们需要将传感器、ADC的数值和计算的结果变量以波形的形式显示。通常的解决办法是用串口上位机、USB接口上位机或者MDK的逻辑分析仪等方式输出查看,使用这三种方式都比较繁琐,需要占用额外的系统资源。今天为大家讲解的J-Scope波形软件简单易用,不占用系统额外资源,无需用户写目标板代码,仅需将JLINK插上即可。
针对以上的问题,SEGGER推出了J-Scope波形显示软件。
J-Scope上位机
J-Scope是SEGGER公司推出的,可以在目标MCU运行时,实时分析数据并图形化显示的软件。它不需要SWO或目标上的任何额外引脚等功能,使用标准的调试接口即可。J-Scope波形显示软件主要有RTT和HSS两种工作方式。
01、HSS模式
HSS模式不需要在用户代码上面添加任何代码即可实现。只需要使用J-Scope加载MDK或者IAR的可执行文件即可(MDK生成的可执行文件为.axf文件,IAR生成的文件为.out文件),而且随时随地都可以连接目标板,不影响目标板的正常功能,不需要额外资源,同时可以设置上升沿,下降沿或者双沿触发。
02、RTT模式
RTT快速上传模式,需要用户在代码上加入RTT的相关组件(相关组件的添加请参考上一章节),并使用J-Link与目标板连接,此模式采用标准的下载接口,用到的下载接口有VCC、GND、SWDIO、SWCLK、RST。
03、J-Scope在HSS模式下支持的产品型号
04、JScope在RTT模式下支持的产品型号
05、不同版本的J-Link速度对比
HSS模式获取数据
HSS模式比较简单,仅需要将编译器生成的可执行文件加入到J-Scope上位机软件即可。
相对于RTT模式来说此模式随时随地都可以连接目标板,并且不影响目标板的正常功能,并且不需要额外的资源。但是相对于RTT模式也存在着速度慢的缺点,采样的速度基本上在1KHZ左右,仅适合采样变量变化速度低于1KHZ的情况。
01、HSS模式使用方法
将目标板与J-Link连接,下载程序后并重新上电。
打开J-Scope的上位机软件,如下图所示:
创建工程,选择“Create new project”选项,弹出工程配置对话框。
J-Link使用的为USB接口,所以在进行配置的时候选择USB接口即可,芯片的具体型号可以根据用户自己的需求来选择,通信接口可以选择JTAG接口或者SWD接口,调试的模式选择HSS模式,并在elf file对话框中加载可执行文件。
勾选需要显示的变量名。
然后直接按F5开始运行,针对不同用户的使用情况,J-Scope可能会弹出不同的提示对话框,直接点击OK确认即可。
J-Scope上位机软件打印出波形。
RTT模式获取数据
RTT模式获取数据的原理就是利用SWD接口完成数据从MCU到J-Scope上位机软件的数据传输。此模式相对于HSS模式有更高的数据传输速率,最高可以达到2MB/s,并且随时可以连接目标板且不影响目标板的正常功能,并且可以添加时间戳。
01、RTT模式使用方法
1.1 软件配置
在目标工程中加入RTT的代码文件,具体的操作请参考上一讲RTT的移植教程,在主函数中加入RTT的初始化配置。
SEGGER_RTT_ConfigUpBuffer(1,"JScope_u2",buf,2048,SEGGER_RTT_MODE_NO_BLOCK_SKIP);
然后创建一个定时器,利用定时器定时向J-Scope上位机发送数据。
/****************************************************************************** * @brief * @param * @retval * @attention ******************************************************************************/ void TIM2_Configure(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; TIM_DeInit(TIM2); /* Enable TIM2 Clock */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /* Config TIM2 Every 1ms Generate Interrupt */ TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); TIM_TimeBaseStructure.TIM_Prescaler = (RCC_GetSysClockFreq() / 1000 - 1); TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_Period = (1000 - 1); TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); /* Clear TIM2 Update Flag */ TIM_ClearFlag(TIM2, TIM_FLAG_Update); /* Enable TIM2 Update Interrupt */ TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); /* Enable TIM2 */ TIM_Cmd(TIM2, ENABLE); /* Enable TIM2 Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } /****************************************************************************** * @brief * @param * @retval * @attention ******************************************************************************/ void TIM2_IRQHandler(void) { /* Clear TIM2 Update Interrupt Flag */ TIM_ClearITPendingBit(TIM2, TIM_IT_Update); SEGGER_RTT_Write(1, &g_SineWave128[(i++) % 128], 2); }
在主函数中初始化TIM2的配置:
TIM2_Configure();
1.2 J-Scope上位机配置
RTT模式的配置与HSS模式的配置类似,但是在J-Scope Configuration选项卡中的Sampling Source界面选择RTT模式,在RTT模式下不需要加载可执行文件。
配置完成以后运行可以看到J-Scope上位机打印的波形。
来源:灵动微电子
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。