发表于:2002-08-08 17:02:00
楼主
我在CAN总线进行三节点通信中碰到一个奇怪问题,向各位高手求助:
用节点A和节点B发送,节点C接收,节点A发送的ID符为0000,节点B发送的ID符为
001B,按CAN协议规定,根据ID符的大小来决定优先权.我在调试中发现节点C两个报文都能接收到,但是先接收到ID符为001B的报文,(三个节点用同一电源供电用一个开关上电,两节点的发送程序除了ID符改动外,别的都一样,发送数据帧;发送节点采用全比较验收方式,禁止接收彼此的报文;接收节点全屏蔽验收方式,允许接收一切报文;单个节点发送接收情况正确)。当时我怀疑与ID编码有关。可是奇怪的是当我把发送程序交换下载到节点A和节点B中时,即节点A发送ID符OO1B,节点B发送ID符0000,节点C却先收到ID符为0000的报文。我尝试发送ID符为其他的报文,发现总是节点B发送的报文先被接收。我调换了几个节点,比如用A做接收,B和C来发送,情况也类似,老是某个节点的报文先被接收,而不管ID符有何变化。由于本人第一次接触总线仲裁问题,所以碰到如此奇怪的问题很伤脑筋,盼有经验的高手指点迷津。
本人EMAIL ADDRESS:mcm_zelri@sina.com