Данная библиотека позволяет использовать USB OTG порт на плате Discovery в режиме CDC. Это позволяет создать виртуальный COM-порт (с логическими уровнями UART), дающий возможность совершать обмен данными между платой и ПК. На стороне компьютера устанавливается “VirtualComPort-Driver for ST”, который можно загрузить на сайте ST (автор тестировал версию 1.3.1). Поиск можно осуществить по запросу "STSW-STM32102". Библиотека ожидает идентификатор конца строки в виде символа "0x0D", означающий возврат каретки (который должен быть указан в конце). Настройка протокола (скорость, количество стоп-битов и т.д.) производится в драйвере USB. В библиотеке предусмотрены функции для отправки и приема строк и функция проверки соединения с USB. Автор тестировал написанные функции в “mini” PC-Terminal программе. Для подключения использовался microUSB кабель (который можно купить на eBay или Amazon)
Используемые выводы:
PA8 -> USB_OTG_SOF (не используется)
PA9 -> USB_OTG_VBUS
PA10 -> USB_OTG_ID
PA11 -> USB_OTG_DM
PA12 -> USB_OTG_DP
Требуемые библиотеки:
Подключаемые модули CooCox-IDE: GPIO, MISC
Поддерживаемые библиотеки: отсутствуют
Перечисления:
typedef enum { USB_CDC_NO_INIT =0, // интерфейс USB не инициализирован USB_CDC_DETACHED, // USB-соединение инициализировано USB_CDC_CONNECTED // USB-Соединение установлено }USB_CDC_STATUS_t; USB_CDC_STATUS_t USB_CDC_STATUS; typedef enum { NONE = 0, // без идентификатора LFCR, // возврат строки и перевод каретки (0x0A,0x0D) CRLF, // перевод каретки и возврат строки (0x0D,0x0A) LF, // перевод строки (0x0A) CR // возврат каретки (0x0D) }USB_CDC_LASTBYTE_t; typedef enum { RX_USB_ERR =0, // нет подключения к USB RX_EMPTY, // данные не приходят RX_READY // данные, принятые в буфер }USB_CDC_RXSTATUS_t;
Функции:
void UB_USB_CDC_Init(void); // инициализировать интерфейс USB USB_CDC_STATUS_t UB_USB_CDC_GetStatus(void); // Проверка статуса USB ErrorStatus UB_USB_CDC_SendString(char *ptr, USB_CDC_LASTBYTE_t end_cmd); // Отправить строку через USB USB_CDC_RXSTATUS_t UB_USB_CDC_ReceiveString(char *ptr); // Принять строку через USB
Пример использования:
//-------------------------------------------------------------- // File : main.c // Datum : 23.06.2013 // Version : 1.4 // Autor : UB // EMail : mc-4u(@)t-online.de // Web : www.mikrocontroller-4u.de // CPU : STM32F4 // IDE : CooCox CoIDE 1.7.0 // Module : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : Demo der USB-CDC-Library // Hinweis : Diese zwei Files muessen auf 8MHz stehen // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_usb_cdc.h" int main(void) { char buf[APP_TX_BUF_SIZE]; // буфер для приема данных USB_CDC_RXSTATUS_t check=RX_EMPTY; SystemInit(); // Инициализация настроек кварца // Инициализация USB-OTG-порта как CDC-устройство // (Виртуальный COM порт) UB_USB_CDC_Init(); while(1) { // Проверка работы USB-подключения к ПК if(UB_USB_CDC_GetStatus()==USB_CDC_CONNECTED) { // Проверка получения данных по USB check=UB_USB_CDC_ReceiveString(buf); if(check==RX_READY) { // При получении данных // вернуться эхо // (с перемещением на новую строку) UB_USB_CDC_SendString(buf,LFCR); } } } }
В приложении проект CooCox и отдельная библиотека для использования в других проектах, а так же программа-терминал для работы с COM-портом. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.
Прикрепленные файлы:
- Demo_31_USB_CDC_rus.rar (322 Кб)
- ub_stm32f4_usb_cdc_v104_rus.rar (40 Кб)
- Discovery_Terminal_UB_v106.zip (279 Кб)
Комментарии (2) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация