咸鱼Micropython—I2C

咸鱼Micropython—I2C

I2C是two-wire serial protocol(双线串行通信协议,有 的地方也叫做Inter-integrated circuit)的简称,它是嵌入式系统中最常用的接口之一。I2C只需要使用SDA和SCL两个信号线,就可以和其他带 有I2C接口的芯片连接,一个I2C总线上可以挂载多个芯片,因此可以减 少连线的数量。I2C接口的主要特点是信号线采用开漏连接方式以及支 持总线连接(UART 一般情况只能一对一连接),并且支持多个主机以及冲突管理机制。因为I2C和SPI都有独立的时钟信号,所以也叫做同步 串行总线,数据传输速率也比UART快。

基本用法

from pyb import I2C

i2c = I2C(1)                         # 使用I2C1
i2c = I2C(1, I2C.MASTER)             # 使用i2c1并设置为主机模式
i2c.init(I2C.MASTER, baudrate=20000) # 初始化
i2c.init(I2C.SLAVE, addr=0x42)       # 设置为从机模式地址为0x42
i2c.deinit()                         # 关闭i2c

i2c.init(I2C.MASTER)
i2c.send('123', 0x42)        # 发送3个字节到0x42 
i2c.send(b'456', addr=0x42)  # 地址关键字

i2c.is_ready(0x42)           # 检测I2C设备是否响应
i2c.scan()                   # 搜索总线上的设备
                          
i2c.mem_read(3, 0x42, 2)     # 从地址为0x42的内存中读取3字节,
                            
i2c.mem_write('abc', 0x42, 2, timeout=1000) # 写入数据

I2C的用法:

  • class pyb.I2C(bus, …)
    bus:I2C总线的序号,数量与具体的型号有关。

  • i2c.deinit(),解除I2C定义

  • i2c.init(mode, *, addr=0x12, baudrate=400000, gencall=False),初始化
    mode,只能是 I2C.MASTER 或 I2C.SLAVE
    addr,7位I2C地址
    baudrate,时钟频率
    gencall,通用调用模式

  • i2c.is_ready(addr),检测I2C设备是否响应,只对主模式有效

  • i2c.mem_read(data, addr, memaddr, *, timeout=5000, addr_size=8),读取数据
    data,整数或者缓存
    addr,设备地址
    memaddr,内存地址
    timeout,读取等待超时时间
    addr_size,memaddr的大小。8位或16位

  • i2c.mem_write(data, addr, memaddr, *, timeout=5000, addr_size=8),写入数据,参数含义同上

  • i2c.recv(recv, addr=0x00, *, timeout=5000),从总线读取数据
    recv,需要读取数据数量,或者缓冲区
    addr,I2C地址
    timeout,超时时间

  • i2c.send(send, addr=0x00, *, timeout=5000)
    send,整数或者缓冲区
    addr,I2C地址
    timeout,超时时间

  • i2c.scan(),搜索I2C总线上设备。
    搜索I2C总线上地址从0x00 到 0x7F的设备,结果通过列表返回。如 果没有搜索到设备,返回空列表。
    咸鱼Micropython—I2C_第1张图片

你可能感兴趣的:(硬件,#,micropython库)