Hi,
I'm running a custom nRF52811 rev1 connected to a Quectel BC660K. I'm getting this error on RTT:
00> <info> app_timer: RTC: initialized. 00> 00> <info> uart: Sending AT 00> 00> <error> app: ERROR 4 [NRF_ERROR_NO_MEM] at src/bc660.c:124 00> 00> PC at: 0x00019A4B 00> 00> <error> app: End of error report
Here's the initialization:
#include "app_uart.h"
#include "app_error.h"
#include "custom_board.h"
#include "nrf_delay.h"
#include "system/timer.h"
APP_TIMER_DEF(RESPONSE_TIMER);
#define NRF_LOG_MODULE_NAME uart
#include "nrf_log.h"
NRF_LOG_MODULE_REGISTER();
#if defined (UART_PRESENT)
#include "nrf_uart.h"
#endif
#if defined (UARTE_PRESENT)
#include "nrf_uarte.h"
#endif
#define UART_HWFC APP_UART_FLOW_CONTROL_DISABLED
#define UART_COMMAND_BUFFER_SIZE (48U) /**< max number of test bytes to be used for tx and rx. */
#define UART_TX_BUF_SIZE 256 /**< UART TX buffer size. */
#define UART_RX_BUF_SIZE 256 /**< UART RX buffer size. */
#define ENTER_KEY 0xA
#define CARRIAGE_RETURN_KEY 0xD
bool init_bc660()
{
uint32_t err_code;
const app_uart_comm_params_t comm_params =
{
MAIN_RX_PIN,
MAIN_TX_PIN,
NRF_UART_PSEL_DISCONNECTED,
NRF_UART_PSEL_DISCONNECTED,
UART_HWFC,
false,
#if defined (UART_PRESENT)
NRF_UART_BAUDRATE_115200
#else
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_LOWEST,
err_code);
if (err_code != NRF_SUCCESS) APP_ERROR_HANDLER(err_code);
app_timer_create(&RESPONSE_TIMER, APP_TIMER_MODE_SINGLE_SHOT, uart_timeout_handler);
if(send_init_commands() != NRF_SUCCESS) return false;
return true;
}
And the uart event handler:
void uart_event_handle(app_uart_evt_t * p_event)
{
uint8_t input_char;
ret_code_t err_code;
switch (p_event->evt_type)
{
case APP_UART_DATA:
NRF_LOG_ERROR("UART Error: APP_UART_DATA");
break;
case APP_UART_DATA_READY:
err_code = app_uart_get(&input_char);
if (err_code)
{
NRF_LOG_ERROR("Error %d getting new character", err_code);
reset_uart_input();
break;
}
if (char_ends_message(input_char) || readBufferIndex >= UART_COMMAND_BUFFER_SIZE - 1)
{
app_timer_stop(RESPONSE_TIMER);
append_char_to_buffer('\0');
// Action
NRF_LOG_INFO("Received: %s", readBuffer);
response = true;
memcpy(responseBuffer, readBuffer, UART_COMMAND_BUFFER_SIZE);
reset_uart_input();
}
else
{
if (input_char != CARRIAGE_RETURN_KEY && input_char != ENTER_KEY)
{
append_char_to_buffer(input_char);
}
ignoreNextEnter = false;
}
break;
case APP_UART_FIFO_ERROR:
APP_ERROR_HANDLER(p_event->data.error_code);
break;
case APP_UART_COMMUNICATION_ERROR:
APP_ERROR_HANDLER(p_event->data.error_communication);
break;
case APP_UART_TX_EMPTY:
// TX done. Will be called after successfully writing 1 character
break;
default:
NRF_LOG_ERROR("UART Error: Code %d", p_event->evt_type);
break;
}
}
src/bc660.c:124 refers to APP_UART_COMMUNICATION_ERROR. What could be wrong?