如何使用 Jetson nano GPIO 在 GPIO.TEGRA_SOC 模式与 GPIO.BCM 模式下设置 gpio 引脚?
how to setup gpio pins in GPIO.TEGRA_SOC mode vs GPIO.BCM mode using Jetson nano GPIO?
虽然找到了一些关于如何使用 GPIO.BCM 模式设置 gpio 的示例(其中引脚数等于 RPI(参见图片和 nvidia/jetson-gpio),但我找不到示例在 GPIO.TEGRA_SOC 模式下设置引脚。所以在深入了解 gpio 库之后,我想我会以有序的方式分享它。请参阅下面的答案。
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
虽然找到了一些关于如何使用 GPIO.BCM 模式设置 gpio 的示例(其中引脚数等于 RPI(参见图片和 nvidia/jetson-gpio),但我找不到示例在 GPIO.TEGRA_SOC 模式下设置引脚。所以在深入了解 gpio 库之后,我想我会以有序的方式分享它。请参阅下面的答案。
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