Skip to main content

访问和控制 ODYSSEY - X86J41x5 的 40 针 GPIO

本教程演示了如何在 Linux(Ubuntu)下访问和控制 ODYSSEY - X86J41x5 的 40 针 GPIO。通过本教程,您可以轻松开始使用 ODYSSEY - X86J41x5 构建您的物联网项目!

40 针 GPIO 引脚图

Ubuntu 18.04

Linux GPIO功能RPi GPIO引脚号引脚号RPi GPIO功能Linux GPIO
3.3V125V
386I2C5_SDABCM2_SDA345V
387I2C5_SCLBCM3_SCL56接地
337BCM478BCM14_TXD493UART0_TXD
接地910BCM15_RXD492UART0_RXD
364BCM171112BCM18338
412BCM271314接地
413BCM221516BCM23421
3.3V1718BCM24422
359SPI0_MOSIBCM10_MOSI1920接地
358SPI0_MISOBCM9_MISO2122BCM25390
355SPI0_CLKBCM11_SCLK2324BCM8_CE0356SPI0_FSO
接地2526BCM7_CE1357SPI0_FS1
388I2C6_SDABCM0_ID_SD2728BCM1_ID_SCL389I2C6_SCL
415BCM52930接地
416BCM63132BCM12391
417BCM133334接地
339BCM193536BCM16410
419BCM263738BCM20340
接地3940BCM21341

引脚图例
GPIO
UART
I2C
SPI

Ubuntu 20.04

Ubuntu 22.04

GPIO

ODYSSEY - X86J41x5 的默认引脚配置为功能模式,例如引脚 3 默认设置为 I2C 模式,而不是 GPIO 模式。如果您希望默认使用 GPIO 模式,请参考以下内容。

note

40-Pin GPIO 配备了双向电平转换器,使用时电流不得超过 1 mA。这意味着 IO 电流非常低。

您可以使用 GPIO 或通过 Linux sysfs GPIO 接口将功能模式引脚更改为 GPIO。以下示例以引脚 7 为例,以下代码将点亮连接到引脚 7 的 LED 模块:

sudo -i
cd /sys/class/gpio
echo 337 > export
cd gpio337
echo "out" > direction
echo 1 > value

关闭 LED:

echo 0 > value

使用完 GPIO 后,需要取消导出:

echo "in" > direction
cd ..
echo 337 > unexport

中断

要在 ODYSSEY - X86J41x5 上测试中断,请按照以下说明操作:

这里我们使用 python-periphery 来访问用户空间 Linux 中的 GPIO 接口(Linux GPIO 编号)。

  • 安装 python3-pip。
sudo apt install python3-pip
sudo pip3 install python-periphery
  1. 下载 IRQtest 测试脚本到本地。

  2. 切换到下载脚本的目录并运行测试脚本:

sudo python3 IRQtest.py

将引脚更改为默认 GPIO 模式

如果您希望 40-pin 默认设置为 GPIO,可以通过 BIOS 设置更改。

  1. 重启 ODYSSEY - X86J41x5 并在启动时持续按下 DEL 键进入 BIOS 菜单。

  2. 导航到 Advanced -> HAT Configuration

  3. 根据需要将功能 GPIO 更改为 GPIO 模式!


注意: 您还可以将其他 GPIO 设置为默认输出。

使用 Grove Base Hat 进行简单控制

您还可以使用适用于 Raspberry Pi 的 Grove Base Hat 进行简单的数字信号控制。例如,目前无法使用 I2C 和 UART 端口(Grove Base Hat for Odyssey-X86 的固件正在开发中,很快会发布)。

以下以 Grove Base Hat 的 D5 端口为例:

注意: 这里指的是 Raspberry Pi 的 BCM 编号系统 -> BCM5。因此,目前要在 Odyssey-X86 上使用,需要确定其物理引脚,实际上是物理 引脚编号 29参考:Raspberry Pinouts

因此,连接到 Odyssey-X86 的 Grove Base Hat 上使用 D5 的物理引脚是 29,即 Linux GPIO 415

现在,我们可以使用与上述相同的方法来控制此 GPIO:

sudo -i
cd /sys/class/gpio
echo 415 > export
cd gpio415
echo "out" > direction
echo 1 > value

取消导出时,按照之前的步骤操作即可。

UART

要检查 ODYSSEY - X86J41x5 上的 UART 设备,请运行以下命令:

ls /sys/bus/pci/devices/0000\:00\:18.?/dw-apb-uart.*/tty/ | grep tty

ttyS4 与 40-pin 接头上的 UART 引脚(引脚 8 和引脚 10)相关联。要从这些引脚访问,请执行以下操作:

sudo apt install screen
sudo screen /dev/ttyS4/ 115200

I2C

note

ODYSSEY - X86J41x5 的默认 I2C 速度为 1MB/s,无法配置。

要识别 ODYSSEY - X86J41x5 上的 I2C 端口,可以执行以下命令:

  • i2c_designware.0 -> 引脚 27 和 28 (I2C6_SDA 和 I2C6_SCL) 的 I2C 通道
ls /sys/bus/pci/devices/*/i2c_designware.0/ | grep i2c
  • i2c_designware.1 -> 引脚 3 和 5 (I2C5_SDA 和 I2C5_SCL) 的 I2C 通道
ls /sys/bus/pci/devices/*/i2c_designware.1/ | grep i2c

要检测连接到 I2C 通道 0 的外设,请执行以下命令:

sudo apt install i2c-tools
sudo i2cdetect -r -y 0

注意: 对于 I2C 通道 1,将最后一个参数从 0 改为 1。

SPI

可以通过运行以下命令识别 SPI 设备:

ls /sys/bus/pci/devices/0000\:00\:19.*/pxa2xx-spi.*/spi_master/ | grep spi

在用户空间启用 SPI

要启用用户访问 SPI 设备,请按照以下步骤操作:

  1. 下载 此处的 zip 文件 并解压到本地。

  2. 进入解压后的目录:

chmod +x acpi-add acpi-upgrades install_hooks
sudo ./install_hooks && sudo acpi-add spidev*
  1. 重启 ODYSSEY - X86J41x5。

现在,您可以在 /dev 中检查 SPI 设备:

ls /dev/spi*

技术支持与产品讨论

感谢您选择我们的产品!我们为您提供多种支持渠道,以确保您使用我们的产品时体验顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...