SPS how to disable hardware flow control

Hi,

Working with project dsps_device from DA145xx_SPS v. 6.150.6.77. I want to communicate with my MCU through 2 wires at 115200 baud. I do not have enough pins available to implement four wires serial port. I am struggling to find a clean way to remove the hardware flow control. Please help,

Thanks,

Rémi

Parents
  • Hi Remi,

    Thank you for posting your question online.
    The SPS SDK is supported with 4-Wire UART. The HW Flow Control is mandatory in order to ensure the Extended Sleep and prevent data loss during communication.
    Please refer on dma_uart_sps.c file, on the dma_uart_sps_init API:

    void dma_uart_sps_init(UART_BAUDRATE baudr, uint8_t mode)
    {
        GPIO_RegisterCallback(GPIO0_IRQn, dma_uart_gpio_callback);
    
        bool pin_status = GPIO_GetPinStatus(gpio_uart1_cts.port, gpio_uart1_cts.pin);
        dma_uart_sps_cts_update(pin_status);
    
        const uart_cfg_t dma_uart_cfg =
        {
            .uart_err_cb = uart_user_no_err_expected_cb,
            .uart_tx_cb = dma_uart_tx_callback,
            .uart_rx_cb = dma_uart_rx_callback,
            .data_bits = UART_DATABITS_8,
            .parity = UART_PARITY_NONE,
            .stop_bits = UART_STOPBITS_1,
            .use_fifo = UART_FIFO_EN,
            .auto_flow_control = UART_AFCE_EN,
            .uart_dma_priority = DMA_PRIO_7,
            .baud_rate = baudr,
            .uart_dma_channel = UART_DMA_CHANNEL_01,
        };
        uart_initialize(DSPS_UART, &dma_uart_cfg);
    }
    

    If you modify the dma_uart_cfg (auto_flow_control variable) you can disable the HW Flow Control but it is not supported by us.


    Best Regards,
    OV_Renesas

Reply
  • Hi Remi,

    Thank you for posting your question online.
    The SPS SDK is supported with 4-Wire UART. The HW Flow Control is mandatory in order to ensure the Extended Sleep and prevent data loss during communication.
    Please refer on dma_uart_sps.c file, on the dma_uart_sps_init API:

    void dma_uart_sps_init(UART_BAUDRATE baudr, uint8_t mode)
    {
        GPIO_RegisterCallback(GPIO0_IRQn, dma_uart_gpio_callback);
    
        bool pin_status = GPIO_GetPinStatus(gpio_uart1_cts.port, gpio_uart1_cts.pin);
        dma_uart_sps_cts_update(pin_status);
    
        const uart_cfg_t dma_uart_cfg =
        {
            .uart_err_cb = uart_user_no_err_expected_cb,
            .uart_tx_cb = dma_uart_tx_callback,
            .uart_rx_cb = dma_uart_rx_callback,
            .data_bits = UART_DATABITS_8,
            .parity = UART_PARITY_NONE,
            .stop_bits = UART_STOPBITS_1,
            .use_fifo = UART_FIFO_EN,
            .auto_flow_control = UART_AFCE_EN,
            .uart_dma_priority = DMA_PRIO_7,
            .baud_rate = baudr,
            .uart_dma_channel = UART_DMA_CHANNEL_01,
        };
        uart_initialize(DSPS_UART, &dma_uart_cfg);
    }
    

    If you modify the dma_uart_cfg (auto_flow_control variable) you can disable the HW Flow Control but it is not supported by us.


    Best Regards,
    OV_Renesas

Children
No Data