TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS570LS3137: 使用RTI,发现计时有延迟

Part Number:TMS570LS3137Other Parts Discussed in Thread:HALCOGEN

程序调用RTI用来计时,定时器设置为100ms,然后在中断函数中置标记位,在后台while循环检测标记位,如果条件为真,则向外发送一条CAN数据,发现间隔5~6个can帧后,时间有明显的增加。

RTI配置如下:

中断函数如下:

INT8U	GL_SEND_FLAG = CODFALSE;
void rtiNotification(uint32 notification)
{
/*  enter user code between the USER CODE BEGIN and USER CODE END. */
/* USER CODE BEGIN (9) */
	GL_SEND_FLAG = CODTURE;
/* USER CODE END */
}

后台函数如下:

int main(void)
{
/* USER CODE BEGIN (3) */canInit();
	rtiInit();
	
	rtiEnableNotification(rtiNOTIFICATION_COMPARE0);
	
	rtiStartCounter(rtiCOUNTER_BLOCK0);

	vimInit();

	while(1)/* continious desplay*/{
		if(CODTURE == GL_SEND_FLAG){
			GL_SEND_FLAG = CODFALSE;
			for(int i = 0; i < 8;++i)
				rx_data[i] = i*0x05;
			canTransmitWithDLC(canREG1, canMESSAGE_BOX1, rx_data,8);
		}};
/* USER CODE END */
}

通过CAN接收工具接收数据如下:

图中红线圈起来的地方时间戳有明显的增加,在20ms左右。请帮忙确认下,是有什么配置不正确么

Cherry Zhou:

您好,您的问题我们需要升级到英文论坛寻求帮助,有答复尽快给到您。

,

Cherry Zhou:

您好,

可能不是 RTI 外设的问题。 相反,CAN 模块中应该发生延迟。

所以为了确认相同之处,您能否进行如下测试:

您能否切换一个 GIO 并在逻辑分析仪或 CRO 中监控该 GIO,而不要在 RTI 中断处理程序中设置标志。

如果在监控两次切换之间的差异总是接近100mS,那应该就不是 RTI 问题,否则的话就是 RTI 问题。

,

x x:

修改程序,在RTI中断中改变GPIO,RTI设置为1ms,每100ms改变一次GPIO状态,发现现象时间间隔不固定

代码如下:

INT8U	GL_DOG_VAL = 0x00;
INT32U	GL_RTI_CNT = 0;
void rtiNotification(uint32 notification)
{
/*enter user code between the USER CODE BEGIN and USER CODE END. */
/* USER CODE BEGIN (9) */GL_RTI_CNT++;if(GL_RTI_CNT>999){GL_RTI_CNT = 0;}if(0x00 == (GL_RTI_CNT%100)){GL_DOG_VAL = (~(GL_DOG_VAL))&0x01;gioSetBit(DOG_WDI_GPIO_PORT,DOG_WDI, GL_DOG_VAL);}
/* USER CODE END */
}

示波器测量显示如下:

间隔不是很准确,有100ms的有110ms

,

Cherry Zhou:

我们转达给工程师看下,应该会在下周三前给到您答复。

,

Cherry Zhou:

您好,

工程师在 LS3137 HDK 电路板上测试了您的代码: 

但并没有出现您所描述的问题:

只有每100ms 切换一次。

下面是工程师的项目和测试的波形,您可以参考对比下:

https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/RTI_5F00_TEST_5F00_LS3137.zip

https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/RTI_5F00_100mS_5F00_TEST.sal

,

x x:

非常感谢您的回复,因为我手里没有LS3137 HDK 电路板无法测试您的代码,而且用CCS8.3无法打开您的代码,使用比较工具看到的差异对我参考意义不大,我们使用的是自研电路板,通过HALCoGen生成Keil版代码,HALCoGen配置文件我附在后面,还请您帮忙看下

halgen.zip主函数如下:

int main(void)
{
/* USER CODE BEGIN (3) */gioInit();rtiInit();rtiEnableNotification(rtiNOTIFICATION_COMPARE0);rtiStartCounter(rtiCOUNTER_BLOCK0);vimInit();while(1)/* continious desplay*/{};/* USER CODE END */}

,

Cherry Zhou:

您好,

方便提供该问题相关项目的更多信息吗?因为工程师需要重现并进行测试才能更好的帮助您debug。

,

x x:

开发环境是Keil5.25,集成了Legacy包,使用HALCoGen生成调用代码

这是测试demoTestRTI.zip

在这个测试代码上,我们测试的波形是有偏差的

,

Cherry Zhou:

好的感谢您提供的信息,我们转达给工程师看下。

,

Cherry Zhou:

您好,

您的代码和工程师的代码中,代码的唯一不一致之处是counter 0和counter 1的"CPUCx"值

在您的代码中为4 

在工程师给出的代码中是8,

该值仅取决于正在使用的 RTICLK 以及所需的计数器频率,在该问题中如下所示: 

其他设置都没有不同之处,您能试下根据以上信息修改该设置吗? 

,

x x:

已经根据您的建议修改代码,分别进行了100M与180M测试,对应的UC Compare分别为4和8,GPIO输出波形是准确的,但是当我集成功能代码到工程中时,波形又不正确,功能代码不涉及RTI的操作,也没有延时操作,当我在正式代码中注释代码至测试代码时,波形依旧不正确,我们还需要继续排查代码

,

Cherry Zhou:

好的,那您先进行排查,如果有新的进展我们随时跟进给工程师。

赞(0)
未经允许不得转载:TI中文支持网 » TMS570LS3137: 使用RTI,发现计时有延迟
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1