第 4 章:网络与总线——CAN / Ethernet / USB-OTG


本章目标:

  • 深入理解三种关键通信总线(CAN、Ethernet、USB-OTG)的协议架构、硬件接口与软件驱动

  • 掌握 STM32(或同类 MCU)中各总线的寄存器配置、中断/DMA 驱动框架

  • 通过实战案例,实现基于 CAN 总线的节点通信、基于 Ethernet 的 TCP/IP 通信,以及基于 USB-OTG 的虚拟串口与大容量存储访问

章节结构
4.1 CAN 总线
 4.1.1 CAN 协议概览与帧结构
 4.1.2 硬件电气特性与物理连接
 4.1.3 STM32 CAN 控制器寄存器解析
 4.1.4 CAN 驱动框架(中断与报文过滤)
 4.1.5 实战案例:STM32 与多个节点的可靠通信
4.2 Ethernet
 4.2.1 Ethernet 协议栈概览(MAC+PHY, TCP/IP)
 4.2.2 硬件接口与 MII/RMII/PSE 报文时序
 4.2.3 STM32 Ethernet MAC 寄存器解析
 4.2.4 LwIP 驱动集成与零拷贝 DMA
 4.2.5 实战案例:Web 服务器与 MQTT 客户端示例
4.3 USB-OTG
 4.3.1 USB 枚举与端点模型(Host/Device/OTG)
 4.3.2 硬件信号:DP/DM、ID 引脚、VBUS 检测
 4.3.3 STM32 USB-OTG 控制器寄存器解析
 4.3.4 USB-CDC(虚拟串口)与 MSC(大容量存储)实现
 4.3.5 实战案例:STM32 同时支持 CDC 与 MSC Composite 设备
4.4 本章小结与选型建议


4.1 CAN 总线

4.1.1 CAN 协议概览与帧结构

Controller Area Network (CAN) 是一种多主、基于广播的实时通信总线,广泛用于汽车电子、工业控制与分布式系统。CAN 的关键特点包括:

  • 多主访问:所有节点并行收发,使用位仲裁确保无冲突

  • 帧结构:支持标准帧(11 位标识符)与扩展帧(29 位标识符)、数据字段长度 0–8 字节

—— CAN 数据报文结构(标准帧) ——
┌────────┬───────┬───────┬───────┬───────┐
│ 标识符(11b) │ RTR(1) │ IDE(1) │ DLC(4) │ Data(0–8×8b) │ CRC(15) │
└────────┴───────┴───────┴───────┴───────┘
  • 标识符 (ID):决定优先级,ID 值越小优先权越高

  • RTR:远程帧请求位

  • IDE:扩展帧指示位

  • DLC:数据长度码

  • CRC:循环冗余校验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/81794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-DAY05

一、栈的概念 1.栈是限定仅在表尾进行插入和删除操作的线性表。先进后出、后进先出 栈顶:允许操作的一端 栈底:不允许操作的一端入栈,出栈。 栈分为:顺序栈 链式栈 2.栈结构是在堆区创建的 3.优先级就是通过栈来解决的 先进后出…

leetcode 153. Find Minimum in Rotated Sorted Array

题目描述 分析 可以发现一个规律: 假如整个数组最后一个元素是x。 最小值左侧(不含最小值自己)的元素全部大于x。 最小值右侧(包含最小值自己,不包含x)的元素全部小于x。 如果整个数组是有序的&#x…

如何在 AOSP 中判断一个源文件属于哪个模块(以 CameraService 为例)

如何在 AOSP 中判断一个源文件属于哪个模块(以 CameraService 为例) 在 AOSP 开发中,经常需要修改底层 C 代码(如 CameraService.cpp),但很多人会遇到一个问题: 我修改了某个 .cpp 文件&#x…

云原生主要架构模式

