<?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>NRF9160 UART2</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/86877/nrf9160-uart2</link><description>Hi nordic: 
 NCS1.8.0 , I added UART2 to the NRF9160 LWM2M sample, but it cannot send and receive, but the same code is put into the NRF9160 UDP sample and it can work normally. The sample log output on the 9160 LWM2M shows: 06 NRF_UARTE2 Secure SKIP</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 13 Apr 2022 13:56:37 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/86877/nrf9160-uart2" /><item><title>RE: NRF9160 UART2</title><link>https://devzone.nordicsemi.com/thread/363216?ContentTypeID=1</link><pubDate>Wed, 13 Apr 2022 13:56:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:508c7940-3fba-486f-a43f-1005ac1f6932</guid><dc:creator>jermi</dc:creator><description>&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/lwm2m_5F00_client.rar"&gt;devzone.nordicsemi.com/.../lwm2m_5F00_client.rar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;please check ti !!&lt;/p&gt;
&lt;p&gt;jermi&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF9160 UART2</title><link>https://devzone.nordicsemi.com/thread/363129?ContentTypeID=1</link><pubDate>Wed, 13 Apr 2022 08:37:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0871d75c-b7a3-4c2b-beb0-670a37e594e7</guid><dc:creator>&amp;#216;yvind</dc:creator><description>&lt;p&gt;Hello&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/members/jermi"&gt;jermi&lt;/a&gt;, can you please provide full project? I see that the UDP sample includes&amp;nbsp;nrf\samples\nrf9160\udp\child_image\spm.conf&lt;br /&gt;Have you tried to add this to your project?&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Øyvind&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF9160 UART2</title><link>https://devzone.nordicsemi.com/thread/363048?ContentTypeID=1</link><pubDate>Tue, 12 Apr 2022 13:56:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b021a028-1eb9-423c-8e03-98f292b15eca</guid><dc:creator>jermi</dc:creator><description>&lt;p&gt;//#if 0&lt;br /&gt;//JXB ADD START&lt;br /&gt;#define UART_RX_BUF_NUM 2&lt;br /&gt;#define UART_RX_LEN 256&lt;br /&gt;#define UART_RX_TIMEOUT_MS 10&lt;br /&gt;#define UART_ERROR_DELAY_MS 500&lt;br /&gt;#define UART_RX_MARGIN_MS 10&lt;br /&gt;# define UART_RX_TEMP_LEN 2000&lt;/p&gt;
&lt;p&gt;static const struct device *uart_dev2;&lt;br /&gt;static unsigned char uart_rx_buf2[UART_RX_BUF_NUM][UART_RX_LEN];&lt;/p&gt;
&lt;p&gt;static unsigned char uart_tx_buf2[UART_RX_LEN]={0,1,2,3},txlenth=0;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;static uint16_t uart_rx_num=0;&lt;br /&gt;unsigned char rxdata[UART_RX_TEMP_LEN];&lt;/p&gt;
&lt;p&gt;static unsigned char *next_buf1;&lt;br /&gt;static unsigned char *uart_tx_buf1;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;static int uart_data_send(void)&lt;br /&gt;{&lt;br /&gt; int ret;&lt;br /&gt; ret = uart_tx(uart_dev2, uart_tx_buf2, txlenth, SYS_FOREVER_MS);&lt;br /&gt; return ret;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;extern int uarte_nrfx_tx(const struct device *dev, const uint8_t *buf,&lt;br /&gt; size_t len,&lt;br /&gt; int32_t timeout);&lt;/p&gt;
&lt;p&gt;void rxchar(uint8_t data)&lt;br /&gt;{&lt;br /&gt; rxdata[uart_rx_num]=data;&lt;br /&gt; uart_rx_num++;&lt;br /&gt; if(uart_rx_num&amp;gt;=UART_RX_TEMP_LEN) &lt;br /&gt; {&lt;br /&gt; uart_rx_num=0;&lt;br /&gt; &lt;br /&gt; // k_work_submit(&amp;amp;uart_data_send_work);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;uint32_t counterrx=0;&lt;br /&gt;uint8_t changebuf=0;&lt;br /&gt;static void uart_callback2(const struct device *dev, struct uart_event *evt, void *user_data)&lt;br /&gt;{&lt;br /&gt; int err,i;&lt;br /&gt; static uint16_t pos2;&lt;br /&gt; static bool enable_rx_retry;&lt;/p&gt;
&lt;p&gt;ARG_UNUSED(dev);&lt;br /&gt; ARG_UNUSED(user_data);&lt;/p&gt;
&lt;p&gt;switch (evt-&amp;gt;type) {&lt;br /&gt; case UART_TX_DONE:&lt;br /&gt; k_free(uart_tx_buf1);&lt;br /&gt; // k_sem_give(&amp;amp;tx_done);&lt;br /&gt; break;&lt;br /&gt; case UART_TX_ABORTED:&lt;br /&gt; k_free(uart_tx_buf1);&lt;br /&gt; // k_sem_give(&amp;amp;tx_done);&lt;br /&gt; // LOG_INF(&amp;quot;TX_ABORTED&amp;quot;);&lt;br /&gt; break;&lt;br /&gt; case UART_RX_RDY:&lt;br /&gt; &lt;br /&gt; for (int i = pos2; i &amp;lt; (pos2 + evt-&amp;gt;data.rx.len); i++) &lt;br /&gt; {&lt;br /&gt; &lt;br /&gt; rxchar(evt-&amp;gt;data.rx.buf[i]);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;uart_tx(uart_dev2,&amp;amp;( evt-&amp;gt;data.rx.buf[pos2]), evt-&amp;gt;data.rx.len, SYS_FOREVER_MS);&lt;br /&gt; &lt;br /&gt; pos2 += evt-&amp;gt;data.rx.len;&lt;br /&gt; counterrx+=evt-&amp;gt;data.rx.len;&lt;/p&gt;
&lt;p&gt;break;&lt;br /&gt; case UART_RX_BUF_REQUEST:&lt;br /&gt; pos2 = 0;&lt;br /&gt; err = uart_rx_buf_rsp(uart_dev2, next_buf1, sizeof(uart_rx_buf2[0]));&lt;br /&gt; &lt;br /&gt; break;&lt;br /&gt; case UART_RX_BUF_RELEASED:&lt;br /&gt; if(changebuf==0)&lt;br /&gt; {&lt;br /&gt; changebuf=1;&lt;br /&gt; next_buf1 = uart_rx_buf2[1];&lt;br /&gt; }&lt;br /&gt; else{&lt;br /&gt; changebuf=0;&lt;br /&gt; next_buf1 = uart_rx_buf2[0];&lt;/p&gt;
&lt;p&gt;}&lt;br /&gt; break;&lt;br /&gt; case UART_RX_STOPPED:&lt;br /&gt; //LOG_WRN(&amp;quot;RX_STOPPED (%d)&amp;quot;, evt-&amp;gt;data.rx_stop.reason);&lt;br /&gt; /* Retry automatically in case of UART ERROR interrupt */&lt;br /&gt; if (evt-&amp;gt;data.rx_stop.reason != 0) {&lt;br /&gt; enable_rx_retry = true;&lt;br /&gt; }&lt;br /&gt; break;&lt;br /&gt; case UART_RX_DISABLED:&lt;br /&gt;/* &lt;br /&gt; if (enable_rx_retry &amp;amp;&amp;amp; !uart_recovery_pending) {&lt;br /&gt; k_work_schedule(&amp;amp;uart_recovery_work, K_MSEC(UART_ERROR_DELAY_MS));&lt;br /&gt; enable_rx_retry = false;&lt;br /&gt; uart_recovery_pending = true;&lt;br /&gt; }&lt;br /&gt;*/&lt;br /&gt; break;&lt;br /&gt; default:&lt;br /&gt; break;&lt;br /&gt; }&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt; void uartini(void)&lt;br /&gt; {&lt;br /&gt; uint32_t start_time,err;&lt;br /&gt; &lt;br /&gt; uart_dev2 = device_get_binding(DT_LABEL(DT_NODELABEL(uart2))); //JXB&lt;br /&gt; if (uart_dev2 == NULL) {&lt;br /&gt; return;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; /* Wait for the UART line to become valid */&lt;br /&gt; start_time = k_uptime_get_32();&lt;br /&gt; do {&lt;br /&gt; err = uart_err_check(uart_dev2);&lt;br /&gt; if (err) {&lt;br /&gt; uint32_t now = k_uptime_get_32();&lt;/p&gt;
&lt;p&gt;if (now - start_time &amp;gt; UART_ERROR_DELAY_MS) {&lt;br /&gt; return -EIO;&lt;br /&gt; }&lt;br /&gt; k_sleep(K_MSEC(10));&lt;br /&gt; }&lt;br /&gt; } while (err);&lt;br /&gt; /* Register async handling callback */&lt;br /&gt; err = uart_callback_set(uart_dev2, uart_callback2, NULL);&lt;br /&gt; if (err) {&lt;br /&gt; return -EFAULT;&lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;//uart_data_send();&lt;br /&gt; /* Power on UART module */&lt;br /&gt; //pm_device_action_run(uart_dev2, PM_DEVICE_ACTION_RESUME);&lt;br /&gt; pm_device_state_set(uart_dev2, PM_DEVICE_STATE_ACTIVE); //PM_DEVICE_STATE_ACTIVE PM_DEVICE_STATE_LOW_POWER&lt;/p&gt;
&lt;p&gt;&lt;br /&gt; int ret;&lt;br /&gt; uart_irq_rx_enable(uart_dev2);&lt;br /&gt; ret=uart_rx_enable(uart_dev2, uart_rx_buf2[0], sizeof(uart_rx_buf2[0]), UART_RX_TIMEOUT_MS);&lt;br /&gt; next_buf1 = uart_rx_buf2[1];&lt;br /&gt; &lt;br /&gt; // k_work_init(&amp;amp;uart_data_send_work, uart_data_send);&lt;br /&gt;// k_work_init(&amp;amp;raw_send_work, raw_send);&lt;br /&gt;// k_work_init(&amp;amp;cmd_send_work, cmd_send);&lt;br /&gt;// k_work_init(&amp;amp;datamode_quit_work, datamode_quit);&lt;br /&gt;// k_work_init_delayable(&amp;amp;uart_recovery_work, uart_recovery);&lt;br /&gt;// k_sem_give(&amp;amp;tx_done);&lt;br /&gt;// LOG_INF(&amp;quot;at_host init done&amp;quot;);&lt;br /&gt; // uart_data_send();&lt;br /&gt; &lt;br /&gt; }&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>