单片机实验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 脚,只能挂载单个从设备

时钟极性CPOL

Clock Polarity,简称CPOL,就是时钟极性,当主从设备之间没有数据传输的时候SCK时钟线的电平状态(即空闲状态)。当CPOL=1时,则SCK线空闲状态下是高电平;当CPOL=O时,则SCK线空闲状态下是低电平。

时钟相位CPHA

Clock Phase,简称CPHA,就是时钟相位。CPHA实际指的就是数据的采样时刻,CPHA=0时,则表示数据的采样是从时钟的第一个边沿,CPHA=1时,则表示数据的采样是从时钟的第二个边沿。

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,即 N+2),用于分包解析
单元标识符 1 字节 等效 RTU 的从站地址;以太网靠 IP 区分设备,此字段可忽略,常用默认值 01

b.PDU 协议数据单元(和 RTU 核心一致)

由1 字节功能码 + N 字节数据组成,读写线圈、寄存器的指令逻辑完全复用 Modbus RTU。

对比 RTU:RTU 帧 = 从站地址 + PDU + CRC16 校验;Modbus TCP无 CRC 校验。

示例:

字节偏移 内容 名称 详细说明
0~1 00 01 事务处理标识符 (Transaction ID) 相当于请求的 "流水号"。客户端发的包 ID 是 0x0001,服务器将来回复时,必须带上同样的 0x0001,这样单片机才能把 "回复" 和 "刚才的请求" 对上号。
2~3 00 00 协议标识符 (Protocol ID) 固定为 0x0000,代表这是 Modbus TCP 协议。如果收到非 0000 的值,说明数据包不合法。
4~5 00 06 长度域 (Length) 告诉服务器:后面还有 6 个字节的数据需要读。后面 6 个字节就是 01 03 00 00 00 01。这一点极其关键,单片机会根据这个数字去计算还要收多少包才算完整。
6 01 单元标识符 (Unit ID) 相当于 Modbus RTU 里面的 "从机地址"。这里写 0x01,代表告诉第 1 号设备:"这包指令是发给你的"。
7 03 功能码 (Function Code) 0x03 代表 "读保持寄存器"。告诉从机:我要读取数据。
8~9 00 00 起始地址 (Starting Address) 告诉从机:"从你的第 0x0000 号寄存器开始读。"
10~11 00 01 寄存器数量 (Quantity of Registers) 告诉从机:"我一共要读 1 个寄存器(1 个寄存器占 2 个字节)。"

2.实验现象

相关推荐
mk0152 小时前
20V输入,12V 3A输出 效率96%DCDC降压芯片
驱动开发·单片机·硬件工程·智能硬件·pcb工艺
达子6664 小时前
Zephyr RTOS 学习系统:第一阶段 —— 入门篇
stm32·单片机·嵌入式硬件
三易串口屏7 小时前
触摸热区控件
嵌入式硬件·触摸屏·串口屏·三易串口屏·触摸热区控件
‎ദ്ദിᵔ.˛.ᵔ₎9 小时前
STM32入门第一课:32位MCU
stm32·单片机
西城微科方案开发9 小时前
智能电子跳绳方案开发
单片机·嵌入式硬件
国科安芯10 小时前
抗辐射微控制器在卫星电源管理分系统中的控制架构与可靠性研究——基于AS32S601型MCU的星载能源系统智能化管理技术分析
网络·单片机·嵌入式硬件·安全·架构·系统架构·能源
KaifuZeng11 小时前
电路面试问题汇总一
单片机·嵌入式硬件·面试·电路
Freedom_my11 小时前
STM32简单项目
stm32·单片机·嵌入式硬件
GeekArch12 小时前
第8讲:裸机单片机项目——Vibe快速迭代的最优边界
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·ai编程