一、问题背景: 使用F7作为CAN的主机(主要功能为接收,也有发的需求),5个F103(例如:ABCDE)作为CAN的从机(多数为发,少数同时需要接收)。目前,F7使用的是轮询的方式对总线上的报文进行读取。通信速率为500K。目前使用的通信方式有点类似I2C,对每个103设为一个ID,比如:A:0x103,B:0x104,......,E:0x107,F7的ID设为0x101。每个103的上发消息的频率一致。
看过CAN的协议,明白CAN的报文是以ID的优先级进行仲裁。
二、疑问:
1、F7的过滤器应该如何设置?
比如在准备接收A的消息的时候,过滤器设为屏蔽其他的消息?针对每一个从机,都进行相应的过滤设置?
2、如果用上述的通信方式,那么是否会导致永远只收到优先级最高的报文,如上述,只收到A的报文?
3、是否有更合理的方式,F7既可以接收到各个从机的报文,又能在必要的时候对各从机发送报文?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2、不会。使用5个过滤器,关联到FIFO中,读出每次接受的值。(针对主机)
3、感觉这就已经很合理了
鄙人拙见。
一周热门 更多>