<?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>nrf54 wakeup using uart pins as gpio.</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/126145/nrf54-wakeup-using-uart-pins-as-gpio</link><description>Using nrf connect 3.1.1 
 using nrf54L15 evaluation board. 
 
 Hi, 
 I have an application that is using the shell capabilities of the zephyr. uart and shell is connected to stranded virital com to usb c, 
 
 #define UART_TX_GPIO_SPEC &amp;lt; NRF_PSEL ( UART_TX</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 17 Dec 2025 12:26:30 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/126145/nrf54-wakeup-using-uart-pins-as-gpio" /><item><title>RE: nrf54 wakeup using uart pins as gpio.</title><link>https://devzone.nordicsemi.com/thread/557202?ContentTypeID=1</link><pubDate>Wed, 17 Dec 2025 12:26:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e723d299-1119-4355-8553-076e6600703b</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user="narfster"]&lt;p&gt;I confirmed this works as I needed.&lt;/p&gt;
&lt;p&gt;I suspend uart, then configure rx pin as interrupt and it work.&lt;/p&gt;
&lt;p&gt;after interrupt fires, i disable it and re enable uart.&lt;/p&gt;
&lt;p&gt;thanks.&lt;/p&gt;[/quote]
&lt;p&gt;That is great to hear, and thank you so much for sharing your proposed code. Hope you have a wonderful day!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nrf54 wakeup using uart pins as gpio.</title><link>https://devzone.nordicsemi.com/thread/557198?ContentTypeID=1</link><pubDate>Wed, 17 Dec 2025 11:34:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d837c553-4a78-463d-93f9-a1ae0bb9840f</guid><dc:creator>narfster</dc:creator><description>&lt;p&gt;I confirmed this works as I needed.&lt;/p&gt;
&lt;p&gt;I suspend uart, then configure rx pin as interrupt and it work.&lt;/p&gt;
&lt;p&gt;after interrupt fires, i disable it and re enable uart.&lt;/p&gt;
&lt;p&gt;thanks.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="background-color:#ffffff;color:#3b3b3b;font-family:Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;configure_uart_rx_wakeup&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#af00db;"&gt;if&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; (&lt;/span&gt;&lt;span style="color:#000000;"&gt;!&lt;/span&gt;&lt;span style="color:#795e26;"&gt;device_is_ready&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;(&lt;/span&gt;&lt;span style="color:#001080;"&gt;uart_rx_pin&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;.&lt;/span&gt;&lt;span style="color:#001080;"&gt;port&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;)) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#af00db;"&gt;return&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;-&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ENODEV&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;ret&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;gpio_pin_configure_dt&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#001080;"&gt;uart_rx_pin&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;GPIO_INPUT&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;|&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;GPIO_PULL_UP&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#af00db;"&gt;if&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; (&lt;/span&gt;&lt;span style="color:#001080;"&gt;ret&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#af00db;"&gt;return&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;ret&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#001080;"&gt;ret&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;gpio_pin_interrupt_configure&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;(&lt;/span&gt;&lt;span style="color:#001080;"&gt;uart_rx_pin&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;.&lt;/span&gt;&lt;span style="color:#001080;"&gt;port&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#001080;"&gt;uart_rx_pin&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;.&lt;/span&gt;&lt;span style="color:#001080;"&gt;pin&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;GPIO_INT_EDGE_BOTH&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#af00db;"&gt;if&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; (&lt;/span&gt;&lt;span style="color:#001080;"&gt;ret&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#af00db;"&gt;return&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;ret&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;k_work_init_delayable&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#001080;"&gt;work&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;, &lt;/span&gt;&lt;span style="color:#795e26;"&gt;work_thread&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;gpio_init_callback&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#001080;"&gt;gpio_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#795e26;"&gt;gpio_isr&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;BIT&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;(&lt;/span&gt;&lt;span style="color:#001080;"&gt;uart_rx_pin&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;.&lt;/span&gt;&lt;span style="color:#001080;"&gt;pin&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;));&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#001080;"&gt;ret&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;gpio_add_callback&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;(&lt;/span&gt;&lt;span style="color:#001080;"&gt;uart_rx_pin&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;.&lt;/span&gt;&lt;span style="color:#001080;"&gt;port&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;, &lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#001080;"&gt;gpio_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#af00db;"&gt;if&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; (&lt;/span&gt;&lt;span style="color:#001080;"&gt;ret&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#af00db;"&gt;return&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;ret&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#af00db;"&gt;return&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#098658;"&gt;0&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#3b3b3b;"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nrf54 wakeup using uart pins as gpio.</title><link>https://devzone.nordicsemi.com/thread/557136?ContentTypeID=1</link><pubDate>Tue, 16 Dec 2025 18:20:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f40404ec-bd85-4c32-9d30-9f3e0e11d2b7</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This topic comes into play when using PM runtime API:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/126091/button-with-gpio-keys-not-fired-when-config_pm_device_runtime-y"&gt;button with &amp;quot;gpio-keys&amp;quot; not fired when CONFIG_PM_DEVICE_RUNTIME=y&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SHELL will also be a consumer of your uart, so it will keep it on. Try instead of using serial backend for shell, to use RTT instead.&lt;/p&gt;
&lt;p&gt;This function call will create issues:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;    gpio_init_callback(&amp;amp;uart_rx_pin,
                       gpio_isr,
                       BIT(uart_rx_pin.pin));
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Should point to &amp;quot;gpio_cb&amp;quot;, not &amp;quot;uart_rx_pin&amp;quot;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you choose to go with PM runtime API, you should enable the &amp;quot;uart_rx_pin.port&amp;quot; via&amp;nbsp;pm_device_runtime_get() when disabling the uart.&lt;/p&gt;
&lt;p&gt;If you choose to use PM without runtime, you should suspend the uart, then setup your gpio callback.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nrf54 wakeup using uart pins as gpio.</title><link>https://devzone.nordicsemi.com/thread/556961?ContentTypeID=1</link><pubDate>Mon, 15 Dec 2025 12:37:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9ddd3121-42da-483b-8ba0-0b064e2cd746</guid><dc:creator>narfster</dc:creator><description>&lt;p&gt;for clarity - I am expecting characters sent from PC connected to uart to fire the ISR and waking the uart.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;in the ISR or main context configure the uart to run again.&lt;/p&gt;
&lt;p&gt;in the past - On nrf5 SDK we have done this manipulation and it work wonderful.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>