【IoT】ESP32 Arduino GPIO 使用简析

简介: ESP32基础

一、GPIO 中断使用简析

1、中断触发方式

ESP32 Arduino 有以下四种触发方式:

LOW 低电平触发
CHANGE 电平变化
RISING 上升沿触发
FALLING 下降沿触发
HIGH 高电平触发

2、配置中断

在定义中断函数后,需要在 setup 函数配置中断函数

// interrupt=中断通道编号,function=中断函数,mode=中断触发模式
attachInterrupt(interrupt, function, mode);

// pin=中断引脚,function=中断函数,mode=中断触发模式
attachInterrupt(pin, function, mode);

如果在程序运行过程不需要使用外部中断了,可以用中断分离函数来取消这一中断设置:

detachInterrupt(interrupt);
detachInterrupt(Pin);。

3、示例

void setup()
{
// 初始化日志打印串口
Serial.begin(115200);

// 配置中断引脚
pinMode(26, INPUT|PULLUP );

// 检测到引脚 26 下降沿,触发中断函数 blink
attachInterrupt(26, blink, FALLING);

Serial.println("\nstart irq test");
}

void loop()
{

}

// 中断函数
void blink()
{
Serial.println("IRQ");
}

二、IIC 使用简析

示例:

include <Wire.h>

void setup() {
// 启动 i2c 总线
Wire.begin();

// 初始化串口
Serial.begin(9600);
}

int reading = 0;

void loop() {
// step 1: 启动与从设备 #112 0x70 的数据交互
Wire.beginTransmission(112);

// 发送数据
Wire.write(byte(0x00));
Wire.write(byte(0x50));

// 结束通信
Wire.endTransmission();

// step 2: 等待读数据
delay(70);

// step 3: 读取指定寄存器
Wire.beginTransmission(112);
Wire.write(byte(0x02));
Wire.endTransmission();

// step 4: 请求读 2 字节数据
Wire.requestFrom(112, 2);

// step 5: 接收数据
if (2 <= Wire.available()) {

reading = Wire.read();
reading = reading << 8;
reading |= Wire.read();
Serial.println(reading);

}

delay(250);
}

三、SPI 使用简析

示例:

/* The ESP32 has four SPi buses, however as of right now only two of

  • them are available to use, HSPI and VSPI. Simply using the SPI API
  • as illustrated in Arduino examples will use HSPI, leaving VSPI unused.
  • However if we simply intialise two instance of the SPI class for both
  • of these buses both can be used. However when just using these the Arduino
  • way only will actually be outputting at a time.
  • Logic analyser capture is in the same folder as this example as
  • "multiple_bus_output.png"
  • created 30/04/2018 by Alistair Symonds

*/

include <SPI.h>

static const int spiClk = 1000000; // 1 MHz

//uninitalised pointers to SPI objects
SPIClass * vspi = NULL;
SPIClass * hspi = NULL;

void setup() {
// 初始化 SPI 实例 VSPI、HSPI
vspi = new SPIClass(VSPI);
hspi = new SPIClass(HSPI);

//clock miso mosi ss

//使用默认 VSPI 引脚:SCLK = 18, MISO = 19, MOSI = 23, SS = 5
vspi->begin();

// alternatively route through GPIO pins of your choice
//vspi->begin(0, 2, 4, 33); // SCLK, MISO, MOSI, SS

//使用默认引脚初始化 HSPI
//SCLK = 14, MISO = 12, MOSI = 13, SS = 15
hspi->begin();

//alternatively route through GPIO pins
//hspi->begin(25, 26, 27, 32); //SCLK, MISO, MOSI, SS

// 初始化 ss 片选引脚,默认为低电平
pinMode(5, OUTPUT); //VSPI SS
pinMode(15, OUTPUT); //HSPI SS

}

// the loop function runs over and over again until power down or reset
void loop() {
//use the SPI buses
vspiCommand();
hspiCommand();
delay(100);
}

void vspiCommand() {
// 模拟数据
byte data = 0b01010101;

// 启动 VSPI 传输
vspi->beginTransaction(SPISettings(spiClk, MSBFIRST, SPI_MODE0));
digitalWrite(5, LOW);
vspi->transfer(data);
digitalWrite(5, HIGH);
vspi->endTransaction();
}

