WiringPi

这篇文档主要介绍如何使用WiringPi。

什么是 WiringPi

WiringPi 是一个基于C语言的GPIO引脚控制库。原本是开发被运用于树莓派上,现在我们移植到了VIMs上。你可以通过WiringPi来控制板子上40-PIN排针管脚。

开始使用WiringPi

控制命令

  • 获取管脚信息

运行 gpio readall, 可以看到所有引脚相关的状态和信息。

GPIO –> GPIO的实际引脚
wPi –> WiringPi引脚值
Mode –> 引脚的模式,ALT说明引脚已经被配置成特殊的功能
V –> 1表示引脚是高电平,0表示引脚是低电平
PU/PD –> PU:上拉 PD:下拉 DSBLD:已关闭上下拉

通过命令行控制

这里的简单例子是通过wpi的1号引脚实现的。

  • 设置管脚为输出模式
1
$ sudo gpio mode 1 out
  • 设置管脚输出值
1
$ gpio write 1 0

设置管脚输出低电平。

1
$ gpio write 1 1

设置管脚输出高电平。

通过编写Linux C程序控制GPIO

  • 获取测试源码
1
$ wget https://dl.khadas.com/development/code/docs_source/wiringpi.c
  • 编译
1
$ gcc -o wiringpi wiringpi.c -lwiringPi -lpthread -lrt -lm -lcrypt
  • 测试
1
2
3
4
5
$ sudo ./wiringpi
wPi Pin 1 now is GIGH
wPi Pin 1 now is LOW
wPi Pin 1 now is GIGH
wPi Pin 1 now is LOW

你可以通过命令gpio read 1观察引脚的电平变化是否正确。

WiringPi特殊功能引脚

WiringPi的特殊引脚功能包括SPIi2CADCSoftPWM

SPI

VIM1,VIM2没有将SPI引出到40-PIN HEADERS

1
2
3
4
PIN37 <---> MOSI
PIN35 <---> MISO
PIN15 <---> SS
PIN16 <---> SCLK
1
2
3
4
PIN37 <---> MOSI
PIN35 <---> MISO
PIN26 <---> SS
PIN25 <---> SCLK

I2C

I2C0

1
2
PIN22 <---> SCK
PIN23 <---> SDA

I2C0

1
2
PIN22 <---> SCK
PIN23 <---> SDA

I2C3

1
2
PIN22 <---> SCK
PIN23 <---> SDA

I2C0

1
2
PIN25 <---> SCK
PIN26 <---> SDA

ADC

1
2
PIN10 <---> ADC_CH0
PIN12 <---> ADC_CH2
1
2
PIN10 <---> ADC_CH0
PIN12 <---> ADC_CH2
1
2
PIN10 <---> ADC_CH0
PIN12 <---> ADC_CH3
1
2
PIN10 <---> ADC_CH6
PIN12 <---> ADC_CH3

Serial

使用之前请先确认串口节点名称:

1
2
PIN15 <---> RX
PIN16 <---> TX

注意

  • 如果需要使用WiringPi的特殊功能引脚,需要先确认dts里面打开了相应的配置。
  • WiringPi本身包括很多功能,不仅仅只是控制GPIO引脚的输出和读取引脚电平值。这里只是一个简单的介绍和使用,更多的用法需要使用者自己去探索。