nRF Connect SDK Fundamentals : Lesson 5 Quizz : RTS question

I have problem with one question of the lesson 5 Quizz of the "nRF Connect SDK Fundamentals" course (Dev Academy)

https://academy.nordicsemi.com/courses/nrf-connect-sdk-fundamentals/lessons/lesson-4-serial-communication-uart/quizzes/lesson-5-quiz/

Here is the question :

Regarding the name, RTS is "request to send", so RTS indicate that the device is ready to receive and not to send, so the answer 2 seems not the good one.

RTS is used to indicate that the device is busy or not, and ready or not to accept new data. So answer 4 seems to be the closest one to what can be a good answer.

What do you think ?

  • Hi,

    I agree that among the answers provided in the quiz, the correct one would be "to send that it is busy and not ready to accept new data".

    For UART flow control, each device controls (writes to) a line which indicates whether or not it is ready to receive (Request To Send, RTS), and reads a line to check if the peer is ready to receive (Clear To Send, CTS). Those lines are connected according to the figure, with RTS on one end connected to CTS on the other, and vice versa.

    I find the lession itself to be wrong as well, since it states that "each end will use its RTS to indicate that it is ready to send new data". The correct phrasing is that it "is ready to receive new data".

    I will report this internally so that it can be fixed, both in the lesson text and in the quiz.

    Regards,
    Terje

  • Just to add or maybe clarify the confusion as I run into it right now (it has not been fixed in the text)

    academy.nordicsemi.com/.../
    "These wires are cross-coupled between the two devices. If hardware flow control is enabled, each end will use its RTS to indicate that it is ready to send new data and read its CTS to see if it is allowed to send data to the other end." - I think this is wrong.

    As Wikipedia describes it - "the DTE asserts RTS whenever it is ready to receive data from the DCE" - https://en.wikipedia.org/wiki/RS-232 (the wikipedia article also goes into historical reasons why RTS no longer is used as Requst To SEND)

  • Hi,

    The correct wording should be:

    "(...) each end will use its RTS to indicate that it is ready to receive new data and read its CTS to see if it is allowed to send (...)"

    Thank you for the report. I have reported this in order for it to be fixed, but it might delay till after Easter.

    Regards,
    Terje

  • Hi,

    Upon further scrutiny, it turns out the original text of the lesson was not technically wrong, although it did not paint the full picture either. Therefore, we consider it to have been slightly misleading.

    What typically happens, when using HWFC and Device A wants to send data to Device B, is the following:

    1. Device A sets its RTS active, to indicate that it wants to send
    2. Device B reads the active signal on its CTS, and prepares to receive
    3. Device B, once ready to receive, sets its RTS active
    4. Device A reads the active signal on its CTS, indicating it is allowed to send the data

    As such, it is technically true that a device, when it wants to send, "use its RTS to indicate that it is ready to send new data and read its CTS to see if it is allowed to send [the] data to the other end". However, the description is easily misunderstood, it does not give the full picture, and one might easily get confused.

    Still, for most intents and purposes the main mechanism is that of the receiving device setting RTS active when it is ready to receive, and the sending device sending only when reading an active signal on CTS. This is the mechanism at play once the transmission has started, where the receiver disables RTS whenever the buffers are full, and reenables RTS whenever the buffers are empty, signalling to the sender when it can send data. The course has been changed to reflect this. This is also how HWFC is explained in most of our Product Specifications and Datasheets.

    Regards,
    Terje

Related