STM32学习之以太网介绍

2023-11-10

以太网简介

以太网(Ethernet)是互联网技术的一种,由于它是在组网技术中占的比例最高,很多人直接把以太网理解为互联网。
以太网是指遵守IEEE802.3标准组成的局域网,由IEEE 802.3标准规定的主要是位于参考模型的物理层(PHY)和数据链路层中的介质访问控制子层(MAC)。

PHY层

在物理层,由IEEE 802.3标准规定了以太网使用的传输介质、传输速度、数据编码方式和冲突检测机制,物理层一般是通过一个PHY芯片实现其功能的。

1 传输介质

传输介质包括同轴电缆、双绞线(水晶头网线是一种双绞线)、光纤。根据不同的传输速度和距离要求,基于这三类介质的信号线又衍生出很多不同的种类。最常用的是“五类线”适用于100BASE-T和10BASE-T的网络,他们的网络速率分别为100Mbps和10Mbps。

2 编码

为了让接收方在没有外部时钟参考的情况也能确定每一位的起始、结束和中间位置,在传输信号时不直接采用二进制编码。
在10BASE-T的传输方式中采用曼彻斯特编码,在100BASE-T中则采用4B/5B编码

3 CSMA/CD冲突检测

以太网具备CSMA/CD冲突检测机制,如果多个节点同时利用同一条总线发送数据,则会产生冲突,若存在冲突则停止发送数据,随机等待一段时间再重传。

3.1 MAC子层
MAC的功能
  • MAC子层是属于数据链路层的下半部分,主要负责与物理层进行数据交接,如是否可以发送数据,发送的数据是否正确,对数据流进行控制等。
  • 自动对来自上层的数据包加上一些控制信号,交给物理层。
  • 接收方得到正常数据时,自动去除MAC控制信号,把该数据包交给上层。
MAC数据包

IEEE对以太网上传输的数据包格式也进行了统一规定,如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iLzp4TTj-1594631217175)(images/2.jpg)]

  • 前导字段:也称报头,是一段方波,用于使收发节点的时钟同步;
  • 帧起始定界符(SFD):用于区分前导段与数据段的,内容为0xd5;
  • MAC地址:MAC地址由48位数字组成,它是网卡的物理地址,在以太网传输的最底层,就是根据MAC地址来收发数据的;
  • 数据包类型:本区域可以用来描述本MAC数据包是属于TCP/IP协议层的IP包、ARP包还是SNMP包,也可以用来描述本MAC数据包数据段的长度;
  • 数据段:数据段是MAC包的核心内容,它包含的数据来自MAC的上层;
  • 填充域:当数据段的字节少于46字节时,在填充域会自动填上无效数据,以使数据包符合长度要求。
  • 检验和域:MAC数据包的尾部是校验和域,保存了CRC校验序列,用于检错。
    以上是标准的MAC数据包,IEEE 802.3同时还规定了扩展的MAC数据包,它是在标准的 MAC 数据包的 SA 和数据包类型之间添加 4 个字节的 QTag 前缀字段,用于获取标志的 MAC 帧。

STM32的ETH外设

stm32系列控制器内部集成了一个以太网外设,实际是一个通过DMA控制器进行介质访问控制(MAC),功能是实现MAC层的任务,该控制器可以通过ETH外设按照 IEEE 802.3-2002 标准发送和接收 MAC 数据包。
ETH 支持两个工业标准接口介质独立接口(MII)和简化介质独立接口(RMII)用于与外部 PHY 芯片连接。
MII和RMII接口用于MAC数据包传输,ETH还集成了站管理接口(SMI)接口专门用于与外部PHY通信,用于访问PHY芯片寄存器。
ETH系统功能框图如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ycjRtJyb-1594631217178)(images/3.jpg)]

MII和RMII接口

介质独立接口(MII)用于理解MAC控制器和PHY芯片,提供数据传输路径。MII需要16根通信线,RMII只需7根通信,在功能上是相同的。如下图所示:
MII接口
在这里插入图片描述

RMII接口:
在这里插入图片描述

PHY:LAN8720A

