I am currently setting up a CAN network of 16 nodes. For future extension of the network, the nodes are distributed on 4 different branches. These branches are bonded together by two CAN bus extenders (more specifically, two AMIS42700 chips) and supervised by a master CAN node (even if there is no such a thing in CAN). The AMIS42700 acts as both a CAN extender and transceiver for the master node. The schematic of the CAN bus extender part is showed below:
The issue with the AMIS42700 chip is that when trying to broadcast a message to all nodes, it seems to keep sending the same message repeatedly. This does not occur when transmitting messages between slave nodes (I checked this on the oscilloscope).
Where this is not a problem in itself when broadcasting messages from master to slaves, the CAN nodes receive multiple replicas of the same message, and eventually the network becomes saturated with messages from the master node. This affects the overall quality of the communication and is rather problematic in my case.
Can anybody shed some light on this peculiar behavior? Is it specific to CAN bus extenders?
For completeness, here is a list of things that I already tested:
- Modify the value of the termination resistor on all branches (from 0 to 170 ohm)
- Change the broadcast message. I could see the change at the oscilloscope, therefore I am assuming that this is not an error frame, but rather a replica of my message. Is it a reasonable assumption?
- Remove the termination resistors: in this case, the CAN nodes could not communicate with each other anymore, and the behavior was similar to the one experienced with the AMIS42700 (they were trying to re-send the message, and the internal buffers could never be emptied).
- Check the transmit buffers of the CAN controller on the master node: they are never full. It seems that the CAN controller on the master is insensitive to the value of the termination resistor.
- Strangely, when disconnecting one of the CAN lines (CANH or CANL) at a time, the communication could be established between nodes. In that case though I did not check CANH and CANL at the oscilloscope.
All advices on the testing method and on the CAN bus extenders and CAN in general will be more than appreciated!