Всем привет! Добрался до stm32 и usb. Купил отладочную плату NUCLEO-F767ZI. Пытаюсь передать байтик на stm через виртуальный com порт.
Посмотрел четыре ролика: https://www.youtube.com/watch?v=oDoavXrQdEg
https://www.youtube.com/watch?v=TYSCKWkCcPU&t=793s
https://www.youtube.com/watch?v=XKCjOlskW78
https://www.youtube.com/watch?v=4iSRUcb ... k&index=35
Скачал драйвер STSW-STM32102, поставил его после разархивирования.
В Cube настроил USB_OTG_FS >> Device only. И еще вверху USB_DEVICE >> Virtual com port. В настройщике частоты задал 48 МГц.
Втыкаю провод - выдает ошибку 43 (Система Windows остановила это устройство, так как оно сообщило о возникновении неполадок. (Код 43). Сбой запроса дескриптора USB-устройства).
Поменял в настройках проекта размер кучи и стека на 2000 и 4000.
В файле usbd_cdc_if.c заменил APP_RX_DATA_SIZE и APP_TX_DATA_SIZE на 64.
В файле usbd_cdc.h заменил CDC_DATA_HS_MAX_PACKET_SIZE и CDC_DATA_FS_MAX_PACKET_SIZE на 64U.
Перед отправкой проверяю соединение функцией if(hUsbDeviceFS.dev_state == 0x03) ... ;
Перезагружал комп раз десять. Купил новые хорошие провода. Втыкал их в разные usb-гнезда. Запитывал плату от батарейки, выдирая программатор.
Не помогает. Слышал, что надо напаять снаружи подтягивающий резистор 1.5к. Но вроде отладочная плата новая, неужели там что-то отвалилось?
Как думаете, что может быть не так?
STM32 USB код ошибки 43
-
Pazitiff25
- Родился
- Сообщения: 13
- Зарегистрирован: Чт сен 27, 2018 18:14:49
- Реклама
Re: STM32 USB код ошибки 43
Куб создается только заготовку. Код приема и передачи по USB нужно самому написать.
-
Pazitiff25
- Родился
- Сообщения: 13
- Зарегистрирован: Чт сен 27, 2018 18:14:49
Re: STM32 USB код ошибки 43
Я написал что-то типа этого, примеров-то полно. Проблема в том, что винда не видит микроконтроллер, писать некуда ((
#include "usbd_cdc_if.h"
uint8_t trbuffer[]="Hello!\r\n";
HAL_Delay(2000);
while (1)
{
if(hUsbDeviceFS.dev_state == 0x03)
{
CDC_Transmit_FS(trbuffer,6);
HAL_Delay(1000);
}
}
#include "usbd_cdc_if.h"
uint8_t trbuffer[]="Hello!\r\n";
HAL_Delay(2000);
while (1)
{
if(hUsbDeviceFS.dev_state == 0x03)
{
CDC_Transmit_FS(trbuffer,6);
HAL_Delay(1000);
}
}
