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

http://mbed.org/media/uploads/mbedofficial/ethernet_interfaces.png

初期化

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オートネゴシエーション
HalfDuplex1010 Mbps、半二重
FullDuplex1010 Mbps、全二十
HalfDuplex100100 Mbps、半二重
FullDuplex100100 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);
    }
}

詳細 戻る (back)


Please log in to post comments.