STM32F4. USART - ПРОБЛЕМА

Поділитися
Вставка
  • Опубліковано 16 лис 2024

КОМЕНТАРІ • 25

  • @neustanovlennoe_litso
    @neustanovlennoe_litso 10 місяців тому +2

    Зачем вручную прописывать define с адресами регистров, если это в CMSIS уже сделано? Для работы с регистром, к нему можно обращаться просто по названию.
    Я сам только начинаю программировать stm32, но как мне кажется с CMSIS работать намного удобнее, при этом вы так же работаете напрямую с регистрами

    • @itsamorodok
      @itsamorodok  10 місяців тому

      Начинающим полезнее писать именно самим, чтобы замечать и понимать тонкости работы мк. Лично мне "вошло" именно после того как научился писать в дефайнах полный путь к регистрам. Со смещениями, значениями по умолчанию и т.д. Люди разные и у всех своя история.

  • @юрий-я2с2ч
    @юрий-я2с2ч 10 місяців тому +1

    в 5 пункте вы не верно перевели число из десятичного в h код . Большое спасибо за подробное объяснение.

    • @itsamorodok
      @itsamorodok  10 місяців тому

      Напишите как правильно, если считаете что написано неверно.
      Скорость 0х683 (исправленный на 0х834 позже или наоборот) состоит из двух частей (см. RM0090): 68 - это целая часть, а 3 - дробная. Все там верно написано, иначе опыт передачи был бы неудачен. В итоге, увидите, удается передать байт.

  • @sergheik9582
    @sergheik9582 10 місяців тому +1

    познавательное видео! планирует ли автор все же снять туториал по работе с мк

    • @itsamorodok
      @itsamorodok  10 місяців тому +1

      Материалы типа курса для начинающих уже есть. Никак не выпущу на рынок. В ютубе выкладывать нет смысла: надо на жизнь как-то зарабатывать, ютуб давно перестал платить.

    • @sergheik9582
      @sergheik9582 10 місяців тому

      @@itsamorodok а где вообще их можно приобрести

    • @itsamorodok
      @itsamorodok  10 місяців тому

      Когда появятся, то можно увидеть здесь: abdullinautoschool.ru/

  • @ЮрийМороз-л4ц
    @ЮрийМороз-л4ц 10 місяців тому

    USART->DR это не один регистр, а два. Записываемое значение попадает в регистр передатчика, а считываемое считывается из регистра приемника. Т.е. отладчиком нельзя увидеть регистр передатчика.

    • @itsamorodok
      @itsamorodok  10 місяців тому

      Отдадчиком вообще нельзя увидеть ни один регистр. Отладчик видит только то что есть на пинах. А на пинах лишь некое подобие, отражение или образ того что происходит в регистре.
      Насчет двух регистров вы правы, если смотреть на это аппаратно. А с точки зрения программиста DR воспринимается как один регистр, так как и пишем, и считываем с одного и того же регистра - DR, так как переключение на принимающий и передающий регистры происходит аппаратно, программист на это переключение напрямую не влияет. Мы же не пишем "считать с TDR, а записывать в RDR", мы и пишем и считываем с DR.

    • @ЮрийМороз-л4ц
      @ЮрийМороз-л4ц 10 місяців тому

      Да при чем тут пины. Отладчик - это такой же модуль на кристалле как ядро CPU или DMA и к устройствам он ходит по тем же шинам и с теми же обычно побочными эффектами. Вы еще I2c аппаратный отладчиком поотлаживать попробуйте :) Отладчик там будет все ломать, генерить лишние эвенты и т.п. Подключайте осциллограф и смотрите.@@itsamorodok

    • @itsamorodok
      @itsamorodok  10 місяців тому

      Какой практический смысл этого опуса?

  • @pavelboboshkin3898
    @pavelboboshkin3898 10 місяців тому

    Микроконтроллер напрямую к USART подключали или через драйвер типа max232?

    • @itsamorodok
      @itsamorodok  10 місяців тому

      Это отладочная плата, с установленными датчиками. Хотя пины портов и выведены к штекерам, к некоторым из них параллельно подключены те самые датчики/защитные м/с и т.п. USART конечно подключал через ТТЛ-конвертер.

    • @pavelboboshkin3898
      @pavelboboshkin3898 10 місяців тому

      @@itsamorodok , какой ещё ТТЛ конвертор? У него название есть? Может быть драйвер интерфейса?

    • @itsamorodok
      @itsamorodok  10 місяців тому

      Например, USB-TTL CH340

    • @pavelboboshkin3898
      @pavelboboshkin3898 10 місяців тому

      @@itsamorodok , тогда по схемотехнике, похоже, всё корректно. Остаётся предложить использовать логический анализатор, чтобы посмотреть какие временные диаграммы сигналов txd и rxd. А я, например, вместо логического анализатора использую сам микроконтроллер. С помощью DMA, запускающегося от таймера читаю состояние выводов GPIO того порта, где расположен usart, и складываю в массив в оперативке. Запускаю это под отладчиком, копирую массив в excel и строю там графики. На контроллерах F0, F1, F4 это работает, а на G0, L0, C0 - нет, так как у последних DMA не подключен к GPIO. На G0 при отладке интерфейса I2C использовал другой трюк: входы данных двух интерфейсов SPI соединил с выводами sda и scl (физически, при разводке платы). Один SPI работает в режиме master, второй - slave. Выводы SCK обоих интерфейсов тоже соединены. И для запуска всего этого потребовалось ещё 3 канала DMA. Два принимают данные, третий передаёт и запускает весь процесс. Кстати, вариант с DMA+GPIO позволяет смотреть не только состояния GPIO, но и регистра флагов отлаживаемого интерфейса, чего ни один логический анализатор сделать не может.

    • @itsamorodok
      @itsamorodok  10 місяців тому

      Я так и делал. Есть китайский логический анализатор, работающий с разными интерфейсами.

  • @dmiz2280
    @dmiz2280 10 місяців тому

    Здравствуйте, не понятна конфигурация в программе STOP бита а регистре USART_CR2 ( бит 13), там должен быть 0 согласно -RM0008? для 1 стоп бита

    • @itsamorodok
      @itsamorodok  10 місяців тому +1

      Так и есть. На видео 13-й бит у меня ошибочно выставлен в 1. В программе, хоть и ошибочно (параллельно учил язык Си) я пытался выставить 13-й бит в 0. Так как по умолчанию этот бит в нуле, то мои ошибки особо не повредили. Это видео чуть ли не 5-летней давности, поэтому шибок в них хоть отбавляй. Важно это учитывать.
      У STM32F4 RM0090, RM0008 - это у 103-й серии.

    • @VasyaPupkinus
      @VasyaPupkinus 8 місяців тому

      @@itsamorodok Добрый день. Если видосу уже больше пяти лет, то предположу что проблему вы решили уже? В чём она была ? тактирование Мк ?

    • @itsamorodok
      @itsamorodok  8 місяців тому

      ​@@VasyaPupkinus вы про usart? В отладочных платах, особенно типа discovery, помимо микроконтроллера установлены уже подключенные к ней элементы (светодиоды, датчики и т.п.). На том usart, с которым были проблемы, тоже висели резисторы и защитные диоды. Вот они и мешали обмену данными.

    • @VasyaPupkinus
      @VasyaPupkinus 8 місяців тому

      @@itsamorodok Я купил недавно китайскую отладку stm32h723 , 100 ногий чип но наверное больше половины пинов к чему то да подключено. на ней есть Экранчик, камера , две флешки , сд карта, usb тайп си. Постоянно нужно на схему поглядывать. И удобно и не очень

    • @itsamorodok
      @itsamorodok  8 місяців тому

      Плата на то и отладочная, чтобы на ней тренироваться. А если плата изготовлено другими, то изучить схему это первое дело. Правда, навороченные платы так легко и не разлядишь по неопытности. С опытом уже привыкаешь.