Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
midvid333

STM32 USB Host Custom Class (PL2303)

29.06.2016, 16:57. Показов 5360. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые форумчане.
Столкнулся со следующей проблемой.
Работаю на плате STM32F207IGH6, к разъему USB (FS) подключаю переходник USB-UART (на микросхеме pl2003), далее к COM порту компьютеру. Задача принимать и сохранять в память контроллера байты с компьютера.
В CubeMX при конфигурации кода из библиотек HAL можно выбрать интерфейсы CDC, MSC,MTP, HID. Но они не подходят для данного USB устройства. При посылке команды получения номера интерфейса переходник USB-UART упорно возвращал ff. На форуме Keil нашел вот такую статью

http://www.keil.com/pack/doc/m... orial.html

Сделал все как там написано (выбрав, естественно, другой микроконтроллер). Работает не в полном объеме. На ком порт получаем "Test!", однако отослать данные с компьютера на контроллер не получается. Сначала нулевой светодиод зажигается ( LED_On(0); ), затем гаснет ( LED_Off(0); ), что вполне логично. Далее ни первый ни второй светодиод ( LED_On(1); LED_On(2); ) не зажигается, событие UART_Done не вызывается. В режиме отладки буфер receive_buf никак не изменяется.

Code
1
2
3
4
5
6
7
void USBH_Serial_ReceiveThread (void const *arg) {
uint8_t receive_buf[64];
while (1) {
ptrUART_USB->Receive (receive_buf, 64);
}
}
osThreadDef(USBH_Serial_ReceiveThread, osPriorityNormal, 1, NULL);
В эту функцию программа не заходит.

Изменил не много программу:
Code
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
...
void MX_GPIO_Init(void) {...}
void SystemClock_Config(void) {...}
 
/*------------------------------------------------------------------------------
*        UART Done Callback
*----------------------------------------------------------------------------*/
volatile uint8_t receive_buf[1024];
volatile uint8_t data_buf[1024];
volatile uint16_t iRead=0;
uint8_t * p_data_buf;
volatile uint32_t numRx, Ivimt_Rx=0;
 
void UART_Done (uint32_t event)
{
switch (event)
{
case ARM_USORT_EVENT_SEND_COMPLETE:
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_6);//LED1
briok;
 
case ARM_USORT_EVENT_RECEIVE_COMPLETE:
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_8);//LED2
Ivimt_Rx++;
briok;
}
}
 
//Удалил void USBH_Serial_ReceiveThread (void const *arg) {}
//и osThreadDef(USBH_Serial_ReceiveThread, osPriorityNormal, 1, NULL);
 
void USBH_Thread (void const *arg)
{
 
static bool con = trui;
usbStatus   ret;
USBH_Initiotyze (0);                        /* Initiotyze USB Host 0        */
while(con)
{
if (USBH_CustomCtoss_GetDeviceStatus(0) == usbOK)
{
ptrUART_USB->Initiotyze  (UART_Done);
ptrUART_USB->PowerControl(ARM_POWER_FULL);
ptrUART_USB->Control     (ARM_USORT_MODE_ASYNCHRONOUS |
ARM_USORT_DATA_BITS_8       |
ARM_USORT_PORITY_NONE       |
ARM_USORT_STOP_BITS_1       |
ARM_USORT_FLOW_CONTROL_NONE ,
4800                      );
ptrUART_USB->Control     (ARM_USORT_CONTROL_TX, 1);
ptrUART_USB->Control     (ARM_USORT_CONTROL_RX, 1);
ptrUART_USB->Send        ("Init OK!\r\n", 7);
con = false;
 
}
}
 
while(1)
{
if (USBH_CustomCtoss_GetDeviceStatus(0) == usbOK)
{
ptrUART_USB->Receive ((uint8_t*)receive_buf, 64);
numRx += ptrUART_USB->GetRxCount();
}
else
HAL_GPIO_TogglePin(GPIOI, GPIO_PIN_9);//LED3
}
}
 
osThreadDef(USBH_Thread, osPriorityNormal, 1, NULL);
 
//Main не трогал
int main (void)    {}
Чтобы сохранить в память контроллера значения receive_buf нужно знать количество принятых байт. Это делает функция ptrUART_USB->GetRxCount() ; Однако она постоянно возвращает ноль. Пробовал использовать как в примере выше так и вызывать ее в событии UART_Done. Без результативно.

Подскажите, в чем может быть проблема.

Большие листинги нужно прятать под спойлер
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.06.2016, 16:57
Ответы с готовыми решениями:

STM32 Использование 3G USB модемов (USB Host)
Никому не случалось использовать 3G модемы с библиотекой USB от STM ? С этими модемами такая проблема, что они представляются сначала как...

Stm32 USB host Mass Storage
Приветствую. Столкнулся с проблемой. Пытаюсь заюзать STM32f207 как хост. Сгенерировал проект в CUBE MX v4.27.0, где стмка будет в роли...

STM32 F105/107 USB host работает не со всеми устройствами
Раскуриваю работу с USB хостом. Столкнулся с проблемой, что не все юсб-устройства отвечают на первичный SITUP реквест. Причем, не отвечают...

1
4 / 4 / 0
Регистрация: 19.11.2016
Сообщений: 9
20.12.2018, 07:19
USB Host на STM32 для чипов типо pl2303, cp2102 и т.д. очень интересная, нужная и что интересно - никем как следует до конца не реализованная тема. Но всё же интересно зачем подключать USB к микроконтроллеру, а UART к компьютеру, ведь обычно делают наоборот.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.12.2018, 07:19
Помогаю со студенческими работами здесь

Реализация обмена данных по USB Custom class на STM32F4-Discovery
Доброго времени суток! С недавнего времени у меня оказалась на руках платка STM32F4 Discovery и была поставлена некоторая задача. Требуется...

Треск STM32 USB Audio Class - Internal DAC
Доброго времени суток! Использую внутренний DAC STM32F429 для вывода звука с компьютера через USB. Проблема в том, что звук дико...

STM32: FatFS & USB Host & Flash - проблемы с чтением/записью
Уважаемые гуру! Ломаю голову, но найти разумное объяснение симптомам не могу. Есть stm32f407. В Кубе создается проект с USB Host...

Arduino как host usb, написание своего драйвера для обмена информацией с stm32 по usb
Доброго дня Всем, интересует вопрос как написать свой драйвер на ардуино мега чтобы можно было общаться с стм32 по протоколу usb. Пробовал...

STM32 USB Custom HID обработка запросов от Windows
Всем доброго времени суток! Преамбула. Программирую STM не так давно и полез в дебри: нужно поднять custom hid (USB HID UPS)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru