在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1816|回复: 2

[原创] UART基础与面试问题

[复制链接]
发表于 2021-9-22 11:26:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
经过一段时间的秋招,发现uart协议经常被问到,可能是我简历上提了一笔的原因,但对于数字IC的面试者来说,也是体现基础的一个方面,所以总结了一些关于uart的基础知识,以及面试过程中可能问到的方面。
UART:通用异步收发器,是实现设备之间低速数据通信的标准协议。
UART一帧由起始位、数据位、校验位和停止位组成,数据传输方式是单bit逐位传输               
untitled1.png
       起始位:UART中是根据高低电平判断是否开始一帧数据的传输和结束的,UART在空闲的时候一直是高电平(逻辑1),当需要传输数据时,发送一个起始位,也就是一个低电平,接收方从一段高电平之后采集到低电平,就说明将要进行数据传输了。
       数据位:接收到低电平起始位后,后面就是数据位这个数据位可以是5、6、7或8位,数据是从低位(LSB)到高位(MSB)进行传输的,但是在传输前,接受方和发送方需要定义一致的数据位宽,即明确是多少位,否则会导致数据的错误传输。
       校验位:这个位数是可选项,如果担心数据在传输过程中会收到干扰,那么最好在代码中添加,否则就不需要;但也有一个缺点,如果是偶数个bit收到影响进行了翻转,那么这个是检测不出来的,为什么呢?奇偶检验的公式如下:
untitled2.png

可以做如下假设:对八位数据8’b55(8’b0101_0101)进行传输中其中两位发生了翻转变成了8’b56(8’b0101_0110),奇偶检验位的结果是不变,但数据已经发生了改变;
解决方法:接受方在接收数据的时候,要保证采集到的是可靠的数据,采集方法后面再说。
停止位:顾名思义,就是停止本次传输;发送方会发送1~2个bit的高电平;接受发接收到了之后,后面就会进入空闲状态。
空闲:这个时候发送方一直给接收方发送高电平;接受方等着发送方发送低电平开始下一次数据传输。
还有一个重要方面就是波特率;
波特率:位每秒(bps),传输每一个位所占用的时间。而每一帧的传输最少有7位(一位停止位,五位数据位,一位停止位);所以每次的传输速度需要用波特率/每帧的位数。
uart接受方和发送方需要统一定义一致的波特率,如果是自己conding 接收方和发送方,波特率可以随便选,10000bps都可以;但是在工程应用中,波特率为固定的几个波特率:如9600bps或115200bps等。
接下来列出三种常见的帧格式:
1、无奇偶检验位,八位数据位和一位停止位
untitled3.png

2、八位数据位,偶校验,一位停止位;(数据位有偶数个1,所以偶检验位是0)
untitled4.png

3、八位数据位,奇校验,一位停止位;(数据位有偶数个1,所以奇检验位是1)
untitled5.png

面试问到的问题(以下问题不是出自一个面试官,而是多个,我只是列出所有问过的):
1、UART是如何判断什么时候是在传输数据,什么时候停止
2、UART有几根线,分别是什么意思(这个是谈我们平时连接设备的接口,不是代码接口)
3、你有使用过UART吗?在什么情景下使用的
4、UART的奇偶校验位是怎么判断的,能保证完全正确吗?怎么保证传输的数据是可靠的
5、谈一下你对UART协议的了解,发送和接受分别需要怎么做
6、发送发和接受发的波特率不同可以传输吗?


发表于 2021-9-22 19:13:47 | 显示全部楼层
很感兴趣题1、题4你的面试官是咋个点评、讲解你的答案的?
发表于 2021-10-14 16:32:48 | 显示全部楼层
mark!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-2 23:35 , Processed in 0.020363 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表