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

TMS570LS1224 Can回环测试时只有massage box 33-40号能收到数据

测试函数

while(1)
{
	gioToggleBit(gioPORTB, 1);
	gioToggleBit(gioPORTB, 2);
	for(i=1; i<8; i++)
	{
		for (j = 1; j<CAN_DATA_BUFFER_LEN/8 + 1; j++)
		{
			cansetID(canREG3, j, j + 8*i);
			tmp = canGetID(canREG3, j);
			status = canTransmit(canREG3, j, &(can_sent_buffer_data[(j-1)*8]));
			printf("Massage box%2d id = %2d canTransmit return status = %4d\r\n", j, tmp, status);
		}
	}
	i = 0;
	for (j = 8 + 1; j< 64 ; j++)
	{
		status = canIsRxMessageArrived(canREG3, j );
		tmp = canGetID(canREG3, j);
		printf("Massage box%2d id = %2d canIsRxMessageArrived return status =%4d \r\n", j, tmp, status);
		if( status )
		{
			canGetData( canREG3, j, &(can_receive_buffer_data[i*8]));
			printf("can_receive_buffer_data[i] index = %4d \r\n",8*i);
			printf(" %4d %4d %4d %4d %4d %4d %4d %4d \r\n",
					can_receive_buffer_data[8*i],
					can_receive_buffer_data[8*i + 1],
					can_receive_buffer_data[8*i + 2],
					can_receive_buffer_data[8*i + 3],
					can_receive_buffer_data[8*i + 4],
					can_receive_buffer_data[8*i + 5],
					can_receive_buffer_data[8*i + 6],
					can_receive_buffer_data[8*i + 7]
					);
			i++;
		}
	}
	for (i = 0; i < DELAY_VALUE; i++);
}

测试结果:

关于massagebox的配置,1-8号为发送,9-64号为接收(中断)

为何只有33-40号massage box能收到数据,其他的收不到数据呢

zhitao wu:

问题找到了,是status的类型定义成了uint8,实际的返回值有可能很大,导致数据传递过程出错。

gaoyang9992006:

刚好只有8个能收到数据,应该是配置的问题。别只用那个图形配置,自己看看代码是怎么配置的,有个人问过类似的问题,说是老外跟他讲的在代码里配置,配置工具没有通过代码更完备

赞(0)
未经允许不得转载:TI中文支持网 » TMS570LS1224 Can回环测试时只有massage box 33-40号能收到数据
分享到: 更多 (0)