历史上的今天
返回首页

历史上的今天

今天是:2025年12月09日(星期二)

正在发生

2022年12月09日 | 学会了单片机的UART,就学会了通信

2022-12-09 来源:zhihu

UART(英文全称:Universal Asynchronous Receiver / Transmitter)是一种异步全双工串行通信协议,由Tx和Rx两根数据线组成,因为没有参考时钟信号,所以通信的双方必须约定串口波特率、数据位宽、奇偶校验位、停止位等配置参数,从而按照相同的速率进行通信。


异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。当波特率为9600bps时,传输一个bit的时间间隔大约为104.16us;波特率为115200bps时,传输一个bit的时间间隔大约为8us。

数据传送速率用波特率来表示,即每秒钟传送的二进制位数。例如数据传送速率为120字符/秒,而每一个字符为10位(1个起始位,7个数据位,1个校验位,1个结束位),则其传送的波特率为10×120=1200字符/秒=1200波特。


数据通信时序图:

其中各位的意义如下:

起始位:先发出一个逻辑”0”信号,表示传输字符的开始;

数据位:可以是5~8位逻辑”0”或”1”;如ASCII码(7位),扩展BCD码(8位);小端传输,即LSB先发,MSB后发;

校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验);

停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平(用于双方同步,停止位时间间隔越长,容错能力越强);

空闲位:处于逻辑“1”状态,表示当前线路上没有数据传送;

注:异步通信是按字符传输的,接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的)。

(起始位和停止位)

(数据位)

(传输“A”)

上图是uart协议传输一个”A”字符通过示波器的uart解码而得到的波形示意图。下面,根据此图来介绍一下uart的一些基本参数。


波特率:此参数容易和比特率混淆,其实他们是由区别的。但是我认为uart中的波特率就可以认为是比特率,即每秒传输的位数(bit)。一般选波特率都会有9600,19200,115200等选项。其实意思就是每秒传输这么多个比特位数(bit)。


起始位:先发出一个逻辑”0”的信号,表示传输数据的开始。

数据位:可以选择的值有5,6,7,8这四个值,可以传输这么多个值为0或者1的bit位。这个参数最好为8,因为如果此值为其他的值时当你传输的是ASCII值时一般解析肯定会出问题。理由很简单,一个ASCII字符值为8位,如果一帧的数据位为7,那么还有一位就是不确定的值,这样就会出错。


校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。就比如传输“A”(01000001)为例。

  • 当为奇数校验:”A”字符的8个bit位中有两个1,那么奇偶校验位为1才能满足1的个数为奇数(奇校验)。

  • 当为偶数校验:”A”字符的8个bit位中有两个1,那么奇偶校验位为0才能满足1的个数为偶数(偶校验)。

此位还可以去除,即不需要奇偶校验位。

停止位:它是一帧数据的结束标志。可以是1bit、1.5bit、2bit的空闲电平。可能大家会觉得很奇怪,怎么会有1.5位~没错,确实有的。所以我在生产此uart信号时用两个波形点来表示一个bit,这个可以不必深究。


空闲位:没有数据传输时线路上的电平状态,为逻辑1。

传输方向:即数据是从高位(MSB)开始传输还是从低位(LSB)开始传输。比如传输“A”如果是MSB,那么就是01000001;如果是LSB,那么就是10000010。


uart传输数据的顺序就是:刚开始传输一个起始位,接着传输数据位,接着传输校验位(可不需要此位),最后传输停止位。这样一帧的数据就传输完了。接下来接着像这样一直传送。在这里还要说一个参数。


帧间隔:即传送数据的帧与帧之间的间隔大小,可以以位为计量也可以用时间(知道波特率那么位数和时间可以换算)。比如传送”A”完后,这为一帧数据,再传”B”,那么A与B之间的间隔即为帧间隔。

上两图和下两图传送的数据和波特率都是一样的,但是有几个参数是故意设置反了从而形成对比。有助于更深入的理解UART。


推荐阅读

史海拾趣

Astron Wireless Technologies Inc公司的发展小趣事

随着无线通信技术的快速发展,Astron Wireless Technologies Inc公司面临着来自同行的竞争压力。为了保持竞争优势,公司不断加大研发投入,推出了一系列具有更高性能、更低成本的无线通信产品。同时,公司还加强了与客户的沟通与合作,及时了解市场需求变化,并根据客户需求进行产品调整和优化。这些措施使得公司在激烈的市场竞争中保持了领先地位。

D3 Semiconductor公司的发展小趣事

在全球化的大背景下,D3 Semiconductor积极拓展国际市场。除了与贸泽电子的合作外,公司还与多家国际知名的电子企业建立了合作关系,将产品推向全球各地。同时,D3 Semiconductor还加强了在国际市场的营销和品牌建设,提高了公司的知名度和美誉度。这一系列的努力使D3 Semiconductor在国际市场上取得了显著的成绩,也为公司的未来发展奠定了坚实的基础。

