CTS/RTS on ARM UART

Status
Not open for further replies.

dknguyen

Well-Known Member
Most Helpful Member
Is the CTS/RTS function on microcontrollers something that must be driven through software via RTS/CTS interrupts? Or is it implemented in hardware? I'm working on an STM32F303K8 right now and though the manual seems to weakly imply that it is hardware driven, I am seeing no evidence of flow control.
 
As far as I'm aware it's usually done purely in software, and probably no need for interrupts.
 
Okie dokie. The datasheet describes how RTS and CTS function in such detail that I was unsure if it was describing what the hardware does, or if it was describing what the programmer should do since it makes no indication that anything additional needs to be done by the programmer.

Probably will need interupts in my case though since the DMA is the one feeding data to the UART. Would have been nice if it was hardware based and the UART just held off transmision on it's own which would automatically hold back the DMA. It's a bit of a PITA to disable the DMA mid-transfer because it doesn't pick up from where it left off when re-enabled, so you have to configure it to pick up from where it left off each time before re-enabling it.

EDIT: Or maybe...I could just disable the transmitter...yeah that's probably better. Then no need to fiddle with the DMA.
 
Last edited:
UPDATE: Looks like the RTS/CTS is completely hardware controlled with no need for interrupts. I was just stupid and forgot to set up the I/O lines for RTS/CTS after I enabled the functionality in the UART peripheral.
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…