Введение в протоколы обмена данными, I2C / TWI протокол

Поделиться
HTML-код
  • Опубликовано: 27 июл 2024
  • Лекция вводит понятие "протокола обмена данными" между микроконтроллером (микроконтроллерами) и периферийными устройствами. Протокол - это способ кодирования сообщений между ведущим и ведомым устройством, которые могут передаваться по ограниченному количество проводов. Работа с каждым устройством, работающим на том или ином протоколе обмена должна рассматриваться отдельно, так как упомянутые выше "сообщения" достаточно индивидуальны для каждого отдельно взятого устройства. В лекции рассматривается программная и аппаратная реализация протокола I2C или TWI. Рассматриваются примеры использования этого протокола, регистры МК для реализации аппаратного типа TWI.
    Тайм-коды:
    00:00 Введение
    00:22 Что такое протоколы обмена данными?
    01:52 Последовательные и параллельные протоколы
    03:10 Хардварный уровень TWI
    04:33 Временная диаграмма протокола TWI
    08:15 Использование TWI с датчиком температуры
    14:42 Моделируем датчик в Proteus
    15:47 Пишем программный TWI
    25:13 Демонстрация работы кода - программный TWI
    25:45 Аппаратные регистры TWI
    34:03 Пишем аппаратный TWI
    38:52 Демонстрация работы кода - аппаратный TWI
    40:08 Применение TWI протокола - расширители портов
    42:45 Пример расширителя портов на ARM
    44:40 Устройства, использующие TWI протокол
    44:54 Достоинства и недостатки TWI

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

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

    Спасибо за видео. Отличный канал.

  • @user-jl4pq5ib7f
    @user-jl4pq5ib7f 5 месяцев назад

    Вроде бы в c массив заканчивается NULL (после последнего элемента резервируется еще 1 байт), поэтому можно не передавать длину. Поправьте, если не прав

    • @michael_mmk
      @michael_mmk  5 месяцев назад +1

      Когда я передаю массив в функцию, я могу передать только адрес его первого элемента (указатель на массив) и в этом случае, у функции нет шансов узнать сколько байт занимает массив, поэтому мне нужно передать ещё и его длину, иначе есть шанс влезть в область памяти, не касающуюся интересующего нас массива. Массив типа строка заканчивается признаком конца строки ‘\0’, а массив вещественных чисел не имеет признака конца, насколько мне известно.

  • @user-jl4pq5ib7f
    @user-jl4pq5ib7f 5 месяцев назад +1

    Зачем нужен command byte? Он всегда 1 или это указание на инструкцию?

    • @michael_mmk
      @michael_mmk  5 месяцев назад

      Command byte в случае рассматриваемого датчика - это адрес его конфигурационного регистра, куда мы пишем настройки датчика температуры. В общем же случае - после старта и адреса слева, согласно методике TWI протокола, по линии мастером всегда передается адрес регистра слейва (этих регистров может быть больше одного, например у гироскопа-акселерометра mpu6050 их чёртова уйма), куда мастер будет писать биты (если выставлен признак записи после адреса слейва) или откуда будет читать биты (если выставлен признак чтения после адреса слейва). Короче в данном случае command byte - это либо конфигурационный регистр датчика температуры, либо предельные значения температуры, на которые должен срабатывать датчик. Вот, надеюсь, что стало немного понятнее.

    • @michael_mmk
      @michael_mmk  5 месяцев назад +1

      Command byte в случае рассматриваемого датчика - это адрес его конфигурационного регистра, куда мы пишем настройки датчика температуры. В общем же случае - после старта и адреса слева, согласно методике TWI протокола, по линии мастером всегда передается адрес регистра слейва (этих регистров может быть больше одного, например у гироскопа-акселерометра mpu6050 их чёртова уйма), куда мастер будет писать биты (если выставлен признак записи после адреса слейва) или откуда будет читать биты (если выставлен признак чтения после адреса слейва). Короче в данном случае command byte - это либо конфигурационный регистр датчика температуры, либо предельные значения температуры, на которые должен срабатывать датчик. Вот, надеюсь, что стало немного понятнее.

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

    А микросхемы должны питаться только от одного источника питания или можно от разных питать?

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

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

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

      @@michael_mmk пробовали так делать?