STM32. CMSIS. Урок#06: I2C. Теория. Сканер I2C адресов. Отправка и прием данных. MemWrite, MemRead.

Поделиться
HTML-код
  • Опубликовано: 3 авг 2024
  • Привет друзья! Вот уже 2 года, как я изучаю STM32.
    Самое время, после опыта работы с библиотекой HAL, когда мы уже более менее ознакомились с периферией микроконтроллера, начать осваивать его на низкоуровневой библиотеке CMSIS.
    В седьмом уроке мы настроим I2C. Научимся настраивать его. Разберемся, как принимать и отправлять данные. Интерфейс сложный. Надеюсь, что смог донести информацию доступно.
    00:00 Введение
    00:15 Теория по i2c
    15:02 Оборудование для тестов. На чем будем тренироваться.
    16:11 Инициализация i2c. Регистры.
    41:48 Функция сканирования адресов устройств на шине i2c. Таймаут(ВАЖНО!)
    52:38 Функция передачи данных
    59:30 Функция приема данных
    01:06:17 Функция записи в память по указанному адресу
    01:09:45 Функция чтения из памяти по указанному адресу
    01:14:00 Тестирование FastMode. Сравним скорости.
    Материалы из урока: github.com/Solderingironspb/S...
    Библиотека по AT24C128: • EEPROM AT24Cxx. Подклю...
    Мои заметки по CMSIS:github.com/Solderingironspb/S...
    Группа вконтакте: solderingiron.stm32
    ЯндексДзен: dzen.ru/id/622208eed2eb4c6d0c...
  • НаукаНаука

