スイッチサイエンスでも2012/03からり出した様だ。 http://www.switch-science.com/products/detail.php?product_id=875 WIZ820ioお試しキャンペーン http://trac.switch-science.com/wiki/2012-WIZ820io Strawberry Linux でも売っている、 http://strawberry-linux.com/catalog/items?code=36018超小型イーサーネットモジュール。 今後はこれがメジャーになって行くと思われる。(オントカヨ *Wiz820io(W5200)のドライバ Arduino用のWiz820io(W5200)のドライバ。 「Download」タブにある。 「Arduino 002x用」と「Arduino 1.0用」のドライバがある。 W5100というのが、今までArduinoのEthernet Shieldとして使われてきたIC。 WizNetが提供するドライバソフトは、「w5100.h」,「w5100.cpp」という今までと同じ名前で 「W5100」,「W5200」の2つのICに対応する。 (デフォルトでW5200用になっている) この2つのドライバの違いを見て驚いた。 以下の1バイト送信ではWiz820io(W5200)の方が「1バイト通信時間分」オーバヘッドが多い。
uint8_t W5100Class::write(uint16_t _addr, uint8_t _data) { setSS(); #ifdef W5200 SPI.transfer(_addr >> 8); SPI.transfer(_addr & 0xFF); SPI.transfer(0x80); SPI.transfer(0x01); #else SPI.transfer(0xF0); SPI.transfer(_addr >> 8); SPI.transfer(_addr & 0xFF); #endif SPI.transfer(_data); resetSS(); return 1; }ところが、連続書き込みでは、なんと、Wiz820io(W5200)の方が4倍高速。(この部分だけ見れば) (データ量が50バイト程度以上なら) 読出しも同じ。 て、ゆーか、 W5100て、こんな送り方なのかぁ〜? (TT) みたいな。 orz (パラレル転送を使う手もなくはない)uint16_t W5100Class::write(uint16_t _addr, uint8_t *_buf, uint16_t _len) { #ifdef W5200 setSS(); SPI.transfer(_addr >> 8); SPI.transfer(_addr & 0xFF); SPI.transfer((0x80 | ((_len & 0x7F00) >> 8))); SPI.transfer(_len & 0x00FF); for (int i=0; i<_len; i++) { SPI.transfer(_buf[i]); } resetSS(); #else for (int i=0; i<_len; i++) { setSS(); SPI.transfer(0xF0); SPI.transfer(_addr >> 8); SPI.transfer(_addr & 0xFF); _addr++; SPI.transfer(_buf[i]); resetSS(); } #endif return _len; }*実際の動作状況? Wiz820ioをまだ買ってないものの、検索すると数名の方が果敢にトライして、今一つアレな様だ。(オイ どうなんでしょうか? *Wiz820io for Auduino ドライバの使い方 上のWiz820io対応ドライバは、「w5100.h」,「w5100.cpp」の2つのファイルをArduinoの libraries/Ethernet/utility フォルダに上書きします。 1,Wiz820io(w5200)を使うなら下記のバグ対応をしておきます。 2,今まで通りw5100を使ったイーサネットシールドを使いたい時は、 「w5100.h」の「#define W5200」を以下のように無効にします。#ifndef W5100_H_INCLUDED #define W5100_H_INCLUDED #include <avr/pgmspace.h> #include <SPI.h> //#define W5200 #ifdef W5200 #define MAX_SOCK_NUM 8 #else #define MAX_SOCK_NUM 4 #endifstastaka's Blog さんのページも参考になります。 WIZ820IO https://stastaka.wordpress.com/2012/01/10/wiz820io/ *ライブラリのバグ対応 ?(1) Wiz820io(w5200)で使うときは、 「libraries/Ethernet/Ethernet.h」の最初の方を以下のように2カ所修正します。 (w5100で使うときも以下のままで大丈夫)#ifndef ethernet_h #define ethernet_h #include <inttypes.h> #include "utility/w5100.h" #include "Client.h" #include "Server.h" //#define MAX_SOCK_NUM 4この対応をしておかないと「MAX_SOCK_NUM」定義の整合性が取れない。 これで、何がどの程度どうなるかは未検証だけど、修正しておくのが無難と思われる。 少なくともw5200でソケット数が5以上になると確実におかしくなるはず。 *転送速度 高速通信したい場合、以下のページが参考になりそうです。 放課後の電子工作 掲示板 http://www.chiaki.cc/cgi-bin/yybbs/yybbs.cgi?list=pickup&num=1591 *マイコンとの接続 マイコンのMOSI(SPI out) とw5200/w5100の MOSI(SPI in)端子をつなぐ。 同様にMISO-MISOをつなぐ。 両方とも「同じ名称の端子同士」をつなぐ。 *w5100とw5200の違い SPIで使う限りWiz820io(w5200)の方が性能が良さそう。
| w5100 | w5200 | |
| Ethernet Shield / WIZ812MJ | Wiz820io | |
| SPI clock | 80MHz ? | |
| 最大Socket数 | 4 | 8 |
| 受信バッファ | 8kbyte | 16kbyte |
| 送信バッファ | 8kbyte | 16kbyte |
| バースト転送 | - | あり |
| ケーブル接続 判別ビット | - | あり |
| Power Down mode | - | あり |
上はもう入手できない「w5300 datasheet v1.1.1」の日本語版から抜粋したもの。
他の英語版データシートにはない「性能向上」や「勧奨する」という記述がある。
No Delayed ACK を有効にする:
Arduino 0023の場合:
「libraries/Ethernet」下の「Server.c」と「Client.c」の中の「socket()関数」の
引数を変更します。(それぞれ1カ所しかない)
Sever.cでvoid Server::begin()内の「socket()」呼び出しを
socket(sock, SnMR::TCP, _port, SnMR::ND );
Client.cでClient::Client(...)内の「socket()」呼び出しを
socket(_sock, SnMR::TCP, _srcport, SnMR::ND);
の様に変更します。
Arduino 1.0の場合:
同様に「EthernetServer.c」「EthernetClien.c」内の「socket()」呼び出しを変更します。
*w5100のエラッタ
ち、力が尽きた orz (オイ
*w5100/w5200関連情報
WizNetの「Q&A」のページ
ここで「w5100」や「w5200」で絞り込むと情報が得られる。
w5100/w5200は数が多くて大変 orz
http://www.wiznet.co.kr/Sub_Modules/en/technical/q_a.asp
この手のメーカーとしては、めずらしく「WizNet」の中の人がかなり「りちぎ」に
質問に答えている。
w5100の転送速度の表
[Question] What is the performance of W5100?
[Question] What is Hybrid mode of W5100?
SOCK_ARPステータスの補足説明
3Mbps〜4Mbps
http://www.wiznet.co.kr/Sub_Modules/en/technical/Q_A_View.asp?boardcd=101&SF_AO=And&PK_NUM=24921&page=3&SF_Part=writer,%20subject,%20contents&SF_KeyWord=w5200&SF_AO=And
Maximum speed with W5200 on W5200E01-M3 board
PIC24EVB用のサンプルコード
http://www.wiznet.co.kr/UpLoad_Files/ReferenceFiles/EVBs_v11.rar
参考:
トラ技2009年3月号
部品箱の逸品 TCP/IPをハードウェアで内蔵するNIC W5100(改訂)
http://toragi.cqpub.co.jp/Portals/0/download/2009/TR0903W.zip
超小型イーサーネットモジュール。
今後はこれがメジャーになって行くと思われる。(オントカヨ
*Wiz820io(W5200)のドライバ
Arduino用の
