跳转到内容

Mizar32/以太网

来自维基教科书,开放书籍,为开放世界

Mizar32 有一个附加硬件模块,让我们可以将 Mizar32 连接到互联网。

硬件视图

[编辑 | 编辑源代码]

以太网附加模块是一个半宽板,它插入附加总线连接器 BUS1、BUS2 和 BUS3 的左侧。硬件模块将 AVR32UC3A 芯片提供的以太网信号转换为 RJ45 连接器上连接到集线器、交换机或路由器所需的电压电平。

该板搭载 DP83848 以太网收发器,它生成和接收原始以太网信号,并将它们的内容使用 RMII 协议传达给主板上的 AVR32UC3,这减少了实现此目的所需的总线引脚数量。

RJ45 引脚 名称 信号
1 TX+ 发送数据
2 TX- 发送数据
3 RX+ 接收数据
6 RX- 接收数据
信号名称 AVR32 引脚 总线引脚 名称
ETHERNET PA24 BUS2 引脚 3 以太网中断
REF_CLK PB0 BUS1 引脚 3 50MHz 参考时钟
TX_EN PB1 BUS1 引脚 4 发送使能
TX0 PB2 BUS1 引脚 5 发送数据
TX1 PB3 BUS1 引脚 6 发送数据
RX0 PB5 BUS2 引脚 5 接收数据
RX1 PB6 BUS2 引脚 6 接收数据
RX_ER PB7 BUS2 引脚 7 接收错误
MDC PB8 BUS2 引脚 4 MDIO 时钟
MDIO PB9 BUS2 引脚 8 MDIO 数据
RX_DV PB15 BUS1 引脚 7 接收数据有效

软件视图

[编辑 | 编辑源代码]

Alcor6L 有一个 net 模块,它允许您与其他计算机建立 TCP 连接并接收来自它们的传入 TCP 连接,发送和接收数据并断开连接。

以下示例等待端口 23 上的传入连接,然后从网络接收数据并将其打印到控制台。

在 eLua 中

-- wait for an incoming connection on the TELNET port
socket, remote, err = net.accept( 23 )
if err ~= net.ERR_OK then
  print( "Error waiting for connection" )
else
  -- print all lines of data until they close the connection
  repeat
    res, err = net.recv( socket, "*l" )  -- That's *L not *One
    if err ~= net.ERR_OK then
      print( res )
    end
  until err ~= net.ERR_OK
end
net.close( socket )

如果以太网硬件不存在,则可以通过调用 pio.pin.setdir() 将其总线引脚用作通用 PIO 引脚。例如,要将 BUS1 引脚 6 用作 PIO 输出,您可以使用

 pio.pin.setdir(pio.OUTPUT, pio.PB_3)

在 PicoLisp 中

请注意:Alcor6L 还没有 PicoLisp 的以太网模块。我们正在努力。它将很快得到支持。请参见 问题 #10

IP 地址分配

[编辑 | 编辑源代码]

模型 A 和 B 标准固件中包含的以太网软件使用 DHCP 请求以太网地址。如果它无法在本地网络上找到 DHCP 服务器,它将在 60 秒后放弃并为自己分配地址 192.168.1.10,网关和 DNS 服务器为 192.168.1.1。

您可以使用 Mizar32 Web Builder 创建自己的固件,从而分配一个将立即可用的固定 IP 地址:单击“Mizar32 Web Builder”,然后单击“立即构建”,然后选择 BUILD_UIP,清除 BUILD_DHCP,并在页面底部的字段中设置所需的 IP 地址。有关将生成的固件文件编程到板上的说明,请参见页面“刷写固件”。

进一步阅读

[编辑 | 编辑源代码]
华夏公益教科书