<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>UART configuration and pin-definition on nRF54L15-DK</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/124167/uart-configuration-and-pin-definition-on-nrf54l15-dk</link><description>Hi, 
 I would like to create a UART on the nRF54L15 DK, but currently it seems that only the pins bound to CONFIG_UART_CONSOLE (P1.04 / P1.05) are working as below Output. I am unable to assign other TXD/RXD pins, for example (P2.00 / P2.01) or ( P2.02</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 08 Sep 2025 18:14:14 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/124167/uart-configuration-and-pin-definition-on-nrf54l15-dk" /><item><title>RE: UART configuration and pin-definition on nRF54L15-DK</title><link>https://devzone.nordicsemi.com/thread/548100?ContentTypeID=1</link><pubDate>Mon, 08 Sep 2025 18:14:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:06709cd2-151c-41e9-9ca6-f92942afa8c0</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;For those pins on the DK you also need to check the DK user guide:&lt;br /&gt;&lt;a href="https://docs.nordicsemi.com/bundle/ug_nrf54l15_dk/page/UG/nRF54L15_DK/hw_desription/connector_if.html"&gt;https://docs.nordicsemi.com/bundle/ug_nrf54l15_dk/page/UG/nRF54L15_DK/hw_desription/connector_if.html&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;a href="https://docs.nordicsemi.com/bundle/nrf-connect-board-configurator/page/index.html"&gt;https://docs.nordicsemi.com/bundle/nrf-connect-board-configurator/page/index.html&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sorry I forgot that.&lt;/p&gt;
&lt;p&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UART configuration and pin-definition on nRF54L15-DK</title><link>https://devzone.nordicsemi.com/thread/547830?ContentTypeID=1</link><pubDate>Fri, 05 Sep 2025 03:37:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e35d0885-3c50-46fa-8b8b-761eaf9f6893</guid><dc:creator>WeBBK</dc:creator><description>&lt;p data-start="43" data-end="48"&gt;Hi,&lt;/p&gt;
&lt;p data-start="50" data-end="373"&gt;Thank you for your reply. I have followed your suggestion and added the &lt;code data-start="122" data-end="158"&gt;nrfx_power_constlat_mode_request()&lt;/code&gt; function. For testing purposes, I have not released it yet. Unfortunately, the UART is still not working. Could you please advise if there might be any other configuration conflicts or errors that I should check?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;nrf54l15dk_nrf54l15_cpuapp.overlay&lt;/strong&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;&amp;amp;uart20 {
    status = &amp;quot;okay&amp;quot;;
    current-speed = &amp;lt;115200&amp;gt;;

    /delete-property/ pinctrl-1;
    /delete-property/ pinctrl-names;

    pinctrl-0 = &amp;lt;&amp;amp;uart20_p2&amp;gt;;
    pinctrl-names = &amp;quot;default&amp;quot;;
};

&amp;amp;pinctrl {
    uart20_p2: uart20_p2 {
        group1 {
            psels = &amp;lt;NRF_PSEL(UART_TX, 2, 2)&amp;gt;,
                    &amp;lt;NRF_PSEL(UART_RX, 2, 0)&amp;gt;;
        };
    };

    /delete-node/ uart20_sleep_p2;
};&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;prj.conf&lt;/strong&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;CONFIG_SERIAL=y
CONFIG_UART_NRFX=y
CONFIG_UART_ASYNC_API=y
CONFIG_GPIO=y
CONFIG_UART_NRFX=y
CONFIG_NRFX_POWER=y

CONFIG_MAIN_STACK_SIZE=2048

CONFIG_LOG=n
CONFIG_USE_SEGGER_RTT=n
CONFIG_UART_CONSOLE=y
CONFIG_SHELL=n&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;main.c&lt;/strong&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;zephyr/kernel.h&amp;gt;
#include &amp;lt;zephyr/drivers/uart.h&amp;gt;
#include &amp;lt;zephyr/device.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;nrfx_power.h&amp;gt; //added

#define RX_TIMEOUT_US 20000
#define LINE_MAX      128

static const struct device *uart;
static char line[LINE_MAX];
static size_t linelen;

static uint8_t rxbuf1[64];
static uint8_t rxbuf2[64];
static bool buf2_in_use;

static void on_evt(const struct device *dev, struct uart_event *evt, void *ud)
{
    ARG_UNUSED(dev); ARG_UNUSED(ud);

    switch (evt-&amp;gt;type) {
    case UART_RX_RDY: {
        const struct uart_event_rx *rx = &amp;amp;evt-&amp;gt;data.rx;
        for (size_t i = rx-&amp;gt;offset; i &amp;lt; rx-&amp;gt;offset + rx-&amp;gt;len; ++i) {
            char c = rx-&amp;gt;buf[i];
            if (c == &amp;#39;\r&amp;#39; || c == &amp;#39;\n&amp;#39;) {
                if (linelen &amp;gt; 0) {
                    line[linelen] = 0;
                    printk(&amp;quot;Received: %s\n&amp;quot;, line);
                    linelen = 0;
                }
            } else if (linelen + 1 &amp;lt; sizeof(line)) {
                line[linelen++] = c;
            } else {
                linelen = 0;  // overflow reset
            }
        }
        break;
    }
    case UART_RX_BUF_REQUEST:
        if (!buf2_in_use) {
            uart_rx_buf_rsp(uart, rxbuf2, sizeof(rxbuf2));
            buf2_in_use = true;
        }
        break;
    case UART_RX_BUF_RELEASED:
        if (evt-&amp;gt;data.rx_buf.buf == rxbuf2) buf2_in_use = false;
        break;
    case UART_RX_DISABLED:
        /* continuous */
        uart_rx_enable(uart, rxbuf1, sizeof(rxbuf1), RX_TIMEOUT_US);
        break;
    default:
        break;
    }
}

int main(void)
{
    //uart = DEVICE_DT_GET(DT_CHOSEN(zephyr_console));
    uart = DEVICE_DT_GET(DT_NODELABEL(uart20));
    if (!device_is_ready(uart)) {
        return 0;
    }
    nrfx_power_constlat_mode_request(); //added

    printk(&amp;quot;Hello World! uart20 on P2.02/P2.00 (CONSTLAT ON)\n&amp;quot;);

    /* Async */
    uart_callback_set(uart, on_evt, NULL);
    uart_rx_enable(uart, rxbuf1, sizeof(rxbuf1), RX_TIMEOUT_US);

    while (1) {
        k_sleep(K_SECONDS(1));
    }
}&lt;/pre&gt;&lt;/p&gt;
&lt;p data-start="375" data-end="404"&gt;Best regards,&lt;br data-start="388" data-end="391" /&gt;Webb&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: UART configuration and pin-definition on nRF54L15-DK</title><link>https://devzone.nordicsemi.com/thread/547784?ContentTypeID=1</link><pubDate>Thu, 04 Sep 2025 14:59:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:53ed82e4-3c54-4452-800f-814c10962b61</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I think I understand the problem, and it&amp;#39;s related to what you can find here:&lt;br /&gt;&lt;a href="https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/uarte.html#d1754e919"&gt;https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/uarte.html#d1754e919&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;a href="https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/chapters/pin.html#ariaid-title2"&gt;https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/chapters/pin.html#ariaid-title2&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;a href="https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/chapters/pin.html#d379e188"&gt;https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/chapters/pin.html#d379e188&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;a href="https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/chapters/pin.html#ariaid-title3"&gt;https://docs.nordicsemi.com/bundle/ps_nrf54L15/page/chapters/pin.html#ariaid-title3&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Make sure to carefully read all&amp;nbsp;4 of those chapters.&amp;nbsp;So I believe you need to explicit request and release constlat when using Port 2, e.g.&lt;/p&gt;
&lt;p&gt;(#include &amp;lt;nrfx_power.h&amp;gt;) nrfx_power_constlat_mode_request(); // right before you transmit/receive something, release afterwards to reduce current when not using UART.&lt;/p&gt;
&lt;p&gt;Edit: If you are using the DK, also see my next reply.&lt;/p&gt;
&lt;p&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>