I2C - 发送与接收资料

材料准备

  • AmebaD [ AMB23 / AMB21 / AMB22 / BW16 / BW16-TypeC ] x 1
  • Arduino UNO x 1

范例说明

I2C 是微控制器上很常见的模块,它只需要 2 根线,就可以实现高达 3.4Mbps 的数据速率。它以主从模式工作,一个主机可以同时连接多达 128 个从机,使其成为微控制器和传感器之间非常通用的通信协议。
这里我们将使用Ameba作为I2C主控,Arduino UNO作为从属来实现I2C收发。

发送数据
在连接之前,请先将以下代码上传到Arduino UNO中,“Examples -> Wire -> Slave_receiver”。

接收数据
在连接之前,请先将以下代码上传到Arduino UNO中,“Examples -> Wire -> Slave_sender”。

AMB21/AMB22
Unit sda scl
PA_26
PA_25
AMB23
Unit sda scl
PB_0
PA_31
BW16/BW16-TypeC
Unit sda scl
PA_26
PA_25

程式码

请一行接一行地复制粘贴以下代码到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.writeto(8, bytes([123])) # send 1 byte to slave with address 8 with integer '123'

#After uploading Slave_sender example to Arduino UNO, copy this code to the
i2c.readfrom(8, 6) # Receive 6 bytes from slave
请先确认已安装QQ通讯软体