一直以来都想写一些帖子和博客,但对于刚毕业迷茫的我就是狠不下心来,一番准备之后,决定把前几天学习的一些东西写下来,作为一个记录的开始。
前段日子接触了关于lwip在stm32上面的移植,建立tcp服务器与tcp客户端,以及搭建最简单的web服务器等,我打算分开来一篇篇条理性地记录下来。
stm32建立tcp的硬件基础
每次博客的记录我都想有个目标,以便以后翻阅都能带个目标性地去看。
本篇目标:能够了解stm32的数据是怎么通过网卡和端口连接到PC机的,是建立在哪些硬件基础上的呢?
硬件电路包括:
- stm32f407zg(MAC)
- smsc lan9303(PHY)
- hr681680(网络隔离变压器)
- rj45(水晶接头)
依次来看看上面几个芯片的作用
- stm32f4系列自带MAC控制器,而lan9303在这里就是一个PHY芯片(也叫物理接口收发器),他们之间用接线更少的RMII接口相连,他们组成了数据收发的重要部分。
- hr681680是一个网络隔离变压器,主要功能是为了隔离,防止网络接头连接的另一端地线电位不同而引起的不可预计的后果(干扰,损坏等等)。
- rj45水晶头就是平时连接网线的接头,也有器件把网络隔离变压器和水晶头做在一起的。
重点还是看MAC和PHY之间的工作过程!
RMII接口(借鉴一下官方数据手册)
主要看MAC与PHY连接的几根线:
- RMII_TX_EN:数据发送使能
- RMII_TXD[1:0]:发送数据引脚,共两位
- RMII_RXD[1:0]:接收数据引脚,共两位
- RMII_CRX_DV:这个引脚的电平由RX_DV和CRS两个信号合成,比较复杂
- RMII_REF_CLK:外部时钟源提供的50MHz的时钟信号
- MDIO:PHY管理接口的双向数据总线
- MDC:PHY管理接口的同步时钟
当完成对STM32F4的MAC控制器和PHY芯片寄存器的配置后,他们之间的连接就真正建立起来了。
整个一条回路:
- STM32的DMA控制器 <—> RMII_TXD/RMII_RXD <—> PHY芯片
- PHY芯片 <—> PHY芯片的Tx+/Tx-、Rx+/Rx- <—> HR681680隔离芯片
- HR681680隔离芯片 <—> Tx+/Tx-、Rx+/Rx- <—> RJ45水晶头
- RJ45水晶头 <—> 网线 <—> PC机
接下来就是创建工程,移植lwip到stm32上,建立stm32与pc机的以太网连接。