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>;
};
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
Hi,
smauelGIS said:however we do not have any communication between 9160 and 52840, specifically from 52840 to 9160.
Try setting