Инструменты пользователя

Инструменты сайта


boards:nms-uq7-komdiv-mk:peripherial:start

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
boards:nms-uq7-komdiv-mk:peripherial:start [2026/07/28 09:13] – создано Артем Слеповboards:nms-uq7-komdiv-mk:peripherial:start [2026/07/30 06:51] (текущий) – [Ethernet] Артем Слепов
Строка 1: Строка 1:
 ====== Использование периферии Q7_KOMDIV_MK ======  ====== Использование периферии Q7_KOMDIV_MK ====== 
 +
 +На странице приведены примеры настройки и проверки периферийных интерфейсов модуля ''Q7_KOMDIV_MK''.
 +
 +  * CAN
 +  * UART;
 +  * I2C;
 +  * SPI;
 +  * SATA;
 +  * RTC.
 +
 +
 +**Скрипты для тестирования доступны в [[https://gitlab.inmys.online/srisa-public/k5500vk018-test-suite|репозитории test-suite]].**
 +
  
 ===== CAN ===== ===== CAN =====
 +
 +Пример CAN loopback:  
 +
 +==== Подключение ====
 +
 +Соединить CAN интерфейсы следующим образом: 
 +
 +<code>
 +CAN0_H --- CAN1_H
 +CAN0_L --- CAN1_L
 +GND    --- GND
 +</code>
 +
 +{{komdiv_can_connection.jpeg?600}}
 +
 +==== Настройка ====
 +
 +Перед изменением скорости интерфейсы необходимо выключить:
 +
 +<code>
 +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 </code>
 +
 +Скорость на обоих интерфейсах должна совпадать.
 +
 +==== Приём ====
 +
 +Приём всех кадров:
 +
 +<code>
 +candump can0
 +</code>
 +
 +Приём только кадров с идентификатором ''123'':
 +
 +<code>
 +candump 'can0,123:7FF'
 +</code>
 +
 +==== Отправка ====
 +
 +Отправка кадра через ''can1'':
 +
 +<code>
 +cansend can1 123#1122334455667788
 +</code>
 +
 +Где ''123'' — CAN ID, после ''#'' идут данные.
 +
 +==== Остановка ====
 +
 +<code>
 +ip link set can0 down
 +ip link set can1 down
 +</code>
 +
 +==== Проверка состояния ====
 +
 +<code> ip -details -statistics link show can0 </code>
 +
 +Нормальное состояние интерфейса:
 +
 +<code> state ERROR-ACTIVE bitrate 1000000 </code>
 +
 +В статистике отображаются:
 +
 +количество принятых пакетов — ''RX packets'';
 +
 +количество отправленных пакетов — ''TX packets'';
 +
 +ошибки приёма — ''RX errors'';
 +
 +ошибки передачи — ''TX errors''.
  
 ===== UART ===== ===== UART =====
 +
 +==== Подключение ====
 +
 +Для loopback соедините:
 +
 +<code> TX --- RX </code>
 +
 +==== Настройка ====
 +
 +<code> stty -F /dev/ttyS1 115200 raw -echo </code>
 +
 +==== Приём ====
 +
 +<code> cat /dev/ttyS1 </code>
 +
 +==== Отправка ====
 +
 +В другом окне терминала:
 +
 +<code> printf 'UART test' > /dev/ttyS1 </code>
 +
 +При loopback отправленная строка должна появиться в окне приёма.
  
 ===== I2C ===== ===== I2C =====
 +
 +Пример работы с VL53L0X:  
 +
 +==== Просмотр шин ====
 +
 +<code>
 +i2cdetect -l
 +ls /dev/i2c-*
 +</code>
 +
 +==== Поиск устройств ====
 +
 +Для шины ''i2c-2'':
 +
 +<code>
 +i2cdetect -y 2
 +</code>
 +
 +VL53L0X обычно доступен по адресу ''0x29''.
 +
 +==== Чтение регистра ====
 +
 +<code>
 +i2cget -y 2 0x29 0xC0
 +</code>
 +
 +Где:
 +
 +* ''2'' — номер I²C-шины;
 +* ''0x29'' — адрес устройства;
 +* ''0xC0'' — адрес регистра.
 +
 +==== Запись регистра ====
 +
 +<code>
 +i2cset -y 2 0x29 0x00 0x01
 +</code>
 +
 +==== Чтение нескольких байтов ====
 +
 +<code>
 +i2ctransfer -y 2 w1@0x29 0x14 r12
 +</code>
 +
 +Команда указывает датчику начать чтение с регистра 0x14, после чего получает 12 последовательных байт данных.
 +
 +
 +В качестве примера используется лазерный дальномер VL53L0X.
 +
 +==== Подключение VL53L0X ====
 +
 +{{komdiv_i2c_connection.jpeg?600}}
 +
 +==== Чтение VL53L0X ====
 +
 +<code>
 +chmod +x i2c-test.sh
 +./i2c-test.sh 2 20
 +</code>
 +
 +Где:
 +
 +* ''2'' — номер I²C-шины;
 +* ''20'' — количество измерений.
 +
 +Вывод скрипта:
 +
 +<code>
 +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
 +</code>
 +
 +===== SPI =====
 +
 +В качестве примера используется SPI Flash, подключённая к ''CS0''. Ей соответствует устройство ''/dev/spidev1.0''.
 +
 +При подключении к  ''CS1'' используется устройство ''/dev/spidev1.1''.
 +
 +
 +==== Подключение ====
 +
 +{{komdiv_spi_connection.jpeg?600}}
 +
 +==== Конфигурация ====
 +
 +Для работы с устройствами SPI необходимо загрузить модуль ядра: 
 +
 +<code>
 +modprobe spidev
 +</code>
 +
 +==== Определение SPI Flash ====
 +
 +<code>
 +flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=1000
 +</code>
 +
 +Пример успешного результата:
 +
 +<code>
 +flashrom v1.5.1 on Linux 6.1.135 (mips64)
 +flashrom is free software, get the source code at https://flashrom.org
 +
 +Found Macronix flash chip "MX66L51235F/MX25L51245G" (65536 kB, SPI) on linux_spi.
 +===
 +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://www.flashrom.org/contrib_howtos/how_to_mark_chip_tested.html
 +Thanks for your help!
 +No operations were specified.
 +</code>
  
 ===== SATA ===== ===== SATA =====
 +
 +Интерфейс SATA мультиплексируется между двумя каналами. Выбор активного канала выполняется через GPIO с помощью скрипта ''gpio.sh''.
 +
 +Выбор канала 0:
 +
 +<code>
 +./gpio.sh sata_select 0
 +</code>
 +
 +Выбор канала 1:
 +
 +<code>
 +./gpio.sh sata_select 1
 +</code>
 +
 +После выбора канала проверить обнаружение накопителя можно командой:
 +
 +<code> cat /proc/partitions </code>
 +
 +Пример успешного обнаружения SATA-накопителя:
 +
 +<code>
 +major minor  #blocks  name
 +          0      16384 ram0
 +          1      16384 ram1
 +          2      16384 ram2
 +          3      16384 ram3
 +          4      16384 ram4
 +          5      16384 ram5
 +          6      16384 ram6
 +          7      16384 ram7
 +          8      16384 ram8
 +          9      16384 ram9
 +         10      16384 ram10
 +         11      16384 ram11
 +         12      16384 ram12
 +         13      16384 ram13
 +         14      16384 ram14
 +         15      16384 ram15
 +  31        0        640 mtdblock0
 +  31        1         64 mtdblock1
 +  31        2         64 mtdblock2
 +  31        3         64 mtdblock3
 + 179        0    7634944 mmcblk0
 + 179        1    1048576 mmcblk0p1
 + 179        2    1048576 mmcblk0p2
 + 179        3    1048576 mmcblk0p3
 + 179        8       4096 mmcblk0boot0
 + 179       16       4096 mmcblk0boot1
 +         16  125034840 sdb   # <------------------------/ 
 +         17     153600 sdb1  # <-----------------------/  Обнаруженный SATA-накопитель
 +         18  124881223 sdb2  # <----------------------/ 
 +</code>
 +
 +В данном примере накопитель определён как ''/dev/sdb'' и содержит два раздела.
 +
 +Имя устройства может отличаться в зависимости от порядка обнаружения накопителей.
 +
 +===== RTC =====
 +
 +В дереве устройств определена I2C RTC.  
 +
 +При первом запуске системное время может быть установлено на 01.01.1970, а RTC ещё не будет содержать корректного значения.
 +
 +Пример установки системного времени:
 +
 +<code>
 +date -s "2026-07-29 14:48:00"
 +</code>
 +
 +Запись системного времени в RTC:
 +
 +<code>
 +hwclock -w
 +</code>
 +
 +Просмотр текущего времени RTC:
 +
 +<code>
 +hwclock -r
 +</code>
 +
 +При наличии батарейки записанные дата и время сохраняются после отключения питания.
 +
 +
 +
boards/nms-uq7-komdiv-mk/peripherial/start.1785229999.txt.gz · Последнее изменение: Артем Слепов