DECON公司的发展小趣事

DECON公司成立于电子行业的蓬勃发展时期,初创期便专注于研发和生产高质量的电子连接器产品。通过对市场的深入调研和技术创新,公司成功定位自己在高端连接器市场的位置,并凭借其出色的产品质量和稳定的性能,逐步在市场中树立了良好的口碑。

Diode Laser Concepts公司的发展小趣事

在电子行业的早期,激光技术刚刚起步,而Diode Laser Concepts公司的创始人——一位激光领域的专家,看到了二极管激光器(Diode Laser)在精密制造和医疗领域的巨大潜力。他带领团队攻克了一系列技术难题,成功研发出高效、稳定的二极管激光器。这一突破性的技术为公司的创立奠定了坚实的基础。

BAND-IT公司的发展小趣事

在电子行业的推动下,大型基础设施的建设也迎来了快速发展。韦拉札诺海峡大桥作为连接斯塔顿岛和布鲁克林的世界上最长的吊桥,其建设过程对紧固件的需求量大且要求严格。BAND-IT公司凭借其大型不锈钢卡箍产品,成功参与了这一重大工程的建设。这些卡箍不仅具有强大的承重能力,而且安装简便、安全可靠,为大桥的稳定性和安全性提供了有力保障。

Fractus公司的发展小趣事

随着技术的不断成熟和产品的市场推广,Fractus逐渐获得了业界的广泛认可。公司在多个国际展会上展示了其创新的天线技术,并赢得了多项重要奖项,包括欧洲联盟IST奖项的特等奖等。这些荣誉不仅提升了Fractus的品牌知名度,也进一步巩固了其在天线技术领域的领先地位。

问答坊 | AI 解惑

异常处理的问题,当开机加载内核的时候按开机键出现如下提示,这是怎么回事啊

“RaiseException: Thread=8fdffcf4 Proc=8d4d6160 \'device.exe\' AKY=00000005 PC=8c29dae4(NK.EXE+0x0009dae4) RA=8c29b17c(NK.EXE+0x0009b17c) BVA=00000000 FSR=00000000”, 出现这个打印提示后就不能控制这部分驱动了,出现性能上的故障, ...…

查看全部问答>

已知USB的VID和PID,如何得到它的盘符

可能是属于老问题,搜到一些资料,但是还是不是很了解,有同学可以详细介绍一下吗? 如果有代码最好,谢谢。 …

查看全部问答>

需要一个北京地区的兼职linux编程人员

需要一个北京地区的兼职linux编程人员,要求可以独立完成下列开发, 不符合条件请勿打扰,以免浪费你我时间 要求熟悉MINIGUI,具体编程内容: 从COM口读入数据,在14英寸以上显示器上显示如下图形界面: 屏幕正中间一个圆形,圆形里面显示从串 ...…

查看全部问答>

LED照明发展中五个亟待解决的问题

  LED照明发展中五个亟待解决的问题 ——色温范围、照明标准、亮度范围、照明总均匀度和眩光控制   最合适的LED照明灯具色温范围,应该是接近太阳自然白光的色温范围才是最科学的选择;较低照射强度的自然白光,就可以达到其他非自然 ...…

查看全部问答>

请问LM3S 挂5V I2C器件可以正常运行么?

请问LM3S 挂5V I2C器件可以正常运行么?SDA,SCL上拉也为5V,比如FM24C02之类。…

查看全部问答>

请问RLink和STICK有命令行接口吗?

我们要在产品线上大量烧写MCU(使用RLink和STICK),软件工具是STVP。 因为量大,STVP显示的烧写结果不能很醒目的提示操作员,人在惯性下很容易把烧写不成功的产品放行,而且每次更换器件型号后需要重新配置,另外我们也希望把烧写MCU的结果 ...…

查看全部问答>

C2000除了电机控制和电源外,还有什么有前锦有量的应用啊?

C2000除了电机控制和电源外,还有什么有前锦有量的应用啊?…

查看全部问答>

cc2430重连的问题

我用的是CC2430模块,用了一个网关,一个路由,4个终端节点组网成功过后,重启网关或路由设备,怎样改写程序,才能让终端设备自动重新连接到网关呢?我是过NV_RESTORE这个编译选项,不过貌似没有什么用。用没有人已经解决这个问题,给一个指点。…

查看全部问答>

··请教PCB板子外形和定位孔设置的问题,谢谢··

    我用得是AD6.9,在做板子的时候,需要做这么一个槽,   用快捷方式T-V-T,设置之后,用3D看没问题,     可是做GEBER文件的时候,这里没显示要钻孔,只显示是禁止布线层, 还用这种方式做了几个定位孔 ...…

查看全部问答>