打印
[MCU]

在单片机里面,波特率和比特率是一回事吗?

[复制链接]
3720|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tnteye|  楼主 | 2017-5-9 13:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在网上结果里,有各种解释,第一种是说波特率是指单位时间内发出的码元数,而码元可以是由不同的比特位组成,另一种就是说波特率是每秒发出的比特数。我查了两本书,讲的也不是很清楚。郭天祥的书里讲的是 :每秒传输二进制代码的位数,即1波特=1位/秒。 另一本新编MCS-51单片机应用设计里,定义为:串行口每秒钟发送(或接收)的位数。比较混乱,越看越不明白了,欢迎大家一起来讨论下。

相关帖子

沙发
NE5532| | 2017-5-9 13:41 | 只看该作者
码元不等于Bit,一个Bit可以用多个码元来表示,即使一个Bit用一个码元表示,串口还要加入启动位、停止位等辅助码元,所以波特率针对的是码元,而非Bit速度。

你自己思考一下,同样是9600bps,用8n1的普通帧和加奇偶校验的帧,码元宽度是一样的,但是Bit传输速度就不一样了。

使用特权

评论回复
评论
forrest11 2017-5-10 11:18 回复TA
你的说法不对。说反了。也说错了。 
板凳
tnteye|  楼主 | 2017-5-9 13:48 | 只看该作者
NE5532 发表于 2017-5-9 13:41
码元不等于Bit,一个Bit可以用多个码元来表示,即使一个Bit用一个码元表示,串口还要加入启动位、停止位等 ...

您说的对。

使用特权

评论回复
地板
tnteye|  楼主 | 2017-5-9 14:07 | 只看该作者
我把网上搜到的结果分享下。

使用特权

评论回复
5
tnteye|  楼主 | 2017-5-9 14:08 | 只看该作者

1:比特率:9600bps  
就是每秒中传输9600bit,也就是相当于每一秒中划分成了9600等份。  
如此,那么每1bit的时间就是1/9600秒=104.16666666666666666666666666667us。约0.1ms。既然是9600等份,即每1bit紧接着下一个比特,不存在额外的间隔。也不管是啥起始bit,数据bit,奇偶bit,停止bit。

使用特权

评论回复
6
tnteye|  楼主 | 2017-5-9 14:08 | 只看该作者
2:帧格式,帧间隔。  
在电脑里,也就是超级终端等的端口设置。电脑的默认端口设置,也就是默认帧格式是:8个数据bit,1个停止bit,(起始1bit 是必须的)默认无奇偶,无流控。  
则实际就是10bit为1帧。一秒中可以发送9600/10=960个帧,也就是960字符,因为一帧里只有1个字符,1字符就是帧里面的8个数据bit

使用特权

评论回复
7
tnteye|  楼主 | 2017-5-9 14:09 | 只看该作者
3:串口通讯  
串口当然可以连续,没有时间间隔地发送帧,默认情形下电脑在9600bps下可以发送960帧。  
但在实际工作中,在异步通讯下,一般需要一个交互过程,所以,电脑发送一个帧,或者若干帧,还需要等待从设备的应答,并不是一直发送的。有问有答地实现编程者的目标。

使用特权

评论回复
8
tnteye|  楼主 | 2017-5-9 14:10 | 只看该作者

4:波特率时钟      实际上是比特率时钟,每1bit所要花费的时间周期。而波特率(实际是比特率)发生器生成的分频时钟实际是对每1bit进行采样的时钟,它是波特率时钟的16倍。    波特率发生器实质是设计一个分频器,用于产生和RS 232通信同步的时钟。在系统中用一个计数器来完成这个功能,分频系数N决定了波特率的数值。该计数器一般工作在一个频率较高的系统时钟下,当计数到 N/2时将输出置为高电平,再计数到N/2的数值后将输出置为低电平,如此反复即可得到占空比50%的波特率时钟,具体的波特率依赖于所使用的系统时钟频率和N的大小。如系统时钟频率是40 MHz,要求波特率是9 600[MS1] ,则16倍波特率时钟的周期约等于260个系统时钟周期,则计数器取260/2=130时,当计数溢出时输出电平取反就可以得到16倍约定波特率的时钟。      也可以这么理解:40mhz晶振,最小计数脉冲是25ns, 16倍波特率的频率就是16*9600,其时钟周期就是1/(16*9600)=6.5us  也就是以40mhz晶振作为输入的话,计数器需要计数=6500/25=260 个计数。      9600波特率也可理解为一种波特时钟频率,即1秒钟计数9600个,如果是16倍波特率时钟,即直接相乘就可以了。就是1秒计数9600*16=153600 。

