Hello,
I am using UART_1 in my program to comminicate with other sensor. So the data is read from UART_1 and print to UART_0. Now I want to communicate with other sensor simultaneously. So I am using UART_2 for that purpose. When I connect both sensors to UART_1 and UART_2, only the data from UART_1 is read and it is printed on the terminal. But the data from UART_2 is not read and printed. So how to read and print the data from both UART on the terminal at the same time.
The Code is:
#include <zephyr.h>
#include <misc/printk.h>
#include <uart.h>
static u8_t uart_buf[1024];
static u8_t uart_buf1[1024];
void uart_cb(struct device *x)
{
uart_irq_update(x);
int data_length = 0;
if (uart_irq_rx_ready(x)) {
data_length = uart_fifo_read(x, uart_buf, sizeof(uart_buf));
uart_buf[data_length] = 0;
}
printk("%s", uart_buf);
}
void uart_cb1(struct device *x1)
{
uart_irq_update(x1);
int data_length = 0;
if (uart_irq_rx_ready(x1)) {
data_length = uart_fifo_read(x1, uart_buf1, sizeof(uart_buf1));
uart_buf1[data_length] = 0;
}
printk("%s", uart_buf1);
}
void main(void)
{
struct device *uart = device_get_binding("UART_2");
struct device *uart1 = device_get_binding("UART_1");
uart_irq_callback_set(uart, uart_cb);
uart_irq_rx_enable(uart);
uart_irq_callback_set(uart1, uart_cb1);
uart_irq_rx_enable(uart1);
printk("UART loopback start!\n");
while (1) {
k_cpu_idle();
}
}
Is this code correct or is there any other way to use 2 UARTS simultaneously?