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

Поделиться
HTML-код
  • Опубликовано: 17 окт 2024

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

  • @alform2573
    @alform2573 2 года назад +1

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

  • @МаксимРябцев-п9с
    @МаксимРябцев-п9с 7 месяцев назад +1

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

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

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

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

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

  • @МаксимРябцев-п9с
    @МаксимРябцев-п9с 7 месяцев назад

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

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

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

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

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

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

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

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

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