提示:文章
文章目录
前言
前期疑问:
本文目标:
一、背景
最近重温3200温控板电路设计和芯片选型
3200代码仓
二、
2.1
按照顺序整理,主要是依靠自己想到的来整理
1、传感器是pt1000,采用ADC转化,根据电压值变化计算温度值。(电压值和温度值的转换公式?)
2、温湿度采集原件型号是SHT21,采用I2C通讯采集温湿度值。
3、PT1000精度应该是是0.001,采用SPI采集温度值。
以下是看电路图后,涉及到的几个芯片型号
AD7682芯片:4路模数转换器 (ADC),另外还提到AD7682/AD7689 使用简单的串行端口接口 (SPI) 写入配置寄存器并接收转换结果。电路图中也是AD7682也是有SPI接口。
但是印象中我完全没有印象使用了spi啊以及使用spi配置ad7682。
SPI是全双工通讯,全双工就是可以同时收数据和发数据。I2C是半双工,同一时刻只能单向传输数据。USART是全双工通讯,tx和rx负责收发数据。
CAN通讯模块,CTM8251AT芯片,将逻辑电平转换成CAN总线的差分电平。
(疑问,串口通讯 串行异步通讯是什么意思)
几种通讯协议的通讯速率和通讯距离
1.usart 通讯速率几百kbps到数Mbps,距离数米。
2.I2C 通讯数据几百Kbps,距离数米。
3.SPI 通讯速率几Mbps到几十Mbps
4.CAN 通讯速率几Mbps,通讯距离几十米
5.rs485 通讯速率几百Kbps到几Mbps,通讯距离几百米。
通讯方式比较
Kbps指的是Kilo bits per second
2.2
几种通讯协议说明
需要说明几个概念
下面是自己总结的
类型 | 说明 | |
---|---|---|
半双工/全双工 | 半双工指的是同一时间只能收数据或者发数据;全双工指的是可以同时发数据和收数据 | |
同步/异步 | 同步:依赖时钟线,收发双方根据时钟线频率来收发数据。异步:不依赖时钟线频率,根据数据收尾标志位来判断数据开始和结束 | |
串行/并行 | 串行:一次只收发一个bit的数据;并行:一个同时收发多个bit数据 | |
下面是查copilot的
-
半双工 vs. 全双工 对比
半双工(Half-Duplex):数据可以在两个方向传输,但不能同时进行。 发送和接收交替进行,一方发送时另一方必须等待。
全双工(Full-Duplex):数据可以同时在两个方向传输,双方可以同时发送和接收。 传输速度更快,减少通信延迟。
模式 | 数据方向 | 同时传输 | 应用场景 |
---|---|---|---|
半双工 | 双向,但需轮流传输 | ❌ 不能同时 | 对讲机、RS-485 |
全双工 | 双向,同时传输 | ✅ 可以同时 | 电话通话、以太网 |
半双工适用于简单低速通信,不需要实时交互。 全双工适用于高速通信,可以同时传输数据,提高效率。
2、同步 vs. 异步 通信对比
同步通信(Synchronous):数据传输有固定时钟信号,发送端和接收端严格按照同步时钟工作。
异步通信(Asynchronous):没有全局时钟,每个数据帧自带起始位和停止位,接收端根据这些位解析数据。
类型 | 特点 | 适用场景 | 常见协议 |
---|---|---|---|
同步 | 需要固定时钟,数据流稳定 | 高速通信,如传感器 | SPI, I2C |
异步 | 无固定时钟,数据带有起始位 | 远程低速通信 | UART, RS-232 |
3、串行 vs. 并行对比
串行通信(Serial Communication):数据按位传输**,每次传输**1 bit(一位),依次排列。
并行通信(Parallel Communication): 数据同时传输多个位(比如 8 位、16 位),多个数据线同时发送。
类型 | 传输方式 | 适用场景 | 常见协议 |
---|---|---|---|
串行通信 | 按位逐步传输 | 远距离、低速 | SPI, I2C, UART, USB |
并行通信 | 多位同时传输 | 短距离、高速 | DDR, PCI, 并口打印机 |
串行适用于远距离,减少干扰。 并行适用于短距离,高速数据传输。
下面是几种通讯协议整理
第一版
协议名称 | 通讯类型 | 通讯速率 | 通讯距离 |
---|---|---|---|
USART | 全双工串行同步/异步通讯协议 | 几百Kbps到几Mbps | 几米 |
I2C | 半双工串行同步通讯协议(纠错这边I2C不是同步而是异步) | 几百Kbps | 几米 |
SPI | 全双工串行同步通讯协议 | 几十Mbps | 几米 |
CAN | 半双工串行异步通讯协议(CAN是半双工串行是因为CANH、CANL是查分信号) | 几百Kbps到几Mbps | 几十米 |
Rs232 |
是的,I2C 确实有 SCL(时钟线),但它的工作方式不同于典型的同步通信协议(如 SPI)。
为什么 I2C 仍然被归类为异步通信?
SCL 由主设备控制:虽然有 SCL,但它不是固定的时钟信号**,而是**主设备动态控制,这意味着时钟信号不是持续稳定的,而是根据数据传输需求进行拉高或拉低。
修改后如下
协议名称 | 数据传输类型 | 通讯模式 | 通讯速率 | 通讯距离 |
---|---|---|---|---|
USART | 全双工串行通讯协议 | 同步/异步 | 几百Kbps到几十Mbps | 几米 |
I2C | 半双工串行通讯协议 | 异步 | 100Kbps-3.4Mbps,通常是400Kbps | 通常不到1米,低速模式下可以到几米 |
SPI | 全双工串行通讯协议 | 同步 | 几十Mbps(部分可以达到100Mbps) | 几米 |
CAN | 半双工串行通讯协议 | 异步 | 几百Kbps到5-8Mbps | 几十米(在汽车和工业环境下可以达到1公里以上,基于低速率) |
RS232 | 全双工串行通讯协议 | 同步 | 几百Kbps到几十Mbps | 几十米 |
RS485 | 半双工串行通讯协议 | 异步 | 几百Kbps到几十Mbps | 几百米 |
另:TTL和USART关系,单片机与单片机之间的USART通讯通常为TTL传输。
RS232通常使用9针和25针接口,没有时钟线。
疑问:为什么串口也没有时钟线可以同步通讯。RS232不能同步通讯
这是一个很好的问题!USART(Universal Synchronous/Asynchronous Receiver/Transmitter) 和 RS-232 虽然都用于串行通信,但它们的同步机制不同,这导致了 RS-232 只能进行异步通信,而 USART 可以支持同步通信。
1. USART 如何实现同步通信?
虽然 USART 没有独立的时钟线(如 SPI 的 SCLK),但它可以使用外部时钟信号来实现同步通信: ✅ 在同步模式下,USART 通过 TXD(发送数据线) 和 RXD(接收数据线) 进行数据传输,同时使用一个 共享的时钟信号(通常由主设备提供) 来同步数据。 ✅ USART 在同步模式下可以匹配时钟信号,让发送端和接收端保持一致的数据节奏。 ✅ 同步模式通常用于高速数据传输,适合需要低误码率的场景。
🔹 USART 同步通信示例
时钟: |--|--|--|--|--|--|--|(时钟信号) 数据: |01|10|11|00|01|11|(数据同步传输)
➡ USART 通过外部时钟信号,使数据在固定时钟节奏下传输。
2. 为什么 RS-232 不能同步通信?
✅ RS-232 没有全局时钟信号,它只能通过 起始位(Start Bit) 和 停止位(Stop Bit) 实现数据同步,每个数据帧都是独立的。 ✅ 每个数据包都自带同步信息,但接收端无法持续保持精确同步,只能在每次数据开始时重新校准。 ✅ 适用于低速、远程通信,但不能用于高精度、高速的数据同步传输。
🔹 RS-232 异步通信示例
数据包1: [起始位] 10110010 [停止位] 数据包2: [起始位] 11001100 [停止位]
➡ 每个数据包独立同步,没有稳定的时钟控制,所以它属于异步通信。
3. 总结:USART vs RS-232
协议 时钟信号 数据同步方式 适用场景 USART(同步模式) 由外部时钟提供 按时钟节奏同步传输 高速、短距离 USART(异步模式) 无外部时钟 通过起始/停止位 低速、短距离 RS-232 无全局时钟 通过起始/停止位 低速、远距离 ✅ USART 可以在同步模式下使用外部时钟信号进行同步数据传输。 ✅ RS-232 始终使用异步方式,每个数据包独立同步,因此不能进行真正的同步通信。
协议名称 | 数据传输类型 | 通讯模式 | 通讯速率 | 通讯距离 |
---|---|---|---|---|
USART | 全双工串行通讯协议 | 同步(共享时钟信号)/异步 | 几百Kbps到几十Mbps | 几米 |
I2C | 半双工串行通讯协议 | 异步(有同步机制) | 100Kbps-3.4Mbps,通常是400Kbps | 通常不到1米,低速模式下可以到几米 |
SPI | 全双工串行通讯协议 | 同步 | 几十Mbps-100Mbps(部分可以达到几百Mbps) | 几米 |
CAN | 半双工串行通讯协议 | 异步 | 几百Kbps到5-8Mbps | 几十米(在汽车和工业环境下可以达到1公里以上,基于低速率) |
RS232 | 全双工串行通讯协议 | 异步(没有时钟线) | 几百Kbps到几十Mbps | 几十米 |
RS485 | 半双工串行通讯协议 | 异步 | 几百Kbps到几十Mbps | 几百米(低速模式可达1200米) |
对于USART可以同步异步通讯,这边存有疑虑。按照解释所述,当有外部时钟线时,可以进行同步通讯。我就疑惑之前使用USART连接电脑向外输出打印信息,使用的时同步还是异步通讯。
问了下copilot
单片机使用TTL发送信号给电脑串口工具,使用的是同步通讯模式吗
不一定! 单片机使用 TTL(Transistor-Transistor Logic) 电平发送信号给电脑串口工具,具体的通讯模式取决于协议。如果你的单片机通过 USART 发送 TTL 信号,它可能是同步或异步模式,具体如下:
1. 如果是 USART 异步模式
✅ 没有额外的时钟信号,通信依靠 起始位和停止位 进行数据同步。 ✅ 单片机仅使用 TXD(发送)、RXD(接收)、GND(地),波特率双方约定一致即可。 ✅ 大多数常见的串口通信(如 RS-232)都是异步模式。
🔹 示例(标准 UART 串口工具)
电脑串口工具 <—> 单片机(UART)
➡ 典型的串口工具,如
SecureCRT
、RealTerm
,使用异步串口通信。2. 如果是 USART 同步模式
✅ 主设备提供共享的时钟信号(CLK),所有设备按照该时钟同步数据传输。 ✅ 单片机需要额外的 CK(时钟线),除了 TXD 和 RXD,还需连接 CLK。 ✅ 适用于高速数据通信,避免异步模式的时间偏移。
🔹 示例(同步 USART 设备)
电脑 <—> 单片机(USART 同步模式)
➡ 需要额外的时钟线来同步数据,如果你的硬件只连接 TX/RX/GND,那肯定是异步模式!
3. 如何判断?
✅ 如果单片机只有 TXD、RXD、GND ➝ 异步模式(UART)。 ✅ 如果单片机有 TXD、RXD、GND、CK(时钟线) ➝ 同步模式(USART)。 ✅ 串口工具一般只支持 UART(异步),而不会提供额外时钟信号。
总结
✅ 单片机 TTL 信号 + 电脑串口工具 通常是 UART 异步通讯模式! ✅ 如果使用 USART 同步模式,需要额外的 CLK 时钟线,但电脑串口工具一般不支持。 ✅ 检查你的硬件连接方式,就能判断通讯模式!
三、
3.1
总结
未完待续