前面简单的说了一下计算机网络的基本架构以及TCP、UDP的基础入门内容,但这些说的时候都是基于计算机的,那在单片机中是怎么接入以太网的呢?
首先,我们需要知道,单片机想要接入以太网,在硬件上我们需要哪些器件,下面我画了一个简单的示意图,我们根据图来看一下。
仔细看一下图中的组成,图的最右侧是一个称为RJ45的网络接口,这是一种以太网口,对应的是我们平时家用电脑的网口,当然,也可以使用WIFI模块等等的无线连接方式。在这个网口的左侧,是一个网络变压器,这个变压器的作用简单来说即提高信号的抗干扰能力,再就是分离传来的不同设备的不同电平。再往左看,是一个叫PHY的模块,这是一个芯片,这个芯片的作用是识别物理层的电信号,再进行转换,转换成后续设备对应的标准,使其能够被后续设备识别。这个PHY通过MII与最左侧的MCU相连接,这个MCU对应的是我们想要接入以太网的单片机,MCU中,有一个MAC模块,我们现在应该都知道,接入网络的设备必须有一个MAC用来寻址,所以MAC模块是必不可少的,其中,这个MII是一种接口标准,用来将PHY和MAC模块相连接。
这下大体的框架就有了,我们拿一根网线过来,使其连在一个RJ45接口上,这个接口连着一个网络变压器上,再连载一个PHY芯片上,以处理网络变压器处理过的电信号,最后通过MII标准接口连在芯片上,但这里有一个问题,这个芯片上一定有MAC吗?答案是不一定的,有的芯片上集成了MAC的部分,例如STM32FXX7系列的芯片,这些芯片只需要添加上图中剩下的内容就可以接入以太网,但其实大多数芯片是没有MAC的,例如我们最常用的STM32F103C8T6,这个芯片就没有MAC的部分,我们如果想要将这些设备接入以太网,我们就需要改变一下上述的方案。只需要做一个小小的改动:
上图中,我们可以看出,在MCU中没有MAC模块时,我们可以将使用PHY+MAC的处理芯片,一样可以完成单片机的以太网接入。
除此之外,还有一种比较高级的单片机,其内部直接就集成了MAC和PHY,这种使用起来就更简单了。此外,有些PHY芯片中,不仅有MAC的部分,还会加入TCP/IP协议栈的解析内容,使的单片机的编程部分更为简单,最常见的有W5500芯片等等。
上面只是一个简单的框架,其中MII是怎么样的标准,PHY和网络变压器之间的连接是怎么接的......等等内容这里都没有提,我们在平时用电脑时,网口传来的数据电脑自动就给你处理了,所以什么不用管,但我们在用单片机接以太网时,我们就需要将这些数据一层一层的进行解析,对应的就是上面PHY、MAC、TCP/IP协议栈等等,所以也就是一个通过硬件和软件逐层解析数据包的过程。这里就简单写这么一点,有一点认识就好,后面再慢慢完善内容。