物联网AI MicroPython学习之语法 I2C总线

学物联网,来万物简单IoT物联网!!

I2C 介绍

  • 模块功能:
    I2C Master设备驱动

接口说明

I2C - 构建硬件I2C对象

  • 函数原型:I2C(id, scl, sda, freq)
  • 参数说明:
参数 类型 必选参数? 说明
id int Y I2C外设,esp32有两个外设(id = 0/1)
scl int N 对应I2C的时钟线,可以定义任意脚 默认(不选参数) I2C0:Pin(18) I2C1:Pin(9)
sda int N 对应I2C的时钟线,可以定义任意脚 默认(不选参数) I2C0:Pin(19) I2C1:Pin(8)
freq int N I2C通信频率
  • 返回值:
    构建的I2C对象。

SoftI2C - 构建软I2C对象

  • 函数原型:SoftI2C(scl, sda, freq)
  • 参数说明:
参数 类型 必选参数? 说明
scl int Y 对应I2C的时钟线,可以定义任意脚
sda int Y 对应I2C的时钟线,可以定义任意脚
freq int Y I2C通信频率
  • 返回值:
    构建的SoftI2C对象。

scan - 扫描从设备

  • 函数原型:scan()
  • 参数说明:

  • 返回值:

start - 起始位信号

  • 函数原型:start()
  • 参数说明:

  • 返回值:

stop - 停止位信号

  • 函数原型:stop()
  • 参数说明:

  • 返回值:

readfrom - 从I2C总线读取数据

  • 函数原型:readfrom(devAddr,number)
  • 参数说明:
参数 类型 必选参数? 说明
devAddr int Y I2C总线上从设备地址
number int Y 需要从总线上读取的数据字节数
  • 返回值:
    buffer - 总线上读取的数据缓冲区,长度为参数number

writeto - 向I2C总线写数据

  • 函数原型:writeto(devAddr,buffer)
  • 参数说明:
参数 类型 必选参数? 说明
devAddr int Y I2C总线上从设备地址
buffer array[] Y 发送数据的缓冲区,期待发送的字节数为buffer的长度
  • 返回值:

readfrom_mem - 从I2C设备指定地址读取数据

  • 函数原型:readfrom_mem(devAddr, memaddr, number)
  • 参数说明:
参数 类型 必选参数? 说明
devAddr int Y I2C总线上从设备地址
memaddr int Y 起始地址
number int Y 需要从总线上读取的数据字节数
  • 返回值:
    buffer - 指定地址读取的数据缓冲区,长度为参数number

writeto_mem - 向I2C设备指定地址写数据

  • 函数原型:writeto_mem(devAddr, memaddr,buffer)
  • 参数说明:
参数 类型 必选参数? 说明
devAddr int Y I2C总线上从设备地址
memaddr int Y 起始地址
buffer array[] Y 发送数据的缓冲区,期待发送的字节数为buffer的长度
  • 返回值:
  • 案例代码
python 复制代码
from machine import Pin, SoftI2C, I2C

# 构建1个I2C对象
i2c = SoftI2C(scl=Pin(5), sda=Pin(4), freq=100000)

# 构建一个硬件 I2C 总线
i2c = I2C(0)
i2c = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)

i2c.scan()              # 扫描从设备

i2c.readfrom(0x3a, 4)   # 从地址为0x3a的从机设备读取4字节数据
i2c.writeto(0x3a, '12') # 向地址为0x3a的从机设备写入数据"12"

buf = bytearray(10)     # 创建1个10字节缓冲区
i2c.writeto(0x3a, buf)  # 向地址为0x3a的从机设备写入缓冲区数据
相关推荐
神的泪水几秒前
CANN 系列底层篇:基于 shmem 实现 NPU 设备内存的高效共享
人工智能
皮卡丘不断更2 分钟前
手搓本地 RAG:我用 Python 和 Spring Boot 给 AI 装上了“实时代码监控”
人工智能·spring boot·python·ai编程
浪子小院12 分钟前
ModelEngine 智能体全流程开发实战:从 0 到 1 搭建多协作办公助手
大数据·人工智能
程序员打怪兽16 分钟前
详解YOLOv8网络结构
人工智能·深度学习
Yuer202516 分钟前
全国首例“AI 幻觉”侵权案判了:这不是 AI 准不准的问题,而是谁该为 AI 负责
人工智能·edca os·可控ai
爱打代码的小林18 分钟前
基于 MediaPipe 实现实时面部关键点检测
python·opencv·计算机视觉
一切尽在,你来31 分钟前
1.1 AI大模型应用开发和Langchain的关系
人工智能·langchain
极客小云36 分钟前
【ComfyUI API 自动化利器:comfyui_xy Python 库使用详解】
网络·python·自动化·comfyui
Coder_Boy_39 分钟前
基于Spring AI的分布式在线考试系统-事件处理架构实现方案
人工智能·spring boot·分布式·spring
CODECOLLECT1 小时前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件