CAN总线一主机对多从机通讯的疑问?

2019-07-20 07:20发布

小白对CAN总线不怎么了解。项目里有1个主机4个从机。从机可以通过设置过滤器只接收主机发的信息,主机能分辨出是哪个从机发的信息吗?接收的信息里含有从机的发送ID吗?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
HexAI
1楼-- · 2019-07-20 09:33
huyuezhan 发表于 2018-7-7 20:08
如果从CAN1_Handler.pRxMsg->StdId里能读出信息,读出来的是本机的还是发送方的ID?

读出的是FIFO最新的帧的Id,不要理解成发送方或者是接收方的Id,它是由发送方设定的,但是不要理解成是发送方的Id...同一个发送方可以使用不同的Id(比如DLC相同时利用StdId来区分数据含义),同一个Id也可以被多个你所认为的“接收方”所接收到,建议细细理解一下CAN协议
huyuezhan
2楼-- · 2019-07-20 09:38
 精彩回答 2  元偷偷看……
huyuezhan
3楼-- · 2019-07-20 14:19
本帖最后由 huyuezhan 于 2018-7-7 20:07 编辑

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 里读出来?
yklstudent
4楼-- · 2019-07-20 19:53
接收的信息里就保护ID信息
HexAI
5楼-- · 2019-07-20 21:28
 精彩回答 2  元偷偷看……
huyuezhan
6楼-- · 2019-07-21 00:56
HexAI 发表于 2018-7-7 19:52
1.CAN总线在硬件上没有主从之分,各节点除了ID导致的总线竞争优先级外无差别
2.CAN_TxMsg和CAN_RxMsg中,S ...

如果从CAN1_Handler.pRxMsg->StdId里能读出信息,读出来的是本机的还是发送方的ID?

一周热门 更多>