ESP32学习笔记(四)之I2C总线

本文介绍了如何使用ESP32的I2C总线与LM75a温度传感器进行通信。ESP32的I2C特性包括支持主机和从机模式、多主机多从机通信等。通过初始化I2C总线,设置参数,然后编写读写函数,实现了对LM75a的读取并计算温度值。文章提供了详细的操作步骤和代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇帖子我们了解了一下ESP32运行多任务的操作以及现象,其实也就是一个实时操作系统。那么,这篇帖子我们就结合“LM75a”温度传感器来学习一下ESP32的IIC总线吧。


首先我们通过esp32_technical_referance发现,esp32的I2C总线具有以下特性

• 支持主机模式以及从机模式
• 支持多主机多从机通信
• 支持标准模式(100 kbit/s)
• 支持快速模式(400 kbit/s)
• 支持7-bit 以及10-bit 寻址
• 支持关闭SCL 时钟实现连续数据传输
• 支持可编程数字噪声滤波功能


ESP32的I2C控制器可以工作于Master 模式或者Slave 模式,我们这里只以Master模式为例。





上图为ESP32 I2C Master模式的基本架构,包含了32X8 Bit的RAM,16 个命令寄存器(cmd0 ~ cmd15) 以及一个CMD_Controller,2个总线控制器,2个总线滤波器以及一个数据移位寄存器。

看起来挺复杂的样子,其实实际操作起来,只有命令寄存器跟我们直接接触得最多吧,个人感觉,嗯。

具体跟寄存器相关的就介绍到这里,感兴趣的朋友可以自行查看esp32_technical_referance,那么接下来就该谈怎么操作以及实验了。

首先,调用库函数,初始化I2C总线(类似于stm32那样)




这个初始化结构体看起来也挺简单
初始化模式      :Master
IO口引脚         :ESP32具有两个I2C,分别映射到的引脚为18 19  25 26。我们这里选择I2C0,也就是I2C_NUM_0,对应18 19号引脚。
总线上拉使能   :enable
总线速度           :100K

调用初始化i2c_param_config()函数把初始化好的结构体参数传回去,这里特别要注意的是第一个参数选择的是I2C0还是选择I2C1,前者对应I2C_NUM_0,后者对应I2C_NUM_0。
然后调用i2c_driver_install ()安装I2C驱动。

初始化完成之后开始写I2C的读写函数。在写这两个函数之前,先看看两幅图




<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值