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將資料讀進來。