i2c:start

I2C

Так с помощью осциллографа DSO138 возможно посмотреть протокол I2C.

GIF сделана с помощью этого

У апельсинки две I2C шины:

sudo i2cdetect -l
i2c-0   i2c             twi0                                    I2C adapter
i2c-1   i2c             twi1                                    I2C adapter

Подключаем осциллограф к выводам GND и SDA шины 0. Распиновка

Затем запускаем бесконечный опрос устройства 0x3c на шине 0:

while true; do; sudo i2cdump -y -r 0x00-0xff 0 0x3c; sleep 0.05; done

По схеме ниже:

  • 1-3 выставляем переключатели
  • 4 выставляем интервал 10 мс
  • запускаем в автоматическом режиме: 5 должен быть в AUTO - получаем пульсацию как на гифке

Чтобы «поймать кадр», проделываем следующее:

  • прекращаем выполнение i2cdump
  • 5 выставляем в SIGN
  • 6 порог срабатывания ставим -0,12В, или другое очень малое значение
  • 7 кнопкой нажимаем выбираем Running
  • делаем единичный опрос: sudo i2cdump -y -r 0x00-0xff 0 0x3c

В этот момент осциллограф должен схватить кадр:

Иногда он не успевает это сделать, поэтому меняем интервал 4 на 50 мс, а также проверяем порог срабатывания, который должен быть в районе -0,12В. При большем значении происходит запаздывание, и на захваченном кадре будет прямая полоса.

Частота «скачет» от 21кГц до 62 кГц, сказывается непродолжительное измерение. Реальная рабочая частота в районе должна быть в районе 100 кГц.

Для нулевой шины:

sudo i2cdetect -y 0

Контроллер i2c имеет адрес 0x48. Некоторые устройства i2c также могут его использовать, поэтому не будут видны. Например, ads1015 можно расположить на 0x48-0x4B, и если подсоединить ADDR к GND, этого устройства не будет видно.

tag>ads1015

Этими командами можно получить значения:

sudo i2cdump -y -r 0x00-0xff 0 0x49
sudo i2cget -y 0 0x48 0x40
  • i2c/start.txt
  • Последнее изменение: 2017/10/25 20:40
  • — admin