初级会员

- 积分
- 104
- 金钱
- 104
- 注册时间
- 2013-11-7
- 在线时间
- 5 小时
|
5金钱
通过Can总线发送数据包,每个数据包邮4个字节,大概有几十个数据包;我正常发送数据包的顺序应该是 数据包1,数据包2,数据包3,,,数据包n。 但是我通过串口打印出can总线发送来的数据是 数据包1,数据包3,数据包2,,,等,就是接受到的数据过顺序已经乱序了,导致我的程序不能正常执行。
我在can总线发送前加了一个for的空循环,大概有十多微秒,Can总线发送的数据后,接收端接收的就是正常发送顺序的数据包,但是我感觉这种每次都进行空循环处理的方法不是很好,有没有遇到过这种情况的大虾,求指教哇,我的Can总线发送程序如下:
void CAN1_TxData(u8 *Message,u8 Length)
{
CanTxMsg TxMessage;
u8 i;
u8 Mail_Box_Num = CAN_TxStatus_NoMailBox;
TxMessage.StdId = 0x0000;
TxMessage.ExtId = 0x00;
TxMessage.RTR = CAN_RTR_DATA;
TxMessage.IDE = CAN_ID_STD;
TxMessage.DLC = Length;
for(i=0;i<Length;i++)
{
TxMessage.Data=*(Message+i);
}
while(Mail_Box_Num>2)
{
Mail_Box_Num=CAN_Transmit(CAN1, &TxMessage);
}
}
|
|