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

Wasserati

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о Wasserati

  • Звание
    Участник
    Участник
  • День рождения 09.11.1992
  1. Если подумать, то согласен, что приведенный мной вариант не правильный. Возможность изменения статусных бит за время чтения-модификации-записи я не учел.
  2. Я бы поспорил. Что-либо сбросить случайно второй вариант в принципе не может. А вот посмотрев даташит могу утверждать, что обе конструкции дадут идентичный эффект, тут разницы не будет, да.
  3. Если тут сброс бита подразумевается: TIM2->SR = ~TIM_SR_UIF; то он не так делается, а так: TIM2->SR &= ~TIM_SR_UIF; В остальных местах та же ситуация.
  4. А у таймера есть разрешение генерировать события для DMA? Бит UDE в регистре DIER таймера должен быть установлен в единицу. Переключать DMA на DMA2 не нужно. Событие TIM4_UP привязано к Stream6 Cnannel 2 DMA1. На DMA2 оно просто работать не будет. Если так нужно DMA2 то стоит взять другой таймер, который может генерировать события именно для DMA2. Например TIM1 или TIM8.
  5. Двусмысленно немного выразился, в итоге получилась путаница. У куба все библиотеки хранятся в отдельной папке которая так и называется "Repository", что я и написал. Про системы контроля версий как-то мысль даже в голову не пришла.
  6. Если отдельно без куба, то вот например для F0: https://my.st.com/content/my_st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-mcu-packages/stm32cubef0.license=1543601114301.product=STM32CubeF0.version=1.9.0.html Подобным образом и для других линеек мк. Правда качать сотни мегабайт данных все равно придется. Не могут ST не приложить пачку примеров использования под все возможные демоплаты, кучу всякой лишней документации и софта. Все нужное в папке Drivers/CMSIS. Куб я бы советовал поставить. Все актуальные версии заголовочных и прочих файлов только под него сейчас идут. Места он много не занимает, есть не просит. Сам за актуальностью библиотек следит.
  7. Startup файл соответствующего мк можно из репозитория CubeMX взять. Там они в отдельной папочке лежат. Советую обновить все файлы от ST. А то какие-то уже очень старые версии файлов в приложенном проекте.
  8. Максимальная частота тактирования АЦП - 14 МГц. Отсюда и могу быть проблемы.
  9. STM32F0 и FT232

    Спасибо всем за советы. Проблему пока что решил использовав кольцевой буфер. Изначально я использовал более запутанную схему буферов, поэтому перезагрузка DMA занимала довольно много времени, за которое USART успевал принять 2 лишних байта и поймать overrun. Неприятно что ST такую ситуацию не предусмотрело.
  10. STM32F0 и FT232

    Буферов на прием у меня и так несколько. DMA копирует данные в один из них. По заполнению буфера происходит перезагрузка DMA. Данные начинают копироваться уже в другой буфер. Проблема возникает как раз в при перезагрузке, так как она может произойти прямо в момент приема данных. Например, в текущем буфере есть 2 свободных байта места, а нужно принять данных на 10 байт. DMA принимает 2 байта в текущий буфер. Перезагружается. Принимает еще 8 байт в другой буфер. За время перезагрузки, USART ловит overrun. То есть сигнал RTS нужного эффекта не дает. На скриншоте именно момент перезагрузки показан.
  11. STM32F0 и FT232

    Есть МК STM32F030C8 подключенный к ПК через FT232. Настройки USART: 8 бит данных, 2 стоп бита, скорость - 3М, RTS/CTS включены. Чего я ожидал от Flow Control. USART принимает байт, устанавливает флаг RXNE, устанавливает на выходе RTS 1. FT232 приостанавливает передачу пока на линии RTS не установится 0. Что получается в действительности. USART принимает байт, устанавливает флаг RXNE, устанавливает на выходе RTS 1. FT232 передает еще один байт, а уже потом приостанавливает передачу пока на линии RTS не установится 0. Как итог, USART ловит overrun ошибку. DMA, который работает с RX линией, по этой причине, периодически виснет. Скриншот этой ситуации из лог. анализатора. 1. Flow Control так и должен работать, или где-то есть ошибка? 2. Как избежать потери данных в этом случае? Вручную забирать данные из RX регистра, пока DMA неактивен?
  12. Установка "Connect under reset" ничем в данном случае не поможет, так как у обрезка программатора установленного на stm32vldiscovery попросту нету линии Reset. Данную процедуру можно провести только следующим способом: принудительно притянуть линию Reset МК к земле (на stm32vldiscovery для этого специальная кнопка есть черного цвета), запустить процесс подключения к МК в программе (ST-Linl Utility, Keil и пр.) и сразу же отпустить Reset. После этого произойдет подключение. В некоторых особо запущенных случаях, удерживать Reset нужно секунду-две. Ну и еще раз повторю, программатор софтом определяется, он просто не может подключиться к программируемому МК. Как выше заметили, это может происходить из-за неправильного подключения, отсутствия перемычек(любой из трех установленных на плате), либо, в худшем случае, программируемый МК уже мертв.
  13. Судя по всем скриншотам программатор определяется нормально. Есть проблемы с подключением к МК. Опишите более конкретно что подключается и как. С stm32VLDiscovery дело имел довольно давно, но насколько помню это плата определяется сразу и как внешний накопитель и как программатор.
  14. Для начала можно попробовать понять что вообще происходит при отключении: hardfault, зависание на определенном участке кода или еще что-то. Скорее всего авторами стека ситуация разрыва соединения не предусмотрена вообще.
  15. Kabdim Спасибо, поправил. Если у кого есть рабочий пример программы передачи массива, поделитесь, пожалуйста.
×
×
  • Создать...