公司动态

单片机实验2

📅 2026/7/18 5:20:56
单片机实验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.实验现象