在通信协议中,不同的设备或传感器可能采用不同的时序和通信方式来进行数据交换。以下是对您提到的几种通信方式及其标准时序的详细解释:
一、标准时序
1. I2C:同步通信方式
- 定义:I2C(Inter-Integrated Circuit)是一种同步串行半双工通信总线方式,仅使用两根双向信号线:数据线SDA和时钟线SCL。
- 特点:
- 通信速率快,器件封装小。
- 允许同时连接多个设备(芯片),每块芯片在总线上拥有特定的地址。
- 某一时刻,总线只允许有一个设备处于发送状态,所发送的数据被总线上所有的设备所接收。
- 时序:
- 起始信号:SCL为高电平时,SDA由高电平跳变为低电平。
- 停止信号:SCL为高电平时,SDA由低电平跳变为高电平。
- 数据传输:在SCL时钟的每个高电平期间,SDA线上的数据必须保持稳定;在SCL时钟的下降沿,SDA上的数据允许变化。
2. USART:异步通信
- 定义:USART(Universal Synchronous/Asynchronous Receiver/Transmitter)是通用同步/异步收发传输器,但在实际应用中,STM32等微控制器的USART配置成异步通信时与UART(通用异步收发传输器)等价。
- 特点:
- 只用一根数据线,通过起始位、校验位、停止位以及所需传输的数据打包成数据帧进行传输。
- 双方需要约定好传输速率(波特率)。
- 时序:
- 数据帧格式包括起始位(通常为逻辑0)、数据位(5-8位)、可选的校验位(奇校验、偶校验等)和停止位(通常为1-2位逻辑1)。
- 数据传输过程中,每个字符(或字节)前都会有一个起始位,字符传输结束后会有停止位来标识数据结束。
二、非标准时序
1. DHT11,单总线通信
- 定义:DHT11是一种湿温度一体化的数字传感器,采用单总线通信协议,即仅使用一根数据线进行双向传输。
- 特点:
- 数据传输速率一般为16.3Kbit/s,最大可达142Kbit/s。
- 数据交换、控制均通过这根数据线完成。
- 时序:
- 初始化过程包括主机发送复位脉冲和从机发送应答脉冲。
- 数据传输过程中,主机通过发送特定的时序信号来控制从机发送数据或执行特定操作。
2. DS18B20,单总线通信(规范笔记)
- 定义:DS18B20是一种常用的数字温度传感器,也采用单总线通信协议。
- 特点:
- 支持“一线总线”接口,仅需一个端口引脚进行通信。
- 可通过简单的读写时序完成对温度数据的读取。
- 时序:
- 写时序包括写0时序和写1时序,均起始于主机拉低总线。
- 读时序由主机发起,主机在读时序期间必须释放总线,并在时序起始后的特定时间内采样总线状态以接收数据。
在通信系统中,主机(Master)向从机(Slave)发送信号,并期望从机通过某种方式确认(ACK,即Acknowledge)已接收到该信号,是一种常见的交互模式。当主机发送一个上升沿信号给从机,并要求从机通过ACK信号回复时,这通常涉及到硬件接口(如GPIO引脚)和可能的软件逻辑来实现。
硬件层面
信号线连接:首先,确保主机和从机之间通过适当的信号线(如GPIO引脚)连接。这条线用于传输上升沿信号。
信号检测:从机需要有一个能够检测信号线上电平变化的机制。这通常通过中断服务程序(ISR)或轮询方式实现。
ACK信号线:如果系统设计中包含专用的ACK信号线,从机可以在检测到上升沿后,通过这条线发送ACK信号。如果没有专用线,可能需要复用原信号线或其他通信方式(如I2C、SPI等)来发送ACK。
软件层面
中断服务程序(ISR):在从机的固件中,编写一个ISR来检测信号线上的上升沿。当检测到上升沿时,ISR被触发。
发送ACK:在ISR中,编写逻辑来发送ACK信号。如果使用的是专用ACK信号线,则直接在该线上设置适当的电平。如果复用原信号线或其他通信方式,则按照相应的协议发送ACK。
超时处理:为了防止因某些原因(如线路故障、从机故障等)导致ACK信号未能发送,主机可能需要实现超时机制。如果在一定时间内未收到ACK,主机可以采取相应的错误处理措施。
SPI:
SPI(Serial Peripheral Interface)和IIC(Inter-Integrated Circuit,也常称为I2C)是两种常见的串行通信总线协议,它们各自具有独特的特点和应用场景。以下是关于SPI和IIC的详细介绍:
一、SPI(Serial Peripheral Interface)
1. 定义与特点
- SPI是一种高速、全双工、同步的串行通信协议,由美国摩托罗拉公司最先推出。
- 它使用主从结构,主设备控制通信的时序,通过四根线(SCLK、MOSI、MISO、SS)进行通信。
- SPI可以实现高速的数据传输,通信速率可达几百Kbps到几十Mbps甚至更高。
- SPI通信由硬件直接控制,具有较低的处理器负载,并且配置灵活,可以通过配置主设备的时钟相位和极性来适应不同的外设。
2. 应用场景
- SPI通常用于需要高速数据传输和实时性要求较高的应用,如存储器芯片、传感器、显示屏等。
- 它适用于短距离通信,通信距离一般在几米以内。
二、IIC(Inter-Integrated Circuit,I2C)
1. 定义与特点
- IIC是一种双线制的串行通信总线协议,由飞利浦公司在1980年推出。
- 它也使用主从架构,但只通过两根线(SDA、SCL)进行通信,节省了引脚资源。
- IIC支持多主设备同时访问总线,通过地址寻址和仲裁机制解决冲突。
- IIC的通信速率相对较低,一般在几十Kbps到几百Kbps之间。
2. 应用场景
- IIC通常用于连接低速设备,如传感器、温度探头、EEPROM等。
- 它同样适用于短距离通信,但由于其协议特性和接线简单性,在小型化、模块化设备中应用广泛。
三、SPI与IIC的比较
SPI IIC/I2C 通信方式 同步、全双工 同步、半双工 通信速率 较高,可达几百Kbps到几十Mbps 较低,一般在几十Kbps到几百Kbps 通信线路 4线(SCLK、MOSI、MISO、SS) 2线(SDA、SCL) 应用场景 需要高速数据传输和实时性要求较高的应用 连接低速设备,如传感器、EEPROM等 设备连接 支持多从设备,通过片选线选择 支持多从设备,通过地址寻址 控制机制 硬件控制,处理器负载低 支持多主设备同时访问,通过仲裁机制解决冲突
定时器时间计算:
stm32项目
gitee链接: