一、通信方式分类

(一)按数据传输线路数量划分:串行通信与并行通信

类别定义特点
并行通信多个比特同时通过并行线进行传输优点:传输速率较高;缺点:占用大量芯片资源
串行通信将数据拆分成一个个比特,按照先后次序在一根总线上进行发送优点:系统占用资源少,结构简单;地位:主机间通信的常用方式

(二)按数据传输方向划分:单工、半双工、全双工通信

通信方式定义关键特点
单工通信(Simplex)数据仅能沿固定单一方向传输,一方永久为发送端,另一方永久为接收端1. 单向不可逆;2. 仅需1根传输总线
半双工通信(Half-Duplex)数据可沿两个方向传输,但不能同时双向传输,需切换传输方向1. 双向可逆,但需分时;2. 可共用1根传输总线;3. 存在“发送-接收”的切换
全双工通信(Full-Duplex)数据可沿两个方向同时传输,通信双方可同时发送和接收数据1. 双向同步进行;2. 通常需2根独立传输线(如TX/RX);3. 无切换延迟,交互效率最高

二、串口通信(UART)核心知识

(一)串口通信定义

通常指“异步串口通信(UART)”,是串行通信的一种,通过1根发送线(TX)和1根接收线(RX)实现双向数据传输,靠“波特率同步”,广泛用于短距离设备交互(如单片机与电脑、传感器与控制器),属于异步串行全双工通信方式。

(二)串口通信时序

串口通信空闲时数据线为高电平,数据以“帧”为单位传输,1帧包含4个固定部分,时序顺序如下:

        空闲时为高电平

  1. 起始位:帧的开始标志,必为低电平(持续1个“位时间”,$ \text{位时间} = \frac{1}{\text{波特率}} $),用于通知接收端“即将传数据”;
  2. 数据位:实际传输的二进制数据,通常为5~8位(最常用8位,即1个字节),按“低位在前(LSB)、高位在后(MSB)”传输;
  3. 校验位(可选):用于检错,分奇校验(数据位+校验位总“1”的个数为奇数)、偶校验(总“1”的个数为偶数)、无校验(省略);
  4. 停止位:帧的结束标志,为高电平,用于接收端确认1帧结束,以保证下一个字节发送前的起始位能够表现出来。

(三)串口通信速率

  1. 速率决定因素:串口通信速率由“波特率(Baud Rate)”决定,波特率指“每秒传输的信号变化次数”(对串口而言,通常1个信号变化对应1位数据,因此 $ \text{波特率} \approx \text{每秒传输的位数} $,即bps),且收发双方必须设置相同的波特率,否则会因“位时间不匹配”导致数据传输错误。
  2. 常见波特率(单位:bps):1200、2400、4800、9600(常用)、115200等。

三、同步通信与异步通信

通信类型定义优点缺点
同步通信通信设备之间除了需要数据线之外,还需额外的时钟线(如SCLK),收发双方通过时钟信号“同步节奏”,数据连续传输(无间隙),发送方负责控制时钟线的变化,每发送一个比特,都需要将时钟线按照规则进行改变,通常以“块”为单位传输(如16位、32位)无需起始/停止位,传输效率高需额外时钟线,线路成本高,时钟干扰会影响同步
异步通信无需时钟线,收发双方通过“约定相同的波特率”同步节奏,数据以“帧”为单位传输(每帧含起始/停止位,帧间可有空隙)线路少(仅TX/RX)、成本低,适合短距离因波特率偏差可能导致误码(需预留容错空间),效率略低

串口通信归属:串口通信(UART)属于异步通信,无需时钟线,靠起始/停止位和约定波特率实现数据同步。

四、常见电平标准(TTL、RS232、RS485)

三者是串口通信的“电平标准”(定义“0”和“1”对应的电压范围),核心差异是“电压范围”“传输距离”和“抗干扰能力”:

