ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Gobot 在 ASUS Tinker Board 2 上的接入指南:RK3399 平台的 GPIO/I2C/PWM/SPI 配置与实战

Gobot 在 ASUS Tinker Board 2 上的接入指南:RK3399 平台的 GPIO/I2C/PWM/SPI 配置与实战 物联网机器人嵌入式【免费下载链接】gobotGolang framework for robotics, drones, and the Internet of Things (IoT)项目地址https://gitcode.com/gh_mirrors/go/gobot点击查看免费下载Tinker Board 2 是华硕基于 Rockchip RK3399 处理器arm64 架构推出的单板 SoC 计算机板载 GPIO、I2C、PWM、SPI、1-Wire、MIPI CSI 与 MIPI DSI 等接口。本文以 platforms/asus/tinkerboard2/README.md 为主线结合仓库中 adaptor.go、pinmap.go 与两个可直接参考的示例完整讲解如何在 Armbian 系统上安装配置环境、用 Gobot 驱动 Tinker Board 2 的引脚并解决 I2C 与 PWM 的常见坑点。读完本文你将掌握从编译、部署到调试 GPIO、I2C、PWM 的完整闭环。平台概览Tinker Board 2 使用 Rockchip RK3399 芯片属于 64 位 ARM 平台arm64因此交叉编译时与 Tinker BoardRK3288armv7的参数完全不同。板载接口包括GPIO通过板载 40-pin 排针引出程序中使用板身上印刷的引脚编号如 7、32I2C提供 i2c-6、i2c-7、i2c-8 三路可用总线PWM由 pwm0、pwm1、pwm2、pwm3 四个 PWM 控制器驱动其中三个可映射到排针SPIspidev1.x 与 spidev5.x 两路可用1-Wire、MIPI CSI / DSI板载接口1-Wire 走 sysfs 设备路径。在仓库中Tinkerboard2Adaptor内嵌了tinkerboard.Adaptor因此继承了模拟引脚analog pins的定义——thermal_zone0与thermal_zone1两个热区温度节点其映射定义在 platforms/asus/tinkerboard/pinmap.go#L46-L50这也是示例tinkerboard2_yl40.go之外另一条可用的模拟输入通道。安装与系统配置Gobot 主框架的安装方式请参照仓库根目录的 README.md。官方文档中明确测试过的操作系统是ArmbianDebian 版本参见 platforms/asus/tinkerboard2/README.md。系统级配置步骤在 Tinker Board 2 的文档中直接沿用了 Tinker Board 的说明分为以下几项且只需在板卡上配置一次之后无需重复。系统访问与基础配置最简单的方式是通过 SSH 登录板卡使用 Armbian 自带的交互式配置界面sudo apt install armbian-config sudo armbian-configTinker Board 2 的文档特别建议直接使用sudo armbian-config完成基础系统设置。修改配置后需要重启生效sudo reboot启用硬件驱动并非所有硬件驱动默认启用。可以查看 Armbian 的启动配置确认当前启用的接口cat /boot/armbianEnv.txt # 部分系统为 /boot/config.txt用vi或nano修改该文件即可调整 overlaysudo vi /boot/armbianEnv.txt启用 GPIO为 GPIO 创建系统组并将当前用户加入该组TinkerOS 下还需添加 udev 规则完整规则内容见 Tinker Board 的配置章节sudo groupadd -f --system gpio sudo usermod -a -G gpio user启用 I2C同样创建i2c系统组并加入用户TinkerOS 下需要为 I2C 设备添加 udev 权限规则规则全文见 Tinker Board 的 I2C 章节sudo groupadd -f --system i2c sudo usermod -a -G i2c user注意Tinker Board 文档中的usermod示例写的是追加到gpio组从上下文看 I2C 场景应追加到i2c组实操时请按你实际需要授权的组名调整。配置完成后重启即可运行使用 GPIO 与 I2C 的 Gobot 程序。快速上手引脚编号与基础驱动Gobot 程序使用的引脚编号应当与板卡本体上印刷的丝印编号一致。最基础的用法以 LED 为例r : tinkerboard2.NewAdaptor() led : gpio.NewLedDriver(r, 7)NewAdaptor()的构造逻辑与可选参数定义在 adaptor.go支持以下选项参照注释整理可选参数作用adaptors.WithGpioSysfsAccess()改用传统 sysfs 驱动而非默认的 character devicecdev驱动adaptors.WithSpiGpioAccess(sclk, ncs, sdo, sdi)用 GPIO 代替/dev/spidev#.#模拟 SPIadaptors.WithGpiosActiveLow(pins...)对指定引脚反转电平行为adaptors.WithGpiosPullUp / WithGpiosPullDown(pins...)为指定引脚设置内部上下拉电阻其余 PWM 相关选项见adaptors.NewPWMPinsAdaptor说明从源码看Tinkerboard2Adaptor会自动装配五个子系统DigitalPinsAdaptor基于gpioPinDefinitions定义于 pinmap.go翻译排针编号PWMPinsAdaptor基于pwmPinDefinitions映射 PWM 通道I2cBusAdaptor默认总线号为7对应排针 27、28合法总线号由校验器限制为[6, 7, 8]SpiBusAdaptor默认spidev1.0排针 19、21、23、24合法总线为[1, 5]默认模式 0、8 bit、最高速率 500000AnalogPinsAdaptor继承自 tinkerboard 的thermal_zone0/1。上述默认值均在 adaptor.go#L12-L20 中以常量形式给出。单元测试 adaptor_test.go 验证了默认适配器使用 cdev 访问、以及WithGpioSysfsAccess()选项能切换到 sysfs 访问模式。如何连接与部署Tinker Board 2 是 arm64 平台交叉编译时使用GOARCHarm64 GOOSlinux对比 Tinker Board 的GOARM7 GOARCHarm。在工作站上编译GOARCHarm64 GOOSlinux go build -o output/ examples/tinkerboard2_yl40.go编译完成后用scp上传、用ssh在板卡上执行scp output/tinkerboard2_yl40 user192.168.1.xxx:~ ssh -t user192.168.1.xxx ./tinkerboard2_yl40仓库中提供了两个针对 Tinker Board 2 的完整可运行示例examples/tinkerboard2_yl40.go通过i2c-7排针 27SDA、28SCL连接 YL-40 多传感器模块周期读取温度、亮度、电位器并回写模拟输出AOUT→AIN2 短接自测examples/tinkerboard2_direct_pin_bin_counter.go用排针3、5、7、11四个引脚WithGpiosActiveLow反相输出驱动共阳 LED演示二进制计数器。后者正好用到了 GPIO 引脚编号 3、5、7、11在 pinmap.go#L20-L26 中分别对应GPIO2_B1_I2C6_SDA、GPIO2_B2_I2C6_SCL、GPIO2_B0_TEST_CLKOUT2、GPIO2_C3_UART0_RTSN等功能复用引脚测试标注均为 OK。排障I2C文档基于Armbian_community 25.2.0-trunk.124 bookworm实测的结论是i2c-7排针 27、28默认启用i2c-8DSI_1、DSI_2 连接器默认启用i2c-6排针 3、5没有默认 overlay需要参照其他 overlay 手动创建一个例如复制 i2c7 的 overlay 定义并调整设备地址/别名。这与 adaptor.go#L66 中合法总线号为 6、7、8的校验逻辑一致——三条总线在驱动层面都是受支持的缺的只是设备树 overlay。创建 overlay 并启用后使用i2c.NewYL40Driver(board, i2c.WithBus(7))这类写法即可按指定总线号访问设备。排障PWMTinker Board 2 的 PWM 涉及设备树 overlay 激活与 sysfs 调试按以下步骤操作。调查当前状态ls -la /sys/class/pwm/ total 0 drwxr-xr-x 2 root root 0 Jan 18 2013 . drwxr-xr-x 77 root root 0 Jan 18 2013 .. lrwxrwxrwx 1 root root 0 Jan 18 2013 pwmchip0 - ../../devices/platform/ff420020.pwm/pwm/pwmchip0在符号链接指向的设备树路径中查找以下特征即可判断哪个 PWM 通道已启用设备树路径对应 PWM排针ff420000pwm0pin 32ff420010pwm1pin 33ff420020pwm2已激活但仅供内部使用不可用于排针ff420030pwm3pin 26激活 PWM在 Armbian_community 25.2.0-trunk.124 bookworm 中pwm0、pwm1、pwm3均没有现成 overlay需要参照其他 overlay 创建例如以rockchip-rk3568-hk-pwm1.dtbo为基础改写。这一定义与驱动侧一一对应在 pinmap.go#L48-L55 中引脚32pwm0ff420000、33pwm1ff420010、26pwm3ff420030都声明了 PWM 通道映射注释明确标注needs to be enabled by device tree——即驱动支持这些引脚但必须先在设备树里激活对应 pwmchip。激活你需要的 pwmchip 后后续的导出、周期/占空比写入与极性切换步骤请完全参照 Tinker Board 文档的 PWM 排障章节其中给出了echo period .../pwm0/period、echo normal .../pwm0/polarity、echo duty .../pwm0/duty_cycle、echo 1 .../pwm0/enable的完整初始化顺序以及用万用表验证 30% 占空比3.3V × 30% ≈ 1V的实测方法。小结在 Gobot 中使用 Tinker Board 2 的完整路径是先在 Armbian 上通过armbian-config和 overlay 配置启用 GPIO/I2C/PWM再用tinkerboard2.NewAdaptor()按板载丝印编号编程最后以GOARCHarm64 GOOSlinux交叉编译并scp/ssh部署。相比 Tinker BoardTinker Board 2 最大的差异在于 arm64 架构、I2C 默认总线为 i2c-7以及 PWM 引脚映射完全不同32/33/26 对应 pwm0/pwm1/pwm3。仓库中的 adaptor.go、pinmap.go 和两个示例文件是排查引脚映射问题时最直接的参考依据。赞分享物联网机器人嵌入式【免费下载链接】gobotGolang framework for robotics, drones, and the Internet of Things (IoT)项目地址https://gitcode.com/gh_mirrors/go/gobot点击查看免费下载相关推荐RIOT-OS 中的 ESP32 SoC 外设资源与引脚配置详解GPIO / ADC / DAC / I2C / PWM / SDMMC / SPI / Timer / UART / JTAGRIOT OS 中的 ESP32 SoC 外设资源与引脚配置详解GPIO / ADC / DAC / I2C / PWM / SDMMC / SPI / Ti物联网嵌入式操作系统实时系统RIOT 外设自检指南使用 Peripheral Selftest Shield 全面测试 ADC/GPIO/I2C/PWM/SPI/UARTRIOT 外设自检指南使用 Peripheral Selftest Shield 全面测试 ADC/GPIO/I2C/PWM/SPI/UART 导读 本文基于物联网嵌入式操作系统实时系统在 Wio Terminal 上接入 ArduCam OV2640 摄像头基于 SPI/I2C 的图像采集实战在 Wio Terminal 上接入 ArduCam OV2640 摄像头基于 SPI/I2C 的图像采集实战 本篇技术指南以开源课程仓库 IoT For B教程文档教育物联网嵌入式上一篇告别PDF阅读痛点Jina AI Reader如何3秒解析arXiv论文核心内容下一篇Windows USB驱动安装的终极解决方案libwdi完整指南 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表