I2C是一个微控制器上非常常见的模块,它只需要两根线就可以实现最大3.4Mbps的传输速度。它使用主从模式,一个主机可以同时连接最多128个从机,因此经常用在微控制器与感应器之间的数据传输。这里我们使用ameba作为主机来连接从机Arduino UNO,来验证I2C的发送和接受。
在连接之前,请先将以下代码上传到Arduino UNO中,“Examples -> Wire -> Slave_receiver”
接下来,按以下所示来连接,此处我们选择PA_26 作为 SDA引脚,PA_25 作为 SCL.
请一行接一行地复制粘贴以下代码到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