This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

configure UART signal levels

Hi all,
we are using the nRF51822 together with another module that provides an 1.8V UART only (LO = 0V, HI = 1.8V). Other IC´s on the device are using 3V Vdd and are connected by I2C.

The current design would make us of an voltage-translator like TI SN74AVC8T245 to connect that module by UART.

From the PS I assume the UART levels (in/out HI/LO) of the nRF51 are as specified in the GPIO section (as the UART can be switched to any IO).
Is there any way to configure the UARTs signal level to work without the voltage translation IC?

Thanks a lot and best regards

  • Hi Guenter

    The absolute maximum ratings chapter in the nRF51822 PS v2.0 specifies maximum voltage on GPIO pins to be VDD+0.3V (nRF51 supply voltage + 0.3V).

    Section 8.23 specifies the voltage levels required for GPIO pins, i.e. that input high voltage is detected at VDD0.7 and input low voltage is detected at VDD0.3. So if your UART peer device operates at 1.8V, then you might tune your nRF51 supply voltage as high as 1.8V/0.7=2.57V in order for it to work. However, as you point out, you have a problem with the IC connected to I2C that operates at 3.0V. The difference between 1.8V and 3.0V is too high.

    If you use only TX on the nRF51 UART interface to communicate with the UART peer device, then you could possibly do without the voltage translator. You could do that by letting the TX pin only drive low signal and then manually pull the TX line up with a 1.8V voltage.

    All GPIO configuration is retained is System Off. Perhaps you could benefit from looking at the system-off-wakeup-on-gpio example which shows how pins are configured to wake up from System Off.

    The default sink/source current is 0.5mA. This can be configured however by writing to the PIN_CNF register for a specfic pin, bits D, see section 13.2.8 in nRF51 Series Reference Manual v2.1. To see specifically how this is done in code, look at the definition for the nrf_gpio_cfg_sense_input function in nrf_gpio.h in the system-off-wakeup-on-gpio example. Standard drive is 0.5mA max, high drive is 5mA max. Max combined drive for all GPIO's is 15mA.

    If you have also RX pin configured to communicate with the UART peer device, I see no other solution than to use a voltage translator.

Related