GPIO应用
*当前Ubuntu系统软件支持UART,I2C、SPI以及15个通用IO口
*通用UART/GPIO口电平为3.3V
*为确保电气安全GPIO控制口仅作为输出,能够控制输出高低电平,高电平3.3V,低电平0.1V,
*GPIO默认输出为高电平
GPIO硬件规格
- 40Pin双排插针,引脚间距为2.0mm
- 树莓派/Jeston Nano引脚间距为2.54mm
GPIO引脚图例
GPIO引脚排布
- 爱克斯板GPIO引脚排布与树莓派及Jeston Nano兼容
Pin No. | Function | Linux GPIO |
1 | 3V3 VCC | |
2 | 5V VCC | |
3 | I2C1_SDA | |
4 | 5V VCC | |
5 | I2C1_SCL | |
6 | GND | |
7 | GPIO(GP_D04) | gpio880 |
8 | UART_TX | ttys4 |
9 | GND | |
10 | UART_RX | ttys4 |
11 | GPIO(GP_H19) | 无 |
12 | GPIO(GP_D13) | gpio889 |
13 | GPIO(GP_D17) | gpio893 |
14 | GND | |
15 | GPIO(GP_E01) | gpio973 |
16 | GPIO(GP_D06) | gpio882 |
17 | 3V3 VCC | |
18 | GPIO(GP_D22) | gpio898 |
19 | SPI0_MOSI | |
20 | GND | |
21 | SPI0_MISO | |
22 | GPIO(GPPC_H11) | gpio855 |
23 | SPI0_SCL | |
24 | SPI0_CS0 | |
25 | GND | |
26 | SPI0_CS1 | |
27 | I2C0_SDA | |
28 | I2C0_SCL | |
29 | GPIO(GP_D23) | gpio899 |
30 | GND | |
31 | GPIO(GPPC_H13) | 无 |
32 | GPIO(GP_D05) | gpio881 |
33 | GPIO(GP_D07) | gpio883 |
34 | GND | |
35 | GPIO(GP_D12) | gpio888 |
36 | GPIO(GP_H16) | gpio860 |
37 | GPIO(GP_H18) | gpio862 |
38 | GPIO(GP_D14) | gpio890 |
39 | GND | |
40 | GPIO(GP_D15) | gpio891 |
爱克斯板使能UART
爱克斯板UART使用的是N5105 PCH Serial IO UART模块中的UART1,位于40-Pin GPIO接口Pin8 TXD,PIN10 RXD(靠近CPU风扇接口一侧插针),波特率为115200
- BIOS设置
在DVT硬件中需要先配置BIOS使能UART,操作如下。
1.上电开机,按F2进入BIOS
2.选择“Chipset”页面
3.选择PCH-IO Configuration
4.选择SerialIO Configuration
5.UART1 Controller,设置为COM
6.Serial IO UART1 Settings 关闭硬件流控
7.F10保存退出
端口信息
●Ubuntu系统
Ubuntu设备节点为 /dev/ttyS4,可以通过 sudo dmesg |grep tty确认设备节点
tips: 使用命令,sudo usermod -aG dialout $USER 将用户加入dialout组,可以免root使用tty设备
●Windows系统
在设备管理器中能够看到COM和LPT设备,通信端口COM1
Ubuntu系统下GPIO控制
在Ubuntu系统下,可以通过sysfs文件系统来控制GPIO。请确认系统kernel与本示例相同。
开启一个终端,执行下面命令
ls /sys/class/gpio
若出现:export gpiochip684 unexport三个文件节点,请继续阅读。
下面是一个简单的示例,演示如何通过sysfs文件系统控制Pin40输出高低电平。
1- 使能Pin40, gpio891
$ sudo su
# echo 891 > /sys/class/gpio/export
在/sys/class/gpio目录出现gpio891文件节点,说明使能成功
2- 将Pin40设置为低电平
# echo 0 > /sys/class/gpio/gpio891/value
此时Pin40引脚变为低电平。
3- 将Pin40设置为高电平
# echo 1 > /sys/class/gpio/gpio891/value
此时Pin40引脚变为高电平
4- 释放GPIO资源
# echo 891 > /sys/class/gpio/unexport
MRAA
https://iotdk.intel.com/docs/master/mraa/building.html
https://github.com/intel-iot-devkit/mraa