首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ESP32-I2C-Arduino

ESP32-I2C-Arduino

作者头像
云深无际
发布于 2020-12-15 10:02:17
发布于 2020-12-15 10:02:17
2.9K00
代码可运行
举报
文章被收录于专栏:云深之无迹云深之无迹
运行总次数:0
代码可运行

I2C (Inter-Integrated Circuit) 总线用于使 ESP32 和多个外部设备进行通信。多个外部设备可以共用一个 I 2C 总 线。

I 2C 具有以下几个特点。

• 支持主机模式以及从机模式

• 支持多主机多从机通信

• 支持标准模式 (100 kbit/s)

• 支持快速模式 (400 kbit/s)

• 支持 7-bit 以及 10-bit 寻址

• 支持关闭 SCL 时钟实现连续数据传输

• 支持可编程数字噪声滤波功能

i2C 是一个两线总线,由 SDA 线和 SCL 线构成。这些线设置为漏极开漏输出。因此,I2C 总线上可以挂载多个 外设,通常是和一个或多个主机以及一个或多个从机。主机通过总线访问从机。 主机发出开始信号,则通讯开始:在 SCL 为高电平时拉低 SDA 线,主机将通过 SCL 线发出 9 个时钟脉冲。前 8 个脉冲用于按位传输,该字节包括 7-bit 地址和 1 个读写位。如果从机地址与该 7-bit 地址一致,那么从机可 以通过在第 9 个脉冲上拉低 SDA 线来应答。接下来,根据读/写标志位,主机和从机可以发送/接收更多的数据。 根据应答位的逻辑电平决定是否停止发送数据。在数据传输中,SDA 线仅在 SCL 线为低电平时才发生变化。当 主机完成通讯,回发送一个停止标志:在 SCL 为高电平时,拉高 SDA 线。

ESP32 I2C 控制器可以处理 I2C 协议,腾出处理器核用于其它任务。

这里用的是,TT扩展件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
项目使用了 223345 字节,占用了 (17%) 程序存储空间。最大为 1310720 字节。
全局变量使用了16132字节,(4%)的动态内存,余留311548字节局部变量。最大为327680字节。
esptool.py v2.6
Serial port COM5
Connecting....
Chip is ESP32D2WDQ5 (revision 1)
Features: WiFi, BT, Dual Core, Embedded Flash, VRef calibration in efuse, Coding Scheme None
MAC: b4:e6:2d:80:e8:45
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 2MB
Compressed 8192 bytes to 47...

Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 10923.0 kbit/s)...
Hash of data verified.
Flash params set to 0x021f
Compressed 15856 bytes to 10276...

Writing at 0x00001000... (100 %)
Wrote 15856 bytes (10276 compressed) at 0x00001000 in 0.1 seconds (effective 1048.3 kbit/s)...
Hash of data verified.
Compressed 223456 bytes to 115390...

