Does anyone have any suggestions for level shifters?

I try to connect jetson nano with arduino by using txs0108e.

Description on the data sheet of txs0108e:

But for VccA, I don’t know how to provide a suitable voltage.I use a DC power supply to provide it with 1.8v voltage. I try to send data to arduino via UART and return the received data. But the returned data is garbled.

Can you tell me a usable level shifter? It would be even better if there are tutorials!

Not sure about your question, VCCB is the voltage level you want to transfer to from 1.8v.

Sorry, it should be VccA, I wrote it wrong. VccB is connected to 5vVcc of arduino. VccA is the standard voltage for the level shifter, it should be with the same voltage as gpio of jetson nano. There is a GND on the side of VccB, and it is connected to the high-voltage part. I didn’t look at the hardware when I posted, and I made a mistake, sorry.

My question is, I suspect that txs0108e is not suitable for jetson nano, if there is a tested and usable level shifter.

Wired txs0108e as follows:

Minicom used as the software.

I don’t see why TXS0108e is not suitable for nano.

On nano, there is TXB0108 on board for that.

I seem to have found the problem. It’s funny.My DC power supply seems to use PWM to change the voltage.Yesterday ,when I connected it directly to the oscilloscope, I saw a very standard square wave. I think I should learn how to use pinmux to configure a suitable GPIO to provide a standard voltage to txs0108e. Is this feasible? Configure a 1.8v GPIO via pinmux as the standard voltage to txs0108e.

Don’t understand your question… just supply level shift with a 1.8v power rail on board.

Yes,i want to supply level shift with a 1.8v power rail on board. But the gpio voltage of Jetson Nano is 3.3v without configuration, isn’t it?

Are you using level shift on GPIO? If so, just connect 3.3v power rail on board to VCCA.

The level shifter will be used on the 40-pin gpio. But for SPI or UART, the voltage of gpio is 1.8v, isn’t it? If I use pinmux to configure a pin of the spi as a normal gpio, will it still be 1.8v, or will it change to 3.3v?

The pins of 40-pin connector all pass a 1.8v to 3.3v level shift on board as you can see in the schematic, so it is 3.3v for VCCA.

No, it’s not right.
Take uart as an example:

When the pins of UART2 are used for UART communication, their voltage is 1.8v and VCCA should also be 1.8v.

I tried to connect vcca to 3.3v as you said, and the feedback I got is as follows:

The configuration of minicom is as follows:
The minicom used on jetson nano and the program used on arduino are as follows:
Return the received data. And if the data is “a”, the led will be turned on, and ‘b’ will be turned off.

define led 8
bool flage = 1;
String comdate = “”;

void setup() {
// put your setup code here, to run once:
pinMode(led, OUTPUT);

void loop() {
// put your main code here, to run repeatedly:
if (Serial.available())
while (Serial.available() > 0)
comdate += char(;
flage = 1;
while (flage) {
if (comdate[0] == 0x61) {
digitalWrite(led, 1);
if (comdate[0] == 0x62) {
digitalWrite(led, 0);
comdate = “”;
flage = 0;

UART2 is transferred to 3.3V by U52 and routed to J50. Please check the schematic first.

I found the schematic, and as you said, the level of uart2 is 3.3v. But I don’t understand why I can’t handshake properly. The communication is correct when connected to my laptop. Thank you a lot for your help. I will reply to you if there are new progress.

I wrote a UART test program myself.After receiving the order, arduino will sends “jetson nano” to Nano. And if the reception is correct, Nano send ‘arduino’ back. Then I found out that the reception by Nano can be carried out normally, but to send it will be an error occurred.

Then I used minicom to do separate receiving and receiving tests, the result is as follows:
nano uart接收
Can receive correctly
nano uart发送
Can‘t be sent correctly(arduino returns the received data)

Do you know anything about this problem?

Please use oscilloscope to probe the signals with and without uart device.

Also please note the level shift of uart pins is TXB0108, you can get its datasheet online. There are some requests on its input/output, you need to check that and compare to your uart device characters to see if any violation.

You need to connect the GND of the two boards together, otherwise no communication can happen.

The default Jetson Nano UART and I2C level is 3.3V, so if you are going from the Jetson Nano carrier board pins to the Arduino pins, you should go from 3.3V to 5.0V. (I’m assuming you’re using an old-school AVR based Arduino, not the newer ARM based ones, which are just play 3.3V.)

Or, it turns out, the Arduino is pretty lenient with voltages (because the AVR chip can also run at 3.3V, or even 2.5V, depending on what you need) so it may detect 1 and 0 just fine with a straight 3.3V signal. Thus, you can use a resistive divider from the Arduino Tx to the Jetson Rx (use 2.2 kOhm from Arduino Tx to Jetson Rx, then 4.7 kOhm from Jetson Rx to ground) and just wire Jetson Tx straight to Arduino Rx. Just don’t turn on pin pull-up for the Rx pin on the Arduino! (And beware if you also use the serial port to program it, in which case that may pull the pin too a too high voltage.)

Another option is to use the Arduino Nano Pro 3.3V / 8 MHz, and just run everything at 3.3V.

But, that being said – the TXB0108 should work fine, if you use the GPIO pins, and hook the high voltage part to 5.0V, the low voltage part to 3.3V, and make sure to tie the grounds together between the boards.

Sorry to reply you so late. The school laboratory was closed due to the impact of the coronavirus.And my tutor went on vacation. I may not find a suitable oscilloscope for at least a week.

I read the data manuals of txb0108 and txs0108 again and found that something wrong when I was wiring.

I did not ground pin OE and don’t know if this will cause electrical damage.

I will reply to you if there are new progress. Thanks again for your help!

Hello,thank you for your reply, as shown in the table, GND is connected together. I tried your method, using resistor divider to connect the two boards.The result is as follows:
Still can’t communicate normally.I suspect that the wrong wiring before may have broken the board. I need an oscilloscope to observe.

I don’t know if it is fortunate or unfortunate. When I tried to use a UART to USB converter to connect the laptop and Jetson, I did not pay special attention to the output voltage of the converter. I remember that the jumper was stuck on 3.3v when I used it before, but in fact the jumper was stuck on 5v. Then Jetson broke… unable to boot. I can only buy a new one…Now there is no need to entangle whether the previous wrong wiring damaged the board…

You can try RMA process for the broken board to see if any help can get. Jetson FAQ | NVIDIA Developer