GPIO应用

*当前Ubuntu系统软件支持UART,I2C、SPI以及15个通用IO口
*通用UART/GPIO口电平为3.3V
*为确保电气安全GPIO控制口仅作为输出,能够控制输出高低电平,高电平3.3V,低电平0.1V,
*GPIO默认输出为高电平

GPIO硬件规格

GPIO引脚图例

GPIO Layout

GPIO引脚排布

Pin No.FunctionLinux GPIO
13V3 VCC
25V VCC
3I2C1_SDA
45V VCC
5I2C1_SCL
6GND
7GPIO(GP_D04)gpio880
8UART_TXttys4
9GND
10UART_RXttys4
11GPIO(GP_H19)
12GPIO(GP_D13)gpio889
13GPIO(GP_D17)gpio893
14GND
15GPIO(GP_E01)gpio973
16GPIO(GP_D06)gpio882
173V3 VCC
18GPIO(GP_D22)gpio898
19SPI0_MOSI
20GND
21SPI0_MISO
22GPIO(GPPC_H11)gpio855
23SPI0_SCL
24SPI0_CS0
25GND
26SPI0_CS1
27I2C0_SDA
28I2C0_SCL
29GPIO(GP_D23)gpio899
30GND
31GPIO(GPPC_H13)
32GPIO(GP_D05)gpio881
33GPIO(GP_D07)gpio883
34GND
35GPIO(GP_D12)gpio888
36GPIO(GP_H16)gpio860
37GPIO(GP_H18)gpio862
38GPIO(GP_D14)gpio890
39GND
40GPIO(GP_D15)gpio891

爱克斯板使能UART

爱克斯板UART使用的是N5105 PCH Serial IO UART模块中的UART1,位于40-Pin GPIO接口Pin8 TXD,PIN10 RXD(靠近CPU风扇接口一侧插针),波特率为115200
uart

在DVT硬件中需要先配置BIOS使能UART,操作如下。
1.上电开机,按F2进入BIOS
2.选择“Chipset”页面

chipset
3.选择PCH-IO Configuration

pch-io
4.选择SerialIO Configuration
5.UART1 Controller,设置为COM
com
6.Serial IO UART1 Settings 关闭硬件流控
cfg
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