跳到主要内容

40 pin 连接器

GPIO

RUBIK Pi 3 适配了 WiringRP(基于高性能 GPIO 编程库 WiringPi),推荐使用 WiringRP 来控制 GPIO,和对 GPIO 编程。关于 WiringRP 详细信息可访问 https://github.com/rubikpi-ai/WiringRP 查看。

引脚分布

下图是 RUBIK Pi 3 40-pin 连接器的引脚默认功能,其中大部分引脚和开源开发板 40-pin 连接器引脚的默认功能兼容。

下表是 40-pin连接器支持的所有功能,图中蓝色字体表明默认功能。

使用 GPIO

在魔方派 3 中可以使用 shell 命令,或使用编程语言来控制 GPIO。

在 RUBIK Pi 3 中执行下面的步骤控制 GPIO。

备注

下面命令需要使用 root 权限:

  • 使用 sudo -i 命令切换到 root 用户。

  • 在普通用户下,在命令前加入 sudo ,如 sudo gpio readall,根据提示输入用户的登录密码。

  • 使用 WiringRP 相关命令

    使用前需按下面方法安装 WiringRP:

    1. 将魔方派公共个人软件档案(PPA)添加到您的魔方派 3 Ubuntu 软件源。
    sudo sed -i '$a deb http://apt.thundercomm.com/rubik-pi-3/noble ppa main' /etc/apt/sources.list
    sudo apt update
    1. 执行下面命令安装 WiringRP.
    sudo apt install wiringrp

    安装完成后可以使用下面命令操作 GPIO:

    • 查看 GPIO 状态
    gpio readall

    • 设置 GPIO 模式
    gpio mode 15 in             # 将15号引脚模式置为输入
    gpio pins # 查看更改之后的状态
    gpio mode 15 out # 将15号引脚模式置为输出
    gpio pins # 查看更改之后的状态
    • 设置引脚电平
    gpio write 15 1             # 将15号引脚置为高电平
    gpio read 15 # 读取更改后引脚状态
    gpio write 15 0 # 将15号引脚置为低电平
    gpio read 15 # 读取更改后引脚状态
  • 操作 /sys/class/gpio 下相关节点 GPIO 子系统的编号如下表。

    1. 进入 /sys/class/gpio 目录:
    cd /sys/class/gpio
    1. 将要控制的 GPIO 导出,如控制 13 号引脚 GPIO_24:
    echo 571 > export
    1. 进入到 gpio571 目录设置 GPIO 属性:
    cd gpio571
    ls

    • direction(方向):

      • 输入:in
      • 输出:out
    • value(值):

      • 低电平:0
      • 高电平:1
    • edge (中断边沿):

      • 上升沿触发:rising

      • 下降沿触发:falling

      • 双边沿触发:both

      • 禁用中断:none

    1. 如设置 13 号引脚输出高电平:
    echo out > direction
    echo 1 > value
    1. 取消导出 13 号引脚到用户空间:
    echo 571 > unexport

I2C

I2C 是飞利浦公司在 20 世纪 80 年代开发的一种双向 2 线制总线,用于实现高效的 IC 间控制总线。总线上的每个设备都有其唯一的地址(由飞利浦公司领导的 I2C 总机构注册)。I2C 核心支持多控制器模式,以及 10 位目标地址和 10 位可扩展地址。关于 I2C 的更多信息,请参阅 https://www.i2c-bus.org/fileadmin/ftp/i2c_bus_specification_1995.pdf

RUBIK Pi 3 适配了 WiringRP(基于高性能 GPIO 编程库 WiringPi ) ,推荐使用 WiringRP 来控制 I2C,和对 I2C 编程。关于 WiringRP 详细信息可访问 https://github.com/rubikpi-ai/WiringRP 查看。

引脚分布

下图是 RUBIK Pi 3 40-pin 连接器的引脚默认功能,其中大部分引脚和开源开发板 40-pin 连接器引脚的默认功能兼容。

备注

3 号引脚和 5 号引脚默认已设置配为 I2C1。

下表是 40-pin 连接器支持的所有功能,图中蓝色字体表明默认功能。

使用 I2C

在魔方派 3 中可以使用 shell 命令,或使用编程语言来控制 I2C 总线。

在 RUBIK Pi 3 中执行下面步骤控制 I2C 总线。 使用 WiringRP 相关命令前使用下面方法安装:

  1. 将魔方派公共个人软件档案(PPA)添加到您的魔方派 3 Ubuntu 软件源。
sudo sed -i '$a deb http://apt.thundercomm.com/rubik-pi-3/noble ppa main' /etc/apt/sources.list
sudo apt update
  1. 执行下面命令安装 WiringRP.
