μNet3/Compact、μNet3/Standard
質問:
Ethernetのリンク速度をアプリから設定したい
関連トピック:
・Ethernetのリンク状態を参照したい
回答:
Ethernetのリンク速度を変更するにはPHYチップの制御が必要となります。弊社提供ドライバ
ではリンク速度設定は net_dev_ctl()、設定値の参照には net_dev_sts() で行えます。
上記APIの第2パラメータ「CFG_PHY_MODE」を渡すことで設定・参照が可能です。(※)
コード: 全て選択
/*【使用例】*/
ER ercd;
UH ret;
/* 通常設定 */
ercd = net_dev_ctl(1, CFG_PHY_MODE, (VP)PM_AUTO); /* 自動設定 */
ercd = net_dev_ctl(1, CFG_PHY_MODE, (VP)PM_10M_HALF); /* 10M 半二重 固定 */
net_dev_sts(1, CFG_PHY_MODE, (VP)&ret); /* 設定モード取得 */
/*
【(第1引数) デバイス番号】
Ethernetインタフェースの対象となるデバイス番号を指定します。
【(第2引数) パラメータ】
CFG_PHY_MODE PHY動作モードを設定・参照します。(通常版)
CFG_PHY_MODE_EXT PHY動作モードを設定・参照します。(拡張版) (※)
【(第3引数) CFG_PHY_MODE 設定・参照値】
/* CFG_PHY_MODE 設定・参照値 ... 以下のいずれかを指定 */
PM_AUTO 自動
PM_10M_HALF 10M 半二重 固定
PM_10M_FULL 10M 全二重 固定
PM_10M_AUTO 10M 全二重/半二重 自動
PM_100M_HALF 100M 半二重 固定
PM_100M_FULL 100M 全二重 固定
PM_100M_AUTO 100M 全二重/半二重 自動
PM_1000M_HALF 1000M 半二重 固定
PM_1000M_FULL 1000M 全二重 固定
PM_1000M_AUTO 1000M 全二重/半二重 自動
/* CFG_PHY_MODE_EXT 設定・参照値 ... 以下の値を OR演算 して指定 */
PME_SUP_ANE オートネゴシエーション有効
PME_SUP_FD 全二重有効
PME_SUP_10M 10M 速度有効
PME_SUP_100M 10M速度有効
PME_SUP_1000M 100M速度有効
/* CFG_PHY_MODE, CFG_PHY_MODE_EXT 参照値 */
PME_CFG_NSET PHY動作モードの設定値がまだ適用されていない状態。
【戻り値】
E_OK 正常終了。
E_PAR サポートしていない設定値を設定・参照した。
CFG_PHY_MODE_EXT パラメータで指定した場合、組み合わせにより
CFG_PHY_MODE_ パラメータでの参照が失敗する場合があります。
【制限事項】
「Ethernet動作中」のPHY動作モード変更はPHYチップにより通信が不安定・停止
となる場合があるため、Ethernetドライバ、μNet3停止時にご利用下さい。
*/