单片机实验2
一、IIC总线协议1.简介定义是一种广泛用于嵌入式系统的同步、串行、半双工通信协议用于在同一块电路板上的集成电路之间进行通信。I2C总线是一种物理通信架构用于连接多个设备实现设备之间的数据传输。I2C协议是一套规则定义了IIC总线上数据通信的过程包括如何启动通信、传输数据、应答信号、结束通信等。特点1.双线通信2.同步通信3.串行数据传输4.半双工传输5.主从架构6.支持多主多从7.从机地址唯一性8.速度灵活2.协议规则只能由主机产生a.起始信号SCL线高电平的时候SDA线产生下降沿b.终止信号SCL高电平的时候SDA线产生上升沿。主机和从机都能产生:a.应答信号:时钟线SCL高电平期间SDA低电b.非应答信号SCL高电平期间SDA高电平。总线空闲SCL和SDA一直为高电平数据有效在时钟线高电平期间只能读数据数据线电平不能变低电平期间可以写入数据数据线电平才能变数据的传输单元IIC线以字节为单位进行传输顺序为高位开始传输由主机发从机地址为7位左移1位加上数据传输方向位0写 1读3.数据手册从机地址计算公式精度选择指令通信方式主机先写发送设备地址写方向 寄存器/命令字节Command从机应答ACK。主机再读重新发起起始条件或重复起始发送设备地址读方向从机应答后返回 16 位数据MSB 在前。带校验数据之后跟随 CRC8用于检查读数据的完整性。终止主机接收 CRC8 后应答ACK最后以停止条件P结束。采集时间4.温湿度数据读取ioc配置二、SPI协议1.简介定义SPI通信是一种同步通信根据时钟信号设备得以在正确的时机发送和接收数据从而确保数据传输的有效性以及数据传输的速度。时钟信号由主设备产生通过SCK引脚输出主从设备的通信便根据SCK上的时钟信号进行数据收发。边沿触发总线接口 ( 引脚 ) SCK 、 MOSI master out slave in、 MISO master in slave out、 CS CS信号线进行从机的选择遵循一主多从或者一主一从的结构数据帧长度 8bit 或 16bit 数据传输的格式 MSB 或 LSB。 MSB表示先发送最高位LSB表示发送最低位。控制器可以自由配置先发高位还是低位指定当前要和哪一个设备通信只唤醒选中的那一个其他设备保持沉默不抢数据SPI 分离 GPIO 片选接法SCK、MOSI、MISO直接连通 MCU 硬件 SPI 外设引脚与从设备对应引脚属于 SPI 硬件专用功能脚。CS 片选不使用 SPI 外设自带 CS 引脚而是单独拿出一个普通的通用 GPIO 引脚软件控制高低电平来选中 / 释放从设备。优点一个 SPI 总线挂载多个从机时只需多分配几个普通 GPIO 做各自 CS大部分 MCU 硬件 SPI 的内置 NSS 引脚功能受限软件 GPIO 控制 CS 逻辑更可控适配绝大多数 SPI 传感器。缺点需要额外占用 一个普通 GPIO 引脚SPI 硬件自带 CS 引脚接法MCU 硬件 SPI 模块自带专用 CS 引脚直接连接到从设备 CS 脚由 SPI 硬件外设自动控制片选电平无需软件手动操作 GPIO。优点节省普通 GPIO 资源硬件自动管理 CS 时序发送数据时自动拉低、传输结束自动拉高简化代码适合高速连续传输。缺点一个 SPI 外设通常只有 1 个硬件 CS 脚只能挂载单个从设备时钟极性CPOLClock Polarity,简称CPOL,就是时钟极性,当主从设备之间没有数据传输的时候SCK时钟线的电平状态即空闲状态。当CPOL1时则SCK线空闲状态下是高电平当CPOLO时则SCK线空闲状态下是低电平。时钟相位CPHAClock Phase,简称CPHA,就是时钟相位。CPHA实际指的就是数据的采样时刻CPHA0时,则表示数据的采样是从时钟的第一个边沿CPHA1时则表示数据的采样是从时钟的第二个边沿。2.回环测试三、Modbus TCP 协议控制外设1.整体帧结构ADU 7 字节 MBAP 报文头 PDU功能码 数据一帧完整 Modbus TCP 由 7 字节 MBAP 头 至少 1 字节 PDU 功能码 组成a.MBAP 头部 7 字节固定结构字段长度作用说明事务处理标识符2 字节报文 ID客户端自增用于请求 - 应答配对服务器原样返回不参与运算协议标识符2 字节固定00 00代表 Modbus 协议长度2 字节后面所有字节总长度单元标识 PDU即 N2用于分包解析单元标识符1 字节等效 RTU 的从站地址以太网靠 IP 区分设备此字段可忽略常用默认值 01b.PDU 协议数据单元和 RTU 核心一致由1 字节功能码 N 字节数据组成读写线圈、寄存器的指令逻辑完全复用 Modbus RTU。对比 RTURTU 帧 从站地址 PDU CRC16 校验Modbus TCP无 CRC 校验。示例字节偏移内容名称详细说明0~100 01事务处理标识符 (Transaction ID)相当于请求的 “流水号”。客户端发的包 ID 是 0x0001服务器将来回复时必须带上同样的 0x0001这样单片机才能把 “回复” 和 “刚才的请求” 对上号。2~300 00协议标识符 (Protocol ID)固定为 0x0000代表这是 Modbus TCP 协议。如果收到非 0000 的值说明数据包不合法。4~500 06长度域 (Length)告诉服务器后面还有 6 个字节的数据需要读。后面 6 个字节就是 [01 03 00 00 00 01]。这一点极其关键单片机会根据这个数字去计算还要收多少包才算完整。601单元标识符 (Unit ID)相当于 Modbus RTU 里面的 “从机地址”。这里写 0x01代表告诉第 1 号设备“这包指令是发给你的”。703功能码 (Function Code)0x03 代表 “读保持寄存器”。告诉从机我要读取数据。8~900 00起始地址 (Starting Address)告诉从机“从你的第 0x0000 号寄存器开始读。”10~1100 01寄存器数量 (Quantity of Registers)告诉从机“我一共要读 1 个寄存器1 个寄存器占 2 个字节。”2.实验现象

