这篇文档主要介绍如何使用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号引脚实现的。
设置管脚输出低电平。
设置管脚输出高电平。
通过编写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的特殊引脚功能包括SPI
,i2C
,ADC
,SoftPWM
。
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引脚的输出和读取引脚电平值。这里只是一个简单的介绍和使用,更多的用法需要使用者自己去探索。