Dear Community;
I am trying to read serial data sent by a PMS 5003 in hexadecimal. If I connect the PMS 5003 to a conventional serial device (Raspberry) this is what I read:
42 4d 00 1c 00 07 00 0a 00 0a 00 07 00 0a 00 0a 04 38 01 59 00 30 00 00 00 00 00 00 97 00 02 3e
However, using nRF 9160 DK I read this:
42 4d 00 1c 00 07 00 0a
This is my code. I would like to find out what's wrong.
/*
* Copyright (c) 2012-2014 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr.h>
#include <misc/printk.h>
#include <uart.h>
#include <nrf9160.h>
unsigned char uart_buf[1024];
void uart_cb(struct device *x)
{
static int counter = 0;
uart_irq_update(x); //Start processing interrupts in ISR
int data_length = 0;
if (uart_irq_rx_ready(x)) { //Check if UART RX buffer has a received char
data_length = uart_fifo_read(x, uart_buf, 1024); //Read data from FIFO
//printk("bytes: %i", data_length);
//printk("rx Ready!\n");
uart_buf[data_length] = 0;
}
printf("PMS5003 hexadecimal data: %02X\n", (unsigned char) uart_buf[0]);
counter++;
}
void main(void)
{
printk("Starting...\n");
struct device *uart = device_get_binding("UART_0"); //Conecting
uart_irq_callback_set(uart, uart_cb); //Set the IRQ callback function pointer
uart_irq_rx_enable(uart); //Enable RX interrupt
printk("UART loopback start!\n");
while (1) {
k_cpu_idle(); //Make the CPU idle (useless)
}
}
Thanks in advance,
Ander.