侧边栏壁纸
  • 累计撰写 125 篇文章
  • 累计创建 16 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Jetson GPIO 输出 PWM

环境设置

Jetson 系列的板子上都搭载了40pin接口用于实现对外通讯与控制,通常直接通过 Jetson.GPIO 库即可实现编程。

但是如果要在 Jetson 中使用硬件 PWM,则需要修改 Pinmux 表来多路复用。Jetpack 提供了一个名为 jetson-io 的工具,它允许创建和更新可以使用 PWM 的 dtb。

首先,在 Jetson 终端中运行以下命令:

sudo /opt/nvidia/jetson-io/jetson-io.py

从菜单中,选择 Configure Jetson 40pin Header > Configure header pins manually , pwm1(15) 和 pwm5(18)选择并 Back Save pin changesSave and reboot to reconfigure pins,按下任意键后重启,即可完成设置。

20240327164915

Python PWM 编程

import Jetson.GPIO as GPIO
import time

PWM_PIN = 18

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(PWM_PIN, GPIO.OUT)

pwm = GPIO.PWM(PWM_PIN, 5)  # 设置输出pin与频率为50Hz
pwm.start(1)   # 开启PWM输出,并设置占空比为50%

while True:
    time.sleep(1)
    print("hello, pwm")
    
pwm.stop()
GPIO.cleanup()

下图是输出的波形图,

问题

描述1:在执行sudo /opt/nvidia/jetson-io/jetson-io.py后并没有文字显示或乱码。

解决1:放终端窗口放大,小窗口可能会导致其显示出问题。

描述2:在执行sudo /opt/nvidia/jetson-io/jetson-io.py后进入了界面,但是突然闪退,而且重启后依旧。

解决2:问题极大可能是前面的设置时候没有保存好导致了文件冲突。执行:

cd /opt/nvidia/jetson-io
sudo python config-by-pin.py -p 5

这时候会出现报错:

RuntimeError: Multiple DT overlays for 'Jetson 40pin Header' found!
Please remove duplicate(s)
/boot/tegra234-p3737-0000-p3701-0000-hdr40.dtbo
/boot/kernel_tegra234-p3701-0000-p3737-0000-hdr40-user-custom.dtbo

原因是系统中存在多个设备树叠加(DTBO)文件,它们都针对同一个硬件组件——“Jetson 40pin Header”。错误消息明确指出了存在多个DTBO文件。

所以,直接将其中user-custom的文件删除即可。

Ref:
官方文档配置

0

评论区