打印
[技术讨论]

NUCLEO-H563ZI以太网使用(micropython)

[复制链接]
342|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 vincent20120907 于 2024-9-10 13:21 编辑

#申请原创#
NUCLEO-H563ZI 是一款由意法半导体(STMicroelectronics)推出的基于 STM32H563ZI 的微控制器开发板。这款微控制器采用了高性能的 ARM Cortex-M33 32位 RISC 核心,工作频率高达 250 MHz,并且具备单精度浮点运算器(FPU)和内存保护单元(MPU),以增强应用程序的安全性。
本篇笔记分享为NUCLEO-H563ZI烧录Micropython固件,并点亮板载LED灯。
1、NUCLEO-H563ZI简介
NUCLEO-H563ZI 开发板的主要特点包括:
  • 2MB 的闪存和 640KB 的 SRAM
  • 丰富的外设资源,包括但不限于 ADC、DAC、SPI、I2C、UART、USB接口、以太网口等
  • 板载 ST-Link V3 调试器,方便程序下载和调试
  • 支持多种开发环境,包括 IAR、Keil、STM32CubeIDE、Arduino以及MicroPython环境

在实际应用中,NUCLEO-H563ZI 可以用于各种物联网(IoT)设备的开发,其高性能和丰富的外设使其成为机器学习程序和低功耗 AIoT 控制器的理想选择。
2、以太网介绍
以太网是一种广泛使用的局域网技术,定义了数据传输的物理和数据链路层标准。它最初由Xerox公司在1970年代发明,并由DEC、Intel和Xerox共同开发成为标准化技术。以太网使用CSMA/CD协议来管理网络中的设备如何共享通信媒介。
以太网的传输速度从最初的10Mbps发展到如今的10Gbps甚至更高。它由网络接口卡(NIC)、传输介质(如双绞线、光纤)、集线器、交换机和路由器等设备组成。以太网帧结构包括目的和源MAC地址、类型、数据和校验和。
尽管无线技术发展迅速,以太网因其高稳定性和速度,仍然是有线网络连接的首选。
3、原理
以太网通信的原理基于 OSI 模型的物理层和数据链路层。在物理层,以太网使用双绞线或光纤作为传输介质,通过电信号或光信号传输数据。数据链路层则负责在物理层的基础上实现数据的封装、传输和错误检测。

以太网使用 MAC 地址来标识网络上的每个设备,确保数据能够准确送达目标。每个以太网帧都包含目的 MAC 地址和源 MAC 地址,这样网络设备就可以识别数据包的发送者和接收者。此外,以太网帧还包含类型字段,用于指示上层协议类型,如 IP、ARP 等。

为了有效管理网络资源,以太网采用 CSMA/CD 协议。当设备想要发送数据时,它会首先监听信道是否空闲。如果信道空闲,设备会发送数据;如果信道忙,则等待直到信道空闲。如果在数据发送过程中发生冲突,设备会停止发送,并在随机时间后重试,这个过程称为碰撞检测。

以太网的这种工作机制虽然简单,但非常有效,能够支持高速、可靠的数据传输。随着技术的发展,以太网的传输速率不断提高,从最初的 10Mbps 到现在的 10Gbps 甚至更高,满足了日益增长的数据传输需求
4、连接以太网
官方示例:https://docs.micropython.org/en/latest/library/network.LAN.html
DHCP:https://forum.micropython.org/viewtopic.php?t=6804
我们看到了这个开发板上面有网口,于是便用micropython对其编程测试,参考代码如下:
import network
from microdot
import Microdot
nic = network.LAN()
nic.active(True)
print(nic.isconnected())
print(nic.status())
nic.ifconfig('dhcp')
print(nic.ifconfig())
print(nic.config("mac"))
app = Microdot()
@app.route('/')
def index(request):   
return '''<!doctype html><html>  
<head>   
<title>NUCLEO_H563ZI网页测试</title>   
<meta charset="UTF-8">  </head>  <body>   
<h1>NUCLEO_H563ZI网页测试</h1>  
</body></html>''', 200, {'Content-Type': 'text/html; charset=utf-8'}
if __name__ == '__main__':   
print(nic.ifconfig()[0]+':5000')   
app.run(debug=True)

连接成功,效果:
@21小跑堂

使用特权

评论回复

相关帖子

沙发
vincent20120907|  楼主 | 2024-9-7 19:58 | 只看该作者

使用特权

评论回复
板凳
21小跑堂| | 2024-9-9 14:23 | 只看该作者

您好,我们审核原创的标准其一为:除代码部分文章字数大于800,详情请参考:https://bbs.21ic.com/icview-3363322-1-1.html

使用特权

评论回复
地板
vincent20120907|  楼主 | 2024-9-10 13:22 | 只看该作者
@21小跑堂

使用特权

评论回复
5
vincent20120907|  楼主 | 2024-9-10 13:26 | 只看该作者
改好了

使用特权

评论回复
6
vincent20120907|  楼主 | 2024-9-12 13:14 | 只看该作者
@21小跑堂

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

27

帖子

1

粉丝