Ameba Arduino: [RTL8710AF] I2C - 利用I2C让Ameba与Arduino UNO沟通
I2C介紹
- I2C使用了两根接脚,一根是资料线(SDA),另一根是时脉线(SCL)。 Master藉由控制SCL让Slave知道有东西要传,而资料就可以在SDA上面传送。 I2C在当初Arduino的范例里,为了亲易近人而称呼I2C为Wire,虽然后来Arduino也承认取名为Wire看来是个错误,但在Arduino的example仍然常常看到。
(Wire取名的細節請參考此篇中的”Use full, everyday words.”)
材料准备
- #3 Ameba RTL8710 Board x 1
- Arduino UNOx 1
范例说明
这个范例里,我们将Ameba当作I2C Master Writer, 而Arduino为I2C Slave Receiver。
I2C Master会传字串到I2C Slave,并且I2C Slave将字串印出来。
I2C Master会传字串到I2C Slave,并且I2C Slave将字串印出来。
- 准备Arduino Uno为 I2C Slave
首先我们先准备 Arduino,先将Arduino IDE选成Arduino, “Tools” -> “Board” -> “Arduino/Genuino Uno”:
接着打开 Slave Receiver 的范例,”Examples” -> “Wire” -> “slave_receiver”
- 准备 Ameba RTL8710 为 I2C Master
我们额外再开一个Arduino IDE,确定板子是 Ameba, “Tools” -> “Board” -> “Ameba RTL8710”
然后打开 Master Writer 的范例, “File” -> “Examples” -> “AmebaWire” -> “master_writer”
- 接线
Arduino的范例里,使用A4当作I2C SDA, A5为I2C SCL。 RTL8710在这个位置并没有接脚,而是在Arduino UNO板子上的SDA/SCL的位置上,我们接线如下图:
打开包含Arduino Uno的Arduino IDE,开启Serial Monitor, “Tools” -> “Serial Monitor”, 会出现Serial Monitor的视窗,这个视窗可以让你看到Arduino Uno印出来的讯息。
接着按下Arduino Uno的Reset按钮,让Arduino Uno等待I2C master连接。
再按下Ameba RTL8710的Reset按钮,让Ameba开始传讯息。这时候会看到Serial Monitor每隔0.5秒出现新的讯息,这样就代表成功了。
再按下Ameba RTL8710的Reset按钮,让Ameba开始传讯息。这时候会看到Serial Monitor每隔0.5秒出现新的讯息,这样就代表成功了。
程式码说明
Ameba使用同样的Arduino范例,Arduino官方网站的范例说明可以参考这里:
https://www.arduino.cc/en/Tutorial/MasterWriter
首先Wire.begin()会先设定address, 如果是Master可以不用设定address:
https://www.arduino.cc/en/Reference/WireBegin
接着Master使用Wire.beginTransmission()来设定要传到哪一个Slave:
https://www.arduino.cc/en/Reference/WireBeginTransmission
使用Wire.write()送资料, 并且最后使用Wire.endTransmission()将所有资料传出去:
https://www.arduino.cc/en/Reference/WireEndTransmission
https://www.arduino.cc/en/Tutorial/MasterWriter
首先Wire.begin()会先设定address, 如果是Master可以不用设定address:
https://www.arduino.cc/en/Reference/WireBegin
接着Master使用Wire.beginTransmission()来设定要传到哪一个Slave:
https://www.arduino.cc/en/Reference/WireBeginTransmission
使用Wire.write()送资料, 并且最后使用Wire.endTransmission()将所有资料传出去:
https://www.arduino.cc/en/Reference/WireEndTransmission
Copyrights ©瑞晟微电子(苏州)有限公司 2021. All rights reserved. 使用条款