2024-06-03 11:05 AM
Hello,
We have been using CANbus as our form of communication for a system with multiple nodes. Each node was individually tested with CAN and all of them work without issue. However, when we started system integration testing, we noticed significant noise on the CANbus channel that caused data to stop.
To give more details, we are running 2 battery packs, a power electronics DC/AC converters (to create a 120Vac signal) and a central supervisory controller, which are all using STM32 MCUs to communicate to each other via CANbus. We are using an STM32H7AGI6, STM32F401RE, STM32F303RE. When we send a CANbus command to start the DC/AC converter, that is when the noise appears and we cannot communicate with the MCUs until the DC/AC converter is turned off.
We have termination resistors at the end of the bus and I have verified that the 60 Ohm resistance is seen on the bus. I've also attached a copy of our schematic for the CANbus, which all of the nodes use (except that the 120 Ohm resistor is only populated in the two connected at the ends)
I've attached a picture of the waveform too, where the two "messy" segments are when we try to start the DC/AC converter. The picture below is the CANH line, with the probe grounded to the GND pin in the CANbus node.
Can anyone give me some tips to improve this or prevent this from happening?
Solved! Go to Solution.
2024-06-10 11:18 AM
Did you check for reset flags? Check the power supply on the supervisor device with an oscilloscope to see if it's a consistent 3.3V with no dropout when the DC/AC converter starts.
2024-06-11 12:05 PM - edited 2024-06-24 06:26 AM
I have solved the issue.
Your suggestion about checking the BOR/POR led me down a good rabbit hole.
After doing extensive testing, we confirmed that the DC/AC creates a conductive noise in the CANbus (NOT irradiated noise). For conductive noise, the twisted pair and shielding on the cable made no difference for the issue we were seeing.
So we focused on filtering out the conductive noise. We added 0.25nF capacitors from CANH -> GND and CANL -> GND. When we did this, the communication is stable, even when the DC/AC is on.
We also added a common-mode choke for the CANH and CANL line, which further reduced the lossed packets in the communication. So while the capacitors were sufficient to solve the issue, the choke and capacitors combined are the full solution to our problem.
Edit:
I have been doing additional testing and have even further improved the quality of the CANbus. One problem we had, with the intention to simplifying the wiring, we accidentally created a "star formation" with our CANbus wiring architecture. We converted our CANbus to a complete daisy-chained formation, with all stubs being under 10cm, and the signal quality improved immensely. Even the noise on the bus reduced to a measurable level when using an oscilloscope.
Take the CANbus architecture recommendations to heart! I was hoping that, because of our low baud rate (250 kbit/s) and our short wires (longest was 80cm), it would not be an issue, but I have been proven wrong.
2024-06-12 02:05 AM
Hi @KMew
Congrats for your findings.
For my understanding, did you put the 0.25nF capacitors only on 1 node ? Or did you have to put the caps on all the nodes ?
You said that with the caps the communication is stable, but according to your next statement regarding the common-choke, you still have lost packets ?
I read a little bit regarding the common-chokes on the Coilcraft website and the one thing to take in account is the potential high voltage transients on both CAN lines. Depending on your transceiver, it can be destructive.
Have a nice day,
Kraal
2024-06-12 03:00 AM
Good that it's working now.
But... you are only taking care of the symptoms and don't cure the cause (EMI of the power converter).
Things like that will come back one day, probably when doing EMC tests.
2024-06-12 06:04 AM
Hello Kraal,
We had to put the 0.25 nF capacitor on all the nodes *except* the DC/AC converter's node.
Also, I did not know about the common-choke issue. Can you please provide your source so that I can investigate further?
2024-06-12 06:05 AM
Hello LCE,
Yes, you are right. I needed a solution to deal with the symptom, due to timelines. I have requested that, for the next revision of the DC/AC board, a deeper analysis into what is causing the conductive noise on the CANbus and a method to mitigate it has been put out for our next revision.
2024-06-12 06:09 AM
Hi again,
It was in this application note from TI (page 5) : https://www.ti.com/lit/an/slla271/slla271.pdf
2024-06-12 06:21 AM
Hello Kraal,
Ah yes, I do see the article's point about the LC resonant. We are utilizing TVS diodes to prevent voltage spikes, but we will be mindful about using common-mode chokes in the solution.