相关新闻

C++23 <stacktrace>库实战:跨平台调试与异常处理新利器

C++23 <stacktrace>库实战:跨平台调试与异常处理新利器

1. 项目概述:为什么我们需要一个标准化的栈踪迹库?调试,大概是每个C开发者又爱又恨的环节。爱的是,当程序在你面前崩溃,而你通过蛛丝马迹最终定位到那个深藏不露的bug时,那种成就感无与伦比;恨的…

2026/7/21 7:44:04 阅读更多 →
Spring框架@RequestAttribute注解详解与应用实践

Spring框架@RequestAttribute注解详解与应用实践

1. RequestAttribute 注解深度解析在Spring框架中,RequestAttribute注解是一个相对小众但非常实用的注解。它主要用于从请求作用域(request scope)中获取预先存在的属性值。与大家更熟悉的RequestParam不同,RequestAttribute不是用来获取请求参数的&…

2026/7/21 7:36:25 阅读更多 →
MATLAB 2025a学习版安装与核心功能解析

MATLAB 2025a学习版安装与核心功能解析

1. MATLAB 2025a学习版安装体验与核心变化解析作为一名长期使用MATLAB进行科学计算的工程师,最近我成功安装了MATLAB 2025a学习版。这个版本带来了令人惊喜的界面革新和功能升级,完全不同于以往任何版本的使用体验。本文将详细分享我的安装过程、新版本的…

2026/7/21 7:35:41 阅读更多 →

最新新闻

瑞德克斯平台:从客户支持切入的标准对照

瑞德克斯平台:从客户支持切入的标准对照

在外汇相关服务里,瑞德克斯平台是否值得长期关注,往往取决于几个清晰的体验点:说明是否好理解、提示是否到位、流程是否连贯、支持是否稳定。下面从这些维度对瑞德克斯平台做一次正向梳理与要点归纳。在外汇相关服务中,读者最在意…

2026/7/21 9:49:58 阅读更多 →
瑞德克斯平台:从公开信息出发,归纳流程清晰度与市场覆盖

瑞德克斯平台:从公开信息出发,归纳流程清晰度与市场覆盖

在外汇行业语境里,表达越清晰、信息越透明,越容易建立稳定预期。在瑞德克斯平台的外汇服务中,从公开信息与使用体验出发,梳理其更值得肯定的能力点与细节表现。在外汇相关服务中,读者最在意的通常是信息是否清楚、提示…

2026/7/21 9:49:58 阅读更多 →
多Agent任务编排SDK:解决复杂AI系统开发痛点

多Agent任务编排SDK:解决复杂AI系统开发痛点

1. 项目背景与核心价值schoober-ai-sdk是一个专注于多Agent系统子任务编排的开发者工具包。在当今AI应用开发领域,单一Agent往往难以处理复杂任务流程,而多Agent协作又面临任务分配、上下文传递、结果聚合等挑战。这个SDK的诞生正是为了解决以下痛点&…

2026/7/21 9:49:58 阅读更多 →
3个关键步骤解决ComfyUI-Easy-Use组件加载异常问题

3个关键步骤解决ComfyUI-Easy-Use组件加载异常问题

3个关键步骤解决ComfyUI-Easy-Use组件加载异常问题 【免费下载链接】ComfyUI-Easy-Use In order to make it easier to use the ComfyUI, I have made some optimizations and integrations to some commonly used nodes. 项目地址: https://gitcode.com/gh_mirrors/co/Comfy…

2026/7/21 9:49:58 阅读更多 →
如何在5分钟内为raylib游戏添加多语言支持:终极国际化指南

如何在5分钟内为raylib游戏添加多语言支持:终极国际化指南

如何在5分钟内为raylib游戏添加多语言支持:终极国际化指南 【免费下载链接】raylib A simple and easy-to-use library to enjoy videogames programming 项目地址: https://gitcode.com/GitHub_Trending/ra/raylib raylib游戏开发库的国际化支持让您的游戏轻…

2026/7/21 9:49:57 阅读更多 →
PySpark读写AWS S3的深度实践:S3A协议、版本兼容与IRSA认证

PySpark读写AWS S3的深度实践:S3A协议、版本兼容与IRSA认证

1. 项目概述:为什么 PySpark 读写 AWS S3 不是“配好路径就能跑”的简单事你刚在本地 PySpark 脚本里写下spark.read.parquet("s3a://my-bucket/data/"),满怀期待点下运行——结果卡住三分钟,抛出一长串java.io.IOException: Unabl…

2026/7/21 9:48:57 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