CAN总线上,主站发送帧太快时,从站会出现来不及发出回复帧的问题,导致从站总是回复主站的上一帧Request帧

根本原因是:主站发送帧太快时,帧接收到了从站的接收FIFO里,但是没有被读出来。如果这时主站再发送一帧数据,主站的前一个帧的才会被从站读到,主站再发一帧数据到总线,另一个没被读出来的数据帧才会产生新的从站接收中断读数据。

FIFO是可以存放3条信息的,说明这里只有一条信息被读出了,另两条根本没读出来。

解决办法:

	  while(CAN_MessagePending(CAN1,CAN_FIFO0))
		{
			CAN_Receive(CAN1, CAN_FIFO0, &CAN_RxMessages[CAN_RxMessage_Write_Cursor]);
			if(CAN_RxMessage_Write_Cursor++>=CAN_RX_MESSAGE_BUFF_SIZE)
				CAN_RxMessage_Write_Cursor=0;
		}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值