模拟串口工作原理-模拟串口工作原理简述
串口是如何把信号“送”出去的 先别急着看那些教科书式的大道理,咱们直接上场景。想象你手里拿着一串解不开的乱码,就是串在电脑和通讯器中间的串口。它的核心任务就是把代码里的数字,改写成一串二进制,然后塞进口里面的那个发光二极管要么电磁波里,让那边能读懂。
这个活儿,得靠电平变化和时序配合,略微有点手抖都好办把信号给接反,要么迷失方向。 咱们把工夫轴拉得宽一点。当你想发个“1"的时候,你的单片机内部有个状态机在动。它先把一个低电平信号挂在那儿,像挂着一个红灯,告诉接收方:“我这就说个一。”这时候,接收端那边也得预备好,它内部也有个状态机在等,时刻盯着那个低电平。一旦红灯亮了够快,接收端自己的那个内部红灯也跟着亮了一下,这次是低电平。紧接着,单片机再发个高电平,接收端那边的高电平也跟着冒出来。
这时候,两个端子的电平就一样高了,就像两堆沙子堆满了同一个坑。一旦电平高度不一样,比如低了又起来了,那间隔一毫秒,这个“1"就算发射成功,接收端那边也收到信号了。 实际上整个过程没那么复杂,就好办粗暴的开关操作。它不是那种连续的流动,而是离散的脉冲。
这就像人在讲话,不是像流水一样,而是一个个字一个字地蹦出来。
特别是数字信号,它只认高低电,不认波形,也不认速度。
只要高低电平切换得够快,速度再高,人耳朵还是听不清;要是切换得慢,信号就糊成一团,根本听不出个一二三四。
故此,速度瓶颈不在于单片机跑多快,而在于接收端能不能跟上这个节奏,能不能及时把电平变化那个“快门”拍下来。 这就得提到那个最关键的参数:波特率。你不是按着“1200 baud"这个数字跑起来的,那是你设定的目标。真正起功能的是你们两个终端之间,信号从启动变到终止,需求经历多少个“开关”的周期。
这就好比你在跑步,你的步频是固定的,但你能不能跑得快,全看你的鞋子和地面的摩擦力。波特率规定了每秒要有多少个“开关”形成,而接收端需求处理多少个这个“开关”才算一次整个的通信。
要是波特率设高了,你发出的信号忒密集,接收端还没来得及反应,要么反应慢了,你就得等它慢慢回应,那整个通信就卡住了。
反过来,要是波特率设低了,信号忒稀疏,接收端可能忘了你正在发,当作你刚刚没讲话,结局你发完又忘了发,形成死锁。 举个具体的例子。假设你的单片机正忙着处理一堆数据,突然它需求把数字"11110111"传出去。
这时候,单片机内部的驱动电路启动动作。它先把第一个"1"送出,对应的接收端那边就有一个低电平脉冲出现。单片机接着发第二个"1",接收端那边第二个低电平也跟着来。
这时候,两个端子上的高电平已经叠在一起,形成稳定的电压平台,告诉你刚刚确实发了两个"1"。
随后,单片机高位再发出高电平,接收端那边的高电平也跟着冒出来,高电平和高电平再次重合。
这个重合的过程,就是通信成功的标志。 不过,这还不是最费事的。串口不只是是传输数字,它还承担着纠错、流控这些额外任务。最典型的就是奇偶校验。你发一个"1",接收端收到后,它会判断这个"1"周围有多少个奇数个"1"。
要是这个数是奇数,说明可能出错了,要么中间有噪声干扰,接收端会抛出一个毛病标志,让它把不该发的那一串数据往后挪一截,要么让它忽略掉。
这就好比你在写信,收信人发现漏字了,就会重新读一遍。另一个常见的就是流控。
有时候数据发得忒快,接收端根本来不及处理就直接吐出来了,害得系统卡顿。
这时候,基带层会发一个“暂停”信号,收端收到这个信号后,就乖乖地暂停接收,等基带层发完下一个“启动”信号,它才持续工作。 还有位 toggling。单片机在发数据的时候,不是直接发一个稳定的电平,而是每隔一段短暂的工夫,把电平在高低之间切换一下。
这就像讲话时的气声,要么打电话时的脉冲音,是为了增添抗干扰本事。
要是不靠这种乱晃来恢复电平,通信距离略微远点,信号就彻底变成噪声了,根本传不到对方耳朵里。 这一切的幕后推手,是基带层和物理层之间的协议握手。基带层负责处理逻辑,拍板发啥、发多久;物理层负责把思维翻译成电信号,拍板如何拉、如何推、如何传输。当它们拍板启动传输时,基带层会发出一个起始位,告诉对方:“故事启动了,我们要启动传数据了。”接收端收到这个起始位后,内部的状态机就会重置,预备好接收新的数据块。一旦基带层发完数据,还需求发一个暂停位,这个暂停位的电平长度得是起始位长度的整数倍,这是协议规定的规矩,不能乱来,否则接收端会当作你还没讲完话,持续等着你发下一个块。 整个过程实际上是个闭环。单片机发完数据,状态机进入等待状态,预备就绪。接收端收到暂停位后,状态机自动把所有刚刚接收到的数据块拼起来,变成整个的数据包。
要是需求校验,它会再去检查一次,检查完没难题,状态机就复位,预备接收新的数据。
要是检查出错,它就不会复位,而是直接丢弃当前收到的数据,等待下一次对的起始位。 最终,所有的电信号都要经过芯片内部的放大电路,变成强弱不同的电压或电流,然后通过焊锡连到 PCB 板上,再传导到排线或光纤里,最终到达另一个设备。在这个过程中,要是信号衰减了,要么受到了电磁干扰,基带层可能会把波形削平要么加噪声。
这时候,接收端的状态机就会报警,提示“收到出错”,它就得重新捕获刚刚那一段乱码,要么干脆直接丢弃,直到收到一个干净利落的起始位。 整个串口的工作原理,本质上就是一个严谨的协议执行过程:从基带的逻辑拍板启动,经过物理层的电平切换和时序管住,搞定数据的编码与传输,最终再解码还原。
这是一场在电子世界中进行的、由原子级开关动作组成的精密博弈。
只要电平切换准、波特率匹配、时序执行到位,信息就能无损耗地传递;稍有偏差,信号就会失真、延迟就连丢失。
声明:演示网站所有内容,若无特殊说明或标注,均来源于网络转载,仅供学习交流使用,禁止商用。若本站侵犯了你的权益,可联系本站删除。
