NuttX for Raspberry Pi Pico로 유선 LAN 연결

NuttX for Raspberry Pi Pico에서 SPI를 사용할 수 있게 되었으므로 다음 SPI 연결의 네트워크 모듈을 사용하여 네트워크에 연결합니다.
디바이스 측으로부터의 인터럽트를 받아들일 필요가 있으므로, GPIO 드라이버에 인터럽트 대응을 추가했습니다.

연결



Raspberry Pi Pico와 ENC28J60을 다음과 같이 연결합니다.

이 기사 등에서도 접하고 있습니다만, Amazon등에서 팔리고 있는 상기의 ENC28J60 모듈은 실크 인쇄의 단자의 표기가 일부 이상하기 때문에 주의가 필요합니다.


ENC28J60
Pico 터미널
Pico 핀 번호


GND
GND
3, 38과 같은 GND 핀 중 하나

3.3 (Q3)
3V3
36

SI (ST)
GP15 (SPI1 TX)
20

SCK
GP14 (SPI1 SCK)
19

CS
GP13 (SPI1 CSn)
17

SO
GP12 (SPI1 RX)
16

INT (LNT)
GP11
15

RST
GP10
14


NuttX 빌드



구성에 raspberrypi-pico:enc28j60를 지정하여 빌드합니다.
ENC28J60, SPI 외에도 네트워크 주변 기능이 활성화되어 있습니다.
$ git clone https://github.com/apache/incubator-nuttx.git nuttx
$ git clone https://github.com/apache/incubator-nuttx-apps.git apps
$ cd nuttx
$ ./tools/configure.sh raspberrypi-pico:enc28j60
$ make

ENC28J60의 접속처는, .config의 이하의 장소에서 설정합니다. 이를 변경하면 연결된 SPI, GPIO 핀 번호를 변경할 수 있습니다.
CONFIG_RP2040_ENC28J60_SPI_CH=1
CONFIG_RP2040_ENC28J60_INTR_GPIO=11
CONFIG_RP2040_ENC28J60_RESET_GPIO=10

네트워크 주변은 다음과 같은 설정으로 되어 있습니다.
  • IP 주소는 DHCP로 취득
  • DNS 서버는 Google Public DNS (8.8.8.8)를 사용합니다.
  • NTP 클라이언트를 시작하여 시간을 가져옵니다.

    각각 .config의 다음 위치에서 설정됩니다.
    CONFIG_NETINIT_DHCPC=y
    CONFIG_NETINIT_DNS=y
    CONFIG_NETINIT_DNSIPADDR=0x08080808
    CONFIG_SYSTEM_NTPC=y
    

    시작



    NuttX를 시작하고 네트워크 주위를 다양하게 조작해보십시오.
    (시작할 때 DHCP에서 주소를 얻고 있기 때문에 첫 번째 프롬프트가 나올 때까지 약간 걸립니다)

  • 좋은 웹페이지 즐겨찾기