云原生(Cloud Native)是一种利用云计算的优势来构建和运行可扩展、弹性和高效应用程序的方法。它不仅仅是技术的集合,更是一种架构和设计理念。本文将围绕你提出的几部分,深入探讨云原生主要的架构模式,帮助你理解如何利用这些模式构建现代化的应用。 1. 服务化架构模式(…

深入理解MySQL结构与执行流程

标题:深入理解MySQL结构与执行流程 MySQL以其开源、灵活性和强大的功能成为了最受欢迎的关系型数据库管理系统之一。无论是初创公司还是大型企业,都广泛使用MySQL来存储和管理数据。为了帮助大家更好地理解和优化MySQL的性能,本文将详细讲解…

Python web 开发 Flask HTTP 服务

Flask 是一个轻量级的 Web 应用框架,它基于 Python 编写,特别适合构建简单的 Web 应用和 RESTful API。Flask 的设计理念是提供尽可能少的约定和配置,从而让开发者能够灵活地构建自己的 Web 应用。 https://andi.cn/page/622189.html

BMVC2023 | 多样化高层特征以提升对抗迁移性

Diversifying the High-level Features for better Adversarial Transferability 摘要-Abstract引言-Introduction相关工作-Related Work方法-Methodology实验-Experiments结论-Conclusion 论文链接 GitHub链接 本文 “Diversifying the High-level Features for better Adve…

虚幻引擎5-Unreal Engine笔记之摄像头camera

虚幻引擎5-Unreal Engine笔记之摄像头camera code review! 目录 第一部分:摄像头的基础概念 1.1 UE5 中摄像头的定义与作用1.2 UE5 中摄像头的类型与分类 第二部分:摄像头的代码结构与分类 2.1 摄像头是类还是组件?2.2 组件的本质&#xff…

【大数据】MapReduce 编程-- PageRank--网页排名算法,用于衡量网页“重要性”-排序网页

PageRank 是 Google 创始人拉里佩奇(Larry Page)和谢尔盖布林(Sergey Brin)在 1998 年提出的一种网页排名算法,用于衡量网页“重要性”的一种方式。它是搜索引擎中用于排序网页的一种基础算法 一个网页越是被其他重要…

React Flow 数据持久化:Django 后端存储与加载的最佳实践(含详细代码解析)

在构建 React Flow 应用时,前端呈现的节点与连线构成的可视化流程只是冰山一角,其背后的数据持久化与灵活调取才是确保应用稳定运行、支持用户数据回溯与协作的关键。因此,后端存储与加载 React Flow 信息的环节,就如同整个应用的…

深度学习中的归一化:提升模型性能的关键因素

📌 友情提示: 本文内容由银河易创AI(https://ai.eaigx.com)创作平台的gpt-4-turbo模型辅助完成,旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证,建议读者通过官方文档或实践进一步确认…

Pandas:Series和DataFrame的概念、常用属性和方法

本文目录: 一、Series和Dataframe的概念二、创建Series对象三、创建Dataframe对象(一)Series1.Series的常用属性总结如下:2.Series的常用方法总结如下: (二)Dataframe1.Dataframe的常用属性2.Da…

数据中心Overlay解决方案

文档围绕数据中心 Overlay 解决方案展开,指出数据中心向大集中、虚拟化、云业务演进,传统架构存在网络规划复杂、弹性不足、业务扩展受限等问题。Overlay 网络在物理网络上构建虚拟网络,实现名址分离、网络与物理解耦,支持业务灵活部署。方案采用VXLAN 技术(如 SDN 控制模…

SpringBoot 项目实现操作日志的记录(使用 AOP 注解模式)

本文是博主在做关于如何记录用户操作日志时做的记录,常见的项目中难免存在一些需要记录重要日志的部分,例如权限和角色设定,重要数据的操作等部分。 博主使用 Spring 中的 AOP 功能,结合注解的方式,对用户操作过的一些…

以太联 - Intellinet 闪耀台北 SecuTech 国际安全科技应用博览会

2025 年 5 月 7 日至 9 日,台北 SecuTech 国际安全科技应用博览会现场热闹非凡,以太联 - Intellinet 携旗下前沿产品与解决方案精彩亮相,成为展会上一道亮丽的风景线,吸引了众多业内人士的目光,收获了广泛关注与高度认…

【华为鸿蒙电脑】首款鸿蒙电脑发布:MateBook Fold 非凡大师 MateBook Pro,擎云星河计划启动

文章目录 前言一、HUAWEI MateBook Fold 非凡大师(一)非凡设计(二)非凡显示(三)非凡科技(四)非凡系统(五)非凡体验 二、HUAWEI MateBook Pro三、预热&#xf…

OSA快速上手

我第一次接触OSA,第一感觉就是庞杂,相关的文档和资料基本都是英文,运行下示例场景,效果和效率确实很香。本文仅针对初次接触OSA、望而却步的朋友们进行快速运用的引导。 首先,找个安装包,导入项目后&#…

RK3568下编译解决未定义符号而报错终止链接

现象:我从rk3568板子上导出来了一个 libsqlite3.so 然后编译连接就会报这样的错误 解决办法有多种,以前我遇到这种情况,我都是使用sqlite3源码从新编译一份使用,并替换到板子上。 现在我是用另一种方法:增加编译参数 …

LSTM-Attention混合模型:美债危机与黄金对冲效率研究

摘要:本文依托多维度量化分析框架,结合自然语言处理(NLP)技术对地缘文本的情绪挖掘,构建包含宏观因子、风险溢价因子及技术面因子的三阶定价模型,对当前黄金市场的波动特征进行归因分析。实证结果显示&…

Spring Boot 多参数统一加解密方案详解:从原理到实战

Spring Boot 多参数统一加解密方案详解:从原理到实战 一、前言:为什么需要参数加解密? 在现代Web开发中,数据安全传输是基本要求。特别是涉及敏感数据(如用户隐私、支付信息等)时,仅靠HTTPS还不够,我们需要对关键参数进行二次加密。本文将详细介绍Spring Boot中实现多…