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
0
PA_26
PA_25
AMB23
Unit sda scl
0
PB_0
PA_31
BW16/BW16-TypeC
Unit sda scl
0
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通訊軟體