I have a system that communicates between two subsystems over a distance with UART. The UART signals are converted to RS485 by using the SN75176 differential bus transceiver. A microcontroller on one side always transmits data from its UART pins to the SN75176 transceiver, and the other side also has an SN75176 transceiver that receives these signals and convert them back to TTL (UART) for the microcontroller on the receiver side.

Basically, the transceiver circuit on the transmitter side looks like this:


The transceiver circuit on the receiver side looks like this:


The communications work fine. However, I have noticed by analysing the UART signals, the output level on the receiver side is between 0.2 V and 4.2 V, as shown in the following measurement (this is the signal UART-MAIN-RX from the receiver circuit above. Note also that the string "Test123" was used in this case):


The SN75176 datasheet mentions that the output of the transceiver is TTL, and that the output signals should vary between 3.0 V to 3.7 V. Why am I observing even higher signal levels in my case? I am particularly afraid that if I connect this higher-level "TTL" output directly to the microcontroller UART pins, that it could damage the microcontroller.

  • \$\begingroup\$ "output signals should vary between 3.0 V to 3.7 V" - Where do you see this in the datasheet? \$\endgroup\$ – vofa Jan 19 '18 at 20:40
  • \$\begingroup\$ The 3.7 V spec is on page 6 in table 7.5 "Electrical Charateristics - Driver", where it states that the typical High-level output voltage (V_OH) is 3.7 V. However, I realise now that the 3.0 V spec is a misread on my side - I saw that in the diagrams on pages 9-11 for the input waveform. Am I missing something obvious here? \$\endgroup\$ – wave.jaco Jan 19 '18 at 20:45
  • \$\begingroup\$ That V_OH is specified at a specific output current. Look at figures 1-6. \$\endgroup\$ – vofa Jan 19 '18 at 20:49
  • \$\begingroup\$ That makes sense. I must admit I have neglected to look at figure 1 in particular. So the output voltage V_OH will vary depending on the output current? \$\endgroup\$ – wave.jaco Jan 19 '18 at 20:54
  • 1
    \$\begingroup\$ See TYPICAL OF RECEIVER OUTPUT on page 16. That is why fig. 4 is what it is. \$\endgroup\$ – lakeweb Jan 19 '18 at 21:00

The VOH value is specified for an output current that would be used by a TTL input. Your microcontroller has CMOS inputs, which have nearly infinite input impedance, so the actual voltage will be a little bit higher:

SN75176B high-level output voltage vs. output current

You could put a strong pull-down resistor on the RX signal line. However, there are no guarantees, and the graph above shows only typical values, so you should better use some 'real' level-shifting circuit or device. Or it might be a better idea to use a 3 V receiver chip with CMOS output.

  • \$\begingroup\$ I did not consider the fact that the microcontroller has CMOS inputs. So if I were to stick to the SN75176, would it be wise to use a dedicated logic level shifter in order to bring the output down to 3.0 - 3.3 V? \$\endgroup\$ – wave.jaco Jan 19 '18 at 21:06
  • \$\begingroup\$ I'd use a dedicated shifter only if that is the only thing that you happen to have lying around. For simple downshifting of a unidirection signal, you can use any buffer with an overvoltage-tolerant input (e.g., (SN)74LVC1G34/125), or a resistor with a diode clamp, or a resistor divider. But that depends on the speed you need, and would be a different question. \$\endgroup\$ – CL. Jan 19 '18 at 21:12
  • \$\begingroup\$ The buffer sounds like a good option. I have consulted the microcontroller's datasheet now and I noticed that the pins used for the UART peripheral are actually up to 5 V tolerant. So in this case it should not be a problem then. \$\endgroup\$ – wave.jaco Jan 19 '18 at 21:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.