本帖最后由 lb8820265 于 2020-9-23 22:35 编辑
树莓派与其他PC类的Linux系统最大的区别就是树莓派拥有众多的外设接口,包括GPIO、SPI、I2C、UART、PWM。可以连接更多的硬件,下图是树莓派支持的外设图:
由于树莓派操作外设接口并不是直接操作寄存器,而是调用第三方库,从这个方面来说树莓派并不能完全称之为开源。
命名方案
树莓派接口的有三种命名方案:
1. WiringPi 编号
2. BCM编号
3. 物理编号(Physical – Number)
WiringPi 编号是功能接线的引脚号(如TXD、PWM0等等);BCM编号是 Broadcom 针脚号,也即是通常称的GPIO;物理编号是PCB板上针脚的物理位置对应的编号(1~40)。详细如下所示。
操作接口主要有两种库:Python GPIO库和WiringPi库。
Python库:
Python GPIO已经集成到了树莓派内核,为树莓派官方资料中推荐且容易上手。PythonGPIO是一个小型的Python库,可以帮助用户完成raspberry相关IO口操作,比如引脚电平输入,电平输出,外部电平中断检测,PWM输出。但是PythonGPIO库还没有支持SPI、I2C等总线接口。
树莓派默认是安装了PythonGPIO库,如果没有可以输入:
Sudo apt-get install python-rpi.gpio
打开Thonny输入如下代码:
import RPi.GPIO as GPIO
import time
# BOARD编号方式,基于插座引脚编号
GPIO.setmode(GPIO.BOARD)
# 输出模式
GPIO.setup(11, GPIO.OUT)
while True:
GPIO.output(11, GPIO.HIGH)
time.sleep(1)
GPIO.output(11, GPIO.LOW)
time.sleep(1)
作用为让11号物理引脚电平每秒翻转一次。
想了解更多可以访问官方的例程库:
https://sourceforge.net/p/raspberry-gpio-python/wiki/Examples/
WiringPi库:
树莓派操作系统默认安装了wiringpi,如果没有,输入如下命令:
sudo apt-get install wiringpi
wiringPi适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。可以操作所有的外设接口。
在文档编辑器中输入如下代码:
#include <wiringPi.h>
int main (void)
{
wiringPiSetup () ;
pinMode (0, OUTPUT) ;//0是指WiringPi编号0,等于物理编号11
for (;;)
{
digitalWrite (0, HIGH) ; delay (500) ;
digitalWrite (0, LOW) ; delay (500) ;
}
return 0 ;
}
保存为blink.c,然后在终端中输入如下代码:
gcc -Wall -o blink blink.c -lwiringPi
sudo ./blink
该代码的效果就是将物理引脚11引脚一秒翻转一次。
想了解更多可以访问官方的例程库:
http://wiringpi.com/