Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
boards:nms-sm-rk3568:firmware_opensource:quick_start [2024/04/22 11:58] – [Пример использования интерфейсного пина в качестве 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 предусматривает GPIO0-GPIO13, | Стандарт модулей SMARC предусматривает GPIO0-GPIO13, | ||
* В [[https:// | * В [[https:// | ||
- | * В [[https:// | + | * В [[https:// |
+ | * В [[https:// | ||
Также при необходимости некоторые интерфейсные пины(в соответвии с таблицей " | Также при необходимости некоторые интерфейсные пины(в соответвии с таблицей " | ||
- | Все GPIO прописаны dts и видны /// | + | Процессор содержит 5 банков по 32 пина. |
< | < | ||
root@192-168-1-101: | root@192-168-1-101: | ||
Строка 88: | Строка 89: | ||
| | ||
| | ||
- | gpio-3 | + | ....... |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
| | ||
| | ||
Строка 122: | Строка 97: | ||
| | ||
| | ||
- | gpio-35 | + | ........ |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
| | ||
| | ||
Строка 156: | Строка 105: | ||
| | ||
| | ||
- | gpio-67 | + | ......... |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
gpiochip3: GPIOs 96-127, parent: platform/ | gpiochip3: GPIOs 96-127, parent: platform/ | ||
| | ||
| | ||
| | ||
- | gpio-99 | + | ..... |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
| | ||
| | ||
Строка 223: | Строка 118: | ||
| | ||
| | ||
- | gpio-131 (GPIO4_A3 | + | ........ |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
| | ||
| | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Пример использования интерфейсного пина в качестве 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: | gpiochip5: GPIOs 496-511, parent: i2c/3-0020, 3-0020, can sleep: | ||
| | ||
Строка 270: | Строка 167: | ||
| | ||
| | ||
- | root@192-168-1-101:~# | + | </ |
+ | |||
+ | Фрагмент dts с описание gpio-line-names: | ||
+ | < | ||
+ | i2cgpio: pca9535@20 { | ||
+ | compatible = " | ||
+ | /* vcc-supply = <& | ||
+ | reg = < | ||
+ | / | ||
+ | interrupt-parent = <& | ||
+ | interrupts = <27 IRQ_TYPE_LEVEL_LOW>; | ||
+ | interrupt-controller; | ||
+ | | ||
+ | |||
+ | gpio-controller; | ||
+ | #gpio-cells = < | ||
+ | gpio-line-names = | ||
+ | " | ||
+ | " | ||
+ | }; | ||
- | === Пример использования интерфейсного пина в качестве GPIO === | ||
- | Например, | ||
- | {{: | ||
</ | </ | ||
+ | Выводы GPIO на headers: | ||
- | === Пример использования интерфейсного пина в качестве GPIO === | + | {{:boards: |
- | Например, | + | |
- | {{:boards:nms-sm-rk3568:firmware_opensource: | + | Пример управления I2C_GPIO5: |
+ | < | ||
+ | root@192-168-1-101:~# ./gpio.sh I2C_GPIO05 1 # | ||
+ | root@192-168-1-101:~# ./gpio.sh I2C_GPIO05 0 # | ||
+ | </ | ||
- | Необходимо в таблице распиновка разъема | + | ===== I2C в Debian ===== |
- | {{: | + | Если в Debian при попытке // |
- | === I2C-GPIO расширитель на отладочной плате | + | < |
+ | root@192-168-1-101: | ||
+ | Error: Could not open file `/ | ||
+ | </ | ||
+ | |||
+ | Для этого необходимо в /// | ||
+ | |||
+ | {{: | ||
+ | |||
+ | После | ||
+ | < | ||
+ | root@192-168-1-101: | ||
+ | | ||
+ | 00: -- -- -- -- -- -- -- -- | ||
+ | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 70: -- -- -- -- -- -- -- -- | ||
+ | </ | ||
+ | |||
+ | ===== SPI в Debian ===== | ||
+ | Для | ||
+ | |||
+ | В качестве примера в ///root/// лежит программа //run_spi// и ее исходный код //spi.c// (либо | ||
+ | |||
+ | Инструкция | ||
+ | |||
+ | То есть, первый байт последовательности указывается | ||
+ | |||
+ | Скриншот выполнения инструкции JEDEC ID для SPI FLASH: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Как видно на скриншоте, вводить байты можно как с 0x, так и без. | ||
+ | |||
+ | Если использовать несколько байт подряд, то указывать их оптимально через |