电平标准电平定义特点应用场景
TTL(晶体管-晶体管逻辑电平)高电平(1)= 3.3V/5V,低电平(0)= 0V电压范围小,抗干扰能力弱,传输距离短(通常≤10米)设备内部短距离通信(如单片机与传感器、模块间的板上通信)
RS232(Recommended Standard 232)高电平(1)= -15V~-3V,低电平(0)= +3V~+15V(与TTL反相)采用正负电压,抗干扰能力比TTL强,传输距离中等(通常≤15米),支持全双工(需TX/RX两根线)早期电脑串口(DB9接口)与外设通信(如Modem、单片机下载),需通过“TTL-RS232转换器”与TTL设备连接
RS485(Recommended Standard 485)采用“差分信号”(两根线A/B,通过A-B电压差判断电平:A>B时为1,A<B时为0),无固定电压范围(通常差分电压≥200mV即可识别)差分传输抗干扰能力极强,传输距离远(最大1200米),支持多设备联网(最多32/128台设备共享总线),默认半双工(仅需A/B两根线,全双工需额外两根线)工业现场长距离、多设备通信(如传感器网络、PLC控制、智能家居总线),需通过“TTL-RS485转换器”与TTL设备连接

五、USB相关

USB(通用串行总线)是一种常用的串行通信接口,具有即插即用、支持热插拔、传输速率较高、可同时为外部设备供电等特点,广泛应用于电脑与外部设备(如U盘、鼠标、键盘、手机等)的连接与数据传输,其通信方式为串行通信,支持全双工传输。

六、51单片机串口通信相关代码

(一)头文件引用

#include <reg52.h>  
#include <stdio.h>  
#include <string.h>  
#include "delay.h"  

(二)串口初始化函数

void init_uart(void)  
{  unsigned char t;  t = SCON;  t &= ~(3 << 6);  t |= (1 << 6) | (1 << 4);  SCON = t;  PCON |= (1 << 7);  t = TMOD;  t &= ~(3 << 4);  t |= (2 << 4);  t &= ~(3 << 6);  TMOD = t;  TH1 = 204;  TL1 = 204;  TCON |= (1 << 6);  IE |= (1 << 7) | (1 << 4);  
}  

(三)单个字符发送函数

void send_char(char ch)  
{  SBUF = ch;  while((SCON & (1 << 1)) == 0);  SCON &= ~(1 << 1);  
}  

(四)缓冲区发送函数

void send_buffer(const char *p, int len)  
{  while(len--)  {  send_char(*p++);  }  
}  

(五)串口中断服务函数

void uart_handler(void) interrupt 4  
{  if((SCON & (1 << 0)) != 0)  {  P2 = SBUF;  SCON &= ~(1 << 0);  }  
}  

(六)全局变量定义

xdata char recv_buffer[64];  
int pos = 0;  

(七)主函数

int main(void)  
{  int i = 1;  int n = 10;  char *p = (char *) &p;  xdata char buffer[32];  init_uart();  while(1)  {  n = sizeof(int);  sprintf(buffer, "int size  =  %d\n", n);  send_buffer(buffer, strlen(buffer));  n = sizeof(char);  sprintf(buffer, "char size  =  %d\n", n);  send_buffer(buffer, strlen(buffer));  n = sizeof(short);  sprintf(buffer, "short size  =  %d\n", n);  send_buffer(buffer, strlen(buffer));  n = sizeof(double);  sprintf(buffer, "double size  =  %d\n", n);  send_buffer(buffer, strlen(buffer));  n = sizeof(long);  sprintf(buffer, "long size  =  %d\n", n);  send_buffer(buffer, strlen(buffer));  n = sizeof(char *);  sprintf(buffer, "char * size  =  %d\n", n);  send_buffer(buffer, strlen(buffer));  delay(0x9FFF);  }  return 0;  
}  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95560.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95560.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/95560.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch面试精讲 Day 8:聚合分析与统计查询

