电工之家_电工基础知识学习网站
当前位置:电工之家 > 通信技术 > 正文

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

时间:2017-06-30 13:39 来源:电工之家

单片机串口通信时,总要设置波特率,而波特率一般要设成9600,19200...?这是传统么?从什么来的?而相应的晶振一般也是11.0592MHZ。是先设晶振再设波特率还是先设波特率再设晶振,为什么要这样设置呢?
有两种比较可靠地说法:
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。

看过《串口通信为什么要设置波特率?串口通信波特率计算》的人还看了以下文章
泄露电缆和普通电缆的区别 泄露电缆和普通电缆的区别
一般常规的室内分布系统组成部分包括BBU+RRU、干放、直放站、合路器、耦合器、功分器、馈线、电缆、天线等部分,而使用泄露电缆做为室内分布系统主要是取代其中的电缆+天线部分,所以泄露电缆本身的工作模式和制式完全取决于接入泄露电缆的信元端。 一般来说...
泄露电缆在室分中的作用是怎样的 泄露电缆在室分中的作用是怎样的
室分应该是室内分布系统,它在楼宇中的应用可以改善楼宇内部深度覆盖,解决楼宇存在的通信质量问题,也可以解决覆盖、质量、容量等问题,同时也具备后期扩容性。那么泄露电缆在室内分布系统中的作用不仅可解决存在的通信问题,还可以解决物业后期修维修所致...
数据链路层具体有什么用 数据链路层具体有什么用
数据链路层是OSI七层模型中的第二层,介于物理层和网络层之间,依靠物理层来向网络层提供服务。 如题,数据链路层具体有什么用呢?鉴于其工作在物理层和网络层之间,那么首先来了解以下物理层和网络层分别是干什么用的。 物理层 作为数据的传输媒介,如电缆...
数据链路层的作用通俗的讲是什么 数据链路层的作用通俗的讲是什么
TCP/IP协议是现在重要的网络通信协议体系。它的体系结构有应用层、运输层、网络层、数据链路层、物理层。数据链路层在TCP/IP协议体系结构中,负责两个相邻节点间的线路上无差别的传输,是以祯为单位的数据。 数据链路层是提供两个相邻网络节点之间或者是主机...
设备之间给信号为什么要中继转 设备之间给信号为什么要中继转
设备之间信号用到中间继电器的原因 因为中间继电器是一种可以用来增加控制电路中的数量或者将信号放大的低控制类低压电继电器,所以中间继电器输入信号是供继电器的线圈得电或失电,输出信号是中间继电器的触点动作状态。还因为中间继电器触点对数较多,容量...