Skip to main content

DSPS without the use of RTS and CTS

DA14531 SmartBond TINY Module

10 months ago

Posted by Markus.Wichgers 40 points 3 replies
0 upvotes

I am using the DA14531 smartbond module to create a "transparent" UART connection (DSPS) between our application and a smartphone (Android).
At our application, we don't have pins for RTS and CTS connections at our microcontroller. Is it possible to disable the use of the RTS and CTS pins in the software? We are using the standard "dsps_device" project in our DA14531 smartbond module.
Or is it possible to connect the RTS or CTS pin to a constant high or low signal to prevent RTS/CTS flow control?

10 months ago

PM_Dialog

Hi Markus.Wichgers,

Thanks for posting your question on our forums and thanks also for your interest in our DA14531MOD solution.

Unfortunately, there is not no way to disable the UART HW Flow Control (RTS/CTS) in the DSPS application. The DSPS is provided and supported with HW Flow Control.

The DSPS is using extended sleep mode as well, so the device wakes up via the CTS when there are incoming data on the UART. Keep in mind that the chip is in sleep mode ( extended sleep in the case of DSPS), it will sleep between advertising or connection intervals. During sleep, all the peripheral blocks (including UART) are powered off and the power consumption is reduced.  Additionally, the  HW Flow control is used for handling the data on the UART.

Since this is a “data-pumping” application, I would strongly recommend using the CodeLess and the Binary mode.

https://www.dialog-semiconductor.com/products/smartbond-codeless-commands

Binary mode is used for the purpose of data pumps wherein the Bluetooth CodeLess device transfers data without examining it contents, which is the preferred method for end to end raw data transfer.

http://lpccs-docs.dialog-semiconductor.com/UM-140-DA145x-CodeLess/binarymode.html

It is very similar to the DSPS and there is no need for HW Flow Control.

Another solution, which is STRONGLY NOT RECOMMENDED is to use the DSPS in active mode

const static sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF;

and ground the CTS signal.

In this implementation, you will have a problem if the heaps are full filled. In that case, the DA14531 will do flow OFF because it is unable to receive any other upcoming data, but the peer device will not be aware of this in order to stop the data transmission via UART.  This means that some of the data will be lost. This scenario can happen in 2 ways:

i)  The external MCU is sending data over UART at very high rate

ii)  The BLE Link is not good enough, so some of the data might be retransmitted

Of course, we cannot give any guarantee on the approach, as the DSPS is supported with HW Flow Control and extended sleep mode. The power consumption will be increased as well!

Thanks, PM_Dialog

10 months ago

Markus.Wichgers 40 points

Hi,

thank you very much for your fast reply.

We only have a very small amount of data (25 bytes every 500ms) and at the moment the module is only used for a proof of concept. Therefore, we will stay at the DSPS solution for this moment, because the android solution is very simple.

Best regards,

Markus

10 months ago

PM_Dialog

Hi Markus.Wichgers,

In the case of the AT CodeLess, you can use the SmartConsole application. The source code is available for iOS and Android..

Thanks, PM_Dialog