Есть задача передавать из ПК в МК большой массив данных(~16 МБ). Попробовал программку Terminal - 255 байт передаётся нормально, но больше 255 байт отослать программа не даёт. В этой проге есть еще функция передавать целый файл. Ну я создал файл 32кБ для начала, отправляю этой программкой, а он мне его по байту разбил и отослал) Я думаю, это не очень корректно.
Писал прогу на Qt и пробовал через консольку файл кидать(два разных действия), результат один - передача не проходит. Пользуюсь прогой USBlyzer, в ней при отправке пишется, что передача Cancelled. В Мк приходит 64 байта, остальное хз где теряется. Может кто объяснит почему так?
Код, который обрабатывает прием в Мк по прерыванию:
Код
static int8_t CDC_Init_FS(void)
{
hUsbDevice_0 = &hUsbDeviceFS;
/* USER CODE BEGIN 3 */
/* Set Application Buffers */
USBD_CDC_SetRxBuffer(hUsbDevice_0, RxBuffer);
VCPInitialized = 1;
return (USBD_OK);
/* USER CODE END 3 */
}
static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)
{
USBD_CDC_ReceivePacket(hUsbDevice_0);
if (RxBufferOffset == 8)
RxBufferOffset = 0;
memcpy(UserRxBufferFS+RxBufferOffset*0x40, RxBuffer, 0x40);
RxBufferOffset++;
return (USBD_OK);
}
Сообщение отредактировал Still Enemy - Jul 30 2015, 07:32