6.2以上的不能直接用jetson-gpio控制,需要配置过引脚才能用,写个笔记记录一下
给出了两种方式,一种修改修Pinmux 配置后重新烧录系统。
另一种动态修改引脚配置,用busybox修改寄存器配置,官方修改方法
我这里用busybox修改,因为方便。
1. 获取引脚的 Pinmux 寄存器地址:
步骤 1:检查载板规格说明书。下载
引脚 31,对应 PQ.06
步骤 2:打开对应设备类型的引脚复用配置电子表格。下载
找到 PQ.06,对应SOC_GPIO33
步骤3:在 Orin 技术参考手册中找到与 SOC_GPIO33 对应的 PADCTL 寄存器。下载
2. busybox修改寄存器
配置GPIO11,BOARD编号33为输出
(1)上面查得:SOC_GPIO33:PQ6:
Pinmux 寄存器基地址为 0x2430000。
- The Offset is 0x70.
- The Pinmux register address is 0x2430070.
(2)查询寄存器。
busybox devmem 0x02430070
输出值为 0x00000454。
(3)修改寄存器,设置引脚为输出。
busybox devmem 0x02430070 w 0x004
3. python jetson-gpio控制
github地址:https://github.com/NVIDIA/jetson-gpio,照里面的安装
运行代码
import Jetson.GPIO as GPIO
import time
# Pin Definitions
output_pin = 31
def main():
# Pin Setup:
GPIO.setmode(GPIO.BOARD) # BCM pin-numbering scheme from Raspberry Pi
# set pin as an output pin with optional initial state of HIGH
GPIO.setup(output_pin, GPIO.OUT, initial=GPIO.HIGH)
print("Starting demo now! Press CTRL+C to exit")
curr_value = GPIO.HIGH
try:
while True:
time.sleep(1)
# Toggle the output every second
print("Outputting {} to pin {}".format(curr_value, output_pin))
GPIO.output(output_pin, curr_value)
curr_value ^= GPIO.HIGH
finally:
GPIO.cleanup()
if __name__ == '__main__':
main()
LED就在闪烁了