Writing at 0x00010000... (12 %)
Writing at 0x00014000... (25 %)
Writing at 0x00018000... (37 %)
Writing at 0x0001c000... (50 %)
Writing at 0x00020000... (62 %)
Writing at 0x00024000... (75 %)
Writing at 0x00028000... (87 %)
Writing at 0x0002c000... (100 %)
Wrote 223456 bytes (115390 compressed) at 0x00010000 in 1.6 seconds (effective 1118.7 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 118...

Writing at 0x00008000... (100 %)
Wrote 3072 bytes (118 compressed) at 0x00008000 in 0.0 seconds (effective 3510.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

选择对应的TT扩展件

这个安装的器件包在文档内

也就是说,你不管装多少Arduino,库装一次就好

这个地方有一个编译的错误,我要提交一次合并代码

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
VL53L0X激光测距传感器.ESP32使用篇
将ESP32与Arduino IDE搭配使用时,默认的I2C引脚为 GPIO 22 (SCL)和 GPIO 21 (SDA)
云深无际
2020/12/15
3.2K0
VL53L0X激光测距传感器.ESP32使用篇
ESP32 DEVKILTv1(devkitv1)开发板全解析!!!(搭载芯片为ESP32D0WDQ6)
平时去淘宝买ESP32的开发板,20出头大概率是这个板子,那我们这篇就来完完整整的将芯片进行挖掘,解决我们的引脚配置,硬件设置等等相关的问题,以后不再纠缠相关的问题.
云深无际
2021/07/23
16.9K5
ESP32 DEVKILTv1(devkitv1)开发板全解析!!!(搭载芯片为ESP32D0WDQ6)
TT扩展件microPython实现.2
-nostdlib作用:不连接系统标准启动文件和标准库文件,只把指定的文件传递给连接器。这个选项常用于编译内核、bootloader等程序,它们不需要启动文件、标准库文件。
云深无际
2020/12/17
1.3K0
TT扩展件microPython实现.2
基于MacOS搭建ESP8266 NodeMCU CP2102开发环境
常见的ESP8266 NodeMCU开发板有 ESP8266 NodeMCU CP2102 和 ESP8266 NodeMCU CH340 ,CP2102 和 CH340是驱动类型,就是负责和电脑传输数据的模块,这里用的板子是ESP8266 NodeMCU CP2102,所以需要安装 CP2102 驱动。
DannyHoo
2022/05/09
2.3K0
基于MacOS搭建ESP8266 NodeMCU CP2102开发环境
ESP8266和ROS调试一些问题汇总
rosrun rosserial_arduino serial_node.py _port:=/dev/ttyUSB0
zhangrelay
2020/09/25
6560
ESP8266和ROS调试一些问题汇总
i2c总线的通信协议(i2c通信协议原理)
I2C(Inter-integrated Circuit)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它只需要两根信号线来完成信息交换。I2C最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100kHz、7-bit标准地址。1992年,I2C的第一个公共规范发行,增加了400kHz的快速模式以及10-bit扩展地址。在I2C的基础上,1995年Intel提出了“System Management Bus” (SMBus),用于低速设备通信,SMBus 把时钟频率限制在10kHz~100kHz,但I2C可以支持0kHz~5MHz的设备:普通模式(100kHz即100kbps)、快速模式(400kHz)、快速模式+(1MHz)、高速模式(3.4MHz)和超高速模式(5MHz)。
全栈程序员站长
2022/07/29
2.1K0
i2c总线的通信协议(i2c通信协议原理)
I2C spec 总结
速度由 SCL 决定,不同模式对上升沿的要求不一样,上升沿斜率受上拉电阻和等效电容影响。
Jasonangel
2022/10/25
1.7K0
I2C spec  总结
树莓派I2C接口技术及Python SMBus串行I2C EEPROM应用编程
文章目录 一、I2C接口技术 1.I2C总线系统组成 2.I2C总线的状态及信号 3.I2C总线基本操作 4.启动和停止条件 5.I2C总线数据传输格式 二、I2C总线上拉电阻的估算与选取 三、树莓派与AT24C02接口实验电路及Python SMBus串行I2C EEPROM应用编程 1.启动RPi串行I2C接口及安装Python SMBus库 2. 树莓派与AT24C02 EEPROM接口实验电路 3. Python SMBus库函数介绍 4. 使用I2C Tools及Python SMBus读写AT24C02 EEPROM 一、I2C接口技术 I2C接口是嵌入式系统中常用的网络接口之一,它采用串行通信方式将MCU/传感器连接到系统总线,通过主机/从机的方式协调工作。 I2C/IIC(Inter-Integrated Circuit)总线是由PHILIPS公司于1982年针对MCU/传感器等应用需求而研制的一种两线式串行总线,用于连接MCU及传感器等设备。 I2C总线的主要特点如下: (1)I2C总线最主要的优点是其简单性和有效性。 (2)由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。 (3)I2C总线的长度可高达25英尺(约7.6m),并且能够以标准模式100Kbps的传输速率支持40个组件。新一代I2C总线还支持高速模式400Kbps传输。 (4)I2C总线的另一个优点是支持多主控(multi-mastering), 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号传输和时钟频率。当然,在任何时间点上只能有一个主控。 1. I2C总线系统组成 I2C总线协议包含两层协议:物理层和数据链路层。 在物理层,I2C总线仅使用了两条信号线:一个是串行数据线SDA (Serial DAta line),它用于数据的发送和接收;另一个是串行时钟线SCL (Serial Clock Line)构成的串行总线,它用于指示何时数据线上是有效数据,即数据同步。MCU与被控IC之间、IC与IC之间进行双向传送,I2C标准模式最大传送速率为100kbps,I2C快速模式最大传输速率为400kbps。 在数据链路层,每个连接到I2C总线上的设备都有唯一的地址,设备的地址由系统设计者决定。在信息的传输过程中,I2C总线上并接的每一设备既是主设备(或从设备)又是发送器(或接收器),这取决于它所要完成的功能。 由I2C总线所构成的系统可以有多个I2C节点设备,并且可以是多主系统,任何一个设备都可以为主I2C;但是任一时刻只能有一个主I2C设备,I2C具有总线仲裁功能,以保证系统正确运行。主I2C设备发出时钟信号、地址信号和控制信号,选择通信的从I2C设备并控制收发。I2C总线要求:(1)各个节点设备必须具有I2C接口功能;(2)各个节点设备必须共地;(3)两根信号线必须接上拉电阻Rp。如图1所示。  图1 多I2C设备接口示意图 2. I2C总线的状态及信号 (1)空闲状态 SCL和SDA均处于高电平状态,即为总线空闲状态(空闲状态为何是高电平的道理很简单,因为它们都接上拉电阻)。 (2)占有总线和释放总线 若想让器件使用总线应当先占有它,占有总线的主控器向SCL线发出时钟信号。数据传送完成后应当及时释放总线,即解除对总线的控制(或占有),使其恢复成空闲状态。 (3)启动信号[S] 启动信号由主控器产生。在SCL信号为高时,SDA产生一个由高变低的电平变化,产生启动信号。 (4)结束/停止信号[P] 当SCL线高电平时,主控器在SDA线上产生一个由低电平向高电平跳变,产生停止信号。启动信号和停止信号的产生见图2所示。  图2 启动信号和停止信号的产生 (5)应答/响应信号[A/NA] 应答信号是对字节数据传输的确认。应答信号占1位,数据接收者接收1字节数据后,应向数据发出者发送一个应答信号。对应于SCL第9个应答时钟脉冲,若SDA线仍保持高电平,则为非应答信号(NA/ACK)。低电平为应答,继续发送;高电平为非应答,结束发送。 (6)控制位信号[R/nW] 控制位信号占1位,IIC主机发出的读写控制信号,高为读、低为写(对IIC主机而言)。控制位(或方向位)在寻址字节中给出。 (7)地址信号 地址信号为从机地址,占7位,称之为“寻址字节”(见表1)。 表1 寻址字节  下面对表1中的各字段进行说明。 器件地址(DA3-DA0):DA3-DA0是I2C总线接口器件固有的地址编码,由器件生产厂家给定,如AT24C××I2C总线EEPROM器件的地址为1010等。 引脚地址(A2、A1、A0):引脚地址由I2C总线接口器件的地址引脚A2、A1、A0的高低来确定,接高电平者为1,接地者为0。 读写控制位/方向位(R/n W):R/nW为1表示主机读,R/nW为0表示主机
用户7886150
2020/12/30
1.4K0
万变不离其宗之I2C总线要点总结
[导读] 前文总结了单片机串口个人认为值得注意的一些要点,本文来梳理一下 I2C 总线的一些要点。这个题目有点大,本文对于 I2C 其实很多地方也没整清楚,只为了与前文形成系列,如果大家有补充欢迎留言。说了些闲话,进入正题吧。
wenzid
2021/08/13
2.6K0
万变不离其宗之I2C总线要点总结
STM32通信模拟 I2C
I²C(Inter-Integrated Circuit),常读作“I方C”,它是一种多主从架构串行通信总线。在1980年由飞利浦公司设计,用于让主板、嵌入式系统或手机连接低速周边设备。如今在嵌入式领域是非常常见通信协议,常用于MPU/MCU与外部设备连接通信、数据传输。
韦东山
2022/05/09
1.2K0
STM32通信模拟 I2C
串口通信系列(二)、I2C通信方式
IIC全称为Inter Integrated Circuit:两根通信线:一根时钟线SCL一根数据线SDA,只有一根数据线,所以是半双工通信。数据的传输速率在标准模式下可达100kbit/s,在快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。
根究FPGA
2020/06/30
4.1K0
串口通信系列(二)、I2C通信方式
详述I2C总线协议、时序,入门不再是难事
在生活中,经常会碰到设备掉电的情况,像手机,智能手环,电脑等等;但是存储的东西不会丢失,比如电话号码,短信消息,记事本,微信,QQ信息等等均会被保存下来;恢复出厂设置后,这些东西才会消失;
杨源鑫
2021/07/07
2.9K0
详述I2C总线协议、时序,入门不再是难事
一文搞懂I2C总线通信
本来不打算写这篇文章,因为网上关于I2C总线通信的资料很多很全。但是最近刚换工作,主要做驱动开发,第一个驱动就是I2C通信,想了想还是结合网上的资料再整理下思路,方便今后的查阅和温习。
不脱发的程序猿
2022/04/13
2.5K0
一文搞懂I2C总线通信
IIC接口下的24C02 驱动分析
诺谦
2018/01/08
1.4K0
IIC接口下的24C02 驱动分析
嵌入式技术栈之I2C
S-起始信号,SLAVE_ADDRESS 从机地址,R/W 是读写信号,应答ACK,数据,p,停止信号。
心跳包
2022/04/13
1.3K0
嵌入式技术栈之I2C
STM32入门开发: 介绍IIC总线、读写AT24C02(EEPROM)(采用模拟时序)
IIC总线: STM32本身支持IIC硬件时序的,本文采用的是模拟时序,下篇文章就介绍配置STM32的IIC硬件时序读写AT24C02和AT24C08。
DS小龙哥
2022/01/12
2.2K0
STM32入门开发: 介绍IIC总线、读写AT24C02(EEPROM)(采用模拟时序)
IIC协议长文详解-解惑版
嵌入式的世界里面有几个经典的协议:IIC,SPI,UART,CAN,1-WIRE,这些协议都是低速的,而且而是必须要掌握的内容,经常在使用和面试中出现。
云深无际
2024/08/20
4780
IIC协议长文详解-解惑版
【通信专栏】STM32单片机/I2C通信(上篇)
想来单片机这块儿除了USART串口通信外,常见的便是I2C通信了,因为I2C通信 硬件连接简单,可扩展性强,但是这种硬件连线的简洁,是以协议的复杂来弥补的。I2C通信是一种半双工通信,也就是可以双向传输数据但不能同时进行。
周旋
2020/06/04
2.1K0
【通信专栏】STM32单片机/I2C通信(上篇)
i2c时序图的详细讲解[通俗易懂]
  SCL为高电平的时候,SDA由高电平向低电平跳变。结束信号:SCL为高电平的时候,SDA由低电平向高电平跳变。
全栈程序员站长
2022/07/29
10K0
i2c时序图的详细讲解[通俗易懂]
STM32的I2C框图详解及通讯过程
  如果我们直接控制STM32 的两个GPIO 引脚,分别用作SCL 及SDA,按照上述信号的时序要求,直接像控制LED 灯那样控制引脚的输出(若是接收数据时则读取SDA 电平),就可以实现I2C 通讯。同样,假如我们按照USART 的要求去控制引脚,也能实现USART通讯。所以只要遵守协议,就是标准的通讯,不管您如何实现它,不管是ST 生产的控制器还是ATMEL 生产的存储器, 都能按通讯标准交互。
用户6754675
2019/12/20
2K0
相关推荐
VL53L0X激光测距传感器.ESP32使用篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档