как настроить контакты gpio в режиме GPIO.TEGRA_SOC по сравнению с режимом GPIO.BCM с использованием Jetson nano GPIO?

при нахождении ряда примеров того, как настроить gpio с использованием режима GPIO.BCM (в котором номера контактов эквивалентны RPI (см. изображение и nvidia/jetson-gpio), я не смог найти пример для настройки выводов в режиме GPIO.TEGRA_SOC. Поэтому, покопавшись в библиотеке gpio, я решил поделиться этим упорядоченно см. ответ ниже.

jetson nano gpio layout


person Avi Avidan    schedule 05.04.2020    source источник


Ответы (1)


Режим BCM, определяющий контакты 9 (сигнал от нано-выхода, например, триггер) и 11 (сигнал от датчика на nan0) -

import Jetson.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(9, GPIO.OUT)
GPIO.setup(11, GPIO.IN)

после настройки получение значения с входного контакта -

GPIO.input(11)

после настройки, установка значения с выходного контакта -

GPIO.output(9, False)
GPIO.output(9, True)

Режим TEGRA_SOC, определяющий контакты 9 и 11, как и раньше. замените номер на идентифицирующие имена строк {9: 'SPI1_MISO', 11: 'SPI1_SCK'}

import Jetson.GPIO as GPIO
GPIO.setmode(GPIO.TEGRA_SOC)
GPIO.setup('SPI1_MISO', GPIO.OUT)
GPIO.setup('SPI1_SCK', GPIO.IN)

после настройки получение значения с входного контакта -

GPIO.input('SPI1_SCK')

после настройки, установка значения с выходного контакта -

GPIO.output('SPI1_MISO', False)
GPIO.output('SPI1_MISO', True)

в общем, чтобы распечатать наименование всех выводов gpio в каждом возможном режиме: ['BOARD', 'BCM', 'CVM', 'TEGRA_SOC'] используйте -

print(GPIO.gpio_pin_data.get_data()[-1])

чтобы создать хороший словарь, преобразующий bcm num в tegra, используйте -

bcm_to_tegra = {
k: list(GPIO.gpio_pin_data.get_data()[-1]['TEGRA_SOC'].keys())[i] for i, k in enumerate(GPIO.gpio_pin_data.get_data()[-1]['BCM'])}

for k, v in bcm_to_tegra.items():
    print('bcm #:', k, 'tegra:', v)

// output:
bcm #: 4 tegra: AUD_MCLK
bcm #: 17 tegra: UART2_RTS
bcm #: 18 tegra: DAP4_SCLK
bcm #: 27 tegra: SPI2_SCK
bcm #: 22 tegra: LCD_TE
bcm #: 23 tegra: SPI2_CS1
bcm #: 24 tegra: SPI2_CS0
bcm #: 10 tegra: SPI1_MOSI
bcm #: 9 tegra: SPI1_MISO
bcm #: 25 tegra: SPI2_MISO
bcm #: 11 tegra: SPI1_SCK
bcm #: 8 tegra: SPI1_CS0
bcm #: 7 tegra: SPI1_CS1
bcm #: 5 tegra: CAM_AF_EN
bcm #: 6 tegra: GPIO_PZ0
bcm #: 12 tegra: LCD_BL_PW
bcm #: 13 tegra: GPIO_PE6
bcm #: 19 tegra: DAP4_FS
bcm #: 16 tegra: UART2_CTS
bcm #: 26 tegra: SPI2_MOSI
bcm #: 20 tegra: DAP4_DIN
bcm #: 21 tegra: DAP4_DOUT
person Avi Avidan    schedule 05.04.2020