【Elasticsearch面试精讲 Day 8】聚合分析与统计查询 文章标签&#xff1a;Elasticsearch, 聚合查询, 统计分析, Aggregations, 面试, 大数据, 搜索引擎, 后端开发, 数据分析 文章简述&#xff1a; 本文是“Elasticsearch面试精讲”系列的第8天&#xff0c;聚焦聚合分析与统计…

HTML HTML基础(2)

1.开发者文档W3C官网&#xff1a; www.w3c.org W3School&#xff1a; www.w3school.com.cn MDN&#xff1a; developer.mozilla.org —— 推荐。2.排版标签标签名标签含义单 / 双 标签h1 ~ h6标题双p段落双div没有任何含义&#xff0c;用于整体布局双(1). h1 最好写一个&#x…

spring.profiles.active配置的作用

1. spring.profiles (或文件名中的 ?)&#xff1a;定义配置的名称这是声明一段配置属于哪个 Profile。在同一个 application.yml 中&#xff1a;使用 spring.profiles 键来为一个配置段打上标签。yamlspring:profiles: dev # 【定义】这个配置段的名称是‘dev’ server:port: …

【开题答辩全过程】以 高校教室管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

Aurobay EDI 需求分析:OFTP2 与 EDIFACT 驱动的汽车供应链数字化

Aurobay 是由吉利汽车集团与沃尔沃汽车集团合资成立的动力系统公司&#xff0c;总部位于瑞典哥德堡。其供应链系统广泛采用 EDI&#xff08;电子数据交换&#xff09;技术进行标准化通信与业务协作。通过严谨的 EDI 传输规范&#xff0c;其与供应商之间构建了高效、安全的数据交…

yolov8环境配置:从安装到卸载,从入门到放弃。

yolov8环境配置&#xff1a;从安装到卸载&#xff0c;从入门到放弃。 先讲安装再到删除。 前置环境安装&#xff1a;Conda 这里我选用MiniConda 使用清华的镜像安装&#xff1a;https://mirror.tuna.tsinghua.edu.cn/anaconda/miniconda/ 直接安装到C盘&#xff08;免得后续…

神马 M63S+ 438T矿机评测:SHA-256算法高效能挖矿利器

在加密货币的挖矿世界里&#xff0c;硬件设备的性能直接影响着矿工的挖矿效率与收益。而对于选择比特币&#xff08;BTC&#xff09;与比特币现金&#xff08;BCH&#xff09;等基于SHA-256算法的矿工来说&#xff0c;矿机的算力、功耗、能效比等参数无疑是至关重要的。在这篇文…

vue2滑块验证

纯 Vue 2 实现的滑块拖动验证组件效果说明拖动滑块到最右侧判定为验证成功支持自定义宽度、高度、颜色、提示文字可扩展轨迹分析或后端验证逻辑Vue 2 滑块验证组件代码SliderVerify.vue注意&#xff1a;icon图标使用的是Element ui图标<template><div class"slid…

74、在昇腾服务器 800I A2上迁移伏羲1.0/2.0大模型,并对比cpu和npu的精度

基本思想&#xff1a;在昇腾服务器上迁移github公开链接的的伏羲1.0/2.0大模型&#xff0c;但是由于伏羲2.0模型没有权重&#xff0c;这里使用自己造的的权重进行推理模型测试&#xff0c;在之前迁移过这个网站问海大模型和问天大模型人工智能天气预报模型示范计划AIM-FDP支撑平…

如何高效比对不同合同版本差异,避免法律风险?

智能文档比对系统通过自动化、高精度的差异比对与结构化报告&#xff0c;锁定合同修改、防止核心条款误删并实现版本清晰追溯&#xff0c;解决证券基金公司在合同范本管理中的操作风险、审核效率与归档难题。 如何防止业务人员误改或误删合同条款&#xff1f; 这是一个典型的操…

快手Keye-VL 1.5开源128K上下文+0.1秒级视频定位+跨模态推理,引领视频理解新标杆

