Uart读取数据北欧半导体

时间:2019-11-27 15:52:27

标签: c installation uart

我正在尝试通过Uart从外围设备读取数据。 这是从我的设备输出的数据。

1,1191,1,1188
1,1191,1,1188
1,1191,1,1188
1,1191,1,1188
1,1191,1,1188
1,1191,1,1188
1,1191,1,1188

但是,在我的代码中,我正在运行一个循环,每秒应将测试输出到不输出的终端(输入)。除非我拔下UART连接(RX,TX,CTS,RTS)。

在我的面板上(北欧52840dk),我正在使用uart_event_handler,这应该会看到Uart中的更改,然后我就可以处理信息了。但是,它从未被调用。

这使我相信我的UART设置不正确。

我需要获取此数据,然后对其进行格式化。请有人可以帮助我读取此数据。有什么想法吗?

这是我的Uart处理程序代码

void uart_event_handle(app_uart_evt_t * p_event)
{
    static uint8_t data_array[BLE_NUS_MAX_DATA_LEN];
    static uint8_t index = 0;
    uint32_t       err_code;

    switch (p_event->evt_type)
    {
    bsp_board_led_invert(2);
        case APP_UART_DATA_READY:
            UNUSED_VARIABLE(app_uart_get(&data_array[index]));
            index++;

            if (
                (data_array[index - 1] == '\r') ||
                (index >= m_ble_nus_max_data_len))
            {                                                                                                           
                if (index > 1)
                {
                    NRF_LOG_DEBUG("Ready to send data over BLE NUS");
                    NRF_LOG_HEXDUMP_DEBUG(data_array, index);

                    //Want to handle the data_array here

                    do
                    {
                        uint16_t length = (uint16_t)index;
                        err_code = ble_nus_data_send(&m_nus, data_array, &length, m_conn_handle);
                        if ((err_code != NRF_ERROR_INVALID_STATE) &&
                            (err_code != NRF_ERROR_RESOURCES) &&
                            (err_code != NRF_ERROR_NOT_FOUND))
                        {
                            APP_ERROR_CHECK(err_code);
                        }
                    } while (err_code == NRF_ERROR_RESOURCES);
                }

                index = 0;
            }
            break;

        case APP_UART_COMMUNICATION_ERROR:
            APP_ERROR_HANDLER(p_event->data.error_communication);
            break;

        case APP_UART_FIFO_ERROR:
            APP_ERROR_HANDLER(p_event->data.error_code);
            break;

        default:
            break;
    }
}

我的UART设置代码为:

static void uart_init(void)
{
    uint32_t                     err_code;
    app_uart_comm_params_t const comm_params =
    {
        .rx_pin_no    = RX_PIN_NUMBER,
        .tx_pin_no    = TX_PIN_NUMBER,
        .rts_pin_no   = RTS_PIN_NUMBER,
        .cts_pin_no   = CTS_PIN_NUMBER,
        .flow_control = APP_UART_FLOW_CONTROL_DISABLED,
        .use_parity   = false,
#if defined (UART_PRESENT)
        .baud_rate    = NRF_UART_BAUDRATE_115200
        //.baud_rate    = NRF_UARTE_BAUDRATE_115200
#else
        .baud_rate    = NRF_UARTE_BAUDRATE_115200
#endif
    };

    APP_UART_FIFO_INIT(&comm_params,
                       UART_RX_BUF_SIZE,
                       UART_TX_BUF_SIZE,
                       uart_event_handle,
                       APP_IRQ_PRIORITY_MID,
                       //APP_IRQ_PRIORITY_LOWEST,
                       err_code);
    APP_ERROR_CHECK(err_code);
}

谢谢

0 个答案:

没有答案