Комментарии • 33

  • @the_inevitability_of_stupidity
    @the_inevitability_of_stupidity 3 месяца назад

    Это лучшие уроки в мире! Вы преподаватель от бога! Спасибо огромнейшее!

  • @ciklomat
    @ciklomat Год назад

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

    • @Solderingironspb
      @Solderingironspb  Год назад

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

  • @Slavken
    @Slavken Год назад +1

    Спасибо! Бесценный материал, случайно наткнулся на этот урок. Смотрю все уроки с начала, очень полезно и познавательно. Прекрасная работа.

  • @user4586_1
    @user4586_1 4 месяца назад

    Привет!
    Вы проделали огромную работу!
    Супер уроки для начинающих.
    Спасибо.

  • @user-hk1xl4ee1e
    @user-hk1xl4ee1e Год назад +1

    Олег молодец, супер, очень познавательно, все очень доступно и полезно.

  • @avr_stm_pro2955
    @avr_stm_pro2955 Год назад +1

    С интересом просмотрел материал , спасибо 👍

  • @user-bb6ym1bo3h
    @user-bb6ym1bo3h Год назад +1

    Огромное спасибо за ваш труд!

  • @AlexRootx
    @AlexRootx Год назад

    Молодчага, Олег! Как всегда, грамотная подача материала! Лайк за проделанную работу! И да, еще раз поздравляю тебя с БРАКОСОЧЕТАНИЕМ!!!

  • @OpenFrimeTVcom
    @OpenFrimeTVcom Год назад

    отличный материал. да и еще на час)

  • @serggorod1423
    @serggorod1423 Год назад

    На 47:00 остановился. Чтоб не забыть!
    Эклипс затмило, пошол делать пере_выкат солнца вручную!

  • @user-yg4mu7rm7k
    @user-yg4mu7rm7k Год назад

    Качество контента растет)

  • @serggorod1423
    @serggorod1423 Год назад

    Good explanation !

  • @gin87100
    @gin87100 Год назад

    Урок топ! Спасибо! Но вот аск (ак) и буси(бизи) режет ухо).

  • @user-cm9nh5hv7w
    @user-cm9nh5hv7w Год назад

    Для ознакомления прям то, что нужно. Спасибо автору, что делится знаниями. Предложенный вариант обмена хорош для обучения, но I2C - медленный протокол, ждать в цикле окончания передачи/приёма данных слишком расточительно. В реальном проекте, нужно прерывания использовать.
    P.S. Пересмотрел несколько видео, немного режет слух как вы читаете слово busy, правильно его произносить как [бизи]. Я без претензий, сам не так давно взялся за английский. Вот тоже поделюсь знаниями :-)

  • @user-du2bz8ml9h
    @user-du2bz8ml9h Год назад

    Очень крутая подача материала, каждый ролик посмотрел. Буквально вчера гуглил тему i2c на CMSIS, и там были «знатоки», которые могли лишь тыкать лицом в референс мануал, а толку со спроса нету. Слежу за тобой с самого начала, спасибо за проделанный труд. Если есть возможность добавить бусти или патреон, где твои труды будут оплачиваться и, возможно, будет чаще материал выходить(🤞) - буду первым подписчиком. Ещё раз спасибо :)

  • @svbHiTek
    @svbHiTek 6 месяцев назад

    Перевожу для себя референс мануал, нашел способ как разблокировать этот PDF файл, программу для редактирования, а так же неплохой переводчик с ИИ, теперь стало еще удобнее, если интересно могу поделиться информацией.

    • @Solderingironspb
      @Solderingironspb  6 месяцев назад

      Расскажите, интересно узнать Ваш опыт.

    • @svbHiTek
      @svbHiTek 6 месяцев назад

      @@Solderingironspb особо чего то сверхестественного нет, нашел сайт, на который можно закинуть PDF, и снять защиту от редактирования, затем переводил, так же с помощью онлайн переводчика, меня его качество порадовало, плюс позволяет подбирать смысл фраз после перевода, сами PDF редактировал этой программой Master PDF Editor, она на русском, жаль ссылки в комментариях нельзя размещать, ни сколько не реклама, просто сейчас развелось очень много софта, запутаться можно.

  • @alche74
    @alche74 Год назад

    Привет. Раскажи про DBGMCU. Важная информация, а толком не нашел на русском.

  • @OpenFrimeTVcom
    @OpenFrimeTVcom Год назад

    У вас там беда с комментариями в проекте, пока разобрался. //Если устройство не отозвалось, прилетит 1 в I2C_SR1_AF вот это во многих местах неправильно

  • @intelektum
    @intelektum Год назад

    Все как всегда отлично.
    Но вот новая версия проги под анализатор, все же ужасная, так и не смог к ней привыкнуть.

    • @Solderingironspb
      @Solderingironspb  Год назад

      да я тоже не могу к ней привыкнуть, но есть в ней один плюс. Ее можно в бок экрана прилепить и на пол экрана сделать)

  • @pavelmokrov710
    @pavelmokrov710 Год назад

    Отличное видео.Не сочтите за наглость ,но можно сделать сканер адреса I2C c выводом на монитор UART?

    • @Solderingironspb
      @Solderingironspb  Год назад

      могу...но зачем?) все же в уроке есть. Вы этот сканер можете сами сделать за несколько минут.

  • @svbHiTek
    @svbHiTek 6 месяцев назад

    Эх, встрял на I2C, примеры от F103 не подходят, регистры разные и алгоритм слегка другой используется в F030F4. Да и логический анализатор надо, что бы смотреть что на линии творится, есть простенький дешевый, но он на работе, а себе заказал с частотой до 400МГц, он еще едет

    • @Solderingironspb
      @Solderingironspb  6 месяцев назад +1

      Без логического анализатора вообще очень сложно работать с железом. Даже если что-то заработало - не факт, что заработало правильно. Тот же HAL часто ногами дергает на там, где не нужно.

    • @svbHiTek
      @svbHiTek 6 месяцев назад

      @@Solderingironspb Первый день как вышел на работу после праздников, подключил анализатор, а у меня вообще на линии мертво. Разбираться не получилось сразу, озадачили, но возьму его домой и буду посмотреть. Хотя нашел массу примеров под мой камень, инициализация у меня получилась как и в остальных примерах, да и остальное в общем то такое же, буду разбираться.

    • @svbHiTek
      @svbHiTek 6 месяцев назад

      @@Solderingironspb Писать код ночами не лучшее затея)))), в инициализации указал не тот порт, GPIOB в место GPIOA, ппц, а я на самих битах регистров зрение сломал))), анализатор показал что у меня ножки вообще не але)))

  • @alinalevina3814
    @alinalevina3814 Год назад

    Здравствуйте, Олег. Заюзал очередную вашу библиотеку, все работает. Даже пришло немного понимание происходящего. Режим переделать вашу же библиотеку для lcd1602, заменив в ней функцию HAL_I2C_Master_Transmit на вашу CMSIS_I2C_Data_Transmit, с заменой адресов . Но ругается и дисплей не хочет инициализироваться. Не подскажите в чём может быть проблема?

    • @Solderingironspb
      @Solderingironspb  Год назад

      Добрый день! А на что ругается?

    • @alinalevina3814
      @alinalevina3814 Год назад

      @@Solderingironspb добрый день. В общем сам половину допетрил. При замене hal овской функции на CMSIS_I2C_DATA_TRANSMIT я не указал прототип данной функции в файле lcd1602_i2c_lib. После этого дисплей стал инициароваться. Но в логическом анализаторе он долбит постоянно на 27 адрес и все, на экране ничего не выводится, хотя я реализовал вывод массива символа. В халовском варианте все работает. И второй момент. Решил реализовать через цикл for ( i=0; i