人工智能和多模态学习领域&#xff0c;视频理解技术的突破为各类应用提供了强大的支持。快手近期开源了其创新性的大型多模态推理模型——Keye-VL 1.5&#xff0c;该模型具备超长的上下文窗口、0.1秒级的视频时序定位能力&#xff0c;并支持视频与文本之间的跨模态推理。这一技…

【前端教程】JavaScript 实现图片鼠标悬停切换效果与==和=的区别

图片鼠标悬停切换效果 功能说明 页面展示4张默认图片&#xff0c;当鼠标移动到任意一张图片上时&#xff0c;该图片会切换为对应的特定图片&#xff08;诗、书、画、唱&#xff09;&#xff1b;当鼠标移出时&#xff0c;图片恢复为默认图片。 和的区别 在讲解案例前&#xff0c…

ss 原理

SSR&#xff08;服务端渲染&#xff09;技术文档 一、SSR 概述 SSR&#xff08;Server-Side Rendering&#xff0c;服务端渲染&#xff09;是一种在服务端生成完整 HTML 页面&#xff0c;再发送给客户端渲染的前端渲染模式。与 CSR&#xff08;客户端渲染&#xff0c;如 React/…

chrome 浏览器开发者工具技巧

$0 我们在开发者工具里面选中了哪个元素&#xff0c;他后面都会跟一个$0 ,则表示 $0 就是选择这个标签元素 如图&#xff1a;

GJOI 9.4 题解

1.CF1801B Buy Gifts / 洛谷 P13532 买礼物 题意 n≤2105n\le 2\times 10^5n≤2105。 思路 神秘卡常题&#xff0c;如果等待提交记录久一点就能知道自己 A 掉…… 题目问 A 的最大值&#xff0c;减去 B 的最大值&#xff0c;求差值最小值。但是怎么选到两个最大值呢&#x…

Git 工具的「安装」及「基础命令使用」

- 第 119 篇 - Date: 2025 - 09 - 05 Author: 郑龙浩&#xff08;仟墨&#xff09; Git 工具的「安装」及「基础命令使用」 学习课程&#xff1a;https://www.bilibili.com/video/BV1MU4y1Y7h5?spm_id_from333.788.player.switch&vd_source2683707f584c21c57616cc6ce8454e…

2025高教社数学建模国赛A题 - 烟幕干扰弹的投放策略(完整参考论文)

基于模拟遗传退火的烟幕弹投递方式的研究 摘要 烟幕干扰弹作为一种具有成本低、效费比高等优点的典型防御手段,主要通过化学燃烧或爆炸分散形成气溶胶云团,在目标前方特定空域形成有效遮蔽,从而干扰敌方导弹攻击路径。随着精确投放技术的发展,现可利用无人机实现烟幕干扰…

[源力觉醒 创作者计划]_文心一言 4.5开源深度解析:性能狂飙 + 中文专精

文章目录[源力觉醒 创作者计划]_文心一言 4.5开源深度解析:性能狂飙 中文专精一. 部署实战&#xff1a;单卡环境的极速落地1.1 &#x1f5a5;️ 环境配置の手把手教程 &#x1f4dd;部署准备&#xff1a;硬件与镜像依赖安装&#xff1a;一行代码搞定1.2 &#x1f680; 模型启动…

开发微服务的9个最佳实践

微服务架构是一种演进的模式&#xff0c;从根本上改变了服务器端代码的开发和管理方式。这种架构模式涉及将应用程序设计和开发为松散耦合服务的集合&#xff0c;这些服务通过定义良好的轻量级 API 进行交互以满足业务需求。它旨在通过促进持续交付和开发来帮助软件开发公司加速…

Karmada v1.15 版本发布

Karmada 是开放的多云多集群容器编排引擎&#xff0c;旨在帮助用户在多云环境下部署和运维业务应用。凭借兼容 Kubernetes 原生 API 的能力&#xff0c;Karmada 可以平滑迁移单集群工作负载&#xff0c;并且仍可保持与 Kubernetes 周边生态工具链协同。 Karmada v1.15 版本现已…