void hspiCommand() {
byte stuff = 0b11001100;

hspi->beginTransaction(SPISettings(spiClk, MSBFIRST, SPI_MODE0));
digitalWrite(15, LOW);
hspi->transfer(stuff);
digitalWrite(15, HIGH);
hspi->endTransaction();
}

卫朋

人人都是产品经理受邀专栏作家,CSDN 嵌入式领域新星创作者、资深技术博主。2020 年 8 月开始写产品相关内容,截至目前,人人都是产品经理单渠道阅读 56 万+,鸟哥笔记单渠道阅读200 万+,CSDN 单渠道阅读 210 万+,51CTO单渠道阅读 180 万+。

卫朋入围2021/2022年人人都是产品经理平台年度作者,光环国际学习社区首批原创者、知识合作伙伴,商业新知 2021 年度产品十佳创作者,腾讯调研云2022年达人榜第三名。

文章被人人都是产品经理、CSDN、华为云、运营派、产品壹佰、鸟哥笔记、光环国际、商业新知、腾讯调研云等头部垂直类媒体转载。文章见仁见智,各位看官可策略性选择对于自己有用的部分。

相关文章
|
安全 IDE 物联网
|
物联网 C#
Win10 IoT C#开发 3 - GPIO Pin 控制发光二极管
原文:Win10 IoT C#开发 3 - GPIO Pin 控制发光二极管 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行。
2041 0
|
11天前
|
消息中间件 弹性计算 物联网
【阿里云弹性计算】阿里云ECS在IoT领域的应用:支撑大规模设备连接与数据处理
【5月更文挑战第26天】阿里云ECS是弹性计算服务,支持IoT设备的连接与数据处理。通过MQTT协议实现设备快速接入,配合消息队列处理异构实时数据。ECS可用于部署数据处理工具、应用服务,如智能家居控制系统,通过弹性伸缩适应负载变化。结合阿里云其他服务,ECS为IoT提供完整解决方案,助力企业数字化转型。
22 0
|
9月前
|
编解码 小程序 JavaScript
阿里云IoT小程序应用开发和组件实践
通过实验,了解阿里云IoT小程序的应用开发的方法,了解其内置的基础组件使用,以及基于Vue.js实现可复用的自定义组件的方法。
356 1
|
9月前
|
运维 安全 物联网
使用阿里云 IoT 安全中心保护智慧遥控器
在物联网领域中,我们的 TO B 智慧设备,在发货之后,出现了不少困扰我们的安全问题,比如会被恶意安装应用,访问非法网站等,增加厂家的运维成本。 同时设备上的一些技术机密也容易被好事之人破解,对厂商构成商业损失,直到我们发现了阿里云物联网的一款安全防护产品 -- IoT 安全中心。它主打的 ID² 和安全运营有效的解决了我们的痛点。
415 3
|
10月前
|
传感器 监控 物联网
阿里云IoT HaaS 510:快速实现物联网数据传输的利器
众所周知,物联网(IoT)是近年来日益热门的技术领域之一,它的广泛应用为人们的生活和工作带来了无限可能。在物联网应用中,数据的采集和传输是至关重要的一环。DTU是一种应用于物联网数据传输的终端设备,它可以将各类传感器、数据采集单元等通过串口RS232/485传输到DTU,再由DTU转发到4G网络上传至云端。阿里云IoT HaaS 510是一款开板式DTU产品,能够帮助企业快速搭建物联网平台,并实现数据的采集和传输,那么本文就来简单分享一下。
392 1
阿里云IoT HaaS 510:快速实现物联网数据传输的利器
|
12月前
|
自然语言处理 算法 物联网
阿里云正式发布「IoT消费电子应用引擎解决方案」,应用开发提效70%
阿里云正式发布「IoT消费电子应用引擎解决方案」,应用开发提效70%
229 0
|
物联网
《阿里云产品手册2022-2023 版》——阿里云IoT
《阿里云产品手册2022-2023 版》——阿里云IoT
201 0

热门文章

最新文章