Ameba MicroPython: [RTL8722CSM] [RTL8722DM] I2C

class I2C – 积体汇流排电路
示例
I2C 发送与接收:
• 准备材料: Ameba x 1, Arduino UNO x 1
• 步骤:
        I2C是一个微控制器上非常常见的模块,它只需要两根线就可以实现最大3.4Mbps的传输速度。它使用主从模式,一个主机可以同时连接最多128个从机,因此经常用在微控制器与感应器之间的数据传输。
这里我们使用ameba作为主机来连接从机Arduino UNO,来验证I2C的发送和接受。
在连接之前,请先将以下代码上传到Arduino UNO中,“Examples -> Wire -> Slave_receiver”
接下来,请按以下所示来连接,此处我们选择PA_26 作为 SDA引脚,PA_25 作为 SCL.
注意: 目前仅支持一组I2C在MicroPython上使用,引脚如下
Unit SDA SCL
0
PA_26
PA_25
1
请一行接一行地复制粘贴以下代码到REPL上,来观察代码效果。
from machine import Pin, I2C
i2c = I2C(scl = "PA_25", sda = "PA_26", freq=100000) # configure I2C with pins and freq. of 100KHz
i2c.scan()
i2c.writeto(8, 123) # send 1 byte to slave with address 8
i2c.readfrom(8, 6) # receive 6 bytes from slave
API 文件
构造函数
I2C(unit_id [选填], “sda_pin” [必填], “scl_pin” [必填], frequency [选填])
创建一个I2C对象并关联其到所给的引脚上,使用别的参数来配置该对象。如此便可在I2C上发送以及接收数据。
• unit_id: 硬件I2C的组号, 如不填则使用默认值
• “sda_pin”: SDA引脚名
• “scl_pin”: SCL引脚名
• frequency: I2C 的运行频率, 如不填则使用默认值
注意:所有选填参数的默认值如下
参数 默认值
Unit_id
0
Frequency
100000 (Hz)
方法
I2C.reset()
该方法取消I2C 设备的初始化.
 
I2C.scan()
该方法扫描并返回可用I2C地址.
 
I2C.readinto( buf [必填], flag [选填])
该方法读取I2C缓存器中的数据并存入用户定义的缓存器中
• buf: 一个string / array /byte array 类型的缓存器
• flag: 一个布尔标记, 如果是True则在数据末尾发送 NACK, 反则反之
 
I2C.write(buf [必填])
该方法发送已存在buf中的数据
• buf: 一个string / array /byte array 类型的缓存器
 
I2C.readfrom(addr [required], len [required], stop [optional])
该方法从所给的地址上读取len长度的数据。如果stop值为真,则在传输结尾发送STOP字节。
• addr: 读取的地址
• len: 要读取的数据长度
• stop: 布尔标记,若True则在传输结束发送STOP字节
 
I2C.readfrom_into(addr [必填], buf [必填], stop [选填])
该方法从所给的地址上读取数据并存入用户自建的缓存器中,如果stop值为真,则在传输结尾发送STOP字节。
• addr: 读取的地址
• buf: 一个string / array /byte array 类型的缓存器
• stop: 布尔标记,若True则在传输结束发送STOP字节
 
I2C.writeto(addr [必填], value [必填], stop [选填])
该方法发送一个整数数据到所给的地址上。如果stop值为真,则在传输结尾发送STOP字节。
• addr: 读取的地址
• value: 要发送的整数数值
• stop: 布尔标记,若True则在传输结束发送STOP字节
请先确认已安装QQ通讯软体