Ameba Arduino: [RTL8710] UART – 使用UART让Ameba与电脑沟通

UART介紹

  • UART使用了两条线让双方可以同时传送资料。其中一条是Transmitting, 另一条则是Receiving,双方使用约定好的频率(baud rate)来传资料。
    Ameba除了Log UART之外,还提供多组硬体的UART。为了相容于Arudino的Software Serial API,Ameba在取名上沿用Software Serial,但底层是硬体而不是软体模拟。
    Ameba RTL8710 的UART接脚与Ameba RTL819A不同,在原本RTL8195A上常用的D0(RX)/D1(TX)这组UART在RTL8710上并没有接脚,而是改用D17(RX)与D5(TX) 。

材料准备

  • #3 Ameba RTL8710 Board x 1
  • USB to TTL Adapter x 1

范例说明

这个范例里,我们使用USB to TTL Adapter扮演UART的其中一端,另一端则是Ameba。 USB to TTL Adapter送出资料给Ameba,Ameba回传相同的资料,最后显示在萤幕上。

  • 安裝USB to TTL Adapter

USB to TTL Adapter是个将USB转成Seral介面的晶片。它一般会有4根脚,分别是3V3(或5V), GND, TX, RX。在使用USB to TTL Adapter时,通常都需要安装驱动程式。如果你的晶片是FTDI的,Windows会上网找驱动程式并自动安装,或者也可以自己找驱动程式
安装完驱动程式之后, 会在装置管理员找到对应的Serial Port, 像图中我的FTDI USB to TTL Adapter在COM8, 而Silicon USB to TTL Adapter则在COM6

5-1

  • 执行范例


首先先打开SoftwareSerialExamle范例, 它在 “File” -> “Examples” -> “AmebaSoftwareSerial” -> “SoftwareSerialExample”:

5-2
并且我们这样接线, USB to TTL Adapter的TX接到Ameba RTL8710的D17(即RX), USB to TTL Adapter的RX接到 Ameba的D5(即TX):
 
5-3

接着我们打开Serial Port Terminal, 常见的Serial Port Terminal有Putty, Tera Term。
我们以Putty说明如何设定, 先将 Connection Type选择 Serial, 并且将 Serial line填入 USB to TTL Adapter所在的Port, (Ex. COM8)。 Speed指的就是USB的baud rate,需要与Serial的另一端做搭配,这个在范例里为4800,所以我们设定4800。
5-4

接着我们切换左边的Category到 Serial的页面,其中Data bits为8, Stop bits为1, Stop bits为1, Parity为None, Flow control为None。
5-5

设定完之后按下Open, 并且按下Ameba的Reset按钮,Putty就会出现“Hello, world?” 的讯息, 这时候你在键盘上敲字,会经由USB to TTL Adapter的TX送到Ameba的Serial RX, 在程式码里面再送到Ameba的Serial TX, 最后由USB to TTL Adapter的RX接收并印出来。所以如果我们敲这个讯息 “I am fine”, 就会出现这样:

5-6

程式码说明

首先需要设定UART的Baud rate, 使用SoftwareSerial:Begin():
https://www.arduino.cc/en/Reference/SoftwareSerialBegin

使用write送出资料, 并且使用Software:available()来检查是否有资料送进来:
https://www.arduino.cc/en/Reference/SoftwareSerialAvailable
如果有资料进来, 就使用read将资料读进来。