Generé el código VCP USB para "STM32F103C8T6" con STM32CubeMX. Estoy intentando enviar los datos recibidos por STM desde la PC a una placa Arduino usando UART. El código funciona bien para datos con poco tamaño, pero cuando quiero enviar datos más grandes, los datos recibidos en Arduino están dañados. Estoy usando "Teraterm" y "Realterm" para enviar datos desde la PC a STM32.
He modificado el CDC_Receive_FS
para enviar datos a través de UART en modo DMA, aquí está el código:
static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)
{
HAL_UART_Transmit_DMA(&huart3, Buf,(uint16_t)* Len);/* same problem with HAL_UART_Transmit_IT*/
USBD_CDC_ReceivePacket(hUsbDevice_0);//Getting ready for receiving next data
return (USBD_OK);
}
Envié esto
{1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40}
y recibido
{1 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 20 21 22 23 24 2}
La velocidad en baudios de USART es 19200, y en STM32, tamaño del búfer recibido, APP_RX_DATA_SIZE
se define en 640.
¿Qué debo hacer?