AnsweredAssumed Answered

STLink-V2 VCP @ 115,200

Question asked by soo.jonathan on Jul 10, 2017
Latest reply on Sep 15, 2017 by Clive One

I'm running into an issue with the STLink-V2 VCP when transmitting TO the dev board at 115,200. It is suspiciously similar to this old post, except in the opposite direction: NUCLEO-L152RE - Sending data at 115200 baud on USART2 kills ST-LINK VCP 

 

Sending single characters with approx. 50ms delay between characters works, when using a 40ms delay, the device stops receiving characters. The test code on the device (nucleo-l031k6 and also the nucleo-f303ze) is a simple busy loop that receives a character and then toggles the LED, with nothing else running and no interrupts enabled. 

 

The firmware version is V2J28M18, and this is occurring with macOS Sierra 10.12.5 and with Ubuntu 16.04 running in VMWare Fusion. All other STLink functionality seems to be fine.

 

Unfortunately I don't have a code sample (I am implementing low-level libraries for a compiled non-C/C++ language and don't have a C toolchain set up at the moment) but the UART TX side is solid and the only thing that the RX side is doing is polling on RXNE, reading RDR and toggling the LED.

 

When sending larger packets of data, I can get the transmit side of the VCP to hang up completely so that a full USB disconnection is needed for even individual characters to make it through - a simple reset of the device doesn't fix things.

 

My suspicion is that the VCP firmware was implemented with only interactive terminal use in mind, and perhaps only uses a single buffer that is sufficient for that purpose but not for more intensive use.

 

Has anyone here successfully used the STLink-V2 VCP to transmit bulk data to a connected device? I'm really trying to avoid having to use an external serial connection - I may have a dozen or more Nucleo boards connected at a time, and having to manage a dozen additional USB serial adapters would be a huge pain.

Outcomes