I2C
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 кГц.
Ищем устройства I2C
Для нулевой шины:
sudo i2cdetect -y 0
0x48
. Некоторые устройства i2c также могут его использовать, поэтому не будут видны. Например, ads1015
можно расположить на 0x48-0x4B
, и если подсоединить ADDR
к GND
, этого устройства не будет видно.
Этими командами можно получить значения:
sudo i2cdump -y -r 0x00-0xff 0 0x49 sudo i2cget -y 0 0x48 0x40