This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF52 Uart

Hi,

i'm actually working for interface the nRF52 with the STM32. Actually i completed the part where the STM32 send some data and the nRF52 recive it.

Now i need to do the same thing but with the nRF52 that send the data. I put an oscilloscope to see the data and nothing seems to happen. I'm not really understanding what can be the mistake.

Here's my code for set the uart:

void USART_Set(){

    uint32_t err_code;

    nrf_gpio_cfg_input(UART_RX_PIN, NRF_GPIO_PIN_PULLUP);
    nrf_gpio_cfg_output(UART_TX_PIN);

    const app_uart_comm_params_t comm_params =
      {
          UART_RX_PIN,
          UART_TX_PIN,
          RTS_PIN_NUMBER,
          CTS_PIN_NUMBER,
          APP_UART_FLOW_CONTROL_DISABLED,
          false,
          UART_BAUDRATE_BAUDRATE_Baud9600
      };

    APP_UART_FIFO_INIT(&comm_params,
                         UART_RX_BUF_SIZE,
                         UART_TX_BUF_SIZE,
                         uart_evt_callback,
                         APP_IRQ_PRIORITY_HIGHEST,
                         err_code);

    APP_ERROR_CHECK(err_code);
}

#define UART_TX_PIN 9 //31
#define UART_RX_PIN 11 //30

#define UART_CTS_PIN 7
#define UART_RTS_PIN 8

Then i do:

int main(void)
{
    uint32_t err_code;

    timers_init();
    ...
    advertising_start(erase_bonds);




    USART_Set();

    tx_enable = 1;
    err_code = app_uart_put(0xAA);
    APP_ERROR_CHECK(err_code);

    // Enter main loop.
    while(1){
        ...
    }
}

and inside the handler:

void uart_evt_callback(app_uart_evt_t * p_event)
{
    uint32_t err_code;

    if (p_event->evt_type == APP_UART_FIFO_ERROR || p_event->evt_type == APP_UART_COMMUNICATION_ERROR)
    {
        err_code = app_uart_flush();
        APP_ERROR_CHECK(err_code);
    }

    //se non ci sono dati nella seriale e l'invio e' attivo
    if(p_event ->evt_type == APP_UART_TX_EMPTY && tx_enable){
      err_code = app_uart_put(value_R[counter]);
      APP_ERROR_CHECK(err_code);
      counter++;
      if(counter > 1){
        counter = 0;
        tx_enable = 1;
       }
    }
    if(p_event ->evt_type == APP_UART_DATA_READY){
      ...
    }
}

With the debugger i've seen that err_code is 0 after uart_put. Sometimes happen to go in the part of the FIFO_ERROR and stuff but not usually.

Thanks for the help

Parents Reply Children
No Data
Related