因為網路上已經有許多的介紹文,所以本魔在此就不多贅述。
首先先講講一般ESP8266的接法及使用,
標準接線圖 |
實際範例 |
就可以將下列程式碼燒入86duino,
這樣就可以透過來做AT Command的控制。
void setup()
{
Serial.begin(9600);
Serial1.begin(115200);
}
void loop()
{
while (Serial1.available()) {
Serial.write(Serial1.read());
}
while (Serial.available()) {
Serial1.write(Serial.read());
}
}
燒入後可以用 |
至於下AT Command的方法請參考文件。
然而為什麼要改裝到SPI上呢?
請看下圖!
改裝後 |
因為在本魔實驗時常常遇到因機器人晃動造成ESP8266電源接觸不良導致斷線,
而且這樣也不用考慮整線的問題。
那麼就開始進入我們的教學,
首先要做出我們的轉接座。
轉接座及ESP8266 |
兩顆母座2x5 ROHS及一條cable
母座2x5 ROHS |
或許你會問,
為什麼需要多一條線?
SPI不就有電源輸出了嗎?
為什麼還要再跳線?
這是因為SPI是只有5v輸出,
而ESP8266的電源必須3.0V至3.6V間,
所以多拉一條跳線接3.3v。
本魔測試過ESP8266接5v電源也是可以工作的
,只是有過熱燒壞的風險,或其他狀況,所以也不是很推薦這樣使用。
SPI腳位圖 |
轉接圖 |
本魔的方法是,將不需要的PIN腳拔掉,再將PIN腳折至相連。
焊接前 |
焊接後 |
所以本魔在中間灌入熱熔膠,固定並防止短路。
切記接上ESP8266時不要接反了,
為防止接錯本魔還貼了辨識用的紅紙。
熱熔膠及辨識用的紅紙 |
結束後就可以撰寫轉換的程式囉!
在86Duino libraries中的io.h有一個io_outpb,
io_outpb它是可以直接存取硬體IO的function,
這function是非常低階的控制,
基本上是要到Hacker等級的才會玩的!
所以如果你不是Hacker的話就不要亂玩唷!
因為很重要所以要標紅字。
直接存取硬體IO的話就可以將你要的腳位切換成你要的功能,
所以首先要先去了解86Duino的IO Port,
可以在官方找到86Duino CPU的Datasheet(Vortex86EX Datasheet V1.4),
我們可以看到P306.文中的CrossBar Config Registers內有寫各功能的編號,
找出我們所需要的就是將COM1的TX、RX更換為SPI的CS、DI,
000001b COM1-TXD1 000010b COM1-RXD1 001001b SPI-CS1 001100b SPI-DI
而COM1的TX、RX及SPI的CS、DI的address分別為:
0x0A12 COM1 TX 0x0A13 COM1 RX 0x0A20 SPICS 0x0A22 SPIDI如此一來我們就可以寫出接上轉接座的控制程式碼:
void setup() { io_outpb(0x0A12,0x00); //enable COM1 TX pin io_outpb(0x0A13,0x00); //enable COM1 RX pin io_outpb(0x0A20,0x02); //SPICS to RX io_outpb(0x0A22,0x01); //SPIDI to DX Serial.begin(9600); Serial1.begin(115200); } void loop() { while (Serial1.available()) { Serial.write(Serial1.read()); } while (Serial.available()) { Serial1.write(Serial.read()); } }
0 留言:
張貼留言