使用特权

评论回复
9
tnteye|  楼主 | 2017-5-9 14:11 | 只看该作者

/(9600*16) 除以(1/40000000)也就是以时钟周期除了最小时钟周期得到的就是计数的个数。简化而言就是 40000000/(9600*16)=260,也就是频率直接相除就得到要分频计数器计数的个数。     
[MS1]  
40000000/(9600*16)=260.4   
串口通信必须要设定波特率,本设计采用的波特率为9 600 bit/s。产生波特率的时钟频率是越高越好,这样才可产生较高且精确的波特率。设计选用50M主频率要产生9600bit/s波特率,每传送一位数据需要5 208.33个时钟周期。取一个最接近的数是5 208,则波特率为9 600.61,其误差约为0.006%,误码率很低可以确保通信正常。  
( liupeng  50000000/5208=9600.61)

使用特权

评论回复
10
tnteye|  楼主 | 2017-5-9 14:11 | 只看该作者

5: 误差允许范围  
6:分频系数  
计数器很容易实现分频。可用lpm-counter实现。  
比如分频系数是2,那么,直接用q0作为输出即可。如果分频系数是4,那么q0,q1作为有效比特。  
总而言之,要n整数分频,即计数n后清零重计数。至于50%占空比则另外考虑。奇数分频似不易实现50%占空比。

使用特权

评论回复
11
NE5532| | 2017-5-9 14:14 | 只看该作者
这里边全部有讲,需要的请参考。

http://open.21ic.com/Video/index/id/6256

使用特权

评论回复
12
ta1ent| | 2017-5-9 15:38 | 只看该作者
按我的理解,二进制数字通信的话,波特率和比特率数值上是相等的。至于起始位、停止位、校验位等等应该是和具体的通信协议相关的吧。好像和波特率或者比特率讨论的问题不在一个层面上。

使用特权

评论回复
13
xmar| | 2017-5-9 17:29 | 只看该作者
严格意义上讲,比特(bit)是信息单位,表示有50%的不确定性。比如随机抛硬币。因此,bps(比特每秒)是通信速率——表示将1bit的信息从信源传输到信宿花了1秒的时间。波特(率)就是每秒变化一个物理振动周期,这个波特100%的确定,当然不含有信息,仅仅就是物理振动而已。但实际上比特率被滥用、与波特率混用了。所以才有楼主问题。

使用特权

评论回复
14
雪山飞狐D| | 2017-5-9 17:35 | 只看该作者
本帖最后由 雪山飞狐D 于 2017-5-9 22:38 编辑

  波特率是实际的1位有效信息传递的速率,比特率就是硬件上真实0-1-0-1位,如果通信需要加上其他抗干扰的位,需要10个0-1表示一个信息,那么波特率就是比特率的10分之一

使用特权

评论回复
评论
xmar 2017-5-10 09:29 回复TA
刚好讲反。 
15
douzi707| | 2017-5-9 20:51 | 只看该作者
长见识了,我以前以为一样呢

使用特权

评论回复
16
linqing171| | 2017-5-10 07:30 | 只看该作者
一个波特用非二进制键控调制,可以发送多个比特,比如 0V代表00,1V代表01,2V代表10,3V代表11。

使用特权

评论回复
17
tnteye|  楼主 | 2017-5-10 10:33 | 只看该作者
1/(9600*16)除以(1/40000000)也就是以时钟周期除了最小时钟周期得到的就是计数的个数。简化而言就是40000000/(9600*16)=260,也就是频率直接相除就得到要分频计数器计数的个数。

使用特权

评论回复
18
forrest11| | 2017-5-10 11:27 | 只看该作者
波特率就是单位时间内信号(符号)改变的速率。符号可以含有1个bit信息,也可以含有多个bit信息。
比如QPSK信号,一个符号就含有2bit信息,所以其bit率是baud率的两倍,如果是QAM信号,bit率是baud率的更高倍数。
对于串口通信,只有两个电平代表0,1.所以bit率和baud率是一样的。
至于为什么说baud率,不说bit率,其实baud率是更早的概念,串口用这样的提法用久了,就约定俗成了,其实你说bit率大家也不会误会。

使用特权

评论回复
19
woshizhengjie89| | 2017-5-10 11:37 | 只看该作者
长见识

使用特权

评论回复
20
hanlie2345678| | 2017-5-31 16:10 | 只看该作者
不是-----

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

22

帖子

0

粉丝