2019-07-20 07:20发布
huyuezhan 发表于 2018-7-7 20:08 如果从CAN1_Handler.pRxMsg->StdId里能读出信息,读出来的是本机的还是发送方的ID?
HexAI 发表于 2018-7-7 19:52 1.CAN总线在硬件上没有主从之分,各节点除了ID导致的总线竞争优先级外无差别 2.CAN_TxMsg和CAN_RxMsg中,S ...
最多设置5个标签!
读出的是FIFO最新的帧的Id,不要理解成发送方或者是接收方的Id,它是由发送方设定的,但是不要理解成是发送方的Id...同一个发送方可以使用不同的Id(比如DLC相同时利用StdId来区分数据含义),同一个Id也可以被多个你所认为的“接收方”所接收到,建议细细理解一下CAN协议
u8 CAN1_Receive_Msg(u8 *buf)
{
u32 i;
if(HAL_CAN_Receive(&CAN1_Handler,CAN_FIFO0,0)!=HAL_OK) return 0;//接收数据,超时时间设置为0
for(i=0;i<CAN1_Handler.pRxMsg->DLC;i++)
buf=CAN1_Handler.pRxMsg->Data;
return CAN1_Handler.pRxMsg->DLC;
}
例程的这一段就是把接收的数据存到数组里,没有涉及到发送方的ID。是不是可以加一段话从CAN1_Handler.pRxMsg->StdId 里读出来?
如果从CAN1_Handler.pRxMsg->StdId里能读出信息,读出来的是本机的还是发送方的ID?
一周热门 更多>