Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
boards:nms-sm-rk3568:firmware_opensource:quick_start [2024/04/22 11:05] – [Работа с GPIO] Артем Слепов | boards:nms-sm-rk3568:firmware_opensource:quick_start [2025/02/18 09:23] (текущий) – [Работа с GPIO] Артем Слепов | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
===== RK3568 Quick Start Kernel 6.1 ===== | ===== RK3568 Quick Start Kernel 6.1 ===== | ||
- | ==== CAN ==== | + | ===== CAN ===== |
Для корректной работы шины CAN на отладочной плате NMS_SM_EVM необходимо подключить терминаторы - установить джамперы X13 и X14.\\ | Для корректной работы шины CAN на отладочной плате NMS_SM_EVM необходимо подключить терминаторы - установить джамперы X13 и X14.\\ | ||
Строка 17: | Строка 17: | ||
candump -T 1000 can0 > / | candump -T 1000 can0 > / | ||
sleep 1 | sleep 1 | ||
- | cansend can1 500 | + | cansend can1 500#DEADBEEF |
sleep 2 | sleep 2 | ||
Строка 29: | Строка 29: | ||
**fd on**</ | **fd on**</ | ||
{{: | {{: | ||
- | ==== ETH LED configuration ==== | + | ===== ETH LED configuration |
Светодиоды Ethernet управляются [[https:// | Светодиоды Ethernet управляются [[https:// | ||
Строка 73: | Строка 73: | ||
- | ==== Работа с GPIO ==== | + | ===== Работа с GPIO ===== |
- | Стандарт модулей SMARC предусматривает | + | Стандарт модулей SMARC предусматривает |
+ | * В [[https:// | ||
+ | * В [[https:// | ||
+ | * В [[https:// | ||
+ | |||
+ | Также при необходимости некоторые интерфейсные пины(в соответвии с таблицей " | ||
+ | |||
+ | Процессор содержит 5 банков по 32 пина. Все GPIO прописаны dts и видны /// | ||
+ | < | ||
+ | root@192-168-1-101: | ||
+ | gpiochip0: GPIOs 0-31, parent: platform/ | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | gpiochip1: GPIOs 32-63, parent: platform/ | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | gpiochip2: GPIOs 64-95, parent: platform/ | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | gpiochip3: GPIOs 96-127, parent: platform/ | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | gpiochip4: GPIOs 128-159, parent: platform/ | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | === Пример использования интерфейсного пина в качестве GPIO === | ||
+ | Например, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Необходимо в таблице " | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Управление пином: | ||
+ | < | ||
+ | root@192-168-1-101: | ||
+ | | ||
+ | root@192-168-1-101: | ||
+ | root@192-168-1-101: | ||
+ | | ||
+ | root@192-168-1-101: | ||
+ | root@192-168-1-101: | ||
+ | | ||
+ | </ | ||
+ | === I2C-GPIO расширитель на отладочной плате | ||
+ | |||
+ | Отладочная плата содержит PCA9535PW расширитель на адресе 0x20, подключенный к i2c-контроллеру с адресом fe5c0000. В {{ : | ||
+ | |||
+ | < | ||
+ | gpiochip5: GPIOs 496-511, parent: i2c/3-0020, 3-0020, can sleep: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Фрагмент dts с описание gpio-line-names: | ||
+ | < | ||
+ | i2cgpio: pca9535@20 { | ||
+ | compatible = " | ||
+ | /* vcc-supply = <& | ||
+ | reg = < | ||
+ | /*GPIO.3 -> P111 (som) -> gpio3_d2*/ | ||
+ | interrupt-parent = <& | ||
+ | interrupts = <27 IRQ_TYPE_LEVEL_LOW>; | ||
+ | interrupt-controller; | ||
+ | # | ||
+ | |||
+ | gpio-controller; | ||
+ | #gpio-cells = < | ||
+ | gpio-line-names = | ||
+ | " | ||
+ | " | ||
+ | }; | ||
+ | |||
+ | </ | ||
+ | |||
+ | Выводы GPIO на headers: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Пример управления I2C_GPIO5: | ||
+ | < | ||
+ | root@192-168-1-101: | ||
+ | root@192-168-1-101: | ||
+ | </ | ||
+ | |||
+ | ===== I2C в Debian ===== | ||
+ | Если в Debian при попытке // | ||
+ | < | ||
+ | root@192-168-1-101: | ||
+ | Error: Could not open file `/ | ||
+ | </ | ||
+ | |||
+ | Для этого необходимо в /// | ||
+ | |||
+ | {{: | ||
+ | |||
+ | После перезагрузки в dev появятся i2c-линии: | ||
+ | < | ||
+ | root@192-168-1-101: | ||
+ | | ||
+ | 00: -- -- -- -- -- -- -- -- | ||
+ | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 70: -- -- -- -- -- -- -- -- | ||
+ | </ | ||
+ | |||
+ | ===== SPI в Debian ===== | ||
+ | Для общения с SPI устройствами в ядре должен быть модуль spidev. | ||
+ | |||
+ | В качестве примера в ///root/// лежит программа //run_spi// и ее исходный код //spi.c// (либо на [[https:// | ||
+ | |||
+ | Инструкция JEDEC ID для данного устройства имеет вид: 0x9F [MF7-MF0] [ID15-ID8] [ID7-ID0]. | ||
+ | |||
+ | То есть, первый байт последовательности указывается нами - 0x9F. Далее получаем 3 оставшихся байта. | ||
+ | |||
+ | Скриншот выполнения инструкции JEDEC ID для SPI FLASH: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Как видно на скриншоте, | ||
+ | |||
+ | Если использовать несколько байт подряд, |