Hello,
We have an nrf9160 dk-pca10090 board.
We want to know if there is a way to make the two processors (nrf52840 and nrf9160) communicate using uart.
Kindly point us to a sample uart program to achieve this.
Thanks
Regards
Hello,
We have an nrf9160 dk-pca10090 board.
We want to know if there is a way to make the two processors (nrf52840 and nrf9160) communicate using uart.
Kindly point us to a sample uart program to achieve this.
Thanks
Regards
I was able to adapt the uart_pipe code (in ncs v1.2 at ./zephyr/drivers/console/uart_pipe.c) with the following changes for the 9160 image:
prj.conf:
CONFIG_UART_PIPE=y
CONFIG_UART_PIPE_ON_DEV_NAME="UART_2"
CONFIG_UART_CONSOLE_LOG_LEVEL_INF=y
### configure the uart between 9160 and 52840
CONFIG_UART_2_NRF_UARTE=y
CONFIG_UART_2_NRF_FLOW_CONTROL=y
CONFIG_UART_INTERRUPT_DRIVEN=y
child_secure_partition_manager.conf:
CONFIG_SPM_NRF_UARTE2_NS=y
nrf9160_pca10090ns.overlay:
/ {
chosen {
zephyr,bt-uart=&uart2;
};
};
&uart2 {
current-speed = <1000000>;
status = "okay";
tx-pin = <18>;
rx-pin = <17>;
rts-pin = <21>;
cts-pin = <19>;
};
And for building the image for the nrf52840:
prj.conf:
CONFIG_UART_PIPE=y
CONFIG_UART_PIPE_ON_DEV_NAME="UART_1"
CONFIG_UART_CONSOLE_LOG_LEVEL_INF=y
CONFIG_UART_1_NRF_UARTE=y
CONFIG_UART_1_NRF_FLOW_CONTROL=y
nrf52840_pca10090.overlay:
/ {
chosen {
zephyr,uart-pipe=&uart1;
};
};
&uart1 {
compatible = "nordic,nrf-uarte";
current-speed = <1000000>;
status = "okay";
tx-pin = <17>;
rx-pin = <20>;
rts-pin = <15>;
cts-pin = <22>;
};
Hello,
We have applied the above, we wrote the code below;
On 52840
#include <zephyr.h> #include <misc/printk.h> #include <uart.h> #include <drivers/console/uart_pipe.h> static u8_t uart_buf[1024]; static struct device *uart_pipe_dev; int count = 0; uart_pipe_recv_cb uart_cb(u8_t *buf, size_t *off){ printk("received data on 52"); return (uart_pipe_recv_cb)uart_buf; } void main(void) { printk("Started application uart send and read on 52 \n"); uart_pipe_register(uart_buf,sizeof(uart_buf),uart_cb); while (1) { count++; u8_t* data = &count; int sent = uart_pipe_send(data,sizeof(data)); if(sent>-1){ printk("sent data %d, with size %d \n", count,sizeof(data)); }else{ printk("Could not send data \n"); } k_sleep(2000); } }
On 9160
#include <zephyr.h> #include <misc/printk.h> #include <uart.h> #include <drivers/console/uart_pipe.h> static u8_t uart_buf[1024]; static struct device *uart_pipe_dev; int count = 0; uart_pipe_recv_cb uart_cb(u8_t *buf, size_t *off){ printk("received \n"); return buf; } void main(void) { printk("Started application uart send and read on 91 \n"); u8_t uart_buf_init; uart_pipe_register(&uart_buf_init,sizeof(uart_buf_init),uart_cb); while (1) { count = count + 1; u8_t* data = &count; int sent = uart_pipe_send(data,sizeof(data)); if(sent>-1){ printk("sent data %d, with size %d \n", count,sizeof(data)); }else{ printk("Could not send data \n"); } k_sleep(2000); } }
however we do not have any communication between 9160 and 52840, specifically from 52840 to 9160.
The only thing we had was a loopback on 9160 when we put a cable from pin P0.17 to P0.18. Could you please share sample code or what specifically we have to do to get this done.
Thanks and Regards
Hello,
We have applied the above, we wrote the code below;
On 52840
#include <zephyr.h> #include <misc/printk.h> #include <uart.h> #include <drivers/console/uart_pipe.h> static u8_t uart_buf[1024]; static struct device *uart_pipe_dev; int count = 0; uart_pipe_recv_cb uart_cb(u8_t *buf, size_t *off){ printk("received data on 52"); return (uart_pipe_recv_cb)uart_buf; } void main(void) { printk("Started application uart send and read on 52 \n"); uart_pipe_register(uart_buf,sizeof(uart_buf),uart_cb); while (1) { count++; u8_t* data = &count; int sent = uart_pipe_send(data,sizeof(data)); if(sent>-1){ printk("sent data %d, with size %d \n", count,sizeof(data)); }else{ printk("Could not send data \n"); } k_sleep(2000); } }
On 9160
#include <zephyr.h> #include <misc/printk.h> #include <uart.h> #include <drivers/console/uart_pipe.h> static u8_t uart_buf[1024]; static struct device *uart_pipe_dev; int count = 0; uart_pipe_recv_cb uart_cb(u8_t *buf, size_t *off){ printk("received \n"); return buf; } void main(void) { printk("Started application uart send and read on 91 \n"); u8_t uart_buf_init; uart_pipe_register(&uart_buf_init,sizeof(uart_buf_init),uart_cb); while (1) { count = count + 1; u8_t* data = &count; int sent = uart_pipe_send(data,sizeof(data)); if(sent>-1){ printk("sent data %d, with size %d \n", count,sizeof(data)); }else{ printk("Could not send data \n"); } k_sleep(2000); } }
however we do not have any communication between 9160 and 52840, specifically from 52840 to 9160.
The only thing we had was a loopback on 9160 when we put a cable from pin P0.17 to P0.18. Could you please share sample code or what specifically we have to do to get this done.
Thanks and Regards
Hi,
smauelGIS said:however we do not have any communication between 9160 and 52840, specifically from 52840 to 9160.
Try setting