go 树莓派 gpio 您所在的位置:网站首页 树莓派释放gpio go 树莓派 gpio

go 树莓派 gpio

2022-05-02 00:36| 来源: 网络整理| 查看: 265

  1. 树莓派GPIO引脚对照表 2. GPIO引脚用途 3. GPIO编程

 

 

1. 树莓派GPIO引脚对照表

           

注:本表格适用于各版本,并且兼容26Pin的树莓派B,树莓派B为26Pin,其引脚对应于上表的前26Pin。

尺寸图:

2. GPIO引脚用途

   

在这个40Pin管脚中,除了12个电源类外,其余28个都是可编程的GPIO,其中部分GPIO可以复用为IIC,SPI,UART,PWM等等,可以用来驱动各种外设。

I2C是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。树莓派通过I2C接口可控制多个传感器和组件。它们的通信是通过SDA(数据引脚)和SCL(时钟速度引脚)来完成的。每个从设备都有一个唯一的地址,允许与许多设备间快速通信。ID_EEPROM引脚也是I2C协议,它用于与HATs通信。

SPI是串行外设接口,用于控制具有主从关系的组件,采用从进主出和主进从出的方式工作,树莓派上SPI由SCLK、MOSI、MISO接口组成,SCLK用于控制数据速度,MOSI将数据从树莓派发送到所连接的设备,而MISO则相反。

有使用Arduino的朋友一定听说过UART或Serial,通用异步收/发器接口用于将Arduino连接到为其编程的计算机上,也用于其他设备与 RX 和 TX 引脚之间的通信。如果树莓派在 raspi-config 中启用了串口终端,则可以使用这些引脚通过电脑来控制树莓派,也可以直接用于控制Arduino。

在树莓派上,所有的引脚都可以实现软件PWM,而GPIO12、GPIO13、GPIO18、GPIO19可以实现硬件脉宽调制。

 

3. GPIO编程 3.1 主流GPIO库介绍

       1、wiringPi C,有Perl, PHP, Ruby, Node.JS和Golang的扩展,支持wiringPi Pin和BCM GPIO两种编号

       2、RPi.GPIO Python,支持Board Pin和BCM GPIO两种编号

       3、WiringPi-Go, Go语言,支持wiringPi Pin、BCM GPIO和Board Pin三种编号

 

3.2 GPIO版本及接口编号定义

1. 输入“gpio -v”看下我们树莓派内置的版本。

2. 输入“gpio readall”查看我们接口编号的定义。

3. Python 代码举例(LED闪烁)

import RPi.GPIO as GPIO import time # blinking function def blink(pin): GPIO.output(pin,GPIO.HIGH) time.sleep(1) GPIO.output(pin,GPIO.LOW) time.sleep(1) return # to use Raspberry Pi board pin numbers GPIO.setmode(GPIO.BOARD) # set up GPIO output channel GPIO.setup(11, GPIO.OUT) # blink GPIO17 50 times for i in range(0,50): blink(11) GPIO.cleanup() import RPi.GPIO as GPIO //引入函数库 import time RPi.GPIO.setmode(GPIO.BOARD) //设置引脚编号规则 RPi.GPIO.setup(12, RPi.GPIO.OUT) //将12号引脚设置成输出模式 while True GPIO.output(channel, 1) //将引脚的状态设置为高电平,此时LED亮了 time.sleep(1) //程序休眠1秒钟,让LED亮1秒 GPIO.output(channel, 0) //将引脚状态设置为低电平,此时LED灭了 time.sleep(1) //程序休眠1秒钟,让LED灭1秒 GPIO.cleanup() //程序的最后别忘记清除所有资源

4.  Wiring Pi      C语言编程举例(物理针脚11为例,对应的wPi为GPIO0)

#include #include int main(void) { int LED = 0; wiringPiSetup(); pinMode(LED, OUTPUT); printf("LED is blinking...\r\n"); while(1) { printf("LED:%d is on \r\n", LED); digitalWrite(LED, HIGH);delay(500); printf("LED:%d is off \r\n", LED); digitalWrite(LED, LOW);delay(500); } return 0; } #include int main(void) { wiringPiSetup(); pinMode (1, OUTPUT); for(;;) { digitalWrite(1, HIGH); delay (500); digitalWrite(1, LOW); delay (500); } }

 

5. BCM2835 C Library           Blinks RPi GPIO pin 11 on and off

// blink.c // // Example program for bcm2835 library // Blinks a pin on an off every 0.5 secs // // After installing bcm2835, you can build this // with something like: // gcc -o blink blink.c -l bcm2835 // sudo ./blink // // Or you can test it before installing with: // gcc -o blink -I ../../src ../../src/bcm2835.c blink.c // sudo ./blink // // Author: Mike McCauley // Copyright (C) 2011 Mike McCauley // $Id: RF22.h,v 1.21 2012/05/30 01:51:25 mikem Exp $ #include #include // Blinks on RPi Plug P1 pin 11 (which is GPIO pin 17) #define PIN RPI_GPIO_P1_11 int main(int argc, char **argv) { // If you call this, it will not actually access the GPIO // Use for testing // bcm2835_set_debug(1); if (!bcm2835_init()) return 1; // Set the pin to be an output bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP); // Blink while (1) { // Turn it on bcm2835_gpio_write(PIN, HIGH); // wait a bit bcm2835_delay(500); // turn it off bcm2835_gpio_write(PIN, LOW); // wait a bit bcm2835_delay(500); } bcm2835_close(); return 0; }

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有