Это старая версия документа!
Пример CAN loopback:
Соединить CAN интерфейсы следующим образом:
CAN0_H --- CAN1_H CAN0_L --- CAN1_L GND --- GND
Перед изменением скорости интерфейсы необходимо выключить:
ip link set can0 down ip link set can0 type can bitrate 1000000 restart-ms 100 ip link set can0 up ip link set can1 down ip link set can1 type can bitrate 1000000 restart-ms 100 ip link set can1 up
Скорость на обоих интерфейсах должна совпадать.
Приём всех кадров:
candump can0
Приём только кадров с идентификатором 123:
candump 'can0,123:7FF'
Отправка кадра через can1:
cansend can1 123#1122334455667788
Где 123 — CAN ID, после # идут данные.
ip link set can0 down ip link set can1 down
ip -details -statistics link show can0
Нормальное состояние интерфейса:
state ERROR-ACTIVE bitrate 1000000
В статистике отображаются:
количество принятых пакетов — RX packets;
количество отправленных пакетов — TX packets;
ошибки приёма — RX errors;
ошибки передачи — TX errors.
Для loopback соедините:
TX --- RX
stty -F /dev/ttyS1 115200 raw -echo
cat /dev/ttyS1
В другом окне терминала:
printf 'UART test' > /dev/ttyS1
При loopback отправленная строка должна появиться в окне приёма.
Пример работы с VL53L0X:
i2cdetect -l ls /dev/i2c-*
Для шины i2c-2:
i2cdetect -y 2
VL53L0X обычно доступен по адресу 0x29.
i2cget -y 2 0x29 0xC0
Где:
2 — номер I²C-шины;0x29 — адрес устройства;0xC0 — адрес регистра.i2cset -y 2 0x29 0x00 0x01
i2ctransfer -y 2 w1@0x29 0x14 r12
Команда указывает датчику начать чтение с регистра 0x14, после чего получает 12 последовательных байт данных.
chmod +x i2c-test.sh ./i2c-test.sh 2 20
Где:
2 — номер I²C-шины;20 — количество измерений.Вывод скрипта:
Distance 1: 87 mm Distance 2: 65 mm Distance 3: 71 mm Distance 4: 68 mm Distance 5: 74 mm Distance 6: 65 mm Distance 7: 74 mm Distance 8: 104 mm Distance 9: 122 mm Distance 10: 169 mm Distance 11: 281 mm Distance 12: 364 mm Distance 13: 298 mm Distance 14: 185 mm Distance 15: 112 mm Distance 16: 89 mm Distance 17: 76 mm Distance 18: 69 mm Distance 19: 65 mm Distance 20: 70 mm