Wasserati
Участник-
Постов
25 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о Wasserati
-
Звание
Участник
- День рождения 09.11.1992
-
Проблема с обработчиком прерываний
Wasserati ответил sith633 тема в ARM, 32bit
Если подумать, то согласен, что приведенный мной вариант не правильный. Возможность изменения статусных бит за время чтения-модификации-записи я не учел. -
Проблема с обработчиком прерываний
Wasserati ответил sith633 тема в ARM, 32bit
Я бы поспорил. Что-либо сбросить случайно второй вариант в принципе не может. А вот посмотрев даташит могу утверждать, что обе конструкции дадут идентичный эффект, тут разницы не будет, да. -
Проблема с обработчиком прерываний
Wasserati ответил sith633 тема в ARM, 32bit
Если тут сброс бита подразумевается: TIM2->SR = ~TIM_SR_UIF; то он не так делается, а так: TIM2->SR &= ~TIM_SR_UIF; В остальных местах та же ситуация. -
А у таймера есть разрешение генерировать события для DMA? Бит UDE в регистре DIER таймера должен быть установлен в единицу. Переключать DMA на DMA2 не нужно. Событие TIM4_UP привязано к Stream6 Cnannel 2 DMA1. На DMA2 оно просто работать не будет. Если так нужно DMA2 то стоит взять другой таймер, который может генерировать события именно для DMA2. Например TIM1 или TIM8.
-
Двусмысленно немного выразился, в итоге получилась путаница. У куба все библиотеки хранятся в отдельной папке которая так и называется "Repository", что я и написал. Про системы контроля версий как-то мысль даже в голову не пришла.
-
Если отдельно без куба, то вот например для 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. Куб я бы советовал поставить. Все актуальные версии заголовочных и прочих файлов только под него сейчас идут. Места он много не занимает, есть не просит. Сам за актуальностью библиотек следит.
-
Startup файл соответствующего мк можно из репозитория CubeMX взять. Там они в отдельной папочке лежат. Советую обновить все файлы от ST. А то какие-то уже очень старые версии файлов в приложенном проекте.
-
STM32F103 и сильный шум АЦП
Wasserati ответил Ruslan-maniak тема в ARM, 32bit
Максимальная частота тактирования АЦП - 14 МГц. Отсюда и могу быть проблемы. -
STM32F0 и FT232
Wasserati ответил Wasserati тема в ARM, 32bit
Спасибо всем за советы. Проблему пока что решил использовав кольцевой буфер. Изначально я использовал более запутанную схему буферов, поэтому перезагрузка DMA занимала довольно много времени, за которое USART успевал принять 2 лишних байта и поймать overrun. Неприятно что ST такую ситуацию не предусмотрело. -
STM32F0 и FT232
Wasserati ответил Wasserati тема в ARM, 32bit
Буферов на прием у меня и так несколько. DMA копирует данные в один из них. По заполнению буфера происходит перезагрузка DMA. Данные начинают копироваться уже в другой буфер. Проблема возникает как раз в при перезагрузке, так как она может произойти прямо в момент приема данных. Например, в текущем буфере есть 2 свободных байта места, а нужно принять данных на 10 байт. DMA принимает 2 байта в текущий буфер. Перезагружается. Принимает еще 8 байт в другой буфер. За время перезагрузки, USART ловит overrun. То есть сигнал RTS нужного эффекта не дает. На скриншоте именно момент перезагрузки показан. -
STM32F0 и FT232
Wasserati опубликовал тема в ARM, 32bit
Есть МК 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 неактивен? -
stm32vldiscovery определяется как флешка
Wasserati ответил qnx тема в ARM, 32bit
Установка "Connect under reset" ничем в данном случае не поможет, так как у обрезка программатора установленного на stm32vldiscovery попросту нету линии Reset. Данную процедуру можно провести только следующим способом: принудительно притянуть линию Reset МК к земле (на stm32vldiscovery для этого специальная кнопка есть черного цвета), запустить процесс подключения к МК в программе (ST-Linl Utility, Keil и пр.) и сразу же отпустить Reset. После этого произойдет подключение. В некоторых особо запущенных случаях, удерживать Reset нужно секунду-две. Ну и еще раз повторю, программатор софтом определяется, он просто не может подключиться к программируемому МК. Как выше заметили, это может происходить из-за неправильного подключения, отсутствия перемычек(любой из трех установленных на плате), либо, в худшем случае, программируемый МК уже мертв. -
stm32vldiscovery определяется как флешка
Wasserati ответил qnx тема в ARM, 32bit
Судя по всем скриншотам программатор определяется нормально. Есть проблемы с подключением к МК. Опишите более конкретно что подключается и как. С stm32VLDiscovery дело имел довольно давно, но насколько помню это плата определяется сразу и как внешний накопитель и как программатор. -
Для начала можно попробовать понять что вообще происходит при отключении: hardfault, зависание на определенном участке кода или еще что-то. Скорее всего авторами стека ситуация разрыва соединения не предусмотрена вообще.
-
Kabdim Спасибо, поправил. Если у кого есть рабочий пример программы передачи массива, поделитесь, пожалуйста.