Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| boards:nms-uq7-komdiv-mk:peripherial:start [2026/07/28 11:38] – Илья Ковальчук | boards:nms-uq7-komdiv-mk:peripherial:start [2026/07/30 06:51] (текущий) – [Ethernet] Артем Слепов | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== Использование периферии Q7_KOMDIV_MK ====== | ====== Использование периферии Q7_KOMDIV_MK ====== | ||
| + | |||
| + | На странице приведены примеры настройки и проверки периферийных интерфейсов модуля '' | ||
| + | |||
| + | * CAN | ||
| + | * UART; | ||
| + | * I2C; | ||
| + | * SPI; | ||
| + | * SATA; | ||
| + | * RTC. | ||
| + | |||
| + | |||
| + | **Скрипты для тестирования доступны в [[https:// | ||
| + | |||
| ===== CAN ===== | ===== CAN ===== | ||
| Строка 5: | Строка 18: | ||
| Пример CAN loopback: | Пример CAN loopback: | ||
| - | ===== Подключение ===== | + | ==== Подключение ==== |
| + | |||
| + | Соединить CAN интерфейсы следующим образом: | ||
| < | < | ||
| Строка 13: | Строка 28: | ||
| </ | </ | ||
| - | ===== Настройка ===== | + | {{komdiv_can_connection.jpeg? |
| - | < | + | ==== Настройка ==== |
| + | |||
| + | Перед изменением скорости интерфейсы необходимо выключить: | ||
| + | |||
| + | < | ||
| ip link set can0 down | ip link set can0 down | ||
| ip link set can0 type can bitrate 1000000 restart-ms 100 | ip link set can0 type can bitrate 1000000 restart-ms 100 | ||
| Строка 26: | Строка 45: | ||
| Скорость на обоих интерфейсах должна совпадать. | Скорость на обоих интерфейсах должна совпадать. | ||
| - | ===== Приём | + | ==== Приём ==== |
| - | < | + | Приём всех кадров: |
| + | |||
| + | < | ||
| candump can0 | candump can0 | ||
| </ | </ | ||
| - | Только | + | Приём только |
| - | < | + | < |
| candump ' | candump ' | ||
| </ | </ | ||
| - | ===== Отправка | + | ==== Отправка ==== |
| - | < | + | Отправка кадра через '' |
| + | |||
| + | < | ||
| cansend can1 123# | cansend can1 123# | ||
| </ | </ | ||
| Строка 46: | Строка 69: | ||
| Где '' | Где '' | ||
| - | ===== Проверка состояния ===== | + | ==== Остановка ==== |
| - | < | + | < |
| - | ip -details -statistics | + | ip link set can0 down |
| + | ip link set can1 down | ||
| </ | </ | ||
| - | Нормальное состояние: | + | ==== Проверка состояния ==== |
| + | |||
| + | < | ||
| + | |||
| + | Нормальное состояние | ||
| + | |||
| + | < | ||
| + | |||
| + | В статистике отображаются: | ||
| + | |||
| + | количество принятых пакетов — '' | ||
| + | |||
| + | количество отправленных пакетов — '' | ||
| + | |||
| + | ошибки приёма — '' | ||
| + | |||
| + | ошибки передачи — '' | ||
| + | |||
| + | ===== UART ===== | ||
| + | |||
| + | ==== Подключение ==== | ||
| + | |||
| + | Для loopback соедините: | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Настройка ==== | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Приём ==== | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Отправка ==== | ||
| + | |||
| + | В другом окне терминала: | ||
| + | |||
| + | < | ||
| + | |||
| + | При loopback отправленная строка должна появиться в окне приёма. | ||
| + | |||
| + | ===== I2C ===== | ||
| + | |||
| + | Пример работы с VL53L0X: | ||
| + | |||
| + | ==== Просмотр шин ==== | ||
| < | < | ||
| - | state ERROR-ACTIVE | + | i2cdetect |
| + | ls /dev/i2c-* | ||
| </ | </ | ||
| - | Смотрите | + | ==== Поиск устройств ==== |
| - | ===== Остановка ===== | + | Для шины '' |
| - | < | + | < |
| - | ip link set can0 down | + | i2cdetect -y 2 |
| - | ip link set can1 down | + | |
| </ | </ | ||
| + | VL53L0X обычно доступен по адресу '' | ||
| - | ===== UART ===== | + | ==== Чтение регистра |
| - | ===== I2C ===== | + | < |
| + | i2cget -y 2 0x29 0xC0 | ||
| + | </ | ||
| + | |||
| + | Где: | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ==== Запись регистра | ||
| + | |||
| + | < | ||
| + | i2cset -y 2 0x29 0x00 0x01 | ||
| + | </ | ||
| + | |||
| + | ==== Чтение нескольких байтов ==== | ||
| + | |||
| + | < | ||
| + | i2ctransfer -y 2 w1@0x29 0x14 r12 | ||
| + | </ | ||
| + | |||
| + | Команда указывает датчику начать чтение с регистра 0x14, после чего получает 12 последовательных байт данных. | ||
| + | |||
| + | |||
| + | В качестве примера используется лазерный дальномер VL53L0X. | ||
| + | |||
| + | ==== Подключение VL53L0X ==== | ||
| + | |||
| + | {{komdiv_i2c_connection.jpeg? | ||
| + | |||
| + | ==== Чтение VL53L0X ==== | ||
| + | |||
| + | < | ||
| + | chmod +x i2c-test.sh | ||
| + | ./ | ||
| + | </ | ||
| + | |||
| + | Где: | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Вывод скрипта: | ||
| + | |||
| + | < | ||
| + | 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 | ||
| + | </ | ||
| + | |||
| + | ===== SPI ===== | ||
| + | |||
| + | В качестве примера используется SPI Flash, подключённая к '' | ||
| + | |||
| + | При подключении к '' | ||
| + | |||
| + | |||
| + | ==== Подключение ==== | ||
| + | |||
| + | {{komdiv_spi_connection.jpeg? | ||
| + | |||
| + | ==== Конфигурация ==== | ||
| + | |||
| + | Для работы с устройствами SPI необходимо загрузить модуль ядра: | ||
| + | |||
| + | < | ||
| + | modprobe spidev | ||
| + | </ | ||
| + | |||
| + | ==== Определение SPI Flash ==== | ||
| + | |||
| + | < | ||
| + | flashrom -p linux_spi: | ||
| + | </ | ||
| + | |||
| + | Пример успешного результата: | ||
| + | |||
| + | < | ||
| + | flashrom v1.5.1 on Linux 6.1.135 (mips64) | ||
| + | flashrom is free software, get the source code at https:// | ||
| + | |||
| + | Found Macronix flash chip " | ||
| + | === | ||
| + | This flash part has status UNTESTED for operations: WP | ||
| + | The test status of this chip may have been updated in the latest development | ||
| + | version of flashrom. If you are running the latest development version, | ||
| + | please email a report to flashrom@flashrom.org if any of the above operations | ||
| + | work correctly for you with this flash chip. Please include the flashrom log | ||
| + | file for all operations you tested (see the man page for details), and mention | ||
| + | which mainboard or programmer you tested in the subject line. | ||
| + | You can also try to follow the instructions here: | ||
| + | https:// | ||
| + | Thanks for your help! | ||
| + | No operations were specified. | ||
| + | </ | ||
| ===== SATA ===== | ===== SATA ===== | ||
| + | |||
| + | Интерфейс SATA мультиплексируется между двумя каналами. Выбор активного канала выполняется через GPIO с помощью скрипта '' | ||
| + | |||
| + | Выбор канала 0: | ||
| + | |||
| + | < | ||
| + | ./gpio.sh sata_select 0 | ||
| + | </ | ||
| + | |||
| + | Выбор канала 1: | ||
| + | |||
| + | < | ||
| + | ./gpio.sh sata_select 1 | ||
| + | </ | ||
| + | |||
| + | После выбора канала проверить обнаружение накопителя можно командой: | ||
| + | |||
| + | < | ||
| + | |||
| + | Пример успешного обнаружения SATA-накопителя: | ||
| + | |||
| + | < | ||
| + | major minor # | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | 31 0 640 mtdblock0 | ||
| + | 31 1 64 mtdblock1 | ||
| + | 31 2 64 mtdblock2 | ||
| + | 31 3 64 mtdblock3 | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | В данном примере накопитель определён как ''/ | ||
| + | |||
| + | Имя устройства может отличаться в зависимости от порядка обнаружения накопителей. | ||
| + | |||
| + | ===== RTC ===== | ||
| + | |||
| + | В дереве устройств определена I2C RTC. | ||
| + | |||
| + | При первом запуске системное время может быть установлено на 01.01.1970, а RTC ещё не будет содержать корректного значения. | ||
| + | |||
| + | Пример установки системного времени: | ||
| + | |||
| + | < | ||
| + | date -s " | ||
| + | </ | ||
| + | |||
| + | Запись системного времени в RTC: | ||
| + | |||
| + | < | ||
| + | hwclock -w | ||
| + | </ | ||
| + | |||
| + | Просмотр текущего времени RTC: | ||
| + | |||
| + | < | ||
| + | hwclock -r | ||
| + | </ | ||
| + | |||
| + | При наличии батарейки записанные дата и время сохраняются после отключения питания. | ||
| + | |||
| + | |||
| + | |||