LAN8720A是SMSC公司设计的一个体积小、功耗低、全能型10/100Mbps的以太网物理层收发器。
LAN8720A 总共只有 24Pin,仅支持 RMII 接口。由它组成的网络结构见下图。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32学习之以太网介绍 的相关文章

  • STM32 Keil:warning: #223-D: function "LED_Init" declared implicitly

    include stm32f10x h include led h int main LED Init while 1 GPIO SetBits GPIOD GPIO Pin 6 运行时警告 warning 223 D function L
  • 【STM32学习】——定时器输出比较功能&PWM脉宽调制&通用/高级定时器输出比较通道&舵机/直流电机简介&PWM驱动呼吸灯/舵机/直流电机代码实操

    文章目录 前言 一 输出比较简介 二 PWM波形 三 输出比较通道 1 通用定时器 2 高级定时器 三 外设简介 1 舵机 2 直流电机 四 实操案例 1 PWM驱动LED呼吸灯 2 PWM驱动舵机 3 PWM驱动直流电机 总结 声明 学习
  • STM32学习心得(二)点亮LED灯

    STM32学习心得 二 点亮LED灯 在创建好工程模板后 就可以开始真正进入STM32的学习 手下那当然是试着点亮一个LED灯 首先在USER目录下创建一个空文件夹 并命名为bsp led bsp的意思是板级支持包 即该代码仅支持这块板子
  • stm32学习笔记 AFIO重映射功能 以TIM2的CH1可以从PA0挪动到PA15的引脚上距离为例

    首先在STM32F103C8T6引脚定义的图里找到是否有可以复用的引脚 因为我们的TIM2 CH1 ETR的数据是在引脚PA0上显示 如果要换 根据此表只能换到PA15 如图PA15 默认 是调试端口所以如果要想让其作为普通IO口或者复用定
  • STM32 基于keil5的printf打印设置

    1 因为使用串口来打印 所以将fputc函数和fgetc函数放在usart c源文件中 2 在usart c源文件中添加stdio h头文件 3 打印信息常用于调试 不建议使用中断 4 在usart c源文件中添加如下代码 int fput
  • 【STM32学习】——定时器的编码器接口&正交编码器&编码器接口测速代码实操

    文章目录 前言 一 编码器接口 1 简介 2 正交编码器 二 实操案例 编码器接口测速 总结心得 声明 学习笔记根据b站江科大自化协stm32入门教程编辑 仅供学习交流使用 前言 引入 本实操案例与之前学习外部中断时写的旋转编码器计次的代码
  • Keil5关于.h文件编译时遇见报错打不开时的解决方案

    添加路径即可
  • STM32进阶:使用STM32驱动ST7735S(内附核心源码)

    使用STM32驱动ST7735S 内附核心源码 感觉很久很久没有来博客更新了 历经千难万阻 终于做出来了TFT显示屏的SPI驱动 这里分享以下核心源码 接下来一段时间开始准备考科一了 后面有时间了再来更新 有三种模式下的驱动 一 软件SPI
  • STM32CubeMX----基本定时器(TIM6、TIM7)

    基本定时器TIM6 TIM7 的相关参数 Activated 激活TIM6 把前面的方框选中局表示激活了TIM6 One Pulse Mode STM32F103定时器的One Pulse Mode是一种特殊的计数模式 它只产生一个脉冲输出
  • 【stm32学习】正点原子stm32f103学习——开发板入门

    一 连接外设 数据手册中FT标志的IO口是兼容5V的 原理图上带ADC都是不兼容5V 判断能否作为ADC输入 外设 首先了解一下ADC ADC是Analog to DigitalConverter的缩写 指模 数转换器或者模拟 数字转换器
  • PWM 驱动电机

    文章主要是个人的笔记 所以很多地方可能是根据自己的情况来写的 驱动器 使用的是L298N CubeMX的配置 基本的配置略过 时钟源等 我们使用定时器1 1 选择内部时钟 通道1 PWM互补通道 2 这里我们后面把预分频的值改为了3 计数值
  • 【STM32】stm32是什么

    作者 一只大喵咪1201 专栏 STM32学习 格言 你只管努力 剩下的交给时间 STM32的简单介绍 介绍 特点 认识STM32 总结 介绍 STM32是一款单片机 它由意法半导体公司制造 ST是意法半导体的简称 M是指微控制器 也就是单
  • 【stm32】跑马灯实验(报错未解决)

    采用推挽输出 若PE5 PD5输出低电平 两端形成电压差 LED点亮 若输出高电平 LED熄灭 导入工程模板文件 魔术棒新建文件夹 引用外设需要一个 h和 c文件 参考头文件和源文件的概念理解 头文件概念 five five的博客 CSDN
  • 【STM32】端口复用和重映像

    作者 一只大喵咪1201 专栏 STM32学习 格言 你只管努力 剩下的交给时间 端口复用和重映像 描述 端口复用 端口复用的配置过程 端口重映像 部分重映像和完全重映像 重映像的配置过程 总结 描述 先来看一张STM32的简易结构图 在图
  • ucosII 下iic 的使用问题(含解决方式)

    今天在将SGP30气体传感器的代码移植到ucosii中使用时遇到了输出数据一直为65535的情况 分析现象 开始以为是硬件问题 元器件损坏等原因 使用了裸核代码进行测试 能够正常读取相应参数说明硬件正常 ucos跑死了 增加led显示任务
  • STM32在Keil5中硬件仿真问题记录汇总

    STM32在Keil5中硬件仿真问题记录汇总 问题描述 使用平台 处理方式 硬件上接线问题 问题描述 0x1FFFF3AE 0549 LSLS r1 r1 21 0x1FFFF3B0 D5FB BPL 0x1FFFF3AA 0x1FFFF3
  • STM32学习之以太网介绍

    以太网简介 以太网 Ethernet 是互联网技术的一种 由于它是在组网技术中占的比例最高 很多人直接把以太网理解为互联网 以太网是指遵守IEEE802 3标准组成的局域网 由IEEE 802 3标准规定的主要是位于参考模型的物理层 PHY
  • STM32CubeMX—串口空闲中断+DMA接收

    一 实验说明 实验平台 STM32F103C8T6 实验内容 使用串口一空闲中断结合DMA 完成不定长数据接收 STM32的串口接收数据的方式 1 轮询接收 所谓轮询 就是在主函数中判断接收完成的标志位 举个不太恰当例子 就比如 此时你正在
  • STM32学习(四)GPIO输入检测

    通过检测GPIO输入 让LED灯实现亮灭翻转的效果 跟 三 中类似 首先创建一个bsp key c和bsp key h文件 将与案件有关的宏定义和相应的函数都放在里面 1 首先在User文件夹下添加bsp key c文件 并通过bsp ke
  • 那些踩过的declared implicitly的坑

    缺少头文件 我的本意是想做串口打印进行调试 于是我在usart c中重写了这两个函数 这里顺便记录下如何串口打印 usart c中 int fputc int ch FILE f HAL UART Transmit huart1 uint8

