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


    学物联网,来万物简单IoT物联网!!在这里插入图片描述

    I2C 介绍

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

    接口说明

    I2C - 构建硬件I2C对象

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

    SoftI2C - 构建软I2C对象

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

    scan - 扫描从设备

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

    • 返回值:

    start - 起始位信号

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

    • 返回值:

    stop - 停止位信号

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

    • 返回值:

    readfrom - 从I2C总线读取数据

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

    writeto - 向I2C总线写数据

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

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

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

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

    • 函数原型:writeto_mem(devAddr, memaddr,buffer)
    • 参数说明:
    参数类型必选参数?说明
    devAddrintYI2C总线上从设备地址
    memaddrintY起始地址
    bufferarray[]Y发送数据的缓冲区,期待发送的字节数为buffer的长度
    • 返回值:
    • 案例代码
    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的从机设备写入缓冲区数据
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    MVCC-
    Python多线程(01):进程和线程的区别与使用
    【距离注意残差网络:超分】
    Vue.js正式环境中配置多个请求的URL
    图04---最小生成树与实现
    Python 无废话-基础知识函数详解
    Guava入门~MapMaker
    Delphi的函数指针传递和调用
    Unity Meta Quest 一体机开发(七):配置玩家 Hand Grab 功能
    RNA脂质体纳米颗粒|雷公藤内酯醇脂质体纳米颗粒负载RNA核糖核酸|规格信息
  • 原文地址:https://blog.csdn.net/weixin_39363464/article/details/134448702