STM32F769 Discovery Kit > Ethernet > pingが通るまでの手順 > trap: PHY addressの指定でハマる (STM32CubeIDEのデフォルト1では動かない)


動作環境
Ubuntu 18.04 LTS
STM32CubeMX v5.2.1
STM32CubeIDE v1.0.1
基板: STM32F769 Discovery Kit
(Ethernet PHY:  LAN8742A-CZ-TR from MICROCHIP @ UM2033 Rev 6 p19 6.11 Ethernet)

概要

  • Ethernet設定をしてpingが通るようにする

大切なこと (PHY addressを0にする)

STM32CubeIDEを使った設定ではPHY addressは1に設定される。そのままでは動かない。

PHY addressは0にすること

これを知らないで3日溶かした (平日の夜 * 3)。

  • LWIP with STM32F769
    • > Make sure you set the PHY address to 0. STM32CubeMX application STILL wants to set it to 1.

ここで「PHYアドレスは0にしろ」とある。STM32CubeIDE(STM32CubeMX)では初期値が1になる。

ネットワーク環境

  • ゲートウェイ: 192.168.0.1
  • PC: 192.168.0.9
  • STM32F769 Discovery Kit: 192.168.0.10とする

手順

手順は以下となる。

  • `1. STM32 Projectプロジェクトを作る

    • Part Number Searchにて「769NI」
    • Reference: STM32F769NIHxを選択
    • プロジェクト名(任意): F769NI_ping_190808_2138
  • `2. FREERTOSを有効にする

    • defaultTaskのStack Sizeを512に増やしておく
      • 今回の実装では不要かもしれないが

  • `3. ETHを設定する
    • Mode: RMIIにする
    • PHY Address: 0にする

  • `4. RCCのHSEを設定する
    • ST-LINK側のオシレータを使用することにした > BYPASS Clock Source選択

  • `5. LWIPを有効にする
    • LWIP_DHCP (DHCP Module): Disabledにする
    • IP_ADDRESS : 192.168.000.010
    • NETMASK: 255.255.255.000
    • GATEWAY: 192.168.000.001

  • `6. SYSの設定をする
    • Debug: Serial Wire
      • 今回は使わないかもしれない
    • Timerbase Source: TIM14 (Sys Tick以外の任意)

  • `7. Clock 設定をする
    • HSEのInput Frequency: 8MHzに
    • 他の設定は下記の画像を参考に

  • `8. 保存してコードを生成する

    • > Do you want generate Code?
    • [Yes]
  • `9. ビルドして実行すると192.168.0.10にpingが通るようになる

トラブル

上記を実行して、STM32に接続できなくなった時はLWIPを再設定してみる。

その後、ビルドしてデバッガ接続するが、デバッガ接続できない時は下記を実施する。