随机推荐

  • check the manual that corresponds to your MySQL server version for the right syntax to use near

    check the manual that corresponds to your MySQL server version for the right syntax to use near WHERE 价格 11 at line 1 注意
  • 利用fairygui界面滚动组件实现滑动屏幕

    我在做一个小游戏的时候需要实现界面滑动效果 开始第一念头是用监听鼠标的滑动位置改变来做 但是fairygui有一种滚动组件就可以很方便的实现 我们需要用到滑动界面情况 通常是因为游戏的背景图片比游戏可视界面大 暂不考虑背景循环 图片加载 首
  • 开发要点-微信小程序

    微信小程序教程 基于微信平台的接触即用应用 兼有服务号的功能 同时提供类似原生的体验 以前叫应用号 适合做用完即走的应用 与用户的关系不是重依赖的关系 体验官方示例 了解小程序组件 组件 UI组件 接口 动态API 传统接口 微信开放接口
  • python3 题解(36 补齐为回文串)

    补齐为回文串 问题 回文串也中镜像串 就是左右对称的串 a aba baab 都是回文串 给定一个串 至少要添加上多少个字母 才能将它改造为回文串呢 分析 这可以通过递归的方法 不断缩小规模来实现 如果一个串的首尾两个字符相同 那么最小次数
  • 2018之后的Unity3d制作AR教程

    自2017 4以后的unity版本 AR的SDK已经被集成 那么如何用2018unity3d制作AR呢 1 首先打开Unity3d2018 然后打开File gt Building Setting 接着打开PlayerSetting 找到X
  • Linux基础IO

    基础IO 一 C语言文件操作 C语言文件接口汇总 C语言文件接口使用 二 Linux文件操作系统调用 open write read close 使用系统接口 三 文件描述 fd 文件描述符原理 文件描述符分配规则 如何理解一切皆文件 四
  • Java IO流处理 面试题汇总

    说明 本节内容来源于网络汇总 输入输出流是相对于内存而言的 1 面试题汇总 1 java中有几种类型的流 2021 08 19更新 从编码方式上 分为字符流和字节流 如上图可知 字节流继承inputStream和OutputStream 字
  • StableDiffusion入门教程

    目录 介绍 模型的后缀 ckpt模型 safetensors模型 文件夹 VAE 模型在哪下载 Hugging face
  • Docker-Compose一键部署

    Docker Compose一键部署 文章目录 Docker Compose一键部署 Docker 网络模式 一键部署 Docker 网络模式 关于 docker 网络模式 有时间会另出一篇博客详细介绍 或者在该博客下继续补充 docker
  • d3dcompiler_47.dll缺失怎么修复?多种解决d3dcompiler_47.dll丢失的方法分享

    在使用电脑过程中 我们有时可能会遇到各种各样的错误提示信息 其中之一就是 d3dcompiler 47 dll缺失 的问题 这个错误意味着你的计算机上缺少了一个重要的组件文件 可能导致某些程序无法正常运行 尽管对于非专业用户来说 这个问题可
  • Python开发技术—文件和异常2

    第1关 读取CSV文件1 任务描述 本关任务 编写一个能读取csv文件的程序 将指定的文件按照要求的格式输出 相关知识 为了完成本关任务 你需要掌握 1 csv模块 测试说明 平台会对你编写的代码进行测试 在你的程序的当前目录下存在一个bo
  • QGIS二次开发08:QGIS的二次封装例子

    QGIS体系过于庞大 对二次开发有一定的学习难度 同时在后续的多个项目中会有大量相同功能的应用 因此有必要进行二次封装 暴露必要的实现接口 从而简化开发的难度 一 基础封装功能 1 空间数据加载和显示 实现工程文件加载和显示 2 地图交互动
  • 【CSS】背景图定位问题适配不同机型

    需求 如图 实现一个带有飘带的渐变背景 其中头像必须显示飘带凹下去那里 需要适配不同的机型 一不下心容易错位 实现 因为飘带背景是版本迭代中更新的 所以飘带和渐变背景实则两个div 飘带切图如下 圆形部分需要契合头像
  • 20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用

    真火 作为最近一段时间人工智能领域内的顶流之一 AIGC AI Generated Content 早已火爆出圈 频登各大互联网平台热搜 cite 微软亚洲研究院官方微博 这段时间以来 基于深度学习的内容生成在图像 视频 语音 音乐 文本等
  • 融合网络位置服务器,4G/5G定位的关键技术及异构融合一体化定位系统的网络架构...

    摘要 如何提高室内定位精度并实现室内外定位的连续无缝覆盖是定位领域急需解决的问题 针对该问题 首先介绍了4G定位的标准与技术 并分析了其特点与不足 然后 分析了面向5G的超密集组网下的定位技术 AOA TDOA定位技术以及上下行定位技术 最
  • 【python教程】之try--except异常捕获

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 异常简介 捕获异常 try except except捕获异常类型 捕获多个异常的方式 不明确错误类型的情况 try except else try except
  • 上线代码质量审查解决方案

    前言 使用自动化工具和人工审查并行方式检查程序源代码是否存在安全隐患 或者有编码不规范的地方 利用自动化代码审计工具 如CheckStyle FindBugs PMD JTest 进行代码审计 以及每周定期组织对最近开发的业务进行代码评审
  • java javaw 命令区别_java 和javaw 的区别

    javaw exe用法和java exe 相同 javaw的程序不在java console 上面显示任何东西 如果在开发程序 就用java 这样可以看到错误提示 如果是运行完成了的程序 就用javaw 可以提高一点速度 两个应用程序都能运
  • I2C总线的通讯距离

    关于I2C总线 I2C总线不适合远距离通信 尤其是使用线缆与接口器件进行通信时一般不选择 I2C 使用I2C总线都是在用一个开发板上或者距离比较近 如果是远距离通信 比如说超过2米 这个时候对硬件就有特殊的要求了 通信线缆小于0 2米 一般
  • STM32学习之以太网介绍

    以太网简介 以太网 Ethernet 是互联网技术的一种 由于它是在组网技术中占的比例最高 很多人直接把以太网理解为互联网 以太网是指遵守IEEE802 3标准组成的局域网 由IEEE 802 3标准规定的主要是位于参考模型的物理层 PHY