不枉初心,砥砺前行

皮皮祥的博客

欢迎留言,评论

导航

什么是波特率_波特率9600是什么意思_串口通信为什么要设置波特率?

 波特率(Baud Rate) 单位 bps -- 每秒传送的字节数 Byte Per Second.。

  (BaudRate) 模拟线路信号的速率,也称调制速率,以波形每秒的振荡数来衡量。如果数据不压缩,波特率等于每秒钟传输的数据位数,如果数据进行了压缩,那么每秒钟传输的数据位数通常大于调制速率,使得交换使用波特和比特/秒偶尔会产生错误。 波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示,其单位是波特(Baud)。波特率与比特率的关系是比特率=波特率X单个调制状态对应的二进制位数。 在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率。波特率是传输通道频宽的指标。 每秒钟通过信道传输的信息量称为位传输速率,简称比特率。比特率表示有效数据的传输速率。

 

  波特率就是一秒种传输0或1的个数,若波特率是9600那么它传输一位0或1的时间就是1/9600秒如果串口工作在方式一下波特率是9600晶振是11059200定时器选用TImer1的自动重装模式即1/9600=定时时间就是1/9600=(12*32/11059200)*(256-定时初值)。那么定时初值=256-(11059200/(12*32*9600));

  RS-485 就是 EIA-485,EIA-485仅仅规定了接受端和发送端的电气特性。没有规定或推荐任何通讯协议。

  EIA-485可以应用于配置便宜的广域网和采用单机发送,多机接受通信链接。它提供高速的数据通信速率。(EIA-485和EIA-422一样 使用双绞线进行高电压差分平衡传输,它可以进行大面积长距离传输(超过1200米)。

  不同的通讯协议,就是不同的数据通讯约定,如何呼,如何应,如何送,如何校对,如何握手。例如常见的 HTTP,FTP就是protocl(通讯协议)。通讯协议 分应用层,传输层,网络层,数据链路层,物理层,具体协议多极了。

  波特率9600是什么意思

  波特率是一个电子信号上的术语,用于描述信道的数据传输速度。所谓信道,可以是无线的,也可以是有线的,说白了就是两个东西之间传输数据。

 

  波特率通常单位是bit/s,也就是 二进制位/秒。因为一个字节是8个bit,而一个字节通常可以表达一个ASCII码,比如一个英文字母,所以:9600的波特率的信道,理论上每秒可以传输9200/8个英文字母的数据量,也就是1200个字节,大约1.2KB。而19200则是每秒可传输2400字节。

  比如一个文件,假设容量是100KB,那么它通过9600的信道传输,需要的时间至少是100/1.2秒,也就是超过一分钟了。

  和19200波特率的信道,都是早期接口的传输率标准。比如早期的COM口(也叫串口),经常采用这样的标准,今天看来,速度非常非常慢。早期使用这样的接口用于鼠标、键盘等简单装置的连接,以及计算机和其它设备的通信。而现在,还有少数主板支持这样的接口。

  在今天的计算机上,这个接口标准早已淘汰,但是生产中,还是有很多设备支持这样的接口。

  比如,在数控机床上,当计算机与机床通信的时候,很多机床都要求使用COM口,以9600,11200或19200之类的波特率进行通信。

  串口通信为什么要设置波特率

  有两种比较可靠地说法:

  1:根据电、传输介质等的物理特性结合串口设备使用的要求

  为了保证有效通讯,根据电、传输介质等的物理特性结合串口设备使用的要求,确定RS232最大传输速率只能是115200,然后逐级二分得到57600,28800,19200……为适应这些速率,设计相应的晶振频率。

  2:这是由电信线路特性决定的

  电话线路的带通是300--3KHz,当时hayes先搞的modem,所以用的2400HZ信号,对应波特率是2400。由于基本频率确定了,以后采用的提高通讯速率的方法都是在2400基础上倍频的,所以形成了9600.19200。。。。

  不管哪种说法,都是先有波特率再有晶振频率。

  单片机串口通信波特率计算 。

  在模式0和模式2下,串口波特率固定,模式0为Fosc/12。模式2为Fosc/32或Fosc/64,具体由PCON寄存器的SMOD位决定。

  在模式1和模式3下,波特率是一个可变值,波特率可以由定时器1产生(8052可以由定时2产生),那么波特率到底为多少呢?波特率由定时器1的溢出率来决定:

  Baud Rate = (2SMOD/32)*(TImer 1 Overflow Rate)

  注意:2SMOD这里的SMOD是指数,SMOD为波特率双倍波特率位,该位在PCON寄存器中。

  当使用TImer 1作为波特率产生器时,通常需要将TImer 1配置成8位自动重装的工作模式下,同时还要禁止timer 1中断,那么timer 1的溢出率是怎样计算的呢?溢出率即溢出的频率,假设晶振频率为12MHz,TH1值为0xFE,则只需要两个时钟脉冲就会溢出,溢出的周期为2us,那么溢出的频率就为500KHz。根据定时器一节,定时时间有如下计算公式:

  定时时间=(最大计数值-计数器初值)*机器周期=(最大计数值-计数器初值)*(12/晶振频率(Hz))(s)=(256-TH1)*(12/OSC_FREQ(Hz))(s)。

  那么溢出频率自然就为:

  OSC_FREQ(Hz)/((256-TH1)*12)。

  所以最后推到出波特率为:

  (2SMOD/32)*(OSC_FREQ(Hz)/((256-TH1)*12))。

  波特率的计算公式有了,那自然就可以根据波特率推导出TH1的初值了:

  BAUD_RATE=(2SMOD/32)*(OSC_FREQ(Hz)/((256-TH1)*12))

  32*12*(256-TH1)=(2SMOD*OSC_FREQ(Hz))/BAUD_RATE

  256-TH1=(2SMOD*OSC_FREQ(Hz))/(BAUD_RATE*32*12)

  TH1=256-(2SMOD*OSC_FREQ(Hz))/(BAUD_RATE*32*12)

  假设晶振频率为11.0592MHz,波特率为9600,SMOD=0,TH1初值应该为多少呢?根据上面公式可以计算得TH1=256-11059200/(9600*32*12)=0xFD。

posted on 2022-05-10 14:19  皮皮祥  阅读(3917)  评论(0编辑  收藏  举报