Ethernet
Ethernet
Information
本ページは私家版のため、誤り等あればご指摘ください。
最新の情報は公式のドキュメントをご参照ください。
http://mbed.org/handbook/Ethernet
TCP/IPプロトコルスタックについては http://mbed.org/handbook/Networking
イーサネットの機能とmbed基板上のPHYにより、コア内臓とモジュラージャックを付けることによりEthernetへ接続できます。
物理層を制御する最低限のライブラリです。実際にTCP/IPを使用するには EthernetNetIf 等を使用します。
http://mbed.org/cookbook/Networking-Stack-Releases

初期化
Ethernet eth;
eth: 名前
送信
val = eth.write(data, size);
data: 送信するデータの配列ポインタ(char *)
size: dataのバイト数
val: 準備できたバイト数
val = eth.send();
val: 0=失敗、1=成功
受信
val = eth.receive();
val: 受信したバイト数
val = eth.read(data, size);
data: 受信データを入れる配列ポインタ(char *)
size: dataのバイト数
val: 読み込んだバイト数
MACアドレス
MACアドレスを設定する
eth.address(mac);
mac: MACアドレス(char *)
mbedのMACアドレス
自身のMACアドレスを読み込む。
extern "C" void mbed_mac_address(char *s);
mbed_mac_address(&mac);
リンク状態
val = eth.link();
val: 0=オフライン、1=オンライン
リンク速度
eth.set_link(mode);
| mode | 備考 |
|---|---|
| AutoNegotiate | オートネゴシエーション |
| HalfDuplex10 | 10 Mbps、半二重 |
| FullDuplex10 | 10 Mbps、全二十 |
| HalfDuplex100 | 100 Mbps、半二重 |
| FullDuplex100 | 100 Mbps、全二十 |
例
受信したデータのMACアドレスを表示
#include "mbed.h"
Ethernet eth;
int main() {
char buf[0x600];
while(1) {
int size = eth.receive();
if(size > 0) {
eth.read(buf, size);
printf("Destination: %02X:%02X:%02X:%02X:%02X:%02X\n",
buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]);
printf("Source: %02X:%02X:%02X:%02X:%02X:%02X\n",
buf[6], buf[7], buf[8], buf[9], buf[10], buf[11]);
}
wait(1);
}
}
Please log in to post comments.
