前言
(1)微机原理要进行期末考试了,要准备“预习”了。今天看到关于波特率和字符传输的知识,感觉这个在实际项目中可能会使用到。
(2)因为之前我在学习韦东山老师的课程的时候,他通过波特率计算出了字符传输速度,然后迅速定位到了问题。所以我就将这个知识分享给和我一样大学不听课的“差生”们。
题目
(1)我比较喜欢通过题目来学习啊,所以直接上题目。
(2)已知异步通讯接口由1起始位,7数据位,1奇偶校验位和1停止位组成,当接口每分钟传输3600个字符,波特率为多少?位周期为多少?
(3)首先,我们需要知道波特率是什么?波特率是指,串口通信时每秒钟可以传输多少个二进制位(bit)。比如每秒可以传输115200个二进制数(bit),那么波特率就是115200。
(4)知道这个之后,那么我们还需要知道,串口通讯中,每个字符有多少个二进制数(bit)。这个需要根据我们自行设置,在编写程序的时候,一般是只需要设置校验位,数据位和停止位的。
(5)但是实际上的串口通讯中一个数据帧,还包含了1起始位。
(6)根据题解我们可以知道,起始位为1,数据位为7,1个奇偶校验,1停止位,所以一个字符包含1(起始位)+7(数据位)+1(校验位)+1(停止位)=10bit。
(9)那么上面的题目答案就出来了:因为每分钟传输3600个字符,所以每秒传输3600/60=60个字符。因为一个字符为10bit,所以60*10=600。故此题波特率为600,位周期为1/600s。
实际项目的波特率传输字符计算
(1)因为一个字节为8bit,所以绝大多数,我们的数据位都是采用的8。为了提高传输速度,我们不设置校验位(注意,这样虽然提高的传输速度,但是缺少了验证过程,可能会获取到错误数据)。1停止位。
(2)而每个串口通讯肯定是存在1起始位的,所以最终的结果就是,1字符包含 1(起始位)+8(数据位)+0(校验位)+1(停止位)=10bit。
(3)由于波特率为11500,那么表示每秒可以传输115200bit,及每秒可以传输115200/10=11520个字符。
如果停止位为1.5怎么办
(1)校验位,数据位都是整数。这个没啥好说的,但是停止位里面居然还有一个1.5。这个怎么办呢?
(2)不用担心啊,你直接按照上面的公式来就可以了。假设我这里设置的是无校验位,8数据位,1.5停止位。那么一个字符包含 1(起始位)+8(数据位)+0(校验位)+1.5(停止位)=10.5bit。
(3)由于波特率为11500,那么表示每秒可以传输115200bit,即每秒可以传输115200/10.5 ≈10,971个字符。