sudo apt install wiringrp

* 使用 WiringRP 相关命令:

```shell
./gpio -x ads1115:100:10 aread 100 #通过 I2C 总线读取 ADS1115 设备的模拟信号值
  • 使用 i2cdetect 工具

    • 查看 I2C1 接口上的设备:

      i2cdetect -a -y -r 1
    • 读取地址为 0x38 设备的全部寄存器:

      i2cdump -f -y 1 0x38
    • 向地址为 0x38 设备的 0x01 寄存器地址写入 0xaa:

      i2cset -f -y 1 0x38 0x01 0xaa
    • 读取地址为 0x38 的设备,寄存器地址为0x01处的数值:

      i2cget -f -y 1 0x38 0x01
备注

若无 i2cdetect 等命令,可执行 apt install i2c-tools 命令进行安装。

SPI

串行外设接口 (SPI) 是在全双工模式下工作的同步串行数据链路。SPI 又称为 4 线制串行总线。

RUBIK Pi 3 适配了 WiringRP(基于高性能 GPIO 编程库 WiringPi),推荐使用 WiringRP 来控制 SPI,和对 SPI 编程。关于 WiringRP 详细信息可访问 https://github.com/rubikpi-ai/WiringRP 查看。

引脚分布

下图是 RUBIK Pi 3 40-pin 连接器的引脚默认功能,其中大部分引脚和开源开发板 40-pin 连接器引脚的默认功能兼容。

备注

19 号、21 号、23 号、24 号引脚默认已设置配为 SPI。

下表是 40-pin 连接器支持的所有功能,图中蓝色字体表明默认功能。

使用 SPI

WiringRP 库中提供了一系列的 API 函数,用更少的逻辑实现控制。

使用前需按下面方法安装 WiringRP:

  1. 将魔方派公共个人软件档案(PPA)添加到您的魔方派 3 Ubuntu 软件源。
sudo sed -i '$a deb http://apt.thundercomm.com/rubik-pi-3/noble ppa main' /etc/apt/sources.list
sudo apt update
  1. 执行下面命令安装 WiringRP.
sudo apt install wiringrp

以下代码示例,代码使用 SPI 总线进行数据收发通信:

#include <wiringPi.h>
#include <wiringPiSPI.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int fd;
unsigned char send_data[64] = "hello world!";
unsigned char read_data[64];

if(wiringPiSetup() == -1)
exit(1);

fd = wiringPiSPISetup(0, 1000000);
if(fd < 0)
exit(2);

printf("\rtx_buffer: \n %s\n ", send_data);
// Send and receive data
if(wiringPiSPIDataRW(0, send_data, sizeof(send_data)) < 0)
exit(3);
printf("\rtx_buffer: \n %s\n ", send_data);


return 0;
}

编译程序

在 RUBIK Pi 3 中编译

gcc spi.c -o spi -lwiringPi
备注

若无 gcc 命令,可执行 apt install gcc 命令进行安装。

将 19 号引脚和 21 号引脚使用杜邦线短接,验证 SPI 总线通信,如下图所示:

注意

注意引脚顺序,请勿将电源和地引脚短接,否则可能会造成板子损坏。

运行如下命令:

./spi

程序执行结果如下:

UART

RUBIK Pi 3 适配了 WiringRP(基于高性能 GPIO 编程库 WiringPi),推荐使用 WiringRP 来控制 UART,和对 UART 编程。关于 WiringRP 详细信息可访问 https://github.com/rubikpi-ai/WiringRP 查看。

引脚分布

下图是 RUBIK Pi 3 40-pin 连接器的引脚默认功能,其中大部分引脚和开源开发板 40-pin 连接器引脚的默认功能兼容。

备注

8 号和 10 号引脚默认已设置配为 UART,设备节点为 /dev/ttyHS2

下表是 40-pin 连接器支持的所有功能,图中蓝色字体表明默认功能。

使用 UART

在 RUBIK Pi 3 中 使用下面命令控制串口通信

使用 stty 工具配置串口,如下将串口的输入速率和输出速率都设置为 115200,并关闭回显:

stty -F /dev/ttyHS2 ispeed 115200 ospeed 115200
stty -F /dev/ttyHS2 -echo

在 RUBIK Pi 3 上开启两个终端,将 8 号引脚和 10 号引脚使用杜邦线短接,分别执行下面命令,接收端会回显发送端的内容:

注意

注意引脚顺序,请勿将电源和地引脚短接,否则可能会造成板子损坏。

echo "hello world!" > /dev/ttyHS2  # 发送端
cat /dev/ttyHS2 # 接收端