Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| boards:nms-uq7-komdiv-mk:peripherial:start [2026/07/28 11:45] – Илья Ковальчук | 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 ===== | ||
| Строка 14: | Строка 27: | ||
| GND --- GND | GND --- GND | ||
| </ | </ | ||
| + | |||
| + | {{komdiv_can_connection.jpeg? | ||
| ==== Настройка ==== | ==== Настройка ==== | ||
| Строка 30: | Строка 45: | ||
| Скорость на обоих интерфейсах должна совпадать. | Скорость на обоих интерфейсах должна совпадать. | ||
| - | ==== Приём | + | ==== Приём ==== |
| Приём всех кадров: | Приём всех кадров: | ||
| Строка 72: | Строка 87: | ||
| количество принятых пакетов — '' | количество принятых пакетов — '' | ||
| + | |||
| количество отправленных пакетов — '' | количество отправленных пакетов — '' | ||
| + | |||
| ошибки приёма — '' | ошибки приёма — '' | ||
| + | |||
| ошибки передачи — '' | ошибки передачи — '' | ||
| ===== UART ===== | ===== UART ===== | ||
| + | |||
| + | ==== Подключение ==== | ||
| + | |||
| + | Для loopback соедините: | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Настройка ==== | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Приём ==== | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Отправка ==== | ||
| + | |||
| + | В другом окне терминала: | ||
| + | |||
| + | < | ||
| + | |||
| + | При loopback отправленная строка должна появиться в окне приёма. | ||
| ===== I2C ===== | ===== I2C ===== | ||
| + | |||
| + | Пример работы с VL53L0X: | ||
| + | |||
| + | ==== Просмотр шин ==== | ||
| + | |||
| + | < | ||
| + | i2cdetect -l | ||
| + | ls /dev/i2c-* | ||
| + | </ | ||
| + | |||
| + | ==== Поиск устройств ==== | ||
| + | |||
| + | Для шины '' | ||
| + | |||
| + | < | ||
| + | i2cdetect -y 2 | ||
| + | </ | ||
| + | |||
| + | VL53L0X обычно доступен по адресу '' | ||
| + | |||
| + | ==== Чтение регистра ==== | ||
| + | |||
| + | < | ||
| + | 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 | ||
| + | </ | ||
| + | |||
| + | При наличии батарейки записанные дата и время сохраняются после отключения питания. | ||
| + | |||
| + | |||
| + | |||