Jump to content
Tokes

После перепрошивки невозможно подключиться к com порту

Recommended Posts

Здравствуйте.
CUBEMX + CUBEIDE + PUTTY + STLINK V2
Есть blue pill. Создал новый проект в CUBEMX. Включил там USB как COM порт. Завёл приём сообщений (модифицировал static CDC_Receive_FS функцию). Всё хорошо работает ровно до тех пор, пока в CUBEIDE не нажимаю F11 (build + flash + debug). После этого необходимо руками вытаскивать и засовывать кабель, чтобы можно было продолжать пользоваться терминалом. В то же время достаточно коснуться контакта "USB-" - и происходит тот самый желанный реконнект, после которого достаточно нажать restart session в терминале и всё продолжает работать нормально. 
Вопрос - как сделать программно, чтобы при старте устройство ("com port" или "usb com emulator") само себя "переподключало"?

Edited by Tokes

Share this post


Link to post
Share on other sites

USB устройство на шине обнаруживается по появлению подтяжки линии D+ на +3,3В.

Что бы после перезагрузки не нужно было вручную отключать/подключать устройство, тем самым имитируя включение/отключение подтяжки, нужно этой подтяжкой управлять програмно. Тоесть просто добавить транзистор. Устройство отключено - транзистор закрыт, подтяжки нет, ничего не опознается. Нужно подключится - открываем транзистор, линия D+ подключается к +3,3В через резистор. Сопротивление резистора - 1,5 к.

Edited by Вуйко

Share this post


Link to post
Share on other sites

Не нашёл решения изящнее, чем взять первый свободный пин, посадить его на D- и в коде написать следующее:
 

	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.Pin = GPIO_PIN_6;
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
	HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
	
	__disable_irq();
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET);
	uint32_t i;
	for(i = 0; i < 10000; i++);
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);
	GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
	HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
	__enable_irq();

Вообще хотел обойтись минимальной кровью, т.е. без задействования какого-либо пина и всё не мог понять, почему не работает управление пином, если инициализирован USB. В даташите потом почитал, что 
"As soon as the USB is enabled, these pins are connected to the USB internal transceiver automatically."
То есть чтобы это порешать надо было деинициализировать USB, потом заново.... 
В общем, если будет решение лучше - с удовольствием почитаю :)

@Вуйко , спасибо за участие )

Share this post


Link to post
Share on other sites

Руководство для разработчика приложений на базе STM32WB55

Представив двухъядерные беспроводные микроконтроллеры STM32WB для IoT-приложений, компания STMicroelectronics предлагает разработчикам экосистему, включающую в себя отладочные платы, примеры кода для микроконтроллера, готовое ПО всех уровней и большой массив документации.

