This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ISO1042: ACK Level too high on CAN Bus

Part Number: ISO1042
Other Parts Discussed in Thread: ISO1044

When I am connecting a certain Number of CAN Nodes to the Network, the CAN bus does not work properly anymore. The reason is, as far as i know, that the output levels of the transceivers (Only ACK) are too high. With one device the bus still looks good. With each additional participant the ACK level becomes higher and higher.
This is a Problem, because of the static parasitic capacitance of the System the ACK Signal on the RX side is about 260ns longer than it should be. In Response, the CAN interface returns a bus error and the system does not work reliable.

How can I fix this issue?

Thanks a lot!

Few participants:

Some participants:

ACK Level too high, thus ther's a delayed RX Signal

  • user6436938,

    Welcome and thanks for using e2e! 

    I appreciate the wavefroms. Yeah looking at them I can see the parasitic capacitance at work. I have a few requests for some more info that will help with the debug.

    1. How many devices are you adding to the bus? How many until the transmission gets unreliable?

    2. Can you provide a schematic of the CAN transceiver and the relevant components for it? I would like to see how you are terminating the bus.

    3. What kind of wiring harness are you using for the bus? Is it the proper twisted pair?

    Respectfully,

    Lucas Schulte

  • Hi, and welcome to E2E!

    This is an excellent demonstration of what can happen with a large CAN network. During the arbitration and ACK phases, multiple CAN nodes may be driving the bus simultaneously. Often during the ACK bit, many if not all receiving nodes will drive the bus at the same time, resulting in a very strong equivalent drive strength. Driving such a large differential may become an issue if the RC characteristics disallow the dominant-to-recessive edge from transitioning in an acceptable time period.

    To solve this issue, there are a few approaches you may consider. The first is to address the RC characteristics of the bus to decrease the dominant-to-recessive transition time. This can be done by either reducing bus capacitance (sources include long cables, excess nodes, or included denoising capacitors) or by decreasing the resistive value between CANH and CANL (slightly smaller termination resistors may be used to do this. Take care that the load does not become too great for any one node to individually drive a valid differential). A second, less targeted approach would be simply to reduce the number of active nodes on the bus. This is likely the more difficult solution to implement because it would include identifying uninvolved nodes and removing them (permanently or temporarily in real time) from the bus. If the first option is not desirable in your design, let me know if you'd like more information on how to accomplish this second option. 

    My initial suggestion would be to eliminate stray bus capacitance where possible and then considering reducing the value of the termination resistors. If this does not work, please share the tested termination values and placement as well as any bus capacitance measurements you have taken. 

    Let me know if you have any other questions. 

    Regards,
    Eric

  • Hello Lucas,

    thank you for your response.

    1. I am getting Bus-Errors if I am adding more than 45 devices. But I am able to measure the higher Level as soon as I am adding more than five. 

    2.

    3. There is no cabled Bus. This is a System containing PCB's wich are connectet via a Backplane.

    Thanks!

  • StefanG,

    Looks like the termination is good. You are only terminating the ends of the CAN network right? Not every node should be terminated.

    It looks like the enemy here in the capacitance on the bus. The PCB back plane is most likely contributing to this to some degree. Also, the TVS diodes also add an amount of capacitance. I don't see a part number on the schematic so I can't see if it is unreasonably high. I would check to see if it is though.

    Respectfully,

    Lucas

  • Hello Lucas,

    thank you for your Response.

    The TVS Diodes have a specified capacitance of around 60fF at 250MHz. So this should be no Issue. It adds a differential capacitance of around 4,2pF in the worst case.

    I will make some testing today and you'lll get some Feedback.

    Thanks! :-)

  • StefanG,

    Let me know how the testing works out.

    You could also lower termination resistance down to a point that would overcome the stray capacitance on the bus. The trade off is heavier bus loading and you most likely wouldn't be able to have a large amount of nodes on the network. 

    Respectfully,

    Lucas

  • StefanG,

    I haven't heard from you in a while. Hopefully you've been able to resolve the issue. I'm marking this as resolved for now but feel free to create a new thread if you have more questions. 

    Respectfully,

    Lucas

  • Hi Eric,

    I am Sorry for my delayed answer. 

    I've tested the possible solutions wich werde provided by you and your colleagues. 

    1. Reducing Capacitance
    I am not able to reduce any cables, because there are none. The whole System is PCB based and connected via a Backplane.

    2. Reducing Termination Resistance
    Unfortunately i was not able to reduce the Resistance as much as I want to. The main reason for that, is that I reduce the entire Level on the Bus with the same margin. So yes, this helps a bit, but not as much as i need it to be. The given examples were with: 50R, 37,5R and 20R termination resistance. 

    Without extra resistance (60R)

    At 50R

    At 37,5R

    At 20R:

    Another Idea was supplied to my afterwords. I should use some diodes in series to "Cut-Off" the voltage at a certain Point. But this was no sucess as well. 

    My Next steps would be to reduce the Baud-Rate and maybe look for another Tranciever wich does not raise the voltage over the specified value. 

    I would appreciate it a lot if you have any Ideas, on how I could solve this issue.

    Do you know if it is possible to define the "answering characteristics" via the software? (Not sending any ACK if the IDs dont match for Example)

    Thank you a lot for your support :-)

    Best regards 

    Stefan

  • Hey Lucas,

    maybe you are right withe the Backplane. I will check that. 

    The TVS Diodes have a specified C of around 0,1pF. I dont think, those will be a problem. 

    Thanks! :-)

  • StefanG,

    There are only a couple more things I can think to do here.

    Lowering data rate could help and might be the simplest approach.

    The other suggestion is using a CAN transceiver with lower Differential input capacitance C(ID).  This is essentially how much capacitance the transceiver itself is adding to the bus. One such transceiver with lower C(ID) is the ISO1044 but it is not the same package as the ISO1042. 

    Respectfully,

    Lucas Schulte

  • Hello Lucas,

    I was able to get the System working by reducing the Baud Rate to 500k. The Bus-Load is now quite high under max. stress conditions (~55%) but it works just fine.

    Thank you a lot for your help.

    Best regards
    Stefan