Перейти к содержанию

verlaty

Members
  • Постов

    47
  • Зарегистрирован

  • Посещение

Весь контент verlaty

  1. Вот вспомнил еще один момент. Первоначальную прошивку делаю через DFU (загружаю свой bootloader, ну и можно начальную прошивку влить) потом уже через свою программку (своеобразная GUI ) заливаю, обновляю и настраиваю устройство.Так что пока что не готов окончательно отказаться от USB.
  2. Что бы объяснить все детали немного расскажу о проекте. Это устройство дистанционного управления объективом видеоаппаратуры (позволяет управлять кольцами объектива в разных режимах). Одно устройство - это пульт управления, второе - приемник к которому подключены привода управления. Все управление происходит по радиоканалу. Один из режимов работы - это управление в автоматическом режиме. К приемнику подключен дальномер, эти данные обрабатываются и выдается сигнал на управление приводами. Другой режим когда это устройство используется локально (есть такое устройство, как стедикам - это носимое устройство на которое крепится камера и стабилизирует положение камеры). В этом случае планируется подключать к приемнику маленький пульт управления (типа джойстика) который будет крепится на стедикаме. Так же есть необходимость подключения кабеля управления затвором фотокамеры (делать снимок). В итоге получилось маленькое устройство (4 х 8 см) полностью облепленное разъемами (подключение питания, 3 разъема моторов, USB разъем, разъем затвора, антенна). Теперь еще надо подключить дальномер и проводной пульт управления. Вот поэтому возникло желание использовать USB разъем для подключения периферийных устройств. В конце концов именно для этого создавался USB интерфейс.
  3. Устройство мобильное. К компьютеру будет подключаться только для настройки, обновления ПО. Есть необходимость подключения к нему различных периферийных устройств, одно из них дальномер. Чтение по UART самое простое, но все таки хочется прощупать возможность подключения через USB (это расширит возможность использования). Как правильно отметил " BARS_ OTG в этом МК нет. Теоретически можно любой пин подключить к пятому пину USB для инициализации подключения. Если вы знакомы с реализацией этого через программу USB-host - ткните носом где это можно почитать.
  4. Добрый день. Есть проект на STM32F3 (использую библиотеку HAL). Для настройки и управления устройством в нем реализован USB порт CDC (Communication Device Class). Возникла необходимость подключения Дальномера к устройству. Дальномер выдает данные по UART. И в принципе нет проблем считывать данные по этому каналу, но для этого надо выводить дополнительный разъем и это не нравится. Появилось желание использовать USB. Предполагаю использовать в Дальномере UART-USB преобразователь (что то типа FTDI) и подключать его к USB порту STM. Вопрос: Как реализовать опрос датчика подключенного к USB порту контроллера. Если кто то сталкивался с похожим вопросом направьте на путь истинный. Спасибо.
  5. verlaty

    STM32 и ADC DMA

    Еще раз спасибо. Проблему решил увеличением SamplingTime при инициализации ADC.
  6. verlaty

    STM32 и ADC DMA

    Спасибо большое за быстрый ответ. Буду читать. Природа проблемы понятна. Если все правильно понял, то в этой статье рекомендует ставить емкость по входу. Есть одно Но... Я измеряю данные с четырех резисторов (на эти пины допустим можно повесить и емкость) и еще измеряю Vrefint. Это необходимо для вычисления vdd (вот сюда емкость ни как не прицепишь). Может быть есть способ программно победить эту беду. Или же подскажите как правильно настроить ADC и DMA, на что обратить внимание?. Измерения происходят каждые 10мс
  7. verlaty

    STM32 и ADC DMA

    Спасибо, почитаю более внимательно и поищу мелкие буковки. Если не тяжело, озвучьте примерное место этих буквочек.
  8. verlaty

    STM32 и ADC DMA

    Добрый день,форумчане. Столкнулся с такой проблемой. Использую в проекте STM32F3. Всю периферию настраивал через Cube (работаю с библиотекой HAL). Теперь суть проблемы: снимаю данные ADC с 5 пинов в режиме DMA (normal) регулярный канал (12бит 0-4095). Заметил, что значения канала влияют на значение следующего канала. Например значение 1 канала - 1000, 2 - 3000. При изменении значения первого канала переменным резистором (второй при этом не изменяю) 1 канал - установил 4000, то и 2 канал тоже меняет значения и становится 3400. ( значения примерные, взял из головы для описания сути проблемы). Не могу понять где корень этого зла и как с ним бороться. Не буду загружать тему кодом, если будет необходимость, буду выкладывать по частям.
  9. Попробую оживить тему. Использую stm32f3 и HAL. Написал bootloader для прошивки из под PC, все работает. Но есть пару нюансов. При переходе в режим прошивки надо переконнектить устройство к РС потому что пропадает связь с COM портом. (точнее при повторной инициализации COM порта) Не могу понять как деинициализировать USB CDC в HAL. По идее он должен исчезнуть из списка оборудования в диспетчере устройств и заново появиться. Суть вопроса: как деинициализировать USB CDC под HAL, что бы он пропал из списка оборудования? Заметил такую вещь. Использую stm32f3discovery. Настроена как USB CDC. При подключении к PC определяется сом порт и нормально с ним работает, но если нажать кнопку ресет, то com порт в системе есть но работать с ним не получается (выдает ошибки) пока не переконнектить usb кабель.
  10. verlaty

    Прошивка Stm32 Через Usb

    Доброго дня всем. Использую в проекте STM32F303CB. Для настройки и прошивки использовал Discovery на STM32F3. Прошивал и через SWD, и через COM порт, и через родной USB. Для готового изделия написал GUI интерфейс на Visual Studio для настройки устройства. Теперь появилось желание через него же обновлять ПО (прошивать STM). Теперь суть вопроса: как реализовать обновление ПО через свою программу? (на подобие DfuSeDemo) Буду признателен за любую информацию, которая направит на путь истинный. Может какие нить исходники. Может ткните носом в даташит. p.s. В программировании не силен, поэтому если можно чуток разжевать информацию.
  11. verlaty

    Stm32: Cubemx+Uart_Dma

    Запустил UART в режим DMA circular. Слегка подправил свой код для работы в этом режиме, без постоянных запусков HAL_UART_Receive_DMA . Все проблемы снялись, все работает. Отдельное спасибо mail_robot за активную помощь и участие.
  12. verlaty

    Stm32: Cubemx+Uart_Dma

    Я так понимаю в последнем примере он в circular работает.
  13. verlaty

    Stm32: Cubemx+Uart_Dma

    тема изначально назвалась Cubemx + uart_dma. Заметил такую вещь. Один уарт у меня принимает пачки по 8 байт второй по 3. Тот который по 8 практически не зависает, а вот по 3 постоянно. Хотя все реализовано аналогично, на одной плате, на оном камне, но факт на лице.
  14. verlaty

    Stm32: Cubemx+Uart_Dma

    Да, надо найти причину, а не отключать проверки.
  15. verlaty

    Stm32: Cubemx+Uart_Dma

    В Кубе можно отключить overrun в конфигурации USART. Раз эта опция есть, значит ее можно тыкать.Вопрос на что это повлияет.
  16. verlaty

    Stm32: Cubemx+Uart_Dma

    Точно. Надо сначала очистить буфер. void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) { E_CODE = HAL_UART_GetError (huart); switch (E_CODE) { case HAL_UART_ERROR_ORE: __HAL_UART_FLUSH_DRREGISTER(huart); __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF); CLEARFL = HAL_UART_GetError (huart); break; } } Не прокатило
  17. verlaty

    Stm32: Cubemx+Uart_Dma

    Пробую сбрасывать флаг void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) { E_CODE = HAL_UART_GetError (huart); switch (E_CODE) { case HAL_UART_ERROR_ORE: __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF); CLEARFL = HAL_UART_GetError (huart); break; } сделал переменную CLEARFL для контроля Ну в общем не сбрасывает. Кто сталкивался с этой бедой?
  18. verlaty

    Stm32: Cubemx+Uart_Dma

    Кажется выловил ошибку. huart1.ErrorCode выдает 8. а это HAL_UART_ERROR_ORE ((uint32_t)0x00000008) /*!< Overrun error ORE — ошибка: переполнение входного буфера — приняты новые данные, а старые ещё не прочитаны во всяком случае есть куда капать. Буду разбираться. Если есть дельные советы - внимательно слушаю
  19. verlaty

    Stm32: Cubemx+Uart_Dma

    Ясно. Но я сейчас думаю как то проследить ошибки, статусы, флаги или еще чего там. Передача у меня идет нормально.
  20. verlaty

    Stm32: Cubemx+Uart_Dma

    Давай сначала. Эхо - это просто пустить UART через USB и смотреть в мониторе порта?
  21. verlaty

    Stm32: Cubemx+Uart_Dma

    Все правильно. Выше уже писал, что хал уже делает все эти проверки. Это уже просто от безысходности всякие варианты ищу. А ты опять дал понять что не зачем туда лезть. Спасибо. Голова уже квадратная стала. Надо думать как выявить причину, как отследить где затык.
  22. verlaty

    Stm32: Cubemx+Uart_Dma

    Хочу перенести обработку принятых байтов в void DMA1_Channel4_IRQHandler(void) { /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */ /* USER CODE END DMA1_Channel4_IRQn 0 */ HAL_DMA_IRQHandler(&hdma_usart1_tx); /* USER CODE BEGIN DMA1_Channel4_IRQn 1 */ /* USER CODE END DMA1_Channel4_IRQn 1 */ } Подскажите как правильно сделать обработку по окончанию приема ( не по половине)
  23. verlaty

    Stm32: Cubemx+Uart_Dma

    У меня скорость 19200. Тут вообще не должно быть проблем.
×
×
  • Создать...