Читать статью

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By One _ moment
      Здравствуйте. Нужно разобраться с принципом работы интерфейса I2C на Stm32. понимаю, что материала в интернете много, но почему-то даже просто структура, где определяются параметры, у меня другая.
      Моя вот такая:
      typedef struct
      {
        uint32_t I2C_Timing;  
        uint32_t I2C_AnalogFilter;      
        uint32_t I2C_DigitalFilter; 
        uint32_t I2C_Mode;  
        uint32_t I2C_OwnAddress1;
        uint32_t I2C_Ack;
        uint32_t I2C_AcknowledgedAddress;
      }I2C_InitTypeDef;
      Те, что даются в примерах, в статьях, такая:
      typedef struct
      {
        uint32_t I2C_ClockSpeed;          
       
        uint16_t I2C_Mode;                
       
        uint16_t I2C_DutyCycle;           
       
        uint16_t I2C_OwnAddress1;         
       
        uint16_t I2C_Ack;                 
       
        uint16_t I2C_AcknowledgedAddress; 
      }I2C_InitTypeDef;
       
      Найдя пример на этом форуме (https://forum.cxem.net/index.php?/topic/202586-i2c-%D0%B2-stm32f030/) увидел, что используются параметры такие же, что и у меня, но теперь не понятно, откуда такие значения берут и по какой логике. 
      Прошу не пинать ногами и кидать в меня гнилые помидоры, а помочь разобраться в этом всём или подсказать, где можно найти исчерпывающую информацию, где хорошо и по полочкам всё разложено.
      Программирую в keil uVision v5
      Отладочная плата stm32f0 disco
      МК stm32f0030r8
      Благодарю заранее.
    • Guest User1324
      By Guest User1324
      Здравствуйте, помогите подключить USB-флешку к STM32F103RCT6, нужна дополнить принципиальную схему. Если есть возможность нарисовать.
    • By Стальной
      Здравствуйте!
      Интересует мнение коллег по правильному питанию мощных МК. Имеется STM32F722VCT6. Делаю для себя новый отладочный стенд. На нем будут обкатываться различные задачи, поставлю плюсом к МК всякую периферию, обязательно i2c память (из серии AT24Cxx), MAX3485, возможно какой-то дисплей, SD-карту, может быть SIM900 и NAND. Первичный источник - думаю, USB хватит.
      Вопрос - как организовать питание МК? Имеет ли смысл цифровую часть (а мб и часть периферийного зоопарка) питать импульсной системой, а аналоговую часть кренкой? Или всё кренкой запитать? Какие идеи?
      Спасибо)
      ЗЫ Сейчас использую стенд на STM32F407VET6, сделанный на коленках, все кренкой питается. Но там периферия изготавливается по мере необходимости и надевается отдельно на гребенки.
    • By befrikpa
      Добрый день товарищи!
      У меня такая проблема:
      Я хочу сделать штуку которая будет замыкать реле через определённое время(после подачи питания на него), реле времени так сказать. В принципе устройство работает, но у меня не получается сделать так, что бы светодиод (HL_4) мигал каждые пол секунды пока не включено реле, а после включения соответственно  светодиод горел постоянно.
      Сейчас у меня условие находится в бесконечном цикле, и при включении устройства, светодиод просто горит постоянно и всё.
      Скажу честно, я в программировании пока что зелёный, так что не судите строго за код))
      Прикрепил код:

       
    • By Alextiger62
      Отладочный набор на базе микроконтроллера STM32F746IGT6. Модульная конструкция и открытый дизайн делают плату идеальным решением для начала быстрой разработки устройств. В комплект поставки входят все необходимые модули расширения, для оценки всех возможностей микроконтроллера. 

      Комплектация: 
      1 х Материнская плата (Open746I-C development board); 
      1 х Процессорный модуль (Core746I); 
      1 х Кабель (USB type A plug to micro B plug cable);   - отсутствует
      1 х Кабель (USB type A receptacle to micro B plug cable);   - отсутствует
      1 х Соединительные провода (4-pin 2-pin wires pack);   - отсутствует 
      1 х Блок питания (Power adapter US standard 5V/1A);   - отсутствует
      1 х Дисплей (7inch Capacitive Touch LCD (F)); 
      1 х Плата (DP83848 Ethernet Board); 
      1 х Плата (USB3300 USB HS Board); 
      1 х Плата (UDA1380 Board); 
      1 х Плата (Micro SD Storage Board); 
      1 х Плата (OV2640 Camera Board); 
      1 х Плата (W25QXX DataFlash Board); 
      1 х Плата (10 DOF IMU Sensor (B)); 
      2 х Плата (SN65HVD230 CAN Board); 
      1 х Плата (Analog Test Board); 
      1 х Кабель (USB type A plug to mini-B plug cable);  - отсутствует
      1 х Кабель (USB type A receptacle to mini-B plug cable);   - отсутствует
      1 х Кабель (Ethernet Cable); 
      1 х Шлейф (40-pin FFC);  - отсутствует
      1 х Крепеж (7inch LCD screws pack).
  • Сообщения

    • Всё это есть на Али. Закажите и через месяц он приедет к вам. Цена та же (с доставкой). А мистера уже давно на сайте не было...
    • И где я видел ЭТО - так вот каким Максим Галкин теперь стал ... неужто пол сменил?  
    • 17:00 Панама вошла в состав России 17:01 Израиль  вошел в состав России 17:02 Великобритания вошла в состав России 17:03 Швейцария вошла в состав России .... .... 17:30 Президент России не принял отставку правительства и поздравил сотрудников ГРУ завершением удачной операции , с получением очередных званий и наград.
    • и что - стало легче? Нужно сразу в АСЦ нести его, причем со справкой от психиатра, что   не есть видения, вызванные проблемами со здоровьем.
    • И 30лет назад техника была разного уровня. Но современная тенденция бизнеса сводится к обществу потребления. Народ приучают и приучили покупать нужное и не нужное. Раньше народ не имел возможности часто менять технику да и производители не могли (да и не было необходимости) насытить рынок. Китай всё перевернул. Тот китаец сказал со своей колокольни. Если они не будут продавать ширпотреб в таких количествах то они себя не прокормят. Хотя китай и умеет делать качественный продукт основной доход даёт ширпотреб. За китаем подтянулись и остальные производители. Вместо старых моделей покупаются новые. Таким образом конвейер работает без перебоя. И вообще, делать более надёжную технику стало не выгодно со времён Зингера. Первый опыт опробован с лампочкой Эдиссона. Производитель намеренно выпускал лампочки с уменьшенным сроком работы. Убили двух зайцев. С одной стороны прибыль а с другой "дискредитация" лампочки и продвижение газовых фонарей. С led лампами происходит нечто подобное. Причём качество обычных лампочек стало много хуже чтобы народ покупал дорогие сберегайки. А у многих (особенно в глубинке) работают ещё советские лампочки за 25копеек и старая бытовая техника. Современные пылесосы столько не работают. Всё начинается от хреновых подшипников и щёток до некачественных материалов шланга, корпуса. Давеча приходил чел с двумя самсунговскими моторами пылесосов. Надо было перепаять щётки с годовалого на десятилетний. У годовалого подшипники в хлам а у старого хоть бы хны.  Делал кап ремонт оригинальному макитовскому перфику. Написал список подшипников. Хозяин привёз китайские пятидесяти рублёвые, все люфтят. Сказал чтоб купил хорошие иначе ремонт нецелесобразен. Хозяин купил двойной комплект чтоб ещё заменить в новой такой же маките, но китайской. После замены всех подшипников от оригинального не отличить.  Вот сколько сталкиваюсь с дешёвым электро инструментом везде подшипники хреновые. Меняешь на хорошие и агрегат просто не узнать.
    • указано в паспорте на них.
×
×
  • Create New...