-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Arbitration section (SRC_ADDR 0x55) Differential output anomaly? #4
Comments
I suggest capturing TX, OE (TX_EN), and A signals simultaneously to check if TX_EN lags too much behind TX, as this may relate to FPGA timing constraints. Also, which interface chip are you using? Some chips may have a significant difference between |
When TX_EN is off, it is normal for AB outputs to be in a "Z" state. At this time, the bus pull-up and pull-down resistors pull AB to a weak 1 state. It is recommended to use 330Ω pull-up and pull-down resistors, which will improve the waveform significantly. The 120Ω termination resistor is optional. If the interface chip takes too long to disable AB outputs after TX_EN goes low, it may generate a strong 1 glitch. Small glitches don’t affect communication, but the one you observed is too wide. |
Hi dukelec, i want to know when you'ii release the new branch. And will this change affect the arbitration mechanism, When TX conflicts? |
The commit was submitted just last night. The |
What RC parameter modifications have you made? I noticed that you haven't enabled the latest feature I submitted. Simply adjusting the pull-up and pull-down resistors will not eliminate the strong "1" glitch. It is possible that the TX_EN and TX signals from the FPGA are not synchronized, which could be causing this issue. This desynchronization can vary with each synthesis, especially in the absence of SDC constraints. 5V ÷ (330+330+120/2) × (120/2) = 0.416666667 V (The termination resistor including both ends.) Traditional RS485 also maintains this voltage difference when idle, so there is no need to worry about interference data being received due to a low differential voltage. If you want to further increase the voltage difference, you can decrease the resistance value of the pull-up and pull-down resistors, increase the resistance value of the termination resistor, or use AC Termination. For example, setting cTERM to 100pF could work. For short-distance transmission, the termination resistor is often not needed. |
Yes, totally agree. This issue was caused for TX_EN and TX signals are not synchronized. (On my board, TX and TX_EN are synchronized which are output by FPGA. However, when they pass through the intermediate circuit (such as the driver buffer, etc.), the circuit parameters (RC) are different, resulting in the output to the 485 transceiver chip end (SN65176BDR) is not synchronized. And my RC parameter for 485 transceiver chip (SN65176BDR) are as follow: In addition, I did not adopt your latest branch submission. Because I found that your latest branch has changed a lot from the previous one, may I ask if these changes are necessary? Are there any other problems if I still use the earlier branch? |
If there are no longer any strong "1" glitches, you don't need to merge the latest commit (8ccf609). Even if you do merge it and enable the feature, there will be no noticeable difference in usage. Your pull-up/down resistor is a bit large; it's recommended to use 330Ω: |
Got it. Thank you. |
As shown in the figure above, the 485 transceiver TX input is normal (TTL level), but the differential output is abnormal (arbitration segment 0x55), and the other segments are normal.
The text was updated successfully, but these errors were encountered: